Files
game-cards-poker-design/frontend/node_modules/fabric/dist-extensions/linear_gradient_controls/linearGradientHandlers.mjs.map

1 line
8.1 KiB
Plaintext
Raw Normal View History

{"version":3,"file":"linearGradientHandlers.mjs","names":[],"sources":["../../extensions/linear_gradient_controls/linearGradientHandlers.ts"],"sourcesContent":["import type {\n TMat2D,\n FabricObject,\n TransformActionHandler,\n Control,\n ControlRenderingStyleOverride,\n InteractiveFabricObject,\n Gradient,\n} from 'fabric';\nimport { Point, util, controlsUtils, iMatrix } from 'fabric';\n\n/** A deduping code block */\nconst commonGradientInfo = (\n fabricObject: FabricObject,\n gradient: Gradient<'linear'>,\n) => {\n const { width, height } = fabricObject;\n const { colorStops, coords, gradientUnits } = gradient;\n const isPerc = gradientUnits === 'percentage';\n const matrix = fabricObject.calcTransformMatrix();\n const vpt = fabricObject.getViewportTransform();\n const _finalMatrix = util.multiplyTransformMatrixArray([vpt, matrix]);\n return {\n width,\n height,\n colorStops,\n coords,\n isPerc,\n _finalMatrix,\n };\n};\n\nexport const linearGradientColorPositionHandlerGenerator = (\n gradient: Gradient<'linear'>,\n stopIndex: number,\n) =>\n function linearGradientColorPositionHandler(\n this: Control,\n dim: Point, // currentDimension\n finalMatrix: TMat2D,\n fabricObject: FabricObject,\n // currentControl: Control,) => {};\n ) {\n const { width, height, isPerc, coords, colorStops, _finalMatrix } =\n commonGradientInfo(fabricObject, gradient);\n const p1 = new Point(\n coords.x1 * (isPerc ? width : 1) - width / 2,\n coords.y1 * (isPerc ? height : 1) - height / 2,\n );\n const p2 = new Point(\n coords.x2 * (isPerc ? width : 1) - width / 2,\n coords.y2 * (isPerc ? height : 1) - height / 2,\n );\n const offset = colorStops[stopIndex].offset;\n return p1.lerp(p2, offset).transform(_finalMatrix);\n };\n\nexport const linearGradientCoordPositionHandlerGenerator = (\n gradient: Gradient<'linear'>,\n pointNumber: 1 | 2,\n) =>\n function linearGradientCoordPositionHandler(\n this: Control,\n dim: Point, // currentDimension\n finalMatrix: TMat2D,\n fabricObject: FabricObject,\n // currentControl: Control,) => {};\n ) {\n const { width, height, isPerc, coords, _finalMatrix } = commonGradientInfo(\n fabricObject,\n gradient,\n );\n\n return (\n pointNumber === 1\n ? new Point(\n coords.x1 * (isPerc ? width : 1) - width / 2,\n coords.y1 * (isPerc ? height : 1) - height / 2,\n )\n : new Point(\n coords.x2 * (isPerc ? width : 1) - width / 2,\n coords.y2 * (isPerc ? height : 1) - height / 2,\n )\n ).transform(_finalMatrix);\n };\n\nexport const linearGradientColorActionHandlerGenerator =\n (gradient: Gradient<'linear'>, colorIndex: number): TransformActionHandler =>\n (eventData, { target }, x, y) => {\n const {\n width,\n height,\n isPerc,\n coords: { x1, x2, y1, y2 },\n colorStops,\n } = commonGradientInfo(target, gradient);\n\n // find point in the space inside the object.\n const point = util\n .sendPointToPlane(\n new Point(x, y),\n undefined,\n target.calcTransformMatrix(),\n )\n .add(new Point(width / 2, height / 2));\n\n const p1 = new Point(x1 * (isPerc ? width : 1), y1 * (isPerc ? height : 1));\n const v = util.createVector(\n p1,\n new Point(x2 * (isPerc ? width : 1), y2 * (isPerc ? height : 1)),\n );\n const u = util.createVector(p1, point);\n const t = util.dotProduct(u, v) / util.dotProduct(v, v);\n colorStops[colorIndex].offset = util.capValue(0, t, 1);\n target.set('dirty', true);\n return true;\n };\n\nexport const linearGradientCoordsActionHandlerGenerator =\n (gradient: Gradient<'linear'>, pointIndex: 1 | 2): TransformActionHandler =>\n (eventData, { target }, x, y) => {\n const { width, height, isPerc, coords } = commonGradientInfo(\n target,\n gradient,\n );\n // find point in the space inside the object.\n const point = util\n .sendPointToPlane(\n