mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-03 14:54:37 +00:00
Removes formatters' ability to print code that goes to a new line, but uses no braces to delineate. It becomes more difficult to follow when using JS-style indents (two spaces). No effort required - braces added by auto-fixer.
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
// API *************************************************
|
|
// like rect but rounded corners
|
|
export function loadPolyfills() {
|
|
if (
|
|
typeof window != "undefined" &&
|
|
window.CanvasRenderingContext2D &&
|
|
!window.CanvasRenderingContext2D.prototype.roundRect
|
|
) {
|
|
// @ts-expect-error Slightly broken polyfill - radius_low not impl. anywhere
|
|
window.CanvasRenderingContext2D.prototype.roundRect = function (
|
|
x: number,
|
|
y: number,
|
|
w: number,
|
|
h: number,
|
|
radius: number | number[],
|
|
radius_low: number | number[],
|
|
) {
|
|
let top_left_radius = 0
|
|
let top_right_radius = 0
|
|
let bottom_left_radius = 0
|
|
let bottom_right_radius = 0
|
|
|
|
if (radius === 0) {
|
|
this.rect(x, y, w, h)
|
|
return
|
|
}
|
|
|
|
if (radius_low === undefined) radius_low = radius
|
|
|
|
// make it compatible with official one
|
|
if (Array.isArray(radius)) {
|
|
if (radius.length == 1) {
|
|
top_left_radius = top_right_radius = bottom_left_radius = bottom_right_radius = radius[0]
|
|
} else if (radius.length == 2) {
|
|
top_left_radius = bottom_right_radius = radius[0]
|
|
top_right_radius = bottom_left_radius = radius[1]
|
|
} else if (radius.length == 4) {
|
|
top_left_radius = radius[0]
|
|
top_right_radius = radius[1]
|
|
bottom_left_radius = radius[2]
|
|
bottom_right_radius = radius[3]
|
|
} else {
|
|
return
|
|
}
|
|
} else {
|
|
// old using numbers
|
|
top_left_radius = radius || 0
|
|
top_right_radius = radius || 0
|
|
|
|
const low = !Array.isArray(radius_low) && radius_low ? radius_low : 0
|
|
bottom_left_radius = low
|
|
bottom_right_radius = low
|
|
}
|
|
|
|
// top right
|
|
this.moveTo(x + top_left_radius, y)
|
|
this.lineTo(x + w - top_right_radius, y)
|
|
this.quadraticCurveTo(x + w, y, x + w, y + top_right_radius)
|
|
|
|
// bottom right
|
|
this.lineTo(x + w, y + h - bottom_right_radius)
|
|
this.quadraticCurveTo(
|
|
x + w,
|
|
y + h,
|
|
x + w - bottom_right_radius,
|
|
y + h,
|
|
)
|
|
|
|
// bottom left
|
|
this.lineTo(x + bottom_right_radius, y + h)
|
|
this.quadraticCurveTo(x, y + h, x, y + h - bottom_left_radius)
|
|
|
|
// top left
|
|
this.lineTo(x, y + bottom_left_radius)
|
|
this.quadraticCurveTo(x, y, x + top_left_radius, y)
|
|
}
|
|
}
|
|
|
|
if (typeof window != "undefined" && !window["requestAnimationFrame"]) {
|
|
window.requestAnimationFrame =
|
|
// @ts-expect-error Legacy code
|
|
window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame ||
|
|
function (callback) {
|
|
window.setTimeout(callback, 1000 / 60)
|
|
}
|
|
}
|
|
}
|