fabric 6.0.2 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/index.js +250 -101
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +250 -101
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +250 -101
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +250 -101
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/ClassRegistry.d.ts +1 -0
- package/dist/src/ClassRegistry.d.ts.map +1 -1
- package/dist/src/ClassRegistry.min.mjs +1 -1
- package/dist/src/ClassRegistry.min.mjs.map +1 -1
- package/dist/src/ClassRegistry.mjs +3 -0
- package/dist/src/ClassRegistry.mjs.map +1 -1
- package/dist/src/Collection.d.ts +3 -3
- package/dist/src/Collection.d.ts.map +1 -1
- package/dist/src/EventTypeDefs.d.ts +19 -11
- package/dist/src/EventTypeDefs.d.ts.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.mjs +2 -2
- package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
- package/dist/src/Shadow.d.ts.map +1 -1
- package/dist/src/Shadow.min.mjs +1 -1
- package/dist/src/Shadow.min.mjs.map +1 -1
- package/dist/src/Shadow.mjs +1 -5
- package/dist/src/Shadow.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.d.ts.map +1 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs +1 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.mjs +9 -15
- package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs +3 -0
- package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts +20 -24
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/color/util.d.ts.map +1 -1
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.min.mjs +1 -1
- package/dist/src/constants.min.mjs.map +1 -1
- package/dist/src/constants.mjs +2 -1
- package/dist/src/constants.mjs.map +1 -1
- package/dist/src/controls/controlRendering.d.ts +1 -1
- package/dist/src/controls/controlRendering.d.ts.map +1 -1
- package/dist/src/controls/controlRendering.min.mjs.map +1 -1
- package/dist/src/controls/controlRendering.mjs.map +1 -1
- package/dist/src/controls/fireEvent.d.ts +2 -2
- package/dist/src/controls/fireEvent.d.ts.map +1 -1
- package/dist/src/controls/fireEvent.min.mjs.map +1 -1
- package/dist/src/controls/fireEvent.mjs.map +1 -1
- package/dist/src/controls/index.d.ts +1 -0
- package/dist/src/controls/index.d.ts.map +1 -1
- package/dist/src/controls/index.min.mjs +1 -1
- package/dist/src/controls/index.mjs +1 -0
- package/dist/src/controls/index.mjs.map +1 -1
- package/dist/src/controls/pathControl.d.ts +12 -0
- package/dist/src/controls/pathControl.d.ts.map +1 -0
- package/dist/src/controls/pathControl.min.mjs +2 -0
- package/dist/src/controls/pathControl.min.mjs.map +1 -0
- package/dist/src/controls/pathControl.mjs +156 -0
- package/dist/src/controls/pathControl.mjs.map +1 -0
- package/dist/src/controls/polyControl.d.ts.map +1 -1
- package/dist/src/controls/polyControl.min.mjs +1 -1
- package/dist/src/controls/polyControl.min.mjs.map +1 -1
- package/dist/src/controls/polyControl.mjs +1 -9
- package/dist/src/controls/polyControl.mjs.map +1 -1
- package/dist/src/controls/util.d.ts +1 -1
- package/dist/src/controls/wrapWithFireEvent.d.ts +5 -3
- package/dist/src/controls/wrapWithFireEvent.d.ts.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs +1 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.mjs +7 -4
- package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
- package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +1 -1
- package/dist/src/env/index.d.ts.map +1 -1
- package/dist/src/env/node.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.mjs +0 -1
- package/dist/src/filters/BaseFilter.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.d.ts +8 -96
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
- package/dist/src/filters/Convolute.d.ts +2 -1
- package/dist/src/filters/Convolute.d.ts.map +1 -1
- package/dist/src/filters/shaders/baseFilter.d.ts +1 -1
- package/dist/src/filters/shaders/baseFilter.d.ts.map +1 -1
- package/dist/src/filters/utils.d.ts.map +1 -1
- package/dist/src/parser/normalizeAttr.d.ts.map +1 -1
- package/dist/src/parser/parseStyleString.d.ts.map +1 -1
- package/dist/src/parser/parseStyleString.min.mjs +1 -1
- package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
- package/dist/src/parser/parseStyleString.mjs +1 -0
- package/dist/src/parser/parseStyleString.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.d.ts.map +1 -1
- package/dist/src/parser/parseUseDirectives.min.mjs +1 -1
- package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.mjs +61 -43
- package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts +20 -20
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs +0 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts.map +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs +0 -2
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Path.d.ts +9 -9
- package/dist/src/shapes/Path.d.ts.map +1 -1
- package/dist/src/shapes/Polyline.d.ts +1 -1
- package/dist/src/shapes/Rect.d.ts +1 -1
- package/dist/src/shapes/Text/Text.d.ts +1 -1
- package/dist/src/shapes/Text/Text.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -2
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Textbox.d.ts.map +1 -1
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs +0 -2
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/util/applyMixins.d.ts.map +1 -1
- package/dist/src/util/dom_misc.d.ts.map +1 -1
- package/dist/src/util/dom_misc.min.mjs +1 -1
- package/dist/src/util/dom_misc.min.mjs.map +1 -1
- package/dist/src/util/dom_misc.mjs +7 -9
- package/dist/src/util/dom_misc.mjs.map +1 -1
- package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
- package/dist/src/util/internals/console.d.ts +1 -1
- package/dist/src/util/internals/findRight.d.ts.map +1 -1
- package/dist/src/util/internals/removeFromArray.d.ts.map +1 -1
- package/dist/src/util/misc/dom.d.ts.map +1 -1
- package/dist/src/util/misc/groupSVGElements.d.ts.map +1 -1
- package/dist/src/util/misc/matrix.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs +7 -11
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/dist/src/util/misc/objectTransforms.d.ts.map +1 -1
- package/dist/src/util/misc/pick.d.ts.map +1 -1
- package/dist/src/util/misc/planeChange.d.ts.map +1 -1
- package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
- package/dist/src/util/misc/textStyles.d.ts.map +1 -1
- package/dist/src/util/path/index.d.ts +0 -1
- package/dist/src/util/path/index.d.ts.map +1 -1
- package/dist/src/util/path/index.min.mjs +1 -1
- package/dist/src/util/path/index.min.mjs.map +1 -1
- package/dist/src/util/path/index.mjs +1 -2
- package/dist/src/util/path/index.mjs.map +1 -1
- package/dist/src/util/path/typedefs.d.ts +1 -0
- package/dist/src/util/path/typedefs.d.ts.map +1 -1
- package/dist/src/util/typeAssertions.d.ts +2 -2
- package/dist/src/util/typeAssertions.d.ts.map +1 -1
- package/lib/aligning_guidelines.js +76 -1
- package/lib/centering_guidelines.js +3 -1
- package/package.json +3 -3
- package/src/ClassRegistry.spec.ts +39 -0
- package/src/ClassRegistry.ts +4 -0
- package/src/EventTypeDefs.ts +22 -10
- package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +1 -0
- package/src/LayoutManager/LayoutManager.spec.ts +1 -0
- package/src/LayoutManager/LayoutManager.ts +2 -0
- package/src/Shadow.ts +1 -6
- package/src/canvas/DOMManagers/util.ts +11 -15
- package/src/canvas/SelectableCanvas.spec.ts +18 -0
- package/src/canvas/SelectableCanvas.ts +3 -0
- package/src/constants.ts +1 -0
- package/src/controls/controlRendering.ts +4 -2
- package/src/controls/fireEvent.ts +2 -2
- package/src/controls/index.ts +1 -0
- package/src/controls/pathControl.spec.ts +75 -0
- package/src/controls/pathControl.ts +293 -0
- package/src/controls/polyControl.ts +1 -1
- package/src/controls/wrapWithFireEvent.ts +14 -5
- package/src/filters/BaseFilter.ts +1 -2
- package/src/parser/parseStyleString.ts +1 -0
- package/src/parser/parseUseDirectives.test.ts +113 -0
- package/src/parser/parseUseDirectives.ts +64 -58
- package/src/shapes/IText/ITextBehavior.ts +4 -2
- package/src/shapes/Image.ts +0 -2
- package/src/shapes/Text/TextSVGExportMixin.ts +0 -2
- package/src/shapes/Textbox.ts +0 -2
- package/src/util/dom_misc.ts +17 -10
- package/src/util/misc/objectEnlive.spec.ts +68 -0
- package/src/util/misc/objectEnlive.ts +7 -13
- package/src/util/path/__snapshots__/index.spec.ts.snap +327 -0
- package/src/util/path/index.spec.ts +13 -2
- package/src/util/path/index.ts +2 -4
- package/src/util/path/typedefs.ts +2 -0
- package/.gitmodules +0 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';
|
|
2
2
|
import type { Control } from './Control';
|
|
3
3
|
export type ControlRenderingStyleOverride = Partial<Pick<InteractiveFabricObject, 'cornerStyle' | 'cornerSize' | 'cornerColor' | 'cornerStrokeColor' | 'cornerDashArray' | 'transparentCorners'>>;
|
|
4
|
-
export type ControlRenderer = (ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride, fabricObject:
|
|
4
|
+
export type ControlRenderer<O extends InteractiveFabricObject = InteractiveFabricObject> = (ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride, fabricObject: O) => void;
|
|
5
5
|
/**
|
|
6
6
|
* Render a round control, as per fabric features.
|
|
7
7
|
* This function is written to respect object properties like transparentCorners, cornerSize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlRendering.d.ts","sourceRoot":"","sources":["../../../src/controls/controlRendering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,6BAA6B,GAAG,OAAO,CACjD,IAAI,CACF,uBAAuB,EACrB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CACvB,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"controlRendering.d.ts","sourceRoot":"","sources":["../../../src/controls/controlRendering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,6BAA6B,GAAG,OAAO,CACjD,IAAI,CACF,uBAAuB,EACrB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CACvB,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IACzD,CACF,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,6BAA6B,EAC5C,YAAY,EAAE,CAAC,KACZ,IAAI,CAAC;AAEV;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,6BAA6B,EAC5C,YAAY,EAAE,uBAAuB,QA0CtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,6BAA6B,EAC5C,YAAY,EAAE,uBAAuB,QAkCtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlRendering.min.mjs","sources":["../../../src/controls/controlRendering.ts"],"sourcesContent":["import { FILL, STROKE, twoMathPi } from '../constants';\nimport type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';\nimport { degreesToRadians } from '../util/misc/radiansDegreesConversion';\nimport type { Control } from './Control';\n\nexport type ControlRenderingStyleOverride = Partial<\n Pick<\n InteractiveFabricObject,\n | 'cornerStyle'\n | 'cornerSize'\n | 'cornerColor'\n | 'cornerStrokeColor'\n | 'cornerDashArray'\n | 'transparentCorners'\n >\n>;\n\nexport type ControlRenderer = (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject:
|
|
1
|
+
{"version":3,"file":"controlRendering.min.mjs","sources":["../../../src/controls/controlRendering.ts"],"sourcesContent":["import { FILL, STROKE, twoMathPi } from '../constants';\nimport type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';\nimport { degreesToRadians } from '../util/misc/radiansDegreesConversion';\nimport type { Control } from './Control';\n\nexport type ControlRenderingStyleOverride = Partial<\n Pick<\n InteractiveFabricObject,\n | 'cornerStyle'\n | 'cornerSize'\n | 'cornerColor'\n | 'cornerStrokeColor'\n | 'cornerDashArray'\n | 'transparentCorners'\n >\n>;\n\nexport type ControlRenderer<\n O extends InteractiveFabricObject = InteractiveFabricObject\n> = (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: O\n) => void;\n\n/**\n * Render a round control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderCircleControl(\n this: Control,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: InteractiveFabricObject\n) {\n styleOverride = styleOverride || {};\n const xSize =\n this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners =\n typeof styleOverride.transparentCorners !== 'undefined'\n ? styleOverride.transparentCorners\n : fabricObject.transparentCorners,\n methodName = transparentCorners ? STROKE : FILL,\n stroke =\n !transparentCorners &&\n (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor);\n let myLeft = left,\n myTop = top,\n size;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor || '';\n ctx.strokeStyle =\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor || '';\n // TODO: use proper ellipse code.\n if (xSize > ySize) {\n size = xSize;\n ctx.scale(1.0, ySize / xSize);\n myTop = (top * xSize) / ySize;\n } else if (ySize > xSize) {\n size = ySize;\n ctx.scale(xSize / ySize, 1.0);\n myLeft = (left * ySize) / xSize;\n } else {\n size = xSize;\n }\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.arc(myLeft, myTop, size / 2, 0, twoMathPi, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n ctx.restore();\n}\n\n/**\n * Render a square control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderSquareControl(\n this: Control,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: InteractiveFabricObject\n) {\n styleOverride = styleOverride || {};\n const xSize =\n this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners =\n typeof styleOverride.transparentCorners !== 'undefined'\n ? styleOverride.transparentCorners\n : fabricObject.transparentCorners,\n methodName = transparentCorners ? STROKE : FILL,\n stroke =\n !transparentCorners &&\n (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),\n xSizeBy2 = xSize / 2,\n ySizeBy2 = ySize / 2;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor || '';\n ctx.strokeStyle =\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor || '';\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.translate(left, top);\n // angle is relative to canvas plane\n const angle = fabricObject.getTotalAngle();\n ctx.rotate(degreesToRadians(angle));\n // this does not work, and fixed with ( && ) does not make sense.\n // to have real transparent corners we need the controls on upperCanvas\n // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n ctx[`${methodName}Rect`](-xSizeBy2, -ySizeBy2, xSize, ySize);\n if (stroke) {\n ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n }\n ctx.restore();\n}\n"],"names":["renderCircleControl","ctx","left","top","styleOverride","fabricObject","xSize","this","sizeX","cornerSize","ySize","sizeY","transparentCorners","methodName","STROKE","FILL","stroke","cornerStrokeColor","size","myLeft","myTop","save","fillStyle","cornerColor","strokeStyle","scale","lineWidth","beginPath","arc","twoMathPi","restore","renderSquareControl","xSizeBy2","ySizeBy2","translate","angle","getTotalAngle","rotate","degreesToRadians","concat","strokeRect"],"mappings":"wJAsCO,SAASA,EAEdC,EACAC,EACAC,EACAC,EACAC,GAEAD,EAAgBA,GAAiB,GACjC,MAAME,EACFC,KAAKC,OAASJ,EAAcK,YAAcJ,EAAaI,WACzDC,EAAQH,KAAKI,OAASP,EAAcK,YAAcJ,EAAaI,WAC/DG,OAC8C,IAArCR,EAAcQ,mBACjBR,EAAcQ,mBACdP,EAAaO,mBACnBC,EAAaD,EAAqBE,EAASC,EAC3CC,GACGJ,IACAR,EAAca,mBAAqBZ,EAAaY,mBACrD,IAEEC,EAFEC,EAASjB,EACXkB,EAAQjB,EAEVF,EAAIoB,OACJpB,EAAIqB,UAAYlB,EAAcmB,aAAelB,EAAakB,aAAe,GACzEtB,EAAIuB,YACFpB,EAAca,mBAAqBZ,EAAaY,mBAAqB,GAEnEX,EAAQI,GACVQ,EAAOZ,EACPL,EAAIwB,MAAM,EAAKf,EAAQJ,GACvBc,EAASjB,EAAMG,EAASI,GACfA,EAAQJ,GACjBY,EAAOR,EACPT,EAAIwB,MAAMnB,EAAQI,EAAO,GACzBS,EAAUjB,EAAOQ,EAASJ,GAE1BY,EAAOZ,EAGTL,EAAIyB,UAAY,EAChBzB,EAAI0B,YACJ1B,EAAI2B,IAAIT,EAAQC,EAAOF,EAAO,EAAG,EAAGW,GAAW,GAC/C5B,EAAIY,KACAG,GACFf,EAAIe,SAENf,EAAI6B,SACN,CAaO,SAASC,EAEd9B,EACAC,EACAC,EACAC,EACAC,GAEAD,EAAgBA,GAAiB,GACjC,MAAME,EACFC,KAAKC,OAASJ,EAAcK,YAAcJ,EAAaI,WACzDC,EAAQH,KAAKI,OAASP,EAAcK,YAAcJ,EAAaI,WAC/DG,OAC8C,IAArCR,EAAcQ,mBACjBR,EAAcQ,mBACdP,EAAaO,mBACnBC,EAAaD,EAAqBE,EAASC,EAC3CC,GACGJ,IACAR,EAAca,mBAAqBZ,EAAaY,mBACnDe,EAAW1B,EAAQ,EACnB2B,EAAWvB,EAAQ,EACrBT,EAAIoB,OACJpB,EAAIqB,UAAYlB,EAAcmB,aAAelB,EAAakB,aAAe,GACzEtB,EAAIuB,YACFpB,EAAca,mBAAqBZ,EAAaY,mBAAqB,GAEvEhB,EAAIyB,UAAY,EAChBzB,EAAIiC,UAAUhC,EAAMC,GAEpB,MAAMgC,EAAQ9B,EAAa+B,gBAC3BnC,EAAIoC,OAAOC,EAAiBH,IAI5BlC,EAAGsC,GAAAA,OAAI1B,YAAmBmB,GAAWC,EAAU3B,EAAOI,GAClDM,GACFf,EAAIuC,YAAYR,GAAWC,EAAU3B,EAAOI,GAE9CT,EAAI6B,SACN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlRendering.mjs","sources":["../../../src/controls/controlRendering.ts"],"sourcesContent":["import { FILL, STROKE, twoMathPi } from '../constants';\nimport type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';\nimport { degreesToRadians } from '../util/misc/radiansDegreesConversion';\nimport type { Control } from './Control';\n\nexport type ControlRenderingStyleOverride = Partial<\n Pick<\n InteractiveFabricObject,\n | 'cornerStyle'\n | 'cornerSize'\n | 'cornerColor'\n | 'cornerStrokeColor'\n | 'cornerDashArray'\n | 'transparentCorners'\n >\n>;\n\nexport type ControlRenderer = (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject:
|
|
1
|
+
{"version":3,"file":"controlRendering.mjs","sources":["../../../src/controls/controlRendering.ts"],"sourcesContent":["import { FILL, STROKE, twoMathPi } from '../constants';\nimport type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';\nimport { degreesToRadians } from '../util/misc/radiansDegreesConversion';\nimport type { Control } from './Control';\n\nexport type ControlRenderingStyleOverride = Partial<\n Pick<\n InteractiveFabricObject,\n | 'cornerStyle'\n | 'cornerSize'\n | 'cornerColor'\n | 'cornerStrokeColor'\n | 'cornerDashArray'\n | 'transparentCorners'\n >\n>;\n\nexport type ControlRenderer<\n O extends InteractiveFabricObject = InteractiveFabricObject\n> = (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: O\n) => void;\n\n/**\n * Render a round control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderCircleControl(\n this: Control,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: InteractiveFabricObject\n) {\n styleOverride = styleOverride || {};\n const xSize =\n this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners =\n typeof styleOverride.transparentCorners !== 'undefined'\n ? styleOverride.transparentCorners\n : fabricObject.transparentCorners,\n methodName = transparentCorners ? STROKE : FILL,\n stroke =\n !transparentCorners &&\n (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor);\n let myLeft = left,\n myTop = top,\n size;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor || '';\n ctx.strokeStyle =\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor || '';\n // TODO: use proper ellipse code.\n if (xSize > ySize) {\n size = xSize;\n ctx.scale(1.0, ySize / xSize);\n myTop = (top * xSize) / ySize;\n } else if (ySize > xSize) {\n size = ySize;\n ctx.scale(xSize / ySize, 1.0);\n myLeft = (left * ySize) / xSize;\n } else {\n size = xSize;\n }\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.arc(myLeft, myTop, size / 2, 0, twoMathPi, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n ctx.restore();\n}\n\n/**\n * Render a square control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderSquareControl(\n this: Control,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride,\n fabricObject: InteractiveFabricObject\n) {\n styleOverride = styleOverride || {};\n const xSize =\n this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners =\n typeof styleOverride.transparentCorners !== 'undefined'\n ? styleOverride.transparentCorners\n : fabricObject.transparentCorners,\n methodName = transparentCorners ? STROKE : FILL,\n stroke =\n !transparentCorners &&\n (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),\n xSizeBy2 = xSize / 2,\n ySizeBy2 = ySize / 2;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor || '';\n ctx.strokeStyle =\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor || '';\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.translate(left, top);\n // angle is relative to canvas plane\n const angle = fabricObject.getTotalAngle();\n ctx.rotate(degreesToRadians(angle));\n // this does not work, and fixed with ( && ) does not make sense.\n // to have real transparent corners we need the controls on upperCanvas\n // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n ctx[`${methodName}Rect`](-xSizeBy2, -ySizeBy2, xSize, ySize);\n if (stroke) {\n ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n }\n ctx.restore();\n}\n"],"names":["renderCircleControl","ctx","left","top","styleOverride","fabricObject","xSize","sizeX","cornerSize","ySize","sizeY","transparentCorners","methodName","STROKE","FILL","stroke","cornerStrokeColor","myLeft","myTop","size","save","fillStyle","cornerColor","strokeStyle","scale","lineWidth","beginPath","arc","twoMathPi","restore","renderSquareControl","xSizeBy2","ySizeBy2","translate","angle","getTotalAngle","rotate","degreesToRadians","concat","strokeRect"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const fireEvent: (eventName: TModificationEvents, options:
|
|
1
|
+
import type { ObjectModificationEvents, TModificationEvents } from '../EventTypeDefs';
|
|
2
|
+
export declare const fireEvent: (eventName: TModificationEvents, options: ObjectModificationEvents[typeof eventName]) => void;
|
|
3
3
|
//# sourceMappingURL=fireEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fireEvent.d.ts","sourceRoot":"","sources":["../../../src/controls/fireEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"fireEvent.d.ts","sourceRoot":"","sources":["../../../src/controls/fireEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,SAAS,cACT,mBAAmB,WACrB,wBAAwB,CAAC,OAAO,SAAS,CAAC,SAUpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fireEvent.min.mjs","sources":["../../../src/controls/fireEvent.ts"],"sourcesContent":["import type {\n
|
|
1
|
+
{"version":3,"file":"fireEvent.min.mjs","sources":["../../../src/controls/fireEvent.ts"],"sourcesContent":["import type {\n ObjectModificationEvents,\n TModificationEvents,\n} from '../EventTypeDefs';\n\nexport const fireEvent = (\n eventName: TModificationEvents,\n options: ObjectModificationEvents[typeof eventName]\n) => {\n const {\n transform: { target },\n } = options;\n target.canvas?.fire(`object:${eventName}`, {\n ...options,\n target,\n });\n target.fire(eventName, options);\n};\n"],"names":["fireEvent","eventName","options","_target$canvas","transform","target","canvas","fire","concat","_objectSpread"],"mappings":"uFAKaA,EAAYA,CACvBC,EACAC,KACG,IAAAC,EACH,MACEC,WAAWC,OAAEA,IACXH,EACSC,QAAbA,EAAAE,EAAOC,kBAAMH,GAAbA,EAAeI,KAAIC,UAAAA,OAAWP,GAASQ,EAAAA,KAClCP,GAAO,GAAA,CACVG,YAEFA,EAAOE,KAAKN,EAAWC,EAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fireEvent.mjs","sources":["../../../src/controls/fireEvent.ts"],"sourcesContent":["import type {\n
|
|
1
|
+
{"version":3,"file":"fireEvent.mjs","sources":["../../../src/controls/fireEvent.ts"],"sourcesContent":["import type {\n ObjectModificationEvents,\n TModificationEvents,\n} from '../EventTypeDefs';\n\nexport const fireEvent = (\n eventName: TModificationEvents,\n options: ObjectModificationEvents[typeof eventName]\n) => {\n const {\n transform: { target },\n } = options;\n target.canvas?.fire(`object:${eventName}`, {\n ...options,\n target,\n });\n target.fire(eventName, options);\n};\n"],"names":["fireEvent","eventName","options","_target$canvas","transform","target","canvas","fire","concat","_objectSpread"],"mappings":";;MAKaA,SAAS,GAAGA,CACvBC,SAA8B,EAC9BC,OAAmD,KAChD;AAAA,EAAA,IAAAC,cAAA,CAAA;EACH,MAAM;AACJC,IAAAA,SAAS,EAAE;AAAEC,MAAAA,MAAAA;AAAO,KAAA;AACtB,GAAC,GAAGH,OAAO,CAAA;EACX,CAAAC,cAAA,GAAAE,MAAM,CAACC,MAAM,MAAAH,IAAAA,IAAAA,cAAA,eAAbA,cAAA,CAAeI,IAAI,CAAAC,SAAAA,CAAAA,MAAA,CAAWP,SAAS,CAAA,EAAAQ,cAAA,CAAAA,cAAA,KAClCP,OAAO,CAAA,EAAA,EAAA,EAAA;AACVG,IAAAA,MAAAA;AAAM,GAAA,CACP,CAAC,CAAA;AACFA,EAAAA,MAAM,CAACE,IAAI,CAACN,SAAS,EAAEC,OAAO,CAAC,CAAA;AACjC;;;;"}
|
|
@@ -10,4 +10,5 @@ export { skewCursorStyleHandler, skewHandlerX, skewHandlerY } from './skew';
|
|
|
10
10
|
export { getLocalPoint } from './util';
|
|
11
11
|
export { wrapWithFireEvent } from './wrapWithFireEvent';
|
|
12
12
|
export { wrapWithFixedAnchor } from './wrapWithFixedAnchor';
|
|
13
|
+
export * from './pathControl';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,eAAe,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{changeWidth}from"./changeWidth.min.mjs";export{renderCircleControl,renderSquareControl}from"./controlRendering.min.mjs";export{createObjectDefaultControls,createResizeControls,createTextboxDefaultControls}from"./commonControls.min.mjs";export{dragHandler}from"./drag.min.mjs";export{createPolyActionHandler,createPolyControls,createPolyPositionHandler,factoryPolyActionHandler,polyActionHandler}from"./polyControl.min.mjs";export{rotationStyleHandler,rotationWithSnapping}from"./rotate.min.mjs";export{scaleCursorStyleHandler,scalingEqually,scalingX,scalingY}from"./scale.min.mjs";export{scaleOrSkewActionName,scaleSkewCursorStyleHandler,scalingXOrSkewingY,scalingYOrSkewingX}from"./scaleSkew.min.mjs";export{skewCursorStyleHandler,skewHandlerX,skewHandlerY}from"./skew.min.mjs";export{getLocalPoint}from"./util.min.mjs";export{wrapWithFireEvent}from"./wrapWithFireEvent.min.mjs";export{wrapWithFixedAnchor}from"./wrapWithFixedAnchor.min.mjs";
|
|
1
|
+
export{changeWidth}from"./changeWidth.min.mjs";export{renderCircleControl,renderSquareControl}from"./controlRendering.min.mjs";export{createObjectDefaultControls,createResizeControls,createTextboxDefaultControls}from"./commonControls.min.mjs";export{dragHandler}from"./drag.min.mjs";export{createPolyActionHandler,createPolyControls,createPolyPositionHandler,factoryPolyActionHandler,polyActionHandler}from"./polyControl.min.mjs";export{rotationStyleHandler,rotationWithSnapping}from"./rotate.min.mjs";export{scaleCursorStyleHandler,scalingEqually,scalingX,scalingY}from"./scale.min.mjs";export{scaleOrSkewActionName,scaleSkewCursorStyleHandler,scalingXOrSkewingY,scalingYOrSkewingX}from"./scaleSkew.min.mjs";export{skewCursorStyleHandler,skewHandlerX,skewHandlerY}from"./skew.min.mjs";export{getLocalPoint}from"./util.min.mjs";export{wrapWithFireEvent}from"./wrapWithFireEvent.min.mjs";export{wrapWithFixedAnchor}from"./wrapWithFixedAnchor.min.mjs";export{createPathControls}from"./pathControl.min.mjs";
|
|
2
2
|
//# sourceMappingURL=index.min.mjs.map
|
|
@@ -10,4 +10,5 @@ export { skewCursorStyleHandler, skewHandlerX, skewHandlerY } from './skew.mjs';
|
|
|
10
10
|
export { getLocalPoint } from './util.mjs';
|
|
11
11
|
export { wrapWithFireEvent } from './wrapWithFireEvent.mjs';
|
|
12
12
|
export { wrapWithFixedAnchor } from './wrapWithFixedAnchor.mjs';
|
|
13
|
+
export { createPathControls } from './pathControl.mjs';
|
|
13
14
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Control } from './Control';
|
|
2
|
+
import type { Path } from '../shapes/Path';
|
|
3
|
+
export type PathPointControlStyle = {
|
|
4
|
+
controlFill?: string;
|
|
5
|
+
controlStroke?: string;
|
|
6
|
+
connectionDashArray?: number[];
|
|
7
|
+
};
|
|
8
|
+
export declare function createPathControls(path: Path, options?: Partial<Control> & {
|
|
9
|
+
controlPointStyle?: PathPointControlStyle;
|
|
10
|
+
pointStyle?: PathPointControlStyle;
|
|
11
|
+
}): Record<string, Control>;
|
|
12
|
+
//# sourceMappingURL=pathControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathControl.d.ts","sourceRoot":"","sources":["../../../src/controls/pathControl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAiB3C,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAuNF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,OAAO,CAAC,OAAO,CAAC,GAAG;IAC1B,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,UAAU,CAAC,EAAE,qBAAqB,CAAC;CAC/B,GACL,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+CzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{Point as n}from"../Point.min.mjs";import{Control as o}from"./Control.min.mjs";import{multiplyTransformMatrices as e}from"../util/misc/matrix.min.mjs";import{sendPointToPlane as r}from"../util/misc/planeChange.min.mjs";import{fireEvent as c}from"./fireEvent.min.mjs";import{commonEventInfo as s}from"./util.min.mjs";const i=(t,o,r)=>{const{path:c,pathOffset:s}=t,i=c[o];return new n(i[r]-s.x,i[r+1]-s.y).transform(e(t.getViewportTransform(),t.calcTransformMatrix()))};function a(t,n,o){const{commandIndex:e,pointIndex:r}=this;return i(o,e,r)}function m(o,e,i,a){const{target:m}=e,{commandIndex:l,pointIndex:d}=this,p=((t,o,e,c,s)=>{const{path:i,pathOffset:a}=t,m=i[(c>0?c:i.length)-1],l=new n(m[s],m[s+1]),d=l.subtract(a).transform(t.calcOwnMatrix()),p=r(new n(o,e),void 0,t.calcOwnMatrix());i[c][s]=p.x+a.x,i[c][s+1]=p.y+a.y,t.setDimensions();const x=l.subtract(t.pathOffset).transform(t.calcOwnMatrix()).subtract(d);return t.left-=x.x,t.top-=x.y,t.set("dirty",!0),!0})(m,i,a,l,d);return c(this.actionName,t(t({},s(o,e,i,a)),{},{commandIndex:l,pointIndex:d})),p}class l extends o{constructor(t){super(t)}render(n,o,e,r,c){const s=t(t({},r),{},{cornerColor:this.controlFill,cornerStrokeColor:this.controlStroke,transparentCorners:!this.controlFill});super.render(n,o,e,s,c)}}class d extends l{constructor(t){super(t)}render(t,n,o,e,r){const{path:c}=r,{commandIndex:s,pointIndex:a,connectToCommandIndex:m,connectToPointIndex:l}=this;t.save(),t.strokeStyle=this.controlStroke,this.connectionDashArray&&t.setLineDash(this.connectionDashArray);const[d]=c[s],p=i(r,m,l);if("Q"===d){const e=i(r,s,a+2);t.moveTo(e.x,e.y),t.lineTo(n,o)}else t.moveTo(n,o);t.lineTo(p.x,p.y),t.stroke(),t.restore(),super.render(t,n,o,e,r)}}const p=(n,o,e,r,c,s)=>new(e?d:l)(t(t({commandIndex:n,pointIndex:o,actionName:"modifyPath",positionHandler:a,actionHandler:m,connectToCommandIndex:c,connectToPointIndex:s},r),e?r.controlPointStyle:r.pointStyle));function x(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o={};let e="M";return t.path.forEach(((t,r)=>{const c=t[0];switch("Z"!==c&&(o["c_".concat(r,"_").concat(c)]=p(r,t.length-2,!1,n)),c){case"C":o["c_".concat(r,"_C_CP_1")]=p(r,1,!0,n,r-1,(t=>"C"===t?5:"Q"===t?3:1)(e)),o["c_".concat(r,"_C_CP_2")]=p(r,3,!0,n,r,5);break;case"Q":o["c_".concat(r,"_Q_CP_1")]=p(r,1,!0,n,r,3)}e=c})),o}export{x as createPathControls};
|
|
2
|
+
//# sourceMappingURL=pathControl.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathControl.min.mjs","sources":["../../../src/controls/pathControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Path } from '../shapes/Path';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n} from '../EventTypeDefs';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport type { TSimpleParseCommandType } from '../util/path/typedefs';\nimport type { ControlRenderingStyleOverride } from './controlRendering';\nimport { fireEvent } from './fireEvent';\nimport { commonEventInfo } from './util';\n\nconst ACTION_NAME: TModificationEvents = 'modifyPath' as const;\n\ntype TTransformAnchor = Transform;\n\nexport type PathPointControlStyle = {\n controlFill?: string;\n controlStroke?: string;\n connectionDashArray?: number[];\n};\n\nconst calcPathPointPosition = (\n pathObject: Path,\n commandIndex: number,\n pointIndex: number\n) => {\n const { path, pathOffset } = pathObject;\n const command = path[commandIndex];\n return new Point(\n (command[pointIndex] as number) - pathOffset.x,\n (command[pointIndex + 1] as number) - pathOffset.y\n ).transform(\n multiplyTransformMatrices(\n pathObject.getViewportTransform(),\n pathObject.calcTransformMatrix()\n )\n );\n};\n\nconst movePathPoint = (\n pathObject: Path,\n x: number,\n y: number,\n commandIndex: number,\n pointIndex: number\n) => {\n const { path, pathOffset } = pathObject;\n\n const anchorCommand =\n path[(commandIndex > 0 ? commandIndex : path.length) - 1];\n const anchorPoint = new Point(\n anchorCommand[pointIndex] as number,\n anchorCommand[pointIndex + 1] as number\n );\n\n const anchorPointInParentPlane = anchorPoint\n .subtract(pathOffset)\n .transform(pathObject.calcOwnMatrix());\n\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n pathObject.calcOwnMatrix()\n );\n\n path[commandIndex][pointIndex] = mouseLocalPosition.x + pathOffset.x;\n path[commandIndex][pointIndex + 1] = mouseLocalPosition.y + pathOffset.y;\n pathObject.setDimensions();\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(pathObject.pathOffset)\n .transform(pathObject.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n pathObject.left -= diff.x;\n pathObject.top -= diff.y;\n pathObject.set('dirty', true);\n return true;\n};\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nfunction pathPositionHandler(\n this: PathPointControl,\n dim: Point,\n finalMatrix: TMat2D,\n pathObject: Path\n) {\n const { commandIndex, pointIndex } = this;\n return calcPathPointPosition(pathObject, commandIndex, pointIndex);\n}\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nfunction pathActionHandler(\n this: PathPointControl,\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) {\n const { target } = transform;\n const { commandIndex, pointIndex } = this;\n const actionPerformed = movePathPoint(\n target as Path,\n x,\n y,\n commandIndex,\n pointIndex\n );\n if (actionPerformed) {\n fireEvent(this.actionName as TModificationEvents, {\n ...commonEventInfo(eventData, transform, x, y),\n commandIndex,\n pointIndex,\n });\n }\n return actionPerformed;\n}\n\nconst indexFromPrevCommand = (previousCommandType: TSimpleParseCommandType) =>\n previousCommandType === 'C' ? 5 : previousCommandType === 'Q' ? 3 : 1;\n\nclass PathPointControl extends Control {\n declare commandIndex: number;\n declare pointIndex: number;\n declare controlFill: string;\n declare controlStroke: string;\n constructor(options?: Partial<PathPointControl>) {\n super(options);\n }\n\n render(\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride | undefined,\n fabricObject: Path\n ) {\n const overrides: ControlRenderingStyleOverride = {\n ...styleOverride,\n cornerColor: this.controlFill,\n cornerStrokeColor: this.controlStroke,\n transparentCorners: !this.controlFill,\n };\n super.render(ctx, left, top, overrides, fabricObject);\n }\n}\n\nclass PathControlPointControl extends PathPointControl {\n declare connectionDashArray?: number[];\n declare connectToCommandIndex: number;\n declare connectToPointIndex: number;\n constructor(options?: Partial<PathControlPointControl>) {\n super(options);\n }\n\n render(\n this: PathControlPointControl,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride | undefined,\n fabricObject: Path\n ) {\n const { path } = fabricObject;\n const {\n commandIndex,\n pointIndex,\n connectToCommandIndex,\n connectToPointIndex,\n } = this;\n ctx.save();\n ctx.strokeStyle = this.controlStroke;\n if (this.connectionDashArray) {\n ctx.setLineDash(this.connectionDashArray);\n }\n const [commandType] = path[commandIndex];\n const point = calcPathPointPosition(\n fabricObject,\n connectToCommandIndex,\n connectToPointIndex\n );\n\n if (commandType === 'Q') {\n // one control point connects to 2 points\n const point2 = calcPathPointPosition(\n fabricObject,\n commandIndex,\n pointIndex + 2\n );\n ctx.moveTo(point2.x, point2.y);\n ctx.lineTo(left, top);\n } else {\n ctx.moveTo(left, top);\n }\n ctx.lineTo(point.x, point.y);\n ctx.stroke();\n ctx.restore();\n\n super.render(ctx, left, top, styleOverride, fabricObject);\n }\n}\n\nconst createControl = (\n commandIndexPos: number,\n pointIndexPos: number,\n isControlPoint: boolean,\n options: Partial<Control> & {\n controlPointStyle?: PathPointControlStyle;\n pointStyle?: PathPointControlStyle;\n },\n connectToCommandIndex?: number,\n connectToPointIndex?: number\n) =>\n new (isControlPoint ? PathControlPointControl : PathPointControl)({\n commandIndex: commandIndexPos,\n pointIndex: pointIndexPos,\n actionName: ACTION_NAME,\n positionHandler: pathPositionHandler,\n actionHandler: pathActionHandler,\n connectToCommandIndex,\n connectToPointIndex,\n ...options,\n ...(isControlPoint ? options.controlPointStyle : options.pointStyle),\n } as Partial<PathControlPointControl>);\n\nexport function createPathControls(\n path: Path,\n options: Partial<Control> & {\n controlPointStyle?: PathPointControlStyle;\n pointStyle?: PathPointControlStyle;\n } = {}\n): Record<string, Control> {\n const controls = {} as Record<string, Control>;\n let previousCommandType: TSimpleParseCommandType = 'M';\n path.path.forEach((command, commandIndex) => {\n const commandType = command[0];\n\n if (commandType !== 'Z') {\n controls[`c_${commandIndex}_${commandType}`] = createControl(\n commandIndex,\n command.length - 2,\n false,\n options\n );\n }\n switch (commandType) {\n case 'C':\n controls[`c_${commandIndex}_C_CP_1`] = createControl(\n commandIndex,\n 1,\n true,\n options,\n commandIndex - 1,\n indexFromPrevCommand(previousCommandType)\n );\n controls[`c_${commandIndex}_C_CP_2`] = createControl(\n commandIndex,\n 3,\n true,\n options,\n commandIndex,\n 5\n );\n break;\n case 'Q':\n controls[`c_${commandIndex}_Q_CP_1`] = createControl(\n commandIndex,\n 1,\n true,\n options,\n commandIndex,\n 3\n );\n break;\n }\n previousCommandType = commandType;\n });\n return controls;\n}\n"],"names":["calcPathPointPosition","pathObject","commandIndex","pointIndex","path","pathOffset","command","Point","x","y","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","pathPositionHandler","dim","finalMatrix","this","pathActionHandler","eventData","target","actionPerformed","movePathPoint","anchorCommand","length","anchorPoint","anchorPointInParentPlane","subtract","calcOwnMatrix","mouseLocalPosition","sendPointToPlane","undefined","setDimensions","diff","left","top","set","fireEvent","actionName","_objectSpread","commonEventInfo","PathPointControl","Control","constructor","options","super","render","ctx","styleOverride","fabricObject","overrides","cornerColor","controlFill","cornerStrokeColor","controlStroke","transparentCorners","PathControlPointControl","connectToCommandIndex","connectToPointIndex","save","strokeStyle","connectionDashArray","setLineDash","commandType","point","point2","moveTo","lineTo","stroke","restore","createControl","commandIndexPos","pointIndexPos","isControlPoint","positionHandler","actionHandler","controlPointStyle","pointStyle","createPathControls","arguments","controls","previousCommandType","forEach","concat","indexFromPrevCommand"],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { Point } from '../Point.mjs';
|
|
3
|
+
import { Control } from './Control.mjs';
|
|
4
|
+
import { multiplyTransformMatrices } from '../util/misc/matrix.mjs';
|
|
5
|
+
import { sendPointToPlane } from '../util/misc/planeChange.mjs';
|
|
6
|
+
import { fireEvent } from './fireEvent.mjs';
|
|
7
|
+
import { commonEventInfo } from './util.mjs';
|
|
8
|
+
|
|
9
|
+
const ACTION_NAME = 'modifyPath';
|
|
10
|
+
const calcPathPointPosition = (pathObject, commandIndex, pointIndex) => {
|
|
11
|
+
const {
|
|
12
|
+
path,
|
|
13
|
+
pathOffset
|
|
14
|
+
} = pathObject;
|
|
15
|
+
const command = path[commandIndex];
|
|
16
|
+
return new Point(command[pointIndex] - pathOffset.x, command[pointIndex + 1] - pathOffset.y).transform(multiplyTransformMatrices(pathObject.getViewportTransform(), pathObject.calcTransformMatrix()));
|
|
17
|
+
};
|
|
18
|
+
const movePathPoint = (pathObject, x, y, commandIndex, pointIndex) => {
|
|
19
|
+
const {
|
|
20
|
+
path,
|
|
21
|
+
pathOffset
|
|
22
|
+
} = pathObject;
|
|
23
|
+
const anchorCommand = path[(commandIndex > 0 ? commandIndex : path.length) - 1];
|
|
24
|
+
const anchorPoint = new Point(anchorCommand[pointIndex], anchorCommand[pointIndex + 1]);
|
|
25
|
+
const anchorPointInParentPlane = anchorPoint.subtract(pathOffset).transform(pathObject.calcOwnMatrix());
|
|
26
|
+
const mouseLocalPosition = sendPointToPlane(new Point(x, y), undefined, pathObject.calcOwnMatrix());
|
|
27
|
+
path[commandIndex][pointIndex] = mouseLocalPosition.x + pathOffset.x;
|
|
28
|
+
path[commandIndex][pointIndex + 1] = mouseLocalPosition.y + pathOffset.y;
|
|
29
|
+
pathObject.setDimensions();
|
|
30
|
+
const newAnchorPointInParentPlane = anchorPoint.subtract(pathObject.pathOffset).transform(pathObject.calcOwnMatrix());
|
|
31
|
+
const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);
|
|
32
|
+
pathObject.left -= diff.x;
|
|
33
|
+
pathObject.top -= diff.y;
|
|
34
|
+
pathObject.set('dirty', true);
|
|
35
|
+
return true;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* This function locates the controls.
|
|
40
|
+
* It'll be used both for drawing and for interaction.
|
|
41
|
+
*/
|
|
42
|
+
function pathPositionHandler(dim, finalMatrix, pathObject) {
|
|
43
|
+
const {
|
|
44
|
+
commandIndex,
|
|
45
|
+
pointIndex
|
|
46
|
+
} = this;
|
|
47
|
+
return calcPathPointPosition(pathObject, commandIndex, pointIndex);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* This function defines what the control does.
|
|
52
|
+
* It'll be called on every mouse move after a control has been clicked and is being dragged.
|
|
53
|
+
* The function receives as argument the mouse event, the current transform object
|
|
54
|
+
* and the current position in canvas coordinate `transform.target` is a reference to the
|
|
55
|
+
* current object being transformed.
|
|
56
|
+
*/
|
|
57
|
+
function pathActionHandler(eventData, transform, x, y) {
|
|
58
|
+
const {
|
|
59
|
+
target
|
|
60
|
+
} = transform;
|
|
61
|
+
const {
|
|
62
|
+
commandIndex,
|
|
63
|
+
pointIndex
|
|
64
|
+
} = this;
|
|
65
|
+
const actionPerformed = movePathPoint(target, x, y, commandIndex, pointIndex);
|
|
66
|
+
{
|
|
67
|
+
fireEvent(this.actionName, _objectSpread2(_objectSpread2({}, commonEventInfo(eventData, transform, x, y)), {}, {
|
|
68
|
+
commandIndex,
|
|
69
|
+
pointIndex
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
return actionPerformed;
|
|
73
|
+
}
|
|
74
|
+
const indexFromPrevCommand = previousCommandType => previousCommandType === 'C' ? 5 : previousCommandType === 'Q' ? 3 : 1;
|
|
75
|
+
class PathPointControl extends Control {
|
|
76
|
+
constructor(options) {
|
|
77
|
+
super(options);
|
|
78
|
+
}
|
|
79
|
+
render(ctx, left, top, styleOverride, fabricObject) {
|
|
80
|
+
const overrides = _objectSpread2(_objectSpread2({}, styleOverride), {}, {
|
|
81
|
+
cornerColor: this.controlFill,
|
|
82
|
+
cornerStrokeColor: this.controlStroke,
|
|
83
|
+
transparentCorners: !this.controlFill
|
|
84
|
+
});
|
|
85
|
+
super.render(ctx, left, top, overrides, fabricObject);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
class PathControlPointControl extends PathPointControl {
|
|
89
|
+
constructor(options) {
|
|
90
|
+
super(options);
|
|
91
|
+
}
|
|
92
|
+
render(ctx, left, top, styleOverride, fabricObject) {
|
|
93
|
+
const {
|
|
94
|
+
path
|
|
95
|
+
} = fabricObject;
|
|
96
|
+
const {
|
|
97
|
+
commandIndex,
|
|
98
|
+
pointIndex,
|
|
99
|
+
connectToCommandIndex,
|
|
100
|
+
connectToPointIndex
|
|
101
|
+
} = this;
|
|
102
|
+
ctx.save();
|
|
103
|
+
ctx.strokeStyle = this.controlStroke;
|
|
104
|
+
if (this.connectionDashArray) {
|
|
105
|
+
ctx.setLineDash(this.connectionDashArray);
|
|
106
|
+
}
|
|
107
|
+
const [commandType] = path[commandIndex];
|
|
108
|
+
const point = calcPathPointPosition(fabricObject, connectToCommandIndex, connectToPointIndex);
|
|
109
|
+
if (commandType === 'Q') {
|
|
110
|
+
// one control point connects to 2 points
|
|
111
|
+
const point2 = calcPathPointPosition(fabricObject, commandIndex, pointIndex + 2);
|
|
112
|
+
ctx.moveTo(point2.x, point2.y);
|
|
113
|
+
ctx.lineTo(left, top);
|
|
114
|
+
} else {
|
|
115
|
+
ctx.moveTo(left, top);
|
|
116
|
+
}
|
|
117
|
+
ctx.lineTo(point.x, point.y);
|
|
118
|
+
ctx.stroke();
|
|
119
|
+
ctx.restore();
|
|
120
|
+
super.render(ctx, left, top, styleOverride, fabricObject);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const createControl = (commandIndexPos, pointIndexPos, isControlPoint, options, connectToCommandIndex, connectToPointIndex) => new (isControlPoint ? PathControlPointControl : PathPointControl)(_objectSpread2(_objectSpread2({
|
|
124
|
+
commandIndex: commandIndexPos,
|
|
125
|
+
pointIndex: pointIndexPos,
|
|
126
|
+
actionName: ACTION_NAME,
|
|
127
|
+
positionHandler: pathPositionHandler,
|
|
128
|
+
actionHandler: pathActionHandler,
|
|
129
|
+
connectToCommandIndex,
|
|
130
|
+
connectToPointIndex
|
|
131
|
+
}, options), isControlPoint ? options.controlPointStyle : options.pointStyle));
|
|
132
|
+
function createPathControls(path) {
|
|
133
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
134
|
+
const controls = {};
|
|
135
|
+
let previousCommandType = 'M';
|
|
136
|
+
path.path.forEach((command, commandIndex) => {
|
|
137
|
+
const commandType = command[0];
|
|
138
|
+
if (commandType !== 'Z') {
|
|
139
|
+
controls["c_".concat(commandIndex, "_").concat(commandType)] = createControl(commandIndex, command.length - 2, false, options);
|
|
140
|
+
}
|
|
141
|
+
switch (commandType) {
|
|
142
|
+
case 'C':
|
|
143
|
+
controls["c_".concat(commandIndex, "_C_CP_1")] = createControl(commandIndex, 1, true, options, commandIndex - 1, indexFromPrevCommand(previousCommandType));
|
|
144
|
+
controls["c_".concat(commandIndex, "_C_CP_2")] = createControl(commandIndex, 3, true, options, commandIndex, 5);
|
|
145
|
+
break;
|
|
146
|
+
case 'Q':
|
|
147
|
+
controls["c_".concat(commandIndex, "_Q_CP_1")] = createControl(commandIndex, 1, true, options, commandIndex, 3);
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
previousCommandType = commandType;
|
|
151
|
+
});
|
|
152
|
+
return controls;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { createPathControls };
|
|
156
|
+
//# sourceMappingURL=pathControl.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathControl.mjs","sources":["../../../src/controls/pathControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Path } from '../shapes/Path';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n} from '../EventTypeDefs';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport type { TSimpleParseCommandType } from '../util/path/typedefs';\nimport type { ControlRenderingStyleOverride } from './controlRendering';\nimport { fireEvent } from './fireEvent';\nimport { commonEventInfo } from './util';\n\nconst ACTION_NAME: TModificationEvents = 'modifyPath' as const;\n\ntype TTransformAnchor = Transform;\n\nexport type PathPointControlStyle = {\n controlFill?: string;\n controlStroke?: string;\n connectionDashArray?: number[];\n};\n\nconst calcPathPointPosition = (\n pathObject: Path,\n commandIndex: number,\n pointIndex: number\n) => {\n const { path, pathOffset } = pathObject;\n const command = path[commandIndex];\n return new Point(\n (command[pointIndex] as number) - pathOffset.x,\n (command[pointIndex + 1] as number) - pathOffset.y\n ).transform(\n multiplyTransformMatrices(\n pathObject.getViewportTransform(),\n pathObject.calcTransformMatrix()\n )\n );\n};\n\nconst movePathPoint = (\n pathObject: Path,\n x: number,\n y: number,\n commandIndex: number,\n pointIndex: number\n) => {\n const { path, pathOffset } = pathObject;\n\n const anchorCommand =\n path[(commandIndex > 0 ? commandIndex : path.length) - 1];\n const anchorPoint = new Point(\n anchorCommand[pointIndex] as number,\n anchorCommand[pointIndex + 1] as number\n );\n\n const anchorPointInParentPlane = anchorPoint\n .subtract(pathOffset)\n .transform(pathObject.calcOwnMatrix());\n\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n pathObject.calcOwnMatrix()\n );\n\n path[commandIndex][pointIndex] = mouseLocalPosition.x + pathOffset.x;\n path[commandIndex][pointIndex + 1] = mouseLocalPosition.y + pathOffset.y;\n pathObject.setDimensions();\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(pathObject.pathOffset)\n .transform(pathObject.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n pathObject.left -= diff.x;\n pathObject.top -= diff.y;\n pathObject.set('dirty', true);\n return true;\n};\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nfunction pathPositionHandler(\n this: PathPointControl,\n dim: Point,\n finalMatrix: TMat2D,\n pathObject: Path\n) {\n const { commandIndex, pointIndex } = this;\n return calcPathPointPosition(pathObject, commandIndex, pointIndex);\n}\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nfunction pathActionHandler(\n this: PathPointControl,\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) {\n const { target } = transform;\n const { commandIndex, pointIndex } = this;\n const actionPerformed = movePathPoint(\n target as Path,\n x,\n y,\n commandIndex,\n pointIndex\n );\n if (actionPerformed) {\n fireEvent(this.actionName as TModificationEvents, {\n ...commonEventInfo(eventData, transform, x, y),\n commandIndex,\n pointIndex,\n });\n }\n return actionPerformed;\n}\n\nconst indexFromPrevCommand = (previousCommandType: TSimpleParseCommandType) =>\n previousCommandType === 'C' ? 5 : previousCommandType === 'Q' ? 3 : 1;\n\nclass PathPointControl extends Control {\n declare commandIndex: number;\n declare pointIndex: number;\n declare controlFill: string;\n declare controlStroke: string;\n constructor(options?: Partial<PathPointControl>) {\n super(options);\n }\n\n render(\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride | undefined,\n fabricObject: Path\n ) {\n const overrides: ControlRenderingStyleOverride = {\n ...styleOverride,\n cornerColor: this.controlFill,\n cornerStrokeColor: this.controlStroke,\n transparentCorners: !this.controlFill,\n };\n super.render(ctx, left, top, overrides, fabricObject);\n }\n}\n\nclass PathControlPointControl extends PathPointControl {\n declare connectionDashArray?: number[];\n declare connectToCommandIndex: number;\n declare connectToPointIndex: number;\n constructor(options?: Partial<PathControlPointControl>) {\n super(options);\n }\n\n render(\n this: PathControlPointControl,\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride: ControlRenderingStyleOverride | undefined,\n fabricObject: Path\n ) {\n const { path } = fabricObject;\n const {\n commandIndex,\n pointIndex,\n connectToCommandIndex,\n connectToPointIndex,\n } = this;\n ctx.save();\n ctx.strokeStyle = this.controlStroke;\n if (this.connectionDashArray) {\n ctx.setLineDash(this.connectionDashArray);\n }\n const [commandType] = path[commandIndex];\n const point = calcPathPointPosition(\n fabricObject,\n connectToCommandIndex,\n connectToPointIndex\n );\n\n if (commandType === 'Q') {\n // one control point connects to 2 points\n const point2 = calcPathPointPosition(\n fabricObject,\n commandIndex,\n pointIndex + 2\n );\n ctx.moveTo(point2.x, point2.y);\n ctx.lineTo(left, top);\n } else {\n ctx.moveTo(left, top);\n }\n ctx.lineTo(point.x, point.y);\n ctx.stroke();\n ctx.restore();\n\n super.render(ctx, left, top, styleOverride, fabricObject);\n }\n}\n\nconst createControl = (\n commandIndexPos: number,\n pointIndexPos: number,\n isControlPoint: boolean,\n options: Partial<Control> & {\n controlPointStyle?: PathPointControlStyle;\n pointStyle?: PathPointControlStyle;\n },\n connectToCommandIndex?: number,\n connectToPointIndex?: number\n) =>\n new (isControlPoint ? PathControlPointControl : PathPointControl)({\n commandIndex: commandIndexPos,\n pointIndex: pointIndexPos,\n actionName: ACTION_NAME,\n positionHandler: pathPositionHandler,\n actionHandler: pathActionHandler,\n connectToCommandIndex,\n connectToPointIndex,\n ...options,\n ...(isControlPoint ? options.controlPointStyle : options.pointStyle),\n } as Partial<PathControlPointControl>);\n\nexport function createPathControls(\n path: Path,\n options: Partial<Control> & {\n controlPointStyle?: PathPointControlStyle;\n pointStyle?: PathPointControlStyle;\n } = {}\n): Record<string, Control> {\n const controls = {} as Record<string, Control>;\n let previousCommandType: TSimpleParseCommandType = 'M';\n path.path.forEach((command, commandIndex) => {\n const commandType = command[0];\n\n if (commandType !== 'Z') {\n controls[`c_${commandIndex}_${commandType}`] = createControl(\n commandIndex,\n command.length - 2,\n false,\n options\n );\n }\n switch (commandType) {\n case 'C':\n controls[`c_${commandIndex}_C_CP_1`] = createControl(\n commandIndex,\n 1,\n true,\n options,\n commandIndex - 1,\n indexFromPrevCommand(previousCommandType)\n );\n controls[`c_${commandIndex}_C_CP_2`] = createControl(\n commandIndex,\n 3,\n true,\n options,\n commandIndex,\n 5\n );\n break;\n case 'Q':\n controls[`c_${commandIndex}_Q_CP_1`] = createControl(\n commandIndex,\n 1,\n true,\n options,\n commandIndex,\n 3\n );\n break;\n }\n previousCommandType = commandType;\n });\n return controls;\n}\n"],"names":["ACTION_NAME","calcPathPointPosition","pathObject","commandIndex","pointIndex","path","pathOffset","command","Point","x","y","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","movePathPoint","anchorCommand","length","anchorPoint","anchorPointInParentPlane","subtract","calcOwnMatrix","mouseLocalPosition","sendPointToPlane","undefined","setDimensions","newAnchorPointInParentPlane","diff","left","top","set","pathPositionHandler","dim","finalMatrix","pathActionHandler","eventData","target","actionPerformed","fireEvent","actionName","_objectSpread","commonEventInfo","indexFromPrevCommand","previousCommandType","PathPointControl","Control","constructor","options","render","ctx","styleOverride","fabricObject","overrides","cornerColor","controlFill","cornerStrokeColor","controlStroke","transparentCorners","PathControlPointControl","connectToCommandIndex","connectToPointIndex","save","strokeStyle","connectionDashArray","setLineDash","commandType","point","point2","moveTo","lineTo","stroke","restore","createControl","commandIndexPos","pointIndexPos","isControlPoint","positionHandler","actionHandler","controlPointStyle","pointStyle","createPathControls","arguments","controls","forEach","concat"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyControl.d.ts","sourceRoot":"","sources":["../../../src/controls/polyControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAO1B,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,eAAgB,MAAM,WACpC,KAAK,
|
|
1
|
+
{"version":3,"file":"polyControl.d.ts","sourceRoot":"","sources":["../../../src/controls/polyControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAO1B,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,eAAgB,MAAM,WACpC,KAAK,eAAe,MAAM,cAAc,QAAQ,UAWvE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,cACjB,aAAa,aACb,gBAAgB,KACxB,MAAM,KACN,MAAM,YAcV,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,eACvB,MAAM,MACd,sBAAsB,CAAC,gBAAgB,CAAC,iBAG/B,aAAa,aACb,SAAS,KACjB,MAAM,KACN,MAAM,YAqBZ,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAAgB,MAAM,sCAIvD,CAAC;AAEJ,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3B,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{Point as n}from"../Point.min.mjs";import{Control as
|
|
1
|
+
import{objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{Point as n}from"../Point.min.mjs";import{Control as r}from"./Control.min.mjs";import{multiplyTransformMatrices as o}from"../util/misc/matrix.min.mjs";import{wrapWithFireEvent as i}from"./wrapWithFireEvent.min.mjs";import{sendPointToPlane as e}from"../util/misc/planeChange.min.mjs";import{MODIFY_POLY as s}from"../constants.min.mjs";const a=s,m=t=>function(r,i,e){const{points:s,pathOffset:a}=e;return new n(s[t]).subtract(a).transform(o(e.getViewportTransform(),e.calcTransformMatrix()))},p=(t,r,o,i)=>{const{target:s,pointIndex:a}=r,m=s,p=e(new n(o,i),void 0,m.calcOwnMatrix());return m.points[a]=p.add(m.pathOffset),m.setDimensions(),!0},c=(r,o)=>function(i,e,s,a){const m=e.target,p=new n(m.points[(r>0?r:m.points.length)-1]),c=p.subtract(m.pathOffset).transform(m.calcOwnMatrix()),f=o(i,t(t({},e),{},{pointIndex:r}),s,a),l=p.subtract(m.pathOffset).transform(m.calcOwnMatrix()).subtract(c);return m.left-=l.x,m.top-=l.y,f},f=t=>i(a,c(t,p));function l(n){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i={};for(let e=0;e<("number"==typeof n?n:n.points.length);e++)i["p".concat(e)]=new r(t({actionName:a,positionHandler:m(e),actionHandler:f(e)},o));return i}export{f as createPolyActionHandler,l as createPolyControls,m as createPolyPositionHandler,c as factoryPolyActionHandler,p as polyActionHandler};
|
|
2
2
|
//# sourceMappingURL=polyControl.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyControl.min.mjs","sources":["../../../src/controls/polyControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Polyline } from '../shapes/Polyline';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n TransformActionHandler,\n} from '../EventTypeDefs';\nimport { wrapWithFireEvent } from './wrapWithFireEvent';\nimport { sendPointToPlane } from '../util';\nimport { MODIFY_POLY } from '../constants';\n\nconst ACTION_NAME: TModificationEvents = MODIFY_POLY;\n\ntype TTransformAnchor = Transform & { pointIndex: number };\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nexport const createPolyPositionHandler = (pointIndex: number) => {\n return function (dim: Point, finalMatrix: TMat2D, polyObject: Polyline) {\n const { points, pathOffset } = polyObject;\n return new Point(points[pointIndex])\n .subtract(pathOffset)\n .transform(\n multiplyTransformMatrices(\n polyObject.getViewportTransform(),\n polyObject.calcTransformMatrix()\n )\n );\n };\n};\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nexport const polyActionHandler = (\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) => {\n const { target, pointIndex } = transform;\n const poly = target as Polyline;\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n poly.calcOwnMatrix()\n );\n\n poly.points[pointIndex] = mouseLocalPosition.add(poly.pathOffset);\n poly.setDimensions();\n\n return true;\n};\n\n/**\n * Keep the polygon in the same position when we change its `width`/`height`/`top`/`left`.\n */\nexport const factoryPolyActionHandler = (\n pointIndex: number,\n fn: TransformActionHandler<TTransformAnchor>\n) => {\n return function (\n eventData: TPointerEvent,\n transform: Transform,\n x: number,\n y: number\n ) {\n const poly = transform.target as Polyline,\n anchorPoint = new Point(\n poly.points[(pointIndex > 0 ? pointIndex : poly.points.length) - 1]\n ),\n anchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix()),\n actionPerformed = fn(eventData, { ...transform, pointIndex }, x, y);\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n poly.left -= diff.x;\n poly.top -= diff.y;\n\n return actionPerformed;\n };\n};\n\nexport const createPolyActionHandler = (pointIndex: number) =>\n wrapWithFireEvent(\n ACTION_NAME,\n factoryPolyActionHandler(pointIndex, polyActionHandler)\n );\n\nexport function createPolyControls(\n poly: Polyline,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n numOfControls: number,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n arg0: number | Polyline,\n options: Partial<Control> = {}\n) {\n const controls = {} as Record<string, Control>;\n for (\n let idx = 0;\n idx < (typeof arg0 === 'number' ? arg0 : arg0.points.length);\n idx++\n ) {\n controls[`p${idx}`] = new Control({\n actionName: ACTION_NAME,\n positionHandler: createPolyPositionHandler(idx),\n actionHandler: createPolyActionHandler(idx),\n ...options,\n });\n }\n return controls;\n}\n"],"names":["ACTION_NAME","MODIFY_POLY","createPolyPositionHandler","pointIndex","dim","finalMatrix","polyObject","points","pathOffset","Point","subtract","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","polyActionHandler","eventData","x","y","target","poly","mouseLocalPosition","sendPointToPlane","undefined","calcOwnMatrix","add","setDimensions","factoryPolyActionHandler","fn","anchorPoint","length","anchorPointInParentPlane","actionPerformed","_objectSpread","diff","left","top","createPolyActionHandler","wrapWithFireEvent","createPolyControls","arg0","options","arguments","controls","idx","concat","Control","actionName","positionHandler","actionHandler"],"mappings":"
|
|
1
|
+
{"version":3,"file":"polyControl.min.mjs","sources":["../../../src/controls/polyControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Polyline } from '../shapes/Polyline';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n TransformActionHandler,\n} from '../EventTypeDefs';\nimport { wrapWithFireEvent } from './wrapWithFireEvent';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport { MODIFY_POLY } from '../constants';\n\nconst ACTION_NAME: TModificationEvents = MODIFY_POLY;\n\ntype TTransformAnchor = Transform & { pointIndex: number };\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nexport const createPolyPositionHandler = (pointIndex: number) => {\n return function (dim: Point, finalMatrix: TMat2D, polyObject: Polyline) {\n const { points, pathOffset } = polyObject;\n return new Point(points[pointIndex])\n .subtract(pathOffset)\n .transform(\n multiplyTransformMatrices(\n polyObject.getViewportTransform(),\n polyObject.calcTransformMatrix()\n )\n );\n };\n};\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nexport const polyActionHandler = (\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) => {\n const { target, pointIndex } = transform;\n const poly = target as Polyline;\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n poly.calcOwnMatrix()\n );\n\n poly.points[pointIndex] = mouseLocalPosition.add(poly.pathOffset);\n poly.setDimensions();\n\n return true;\n};\n\n/**\n * Keep the polygon in the same position when we change its `width`/`height`/`top`/`left`.\n */\nexport const factoryPolyActionHandler = (\n pointIndex: number,\n fn: TransformActionHandler<TTransformAnchor>\n) => {\n return function (\n eventData: TPointerEvent,\n transform: Transform,\n x: number,\n y: number\n ) {\n const poly = transform.target as Polyline,\n anchorPoint = new Point(\n poly.points[(pointIndex > 0 ? pointIndex : poly.points.length) - 1]\n ),\n anchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix()),\n actionPerformed = fn(eventData, { ...transform, pointIndex }, x, y);\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n poly.left -= diff.x;\n poly.top -= diff.y;\n\n return actionPerformed;\n };\n};\n\nexport const createPolyActionHandler = (pointIndex: number) =>\n wrapWithFireEvent(\n ACTION_NAME,\n factoryPolyActionHandler(pointIndex, polyActionHandler)\n );\n\nexport function createPolyControls(\n poly: Polyline,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n numOfControls: number,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n arg0: number | Polyline,\n options: Partial<Control> = {}\n) {\n const controls = {} as Record<string, Control>;\n for (\n let idx = 0;\n idx < (typeof arg0 === 'number' ? arg0 : arg0.points.length);\n idx++\n ) {\n controls[`p${idx}`] = new Control({\n actionName: ACTION_NAME,\n positionHandler: createPolyPositionHandler(idx),\n actionHandler: createPolyActionHandler(idx),\n ...options,\n });\n }\n return controls;\n}\n"],"names":["ACTION_NAME","MODIFY_POLY","createPolyPositionHandler","pointIndex","dim","finalMatrix","polyObject","points","pathOffset","Point","subtract","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","polyActionHandler","eventData","x","y","target","poly","mouseLocalPosition","sendPointToPlane","undefined","calcOwnMatrix","add","setDimensions","factoryPolyActionHandler","fn","anchorPoint","length","anchorPointInParentPlane","actionPerformed","_objectSpread","diff","left","top","createPolyActionHandler","wrapWithFireEvent","createPolyControls","arg0","options","arguments","controls","idx","concat","Control","actionName","positionHandler","actionHandler"],"mappings":"qaAeA,MAAMA,EAAmCC,EAQ5BC,EAA6BC,GACjC,SAAUC,EAAYC,EAAqBC,GAChD,MAAMC,OAAEA,EAAMC,WAAEA,GAAeF,EAC/B,OAAO,IAAIG,EAAMF,EAAOJ,IACrBO,SAASF,GACTG,UACCC,EACEN,EAAWO,uBACXP,EAAWQ,yBAaRC,EAAoBA,CAC/BC,EACAL,EACAM,EACAC,KAEA,MAAMC,OAAEA,EAAMhB,WAAEA,GAAeQ,EACzBS,EAAOD,EACPE,EAAqBC,EACzB,IAAIb,EAAMQ,EAAGC,QACbK,EACAH,EAAKI,iBAMP,OAHAJ,EAAKb,OAAOJ,GAAckB,EAAmBI,IAAIL,EAAKZ,YACtDY,EAAKM,iBAEE,CAAI,EAMAC,EAA2BA,CACtCxB,EACAyB,IAEO,SACLZ,EACAL,EACAM,EACAC,GAEA,MAAME,EAAOT,EAAUQ,OACrBU,EAAc,IAAIpB,EAChBW,EAAKb,QAAQJ,EAAa,EAAIA,EAAaiB,EAAKb,OAAOuB,QAAU,IAEnEC,EAA2BF,EACxBnB,SAASU,EAAKZ,YACdG,UAAUS,EAAKI,iBAClBQ,EAAkBJ,EAAGZ,EAASiB,EAAAA,EAAA,GAAOtB,GAAS,GAAA,CAAER,eAAcc,EAAGC,GAM7DgB,EAJ8BL,EACjCnB,SAASU,EAAKZ,YACdG,UAAUS,EAAKI,iBAEuBd,SAASqB,GAIlD,OAHAX,EAAKe,MAAQD,EAAKjB,EAClBG,EAAKgB,KAAOF,EAAKhB,EAEVc,GAIEK,EAA2BlC,GACtCmC,EACEtC,EACA2B,EAAyBxB,EAAYY,IAWlC,SAASwB,EACdC,GAEA,IADAC,EAAyBC,UAAAZ,OAAA,QAAAP,IAAAmB,UAAA,GAAAA,UAAA,GAAG,CAAA,EAE5B,MAAMC,EAAW,CAAA,EACjB,IACE,IAAIC,EAAM,EACVA,GAAuB,iBAATJ,EAAoBA,EAAOA,EAAKjC,OAAOuB,QACrDc,IAEAD,EAAQ,IAAAE,OAAKD,IAAS,IAAIE,EAAOb,EAAA,CAC/Bc,WAAY/C,EACZgD,gBAAiB9C,EAA0B0C,GAC3CK,cAAeZ,EAAwBO,IACpCH,IAGP,OAAOE,CACT"}
|
|
@@ -3,16 +3,8 @@ import { Point } from '../Point.mjs';
|
|
|
3
3
|
import { Control } from './Control.mjs';
|
|
4
4
|
import { multiplyTransformMatrices } from '../util/misc/matrix.mjs';
|
|
5
5
|
import { wrapWithFireEvent } from './wrapWithFireEvent.mjs';
|
|
6
|
-
import { MODIFY_POLY } from '../constants.mjs';
|
|
7
|
-
import '../util/misc/vectors.mjs';
|
|
8
|
-
import '../util/misc/projectStroke/StrokeLineJoinProjections.mjs';
|
|
9
|
-
import '../config.mjs';
|
|
10
|
-
import '../shapes/Group.mjs';
|
|
11
6
|
import { sendPointToPlane } from '../util/misc/planeChange.mjs';
|
|
12
|
-
import '../
|
|
13
|
-
import '../util/path/regex.mjs';
|
|
14
|
-
import '../parser/constants.mjs';
|
|
15
|
-
import '../util/animation/AnimationRegistry.mjs';
|
|
7
|
+
import { MODIFY_POLY } from '../constants.mjs';
|
|
16
8
|
|
|
17
9
|
const ACTION_NAME = MODIFY_POLY;
|
|
18
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyControl.mjs","sources":["../../../src/controls/polyControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Polyline } from '../shapes/Polyline';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n TransformActionHandler,\n} from '../EventTypeDefs';\nimport { wrapWithFireEvent } from './wrapWithFireEvent';\nimport { sendPointToPlane } from '../util';\nimport { MODIFY_POLY } from '../constants';\n\nconst ACTION_NAME: TModificationEvents = MODIFY_POLY;\n\ntype TTransformAnchor = Transform & { pointIndex: number };\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nexport const createPolyPositionHandler = (pointIndex: number) => {\n return function (dim: Point, finalMatrix: TMat2D, polyObject: Polyline) {\n const { points, pathOffset } = polyObject;\n return new Point(points[pointIndex])\n .subtract(pathOffset)\n .transform(\n multiplyTransformMatrices(\n polyObject.getViewportTransform(),\n polyObject.calcTransformMatrix()\n )\n );\n };\n};\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nexport const polyActionHandler = (\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) => {\n const { target, pointIndex } = transform;\n const poly = target as Polyline;\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n poly.calcOwnMatrix()\n );\n\n poly.points[pointIndex] = mouseLocalPosition.add(poly.pathOffset);\n poly.setDimensions();\n\n return true;\n};\n\n/**\n * Keep the polygon in the same position when we change its `width`/`height`/`top`/`left`.\n */\nexport const factoryPolyActionHandler = (\n pointIndex: number,\n fn: TransformActionHandler<TTransformAnchor>\n) => {\n return function (\n eventData: TPointerEvent,\n transform: Transform,\n x: number,\n y: number\n ) {\n const poly = transform.target as Polyline,\n anchorPoint = new Point(\n poly.points[(pointIndex > 0 ? pointIndex : poly.points.length) - 1]\n ),\n anchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix()),\n actionPerformed = fn(eventData, { ...transform, pointIndex }, x, y);\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n poly.left -= diff.x;\n poly.top -= diff.y;\n\n return actionPerformed;\n };\n};\n\nexport const createPolyActionHandler = (pointIndex: number) =>\n wrapWithFireEvent(\n ACTION_NAME,\n factoryPolyActionHandler(pointIndex, polyActionHandler)\n );\n\nexport function createPolyControls(\n poly: Polyline,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n numOfControls: number,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n arg0: number | Polyline,\n options: Partial<Control> = {}\n) {\n const controls = {} as Record<string, Control>;\n for (\n let idx = 0;\n idx < (typeof arg0 === 'number' ? arg0 : arg0.points.length);\n idx++\n ) {\n controls[`p${idx}`] = new Control({\n actionName: ACTION_NAME,\n positionHandler: createPolyPositionHandler(idx),\n actionHandler: createPolyActionHandler(idx),\n ...options,\n });\n }\n return controls;\n}\n"],"names":["ACTION_NAME","MODIFY_POLY","createPolyPositionHandler","pointIndex","dim","finalMatrix","polyObject","points","pathOffset","Point","subtract","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","polyActionHandler","eventData","x","y","target","poly","mouseLocalPosition","sendPointToPlane","undefined","calcOwnMatrix","add","setDimensions","factoryPolyActionHandler","fn","anchorPoint","length","anchorPointInParentPlane","actionPerformed","_objectSpread","newAnchorPointInParentPlane","diff","left","top","createPolyActionHandler","wrapWithFireEvent","createPolyControls","arg0","options","arguments","controls","idx","concat","Control","actionName","positionHandler","actionHandler"],"mappings":"
|
|
1
|
+
{"version":3,"file":"polyControl.mjs","sources":["../../../src/controls/polyControl.ts"],"sourcesContent":["import { Point } from '../Point';\nimport { Control } from './Control';\nimport type { TMat2D } from '../typedefs';\nimport type { Polyline } from '../shapes/Polyline';\nimport { multiplyTransformMatrices } from '../util/misc/matrix';\nimport type {\n TModificationEvents,\n TPointerEvent,\n Transform,\n TransformActionHandler,\n} from '../EventTypeDefs';\nimport { wrapWithFireEvent } from './wrapWithFireEvent';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport { MODIFY_POLY } from '../constants';\n\nconst ACTION_NAME: TModificationEvents = MODIFY_POLY;\n\ntype TTransformAnchor = Transform & { pointIndex: number };\n\n/**\n * This function locates the controls.\n * It'll be used both for drawing and for interaction.\n */\nexport const createPolyPositionHandler = (pointIndex: number) => {\n return function (dim: Point, finalMatrix: TMat2D, polyObject: Polyline) {\n const { points, pathOffset } = polyObject;\n return new Point(points[pointIndex])\n .subtract(pathOffset)\n .transform(\n multiplyTransformMatrices(\n polyObject.getViewportTransform(),\n polyObject.calcTransformMatrix()\n )\n );\n };\n};\n\n/**\n * This function defines what the control does.\n * It'll be called on every mouse move after a control has been clicked and is being dragged.\n * The function receives as argument the mouse event, the current transform object\n * and the current position in canvas coordinate `transform.target` is a reference to the\n * current object being transformed.\n */\nexport const polyActionHandler = (\n eventData: TPointerEvent,\n transform: TTransformAnchor,\n x: number,\n y: number\n) => {\n const { target, pointIndex } = transform;\n const poly = target as Polyline;\n const mouseLocalPosition = sendPointToPlane(\n new Point(x, y),\n undefined,\n poly.calcOwnMatrix()\n );\n\n poly.points[pointIndex] = mouseLocalPosition.add(poly.pathOffset);\n poly.setDimensions();\n\n return true;\n};\n\n/**\n * Keep the polygon in the same position when we change its `width`/`height`/`top`/`left`.\n */\nexport const factoryPolyActionHandler = (\n pointIndex: number,\n fn: TransformActionHandler<TTransformAnchor>\n) => {\n return function (\n eventData: TPointerEvent,\n transform: Transform,\n x: number,\n y: number\n ) {\n const poly = transform.target as Polyline,\n anchorPoint = new Point(\n poly.points[(pointIndex > 0 ? pointIndex : poly.points.length) - 1]\n ),\n anchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix()),\n actionPerformed = fn(eventData, { ...transform, pointIndex }, x, y);\n\n const newAnchorPointInParentPlane = anchorPoint\n .subtract(poly.pathOffset)\n .transform(poly.calcOwnMatrix());\n\n const diff = newAnchorPointInParentPlane.subtract(anchorPointInParentPlane);\n poly.left -= diff.x;\n poly.top -= diff.y;\n\n return actionPerformed;\n };\n};\n\nexport const createPolyActionHandler = (pointIndex: number) =>\n wrapWithFireEvent(\n ACTION_NAME,\n factoryPolyActionHandler(pointIndex, polyActionHandler)\n );\n\nexport function createPolyControls(\n poly: Polyline,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n numOfControls: number,\n options?: Partial<Control>\n): Record<string, Control>;\nexport function createPolyControls(\n arg0: number | Polyline,\n options: Partial<Control> = {}\n) {\n const controls = {} as Record<string, Control>;\n for (\n let idx = 0;\n idx < (typeof arg0 === 'number' ? arg0 : arg0.points.length);\n idx++\n ) {\n controls[`p${idx}`] = new Control({\n actionName: ACTION_NAME,\n positionHandler: createPolyPositionHandler(idx),\n actionHandler: createPolyActionHandler(idx),\n ...options,\n });\n }\n return controls;\n}\n"],"names":["ACTION_NAME","MODIFY_POLY","createPolyPositionHandler","pointIndex","dim","finalMatrix","polyObject","points","pathOffset","Point","subtract","transform","multiplyTransformMatrices","getViewportTransform","calcTransformMatrix","polyActionHandler","eventData","x","y","target","poly","mouseLocalPosition","sendPointToPlane","undefined","calcOwnMatrix","add","setDimensions","factoryPolyActionHandler","fn","anchorPoint","length","anchorPointInParentPlane","actionPerformed","_objectSpread","newAnchorPointInParentPlane","diff","left","top","createPolyActionHandler","wrapWithFireEvent","createPolyControls","arg0","options","arguments","controls","idx","concat","Control","actionName","positionHandler","actionHandler"],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export declare const getActionFromCorner: (alreadySelected: boolean, corner: str
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function isTransformCentered(transform: Transform): boolean;
|
|
20
20
|
export declare function invertOrigin(origin: TOriginX | TOriginY): number;
|
|
21
|
-
export declare const isLocked: (target: FabricObject, lockingKey:
|
|
21
|
+
export declare const isLocked: (target: FabricObject, lockingKey: "lockMovementX" | "lockMovementY" | "lockRotation" | "lockScalingX" | "lockScalingY" | "lockSkewingX" | "lockSkewingY" | "lockScalingFlip") => boolean;
|
|
22
22
|
export declare const commonEventInfo: TransformAction<Transform, BasicTransformEvent>;
|
|
23
23
|
/**
|
|
24
24
|
* Combine control position and object angle to find the control direction compared
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { TModificationEvents, Transform, TransformActionHandler } from '../EventTypeDefs';
|
|
2
2
|
/**
|
|
3
3
|
* Wrap an action handler with firing an event if the action is performed
|
|
4
|
-
* @param {
|
|
5
|
-
* @
|
|
4
|
+
* @param {TModificationEvents} eventName the event we want to fire
|
|
5
|
+
* @param {TransformActionHandler<T>} actionHandler the function to wrap
|
|
6
|
+
* @param {object} extraEventInfo extra information to pas to the event handler
|
|
7
|
+
* @return {TransformActionHandler<T>} a function with an action handler signature
|
|
6
8
|
*/
|
|
7
|
-
export declare const wrapWithFireEvent: <T extends Transform
|
|
9
|
+
export declare const wrapWithFireEvent: <T extends Transform, P extends object = Record<string, never>>(eventName: TModificationEvents, actionHandler: TransformActionHandler<T>, extraEventInfo?: P) => TransformActionHandler<T>;
|
|
8
10
|
//# sourceMappingURL=wrapWithFireEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapWithFireEvent.d.ts","sourceRoot":"","sources":["../../../src/controls/wrapWithFireEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAI1B
|
|
1
|
+
{"version":3,"file":"wrapWithFireEvent.d.ts","sourceRoot":"","sources":["../../../src/controls/wrapWithFireEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAI1B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,MAAM,qCAEL,mBAAmB,iBACf,sBAAsB,CAAC,CAAC,CAAC,mBACvB,CAAC,KAWZ,sBAAsB,CAAC,CAAC,CAC/B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{fireEvent as m}from"./fireEvent.min.mjs";import{commonEventInfo as
|
|
1
|
+
import{objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{fireEvent as m}from"./fireEvent.min.mjs";import{commonEventInfo as o}from"./util.min.mjs";const t=(t,i,e)=>(n,l,p,s)=>{const u=i(n,l,p,s);return u&&m(t,r(r({},o(n,l,p,s)),e)),u};export{t as wrapWithFireEvent};
|
|
2
2
|
//# sourceMappingURL=wrapWithFireEvent.min.mjs.map
|