fabric 7.4.0 → 7.5.0-beta.1
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/README.md +76 -11
- package/dist/fabric.min.mjs +1 -1
- package/dist/fabric.mjs +1 -57
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1480 -1368
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +71 -39
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -440
- package/dist/index.mjs +1 -22871
- package/dist/index.node.cjs +4698 -4605
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +1 -19
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.mjs +1 -22721
- package/dist-extensions/extensions/index.d.ts +5 -9
- package/dist-extensions/extensions/index.d.ts.map +1 -1
- package/dist-extensions/fabric-extensions.min.js +1 -1
- package/dist-extensions/fabric-extensions.min.js.map +1 -1
- package/dist-extensions/index.mjs +5 -9
- package/package.json +74 -60
- package/.agents/skills/fabricjs-open-pr/SKILL.md +0 -134
- package/.browserslistrc +0 -8
- package/.editorconfig +0 -12
- package/.gitattributes +0 -2
- package/.gitpod.yml +0 -22
- package/.husky/pre-commit +0 -1
- package/.nvmrc +0 -1
- package/.oxfmtrc.json +0 -32
- package/AGENTS.md +0 -91
- package/CHANGELOG.md +0 -2137
- package/CODE_OF_CONDUCT.md +0 -15
- package/CONTRIBUTING.md +0 -201
- package/CONTRIBUTOR_LADDER.md +0 -124
- package/SCORECARD_REMEDIATION_PLAN.md +0 -78
- package/SECURITY.md +0 -12
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/defineProperty.min.mjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/defineProperty.mjs +0 -12
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPrimitive.min.mjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPrimitive.mjs +0 -14
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPropertyKey.min.mjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPropertyKey.mjs +0 -9
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/typeof.min.mjs +0 -1
- package/dist/_virtual/_@oxc-project_runtime@0.126.0/helpers/typeof.mjs +0 -11
- package/dist/_virtual/_rolldown/runtime.min.mjs +0 -1
- package/dist/_virtual/_rolldown/runtime.mjs +0 -13
- package/dist/fabric.d.ts +0 -116
- package/dist/fabric.d.ts.map +0 -1
- package/dist/index.min.mjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/index.node.mjs.map +0 -1
- package/dist/package.min.mjs +0 -2
- package/dist/package.min.mjs.map +0 -1
- package/dist/package.mjs +0 -6
- package/dist/package.mjs.map +0 -1
- package/dist/src/ClassRegistry.d.ts +0 -14
- package/dist/src/ClassRegistry.d.ts.map +0 -1
- package/dist/src/ClassRegistry.min.mjs +0 -2
- package/dist/src/ClassRegistry.min.mjs.map +0 -1
- package/dist/src/ClassRegistry.mjs +0 -35
- package/dist/src/ClassRegistry.mjs.map +0 -1
- package/dist/src/Collection.d.ts +0 -141
- package/dist/src/Collection.d.ts.map +0 -1
- package/dist/src/Collection.min.mjs +0 -2
- package/dist/src/Collection.min.mjs.map +0 -1
- package/dist/src/Collection.mjs +0 -257
- package/dist/src/Collection.mjs.map +0 -1
- package/dist/src/CommonMethods.d.ts +0 -32
- package/dist/src/CommonMethods.d.ts.map +0 -1
- package/dist/src/CommonMethods.min.mjs +0 -2
- package/dist/src/CommonMethods.min.mjs.map +0 -1
- package/dist/src/CommonMethods.mjs +0 -52
- package/dist/src/CommonMethods.mjs.map +0 -1
- package/dist/src/EventTypeDefs.d.ts +0 -283
- package/dist/src/EventTypeDefs.d.ts.map +0 -1
- package/dist/src/Intersection.d.ts +0 -112
- package/dist/src/Intersection.d.ts.map +0 -1
- package/dist/src/Intersection.min.mjs +0 -2
- package/dist/src/Intersection.min.mjs.map +0 -1
- package/dist/src/Intersection.mjs +0 -189
- package/dist/src/Intersection.mjs.map +0 -1
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -22
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -1
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -2
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -1
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -48
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutManager.d.ts +0 -56
- package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutManager.mjs +0 -199
- package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -13
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -50
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -14
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -22
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -14
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -22
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -30
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -62
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -10
- package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -2
- package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -1
- package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -24
- package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -1
- package/dist/src/LayoutManager/constants.d.ts +0 -7
- package/dist/src/LayoutManager/constants.d.ts.map +0 -1
- package/dist/src/LayoutManager/constants.min.mjs +0 -2
- package/dist/src/LayoutManager/constants.min.mjs.map +0 -1
- package/dist/src/LayoutManager/constants.mjs +0 -11
- package/dist/src/LayoutManager/constants.mjs.map +0 -1
- package/dist/src/LayoutManager/index.d.ts +0 -7
- package/dist/src/LayoutManager/index.d.ts.map +0 -1
- package/dist/src/LayoutManager/types.d.ts +0 -106
- package/dist/src/LayoutManager/types.d.ts.map +0 -1
- package/dist/src/Observable.d.ts +0 -68
- package/dist/src/Observable.d.ts.map +0 -1
- package/dist/src/Observable.min.mjs +0 -2
- package/dist/src/Observable.min.mjs.map +0 -1
- package/dist/src/Observable.mjs +0 -76
- package/dist/src/Observable.mjs.map +0 -1
- package/dist/src/Pattern/Pattern.d.ts +0 -95
- package/dist/src/Pattern/Pattern.d.ts.map +0 -1
- package/dist/src/Pattern/Pattern.min.mjs +0 -3
- package/dist/src/Pattern/Pattern.min.mjs.map +0 -1
- package/dist/src/Pattern/Pattern.mjs +0 -147
- package/dist/src/Pattern/Pattern.mjs.map +0 -1
- package/dist/src/Pattern/index.d.ts +0 -3
- package/dist/src/Pattern/index.d.ts.map +0 -1
- package/dist/src/Pattern/types.d.ts +0 -12
- package/dist/src/Pattern/types.d.ts.map +0 -1
- package/dist/src/Point.d.ts +0 -219
- package/dist/src/Point.d.ts.map +0 -1
- package/dist/src/Point.min.mjs +0 -2
- package/dist/src/Point.min.mjs.map +0 -1
- package/dist/src/Point.mjs +0 -316
- package/dist/src/Point.mjs.map +0 -1
- package/dist/src/Shadow.d.ts +0 -89
- package/dist/src/Shadow.d.ts.map +0 -1
- package/dist/src/Shadow.min.mjs +0 -2
- package/dist/src/Shadow.min.mjs.map +0 -1
- package/dist/src/Shadow.mjs +0 -116
- package/dist/src/Shadow.mjs.map +0 -1
- package/dist/src/brushes/BaseBrush.d.ts +0 -94
- package/dist/src/brushes/BaseBrush.d.ts.map +0 -1
- package/dist/src/brushes/BaseBrush.min.mjs +0 -2
- package/dist/src/brushes/BaseBrush.min.mjs.map +0 -1
- package/dist/src/brushes/BaseBrush.mjs +0 -145
- package/dist/src/brushes/BaseBrush.mjs.map +0 -1
- package/dist/src/brushes/CircleBrush.d.ts +0 -43
- package/dist/src/brushes/CircleBrush.d.ts.map +0 -1
- package/dist/src/brushes/CircleBrush.min.mjs +0 -2
- package/dist/src/brushes/CircleBrush.min.mjs.map +0 -1
- package/dist/src/brushes/CircleBrush.mjs +0 -118
- package/dist/src/brushes/CircleBrush.mjs.map +0 -1
- package/dist/src/brushes/PatternBrush.d.ts +0 -23
- package/dist/src/brushes/PatternBrush.d.ts.map +0 -1
- package/dist/src/brushes/PatternBrush.min.mjs +0 -2
- package/dist/src/brushes/PatternBrush.min.mjs.map +0 -1
- package/dist/src/brushes/PatternBrush.mjs +0 -53
- package/dist/src/brushes/PatternBrush.mjs.map +0 -1
- package/dist/src/brushes/PencilBrush.d.ts +0 -92
- package/dist/src/brushes/PencilBrush.d.ts.map +0 -1
- package/dist/src/brushes/PencilBrush.min.mjs +0 -2
- package/dist/src/brushes/PencilBrush.min.mjs.map +0 -1
- package/dist/src/brushes/PencilBrush.mjs +0 -233
- package/dist/src/brushes/PencilBrush.mjs.map +0 -1
- package/dist/src/brushes/SprayBrush.d.ts +0 -68
- package/dist/src/brushes/SprayBrush.d.ts.map +0 -1
- package/dist/src/brushes/SprayBrush.min.mjs +0 -2
- package/dist/src/brushes/SprayBrush.min.mjs.map +0 -1
- package/dist/src/brushes/SprayBrush.mjs +0 -187
- package/dist/src/brushes/SprayBrush.mjs.map +0 -1
- package/dist/src/brushes/typedefs.d.ts +0 -18
- package/dist/src/brushes/typedefs.d.ts.map +0 -1
- package/dist/src/cache.d.ts +0 -49
- package/dist/src/cache.d.ts.map +0 -1
- package/dist/src/cache.min.mjs +0 -2
- package/dist/src/cache.min.mjs.map +0 -1
- package/dist/src/cache.mjs +0 -64
- package/dist/src/cache.mjs.map +0 -1
- package/dist/src/canvas/Canvas.d.ts +0 -354
- package/dist/src/canvas/Canvas.d.ts.map +0 -1
- package/dist/src/canvas/Canvas.min.mjs +0 -2
- package/dist/src/canvas/Canvas.min.mjs.map +0 -1
- package/dist/src/canvas/Canvas.mjs +0 -1006
- package/dist/src/canvas/Canvas.mjs.map +0 -1
- package/dist/src/canvas/CanvasOptions.d.ts +0 -219
- package/dist/src/canvas/CanvasOptions.d.ts.map +0 -1
- package/dist/src/canvas/CanvasOptions.min.mjs +0 -2
- package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -1
- package/dist/src/canvas/CanvasOptions.mjs +0 -34
- package/dist/src/canvas/CanvasOptions.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -30
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -2
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -92
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -29
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -2
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -55
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/util.d.ts +0 -23
- package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs +0 -2
- package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -1
- package/dist/src/canvas/DOMManagers/util.mjs +0 -59
- package/dist/src/canvas/DOMManagers/util.mjs.map +0 -1
- package/dist/src/canvas/SelectableCanvas.d.ts +0 -552
- package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +0 -2
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -1
- package/dist/src/canvas/SelectableCanvas.mjs +0 -935
- package/dist/src/canvas/SelectableCanvas.mjs.map +0 -1
- package/dist/src/canvas/StaticCanvas.d.ts +0 -607
- package/dist/src/canvas/StaticCanvas.d.ts.map +0 -1
- package/dist/src/canvas/StaticCanvas.min.mjs +0 -11
- package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -1
- package/dist/src/canvas/StaticCanvas.mjs +0 -934
- package/dist/src/canvas/StaticCanvas.mjs.map +0 -1
- package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -142
- package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -1
- package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -2
- package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -1
- package/dist/src/canvas/StaticCanvasOptions.mjs +0 -22
- package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -1
- package/dist/src/canvas/TextEditingManager.d.ts +0 -21
- package/dist/src/canvas/TextEditingManager.d.ts.map +0 -1
- package/dist/src/canvas/TextEditingManager.min.mjs +0 -2
- package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -1
- package/dist/src/canvas/TextEditingManager.mjs +0 -55
- package/dist/src/canvas/TextEditingManager.mjs.map +0 -1
- package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -2
- package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -1
- package/dist/src/color/Color.d.ts +0 -146
- package/dist/src/color/Color.d.ts.map +0 -1
- package/dist/src/color/Color.min.mjs +0 -2
- package/dist/src/color/Color.min.mjs.map +0 -1
- package/dist/src/color/Color.mjs +0 -294
- package/dist/src/color/Color.mjs.map +0 -1
- package/dist/src/color/color_map.d.ts +0 -155
- package/dist/src/color/color_map.d.ts.map +0 -1
- package/dist/src/color/color_map.min.mjs +0 -2
- package/dist/src/color/color_map.min.mjs.map +0 -1
- package/dist/src/color/color_map.mjs +0 -159
- package/dist/src/color/color_map.mjs.map +0 -1
- package/dist/src/color/constants.d.ts +0 -117
- package/dist/src/color/constants.d.ts.map +0 -1
- package/dist/src/color/constants.min.mjs +0 -2
- package/dist/src/color/constants.min.mjs.map +0 -1
- package/dist/src/color/constants.mjs +0 -121
- package/dist/src/color/constants.mjs.map +0 -1
- package/dist/src/color/typedefs.d.ts +0 -16
- package/dist/src/color/typedefs.d.ts.map +0 -1
- package/dist/src/color/util.d.ts +0 -27
- package/dist/src/color/util.d.ts.map +0 -1
- package/dist/src/color/util.min.mjs +0 -2
- package/dist/src/color/util.min.mjs.map +0 -1
- package/dist/src/color/util.mjs +0 -75
- package/dist/src/color/util.mjs.map +0 -1
- package/dist/src/config.d.ts +0 -113
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.min.mjs +0 -2
- package/dist/src/config.min.mjs.map +0 -1
- package/dist/src/config.mjs +0 -193
- package/dist/src/config.mjs.map +0 -1
- package/dist/src/constants.d.ts +0 -40
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.min.mjs +0 -2
- package/dist/src/constants.min.mjs.map +0 -1
- package/dist/src/constants.mjs +0 -45
- package/dist/src/constants.mjs.map +0 -1
- package/dist/src/controls/Control.d.ts +0 -250
- package/dist/src/controls/Control.d.ts.map +0 -1
- package/dist/src/controls/Control.min.mjs +0 -2
- package/dist/src/controls/Control.min.mjs.map +0 -1
- package/dist/src/controls/Control.mjs +0 -326
- package/dist/src/controls/Control.mjs.map +0 -1
- package/dist/src/controls/changeWidth.d.ts +0 -35
- package/dist/src/controls/changeWidth.d.ts.map +0 -1
- package/dist/src/controls/changeWidth.min.mjs +0 -2
- package/dist/src/controls/changeWidth.min.mjs.map +0 -1
- package/dist/src/controls/changeWidth.mjs +0 -52
- package/dist/src/controls/changeWidth.mjs.map +0 -1
- package/dist/src/controls/commonControls.d.ts +0 -28
- package/dist/src/controls/commonControls.d.ts.map +0 -1
- package/dist/src/controls/commonControls.min.mjs +0 -2
- package/dist/src/controls/commonControls.min.mjs.map +0 -1
- package/dist/src/controls/commonControls.mjs +0 -94
- package/dist/src/controls/commonControls.mjs.map +0 -1
- package/dist/src/controls/controlRendering.d.ts +0 -29
- package/dist/src/controls/controlRendering.d.ts.map +0 -1
- package/dist/src/controls/controlRendering.min.mjs +0 -2
- package/dist/src/controls/controlRendering.min.mjs.map +0 -1
- package/dist/src/controls/controlRendering.mjs +0 -50
- package/dist/src/controls/controlRendering.mjs.map +0 -1
- package/dist/src/controls/drag.d.ts +0 -12
- package/dist/src/controls/drag.d.ts.map +0 -1
- package/dist/src/controls/drag.min.mjs +0 -2
- package/dist/src/controls/drag.min.mjs.map +0 -1
- package/dist/src/controls/drag.mjs +0 -24
- package/dist/src/controls/drag.mjs.map +0 -1
- package/dist/src/controls/fireEvent.d.ts +0 -3
- package/dist/src/controls/fireEvent.d.ts.map +0 -1
- package/dist/src/controls/fireEvent.min.mjs +0 -2
- package/dist/src/controls/fireEvent.min.mjs.map +0 -1
- package/dist/src/controls/fireEvent.mjs +0 -14
- package/dist/src/controls/fireEvent.mjs.map +0 -1
- package/dist/src/controls/index.d.ts +0 -15
- package/dist/src/controls/index.d.ts.map +0 -1
- package/dist/src/controls/index.min.mjs +0 -2
- package/dist/src/controls/index.min.mjs.map +0 -1
- package/dist/src/controls/index.mjs +0 -53
- package/dist/src/controls/index.mjs.map +0 -1
- package/dist/src/controls/pathControl.d.ts +0 -12
- package/dist/src/controls/pathControl.d.ts.map +0 -1
- package/dist/src/controls/pathControl.min.mjs +0 -2
- package/dist/src/controls/pathControl.min.mjs.map +0 -1
- package/dist/src/controls/pathControl.mjs +0 -126
- package/dist/src/controls/pathControl.mjs.map +0 -1
- package/dist/src/controls/polyControl.d.ts +0 -30
- package/dist/src/controls/polyControl.d.ts.map +0 -1
- package/dist/src/controls/polyControl.min.mjs +0 -2
- package/dist/src/controls/polyControl.min.mjs.map +0 -1
- package/dist/src/controls/polyControl.mjs +0 -64
- package/dist/src/controls/polyControl.mjs.map +0 -1
- package/dist/src/controls/rotate.d.ts +0 -12
- package/dist/src/controls/rotate.d.ts.map +0 -1
- package/dist/src/controls/rotate.min.mjs +0 -2
- package/dist/src/controls/rotate.min.mjs.map +0 -1
- package/dist/src/controls/rotate.mjs +0 -49
- package/dist/src/controls/rotate.mjs.map +0 -1
- package/dist/src/controls/scale.d.ts +0 -42
- package/dist/src/controls/scale.d.ts.map +0 -1
- package/dist/src/controls/scale.min.mjs +0 -2
- package/dist/src/controls/scale.min.mjs.map +0 -1
- package/dist/src/controls/scale.mjs +0 -159
- package/dist/src/controls/scale.mjs.map +0 -1
- package/dist/src/controls/scaleSkew.d.ts +0 -39
- package/dist/src/controls/scaleSkew.d.ts.map +0 -1
- package/dist/src/controls/scaleSkew.min.mjs +0 -2
- package/dist/src/controls/scaleSkew.min.mjs.map +0 -1
- package/dist/src/controls/scaleSkew.mjs +0 -58
- package/dist/src/controls/scaleSkew.mjs.map +0 -1
- package/dist/src/controls/skew.d.ts +0 -33
- package/dist/src/controls/skew.d.ts.map +0 -1
- package/dist/src/controls/skew.min.mjs +0 -2
- package/dist/src/controls/skew.min.mjs.map +0 -1
- package/dist/src/controls/skew.mjs +0 -114
- package/dist/src/controls/skew.mjs.map +0 -1
- package/dist/src/controls/util.d.ts +0 -42
- package/dist/src/controls/util.d.ts.map +0 -1
- package/dist/src/controls/util.min.mjs +0 -2
- package/dist/src/controls/util.min.mjs.map +0 -1
- package/dist/src/controls/util.mjs +0 -81
- package/dist/src/controls/util.mjs.map +0 -1
- package/dist/src/controls/wrapWithFireEvent.d.ts +0 -10
- package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -2
- package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -1
- package/dist/src/controls/wrapWithFireEvent.mjs +0 -24
- package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -1
- package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -9
- package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -1
- package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -2
- package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -1
- package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -18
- package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -1
- package/dist/src/env/browser.d.ts +0 -3
- package/dist/src/env/browser.d.ts.map +0 -1
- package/dist/src/env/browser.min.mjs +0 -2
- package/dist/src/env/browser.min.mjs.map +0 -1
- package/dist/src/env/browser.mjs +0 -17
- package/dist/src/env/browser.mjs.map +0 -1
- package/dist/src/env/index.d.ts +0 -34
- package/dist/src/env/index.d.ts.map +0 -1
- package/dist/src/env/index.min.mjs +0 -2
- package/dist/src/env/index.min.mjs.map +0 -1
- package/dist/src/env/index.mjs +0 -44
- package/dist/src/env/index.mjs.map +0 -1
- package/dist/src/env/node.d.ts +0 -6
- package/dist/src/env/node.d.ts.map +0 -1
- package/dist/src/env/types.d.ts +0 -16
- package/dist/src/env/types.d.ts.map +0 -1
- package/dist/src/filters/BaseFilter.d.ts +0 -153
- package/dist/src/filters/BaseFilter.d.ts.map +0 -1
- package/dist/src/filters/BaseFilter.min.mjs +0 -2
- package/dist/src/filters/BaseFilter.min.mjs.map +0 -1
- package/dist/src/filters/BaseFilter.mjs +0 -261
- package/dist/src/filters/BaseFilter.mjs.map +0 -1
- package/dist/src/filters/BlendColor.d.ts +0 -65
- package/dist/src/filters/BlendColor.d.ts.map +0 -1
- package/dist/src/filters/BlendColor.min.mjs +0 -2
- package/dist/src/filters/BlendColor.min.mjs.map +0 -1
- package/dist/src/filters/BlendColor.mjs +0 -143
- package/dist/src/filters/BlendColor.mjs.map +0 -1
- package/dist/src/filters/BlendImage.d.ts +0 -97
- package/dist/src/filters/BlendImage.d.ts.map +0 -1
- package/dist/src/filters/BlendImage.min.mjs +0 -2
- package/dist/src/filters/BlendImage.min.mjs.map +0 -1
- package/dist/src/filters/BlendImage.mjs +0 -151
- package/dist/src/filters/BlendImage.mjs.map +0 -1
- package/dist/src/filters/Blur.d.ts +0 -49
- package/dist/src/filters/Blur.d.ts.map +0 -1
- package/dist/src/filters/Blur.min.mjs +0 -2
- package/dist/src/filters/Blur.min.mjs.map +0 -1
- package/dist/src/filters/Blur.mjs +0 -129
- package/dist/src/filters/Blur.mjs.map +0 -1
- package/dist/src/filters/Boilerplate.d.ts +0 -45
- package/dist/src/filters/Boilerplate.d.ts.map +0 -1
- package/dist/src/filters/Brightness.d.ts +0 -45
- package/dist/src/filters/Brightness.d.ts.map +0 -1
- package/dist/src/filters/Brightness.min.mjs +0 -2
- package/dist/src/filters/Brightness.min.mjs.map +0 -1
- package/dist/src/filters/Brightness.mjs +0 -54
- package/dist/src/filters/Brightness.mjs.map +0 -1
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -27
- package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -1
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -2
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -1
- package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -60
- package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -1
- package/dist/src/filters/ColorMatrix.d.ts +0 -62
- package/dist/src/filters/ColorMatrix.d.ts.map +0 -1
- package/dist/src/filters/ColorMatrix.min.mjs +0 -2
- package/dist/src/filters/ColorMatrix.min.mjs.map +0 -1
- package/dist/src/filters/ColorMatrix.mjs +0 -122
- package/dist/src/filters/ColorMatrix.mjs.map +0 -1
- package/dist/src/filters/ColorMatrixFilters.d.ts +0 -15
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -2
- package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -1
- package/dist/src/filters/ColorMatrixFilters.mjs +0 -178
- package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -1
- package/dist/src/filters/Composed.d.ts +0 -51
- package/dist/src/filters/Composed.d.ts.map +0 -1
- package/dist/src/filters/Composed.min.mjs +0 -2
- package/dist/src/filters/Composed.min.mjs.map +0 -1
- package/dist/src/filters/Composed.mjs +0 -55
- package/dist/src/filters/Composed.mjs.map +0 -1
- package/dist/src/filters/Contrast.d.ts +0 -44
- package/dist/src/filters/Contrast.d.ts.map +0 -1
- package/dist/src/filters/Contrast.min.mjs +0 -2
- package/dist/src/filters/Contrast.min.mjs.map +0 -1
- package/dist/src/filters/Contrast.mjs +0 -54
- package/dist/src/filters/Contrast.mjs.map +0 -1
- package/dist/src/filters/Convolute.d.ts +0 -81
- package/dist/src/filters/Convolute.d.ts.map +0 -1
- package/dist/src/filters/Convolute.min.mjs +0 -2
- package/dist/src/filters/Convolute.min.mjs.map +0 -1
- package/dist/src/filters/Convolute.mjs +0 -134
- package/dist/src/filters/Convolute.mjs.map +0 -1
- package/dist/src/filters/FilterBackend.d.ts +0 -15
- package/dist/src/filters/FilterBackend.d.ts.map +0 -1
- package/dist/src/filters/FilterBackend.min.mjs +0 -2
- package/dist/src/filters/FilterBackend.min.mjs.map +0 -1
- package/dist/src/filters/FilterBackend.mjs +0 -32
- package/dist/src/filters/FilterBackend.mjs.map +0 -1
- package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -7
- package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -1
- package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -2
- package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -1
- package/dist/src/filters/GLProbes/GLProbe.mjs +0 -6
- package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -1
- package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -11
- package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -1
- package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -20
- package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -1
- package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -2
- package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -1
- package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -45
- package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -1
- package/dist/src/filters/Gamma.d.ts +0 -57
- package/dist/src/filters/Gamma.d.ts.map +0 -1
- package/dist/src/filters/Gamma.min.mjs +0 -2
- package/dist/src/filters/Gamma.min.mjs.map +0 -1
- package/dist/src/filters/Gamma.mjs +0 -81
- package/dist/src/filters/Gamma.mjs.map +0 -1
- package/dist/src/filters/Grayscale.d.ts +0 -44
- package/dist/src/filters/Grayscale.d.ts.map +0 -1
- package/dist/src/filters/Grayscale.min.mjs +0 -2
- package/dist/src/filters/Grayscale.min.mjs.map +0 -1
- package/dist/src/filters/Grayscale.mjs +0 -71
- package/dist/src/filters/Grayscale.mjs.map +0 -1
- package/dist/src/filters/HueRotation.d.ts +0 -34
- package/dist/src/filters/HueRotation.d.ts.map +0 -1
- package/dist/src/filters/HueRotation.min.mjs +0 -2
- package/dist/src/filters/HueRotation.min.mjs.map +0 -1
- package/dist/src/filters/HueRotation.mjs +0 -66
- package/dist/src/filters/HueRotation.mjs.map +0 -1
- package/dist/src/filters/Invert.d.ts +0 -51
- package/dist/src/filters/Invert.d.ts.map +0 -1
- package/dist/src/filters/Invert.min.mjs +0 -2
- package/dist/src/filters/Invert.min.mjs.map +0 -1
- package/dist/src/filters/Invert.mjs +0 -61
- package/dist/src/filters/Invert.mjs.map +0 -1
- package/dist/src/filters/Noise.d.ts +0 -43
- package/dist/src/filters/Noise.d.ts.map +0 -1
- package/dist/src/filters/Noise.min.mjs +0 -2
- package/dist/src/filters/Noise.min.mjs.map +0 -1
- package/dist/src/filters/Noise.mjs +0 -57
- package/dist/src/filters/Noise.mjs.map +0 -1
- package/dist/src/filters/Pixelate.d.ts +0 -41
- package/dist/src/filters/Pixelate.d.ts.map +0 -1
- package/dist/src/filters/Pixelate.min.mjs +0 -2
- package/dist/src/filters/Pixelate.min.mjs.map +0 -1
- package/dist/src/filters/Pixelate.mjs +0 -65
- package/dist/src/filters/Pixelate.mjs.map +0 -1
- package/dist/src/filters/RemoveColor.d.ts +0 -51
- package/dist/src/filters/RemoveColor.d.ts.map +0 -1
- package/dist/src/filters/RemoveColor.min.mjs +0 -2
- package/dist/src/filters/RemoveColor.min.mjs.map +0 -1
- package/dist/src/filters/RemoveColor.mjs +0 -76
- package/dist/src/filters/RemoveColor.mjs.map +0 -1
- package/dist/src/filters/Resize.d.ts +0 -134
- package/dist/src/filters/Resize.d.ts.map +0 -1
- package/dist/src/filters/Resize.min.mjs +0 -3
- package/dist/src/filters/Resize.min.mjs.map +0 -1
- package/dist/src/filters/Resize.mjs +0 -349
- package/dist/src/filters/Resize.mjs.map +0 -1
- package/dist/src/filters/Saturation.d.ts +0 -45
- package/dist/src/filters/Saturation.d.ts.map +0 -1
- package/dist/src/filters/Saturation.min.mjs +0 -2
- package/dist/src/filters/Saturation.min.mjs.map +0 -1
- package/dist/src/filters/Saturation.mjs +0 -58
- package/dist/src/filters/Saturation.mjs.map +0 -1
- package/dist/src/filters/Vibrance.d.ts +0 -45
- package/dist/src/filters/Vibrance.d.ts.map +0 -1
- package/dist/src/filters/Vibrance.min.mjs +0 -2
- package/dist/src/filters/Vibrance.min.mjs.map +0 -1
- package/dist/src/filters/Vibrance.mjs +0 -60
- package/dist/src/filters/Vibrance.mjs.map +0 -1
- package/dist/src/filters/WebGLFilterBackend.d.ts +0 -131
- package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -2
- package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -1
- package/dist/src/filters/WebGLFilterBackend.mjs +0 -260
- package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -1
- package/dist/src/filters/filters.d.ts +0 -23
- package/dist/src/filters/filters.d.ts.map +0 -1
- package/dist/src/filters/filters.min.mjs +0 -2
- package/dist/src/filters/filters.min.mjs.map +0 -1
- package/dist/src/filters/filters.mjs +0 -54
- package/dist/src/filters/filters.mjs.map +0 -1
- package/dist/src/filters/index.d.ts +0 -7
- package/dist/src/filters/index.d.ts.map +0 -1
- package/dist/src/filters/shaders/baseFilter.d.ts +0 -4
- package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -1
- package/dist/src/filters/shaders/baseFilter.min.mjs +0 -8
- package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -1
- package/dist/src/filters/shaders/baseFilter.mjs +0 -20
- package/dist/src/filters/shaders/baseFilter.mjs.map +0 -1
- package/dist/src/filters/shaders/blendColor.d.ts +0 -13
- package/dist/src/filters/shaders/blendColor.d.ts.map +0 -1
- package/dist/src/filters/shaders/blendColor.min.mjs +0 -29
- package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -1
- package/dist/src/filters/shaders/blendColor.mjs +0 -36
- package/dist/src/filters/shaders/blendColor.mjs.map +0 -1
- package/dist/src/filters/shaders/blendImage.d.ts +0 -4
- package/dist/src/filters/shaders/blendImage.d.ts.map +0 -1
- package/dist/src/filters/shaders/blendImage.min.mjs +0 -38
- package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -1
- package/dist/src/filters/shaders/blendImage.mjs +0 -46
- package/dist/src/filters/shaders/blendImage.mjs.map +0 -1
- package/dist/src/filters/shaders/blur.d.ts +0 -2
- package/dist/src/filters/shaders/blur.d.ts.map +0 -1
- package/dist/src/filters/shaders/blur.min.mjs +0 -31
- package/dist/src/filters/shaders/blur.min.mjs.map +0 -1
- package/dist/src/filters/shaders/blur.mjs +0 -35
- package/dist/src/filters/shaders/blur.mjs.map +0 -1
- package/dist/src/filters/shaders/brightness.d.ts +0 -2
- package/dist/src/filters/shaders/brightness.d.ts.map +0 -1
- package/dist/src/filters/shaders/brightness.min.mjs +0 -12
- package/dist/src/filters/shaders/brightness.min.mjs.map +0 -1
- package/dist/src/filters/shaders/brightness.mjs +0 -16
- package/dist/src/filters/shaders/brightness.mjs.map +0 -1
- package/dist/src/filters/shaders/colorMatrix.d.ts +0 -2
- package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -1
- package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -13
- package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -1
- package/dist/src/filters/shaders/colorMatrix.mjs +0 -17
- package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -1
- package/dist/src/filters/shaders/constrast.d.ts +0 -2
- package/dist/src/filters/shaders/constrast.d.ts.map +0 -1
- package/dist/src/filters/shaders/constrast.min.mjs +0 -12
- package/dist/src/filters/shaders/constrast.min.mjs.map +0 -1
- package/dist/src/filters/shaders/constrast.mjs +0 -16
- package/dist/src/filters/shaders/constrast.mjs.map +0 -1
- package/dist/src/filters/shaders/convolute.d.ts +0 -11
- package/dist/src/filters/shaders/convolute.d.ts.map +0 -1
- package/dist/src/filters/shaders/convolute.min.mjs +0 -146
- package/dist/src/filters/shaders/convolute.min.mjs.map +0 -1
- package/dist/src/filters/shaders/convolute.mjs +0 -159
- package/dist/src/filters/shaders/convolute.mjs.map +0 -1
- package/dist/src/filters/shaders/gamma.d.ts +0 -2
- package/dist/src/filters/shaders/gamma.d.ts.map +0 -1
- package/dist/src/filters/shaders/gamma.min.mjs +0 -16
- package/dist/src/filters/shaders/gamma.min.mjs.map +0 -1
- package/dist/src/filters/shaders/gamma.mjs +0 -20
- package/dist/src/filters/shaders/gamma.mjs.map +0 -1
- package/dist/src/filters/shaders/grayscale.d.ts +0 -3
- package/dist/src/filters/shaders/grayscale.d.ts.map +0 -1
- package/dist/src/filters/shaders/grayscale.min.mjs +0 -31
- package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -1
- package/dist/src/filters/shaders/grayscale.mjs +0 -39
- package/dist/src/filters/shaders/grayscale.mjs.map +0 -1
- package/dist/src/filters/shaders/invert.d.ts +0 -2
- package/dist/src/filters/shaders/invert.d.ts.map +0 -1
- package/dist/src/filters/shaders/invert.min.mjs +0 -20
- package/dist/src/filters/shaders/invert.min.mjs.map +0 -1
- package/dist/src/filters/shaders/invert.mjs +0 -24
- package/dist/src/filters/shaders/invert.mjs.map +0 -1
- package/dist/src/filters/shaders/noise.d.ts +0 -2
- package/dist/src/filters/shaders/noise.d.ts.map +0 -1
- package/dist/src/filters/shaders/noise.min.mjs +0 -17
- package/dist/src/filters/shaders/noise.min.mjs.map +0 -1
- package/dist/src/filters/shaders/noise.mjs +0 -21
- package/dist/src/filters/shaders/noise.mjs.map +0 -1
- package/dist/src/filters/shaders/pixelate.d.ts +0 -2
- package/dist/src/filters/shaders/pixelate.d.ts.map +0 -1
- package/dist/src/filters/shaders/pixelate.min.mjs +0 -20
- package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -1
- package/dist/src/filters/shaders/pixelate.mjs +0 -24
- package/dist/src/filters/shaders/pixelate.mjs.map +0 -1
- package/dist/src/filters/shaders/removeColor.d.ts +0 -2
- package/dist/src/filters/shaders/removeColor.d.ts.map +0 -1
- package/dist/src/filters/shaders/removeColor.min.mjs +0 -14
- package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -1
- package/dist/src/filters/shaders/removeColor.mjs +0 -18
- package/dist/src/filters/shaders/removeColor.mjs.map +0 -1
- package/dist/src/filters/shaders/saturation.d.ts +0 -2
- package/dist/src/filters/shaders/saturation.d.ts.map +0 -1
- package/dist/src/filters/shaders/saturation.min.mjs +0 -16
- package/dist/src/filters/shaders/saturation.min.mjs.map +0 -1
- package/dist/src/filters/shaders/saturation.mjs +0 -20
- package/dist/src/filters/shaders/saturation.mjs.map +0 -1
- package/dist/src/filters/shaders/vibrance.d.ts +0 -2
- package/dist/src/filters/shaders/vibrance.d.ts.map +0 -1
- package/dist/src/filters/shaders/vibrance.min.mjs +0 -17
- package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -1
- package/dist/src/filters/shaders/vibrance.mjs +0 -21
- package/dist/src/filters/shaders/vibrance.mjs.map +0 -1
- package/dist/src/filters/typedefs.d.ts +0 -70
- package/dist/src/filters/typedefs.d.ts.map +0 -1
- package/dist/src/filters/utils.d.ts +0 -10
- package/dist/src/filters/utils.d.ts.map +0 -1
- package/dist/src/filters/utils.min.mjs +0 -2
- package/dist/src/filters/utils.min.mjs.map +0 -1
- package/dist/src/filters/utils.mjs +0 -37
- package/dist/src/filters/utils.mjs.map +0 -1
- package/dist/src/gradient/Gradient.d.ts +0 -142
- package/dist/src/gradient/Gradient.d.ts.map +0 -1
- package/dist/src/gradient/Gradient.min.mjs +0 -5
- package/dist/src/gradient/Gradient.min.mjs.map +0 -1
- package/dist/src/gradient/Gradient.mjs +0 -231
- package/dist/src/gradient/Gradient.mjs.map +0 -1
- package/dist/src/gradient/constants.d.ts +0 -15
- package/dist/src/gradient/constants.d.ts.map +0 -1
- package/dist/src/gradient/constants.min.mjs +0 -2
- package/dist/src/gradient/constants.min.mjs.map +0 -1
- package/dist/src/gradient/constants.mjs +0 -16
- package/dist/src/gradient/constants.mjs.map +0 -1
- package/dist/src/gradient/index.d.ts +0 -3
- package/dist/src/gradient/index.d.ts.map +0 -1
- package/dist/src/gradient/parser/misc.d.ts +0 -4
- package/dist/src/gradient/parser/misc.d.ts.map +0 -1
- package/dist/src/gradient/parser/misc.min.mjs +0 -2
- package/dist/src/gradient/parser/misc.min.mjs.map +0 -1
- package/dist/src/gradient/parser/misc.mjs +0 -11
- package/dist/src/gradient/parser/misc.mjs.map +0 -1
- package/dist/src/gradient/parser/parseColorStops.d.ts +0 -3
- package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -1
- package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -2
- package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -1
- package/dist/src/gradient/parser/parseColorStops.mjs +0 -36
- package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -1
- package/dist/src/gradient/parser/parseCoords.d.ts +0 -17
- package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -1
- package/dist/src/gradient/parser/parseCoords.min.mjs +0 -2
- package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -1
- package/dist/src/gradient/parser/parseCoords.mjs +0 -54
- package/dist/src/gradient/parser/parseCoords.mjs.map +0 -1
- package/dist/src/gradient/typedefs.d.ts +0 -93
- package/dist/src/gradient/typedefs.d.ts.map +0 -1
- package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -2
- package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -1
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -2
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -1
- package/dist/src/parkinglot/straighten.d.ts +0 -12
- package/dist/src/parkinglot/straighten.d.ts.map +0 -1
- package/dist/src/parser/applyViewboxTransform.d.ts +0 -13
- package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -1
- package/dist/src/parser/applyViewboxTransform.min.mjs +0 -2
- package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -1
- package/dist/src/parser/applyViewboxTransform.mjs +0 -94
- package/dist/src/parser/applyViewboxTransform.mjs.map +0 -1
- package/dist/src/parser/attributes.d.ts +0 -6
- package/dist/src/parser/attributes.d.ts.map +0 -1
- package/dist/src/parser/attributes.min.mjs +0 -2
- package/dist/src/parser/attributes.min.mjs.map +0 -1
- package/dist/src/parser/attributes.mjs +0 -31
- package/dist/src/parser/attributes.mjs.map +0 -1
- package/dist/src/parser/constants.d.ts +0 -43
- package/dist/src/parser/constants.d.ts.map +0 -1
- package/dist/src/parser/constants.min.mjs +0 -2
- package/dist/src/parser/constants.min.mjs.map +0 -1
- package/dist/src/parser/constants.mjs +0 -88
- package/dist/src/parser/constants.mjs.map +0 -1
- package/dist/src/parser/doesSomeParentMatch.d.ts +0 -2
- package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -1
- package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -2
- package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -1
- package/dist/src/parser/doesSomeParentMatch.mjs +0 -15
- package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -1
- package/dist/src/parser/elementMatchesRule.d.ts +0 -5
- package/dist/src/parser/elementMatchesRule.d.ts.map +0 -1
- package/dist/src/parser/elementMatchesRule.min.mjs +0 -2
- package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -1
- package/dist/src/parser/elementMatchesRule.mjs +0 -16
- package/dist/src/parser/elementMatchesRule.mjs.map +0 -1
- package/dist/src/parser/elements_parser.d.ts +0 -33
- package/dist/src/parser/elements_parser.d.ts.map +0 -1
- package/dist/src/parser/elements_parser.min.mjs +0 -2
- package/dist/src/parser/elements_parser.min.mjs.map +0 -1
- package/dist/src/parser/elements_parser.mjs +0 -106
- package/dist/src/parser/elements_parser.mjs.map +0 -1
- package/dist/src/parser/getCSSRules.d.ts +0 -8
- package/dist/src/parser/getCSSRules.d.ts.map +0 -1
- package/dist/src/parser/getCSSRules.min.mjs +0 -2
- package/dist/src/parser/getCSSRules.min.mjs.map +0 -1
- package/dist/src/parser/getCSSRules.mjs +0 -38
- package/dist/src/parser/getCSSRules.mjs.map +0 -1
- package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -6
- package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -1
- package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -2
- package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -1
- package/dist/src/parser/getGlobalStylesForElement.mjs +0 -17
- package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -1
- package/dist/src/parser/getGradientDefs.d.ts +0 -7
- package/dist/src/parser/getGradientDefs.d.ts.map +0 -1
- package/dist/src/parser/getGradientDefs.min.mjs +0 -2
- package/dist/src/parser/getGradientDefs.min.mjs.map +0 -1
- package/dist/src/parser/getGradientDefs.mjs +0 -30
- package/dist/src/parser/getGradientDefs.mjs.map +0 -1
- package/dist/src/parser/getMultipleNodes.d.ts +0 -2
- package/dist/src/parser/getMultipleNodes.d.ts.map +0 -1
- package/dist/src/parser/getMultipleNodes.min.mjs +0 -2
- package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -1
- package/dist/src/parser/getMultipleNodes.mjs +0 -14
- package/dist/src/parser/getMultipleNodes.mjs.map +0 -1
- package/dist/src/parser/getSvgRegex.d.ts +0 -2
- package/dist/src/parser/getSvgRegex.d.ts.map +0 -1
- package/dist/src/parser/getSvgRegex.min.mjs +0 -2
- package/dist/src/parser/getSvgRegex.min.mjs.map +0 -1
- package/dist/src/parser/getSvgRegex.mjs +0 -8
- package/dist/src/parser/getSvgRegex.mjs.map +0 -1
- package/dist/src/parser/getTagName.d.ts +0 -2
- package/dist/src/parser/getTagName.d.ts.map +0 -1
- package/dist/src/parser/getTagName.min.mjs +0 -2
- package/dist/src/parser/getTagName.min.mjs.map +0 -1
- package/dist/src/parser/getTagName.mjs +0 -6
- package/dist/src/parser/getTagName.mjs.map +0 -1
- package/dist/src/parser/hasInvalidAncestor.d.ts +0 -2
- package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -1
- package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -2
- package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -1
- package/dist/src/parser/hasInvalidAncestor.mjs +0 -14
- package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -1
- package/dist/src/parser/loadSVGFromString.d.ts +0 -17
- package/dist/src/parser/loadSVGFromString.d.ts.map +0 -1
- package/dist/src/parser/loadSVGFromString.min.mjs +0 -2
- package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -1
- package/dist/src/parser/loadSVGFromString.mjs +0 -23
- package/dist/src/parser/loadSVGFromString.mjs.map +0 -1
- package/dist/src/parser/loadSVGFromURL.d.ts +0 -18
- package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -1
- package/dist/src/parser/loadSVGFromURL.min.mjs +0 -2
- package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -1
- package/dist/src/parser/loadSVGFromURL.mjs +0 -32
- package/dist/src/parser/loadSVGFromURL.mjs.map +0 -1
- package/dist/src/parser/normalizeAttr.d.ts +0 -3
- package/dist/src/parser/normalizeAttr.d.ts.map +0 -1
- package/dist/src/parser/normalizeAttr.min.mjs +0 -2
- package/dist/src/parser/normalizeAttr.min.mjs.map +0 -1
- package/dist/src/parser/normalizeAttr.mjs +0 -10
- package/dist/src/parser/normalizeAttr.mjs.map +0 -1
- package/dist/src/parser/normalizeValue.d.ts +0 -2
- package/dist/src/parser/normalizeValue.d.ts.map +0 -1
- package/dist/src/parser/normalizeValue.min.mjs +0 -2
- package/dist/src/parser/normalizeValue.min.mjs.map +0 -1
- package/dist/src/parser/normalizeValue.mjs +0 -39
- package/dist/src/parser/normalizeValue.mjs.map +0 -1
- package/dist/src/parser/parseAttributes.d.ts +0 -10
- package/dist/src/parser/parseAttributes.d.ts.map +0 -1
- package/dist/src/parser/parseAttributes.min.mjs +0 -2
- package/dist/src/parser/parseAttributes.min.mjs.map +0 -1
- package/dist/src/parser/parseAttributes.mjs +0 -53
- package/dist/src/parser/parseAttributes.mjs.map +0 -1
- package/dist/src/parser/parseFontDeclaration.d.ts +0 -7
- package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -1
- package/dist/src/parser/parseFontDeclaration.min.mjs +0 -2
- package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -1
- package/dist/src/parser/parseFontDeclaration.mjs +0 -23
- package/dist/src/parser/parseFontDeclaration.mjs.map +0 -1
- package/dist/src/parser/parsePointsAttribute.d.ts +0 -8
- package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -1
- package/dist/src/parser/parsePointsAttribute.min.mjs +0 -2
- package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -1
- package/dist/src/parser/parsePointsAttribute.mjs +0 -20
- package/dist/src/parser/parsePointsAttribute.mjs.map +0 -1
- package/dist/src/parser/parseSVGDocument.d.ts +0 -19
- package/dist/src/parser/parseSVGDocument.d.ts.map +0 -1
- package/dist/src/parser/parseSVGDocument.min.mjs +0 -2
- package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -1
- package/dist/src/parser/parseSVGDocument.mjs +0 -67
- package/dist/src/parser/parseSVGDocument.mjs.map +0 -1
- package/dist/src/parser/parseStyleAttribute.d.ts +0 -7
- package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -1
- package/dist/src/parser/parseStyleAttribute.min.mjs +0 -2
- package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -1
- package/dist/src/parser/parseStyleAttribute.mjs +0 -19
- package/dist/src/parser/parseStyleAttribute.mjs.map +0 -1
- package/dist/src/parser/parseStyleObject.d.ts +0 -8
- package/dist/src/parser/parseStyleObject.d.ts.map +0 -1
- package/dist/src/parser/parseStyleObject.min.mjs +0 -2
- package/dist/src/parser/parseStyleObject.min.mjs.map +0 -1
- package/dist/src/parser/parseStyleObject.mjs +0 -17
- package/dist/src/parser/parseStyleObject.mjs.map +0 -1
- package/dist/src/parser/parseStyleString.d.ts +0 -8
- package/dist/src/parser/parseStyleString.d.ts.map +0 -1
- package/dist/src/parser/parseStyleString.min.mjs +0 -2
- package/dist/src/parser/parseStyleString.min.mjs.map +0 -1
- package/dist/src/parser/parseStyleString.mjs +0 -18
- package/dist/src/parser/parseStyleString.mjs.map +0 -1
- package/dist/src/parser/parseTransformAttribute.d.ts +0 -8
- package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -1
- package/dist/src/parser/parseTransformAttribute.min.mjs +0 -2
- package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -1
- package/dist/src/parser/parseTransformAttribute.mjs +0 -70
- package/dist/src/parser/parseTransformAttribute.mjs.map +0 -1
- package/dist/src/parser/parseUseDirectives.d.ts +0 -2
- package/dist/src/parser/parseUseDirectives.d.ts.map +0 -1
- package/dist/src/parser/parseUseDirectives.min.mjs +0 -2
- package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -1
- package/dist/src/parser/parseUseDirectives.mjs +0 -60
- package/dist/src/parser/parseUseDirectives.mjs.map +0 -1
- package/dist/src/parser/percent.d.ts +0 -14
- package/dist/src/parser/percent.d.ts.map +0 -1
- package/dist/src/parser/percent.min.mjs +0 -2
- package/dist/src/parser/percent.min.mjs.map +0 -1
- package/dist/src/parser/percent.mjs +0 -24
- package/dist/src/parser/percent.mjs.map +0 -1
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -2
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -1
- package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -2
- package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -1
- package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -35
- package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -1
- package/dist/src/parser/selectorMatches.d.ts +0 -2
- package/dist/src/parser/selectorMatches.d.ts.map +0 -1
- package/dist/src/parser/selectorMatches.min.mjs +0 -2
- package/dist/src/parser/selectorMatches.min.mjs.map +0 -1
- package/dist/src/parser/selectorMatches.mjs +0 -26
- package/dist/src/parser/selectorMatches.mjs.map +0 -1
- package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -6
- package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -1
- package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -2
- package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -1
- package/dist/src/parser/setStrokeFillOpacity.mjs +0 -30
- package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -1
- package/dist/src/parser/typedefs.d.ts +0 -10
- package/dist/src/parser/typedefs.d.ts.map +0 -1
- package/dist/src/shapes/ActiveSelection.d.ts +0 -105
- package/dist/src/shapes/ActiveSelection.d.ts.map +0 -1
- package/dist/src/shapes/ActiveSelection.min.mjs +0 -2
- package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -1
- package/dist/src/shapes/ActiveSelection.mjs +0 -166
- package/dist/src/shapes/ActiveSelection.mjs.map +0 -1
- package/dist/src/shapes/Circle.d.ts +0 -107
- package/dist/src/shapes/Circle.d.ts.map +0 -1
- package/dist/src/shapes/Circle.min.mjs +0 -4
- package/dist/src/shapes/Circle.min.mjs.map +0 -1
- package/dist/src/shapes/Circle.mjs +0 -153
- package/dist/src/shapes/Circle.mjs.map +0 -1
- package/dist/src/shapes/Ellipse.d.ts +0 -82
- package/dist/src/shapes/Ellipse.d.ts.map +0 -1
- package/dist/src/shapes/Ellipse.min.mjs +0 -2
- package/dist/src/shapes/Ellipse.min.mjs.map +0 -1
- package/dist/src/shapes/Ellipse.mjs +0 -124
- package/dist/src/shapes/Ellipse.mjs.map +0 -1
- package/dist/src/shapes/Group.d.ts +0 -301
- package/dist/src/shapes/Group.d.ts.map +0 -1
- package/dist/src/shapes/Group.min.mjs +0 -4
- package/dist/src/shapes/Group.min.mjs.map +0 -1
- package/dist/src/shapes/Group.mjs +0 -485
- package/dist/src/shapes/Group.mjs.map +0 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -78
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -2
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -287
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -1
- package/dist/src/shapes/IText/IText.d.ts +0 -331
- package/dist/src/shapes/IText/IText.d.ts.map +0 -1
- package/dist/src/shapes/IText/IText.min.mjs +0 -2
- package/dist/src/shapes/IText/IText.min.mjs.map +0 -1
- package/dist/src/shapes/IText/IText.mjs +0 -471
- package/dist/src/shapes/IText/IText.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -312
- package/dist/src/shapes/IText/ITextBehavior.d.ts.map +0 -1
- package/dist/src/shapes/IText/ITextBehavior.min.mjs +0 -3
- package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs +0 -688
- package/dist/src/shapes/IText/ITextBehavior.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -63
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -1
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -2
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextClickBehavior.mjs +0 -154
- package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -197
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -2
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +0 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs +0 -415
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +0 -1
- package/dist/src/shapes/IText/constants.d.ts +0 -13
- package/dist/src/shapes/IText/constants.d.ts.map +0 -1
- package/dist/src/shapes/IText/constants.min.mjs +0 -2
- package/dist/src/shapes/IText/constants.min.mjs.map +0 -1
- package/dist/src/shapes/IText/constants.mjs +0 -45
- package/dist/src/shapes/IText/constants.mjs.map +0 -1
- package/dist/src/shapes/Image.d.ts +0 -297
- package/dist/src/shapes/Image.d.ts.map +0 -1
- package/dist/src/shapes/Image.min.mjs +0 -5
- package/dist/src/shapes/Image.min.mjs.map +0 -1
- package/dist/src/shapes/Image.mjs +0 -467
- package/dist/src/shapes/Image.mjs.map +0 -1
- package/dist/src/shapes/Line.d.ts +0 -118
- package/dist/src/shapes/Line.d.ts.map +0 -1
- package/dist/src/shapes/Line.min.mjs +0 -2
- package/dist/src/shapes/Line.min.mjs.map +0 -1
- package/dist/src/shapes/Line.mjs +0 -195
- package/dist/src/shapes/Line.mjs.map +0 -1
- package/dist/src/shapes/Object/FabricObject.d.ts +0 -11
- package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -1
- package/dist/src/shapes/Object/FabricObject.min.mjs +0 -2
- package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -1
- package/dist/src/shapes/Object/FabricObject.mjs +0 -14
- package/dist/src/shapes/Object/FabricObject.mjs.map +0 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -72
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -6
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -123
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -1
- package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -317
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -2
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs +0 -406
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -1
- package/dist/src/shapes/Object/Object.d.ts +0 -718
- package/dist/src/shapes/Object/Object.d.ts.map +0 -1
- package/dist/src/shapes/Object/Object.min.mjs +0 -2
- package/dist/src/shapes/Object/Object.min.mjs.map +0 -1
- package/dist/src/shapes/Object/Object.mjs +0 -1115
- package/dist/src/shapes/Object/Object.mjs.map +0 -1
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -350
- package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -2
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -510
- package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -1
- package/dist/src/shapes/Object/defaultValues.d.ts +0 -8
- package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -1
- package/dist/src/shapes/Object/defaultValues.min.mjs +0 -2
- package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -1
- package/dist/src/shapes/Object/defaultValues.mjs +0 -112
- package/dist/src/shapes/Object/defaultValues.mjs.map +0 -1
- package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -92
- package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -37
- package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -63
- package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -62
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -78
- package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -43
- package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -41
- package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -32
- package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -63
- package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -1
- package/dist/src/shapes/Object/types/index.d.ts +0 -6
- package/dist/src/shapes/Object/types/index.d.ts.map +0 -1
- package/dist/src/shapes/Path.d.ts +0 -208
- package/dist/src/shapes/Path.d.ts.map +0 -1
- package/dist/src/shapes/Path.min.mjs +0 -2
- package/dist/src/shapes/Path.min.mjs.map +0 -1
- package/dist/src/shapes/Path.mjs +0 -259
- package/dist/src/shapes/Path.mjs.map +0 -1
- package/dist/src/shapes/Polygon.d.ts +0 -7
- package/dist/src/shapes/Polygon.d.ts.map +0 -1
- package/dist/src/shapes/Polygon.min.mjs +0 -2
- package/dist/src/shapes/Polygon.min.mjs.map +0 -1
- package/dist/src/shapes/Polygon.mjs +0 -17
- package/dist/src/shapes/Polygon.mjs.map +0 -1
- package/dist/src/shapes/Polyline.d.ts +0 -149
- package/dist/src/shapes/Polyline.d.ts.map +0 -1
- package/dist/src/shapes/Polyline.min.mjs +0 -2
- package/dist/src/shapes/Polyline.min.mjs.map +0 -1
- package/dist/src/shapes/Polyline.mjs +0 -265
- package/dist/src/shapes/Polyline.mjs.map +0 -1
- package/dist/src/shapes/Rect.d.ts +0 -77
- package/dist/src/shapes/Rect.d.ts.map +0 -1
- package/dist/src/shapes/Rect.min.mjs +0 -2
- package/dist/src/shapes/Rect.min.mjs.map +0 -1
- package/dist/src/shapes/Rect.mjs +0 -121
- package/dist/src/shapes/Rect.mjs.map +0 -1
- package/dist/src/shapes/Text/StyledText.d.ts +0 -126
- package/dist/src/shapes/Text/StyledText.d.ts.map +0 -1
- package/dist/src/shapes/Text/StyledText.min.mjs +0 -2
- package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -1
- package/dist/src/shapes/Text/StyledText.mjs +0 -199
- package/dist/src/shapes/Text/StyledText.mjs.map +0 -1
- package/dist/src/shapes/Text/Text.d.ts +0 -709
- package/dist/src/shapes/Text/Text.d.ts.map +0 -1
- package/dist/src/shapes/Text/Text.min.mjs +0 -3
- package/dist/src/shapes/Text/Text.min.mjs.map +0 -1
- package/dist/src/shapes/Text/Text.mjs +0 -1040
- package/dist/src/shapes/Text/Text.mjs.map +0 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -40
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -3
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -212
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -1
- package/dist/src/shapes/Text/constants.d.ts +0 -15
- package/dist/src/shapes/Text/constants.d.ts.map +0 -1
- package/dist/src/shapes/Text/constants.min.mjs +0 -2
- package/dist/src/shapes/Text/constants.min.mjs.map +0 -1
- package/dist/src/shapes/Text/constants.mjs +0 -97
- package/dist/src/shapes/Text/constants.mjs.map +0 -1
- package/dist/src/shapes/Textbox.d.ts +0 -223
- package/dist/src/shapes/Textbox.d.ts.map +0 -1
- package/dist/src/shapes/Textbox.min.mjs +0 -3
- package/dist/src/shapes/Textbox.min.mjs.map +0 -1
- package/dist/src/shapes/Textbox.mjs +0 -372
- package/dist/src/shapes/Textbox.mjs.map +0 -1
- package/dist/src/shapes/Triangle.d.ts +0 -27
- package/dist/src/shapes/Triangle.d.ts.map +0 -1
- package/dist/src/shapes/Triangle.min.mjs +0 -2
- package/dist/src/shapes/Triangle.min.mjs.map +0 -1
- package/dist/src/shapes/Triangle.mjs +0 -61
- package/dist/src/shapes/Triangle.mjs.map +0 -1
- package/dist/src/typedefs.d.ts +0 -99
- package/dist/src/typedefs.d.ts.map +0 -1
- package/dist/src/util/animation/AnimationBase.d.ts +0 -55
- package/dist/src/util/animation/AnimationBase.d.ts.map +0 -1
- package/dist/src/util/animation/AnimationBase.min.mjs +0 -2
- package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -1
- package/dist/src/util/animation/AnimationBase.mjs +0 -99
- package/dist/src/util/animation/AnimationBase.mjs.map +0 -1
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -3
- package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -1
- package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -2
- package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -1
- package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -12
- package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -1
- package/dist/src/util/animation/AnimationRegistry.d.ts +0 -29
- package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -1
- package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -2
- package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -1
- package/dist/src/util/animation/AnimationRegistry.mjs +0 -50
- package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -1
- package/dist/src/util/animation/ArrayAnimation.d.ts +0 -10
- package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -1
- package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -2
- package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -1
- package/dist/src/util/animation/ArrayAnimation.mjs +0 -22
- package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -1
- package/dist/src/util/animation/ColorAnimation.d.ts +0 -11
- package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -1
- package/dist/src/util/animation/ColorAnimation.min.mjs +0 -2
- package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -1
- package/dist/src/util/animation/ColorAnimation.mjs +0 -40
- package/dist/src/util/animation/ColorAnimation.mjs.map +0 -1
- package/dist/src/util/animation/ValueAnimation.d.ts +0 -10
- package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -1
- package/dist/src/util/animation/ValueAnimation.min.mjs +0 -2
- package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -1
- package/dist/src/util/animation/ValueAnimation.mjs +0 -22
- package/dist/src/util/animation/ValueAnimation.mjs.map +0 -1
- package/dist/src/util/animation/animate.d.ts +0 -37
- package/dist/src/util/animation/animate.d.ts.map +0 -1
- package/dist/src/util/animation/animate.min.mjs +0 -2
- package/dist/src/util/animation/animate.min.mjs.map +0 -1
- package/dist/src/util/animation/animate.mjs +0 -21
- package/dist/src/util/animation/animate.mjs.map +0 -1
- package/dist/src/util/animation/easing.d.ts +0 -130
- package/dist/src/util/animation/easing.d.ts.map +0 -1
- package/dist/src/util/animation/easing.min.mjs +0 -2
- package/dist/src/util/animation/easing.min.mjs.map +0 -1
- package/dist/src/util/animation/easing.mjs +0 -245
- package/dist/src/util/animation/easing.mjs.map +0 -1
- package/dist/src/util/animation/index.d.ts +0 -3
- package/dist/src/util/animation/index.d.ts.map +0 -1
- package/dist/src/util/animation/types.d.ts +0 -87
- package/dist/src/util/animation/types.d.ts.map +0 -1
- package/dist/src/util/applyMixins.d.ts +0 -8
- package/dist/src/util/applyMixins.d.ts.map +0 -1
- package/dist/src/util/applyMixins.min.mjs +0 -2
- package/dist/src/util/applyMixins.min.mjs.map +0 -1
- package/dist/src/util/applyMixins.mjs +0 -16
- package/dist/src/util/applyMixins.mjs.map +0 -1
- package/dist/src/util/dom_event.d.ts +0 -6
- package/dist/src/util/dom_event.d.ts.map +0 -1
- package/dist/src/util/dom_event.min.mjs +0 -2
- package/dist/src/util/dom_event.min.mjs.map +0 -1
- package/dist/src/util/dom_event.mjs +0 -26
- package/dist/src/util/dom_event.mjs.map +0 -1
- package/dist/src/util/dom_misc.d.ts +0 -12
- package/dist/src/util/dom_misc.d.ts.map +0 -1
- package/dist/src/util/dom_misc.min.mjs +0 -2
- package/dist/src/util/dom_misc.min.mjs.map +0 -1
- package/dist/src/util/dom_misc.mjs +0 -43
- package/dist/src/util/dom_misc.mjs.map +0 -1
- package/dist/src/util/index.d.ts +0 -35
- package/dist/src/util/index.d.ts.map +0 -1
- package/dist/src/util/index.min.mjs +0 -2
- package/dist/src/util/index.min.mjs.map +0 -1
- package/dist/src/util/index.mjs +0 -120
- package/dist/src/util/index.mjs.map +0 -1
- package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -11
- package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -1
- package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -2
- package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -1
- package/dist/src/util/internals/applyCanvasTransform.mjs +0 -19
- package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -1
- package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -2
- package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -1
- package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -2
- package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -1
- package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -9
- package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -1
- package/dist/src/util/internals/cloneStyles.d.ts +0 -3
- package/dist/src/util/internals/cloneStyles.d.ts.map +0 -1
- package/dist/src/util/internals/cloneStyles.min.mjs +0 -2
- package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -1
- package/dist/src/util/internals/cloneStyles.mjs +0 -15
- package/dist/src/util/internals/cloneStyles.mjs.map +0 -1
- package/dist/src/util/internals/console.d.ts +0 -8
- package/dist/src/util/internals/console.d.ts.map +0 -1
- package/dist/src/util/internals/console.min.mjs +0 -2
- package/dist/src/util/internals/console.min.mjs.map +0 -1
- package/dist/src/util/internals/console.mjs +0 -16
- package/dist/src/util/internals/console.mjs.map +0 -1
- package/dist/src/util/internals/dom_style.d.ts +0 -7
- package/dist/src/util/internals/dom_style.d.ts.map +0 -1
- package/dist/src/util/internals/dom_style.min.mjs +0 -2
- package/dist/src/util/internals/dom_style.min.mjs.map +0 -1
- package/dist/src/util/internals/dom_style.mjs +0 -15
- package/dist/src/util/internals/dom_style.mjs.map +0 -1
- package/dist/src/util/internals/findRight.d.ts +0 -2
- package/dist/src/util/internals/findRight.d.ts.map +0 -1
- package/dist/src/util/internals/findRight.min.mjs +0 -2
- package/dist/src/util/internals/findRight.min.mjs.map +0 -1
- package/dist/src/util/internals/findRight.mjs +0 -9
- package/dist/src/util/internals/findRight.mjs.map +0 -1
- package/dist/src/util/internals/getRandomInt.d.ts +0 -8
- package/dist/src/util/internals/getRandomInt.d.ts.map +0 -1
- package/dist/src/util/internals/getRandomInt.min.mjs +0 -2
- package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -1
- package/dist/src/util/internals/getRandomInt.mjs +0 -12
- package/dist/src/util/internals/getRandomInt.mjs.map +0 -1
- package/dist/src/util/internals/ifNaN.d.ts +0 -8
- package/dist/src/util/internals/ifNaN.d.ts.map +0 -1
- package/dist/src/util/internals/ifNaN.min.mjs +0 -2
- package/dist/src/util/internals/ifNaN.min.mjs.map +0 -1
- package/dist/src/util/internals/ifNaN.mjs +0 -14
- package/dist/src/util/internals/ifNaN.mjs.map +0 -1
- package/dist/src/util/internals/normalizeWhiteSpace.d.ts +0 -2
- package/dist/src/util/internals/normalizeWhiteSpace.d.ts.map +0 -1
- package/dist/src/util/internals/normalizeWhiteSpace.min.mjs +0 -2
- package/dist/src/util/internals/normalizeWhiteSpace.min.mjs.map +0 -1
- package/dist/src/util/internals/normalizeWhiteSpace.mjs +0 -6
- package/dist/src/util/internals/normalizeWhiteSpace.mjs.map +0 -1
- package/dist/src/util/internals/removeFromArray.d.ts +0 -9
- package/dist/src/util/internals/removeFromArray.d.ts.map +0 -1
- package/dist/src/util/internals/removeFromArray.min.mjs +0 -2
- package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -1
- package/dist/src/util/internals/removeFromArray.mjs +0 -17
- package/dist/src/util/internals/removeFromArray.mjs.map +0 -1
- package/dist/src/util/internals/svgExportCheck.d.ts +0 -4
- package/dist/src/util/internals/svgExportCheck.d.ts.map +0 -1
- package/dist/src/util/internals/svgExportCheck.min.mjs +0 -2
- package/dist/src/util/internals/svgExportCheck.min.mjs.map +0 -1
- package/dist/src/util/internals/svgExportCheck.mjs +0 -12
- package/dist/src/util/internals/svgExportCheck.mjs.map +0 -1
- package/dist/src/util/internals/uid.d.ts +0 -2
- package/dist/src/util/internals/uid.d.ts.map +0 -1
- package/dist/src/util/internals/uid.min.mjs +0 -2
- package/dist/src/util/internals/uid.min.mjs.map +0 -1
- package/dist/src/util/internals/uid.mjs +0 -7
- package/dist/src/util/internals/uid.mjs.map +0 -1
- package/dist/src/util/lang_string.d.ts +0 -22
- package/dist/src/util/lang_string.d.ts.map +0 -1
- package/dist/src/util/lang_string.min.mjs +0 -2
- package/dist/src/util/lang_string.min.mjs.map +0 -1
- package/dist/src/util/lang_string.mjs +0 -68
- package/dist/src/util/lang_string.mjs.map +0 -1
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -9
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -1
- package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -2
- package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -1
- package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -26
- package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -1
- package/dist/src/util/misc/capValue.d.ts +0 -2
- package/dist/src/util/misc/capValue.d.ts.map +0 -1
- package/dist/src/util/misc/capValue.min.mjs +0 -2
- package/dist/src/util/misc/capValue.min.mjs.map +0 -1
- package/dist/src/util/misc/capValue.mjs +0 -6
- package/dist/src/util/misc/capValue.mjs.map +0 -1
- package/dist/src/util/misc/cos.d.ts +0 -10
- package/dist/src/util/misc/cos.d.ts.map +0 -1
- package/dist/src/util/misc/cos.min.mjs +0 -2
- package/dist/src/util/misc/cos.min.mjs.map +0 -1
- package/dist/src/util/misc/cos.mjs +0 -22
- package/dist/src/util/misc/cos.mjs.map +0 -1
- package/dist/src/util/misc/dom.d.ts +0 -35
- package/dist/src/util/misc/dom.d.ts.map +0 -1
- package/dist/src/util/misc/dom.min.mjs +0 -2
- package/dist/src/util/misc/dom.min.mjs.map +0 -1
- package/dist/src/util/misc/dom.mjs +0 -58
- package/dist/src/util/misc/dom.mjs.map +0 -1
- package/dist/src/util/misc/findScaleTo.d.ts +0 -20
- package/dist/src/util/misc/findScaleTo.d.ts.map +0 -1
- package/dist/src/util/misc/findScaleTo.min.mjs +0 -2
- package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -1
- package/dist/src/util/misc/findScaleTo.mjs +0 -23
- package/dist/src/util/misc/findScaleTo.mjs.map +0 -1
- package/dist/src/util/misc/groupSVGElements.d.ts +0 -10
- package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -1
- package/dist/src/util/misc/groupSVGElements.min.mjs +0 -2
- package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -1
- package/dist/src/util/misc/groupSVGElements.mjs +0 -16
- package/dist/src/util/misc/groupSVGElements.mjs.map +0 -1
- package/dist/src/util/misc/isTransparent.d.ts +0 -11
- package/dist/src/util/misc/isTransparent.d.ts.map +0 -1
- package/dist/src/util/misc/isTransparent.min.mjs +0 -2
- package/dist/src/util/misc/isTransparent.min.mjs.map +0 -1
- package/dist/src/util/misc/isTransparent.mjs +0 -21
- package/dist/src/util/misc/isTransparent.mjs.map +0 -1
- package/dist/src/util/misc/matrix.d.ts +0 -184
- package/dist/src/util/misc/matrix.d.ts.map +0 -1
- package/dist/src/util/misc/matrix.min.mjs +0 -2
- package/dist/src/util/misc/matrix.min.mjs.map +0 -1
- package/dist/src/util/misc/matrix.mjs +0 -252
- package/dist/src/util/misc/matrix.mjs.map +0 -1
- package/dist/src/util/misc/mergeClipPaths.d.ts +0 -22
- package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -1
- package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -2
- package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -1
- package/dist/src/util/misc/mergeClipPaths.mjs +0 -40
- package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -1
- package/dist/src/util/misc/objectEnlive.d.ts +0 -46
- package/dist/src/util/misc/objectEnlive.d.ts.map +0 -1
- package/dist/src/util/misc/objectEnlive.min.mjs +0 -2
- package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -1
- package/dist/src/util/misc/objectEnlive.mjs +0 -116
- package/dist/src/util/misc/objectEnlive.mjs.map +0 -1
- package/dist/src/util/misc/objectTransforms.d.ts +0 -62
- package/dist/src/util/misc/objectTransforms.d.ts.map +0 -1
- package/dist/src/util/misc/objectTransforms.min.mjs +0 -2
- package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -1
- package/dist/src/util/misc/objectTransforms.mjs +0 -95
- package/dist/src/util/misc/objectTransforms.mjs.map +0 -1
- package/dist/src/util/misc/pick.d.ts +0 -9
- package/dist/src/util/misc/pick.d.ts.map +0 -1
- package/dist/src/util/misc/pick.min.mjs +0 -2
- package/dist/src/util/misc/pick.min.mjs.map +0 -1
- package/dist/src/util/misc/pick.mjs +0 -23
- package/dist/src/util/misc/pick.mjs.map +0 -1
- package/dist/src/util/misc/planeChange.d.ts +0 -64
- package/dist/src/util/misc/planeChange.d.ts.map +0 -1
- package/dist/src/util/misc/planeChange.min.mjs +0 -2
- package/dist/src/util/misc/planeChange.min.mjs.map +0 -1
- package/dist/src/util/misc/planeChange.mjs +0 -72
- package/dist/src/util/misc/planeChange.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -52
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -2
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -87
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -90
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -2
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -168
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -27
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -2
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -43
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/index.d.ts +0 -12
- package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -1
- package/dist/src/util/misc/projectStroke/index.min.mjs +0 -2
- package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/index.mjs +0 -47
- package/dist/src/util/misc/projectStroke/index.mjs.map +0 -1
- package/dist/src/util/misc/projectStroke/types.d.ts +0 -23
- package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -1
- package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -14
- package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -1
- package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -2
- package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -1
- package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -18
- package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -1
- package/dist/src/util/misc/resolveOrigin.d.ts +0 -9
- package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -1
- package/dist/src/util/misc/resolveOrigin.min.mjs +0 -2
- package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -1
- package/dist/src/util/misc/resolveOrigin.mjs +0 -19
- package/dist/src/util/misc/resolveOrigin.mjs.map +0 -1
- package/dist/src/util/misc/sin.d.ts +0 -10
- package/dist/src/util/misc/sin.d.ts.map +0 -1
- package/dist/src/util/misc/sin.min.mjs +0 -2
- package/dist/src/util/misc/sin.min.mjs.map +0 -1
- package/dist/src/util/misc/sin.mjs +0 -24
- package/dist/src/util/misc/sin.mjs.map +0 -1
- package/dist/src/util/misc/svgExport.d.ts +0 -8
- package/dist/src/util/misc/svgExport.d.ts.map +0 -1
- package/dist/src/util/misc/svgExport.min.mjs +0 -2
- package/dist/src/util/misc/svgExport.min.mjs.map +0 -1
- package/dist/src/util/misc/svgExport.mjs +0 -13
- package/dist/src/util/misc/svgExport.mjs.map +0 -1
- package/dist/src/util/misc/svgParsing.d.ts +0 -40
- package/dist/src/util/misc/svgParsing.d.ts.map +0 -1
- package/dist/src/util/misc/svgParsing.min.mjs +0 -2
- package/dist/src/util/misc/svgParsing.min.mjs.map +0 -1
- package/dist/src/util/misc/svgParsing.mjs +0 -125
- package/dist/src/util/misc/svgParsing.mjs.map +0 -1
- package/dist/src/util/misc/textStyles.d.ts +0 -32
- package/dist/src/util/misc/textStyles.d.ts.map +0 -1
- package/dist/src/util/misc/textStyles.min.mjs +0 -3
- package/dist/src/util/misc/textStyles.min.mjs.map +0 -1
- package/dist/src/util/misc/textStyles.mjs +0 -73
- package/dist/src/util/misc/textStyles.mjs.map +0 -1
- package/dist/src/util/misc/toFixed.d.ts +0 -8
- package/dist/src/util/misc/toFixed.d.ts.map +0 -1
- package/dist/src/util/misc/toFixed.min.mjs +0 -2
- package/dist/src/util/misc/toFixed.min.mjs.map +0 -1
- package/dist/src/util/misc/toFixed.mjs +0 -12
- package/dist/src/util/misc/toFixed.mjs.map +0 -1
- package/dist/src/util/misc/vectors.d.ts +0 -72
- package/dist/src/util/misc/vectors.d.ts.map +0 -1
- package/dist/src/util/misc/vectors.min.mjs +0 -2
- package/dist/src/util/misc/vectors.min.mjs.map +0 -1
- package/dist/src/util/misc/vectors.mjs +0 -80
- package/dist/src/util/misc/vectors.mjs.map +0 -1
- package/dist/src/util/path/index.d.ts +0 -95
- package/dist/src/util/path/index.d.ts.map +0 -1
- package/dist/src/util/path/index.min.mjs +0 -2
- package/dist/src/util/path/index.min.mjs.map +0 -1
- package/dist/src/util/path/index.mjs +0 -696
- package/dist/src/util/path/index.mjs.map +0 -1
- package/dist/src/util/path/regex.d.ts +0 -3
- package/dist/src/util/path/regex.d.ts.map +0 -1
- package/dist/src/util/path/regex.min.mjs +0 -2
- package/dist/src/util/path/regex.min.mjs.map +0 -1
- package/dist/src/util/path/regex.mjs +0 -16
- package/dist/src/util/path/regex.mjs.map +0 -1
- package/dist/src/util/path/typechecks.d.ts +0 -24
- package/dist/src/util/path/typechecks.d.ts.map +0 -1
- package/dist/src/util/path/typedefs.d.ts +0 -222
- package/dist/src/util/path/typedefs.d.ts.map +0 -1
- package/dist/src/util/transform_matrix_removal.d.ts +0 -15
- package/dist/src/util/transform_matrix_removal.d.ts.map +0 -1
- package/dist/src/util/transform_matrix_removal.min.mjs +0 -2
- package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -1
- package/dist/src/util/transform_matrix_removal.mjs +0 -50
- package/dist/src/util/transform_matrix_removal.mjs.map +0 -1
- package/dist/src/util/typeAssertions.d.ts +0 -13
- package/dist/src/util/typeAssertions.d.ts.map +0 -1
- package/dist/src/util/typeAssertions.min.mjs +0 -2
- package/dist/src/util/typeAssertions.min.mjs.map +0 -1
- package/dist/src/util/typeAssertions.mjs +0 -21
- package/dist/src/util/typeAssertions.mjs.map +0 -1
- package/dist-extensions/_virtual/_@oxc-project_runtime@0.126.0/helpers/defineProperty.mjs +0 -12
- package/dist-extensions/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPrimitive.mjs +0 -14
- package/dist-extensions/_virtual/_@oxc-project_runtime@0.126.0/helpers/toPropertyKey.mjs +0 -9
- package/dist-extensions/_virtual/_@oxc-project_runtime@0.126.0/helpers/typeof.mjs +0 -11
- package/dist-extensions/aligning_guidelines/index.mjs +0 -224
- package/dist-extensions/aligning_guidelines/index.mjs.map +0 -1
- package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -51
- package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -1
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -62
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -1
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -66
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -1
- package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -72
- package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -1
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -38
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -1
- package/dist-extensions/cropping_controls/controlRendering.mjs +0 -90
- package/dist-extensions/cropping_controls/controlRendering.mjs.map +0 -1
- package/dist-extensions/cropping_controls/croppingControls.mjs +0 -179
- package/dist-extensions/cropping_controls/croppingControls.mjs.map +0 -1
- package/dist-extensions/cropping_controls/croppingHandlers.mjs +0 -234
- package/dist-extensions/cropping_controls/croppingHandlers.mjs.map +0 -1
- package/dist-extensions/cropping_controls/enterCropMode.mjs +0 -35
- package/dist-extensions/cropping_controls/enterCropMode.mjs.map +0 -1
- package/dist-extensions/data_updaters/gradient/index.mjs +0 -32
- package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -1
- package/dist-extensions/data_updaters/origins/index.mjs +0 -37
- package/dist-extensions/data_updaters/origins/index.mjs.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -50
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -42
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -10
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -8
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -24
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -8
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -1
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -3
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -1
- package/dist-extensions/extensions/cropping_controls/controlRendering.d.ts +0 -22
- package/dist-extensions/extensions/cropping_controls/controlRendering.d.ts.map +0 -1
- package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts +0 -22
- package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts.map +0 -1
- package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts +0 -55
- package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts.map +0 -1
- package/dist-extensions/extensions/cropping_controls/enterCropMode.d.ts +0 -9
- package/dist-extensions/extensions/cropping_controls/enterCropMode.d.ts.map +0 -1
- package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -11
- package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -1
- package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -21
- package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -1
- package/dist-extensions/extensions/linear_gradient_controls/index.d.ts +0 -2
- package/dist-extensions/extensions/linear_gradient_controls/index.d.ts.map +0 -1
- package/dist-extensions/extensions/linear_gradient_controls/linearGradientControls.d.ts +0 -4
- package/dist-extensions/extensions/linear_gradient_controls/linearGradientControls.d.ts.map +0 -1
- package/dist-extensions/extensions/linear_gradient_controls/linearGradientHandlers.d.ts +0 -10
- package/dist-extensions/extensions/linear_gradient_controls/linearGradientHandlers.d.ts.map +0 -1
- package/dist-extensions/extensions/westures_integration/index.d.ts +0 -16
- package/dist-extensions/extensions/westures_integration/index.d.ts.map +0 -1
- package/dist-extensions/fabric.d.ts +0 -116
- package/dist-extensions/fabric.d.ts.map +0 -1
- package/dist-extensions/index.d.ts +0 -2
- package/dist-extensions/index.d.ts.map +0 -1
- package/dist-extensions/linear_gradient_controls/linearGradientControls.mjs +0 -30
- package/dist-extensions/linear_gradient_controls/linearGradientControls.mjs.map +0 -1
- package/dist-extensions/linear_gradient_controls/linearGradientHandlers.mjs +0 -71
- package/dist-extensions/linear_gradient_controls/linearGradientHandlers.mjs.map +0 -1
- package/dist-extensions/src/ClassRegistry.d.ts +0 -14
- package/dist-extensions/src/ClassRegistry.d.ts.map +0 -1
- package/dist-extensions/src/Collection.d.ts +0 -141
- package/dist-extensions/src/Collection.d.ts.map +0 -1
- package/dist-extensions/src/CommonMethods.d.ts +0 -32
- package/dist-extensions/src/CommonMethods.d.ts.map +0 -1
- package/dist-extensions/src/EventTypeDefs.d.ts +0 -283
- package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -1
- package/dist-extensions/src/Intersection.d.ts +0 -112
- package/dist-extensions/src/Intersection.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -22
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -56
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -13
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -14
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -14
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -30
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -10
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/constants.d.ts +0 -7
- package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/index.d.ts +0 -7
- package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -1
- package/dist-extensions/src/LayoutManager/types.d.ts +0 -106
- package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -1
- package/dist-extensions/src/Observable.d.ts +0 -68
- package/dist-extensions/src/Observable.d.ts.map +0 -1
- package/dist-extensions/src/Pattern/Pattern.d.ts +0 -95
- package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -1
- package/dist-extensions/src/Pattern/index.d.ts +0 -3
- package/dist-extensions/src/Pattern/index.d.ts.map +0 -1
- package/dist-extensions/src/Pattern/types.d.ts +0 -12
- package/dist-extensions/src/Pattern/types.d.ts.map +0 -1
- package/dist-extensions/src/Point.d.ts +0 -219
- package/dist-extensions/src/Point.d.ts.map +0 -1
- package/dist-extensions/src/Shadow.d.ts +0 -89
- package/dist-extensions/src/Shadow.d.ts.map +0 -1
- package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -94
- package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -1
- package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -43
- package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -1
- package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -23
- package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -1
- package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -92
- package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -1
- package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -68
- package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -1
- package/dist-extensions/src/brushes/typedefs.d.ts +0 -18
- package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/cache.d.ts +0 -49
- package/dist-extensions/src/cache.d.ts.map +0 -1
- package/dist-extensions/src/canvas/Canvas.d.ts +0 -354
- package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -1
- package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -219
- package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -1
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -30
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -1
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -29
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -1
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -23
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -1
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -552
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -1
- package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -607
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -1
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -142
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -1
- package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -21
- package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -1
- package/dist-extensions/src/color/Color.d.ts +0 -146
- package/dist-extensions/src/color/Color.d.ts.map +0 -1
- package/dist-extensions/src/color/color_map.d.ts +0 -155
- package/dist-extensions/src/color/color_map.d.ts.map +0 -1
- package/dist-extensions/src/color/constants.d.ts +0 -117
- package/dist-extensions/src/color/constants.d.ts.map +0 -1
- package/dist-extensions/src/color/typedefs.d.ts +0 -16
- package/dist-extensions/src/color/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/color/util.d.ts +0 -27
- package/dist-extensions/src/color/util.d.ts.map +0 -1
- package/dist-extensions/src/config.d.ts +0 -113
- package/dist-extensions/src/config.d.ts.map +0 -1
- package/dist-extensions/src/constants.d.ts +0 -40
- package/dist-extensions/src/constants.d.ts.map +0 -1
- package/dist-extensions/src/controls/Control.d.ts +0 -250
- package/dist-extensions/src/controls/Control.d.ts.map +0 -1
- package/dist-extensions/src/controls/changeWidth.d.ts +0 -35
- package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -1
- package/dist-extensions/src/controls/commonControls.d.ts +0 -28
- package/dist-extensions/src/controls/commonControls.d.ts.map +0 -1
- package/dist-extensions/src/controls/controlRendering.d.ts +0 -29
- package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -1
- package/dist-extensions/src/controls/drag.d.ts +0 -12
- package/dist-extensions/src/controls/drag.d.ts.map +0 -1
- package/dist-extensions/src/controls/fireEvent.d.ts +0 -3
- package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -1
- package/dist-extensions/src/controls/index.d.ts +0 -15
- package/dist-extensions/src/controls/index.d.ts.map +0 -1
- package/dist-extensions/src/controls/pathControl.d.ts +0 -12
- package/dist-extensions/src/controls/pathControl.d.ts.map +0 -1
- package/dist-extensions/src/controls/polyControl.d.ts +0 -30
- package/dist-extensions/src/controls/polyControl.d.ts.map +0 -1
- package/dist-extensions/src/controls/rotate.d.ts +0 -12
- package/dist-extensions/src/controls/rotate.d.ts.map +0 -1
- package/dist-extensions/src/controls/scale.d.ts +0 -42
- package/dist-extensions/src/controls/scale.d.ts.map +0 -1
- package/dist-extensions/src/controls/scaleSkew.d.ts +0 -39
- package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -1
- package/dist-extensions/src/controls/skew.d.ts +0 -33
- package/dist-extensions/src/controls/skew.d.ts.map +0 -1
- package/dist-extensions/src/controls/util.d.ts +0 -42
- package/dist-extensions/src/controls/util.d.ts.map +0 -1
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -10
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -1
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -9
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -1
- package/dist-extensions/src/env/browser.d.ts +0 -3
- package/dist-extensions/src/env/browser.d.ts.map +0 -1
- package/dist-extensions/src/env/index.d.ts +0 -34
- package/dist-extensions/src/env/index.d.ts.map +0 -1
- package/dist-extensions/src/env/types.d.ts +0 -16
- package/dist-extensions/src/env/types.d.ts.map +0 -1
- package/dist-extensions/src/filters/BaseFilter.d.ts +0 -153
- package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -1
- package/dist-extensions/src/filters/BlendColor.d.ts +0 -65
- package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -1
- package/dist-extensions/src/filters/BlendImage.d.ts +0 -97
- package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -1
- package/dist-extensions/src/filters/Blur.d.ts +0 -49
- package/dist-extensions/src/filters/Blur.d.ts.map +0 -1
- package/dist-extensions/src/filters/Brightness.d.ts +0 -45
- package/dist-extensions/src/filters/Brightness.d.ts.map +0 -1
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -27
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -1
- package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -62
- package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -1
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -15
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -1
- package/dist-extensions/src/filters/Composed.d.ts +0 -51
- package/dist-extensions/src/filters/Composed.d.ts.map +0 -1
- package/dist-extensions/src/filters/Contrast.d.ts +0 -44
- package/dist-extensions/src/filters/Contrast.d.ts.map +0 -1
- package/dist-extensions/src/filters/Convolute.d.ts +0 -81
- package/dist-extensions/src/filters/Convolute.d.ts.map +0 -1
- package/dist-extensions/src/filters/FilterBackend.d.ts +0 -15
- package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -1
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -7
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -1
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -20
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -1
- package/dist-extensions/src/filters/Gamma.d.ts +0 -57
- package/dist-extensions/src/filters/Gamma.d.ts.map +0 -1
- package/dist-extensions/src/filters/Grayscale.d.ts +0 -44
- package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -1
- package/dist-extensions/src/filters/HueRotation.d.ts +0 -34
- package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -1
- package/dist-extensions/src/filters/Invert.d.ts +0 -51
- package/dist-extensions/src/filters/Invert.d.ts.map +0 -1
- package/dist-extensions/src/filters/Noise.d.ts +0 -43
- package/dist-extensions/src/filters/Noise.d.ts.map +0 -1
- package/dist-extensions/src/filters/Pixelate.d.ts +0 -41
- package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -1
- package/dist-extensions/src/filters/RemoveColor.d.ts +0 -51
- package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -1
- package/dist-extensions/src/filters/Resize.d.ts +0 -134
- package/dist-extensions/src/filters/Resize.d.ts.map +0 -1
- package/dist-extensions/src/filters/Saturation.d.ts +0 -45
- package/dist-extensions/src/filters/Saturation.d.ts.map +0 -1
- package/dist-extensions/src/filters/Vibrance.d.ts +0 -45
- package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -1
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -131
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -1
- package/dist-extensions/src/filters/filters.d.ts +0 -23
- package/dist-extensions/src/filters/filters.d.ts.map +0 -1
- package/dist-extensions/src/filters/index.d.ts +0 -7
- package/dist-extensions/src/filters/index.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -4
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -13
- package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -4
- package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/blur.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -11
- package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -3
- package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/invert.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/noise.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -1
- package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -2
- package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -1
- package/dist-extensions/src/filters/typedefs.d.ts +0 -70
- package/dist-extensions/src/filters/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/filters/utils.d.ts +0 -10
- package/dist-extensions/src/filters/utils.d.ts.map +0 -1
- package/dist-extensions/src/gradient/Gradient.d.ts +0 -142
- package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -1
- package/dist-extensions/src/gradient/constants.d.ts +0 -15
- package/dist-extensions/src/gradient/constants.d.ts.map +0 -1
- package/dist-extensions/src/gradient/index.d.ts +0 -3
- package/dist-extensions/src/gradient/index.d.ts.map +0 -1
- package/dist-extensions/src/gradient/parser/misc.d.ts +0 -4
- package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -1
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -3
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -1
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -17
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -1
- package/dist-extensions/src/gradient/typedefs.d.ts +0 -93
- package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -13
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -1
- package/dist-extensions/src/parser/attributes.d.ts +0 -6
- package/dist-extensions/src/parser/attributes.d.ts.map +0 -1
- package/dist-extensions/src/parser/constants.d.ts +0 -43
- package/dist-extensions/src/parser/constants.d.ts.map +0 -1
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -2
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -1
- package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -5
- package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -1
- package/dist-extensions/src/parser/elements_parser.d.ts +0 -33
- package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -1
- package/dist-extensions/src/parser/getCSSRules.d.ts +0 -8
- package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -1
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -6
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -1
- package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -7
- package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -1
- package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -2
- package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -1
- package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -2
- package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -1
- package/dist-extensions/src/parser/getTagName.d.ts +0 -2
- package/dist-extensions/src/parser/getTagName.d.ts.map +0 -1
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -2
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -1
- package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -17
- package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -1
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -18
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -1
- package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -3
- package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -1
- package/dist-extensions/src/parser/normalizeValue.d.ts +0 -2
- package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseAttributes.d.ts +0 -10
- package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -7
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -1
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -8
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -19
- package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -7
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -8
- package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseStyleString.d.ts +0 -8
- package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -8
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -1
- package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -2
- package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -1
- package/dist-extensions/src/parser/percent.d.ts +0 -14
- package/dist-extensions/src/parser/percent.d.ts.map +0 -1
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -2
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -1
- package/dist-extensions/src/parser/selectorMatches.d.ts +0 -2
- package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -1
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -6
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -1
- package/dist-extensions/src/parser/typedefs.d.ts +0 -10
- package/dist-extensions/src/parser/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -105
- package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Circle.d.ts +0 -107
- package/dist-extensions/src/shapes/Circle.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Ellipse.d.ts +0 -82
- package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Group.d.ts +0 -301
- package/dist-extensions/src/shapes/Group.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -78
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/IText.d.ts +0 -331
- package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -312
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -63
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -197
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -1
- package/dist-extensions/src/shapes/IText/constants.d.ts +0 -13
- package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Image.d.ts +0 -297
- package/dist-extensions/src/shapes/Image.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Line.d.ts +0 -118
- package/dist-extensions/src/shapes/Line.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -11
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -72
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -317
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/Object.d.ts +0 -718
- package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -350
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -8
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -92
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -37
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -63
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -62
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -78
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -43
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -41
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -32
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -63
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -6
- package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Path.d.ts +0 -208
- package/dist-extensions/src/shapes/Path.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Polygon.d.ts +0 -7
- package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Polyline.d.ts +0 -149
- package/dist-extensions/src/shapes/Polyline.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Rect.d.ts +0 -77
- package/dist-extensions/src/shapes/Rect.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -126
- package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Text/Text.d.ts +0 -709
- package/dist-extensions/src/shapes/Text/Text.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -40
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Text/constants.d.ts +0 -15
- package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Textbox.d.ts +0 -223
- package/dist-extensions/src/shapes/Textbox.d.ts.map +0 -1
- package/dist-extensions/src/shapes/Triangle.d.ts +0 -27
- package/dist-extensions/src/shapes/Triangle.d.ts.map +0 -1
- package/dist-extensions/src/typedefs.d.ts +0 -99
- package/dist-extensions/src/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -55
- package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -3
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -29
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -10
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -11
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -10
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/animate.d.ts +0 -37
- package/dist-extensions/src/util/animation/animate.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/easing.d.ts +0 -130
- package/dist-extensions/src/util/animation/easing.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/index.d.ts +0 -3
- package/dist-extensions/src/util/animation/index.d.ts.map +0 -1
- package/dist-extensions/src/util/animation/types.d.ts +0 -87
- package/dist-extensions/src/util/animation/types.d.ts.map +0 -1
- package/dist-extensions/src/util/applyMixins.d.ts +0 -8
- package/dist-extensions/src/util/applyMixins.d.ts.map +0 -1
- package/dist-extensions/src/util/dom_event.d.ts +0 -6
- package/dist-extensions/src/util/dom_event.d.ts.map +0 -1
- package/dist-extensions/src/util/dom_misc.d.ts +0 -12
- package/dist-extensions/src/util/dom_misc.d.ts.map +0 -1
- package/dist-extensions/src/util/index.d.ts +0 -35
- package/dist-extensions/src/util/index.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -11
- package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -2
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -3
- package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/console.d.ts +0 -8
- package/dist-extensions/src/util/internals/console.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/dom_style.d.ts +0 -7
- package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/findRight.d.ts +0 -2
- package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -8
- package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -8
- package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/normalizeWhiteSpace.d.ts +0 -2
- package/dist-extensions/src/util/internals/normalizeWhiteSpace.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -9
- package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/svgExportCheck.d.ts +0 -4
- package/dist-extensions/src/util/internals/svgExportCheck.d.ts.map +0 -1
- package/dist-extensions/src/util/internals/uid.d.ts +0 -2
- package/dist-extensions/src/util/internals/uid.d.ts.map +0 -1
- package/dist-extensions/src/util/lang_string.d.ts +0 -22
- package/dist-extensions/src/util/lang_string.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -9
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/capValue.d.ts +0 -2
- package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/cos.d.ts +0 -10
- package/dist-extensions/src/util/misc/cos.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/dom.d.ts +0 -35
- package/dist-extensions/src/util/misc/dom.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -20
- package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -10
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -11
- package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/matrix.d.ts +0 -184
- package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -22
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -46
- package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -62
- package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/pick.d.ts +0 -9
- package/dist-extensions/src/util/misc/pick.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/planeChange.d.ts +0 -64
- package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -52
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -90
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -27
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -12
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -23
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -14
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -9
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/sin.d.ts +0 -10
- package/dist-extensions/src/util/misc/sin.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/svgExport.d.ts +0 -8
- package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -40
- package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/textStyles.d.ts +0 -32
- package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/toFixed.d.ts +0 -8
- package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -1
- package/dist-extensions/src/util/misc/vectors.d.ts +0 -72
- package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -1
- package/dist-extensions/src/util/path/index.d.ts +0 -95
- package/dist-extensions/src/util/path/index.d.ts.map +0 -1
- package/dist-extensions/src/util/path/regex.d.ts +0 -3
- package/dist-extensions/src/util/path/regex.d.ts.map +0 -1
- package/dist-extensions/src/util/path/typedefs.d.ts +0 -222
- package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -1
- package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -15
- package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -1
- package/dist-extensions/src/util/typeAssertions.d.ts +0 -13
- package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -1
- package/dist-extensions/westures_integration/index.mjs +0 -60
- package/dist-extensions/westures_integration/index.mjs.map +0 -1
- package/eslint.config.mjs +0 -119
- package/extensions/aligning_guidelines/README.MD +0 -178
- package/extensions/aligning_guidelines/index.ts +0 -263
- package/extensions/aligning_guidelines/typedefs.ts +0 -41
- package/extensions/aligning_guidelines/util/basic.spec.ts +0 -90
- package/extensions/aligning_guidelines/util/basic.ts +0 -50
- package/extensions/aligning_guidelines/util/collect-line.ts +0 -65
- package/extensions/aligning_guidelines/util/collect-point.ts +0 -116
- package/extensions/aligning_guidelines/util/draw.ts +0 -84
- package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -45
- package/extensions/cropping_controls/controlRendering.ts +0 -170
- package/extensions/cropping_controls/croppingControls.spec.ts +0 -115
- package/extensions/cropping_controls/croppingControls.ts +0 -228
- package/extensions/cropping_controls/croppingHandlers.spec.ts +0 -1234
- package/extensions/cropping_controls/croppingHandlers.ts +0 -491
- package/extensions/cropping_controls/enterCropMode.ts +0 -32
- package/extensions/data_updaters/README.md +0 -9
- package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -75
- package/extensions/data_updaters/gradient/index.spec.ts +0 -126
- package/extensions/data_updaters/gradient/index.ts +0 -58
- package/extensions/data_updaters/origins/README.md +0 -32
- package/extensions/data_updaters/origins/index.spec.ts +0 -100
- package/extensions/data_updaters/origins/index.ts +0 -71
- package/extensions/index.ts +0 -34
- package/extensions/linear_gradient_controls/index.ts +0 -1
- package/extensions/linear_gradient_controls/linearGradientControls.spec.ts +0 -51
- package/extensions/linear_gradient_controls/linearGradientControls.ts +0 -40
- package/extensions/linear_gradient_controls/linearGradientHandlers.spec.ts +0 -186
- package/extensions/linear_gradient_controls/linearGradientHandlers.ts +0 -186
- package/extensions/types.d.ts +0 -1
- package/extensions/westures_integration/index.ts +0 -133
- package/fabric.ts +0 -183
- package/index.node.ts +0 -48
- package/index.ts +0 -1
- package/lib/aligning_guidelines.js +0 -286
- package/lib/centering_guidelines.js +0 -90
- package/lib/event.js +0 -1963
- package/playwright.config.ts +0 -76
- package/playwright.setup.ts +0 -76
- package/publish-next.js +0 -15
- package/rolldown.config.mjs +0 -164
- package/scripts/build.mjs +0 -64
- package/scripts/buildLock.mjs +0 -115
- package/scripts/buildReporter.mjs +0 -15
- package/scripts/buildStats.mjs +0 -40
- package/scripts/colors.mjs +0 -10
- package/scripts/dataUpdater.mjs +0 -350
- package/scripts/date-time.mjs +0 -19
- package/scripts/dirname.mjs +0 -14
- package/scripts/git.mjs +0 -36
- package/scripts/index.mjs +0 -195
- package/scripts/sandbox.mjs +0 -148
- package/scripts/updater-reference.mjs +0 -66
- package/sonar-project.properties +0 -23
- package/src/ClassRegistry.spec.ts +0 -90
- package/src/ClassRegistry.ts +0 -62
- package/src/Collection.spec.ts +0 -463
- package/src/Collection.ts +0 -355
- package/src/CommonMethods.ts +0 -62
- package/src/EventTypeDefs.ts +0 -360
- package/src/Intersection.spec.ts +0 -753
- package/src/Intersection.ts +0 -324
- package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -189
- package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -54
- package/src/LayoutManager/LayoutManager.spec.ts +0 -875
- package/src/LayoutManager/LayoutManager.ts +0 -358
- package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -74
- package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -21
- package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -27
- package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -109
- package/src/LayoutManager/LayoutStrategies/utils.ts +0 -56
- package/src/LayoutManager/README.md +0 -125
- package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -71
- package/src/LayoutManager/constants.ts +0 -6
- package/src/LayoutManager/index.ts +0 -6
- package/src/LayoutManager/types.ts +0 -149
- package/src/Observable.spec.ts +0 -449
- package/src/Observable.ts +0 -179
- package/src/Pattern/Pattern.spec.ts +0 -202
- package/src/Pattern/Pattern.ts +0 -217
- package/src/Pattern/index.ts +0 -2
- package/src/Pattern/types.ts +0 -20
- package/src/Point.spec.ts +0 -573
- package/src/Point.ts +0 -374
- package/src/Shadow.spec.ts +0 -274
- package/src/Shadow.ts +0 -237
- package/src/__snapshots__/Shadow.spec.ts.snap +0 -27
- package/src/brushes/BaseBrush.spec.ts +0 -17
- package/src/brushes/BaseBrush.ts +0 -154
- package/src/brushes/CircleBrush.test.ts +0 -13
- package/src/brushes/CircleBrush.ts +0 -139
- package/src/brushes/PatternBrush.ts +0 -70
- package/src/brushes/PencilBrush.spec.ts +0 -275
- package/src/brushes/PencilBrush.ts +0 -302
- package/src/brushes/SprayBrush.ts +0 -207
- package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -59
- package/src/brushes/typedefs.ts +0 -18
- package/src/cache.spec.ts +0 -75
- package/src/cache.ts +0 -92
- package/src/canvas/Canvas-dispose.spec.ts +0 -537
- package/src/canvas/Canvas-events.spec.ts +0 -1917
- package/src/canvas/Canvas.fixtures.ts +0 -258
- package/src/canvas/Canvas.spec.ts +0 -2662
- package/src/canvas/Canvas.ts +0 -1631
- package/src/canvas/CanvasOptions.ts +0 -288
- package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -129
- package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -80
- package/src/canvas/DOMManagers/util.spec.ts +0 -28
- package/src/canvas/DOMManagers/util.ts +0 -85
- package/src/canvas/SelectableCanvas.spec.ts +0 -505
- package/src/canvas/SelectableCanvas.ts +0 -1494
- package/src/canvas/StaticCanvas.fixtures.ts +0 -292
- package/src/canvas/StaticCanvas.spec.ts +0 -2326
- package/src/canvas/StaticCanvas.ts +0 -1495
- package/src/canvas/StaticCanvasOptions.ts +0 -186
- package/src/canvas/TextEditingManager.ts +0 -68
- package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -62
- package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -755
- package/src/canvas/__tests__/eventData.test.ts +0 -939
- package/src/canvas/canvas_gestures.mixin.ts +0 -208
- package/src/color/Color.ts +0 -334
- package/src/color/color.test.ts +0 -329
- package/src/color/color_map.ts +0 -154
- package/src/color/constants.ts +0 -120
- package/src/color/typedefs.ts +0 -18
- package/src/color/util.ts +0 -93
- package/src/config.ts +0 -158
- package/src/constants.ts +0 -52
- package/src/controls/Control-cursor.spec.ts +0 -65
- package/src/controls/Control-handlers.spec.ts +0 -297
- package/src/controls/Control.spec.ts +0 -172
- package/src/controls/Control.ts +0 -451
- package/src/controls/changeHeight.spec.ts +0 -147
- package/src/controls/changeWidth.test.ts +0 -147
- package/src/controls/changeWidth.ts +0 -88
- package/src/controls/commonControls.ts +0 -106
- package/src/controls/controlRendering.ts +0 -108
- package/src/controls/drag.ts +0 -32
- package/src/controls/fireEvent.ts +0 -18
- package/src/controls/index.ts +0 -29
- package/src/controls/pathControl.spec.ts +0 -77
- package/src/controls/pathControl.ts +0 -293
- package/src/controls/polyControl.spec.ts +0 -51
- package/src/controls/polyControl.ts +0 -131
- package/src/controls/rotate.ts +0 -84
- package/src/controls/scale.test.ts +0 -137
- package/src/controls/scale.ts +0 -278
- package/src/controls/scaleSkew.ts +0 -94
- package/src/controls/skew.ts +0 -251
- package/src/controls/util.ts +0 -162
- package/src/controls/wrapWithFireEvent.ts +0 -34
- package/src/controls/wrapWithFixedAnchor.spec.ts +0 -124
- package/src/controls/wrapWithFixedAnchor.ts +0 -25
- package/src/env/browser.ts +0 -21
- package/src/env/env.spec.ts +0 -47
- package/src/env/index.ts +0 -47
- package/src/env/node.ts +0 -49
- package/src/env/types.ts +0 -16
- package/src/filters/BaseFilter.spec.ts +0 -16
- package/src/filters/BaseFilter.ts +0 -416
- package/src/filters/BlendColor.ts +0 -197
- package/src/filters/BlendImage.ts +0 -220
- package/src/filters/Blur.ts +0 -205
- package/src/filters/Boilerplate.ts +0 -84
- package/src/filters/Brightness.ts +0 -75
- package/src/filters/Canvas2dFilterBackend.ts +0 -68
- package/src/filters/ColorMatrix.spec.ts +0 -39
- package/src/filters/ColorMatrix.ts +0 -141
- package/src/filters/ColorMatrixFilters.ts +0 -84
- package/src/filters/Composed.ts +0 -87
- package/src/filters/Contrast.ts +0 -76
- package/src/filters/Convolute.ts +0 -173
- package/src/filters/FilterBackend.ts +0 -38
- package/src/filters/GLProbes/GLProbe.ts +0 -7
- package/src/filters/GLProbes/NodeGLProbe.ts +0 -15
- package/src/filters/GLProbes/WebGLProbe.ts +0 -49
- package/src/filters/Gamma.ts +0 -119
- package/src/filters/Grayscale.ts +0 -91
- package/src/filters/HueRotation.ts +0 -95
- package/src/filters/Invert.ts +0 -88
- package/src/filters/Noise.ts +0 -76
- package/src/filters/Pixelate.ts +0 -85
- package/src/filters/RemoveColor.ts +0 -121
- package/src/filters/Resize.ts +0 -544
- package/src/filters/Saturation.ts +0 -80
- package/src/filters/Vibrance.ts +0 -82
- package/src/filters/WebGLFilterBackend.spec.ts +0 -50
- package/src/filters/WebGLFilterBackend.ts +0 -416
- package/src/filters/filters.ts +0 -30
- package/src/filters/index.ts +0 -12
- package/src/filters/shaders/baseFilter.ts +0 -17
- package/src/filters/shaders/blendColor.ts +0 -33
- package/src/filters/shaders/blendImage.ts +0 -44
- package/src/filters/shaders/blur.ts +0 -30
- package/src/filters/shaders/brightness.ts +0 -11
- package/src/filters/shaders/colorMatrix.ts +0 -12
- package/src/filters/shaders/constrast.ts +0 -11
- package/src/filters/shaders/convolute.ts +0 -154
- package/src/filters/shaders/gamma.ts +0 -15
- package/src/filters/shaders/grayscale.ts +0 -36
- package/src/filters/shaders/invert.ts +0 -19
- package/src/filters/shaders/noise.ts +0 -16
- package/src/filters/shaders/pixelate.ts +0 -19
- package/src/filters/shaders/removeColor.ts +0 -13
- package/src/filters/shaders/saturation.ts +0 -15
- package/src/filters/shaders/vibrance.ts +0 -16
- package/src/filters/typedefs.ts +0 -81
- package/src/filters/utils.ts +0 -52
- package/src/gradient/Gradient.spec.ts +0 -847
- package/src/gradient/Gradient.ts +0 -424
- package/src/gradient/constants.ts +0 -12
- package/src/gradient/index.ts +0 -2
- package/src/gradient/parser/misc.ts +0 -13
- package/src/gradient/parser/parseColorStops.ts +0 -58
- package/src/gradient/parser/parseCoords.ts +0 -75
- package/src/gradient/typedefs.ts +0 -108
- package/src/mixins/eraser_brush.mixin.ts +0 -869
- package/src/parkinglot/canvas_animation.mixin.ts +0 -120
- package/src/parkinglot/straighten.ts +0 -76
- package/src/parser/applyViewboxTransform.spec.ts +0 -346
- package/src/parser/applyViewboxTransform.ts +0 -172
- package/src/parser/attributes.ts +0 -27
- package/src/parser/constants.spec.ts +0 -36
- package/src/parser/constants.ts +0 -92
- package/src/parser/doesSomeParentMatch.ts +0 -21
- package/src/parser/elementMatchesRule.ts +0 -19
- package/src/parser/elements_parser.ts +0 -230
- package/src/parser/getCSSRules.spec.ts +0 -51
- package/src/parser/getCSSRules.ts +0 -68
- package/src/parser/getGlobalStylesForElement.ts +0 -22
- package/src/parser/getGradientDefs.ts +0 -33
- package/src/parser/getMultipleNodes.ts +0 -19
- package/src/parser/getSvgRegex.ts +0 -3
- package/src/parser/getTagName.ts +0 -1
- package/src/parser/hasInvalidAncestor.ts +0 -20
- package/src/parser/loadSVGFromString.test.ts +0 -75
- package/src/parser/loadSVGFromString.ts +0 -28
- package/src/parser/loadSVGFromURL.ts +0 -42
- package/src/parser/normalizeAttr.ts +0 -5
- package/src/parser/normalizeValue.ts +0 -76
- package/src/parser/parseAttributes.ts +0 -92
- package/src/parser/parseFontDeclaration.ts +0 -44
- package/src/parser/parsePointsAttribute.ts +0 -31
- package/src/parser/parseSVGDocument.ts +0 -93
- package/src/parser/parseStyleAttribute.ts +0 -26
- package/src/parser/parseStyleObject.ts +0 -17
- package/src/parser/parseStyleString.ts +0 -19
- package/src/parser/parseTransformAttribute.ts +0 -92
- package/src/parser/parseUseDirectives.test.ts +0 -115
- package/src/parser/parseUseDirectives.ts +0 -91
- package/src/parser/parser.spec.ts +0 -750
- package/src/parser/percent.ts +0 -31
- package/src/parser/recursivelyParseGradientsXlink.ts +0 -40
- package/src/parser/selectorMatches.ts +0 -26
- package/src/parser/setStrokeFillOpacity.ts +0 -41
- package/src/parser/typedefs.ts +0 -15
- package/src/shapes/ActiveSelection.spec.ts +0 -374
- package/src/shapes/ActiveSelection.ts +0 -254
- package/src/shapes/Circle.spec.ts +0 -265
- package/src/shapes/Circle.ts +0 -257
- package/src/shapes/Ellipse.spec.ts +0 -225
- package/src/shapes/Ellipse.ts +0 -181
- package/src/shapes/Group.spec.ts +0 -1753
- package/src/shapes/Group.ts +0 -717
- package/src/shapes/IText/DraggableTextDelegate.ts +0 -387
- package/src/shapes/IText/IText-click-behavior.spec.ts +0 -435
- package/src/shapes/IText/IText.test.ts +0 -1226
- package/src/shapes/IText/IText.ts +0 -779
- package/src/shapes/IText/ITextBehavior.test.ts +0 -251
- package/src/shapes/IText/ITextBehavior.ts +0 -1119
- package/src/shapes/IText/ITextClickBehavior.ts +0 -242
- package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -380
- package/src/shapes/IText/ITextKeyBehavior.ts +0 -692
- package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -50
- package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -1110
- package/src/shapes/IText/constants.ts +0 -65
- package/src/shapes/Image-filters.spec.ts +0 -1904
- package/src/shapes/Image.spec.ts +0 -1034
- package/src/shapes/Image.ts +0 -859
- package/src/shapes/Line.spec.ts +0 -159
- package/src/shapes/Line.ts +0 -283
- package/src/shapes/Object/FabricObject.spec.ts +0 -19
- package/src/shapes/Object/FabricObject.ts +0 -33
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -270
- package/src/shapes/Object/InteractiveObject.spec.ts +0 -70
- package/src/shapes/Object/InteractiveObject.ts +0 -737
- package/src/shapes/Object/Object-clip-path.spec.ts +0 -197
- package/src/shapes/Object/Object-interactivity.spec.ts +0 -952
- package/src/shapes/Object/Object.spec.ts +0 -1874
- package/src/shapes/Object/Object.ts +0 -1940
- package/src/shapes/Object/ObjectGeometry.spec.ts +0 -1173
- package/src/shapes/Object/ObjectGeometry.ts +0 -819
- package/src/shapes/Object/ObjectOrigin.spec.ts +0 -469
- package/src/shapes/Object/ObjectSerialization.spec.ts +0 -63
- package/src/shapes/Object/StackedObject.spec.ts +0 -369
- package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -75
- package/src/shapes/Object/__snapshots__/ObjectGeometry.spec.ts.snap +0 -22
- package/src/shapes/Object/defaultValues.ts +0 -129
- package/src/shapes/Object/objectSvgExport.spec.ts +0 -139
- package/src/shapes/Object/types/BaseProps.ts +0 -104
- package/src/shapes/Object/types/BorderProps.ts +0 -40
- package/src/shapes/Object/types/ControlProps.ts +0 -70
- package/src/shapes/Object/types/FabricObjectProps.ts +0 -70
- package/src/shapes/Object/types/FillStrokeProps.ts +0 -88
- package/src/shapes/Object/types/LockInteractionProps.ts +0 -49
- package/src/shapes/Object/types/ObjectProps.ts +0 -49
- package/src/shapes/Object/types/ObjectTransformProps.ts +0 -35
- package/src/shapes/Object/types/SerializedObjectProps.ts +0 -70
- package/src/shapes/Object/types/index.ts +0 -7
- package/src/shapes/Path.spec.ts +0 -629
- package/src/shapes/Path.ts +0 -412
- package/src/shapes/Polygon.spec.ts +0 -509
- package/src/shapes/Polygon.ts +0 -15
- package/src/shapes/Polyline.spec.ts +0 -347
- package/src/shapes/Polyline.ts +0 -428
- package/src/shapes/Rect.spec.ts +0 -256
- package/src/shapes/Rect.ts +0 -221
- package/src/shapes/Text/StyledText.spec.ts +0 -61
- package/src/shapes/Text/StyledText.ts +0 -332
- package/src/shapes/Text/Text.spec.ts +0 -1349
- package/src/shapes/Text/Text.ts +0 -1971
- package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -152
- package/src/shapes/Text/TextSVGExportMixin.ts +0 -410
- package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -225
- package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -60
- package/src/shapes/Text/constants.ts +0 -122
- package/src/shapes/Textbox.spec.ts +0 -976
- package/src/shapes/Textbox.ts +0 -579
- package/src/shapes/Triangle.ts +0 -69
- package/src/shapes/__snapshots__/Group.spec.ts.snap +0 -37
- package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -22
- package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -165
- package/src/typedefs.ts +0 -132
- package/src/util/__snapshots__/index.spec.ts.snap +0 -124
- package/src/util/animation/AnimationBase.ts +0 -175
- package/src/util/animation/AnimationFrameProvider.ts +0 -9
- package/src/util/animation/AnimationRegistry.ts +0 -59
- package/src/util/animation/ArrayAnimation.ts +0 -27
- package/src/util/animation/ColorAnimation.ts +0 -74
- package/src/util/animation/ValueAnimation.ts +0 -29
- package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -2772
- package/src/util/animation/animate.ts +0 -74
- package/src/util/animation/animations.spec.ts +0 -520
- package/src/util/animation/easing.ts +0 -327
- package/src/util/animation/index.ts +0 -2
- package/src/util/animation/types.ts +0 -136
- package/src/util/applyMixins.ts +0 -22
- package/src/util/dom_event.spec.ts +0 -23
- package/src/util/dom_event.ts +0 -29
- package/src/util/dom_misc.ts +0 -55
- package/src/util/index.spec.ts +0 -24
- package/src/util/index.ts +0 -116
- package/src/util/internals/applyCanvasTransform.ts +0 -19
- package/src/util/internals/cleanupSvgAttribute.test.ts +0 -17
- package/src/util/internals/cleanupSvgAttribute.ts +0 -12
- package/src/util/internals/cloneStyles.spec.ts +0 -48
- package/src/util/internals/cloneStyles.ts +0 -12
- package/src/util/internals/console.ts +0 -18
- package/src/util/internals/dom_style.spec.ts +0 -17
- package/src/util/internals/dom_style.ts +0 -16
- package/src/util/internals/findRight.ts +0 -11
- package/src/util/internals/getRandomInt.test.ts +0 -49
- package/src/util/internals/getRandomInt.ts +0 -8
- package/src/util/internals/ifNaN.ts +0 -9
- package/src/util/internals/normalizeWhiteSpace.ts +0 -1
- package/src/util/internals/removeFromArray.spec.ts +0 -30
- package/src/util/internals/removeFromArray.ts +0 -14
- package/src/util/internals/svgExportCheck.ts +0 -20
- package/src/util/internals/uid.ts +0 -3
- package/src/util/lang_string.spec.ts +0 -51
- package/src/util/lang_string.ts +0 -107
- package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -25
- package/src/util/misc/boundingBoxFromPoints.ts +0 -29
- package/src/util/misc/capValue.spec.ts +0 -22
- package/src/util/misc/capValue.ts +0 -2
- package/src/util/misc/cos.spec.ts +0 -12
- package/src/util/misc/cos.ts +0 -24
- package/src/util/misc/dom.spec.ts +0 -75
- package/src/util/misc/dom.ts +0 -77
- package/src/util/misc/findScaleTo.spec.ts +0 -68
- package/src/util/misc/findScaleTo.ts +0 -29
- package/src/util/misc/groupSVGElements.spec.ts +0 -41
- package/src/util/misc/groupSVGElements.ts +0 -19
- package/src/util/misc/isTransparent.ts +0 -28
- package/src/util/misc/matrix.spec.ts +0 -251
- package/src/util/misc/matrix.ts +0 -339
- package/src/util/misc/mergeClipPaths.spec.ts +0 -114
- package/src/util/misc/mergeClipPaths.ts +0 -39
- package/src/util/misc/objectEnlive.spec.ts +0 -129
- package/src/util/misc/objectEnlive.ts +0 -206
- package/src/util/misc/objectTransforms.spec.ts +0 -67
- package/src/util/misc/objectTransforms.ts +0 -122
- package/src/util/misc/pick.spec.ts +0 -32
- package/src/util/misc/pick.ts +0 -29
- package/src/util/misc/planeChange.spec.ts +0 -102
- package/src/util/misc/planeChange.ts +0 -92
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -148
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -314
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -66
- package/src/util/misc/projectStroke/index.ts +0 -81
- package/src/util/misc/projectStroke/types.ts +0 -24
- package/src/util/misc/radiansDegreesConversion.spec.ts +0 -27
- package/src/util/misc/radiansDegreesConversion.ts +0 -18
- package/src/util/misc/resolveOrigin.ts +0 -22
- package/src/util/misc/sin.ts +0 -26
- package/src/util/misc/svgExport.ts +0 -15
- package/src/util/misc/svgParsing.spec.ts +0 -103
- package/src/util/misc/svgParsing.ts +0 -180
- package/src/util/misc/textStyles.ts +0 -138
- package/src/util/misc/toFixed.spec.ts +0 -26
- package/src/util/misc/toFixed.ts +0 -8
- package/src/util/misc/vectors.spec.ts +0 -136
- package/src/util/misc/vectors.ts +0 -100
- package/src/util/path/__snapshots__/index.spec.ts.snap +0 -844
- package/src/util/path/index.spec.ts +0 -165
- package/src/util/path/index.ts +0 -1045
- package/src/util/path/regex.ts +0 -46
- package/src/util/path/typechecks.ts +0 -145
- package/src/util/path/typedefs.ts +0 -326
- package/src/util/transform_matrix_removal.ts +0 -61
- package/src/util/typeAssertions.spec.ts +0 -127
- package/src/util/typeAssertions.ts +0 -47
- package/tsconfig-extensions.json +0 -114
- package/tsconfig.build.json +0 -19
- package/tsconfig.json +0 -118
- package/tsconfig.spec.json +0 -26
- package/typedoc.config.json +0 -13
- package/vitest.config.ts +0 -116
- package/vitest.d.ts +0 -32
- package/vitest.env.d.ts +0 -14
- package/vitest.extend.ts +0 -152
- package/vitest.setup.ts +0 -24
package/dist/index.min.js
CHANGED
|
@@ -1,39 +1,44 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):t((e=typeof globalThis<`u`?globalThis:e||self).fabric={})})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r};function r(e){return r=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},r(e)}function i(e){var t=function(e,t){if(r(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var i=n.call(e,t||`default`);if(r(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}(e,`string`);return r(t)==`symbol`?t:t+``}function a(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=class{constructor(){a(this,`browserShadowBlurConstant`,1),a(this,`DPI`,96),a(this,`devicePixelRatio`,typeof window<`u`?window.devicePixelRatio:1),a(this,`perfLimitSizeTotal`,2097152),a(this,`maxCacheSideLimit`,4096),a(this,`minCacheSideLimit`,256),a(this,`disableStyleCopyPaste`,!1),a(this,`enableGLFiltering`,!0),a(this,`textureSize`,4096),a(this,`forceGLPutImageData`,!1),a(this,`cachesBoundsOfCurve`,!1),a(this,`fontPaths`,{}),a(this,`NUM_FRACTION_DIGITS`,4)}};let s=new class extends o{constructor(e){super(),this.configure(e)}configure(e={}){Object.assign(this,e)}addFonts(e={}){this.fontPaths={...this.fontPaths,...e}}removeFonts(e=[]){e.forEach(e=>{delete this.fontPaths[e]})}clearFonts(){this.fontPaths={}}restoreDefaults(e){let t=new o,n=(e==null?void 0:e.reduce((e,n)=>(e[n]=t[n],e),{}))||t;this.configure(n)}},c=(e,...t)=>console[e](`fabric`,...t);var l=class extends Error{constructor(e,t){super(`fabric: ${e}`,t)}},u=class extends l{constructor(e){super(`${e} 'options.signal' is in 'aborted' state`)}},d=class{},f=class extends d{testPrecision(e,t){let n=`precision ${t} float;\nvoid main(){}`,r=e.createShader(e.FRAGMENT_SHADER);return!!r&&(e.shaderSource(r,n),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS))}queryWebGL(e){let t=e.getContext(`webgl`);t&&(this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.GLPrecision=[`highp`,`mediump`,`lowp`].find(e=>this.testPrecision(t,e)),t.getExtension(`WEBGL_lose_context`).loseContext(),c(`log`,`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(e){return!!this.maxTextureSize&&this.maxTextureSize>=e}};let p={},m,h=()=>m||(m={document,window,isTouchSupported:`ontouchstart`in window||`ontouchstart`in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new f,dispose(){},copyPasteData:p}),g=()=>h().document,_=()=>h().window,v=()=>{var e;return Math.max((e=s.devicePixelRatio)==null?_().devicePixelRatio:e,1)},y=new class{constructor(){a(this,`boundsOfCurveCache`,{}),this.charWidthsCache=new Map}getFontCache({fontFamily:e,fontStyle:t,fontWeight:n}){e=e.toLowerCase();let r=this.charWidthsCache;r.has(e)||r.set(e,new Map);let i=r.get(e),a=`${t.toLowerCase()}_${(n+``).toLowerCase()}`;return i.has(a)||i.set(a,new Map),i.get(a)}clearFontCache(e){e?this.charWidthsCache.delete((e||``).toLowerCase()):this.charWidthsCache=new Map}limitDimsByArea(e){let{perfLimitSizeTotal:t}=s,n=Math.sqrt(t*e);return[Math.floor(n),Math.floor(t/n)]}},b=`7.4.0`;function x(){}let S=Math.PI/2,C=Math.PI/4,w=2*Math.PI,ee=Math.PI/180,T=Object.freeze([1,0,0,1,0,0]),E=`center`,D=`left`,O=`bottom`,k=`right`,te=`none`,ne=/\r?\n/,re=`moving`,ie=`scaling`,ae=`rotating`,oe=`rotate`,A=`skewing`,se=`resizing`,ce=`modifyPoly`,le=`changed`,ue=`scale`,de=`scaleX`,fe=`scaleY`,pe=`skewX`,me=`skewY`,j=`fill`,he=`stroke`,ge=`modified`,_e=`normal`,ve=`json`,M=new class{constructor(){this[ve]=new Map,this.svg=new Map}has(e){return this[ve].has(e)}getClass(e){let t=this[ve].get(e);if(!t)throw new l(`No class registered for ${e}`);return t}setClass(e,t){t?this[ve].set(t,e):(this[ve].set(e.type,e),this[ve].set(e.type.toLowerCase(),e))}getSVGClass(e){return this.svg.get(e)}setSVGClass(e,t){this.svg.set(t==null?e.type.toLowerCase():t,e)}},ye=new class extends Array{remove(e){let t=this.indexOf(e);t>-1&&this.splice(t,1)}cancelAll(){let e=this.splice(0);return e.forEach(e=>e.abort()),e}cancelByCanvas(e){if(!e)return[];let t=this.filter(t=>{var n;return t.target===e||typeof t.target==`object`&&((n=t.target)==null?void 0:n.canvas)===e});return t.forEach(e=>e.abort()),t}cancelByTarget(e){if(!e)return[];let t=this.filter(t=>t.target===e);return t.forEach(e=>e.abort()),t}};var be=class{constructor(){a(this,`__eventListeners`,{})}on(e,t){if(this.__eventListeners||(this.__eventListeners={}),typeof e==`object`)return Object.entries(e).forEach(([e,t])=>{this.on(e,t)}),()=>this.off(e);if(t){let n=e;return this.__eventListeners[n]||(this.__eventListeners[n]=[]),this.__eventListeners[n].push(t),()=>this.off(n,t)}return()=>!1}once(e,t){if(typeof e==`object`){let t=[];return Object.entries(e).forEach(([e,n])=>{t.push(this.once(e,n))}),()=>t.forEach(e=>e())}if(t){let n=this.on(e,function(...e){t.call(this,...e),n()});return n}return()=>!1}_removeEventListener(e,t){if(this.__eventListeners[e])if(t){let n=this.__eventListeners[e],r=n.indexOf(t);r>-1&&n.splice(r,1)}else this.__eventListeners[e]=[]}off(e,t){if(this.__eventListeners)if(e===void 0)for(let e in this.__eventListeners)this._removeEventListener(e);else typeof e==`object`?Object.entries(e).forEach(([e,t])=>{this._removeEventListener(e,t)}):this._removeEventListener(e,t)}fire(e,t){var n;if(!this.__eventListeners)return;let r=(n=this.__eventListeners[e])==null?void 0:n.concat();if(r)for(let e=0;e<r.length;e++)r[e].call(this,t||{})}};let xe=(e,t)=>{let n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},Se=e=>{if(e===0)return 1;switch(Math.abs(e)/S){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},Ce=e=>{if(e===0)return 0;let t=e/S,n=Math.sign(e);switch(t){case 1:return n;case 2:return 0;case 3:return-n}return Math.sin(e)};var N=class e{constructor(e=0,t=0){typeof e==`object`?(this.x=e.x,this.y=e.y):(this.x=e,this.y=t)}add(t){return new e(this.x+t.x,this.y+t.y)}addEquals(e){return this.x+=e.x,this.y+=e.y,this}scalarAdd(t){return new e(this.x+t,this.y+t)}scalarAddEquals(e){return this.x+=e,this.y+=e,this}subtract(t){return new e(this.x-t.x,this.y-t.y)}subtractEquals(e){return this.x-=e.x,this.y-=e.y,this}scalarSubtract(t){return new e(this.x-t,this.y-t)}scalarSubtractEquals(e){return this.x-=e,this.y-=e,this}multiply(t){return new e(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new e(this.x*t,this.y*t)}scalarMultiplyEquals(e){return this.x*=e,this.y*=e,this}divide(t){return new e(this.x/t.x,this.y/t.y)}scalarDivide(t){return new e(this.x/t,this.y/t)}scalarDivideEquals(e){return this.x/=e,this.y/=e,this}eq(e){return this.x===e.x&&this.y===e.y}lt(e){return this.x<e.x&&this.y<e.y}lte(e){return this.x<=e.x&&this.y<=e.y}gt(e){return this.x>e.x&&this.y>e.y}gte(e){return this.x>=e.x&&this.y>=e.y}lerp(t,n=.5){return n=Math.max(Math.min(1,n),0),new e(this.x+(t.x-this.x)*n,this.y+(t.y-this.y)*n)}distanceFrom(e){let t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}midPointFrom(e){return this.lerp(e)}min(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(e,t){return this.x=e,this.y=t,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setFromPoint(e){return this.x=e.x,this.y=e.y,this}swap(e){let t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}clone(){return new e(this.x,this.y)}rotate(t,n=we){let r=Ce(t),i=Se(t),a=this.subtract(n);return new e(a.x*i-a.y*r,a.x*r+a.y*i).add(n)}transform(t,n=!1){return new e(t[0]*this.x+t[2]*this.y+(n?0:t[4]),t[1]*this.x+t[3]*this.y+(n?0:t[5]))}};let we=new N(0,0),Te=e=>!!e&&Array.isArray(e._objects);function Ee(e){class t extends e{constructor(...e){super(...e),a(this,`_objects`,[])}_onObjectAdded(e){}_onObjectRemoved(e){}_onStackOrderChanged(e){}add(...e){let t=this._objects.push(...e);return e.forEach(e=>this._onObjectAdded(e)),t}insertAt(e,...t){return this._objects.splice(e,0,...t),t.forEach(e=>this._onObjectAdded(e)),this._objects.length}remove(...e){let t=this._objects,n=[];return e.forEach(e=>{let r=t.indexOf(e);r!==-1&&(t.splice(r,1),n.push(e),this._onObjectRemoved(e))}),n}forEachObject(e){this.getObjects().forEach((t,n,r)=>e(t,n,r))}getObjects(...e){return e.length===0?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(e){return this._objects[e]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(e,n){return!!this._objects.includes(e)||!!n&&this._objects.some(n=>n instanceof t&&n.contains(e,!0))}complexity(){return this._objects.reduce((e,t)=>e+=t.complexity?t.complexity():0,0)}sendObjectToBack(e){return!(!e||e===this._objects[0])&&(xe(this._objects,e),this._objects.unshift(e),this._onStackOrderChanged(e),!0)}bringObjectToFront(e){return!(!e||e===this._objects[this._objects.length-1])&&(xe(this._objects,e),this._objects.push(e),this._onStackOrderChanged(e),!0)}sendObjectBackwards(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==0){let r=this.findNewLowerIndex(e,n,t);return xe(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}bringObjectForward(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==this._objects.length-1){let r=this.findNewUpperIndex(e,n,t);return xe(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}moveObjectTo(e,t){return e!==this._objects[t]&&(xe(this._objects,e),this._objects.splice(t,0,e),this._onStackOrderChanged(e),!0)}findNewLowerIndex(e,t,n){let r;if(n){r=t;for(let n=t-1;n>=0;--n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t-1;return r}findNewUpperIndex(e,t,n){let r;if(n){r=t;for(let n=t+1;n<this._objects.length;++n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t+1;return r}collectObjects({left:e,top:t,width:n,height:r},{includeIntersecting:i=!0}={}){let a=[],o=new N(e,t),s=o.add(new N(n,r));for(let e=this._objects.length-1;e>=0;e--){let t=this._objects[e];t.selectable&&t.visible&&(i&&t.intersectsWithRect(o,s)||t.isContainedWithinRect(o,s)||i&&t.containsPoint(o)||i&&t.containsPoint(s))&&a.push(t)}return a}}return t}var De=class extends be{_setOptions(e={}){for(let t in e)this.set(t,e[t])}_setObject(e){for(let t in e)this._set(t,e[t])}set(e,t){return typeof e==`object`?this._setObject(e):this._set(e,t),this}_set(e,t){this[e]=t}toggle(e){let t=this.get(e);return typeof t==`boolean`&&this.set(e,!t),this}get(e){return this[e]}};function Oe(e){return _().requestAnimationFrame(e)}function ke(e){return _().cancelAnimationFrame(e)}let Ae=0,je=()=>Ae++,P=()=>{let e=g().createElement(`canvas`);if(!e||e.getContext===void 0)throw new l("Failed to create `canvas` element");return e},Me=()=>g().createElement(`img`),Ne=e=>{var t;let n=F(e);return(t=n.getContext(`2d`))==null||t.drawImage(e,0,0),n},F=e=>{let t=P();return t.width=e.width,t.height=e.height,t},Pe=(e,t,n)=>e.toDataURL(`image/${t}`,n),Fe=(e,t,n)=>new Promise((r,i)=>{e.toBlob(r,`image/${t}`,n)}),I=e=>e*ee,Ie=e=>e/ee,Le=e=>e.every((e,t)=>e===T[t]),L=(e,t,n)=>new N(e).transform(t,n),R=e=>{let t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0],0,0],{x:r,y:i}=new N(e[4],e[5]).transform(n,!0);return n[4]=-r,n[5]=-i,n},z=(e,t,n)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]],Re=(e,t)=>e.reduceRight((e,n)=>n&&e?z(n,e,t):n||e,void 0)||T.concat(),ze=([e,t])=>Math.atan2(t,e),Be=([e,t])=>Math.sqrt(e*e+t*t),Ve=([,,e,t])=>Math.sqrt(e*e+t*t),He=e=>{let t=ze(e),n=e[0]**2+e[1]**2,r=Math.sqrt(n),i=(e[0]*e[3]-e[2]*e[1])/r,a=Math.atan2(e[0]*e[2]+e[1]*e[3],n);return{angle:Ie(t),scaleX:r,scaleY:i,skewX:Ie(a),skewY:0,translateX:e[4]||0,translateY:e[5]||0}},Ue=(e,t=0)=>[1,0,0,1,e,t];function We({angle:e=0}={},{x:t=0,y:n=0}={}){let r=I(e),i=Se(r),a=Ce(r);return[i,a,-a,i,t?t-(i*t-a*n):0,n?n-(a*t+i*n):0]}let Ge=(e,t=e)=>[e,0,0,t,0,0],Ke=e=>Math.tan(I(e)),qe=e=>[1,0,Ke(e),1,0,0],Je=e=>[1,Ke(e),0,1,0,0],Ye=({scaleX:e=1,scaleY:t=1,flipX:n=!1,flipY:r=!1,skewX:i=0,skewY:a=0})=>{let o=Ge(n?-e:e,r?-t:t);return i&&(o=z(o,qe(i),!0)),a&&(o=z(o,Je(a),!0)),o},Xe=e=>{let{translateX:t=0,translateY:n=0,angle:r=0}=e,i=Ue(t,n);r&&(i=z(i,We({angle:r})));let a=Ye(e);return Le(a)||(i=z(i,a)),i},Ze=(e,{signal:t,crossOrigin:n=null}={})=>new Promise(function(r,i){if(t&&t.aborted)return i(new u(`loadImage`));let a=Me(),o;t&&(o=function(e){a.src=``,i(e)},t.addEventListener(`abort`,o,{once:!0}));let s=function(){a.onload=a.onerror=null,o&&(t==null||t.removeEventListener(`abort`,o)),r(a)};e?(a.onload=s,a.onerror=function(){o&&(t==null||t.removeEventListener(`abort`,o)),i(new l(`Error loading ${a.src}`))},n&&(a.crossOrigin=n),a.src=e):s()}),Qe=(e,{signal:t,reviver:n=x}={})=>new Promise((r,i)=>{let a=[];t&&t.addEventListener(`abort`,i,{once:!0}),Promise.allSettled(e.map(e=>M.getClass(e.type).fromObject(e,{signal:t}))).then(async t=>{for(let[r,i]of t.entries())if(i.status===`fulfilled`&&(await n(e[r],i.value),a.push(i.value)),i.status===`rejected`){let t=await n(e[r],void 0,i.reason);t&&a.push(t)}r(a)}).catch(e=>{a.forEach(e=>{e.dispose&&e.dispose()}),i(e)}).finally(()=>{t&&t.removeEventListener(`abort`,i)})}),$e=(e,{signal:t}={})=>new Promise((n,r)=>{let i=[];t&&t.addEventListener(`abort`,r,{once:!0});let a=Object.values(e).map(e=>e&&e.type&&M.has(e.type)?Qe([e],{signal:t}).then(([e])=>(i.push(e),e)):e),o=Object.keys(e);Promise.all(a).then(e=>e.reduce((e,t,n)=>(e[o[n]]=t,e),{})).then(n).catch(e=>{i.forEach(e=>{e.dispose&&e.dispose()}),r(e)}).finally(()=>{t&&t.removeEventListener(`abort`,r)})}),et=(e,t=[])=>t.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{}),tt=(e,t)=>Object.keys(e).reduce((n,r)=>(t(e[r],r,e)&&(n[r]=e[r]),n),{}),B=(e,t)=>parseFloat(Number(e).toFixed(t)),nt=e=>`matrix(`+e.map(e=>B(e,s.NUM_FRACTION_DIGITS)).join(` `)+`)`,V=e=>!!e&&e.toLive!==void 0,rt=e=>!!e&&typeof e.toObject==`function`,it=e=>!!e&&e.offsetX!==void 0&&`source`in e,at=e=>!!e&&`multiSelectionStacking`in e;function ot(e){let t=e&&H(e),n=0,r=0;if(!e||!t)return{left:n,top:r};let i=e,a=t.documentElement,o=t.body||{scrollLeft:0,scrollTop:0};for(;i&&(i.parentNode||i.host)&&(i=i.parentNode||i.host,i===t?(n=o.scrollLeft||a.scrollLeft||0,r=o.scrollTop||a.scrollTop||0):(n+=i.scrollLeft||0,r+=i.scrollTop||0),i.nodeType!==1||i.style.position!==`fixed`););return{left:n,top:r}}let H=e=>e.ownerDocument||null,st=e=>{var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||null},ct=(e,t,{width:n,height:r},i=1)=>{e.width=n,e.height=r,i>1&&(e.setAttribute(`width`,(n*i).toString()),e.setAttribute(`height`,(r*i).toString()),t.scale(i,i))},lt=(e,{width:t,height:n})=>{t&&(e.style.width=typeof t==`number`?`${t}px`:t),n&&(e.style.height=typeof n==`number`?`${n}px`:n)};function ut(e){return e.onselectstart!==void 0&&(e.onselectstart=()=>!1),e.style.userSelect=te,e}var dt=class{constructor(e){a(this,`_originalCanvasStyle`,void 0),a(this,`lower`,void 0);let t=this.createLowerCanvas(e);this.lower={el:t,ctx:t.getContext(`2d`)}}createLowerCanvas(e){let t=(n=e)&&n.getContext!==void 0?e:e&&g().getElementById(e)||P();var n;if(t.hasAttribute(`data-fabric`))throw new l(`Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?`);return this._originalCanvasStyle=t.style.cssText,t.setAttribute(`data-fabric`,`main`),t.classList.add(`lower-canvas`),t}cleanupDOM({width:e,height:t}){let{el:n}=this.lower;n.classList.remove(`lower-canvas`),n.removeAttribute(`data-fabric`),n.setAttribute(`width`,`${e}`),n.setAttribute(`height`,`${t}`),n.style.cssText=this._originalCanvasStyle||``,this._originalCanvasStyle=void 0}setDimensions(e,t){let{el:n,ctx:r}=this.lower;ct(n,r,e,t)}setCSSDimensions(e){lt(this.lower.el,e)}calcOffset(){return function(e){var t;let n=e&&H(e),r={left:0,top:0};if(!n)return r;let i=((t=st(e))==null?void 0:t.getComputedStyle(e,null))||{};r.left+=parseInt(i.borderLeftWidth,10)||0,r.top+=parseInt(i.borderTopWidth,10)||0,r.left+=parseInt(i.paddingLeft,10)||0,r.top+=parseInt(i.paddingTop,10)||0;let a={left:0,top:0},o=n.documentElement;e.getBoundingClientRect!==void 0&&(a=e.getBoundingClientRect());let s=ot(e);return{left:a.left+s.left-(o.clientLeft||0)+r.left,top:a.top+s.top-(o.clientTop||0)+r.top}}(this.lower.el)}dispose(){h().dispose(this.lower.el),delete this.lower}};let ft={backgroundVpt:!0,backgroundColor:``,overlayVpt:!0,overlayColor:``,includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...T],patternQuality:`best`};var pt=n({capitalize:()=>mt,escapeXml:()=>U,graphemeSplit:()=>gt});let mt=(e,t=!1)=>`${e.charAt(0).toUpperCase()}${t?e.slice(1):e.slice(1).toLowerCase()}`,U=e=>e.toString().replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`),ht,gt=e=>{if(ht||ht||(ht=`Intl`in _()&&`Segmenter`in Intl&&new Intl.Segmenter(void 0,{granularity:`grapheme`})),ht){let t=ht.segment(e);return Array.from(t).map(({segment:e})=>e)}return _t(e)},_t=e=>{let t=[];for(let n,r=0;r<e.length;r++)!1!==(n=vt(e,r))&&t.push(n);return t},vt=(e,t)=>{let n=e.charCodeAt(t);if(isNaN(n))return``;if(n<55296||n>57343)return e.charAt(t);if(55296<=n&&n<=56319){if(e.length<=t+1)throw`High surrogate without following low surrogate`;let n=e.charCodeAt(t+1);if(56320>n||n>57343)throw`High surrogate without following low surrogate`;return e.charAt(t)+e.charAt(t+1)}if(t===0)throw`Low surrogate without preceding high surrogate`;let r=e.charCodeAt(t-1);if(55296>r||r>56319)throw`Low surrogate without preceding high surrogate`;return!1};var yt=class e extends Ee(De){get lowerCanvasEl(){var e;return(e=this.elements.lower)==null?void 0:e.el}get contextContainer(){var e;return(e=this.elements.lower)==null?void 0:e.ctx}static getDefaults(){return e.ownDefaults}constructor(e,t={}){super(),Object.assign(this,this.constructor.getDefaults()),this.set(t),this.initElements(e),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(e){this.elements=new dt(e)}add(...e){let t=super.add(...e);return e.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(e,...t){let n=super.insertAt(e,...t);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),n}remove(...e){let t=super.remove(...e);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(e){e.canvas&&e.canvas!==this&&(c(`warn`,`Canvas is trying to add an object that belongs to a different canvas.
|
|
2
|
-
Resulting to default behavior: removing object from previous canvas and adding to new canvas`),e.canvas.remove(e)),e._set(`canvas`,this),e.setCoords(),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e){e._set(`canvas`,void 0),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.fabric={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r};function r(e){"@babel/helpers - typeof";return r=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},r(e)}function i(e,t){if(r(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var i=n.call(e,t||`default`);if(r(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function a(e){var t=i(e,`string`);return r(t)==`symbol`?t:t+``}function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=class{constructor(){o(this,`browserShadowBlurConstant`,1),o(this,`DPI`,96),o(this,`devicePixelRatio`,void 0),o(this,`perfLimitSizeTotal`,2097152),o(this,`maxCacheSideLimit`,4096),o(this,`minCacheSideLimit`,256),o(this,`disableStyleCopyPaste`,!1),o(this,`enableGLFiltering`,!0),o(this,`textureSize`,4096),o(this,`forceGLPutImageData`,!1),o(this,`cachesBoundsOfCurve`,!1),o(this,`fontPaths`,{}),o(this,`NUM_FRACTION_DIGITS`,4)}};let c=new class extends s{constructor(e){super(),this.configure(e)}configure(e={}){Object.assign(this,e)}addFonts(e={}){this.fontPaths={...this.fontPaths,...e}}removeFonts(e=[]){e.forEach(e=>{delete this.fontPaths[e]})}clearFonts(){this.fontPaths={}}restoreDefaults(e){let t=new s,n=(e==null?void 0:e.reduce((e,n)=>(e[n]=t[n],e),{}))||t;this.configure(n)}},l=(e,...t)=>console[e](`fabric`,...t);var u=class extends Error{constructor(e,t){super(`fabric: ${e}`,t)}},d=class extends u{constructor(e){super(`${e} 'options.signal' is in 'aborted' state`)}};let f,p,m=e=>{f=e},h=e=>{p=e},g=()=>{if(f)return f;if(p)return f=p();throw new u(`Fabric env was not initialized. Import fabric, fabric/node, @fabricjs/browser, or @fabricjs/node before using environment-dependent APIs, or call setEnv/setEnvFactory.`)},_=()=>g().document,v=()=>g().window,y=()=>{var e,t;return Math.max((e=(t=c.devicePixelRatio)==null?v().devicePixelRatio:t)==null?1:e,1)},b=new class{constructor(){o(this,`boundsOfCurveCache`,{}),this.charWidthsCache=/* @__PURE__ */ new Map}getFontCache({fontFamily:e,fontStyle:t,fontWeight:n}){e=e.toLowerCase();let r=this.charWidthsCache;r.has(e)||r.set(e,/* @__PURE__ */ new Map);let i=r.get(e),a=`${t.toLowerCase()}_${(n+``).toLowerCase()}`;return i.has(a)||i.set(a,/* @__PURE__ */ new Map),i.get(a)}clearFontCache(e){e?this.charWidthsCache.delete((e||``).toLowerCase()):this.charWidthsCache=/* @__PURE__ */ new Map}limitDimsByArea(e){let{perfLimitSizeTotal:t}=c,n=Math.sqrt(t*e);return[Math.floor(n),Math.floor(t/n)]}},x=`7.5.0-beta.1`;function S(){}let C=Math.PI/2,w=Math.PI/4,T=Math.PI*2,ee=Math.PI/180,E=Object.freeze([1,0,0,1,0,0]),D=`center`,O=`left`,te=`bottom`,k=`right`,ne=`none`,re=/\r?\n/,ie=`moving`,ae=`scaling`,oe=`rotating`,A=`rotate`,se=`skewing`,ce=`resizing`,le=`modifyPoly`,ue=`changed`,de=`scale`,fe=`scaleX`,pe=`scaleY`,me=`skewX`,he=`skewY`,j=`fill`,ge=`stroke`,_e=`modified`,ve=`normal`,ye=`json`,M=new class{constructor(){this[ye]=/* @__PURE__ */ new Map,this.svg=/* @__PURE__ */ new Map}has(e){return this[ye].has(e)}getClass(e){let t=this[ye].get(e);if(!t)throw new u(`No class registered for ${e}`);return t}setClass(e,t){t?this[ye].set(t,e):(this[ye].set(e.type,e),this[ye].set(e.type.toLowerCase(),e))}getSVGClass(e){return this.svg.get(e)}setSVGClass(e,t){this.svg.set(t==null?e.type.toLowerCase():t,e)}},be=new class extends Array{remove(e){let t=this.indexOf(e);t>-1&&this.splice(t,1)}cancelAll(){let e=this.splice(0);return e.forEach(e=>e.abort()),e}cancelByCanvas(e){if(!e)return[];let t=this.filter(t=>{var n;return t.target===e||typeof t.target==`object`&&((n=t.target)==null?void 0:n.canvas)===e});return t.forEach(e=>e.abort()),t}cancelByTarget(e){if(!e)return[];let t=this.filter(t=>t.target===e);return t.forEach(e=>e.abort()),t}};var xe=class{constructor(){o(this,`__eventListeners`,{})}on(e,t){if(this.__eventListeners||(this.__eventListeners={}),typeof e==`object`)return Object.entries(e).forEach(([e,t])=>{this.on(e,t)}),()=>this.off(e);if(t){let n=e;return this.__eventListeners[n]||(this.__eventListeners[n]=[]),this.__eventListeners[n].push(t),()=>this.off(n,t)}return()=>!1}once(e,t){if(typeof e==`object`){let t=[];return Object.entries(e).forEach(([e,n])=>{t.push(this.once(e,n))}),()=>t.forEach(e=>e())}if(t){let n=this.on(e,function(...e){t.call(this,...e),n()});return n}return()=>!1}_removeEventListener(e,t){if(this.__eventListeners[e]){if(t){let n=this.__eventListeners[e],r=n.indexOf(t);r>-1&&n.splice(r,1)}else this.__eventListeners[e]=[]}}off(e,t){if(this.__eventListeners){if(e===void 0)for(let e in this.__eventListeners)this._removeEventListener(e);else typeof e==`object`?Object.entries(e).forEach(([e,t])=>{this._removeEventListener(e,t)}):this._removeEventListener(e,t)}}fire(e,t){var n;if(!this.__eventListeners)return;let r=(n=this.__eventListeners[e])==null?void 0:n.concat();if(r)for(let e=0;e<r.length;e++)r[e].call(this,t||{})}};let Se=(e,t)=>{let n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},Ce=e=>{if(e===0)return 1;switch(Math.abs(e)/C){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},we=e=>{if(e===0)return 0;let t=e/C,n=Math.sign(e);switch(t){case 1:return n;case 2:return 0;case 3:return-n}return Math.sin(e)};var N=class e{constructor(e=0,t=0){typeof e==`object`?(this.x=e.x,this.y=e.y):(this.x=e,this.y=t)}add(t){return new e(this.x+t.x,this.y+t.y)}addEquals(e){return this.x+=e.x,this.y+=e.y,this}scalarAdd(t){return new e(this.x+t,this.y+t)}scalarAddEquals(e){return this.x+=e,this.y+=e,this}subtract(t){return new e(this.x-t.x,this.y-t.y)}subtractEquals(e){return this.x-=e.x,this.y-=e.y,this}scalarSubtract(t){return new e(this.x-t,this.y-t)}scalarSubtractEquals(e){return this.x-=e,this.y-=e,this}multiply(t){return new e(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new e(this.x*t,this.y*t)}scalarMultiplyEquals(e){return this.x*=e,this.y*=e,this}divide(t){return new e(this.x/t.x,this.y/t.y)}scalarDivide(t){return new e(this.x/t,this.y/t)}scalarDivideEquals(e){return this.x/=e,this.y/=e,this}eq(e){return this.x===e.x&&this.y===e.y}lt(e){return this.x<e.x&&this.y<e.y}lte(e){return this.x<=e.x&&this.y<=e.y}gt(e){return this.x>e.x&&this.y>e.y}gte(e){return this.x>=e.x&&this.y>=e.y}lerp(t,n=.5){return n=Math.max(Math.min(1,n),0),new e(this.x+(t.x-this.x)*n,this.y+(t.y-this.y)*n)}distanceFrom(e){let t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}midPointFrom(e){return this.lerp(e)}min(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(e,t){return this.x=e,this.y=t,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setFromPoint(e){return this.x=e.x,this.y=e.y,this}swap(e){let t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}clone(){return new e(this.x,this.y)}rotate(t,n=Te){let r=we(t),i=Ce(t),a=this.subtract(n);return new e(a.x*i-a.y*r,a.x*r+a.y*i).add(n)}transform(t,n=!1){return new e(t[0]*this.x+t[2]*this.y+(n?0:t[4]),t[1]*this.x+t[3]*this.y+(n?0:t[5]))}};let Te=new N(0,0),Ee=e=>!!e&&Array.isArray(e._objects);function De(e){class t extends e{constructor(...e){super(...e),o(this,`_objects`,[])}_onObjectAdded(e){}_onObjectRemoved(e){}_onStackOrderChanged(e){}add(...e){let t=this._objects.push(...e);return e.forEach(e=>this._onObjectAdded(e)),t}insertAt(e,...t){return this._objects.splice(e,0,...t),t.forEach(e=>this._onObjectAdded(e)),this._objects.length}remove(...e){let t=this._objects,n=[];return e.forEach(e=>{let r=t.indexOf(e);r!==-1&&(t.splice(r,1),n.push(e),this._onObjectRemoved(e))}),n}forEachObject(e){this.getObjects().forEach((t,n,r)=>e(t,n,r))}getObjects(...e){return e.length===0?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(e){return this._objects[e]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(e,n){return this._objects.includes(e)?!0:n?this._objects.some(n=>n instanceof t&&n.contains(e,!0)):!1}complexity(){return this._objects.reduce((e,t)=>(e+=t.complexity?t.complexity():0,e),0)}sendObjectToBack(e){return!e||e===this._objects[0]?!1:(Se(this._objects,e),this._objects.unshift(e),this._onStackOrderChanged(e),!0)}bringObjectToFront(e){return!e||e===this._objects[this._objects.length-1]?!1:(Se(this._objects,e),this._objects.push(e),this._onStackOrderChanged(e),!0)}sendObjectBackwards(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==0){let r=this.findNewLowerIndex(e,n,t);return Se(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}bringObjectForward(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==this._objects.length-1){let r=this.findNewUpperIndex(e,n,t);return Se(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}moveObjectTo(e,t){return e!==this._objects[t]&&(Se(this._objects,e),this._objects.splice(t,0,e),this._onStackOrderChanged(e),!0)}findNewLowerIndex(e,t,n){let r;if(n){r=t;for(let n=t-1;n>=0;--n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t-1;return r}findNewUpperIndex(e,t,n){let r;if(n){r=t;for(let n=t+1;n<this._objects.length;++n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t+1;return r}collectObjects({left:e,top:t,width:n,height:r},{includeIntersecting:i=!0}={}){let a=[],o=new N(e,t),s=o.add(new N(n,r));for(let e=this._objects.length-1;e>=0;e--){let t=this._objects[e];t.selectable&&t.visible&&(i&&t.intersectsWithRect(o,s)||t.isContainedWithinRect(o,s)||i&&t.containsPoint(o)||i&&t.containsPoint(s))&&a.push(t)}return a}}return t}var Oe=class extends xe{_setOptions(e={}){for(let t in e)this.set(t,e[t])}_setObject(e){for(let t in e)this._set(t,e[t])}set(e,t){return typeof e==`object`?this._setObject(e):this._set(e,t),this}_set(e,t){this[e]=t}toggle(e){let t=this.get(e);return typeof t==`boolean`&&this.set(e,!t),this}get(e){return this[e]}};function ke(e){return v().requestAnimationFrame(e)}function Ae(e){return v().cancelAnimationFrame(e)}let je=0,Me=()=>je++,P=()=>{let e=_().createElement(`canvas`);if(!e||e.getContext===void 0)throw new u("Failed to create `canvas` element");return e},Ne=()=>_().createElement(`img`),Pe=e=>{var t;let n=F(e);return(t=n.getContext(`2d`))==null||t.drawImage(e,0,0),n},F=e=>{let t=P();return t.width=e.width,t.height=e.height,t},Fe=(e,t,n)=>e.toDataURL(`image/${t}`,n),Ie=e=>!!e&&e.getContext!==void 0,Le=(e,t,n)=>new Promise((r,i)=>{e.toBlob(r,`image/${t}`,n)}),I=e=>e*ee,Re=e=>e/ee,ze=e=>e.every((e,t)=>e===E[t]),L=(e,t,n)=>new N(e).transform(t,n),R=e=>{let t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0],0,0],{x:r,y:i}=new N(e[4],e[5]).transform(n,!0);return n[4]=-r,n[5]=-i,n},z=(e,t,n)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]],Be=(e,t)=>e.reduceRight((e,n)=>n&&e?z(n,e,t):n||e,void 0)||E.concat(),Ve=([e,t])=>Math.atan2(t,e),He=([e,t])=>Math.sqrt(e*e+t*t),Ue=([,,e,t])=>Math.sqrt(e*e+t*t),We=e=>{let t=Ve(e),n=e[0]**2+e[1]**2,r=Math.sqrt(n),i=(e[0]*e[3]-e[2]*e[1])/r,a=Math.atan2(e[0]*e[2]+e[1]*e[3],n);return{angle:Re(t),scaleX:r,scaleY:i,skewX:Re(a),skewY:0,translateX:e[4]||0,translateY:e[5]||0}},Ge=(e,t=0)=>[1,0,0,1,e,t];function Ke({angle:e=0}={},{x:t=0,y:n=0}={}){let r=I(e),i=Ce(r),a=we(r);return[i,a,-a,i,t-(i*t-a*n),n-(a*t+i*n)]}let qe=(e,t=e)=>[e,0,0,t,0,0],Je=e=>Math.tan(I(e)),Ye=e=>[1,0,Je(e),1,0,0],Xe=e=>[1,Je(e),0,1,0,0],Ze=({scaleX:e=1,scaleY:t=1,flipX:n=!1,flipY:r=!1,skewX:i=0,skewY:a=0})=>{let o=qe(n?-e:e,r?-t:t);return i&&(o=z(o,Ye(i),!0)),a&&(o=z(o,Xe(a),!0)),o},Qe=e=>{let{translateX:t=0,translateY:n=0,angle:r=0}=e,i=Ge(t,n);r&&(i=z(i,Ke({angle:r})));let a=Ze(e);return ze(a)||(i=z(i,a)),i},$e=(e,{signal:t,crossOrigin:n=null,resourceValidator:r}={})=>t&&t.aborted?Promise.reject(new d(`loadImage`)):e&&r?Promise.resolve().then(()=>r(e)).then(r=>{if(!r)throw new u(`Resource '${e}' is not allowed`);if(t&&t.aborted)throw new d(`loadImage`);return $e(e,{signal:t,crossOrigin:n})}):new Promise(function(r,i){if(t&&t.aborted)return i(new d(`loadImage`));let a=Ne(),o;t&&(o=function(e){a.src=``,i(e)},t.addEventListener(`abort`,o,{once:!0}));let s=function(){a.onload=a.onerror=null,o&&(t==null||t.removeEventListener(`abort`,o)),r(a)};if(!e){s();return}a.onload=s,a.onerror=function(){o&&(t==null||t.removeEventListener(`abort`,o)),i(new u(`Error loading ${a.src}`))},n&&(a.crossOrigin=n),a.src=e}),et=(e,{signal:t,reviver:n=S,...r}={})=>new Promise((i,a)=>{let o=[];t&&t.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e.map(e=>M.getClass(e.type).fromObject(e,{signal:t,...r}))).then(async t=>{for(let[r,i]of t.entries())if(i.status===`fulfilled`&&(await n(e[r],i.value),o.push(i.value)),i.status===`rejected`){let t=await n(e[r],void 0,i.reason);t&&o.push(t)}i(o)}).catch(e=>{o.forEach(e=>{e.dispose&&e.dispose()}),a(e)}).finally(()=>{t&&t.removeEventListener(`abort`,a)})}),tt=(e,{signal:t,...n}={})=>new Promise((r,i)=>{let a=[];t&&t.addEventListener(`abort`,i,{once:!0});let o=Object.values(e).map(e=>e&&(e.type&&M.has(e.type)?et([e],{signal:t,...n}).then(([e])=>(e&&a.push(e),e)):e)),s=Object.keys(e);Promise.all(o).then(e=>e.reduce((e,t,n)=>(e[s[n]]=t,e),{})).then(r).catch(e=>{a.forEach(e=>{e.dispose&&e.dispose()}),i(e)}).finally(()=>{t&&t.removeEventListener(`abort`,i)})}),nt=(e,t=[])=>t.reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{}),rt=(e,t)=>Object.keys(e).reduce((n,r)=>(t(e[r],r,e)&&(n[r]=e[r]),n),{}),B=(e,t)=>parseFloat(Number(e).toFixed(t)),it=e=>`matrix(`+e.map(e=>B(e,c.NUM_FRACTION_DIGITS)).join(` `)+`)`,V=e=>!!e&&e.toLive!==void 0,at=e=>!!e&&typeof e.toObject==`function`,ot=e=>!!e&&e.offsetX!==void 0&&`source`in e,st=e=>!!e&&typeof e._renderText==`function`,ct=e=>!!e&&typeof e._renderPathCommands==`function`,lt=e=>!!e&&`multiSelectionStacking`in e;function ut(e){let t=e&&dt(e),n=0,r=0;if(!e||!t)return{left:n,top:r};let i=e,a=t.documentElement,o=t.body||{scrollLeft:0,scrollTop:0};for(;i&&(i.parentNode||i.host)&&(i=i.parentNode||i.host,i===t?(n=o.scrollLeft||a.scrollLeft||0,r=o.scrollTop||a.scrollTop||0):(n+=i.scrollLeft||0,r+=i.scrollTop||0),i.nodeType!==1||i.style.position!==`fixed`););return{left:n,top:r}}let dt=e=>e.ownerDocument||null,ft=e=>{var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||null},pt=(e,t,{width:n,height:r},i=1)=>{e.width=n,e.height=r,i>1&&(e.setAttribute(`width`,(n*i).toString()),e.setAttribute(`height`,(r*i).toString()),t.scale(i,i))},mt=(e,{width:t,height:n})=>{t&&(e.style.width=typeof t==`number`?`${t}px`:t),n&&(e.style.height=typeof n==`number`?`${n}px`:n)};function ht(e){var t;let n=e&&dt(e),r={left:0,top:0};if(!n)return r;let i=((t=ft(e))==null?void 0:t.getComputedStyle(e,null))||{};r.left+=parseInt(i.borderLeftWidth,10)||0,r.top+=parseInt(i.borderTopWidth,10)||0,r.left+=parseInt(i.paddingLeft,10)||0,r.top+=parseInt(i.paddingTop,10)||0;let a={left:0,top:0},o=n.documentElement;e.getBoundingClientRect!==void 0&&(a=e.getBoundingClientRect());let s=ut(e);return{left:a.left+s.left-(o.clientLeft||0)+r.left,top:a.top+s.top-(o.clientTop||0)+r.top}}function gt(e){return e.onselectstart!==void 0&&(e.onselectstart=()=>!1),e.style.userSelect=ne,e}var _t=class{constructor(e){o(this,`_originalCanvasStyle`,void 0),o(this,`lower`,void 0);let t=this.createLowerCanvas(e);this.lower={el:t,ctx:t.getContext(`2d`)}}createLowerCanvas(e){let t=Ie(e)?e:e&&_().getElementById(e)||P();if(t.hasAttribute(`data-fabric`))throw new u(`Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?`);return this._originalCanvasStyle=t.style.cssText,t.setAttribute(`data-fabric`,`main`),t.classList.add(`lower-canvas`),t}cleanupDOM({width:e,height:t}){let{el:n}=this.lower;n.classList.remove(`lower-canvas`),n.removeAttribute(`data-fabric`),n.setAttribute(`width`,`${e}`),n.setAttribute(`height`,`${t}`),n.style.cssText=this._originalCanvasStyle||``,this._originalCanvasStyle=void 0}setDimensions(e,t){let{el:n,ctx:r}=this.lower;pt(n,r,e,t)}setCSSDimensions(e){mt(this.lower.el,e)}calcOffset(){return ht(this.lower.el)}dispose(){g().dispose(this.lower.el),delete this.lower}};let vt={backgroundVpt:!0,backgroundColor:``,overlayVpt:!0,overlayColor:``,includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...E],patternQuality:`best`};var yt=/* @__PURE__ */ n({capitalize:()=>bt,escapeXml:()=>H,graphemeSplit:()=>Ct});let bt=(e,t=!1)=>`${e.charAt(0).toUpperCase()}${t?e.slice(1):e.slice(1).toLowerCase()}`,H=e=>e.toString().replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`),xt,St=()=>(xt||(xt=`Intl`in v()&&`Segmenter`in Intl&&new Intl.Segmenter(void 0,{granularity:`grapheme`})),xt),Ct=e=>{if(xt||St(),xt){let t=xt.segment(e);return Array.from(t).map(({segment:e})=>e)}return wt(e)},wt=e=>{let t=[];for(let n=0,r;n<e.length;n++)(r=Tt(e,n))!==!1&&t.push(r);return t},Tt=(e,t)=>{let n=e.charCodeAt(t);if(isNaN(n))return``;if(n<55296||n>57343)return e.charAt(t);if(55296<=n&&n<=56319){if(e.length<=t+1)throw`High surrogate without following low surrogate`;let n=e.charCodeAt(t+1);if(56320>n||n>57343)throw`High surrogate without following low surrogate`;return e.charAt(t)+e.charAt(t+1)}if(t===0)throw`Low surrogate without preceding high surrogate`;let r=e.charCodeAt(t-1);if(55296>r||r>56319)throw`Low surrogate without preceding high surrogate`;return!1};var Et=class e extends De(Oe){get lowerCanvasEl(){var e;return(e=this.elements.lower)==null?void 0:e.el}get contextContainer(){var e;return(e=this.elements.lower)==null?void 0:e.ctx}static getDefaults(){return e.ownDefaults}constructor(e,t={}){super(),Object.assign(this,this.constructor.getDefaults()),this.set(t),this.initElements(e),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(e){this.elements=new _t(e)}add(...e){let t=super.add(...e);return e.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(e,...t){let n=super.insertAt(e,...t);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),n}remove(...e){let t=super.remove(...e);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(e){e.canvas&&e.canvas!==this&&(l(`warn`,`Canvas is trying to add an object that belongs to a different canvas.
|
|
2
|
+
Resulting to default behavior: removing object from previous canvas and adding to new canvas`),e.canvas.remove(e)),e._set(`canvas`,this),e.setCoords(),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e){e._set(`canvas`,void 0),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?y():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}_setDimensionsImpl(e,{cssOnly:t=!1,backstoreOnly:n=!1}={}){if(!t){let t={width:this.width,height:this.height,...e};this.elements.setDimensions(t,this.getRetinaScaling()),this.hasLostContext=!0,this.width=t.width,this.height=t.height}n||this.elements.setCSSDimensions(e),this.calcOffset()}setDimensions(e,t){this._setDimensionsImpl(e,t),(!t||!t.cssOnly)&&this.requestRenderAll()}getZoom(){return He(this.viewportTransform)}setViewportTransform(e){this.viewportTransform=e,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(e,t){let n=e,r=[...this.viewportTransform],i=L(e,R(r));r[0]=t,r[3]=t;let a=L(i,r);r[4]+=n.x-a.x,r[5]+=n.y-a.y,this.setViewportTransform(r)}setZoom(e){this.zoomToPoint(new N(0,0),e)}absolutePan(e){let t=[...this.viewportTransform];return t[4]=-e.x,t[5]=-e.y,this.setViewportTransform(t)}relativePan(e){return this.absolutePan(new N(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(e){e.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor=``,this.overlayColor=``,this.clearContext(this.getContext()),this.fire(`canvas:cleared`),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),!this.destroyed&&this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){!this.nextRenderHandle&&!this.disposed&&!this.destroyed&&(this.nextRenderHandle=ke(()=>this.renderAndReset()))}calcViewportBoundaries(){let e=this.width,t=this.height,n=R(this.viewportTransform),r=L({x:0,y:0},n),i=L({x:e,y:t},n),a=r.min(i),o=r.max(i);return this.vptCoords={tl:a,tr:new N(o.x,a.y),bl:new N(a.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(Ae(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(e){}renderCanvas(e,t){if(this.destroyed)return;let n=this.viewportTransform,r=this.clipPath;this.calcViewportBoundaries(),this.clearContext(e),e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.patternQuality=this.patternQuality,this.fire(`before:render`,{ctx:e}),this._renderBackground(e),e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._renderObjects(e,t),e.restore(),!this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(e),r&&(r._set(`canvas`,this),r.shouldCache(),r._transformDone=!0,r.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(e,r)),this._renderOverlay(e),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(e),this.fire(`after:render`,{ctx:e}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(e,t){let n=this.viewportTransform;e.save(),e.transform(...n),e.globalCompositeOperation=`destination-in`,t.transform(e),e.scale(1/t.zoomX,1/t.zoomY),e.drawImage(t._cacheCanvas,-t.cacheTranslationX,-t.cacheTranslationY),e.restore()}_renderObjects(e,t){for(let n=0,r=t.length;n<r;++n)t[n]&&t[n].render(e)}_renderBackgroundOrOverlay(e,t){let n=this[`${t}Color`],r=this[`${t}Image`],i=this.viewportTransform,a=this[`${t}Vpt`];if(!n&&!r)return;let o=V(n);if(n){if(e.save(),e.beginPath(),e.moveTo(0,0),e.lineTo(this.width,0),e.lineTo(this.width,this.height),e.lineTo(0,this.height),e.closePath(),e.fillStyle=o?n.toLive(e):n,a&&e.transform(...i),o){e.transform(1,0,0,1,n.offsetX||0,n.offsetY||0);let t=n.gradientTransform||n.patternTransform;t&&e.transform(...t)}e.fill(),e.restore()}if(r){e.save();let{skipOffscreen:t}=this;this.skipOffscreen=a,a&&e.transform(...i),r.render(e),this.skipOffscreen=t,e.restore()}}_renderBackground(e){this._renderBackgroundOrOverlay(e,`background`)}_renderOverlay(e){this._renderBackgroundOrOverlay(e,`overlay`)}getCenterPoint(){return new N(this.width/2,this.height/2)}centerObjectH(e){return this._centerObject(e,new N(this.getCenterPoint().x,e.getCenterPoint().y))}centerObjectV(e){return this._centerObject(e,new N(e.getCenterPoint().x,this.getCenterPoint().y))}centerObject(e){return this._centerObject(e,this.getCenterPoint())}viewportCenterObject(e){return this._centerObject(e,this.getVpCenter())}viewportCenterObjectH(e){return this._centerObject(e,new N(this.getVpCenter().x,e.getCenterPoint().y))}viewportCenterObjectV(e){return this._centerObject(e,new N(e.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return L(this.getCenterPoint(),R(this.viewportTransform))}_centerObject(e,t){e.setXY(t,D,D),e.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(e){return this.toDatalessObject(e)}toObject(e){return this._toObjectMethod(`toObject`,e)}toJSON(){return this.toObject()}toDatalessObject(e){return this._toObjectMethod(`toDatalessObject`,e)}_toObjectMethod(e,t){let n=this.clipPath,r=n&&!n.excludeFromExport?this._toObject(n,e,t):null;return{version:x,...nt(this,t),objects:this._objects.filter(e=>!e.excludeFromExport).map(n=>this._toObject(n,e,t)),...this.__serializeBgOverlay(e,t),...r?{clipPath:r}:null}}_toObject(e,t,n){let r;this.includeDefaultValues||(r=e.includeDefaultValues,e.includeDefaultValues=!1);let i=e[t](n);return this.includeDefaultValues||(e.includeDefaultValues=!!r),i}__serializeBgOverlay(e,t){let n={},r=this.backgroundImage,i=this.overlayImage,a=this.backgroundColor,o=this.overlayColor;return V(a)?a.excludeFromExport||(n.background=a.toObject(t)):a&&(n.background=a),V(o)?o.excludeFromExport||(n.overlay=o.toObject(t)):o&&(n.overlay=o),r&&!r.excludeFromExport&&(n.backgroundImage=this._toObject(r,e,t)),i&&!i.excludeFromExport&&(n.overlayImage=this._toObject(i,e,t)),n}toSVG(e={},t){e.reviver=t;let n=[];if(this._setSVGPreamble(n,e),this._setSVGHeader(n,e),this.clipPath){var r;n.push(`<g clip-path="url(#${H((r=this.clipPath.clipPathId)==null?``:r)})" >\n`)}return this._setSVGBgOverlayColor(n,`background`),this._setSVGBgOverlayImage(n,`backgroundImage`,t),this._setSVGObjects(n,t),this.clipPath&&n.push(`</g>
|
|
3
3
|
`),this._setSVGBgOverlayColor(n,`overlay`),this._setSVGBgOverlayImage(n,`overlayImage`,t),n.push(`</svg>`),n.join(``)}_setSVGPreamble(e,t){t.suppressPreamble||e.push(`<?xml version="1.0" encoding="`,t.encoding||`UTF-8`,`" standalone="no" ?>
|
|
4
4
|
`,`<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" `,`"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
5
|
-
`)}_setSVGHeader(e,t){let n=t.width||`${this.width}`,r=t.height||`${this.height}`,i=
|
|
6
|
-
`,`<desc>Created with Fabric.js `,
|
|
5
|
+
`)}_setSVGHeader(e,t){let n=t.width||`${this.width}`,r=t.height||`${this.height}`,i=c.NUM_FRACTION_DIGITS,a=t.viewBox,o;if(a)o=`viewBox="${a.x} ${a.y} ${a.width} ${a.height}" `;else if(this.svgViewportTransformation){let e=this.viewportTransform;o=`viewBox="${B(-e[4]/e[0],i)} ${B(-e[5]/e[3],i)} ${B(this.width/e[0],i)} ${B(this.height/e[3],i)}" `}else o=`viewBox="0 0 ${this.width} ${this.height}" `;e.push(`<svg `,`xmlns="http://www.w3.org/2000/svg" `,`xmlns:xlink="http://www.w3.org/1999/xlink" `,`version="1.1" `,`width="`,n,`" `,`height="`,r,`" `,o,`xml:space="preserve">
|
|
6
|
+
`,`<desc>Created with Fabric.js `,x,`</desc>
|
|
7
7
|
`,`<defs>
|
|
8
8
|
`,this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),`</defs>
|
|
9
|
-
`)}createSVGClipPathMarkup(e){let t=this.clipPath;return t?(t.clipPathId=`CLIPPATH_${
|
|
10
|
-
`)}loadFromJSON(e,t,{signal:n}={}){if(!e)return Promise.reject(new l("`json` is undefined"));let{objects:r=[],...i}=typeof e==`string`?JSON.parse(e):e,{backgroundImage:a,background:o,overlayImage:s,overlay:c,clipPath:u}=i,d=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([Qe(r,{reviver:t,signal:n}),$e({backgroundImage:a,backgroundColor:o,overlayImage:s,overlayColor:c,clipPath:u},{signal:n})]).then(([e,t])=>(this.clear(),this.add(...e),this.set(i),this.set(t),this.renderOnAddRemove=d,this))}clone(e){let t=this.toObject(e);return this.cloneWithoutData().loadFromJSON(t)}cloneWithoutData(){let e=F(this);return new this.constructor(e)}toDataURL(e={}){let{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Pe(this.toCanvasElement(a,e),t,n)}toBlob(e={}){let{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Fe(this.toCanvasElement(a,e),t,n)}toCanvasElement(e=1,{width:t,height:n,left:r,top:i,filter:a}={}){let o=(t||this.width)*e,s=(n||this.height)*e,c=this.getZoom(),l=this.width,u=this.height,d=this.skipControlsDrawing,f=c*e,p=this.viewportTransform,m=[f,0,0,f,(p[4]-(r||0))*e,(p[5]-(i||0))*e],h=this.enableRetinaScaling,g=F({width:o,height:s}),_=a?this._objects.filter(e=>a(e)):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=m,this.width=o,this.height=s,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(g.getContext(`2d`),_),this.viewportTransform=p,this.width=l,this.height=u,this.calcViewportBoundaries(),this.enableRetinaScaling=h,this.skipControlsDrawing=d,g}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),ye.cancelByCanvas(this),this.disposed=!0,new Promise((e,t)=>{let n=()=>{this.destroy(),e(!0)};n.kill=t,this.__cleanupTask&&this.__cleanupTask.kill(`aborted`),this.destroyed?e(!1):this.nextRenderHandle?this.__cleanupTask=n:n()})}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject(e=>e.dispose()),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}};a(yt,`ownDefaults`,ft);let bt=[`touchstart`,`touchmove`,`touchend`],xt=e=>{let t=ot(e.target),n=function(e){let t=e.changedTouches;return t&&t[0]?t[0]:e}(e);return new N(n.clientX+t.left,n.clientY+t.top)},St=e=>bt.includes(e.type)||e.pointerType===`touch`,Ct=e=>{e.preventDefault(),e.stopPropagation()},wt=e=>{let t=0,n=0,r=0,i=0;for(let a=0,o=e.length;a<o;a++){let{x:o,y:s}=e[a];(o>r||!a)&&(r=o),(o<t||!a)&&(t=o),(s>i||!a)&&(i=s),(s<n||!a)&&(n=s)}return{left:t,top:n,width:r-t,height:i-n}},Tt=(e,t)=>{Dt(e,z(R(t),e.calcOwnMatrix()))},Et=(e,t)=>Dt(e,z(t,e.calcOwnMatrix())),Dt=(e,t)=>{let{translateX:n,translateY:r,scaleX:i,scaleY:a,...o}=He(t),s=new N(n,r);e.flipX=!1,e.flipY=!1,Object.assign(e,o),e.set({scaleX:i,scaleY:a}),e.setPositionByOrigin(s,E,E)},Ot=e=>{e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},kt=e=>({scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}),At=(e,t,n)=>{let r=e/2,i=t/2,a=wt([new N(-r,-i),new N(r,-i),new N(-r,i),new N(r,i)].map(e=>e.transform(n)));return new N(a.width,a.height)},jt=(e=T,t=T)=>z(R(t),e),Mt=(e,t=T,n=T)=>e.transform(jt(t,n)),Nt=(e,t=T,n=T)=>e.transform(jt(t,n),!0),Pt=(e,t,n)=>{let r=jt(t,n);return Dt(e,z(r,e.calcOwnMatrix())),r},Ft={left:-.5,top:-.5,center:0,bottom:.5,right:.5},W=e=>typeof e==`string`?Ft[e]:e-.5,It=new N(1,0),Lt=new N,Rt=(e,t)=>e.rotate(t),zt=(e,t)=>new N(t).subtract(e),Bt=e=>e.distanceFrom(Lt),Vt=(e,t)=>Math.atan2(Gt(e,t),Kt(e,t)),Ht=e=>Vt(It,e),Ut=e=>e.eq(Lt)?e:e.scalarDivide(Bt(e)),Wt=(e,t=!0)=>Ut(new N(-e.y,e.x).scalarMultiply(t?1:-1)),Gt=(e,t)=>e.x*t.y-e.y*t.x,Kt=(e,t)=>e.x*t.x+e.y*t.y,qt=(e,t,n)=>{if(e.eq(t)||e.eq(n))return!0;let r=Gt(t,n),i=Gt(t,e),a=Gt(n,e);return r>=0?i>=0&&a<=0:!(i<=0&&a>=0)},Jt=`not-allowed`;function Yt(e){return W(e.originX)===W(`center`)&&W(e.originY)===W(`center`)}function Xt(e){return .5-W(e)}let Zt=(e,t)=>e[t],Qt=(e,t,n,r)=>({e,transform:t,pointer:new N(n,r)});function $t(e,t,n){let r=n,i=Ht(zt(Mt(e.getCenterPoint(),e.canvas.viewportTransform,void 0),r))+w;return Math.round(i%w/C)}function en({target:e,corner:t},n,r,i,a){var o;let s=e.controls[t],c=((o=e.canvas)==null?void 0:o.getZoom())||1,l=e.padding/c,u=function(e,t,n,r){let i=e.getRelativeCenterPoint(),a=n!==void 0&&r!==void 0?e.translateToGivenOrigin(i,E,E,n,r):new N(e.left,e.top);return(e.angle?t.rotate(-I(e.angle),i):t).subtract(a)}(e,new N(i,a),n,r);return u.x>=l&&(u.x-=l),u.x<=-l&&(u.x+=l),u.y>=l&&(u.y-=l),u.y<=l&&(u.y+=l),u.x-=s.offsetX,u.y-=s.offsetY,u}let tn=new RegExp(String.raw`[\0-\x1F\x7F;<>\\]|\/\*|\*\/|url\s*\(|expression\s*\(|(?:java|vb)script\s*:|data\s*:|@import\b`,`iu`),nn=e=>typeof e==`string`&&e.trim().length>0&&!tn.test(e),rn=(e,t=``)=>{let n=Number(e);return Number.isFinite(n)?`${n}`:t},an=(e,t=``)=>typeof e==`string`&&nn(e)?e:t,on=e=>e.replace(/\s+/g,` `),sn={aliceblue:`#F0F8FF`,antiquewhite:`#FAEBD7`,aqua:`#0FF`,aquamarine:`#7FFFD4`,azure:`#F0FFFF`,beige:`#F5F5DC`,bisque:`#FFE4C4`,black:`#000`,blanchedalmond:`#FFEBCD`,blue:`#00F`,blueviolet:`#8A2BE2`,brown:`#A52A2A`,burlywood:`#DEB887`,cadetblue:`#5F9EA0`,chartreuse:`#7FFF00`,chocolate:`#D2691E`,coral:`#FF7F50`,cornflowerblue:`#6495ED`,cornsilk:`#FFF8DC`,crimson:`#DC143C`,cyan:`#0FF`,darkblue:`#00008B`,darkcyan:`#008B8B`,darkgoldenrod:`#B8860B`,darkgray:`#A9A9A9`,darkgrey:`#A9A9A9`,darkgreen:`#006400`,darkkhaki:`#BDB76B`,darkmagenta:`#8B008B`,darkolivegreen:`#556B2F`,darkorange:`#FF8C00`,darkorchid:`#9932CC`,darkred:`#8B0000`,darksalmon:`#E9967A`,darkseagreen:`#8FBC8F`,darkslateblue:`#483D8B`,darkslategray:`#2F4F4F`,darkslategrey:`#2F4F4F`,darkturquoise:`#00CED1`,darkviolet:`#9400D3`,deeppink:`#FF1493`,deepskyblue:`#00BFFF`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1E90FF`,firebrick:`#B22222`,floralwhite:`#FFFAF0`,forestgreen:`#228B22`,fuchsia:`#F0F`,gainsboro:`#DCDCDC`,ghostwhite:`#F8F8FF`,gold:`#FFD700`,goldenrod:`#DAA520`,gray:`#808080`,grey:`#808080`,green:`#008000`,greenyellow:`#ADFF2F`,honeydew:`#F0FFF0`,hotpink:`#FF69B4`,indianred:`#CD5C5C`,indigo:`#4B0082`,ivory:`#FFFFF0`,khaki:`#F0E68C`,lavender:`#E6E6FA`,lavenderblush:`#FFF0F5`,lawngreen:`#7CFC00`,lemonchiffon:`#FFFACD`,lightblue:`#ADD8E6`,lightcoral:`#F08080`,lightcyan:`#E0FFFF`,lightgoldenrodyellow:`#FAFAD2`,lightgray:`#D3D3D3`,lightgrey:`#D3D3D3`,lightgreen:`#90EE90`,lightpink:`#FFB6C1`,lightsalmon:`#FFA07A`,lightseagreen:`#20B2AA`,lightskyblue:`#87CEFA`,lightslategray:`#789`,lightslategrey:`#789`,lightsteelblue:`#B0C4DE`,lightyellow:`#FFFFE0`,lime:`#0F0`,limegreen:`#32CD32`,linen:`#FAF0E6`,magenta:`#F0F`,maroon:`#800000`,mediumaquamarine:`#66CDAA`,mediumblue:`#0000CD`,mediumorchid:`#BA55D3`,mediumpurple:`#9370DB`,mediumseagreen:`#3CB371`,mediumslateblue:`#7B68EE`,mediumspringgreen:`#00FA9A`,mediumturquoise:`#48D1CC`,mediumvioletred:`#C71585`,midnightblue:`#191970`,mintcream:`#F5FFFA`,mistyrose:`#FFE4E1`,moccasin:`#FFE4B5`,navajowhite:`#FFDEAD`,navy:`#000080`,oldlace:`#FDF5E6`,olive:`#808000`,olivedrab:`#6B8E23`,orange:`#FFA500`,orangered:`#FF4500`,orchid:`#DA70D6`,palegoldenrod:`#EEE8AA`,palegreen:`#98FB98`,paleturquoise:`#AFEEEE`,palevioletred:`#DB7093`,papayawhip:`#FFEFD5`,peachpuff:`#FFDAB9`,peru:`#CD853F`,pink:`#FFC0CB`,plum:`#DDA0DD`,powderblue:`#B0E0E6`,purple:`#800080`,rebeccapurple:`#639`,red:`#F00`,rosybrown:`#BC8F8F`,royalblue:`#4169E1`,saddlebrown:`#8B4513`,salmon:`#FA8072`,sandybrown:`#F4A460`,seagreen:`#2E8B57`,seashell:`#FFF5EE`,sienna:`#A0522D`,silver:`#C0C0C0`,skyblue:`#87CEEB`,slateblue:`#6A5ACD`,slategray:`#708090`,slategrey:`#708090`,snow:`#FFFAFA`,springgreen:`#00FF7F`,steelblue:`#4682B4`,tan:`#D2B48C`,teal:`#008080`,thistle:`#D8BFD8`,tomato:`#FF6347`,turquoise:`#40E0D0`,violet:`#EE82EE`,wheat:`#F5DEB3`,white:`#FFF`,whitesmoke:`#F5F5F5`,yellow:`#FF0`,yellowgreen:`#9ACD32`},cn=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),ln=(e,t,n,r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o,s,c=(i+a)/2;if(i===a)o=s=0;else{let r=i-a;switch(s=c>.5?r/(2-i-a):r/(i+a),i){case e:o=(t-n)/r+(t<n?6:0);break;case t:o=(n-e)/r+2;break;case n:o=(e-t)/r+4}o/=6}return[Math.round(360*o),Math.round(100*s),Math.round(100*c),r]},un=(e=`1`)=>parseFloat(e)/(e.endsWith(`%`)?100:1),dn=e=>Math.min(Math.round(e),255).toString(16).toUpperCase().padStart(2,`0`),fn=([e,t,n,r=1])=>{let i=Math.round(.3*e+.59*t+.11*n);return[i,i,i,r]};var G=class e{constructor(t){if(a(this,`isUnrecognised`,!1),t)if(t instanceof e)this.setSource([...t._source]);else if(Array.isArray(t)){let[e,n,r,i=1]=t;this.setSource([e,n,r,i])}else this.setSource(this._tryParsingColor(t));else this.setSource([0,0,0,1])}_tryParsingColor(t){return(t=t.toLowerCase())in sn&&(t=sn[t]),t===`transparent`?[255,255,255,0]:e.sourceFromHex(t)||e.sourceFromRgb(t)||e.sourceFromHsl(t)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(e){this._source=e}toRgb(){let[e,t,n]=this.getSource();return`rgb(${e},${t},${n})`}toRgba(){return`rgba(${this.getSource().join(`,`)})`}toHsl(){let[e,t,n]=ln(...this.getSource());return`hsl(${e},${t}%,${n}%)`}toHsla(){let[e,t,n,r]=ln(...this.getSource());return`hsla(${e},${t}%,${n}%,${r})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){let[e,t,n,r]=this.getSource();return`${dn(e)}${dn(t)}${dn(n)}${dn(Math.round(255*r))}`}getAlpha(){return this.getSource()[3]}setAlpha(e){return this._source[3]=e,this}toGrayscale(){return this.setSource(fn(this.getSource())),this}toBlackWhite(e){let[t,,,n]=fn(this.getSource()),r=t<(e||127)?0:255;return this.setSource([r,r,r,n]),this}overlayWith(t){t instanceof e||(t=new e(t));let n=this.getSource(),r=t.getSource(),[i,a,o]=n.map((e,t)=>Math.round(.5*e+.5*r[t]));return this.setSource([i,a,o,n[3]]),this}static fromRgb(t){return e.fromRgba(t)}static fromRgba(t){return new e(e.sourceFromRgb(t))}static sourceFromRgb(e){let t=on(e).match(/^rgba?\(\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d{0,3}(?:\.\d+)?%?)\s?)?\)$/i);if(t){let[e,n,r]=t.slice(1,4).map(e=>{let t=parseFloat(e);return e.endsWith(`%`)?Math.round(2.55*t):t});return[e,n,r,un(t[4])]}}static fromHsl(t){return e.fromHsla(t)}static fromHsla(t){return new e(e.sourceFromHsl(t))}static sourceFromHsl(t){let n=on(t).match(/^hsla?\(\s?([+-]?\d{0,3}(?:\.\d+)?(?:deg|turn|rad)?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d*(?:\.\d+)?%?)\s?)?\)$/i);if(!n)return;let r=(e.parseAngletoDegrees(n[1])%360+360)%360/360,i=parseFloat(n[2])/100,a=parseFloat(n[3])/100,o,s,c;if(i===0)o=s=c=a;else{let e=a<=.5?a*(i+1):a+i-a*i,t=2*a-e;o=cn(t,e,r+1/3),s=cn(t,e,r),c=cn(t,e,r-1/3)}return[Math.round(255*o),Math.round(255*s),Math.round(255*c),un(n[4])]}static fromHex(t){return new e(e.sourceFromHex(t))}static sourceFromHex(e){if(e.match(/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i)){let t=e.slice(e.indexOf(`#`)+1),n;n=t.length<=4?t.split(``).map(e=>e+e):t.match(/.{2}/g);let[r,i,a,o=255]=n.map(e=>parseInt(e,16));return[r,i,a,o/255]}}static parseAngletoDegrees(e){let t=e.toLowerCase(),n=parseFloat(t);return t.includes(`rad`)?Ie(n):t.includes(`turn`)?360*n:n}};let pn=e=>{let t=[`instantiated_by_use`,`style`,`id`,`class`];switch(e){case`linearGradient`:return t.concat([`x1`,`y1`,`x2`,`y2`,`gradientUnits`,`gradientTransform`]);case`radialGradient`:return t.concat([`gradientUnits`,`gradientTransform`,`cx`,`cy`,`r`,`fx`,`fy`,`fr`]);case`stop`:return t.concat([`offset`,`stop-color`,`stop-opacity`])}return t},K=(e,t=16)=>{let n=/\D{0,2}$/.exec(e),r=parseFloat(e),i=s.DPI;switch(n==null?void 0:n[0]){case`mm`:return r*i/25.4;case`cm`:return r*i/2.54;case`in`:return r*i;case`pt`:return r*i/72;case`pc`:return r*i/72*12;case`em`:return r*t;default:return r}},mn=e=>{let[t,n]=e.trim().split(` `),[r,i]=(a=t)&&a!==`none`?[a.slice(1,4),a.slice(5,8)]:a===`none`?[a,a]:[`Mid`,`Mid`];var a;return{meetOrSlice:n||`meet`,alignX:r,alignY:i}},hn=(e,t,n=!0)=>{let r,i;if(t)if(t.toLive)r=`url(#SVGID_${U(t.id)})`;else{let e=String(t);if(nn(e)){let t=new G(e),n=t.getAlpha();r=t.toRgb(),n!==1&&(i=n.toString())}else r=new G(`black`).toRgb()}else r=`none`;return n?`${e}: ${r}; ${i?`${e}-opacity: ${i}; `:``}`:`${e}="${r}" ${i?`${e}-opacity="${i}" `:``}`};var gn=class{getSvgStyles(e){let t=this.fillRule==null?`nonzero`:an(this.fillRule),n=this.strokeWidth==null?`0`:rn(this.strokeWidth),r=this.strokeDashArray==null?te:this.strokeDashArray.every(e=>Number.isFinite(Number(e)))?this.strokeDashArray.join(` `):``,i=this.strokeDashOffset==null?`0`:rn(this.strokeDashOffset),a=this.strokeLineCap==null?`butt`:an(this.strokeLineCap),o=this.strokeLineJoin==null?`miter`:an(this.strokeLineJoin),s=this.strokeMiterLimit==null?`4`:rn(this.strokeMiterLimit),c=this.opacity==null?`1`:rn(this.opacity),l=this.visible?``:` visibility: hidden;`,u=e?``:this.getSvgFilter(),d=hn(j,this.fill);return[hn(he,this.stroke),n?`stroke-width: ${n}; `:``,r?`stroke-dasharray: ${r}; `:``,a?`stroke-linecap: ${a}; `:``,i?`stroke-dashoffset: ${i}; `:``,o?`stroke-linejoin: ${o}; `:``,s?`stroke-miterlimit: ${s}; `:``,d,t?`fill-rule: ${t}; `:``,c?`opacity: ${c};`:``,u,l].map(e=>U(e)).join(``)}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${U(this.shadow.id)});`:``}getSvgCommons(){return[this.id?`id="${U(String(this.id))}" `:``,this.clipPath?`clip-path="url(#${U(this.clipPath.clipPathId)})" `:``].join(``)}getSvgTransform(e,t=``){return`transform="${nt(e?this.calcTransformMatrix():this.calcOwnMatrix())}${t}" `}_toSVG(e){return[``]}toSVG(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})}toClipPathSVG(e){return` `+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})}_createBaseClipPathSVGMarkup(e,{reviver:t,additionalTransform:n=``}={}){let r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(``),i=e.indexOf(`COMMON_PARTS`);return e[i]=r,t?t(e.join(``)):e.join(``)}_createBaseSVGMarkup(e,{noStyle:t,reviver:n,withShadow:r,additionalTransform:i}={}){let a=t?``:`style="${this.getSvgStyles()}" `,o=r?`style="${this.getSvgFilter()}" `:``,s=this.clipPath,c=this.strokeUniform?`vector-effect="non-scaling-stroke" `:``,l=s&&s.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,p=[],m=e.indexOf(`COMMON_PARTS`),h;return s&&(s.clipPathId=`CLIPPATH_${je()}`,h=`<clipPath id="${s.clipPathId}" >\n${s.toClipPathSVG(n)}</clipPath>\n`),l&&p.push(`<g `,o,this.getSvgCommons(),` >
|
|
9
|
+
`)}createSVGClipPathMarkup(e){let t=this.clipPath;return t?(t.clipPathId=`CLIPPATH_${Me()}`,`<clipPath id="${t.clipPathId}" >\n${t.toClipPathSVG(e.reviver)}</clipPath>\n`):``}createSVGRefElementsMarkup(){return[`background`,`overlay`].map(e=>{let t=this[`${e}Color`];if(V(t)){let n=this[`${e}Vpt`],r=this.viewportTransform,i={isType:()=>!1,width:this.width/(n?r[0]:1),height:this.height/(n?r[3]:1)};return t.toSVG(i,{additionalTransform:n?it(r):``})}}).join(``)}createSVGFontFacesMarkup(){let e=[],t={},n=c.fontPaths;this._objects.forEach(function t(n){e.push(n),Ee(n)&&n._objects.forEach(t)}),e.forEach(e=>{if(!st(e))return;let{styles:r,fontFamily:i}=e;!t[i]&&n[i]&&(t[i]=!0,r&&Object.values(r).forEach(e=>{Object.values(e).forEach(({fontFamily:e=``})=>{!t[e]&&n[e]&&(t[e]=!0)})}))});let r=Object.keys(t).map(e=>`\t\t@font-face {\n\t\t\tfont-family: '${e}';\n\t\t\tsrc: url('${n[e]}');\n\t\t}\n`).join(``);return r?`\t<style type="text/css"><![CDATA[\n${r}]]></style>\n`:``}_setSVGObjects(e,t){this.forEachObject(n=>{n.excludeFromExport||this._setSVGObject(e,n,t)})}_setSVGObject(e,t,n){e.push(t.toSVG(n))}_setSVGBgOverlayImage(e,t,n){let r=this[t];r&&!r.excludeFromExport&&r.toSVG&&e.push(r.toSVG(n))}_setSVGBgOverlayColor(e,t){let n=this[`${t}Color`];if(n){if(V(n)){let r=n.repeat||``,i=this.width,a=this.height,o=this[`${t}Vpt`]?it(R(this.viewportTransform)):``;e.push(`<rect transform="${o} translate(${i/2},${a/2})" x="${n.offsetX-i/2}" y="${n.offsetY-a/2}" width="${(r===`repeat-y`||r===`no-repeat`)&&ot(n)?n.source.width:i}" height="${(r===`repeat-x`||r===`no-repeat`)&&ot(n)?n.source.height:a}" fill="url(#SVGID_${n.id})"></rect>\n`)}else e.push(`<rect x="0" y="0" width="100%" height="100%" `,`fill="`,n,`"`,`></rect>
|
|
10
|
+
`)}}loadFromJSON(e,t,n={}){if(!e)return Promise.reject(new u("`json` is undefined"));let{objects:r=[],...i}=typeof e==`string`?JSON.parse(e):e,{backgroundImage:a,background:o,overlayImage:s,overlay:c,clipPath:l}=i,d=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([et(r,{reviver:t,...n}),tt({backgroundImage:a,backgroundColor:o,overlayImage:s,overlayColor:c,clipPath:l},n)]).then(([e,t])=>(this.clear(),this.add(...e),this.set(i),this.set(t),this)).finally(()=>{this.renderOnAddRemove=d})}clone(e){let t=this.toObject(e);return this.cloneWithoutData().loadFromJSON(t)}cloneWithoutData(){let e=F(this);return new this.constructor(e)}toDataURL(e={}){let{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Fe(this.toCanvasElement(a,e),t,n)}toBlob(e={}){let{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Le(this.toCanvasElement(a,e),t,n)}toCanvasElement(e=1,{width:t,height:n,left:r,top:i,filter:a}={}){let o=(t||this.width)*e,s=(n||this.height)*e,c=this.getZoom(),l=this.width,u=this.height,d=this.skipControlsDrawing,f=c*e,p=this.viewportTransform,m=[f,0,0,f,(p[4]-(r||0))*e,(p[5]-(i||0))*e],h=this.enableRetinaScaling,g=F({width:o,height:s}),_=a?this._objects.filter(e=>a(e)):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=m,this.width=o,this.height=s,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(g.getContext(`2d`),_),this.viewportTransform=p,this.width=l,this.height=u,this.calcViewportBoundaries(),this.enableRetinaScaling=h,this.skipControlsDrawing=d,g}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),be.cancelByCanvas(this),this.disposed=!0,new Promise((e,t)=>{let n=()=>{this.destroy(),e(!0)};n.kill=t,this.__cleanupTask&&this.__cleanupTask.kill(`aborted`),this.destroyed?e(!1):this.nextRenderHandle?this.__cleanupTask=n:n()})}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject(e=>e.dispose()),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}};o(Et,`ownDefaults`,vt);let Dt=[`touchstart`,`touchmove`,`touchend`];function Ot(e){let t=e.changedTouches;return t&&t[0]?t[0]:e}let kt=e=>{let t=e.target,n=ut(t),r=Ot(e);return new N(r.clientX+n.left,r.clientY+n.top)},At=e=>Dt.includes(e.type)||e.pointerType===`touch`,jt=e=>{e.preventDefault(),e.stopPropagation()},Mt=e=>{let t=0,n=0,r=0,i=0;for(let a=0,o=e.length;a<o;a++){let{x:o,y:s}=e[a];(o>r||!a)&&(r=o),(o<t||!a)&&(t=o),(s>i||!a)&&(i=s),(s<n||!a)&&(n=s)}return{left:t,top:n,width:r-t,height:i-n}},Nt=(e,t)=>{let n=R(t),r=z(n,e.calcOwnMatrix());Ft(e,r)},Pt=(e,t)=>Ft(e,z(t,e.calcOwnMatrix())),Ft=(e,t)=>{let{translateX:n,translateY:r,scaleX:i,scaleY:a,...o}=We(t),s=new N(n,r);e.flipX=!1,e.flipY=!1,Object.assign(e,o),e.set({scaleX:i,scaleY:a}),e.setPositionByOrigin(s,D,D)},It=e=>{e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},Lt=e=>({scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}),Rt=(e,t,n)=>{let r=e/2,i=t/2,a=[new N(-r,-i),new N(r,-i),new N(-r,i),new N(r,i)].map(e=>e.transform(n)),o=Mt(a);return new N(o.width,o.height)},zt=(e=E,t=E)=>z(R(t),e),Bt=(e,t=E,n=E)=>e.transform(zt(t,n)),Vt=(e,t=E,n=E)=>e.transform(zt(t,n),!0),Ht=(e,t,n)=>{let r=zt(t,n);return Ft(e,z(r,e.calcOwnMatrix())),r},Ut={left:-.5,top:-.5,center:0,bottom:.5,right:.5},U=e=>typeof e==`string`?Ut[e]:e-.5,Wt=new N(1,0),Gt=new N,Kt=(e,t)=>e.rotate(t),qt=(e,t)=>new N(t).subtract(e),Jt=e=>e.distanceFrom(Gt),Yt=(e,t)=>Math.atan2($t(e,t),en(e,t)),Xt=e=>Yt(Wt,e),Zt=e=>e.eq(Gt)?e:e.scalarDivide(Jt(e)),Qt=(e,t=!0)=>Zt(new N(-e.y,e.x).scalarMultiply(t?1:-1)),$t=(e,t)=>e.x*t.y-e.y*t.x,en=(e,t)=>e.x*t.x+e.y*t.y,tn=(e,t,n)=>{if(e.eq(t)||e.eq(n))return!0;let r=$t(t,n),i=$t(t,e),a=$t(n,e);return r>=0?i>=0&&a<=0:!(i<=0&&a>=0)},nn=`not-allowed`,rn=(e,t,n,r)=>{if(!t||!e)return`drag`;let i=r.controls[t];return i.getActionName(n,i,r)};function an(e){return U(e.originX)===U(`center`)&&U(e.originY)===U(`center`)}function on(e){return-U(e)+.5}let W=(e,t)=>e[t],sn=(e,t,n,r)=>({e,transform:t,pointer:new N(n,r)});function cn(e,t,n){let r=n,i=Bt(e.getCenterPoint(),e.canvas.viewportTransform),a=Xt(qt(i,r))+T;return Math.round(a%T/w)}function ln(e,t,n,r){let i=e.getRelativeCenterPoint(),a=n!==void 0&&r!==void 0?e.translateToGivenOrigin(i,D,D,n,r):new N(e.left,e.top);return(e.angle?t.rotate(-I(e.angle),i):t).subtract(a)}function un({target:e,corner:t},n,r,i,a){var o;let s=e.controls[t],c=((o=e.canvas)==null?void 0:o.getZoom())||1,l=e.padding/c,u=ln(e,new N(i,a),n,r);return u.x>=l&&(u.x-=l),u.x<=-l&&(u.x+=l),u.y>=l&&(u.y-=l),u.y<=-l&&(u.y+=l),u.x-=s.offsetX,u.y-=s.offsetY,u}let dn=(e,t,n,r)=>{r=Math.round(r);let i=r*2+1,{data:a}=e.getImageData(t-r,n-r,i,i);for(let e=3;e<a.length;e+=4)if(a[e]>0)return!1;return!0},fn=(e,t)=>{for(let n=e.length-1;n>=0;n--)if(t(e[n],n,e))return n;return-1};var pn=class{constructor(e){this.options=e,this.strokeProjectionMagnitude=this.options.strokeWidth/2,this.scale=new N(this.options.scaleX,this.options.scaleY),this.strokeUniformScalar=this.options.strokeUniform?new N(1/this.options.scaleX,1/this.options.scaleY):new N(1,1)}createSideVector(e,t){let n=qt(e,t);return this.options.strokeUniform?n.multiply(this.scale):n}projectOrthogonally(e,t,n){return this.applySkew(e.add(this.calcOrthogonalProjection(e,t,n)))}isSkewed(){return this.options.skewX!==0||this.options.skewY!==0}applySkew(e){let t=new N(e);return t.y+=t.x*Math.tan(I(this.options.skewY)),t.x+=t.y*Math.tan(I(this.options.skewX)),t}scaleUnitVector(e,t){return e.multiply(this.strokeUniformScalar).scalarMultiply(t)}};let mn=new N;var hn=class e extends pn{static getOrthogonalRotationFactor(e,t){let n=t?Yt(e,t):Xt(e);return Math.abs(n)<C?-1:1}constructor(e,t,n,r){super(r),o(this,`AB`,void 0),o(this,`AC`,void 0),o(this,`alpha`,void 0),o(this,`bisector`,void 0),this.A=new N(e),this.B=new N(t),this.C=new N(n),this.AB=this.createSideVector(this.A,this.B),this.AC=this.createSideVector(this.A,this.C),this.alpha=Yt(this.AB,this.AC),this.bisector=Zt(Kt(this.AB.eq(mn)?this.AC:this.AB,this.alpha/2))}calcOrthogonalProjection(t,n,r=this.strokeProjectionMagnitude){let i=this.createSideVector(t,n),a=Qt(i),o=e.getOrthogonalRotationFactor(a,this.bisector);return this.scaleUnitVector(a,r*o)}projectBevel(){let e=[];return(this.alpha%T===0?[this.B]:[this.B,this.C]).forEach(t=>{e.push(this.projectOrthogonally(this.A,t)),e.push(this.projectOrthogonally(this.A,t,-this.strokeProjectionMagnitude))}),e}projectMiter(){let e=[],t=Math.abs(this.alpha),n=1/Math.sin(t/2),r=this.scaleUnitVector(this.bisector,-this.strokeProjectionMagnitude*n),i=this.options.strokeUniform?Jt(this.scaleUnitVector(this.bisector,this.options.strokeMiterLimit)):this.options.strokeMiterLimit;return Jt(r)/this.strokeProjectionMagnitude<=i&&e.push(this.applySkew(this.A.add(r))),e.push(...this.projectBevel()),e}projectRoundNoSkew(t,n){let r=[],i=new N(e.getOrthogonalRotationFactor(this.bisector),e.getOrthogonalRotationFactor(new N(this.bisector.y,this.bisector.x)));return[new N(1,0).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i),new N(0,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i)].forEach(e=>{tn(e,t,n)&&r.push(this.A.add(e))}),r}projectRoundWithSkew(e,t){let n=[],{skewX:r,skewY:i,scaleX:a,scaleY:o,strokeUniform:s}=this.options,c=new N(Math.tan(I(r)),Math.tan(I(i))),l=this.strokeProjectionMagnitude,u=s?l/o/Math.sqrt(1/o**2+1/a**2*c.y**2):l/Math.sqrt(1+c.y**2),d=new N(Math.sqrt(Math.max(l**2-u**2,0)),u),f=s?l/Math.sqrt(1+c.x**2*(1/o)**2/(1/a+1/a*c.x*c.y)**2):l/Math.sqrt(1+c.x**2/(1+c.x*c.y)**2),p=new N(f,Math.sqrt(Math.max(l**2-f**2,0)));return[p,p.scalarMultiply(-1),d,d.scalarMultiply(-1)].map(e=>this.applySkew(s?e.multiply(this.strokeUniformScalar):e)).forEach(r=>{tn(r,e,t)&&n.push(this.applySkew(this.A).add(r))}),n}projectRound(){let e=[];e.push(...this.projectBevel());let t=this.alpha%T===0,n=this.applySkew(this.A),r=e[t?0:2].subtract(n),i=e[+!!t].subtract(n),a=t?this.applySkew(this.AB.scalarMultiply(-1)):this.applySkew(this.bisector.multiply(this.strokeUniformScalar).scalarMultiply(-1)),o=$t(r,a)>0,s=o?r:i,c=o?i:r;return this.isSkewed()?e.push(...this.projectRoundWithSkew(s,c)):e.push(...this.projectRoundNoSkew(s,c)),e}projectPoints(){switch(this.options.strokeLineJoin){case`miter`:return this.projectMiter();case`round`:return this.projectRound();default:return this.projectBevel()}}project(){return this.projectPoints().map(e=>({originPoint:this.A,projectedPoint:e,angle:this.alpha,bisector:this.bisector}))}},gn=class extends pn{constructor(e,t,n){super(n),this.A=new N(e),this.T=new N(t)}calcOrthogonalProjection(e,t,n=this.strokeProjectionMagnitude){let r=this.createSideVector(e,t);return this.scaleUnitVector(Qt(r),n)}projectButt(){return[this.projectOrthogonally(this.A,this.T,this.strokeProjectionMagnitude),this.projectOrthogonally(this.A,this.T,-this.strokeProjectionMagnitude)]}projectRound(){let e=[];if(!this.isSkewed()&&this.A.eq(this.T)){let t=new N(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);e.push(this.applySkew(this.A.add(t)),this.applySkew(this.A.subtract(t)))}else e.push(...new hn(this.A,this.T,this.T,this.options).projectRound());return e}projectSquare(){let e=[];if(this.A.eq(this.T)){let t=new N(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);e.push(this.A.add(t),this.A.subtract(t))}else{let t=this.calcOrthogonalProjection(this.A,this.T,this.strokeProjectionMagnitude),n=this.scaleUnitVector(Zt(this.createSideVector(this.A,this.T)),-this.strokeProjectionMagnitude),r=this.A.add(n);e.push(r.add(t),r.subtract(t))}return e.map(e=>this.applySkew(e))}projectPoints(){switch(this.options.strokeLineCap){case`round`:return this.projectRound();case`square`:return this.projectSquare();default:return this.projectButt()}}project(){return this.projectPoints().map(e=>({originPoint:this.A,projectedPoint:e}))}};let _n=(e,t,n=!1)=>{let r=[];if(e.length===0)return r;let i=e.reduce((e,t)=>(e[e.length-1].eq(t)||e.push(new N(t)),e),[new N(e[0])]);if(i.length===1)n=!0;else if(!n){let e=i[0],t=fn(i,t=>!t.eq(e));i.splice(t+1)}return i.forEach((e,i,a)=>{let o,s;i===0?(s=a[1],o=n?e:a[a.length-1]):i===a.length-1?(o=a[i-1],s=n?e:a[0]):(o=a[i-1],s=a[i+1]),n&&a.length===1?r.push(...new gn(e,e,t).project()):n&&(i===0||i===a.length-1)?r.push(...new gn(e,i===0?s:o,t).project()):r.push(...new hn(e,o,s,t).project())}),r},vn=e=>{let t={};return Object.keys(e).forEach(n=>{t[n]={},Object.keys(e[n]).forEach(r=>{t[n][r]={...e[n][r]}})}),t},yn=(e,t,n=!1)=>e.fill!==t.fill||e.stroke!==t.stroke||e.strokeWidth!==t.strokeWidth||e.fontSize!==t.fontSize||e.fontFamily!==t.fontFamily||e.fontWeight!==t.fontWeight||e.fontStyle!==t.fontStyle||e.textDecorationThickness!==t.textDecorationThickness||e.textDecorationColor!==t.textDecorationColor||e.textBackgroundColor!==t.textBackgroundColor||e.deltaY!==t.deltaY||n&&(e.overline!==t.overline||e.underline!==t.underline||e.linethrough!==t.linethrough),bn=(e,t)=>{let n=t.split(re),r=[],i=-1,a={};e=vn(e);for(let t=0;t<n.length;t++){let o=Ct(n[t]);if(!e[t]){i+=o.length,a={};continue}for(let n=0;n<o.length;n++){i++;let o=e[t][n];o&&Object.keys(o).length>0&&(yn(a,o,!0)?r.push({start:i,end:i+1,style:o}):r[r.length-1].end++),a=o||{}}}return r},xn=(e,t)=>{if(!Array.isArray(e))return vn(e);let n=t.split(re),r={},i=-1,a=0;for(let t=0;t<n.length;t++){let o=Ct(n[t]);for(let n=0;n<o.length;n++)i++,e[a]&&e[a].start<=i&&i<e[a].end&&(r[t]=r[t]||{},r[t][n]={...e[a].style},i===e[a].end-1&&a++)}return r},Sn=e=>e.replace(/\s+/g,` `),Cn={aliceblue:`#F0F8FF`,antiquewhite:`#FAEBD7`,aqua:`#0FF`,aquamarine:`#7FFFD4`,azure:`#F0FFFF`,beige:`#F5F5DC`,bisque:`#FFE4C4`,black:`#000`,blanchedalmond:`#FFEBCD`,blue:`#00F`,blueviolet:`#8A2BE2`,brown:`#A52A2A`,burlywood:`#DEB887`,cadetblue:`#5F9EA0`,chartreuse:`#7FFF00`,chocolate:`#D2691E`,coral:`#FF7F50`,cornflowerblue:`#6495ED`,cornsilk:`#FFF8DC`,crimson:`#DC143C`,cyan:`#0FF`,darkblue:`#00008B`,darkcyan:`#008B8B`,darkgoldenrod:`#B8860B`,darkgray:`#A9A9A9`,darkgrey:`#A9A9A9`,darkgreen:`#006400`,darkkhaki:`#BDB76B`,darkmagenta:`#8B008B`,darkolivegreen:`#556B2F`,darkorange:`#FF8C00`,darkorchid:`#9932CC`,darkred:`#8B0000`,darksalmon:`#E9967A`,darkseagreen:`#8FBC8F`,darkslateblue:`#483D8B`,darkslategray:`#2F4F4F`,darkslategrey:`#2F4F4F`,darkturquoise:`#00CED1`,darkviolet:`#9400D3`,deeppink:`#FF1493`,deepskyblue:`#00BFFF`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1E90FF`,firebrick:`#B22222`,floralwhite:`#FFFAF0`,forestgreen:`#228B22`,fuchsia:`#F0F`,gainsboro:`#DCDCDC`,ghostwhite:`#F8F8FF`,gold:`#FFD700`,goldenrod:`#DAA520`,gray:`#808080`,grey:`#808080`,green:`#008000`,greenyellow:`#ADFF2F`,honeydew:`#F0FFF0`,hotpink:`#FF69B4`,indianred:`#CD5C5C`,indigo:`#4B0082`,ivory:`#FFFFF0`,khaki:`#F0E68C`,lavender:`#E6E6FA`,lavenderblush:`#FFF0F5`,lawngreen:`#7CFC00`,lemonchiffon:`#FFFACD`,lightblue:`#ADD8E6`,lightcoral:`#F08080`,lightcyan:`#E0FFFF`,lightgoldenrodyellow:`#FAFAD2`,lightgray:`#D3D3D3`,lightgrey:`#D3D3D3`,lightgreen:`#90EE90`,lightpink:`#FFB6C1`,lightsalmon:`#FFA07A`,lightseagreen:`#20B2AA`,lightskyblue:`#87CEFA`,lightslategray:`#789`,lightslategrey:`#789`,lightsteelblue:`#B0C4DE`,lightyellow:`#FFFFE0`,lime:`#0F0`,limegreen:`#32CD32`,linen:`#FAF0E6`,magenta:`#F0F`,maroon:`#800000`,mediumaquamarine:`#66CDAA`,mediumblue:`#0000CD`,mediumorchid:`#BA55D3`,mediumpurple:`#9370DB`,mediumseagreen:`#3CB371`,mediumslateblue:`#7B68EE`,mediumspringgreen:`#00FA9A`,mediumturquoise:`#48D1CC`,mediumvioletred:`#C71585`,midnightblue:`#191970`,mintcream:`#F5FFFA`,mistyrose:`#FFE4E1`,moccasin:`#FFE4B5`,navajowhite:`#FFDEAD`,navy:`#000080`,oldlace:`#FDF5E6`,olive:`#808000`,olivedrab:`#6B8E23`,orange:`#FFA500`,orangered:`#FF4500`,orchid:`#DA70D6`,palegoldenrod:`#EEE8AA`,palegreen:`#98FB98`,paleturquoise:`#AFEEEE`,palevioletred:`#DB7093`,papayawhip:`#FFEFD5`,peachpuff:`#FFDAB9`,peru:`#CD853F`,pink:`#FFC0CB`,plum:`#DDA0DD`,powderblue:`#B0E0E6`,purple:`#800080`,rebeccapurple:`#639`,red:`#F00`,rosybrown:`#BC8F8F`,royalblue:`#4169E1`,saddlebrown:`#8B4513`,salmon:`#FA8072`,sandybrown:`#F4A460`,seagreen:`#2E8B57`,seashell:`#FFF5EE`,sienna:`#A0522D`,silver:`#C0C0C0`,skyblue:`#87CEEB`,slateblue:`#6A5ACD`,slategray:`#708090`,slategrey:`#708090`,snow:`#FFFAFA`,springgreen:`#00FF7F`,steelblue:`#4682B4`,tan:`#D2B48C`,teal:`#008080`,thistle:`#D8BFD8`,tomato:`#FF6347`,turquoise:`#40E0D0`,violet:`#EE82EE`,wheat:`#F5DEB3`,white:`#FFF`,whitesmoke:`#F5F5F5`,yellow:`#FF0`,yellowgreen:`#9ACD32`},wn=()=>/^rgba?\(\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d{0,3}(?:\.\d+)?%?)\s?)?\)$/i,Tn=()=>/^hsla?\(\s?([+-]?\d{0,3}(?:\.\d+)?(?:deg|turn|rad)?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d*(?:\.\d+)?%?)\s?)?\)$/i,En=()=>/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i,Dn=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),On=(e,t,n,r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o,s,c=(i+a)/2;if(i===a)o=s=0;else{let r=i-a;switch(s=c>.5?r/(2-i-a):r/(i+a),i){case e:o=(t-n)/r+(t<n?6:0);break;case t:o=(n-e)/r+2;break;case n:o=(e-t)/r+4}o/=6}return[Math.round(o*360),Math.round(s*100),Math.round(c*100),r]},kn=(e=`1`)=>parseFloat(e)/(e.endsWith(`%`)?100:1),An=e=>Math.min(Math.round(e),255).toString(16).toUpperCase().padStart(2,`0`),jn=([e,t,n,r=1])=>{let i=Math.round(e*.3+t*.59+n*.11);return[i,i,i,r]};var G=class e{constructor(t){if(o(this,`isUnrecognised`,!1),!t)this.setSource([0,0,0,1]);else if(t instanceof e)this.setSource([...t._source]);else if(Array.isArray(t)){let[e,n,r,i=1]=t;this.setSource([e,n,r,i])}else this.setSource(this._tryParsingColor(t))}_tryParsingColor(t){return t=t.toLowerCase(),t in Cn&&(t=Cn[t]),t===`transparent`?[255,255,255,0]:e.sourceFromHex(t)||e.sourceFromRgb(t)||e.sourceFromHsl(t)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(e){this._source=e}toRgb(){let[e,t,n]=this.getSource();return`rgb(${e},${t},${n})`}toRgba(){return`rgba(${this.getSource().join(`,`)})`}toHsl(){let[e,t,n]=On(...this.getSource());return`hsl(${e},${t}%,${n}%)`}toHsla(){let[e,t,n,r]=On(...this.getSource());return`hsla(${e},${t}%,${n}%,${r})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){let[e,t,n,r]=this.getSource();return`${An(e)}${An(t)}${An(n)}${An(Math.round(r*255))}`}getAlpha(){return this.getSource()[3]}setAlpha(e){return this._source[3]=e,this}toGrayscale(){return this.setSource(jn(this.getSource())),this}toBlackWhite(e){let[t,,,n]=jn(this.getSource()),r=t<(e||127)?0:255;return this.setSource([r,r,r,n]),this}overlayWith(t){t instanceof e||(t=new e(t));let n=this.getSource(),r=t.getSource(),[i,a,o]=n.map((e,t)=>Math.round(e*.5+r[t]*.5));return this.setSource([i,a,o,n[3]]),this}static fromRgb(t){return e.fromRgba(t)}static fromRgba(t){return new e(e.sourceFromRgb(t))}static sourceFromRgb(e){let t=Sn(e).match(wn());if(t){let[e,n,r]=t.slice(1,4).map(e=>{let t=parseFloat(e);return e.endsWith(`%`)?Math.round(t*2.55):t});return[e,n,r,kn(t[4])]}}static fromHsl(t){return e.fromHsla(t)}static fromHsla(t){return new e(e.sourceFromHsl(t))}static sourceFromHsl(t){let n=Sn(t).match(Tn());if(!n)return;let r=(e.parseAngletoDegrees(n[1])%360+360)%360/360,i=parseFloat(n[2])/100,a=parseFloat(n[3])/100,o,s,c;if(i===0)o=s=c=a;else{let e=a<=.5?a*(i+1):a+i-a*i,t=a*2-e;o=Dn(t,e,r+1/3),s=Dn(t,e,r),c=Dn(t,e,r-1/3)}return[Math.round(o*255),Math.round(s*255),Math.round(c*255),kn(n[4])]}static fromHex(t){return new e(e.sourceFromHex(t))}static sourceFromHex(e){if(e.match(En())){let t=e.slice(e.indexOf(`#`)+1),n=t.length<=4,r;r=n?t.split(``).map(e=>e+e):t.match(/.{2}/g);let[i,a,o,s=255]=r.map(e=>parseInt(e,16));return[i,a,o,s/255]}}static parseAngletoDegrees(e){let t=e.toLowerCase(),n=parseFloat(t);return t.includes(`rad`)?Re(n):t.includes(`turn`)?n*360:n}};let Mn=new RegExp(String.raw`[\0-\x1F\x7F;<>\\]|\/\*|\*\/|url\s*\(|expression\s*\(|(?:java|vb)script\s*:|data\s*:|@import\b`,`iu`),Nn=e=>typeof e==`string`&&e.trim().length>0&&!Mn.test(e),Pn=(e,t=``)=>{let n=Number(e);return Number.isFinite(n)?`${n}`:t},Fn=(e,t=``)=>typeof e==`string`&&Nn(e)?e:t,In=e=>{let t=[`instantiated_by_use`,`style`,`id`,`class`];switch(e){case`linearGradient`:return t.concat([`x1`,`y1`,`x2`,`y2`,`gradientUnits`,`gradientTransform`]);case`radialGradient`:return t.concat([`gradientUnits`,`gradientTransform`,`cx`,`cy`,`r`,`fx`,`fy`,`fr`]);case`stop`:return t.concat([`offset`,`stop-color`,`stop-opacity`])}return t},K=(e,t=16)=>{let n=/\D{0,2}$/.exec(e),r=parseFloat(e),i=c.DPI;switch(n==null?void 0:n[0]){case`mm`:return r*i/25.4;case`cm`:return r*i/2.54;case`in`:return r*i;case`pt`:return r*i/72;case`pc`:return r*i/72*12;case`em`:return r*t;default:return r}},Ln=e=>e&&e!==`none`?[e.slice(1,4),e.slice(5,8)]:e===`none`?[e,e]:[`Mid`,`Mid`],Rn=e=>{let[t,n]=e.trim().split(` `),[r,i]=Ln(t);return{meetOrSlice:n||`meet`,alignX:r,alignY:i}},zn=(e,t,n=!0)=>{let r,i;if(!t)r=`none`;else if(t.toLive)r=`url(#SVGID_${H(t.id)})`;else{let e=String(t);if(Nn(e)){let t=new G(e),n=t.getAlpha();r=t.toRgb(),n!==1&&(i=n.toString())}else r=new G(`black`).toRgb()}return n?`${e}: ${r}; ${i?`${e}-opacity: ${i}; `:``}`:`${e}="${r}" ${i?`${e}-opacity="${i}" `:``}`},Bn=(e,{left:t,top:n,width:r,height:i},a=c.NUM_FRACTION_DIGITS)=>{let o=zn(j,e,!1),[s,l,u,d]=[t,n,r,i].map(e=>B(e,a));return`<rect ${o} x="${s}" y="${l}" width="${u}" height="${d}"></rect>`};var Vn=class{getSvgStyles(e){let t=this.fillRule==null?`nonzero`:Fn(this.fillRule),n=this.strokeWidth==null?`0`:Pn(this.strokeWidth),r=this.strokeDashArray==null?ne:this.strokeDashArray.every(e=>Number.isFinite(Number(e)))?this.strokeDashArray.join(` `):``,i=this.strokeDashOffset==null?`0`:Pn(this.strokeDashOffset),a=this.strokeLineCap==null?`butt`:Fn(this.strokeLineCap),o=this.strokeLineJoin==null?`miter`:Fn(this.strokeLineJoin),s=this.strokeMiterLimit==null?`4`:Pn(this.strokeMiterLimit),c=this.opacity==null?`1`:Pn(this.opacity),l=this.visible?``:` visibility: hidden;`,u=e?``:this.getSvgFilter(),d=zn(j,this.fill);return[zn(ge,this.stroke),n?`stroke-width: ${n}; `:``,r?`stroke-dasharray: ${r}; `:``,a?`stroke-linecap: ${a}; `:``,i?`stroke-dashoffset: ${i}; `:``,o?`stroke-linejoin: ${o}; `:``,s?`stroke-miterlimit: ${s}; `:``,d,t?`fill-rule: ${t}; `:``,c?`opacity: ${c};`:``,u,l].map(e=>H(e)).join(``)}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${H(this.shadow.id)});`:``}getSvgCommons(){return[this.id?`id="${H(String(this.id))}" `:``,this.clipPath?`clip-path="url(#${H(this.clipPath.clipPathId)})" `:``].join(``)}getSvgTransform(e,t=``){let n=e?this.calcTransformMatrix():this.calcOwnMatrix();return`${`transform="${it(n)}`}${t}" `}_toSVG(e){return[``]}toSVG(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})}toClipPathSVG(e){return` `+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})}_createBaseClipPathSVGMarkup(e,{reviver:t,additionalTransform:n=``}={}){let r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(``),i=e.indexOf(`COMMON_PARTS`);return e[i]=r,t?t(e.join(``)):e.join(``)}_createBaseSVGMarkup(e,{noStyle:t,reviver:n,withShadow:r,additionalTransform:i}={}){let a=t?``:`style="${this.getSvgStyles()}" `,o=r?`style="${this.getSvgFilter()}" `:``,s=this.clipPath,c=this.strokeUniform?`vector-effect="non-scaling-stroke" `:``,l=s&&s.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,p=[],m=e.indexOf(`COMMON_PARTS`),h;return s&&(s.clipPathId=`CLIPPATH_${Me()}`,h=`<clipPath id="${s.clipPathId}" >\n${s.toClipPathSVG(n)}</clipPath>\n`),l&&p.push(`<g `,o,this.getSvgCommons(),` >
|
|
11
11
|
`),p.push(`<g `,this.getSvgTransform(!1),l?``:o+this.getSvgCommons(),` >
|
|
12
12
|
`),e[m]=[a,c,t?``:this.addPaintOrder(),` `,i?`transform="${i}" `:``].join(``),V(d)&&p.push(d.toSVG(this)),V(u)&&p.push(u.toSVG(this)),f&&p.push(f.toSVG(this)),s&&p.push(h),p.push(e.join(``)),p.push(`</g>
|
|
13
13
|
`),l&&p.push(`</g>
|
|
14
|
-
`),n?n(p.join(``)):p.join(``)}addPaintOrder(){return this.paintFirst===`fill`?``:` paint-order="${U(this.paintFirst)}" `}};function _n(e){return RegExp(`^(`+e.join(`|`)+`)\\b`,`i`)}let vn=`textDecorationThickness`,yn=`textDecorationColor`,bn=[`fontSize`,`fontWeight`,`fontFamily`,`fontStyle`],xn=[`underline`,`overline`,`linethrough`],Sn=[...bn,`lineHeight`,`text`,`charSpacing`,`textAlign`,`styles`,`path`,`pathStartOffset`,`pathSide`,`pathAlign`],Cn=[...Sn,...xn,`textBackgroundColor`,`direction`,vn,yn],wn=[...bn,...xn,he,`strokeWidth`,j,`deltaY`,`textBackgroundColor`,vn,yn],Tn={_reNewline:ne,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,fontSize:40,fontWeight:_e,fontFamily:`Times New Roman`,underline:!1,overline:!1,linethrough:!1,textAlign:D,fontStyle:_e,lineHeight:1.16,textBackgroundColor:``,stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:D,pathAlign:`baseline`,charSpacing:0,deltaY:0,direction:`ltr`,CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.28167,overline:-.81333},_fontSizeMult:1.13,[vn]:66.667},En=`justify`,Dn=String.raw`[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?`,On=String.raw`(?:\s*,?\s+|\s*,\s*)`,kn=`http://www.w3.org/2000/svg`,An=RegExp(`(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(`+Dn+`(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|`+Dn+`))?\\s+(.*)`),jn={cx:D,x:D,r:`radius`,cy:`top`,y:`top`,display:`visible`,visibility:`visible`,transform:`transformMatrix`,"fill-opacity":`fillOpacity`,"fill-rule":`fillRule`,"font-family":`fontFamily`,"font-size":`fontSize`,"font-style":`fontStyle`,"font-weight":`fontWeight`,"letter-spacing":`charSpacing`,"paint-order":`paintFirst`,"stroke-dasharray":`strokeDashArray`,"stroke-dashoffset":`strokeDashOffset`,"stroke-linecap":`strokeLineCap`,"stroke-linejoin":`strokeLineJoin`,"stroke-miterlimit":`strokeMiterLimit`,"stroke-opacity":`strokeOpacity`,"stroke-width":`strokeWidth`,"text-decoration":`textDecoration`,"text-anchor":`textAnchor`,opacity:`opacity`,"clip-path":`clipPath`,"clip-rule":`clipRule`,"vector-effect":`strokeUniform`,"image-rendering":`imageSmoothing`,"text-decoration-thickness":vn,"text-decoration-color":yn},Mn=`font-size`,Nn=`clip-path`,Pn=_n([`path`,`circle`,`polygon`,`polyline`,`ellipse`,`rect`,`line`,`image`,`text`]),Fn=_n([`symbol`,`image`,`marker`,`pattern`,`view`,`svg`]),In=_n([`symbol`,`g`,`a`,`svg`,`clipPath`,`defs`]),Ln=new RegExp(String.raw`^\s*(${Dn})${On}(${Dn})${On}(${Dn})${On}(${Dn})\s*$`),Rn=`(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?`,zn=RegExp(`(?:\\s|^)`+Rn+Rn+`(`+Dn+`?(?:px)?)?(?:\\s?|$)(?:$|\\s)`);var Bn=class e{constructor(t={}){let n=typeof t==`string`?e.parseShadow(t):t;Object.assign(this,e.ownDefaults,n),this.id=je()}static parseShadow(e){let t=e.trim(),[,n=0,r=0,i=0]=(zn.exec(t)||[]).map(e=>parseFloat(e)||0);return{color:(t.replace(zn,``)||`rgb(0,0,0)`).trim(),offsetX:n,offsetY:r,blur:i}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join(`px `)}toSVG(e){let t=Rt(new N(this.offsetX,this.offsetY),I(-e.angle)),n=s.NUM_FRACTION_DIGITS,r=new G(this.color),i=40,a=40;return e.width&&e.height&&(i=100*B((Math.abs(t.x)+this.blur)/e.width,n)+20,a=100*B((Math.abs(t.y)+this.blur)/e.height,n)+20),e.flipX&&(t.x*=-1),e.flipY&&(t.y*=-1),`<filter id="SVGID_${U(this.id)}" y="-${a}%" height="${100+2*a}%" x="-${i}%" width="${100+2*i}%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="${B(this.blur?this.blur/2:0,n)}"></feGaussianBlur>\n\t<feOffset dx="${B(t.x,n)}" dy="${B(t.y,n)}" result="oBlur" ></feOffset>\n\t<feFlood flood-color="${r.toRgb()}" flood-opacity="${r.getAlpha()}"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n`}toObject(){let t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},n=e.ownDefaults;return this.includeDefaultValues?t:tt(t,(e,t)=>e!==n[t])}static async fromObject(e){return new this(e)}};a(Bn,`ownDefaults`,{color:`rgb(0,0,0)`,blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1}),a(Bn,`type`,`shadow`),M.setClass(Bn,`shadow`);let Vn=(e,t,n)=>Math.max(e,Math.min(t,n)),Hn=[`top`,D,de,fe,`flipX`,`flipY`,`originX`,`originY`,`angle`,`opacity`,`globalCompositeOperation`,`shadow`,`visible`,pe,me],Un=[j,he,`strokeWidth`,`strokeDashArray`,`width`,`height`,`paintFirst`,`strokeUniform`,`strokeLineCap`,`strokeDashOffset`,`strokeLineJoin`,`strokeMiterLimit`,`backgroundColor`,`clipPath`],Wn={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:E,originY:E,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:j,fill:`rgb(0,0,0)`,fillRule:`nonzero`,stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:`butt`,strokeLineJoin:`miter`,strokeMiterLimit:4,globalCompositeOperation:`source-over`,backgroundColor:``,shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0};var Gn=n({defaultEasing:()=>Jn,easeInBack:()=>gr,easeInBounce:()=>br,easeInCirc:()=>ur,easeInCubic:()=>Yn,easeInElastic:()=>pr,easeInExpo:()=>sr,easeInOutBack:()=>vr,easeInOutBounce:()=>xr,easeInOutCirc:()=>fr,easeInOutCubic:()=>Zn,easeInOutElastic:()=>hr,easeInOutExpo:()=>lr,easeInOutQuad:()=>wr,easeInOutQuart:()=>er,easeInOutQuint:()=>rr,easeInOutSine:()=>or,easeInQuad:()=>Sr,easeInQuart:()=>Qn,easeInQuint:()=>tr,easeInSine:()=>ir,easeOutBack:()=>_r,easeOutBounce:()=>yr,easeOutCirc:()=>dr,easeOutCubic:()=>Xn,easeOutElastic:()=>mr,easeOutExpo:()=>cr,easeOutQuad:()=>Cr,easeOutQuart:()=>$n,easeOutQuint:()=>nr,easeOutSine:()=>ar});let Kn=(e,t,n,r)=>(e<Math.abs(t)?(e=t,r=n/4):r=t===0&&e===0?n/w*Math.asin(1):n/w*Math.asin(t/e),{a:e,c:t,p:n,s:r}),qn=(e,t,n,r,i)=>e*2**(10*--r)*Math.sin((r*i-t)*w/n),Jn=(e,t,n,r)=>-n*Math.cos(e/r*S)+n+t,Yn=(e,t,n,r)=>n*(e/r)**3+t,Xn=(e,t,n,r)=>n*((e/r-1)**3+1)+t,Zn=(e,t,n,r)=>(e/=r/2)<1?n/2*e**3+t:n/2*((e-2)**3+2)+t,Qn=(e,t,n,r)=>n*(e/=r)*e**3+t,$n=(e,t,n,r)=>-n*((e=e/r-1)*e**3-1)+t,er=(e,t,n,r)=>(e/=r/2)<1?n/2*e**4+t:-n/2*((e-=2)*e**3-2)+t,tr=(e,t,n,r)=>n*(e/r)**5+t,nr=(e,t,n,r)=>n*((e/r-1)**5+1)+t,rr=(e,t,n,r)=>(e/=r/2)<1?n/2*e**5+t:n/2*((e-2)**5+2)+t,ir=(e,t,n,r)=>-n*Math.cos(e/r*S)+n+t,ar=(e,t,n,r)=>n*Math.sin(e/r*S)+t,or=(e,t,n,r)=>-n/2*(Math.cos(Math.PI*e/r)-1)+t,sr=(e,t,n,r)=>e===0?t:n*2**(10*(e/r-1))+t,cr=(e,t,n,r)=>e===r?t+n:n*-(2**(-10*e/r)+1)+t,lr=(e,t,n,r)=>e===0?t:e===r?t+n:(e/=r/2)<1?n/2*2**(10*(e-1))+t:n/2*-(2**(-10*(e-1))+2)+t,ur=(e,t,n,r)=>-n*(Math.sqrt(1-(e/=r)*e)-1)+t,dr=(e,t,n,r)=>n*Math.sqrt(1-(e=e/r-1)*e)+t,fr=(e,t,n,r)=>(e/=r/2)<1?-n/2*(Math.sqrt(1-e**2)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t,pr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if((e/=r)===1)return t+n;a||(a=.3*r);let{a:o,s,p:c}=Kn(i,n,a,1.70158);return-qn(o,s,c,e,r)+t},mr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if((e/=r)===1)return t+n;a||(a=.3*r);let{a:o,s,p:c,c:l}=Kn(i,n,a,1.70158);return o*2**(-10*e)*Math.sin((e*r-s)*w/c)+l+t},hr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if((e/=r/2)==2)return t+n;a||(a=.3*1.5*r);let{a:o,s,p:c,c:l}=Kn(i,n,a,1.70158);return e<1?-.5*qn(o,s,c,e,r)+t:o*2**(-10*--e)*Math.sin((e*r-s)*w/c)*.5+l+t},gr=(e,t,n,r,i=1.70158)=>n*(e/=r)*e*((i+1)*e-i)+t,_r=(e,t,n,r,i=1.70158)=>n*((e=e/r-1)*e*((i+1)*e+i)+1)+t,vr=(e,t,n,r,i=1.70158)=>(e/=r/2)<1?n/2*(e*e*((1+(i*=1.525))*e-i))+t:n/2*((e-=2)*e*((1+(i*=1.525))*e+i)+2)+t,yr=(e,t,n,r)=>(e/=r)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t,br=(e,t,n,r)=>n-yr(r-e,0,n,r)+t,xr=(e,t,n,r)=>e<r/2?.5*br(2*e,0,n,r)+t:.5*yr(2*e-r,0,n,r)+.5*n+t,Sr=(e,t,n,r)=>n*(e/=r)*e+t,Cr=(e,t,n,r)=>-n*(e/=r)*(e-2)+t,wr=(e,t,n,r)=>(e/=r/2)<1?n/2*e**2+t:-n/2*(--e*(e-2)-1)+t,Tr=()=>!1;var Er=class{constructor({startValue:e,byValue:t,duration:n=500,delay:r=0,easing:i=Jn,onStart:o=x,onChange:s=x,onComplete:c=x,abort:l=Tr,target:u}){a(this,`_state`,`pending`),a(this,`durationProgress`,0),a(this,`valueProgress`,0),this.tick=this.tick.bind(this),this.duration=n,this.delay=r,this.easing=i,this._onStart=o,this._onChange=s,this._onComplete=c,this._abort=l,this.target=u,this.startValue=e,this.byValue=t,this.value=this.startValue,this.endValue=Object.freeze(this.calculate(this.duration).value)}get state(){return this._state}isDone(){return this._state===`aborted`||this._state===`completed`}start(){let e=e=>{this._state===`pending`&&(this.startTime=e||+new Date,this._state=`running`,this._onStart(),this.tick(this.startTime))};this.register(),this.delay>0?this.timeout=_().setTimeout(()=>Oe(e),this.delay):Oe(e)}tick(e){let t=(e||+new Date)-this.startTime,n=Math.min(t,this.duration);this.durationProgress=n/this.duration;let{value:r,valueProgress:i}=this.calculate(n);this.value=Object.freeze(r),this.valueProgress=i,this._state!==`aborted`&&(this._abort(this.value,this.valueProgress,this.durationProgress)?(this._state=`aborted`,this.unregister()):t>=this.duration?(this.durationProgress=this.valueProgress=1,this._onChange(this.endValue,this.valueProgress,this.durationProgress),this._state=`completed`,this._onComplete(this.endValue,this.valueProgress,this.durationProgress),this.unregister(),this.timeout=null):(this._onChange(this.value,this.valueProgress,this.durationProgress),Oe(this.tick)))}register(){ye.push(this)}unregister(){ye.remove(this)}abort(){this._state=`aborted`,this.unregister(),this.timeout&&_().clearTimeout(this.timeout)}},Dr=class extends Er{constructor({startValue:e=0,endValue:t=100,...n}){super({...n,startValue:e,byValue:t-e})}calculate(e){let t=this.easing(e,this.startValue,this.byValue,this.duration);return{value:t,valueProgress:Math.abs((t-this.startValue)/this.byValue)}}},Or=class extends Er{constructor({startValue:e=[0],endValue:t=[100],...n}){super({...n,startValue:e,byValue:t.map((t,n)=>t-e[n])})}calculate(e){let t=this.startValue.map((t,n)=>this.easing(e,t,this.byValue[n],this.duration,n));return{value:t,valueProgress:Math.abs((t[0]-this.startValue[0])/this.byValue[0])}}};let kr=(e,t,n,r)=>t+n*(1-Math.cos(e/r*S)),Ar=e=>e&&((t,n,r)=>e(new G(t).toRgba(),n,r));var jr=class extends Er{constructor({startValue:e,endValue:t,easing:n=kr,onChange:r,onComplete:i,abort:a,...o}){let s=new G(e).getSource(),c=new G(t).getSource();super({...o,startValue:s,byValue:c.map((e,t)=>e-s[t]),easing:n,onChange:Ar(r),onComplete:Ar(i),abort:Ar(a)})}calculate(e){let[t,n,r,i]=this.startValue.map((t,n)=>this.easing(e,t,this.byValue[n],this.duration,n)),a=[...[t,n,r].map(Math.round),Vn(0,i,1)];return{value:a,valueProgress:a.map((e,t)=>this.byValue[t]===0?0:Math.abs((e-this.startValue[t])/this.byValue[t])).find(e=>e!==0)||0}}};function Mr(e){let t=(e=>Array.isArray(e.startValue)||Array.isArray(e.endValue))(e)?new Or(e):new Dr(e);return t.start(),t}function Nr(e){let t=new jr(e);return t.start(),t}var Pr=class e{constructor(e){this.status=e,this.points=[]}includes(e){return this.points.some(t=>t.eq(e))}append(...e){return this.points=this.points.concat(e.filter(e=>!this.includes(e))),this}static isPointContained(e,t,n,r=!1){if(t.eq(n))return e.eq(t);if(t.x===n.x)return e.x===t.x&&(r||e.y>=Math.min(t.y,n.y)&&e.y<=Math.max(t.y,n.y));if(t.y===n.y)return e.y===t.y&&(r||e.x>=Math.min(t.x,n.x)&&e.x<=Math.max(t.x,n.x));{let i=zt(t,n),a=zt(t,e).divide(i);return r?Math.abs(a.x)===Math.abs(a.y):a.x===a.y&&a.x>=0&&a.x<=1}}static isPointInPolygon(e,t){let n=new N(e).setX(Math.min(e.x-1,...t.map(e=>e.x))),r=0;for(let i=0;i<t.length;i++){let a=this.intersectSegmentSegment(t[i],t[(i+1)%t.length],e,n);if(a.includes(e))return!0;r+=Number(a.status===`Intersection`)}return r%2==1}static intersectLineLine(t,n,r,i,a=!0,o=!0){let s=n.x-t.x,c=n.y-t.y,l=i.x-r.x,u=i.y-r.y,d=t.x-r.x,f=t.y-r.y,p=l*f-u*d,m=s*f-c*d,h=u*s-l*c;if(h!==0){let n=p/h,r=m/h;return(a||0<=n&&n<=1)&&(o||0<=r&&r<=1)?new e(`Intersection`).append(new N(t.x+n*s,t.y+n*c)):new e}return new e(p===0||m===0?a||o||e.isPointContained(t,r,i)||e.isPointContained(n,r,i)||e.isPointContained(r,t,n)||e.isPointContained(i,t,n)?`Coincident`:void 0:`Parallel`)}static intersectSegmentLine(t,n,r,i){return e.intersectLineLine(t,n,r,i,!1,!0)}static intersectSegmentSegment(t,n,r,i){return e.intersectLineLine(t,n,r,i,!1,!1)}static intersectLinePolygon(t,n,r,i=!0){let a=new e,o=r.length;for(let s,c,l,u=0;u<o;u++){if(s=r[u],c=r[(u+1)%o],l=e.intersectLineLine(t,n,s,c,i,!1),l.status===`Coincident`)return l;a.append(...l.points)}return a.points.length>0&&(a.status=`Intersection`),a}static intersectSegmentPolygon(t,n,r){return e.intersectLinePolygon(t,n,r,!1)}static intersectPolygonPolygon(t,n){let r=new e,i=t.length,a=[];for(let o=0;o<i;o++){let s=t[o],c=t[(o+1)%i],l=e.intersectSegmentPolygon(s,c,n);l.status===`Coincident`?(a.push(l),r.append(s,c)):r.append(...l.points)}return a.length>0&&a.length===t.length?new e(`Coincident`):(r.points.length>0&&(r.status=`Intersection`),r)}static intersectPolygonRectangle(t,n,r){let i=n.min(r),a=n.max(r),o=new N(a.x,i.y),s=new N(i.x,a.y);return e.intersectPolygonPolygon(t,[i,o,a,s])}},Fr=class extends De{getX(){return this.getXY().x}setX(e){this.setXY(this.getXY().setX(e))}getY(){return this.getXY().y}setY(e){this.setXY(this.getXY().setY(e))}getRelativeX(){return this.left}setRelativeX(e){this.left=e}getRelativeY(){return this.top}setRelativeY(e){this.top=e}getXY(){let e=this.getRelativeXY();return this.group?L(e,this.group.calcTransformMatrix()):e}setXY(e,t,n){this.group&&(e=L(e,R(this.group.calcTransformMatrix()))),this.setRelativeXY(e,t,n)}getRelativeXY(){return new N(this.left,this.top)}setRelativeXY(e,t=this.originX,n=this.originY){this.setPositionByOrigin(e,t,n)}isStrokeAccountedForInDimensions(){return!1}getCoords(){let{tl:e,tr:t,br:n,bl:r}=this.aCoords||(this.aCoords=this.calcACoords()),i=[e,t,n,r];if(this.group){let e=this.group.calcTransformMatrix();return i.map(t=>L(t,e))}return i}intersectsWithRect(e,t){return Pr.intersectPolygonRectangle(this.getCoords(),e,t).status===`Intersection`}intersectsWithObject(e){let t=Pr.intersectPolygonPolygon(this.getCoords(),e.getCoords());return t.status===`Intersection`||t.status===`Coincident`||e.isContainedWithinObject(this)||this.isContainedWithinObject(e)}isContainedWithinObject(e){return this.getCoords().every(t=>e.containsPoint(t))}isContainedWithinRect(e,t){let{left:n,top:r,width:i,height:a}=this.getBoundingRect();return n>=e.x&&n+i<=t.x&&r>=e.y&&r+a<=t.y}isOverlapping(e){return this.intersectsWithObject(e)||this.isContainedWithinObject(e)||e.isContainedWithinObject(this)}containsPoint(e){return Pr.isPointInPolygon(e,this.getCoords())}isOnScreen(){if(!this.canvas)return!1;let{tl:e,br:t}=this.canvas.vptCoords;return!!this.getCoords().some(n=>n.x<=t.x&&n.x>=e.x&&n.y<=t.y&&n.y>=e.y)||!!this.intersectsWithRect(e,t)||this.containsPoint(e.midPointFrom(t))}isPartiallyOnScreen(){if(!this.canvas)return!1;let{tl:e,br:t}=this.canvas.vptCoords;return!!this.intersectsWithRect(e,t)||this.getCoords().every(n=>(n.x>=t.x||n.x<=e.x)&&(n.y>=t.y||n.y<=e.y))&&this.containsPoint(e.midPointFrom(t))}getBoundingRect(){return wt(this.getCoords())}getScaledWidth(){return this._getTransformedDimensions().x}getScaledHeight(){return this._getTransformedDimensions().y}scale(e){this._set(de,e),this._set(fe,e),this.setCoords()}scaleToWidth(e){let t=this.getBoundingRect().width/this.getScaledWidth();return this.scale(e/this.width/t)}scaleToHeight(e){let t=this.getBoundingRect().height/this.getScaledHeight();return this.scale(e/this.height/t)}getCanvasRetinaScaling(){var e;return((e=this.canvas)==null?void 0:e.getRetinaScaling())||1}getTotalAngle(){return this.group?Ie(ze(this.calcTransformMatrix())):this.angle}getViewportTransform(){var e;return((e=this.canvas)==null?void 0:e.viewportTransform)||T.concat()}calcACoords(){let e=We({angle:this.angle}),{x:t,y:n}=this.getRelativeCenterPoint(),r=z(Ue(t,n),e),i=this._getTransformedDimensions(),a=i.x/2,o=i.y/2;return{tl:L({x:-a,y:-o},r),tr:L({x:a,y:-o},r),bl:L({x:-a,y:o},r),br:L({x:a,y:o},r)}}setCoords(){this.aCoords=this.calcACoords()}transformMatrixKey(e=!1){let t=[];return!e&&this.group&&(t=this.group.transformMatrixKey(e)),t.push(this.top,this.left,this.width,this.height,this.scaleX,this.scaleY,this.angle,this.strokeWidth,this.skewX,this.skewY,+this.flipX,+this.flipY,W(this.originX),W(this.originY)),t}calcTransformMatrix(e=!1){let t=this.calcOwnMatrix();if(e||!this.group)return t;let n=this.transformMatrixKey(e),r=this.matrixCache;return r&&r.key.every((e,t)=>e===n[t])?r.value:(this.group&&(t=z(this.group.calcTransformMatrix(!1),t)),this.matrixCache={key:n,value:t},t)}calcOwnMatrix(){let e=this.transformMatrixKey(!0),t=this.ownMatrixCache;if(t&&t.key.every((t,n)=>t===e[n]))return t.value;let n=this.getRelativeCenterPoint(),r=Xe({angle:this.angle,translateX:n.x,translateY:n.y,scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,flipX:this.flipX,flipY:this.flipY});return this.ownMatrixCache={key:e,value:r},r}_getNonTransformedDimensions(){return new N(this.width,this.height).scalarAdd(this.strokeWidth)}_calculateCurrentDimensions(e){var t;let n=(t=this.canvas)==null?void 0:t.viewportTransform,r=this._getTransformedDimensions(e);return n?r.multiply(new N(Be(n),Ve(n))).scalarAdd(2*this.padding):r.scalarAdd(2*this.padding)}_getTransformedDimensions(e={}){let t={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,width:this.width,height:this.height,strokeWidth:this.strokeWidth,...e},n=t.strokeWidth,r=n,i=0;this.strokeUniform&&(r=0,i=n);let a=t.width+r,o=t.height+r,s;return s=t.skewX===0&&t.skewY===0?new N(a*t.scaleX,o*t.scaleY):At(a,o,Ye(t)),s.scalarAdd(i)}translateToGivenOrigin(e,t,n,r,i){let a=e.x,o=e.y,s=W(r)-W(t),c=W(i)-W(n);if(s||c){let e=this._getTransformedDimensions();a+=s*e.x,o+=c*e.y}return new N(a,o)}translateToCenterPoint(e,t,n){if(t===`center`&&n===`center`)return e;let r=this.translateToGivenOrigin(e,t,n,E,E);return this.angle?r.rotate(I(this.angle),e):r}translateToOriginPoint(e,t,n){let r=this.translateToGivenOrigin(e,E,E,t,n);return this.angle?r.rotate(I(this.angle),e):r}getCenterPoint(){let e=this.getRelativeCenterPoint();return this.group?L(e,this.group.calcTransformMatrix()):e}getRelativeCenterPoint(){return this.translateToCenterPoint(new N(this.left,this.top),this.originX,this.originY)}getPointByOrigin(e,t){return this.getPositionByOrigin(e,t)}getPositionByOrigin(e,t){return this.translateToOriginPoint(this.getRelativeCenterPoint(),e,t)}setPositionByOrigin(e,t,n){let r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set({left:i.x,top:i.y})}_getLeftTopCoords(){return this.getPositionByOrigin(D,`top`)}positionByLeftTop(e){return this.setPositionByOrigin(e,D,`top`)}},Ir=class e extends Fr{static getDefaults(){return e.ownDefaults}get type(){let e=this.constructor.type;return e===`FabricObject`?`object`:e.toLowerCase()}set type(e){c(`warn`,`Setting type has no effect`,e)}constructor(t){super(),a(this,`_cacheContext`,null),Object.assign(this,e.ownDefaults),this.setOptions(t)}_createCacheCanvas(){this._cacheCanvas=P(),this._cacheContext=this._cacheCanvas.getContext(`2d`),this._updateCacheCanvas(),this.dirty=!0}_limitCacheSize(e){let t=e.width,n=e.height,r=s.maxCacheSideLimit,i=s.minCacheSideLimit;if(t<=r&&n<=r&&t*n<=s.perfLimitSizeTotal)return t<i&&(e.width=i),n<i&&(e.height=i),e;let a=t/n,[o,c]=y.limitDimsByArea(a),l=Vn(i,o,r),u=Vn(i,c,r);return t>l&&(e.zoomX/=t/l,e.width=l,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e}_getCacheCanvasDimensions(){let e=this.getTotalObjectScaling(),t=this._getTransformedDimensions({skewX:0,skewY:0}),n=t.x*e.x/this.scaleX,r=t.y*e.y/this.scaleY;return{width:Math.ceil(n+2),height:Math.ceil(r+2),zoomX:e.x,zoomY:e.y,x:n,y:r}}_updateCacheCanvas(){let e=this._cacheCanvas,t=this._cacheContext,{width:n,height:r,zoomX:i,zoomY:a,x:o,y:s}=this._limitCacheSize(this._getCacheCanvasDimensions()),c=n!==e.width||r!==e.height,l=this.zoomX!==i||this.zoomY!==a;if(!e||!t)return!1;if(c||l){n!==e.width||r!==e.height?(e.width=n,e.height=r):(t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.width,e.height));let c=o/2,l=s/2;return this.cacheTranslationX=Math.round(e.width/2-c)+c,this.cacheTranslationY=Math.round(e.height/2-l)+l,t.translate(this.cacheTranslationX,this.cacheTranslationY),t.scale(i,a),this.zoomX=i,this.zoomY=a,!0}return!1}setOptions(e={}){this._setOptions(e)}transform(e){let t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,n=this.calcTransformMatrix(!t);e.transform(n[0],n[1],n[2],n[3],n[4],n[5])}getObjectScaling(){if(!this.group)return new N(Math.abs(this.scaleX),Math.abs(this.scaleY));let e=He(this.calcTransformMatrix());return new N(Math.abs(e.scaleX),Math.abs(e.scaleY))}getTotalObjectScaling(){let e=this.getObjectScaling();if(this.canvas){let t=this.canvas.getZoom(),n=this.getCanvasRetinaScaling();return e.scalarMultiply(t*n)}return e}getObjectOpacity(){let e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e}_constrainScale(e){return Math.abs(e)<this.minScaleLimit?e<0?-this.minScaleLimit:this.minScaleLimit:e===0?1e-4:e}_set(e,t){e!==`scaleX`&&e!==`scaleY`||(t=this._constrainScale(t)),e===`scaleX`&&t<0?(this.flipX=!this.flipX,t*=-1):e===`scaleY`&&t<0?(this.flipY=!this.flipY,t*=-1):e!==`shadow`||!t||t instanceof Bn||(t=new Bn(t));let n=this[e]!==t;return this[e]=t,n&&this.constructor.cacheProperties.includes(e)&&(this.dirty=!0),this.parent&&(this.dirty||n&&this.constructor.stateProperties.includes(e))&&this.parent._set(`dirty`,!0),this}isNotVisible(){return this.opacity===0||!this.width&&!this.height&&this.strokeWidth===0||!this.visible}render(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.drawObject(e,!1,{}),this.dirty=!1),e.restore())}drawSelectionBackground(e){}renderCache(e){if(e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&this._cacheContext){let{zoomX:t,zoomY:n,cacheTranslationX:r,cacheTranslationY:i}=this,{width:a,height:o}=this._cacheCanvas;this.drawObject(this._cacheContext,e.forClipping,{zoomX:t,zoomY:n,cacheTranslationX:r,cacheTranslationY:i,width:a,height:o,parentClipPaths:[]}),this.dirty=!1}}_removeCacheCanvas(){this._cacheCanvas=void 0,this._cacheContext=null}hasStroke(){return!!this.stroke&&this.stroke!==`transparent`&&this.strokeWidth!==0}hasFill(){return!!this.fill&&this.fill!==`transparent`}needsItsOwnCache(){return!!(this.paintFirst===`stroke`&&this.hasFill()&&this.hasStroke()&&this.shadow)||!!this.clipPath}shouldCache(){return this.ownCaching=this.objectCaching&&(!this.parent||!this.parent.isOnACache())||this.needsItsOwnCache(),this.ownCaching}willDrawShadow(){return!!this.shadow&&(this.shadow.offsetX!==0||this.shadow.offsetY!==0)}drawClipPathOnCache(e,t,n){e.save(),t.inverted?e.globalCompositeOperation=`destination-out`:e.globalCompositeOperation=`destination-in`,e.setTransform(1,0,0,1,0,0),e.drawImage(n,0,0),e.restore()}drawObject(e,t,n){let r=this.fill,i=this.stroke;t?(this.fill=`black`,this.stroke=``,this._setClippingProperties(e)):this._renderBackground(e),this.fire(`before:render`,{ctx:e}),this._render(e),this._drawClipPath(e,this.clipPath,n),this.fill=r,this.stroke=i}createClipPathLayer(e,t){let n=F(t),r=n.getContext(`2d`);if(r.translate(t.cacheTranslationX,t.cacheTranslationY),r.scale(t.zoomX,t.zoomY),e._cacheCanvas=n,t.parentClipPaths.forEach(e=>{e.transform(r)}),t.parentClipPaths.push(e),e.absolutePositioned){let e=R(this.calcTransformMatrix());r.transform(e[0],e[1],e[2],e[3],e[4],e[5])}return e.transform(r),e.drawObject(r,!0,t),n}_drawClipPath(e,t,n){if(!t)return;t._transformDone=!0;let r=this.createClipPathLayer(t,n);this.drawClipPathOnCache(e,t,r)}drawCacheOnCanvas(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)}isCacheDirty(e=!1){if(this.isNotVisible())return!1;let t=this._cacheCanvas,n=this._cacheContext;return!(!t||!n||e||!this._updateCacheCanvas())||!!(this.dirty||this.clipPath&&this.clipPath.absolutePositioned)&&(t&&n&&!e&&(n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.width,t.height),n.restore()),!0)}_renderBackground(e){if(!this.backgroundColor)return;let t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}_setOpacity(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity}_setStrokeStyles(e,t){let n=t.stroke;n&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,V(n)?n.gradientUnits===`percentage`||n.gradientTransform||n.patternTransform?this._applyPatternForTransformedGradient(e,n):(e.strokeStyle=n.toLive(e),this._applyPatternGradientTransform(e,n)):e.strokeStyle=t.stroke)}_setFillStyles(e,{fill:t}){t&&(V(t)?(e.fillStyle=t.toLive(e),this._applyPatternGradientTransform(e,t)):e.fillStyle=t)}_setClippingProperties(e){e.globalAlpha=1,e.strokeStyle=`transparent`,e.fillStyle=`#000000`}_setLineDash(e,t){t&&t.length!==0&&e.setLineDash(t)}_setShadow(e){if(!this.shadow)return;let t=this.shadow,n=this.canvas,r=this.getCanvasRetinaScaling(),[i,,,a]=(n==null?void 0:n.viewportTransform)||T,o=i*r,c=a*r,l=t.nonScaling?new N(1,1):this.getObjectScaling();e.shadowColor=t.color,e.shadowBlur=t.blur*s.browserShadowBlurConstant*(o+c)*(l.x+l.y)/4,e.shadowOffsetX=t.offsetX*o*l.x,e.shadowOffsetY=t.offsetY*c*l.y}_removeShadow(e){this.shadow&&(e.shadowColor=``,e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)}_applyPatternGradientTransform(e,t){if(!V(t))return{offsetX:0,offsetY:0};let n=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,i=-this.height/2+t.offsetY||0;return t.gradientUnits===`percentage`?e.transform(this.width,0,0,this.height,r,i):e.transform(1,0,0,1,r,i),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),{offsetX:r,offsetY:i}}_renderPaintInOrder(e){this.paintFirst===`stroke`?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))}_render(e){}_renderFill(e){this.fill&&(e.save(),this._setFillStyles(e,this),this.fillRule===`evenodd`?e.fill(`evenodd`):e.fill(),e.restore())}_renderStroke(e){if(this.stroke&&this.strokeWidth!==0){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform){let t=this.getObjectScaling();e.scale(1/t.x,1/t.y)}this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}}_applyPatternForTransformedGradient(e,t){var n;let r=this._limitCacheSize(this._getCacheCanvasDimensions()),i=this.getCanvasRetinaScaling(),a=r.x/this.scaleX/i,o=r.y/this.scaleY/i,s=F({width:Math.ceil(a),height:Math.ceil(o)}),c=s.getContext(`2d`);c&&(c.beginPath(),c.moveTo(0,0),c.lineTo(a,0),c.lineTo(a,o),c.lineTo(0,o),c.closePath(),c.translate(a/2,o/2),c.scale(r.zoomX/this.scaleX/i,r.zoomY/this.scaleY/i),this._applyPatternGradientTransform(c,t),c.fillStyle=t.toLive(e),c.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(i*this.scaleX/r.zoomX,i*this.scaleY/r.zoomY),e.strokeStyle=(n=c.createPattern(s,`no-repeat`))==null?``:n)}_findCenterFromElement(){return new N(this.left+this.width/2,this.top+this.height/2)}clone(e){let t=this.toObject(e);return this.constructor.fromObject(t)}cloneAsImage(e){let t=this.toCanvasElement(e);return new(M.getClass(`image`))(t)}toCanvasElement(e={}){let t=kt(this),n=this.group,r=this.shadow,i=Math.abs,a=e.enableRetinaScaling?v():1,o=(e.multiplier||1)*a,s=e.canvasProvider||(e=>new yt(e,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1}));delete this.group,e.withoutTransform&&Ot(this),e.withoutShadow&&(this.shadow=null),e.viewportTransform&&Pt(this,this.getViewportTransform()),this.setCoords();let c=P(),l=this.getBoundingRect(),u=this.shadow,d=new N;if(u){let e=u.blur,t=u.nonScaling?new N(1,1):this.getObjectScaling();d.x=2*Math.round(i(u.offsetX)+e)*i(t.x),d.y=2*Math.round(i(u.offsetY)+e)*i(t.y)}let f=l.width+d.x,p=l.height+d.y;c.width=Math.ceil(f),c.height=Math.ceil(p);let m=s(c);e.format===`jpeg`&&(m.backgroundColor=`#fff`),this.setPositionByOrigin(new N(m.width/2,m.height/2),E,E);let h=this.canvas;m._objects=[this],this.set(`canvas`,m),this.setCoords();let g=m.toCanvasElement(o||1,e);return this.set(`canvas`,h),this.shadow=r,n&&(this.group=n),this.set(t),this.setCoords(),m._objects=[],m.destroy(),g}toDataURL(e={}){return Pe(this.toCanvasElement(e),e.format||`png`,e.quality||1)}toBlob(e={}){return Fe(this.toCanvasElement(e),e.format||`png`,e.quality||1)}isType(...e){return e.includes(this.constructor.type)||e.includes(this.type)}complexity(){return 1}toJSON(){return this.toObject()}rotate(e){let{centeredRotation:t,originX:n,originY:r}=this;if(t){let{x:e,y:t}=this.getRelativeCenterPoint();this.originX=E,this.originY=E,this.left=e,this.top=t}if(this.set(`angle`,e),t){let{x:e,y:t}=this.getPositionByOrigin(n,r);this.left=e,this.top=t,this.originX=n,this.originY=r}}setOnGroup(){}_setupCompositeOperation(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)}dispose(){ye.cancelByTarget(this),this.off(),this._set(`canvas`,void 0),this._cacheCanvas&&h().dispose(this._cacheCanvas),this._cacheCanvas=void 0,this._cacheContext=null}animate(e,t){return Object.entries(e).reduce((e,[n,r])=>(e[n]=this._animate(n,r,t),e),{})}_animate(e,t,n={}){let r=e.split(`.`),i=this.constructor.colorProperties.includes(r[r.length-1]),{abort:a,startValue:o,onChange:s,onComplete:c}=n,l={...n,target:this,startValue:o==null?r.reduce((e,t)=>e[t],this):o,endValue:t,abort:a==null?void 0:a.bind(this),onChange:(e,t,n)=>{r.reduce((t,n,i)=>(i===r.length-1&&(t[n]=e),t[n]),this),s&&s(e,t,n)},onComplete:(e,t,n)=>{this.setCoords(),c&&c(e,t,n)}};return i?Nr(l):Mr(l)}isDescendantOf(e){let{parent:t,group:n}=this;return t===e||n===e||!!t&&t.isDescendantOf(e)||!!n&&n!==t&&n.isDescendantOf(e)}getAncestors(){let e=[],t=this;do t=t.parent,t&&e.push(t);while(t);return e}findCommonAncestors(e){if(this===e)return{fork:[],otherFork:[],common:[this,...this.getAncestors()]};let t=this.getAncestors(),n=e.getAncestors();if(t.length===0&&n.length>0&&this===n[n.length-1])return{fork:[],otherFork:[e,...n.slice(0,n.length-1)],common:[this]};for(let r,i=0;i<t.length;i++){if(r=t[i],r===e)return{fork:[this,...t.slice(0,i)],otherFork:[],common:t.slice(i)};for(let a=0;a<n.length;a++){if(this===n[a])return{fork:[],otherFork:[e,...n.slice(0,a)],common:[this,...t]};if(r===n[a])return{fork:[this,...t.slice(0,i)],otherFork:[e,...n.slice(0,a)],common:t.slice(i)}}}return{fork:[this,...t],otherFork:[e,...n],common:[]}}hasCommonAncestors(e){let t=this.findCommonAncestors(e);return t&&!!t.common.length}isInFrontOf(e){if(this===e)return;let t=this.findCommonAncestors(e);if(t.fork.includes(e))return!0;if(t.otherFork.includes(this))return!1;let n=t.common[0]||this.canvas;if(!n)return;let r=t.fork.pop(),i=t.otherFork.pop(),a=n._objects.indexOf(r),o=n._objects.indexOf(i);return a>-1&&a>o}toObject(t=[]){let n=t.concat(e.customProperties,this.constructor.customProperties||[]),r,i=s.NUM_FRACTION_DIGITS,{clipPath:a,fill:o,stroke:c,shadow:l,strokeDashArray:u,left:d,top:f,originX:p,originY:m,width:h,height:g,strokeWidth:_,strokeLineCap:v,strokeDashOffset:y,strokeLineJoin:x,strokeUniform:S,strokeMiterLimit:C,scaleX:w,scaleY:ee,angle:T,flipX:E,flipY:D,opacity:O,visible:k,backgroundColor:te,fillRule:ne,paintFirst:re,globalCompositeOperation:ie,skewX:ae,skewY:oe}=this;a&&!a.excludeFromExport&&(r=a.toObject(n.concat(`inverted`,`absolutePositioned`)));let A=e=>B(e,i),se={...et(this,n),type:this.constructor.type,version:b,originX:p,originY:m,left:A(d),top:A(f),width:A(h),height:A(g),fill:rt(o)?o.toObject():o,stroke:rt(c)?c.toObject():c,strokeWidth:A(_),strokeDashArray:u&&u.concat(),strokeLineCap:v,strokeDashOffset:y,strokeLineJoin:x,strokeUniform:S,strokeMiterLimit:A(C),scaleX:A(w),scaleY:A(ee),angle:A(T),flipX:E,flipY:D,opacity:A(O),shadow:l&&l.toObject(),visible:k,backgroundColor:te,fillRule:ne,paintFirst:re,globalCompositeOperation:ie,skewX:A(ae),skewY:A(oe),...r?{clipPath:r}:null};return this.includeDefaultValues?se:this._removeDefaultValues(se)}toDatalessObject(e){return this.toObject(e)}_removeDefaultValues(e){let t=this.constructor.getDefaults(),n=Object.keys(t).length>0?t:Object.getPrototypeOf(this);return tt(e,(e,t)=>{if(t===`left`||t===`top`||t===`type`)return!0;let r=n[t];return e!==r&&!(Array.isArray(e)&&Array.isArray(r)&&e.length===0&&r.length===0)})}toString(){return`#<${this.constructor.type}>`}static _fromObject({type:e,...t},{extraParam:n,...r}={}){return $e(t,r).then(e=>n?(delete e[n],new this(t[n],e)):new this(e))}static fromObject(e,t){return this._fromObject(e,t)}};a(Ir,`stateProperties`,Hn),a(Ir,`cacheProperties`,Un),a(Ir,`ownDefaults`,Wn),a(Ir,`type`,`FabricObject`),a(Ir,`colorProperties`,[j,he,`backgroundColor`]),a(Ir,`customProperties`,[]),M.setClass(Ir),M.setClass(Ir,`object`);let Lr=(e,t)=>{var n;let{transform:{target:r}}=t;(n=r.canvas)==null||n.fire(`object:${e}`,{...t,target:r}),r.fire(e,t)},Rr=(e,t,n)=>(r,i,a,o)=>{let s=t(r,i,a,o);return s&&Lr(e,{...Qt(r,i,a,o),...n}),s};function zr(e){return(t,n,r,i)=>{let{target:a,originX:o,originY:s}=n,c=a.getPositionByOrigin(o,s),l=e(t,n,r,i);return a.setPositionByOrigin(c,n.originX,n.originY),l}}let Br=(e,t,n,r)=>(i,a,o,s)=>{let c=en(a,a.originX,a.originY,o,s)[n],l=W(a[t]);if(l===0||l>0&&c<0||l<0&&c>0){let{target:t}=a,n=t.strokeWidth/(t.strokeUniform?t[r]:1),i=Yt(a)?2:1,o=t[e],s=Math.abs(c*i/t[r])-n;return t.set(e,Math.max(s,1)),o!==t[e]}return!1},Vr=Br(`width`,`originX`,`x`,`scaleX`),Hr=Br(`height`,`originY`,`y`,`scaleY`),Ur=Rr(se,zr(Vr)),Wr=Rr(se,zr(Hr));function Gr(e,t,n,r,i){e.save();let{stroke:a,xSize:o,ySize:s,opName:c}=this.commonRenderProps(e,t,n,i,r),l=o;o>s?e.scale(1,s/o):s>o&&(l=s,e.scale(o/s,1)),e.beginPath(),e.arc(0,0,l/2,0,w,!1),e[c](),a&&e.stroke(),e.restore()}function Kr(e,t,n,r,i){e.save();let{stroke:a,xSize:o,ySize:s,opName:c}=this.commonRenderProps(e,t,n,i,r),l=o/2,u=s/2;e[`${c}Rect`](-l,-u,o,s),a&&e.strokeRect(-l,-u,o,s),e.restore()}var q=class{constructor(e){a(this,`visible`,!0),a(this,`actionName`,ue),a(this,`angle`,0),a(this,`x`,0),a(this,`y`,0),a(this,`offsetX`,0),a(this,`offsetY`,0),a(this,`sizeX`,0),a(this,`sizeY`,0),a(this,`touchSizeX`,0),a(this,`touchSizeY`,0),a(this,`cursorStyle`,`crosshair`),a(this,`withConnection`,!1),Object.assign(this,e)}getTransformAnchorPoint(){var e;return(e=this.transformAnchorPoint)==null?new N(.5-this.x,.5-this.y):e}shouldActivate(e,t,n,{tl:r,tr:i,br:a,bl:o}){var s;return((s=t.canvas)==null?void 0:s.getActiveObject())===t&&t.isControlVisible(e)&&Pr.isPointInPolygon(n,[r,i,a,o])}getActionHandler(e,t,n){return this.actionHandler}getMouseDownHandler(e,t,n){return this.mouseDownHandler}getMouseUpHandler(e,t,n){return this.mouseUpHandler}cursorStyleHandler(e,t,n,r){return t.cursorStyle}getActionName(e,t,n){return t.actionName}getVisibility(e,t){var n,r;return(n=(r=e._controlsVisibility)==null?void 0:r[t])==null?this.visible:n}setVisibility(e,t,n){this.visible=e}positionHandler(e,t,n,r){return new N(this.x*e.x+this.offsetX,this.y*e.y+this.offsetY).transform(t)}calcCornerCoords(e,t,n,r,i,a){let o=Re([Ue(n,r),We({angle:e}),Ge((i?this.touchSizeX:this.sizeX)||t,(i?this.touchSizeY:this.sizeY)||t)]);return{tl:new N(-.5,-.5).transform(o),tr:new N(.5,-.5).transform(o),br:new N(.5,.5).transform(o),bl:new N(-.5,.5).transform(o)}}commonRenderProps(e,t,n,r,i={}){let{cornerSize:a,cornerColor:o,transparentCorners:s,cornerStrokeColor:c}=i,l=a||r.cornerSize,u=this.sizeX||l,d=this.sizeY||l,f=s===void 0?r.transparentCorners:s,p=f?he:j,m=c||r.cornerStrokeColor,h=!f&&!!m;return e.fillStyle=o||r.cornerColor||``,e.strokeStyle=m||``,e.translate(t,n),e.rotate(I(r.getTotalAngle())),{stroke:h,xSize:u,ySize:d,transparentCorners:f,opName:p}}render(e,t,n,r,i){((r=r||{}).cornerStyle||i.cornerStyle)===`circle`?Gr.call(this,e,t,n,r,i):Kr.call(this,e,t,n,r,i)}};let qr=(e,t,n)=>n.lockRotation?Jt:t.cursorStyle,Jr=Rr(ae,zr((e,{target:t,ex:n,ey:r,theta:i,originX:a,originY:o},s,c)=>{let l=t.getPositionByOrigin(a,o);if(Zt(t,`lockRotation`))return!1;let u=Math.atan2(r-l.y,n-l.x),d=Ie(Math.atan2(c-l.y,s-l.x)-u+i);if(t.snapAngle&&t.snapAngle>0){let e=t.snapAngle,n=t.snapThreshold||e,r=Math.ceil(d/e)*e,i=Math.floor(d/e)*e;Math.abs(d-i)<n?d=i:Math.abs(d-r)<n&&(d=r)}d<0&&(d=360+d),d%=360;let f=t.angle!==d;return t.angle=d,f}));function Yr(e,t){let n=t.canvas,r=e[n.uniScaleKey];return n.uniformScaling&&!r||!n.uniformScaling&&r}function Xr(e,t,n){let r=Zt(e,`lockScalingX`),i=Zt(e,`lockScalingY`);if(r&&i||!t&&(r||i)&&n||r&&t===`x`||i&&t===`y`)return!0;let{width:a,height:o,strokeWidth:s}=e;return a===0&&s===0&&t!==`y`||o===0&&s===0&&t!==`x`}let Zr=[`e`,`se`,`s`,`sw`,`w`,`nw`,`n`,`ne`,`e`],Qr=(e,t,n,r)=>{let i=Yr(e,n);return Xr(n,t.x!==0&&t.y===0?`x`:t.x===0&&t.y!==0?`y`:``,i)?Jt:`${Zr[$t(n,0,r)]}-resize`};function $r(e,t,n,r,i={}){let a=t.target,o=i.by,s=Yr(e,a),c,l,u,d,f,p;if(Xr(a,o,s))return!1;if(t.gestureScale)l=t.scaleX*t.gestureScale,u=t.scaleY*t.gestureScale;else{if(c=en(t,t.originX,t.originY,n,r),f=o===`y`?1:Math.sign(c.x||t.signX||1),p=o===`x`?1:Math.sign(c.y||t.signY||1),t.signX||(t.signX=f),t.signY||(t.signY=p),Zt(a,`lockScalingFlip`)&&(t.signX!==f||t.signY!==p))return!1;if(d=a._getTransformedDimensions(),s&&!o){let e=Math.abs(c.x)+Math.abs(c.y),{original:n}=t,r=e/(Math.abs(d.x*n.scaleX/a.scaleX)+Math.abs(d.y*n.scaleY/a.scaleY));l=n.scaleX*r,u=n.scaleY*r}else l=Math.abs(c.x*a.scaleX/d.x),u=Math.abs(c.y*a.scaleY/d.y);Yt(t)&&(l*=2,u*=2),t.signX!==f&&o!==`y`&&(t.originX=Xt(t.originX),l*=-1,t.signX=f),t.signY!==p&&o!==`x`&&(t.originY=Xt(t.originY),u*=-1,t.signY=p)}let m=a.scaleX,h=a.scaleY;return o?(o===`x`&&a.set(`scaleX`,l),o===`y`&&a.set(`scaleY`,u)):(!Zt(a,`lockScalingX`)&&a.set(`scaleX`,l),!Zt(a,`lockScalingY`)&&a.set(`scaleY`,u)),m!==a.scaleX||h!==a.scaleY}let ei=Rr(ie,zr((e,t,n,r)=>$r(e,t,n,r))),ti=Rr(ie,zr((e,t,n,r)=>$r(e,t,n,r,{by:`x`}))),ni=Rr(ie,zr((e,t,n,r)=>$r(e,t,n,r,{by:`y`}))),ri={x:{counterAxis:`y`,scale:de,skew:pe,lockSkewing:`lockSkewingX`,origin:`originX`,flip:`flipX`},y:{counterAxis:`x`,scale:fe,skew:me,lockSkewing:`lockSkewingY`,origin:`originY`,flip:`flipY`}},ii=[`ns`,`nesw`,`ew`,`nwse`],ai=(e,t,n,r)=>t.x!==0&&Zt(n,`lockSkewingY`)||t.y!==0&&Zt(n,`lockSkewingX`)?Jt:`${ii[$t(n,0,r)%4]}-resize`;function oi(e,t,n,r,i){let{target:a}=n,{counterAxis:o,origin:s,lockSkewing:c,skew:l,flip:u}=ri[e];if(Zt(a,c))return!1;let{origin:d,flip:f}=ri[o],p=W(n[d])*(a[f]?-1:1),m=-Math.sign(p)*(a[u]?-1:1),h=-(a[l]===0&&en(n,`center`,`center`,r,i)[e]>0||a[l]>0?1:-1)*m*.5+.5;return Rr(A,zr((t,n,r,i)=>function(e,{target:t,ex:n,ey:r,skewingSide:i,...a},o){let{skew:s}=ri[e],c=o.subtract(new N(n,r)).divide(new N(t.scaleX,t.scaleY))[e],l=t[s],u=a[s],d=Math.tan(I(u)),f=e===`y`?t._getTransformedDimensions({scaleX:1,scaleY:1,skewX:0}).x:t._getTransformedDimensions({scaleX:1,scaleY:1}).y,p=2*c*i/Math.max(f,1)+d,m=Ie(Math.atan(p));t.set(s,m);let h=l!==t[s];if(h&&e===`y`){let{skewX:e,scaleX:n}=t,r=t._getTransformedDimensions({skewY:l}),i=t._getTransformedDimensions(),a=e===0?1:r.x/i.x;a!==1&&t.set(`scaleX`,a*n)}return h}(e,n,new N(r,i))))(t,{...n,[s]:h,skewingSide:m},r,i)}let si=(e,t,n,r)=>oi(`x`,e,t,n,r),ci=(e,t,n,r)=>oi(`y`,e,t,n,r);function li(e,t){return e[t.canvas.altActionKey]}let ui=(e,t,n)=>{let r=li(e,n);return t.x===0?r?pe:fe:t.y===0?r?me:de:``},di=(e,t,n,r)=>li(e,n)?ai(0,t,n,r):Qr(e,t,n,r),fi=(e,t,n,r)=>li(e,t.target)?ci(e,t,n,r):ti(e,t,n,r),pi=(e,t,n,r)=>li(e,t.target)?si(e,t,n,r):ni(e,t,n,r),mi=()=>({ml:new q({x:-.5,y:0,cursorStyleHandler:di,actionHandler:fi,getActionName:ui}),mr:new q({x:.5,y:0,cursorStyleHandler:di,actionHandler:fi,getActionName:ui}),mb:new q({x:0,y:.5,cursorStyleHandler:di,actionHandler:pi,getActionName:ui}),mt:new q({x:0,y:-.5,cursorStyleHandler:di,actionHandler:pi,getActionName:ui}),tl:new q({x:-.5,y:-.5,cursorStyleHandler:Qr,actionHandler:ei}),tr:new q({x:.5,y:-.5,cursorStyleHandler:Qr,actionHandler:ei}),bl:new q({x:-.5,y:.5,cursorStyleHandler:Qr,actionHandler:ei}),br:new q({x:.5,y:.5,cursorStyleHandler:Qr,actionHandler:ei}),mtr:new q({x:0,y:-.5,actionHandler:Jr,cursorStyleHandler:qr,offsetY:-40,withConnection:!0,actionName:oe})}),hi=()=>({mr:new q({x:.5,y:0,actionHandler:Ur,cursorStyleHandler:di,actionName:se}),ml:new q({x:-.5,y:0,actionHandler:Ur,cursorStyleHandler:di,actionName:se})}),gi=()=>({...mi(),...hi()});var _i=class e extends Ir{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,this.constructor.createControls(),e.ownDefaults),this.setOptions(t)}static createControls(){return{controls:mi()}}_updateCacheCanvas(){let e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){let t=e._currentTransform,n=t.target,r=t.action;if(this===n&&r&&r.startsWith(`scale`))return!1}return super._updateCacheCanvas()}getActiveControl(){let e=this.__corner;return e?{key:e,control:this.controls[e],coord:this.oCoords[e]}:void 0}findControl(e,t=!1){if(!this.hasControls||!this.canvas)return;this.__corner=void 0;let n=Object.entries(this.oCoords);for(let r=n.length-1;r>=0;r--){let[i,a]=n[r],o=this.controls[i];if(o.shouldActivate(i,this,e,t?a.touchCorner:a.corner))return this.__corner=i,{key:i,control:o,coord:this.oCoords[i]}}}calcOCoords(){let e=this.getViewportTransform(),t=Be(e),n=Ve(e),r=this.getCenterPoint(),i=z(z(e,z(Ue(r.x,r.y),We({angle:this.getTotalAngle()-(this.group&&this.flipX?180:0)}))),[1/t,0,0,1/n,0,0]),a=this.group?He(this.calcTransformMatrix()):void 0;a&&(a.scaleX=Math.abs(a.scaleX),a.scaleY=Math.abs(a.scaleY));let o=this._calculateCurrentDimensions(a),s={};return this.forEachControl((e,t)=>{let n=e.positionHandler(o,i,this,e);s[t]=Object.assign(n,this._calcCornerCoords(e,n))}),s}_calcCornerCoords(e,t){let n=this.getTotalAngle();return{corner:e.calcCornerCoords(n,this.cornerSize,t.x,t.y,!1,this),touchCorner:e.calcCornerCoords(n,this.touchCornerSize,t.x,t.y,!0,this)}}setCoords(){super.setCoords(),this.canvas&&(this.oCoords=this.calcOCoords())}forEachControl(e){for(let t in this.controls)e(this.controls[t],t,this)}drawSelectionBackground(e){if(!this.selectionBackgroundColor||this.canvas&&this.canvas._activeObject!==this)return;e.save();let t=this.getRelativeCenterPoint(),n=this._calculateCurrentDimensions(),r=this.getViewportTransform();e.translate(t.x,t.y),e.scale(1/r[0],1/r[3]),e.rotate(I(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-n.x/2,-n.y/2,n.x,n.y),e.restore()}strokeBorders(e,t){e.strokeRect(-t.x/2,-t.y/2,t.x,t.y)}_drawBorders(e,t,n={}){let r={hasControls:this.hasControls,borderColor:this.borderColor,borderDashArray:this.borderDashArray,...n};e.save(),e.strokeStyle=r.borderColor,this._setLineDash(e,r.borderDashArray),this.strokeBorders(e,t),r.hasControls&&this.drawControlsConnectingLines(e,t),e.restore()}_renderControls(e,t={}){let{hasBorders:n,hasControls:r}=this,i={hasBorders:n,hasControls:r,...t},a=this.getViewportTransform(),o=i.hasBorders,s=i.hasControls,c=He(z(a,this.calcTransformMatrix()));e.save(),e.translate(c.translateX,c.translateY),e.lineWidth=this.borderScaleFactor,this.group===this.parent&&(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(c.angle-=180);let l=ze(a);e.rotate(this.group?I(c.angle):I(this.angle)+l),o&&this.drawBorders(e,c,t),s&&this.drawControls(e,t),e.restore()}drawBorders(e,t,n){let r;if(n&&n.forActiveSelection||this.group){let e=At(this.width,this.height,Ye(t)),n=this.isStrokeAccountedForInDimensions()?we:(this.strokeUniform?new N().scalarAdd(this.canvas?this.canvas.getZoom():1):new N(t.scaleX,t.scaleY)).scalarMultiply(this.strokeWidth);r=e.add(n).scalarAdd(this.borderScaleFactor).scalarAdd(2*this.padding)}else r=this._calculateCurrentDimensions().scalarAdd(this.borderScaleFactor);this._drawBorders(e,r,n)}drawControlsConnectingLines(e,t){let n=!1;e.beginPath(),this.forEachControl((r,i)=>{r.withConnection&&r.getVisibility(this,i)&&(n=!0,e.moveTo(r.x*t.x,r.y*t.y),e.lineTo(r.x*t.x+r.offsetX,r.y*t.y+r.offsetY))}),n&&e.stroke()}drawControls(e,t={}){e.save();let n=this.getCanvasRetinaScaling(),{cornerStrokeColor:r,cornerDashArray:i,cornerColor:a}=this,o={cornerStrokeColor:r,cornerDashArray:i,cornerColor:a,...t};e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=o.cornerColor,this.transparentCorners||(e.strokeStyle=o.cornerStrokeColor),this._setLineDash(e,o.cornerDashArray),this.forEachControl((t,n)=>{if(t.getVisibility(this,n)){let r=this.oCoords[n];t.render(e,r.x,r.y,o,this)}}),e.restore()}isControlVisible(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)}setControlVisible(e,t){this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t}setControlsVisibility(e={}){Object.entries(e).forEach(([e,t])=>this.setControlVisible(e,t))}clearContextTop(e){if(!this.canvas)return;let t=this.canvas.contextTop;if(!t)return;let n=this.canvas.viewportTransform;t.save(),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this.transform(t);let r=this.width+4,i=this.height+4;return t.clearRect(-r/2,-i/2,r,i),e||t.restore(),t}onDeselect(e){return!1}onSelect(e){return!1}shouldStartDragging(e){return!1}onDragStart(e){return!1}canDrop(e){return!1}renderDragSourceEffect(e){}renderDropTargetEffect(e){}};function vi(e,t){return t.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(n=>{n!==`constructor`&&Object.defineProperty(e.prototype,n,Object.getOwnPropertyDescriptor(t.prototype,n)||Object.create(null))})}),e}a(_i,`ownDefaults`,{noScaleCache:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,cornerSize:13,touchCornerSize:24,transparentCorners:!0,cornerColor:`rgb(178,204,255)`,cornerStrokeColor:``,cornerStyle:`rect`,cornerDashArray:null,hasControls:!0,borderColor:`rgb(178,204,255)`,borderDashArray:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,hasBorders:!0,selectionBackgroundColor:``,selectable:!0,evented:!0,perPixelTargetFind:!1,activeOn:`down`,hoverCursor:null,moveCursor:null});var J=class extends _i{};vi(J,[gn]),M.setClass(J),M.setClass(J,`object`);let yi=(e,t,n,r)=>{let i=2*(r=Math.round(r))+1,{data:a}=e.getImageData(t-r,n-r,i,i);for(let e=3;e<a.length;e+=4)if(a[e]>0)return!1;return!0};var bi=class{constructor(e){this.options=e,this.strokeProjectionMagnitude=this.options.strokeWidth/2,this.scale=new N(this.options.scaleX,this.options.scaleY),this.strokeUniformScalar=this.options.strokeUniform?new N(1/this.options.scaleX,1/this.options.scaleY):new N(1,1)}createSideVector(e,t){let n=zt(e,t);return this.options.strokeUniform?n.multiply(this.scale):n}projectOrthogonally(e,t,n){return this.applySkew(e.add(this.calcOrthogonalProjection(e,t,n)))}isSkewed(){return this.options.skewX!==0||this.options.skewY!==0}applySkew(e){let t=new N(e);return t.y+=t.x*Math.tan(I(this.options.skewY)),t.x+=t.y*Math.tan(I(this.options.skewX)),t}scaleUnitVector(e,t){return e.multiply(this.strokeUniformScalar).scalarMultiply(t)}};let xi=new N;var Si=class e extends bi{static getOrthogonalRotationFactor(e,t){let n=t?Vt(e,t):Ht(e);return Math.abs(n)<S?-1:1}constructor(e,t,n,r){super(r),a(this,`AB`,void 0),a(this,`AC`,void 0),a(this,`alpha`,void 0),a(this,`bisector`,void 0),this.A=new N(e),this.B=new N(t),this.C=new N(n),this.AB=this.createSideVector(this.A,this.B),this.AC=this.createSideVector(this.A,this.C),this.alpha=Vt(this.AB,this.AC),this.bisector=Ut(Rt(this.AB.eq(xi)?this.AC:this.AB,this.alpha/2))}calcOrthogonalProjection(t,n,r=this.strokeProjectionMagnitude){let i=Wt(this.createSideVector(t,n)),a=e.getOrthogonalRotationFactor(i,this.bisector);return this.scaleUnitVector(i,r*a)}projectBevel(){let e=[];return(this.alpha%w===0?[this.B]:[this.B,this.C]).forEach(t=>{e.push(this.projectOrthogonally(this.A,t)),e.push(this.projectOrthogonally(this.A,t,-this.strokeProjectionMagnitude))}),e}projectMiter(){let e=[],t=Math.abs(this.alpha),n=1/Math.sin(t/2),r=this.scaleUnitVector(this.bisector,-this.strokeProjectionMagnitude*n),i=this.options.strokeUniform?Bt(this.scaleUnitVector(this.bisector,this.options.strokeMiterLimit)):this.options.strokeMiterLimit;return Bt(r)/this.strokeProjectionMagnitude<=i&&e.push(this.applySkew(this.A.add(r))),e.push(...this.projectBevel()),e}projectRoundNoSkew(t,n){let r=[],i=new N(e.getOrthogonalRotationFactor(this.bisector),e.getOrthogonalRotationFactor(new N(this.bisector.y,this.bisector.x)));return[new N(1,0).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i),new N(0,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i)].forEach(e=>{qt(e,t,n)&&r.push(this.A.add(e))}),r}projectRoundWithSkew(e,t){let n=[],{skewX:r,skewY:i,scaleX:a,scaleY:o,strokeUniform:s}=this.options,c=new N(Math.tan(I(r)),Math.tan(I(i))),l=this.strokeProjectionMagnitude,u=s?l/o/Math.sqrt(1/o**2+1/a**2*c.y**2):l/Math.sqrt(1+c.y**2),d=new N(Math.sqrt(Math.max(l**2-u**2,0)),u),f=s?l/Math.sqrt(1+c.x**2*(1/o)**2/(1/a+1/a*c.x*c.y)**2):l/Math.sqrt(1+c.x**2/(1+c.x*c.y)**2),p=new N(f,Math.sqrt(Math.max(l**2-f**2,0)));return[p,p.scalarMultiply(-1),d,d.scalarMultiply(-1)].map(e=>this.applySkew(s?e.multiply(this.strokeUniformScalar):e)).forEach(r=>{qt(r,e,t)&&n.push(this.applySkew(this.A).add(r))}),n}projectRound(){let e=[];e.push(...this.projectBevel());let t=this.alpha%w===0,n=this.applySkew(this.A),r=e[t?0:2].subtract(n),i=e[+!!t].subtract(n),a=Gt(r,t?this.applySkew(this.AB.scalarMultiply(-1)):this.applySkew(this.bisector.multiply(this.strokeUniformScalar).scalarMultiply(-1)))>0,o=a?r:i,s=a?i:r;return this.isSkewed()?e.push(...this.projectRoundWithSkew(o,s)):e.push(...this.projectRoundNoSkew(o,s)),e}projectPoints(){switch(this.options.strokeLineJoin){case`miter`:return this.projectMiter();case`round`:return this.projectRound();default:return this.projectBevel()}}project(){return this.projectPoints().map(e=>({originPoint:this.A,projectedPoint:e,angle:this.alpha,bisector:this.bisector}))}},Ci=class extends bi{constructor(e,t,n){super(n),this.A=new N(e),this.T=new N(t)}calcOrthogonalProjection(e,t,n=this.strokeProjectionMagnitude){let r=this.createSideVector(e,t);return this.scaleUnitVector(Wt(r),n)}projectButt(){return[this.projectOrthogonally(this.A,this.T,this.strokeProjectionMagnitude),this.projectOrthogonally(this.A,this.T,-this.strokeProjectionMagnitude)]}projectRound(){let e=[];if(!this.isSkewed()&&this.A.eq(this.T)){let t=new N(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);e.push(this.applySkew(this.A.add(t)),this.applySkew(this.A.subtract(t)))}else e.push(...new Si(this.A,this.T,this.T,this.options).projectRound());return e}projectSquare(){let e=[];if(this.A.eq(this.T)){let t=new N(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);e.push(this.A.add(t),this.A.subtract(t))}else{let t=this.calcOrthogonalProjection(this.A,this.T,this.strokeProjectionMagnitude),n=this.scaleUnitVector(Ut(this.createSideVector(this.A,this.T)),-this.strokeProjectionMagnitude),r=this.A.add(n);e.push(r.add(t),r.subtract(t))}return e.map(e=>this.applySkew(e))}projectPoints(){switch(this.options.strokeLineCap){case`round`:return this.projectRound();case`square`:return this.projectSquare();default:return this.projectButt()}}project(){return this.projectPoints().map(e=>({originPoint:this.A,projectedPoint:e}))}};let wi=(e,t,n=!1)=>{let r=[];if(e.length===0)return r;let i=e.reduce((e,t)=>(e[e.length-1].eq(t)||e.push(new N(t)),e),[new N(e[0])]);if(i.length===1)n=!0;else if(!n){let e=i[0],t=((e,t)=>{for(let n=e.length-1;n>=0;n--)if(t(e[n],n,e))return n;return-1})(i,t=>!t.eq(e));i.splice(t+1)}return i.forEach((e,i,a)=>{let o,s;i===0?(s=a[1],o=n?e:a[a.length-1]):i===a.length-1?(o=a[i-1],s=n?e:a[0]):(o=a[i-1],s=a[i+1]),n&&a.length===1?r.push(...new Ci(e,e,t).project()):!n||i!==0&&i!==a.length-1?r.push(...new Si(e,o,s,t).project()):r.push(...new Ci(e,i===0?s:o,t).project())}),r},Ti=e=>{let t={};return Object.keys(e).forEach(n=>{t[n]={},Object.keys(e[n]).forEach(r=>{t[n][r]={...e[n][r]}})}),t},Ei=(e,t,n=!1)=>e.fill!==t.fill||e.stroke!==t.stroke||e.strokeWidth!==t.strokeWidth||e.fontSize!==t.fontSize||e.fontFamily!==t.fontFamily||e.fontWeight!==t.fontWeight||e.fontStyle!==t.fontStyle||e.textDecorationThickness!==t.textDecorationThickness||e.textDecorationColor!==t.textDecorationColor||e.textBackgroundColor!==t.textBackgroundColor||e.deltaY!==t.deltaY||n&&(e.overline!==t.overline||e.underline!==t.underline||e.linethrough!==t.linethrough),Di=(e,t)=>{let n=t.split(`
|
|
15
|
-
`),r=[],i=-1,a={};e=Ti(e);for(let t=0;t<n.length;t++){let o=gt(n[t]);if(e[t])for(let n=0;n<o.length;n++){i++;let o=e[t][n];o&&Object.keys(o).length>0&&(Ei(a,o,!0)?r.push({start:i,end:i+1,style:o}):r[r.length-1].end++),a=o||{}}else i+=o.length,a={}}return r},Oi=(e,t)=>{if(!Array.isArray(e))return Ti(e);let n=t.split(ne),r={},i=-1,a=0;for(let t=0;t<n.length;t++){let o=gt(n[t]);for(let n=0;n<o.length;n++)i++,e[a]&&e[a].start<=i&&i<e[a].end&&(r[t]=r[t]||{},r[t][n]={...e[a].style},i===e[a].end-1&&a++)}return r},ki=[`display`,`transform`,j,`fill-opacity`,`fill-rule`,`opacity`,he,`stroke-dasharray`,`stroke-linecap`,`stroke-dashoffset`,`stroke-linejoin`,`stroke-miterlimit`,`stroke-opacity`,`stroke-width`,`id`,`paint-order`,`vector-effect`,`instantiated_by_use`,`clip-path`];function Ai(e,t){let n=e.nodeName,r=e.getAttribute(`class`),i=e.getAttribute(`id`),a=`(?![a-zA-Z\\-]+)`,o;if(o=RegExp(`^`+n,`i`),t=t.replace(o,``),i&&t.length&&(o=RegExp(`#`+i+a,`i`),t=t.replace(o,``)),r&&t.length){let e=r.split(` `);for(let n=e.length;n--;)o=RegExp(`\\.`+e[n]+a,`i`),t=t.replace(o,``)}return t.length===0}function ji(e,t){let n=!0,r=Ai(e,t.pop());return r&&t.length&&(n=function(e,t){let n,r=!0;for(;e.parentElement&&e.parentElement.nodeType===1&&t.length;)r&&(n=t.pop()),r=Ai(e=e.parentElement,n);return t.length===0}(e,t)),r&&n&&t.length===0}function Mi(e,t={}){let n={};for(let r in t)ji(e,r.split(` `))&&(n={...n,...t[r]});return n}let Ni=e=>{var t;return(t=jn[e])==null?e:t},Pi=RegExp(`(${Dn})`,`gi`),Y=`(${Dn})`,Fi=String.raw`(skewX)\(${Y}\)`,Ii=String.raw`(skewY)\(${Y}\)`,Li=String.raw`(rotate)\(${Y}(?: ${Y} ${Y})?\)`,Ri=String.raw`(scale)\(${Y}(?: ${Y})?\)`,zi=String.raw`(translate)\(${Y}(?: ${Y})?\)`,Bi=`(?:${String.raw`(matrix)\(${Y} ${Y} ${Y} ${Y} ${Y} ${Y}\)`}|${zi}|${Li}|${Ri}|${Fi}|${Ii})`,Vi=`(?:${Bi}*)`,Hi=String.raw`^\s*(?:${Vi}?)\s*$`,Ui=new RegExp(Hi),Wi=new RegExp(Bi),Gi=new RegExp(Bi,`g`);function Ki(e){let t=[];if(!(e=(e=>on(e.replace(Pi,` $1 `).replace(/,/gi,` `)))(e).replace(/\s*([()])\s*/gi,`$1`))||e&&!Ui.test(e))return[...T];for(let n of e.matchAll(Gi)){let e=Wi.exec(n[0]);if(!e)continue;let r=T,[,i,...a]=e.filter(e=>!!e),[o,s,c,l,u,d]=a.map(e=>parseFloat(e));switch(i){case`translate`:r=Ue(o,s);break;case oe:r=We({angle:o},{x:s,y:c});break;case ue:r=Ge(o,s);break;case pe:r=qe(o);break;case me:r=Je(o);break;case`matrix`:r=[o,s,c,l,u,d]}t.push(r)}return Re(t)}function qi(e,t,n,r){let i=Array.isArray(t),a,o=t;if(e!==`fill`&&e!==`stroke`||t!==`none`){if(e===`strokeUniform`)return t===`non-scaling-stroke`;if(e===`strokeDashArray`)o=t===`none`?null:t.replace(/,/g,` `).split(/\s+/).map(parseFloat);else if(e===`transformMatrix`)o=n&&n.transformMatrix?z(n.transformMatrix,Ki(t)):Ki(t);else if(e===`visible`)o=t!==`none`&&t!==`hidden`,n&&!1===n.visible&&(o=!1);else if(e===`opacity`)o=parseFloat(t),n&&n.opacity!==void 0&&(o*=n.opacity);else if(e===`textAnchor`)o=t===`start`?D:t===`end`?k:E;else if(e===`charSpacing`||e===`textDecorationThickness`)a=K(t,r)/r*1e3;else if(e===`paintFirst`){let e=t.indexOf(j),n=t.indexOf(he);o=j,(e>-1&&n>-1&&n<e||e===-1&&n>-1)&&(o=he)}else{if(e===`href`||e===`xlink:href`||e===`font`||e===`id`)return t;if(e===`imageSmoothing`)return t===`optimizeQuality`;a=i?t.map(K):K(t,r)}}else o=``;return!i&&isNaN(a)?o:a}function Ji(e,t){e.replace(/;\s*$/,``).split(`;`).forEach(e=>{if(!e)return;let[n,r]=e.split(`:`);t[n.trim().toLowerCase()]=r.trim()})}function Yi(e){let t={},n=e.getAttribute(`style`);return n&&(typeof n==`string`?Ji(n,t):function(e,t){Object.entries(e).forEach(([e,n])=>{n!==void 0&&(t[e.toLowerCase()]=n)})}(n,t)),t}let Xi={stroke:`strokeOpacity`,fill:`fillOpacity`};function Zi(e,t,n){if(!e)return{};let r,i={},a=16;e.parentNode&&In.test(e.parentNode.nodeName)&&(i=Zi(e.parentElement,t,n),i.fontSize&&(r=a=K(i.fontSize)));let o={...t.reduce((t,n)=>{let r=e.getAttribute(n);return r&&(t[n]=r),t},{}),...Mi(e,n),...Yi(e)};o[`clip-path`]&&e.setAttribute(Nn,o[Nn]),o[`font-size`]&&(r=K(o[Mn],a),o[Mn]=`${r}`);let s={};for(let e in o){let t=Ni(e);s[t]=qi(t,o[e],i,r)}s&&s.font&&function(e,t){let n=e.match(An);if(!n)return;let r=n[1],i=n[3],a=n[4],o=n[5],s=n[6];r&&(t.fontStyle=r),i&&(t.fontWeight=isNaN(parseFloat(i))?i:parseFloat(i)),a&&(t.fontSize=K(a)),s&&(t.fontFamily=s),o&&(t.lineHeight=o===`normal`?1:o)}(s.font,s);let c={...i,...s};return In.test(e.nodeName)?c:function(e){let t=J.getDefaults();return Object.entries(Xi).forEach(([n,r])=>{if(e[r]===void 0||e[n]===``)return;if(e[n]===void 0){if(!t[n])return;e[n]=t[n]}if(e[n].indexOf(`url(`)===0)return;let i=new G(e[n]);e[n]=i.setAlpha(B(i.getAlpha()*e[r],2)).toRgba()}),e}(c)}let Qi=[`rx`,`ry`];var $i=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t),this._initRxRy()}_initRxRy(){let{rx:e,ry:t}=this;e&&!t?this.ry=e:t&&!e&&(this.rx=t)}_render(e){let{width:t,height:n}=this,r=-t/2,i=-n/2,a=this.rx?Math.min(this.rx,t/2):0,o=this.ry?Math.min(this.ry,n/2):0,s=a!==0||o!==0;e.beginPath(),e.moveTo(r+a,i),e.lineTo(r+t-a,i),s&&e.bezierCurveTo(r+t-.4477152502*a,i,r+t,i+.4477152502*o,r+t,i+o),e.lineTo(r+t,i+n-o),s&&e.bezierCurveTo(r+t,i+n-.4477152502*o,r+t-.4477152502*a,i+n,r+t-a,i+n),e.lineTo(r+a,i+n),s&&e.bezierCurveTo(r+.4477152502*a,i+n,r,i+n-.4477152502*o,r,i+n-o),e.lineTo(r,i+o),s&&e.bezierCurveTo(r,i+.4477152502*o,r+.4477152502*a,i,r+a,i),e.closePath(),this._renderPaintInOrder(e)}toObject(e=[]){return super.toObject([...Qi,...e])}_toSVG(){let{width:e,height:t,rx:n,ry:r}=this;return[`<rect `,`COMMON_PARTS`,`x="${-e/2}" y="${-t/2}" rx="${U(n)}" ry="${U(r)}" width="${U(e)}" height="${U(t)}" />\n`]}static async fromElement(e,t,n){let{left:r=0,top:i=0,width:a=0,height:o=0,visible:s=!0,...c}=Zi(e,this.ATTRIBUTE_NAMES,n);return new this({...t,...c,left:r,top:i,width:a,height:o,visible:!!(s&&a&&o)})}};a($i,`type`,`Rect`),a($i,`cacheProperties`,[...Un,...Qi]),a($i,`ownDefaults`,{rx:0,ry:0}),a($i,`ATTRIBUTE_NAMES`,[...ki,`x`,`y`,`rx`,`ry`,`width`,`height`]),M.setClass($i),M.setSVGClass($i);let ea=`initialization`,ta=`added`,na=(e,t)=>{let{strokeUniform:n,strokeWidth:r,width:i,height:a,group:o}=t,s=o&&o!==e?jt(o.calcTransformMatrix(),e.calcTransformMatrix()):null,c=s?t.getRelativeCenterPoint().transform(s):t.getRelativeCenterPoint(),l=!t.isStrokeAccountedForInDimensions(),u=n&&l?Nt(new N(r,r),void 0,e.calcTransformMatrix()):we,d=!n&&l?r:0,f=At(i+d,a+d,Re([s,t.calcOwnMatrix()],!0)).add(u).scalarDivide(2);return[c.subtract(f),c.add(f)]};var ra=class{calcLayoutResult(e,t){if(this.shouldPerformLayout(e))return this.calcBoundingBox(t,e)}shouldPerformLayout({type:e,prevStrategy:t,strategy:n}){return e===`initialization`||e===`imperative`||!!t&&n!==t}shouldLayoutClipPath({type:e,target:{clipPath:t}}){return e!==`initialization`&&t&&!t.absolutePositioned}getInitialSize(e,t){return t.size}calcBoundingBox(e,t){let{type:n,target:r}=t;if(n===`imperative`&&t.overrides)return t.overrides;if(e.length===0)return;let{left:i,top:a,width:o,height:s}=wt(e.map(e=>na(r,e)).reduce((e,t)=>e.concat(t),[])),c=new N(o,s),l=new N(i,a).add(c.scalarDivide(2));if(n===`initialization`){let e=this.getInitialSize(t,{size:c,center:l});return{center:l,relativeCorrection:new N(0,0),size:e}}return{center:l.transform(r.calcOwnMatrix()),size:c}}};a(ra,`type`,`strategy`);var ia=class extends ra{shouldPerformLayout(e){return!0}};a(ia,`type`,`fit-content`),M.setClass(ia);let aa=`layoutManager`;var oa=class{constructor(e=new ia){a(this,`strategy`,void 0),this.strategy=e,this._subscriptions=new Map}performLayout(e){let t={bubbles:!0,strategy:this.strategy,...e,prevStrategy:this._prevLayoutStrategy,stopPropagation(){this.bubbles=!1}};this.onBeforeLayout(t);let n=this.getLayoutResult(t);n&&this.commitLayout(t,n),this.onAfterLayout(t,n),this._prevLayoutStrategy=t.strategy}attachHandlers(e,t){let{target:n}=t;return[ge,re,se,ae,ie,A,le,ce,`modifyPath`].map(t=>e.on(t,e=>this.performLayout(t===`modified`?{type:`object_modified`,trigger:t,e,target:n}:{type:`object_modifying`,trigger:t,e,target:n})))}subscribe(e,t){this.unsubscribe(e,t);let n=this.attachHandlers(e,t);this._subscriptions.set(e,n)}unsubscribe(e,t){(this._subscriptions.get(e)||[]).forEach(e=>e()),this._subscriptions.delete(e)}unsubscribeTargets(e){e.targets.forEach(t=>this.unsubscribe(t,e))}subscribeTargets(e){e.targets.forEach(t=>this.subscribe(t,e))}onBeforeLayout(e){let{target:t,type:n}=e,{canvas:r}=t;if(n===`initialization`||n===`added`?this.subscribeTargets(e):n===`removed`&&this.unsubscribeTargets(e),t.fire(`layout:before`,{context:e}),r&&r.fire(`object:layout:before`,{target:t,context:e}),n===`imperative`&&e.deep){let{strategy:n,...r}=e;t.forEachObject(e=>e.layoutManager&&e.layoutManager.performLayout({...r,bubbles:!1,target:e}))}}getLayoutResult(e){let{target:t,strategy:n,type:r}=e,i=n.calcLayoutResult(e,t.getObjects());if(!i)return;let a=r===`initialization`?new N:t.getRelativeCenterPoint(),{center:o,correction:s=new N,relativeCorrection:c=new N}=i;return{result:i,prevCenter:a,nextCenter:o,offset:a.subtract(o).add(s).transform(r===`initialization`?T:R(t.calcOwnMatrix()),!0).add(c)}}commitLayout(e,t){let{target:n}=e,{result:{size:r},nextCenter:i}=t;var a,o;n.set({width:r.x,height:r.y}),this.layoutObjects(e,t),e.type===`initialization`?n.set({left:(a=e.x)==null?i.x+r.x*W(n.originX):a,top:(o=e.y)==null?i.y+r.y*W(n.originY):o}):(n.setPositionByOrigin(i,E,E),n.setCoords(),n.set(`dirty`,!0))}layoutObjects(e,t){let{target:n}=e;n.forEachObject(r=>{r.group===n&&this.layoutObject(e,t,r)}),e.strategy.shouldLayoutClipPath(e)&&this.layoutObject(e,t,n.clipPath)}layoutObject(e,{offset:t},n){n.set({left:n.left+t.x,top:n.top+t.y})}onAfterLayout(e,t){let{target:n,strategy:r,bubbles:i,prevStrategy:a,...o}=e,{canvas:s}=n;n.fire(`layout:after`,{context:e,result:t}),s&&s.fire(`object:layout:after`,{context:e,result:t,target:n});let c=n.parent;i&&c!=null&&c.layoutManager&&((o.path||(o.path=[])).push(n),c.layoutManager.performLayout({...o,target:c})),n.set(`dirty`,!0)}dispose(){let{_subscriptions:e}=this;e.forEach(e=>e.forEach(e=>e())),e.clear()}toObject(){return{type:aa,strategy:this.strategy.constructor.type}}toJSON(){return this.toObject()}};M.setClass(oa,aa);var sa=class extends oa{performLayout(){}},ca=class e extends Ee(J){static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),a(this,`_activeObjects`,[]),a(this,`__objectSelectionTracker`,void 0),a(this,`__objectSelectionDisposer`,void 0),Object.assign(this,e.ownDefaults),this.setOptions(n),this.groupInit(t,n)}groupInit(e,t){var n;this._objects=[...e],this.__objectSelectionTracker=this.__objectSelectionMonitor.bind(this,!0),this.__objectSelectionDisposer=this.__objectSelectionMonitor.bind(this,!1),this.forEachObject(e=>{this.enterGroup(e,!1)}),this.layoutManager=(n=t.layoutManager)==null?new oa:n,this.layoutManager.performLayout({type:ea,target:this,targets:[...e],x:t.left,y:t.top})}canEnterGroup(e){return e===this||this.isDescendantOf(e)?(c(`error`,`Group: circular object trees are not supported, this call has no effect`),!1):this._objects.indexOf(e)===-1||(c(`error`,`Group: duplicate objects are not supported inside group, this call has no effect`),!1)}_filterObjectsBeforeEnteringGroup(e){return e.filter((e,t,n)=>this.canEnterGroup(e)&&n.indexOf(e)===t)}add(...e){let t=this._filterObjectsBeforeEnteringGroup(e),n=super.add(...t);return this._onAfterObjectsChange(ta,t),n}insertAt(e,...t){let n=this._filterObjectsBeforeEnteringGroup(t),r=super.insertAt(e,...n);return this._onAfterObjectsChange(ta,n),r}remove(...e){let t=super.remove(...e);return this._onAfterObjectsChange(`removed`,t),t}_onObjectAdded(e){this.enterGroup(e,!0),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e,t){this.exitGroup(e,t),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onAfterObjectsChange(e,t){this.layoutManager.performLayout({type:e,targets:t,target:this})}_onStackOrderChanged(){this._set(`dirty`,!0)}_set(e,t){let n=this[e];return super._set(e,t),e===`canvas`&&n!==t&&(this._objects||[]).forEach(n=>{n._set(e,t)}),this}_shouldSetNestedCoords(){return this.subTargetCheck}removeAll(){return this._activeObjects=[],this.remove(...this._objects)}__objectSelectionMonitor(e,{target:t}){let n=this._activeObjects;if(e)n.push(t),this._set(`dirty`,!0);else if(n.length>0){let e=n.indexOf(t);e>-1&&(n.splice(e,1),this._set(`dirty`,!0))}}_watchObject(e,t){e&&this._watchObject(!1,t),e?(t.on(`selected`,this.__objectSelectionTracker),t.on(`deselected`,this.__objectSelectionDisposer)):(t.off(`selected`,this.__objectSelectionTracker),t.off(`deselected`,this.__objectSelectionDisposer))}enterGroup(e,t){e.group&&e.group.remove(e),e._set(`parent`,this),this._enterGroup(e,t)}_enterGroup(e,t){t&&Dt(e,z(R(this.calcTransformMatrix()),e.calcTransformMatrix())),this._shouldSetNestedCoords()&&e.setCoords(),e._set(`group`,this),e._set(`canvas`,this.canvas),this._watchObject(!0,e);let n=this.canvas&&this.canvas.getActiveObject&&this.canvas.getActiveObject();n&&(n===e||e.isDescendantOf(n))&&this._activeObjects.push(e)}exitGroup(e,t){this._exitGroup(e,t),e._set(`parent`,void 0),e._set(`canvas`,void 0)}_exitGroup(e,t){e._set(`group`,void 0),t||(Dt(e,z(this.calcTransformMatrix(),e.calcTransformMatrix())),e.setCoords()),this._watchObject(!1,e);let n=this._activeObjects.length>0?this._activeObjects.indexOf(e):-1;n>-1&&this._activeObjects.splice(n,1)}shouldCache(){let e=J.prototype.shouldCache.call(this);if(e){for(let e=0;e<this._objects.length;e++)if(this._objects[e].willDrawShadow())return this.ownCaching=!1,!1}return e}willDrawShadow(){if(super.willDrawShadow())return!0;for(let e=0;e<this._objects.length;e++)if(this._objects[e].willDrawShadow())return!0;return!1}isOnACache(){return this.ownCaching||!!this.parent&&this.parent.isOnACache()}drawObject(e,t,n){this._renderBackground(e);for(let t=0;t<this._objects.length;t++){var r;let n=this._objects[t];(r=this.canvas)!=null&&r.preserveObjectStacking&&n.group!==this?(e.save(),e.transform(...R(this.calcTransformMatrix())),n.render(e),e.restore()):n.group===this&&n.render(e)}this._drawClipPath(e,this.clipPath,n)}setCoords(){super.setCoords(),this._shouldSetNestedCoords()&&this.forEachObject(e=>e.setCoords())}triggerLayout(e={}){this.layoutManager.performLayout({target:this,type:`imperative`,...e})}render(e){this._transformDone=!0,super.render(e),this._transformDone=!1}__serializeObjects(e,t){let n=this.includeDefaultValues;return this._objects.filter(function(e){return!e.excludeFromExport}).map(function(r){let i=r.includeDefaultValues;r.includeDefaultValues=n;let a=r[e||`toObject`](t);return r.includeDefaultValues=i,a})}toObject(e=[]){let t=this.layoutManager.toObject();return{...super.toObject([`subTargetCheck`,`interactive`,...e]),...t.strategy!==`fit-content`||this.includeDefaultValues?{layoutManager:t}:{},objects:this.__serializeObjects(`toObject`,e)}}toString(){return`#<Group: (${this.complexity()})>`}dispose(){this.layoutManager.unsubscribeTargets({targets:this.getObjects(),target:this}),this._activeObjects=[],this.forEachObject(e=>{this._watchObject(!1,e),e.dispose()}),super.dispose()}_createSVGBgRect(e){if(!this.backgroundColor)return``;let t=$i.prototype._toSVG.call(this),n=t.indexOf(`COMMON_PARTS`);t[n]=`for="group" `;let r=t.join(``);return e?e(r):r}_toSVG(e){let t=[`<g `,`COMMON_PARTS`,` >
|
|
14
|
+
`),n?n(p.join(``)):p.join(``)}addPaintOrder(){return this.paintFirst===`fill`?``:` paint-order="${H(this.paintFirst)}" `}};function Hn(e){return RegExp(`^(`+e.join(`|`)+`)\\b`,`i`)}let Un=`textDecorationThickness`,Wn=`textDecorationColor`,Gn=[`fontSize`,`fontWeight`,`fontFamily`,`fontStyle`],Kn=[`underline`,`overline`,`linethrough`],qn=[...Gn,`lineHeight`,`text`,`charSpacing`,`textAlign`,`styles`,`path`,`pathStartOffset`,`pathSide`,`pathAlign`],Jn=[...qn,...Kn,`textBackgroundColor`,`direction`,Un,Wn],Yn=[...Gn,...Kn,ge,`strokeWidth`,j,`deltaY`,`textBackgroundColor`,Un,Wn],Xn={_reNewline:re,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,fontSize:40,fontWeight:ve,fontFamily:`Times New Roman`,underline:!1,overline:!1,linethrough:!1,textAlign:O,fontStyle:ve,lineHeight:1.16,textBackgroundColor:``,stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:O,pathAlign:`baseline`,charSpacing:0,deltaY:0,direction:`ltr`,CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.28167,overline:-.81333},_fontSizeMult:1.13,[Un]:66.667},Zn=`justify`,Qn=String.raw`[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?`,$n=String.raw`(?:\s*,?\s+|\s*,\s*)`,er=`http://www.w3.org/2000/svg`,tr=RegExp(`(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(`+Qn+`(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|`+Qn+`))?\\s+(.*)`),nr=[`path`,`circle`,`polygon`,`polyline`,`ellipse`,`rect`,`line`,`image`,`text`],rr=[`symbol`,`image`,`marker`,`pattern`,`view`,`svg`],ir=[`pattern`,`defs`,`symbol`,`metadata`,`clipPath`,`mask`,`desc`],ar=[`symbol`,`g`,`a`,`svg`,`clipPath`,`defs`],or={cx:O,x:O,r:`radius`,cy:`top`,y:`top`,display:`visible`,visibility:`visible`,transform:`transformMatrix`,"fill-opacity":`fillOpacity`,"fill-rule":`fillRule`,"font-family":`fontFamily`,"font-size":`fontSize`,"font-style":`fontStyle`,"font-weight":`fontWeight`,"letter-spacing":`charSpacing`,"paint-order":`paintFirst`,"stroke-dasharray":`strokeDashArray`,"stroke-dashoffset":`strokeDashOffset`,"stroke-linecap":`strokeLineCap`,"stroke-linejoin":`strokeLineJoin`,"stroke-miterlimit":`strokeMiterLimit`,"stroke-opacity":`strokeOpacity`,"stroke-width":`strokeWidth`,"text-decoration":`textDecoration`,"text-anchor":`textAnchor`,opacity:`opacity`,"clip-path":`clipPath`,"clip-rule":`clipRule`,"vector-effect":`strokeUniform`,"image-rendering":`imageSmoothing`,"text-decoration-thickness":Un,"text-decoration-color":Wn},sr=`font-size`,cr=`clip-path`,lr=Hn(nr),ur=Hn(rr),dr=Hn(ar),fr=new RegExp(String.raw`^\s*(${Qn})${$n}(${Qn})${$n}(${Qn})${$n}(${Qn})\s*$`),pr=`(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?`,mr=RegExp(`(?:\\s|^)`+pr+pr+`(`+Qn+`?(?:px)?)?(?:\\s?|$)(?:$|\\s)`),hr={color:`rgb(0,0,0)`,blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1};var gr=class e{constructor(t={}){let n=typeof t==`string`?e.parseShadow(t):t;Object.assign(this,e.ownDefaults,n),this.id=Me()}static parseShadow(e){let t=e.trim(),[,n=0,r=0,i=0]=(mr.exec(t)||[]).map(e=>parseFloat(e)||0);return{color:(t.replace(mr,``)||`rgb(0,0,0)`).trim(),offsetX:n,offsetY:r,blur:i}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join(`px `)}toSVG(e){let t=Kt(new N(this.offsetX,this.offsetY),I(-e.angle)),n=c.NUM_FRACTION_DIGITS,r=new G(this.color),i=40,a=40;return e.width&&e.height&&(i=B((Math.abs(t.x)+this.blur)/e.width,n)*100+20,a=B((Math.abs(t.y)+this.blur)/e.height,n)*100+20),e.flipX&&(t.x*=-1),e.flipY&&(t.y*=-1),`<filter id="SVGID_${H(this.id)}" y="-${a}%" height="${100+2*a}%" x="-${i}%" width="${100+2*i}%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="${B(this.blur?this.blur/2:0,n)}"></feGaussianBlur>\n\t<feOffset dx="${B(t.x,n)}" dy="${B(t.y,n)}" result="oBlur" ></feOffset>\n\t<feFlood flood-color="${r.toRgb()}" flood-opacity="${r.getAlpha()}"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n`}toObject(){let t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},n=e.ownDefaults;return this.includeDefaultValues?t:rt(t,(e,t)=>e!==n[t])}static async fromObject(e){return new this(e)}};o(gr,`ownDefaults`,hr),o(gr,`type`,`shadow`),M.setClass(gr,`shadow`);let _r=(e,t,n)=>Math.max(e,Math.min(t,n)),vr=[`top`,O,fe,pe,`flipX`,`flipY`,`originX`,`originY`,`angle`,`opacity`,`globalCompositeOperation`,`shadow`,`visible`,me,he],yr=[j,ge,`strokeWidth`,`strokeDashArray`,`width`,`height`,`paintFirst`,`strokeUniform`,`strokeLineCap`,`strokeDashOffset`,`strokeLineJoin`,`strokeMiterLimit`,`backgroundColor`,`clipPath`],br={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:D,originY:D,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:j,fill:`rgb(0,0,0)`,fillRule:`nonzero`,stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:`butt`,strokeLineJoin:`miter`,strokeMiterLimit:4,globalCompositeOperation:`source-over`,backgroundColor:``,shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0},xr={noScaleCache:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,cornerSize:13,touchCornerSize:24,transparentCorners:!0,cornerColor:`rgb(178,204,255)`,cornerStrokeColor:``,cornerStyle:`rect`,cornerDashArray:null,hasControls:!0,borderColor:`rgb(178,204,255)`,borderDashArray:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,hasBorders:!0,selectionBackgroundColor:``,selectable:!0,evented:!0,perPixelTargetFind:!1,activeOn:`down`,hoverCursor:null,moveCursor:null};var Sr=/* @__PURE__ */ n({defaultEasing:()=>Tr,easeInBack:()=>qr,easeInBounce:()=>Zr,easeInCirc:()=>Vr,easeInCubic:()=>Er,easeInElastic:()=>Wr,easeInExpo:()=>Rr,easeInOutBack:()=>Yr,easeInOutBounce:()=>Qr,easeInOutCirc:()=>Ur,easeInOutCubic:()=>Or,easeInOutElastic:()=>Kr,easeInOutExpo:()=>Br,easeInOutQuad:()=>ti,easeInOutQuart:()=>jr,easeInOutQuint:()=>Pr,easeInOutSine:()=>Lr,easeInQuad:()=>$r,easeInQuart:()=>kr,easeInQuint:()=>Mr,easeInSine:()=>Fr,easeOutBack:()=>Jr,easeOutBounce:()=>Xr,easeOutCirc:()=>Hr,easeOutCubic:()=>Dr,easeOutElastic:()=>Gr,easeOutExpo:()=>zr,easeOutQuad:()=>ei,easeOutQuart:()=>Ar,easeOutQuint:()=>Nr,easeOutSine:()=>Ir});let Cr=(e,t,n,r)=>(e<Math.abs(t)?(e=t,r=n/4):r=t===0&&e===0?n/T*Math.asin(1):n/T*Math.asin(t/e),{a:e,c:t,p:n,s:r}),wr=(e,t,n,r,i)=>e*2**(10*--r)*Math.sin((r*i-t)*T/n),Tr=(e,t,n,r)=>-n*Math.cos(e/r*C)+n+t,Er=(e,t,n,r)=>n*(e/r)**3+t,Dr=(e,t,n,r)=>n*((e/r-1)**3+1)+t,Or=(e,t,n,r)=>(e/=r/2,e<1?n/2*e**3+t:n/2*((e-2)**3+2)+t),kr=(e,t,n,r)=>n*(e/=r)*e**3+t,Ar=(e,t,n,r)=>-n*((e=e/r-1)*e**3-1)+t,jr=(e,t,n,r)=>(e/=r/2,e<1?n/2*e**4+t:-n/2*((e-=2)*e**3-2)+t),Mr=(e,t,n,r)=>n*(e/r)**5+t,Nr=(e,t,n,r)=>n*((e/r-1)**5+1)+t,Pr=(e,t,n,r)=>(e/=r/2,e<1?n/2*e**5+t:n/2*((e-2)**5+2)+t),Fr=(e,t,n,r)=>-n*Math.cos(e/r*C)+n+t,Ir=(e,t,n,r)=>n*Math.sin(e/r*C)+t,Lr=(e,t,n,r)=>-n/2*(Math.cos(Math.PI*e/r)-1)+t,Rr=(e,t,n,r)=>e===0?t:n*2**(10*(e/r-1))+t,zr=(e,t,n,r)=>e===r?t+n:n*-(2**(-10*e/r)+1)+t,Br=(e,t,n,r)=>e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*2**(10*(e-1))+t:n/2*-(2**(-10*(e-1))+2)+t),Vr=(e,t,n,r)=>-n*(Math.sqrt(1-(e/=r)*e)-1)+t,Hr=(e,t,n,r)=>n*Math.sqrt(1-(e=e/r-1)*e)+t,Ur=(e,t,n,r)=>(e/=r/2,e<1?-n/2*(Math.sqrt(1-e**2)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t),Wr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if(e/=r,e===1)return t+n;a||(a=r*.3);let{a:o,s,p:c}=Cr(i,n,a,1.70158);return-wr(o,s,c,e,r)+t},Gr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if(e/=r,e===1)return t+n;a||(a=r*.3);let{a:o,s,p:c,c:l}=Cr(i,n,a,1.70158);return o*2**(-10*e)*Math.sin((e*r-s)*T/c)+l+t},Kr=(e,t,n,r)=>{let i=n,a=0;if(e===0)return t;if(e/=r/2,e===2)return t+n;a||(a=.3*1.5*r);let{a:o,s,p:c,c:l}=Cr(i,n,a,1.70158);return e<1?-.5*wr(o,s,c,e,r)+t:o*2**(-10*--e)*Math.sin((e*r-s)*T/c)*.5+l+t},qr=(e,t,n,r,i=1.70158)=>n*(e/=r)*e*((i+1)*e-i)+t,Jr=(e,t,n,r,i=1.70158)=>n*((e=e/r-1)*e*((i+1)*e+i)+1)+t,Yr=(e,t,n,r,i=1.70158)=>(e/=r/2,e<1?n/2*(e*e*(((i*=1.525)+1)*e-i))+t:n/2*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)+t),Xr=(e,t,n,r)=>(e/=r)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t,Zr=(e,t,n,r)=>n-Xr(r-e,0,n,r)+t,Qr=(e,t,n,r)=>e<r/2?Zr(e*2,0,n,r)*.5+t:Xr(e*2-r,0,n,r)*.5+n*.5+t,$r=(e,t,n,r)=>n*(e/=r)*e+t,ei=(e,t,n,r)=>-n*(e/=r)*(e-2)+t,ti=(e,t,n,r)=>(e/=r/2,e<1?n/2*e**2+t:-n/2*(--e*(e-2)-1)+t),ni=()=>!1;var ri=class{constructor({startValue:e,byValue:t,duration:n=500,delay:r=0,easing:i=Tr,onStart:a=S,onChange:s=S,onComplete:c=S,abort:l=ni,target:u}){o(this,`_state`,`pending`),o(this,`durationProgress`,0),o(this,`valueProgress`,0),this.tick=this.tick.bind(this),this.duration=n,this.delay=r,this.easing=i,this._onStart=a,this._onChange=s,this._onComplete=c,this._abort=l,this.target=u,this.startValue=e,this.byValue=t,this.value=this.startValue,this.endValue=Object.freeze(this.calculate(this.duration).value)}get state(){return this._state}isDone(){return this._state===`aborted`||this._state===`completed`}start(){let e=e=>{this._state===`pending`&&(this.startTime=e||+/* @__PURE__ */ new Date,this._state=`running`,this._onStart(),this.tick(this.startTime))};this.register(),this.delay>0?this.timeout=v().setTimeout(()=>ke(e),this.delay):ke(e)}tick(e){let t=(e||+/* @__PURE__ */ new Date)-this.startTime,n=Math.min(t,this.duration);this.durationProgress=n/this.duration;let{value:r,valueProgress:i}=this.calculate(n);this.value=Object.freeze(r),this.valueProgress=i,this._state!==`aborted`&&(this._abort(this.value,this.valueProgress,this.durationProgress)?(this._state=`aborted`,this.unregister()):t>=this.duration?(this.durationProgress=this.valueProgress=1,this._onChange(this.endValue,this.valueProgress,this.durationProgress),this._state=`completed`,this._onComplete(this.endValue,this.valueProgress,this.durationProgress),this.unregister(),this.timeout=null):(this._onChange(this.value,this.valueProgress,this.durationProgress),ke(this.tick)))}register(){be.push(this)}unregister(){be.remove(this)}abort(){this._state=`aborted`,this.unregister(),this.timeout&&v().clearTimeout(this.timeout)}},ii=class extends ri{constructor({startValue:e=0,endValue:t=100,...n}){super({...n,startValue:e,byValue:t-e})}calculate(e){let t=this.easing(e,this.startValue,this.byValue,this.duration);return{value:t,valueProgress:Math.abs((t-this.startValue)/this.byValue)}}},ai=class extends ri{constructor({startValue:e=[0],endValue:t=[100],...n}){super({...n,startValue:e,byValue:t.map((t,n)=>t-e[n])})}calculate(e){let t=this.startValue.map((t,n)=>this.easing(e,t,this.byValue[n],this.duration,n));return{value:t,valueProgress:Math.abs((t[0]-this.startValue[0])/this.byValue[0])}}};let oi=(e,t,n,r)=>t+n*(1-Math.cos(e/r*C)),si=e=>e&&((t,n,r)=>e(new G(t).toRgba(),n,r));var ci=class extends ri{constructor({startValue:e,endValue:t,easing:n=oi,onChange:r,onComplete:i,abort:a,...o}){let s=new G(e).getSource(),c=new G(t).getSource();super({...o,startValue:s,byValue:c.map((e,t)=>e-s[t]),easing:n,onChange:si(r),onComplete:si(i),abort:si(a)})}calculate(e){let[t,n,r,i]=this.startValue.map((t,n)=>this.easing(e,t,this.byValue[n],this.duration,n)),a=[...[t,n,r].map(Math.round),_r(0,i,1)];return{value:a,valueProgress:a.map((e,t)=>this.byValue[t]===0?0:Math.abs((e-this.startValue[t])/this.byValue[t])).find(e=>e!==0)||0}}};let li=e=>Array.isArray(e.startValue)||Array.isArray(e.endValue);function ui(e){let t=li(e)?new ai(e):new ii(e);return t.start(),t}function di(e){let t=new ci(e);return t.start(),t}var fi=class e{constructor(e){this.status=e,this.points=[]}includes(e){return this.points.some(t=>t.eq(e))}append(...e){return this.points=this.points.concat(e.filter(e=>!this.includes(e))),this}static isPointContained(e,t,n,r=!1){if(t.eq(n))return e.eq(t);if(t.x===n.x)return e.x===t.x&&(r||e.y>=Math.min(t.y,n.y)&&e.y<=Math.max(t.y,n.y));if(t.y===n.y)return e.y===t.y&&(r||e.x>=Math.min(t.x,n.x)&&e.x<=Math.max(t.x,n.x));{let i=qt(t,n),a=qt(t,e).divide(i);return r?Math.abs(a.x)===Math.abs(a.y):a.x===a.y&&a.x>=0&&a.x<=1}}static isPointInPolygon(e,t){let n=new N(e).setX(Math.min(e.x-1,...t.map(e=>e.x))),r=0;for(let i=0;i<t.length;i++){let a=this.intersectSegmentSegment(t[i],t[(i+1)%t.length],e,n);if(a.includes(e))return!0;r+=Number(a.status===`Intersection`)}return r%2==1}static intersectLineLine(t,n,r,i,a=!0,o=!0){let s=n.x-t.x,c=n.y-t.y,l=i.x-r.x,u=i.y-r.y,d=t.x-r.x,f=t.y-r.y,p=l*f-u*d,m=s*f-c*d,h=u*s-l*c;if(h===0){if(p===0||m===0){let s=a||o||e.isPointContained(t,r,i)||e.isPointContained(n,r,i)||e.isPointContained(r,t,n)||e.isPointContained(i,t,n);return new e(s?`Coincident`:void 0)}return new e(`Parallel`)}{let n=p/h,r=m/h;return(a||0<=n&&n<=1)&&(o||0<=r&&r<=1)?new e(`Intersection`).append(new N(t.x+n*s,t.y+n*c)):new e}}static intersectSegmentLine(t,n,r,i){return e.intersectLineLine(t,n,r,i,!1,!0)}static intersectSegmentSegment(t,n,r,i){return e.intersectLineLine(t,n,r,i,!1,!1)}static intersectLinePolygon(t,n,r,i=!0){let a=new e,o=r.length;for(let s=0,c,l,u;s<o;s++){if(c=r[s],l=r[(s+1)%o],u=e.intersectLineLine(t,n,c,l,i,!1),u.status===`Coincident`)return u;a.append(...u.points)}return a.points.length>0&&(a.status=`Intersection`),a}static intersectSegmentPolygon(t,n,r){return e.intersectLinePolygon(t,n,r,!1)}static intersectPolygonPolygon(t,n){let r=new e,i=t.length,a=[];for(let o=0;o<i;o++){let s=t[o],c=t[(o+1)%i],l=e.intersectSegmentPolygon(s,c,n);l.status===`Coincident`?(a.push(l),r.append(s,c)):r.append(...l.points)}return a.length>0&&a.length===t.length?new e(`Coincident`):(r.points.length>0&&(r.status=`Intersection`),r)}static intersectPolygonRectangle(t,n,r){let i=n.min(r),a=n.max(r),o=new N(a.x,i.y),s=new N(i.x,a.y);return e.intersectPolygonPolygon(t,[i,o,a,s])}},pi=class extends Oe{getX(){return this.getXY().x}setX(e){this.setXY(this.getXY().setX(e))}getY(){return this.getXY().y}setY(e){this.setXY(this.getXY().setY(e))}getRelativeX(){return this.left}setRelativeX(e){this.left=e}getRelativeY(){return this.top}setRelativeY(e){this.top=e}getXY(){let e=this.getRelativeXY();return this.group?L(e,this.group.calcTransformMatrix()):e}setXY(e,t,n){this.group&&(e=L(e,R(this.group.calcTransformMatrix()))),this.setRelativeXY(e,t,n)}getRelativeXY(){return new N(this.left,this.top)}setRelativeXY(e,t=this.originX,n=this.originY){this.setPositionByOrigin(e,t,n)}isStrokeAccountedForInDimensions(){return!1}getCoords(){let{tl:e,tr:t,br:n,bl:r}=this.aCoords||(this.aCoords=this.calcACoords()),i=[e,t,n,r];if(this.group){let e=this.group.calcTransformMatrix();return i.map(t=>L(t,e))}return i}intersectsWithRect(e,t){return fi.intersectPolygonRectangle(this.getCoords(),e,t).status===`Intersection`}intersectsWithObject(e){let t=fi.intersectPolygonPolygon(this.getCoords(),e.getCoords());return t.status===`Intersection`||t.status===`Coincident`||e.isContainedWithinObject(this)||this.isContainedWithinObject(e)}isContainedWithinObject(e){return this.getCoords().every(t=>e.containsPoint(t))}isContainedWithinRect(e,t){let{left:n,top:r,width:i,height:a}=this.getBoundingRect();return n>=e.x&&n+i<=t.x&&r>=e.y&&r+a<=t.y}isOverlapping(e){return this.intersectsWithObject(e)||this.isContainedWithinObject(e)||e.isContainedWithinObject(this)}containsPoint(e){return fi.isPointInPolygon(e,this.getCoords())}isOnScreen(){if(!this.canvas)return!1;let{tl:e,br:t}=this.canvas.vptCoords;return this.getCoords().some(n=>n.x<=t.x&&n.x>=e.x&&n.y<=t.y&&n.y>=e.y)||this.intersectsWithRect(e,t)?!0:this.containsPoint(e.midPointFrom(t))}isPartiallyOnScreen(){if(!this.canvas)return!1;let{tl:e,br:t}=this.canvas.vptCoords;return this.intersectsWithRect(e,t)?!0:this.getCoords().every(n=>(n.x>=t.x||n.x<=e.x)&&(n.y>=t.y||n.y<=e.y))&&this.containsPoint(e.midPointFrom(t))}getBoundingRect(){return Mt(this.getCoords())}getScaledWidth(){return this._getTransformedDimensions().x}getScaledHeight(){return this._getTransformedDimensions().y}scale(e){this._set(fe,e),this._set(pe,e),this.setCoords()}scaleToWidth(e){let t=this.getBoundingRect().width/this.getScaledWidth();return this.scale(e/this.width/t)}scaleToHeight(e){let t=this.getBoundingRect().height/this.getScaledHeight();return this.scale(e/this.height/t)}getCanvasRetinaScaling(){var e;return((e=this.canvas)==null?void 0:e.getRetinaScaling())||1}getTotalAngle(){return this.group?Re(Ve(this.calcTransformMatrix())):this.angle}getViewportTransform(){var e;return((e=this.canvas)==null?void 0:e.viewportTransform)||E.concat()}calcACoords(){let e=Ke({angle:this.angle}),{x:t,y:n}=this.getRelativeCenterPoint(),r=Ge(t,n),i=z(r,e),a=this._getTransformedDimensions(),o=a.x/2,s=a.y/2;return{tl:L({x:-o,y:-s},i),tr:L({x:o,y:-s},i),bl:L({x:-o,y:s},i),br:L({x:o,y:s},i)}}setCoords(){this.aCoords=this.calcACoords()}transformMatrixKey(e=!1){let t=[];return!e&&this.group&&(t=this.group.transformMatrixKey(e)),t.push(this.top,this.left,this.width,this.height,this.scaleX,this.scaleY,this.angle,this.strokeWidth,this.skewX,this.skewY,+this.flipX,+this.flipY,U(this.originX),U(this.originY)),t}calcTransformMatrix(e=!1){let t=this.calcOwnMatrix();if(e||!this.group)return t;let n=this.transformMatrixKey(e),r=this.matrixCache;return r&&r.key.every((e,t)=>e===n[t])?r.value:(this.group&&(t=z(this.group.calcTransformMatrix(!1),t)),this.matrixCache={key:n,value:t},t)}calcOwnMatrix(){let e=this.transformMatrixKey(!0),t=this.ownMatrixCache;if(t&&t.key.every((t,n)=>t===e[n]))return t.value;let n=this.getRelativeCenterPoint(),r={angle:this.angle,translateX:n.x,translateY:n.y,scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,flipX:this.flipX,flipY:this.flipY},i=Qe(r);return this.ownMatrixCache={key:e,value:i},i}_getNonTransformedDimensions(){return new N(this.width,this.height).scalarAdd(this.strokeWidth)}_calculateCurrentDimensions(e){var t;let n=(t=this.canvas)==null?void 0:t.viewportTransform,r=this._getTransformedDimensions(e);return n?r.multiply(new N(He(n),Ue(n))).scalarAdd(2*this.padding):r.scalarAdd(2*this.padding)}_getTransformedDimensions(e={}){let t={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,width:this.width,height:this.height,strokeWidth:this.strokeWidth,...e},n=t.strokeWidth,r=n,i=0;this.strokeUniform&&(r=0,i=n);let a=t.width+r,o=t.height+r,s=t.skewX===0&&t.skewY===0,c;return c=s?new N(a*t.scaleX,o*t.scaleY):Rt(a,o,Ze(t)),c.scalarAdd(i)}translateToGivenOrigin(e,t,n,r,i){let a=e.x,o=e.y,s=U(r)-U(t),c=U(i)-U(n);if(s||c){let e=this._getTransformedDimensions();a+=s*e.x,o+=c*e.y}return new N(a,o)}translateToCenterPoint(e,t,n){if(t===`center`&&n===`center`)return e;let r=this.translateToGivenOrigin(e,t,n,D,D);return this.angle?r.rotate(I(this.angle),e):r}translateToOriginPoint(e,t,n){let r=this.translateToGivenOrigin(e,D,D,t,n);return this.angle?r.rotate(I(this.angle),e):r}getCenterPoint(){let e=this.getRelativeCenterPoint();return this.group?L(e,this.group.calcTransformMatrix()):e}getRelativeCenterPoint(){return this.translateToCenterPoint(new N(this.left,this.top),this.originX,this.originY)}getPointByOrigin(e,t){return this.getPositionByOrigin(e,t)}getPositionByOrigin(e,t){return this.translateToOriginPoint(this.getRelativeCenterPoint(),e,t)}setPositionByOrigin(e,t,n){let r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set({left:i.x,top:i.y})}_getLeftTopCoords(){return this.getPositionByOrigin(O,`top`)}positionByLeftTop(e){return this.setPositionByOrigin(e,O,`top`)}},mi=class e extends pi{static getDefaults(){return e.ownDefaults}get type(){let e=this.constructor.type;return e===`FabricObject`?`object`:e.toLowerCase()}set type(e){l(`warn`,`Setting type has no effect`,e)}constructor(t){super(),o(this,`_cacheContext`,null),Object.assign(this,e.ownDefaults),this.setOptions(t)}_createCacheCanvas(){this._cacheCanvas=P(),this._cacheContext=this._cacheCanvas.getContext(`2d`),this._updateCacheCanvas(),this.dirty=!0}_limitCacheSize(e){let t=e.width,n=e.height,r=c.maxCacheSideLimit,i=c.minCacheSideLimit;if(t<=r&&n<=r&&t*n<=c.perfLimitSizeTotal)return t<i&&(e.width=i),n<i&&(e.height=i),e;let a=t/n,[o,s]=b.limitDimsByArea(a),l=_r(i,o,r),u=_r(i,s,r);return t>l&&(e.zoomX/=t/l,e.width=l,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e}_getCacheCanvasDimensions(){let e=this.getTotalObjectScaling(),t=this._getTransformedDimensions({skewX:0,skewY:0}),n=t.x*e.x/this.scaleX,r=t.y*e.y/this.scaleY;return{width:Math.ceil(n+2),height:Math.ceil(r+2),zoomX:e.x,zoomY:e.y,x:n,y:r}}_updateCacheCanvas(){let e=this._cacheCanvas,t=this._cacheContext,{width:n,height:r,zoomX:i,zoomY:a,x:o,y:s}=this._limitCacheSize(this._getCacheCanvasDimensions()),c=n!==e.width||r!==e.height,l=this.zoomX!==i||this.zoomY!==a;if(!e||!t)return!1;if(c||l){n!==e.width||r!==e.height?(e.width=n,e.height=r):(t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.width,e.height));let c=o/2,l=s/2;return this.cacheTranslationX=Math.round(e.width/2-c)+c,this.cacheTranslationY=Math.round(e.height/2-l)+l,t.translate(this.cacheTranslationX,this.cacheTranslationY),t.scale(i,a),this.zoomX=i,this.zoomY=a,!0}return!1}setOptions(e={}){this._setOptions(e)}transform(e){let t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,n=this.calcTransformMatrix(!t);e.transform(n[0],n[1],n[2],n[3],n[4],n[5])}getObjectScaling(){if(!this.group)return new N(Math.abs(this.scaleX),Math.abs(this.scaleY));let e=We(this.calcTransformMatrix());return new N(Math.abs(e.scaleX),Math.abs(e.scaleY))}getTotalObjectScaling(){let e=this.getObjectScaling();if(this.canvas){let t=this.canvas.getZoom(),n=this.getCanvasRetinaScaling();return e.scalarMultiply(t*n)}return e}getObjectOpacity(){let e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e}_constrainScale(e){return Math.abs(e)<this.minScaleLimit?e<0?-this.minScaleLimit:this.minScaleLimit:e===0?1e-4:e}_set(e,t){(e===`scaleX`||e===`scaleY`)&&(t=this._constrainScale(t)),e===`scaleX`&&t<0?(this.flipX=!this.flipX,t*=-1):e===`scaleY`&&t<0?(this.flipY=!this.flipY,t*=-1):e===`shadow`&&t&&!(t instanceof gr)&&(t=new gr(t));let n=this[e]!==t;return this[e]=t,n&&this.constructor.cacheProperties.includes(e)&&(this.dirty=!0),this.parent&&(this.dirty||n&&this.constructor.stateProperties.includes(e))&&this.parent._set(`dirty`,!0),this}isNotVisible(){return this.opacity===0||!this.width&&!this.height&&this.strokeWidth===0||!this.visible}render(e){this.isNotVisible()||(!this.canvas||!this.canvas.skipOffscreen||this.group||this.isOnScreen())&&(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.drawObject(e,!1,{}),this.dirty=!1),e.restore())}drawSelectionBackground(e){}renderCache(e){if(e=e||{},(!this._cacheCanvas||!this._cacheContext)&&this._createCacheCanvas(),this.isCacheDirty()&&this._cacheContext){let{zoomX:t,zoomY:n,cacheTranslationX:r,cacheTranslationY:i}=this,{width:a,height:o}=this._cacheCanvas;this.drawObject(this._cacheContext,e.forClipping,{zoomX:t,zoomY:n,cacheTranslationX:r,cacheTranslationY:i,width:a,height:o,parentClipPaths:[]}),this.dirty=!1}}_removeCacheCanvas(){this._cacheCanvas=void 0,this._cacheContext=null}hasStroke(){return!!this.stroke&&this.stroke!==`transparent`&&this.strokeWidth!==0}hasFill(){return!!this.fill&&this.fill!==`transparent`}needsItsOwnCache(){return!!(this.paintFirst===`stroke`&&this.hasFill()&&this.hasStroke()&&this.shadow||this.clipPath)}shouldCache(){return this.ownCaching=this.objectCaching&&(!this.parent||!this.parent.isOnACache())||this.needsItsOwnCache(),this.ownCaching}willDrawShadow(){return!!this.shadow&&(this.shadow.offsetX!==0||this.shadow.offsetY!==0)}drawClipPathOnCache(e,t,n){e.save(),e.globalCompositeOperation=t.inverted?`destination-out`:`destination-in`,e.setTransform(1,0,0,1,0,0),e.drawImage(n,0,0),e.restore()}drawObject(e,t,n){let r=this.fill,i=this.stroke;t?(this.fill=`black`,this.stroke=``,this._setClippingProperties(e)):this._renderBackground(e),this.fire(`before:render`,{ctx:e}),this._render(e),this._drawClipPath(e,this.clipPath,n),this.fill=r,this.stroke=i}createClipPathLayer(e,t){let n=F(t),r=n.getContext(`2d`);if(r.translate(t.cacheTranslationX,t.cacheTranslationY),r.scale(t.zoomX,t.zoomY),e._cacheCanvas=n,t.parentClipPaths.forEach(e=>{e.transform(r)}),t.parentClipPaths.push(e),e.absolutePositioned){let e=R(this.calcTransformMatrix());r.transform(e[0],e[1],e[2],e[3],e[4],e[5])}return e.transform(r),e.drawObject(r,!0,t),n}_drawClipPath(e,t,n){if(!t)return;t._transformDone=!0;let r=this.createClipPathLayer(t,n);this.drawClipPathOnCache(e,t,r)}drawCacheOnCanvas(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)}isCacheDirty(e=!1){if(this.isNotVisible())return!1;let t=this._cacheCanvas,n=this._cacheContext;return t&&n&&!e&&this._updateCacheCanvas()?!0:this.dirty||this.clipPath&&this.clipPath.absolutePositioned?(t&&n&&!e&&(n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.width,t.height),n.restore()),!0):!1}_renderBackground(e){if(!this.backgroundColor)return;let t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}_setOpacity(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity}_setStrokeStyles(e,t){let n=t.stroke;n&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,V(n)?n.gradientUnits===`percentage`||n.gradientTransform||n.patternTransform?this._applyPatternForTransformedGradient(e,n):(e.strokeStyle=n.toLive(e),this._applyPatternGradientTransform(e,n)):e.strokeStyle=t.stroke)}_setFillStyles(e,{fill:t}){t&&(V(t)?(e.fillStyle=t.toLive(e),this._applyPatternGradientTransform(e,t)):e.fillStyle=t)}_setClippingProperties(e){e.globalAlpha=1,e.strokeStyle=`transparent`,e.fillStyle=`#000000`}_setLineDash(e,t){t&&t.length!==0&&e.setLineDash(t)}_setShadow(e){if(!this.shadow)return;let t=this.shadow,n=this.canvas,r=this.getCanvasRetinaScaling(),[i,,,a]=(n==null?void 0:n.viewportTransform)||E,o=i*r,s=a*r,l=t.nonScaling?new N(1,1):this.getObjectScaling();e.shadowColor=t.color,e.shadowBlur=t.blur*c.browserShadowBlurConstant*(o+s)*(l.x+l.y)/4,e.shadowOffsetX=t.offsetX*o*l.x,e.shadowOffsetY=t.offsetY*s*l.y}_removeShadow(e){this.shadow&&(e.shadowColor=``,e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)}_applyPatternGradientTransform(e,t){if(!V(t))return{offsetX:0,offsetY:0};let n=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,i=-this.height/2+t.offsetY||0;return t.gradientUnits===`percentage`?e.transform(this.width,0,0,this.height,r,i):e.transform(1,0,0,1,r,i),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),{offsetX:r,offsetY:i}}_renderPaintInOrder(e){this.paintFirst===`stroke`?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))}_render(e){}_renderFill(e){this.fill&&(e.save(),this._setFillStyles(e,this),this.fillRule===`evenodd`?e.fill(`evenodd`):e.fill(),e.restore())}_renderStroke(e){if(this.stroke&&this.strokeWidth!==0){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform){let t=this.getObjectScaling();e.scale(1/t.x,1/t.y)}this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}}_applyPatternForTransformedGradient(e,t){var n;let r=this._limitCacheSize(this._getCacheCanvasDimensions()),i=this.getCanvasRetinaScaling(),a=r.x/this.scaleX/i,o=r.y/this.scaleY/i,s=F({width:Math.ceil(a),height:Math.ceil(o)}),c=s.getContext(`2d`);c&&(c.beginPath(),c.moveTo(0,0),c.lineTo(a,0),c.lineTo(a,o),c.lineTo(0,o),c.closePath(),c.translate(a/2,o/2),c.scale(r.zoomX/this.scaleX/i,r.zoomY/this.scaleY/i),this._applyPatternGradientTransform(c,t),c.fillStyle=t.toLive(e),c.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(i*this.scaleX/r.zoomX,i*this.scaleY/r.zoomY),e.strokeStyle=(n=c.createPattern(s,`no-repeat`))==null?``:n)}_findCenterFromElement(){return new N(this.left+this.width/2,this.top+this.height/2)}clone(e){let t=this.toObject(e);return this.constructor.fromObject(t)}cloneAsImage(e){let t=this.toCanvasElement(e);return new(M.getClass(`image`))(t)}toCanvasElement(e={}){let t=Lt(this),n=this.group,r=this.shadow,i=Math.abs,a=e.enableRetinaScaling?y():1,o=(e.multiplier||1)*a,s=e.canvasProvider||(e=>new Et(e,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1}));delete this.group,e.withoutTransform&&It(this),e.withoutShadow&&(this.shadow=null),e.viewportTransform&&Ht(this,this.getViewportTransform()),this.setCoords();let c=P(),l=this.getBoundingRect(),u=this.shadow,d=new N;if(u){let e=u.blur,t=u.nonScaling?new N(1,1):this.getObjectScaling();d.x=2*Math.round(i(u.offsetX)+e)*i(t.x),d.y=2*Math.round(i(u.offsetY)+e)*i(t.y)}let f=l.width+d.x,p=l.height+d.y;c.width=Math.ceil(f),c.height=Math.ceil(p);let m=s(c);e.format===`jpeg`&&(m.backgroundColor=`#fff`),this.setPositionByOrigin(new N(m.width/2,m.height/2),D,D);let h=this.canvas;m._objects=[this],this.set(`canvas`,m),this.setCoords();let g=m.toCanvasElement(o||1,e);return this.set(`canvas`,h),this.shadow=r,n&&(this.group=n),this.set(t),this.setCoords(),m._objects=[],m.destroy(),g}toDataURL(e={}){return Fe(this.toCanvasElement(e),e.format||`png`,e.quality||1)}toBlob(e={}){return Le(this.toCanvasElement(e),e.format||`png`,e.quality||1)}isType(...e){return e.includes(this.constructor.type)||e.includes(this.type)}complexity(){return 1}toJSON(){return this.toObject()}rotate(e){let{centeredRotation:t,originX:n,originY:r}=this;if(t){let{x:e,y:t}=this.getRelativeCenterPoint();this.originX=D,this.originY=D,this.left=e,this.top=t}if(this.set(`angle`,e),t){let{x:e,y:t}=this.getPositionByOrigin(n,r);this.left=e,this.top=t,this.originX=n,this.originY=r}}setOnGroup(){}_setupCompositeOperation(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)}dispose(){be.cancelByTarget(this),this.off(),this._set(`canvas`,void 0),this._cacheCanvas&&g().dispose(this._cacheCanvas),this._cacheCanvas=void 0,this._cacheContext=null}animate(e,t){return Object.entries(e).reduce((e,[n,r])=>(e[n]=this._animate(n,r,t),e),{})}_animate(e,t,n={}){let r=e.split(`.`),i=this.constructor.colorProperties.includes(r[r.length-1]),{abort:a,startValue:o,onChange:s,onComplete:c}=n,l={...n,target:this,startValue:o==null?r.reduce((e,t)=>e[t],this):o,endValue:t,abort:a==null?void 0:a.bind(this),onChange:(e,t,n)=>{r.reduce((t,n,i)=>(i===r.length-1&&(t[n]=e),t[n]),this),s&&s(e,t,n)},onComplete:(e,t,n)=>{this.setCoords(),c&&c(e,t,n)}};return i?di(l):ui(l)}isDescendantOf(e){let{parent:t,group:n}=this;return t===e||n===e||!!t&&t.isDescendantOf(e)||!!n&&n!==t&&n.isDescendantOf(e)}getAncestors(){let e=[],t=this.parent;for(;t;)e.push(t),t=t.parent;return e}findCommonAncestors(e){if(this===e)return{fork:[],otherFork:[],common:[this,...this.getAncestors()]};let t=this.getAncestors(),n=e.getAncestors();if(t.length===0&&n.length>0&&this===n[n.length-1])return{fork:[],otherFork:[e,...n.slice(0,n.length-1)],common:[this]};for(let r=0,i;r<t.length;r++){if(i=t[r],i===e)return{fork:[this,...t.slice(0,r)],otherFork:[],common:t.slice(r)};for(let a=0;a<n.length;a++){if(this===n[a])return{fork:[],otherFork:[e,...n.slice(0,a)],common:[this,...t]};if(i===n[a])return{fork:[this,...t.slice(0,r)],otherFork:[e,...n.slice(0,a)],common:t.slice(r)}}}return{fork:[this,...t],otherFork:[e,...n],common:[]}}hasCommonAncestors(e){let t=this.findCommonAncestors(e);return t&&!!t.common.length}isInFrontOf(e){if(this===e)return;let t=this.findCommonAncestors(e);if(t.fork.includes(e))return!0;if(t.otherFork.includes(this))return!1;let n=t.common[0]||this.canvas;if(!n)return;let r=t.fork.pop(),i=t.otherFork.pop(),a=n._objects.indexOf(r),o=n._objects.indexOf(i);return a>-1&&a>o}toObject(t=[]){let n=t.concat(e.customProperties,this.constructor.customProperties||[]),r,i=c.NUM_FRACTION_DIGITS,{clipPath:a,fill:o,stroke:s,shadow:l,strokeDashArray:u,left:d,top:f,originX:p,originY:m,width:h,height:g,strokeWidth:_,strokeLineCap:v,strokeDashOffset:y,strokeLineJoin:b,strokeUniform:S,strokeMiterLimit:C,scaleX:w,scaleY:T,angle:ee,flipX:E,flipY:D,opacity:O,visible:te,backgroundColor:k,fillRule:ne,paintFirst:re,globalCompositeOperation:ie,skewX:ae,skewY:oe}=this;a&&!a.excludeFromExport&&(r=a.toObject(n.concat(`inverted`,`absolutePositioned`)));let A=e=>B(e,i),se={...nt(this,n),type:this.constructor.type,version:x,originX:p,originY:m,left:A(d),top:A(f),width:A(h),height:A(g),fill:at(o)?o.toObject():o,stroke:at(s)?s.toObject():s,strokeWidth:A(_),strokeDashArray:u&&u.concat(),strokeLineCap:v,strokeDashOffset:y,strokeLineJoin:b,strokeUniform:S,strokeMiterLimit:A(C),scaleX:A(w),scaleY:A(T),angle:A(ee),flipX:E,flipY:D,opacity:A(O),shadow:l&&l.toObject(),visible:te,backgroundColor:k,fillRule:ne,paintFirst:re,globalCompositeOperation:ie,skewX:A(ae),skewY:A(oe),...r?{clipPath:r}:null};return this.includeDefaultValues?se:this._removeDefaultValues(se)}toDatalessObject(e){return this.toObject(e)}_removeDefaultValues(e){let t=this.constructor.getDefaults(),n=Object.keys(t).length>0?t:Object.getPrototypeOf(this);return rt(e,(e,t)=>{if(t===`left`||t===`top`||t===`type`)return!0;let r=n[t];return e!==r&&!(Array.isArray(e)&&Array.isArray(r)&&e.length===0&&r.length===0)})}toString(){return`#<${this.constructor.type}>`}static _fromObject({type:e,...t},{extraParam:n,...r}={}){return tt(t,r).then(e=>n?(delete e[n],new this(t[n],e)):new this(e))}static fromObject(e,t){return this._fromObject(e,t)}};o(mi,`stateProperties`,vr),o(mi,`cacheProperties`,yr),o(mi,`ownDefaults`,br),o(mi,`type`,`FabricObject`),o(mi,`colorProperties`,[j,ge,`backgroundColor`]),o(mi,`customProperties`,[]),M.setClass(mi),M.setClass(mi,`object`);let hi=(e,t)=>{var n;let{transform:{target:r}}=t;(n=r.canvas)==null||n.fire(`object:${e}`,{...t,target:r}),r.fire(e,t)},gi=(e,t,n)=>((r,i,a,o)=>{let s=t(r,i,a,o);return s&&hi(e,{...sn(r,i,a,o),...n}),s});function _i(e){return((t,n,r,i)=>{let{target:a,originX:o,originY:s}=n,c=a.getPositionByOrigin(o,s),l=e(t,n,r,i);return a.setPositionByOrigin(c,n.originX,n.originY),l})}let vi=(e,t,n,r)=>(i,a,o,s)=>{let c=un(a,a.originX,a.originY,o,s)[n],l=U(a[t]);if(l===0||l>0&&c<0||l<0&&c>0){let{target:t}=a,n=t.strokeWidth/(t.strokeUniform?t[r]:1),i=an(a)?2:1,o=t[e],s=Math.abs(c*i/t[r])-n;return t.set(e,Math.max(s,1)),o!==t[e]}return!1},yi=vi(`width`,`originX`,`x`,`scaleX`),bi=vi(`height`,`originY`,`y`,`scaleY`),xi=gi(ce,_i(yi)),Si=gi(ce,_i(bi));function Ci(e,t,n,r,i){e.save();let{stroke:a,xSize:o,ySize:s,opName:c}=this.commonRenderProps(e,t,n,i,r),l=o;o>s?e.scale(1,s/o):s>o&&(l=s,e.scale(o/s,1)),e.beginPath(),e.arc(0,0,l/2,0,T,!1),e[c](),a&&e.stroke(),e.restore()}function wi(e,t,n,r,i){e.save();let{stroke:a,xSize:o,ySize:s,opName:c}=this.commonRenderProps(e,t,n,i,r),l=o/2,u=s/2;e[`${c}Rect`](-l,-u,o,s),a&&e.strokeRect(-l,-u,o,s),e.restore()}var q=class{constructor(e){o(this,`visible`,!0),o(this,`actionName`,de),o(this,`angle`,0),o(this,`x`,0),o(this,`y`,0),o(this,`offsetX`,0),o(this,`offsetY`,0),o(this,`sizeX`,0),o(this,`sizeY`,0),o(this,`touchSizeX`,0),o(this,`touchSizeY`,0),o(this,`cursorStyle`,`crosshair`),o(this,`withConnection`,!1),Object.assign(this,e)}getTransformAnchorPoint(){var e;return(e=this.transformAnchorPoint)==null?new N(-this.x+.5,-this.y+.5):e}shouldActivate(e,t,n,{tl:r,tr:i,br:a,bl:o}){var s;return((s=t.canvas)==null?void 0:s.getActiveObject())===t&&t.isControlVisible(e)&&fi.isPointInPolygon(n,[r,i,a,o])}getActionHandler(e,t,n){return this.actionHandler}getMouseDownHandler(e,t,n){return this.mouseDownHandler}getMouseUpHandler(e,t,n){return this.mouseUpHandler}cursorStyleHandler(e,t,n,r){return t.cursorStyle}getActionName(e,t,n){return t.actionName}getVisibility(e,t){var n,r;return(n=(r=e._controlsVisibility)==null?void 0:r[t])==null?this.visible:n}setVisibility(e,t,n){this.visible=e}positionHandler(e,t,n,r){return new N(this.x*e.x+this.offsetX,this.y*e.y+this.offsetY).transform(t)}calcCornerCoords(e,t,n,r,i,a){let o=Be([Ge(n,r),Ke({angle:e}),qe((i?this.touchSizeX:this.sizeX)||t,(i?this.touchSizeY:this.sizeY)||t)]);return{tl:new N(-.5,-.5).transform(o),tr:new N(.5,-.5).transform(o),br:new N(.5,.5).transform(o),bl:new N(-.5,.5).transform(o)}}commonRenderProps(e,t,n,r,i={}){let{cornerSize:a,cornerColor:o,transparentCorners:s,cornerStrokeColor:c}=i,l=a||r.cornerSize,u=this.sizeX||l,d=this.sizeY||l,f=s===void 0?r.transparentCorners:s,p=f?ge:j,m=c||r.cornerStrokeColor,h=!f&&!!m;return e.fillStyle=o||r.cornerColor||``,e.strokeStyle=m||``,e.translate(t,n),e.rotate(I(r.getTotalAngle())),{stroke:h,xSize:u,ySize:d,transparentCorners:f,opName:p}}render(e,t,n,r,i){switch(r=r||{},r.cornerStyle||i.cornerStyle){case`circle`:Ci.call(this,e,t,n,r,i);break;default:wi.call(this,e,t,n,r,i)}}};let Ti=(e,t,n)=>n.lockRotation?nn:t.cursorStyle,Ei=gi(oe,_i((e,{target:t,ex:n,ey:r,theta:i,originX:a,originY:o},s,c)=>{let l=t.getPositionByOrigin(a,o);if(W(t,`lockRotation`))return!1;let u=Math.atan2(r-l.y,n-l.x),d=Math.atan2(c-l.y,s-l.x),f=Re(d-u+i);if(t.snapAngle&&t.snapAngle>0){let e=t.snapAngle,n=t.snapThreshold||e,r=Math.ceil(f/e)*e,i=Math.floor(f/e)*e;Math.abs(f-i)<n?f=i:Math.abs(f-r)<n&&(f=r)}f<0&&(f=360+f),f%=360;let p=t.angle!==f;return t.angle=f,p}));function Di(e,t){let n=t.canvas,r=e[n.uniScaleKey];return n.uniformScaling&&!r||!n.uniformScaling&&r}function Oi(e,t,n){let r=W(e,`lockScalingX`),i=W(e,`lockScalingY`);if(r&&i||!t&&(r||i)&&n||r&&t===`x`||i&&t===`y`)return!0;let{width:a,height:o,strokeWidth:s}=e;return a===0&&s===0&&t!==`y`||o===0&&s===0&&t!==`x`}let ki=[`e`,`se`,`s`,`sw`,`w`,`nw`,`n`,`ne`,`e`],Ai=(e,t,n,r)=>{let i=cn(n,t,r);return`${ki[i]}-resize`},ji=(e,t,n,r)=>{let i=Di(e,n);return Oi(n,t.x!==0&&t.y===0?`x`:t.x===0&&t.y!==0?`y`:``,i)?nn:Ai(e,t,n,r)};function Mi(e,t,n,r,i={}){let a=t.target,o=i.by,s=Di(e,a),c=Oi(a,o,s),l,u,d,f,p,m;if(c)return!1;if(t.gestureScale)u=t.scaleX*t.gestureScale,d=t.scaleY*t.gestureScale;else{if(l=un(t,t.originX,t.originY,n,r),p=o===`y`?1:Math.sign(l.x||t.signX||1),m=o===`x`?1:Math.sign(l.y||t.signY||1),t.signX||(t.signX=p),t.signY||(t.signY=m),W(a,`lockScalingFlip`)&&(t.signX!==p||t.signY!==m))return!1;if(f=a._getTransformedDimensions(),s&&!o){let e=Math.abs(l.x)+Math.abs(l.y),{original:n}=t,r=e/(Math.abs(f.x*n.scaleX/a.scaleX)+Math.abs(f.y*n.scaleY/a.scaleY));u=n.scaleX*r,d=n.scaleY*r}else u=Math.abs(l.x*a.scaleX/f.x),d=Math.abs(l.y*a.scaleY/f.y);an(t)&&(u*=2,d*=2),t.signX!==p&&o!==`y`&&(t.originX=on(t.originX),u*=-1,t.signX=p),t.signY!==m&&o!==`x`&&(t.originY=on(t.originY),d*=-1,t.signY=m)}let h=a.scaleX,g=a.scaleY;return o?(o===`x`&&a.set(`scaleX`,u),o===`y`&&a.set(`scaleY`,d)):(!W(a,`lockScalingX`)&&a.set(`scaleX`,u),!W(a,`lockScalingY`)&&a.set(`scaleY`,d)),h!==a.scaleX||g!==a.scaleY}let Ni=(e,t,n,r)=>Mi(e,t,n,r),Pi=(e,t,n,r)=>Mi(e,t,n,r,{by:`x`}),Fi=(e,t,n,r)=>Mi(e,t,n,r,{by:`y`}),Ii=gi(ae,_i(Ni)),Li=gi(ae,_i(Pi)),Ri=gi(ae,_i(Fi)),zi={x:{counterAxis:`y`,scale:fe,skew:me,lockSkewing:`lockSkewingX`,origin:`originX`,flip:`flipX`},y:{counterAxis:`x`,scale:pe,skew:he,lockSkewing:`lockSkewingY`,origin:`originY`,flip:`flipY`}},Bi=[`ns`,`nesw`,`ew`,`nwse`],Vi=(e,t,n,r)=>{if(t.x!==0&&W(n,`lockSkewingY`)||t.y!==0&&W(n,`lockSkewingX`))return nn;let i=cn(n,t,r)%4;return`${Bi[i]}-resize`};function Hi(e,{target:t,ex:n,ey:r,skewingSide:i,...a},o){let{skew:s}=zi[e],c=o.subtract(new N(n,r)).divide(new N(t.scaleX,t.scaleY))[e],l=t[s],u=a[s],d=Math.tan(I(u)),f=e===`y`?t._getTransformedDimensions({scaleX:1,scaleY:1,skewX:0}).x:t._getTransformedDimensions({scaleX:1,scaleY:1}).y,p=2*c*i/Math.max(f,1)+d,m=Re(Math.atan(p));t.set(s,m);let h=l!==t[s];if(h&&e===`y`){let{skewX:e,scaleX:n}=t,r=t._getTransformedDimensions({skewY:l}),i=t._getTransformedDimensions(),a=e===0?1:r.x/i.x;a!==1&&t.set(`scaleX`,a*n)}return h}function Ui(e,t,n,r,i){let{target:a}=n,{counterAxis:o,origin:s,lockSkewing:c,skew:l,flip:u}=zi[e];if(W(a,c))return!1;let{origin:d,flip:f}=zi[o],p=U(n[d])*(a[f]?-1:1),m=-Math.sign(p)*(a[u]?-1:1),h=-((a[l]===0&&un(n,`center`,`center`,r,i)[e]>0||a[l]>0?1:-1)*m)*.5+.5;return gi(se,_i((t,n,r,i)=>Hi(e,n,new N(r,i))))(t,{...n,[s]:h,skewingSide:m},r,i)}let Wi=(e,t,n,r)=>Ui(`x`,e,t,n,r),Gi=(e,t,n,r)=>Ui(`y`,e,t,n,r);function Ki(e,t){return e[t.canvas.altActionKey]}let qi=(e,t,n)=>{let r=Ki(e,n);return t.x===0?r?me:pe:t.y===0?r?he:fe:``},Ji=(e,t,n,r)=>Ki(e,n)?Vi(e,t,n,r):ji(e,t,n,r),Yi=(e,t,n,r)=>Ki(e,t.target)?Gi(e,t,n,r):Li(e,t,n,r),Xi=(e,t,n,r)=>Ki(e,t.target)?Wi(e,t,n,r):Ri(e,t,n,r),Zi=()=>({ml:new q({x:-.5,y:0,cursorStyleHandler:Ji,actionHandler:Yi,getActionName:qi}),mr:new q({x:.5,y:0,cursorStyleHandler:Ji,actionHandler:Yi,getActionName:qi}),mb:new q({x:0,y:.5,cursorStyleHandler:Ji,actionHandler:Xi,getActionName:qi}),mt:new q({x:0,y:-.5,cursorStyleHandler:Ji,actionHandler:Xi,getActionName:qi}),tl:new q({x:-.5,y:-.5,cursorStyleHandler:ji,actionHandler:Ii}),tr:new q({x:.5,y:-.5,cursorStyleHandler:ji,actionHandler:Ii}),bl:new q({x:-.5,y:.5,cursorStyleHandler:ji,actionHandler:Ii}),br:new q({x:.5,y:.5,cursorStyleHandler:ji,actionHandler:Ii}),mtr:new q({x:0,y:-.5,actionHandler:Ei,cursorStyleHandler:Ti,offsetY:-40,withConnection:!0,actionName:A})}),Qi=()=>({mr:new q({x:.5,y:0,actionHandler:xi,cursorStyleHandler:Ai,actionName:ce}),ml:new q({x:-.5,y:0,actionHandler:xi,cursorStyleHandler:Ai,actionName:ce})}),$i=()=>({...Zi(),...Qi()});var ea=class e extends mi{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,this.constructor.createControls(),e.ownDefaults),this.setOptions(t)}static createControls(){return{controls:Zi()}}_updateCacheCanvas(){let e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){let t=e._currentTransform,n=t.target,r=t.action;if(this===n&&r&&r.startsWith(`scale`))return!1}return super._updateCacheCanvas()}getActiveControl(){let e=this.__corner;return e?{key:e,control:this.controls[e],coord:this.oCoords[e]}:void 0}findControl(e,t=!1){if(!this.hasControls||!this.canvas)return;this.__corner=void 0;let n=Object.entries(this.oCoords);for(let r=n.length-1;r>=0;r--){let[i,a]=n[r],o=this.controls[i];if(o.shouldActivate(i,this,e,t?a.touchCorner:a.corner))return this.__corner=i,{key:i,control:o,coord:this.oCoords[i]}}}calcOCoords(){let e=this.getViewportTransform(),t=He(e),n=Ue(e),r=this.getCenterPoint(),i=Ge(r.x,r.y),a=Ke({angle:this.getTotalAngle()-(this.group&&this.flipX?180:0)}),o=z(i,a),s=z(e,o),c=z(s,[1/t,0,0,1/n,0,0]),l=this.group?We(this.calcTransformMatrix()):void 0;l&&(l.scaleX=Math.abs(l.scaleX),l.scaleY=Math.abs(l.scaleY));let u=this._calculateCurrentDimensions(l),d={};return this.forEachControl((e,t)=>{let n=e.positionHandler(u,c,this,e);d[t]=Object.assign(n,this._calcCornerCoords(e,n))}),d}_calcCornerCoords(e,t){let n=this.getTotalAngle();return{corner:e.calcCornerCoords(n,this.cornerSize,t.x,t.y,!1,this),touchCorner:e.calcCornerCoords(n,this.touchCornerSize,t.x,t.y,!0,this)}}setCoords(){super.setCoords(),this.canvas&&(this.oCoords=this.calcOCoords())}forEachControl(e){for(let t in this.controls)e(this.controls[t],t,this)}drawSelectionBackground(e){if(!this.selectionBackgroundColor||this.canvas&&this.canvas._activeObject!==this)return;e.save();let t=this.getRelativeCenterPoint(),n=this._calculateCurrentDimensions(),r=this.getViewportTransform();e.translate(t.x,t.y),e.scale(1/r[0],1/r[3]),e.rotate(I(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-n.x/2,-n.y/2,n.x,n.y),e.restore()}strokeBorders(e,t){e.strokeRect(-t.x/2,-t.y/2,t.x,t.y)}_drawBorders(e,t,n={}){let r={hasControls:this.hasControls,borderColor:this.borderColor,borderDashArray:this.borderDashArray,...n};e.save(),e.strokeStyle=r.borderColor,this._setLineDash(e,r.borderDashArray),this.strokeBorders(e,t),r.hasControls&&this.drawControlsConnectingLines(e,t),e.restore()}_renderControls(e,t={}){let{hasBorders:n,hasControls:r}=this,i={hasBorders:n,hasControls:r,...t},a=this.getViewportTransform(),o=i.hasBorders,s=i.hasControls,c=z(a,this.calcTransformMatrix()),l=We(c);e.save(),e.translate(l.translateX,l.translateY),e.lineWidth=this.borderScaleFactor,this.group===this.parent&&(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(l.angle-=180);let u=Ve(a);e.rotate(this.group?I(l.angle):I(this.angle)+u),o&&this.drawBorders(e,l,t),s&&this.drawControls(e,t),e.restore()}drawBorders(e,t,n){let r;if(n&&n.forActiveSelection||this.group){let e=Rt(this.width,this.height,Ze(t)),n=this.isStrokeAccountedForInDimensions()?Te:(this.strokeUniform?new N().scalarAdd(this.canvas?this.canvas.getZoom():1):new N(t.scaleX,t.scaleY)).scalarMultiply(this.strokeWidth);r=e.add(n).scalarAdd(this.borderScaleFactor).scalarAdd(this.padding*2)}else r=this._calculateCurrentDimensions().scalarAdd(this.borderScaleFactor);this._drawBorders(e,r,n)}drawControlsConnectingLines(e,t){let n=!1;e.beginPath(),this.forEachControl((r,i)=>{r.withConnection&&r.getVisibility(this,i)&&(n=!0,e.moveTo(r.x*t.x,r.y*t.y),e.lineTo(r.x*t.x+r.offsetX,r.y*t.y+r.offsetY))}),n&&e.stroke()}drawControls(e,t={}){e.save();let n=this.getCanvasRetinaScaling(),{cornerStrokeColor:r,cornerDashArray:i,cornerColor:a}=this,o={cornerStrokeColor:r,cornerDashArray:i,cornerColor:a,...t};e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=o.cornerColor,this.transparentCorners||(e.strokeStyle=o.cornerStrokeColor),this._setLineDash(e,o.cornerDashArray),this.forEachControl((t,n)=>{if(t.getVisibility(this,n)){let r=this.oCoords[n];t.render(e,r.x,r.y,o,this)}}),e.restore()}isControlVisible(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)}setControlVisible(e,t){this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t}setControlsVisibility(e={}){Object.entries(e).forEach(([e,t])=>this.setControlVisible(e,t))}clearContextTop(e){if(!this.canvas)return;let t=this.canvas.contextTop;if(!t)return;let n=this.canvas.viewportTransform;t.save(),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this.transform(t);let r=this.width+4,i=this.height+4;return t.clearRect(-r/2,-i/2,r,i),e||t.restore(),t}onDeselect(e){return!1}onSelect(e){return!1}shouldStartDragging(e){return!1}onDragStart(e){return!1}canDrop(e){return!1}renderDragSourceEffect(e){}renderDropTargetEffect(e){}};o(ea,`ownDefaults`,xr);function ta(e,t){return t.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(n=>{n!==`constructor`&&Object.defineProperty(e.prototype,n,Object.getOwnPropertyDescriptor(t.prototype,n)||Object.create(null))})}),e}var J=class extends ea{};ta(J,[Vn]),M.setClass(J),M.setClass(J,`object`);let na=[`display`,`transform`,j,`fill-opacity`,`fill-rule`,`opacity`,ge,`stroke-dasharray`,`stroke-linecap`,`stroke-dashoffset`,`stroke-linejoin`,`stroke-miterlimit`,`stroke-opacity`,`stroke-width`,`id`,`paint-order`,`vector-effect`,`instantiated_by_use`,`clip-path`];function ra(e,t){let n=e.nodeName,r=e.getAttribute(`class`),i=e.getAttribute(`id`),a=`(?![a-zA-Z\\-]+)`,o;if(o=RegExp(`^`+n,`i`),t=t.replace(o,``),i&&t.length&&(o=RegExp(`#`+i+a,`i`),t=t.replace(o,``)),r&&t.length){let e=r.split(` `);for(let n=e.length;n--;)o=RegExp(`\\.`+e[n]+a,`i`),t=t.replace(o,``)}return t.length===0}function ia(e,t){let n,r=!0;for(;e.parentElement&&e.parentElement.nodeType===1&&t.length;)r&&(n=t.pop()),e=e.parentElement,r=ra(e,n);return t.length===0}function aa(e,t){let n=!0,r=ra(e,t.pop());return r&&t.length&&(n=ia(e,t)),r&&n&&t.length===0}function oa(e,t={}){let n={};for(let r in t)aa(e,r.split(` `))&&(n={...n,...t[r]});return n}let sa=e=>{var t;return(t=or[e])==null?e:t},ca=RegExp(`(${Qn})`,`gi`),la=e=>Sn(e.replace(ca,` $1 `).replace(/,/gi,` `)),Y=`(${Qn})`,ua=String.raw`(skewX)\(${Y}\)`,da=String.raw`(skewY)\(${Y}\)`,fa=String.raw`(rotate)\(${Y}(?: ${Y} ${Y})?\)`,pa=String.raw`(scale)\(${Y}(?: ${Y})?\)`,ma=String.raw`(translate)\(${Y}(?: ${Y})?\)`,ha=`(?:${String.raw`(matrix)\(${Y} ${Y} ${Y} ${Y} ${Y} ${Y}\)`}|${ma}|${fa}|${pa}|${ua}|${da})`,ga=`(?:${ha}*)`,_a=String.raw`^\s*(?:${ga}?)\s*$`,va=new RegExp(_a),ya=new RegExp(ha),ba=new RegExp(ha,`g`);function xa(e){e=la(e).replace(/\s*([()])\s*/gi,`$1`);let t=[];if(!e||e&&!va.test(e))return[...E];for(let n of e.matchAll(ba)){let e=ya.exec(n[0]);if(!e)continue;let r=E,[,i,...a]=e.filter(e=>!!e),[o,s,c,l,u,d]=a.map(e=>parseFloat(e));switch(i){case`translate`:r=Ge(o,s);break;case A:r=Ke({angle:o},{x:s,y:c});break;case de:r=qe(o,s);break;case me:r=Ye(o);break;case he:r=Xe(o);break;case`matrix`:r=[o,s,c,l,u,d]}t.push(r)}return Be(t)}function Sa(e,t,n,r){let i=Array.isArray(t),a,o=t;if((e===`fill`||e===`stroke`)&&t===`none`)o=``;else if(e===`strokeUniform`)return t===`non-scaling-stroke`;else if(e===`strokeDashArray`)o=t===`none`?null:t.replace(/,/g,` `).split(/\s+/).map(parseFloat);else if(e===`transformMatrix`)o=n&&n.transformMatrix?z(n.transformMatrix,xa(t)):xa(t);else if(e===`visible`)o=t!==`none`&&t!==`hidden`,n&&n.visible===!1&&(o=!1);else if(e===`opacity`)o=parseFloat(t),n&&n.opacity!==void 0&&(o*=n.opacity);else if(e===`textAnchor`)o=t===`start`?O:t===`end`?k:D;else if(e===`charSpacing`||e===`textDecorationThickness`)a=K(t,r)/r*1e3;else if(e===`paintFirst`){let e=t.indexOf(j),n=t.indexOf(ge);o=j,(e>-1&&n>-1&&n<e||e===-1&&n>-1)&&(o=ge)}else if(e===`href`||e===`xlink:href`||e===`font`||e===`id`)return t;else if(e===`imageSmoothing`)return t===`optimizeQuality`;else a=i?t.map(K):K(t,r);return!i&&isNaN(a)?o:a}function Ca(e,t){let n=e.match(tr);if(!n)return;let r=n[1],i=n[3],a=n[4],o=n[5],s=n[6];r&&(t.fontStyle=r),i&&(t.fontWeight=isNaN(parseFloat(i))?i:parseFloat(i)),a&&(t.fontSize=K(a)),s&&(t.fontFamily=s),o&&(t.lineHeight=o===`normal`?1:o)}function wa(e,t){Object.entries(e).forEach(([e,n])=>{n!==void 0&&(t[e.toLowerCase()]=n)})}function Ta(e,t){e.replace(/;\s*$/,``).split(`;`).forEach(e=>{let[n,r]=e.split(`:`);r!==void 0&&(t[n.trim().toLowerCase()]=r.trim())})}function Ea(e){let t={},n=e.getAttribute(`style`);return n&&(typeof n==`string`?Ta(n,t):wa(n,t)),t}let Da={stroke:`strokeOpacity`,fill:`fillOpacity`};function Oa(e){let t=J.getDefaults();return Object.entries(Da).forEach(([n,r])=>{if(e[r]===void 0||e[n]===``)return;if(e[n]===void 0){if(!t[n])return;e[n]=t[n]}if(e[n].indexOf(`url(`)===0)return;let i=new G(e[n]);e[n]=i.setAlpha(B(i.getAlpha()*e[r],2)).toRgba()}),e}function ka(e,t,n){if(!e)return{};let r={},i,a=16;e.parentNode&&dr.test(e.parentNode.nodeName)&&(r=ka(e.parentElement,t,n),r.fontSize&&(i=a=K(r.fontSize)));let o={...t.reduce((t,n)=>{let r=e.getAttribute(n);return r&&(t[n]=r),t},{}),...oa(e,n),...Ea(e)};o[`clip-path`]&&e.setAttribute(cr,o[cr]),o[`font-size`]&&(i=K(o[sr],a),o[sr]=`${i}`);let s={};for(let e in o){let t=sa(e);s[t]=Sa(t,o[e],r,i)}s&&s.font&&Ca(s.font,s);let c={...r,...s};return dr.test(e.nodeName)?c:Oa(c)}let Aa={rx:0,ry:0},ja=[`rx`,`ry`];var Ma=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t),this._initRxRy()}_initRxRy(){let{rx:e,ry:t}=this;e&&!t?this.ry=e:t&&!e&&(this.rx=t)}_render(e){let{width:t,height:n}=this,r=-t/2,i=-n/2,a=this.rx?Math.min(this.rx,t/2):0,o=this.ry?Math.min(this.ry,n/2):0,s=a!==0||o!==0;e.beginPath(),e.moveTo(r+a,i),e.lineTo(r+t-a,i),s&&e.bezierCurveTo(r+t-.4477152502*a,i,r+t,i+.4477152502*o,r+t,i+o),e.lineTo(r+t,i+n-o),s&&e.bezierCurveTo(r+t,i+n-.4477152502*o,r+t-.4477152502*a,i+n,r+t-a,i+n),e.lineTo(r+a,i+n),s&&e.bezierCurveTo(r+.4477152502*a,i+n,r,i+n-.4477152502*o,r,i+n-o),e.lineTo(r,i+o),s&&e.bezierCurveTo(r,i+.4477152502*o,r+.4477152502*a,i,r+a,i),e.closePath(),this._renderPaintInOrder(e)}toObject(e=[]){return super.toObject([...ja,...e])}_toSVG(){let{width:e,height:t,rx:n,ry:r}=this;return[`<rect `,`COMMON_PARTS`,`x="${-e/2}" y="${-t/2}" rx="${H(n)}" ry="${H(r)}" width="${H(e)}" height="${H(t)}" />\n`]}static async fromElement(e,t,n){let{left:r=0,top:i=0,width:a=0,height:o=0,visible:s=!0,...c}=ka(e,this.ATTRIBUTE_NAMES,n);return new this({...t,...c,left:r,top:i,width:a,height:o,visible:!!(s&&a&&o)})}};o(Ma,`type`,`Rect`),o(Ma,`cacheProperties`,[...yr,...ja]),o(Ma,`ownDefaults`,Aa),o(Ma,`ATTRIBUTE_NAMES`,[...na,`x`,`y`,`rx`,`ry`,`width`,`height`]),M.setClass(Ma),M.setSVGClass(Ma);let Na=`initialization`,Pa=`added`,Fa=(e,t)=>{let{strokeUniform:n,strokeWidth:r,width:i,height:a,group:o}=t,s=o&&o!==e?zt(o.calcTransformMatrix(),e.calcTransformMatrix()):null,c=s?t.getRelativeCenterPoint().transform(s):t.getRelativeCenterPoint(),l=!t.isStrokeAccountedForInDimensions(),u=n&&l?Vt(new N(r,r),void 0,e.calcTransformMatrix()):Te,d=!n&&l?r:0,f=Rt(i+d,a+d,Be([s,t.calcOwnMatrix()],!0)).add(u).scalarDivide(2);return[c.subtract(f),c.add(f)]};var Ia=class{calcLayoutResult(e,t){if(this.shouldPerformLayout(e))return this.calcBoundingBox(t,e)}shouldPerformLayout({type:e,prevStrategy:t,strategy:n}){return e===`initialization`||e===`imperative`||!!t&&n!==t}shouldLayoutClipPath({type:e,target:{clipPath:t}}){return e!==`initialization`&&t&&!t.absolutePositioned}getInitialSize(e,t){return t.size}calcBoundingBox(e,t){let{type:n,target:r}=t;if(n===`imperative`&&t.overrides)return t.overrides;if(e.length===0)return;let{left:i,top:a,width:o,height:s}=Mt(e.map(e=>Fa(r,e)).reduce((e,t)=>e.concat(t),[])),c=new N(o,s),l=new N(i,a).add(c.scalarDivide(2));if(n===`initialization`){let e=this.getInitialSize(t,{size:c,center:l});return{center:l,relativeCorrection:new N(0,0),size:e}}return{center:l.transform(r.calcOwnMatrix()),size:c}}};o(Ia,`type`,`strategy`);var La=class extends Ia{shouldPerformLayout(e){return!0}};o(La,`type`,`fit-content`),M.setClass(La);let Ra=`layoutManager`;var za=class{constructor(e=new La){o(this,`strategy`,void 0),this.strategy=e,this._subscriptions=/* @__PURE__ */ new Map}performLayout(e){let t={bubbles:!0,strategy:this.strategy,...e,prevStrategy:this._prevLayoutStrategy,stopPropagation(){this.bubbles=!1}};this.onBeforeLayout(t);let n=this.getLayoutResult(t);n&&this.commitLayout(t,n),this.onAfterLayout(t,n),this._prevLayoutStrategy=t.strategy}attachHandlers(e,t){let{target:n}=t;return[_e,ie,ce,oe,ae,se,ue,le,`modifyPath`].map(t=>e.on(t,e=>this.performLayout(t===`modified`?{type:`object_modified`,trigger:t,e,target:n}:{type:`object_modifying`,trigger:t,e,target:n})))}subscribe(e,t){this.unsubscribe(e,t);let n=this.attachHandlers(e,t);this._subscriptions.set(e,n)}unsubscribe(e,t){(this._subscriptions.get(e)||[]).forEach(e=>e()),this._subscriptions.delete(e)}unsubscribeTargets(e){e.targets.forEach(t=>this.unsubscribe(t,e))}subscribeTargets(e){e.targets.forEach(t=>this.subscribe(t,e))}onBeforeLayout(e){let{target:t,type:n}=e,{canvas:r}=t;if(n===`initialization`||n===`added`?this.subscribeTargets(e):n===`removed`&&this.unsubscribeTargets(e),t.fire(`layout:before`,{context:e}),r&&r.fire(`object:layout:before`,{target:t,context:e}),n===`imperative`&&e.deep){let{strategy:n,...r}=e;t.forEachObject(e=>e.layoutManager&&e.layoutManager.performLayout({...r,bubbles:!1,target:e}))}}getLayoutResult(e){let{target:t,strategy:n,type:r}=e,i=n.calcLayoutResult(e,t.getObjects());if(!i)return;let a=r===`initialization`?new N:t.getRelativeCenterPoint(),{center:o,correction:s=new N,relativeCorrection:c=new N}=i;return{result:i,prevCenter:a,nextCenter:o,offset:a.subtract(o).add(s).transform(r===`initialization`?E:R(t.calcOwnMatrix()),!0).add(c)}}commitLayout(e,t){let{target:n}=e,{result:{size:r},nextCenter:i}=t;if(n.set({width:r.x,height:r.y}),this.layoutObjects(e,t),e.type===`initialization`){var a,o;n.set({left:(a=e.x)==null?i.x+r.x*U(n.originX):a,top:(o=e.y)==null?i.y+r.y*U(n.originY):o})}else n.setPositionByOrigin(i,D,D),n.setCoords(),n.set(`dirty`,!0)}layoutObjects(e,t){let{target:n}=e;n.forEachObject(r=>{r.group===n&&this.layoutObject(e,t,r)}),e.strategy.shouldLayoutClipPath(e)&&this.layoutObject(e,t,n.clipPath)}layoutObject(e,{offset:t},n){n.set({left:n.left+t.x,top:n.top+t.y})}onAfterLayout(e,t){let{target:n,strategy:r,bubbles:i,prevStrategy:a,...o}=e,{canvas:s}=n;n.fire(`layout:after`,{context:e,result:t}),s&&s.fire(`object:layout:after`,{context:e,result:t,target:n});let c=n.parent;i&&c!=null&&c.layoutManager&&((o.path||(o.path=[])).push(n),c.layoutManager.performLayout({...o,target:c})),n.set(`dirty`,!0)}dispose(){let{_subscriptions:e}=this;e.forEach(e=>e.forEach(e=>e())),e.clear()}toObject(){return{type:Ra,strategy:this.strategy.constructor.type}}toJSON(){return this.toObject()}};M.setClass(za,Ra);var Ba=class extends za{performLayout(){}};let Va={strokeWidth:0,subTargetCheck:!1,interactive:!1};var Ha=class e extends De(J){static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),o(this,`_activeObjects`,[]),o(this,`__objectSelectionTracker`,void 0),o(this,`__objectSelectionDisposer`,void 0),Object.assign(this,e.ownDefaults),this.setOptions(n),this.groupInit(t,n)}groupInit(e,t){var n;this._objects=[...e],this.__objectSelectionTracker=this.__objectSelectionMonitor.bind(this,!0),this.__objectSelectionDisposer=this.__objectSelectionMonitor.bind(this,!1),this.forEachObject(e=>{this.enterGroup(e,!1)}),this.layoutManager=(n=t.layoutManager)==null?new za:n,this.layoutManager.performLayout({type:Na,target:this,targets:[...e],x:t.left,y:t.top})}canEnterGroup(e){return e===this||this.isDescendantOf(e)?(l(`error`,`Group: circular object trees are not supported, this call has no effect`),!1):this._objects.indexOf(e)===-1||(l(`error`,`Group: duplicate objects are not supported inside group, this call has no effect`),!1)}_filterObjectsBeforeEnteringGroup(e){return e.filter((e,t,n)=>this.canEnterGroup(e)&&n.indexOf(e)===t)}add(...e){let t=this._filterObjectsBeforeEnteringGroup(e),n=super.add(...t);return this._onAfterObjectsChange(Pa,t),n}insertAt(e,...t){let n=this._filterObjectsBeforeEnteringGroup(t),r=super.insertAt(e,...n);return this._onAfterObjectsChange(Pa,n),r}remove(...e){let t=super.remove(...e);return this._onAfterObjectsChange(`removed`,t),t}_onObjectAdded(e){this.enterGroup(e,!0),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e,t){this.exitGroup(e,t),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onAfterObjectsChange(e,t){this.layoutManager.performLayout({type:e,targets:t,target:this})}_onStackOrderChanged(){this._set(`dirty`,!0)}_set(e,t){let n=this[e];return super._set(e,t),e===`canvas`&&n!==t&&(this._objects||[]).forEach(n=>{n._set(e,t)}),this}_shouldSetNestedCoords(){return this.subTargetCheck}removeAll(){return this._activeObjects=[],this.remove(...this._objects)}__objectSelectionMonitor(e,{target:t}){let n=this._activeObjects;if(e)n.push(t),this._set(`dirty`,!0);else if(n.length>0){let e=n.indexOf(t);e>-1&&(n.splice(e,1),this._set(`dirty`,!0))}}_watchObject(e,t){e&&this._watchObject(!1,t),e?(t.on(`selected`,this.__objectSelectionTracker),t.on(`deselected`,this.__objectSelectionDisposer)):(t.off(`selected`,this.__objectSelectionTracker),t.off(`deselected`,this.__objectSelectionDisposer))}enterGroup(e,t){e.group&&e.group.remove(e),e._set(`parent`,this),this._enterGroup(e,t)}_enterGroup(e,t){t&&Ft(e,z(R(this.calcTransformMatrix()),e.calcTransformMatrix())),this._shouldSetNestedCoords()&&e.setCoords(),e._set(`group`,this),e._set(`canvas`,this.canvas),this._watchObject(!0,e);let n=this.canvas&&this.canvas.getActiveObject&&this.canvas.getActiveObject();n&&(n===e||e.isDescendantOf(n))&&this._activeObjects.push(e)}exitGroup(e,t){this._exitGroup(e,t),e._set(`parent`,void 0),e._set(`canvas`,void 0)}_exitGroup(e,t){e._set(`group`,void 0),t||(Ft(e,z(this.calcTransformMatrix(),e.calcTransformMatrix())),e.setCoords()),this._watchObject(!1,e);let n=this._activeObjects.length>0?this._activeObjects.indexOf(e):-1;n>-1&&this._activeObjects.splice(n,1)}shouldCache(){let e=J.prototype.shouldCache.call(this);if(e&&!this.clipPath){for(let e=0;e<this._objects.length;e++)if(this._objects[e].willDrawShadow())return this.ownCaching=!1,!1}return e}willDrawShadow(){if(super.willDrawShadow())return!0;for(let e=0;e<this._objects.length;e++)if(this._objects[e].willDrawShadow())return!0;return!1}isOnACache(){return this.ownCaching||!!this.parent&&this.parent.isOnACache()}drawObject(e,t,n){this._renderBackground(e);for(let t=0;t<this._objects.length;t++){var r;let n=this._objects[t];(r=this.canvas)!=null&&r.preserveObjectStacking&&n.group!==this?(e.save(),e.transform(...R(this.calcTransformMatrix())),n.render(e),e.restore()):n.group===this&&n.render(e)}this._drawClipPath(e,this.clipPath,n)}setCoords(){super.setCoords(),this._shouldSetNestedCoords()&&this.forEachObject(e=>e.setCoords())}triggerLayout(e={}){this.layoutManager.performLayout({target:this,type:`imperative`,...e})}render(e){this._transformDone=!0,super.render(e),this._transformDone=!1}__serializeObjects(e,t){let n=this.includeDefaultValues;return this._objects.filter(function(e){return!e.excludeFromExport}).map(function(r){let i=r.includeDefaultValues;r.includeDefaultValues=n;let a=r[e||`toObject`](t);return r.includeDefaultValues=i,a})}toObject(e=[]){let t=this.layoutManager.toObject();return{...super.toObject([`subTargetCheck`,`interactive`,...e]),...t.strategy!==`fit-content`||this.includeDefaultValues?{layoutManager:t}:{},objects:this.__serializeObjects(`toObject`,e)}}toString(){return`#<Group: (${this.complexity()})>`}dispose(){this.layoutManager.unsubscribeTargets({targets:this.getObjects(),target:this}),this._activeObjects=[],this.forEachObject(e=>{this._watchObject(!1,e),e.dispose()}),super.dispose()}_createSVGBgRect(e){if(!this.backgroundColor)return``;let t=Ma.prototype._toSVG.call(this),n=t.indexOf(`COMMON_PARTS`);t[n]=`for="group" `;let r=t.join(``);return e?e(r):r}_toSVG(e){let t=[`<g `,`COMMON_PARTS`,` >
|
|
16
15
|
`],n=this._createSVGBgRect(e);n&&t.push(` `,n);for(let n=0;n<this._objects.length;n++)t.push(` `,this._objects[n].toSVG(e));return t.push(`</g>
|
|
17
|
-
`),t}getSvgStyles(){let e=this.opacity!==void 0&&this.opacity!==1?`opacity: ${U(this.opacity)};`:``,t=this.visible?``:` visibility: hidden;`;return[e,this.getSvgFilter(),t].join(``)}toClipPathSVG(e){let t=[],n=this._createSVGBgRect(e);n&&t.push(` `,n);for(let n=0;n<this._objects.length;n++)t.push(` `,this._objects[n].toClipPathSVG(e));return this._createBaseClipPathSVGMarkup(t,{reviver:e})}static fromObject({type:e,objects:t=[],layoutManager:n,...r},i){return Promise.all([Qe(t,i),$e(r,i)]).then(([e,t])=>{let i=new this(e,{...r,...t,layoutManager:new sa});return i.layoutManager=n?new(M.getClass(n.type))(new(M.getClass(n.strategy))):new oa,i.layoutManager.subscribeTargets({type:ea,target:i,targets:i.getObjects()}),i.setCoords(),i})}};a(ca,`type`,`Group`),a(ca,`ownDefaults`,{strokeWidth:0,subTargetCheck:!1,interactive:!1}),M.setClass(ca);let la=(e,t)=>e&&e.length===1?e[0]:new ca(e,t),ua=(e,t)=>Math.min(t.width/e.width,t.height/e.height),da=(e,t)=>Math.max(t.width/e.width,t.height/e.height),fa=`\\s*,?\\s*`,pa=`${fa}(${Dn})`,ma=`${pa}${pa}${pa}${fa}([01])${fa}([01])${pa}${pa}`,ha={m:`l`,M:`L`},ga=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=Se(e),f=Ce(e),p=Se(t),m=Ce(t),h=n*i*p-r*a*m+o,g=r*i*p+n*a*m+s;return[`C`,l+c*(-n*i*f-r*a*d),u+c*(-r*i*f+n*a*d),h+c*(n*i*m+r*a*p),g+c*(r*i*m-n*a*p),h,g]},_a=(e,t,n,r)=>{let i=Math.atan2(t,e),a=Math.atan2(r,n);return a>=i?a-i:2*Math.PI-(i-a)};function va(e,t,n,r,i,a,o,c){let l;if(s.cachesBoundsOfCurve&&(l=[...arguments].join(),y.boundsOfCurveCache[l]))return y.boundsOfCurveCache[l];let u=Math.sqrt,d=Math.abs,f=[],p=[[0,0],[0,0]],m=6*e-12*n+6*i,h=-3*e+9*n-9*i+3*o,g=3*n-3*e;for(let e=0;e<2;++e){if(e>0&&(m=6*t-12*r+6*a,h=-3*t+9*r-9*a+3*c,g=3*r-3*t),d(h)<1e-12){if(d(m)<1e-12)continue;let e=-g/m;0<e&&e<1&&f.push(e);continue}let n=m*m-4*g*h;if(n<0)continue;let i=u(n),o=(-m+i)/(2*h);0<o&&o<1&&f.push(o);let s=(-m-i)/(2*h);0<s&&s<1&&f.push(s)}let _=f.length,v=_,b=Sa(e,t,n,r,i,a,o,c);for(;_--;){let{x:e,y:t}=b(f[_]);p[0][_]=e,p[1][_]=t}p[0][v]=e,p[1][v]=t,p[0][v+1]=o,p[1][v+1]=c;let x=[new N(Math.min(...p[0]),Math.min(...p[1])),new N(Math.max(...p[0]),Math.max(...p[1]))];return s.cachesBoundsOfCurve&&(y.boundsOfCurveCache[l]=x),x}let ya=(e,t,[n,r,i,a,o,s,c,l])=>{let u=((e,t,n,r,i,a,o)=>{if(n===0||r===0)return[];let s=0,c=0,l=0,u=Math.PI,d=o*ee,f=Ce(d),p=Se(d),m=.5*(-p*e-f*t),h=.5*(-p*t+f*e),g=n**2,_=r**2,v=h**2,y=m**2,b=g*_-g*v-_*y,x=Math.abs(n),S=Math.abs(r);if(b<0){let e=Math.sqrt(1-b/(g*_));x*=e,S*=e}else l=(i===a?-1:1)*Math.sqrt(b/(g*v+_*y));let C=l*x*h/S,w=-l*S*m/x,T=p*C-f*w+.5*e,E=f*C+p*w+.5*t,D=_a(1,0,(m-C)/x,(h-w)/S),O=_a((m-C)/x,(h-w)/S,(-m-C)/x,(-h-w)/S);a===0&&O>0?O-=2*u:a===1&&O<0&&(O+=2*u);let k=Math.ceil(Math.abs(O/u*2)),te=[],ne=O/k,re=8/3*Math.sin(ne/4)*Math.sin(ne/4)/Math.sin(ne/2),ie=D+ne;for(let e=0;e<k;e++)te[e]=ga(D,ie,p,f,x,S,T,E,re,s,c),s=te[e][5],c=te[e][6],D=ie,ie+=ne;return te})(c-e,l-t,r,i,o,s,a);for(let n=0,r=u.length;n<r;n++)u[n][1]+=e,u[n][2]+=t,u[n][3]+=e,u[n][4]+=t,u[n][5]+=e,u[n][6]+=t;return u},ba=e=>{let t=0,n=0,r=0,i=0,a=[],o,s=0,c=0;for(let l of e){let e=[...l],u;switch(e[0]){case`l`:e[1]+=t,e[2]+=n;case`L`:t=e[1],n=e[2],u=[`L`,t,n];break;case`h`:e[1]+=t;case`H`:t=e[1],u=[`L`,t,n];break;case`v`:e[1]+=n;case`V`:n=e[1],u=[`L`,t,n];break;case`m`:e[1]+=t,e[2]+=n;case`M`:t=e[1],n=e[2],r=e[1],i=e[2],u=[`M`,t,n];break;case`c`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n,e[5]+=t,e[6]+=n;case`C`:s=e[3],c=e[4],t=e[5],n=e[6],u=[`C`,e[1],e[2],s,c,t,n];break;case`s`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case`S`:o===`C`?(s=2*t-s,c=2*n-c):(s=t,c=n),t=e[3],n=e[4],u=[`C`,s,c,e[1],e[2],t,n],s=u[3],c=u[4];break;case`q`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case`Q`:s=e[1],c=e[2],t=e[3],n=e[4],u=[`Q`,s,c,t,n];break;case`t`:e[1]+=t,e[2]+=n;case`T`:o===`Q`?(s=2*t-s,c=2*n-c):(s=t,c=n),t=e[1],n=e[2],u=[`Q`,s,c,t,n];break;case`a`:e[6]+=t,e[7]+=n;case`A`:ya(t,n,e).forEach(e=>a.push(e)),t=e[6],n=e[7];break;case`z`:case`Z`:t=r,n=i,u=[`Z`]}u?(a.push(u),o=u[0]):o=``}return a},xa=(e,t,n,r)=>Math.sqrt((n-e)**2+(r-t)**2),Sa=(e,t,n,r,i,a,o,s)=>c=>{let l=c**3,u=(e=>3*e**2*(1-e))(c),d=(e=>3*e*(1-e)**2)(c),f=(e=>(1-e)**3)(c);return new N(o*l+i*u+n*d+e*f,s*l+a*u+r*d+t*f)},Ca=e=>e**2,wa=e=>2*e*(1-e),Ta=e=>(1-e)**2,Ea=(e,t,n,r,i,a,o,s)=>c=>{let l=Ca(c),u=wa(c),d=Ta(c),f=3*(d*(n-e)+u*(i-n)+l*(o-i)),p=3*(d*(r-t)+u*(a-r)+l*(s-a));return Math.atan2(p,f)},Da=(e,t,n,r,i,a)=>o=>{let s=Ca(o),c=wa(o),l=Ta(o);return new N(i*s+n*c+e*l,a*s+r*c+t*l)},Oa=(e,t,n,r,i,a)=>o=>{let s=1-o,c=2*(s*(n-e)+o*(i-n)),l=2*(s*(r-t)+o*(a-r));return Math.atan2(l,c)},ka=(e,t,n)=>{let r=new N(t,n),i=0;for(let t=1;t<=100;t+=1){let n=e(t/100);i+=xa(r.x,r.y,n.x,n.y),r=n}return i},Aa=(e,t)=>{let n,r=0,i=0,a={x:e.x,y:e.y},o={...a},s=.01,c=0,l=e.iterator,u=e.angleFinder;for(;i<t&&s>1e-4;)o=l(r),c=r,n=xa(a.x,a.y,o.x,o.y),n+i>t?(r-=s,s/=2):(a=o,r+=s,i+=n);return{...o,angle:u(c)}},ja=e=>{let t,n,r=0,i=0,a=0,o=0,s=0,c=[];for(let l of e){let e={x:i,y:a,command:l[0],length:0};switch(l[0]){case`M`:n=e,n.x=o=i=l[1],n.y=s=a=l[2];break;case`L`:n=e,n.length=xa(i,a,l[1],l[2]),i=l[1],a=l[2];break;case`C`:t=Sa(i,a,l[1],l[2],l[3],l[4],l[5],l[6]),n=e,n.iterator=t,n.angleFinder=Ea(i,a,l[1],l[2],l[3],l[4],l[5],l[6]),n.length=ka(t,i,a),i=l[5],a=l[6];break;case`Q`:t=Da(i,a,l[1],l[2],l[3],l[4]),n=e,n.iterator=t,n.angleFinder=Oa(i,a,l[1],l[2],l[3],l[4]),n.length=ka(t,i,a),i=l[3],a=l[4];break;case`Z`:n=e,n.destX=o,n.destY=s,n.length=xa(i,a,o,s),i=o,a=s}r+=n.length,c.push(n)}return c.push({length:r,x:i,y:a}),c},Ma=(e,t,n=ja(e))=>{let r=0;for(;t-n[r].length>0&&r<n.length-2;)t-=n[r].length,r++;let i=n[r],a=t/i.length,o=e[r];switch(i.command){case`M`:return{x:i.x,y:i.y,angle:0};case`Z`:return{...new N(i.x,i.y).lerp(new N(i.destX,i.destY),a),angle:Math.atan2(i.destY-i.y,i.destX-i.x)};case`L`:return{...new N(i.x,i.y).lerp(new N(o[1],o[2]),a),angle:Math.atan2(o[2]-i.y,o[1]-i.x)};case`C`:case`Q`:return Aa(i,t)}},Na=RegExp(`[mzlhvcsqta][^mzlhvcsqta]*`,`gi`),Pa=new RegExp(ma,`g`),Fa=new RegExp(Dn,`gi`),Ia={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},La=e=>{var t;let n=[],r=(t=e.match(Na))==null?[]:t;for(let e of r){let t=e[0];if(t===`z`||t===`Z`){n.push([t]);continue}let r=Ia[t.toLowerCase()],i=[];if(t===`a`||t===`A`){let t;for(Pa.lastIndex=0;t=Pa.exec(e);)i.push(...t.slice(1))}else i=e.match(Fa)||[];for(let e=0;e<i.length;e+=r){let a=Array(r),o=ha[t];a[0]=e>0&&o?o:t;for(let t=0;t<r;t++)a[t+1]=parseFloat(i[e+t]);n.push(a)}}return n},Ra=(e,t=0)=>{let n=new N(e[0]),r=new N(e[1]),i=1,a=0,o=[],s=e.length,c=s>2,l;for(c&&(i=e[2].x<r.x?-1:e[2].x===r.x?0:1,a=e[2].y<r.y?-1:e[2].y===r.y?0:1),o.push([`M`,n.x-i*t,n.y-a*t]),l=1;l<s;l++){if(!n.eq(r)){let e=n.midPointFrom(r);o.push([`Q`,n.x,n.y,e.x,e.y])}n=e[l],l+1<e.length&&(r=e[l+1])}return c&&(i=n.x>e[l-2].x?1:n.x===e[l-2].x?0:-1,a=n.y>e[l-2].y?1:n.y===e[l-2].y?0:-1),o.push([`L`,n.x+i*t,n.y+a*t]),o},za=(e,t,n)=>(n&&(t=z(t,[1,0,0,1,-n.x,-n.y])),e.map(e=>{let n=[...e];for(let r=1;r<e.length-1;r+=2){let{x:i,y:a}=L({x:e[r],y:e[r+1]},t);n[r]=i,n[r+1]=a}return n})),Ba=(e,t)=>{let n=2*Math.PI/e,r=-S;e%2==0&&(r+=n/2);let i=Array(e+1);for(let a=0;a<e;a++){let e=a*n+r,{x:o,y:s}=new N(Se(e),Ce(e)).scalarMultiply(t);i[a]=[a===0?`M`:`L`,o,s]}return i[e]=[`Z`],i},Va=(e,t)=>e.map(e=>e.map((e,n)=>n===0||t===void 0?e:B(e,t)).join(` `)).join(` `),Ha=(e,t)=>{var n;let r=e,i=t;r.inverted&&!i.inverted&&(r=t,i=e),Pt(i,(n=i.group)==null?void 0:n.calcTransformMatrix(),r.calcTransformMatrix());let a=r.inverted&&i.inverted;return a&&(r.inverted=i.inverted=!1),new ca([r],{clipPath:i,inverted:a})},Ua=(e,t)=>Math.floor(Math.random()*(t-e+1))+e,Wa=(e,t)=>{let n=e._findCenterFromElement();e.transformMatrix&&((e=>{if(e.transformMatrix){let{scaleX:t,scaleY:n,angle:r,skewX:i}=He(e.transformMatrix);e.flipX=!1,e.flipY=!1,e.set(de,t),e.set(fe,n),e.angle=r,e.skewX=i,e.skewY=0}})(e),n=n.transform(e.transformMatrix)),delete e.transformMatrix,t&&(e.scaleX*=t.scaleX,e.scaleY*=t.scaleY,e.cropX=t.cropX,e.cropY=t.cropY,n.x+=t.offsetLeft,n.y+=t.offsetTop,e.width=t.width,e.height=t.height),e.setPositionByOrigin(n,E,E)};var Ga=n({addTransformToObject:()=>Et,animate:()=>Mr,animateColor:()=>Nr,applyTransformToObject:()=>Dt,calcAngleBetweenVectors:()=>Vt,calcDimensionsMatrix:()=>Ye,calcPlaneChangeMatrix:()=>jt,calcVectorRotation:()=>Ht,cancelAnimFrame:()=>ke,capValue:()=>Vn,composeMatrix:()=>Xe,copyCanvasElement:()=>Ne,cos:()=>Se,createCanvasElement:()=>P,createImage:()=>Me,createRotateMatrix:()=>We,createScaleMatrix:()=>Ge,createSkewXMatrix:()=>qe,createSkewYMatrix:()=>Je,createTranslateMatrix:()=>Ue,createVector:()=>zt,crossProduct:()=>Gt,degreesToRadians:()=>I,dotProduct:()=>Kt,ease:()=>Gn,enlivenObjectEnlivables:()=>$e,enlivenObjects:()=>Qe,findScaleToCover:()=>da,findScaleToFit:()=>ua,getBoundsOfCurve:()=>va,getOrthonormalVector:()=>Wt,getPathSegmentsInfo:()=>ja,getPointOnPath:()=>Ma,getPointer:()=>xt,getRandomInt:()=>Ua,getRegularPolygonPath:()=>Ba,getSmoothPathFromPoints:()=>Ra,getSvgAttributes:()=>pn,getUnitVector:()=>Ut,groupSVGElements:()=>la,hasStyleChanged:()=>Ei,invertTransform:()=>R,isBetweenVectors:()=>qt,isIdentityMatrix:()=>Le,isTouchEvent:()=>St,isTransparent:()=>yi,joinPath:()=>Va,loadImage:()=>Ze,magnitude:()=>Bt,makeBoundingBoxFromPoints:()=>wt,makePathSimpler:()=>ba,matrixToSVG:()=>nt,mergeClipPaths:()=>Ha,multiplyTransformMatrices:()=>z,multiplyTransformMatrixArray:()=>Re,parsePath:()=>La,parsePreserveAspectRatioAttribute:()=>mn,parseUnit:()=>K,pick:()=>et,projectStrokeOnPoints:()=>wi,qrDecompose:()=>He,radiansToDegrees:()=>Ie,removeFromArray:()=>xe,removeTransformFromObject:()=>Tt,removeTransformMatrixForSvgParsing:()=>Wa,requestAnimFrame:()=>Oe,resetObjectTransform:()=>Ot,rotateVector:()=>Rt,saveObjectTransform:()=>kt,sendObjectToPlane:()=>Pt,sendPointToPlane:()=>Mt,sendVectorToPlane:()=>Nt,sin:()=>Ce,sizeAfterTransform:()=>At,string:()=>pt,stylesFromArray:()=>Oi,stylesToArray:()=>Di,toBlob:()=>Fe,toDataURL:()=>Pe,toFixed:()=>B,transformPath:()=>za,transformPoint:()=>L});function Ka(e,t){let n=e.style;n&&Object.entries(t).forEach(([e,t])=>n.setProperty(e,t))}var qa=class extends dt{constructor(e,{allowTouchScrolling:t=!1,containerClass:n=``}={}){super(e),a(this,`upper`,void 0),a(this,`container`,void 0);let{el:r}=this.lower,i=this.createUpperCanvas();this.upper={el:i,ctx:i.getContext(`2d`)},this.applyCanvasStyle(r,{allowTouchScrolling:t}),this.applyCanvasStyle(i,{allowTouchScrolling:t,styles:{position:`absolute`,left:`0`,top:`0`}});let o=this.createContainerElement();o.classList.add(n),r.parentNode&&r.parentNode.replaceChild(o,r),o.append(r,i),this.container=o}createUpperCanvas(){let{el:e}=this.lower,t=P();return t.className=e.className,t.classList.remove(`lower-canvas`),t.classList.add(`upper-canvas`),t.setAttribute(`data-fabric`,`top`),t.style.cssText=e.style.cssText,t.setAttribute(`draggable`,`true`),t}createContainerElement(){let e=g().createElement(`div`);return e.setAttribute(`data-fabric`,`wrapper`),Ka(e,{position:`relative`}),ut(e),e}applyCanvasStyle(e,t){let{styles:n,allowTouchScrolling:r}=t;Ka(e,{...n,"touch-action":r?`manipulation`:te}),ut(e)}setDimensions(e,t){super.setDimensions(e,t);let{el:n,ctx:r}=this.upper;ct(n,r,e,t)}setCSSDimensions(e){super.setCSSDimensions(e),lt(this.upper.el,e),lt(this.container,e)}cleanupDOM(e){let t=this.container,{el:n}=this.lower,{el:r}=this.upper;super.cleanupDOM(e),t.removeChild(r),t.removeChild(n),t.parentNode&&t.parentNode.replaceChild(n,t)}dispose(){super.dispose(),h().dispose(this.upper.el),delete this.upper,delete this.container}};let Ja=(e,t,n,r)=>{let{target:i,offsetX:a,offsetY:o}=t,s=n-a,c=r-o,l=!Zt(i,`lockMovementX`)&&i.left!==s,u=!Zt(i,`lockMovementY`)&&i.top!==c;return l&&i.set(`left`,s),u&&i.set(`top`,c),(l||u)&&Lr(re,Qt(e,t,n,r)),l||u},Ya=ce,Xa=e=>function(t,n,r){let{points:i,pathOffset:a}=r;return new N(i[e]).subtract(a).transform(z(r.getViewportTransform(),r.calcTransformMatrix()))},Za=(e,t,n,r)=>{let{target:i,pointIndex:a}=t,o=i,s=Mt(new N(n,r),void 0,o.calcOwnMatrix());return o.points[a]=s.add(o.pathOffset),o.setDimensions(),o.set(`dirty`,!0),!0},Qa=(e,t)=>function(n,r,i,a){let o=r.target,s=new N(o.points[(e>0?e:o.points.length)-1]),c=s.subtract(o.pathOffset).transform(o.calcOwnMatrix()),l=t(n,{...r,pointIndex:e},i,a),u=s.subtract(o.pathOffset).transform(o.calcOwnMatrix()).subtract(c);return o.left-=u.x,o.top-=u.y,l},$a=e=>Rr(Ya,Qa(e,Za));function eo(e,t={}){let n={};for(let r=0;r<(typeof e==`number`?e:e.points.length);r++)n[`p${r}`]=new q({actionName:Ya,positionHandler:Xa(r),actionHandler:$a(r),...t});return n}let to=(e,t,n)=>{let{path:r,pathOffset:i}=e,a=r[t];return new N(a[n]-i.x,a[n+1]-i.y).transform(z(e.getViewportTransform(),e.calcTransformMatrix()))};function no(e,t,n){let{commandIndex:r,pointIndex:i}=this;return to(n,r,i)}function ro(e,t,n,r){let{target:i}=t,{commandIndex:a,pointIndex:o}=this,s=((e,t,n,r,i)=>{let{path:a,pathOffset:o}=e,s=a[(r>0?r:a.length)-1],c=new N(s[i],s[i+1]),l=c.subtract(o).transform(e.calcOwnMatrix()),u=Mt(new N(t,n),void 0,e.calcOwnMatrix());a[r][i]=u.x+o.x,a[r][i+1]=u.y+o.y,e.setDimensions();let d=c.subtract(e.pathOffset).transform(e.calcOwnMatrix()).subtract(l);return e.left-=d.x,e.top-=d.y,e.set(`dirty`,!0),!0})(i,n,r,a,o);return s&&Lr(this.actionName,{...Qt(e,t,n,r),commandIndex:a,pointIndex:o}),s}var io=class extends q{constructor(e){super(e)}render(e,t,n,r,i){let a={...r,cornerColor:this.controlFill,cornerStrokeColor:this.controlStroke,transparentCorners:!this.controlFill};super.render(e,t,n,a,i)}},ao=class extends io{constructor(e){super(e)}render(e,t,n,r,i){let{path:a}=i,{commandIndex:o,pointIndex:s,connectToCommandIndex:c,connectToPointIndex:l}=this;e.save(),e.strokeStyle=this.controlStroke,this.connectionDashArray&&e.setLineDash(this.connectionDashArray);let[u]=a[o],d=to(i,c,l);if(u===`Q`){let r=to(i,o,s+2);e.moveTo(r.x,r.y),e.lineTo(t,n)}else e.moveTo(t,n);e.lineTo(d.x,d.y),e.stroke(),e.restore(),super.render(e,t,n,r,i)}};let oo=(e,t,n,r,i,a)=>new(n?ao:io)({commandIndex:e,pointIndex:t,actionName:`modifyPath`,positionHandler:no,actionHandler:ro,connectToCommandIndex:i,connectToPointIndex:a,...r,...n?r.controlPointStyle:r.pointStyle});function so(e,t={}){let n={},r=`M`;return e.path.forEach((e,i)=>{let a=e[0];switch(a!==`Z`&&(n[`c_${i}_${a}`]=oo(i,e.length-2,!1,t)),a){case`C`:n[`c_${i}_C_CP_1`]=oo(i,1,!0,t,i-1,(e=>e===`C`?5:e===`Q`?3:1)(r)),n[`c_${i}_C_CP_2`]=oo(i,3,!0,t,i,5);break;case`Q`:n[`c_${i}_Q_CP_1`]=oo(i,1,!0,t,i,3)}r=a}),n}var co=n({changeHeight:()=>Wr,changeObjectHeight:()=>Hr,changeObjectWidth:()=>Vr,changeWidth:()=>Ur,createObjectDefaultControls:()=>mi,createPathControls:()=>so,createPolyActionHandler:()=>$a,createPolyControls:()=>eo,createPolyPositionHandler:()=>Xa,createResizeControls:()=>hi,createTextboxDefaultControls:()=>gi,dragHandler:()=>Ja,factoryPolyActionHandler:()=>Qa,getLocalPoint:()=>en,polyActionHandler:()=>Za,renderCircleControl:()=>Gr,renderSquareControl:()=>Kr,rotationStyleHandler:()=>qr,rotationWithSnapping:()=>Jr,scaleCursorStyleHandler:()=>Qr,scaleOrSkewActionName:()=>ui,scaleSkewCursorStyleHandler:()=>di,scalingEqually:()=>ei,scalingX:()=>ti,scalingXOrSkewingY:()=>fi,scalingY:()=>ni,scalingYOrSkewingX:()=>pi,skewCursorStyleHandler:()=>ai,skewHandlerX:()=>si,skewHandlerY:()=>ci,wrapWithFireEvent:()=>Rr,wrapWithFixedAnchor:()=>zr}),lo=class e extends yt{constructor(...e){super(...e),a(this,`_hoveredTargets`,[]),a(this,`_currentTransform`,null),a(this,`_groupSelector`,null),a(this,`contextTopDirty`,!1)}static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}get upperCanvasEl(){var e;return(e=this.elements.upper)==null?void 0:e.el}get contextTop(){var e;return(e=this.elements.upper)==null?void 0:e.ctx}get wrapperEl(){return this.elements.container}initElements(e){this.elements=new qa(e,{allowTouchScrolling:this.allowTouchScrolling,containerClass:this.containerClass}),this._createCacheCanvas()}_onObjectAdded(e){this._objectsToRender=void 0,super._onObjectAdded(e)}_onObjectRemoved(e){this._objectsToRender=void 0,e===this._activeObject&&(this.fire(`before:selection:cleared`,{deselected:[e]}),this._discardActiveObject(),this.fire(`selection:cleared`,{deselected:[e]}),e.fire(`deselected`,{target:e})),e===this._hoveredTarget&&(this._hoveredTarget=void 0,this._hoveredTargets=[]),super._onObjectRemoved(e)}_onStackOrderChanged(){this._objectsToRender=void 0,super._onStackOrderChanged()}_chooseObjectsToRender(){let e=this._activeObject;return!this.preserveObjectStacking&&e?this._objects.filter(t=>!t.group&&t!==e).concat(e):this._objects}renderAll(){this.cancelRequestedRender(),this.destroyed||(!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1),!this._objectsToRender&&(this._objectsToRender=this._chooseObjectsToRender()),this.renderCanvas(this.getContext(),this._objectsToRender))}renderTopLayer(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()}renderTop(){let e=this.contextTop;this.clearContext(e),this.renderTopLayer(e),this.fire(`after:render`,{ctx:e})}setTargetFindTolerance(e){e=Math.round(e),this.targetFindTolerance=e;let t=this.getRetinaScaling(),n=Math.ceil((2*e+1)*t);this.pixelFindCanvasEl.width=this.pixelFindCanvasEl.height=n,this.pixelFindContext.scale(t,t)}isTargetTransparent(e,t,n){let r=this.targetFindTolerance,i=this.pixelFindContext;this.clearContext(i),i.save(),i.translate(-t+r,-n+r),i.transform(...this.viewportTransform);let a=e.selectionBackgroundColor;e.selectionBackgroundColor=``,e.render(i),e.selectionBackgroundColor=a,i.restore();let o=Math.round(r*this.getRetinaScaling());return yi(i,o,o,o)}_isSelectionKeyPressed(e){let t=this.selectionKey;return!!t&&(Array.isArray(t)?!!t.find(t=>!!t&&!0===e[t]):e[t])}_shouldClearSelection(e,t){let n=this.getActiveObjects(),r=this._activeObject;return!!(!t||t&&r&&n.length>1&&n.indexOf(t)===-1&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t)}_shouldCenterTransform(e,t,n){if(!e)return;let r;return t===`scale`||t===`scaleX`||t===`scaleY`||t===`resizing`?r=this.centeredScaling||e.centeredScaling:t===`rotate`&&(r=this.centeredRotation||e.centeredRotation),r?!n:n}_getOriginFromCorner(e,t){let n=t?e.controls[t].getTransformAnchorPoint():{x:e.originX,y:e.originY};return t?([`ml`,`tl`,`bl`].includes(t)?n.x=k:[`mr`,`tr`,`br`].includes(t)&&(n.x=D),[`tl`,`mt`,`tr`].includes(t)?n.y=O:[`bl`,`mb`,`br`].includes(t)&&(n.y=`top`),n):n}_setupCurrentTransform(e,t,n){var r;let i=t.group?Mt(this.getScenePoint(e),void 0,t.group.calcTransformMatrix()):this.getScenePoint(e),{key:a=``,control:o}=t.getActiveControl()||{},s=n&&o?(r=o.getActionHandler(e,t,o))==null?void 0:r.bind(o):Ja,c=((e,t,n,r)=>{if(!t||!e)return`drag`;let i=r.controls[t];return i.getActionName(n,i,r)})(n,a,e,t),l=e[this.centeredKey],u=this._shouldCenterTransform(t,c,l)?{x:E,y:E}:this._getOriginFromCorner(t,a),{scaleX:d,scaleY:f,skewX:p,skewY:m,left:h,top:g,angle:_,width:v,height:y,cropX:b,cropY:x}=t,S={target:t,action:c,actionHandler:s,actionPerformed:!1,corner:a,scaleX:d,scaleY:f,skewX:p,skewY:m,offsetX:i.x-h,offsetY:i.y-g,originX:u.x,originY:u.y,ex:i.x,ey:i.y,lastX:i.x,lastY:i.y,theta:I(_),width:v,height:y,shiftKey:e.shiftKey,altKey:l,original:{...kt(t),originX:u.x,originY:u.y,cropX:b,cropY:x}};this._currentTransform=S,this.fire(`before:transform`,{e,transform:S})}setCursor(e){this.upperCanvasEl.style.cursor=e}_drawSelection(e){let{x:t,y:n,deltaX:r,deltaY:i}=this._groupSelector,a=new N(t,n).transform(this.viewportTransform),o=new N(t+r,n+i).transform(this.viewportTransform),s=this.selectionLineWidth/2,c=Math.min(a.x,o.x),l=Math.min(a.y,o.y),u=Math.max(a.x,o.x),d=Math.max(a.y,o.y);this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(c,l,u-c,d-l)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,c+=s,l+=s,u-=s,d-=s,J.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(c,l,u-c,d-l))}findTarget(e){if(this._targetInfo)return this._targetInfo;if(this.skipTargetFind)return{subTargets:[],currentSubTargets:[]};let t=this.getScenePoint(e),n=this._activeObject,r=this.getActiveObjects(),i=this.searchPossibleTargets(this._objects,t),{subTargets:a,container:o,target:s}=i,c={...i,currentSubTargets:a,currentContainer:o,currentTarget:s};if(!n)return c;let l={...this.searchPossibleTargets([n],t),currentSubTargets:a,currentContainer:o,currentTarget:s};return n.findControl(this.getViewportPoint(e),St(e))?{...l,target:n}:l.target&&(r.length>1||!this.preserveObjectStacking||this.preserveObjectStacking&&e[this.altSelectionKey])?l:c}_pointIsInObjectSelectionArea(e,t){let n=e.getCoords(),r=this.getZoom(),i=e.padding/r;if(i){let[e,t,r,a]=n,o=Math.atan2(t.y-e.y,t.x-e.x),s=Se(o)*i,c=Ce(o)*i,l=s+c,u=s-c;n=[new N(e.x-u,e.y-l),new N(t.x+l,t.y-u),new N(r.x+u,r.y+l),new N(a.x-l,a.y+u)]}return Pr.isPointInPolygon(t,n)}_checkTarget(e,t){if(e&&e.visible&&e.evented&&this._pointIsInObjectSelectionArea(e,t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;{let n=t.transform(this.viewportTransform);if(!this.isTargetTransparent(e,n.x,n.y))return!0}}return!1}_searchPossibleTargets(e,t,n){let r=e.length;for(;r--;){let i=e[r];if(this._checkTarget(i,t)){if(Te(i)&&i.subTargetCheck){let{target:e}=this._searchPossibleTargets(i._objects,t,n);e&&n.push(e)}return{target:i,subTargets:n}}}return{subTargets:[]}}searchPossibleTargets(e,t){let n=this._searchPossibleTargets(e,t,[]);n.container=n.target;let{container:r,subTargets:i}=n;if(r&&Te(r)&&r.interactive&&i[0]){for(let e=i.length-1;e>0;e--){let t=i[e];if(!Te(t)||!t.interactive)return n.target=t,n}return n.target=i[0],n}return n}getViewportPoint(e){return this._viewportPoint?this._viewportPoint:this._getPointerImpl(e,!0)}getScenePoint(e){return this._scenePoint?this._scenePoint:this._getPointerImpl(e)}_getPointerImpl(e,t=!1){let n=this.upperCanvasEl,r=n.getBoundingClientRect(),i=xt(e),a=r.width||0,o=r.height||0;a&&o||(`top`in r&&`bottom`in r&&(o=Math.abs(r.top-r.bottom)),`right`in r&&`left`in r&&(a=Math.abs(r.right-r.left))),this.calcOffset(),i.x-=this._offset.left,i.y-=this._offset.top,t||(i=Mt(i,void 0,this.viewportTransform));let s=this.getRetinaScaling();s!==1&&(i.x/=s,i.y/=s);let c=a===0||o===0?new N(1,1):new N(n.width/a,n.height/o);return i.multiply(c)}_setDimensionsImpl(e,t){this._resetTransformEventData(),super._setDimensionsImpl(e,t),this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop)}_createCacheCanvas(){this.pixelFindCanvasEl=P(),this.pixelFindContext=this.pixelFindCanvasEl.getContext(`2d`,{willReadFrequently:!0}),this.setTargetFindTolerance(this.targetFindTolerance)}getTopContext(){return this.elements.upper.ctx}getSelectionContext(){return this.elements.upper.ctx}getSelectionElement(){return this.elements.upper.el}getActiveObject(){return this._activeObject}getActiveObjects(){let e=this._activeObject;return at(e)?e.getObjects():e?[e]:[]}_fireSelectionEvents(e,t){let n=!1,r=!1,i=this.getActiveObjects(),a=[],o=[];e.forEach(e=>{i.includes(e)||(n=!0,e.fire(`deselected`,{e:t,target:e}),o.push(e))}),i.forEach(r=>{e.includes(r)||(n=!0,r.fire(`selected`,{e:t,target:r}),a.push(r))}),e.length>0&&i.length>0?(r=!0,n&&this.fire(`selection:updated`,{e:t,selected:a,deselected:o})):i.length>0?(r=!0,this.fire(`selection:created`,{e:t,selected:a})):e.length>0&&(r=!0,this.fire(`selection:cleared`,{e:t,deselected:o})),r&&(this._objectsToRender=void 0)}setActiveObject(e,t){let n=this.getActiveObjects(),r=this._setActiveObject(e,t);return this._fireSelectionEvents(n,t),r}_setActiveObject(e,t){let n=this._activeObject;return n!==e&&!(!this._discardActiveObject(t,e)&&this._activeObject)&&!e.onSelect({e:t})&&(this._activeObject=e,at(e)&&n!==e&&e.set(`canvas`,this),e.setCoords(),!0)}_discardActiveObject(e,t){let n=this._activeObject;return!!n&&!n.onDeselect({e,object:t})&&(this._currentTransform&&this._currentTransform.target===n&&this.endCurrentTransform(e),at(n)&&n===this._hoveredTarget&&(this._hoveredTarget=void 0),this._activeObject=void 0,!0)}discardActiveObject(e){let t=this.getActiveObjects(),n=this.getActiveObject();t.length&&this.fire(`before:selection:cleared`,{e,deselected:[n]});let r=this._discardActiveObject(e);return this._fireSelectionEvents(t,e),r}endCurrentTransform(e){let t=this._currentTransform;this._finalizeCurrentTransform(e),t&&t.target&&(t.target.isMoving=!1),this._currentTransform=null}_finalizeCurrentTransform(e){let t=this._currentTransform,n=t.target,r={e,target:n,transform:t,action:t.action};n._scaling&&(n._scaling=!1),n.setCoords(),t.actionPerformed&&(this.fire(`object:modified`,r),n.fire(ge,r))}setViewportTransform(e){super.setViewportTransform(e);let t=this._activeObject;t&&t.setCoords()}destroy(){let e=this._activeObject;at(e)&&(e.removeAll(),e.dispose()),delete this._activeObject,super.destroy(),this.pixelFindContext=null,this.pixelFindCanvasEl=void 0}clear(){this.discardActiveObject(),this._activeObject=void 0,this.clearContext(this.contextTop),super.clear()}drawControls(e){let t=this._activeObject;t&&t._renderControls(e)}_toObject(e,t,n){let r=this._realizeGroupTransformOnObject(e),i=super._toObject(e,t,n);return e.set(r),i}_realizeGroupTransformOnObject(e){let{group:t}=e;if(t&&at(t)&&this._activeObject===t){let n=et(e,[`angle`,`flipX`,`flipY`,D,de,fe,pe,me,`top`]);return Et(e,t.calcOwnMatrix()),n}return{}}_setSVGObject(e,t,n){let r=this._realizeGroupTransformOnObject(t);super._setSVGObject(e,t,n),t.set(r)}};a(lo,`ownDefaults`,{uniformScaling:!0,uniScaleKey:`shiftKey`,centeredScaling:!1,centeredRotation:!1,centeredKey:`altKey`,altActionKey:`shiftKey`,selection:!0,selectionKey:`shiftKey`,selectionColor:`rgba(100, 100, 255, 0.3)`,selectionDashArray:[],selectionBorderColor:`rgba(255, 255, 255, 0.3)`,selectionLineWidth:1,selectionFullyContained:!1,hoverCursor:`move`,moveCursor:`move`,defaultCursor:`default`,freeDrawingCursor:`crosshair`,notAllowedCursor:`not-allowed`,perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,stopContextMenu:!0,fireRightClick:!0,fireMiddleClick:!0,enablePointerEvents:!1,containerClass:`canvas-container`,preserveObjectStacking:!0});var uo=class{constructor(e){a(this,`targets`,[]),a(this,`__disposer`,void 0);let t=()=>{let{hiddenTextarea:t}=e.getActiveObject()||{};t&&t.focus()},n=e.upperCanvasEl;n.addEventListener(`click`,t),this.__disposer=()=>n.removeEventListener(`click`,t)}exitTextEditing(){this.target=void 0,this.targets.forEach(e=>{e.isEditing&&e.exitEditing()})}add(e){this.targets.push(e)}remove(e){this.unregister(e),xe(this.targets,e)}register(e){this.target=e}unregister(e){e===this.target&&(this.target=void 0)}onMouseMove(e){var t;(t=this.target)!=null&&t.isEditing&&this.target.updateSelectionOnMouseMove(e)}clear(){this.targets=[],this.target=void 0}dispose(){this.clear(),this.__disposer(),delete this.__disposer}};let X={passive:!1},fo=(e,t)=>({viewportPoint:e.getViewportPoint(t),scenePoint:e.getScenePoint(t)}),po=(e,...t)=>e.addEventListener(...t),Z=(e,...t)=>e.removeEventListener(...t),mo={mouse:{in:`over`,out:`out`,targetIn:`mouseover`,targetOut:`mouseout`,canvasIn:`mouse:over`,canvasOut:`mouse:out`},drag:{in:`enter`,out:`leave`,targetIn:`dragenter`,targetOut:`dragleave`,canvasIn:`drag:enter`,canvasOut:`drag:leave`}};var ho=class extends lo{constructor(e,t={}){super(e,t),a(this,`_isClick`,void 0),a(this,`textEditingManager`,new uo(this)),[`_onMouseDown`,`_onTouchStart`,`_onMouseMove`,`_onMouseUp`,`_onTouchEnd`,`_onResize`,`_onMouseWheel`,`_onMouseOut`,`_onMouseEnter`,`_onContextMenu`,`_onClick`,`_onDragStart`,`_onDragEnd`,`_onDragProgress`,`_onDragOver`,`_onDragEnter`,`_onDragLeave`,`_onDrop`].forEach(e=>{this[e]=this[e].bind(this)}),this.addOrRemove(po)}_getEventPrefix(){return this.enablePointerEvents?`pointer`:`mouse`}addOrRemove(e,t=!1){let n=this.upperCanvasEl,r=this._getEventPrefix();e(st(n),`resize`,this._onResize),e(n,r+`down`,this._onMouseDown),e(n,`${r}move`,this._onMouseMove,X),e(n,`${r}out`,this._onMouseOut),e(n,`${r}enter`,this._onMouseEnter),e(n,`wheel`,this._onMouseWheel,{passive:!1}),e(n,`contextmenu`,this._onContextMenu),t||(e(n,`click`,this._onClick),e(n,`dblclick`,this._onClick)),e(n,`dragstart`,this._onDragStart),e(n,`dragend`,this._onDragEnd),e(n,`dragover`,this._onDragOver),e(n,`dragenter`,this._onDragEnter),e(n,`dragleave`,this._onDragLeave),e(n,`drop`,this._onDrop),this.enablePointerEvents||e(n,`touchstart`,this._onTouchStart,X)}removeListeners(){this.addOrRemove(Z);let e=this._getEventPrefix(),t=H(this.upperCanvasEl);Z(t,`${e}up`,this._onMouseUp),Z(t,`touchend`,this._onTouchEnd,X),Z(t,`${e}move`,this._onMouseMove,X),Z(t,`touchmove`,this._onMouseMove,X),clearTimeout(this._willAddMouseDown)}_onMouseWheel(e){this._cacheTransformEventData(e),this._handleEvent(e,`wheel`),this._resetTransformEventData()}_onMouseOut(e){let t=this._hoveredTarget,n={e,...fo(this,e)};this.fire(`mouse:out`,{...n,target:t}),this._hoveredTarget=void 0,t&&t.fire(`mouseout`,{...n}),this._hoveredTargets.forEach(e=>{this.fire(`mouse:out`,{...n,target:e}),e&&e.fire(`mouseout`,{...n})}),this._hoveredTargets=[]}_onMouseEnter(e){let{target:t}=this.findTarget(e);this._currentTransform||t||(this.fire(`mouse:over`,{e,...fo(this,e)}),this._hoveredTarget=void 0,this._hoveredTargets=[])}_onDragStart(e){this._isClick=!1;let t=this.getActiveObject();if(t&&t.onDragStart(e)){this._dragSource=t;let n={e,target:t};this.fire(`dragstart`,n),t.fire(`dragstart`,n),po(this.upperCanvasEl,`drag`,this._onDragProgress);return}Ct(e)}_renderDragEffects(e,t,n){let r=!1,i=this._dropTarget;i&&i!==t&&i!==n&&(i.clearContextTop(),r=!0),t==null||t.clearContextTop(),n!==t&&(n==null||n.clearContextTop());let a=this.contextTop;a.save(),a.transform(...this.viewportTransform),t&&(a.save(),t.transform(a),t.renderDragSourceEffect(e),a.restore(),r=!0),n&&(a.save(),n.transform(a),n.renderDropTargetEffect(e),a.restore(),r=!0),a.restore(),r&&(this.contextTopDirty=!0)}_onDragEnd(e){let{currentSubTargets:t}=this.findTarget(e),n=!!e.dataTransfer&&e.dataTransfer.dropEffect!==`none`,r=n?this._activeObject:void 0,i={e,target:this._dragSource,subTargets:t,dragSource:this._dragSource,didDrop:n,dropTarget:r};Z(this.upperCanvasEl,`drag`,this._onDragProgress),this.fire(`dragend`,i),this._dragSource&&this._dragSource.fire(`dragend`,i),delete this._dragSource,this._onMouseUp(e)}_onDragProgress(e){let t={e,target:this._dragSource,dragSource:this._dragSource,dropTarget:this._draggedoverTarget};this.fire(`drag`,t),this._dragSource&&this._dragSource.fire(`drag`,t)}_onDragOver(e){let t=`dragover`,{currentContainer:n,currentSubTargets:r}=this.findTarget(e),i=this._dragSource,a={e,target:n,subTargets:r,dragSource:i,canDrop:!1,dropTarget:void 0},o;this.fire(t,a),this._fireEnterLeaveEvents(e,n,a),n&&(n.canDrop(e)&&(o=n),n.fire(t,a));for(let n=0;n<r.length;n++){let i=r[n];i.canDrop(e)&&(o=i),i.fire(t,a)}this._renderDragEffects(e,i,o),this._dropTarget=o}_onDragEnter(e){let{currentContainer:t,currentSubTargets:n}=this.findTarget(e),r={e,target:t,subTargets:n,dragSource:this._dragSource};this.fire(`dragenter`,r),this._fireEnterLeaveEvents(e,t,r)}_onDragLeave(e){let{currentSubTargets:t}=this.findTarget(e),n={e,target:this._draggedoverTarget,subTargets:t,dragSource:this._dragSource};this.fire(`dragleave`,n),this._fireEnterLeaveEvents(e,void 0,n),this._renderDragEffects(e,this._dragSource),this._dropTarget=void 0,this._hoveredTargets=[]}_onDrop(e){let{currentContainer:t,currentSubTargets:n}=this.findTarget(e),r=this._basicEventHandler(`drop:before`,{e,target:t,subTargets:n,dragSource:this._dragSource,...fo(this,e)});r.didDrop=!1,r.dropTarget=void 0,this._basicEventHandler(`drop`,r),this.fire(`drop:after`,r)}_onContextMenu(e){let{target:t,subTargets:n}=this.findTarget(e),r=this._basicEventHandler(`contextmenu:before`,{e,target:t,subTargets:n});return this.stopContextMenu&&Ct(e),this._basicEventHandler(`contextmenu`,r),!1}_onClick(e){let t=e.detail;t>3||t<2||(this._cacheTransformEventData(e),t==2&&e.type===`dblclick`&&this._handleEvent(e,`dblclick`),t==3&&this._handleEvent(e,`tripleclick`),this._resetTransformEventData())}fireEventFromPointerEvent(e,t,n,r={}){this._cacheTransformEventData(e);let{target:i,subTargets:a}=this.findTarget(e),o={e,target:i,subTargets:a,...fo(this,e),transform:this._currentTransform,...r};this.fire(t,o),i&&i.fire(n,o);for(let e=0;e<a.length;e++)a[e]!==i&&a[e].fire(n,o);this._resetTransformEventData()}getPointerId(e){let t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1}_isMainEvent(e){return!0===e.isPrimary||!1!==e.isPrimary&&(e.type===`touchend`&&e.touches.length===0||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId)}_onTouchStart(e){this._cacheTransformEventData(e);let t=!this.allowTouchScrolling,n=this._activeObject;this.mainTouchId===void 0&&(this.mainTouchId=this.getPointerId(e)),this.__onMouseDown(e);let{target:r}=this.findTarget(e);(this.isDrawingMode||n&&r===n)&&(t=!0),t&&e.preventDefault();let i=this.upperCanvasEl,a=this._getEventPrefix(),o=H(i);po(o,`touchend`,this._onTouchEnd,X),t&&po(o,`touchmove`,this._onMouseMove,X),Z(i,`${a}down`,this._onMouseDown),this._resetTransformEventData()}_onMouseDown(e){this._cacheTransformEventData(e),this.__onMouseDown(e);let t=this.upperCanvasEl,n=this._getEventPrefix();Z(t,`${n}move`,this._onMouseMove,X);let r=H(t);po(r,`${n}up`,this._onMouseUp),po(r,`${n}move`,this._onMouseMove,X),this._resetTransformEventData()}_onTouchEnd(e){if(e.touches.length>0)return;this._cacheTransformEventData(e),this.__onMouseUp(e),this._resetTransformEventData(),delete this.mainTouchId;let t=this._getEventPrefix(),n=H(this.upperCanvasEl);Z(n,`touchend`,this._onTouchEnd,X),Z(n,`touchmove`,this._onMouseMove,X),this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout(()=>{po(this.upperCanvasEl,`${t}down`,this._onMouseDown),this._willAddMouseDown=0},400)}_onMouseUp(e){this._cacheTransformEventData(e),this.__onMouseUp(e);let t=this.upperCanvasEl,n=this._getEventPrefix();if(this._isMainEvent(e)){let e=H(this.upperCanvasEl);Z(e,`${n}up`,this._onMouseUp),Z(e,`${n}move`,this._onMouseMove,X),po(t,`${n}move`,this._onMouseMove,X)}this._resetTransformEventData()}_onMouseMove(e){this._cacheTransformEventData(e);let t=this.getActiveObject();!this.allowTouchScrolling&&(!t||!t.shouldStartDragging(e))&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e),this._resetTransformEventData()}_onResize(){this.calcOffset(),this._resetTransformEventData()}_shouldRender(e){let t=this.getActiveObject();return!!t!=!!e||t&&e&&t!==e}__onMouseUp(e){var t;this._handleEvent(e,`up:before`);let n=this._currentTransform,r=this._isClick,{target:i}=this.findTarget(e),{button:a}=e;if(a)return void((this.fireMiddleClick&&a===1||this.fireRightClick&&a===2)&&this._handleEvent(e,`up`));if(this.isDrawingMode&&this._isCurrentlyDrawing)return void this._onMouseUpInDrawingMode(e);if(!this._isMainEvent(e))return;let o,s,c=!1;if(n&&(this._finalizeCurrentTransform(e),c=n.actionPerformed),!r){let t=i===this._activeObject;this.handleSelection(e),c||(c=this._shouldRender(i)||!t&&i===this._activeObject)}if(i){let{key:t,control:r}=i.findControl(this.getViewportPoint(e),St(e))||{};if(s=t,i.selectable&&i!==this._activeObject&&i.activeOn===`up`)this.setActiveObject(i,e),c=!0;else if(r){let t=r.getMouseUpHandler(e,i,r);t&&(o=this.getScenePoint(e),t.call(r,e,n,o.x,o.y))}i.isMoving=!1}if(n&&(n.target!==i||n.corner!==s)){let t=n.target&&n.target.controls[n.corner],r=t&&t.getMouseUpHandler(e,n.target,t);o=o||this.getScenePoint(e),r&&r.call(t,e,n,o.x,o.y)}this._setCursorFromEvent(e,i),this._handleEvent(e,`up`),this._groupSelector=null,this._currentTransform=null,i&&(i.__corner=void 0),c?this.requestRenderAll():r||(t=this._activeObject)!=null&&t.isEditing||this.renderTop()}_basicEventHandler(e,t){let{target:n,subTargets:r=[]}=t;this.fire(e,t),n&&n.fire(e,t);for(let i=0;i<r.length;i++)r[i]!==n&&r[i].fire(e,t);return t}_handleEvent(e,t,n){let{target:r,subTargets:i}=this.findTarget(e),a={e,target:r,subTargets:i,...fo(this,e),transform:this._currentTransform,...t===`down:before`||t===`down`?n:{}};t!==`up:before`&&t!==`up`||(a.isClick=this._isClick),this.fire(`mouse:${t}`,a),r&&r.fire(`mouse${t}`,a);for(let e=0;e<i.length;e++)i[e]!==r&&i[e].fire(`mouse${t}`,a)}_onMouseDownInDrawingMode(e){this._isCurrentlyDrawing=!0,this.getActiveObject()&&(this.discardActiveObject(e),this.requestRenderAll());let t=this.getScenePoint(e);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseDown(t,{e,pointer:t}),this._handleEvent(e,`down`,{alreadySelected:!1})}_onMouseMoveInDrawingMode(e){if(this._isCurrentlyDrawing){let t=this.getScenePoint(e);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseMove(t,{e,pointer:t})}this.setCursor(this.freeDrawingCursor),this._handleEvent(e,`move`)}_onMouseUpInDrawingMode(e){let t=this.getScenePoint(e);this.freeDrawingBrush?this._isCurrentlyDrawing=!!this.freeDrawingBrush.onMouseUp({e,pointer:t}):this._isCurrentlyDrawing=!1,this._handleEvent(e,`up`)}__onMouseDown(e){this._isClick=!0,this._handleEvent(e,`down:before`);let{target:t}=this.findTarget(e),n=!!t&&t===this._activeObject,{button:r}=e;if(r)return void((this.fireMiddleClick&&r===1||this.fireRightClick&&r===2)&&this._handleEvent(e,`down`,{alreadySelected:n}));if(this.isDrawingMode)return void this._onMouseDownInDrawingMode(e);if(!this._isMainEvent(e)||this._currentTransform)return;let i=this._shouldRender(t),a=!1;if(this.handleMultiSelection(e,t)?(t=this._activeObject,a=!0,i=!0):this._shouldClearSelection(e,t)&&this.discardActiveObject(e),this.selection&&(!t||!t.selectable&&!t.isEditing&&t!==this._activeObject)){let t=this.getScenePoint(e);this._groupSelector={x:t.x,y:t.y,deltaY:0,deltaX:0}}if(n=!!t&&t===this._activeObject,t){t.selectable&&t.activeOn===`down`&&this.setActiveObject(t,e);let r=t.findControl(this.getViewportPoint(e),St(e));if(t===this._activeObject&&(r||!a)){this._setupCurrentTransform(e,t,n);let i=r?r.control:void 0,a=this.getScenePoint(e),o=i&&i.getMouseDownHandler(e,t,i);o&&o.call(i,e,this._currentTransform,a.x,a.y)}}i&&(this._objectsToRender=void 0),this._handleEvent(e,`down`,{alreadySelected:n}),i&&this.requestRenderAll()}_resetTransformEventData(){this._targetInfo=this._viewportPoint=this._scenePoint=void 0}_cacheTransformEventData(e){this._resetTransformEventData(),this._viewportPoint=this.getViewportPoint(e),this._scenePoint=Mt(this._viewportPoint,void 0,this.viewportTransform),this._targetInfo=this.findTarget(e),this._currentTransform&&(this._targetInfo.target=this._currentTransform.target)}__onMouseMove(e){if(this._isClick=!1,this._handleEvent(e,`move:before`),this.isDrawingMode)return void this._onMouseMoveInDrawingMode(e);if(!this._isMainEvent(e))return;let t=this._groupSelector;if(t){let n=this.getScenePoint(e);t.deltaX=n.x-t.x,t.deltaY=n.y-t.y,this.renderTop()}else if(this._currentTransform)this._transformObject(e);else{let{target:t}=this.findTarget(e);this._setCursorFromEvent(e,t),this._fireOverOutEvents(e,t)}this.textEditingManager.onMouseMove(e),this._handleEvent(e,`move`)}_fireOverOutEvents(e,t){let{_hoveredTarget:n,_hoveredTargets:r}=this,{subTargets:i,currentTarget:a}=this.findTarget(e),o=Math.max(r.length,i.length);this.fireSyntheticInOutEvents(`mouse`,{e,target:t,oldTarget:n,actualTarget:a,oldActualTarget:this._hoveredActualTarget,fireCanvas:!0});for(let a=0;a<o;a++)i[a]===t||r[a]&&r[a]===n||this.fireSyntheticInOutEvents(`mouse`,{e,target:i[a],oldTarget:r[a]});this._hoveredActualTarget=a,this._hoveredTarget=t,this._hoveredTargets=i}_fireEnterLeaveEvents(e,t,n){let r=this._draggedoverTarget,i=this._hoveredTargets,{subTargets:a}=this.findTarget(e),o=Math.max(i.length,a.length);this.fireSyntheticInOutEvents(`drag`,{...n,target:t,oldTarget:r,fireCanvas:!0});for(let e=0;e<o;e++)this.fireSyntheticInOutEvents(`drag`,{...n,target:a[e],oldTarget:i[e]});this._draggedoverTarget=t}fireSyntheticInOutEvents(e,{target:t,oldTarget:n,actualTarget:r,oldActualTarget:i,fireCanvas:a,e:o,...s}){let{targetIn:c,targetOut:l,canvasIn:u,canvasOut:d}=mo[e],f=n!==t,p=i!==r,m=t&&f,h=r&&p,g=n&&f,_=i&&p,v={...s,e:o,...fo(this,o)},y={...v,target:n,nextTarget:t,actualTarget:i,nextActualTarget:r};(g||_)&&a&&this.fire(d,y),g&&n.fire(l,y),_&&n!==i&&i.fire(l,y);let b={...v,target:t,previousTarget:n,actualTarget:r,previousActualTarget:i};(m||h)&&a&&this.fire(u,b),m&&t.fire(c,b),h&&r!==t&&r.fire(c,b)}_transformObject(e){let t=this.getScenePoint(e),n=this._currentTransform,r=n.target,i=r.group?Mt(t,void 0,r.group.calcTransformMatrix()):t;n.shiftKey=e.shiftKey,n.altKey=!!this.centeredKey&&e[this.centeredKey],this._performTransformAction(e,n,i),n.actionPerformed&&this.requestRenderAll()}_performTransformAction(e,t,n){let{action:r,actionHandler:i,target:a}=t,o=!!i&&i(e,t,n.x,n.y);o&&a.setCoords(),r===`drag`&&o&&(t.target.isMoving=!0,this.setCursor(t.target.moveCursor||this.moveCursor)),t.actionPerformed=t.actionPerformed||o}_setCursorFromEvent(e,t){if(!t)return void this.setCursor(this.defaultCursor);let n=t.hoverCursor||this.hoverCursor,r=at(this._activeObject)?this._activeObject:null,i=(!r||t.group!==r)&&t.findControl(this.getViewportPoint(e));if(i){let{control:n,coord:r}=i;this.setCursor(n.cursorStyleHandler(e,n,t,r))}else{if(t.subTargetCheck){let{subTargets:t}=this.findTarget(e);t.concat().reverse().forEach(e=>{n=e.hoverCursor||n})}this.setCursor(n)}}handleMultiSelection(e,t){let n=this._activeObject,r=at(n);if(n&&this._isSelectionKeyPressed(e)&&this.selection&&t&&t.selectable&&(n!==t||r)&&(r||!t.isDescendantOf(n)&&!n.isDescendantOf(t))&&!t.onSelect({e})&&!n.getActiveControl()){if(r){let r=n.getObjects(),i=[];if(t===n){let n=this.getScenePoint(e),a=this.searchPossibleTargets(r,n);if(a.target?(t=a.target,i=a.subTargets):(a=this.searchPossibleTargets(this._objects,n),t=a.target,i=a.subTargets),!t||!t.selectable)return!1}t.group===n?(n.remove(t),this._hoveredTarget=t,this._hoveredTargets=i,n.size()===1&&this._setActiveObject(n.item(0),e)):(n.multiSelectAdd(t),this._hoveredTarget=n,this._hoveredTargets=i),this._fireSelectionEvents(r,e)}else{n.isEditing&&n.exitEditing();let r=new(M.getClass(`ActiveSelection`))([],{canvas:this});r.multiSelectAdd(n,t),this._hoveredTarget=r,this._setActiveObject(r,e),this._fireSelectionEvents([n],e)}return!0}return!1}handleSelection(e){if(!this.selection||!this._groupSelector)return!1;let{x:t,y:n,deltaX:r,deltaY:i}=this._groupSelector,a=new N(t,n),o=a.add(new N(r,i)),s=a.min(o),c=a.max(o).subtract(s),l=this.collectObjects({left:s.x,top:s.y,width:c.x,height:c.y},{includeIntersecting:!this.selectionFullyContained}),u=a.eq(o)?l[0]?[l[0]]:[]:l.length>1?l.filter(t=>!t.onSelect({e})).reverse():l;if(u.length===1)this.setActiveObject(u[0],e);else if(u.length>1){let t=M.getClass(`ActiveSelection`);this.setActiveObject(new t(u,{canvas:this}),e)}return this._groupSelector=null,!0}toCanvasElement(e=1,t){let{upper:n}=this.elements;n.ctx=void 0;let r=super.toCanvasElement(e,t);return n.ctx=n.el.getContext(`2d`),r}clear(){this.textEditingManager.clear(),super.clear()}destroy(){this.removeListeners(),this.textEditingManager.dispose(),super.destroy()}};let go={x1:0,y1:0,x2:0,y2:0},_o={...go,r1:0,r2:0},vo=(e,t)=>isNaN(e)&&typeof t==`number`?t:e;function yo(e){return e&&/%$/.test(e)&&Number.isFinite(parseFloat(e))}function bo(e,t){return Vn(0,vo(typeof e==`number`?e:typeof e==`string`?parseFloat(e)/(yo(e)?100:1):NaN,t),1)}let xo=/\s*;\s*/,So=/\s*:\s*/;function Co(e,t){let n,r,i=e.getAttribute(`style`);if(i){let e=i.split(xo);e[e.length-1]===``&&e.pop();for(let t=e.length;t--;){let[i,a]=e[t].split(So).map(e=>e.trim());i===`stop-color`?n=a:i===`stop-opacity`&&(r=a)}}n=n||e.getAttribute(`stop-color`)||`rgb(0,0,0)`,r=vo(parseFloat(r||e.getAttribute(`stop-opacity`)||``),1);let a=new G(n);return a.setAlpha(a.getAlpha()*r*t),{offset:bo(e.getAttribute(`offset`),0),color:a.toRgba()}}function wo(e,t){let n=[],r=e.getElementsByTagName(`stop`),i=bo(t,1);for(let e=r.length;e--;)n.push(Co(r[e],i));return n}function To(e){return e.nodeName===`linearGradient`||e.nodeName===`LINEARGRADIENT`?`linear`:`radial`}function Eo(e){return e.getAttribute(`gradientUnits`)===`userSpaceOnUse`?`pixels`:`percentage`}function Do(e,t){return e.getAttribute(t)}function Oo(e,t){return function(e,{width:t,height:n,gradientUnits:r}){let i;return Object.entries(e).reduce((e,[a,o])=>{if(o===`Infinity`)i=1;else if(o===`-Infinity`)i=0;else{let e=typeof o==`string`;i=e?parseFloat(o):o,e&&yo(o)&&(i*=.01,r===`pixels`&&(a!==`x1`&&a!==`x2`&&a!==`r2`||(i*=t),a!==`y1`&&a!==`y2`||(i*=n)))}return e[a]=i,e},{})}(To(e)===`linear`?function(e){return{x1:Do(e,`x1`)||0,y1:Do(e,`y1`)||0,x2:Do(e,`x2`)||`100%`,y2:Do(e,`y2`)||0}}(e):function(e){return{x1:Do(e,`fx`)||Do(e,`cx`)||`50%`,y1:Do(e,`fy`)||Do(e,`cy`)||`50%`,r1:0,x2:Do(e,`cx`)||`50%`,y2:Do(e,`cy`)||`50%`,r2:Do(e,`r`)||`50%`}}(e),{...t,gradientUnits:Eo(e)})}var ko=class{constructor(e){let{type:t=`linear`,gradientUnits:n=`pixels`,coords:r={},colorStops:i=[],offsetX:a=0,offsetY:o=0,gradientTransform:s,id:c}=e||{};Object.assign(this,{type:t,gradientUnits:n,coords:{...t===`radial`?_o:go,...r},colorStops:i,offsetX:a,offsetY:o,gradientTransform:s,id:c?`${c}_${je()}`:je()})}addColorStop(e){for(let t in e)this.colorStops.push({offset:parseFloat(t),color:e[t]});return this}toObject(e){return{...et(this,e),type:this.type,coords:{...this.coords},colorStops:this.colorStops.map(e=>({...e})),offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?[...this.gradientTransform]:void 0}}toSVG(e,{additionalTransform:t}={}){let n=[],r=this.gradientTransform?this.gradientTransform.concat():T.concat(),i=this.gradientUnits===`pixels`?`userSpaceOnUse`:`objectBoundingBox`,a=this.colorStops.map(e=>({...e})).sort((e,t)=>e.offset-t.offset),o=-this.offsetX,s=-this.offsetY;var c;i===`objectBoundingBox`?(o/=e.width,s/=e.height):(o+=e.width/2,s+=e.height/2),(c=e)&&typeof c._renderPathCommands==`function`&&this.gradientUnits!==`percentage`&&(o-=e.pathOffset.x,s-=e.pathOffset.y),r[4]-=o,r[5]-=s;let l=[`id="SVGID_${U(String(this.id))}"`,`gradientUnits="${i}"`,`gradientTransform="${t?t+` `:``}${nt(r)}"`,``].join(` `),u=e=>parseFloat(String(e));if(this.type===`linear`){let{x1:e,y1:t,x2:r,y2:i}=this.coords,a=u(e),o=u(t),s=u(r),c=u(i);n.push(`<linearGradient `,l,` x1="`,a,`" y1="`,o,`" x2="`,s,`" y2="`,c,`">
|
|
18
|
-
`)}else if(this.type===`radial`){let{x1:e,y1:t,x2:r,y2:i,r1:o,r2:s}=this.coords,
|
|
19
|
-
`),g&&(a.reverse(),a.forEach(e=>{e.offset=1-e.offset}));let _=Math.min(m,h);if(_>0){let e=_/Math.max(m,h);a.forEach(t=>{t.offset+=e*(1-t.offset)})}}return a.forEach(({color:e,offset:t})=>{let r=String(e),i=
|
|
20
|
-
`),n.join(``)}toLive(e){let{x1:t,y1:n,x2:r,y2:i,r1:a,r2:o}=this.coords,s=this.type===`linear`?e.createLinearGradient(t,n,r,i):e.createRadialGradient(t,n,a,r,i,o);return this.colorStops.forEach(({color:e,offset:t})=>{s.addColorStop(t,e)}),s}static async fromObject(e){let{colorStops:t,gradientTransform:n}=e;return new this({...e,colorStops:t?t.map(e=>({...e})):void 0,gradientTransform:n?[...n]:void 0})}static fromElement(e,t,n){let r=
|
|
21
|
-
`)}static async fromObject({type:e,source:t,patternTransform:n,...r},i){let a=await
|
|
22
|
-
`];{let i=I(t),a=I(n),o=
|
|
23
|
-
`]}}static async fromElement(e,t,n){let{left:r=0,top:i=0,radius:a=0,...o}=Zi(e,this.ATTRIBUTE_NAMES,n);return new this({...o,radius:a,left:r-a,top:i-a})}static fromObject(e){return super._fromObject(e)}};a(Fo,`type`,`Circle`),a(Fo,`cacheProperties`,[...Un,...Po]),a(Fo,`ownDefaults`,{radius:0,startAngle:0,endAngle:360,counterClockwise:!1}),a(Fo,`ATTRIBUTE_NAMES`,[`cx`,`cy`,`r`,...ki]),M.setClass(Fo),M.setSVGClass(Fo);let Io=[`x1`,`x2`,`y1`,`y2`];var Lo=class e extends J{constructor([t,n,r,i]=[0,0,0,0],a={}){super(),Object.assign(this,e.ownDefaults),this.setOptions(a),this.x1=t,this.x2=r,this.y1=n,this.y2=i,this._setWidthHeight();let{left:o,top:s}=a;typeof o==`number`&&this.set(`left`,o),typeof s==`number`&&this.set(`top`,s)}_setWidthHeight(){let{x1:e,y1:t,x2:n,y2:r}=this;this.width=Math.abs(n-e),this.height=Math.abs(r-t);let{left:i,top:a,width:o,height:s}=wt([{x:e,y:t},{x:n,y:r}]),c=new N(i+o/2,a+s/2);this.setPositionByOrigin(c,E,E)}_set(e,t){return super._set(e,t),Io.includes(e)&&this._setWidthHeight(),this}_render(e){e.beginPath();let t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;let n=e.strokeStyle;var r;V(this.stroke)?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=(r=this.stroke)==null?e.fillStyle:r,this.stroke&&this._renderStroke(e),e.strokeStyle=n}_findCenterFromElement(){return new N((this.x1+this.x2)/2,(this.y1+this.y2)/2)}toObject(e=[]){return{...super.toObject(e),...this.calcLinePoints()}}_getNonTransformedDimensions(){let e=super._getNonTransformedDimensions();return this.strokeLineCap===`butt`&&(this.width===0&&(e.y-=this.strokeWidth),this.height===0&&(e.x-=this.strokeWidth)),e}calcLinePoints(){let{x1:e,x2:t,y1:n,y2:r,width:i,height:a}=this,o=e<=t?-.5:.5,s=n<=r?-.5:.5;return{x1:o*i,x2:o*-i,y1:s*a,y2:s*-a}}_toSVG(){let{x1:e,x2:t,y1:n,y2:r}=this.calcLinePoints();return[`<line `,`COMMON_PARTS`,`x1="${e}" y1="${n}" x2="${t}" y2="${r}" />\n`]}static async fromElement(e,t,n){let{x1:r=0,y1:i=0,x2:a=0,y2:o=0,...s}=Zi(e,this.ATTRIBUTE_NAMES,n);return new this([r,i,a,o],s)}static fromObject({x1:e,y1:t,x2:n,y2:r,...i}){return this._fromObject({...i,points:[e,t,n,r]},{extraParam:`points`})}};a(Lo,`type`,`Line`),a(Lo,`cacheProperties`,[...Un,...Io]),a(Lo,`ATTRIBUTE_NAMES`,ki.concat(Io)),M.setClass(Lo),M.setSVGClass(Lo);var Ro=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t)}_render(e){let t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderPaintInOrder(e)}_toSVG(){let e=this.width/2,t=this.height/2;return[`<polygon `,`COMMON_PARTS`,`points="`,`${-e} ${t},0 ${-t},${e} ${t}`,`" />`]}};a(Ro,`type`,`Triangle`),a(Ro,`ownDefaults`,{width:100,height:100}),M.setClass(Ro),M.setSVGClass(Ro);let zo=[`rx`,`ry`];var Bo=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t)}_set(e,t){switch(super._set(e,t),e){case`rx`:this.rx=t,this.set(`width`,2*t);break;case`ry`:this.ry=t,this.set(`height`,2*t)}return this}getRx(){return this.get(`rx`)*this.get(de)}getRy(){return this.get(`ry`)*this.get(fe)}toObject(e=[]){return super.toObject([...zo,...e])}_toSVG(){return[`<ellipse `,`COMMON_PARTS`,`cx="0" cy="0" rx="${U(this.rx)}" ry="${U(this.ry)}" />\n`]}_render(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,w,!1),e.restore(),this._renderPaintInOrder(e)}static async fromElement(e,t,n){let r=Zi(e,this.ATTRIBUTE_NAMES,n);return r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,new this(r)}};a(Bo,`type`,`Ellipse`),a(Bo,`cacheProperties`,[...Un,...zo]),a(Bo,`ownDefaults`,{rx:0,ry:0}),a(Bo,`ATTRIBUTE_NAMES`,[...ki,`cx`,`cy`,`rx`,`ry`]),M.setClass(Bo),M.setSVGClass(Bo);let Vo={exactBoundingBox:!1};var Ho=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),a(this,`strokeDiff`,void 0),Object.assign(this,e.ownDefaults),this.setOptions(n),this.points=t;let{left:r,top:i}=n;this.initialized=!0,this.setBoundingBox(!0),typeof r==`number`&&this.set(`left`,r),typeof i==`number`&&this.set(`top`,i)}isOpen(){return!0}_projectStrokeOnPoints(e){return wi(this.points,e,this.isOpen())}_calcDimensions(e){e={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:this.strokeMiterLimit,strokeUniform:this.strokeUniform,strokeWidth:this.strokeWidth,...e||{}};let t=this.exactBoundingBox?this._projectStrokeOnPoints(e).map(e=>e.projectedPoint):this.points;if(t.length===0)return{left:0,top:0,width:0,height:0,pathOffset:new N,strokeOffset:new N,strokeDiff:new N};let n=wt(t),r=Ye({...e,scaleX:1,scaleY:1}),i=wt(this.points.map(e=>L(e,r,!0))),a=new N(this.scaleX,this.scaleY),o=n.left+n.width/2,s=n.top+n.height/2;return this.exactBoundingBox&&(o-=s*Math.tan(I(this.skewX)),s-=o*Math.tan(I(this.skewY))),{...n,pathOffset:new N(o,s),strokeOffset:new N(i.left,i.top).subtract(new N(n.left,n.top)).multiply(a),strokeDiff:new N(n.width,n.height).subtract(new N(i.width,i.height)).multiply(a)}}_findCenterFromElement(){let e=wt(this.points);return new N(e.left+e.width/2,e.top+e.height/2)}setDimensions(){this.setBoundingBox()}setBoundingBox(e){let{left:t,top:n,width:r,height:i,pathOffset:a,strokeOffset:o,strokeDiff:s}=this._calcDimensions();this.set({width:r,height:i,pathOffset:a,strokeOffset:o,strokeDiff:s}),e&&this.setPositionByOrigin(new N(t+r/2,n+i/2),`center`,`center`)}isStrokeAccountedForInDimensions(){return this.exactBoundingBox}_getNonTransformedDimensions(){return this.exactBoundingBox?new N(this.width,this.height):super._getNonTransformedDimensions()}_getTransformedDimensions(e={}){if(this.exactBoundingBox){let a;if(Object.keys(e).some(e=>this.strokeUniform||this.constructor.layoutProperties.includes(e))){var t,n;let{width:r,height:i}=this._calcDimensions(e);a=new N((t=e.width)==null?r:t,(n=e.height)==null?i:n)}else{var r,i;a=new N((r=e.width)==null?this.width:r,(i=e.height)==null?this.height:i)}return a.multiply(new N(e.scaleX||this.scaleX,e.scaleY||this.scaleY))}return super._getTransformedDimensions(e)}_set(e,t){let n=this.initialized&&this[e]!==t,r=super._set(e,t);return this.exactBoundingBox&&n&&((e===`scaleX`||e===`scaleY`)&&this.strokeUniform&&this.constructor.layoutProperties.includes(`strokeUniform`)||this.constructor.layoutProperties.includes(e))&&this.setDimensions(),r}toObject(e=[]){return{...super.toObject(e),points:this.points.map(({x:e,y:t})=>({x:e,y:t}))}}_toSVG(){let e=this.pathOffset.x,t=this.pathOffset.y,n=s.NUM_FRACTION_DIGITS,r=this.points.map(({x:r,y:i})=>`${B(r-e,n)},${B(i-t,n)}`).join(` `);return[`<${U(this.constructor.type).toLowerCase()} `,`COMMON_PARTS`,`points="${r}" />\n`]}_render(e){let t=this.points.length,n=this.pathOffset.x,r=this.pathOffset.y;if(t&&!isNaN(this.points[t-1].y)){e.beginPath(),e.moveTo(this.points[0].x-n,this.points[0].y-r);for(let i=0;i<t;i++){let t=this.points[i];e.lineTo(t.x-n,t.y-r)}!this.isOpen()&&e.closePath(),this._renderPaintInOrder(e)}}complexity(){return this.points.length}static async fromElement(e,t,n){let r=function(e){if(!e)return[];let t=e.replace(/,/g,` `).trim().split(/\s+/),n=[];for(let e=0;e<t.length;e+=2)n.push({x:parseFloat(t[e]),y:parseFloat(t[e+1])});return n}(e.getAttribute(`points`)),{left:i,top:a,...o}=Zi(e,this.ATTRIBUTE_NAMES,n);return new this(r,{...o,...t})}static fromObject(e){return this._fromObject(e,{extraParam:`points`})}};a(Ho,`ownDefaults`,Vo),a(Ho,`type`,`Polyline`),a(Ho,`layoutProperties`,[pe,me,`strokeLineCap`,`strokeLineJoin`,`strokeMiterLimit`,`strokeWidth`,`strokeUniform`,`points`]),a(Ho,`cacheProperties`,[...Un,`points`]),a(Ho,`ATTRIBUTE_NAMES`,[...ki]),M.setClass(Ho),M.setSVGClass(Ho);var Uo=class extends Ho{isOpen(){return!1}};a(Uo,`ownDefaults`,Vo),a(Uo,`type`,`Polygon`),M.setClass(Uo),M.setSVGClass(Uo);var Wo=class extends J{isEmptyStyles(e){if(!this.styles||e!==void 0&&!this.styles[e])return!0;let t=e===void 0?this.styles:{line:this.styles[e]};for(let e in t)for(let n in t[e])for(let r in t[e][n])return!1;return!0}styleHas(e,t){if(!this.styles||t!==void 0&&!this.styles[t])return!1;let n=t===void 0?this.styles:{0:this.styles[t]};for(let t in n)for(let r in n[t])if(n[t][r][e]!==void 0)return!0;return!1}cleanStyle(e){if(!this.styles)return!1;let t=this.styles,n,r,i=0,a=!0,o=0;for(let o in t){n=0;for(let s in t[o]){let c=t[o][s]||{};i++,c[e]===void 0?a=!1:(r?c[e]!==r&&(a=!1):r=c[e],c[e]===this[e]&&delete c[e]),Object.keys(c).length===0?delete t[o][s]:n++}n===0&&delete t[o]}for(let e=0;e<this._textLines.length;e++)o+=this._textLines[e].length;a&&i===o&&(this[e]=r,this.removeStyle(e))}removeStyle(e){if(!this.styles)return;let t=this.styles,n,r,i;for(r in t){for(i in n=t[r],n)delete n[i][e],Object.keys(n[i]).length===0&&delete n[i];Object.keys(n).length===0&&delete t[r]}}_extendStyles(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e);this._getLineStyle(n)||this._setLineStyle(n);let i=tt({...this._getStyleDeclaration(n,r),...t},e=>e!==void 0);this._setStyleDeclaration(n,r,i)}getSelectionStyles(e,t,n){let r=[];for(let i=e;i<(t||e);i++)r.push(this.getStyleAtPosition(i,n));return r}getStyleAtPosition(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e);return t?this.getCompleteStyleDeclaration(n,r):this._getStyleDeclaration(n,r)}setSelectionStyles(e,t,n){for(let r=t;r<(n||t);r++)this._extendStyles(r,e);this._forceClearCache=!0}_getStyleDeclaration(e,t){var n;let r=this.styles&&this.styles[e];return r&&(n=r[t])!=null?n:{}}getCompleteStyleDeclaration(e,t){return{...et(this,this.constructor._styleProperties),...this._getStyleDeclaration(e,t)}}_setStyleDeclaration(e,t,n){this.styles[e][t]=n}_deleteStyleDeclaration(e,t){delete this.styles[e][t]}_getLineStyle(e){return!!this.styles[e]}_setLineStyle(e){this.styles[e]={}}_deleteLineStyle(e){delete this.styles[e]}};a(Wo,`_styleProperties`,wn);let Go=/ +/g,Ko=/"/g;function qo(e,t,n,r,i){return`\t\t${((e,{left:t,top:n,width:r,height:i},a=s.NUM_FRACTION_DIGITS)=>{let o=hn(j,e,!1),[c,l,u,d]=[t,n,r,i].map(e=>B(e,a));return`<rect ${o} x="${c}" y="${l}" width="${u}" height="${d}"></rect>`})(e,{left:t,top:n,width:r,height:i})}\n`}let Jo;var Q=class e extends Wo{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(),a(this,`__charBounds`,[]),Object.assign(this,e.ownDefaults),this.setOptions(n),this.styles||(this.styles={}),this.text=t,this.initialized=!0,this.path&&this.setPathInfo(),this.initDimensions(),this.setCoords()}setPathInfo(){let e=this.path;e&&(e.segmentsInfo=ja(e.path))}_splitText(){let e=this._splitTextIntoLines(this.text);return this.textLines=e.lines,this._textLines=e.graphemeLines,this._unwrappedTextLines=e._unwrappedLines,this._text=e.graphemeText,e}initDimensions(){this._splitText(),this._clearCache(),this.dirty=!0,this.path?(this.width=this.path.width,this.height=this.path.height):(this.width=this.calcTextWidth()||this.cursorWidth||this.MIN_TEXT_WIDTH,this.height=this.calcTextHeight()),this.textAlign.includes(`justify`)&&this.enlargeSpaces()}enlargeSpaces(){let e,t,n,r,i,a,o;for(let s=0,c=this._textLines.length;s<c;s++)if((this.textAlign===`justify`||s!==c-1&&!this.isEndOfWrapping(s))&&(r=0,i=this._textLines[s],t=this.getLineWidth(s),t<this.width&&(o=this.textLines[s].match(this._reSpacesAndTabs)))){n=o.length,e=(this.width-t)/n;for(let t=0;t<=i.length;t++)a=this.__charBounds[s][t],this._reSpaceAndTab.test(i[t])?(a.width+=e,a.kernedWidth+=e,a.left+=r,r+=e):a.left+=r}}isEndOfWrapping(e){return e===this._textLines.length-1}missingNewlineOffset(e){return 1}get2DCursorLocation(e,t){let n=t?this._unwrappedTextLines:this._textLines,r;for(r=0;r<n.length;r++){if(e<=n[r].length)return{lineIndex:r,charIndex:e};e-=n[r].length+this.missingNewlineOffset(r,t)}return{lineIndex:r-1,charIndex:n[r-1].length<e?n[r-1].length:e}}toString(){return`#<Text (${this.complexity()}): { "text": "${this.text}", "fontFamily": "${this.fontFamily}" }>`}_getCacheCanvasDimensions(){let e=super._getCacheCanvasDimensions(),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e}_render(e){let t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,`underline`),this._renderText(e),this._renderTextDecoration(e,`overline`),this._renderTextDecoration(e,`linethrough`)}_renderText(e){this.paintFirst===`stroke`?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))}_setTextStyles(e,t,n){if(e.textBaseline=`alphabetic`,this.path)switch(this.pathAlign){case E:e.textBaseline=`middle`;break;case`ascender`:e.textBaseline=`top`;break;case`descender`:e.textBaseline=O}e.font=this._getFontDeclaration(t,n)}calcTextWidth(){let e=this.getLineWidth(0);for(let t=1,n=this._textLines.length;t<n;t++){let n=this.getLineWidth(t);n>e&&(e=n)}return e}_renderTextLine(e,t,n,r,i,a){this._renderChars(e,t,n,r,i,a)}_renderTextLinesBackground(e){if(!this.textBackgroundColor&&!this.styleHas(`textBackgroundColor`))return;let t=e.fillStyle,n=this._getLeftOffset(),r=this._getTopOffset();for(let t=0,i=this._textLines.length;t<i;t++){let i=this.getHeightOfLine(t);if(!this.textBackgroundColor&&!this.styleHas(`textBackgroundColor`,t)){r+=i;continue}let a=this._textLines[t].length,o=this._getLineLeftOffset(t),s,c,l=0,u=0,d=this.getValueOfPropertyAt(t,0,`textBackgroundColor`),f=this.getHeightOfLineImpl(t);for(let i=0;i<a;i++){let a=this.__charBounds[t][i];c=this.getValueOfPropertyAt(t,i,`textBackgroundColor`),this.path?(e.save(),e.translate(a.renderLeft,a.renderTop),e.rotate(a.angle),e.fillStyle=c,c&&e.fillRect(-a.width/2,-f*(1-this._fontSizeFraction),a.width,f),e.restore()):c===d?l+=a.kernedWidth:(s=n+o+u,this.direction===`rtl`&&(s=this.width-s-l),e.fillStyle=d,d&&e.fillRect(s,r,l,f),u=a.left,l=a.width,d=c)}c&&!this.path&&(s=n+o+u,this.direction===`rtl`&&(s=this.width-s-l),e.fillStyle=c,e.fillRect(s,r,l,f)),r+=i}e.fillStyle=t,this._removeShadow(e)}_measureChar(e,t,n,r){let i=y.getFontCache(t),a=this._getFontDeclaration(t),o=n?n+e:e,s=n&&a===this._getFontDeclaration(r),c=t.fontSize/this.CACHE_FONT_SIZE,l,u,d,f;if(n&&i.has(n)&&(d=i.get(n)),i.has(e)&&(f=l=i.get(e)),s&&i.has(o)&&(u=i.get(o),f=u-d),l===void 0||d===void 0||u===void 0){let r=(Jo||(Jo=F({width:0,height:0}).getContext(`2d`)),Jo);this._setTextStyles(r,t,!0),l===void 0&&(f=l=r.measureText(e).width,i.set(e,l)),d===void 0&&s&&n&&(d=r.measureText(n).width,i.set(n,d)),s&&u===void 0&&(u=r.measureText(o).width,i.set(o,u),f=u-d)}return{width:l*c,kernedWidth:f*c}}getHeightOfChar(e,t){return this.getValueOfPropertyAt(e,t,`fontSize`)}measureLine(e){let t=this._measureLine(e);return this.charSpacing!==0&&(t.width-=this._getWidthOfCharSpacing()),t.width<0&&(t.width=0),t}_measureLine(e){let t,n,r=0,i=this.pathSide===k,a=this.path,o=this._textLines[e],s=o.length,c=Array(s);this.__charBounds[e]=c;for(let i=0;i<s;i++){let a=o[i];n=this._getGraphemeBox(a,e,i,t),c[i]=n,r+=n.kernedWidth,t=a}if(c[s]={left:n?n.left+n.width:0,width:0,kernedWidth:0,height:this.fontSize,deltaY:0},a&&a.segmentsInfo){let e=0,t=a.segmentsInfo[a.segmentsInfo.length-1].length;switch(this.textAlign){case D:e=i?t-r:0;break;case E:e=(t-r)/2;break;case k:e=i?0:t-r}e+=this.pathStartOffset*(i?-1:1);for(let r=i?s-1:0;i?r>=0:r<s;i?r--:r++)n=c[r],e>t?e%=t:e<0&&(e+=t),this._setGraphemeOnPath(e,n),e+=n.kernedWidth}return{width:r,numOfSpaces:0}}_setGraphemeOnPath(e,t){let n=e+t.kernedWidth/2,r=this.path,i=Ma(r.path,n,r.segmentsInfo);t.renderLeft=i.x-r.pathOffset.x,t.renderTop=i.y-r.pathOffset.y,t.angle=i.angle+(this.pathSide===`right`?Math.PI:0)}_getGraphemeBox(e,t,n,r,i){let a=this.getCompleteStyleDeclaration(t,n),o=r?this.getCompleteStyleDeclaration(t,n-1):{},s=this._measureChar(e,a,r,o),c,l=s.kernedWidth,u=s.width;this.charSpacing!==0&&(c=this._getWidthOfCharSpacing(),u+=c,l+=c);let d={width:u,left:0,height:a.fontSize,kernedWidth:l,deltaY:a.deltaY};if(n>0&&!i){let e=this.__charBounds[t][n-1];d.left=e.left+e.width+s.kernedWidth-s.width}return d}getHeightOfLineImpl(e){let t=this.__lineHeights;if(t[e])return t[e];let n=this.getHeightOfChar(e,0);for(let t=1,r=this._textLines[e].length;t<r;t++)n=Math.max(this.getHeightOfChar(e,t),n);return t[e]=n*this._fontSizeMult}getHeightOfLine(e){return this.getHeightOfLineImpl(e)*this.lineHeight}calcTextHeight(){let e=0;for(let t=0,n=this._textLines.length;t<n;t++)e+=t===n-1?this.getHeightOfLineImpl(t):this.getHeightOfLine(t);return e}_getLeftOffset(){return this.direction===`ltr`?-this.width/2:this.width/2}_getTopOffset(){return-this.height/2}_renderTextCommon(e,t){e.save();let n=0,r=this._getLeftOffset(),i=this._getTopOffset();for(let a=0,o=this._textLines.length;a<o;a++)this._renderTextLine(t,e,this._textLines[a],r+this._getLineLeftOffset(a),i+n+this.getHeightOfLineImpl(a),a),n+=this.getHeightOfLine(a);e.restore()}_renderTextFill(e){(this.fill||this.styleHas(`fill`))&&this._renderTextCommon(e,`fillText`)}_renderTextStroke(e){(this.stroke&&this.strokeWidth!==0||!this.isEmptyStyles())&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this._setLineDash(e,this.strokeDashArray),e.beginPath(),this._renderTextCommon(e,`strokeText`),e.closePath(),e.restore())}_renderChars(e,t,n,r,i,a){let o=this.textAlign.includes(En),s=this.path,c=!o&&this.charSpacing===0&&this.isEmptyStyles(a)&&!s,l=this.direction===`ltr`,u=this.direction===`ltr`?1:-1,d=t.direction,f,p,m,h,g,_=``,v=0;if(t.save(),d!==this.direction&&(t.canvas.setAttribute(`dir`,l?`ltr`:`rtl`),t.direction=l?`ltr`:`rtl`,t.textAlign=l?D:k),i-=this.getHeightOfLineImpl(a)*this._fontSizeFraction,c)return this._renderChar(e,t,a,0,n.join(``),r,i),void t.restore();for(let c=0,l=n.length-1;c<=l;c++)h=c===l||this.charSpacing||s,_+=n[c],m=this.__charBounds[a][c],v===0?(r+=u*(m.kernedWidth-m.width),v+=m.width):v+=m.kernedWidth,o&&!h&&this._reSpaceAndTab.test(n[c])&&(h=!0),h||(f=f||this.getCompleteStyleDeclaration(a,c),p=this.getCompleteStyleDeclaration(a,c+1),h=Ei(f,p,!1)),h&&(s?(t.save(),t.translate(m.renderLeft,m.renderTop),t.rotate(m.angle),this._renderChar(e,t,a,c,_,-v/2,0),t.restore()):(g=r,this._renderChar(e,t,a,c,_,g,i)),_=``,f=p,r+=u*v,v=0);t.restore()}_applyPatternGradientTransformText(e){let t=this.width+this.strokeWidth,n=this.height+this.strokeWidth,r=F({width:t,height:n}),i=r.getContext(`2d`);return r.width=t,r.height=n,i.beginPath(),i.moveTo(0,0),i.lineTo(t,0),i.lineTo(t,n),i.lineTo(0,n),i.closePath(),i.translate(t/2,n/2),i.fillStyle=e.toLive(i),this._applyPatternGradientTransform(i,e),i.fill(),i.createPattern(r,`no-repeat`)}handleFiller(e,t,n){let r,i;return V(n)?n.gradientUnits===`percentage`||n.gradientTransform||n.patternTransform?(r=-this.width/2,i=-this.height/2,e.translate(r,i),e[t]=this._applyPatternGradientTransformText(n),{offsetX:r,offsetY:i}):(e[t]=n.toLive(e),this._applyPatternGradientTransform(e,n)):(e[t]=n,{offsetX:0,offsetY:0})}_setStrokeStyles(e,{stroke:t,strokeWidth:n}){return e.lineWidth=n,e.lineCap=this.strokeLineCap,e.lineDashOffset=this.strokeDashOffset,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,this.handleFiller(e,`strokeStyle`,t)}_setFillStyles(e,{fill:t}){return this.handleFiller(e,`fillStyle`,t)}_renderChar(e,t,n,r,i,a,o){let s=this._getStyleDeclaration(n,r),c=this.getCompleteStyleDeclaration(n,r),l=e===`fillText`&&c.fill,u=e===`strokeText`&&c.stroke&&c.strokeWidth;if(u||l){if(t.save(),t.font=this._getFontDeclaration(c),s.textBackgroundColor&&this._removeShadow(t),s.deltaY&&(o+=s.deltaY),l){let e=this._setFillStyles(t,c);t.fillText(i,a-e.offsetX,o-e.offsetY)}if(u){let e=this._setStrokeStyles(t,c);t.strokeText(i,a-e.offsetX,o-e.offsetY)}t.restore()}}setSuperscript(e,t){this._setScript(e,t,this.superscript)}setSubscript(e,t){this._setScript(e,t,this.subscript)}_setScript(e,t,n){let r=this.get2DCursorLocation(e,!0),i=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,`fontSize`),a=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,`deltaY`),o={fontSize:i*n.size,deltaY:a+i*n.baseline};this.setSelectionStyles(o,e,t)}_getLineLeftOffset(e){let t=this.getLineWidth(e),n=this.width-t,r=this.textAlign,i=this.direction,a=this.isEndOfWrapping(e),o=0;return r===`justify`||r===`justify-center`&&!a||r===`justify-right`&&!a||r===`justify-left`&&!a?0:(r===`center`&&(o=n/2),r===`right`&&(o=n),r===`justify-center`&&(o=n/2),r===`justify-right`&&(o=n),i===`rtl`&&(r===`right`||r===`justify-right`?o=0:r===`left`||r===`justify-left`?o=-n:r!==`center`&&r!==`justify-center`||(o=-n/2)),o)}_clearCache(){this._forceClearCache=!1,this.__lineWidths=[],this.__lineHeights=[],this.__charBounds=[]}getLineWidth(e){if(this.__lineWidths[e]!==void 0)return this.__lineWidths[e];let{width:t}=this.measureLine(e);return this.__lineWidths[e]=t,t}_getWidthOfCharSpacing(){return this.charSpacing===0?0:this.fontSize*this.charSpacing/1e3}getValueOfPropertyAt(e,t,n){var r;return(r=this._getStyleDeclaration(e,t)[n])==null?this[n]:r}_renderTextDecoration(e,t){if(!this[t]&&!this.styleHas(t))return;let n=this._getTopOffset(),r=this._getLeftOffset(),i=this.path,a=this._getWidthOfCharSpacing(),o=t===`linethrough`?.5:+(t===`overline`),s=this.offsets[t];for(let c=0,l=this._textLines.length;c<l;c++){let l=this.getHeightOfLine(c);if(!this[t]&&!this.styleHas(t,c)){n+=l;continue}let u=this._textLines[c],d=l/this.lineHeight,f=this._getLineLeftOffset(c),p,m=0,h=0,g=this.getValueOfPropertyAt(c,0,t),_=this.getValueOfPropertyAt(c,0,j),v=this.getValueOfPropertyAt(c,0,`textDecorationColor`)||_,y=this.getValueOfPropertyAt(c,0,vn),b=g,x=v,S=y,C=n+d*(1-this._fontSizeFraction),w=this.getHeightOfChar(c,0),ee=this.getValueOfPropertyAt(c,0,`deltaY`);for(let n=0,a=u.length;n<a;n++){let a=this.__charBounds[c][n];b=this.getValueOfPropertyAt(c,n,t),p=this.getValueOfPropertyAt(c,n,j),x=this.getValueOfPropertyAt(c,n,`textDecorationColor`)||p,S=this.getValueOfPropertyAt(c,n,vn);let l=this.getHeightOfChar(c,n),u=this.getValueOfPropertyAt(c,n,`deltaY`);if(i&&b&&p){let t=this.fontSize*S/1e3;e.save(),e.fillStyle=x,e.translate(a.renderLeft,a.renderTop),e.rotate(a.angle),e.fillRect(-a.kernedWidth/2,s*l+u-o*t,a.kernedWidth,t),e.restore()}else if((b!==g||p!==_||x!==v||l!==w||S!==y||u!==ee)&&h>0){let t=this.fontSize*y/1e3,n=r+f+m;this.direction===`rtl`&&(n=this.width-n-h),g&&v&&y&&(e.fillStyle=v,e.fillRect(n,C+s*w+ee-o*t,h,t)),m=a.left,h=a.width,g=b,v=x,y=S,_=p,w=l,ee=u}else h+=a.kernedWidth}let T=r+f+m;this.direction===`rtl`&&(T=this.width-T-h),e.fillStyle=x;let E=this.fontSize*S/1e3;b&&x&&S&&e.fillRect(T,C+s*w+ee-o*E,h-a,E),n+=l}this._removeShadow(e)}_getFontDeclaration({fontFamily:t=this.fontFamily,fontStyle:n=this.fontStyle,fontWeight:r=this.fontWeight,fontSize:i=this.fontSize}={},a){let o=t.includes(`'`)||t.includes(`"`)||t.includes(`,`)||e.genericFonts.includes(t.toLowerCase())?t:`"${t}"`;return[n,r,`${a?this.CACHE_FONT_SIZE:i}px`,o].join(` `)}render(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._forceClearCache&&this.initDimensions(),super.render(e)))}graphemeSplit(e){return gt(e)}_splitTextIntoLines(e){let t=e.split(this._reNewline),n=Array(t.length),r=[`
|
|
24
|
-
`],i=[];for(let e=0;e<t.length;e++)n[e]=this.graphemeSplit(t[e]),i=i.concat(n[e],r);return i.pop(),{_unwrappedLines:n,lines:t,graphemeText:i,graphemeLines:n}}toObject(e=[]){return{...super.toObject([...Cn,...e]),styles:Di(this.styles,this.text),...this.path?{path:this.path.toObject()}:{}}}set(e,t){let{textLayoutProperties:n}=this.constructor;super.set(e,t);let r=!1,i=!1;if(typeof e==`object`)for(let t in e)t===`path`&&this.setPathInfo(),r=r||n.includes(t),i=i||t===`path`;else r=n.includes(e),i=e===`path`;return i&&this.setPathInfo(),r&&this.initialized&&(this.initDimensions(),this.setCoords()),this}complexity(){return 1}static async fromElement(t,n,r){let i=Zi(t,e.ATTRIBUTE_NAMES,r),{textAnchor:a=D,textDecoration:o=``,dx:s=0,dy:c=0,top:l=0,left:u=0,fontSize:d=16,strokeWidth:f=1,...p}={...n,...i},m=new this(on(t.textContent||``).trim(),{left:u+s,top:l+c,underline:o.includes(`underline`),overline:o.includes(`overline`),linethrough:o.includes(`line-through`),strokeWidth:0,fontSize:d,...p}),h=m.getScaledHeight()/m.height,g=((m.height+m.strokeWidth)*m.lineHeight-m.height)*h,_=m.getScaledHeight()+g,v=0;return a===`center`&&(v=m.getScaledWidth()/2),a===`right`&&(v=m.getScaledWidth()),m.set({left:m.left-v,top:m.top-(_-m.fontSize*(.07+m._fontSizeFraction))/m.lineHeight,strokeWidth:f}),m}static fromObject(e){return this._fromObject({...e,styles:Oi(e.styles||{},e.text)},{extraParam:`text`})}};a(Q,`textLayoutProperties`,Sn),a(Q,`cacheProperties`,[...Un,...Cn]),a(Q,`ownDefaults`,Tn),a(Q,`type`,`Text`),a(Q,`genericFonts`,[`serif`,`sans-serif`,`monospace`,`cursive`,`fantasy`,`system-ui`,`ui-serif`,`ui-sans-serif`,`ui-monospace`,`ui-rounded`,`math`,`emoji`,`fangsong`]),a(Q,`ATTRIBUTE_NAMES`,ki.concat(`x`,`y`,`dx`,`dy`,`font-family`,`font-style`,`font-weight`,`font-size`,`letter-spacing`,`text-decoration`,`text-decoration-thickness`,`text-decoration-color`,`text-anchor`)),vi(Q,[class extends gn{_toSVG(){let e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)}toSVG(e){let t=this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0}),n=this.path;return n?t+n._createBaseSVGMarkup(n._toSVG(),{reviver:e,withShadow:!0,additionalTransform:nt(this.calcOwnMatrix())}):t}_getSVGLeftTopOffsets(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}}_wrapSVGTextAndBg({textBgRects:e,textSpans:t}){let n=this.getSvgTextDecoration(this);return[e.join(``),` <text xml:space="preserve" `,`font-family="${U(this.fontFamily.replace(Ko,`'`))}" `,`font-size="${U(this.fontSize)}" `,this.fontStyle?`font-style="${U(this.fontStyle)}" `:``,this.fontWeight?`font-weight="${U(this.fontWeight)}" `:``,n?`text-decoration="${n}" `:``,this.direction===`rtl`?`direction="rtl" `:``,`style="`,this.getSvgStyles(!0),`"`,this.addPaintOrder(),` >`,t.join(``),`</text>
|
|
25
|
-
`]}_getSVGTextAndBg(e,t){let n=[],r=[],i,a=e;this.backgroundColor&&r.push(qo(this.backgroundColor,-this.width/2,-this.height/2,this.width,this.height));for(let e=0,o=this._textLines.length;e<o;e++)i=this._getLineLeftOffset(e),this.direction===`rtl`&&(i+=this.width),(this.textBackgroundColor||this.styleHas(`textBackgroundColor`,e))&&this._setSVGTextLineBg(r,e,t+i,a),this._setSVGTextLineText(n,e,t+i,a),a+=this.getHeightOfLine(e);return{textSpans:n,textBgRects:r}}_createTextCharSpan(e,t,n,r,i){let a=s.NUM_FRACTION_DIGITS,o=this.getSvgSpanStyles(t,e!==e.trim()||!!e.match(Go)),c=o?`style="${o}"`:``,l=t.deltaY,u=l?` dy="${B(l,a)}" `:``,{angle:d,renderLeft:f,renderTop:p,width:m}=i,h=``;if(f!==void 0){let e=m/2;d&&(h=` rotate="${B(Ie(d),a)}"`);let t=We({angle:Ie(d)});t[4]=f,t[5]=p;let i=new N(-e,0).transform(t);n=i.x,r=i.y}return`<tspan x="${B(n,a)}" y="${B(r,a)}" ${u}${h}${c}>${U(e)}</tspan>`}_setSVGTextLineText(e,t,n,r){let i=this.getHeightOfLine(t),a=this.textAlign.includes(En),o=this._textLines[t],s,c,l,u,d,f=``,p=0;r+=i*(1-this._fontSizeFraction)/this.lineHeight;for(let i=0,m=o.length-1;i<=m;i++)d=i===m||this.charSpacing||this.path,f+=o[i],l=this.__charBounds[t][i],p===0?(n+=l.kernedWidth-l.width,p+=l.width):p+=l.kernedWidth,a&&!d&&this._reSpaceAndTab.test(o[i])&&(d=!0),d||(s=s||this.getCompleteStyleDeclaration(t,i),c=this.getCompleteStyleDeclaration(t,i+1),d=Ei(s,c,!0)),d&&(u=this._getStyleDeclaration(t,i),e.push(this._createTextCharSpan(f,u,n,r,l)),f=``,s=c,this.direction===`rtl`?n-=p:n+=p,p=0)}_setSVGTextLineBg(e,t,n,r){let i=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,o,s=0,c=0,l=this.getValueOfPropertyAt(t,0,`textBackgroundColor`);for(let u=0;u<i.length;u++){let{left:i,width:d,kernedWidth:f}=this.__charBounds[t][u];o=this.getValueOfPropertyAt(t,u,`textBackgroundColor`),o===l?s+=f:(l&&e.push(qo(l,n+c,r,s,a)),c=i,s=d,l=o)}o&&e.push(qo(l,n+c,r,s,a))}getSvgStyles(e){let t=nn(this.textDecorationColor)?` text-decoration-color: ${U(this[yn])};`:``;return`${super.getSvgStyles(e)} text-decoration-thickness: ${B(this.textDecorationThickness*this.getObjectScaling().y/10,s.NUM_FRACTION_DIGITS)}%;${t} white-space: pre;`}getSvgSpanStyles(e,t){let{fontFamily:n,strokeWidth:r,stroke:i,fill:a,fontSize:o,fontStyle:c,fontWeight:l,textDecorationThickness:u,textDecorationColor:d,linethrough:f,overline:p,underline:m}=e,h=this.getSvgTextDecoration({underline:m==null?this.underline:m,overline:p==null?this.overline:p,linethrough:f==null?this.linethrough:f}),g=u||this.textDecorationThickness,_=d||this.textDecorationColor,v=rn(r),y=an(n),b=rn(o),x=an(c),S=rn(l)||an(l),C=an(_);return[i?hn(he,i):``,v?`stroke-width: ${U(v)}; `:``,y?`font-family: ${y.includes(`'`)||y.includes(`"`)?U(y):`'${U(y)}'`}; `:``,b?`font-size: ${U(b)}px; `:``,x?`font-style: ${U(x)}; `:``,S?`font-weight: ${U(S)}; `:``,h?`text-decoration: ${h}; text-decoration-thickness: ${B(g*this.getObjectScaling().y/10,s.NUM_FRACTION_DIGITS)}%;${C?` text-decoration-color: ${U(C)};`:``} `:``,a?hn(j,a):``,t?`white-space: pre; `:``].join(``)}getSvgTextDecoration(e){return[`overline`,`underline`,`line-through`].filter(t=>e[t.replace(`-`,``)]).join(` `)}}]),M.setClass(Q),M.setSVGClass(Q);var Yo=class{constructor(e){a(this,`target`,void 0),a(this,`__mouseDownInPlace`,!1),a(this,`__dragStartFired`,!1),a(this,`__isDraggingOver`,!1),a(this,`__dragStartSelection`,void 0),a(this,`__dragImageDisposer`,void 0),a(this,`_dispose`,void 0),this.target=e;let t=[this.target.on(`dragenter`,this.dragEnterHandler.bind(this)),this.target.on(`dragover`,this.dragOverHandler.bind(this)),this.target.on(`dragleave`,this.dragLeaveHandler.bind(this)),this.target.on(`dragend`,this.dragEndHandler.bind(this)),this.target.on(`drop`,this.dropHandler.bind(this))];this._dispose=()=>{t.forEach(e=>e()),this._dispose=void 0}}isPointerOverSelection(e){let t=this.target,n=t.getSelectionStartFromPointer(e);return t.isEditing&&n>=t.selectionStart&&n<=t.selectionEnd&&t.selectionStart<t.selectionEnd}start(e){return this.__mouseDownInPlace=this.isPointerOverSelection(e)}isActive(){return this.__mouseDownInPlace}end(e){let t=this.isActive();return t&&!this.__dragStartFired&&(this.target.setCursorByClick(e),this.target.initDelayedCursor(!0)),this.__mouseDownInPlace=!1,this.__dragStartFired=!1,this.__isDraggingOver=!1,t}getDragStartSelection(){return this.__dragStartSelection}setDragImage(e,{selectionStart:t,selectionEnd:n}){var r;let i=this.target,a=i.canvas,o=new N(i.flipX?-1:1,i.flipY?-1:1),s=i._getCursorBoundaries(t),c=new N(s.left+s.leftOffset,s.top+s.topOffset).multiply(o).transform(i.calcTransformMatrix()),l=a.getScenePoint(e).subtract(c),u=i.getCanvasRetinaScaling(),d=i.getBoundingRect(),f=c.subtract(new N(d.left,d.top)),p=a.viewportTransform,m=f.add(l).transform(p,!0),h=i.backgroundColor,g=Ti(i.styles);i.backgroundColor=``;let _={stroke:`transparent`,fill:`transparent`,textBackgroundColor:`transparent`};i.setSelectionStyles(_,0,t),i.setSelectionStyles(_,n,i.text.length),i.dirty=!0;let v=i.toCanvasElement({enableRetinaScaling:a.enableRetinaScaling,viewportTransform:!0});i.backgroundColor=h,i.styles=g,i.dirty=!0,Ka(v,{position:`fixed`,left:-v.width+`px`,border:te,width:v.width/u+`px`,height:v.height/u+`px`}),this.__dragImageDisposer&&this.__dragImageDisposer(),this.__dragImageDisposer=()=>{v.remove()},H(e.target||this.target.hiddenTextarea).body.appendChild(v),(r=e.dataTransfer)==null||r.setDragImage(v,m.x,m.y)}onDragStart(e){this.__dragStartFired=!0;let t=this.target,n=this.isActive();if(n&&e.dataTransfer){let n=this.__dragStartSelection={selectionStart:t.selectionStart,selectionEnd:t.selectionEnd},r=t._text.slice(n.selectionStart,n.selectionEnd).join(``),i={text:t.text,value:r,...n};e.dataTransfer.setData(`text/plain`,r),e.dataTransfer.setData(`application/fabric`,JSON.stringify({value:r,styles:t.getSelectionStyles(n.selectionStart,n.selectionEnd,!0)})),e.dataTransfer.effectAllowed=`copyMove`,this.setDragImage(e,i)}return t.abortCursorAnimation(),n}canDrop(e){if(this.target.editable&&!this.target.getActiveControl()&&!e.defaultPrevented){if(this.isActive()&&this.__dragStartSelection){let t=this.target.getSelectionStartFromPointer(e),n=this.__dragStartSelection;return t<n.selectionStart||t>n.selectionEnd}return!0}return!1}targetCanDrop(e){return this.target.canDrop(e)}dragEnterHandler({e}){let t=this.targetCanDrop(e);!this.__isDraggingOver&&t&&(this.__isDraggingOver=!0)}dragOverHandler(e){let{e:t}=e,n=this.targetCanDrop(t);!this.__isDraggingOver&&n?this.__isDraggingOver=!0:this.__isDraggingOver&&!n&&(this.__isDraggingOver=!1),this.__isDraggingOver&&(t.preventDefault(),e.canDrop=!0,e.dropTarget=this.target)}dragLeaveHandler(){(this.__isDraggingOver||this.isActive())&&(this.__isDraggingOver=!1)}dropHandler(e){var t;let{e:n}=e,r=n.defaultPrevented;this.__isDraggingOver=!1,n.preventDefault();let i=(t=n.dataTransfer)==null?void 0:t.getData(`text/plain`);if(i&&!r){let t=this.target,r=t.canvas,a=t.getSelectionStartFromPointer(n),{styles:o}=n.dataTransfer.types.includes(`application/fabric`)?JSON.parse(n.dataTransfer.getData(`application/fabric`)):{},s=i[Math.max(0,i.length-1)];if(this.__dragStartSelection){let e=this.__dragStartSelection.selectionStart,n=this.__dragStartSelection.selectionEnd;a>e&&a<=n?a=e:a>n&&(a-=n-e),t.removeChars(e,n),delete this.__dragStartSelection}t._reNewline.test(s)&&(t._reNewline.test(t._text[a])||a===t._text.length)&&(i=i.trimEnd()),e.didDrop=!0,e.dropTarget=t,t.insertChars(i,o,a),r.setActiveObject(t),t.enterEditing(n),t.selectionStart=Math.min(a+0,t._text.length),t.selectionEnd=Math.min(t.selectionStart+i.length,t._text.length),t.hiddenTextarea.value=t.text,t._updateTextarea(),t.hiddenTextarea.focus(),t.fire(le,{index:a+0,action:`drop`}),r.fire(`text:changed`,{target:t}),r.contextTopDirty=!0,r.requestRenderAll()}}dragEndHandler({e}){if(this.isActive()&&this.__dragStartFired&&this.__dragStartSelection){var t;let n=this.target,r=this.target.canvas,{selectionStart:i,selectionEnd:a}=this.__dragStartSelection,o=((t=e.dataTransfer)==null?void 0:t.dropEffect)||`none`;o===`none`?(n.selectionStart=i,n.selectionEnd=a,n._updateTextarea(),n.hiddenTextarea.focus()):(n.clearContextTop(),o===`move`&&(n.removeChars(i,a),n.selectionStart=n.selectionEnd=i,n.hiddenTextarea&&(n.hiddenTextarea.value=n.text),n._updateTextarea(),n.fire(le,{index:i,action:`dragend`}),r.fire(`text:changed`,{target:n}),r.requestRenderAll()),n.exitEditing())}this.__dragImageDisposer&&this.__dragImageDisposer(),delete this.__dragImageDisposer,delete this.__dragStartSelection,this.__isDraggingOver=!1}dispose(){this._dispose&&this._dispose()}};let Xo=/[ \n\.,;!\?\-]/;var Zo=class extends Q{constructor(...e){super(...e),a(this,`_currentCursorOpacity`,1)}initBehavior(){this._tick=this._tick.bind(this),this._onTickComplete=this._onTickComplete.bind(this),this.updateSelectionOnMouseMove=this.updateSelectionOnMouseMove.bind(this)}onDeselect(e){return this.isEditing&&this.exitEditing(),this.selected=!1,super.onDeselect(e)}_animateCursor({toValue:e,duration:t,delay:n,onComplete:r}){return Mr({startValue:this._currentCursorOpacity,endValue:e,duration:t,delay:n,onComplete:r,abort:()=>!this.canvas||this.selectionStart!==this.selectionEnd,onChange:e=>{this._currentCursorOpacity=e,this.renderCursorOrSelection()}})}_tick(e){this._currentTickState=this._animateCursor({toValue:0,duration:this.cursorDuration/2,delay:Math.max(e||0,100),onComplete:this._onTickComplete})}_onTickComplete(){var e;(e=this._currentTickCompleteState)==null||e.abort(),this._currentTickCompleteState=this._animateCursor({toValue:1,duration:this.cursorDuration,onComplete:this._tick})}initDelayedCursor(e){this.abortCursorAnimation(),this._tick(e?0:this.cursorDelay)}abortCursorAnimation(){let e=!1;[this._currentTickState,this._currentTickCompleteState].forEach(t=>{t&&!t.isDone()&&(e=!0,t.abort())}),this._currentCursorOpacity=1,e&&this.clearContextTop()}restartCursorIfNeeded(){[this._currentTickState,this._currentTickCompleteState].some(e=>!e||e.isDone())&&this.initDelayedCursor()}selectAll(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this}cmdAll(){this.selectAll(),this.renderCursorOrSelection()}getSelectedText(){return this._text.slice(this.selectionStart,this.selectionEnd).join(``)}findWordBoundaryLeft(e){let t=0,n=e-1;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n--;for(;/\S/.test(this._text[n])&&n>-1;)t++,n--;return e-t}findWordBoundaryRight(e){let t=0,n=e;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n++;for(;/\S/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t}findLineBoundaryLeft(e){let t=0,n=e-1;for(;!/\n/.test(this._text[n])&&n>-1;)t++,n--;return e-t}findLineBoundaryRight(e){let t=0,n=e;for(;!/\n/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t}searchWordBoundary(e,t){let n=this._text,r=e>0&&this._reSpace.test(n[e])&&(t===-1||!ne.test(n[e-1]))?e-1:e,i=n[r];for(;r>0&&r<n.length&&!Xo.test(i);)r+=t,i=n[r];return t===-1&&Xo.test(i)&&r++,r}selectWord(e){var t;e=(t=e)==null?this.selectionStart:t;let n=this.searchWordBoundary(e,-1),r=Math.max(n,this.searchWordBoundary(e,1));this.selectionStart=n,this.selectionEnd=r,this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()}selectLine(e){var t;e=(t=e)==null?this.selectionStart:t;let n=this.findLineBoundaryLeft(e),r=this.findLineBoundaryRight(e);this.selectionStart=n,this.selectionEnd=r,this._fireSelectionChanged(),this._updateTextarea()}enterEditing(e){!this.isEditing&&this.editable&&(this.enterEditingImpl(),this.fire(`editing:entered`,e?{e}:void 0),this._fireSelectionChanged(),this.canvas&&(this.canvas.fire(`text:editing:entered`,{target:this,e}),this.canvas.requestRenderAll()))}enterEditingImpl(){this.canvas&&(this.canvas.calcOffset(),this.canvas.textEditingManager.exitTextEditing()),this.isEditing=!0,this.initHiddenTextarea(),this.hiddenTextarea.focus(),this.hiddenTextarea.value=this.text,this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._textBeforeEdit=this.text,this._tick()}updateSelectionOnMouseMove(e){if(this.getActiveControl())return;let t=this.hiddenTextarea;H(t).activeElement!==t&&t.focus();let n=this.getSelectionStartFromPointer(e),r=this.selectionStart,i=this.selectionEnd;(n===this.__selectionStartOnMouseDown&&r!==i||r!==n&&i!==n)&&(n>this.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=n):(this.selectionStart=n,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===r&&this.selectionEnd===i||(this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}_setEditingProps(){this.hoverCursor=`text`,this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor=`text`),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0}fromStringToGraphemeSelection(e,t,n){let r=n.slice(0,e),i=this.graphemeSplit(r).length;if(e===t)return{selectionStart:i,selectionEnd:i};let a=n.slice(e,t);return{selectionStart:i,selectionEnd:i+this.graphemeSplit(a).length}}fromGraphemeToStringSelection(e,t,n){let r=n.slice(0,e).join(``).length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+n.slice(e,t).join(``).length}}_updateTextarea(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){let e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}}updateFromTextArea(){let{hiddenTextarea:e,direction:t,textAlign:n,inCompositionMode:r}=this;if(!e)return;let i=n===`justify`?t===`ltr`?D:k:n.replace(`justify-`,``),a=this.getPositionByOrigin(i,`top`);this.cursorOffsetCache={},this.text=e.value,this.set(`dirty`,!0),this.initDimensions(),this.setPositionByOrigin(a,i,`top`),this.setCoords();let o=this.fromStringToGraphemeSelection(e.selectionStart,e.selectionEnd,e.value);this.selectionEnd=this.selectionStart=o.selectionEnd,r||(this.selectionStart=o.selectionStart),this.updateTextareaPosition()}updateTextareaPosition(){if(this.selectionStart===this.selectionEnd){let e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}}_calcTextareaPosition(){if(!this.canvas)return{left:`1px`,top:`1px`};let e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),n=this.get2DCursorLocation(e),r=n.lineIndex,i=n.charIndex,a=this.getValueOfPropertyAt(r,i,`fontSize`)*this.lineHeight,o=t.leftOffset,s=this.getCanvasRetinaScaling(),c=this.canvas.upperCanvasEl,l=c.width/s,u=c.height/s,d=l-a,f=u-a,p=new N(t.left+o,t.top+t.topOffset+a).transform(this.calcTransformMatrix()).transform(this.canvas.viewportTransform).multiply(new N(c.clientWidth/l,c.clientHeight/u));return p.x<0&&(p.x=0),p.x>d&&(p.x=d),p.y<0&&(p.y=0),p.y>f&&(p.y=f),p.x+=this.canvas._offset.left,p.y+=this.canvas._offset.top,{left:`${p.x}px`,top:`${p.y}px`,fontSize:`${a}px`,charHeight:a}}_saveEditingProps(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}}_restoreEditingProps(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor||this.canvas.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor||this.canvas.moveCursor),delete this._savedProps)}exitEditingImpl(){let e=this.hiddenTextarea;this.selected=!1,this.isEditing=!1,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this.selectionStart!==this.selectionEnd&&this.clearContextTop(),this.selectionEnd=this.selectionStart,this._restoreEditingProps(),this._forceClearCache&&(this.initDimensions(),this.setCoords())}exitEditing(){let e=this._textBeforeEdit!==this.text;return this.exitEditingImpl(),this.fire(`editing:exited`),e&&this.fire(`modified`),this.canvas&&(this.canvas.fire(`text:editing:exited`,{target:this}),e&&this.canvas.fire(`object:modified`,{target:this})),this}_removeExtraneousStyles(){for(let e in this.styles)this._textLines[e]||delete this.styles[e]}removeStyleFromTo(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e,!0),{lineIndex:i,charIndex:a}=this.get2DCursorLocation(t,!0);if(n!==i){if(this.styles[n])for(let e=r;e<this._unwrappedTextLines[n].length;e++)delete this.styles[n][e];if(this.styles[i])for(let e=a;e<this._unwrappedTextLines[i].length;e++){let t=this.styles[i][e];t&&(this.styles[n]||(this.styles[n]={}),this.styles[n][r+e-a]=t)}for(let e=n+1;e<=i;e++)delete this.styles[e];this.shiftLineStyles(i,n-i)}else if(this.styles[n]){let e=this.styles[n],t=a-r;for(let t=r;t<a;t++)delete e[t];for(let r in this.styles[n]){let n=parseInt(r,10);n>=a&&(e[n-t]=e[r],delete e[r])}}}shiftLineStyles(e,t){let n=Object.assign({},this.styles);for(let r in this.styles){let i=parseInt(r,10);i>e&&(this.styles[i+t]=n[i],n[i-t]||delete this.styles[i])}}insertNewlineStyleObject(e,t,n,r){let i={},a=this._unwrappedTextLines[e].length,o=a===t,s=!1;n||(n=1),this.shiftLineStyles(e,n);let c=this.styles[e]?this.styles[e][t===0?t:t-1]:void 0;for(let n in this.styles[e]){let r=parseInt(n,10);r>=t&&(s=!0,i[r-t]=this.styles[e][n],o&&t===0||delete this.styles[e][n])}let l=!1;for(s&&!o&&(this.styles[e+n]=i,l=!0),(l||a>t)&&n--;n>0;)r&&r[n-1]?this.styles[e+n]={0:{...r[n-1]}}:c?this.styles[e+n]={0:{...c}}:delete this.styles[e+n],n--;this._forceClearCache=!0}insertCharStyleObject(e,t,n,r){this.styles||(this.styles={});let i=this.styles[e],a=i?{...i}:{};n||(n=1);for(let e in a){let r=parseInt(e,10);r>=t&&(i[r+n]=a[r],a[r-n]||delete i[r])}if(this._forceClearCache=!0,r){for(;n--;)Object.keys(r[n]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+n]={...r[n]});return}if(!i)return;let o=i[t?t-1:1];for(;o&&n--;)this.styles[e][t+n]={...o}}insertNewStyleBlock(e,t,n){let r=this.get2DCursorLocation(t,!0),i=[0],a,o=0;for(let t=0;t<e.length;t++)e[t]===`
|
|
26
|
-
`?(o++,i[o]=0):i[o]++;for(i[0]>0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,i[0],n),n=n&&n.slice(i[0]+1)),o&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+i[0],o),a=1;a<o;a++)i[a]>0?this.insertCharStyleObject(r.lineIndex+a,0,i[a],n):n&&this.styles[r.lineIndex+a]&&n[0]&&(this.styles[r.lineIndex+a][0]=n[0]),n=n&&n.slice(i[a]+1);i[a]>0&&this.insertCharStyleObject(r.lineIndex+a,0,i[a],n)}removeChars(e,t=e+1){this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(``),this.set(`dirty`,!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}insertChars(e,t,n,r=n){r>n&&this.removeStyleFromTo(n,r);let i=this.graphemeSplit(e);this.insertNewStyleBlock(i,n,t),this._text=[...this._text.slice(0,n),...i,...this._text.slice(r)],this.text=this._text.join(``),this.set(`dirty`,!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}setSelectionStartEndWithShift(e,t,n){n<=e?(t===e?this._selectionDirection=D:this._selectionDirection===`right`&&(this._selectionDirection=D,this.selectionEnd=e),this.selectionStart=n):n>e&&n<t?this._selectionDirection===`right`?this.selectionEnd=n:this.selectionStart=n:(t===e?this._selectionDirection=k:this._selectionDirection===`left`&&(this._selectionDirection=k,this.selectionStart=t),this.selectionEnd=n)}},Qo=class extends Zo{initHiddenTextarea(){let e=this.canvas&&H(this.canvas.getElement())||g(),t=e.createElement(`textarea`);Object.entries({autocapitalize:`off`,autocorrect:`off`,autocomplete:`off`,spellcheck:`false`,"data-fabric":`textarea`,wrap:`off`,name:`fabricTextarea`}).map(([e,n])=>t.setAttribute(e,n));let{top:n,left:r,fontSize:i}=this._calcTextareaPosition();t.style.cssText=`position: absolute; top: ${n}; left: ${r}; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: ${i};`,(this.hiddenTextareaContainer||e.body).appendChild(t),Object.entries({blur:`blur`,keydown:`onKeyDown`,keyup:`onKeyUp`,input:`onInput`,copy:`copy`,cut:`copy`,paste:`paste`,compositionstart:`onCompositionStart`,compositionupdate:`onCompositionUpdate`,compositionend:`onCompositionEnd`}).map(([e,n])=>t.addEventListener(e,this[n].bind(this))),this.hiddenTextarea=t}blur(){this.abortCursorAnimation()}onKeyDown(e){if(!this.isEditing)return;let t=this.direction===`rtl`?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}onKeyUp(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())}onInput(e){let t=this.fromPaste,{value:n,selectionStart:r,selectionEnd:i}=this.hiddenTextarea;if(this.fromPaste=!1,e&&e.stopPropagation(),!this.isEditing)return;let a=()=>{this.updateFromTextArea(),this.fire(le),this.canvas&&(this.canvas.fire(`text:changed`,{target:this}),this.canvas.requestRenderAll())};if(this.hiddenTextarea.value===``)return this.styles={},void a();let o=this._splitTextIntoLines(n).graphemeText,c=this._text.length,l=o.length,u=this.selectionStart,d=this.selectionEnd,f=u!==d,p,m,g,_,v=l-c,y=this.fromStringToGraphemeSelection(r,i,n),b=u>y.selectionStart;f?(m=this._text.slice(u,d),v+=d-u):l<c&&(m=b?this._text.slice(d+v,d):this._text.slice(u,u-v));let x=o.slice(y.selectionEnd-v,y.selectionEnd);if(m&&m.length&&(x.length&&(p=this.getSelectionStyles(u,u+1,!1),p=x.map(()=>p[0])),f?(g=u,_=d):b?(g=d-m.length,_=d):(g=d,_=d+m.length),this.removeStyleFromTo(g,_)),x.length){let{copyPasteData:e}=h();t&&x.join(``)===e.copiedText&&!s.disableStyleCopyPaste&&(p=e.copiedTextStyle),this.insertNewStyleBlock(x,u,p)}a()}onCompositionStart(){this.inCompositionMode=!0}onCompositionEnd(){this.inCompositionMode=!1}onCompositionUpdate({target:e}){let{selectionStart:t,selectionEnd:n}=e;this.compositionStart=t,this.compositionEnd=n,this.updateTextareaPosition()}copy(){if(this.selectionStart===this.selectionEnd)return;let{copyPasteData:e}=h();e.copiedText=this.getSelectedText(),s.disableStyleCopyPaste?e.copiedTextStyle=void 0:e.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0}paste(){this.fromPaste=!0}_getWidthBeforeCursor(e,t){let n,r=this._getLineLeftOffset(e);return t>0&&(n=this.__charBounds[e][t-1],r+=n.left+n.width),r}getDownCursorOffset(e,t){let n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===this._textLines.length-1||e.metaKey||e.keyCode===34)return this._text.length-n;let a=r.charIndex,o=this._getWidthBeforeCursor(i,a),s=this._getIndexOnLine(i+1,o);return this._textLines[i].slice(a).length+s+1+this.missingNewlineOffset(i)}_getSelectionForOffset(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart}getUpCursorOffset(e,t){let n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===0||e.metaKey||e.keyCode===33)return-n;let a=r.charIndex,o=this._getWidthBeforeCursor(i,a),s=this._getIndexOnLine(i-1,o),c=this._textLines[i].slice(0,a),l=this.missingNewlineOffset(i-1);return-this._textLines[i-1].length+s-c.length+(1-l)}_getIndexOnLine(e,t){let n=this._textLines[e],r,i,a=this._getLineLeftOffset(e),o=0;for(let s=0,c=n.length;s<c;s++)if(r=this.__charBounds[e][s].width,a+=r,a>t){i=!0;let e=a-r,n=a,c=Math.abs(e-t);o=Math.abs(n-t)<c?s:s-1;break}return i||(o=n.length-1),o}moveCursorDown(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown(`Down`,e)}moveCursorUp(e){this.selectionStart===0&&this.selectionEnd===0||this._moveCursorUpOrDown(`Up`,e)}_moveCursorUpOrDown(e,t){let n=this[`get${e}CursorOffset`](t,this._selectionDirection===k);if(t.shiftKey?this.moveCursorWithShift(n):this.moveCursorWithoutShift(n),n!==0){let e=this.text.length;this.selectionStart=Vn(0,this.selectionStart,e),this.selectionEnd=Vn(0,this.selectionEnd,e),this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea()}}moveCursorWithShift(e){let t=this._selectionDirection===`left`?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),e!==0}moveCursorWithoutShift(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),e!==0}moveCursorLeft(e){this.selectionStart===0&&this.selectionEnd===0||this._moveCursorLeftOrRight(`Left`,e)}_move(e,t,n){let r;if(e.altKey)r=this[`findWordBoundary${n}`](this[t]);else{if(!e.metaKey&&e.keyCode!==35&&e.keyCode!==36)return this[t]+=n===`Left`?-1:1,!0;r=this[`findLineBoundary${n}`](this[t])}return r!==void 0&&this[t]!==r&&(this[t]=r,!0)}_moveLeft(e,t){return this._move(e,t,`Left`)}_moveRight(e,t){return this._move(e,t,`Right`)}moveCursorLeftWithoutShift(e){let t=!0;return this._selectionDirection=D,this.selectionEnd===this.selectionStart&&this.selectionStart!==0&&(t=this._moveLeft(e,`selectionStart`)),this.selectionEnd=this.selectionStart,t}moveCursorLeftWithShift(e){return this._selectionDirection===`right`&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,`selectionEnd`):this.selectionStart===0?void 0:(this._selectionDirection=D,this._moveLeft(e,`selectionStart`))}moveCursorRight(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight(`Right`,e)}_moveCursorLeftOrRight(e,t){let n=`moveCursor${e}${t.shiftKey?`WithShift`:`WithoutShift`}`;this._currentCursorOpacity=1,this[n](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())}moveCursorRightWithShift(e){return this._selectionDirection===`left`&&this.selectionStart!==this.selectionEnd?this._moveRight(e,`selectionStart`):this.selectionEnd===this._text.length?void 0:(this._selectionDirection=k,this._moveRight(e,`selectionEnd`))}moveCursorRightWithoutShift(e){let t=!0;return this._selectionDirection=k,this.selectionStart===this.selectionEnd?(t=this._moveRight(e,`selectionStart`),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t}};let $o=e=>!!e.button;var es=class extends Qo{constructor(...e){super(...e),a(this,`draggableTextDelegate`,void 0)}initBehavior(){this.on(`mousedown`,this._mouseDownHandler),this.on(`mouseup`,this.mouseUpHandler),this.on(`mousedblclick`,this.doubleClickHandler),this.on(`mousetripleclick`,this.tripleClickHandler),this.draggableTextDelegate=new Yo(this),super.initBehavior()}shouldStartDragging(){return this.draggableTextDelegate.isActive()}onDragStart(e){return this.draggableTextDelegate.onDragStart(e)}canDrop(e){return this.draggableTextDelegate.canDrop(e)}doubleClickHandler(e){this.isEditing&&(this.selectWord(this.getSelectionStartFromPointer(e.e)),this.renderCursorOrSelection())}tripleClickHandler(e){this.isEditing&&(this.selectLine(this.getSelectionStartFromPointer(e.e)),this.renderCursorOrSelection())}_mouseDownHandler({e,alreadySelected:t}){this.canvas&&this.editable&&!$o(e)&&!this.getActiveControl()&&(this.draggableTextDelegate.start(e)||(this.canvas.textEditingManager.register(this),t&&(this.inCompositionMode=!1,this.setCursorByClick(e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()),this.selected||(this.selected=t||this.isEditing)))}mouseUpHandler({e,transform:t}){let n=this.draggableTextDelegate.end(e);if(this.canvas){this.canvas.textEditingManager.unregister(this);let e=this.canvas._activeObject;if(e&&e!==this)return}!this.editable||this.group&&!this.group.interactive||t&&t.actionPerformed||$o(e)||n||this.selected&&!this.getActiveControl()&&(this.enterEditing(e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection())}setCursorByClick(e){let t=this.getSelectionStartFromPointer(e),n=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(n,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())}getSelectionStartFromPointer(e){let t=this.canvas.getScenePoint(e).transform(R(this.calcTransformMatrix())).add(new N(-this._getLeftOffset(),-this._getTopOffset())),n=0,r=0,i=0;for(let e=0;e<this._textLines.length&&n<=t.y;e++)n+=this.getHeightOfLine(e),i=e,e>0&&(r+=this._textLines[e-1].length+this.missingNewlineOffset(e-1));let a=Math.abs(this._getLineLeftOffset(i)),o=this._textLines[i].length,s=this.__charBounds[i];for(let e=0;e<o;e++){let n=a+s[e].kernedWidth;if(t.x<=n){Math.abs(t.x-n)<=Math.abs(t.x-a)&&r++;break}a=n,r++}return Math.min(this.flipX?o-r:r,this._text.length)}};let ts=`moveCursorUp`,ns=`moveCursorDown`,rs=`moveCursorLeft`,is=`moveCursorRight`,as=`exitEditing`,os=(e,t)=>{let n=t.getRetinaScaling();e.setTransform(n,0,0,n,0,0);let r=t.viewportTransform;e.transform(r[0],r[1],r[2],r[3],r[4],r[5])},ss={selectionStart:0,selectionEnd:0,selectionColor:`rgba(17,119,255,0.3)`,isEditing:!1,editable:!0,editingBorderColor:`rgba(102,153,255,0.25)`,cursorWidth:2,cursorColor:``,cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,keysMap:{9:as,27:as,33:ts,34:ns,35:is,36:rs,37:rs,38:ts,39:is,40:ns},keysMapRtl:{9:as,27:as,33:ts,34:ns,35:rs,36:is,37:is,38:ts,39:rs,40:ns},ctrlKeysMapDown:{65:`cmdAll`},ctrlKeysMapUp:{67:`copy`,88:`cut`},_selectionDirection:null,_reSpace:/\s|\r?\n/,inCompositionMode:!1};var cs=class e extends es{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}get type(){let e=super.type;return e===`itext`?`i-text`:e}constructor(t,n){super(t,{...e.ownDefaults,...n}),this.initBehavior()}_set(e,t){return this.isEditing&&this._savedProps&&e in this._savedProps?(this._savedProps[e]=t,this):(e===`canvas`&&(this.canvas instanceof ho&&this.canvas.textEditingManager.remove(this),t instanceof ho&&t.textEditingManager.add(this)),super._set(e,t))}setSelectionStart(e){e=Math.max(e,0),this._updateAndFire(`selectionStart`,e)}setSelectionEnd(e){e=Math.min(e,this.text.length),this._updateAndFire(`selectionEnd`,e)}_updateAndFire(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()}_fireSelectionChanged(){this.fire(`selection:changed`),this.canvas&&this.canvas.fire(`text:selection:changed`,{target:this})}initDimensions(){this.isEditing&&this.initDelayedCursor(),super.initDimensions()}getSelectionStyles(e=this.selectionStart||0,t=this.selectionEnd,n){return super.getSelectionStyles(e,t,n)}setSelectionStyles(e,t=this.selectionStart||0,n=this.selectionEnd){return super.setSelectionStyles(e,t,n)}get2DCursorLocation(e=this.selectionStart,t){return super.get2DCursorLocation(e,t)}render(e){super.render(e),this.cursorOffsetCache={},this.renderCursorOrSelection()}toCanvasElement(e){let t=this.isEditing;this.isEditing=!1;let n=super.toCanvasElement(e);return this.isEditing=t,n}renderCursorOrSelection(){if(!this.isEditing||!this.canvas)return;let e=this.clearContextTop(!0);if(!e)return;let t=this._getCursorBoundaries(),n=this.findAncestorsWithClipPath(),r=n.length>0,i,a=e;if(r){i=F(e.canvas),a=i.getContext(`2d`),os(a,this.canvas);let t=this.calcTransformMatrix();a.transform(t[0],t[1],t[2],t[3],t[4],t[5])}if(this.selectionStart!==this.selectionEnd||this.inCompositionMode?this.renderSelection(a,t):this.renderCursor(a,t),r)for(let t of n){let n=t.clipPath,r=F(e.canvas),i=r.getContext(`2d`);if(os(i,this.canvas),!n.absolutePositioned){let e=t.calcTransformMatrix();i.transform(e[0],e[1],e[2],e[3],e[4],e[5])}n.transform(i),n.drawObject(i,!0,{}),this.drawClipPathOnCache(a,n,r)}r&&(e.setTransform(1,0,0,1,0,0),e.drawImage(i,0,0)),this.canvas.contextTopDirty=!0,e.restore()}findAncestorsWithClipPath(){let e=[],t=this;for(;t;)t.clipPath&&e.push(t),t=t.parent;return e}_getCursorBoundaries(e=this.selectionStart,t){let n=this._getLeftOffset(),r=this._getTopOffset(),i=this._getCursorBoundariesOffsets(e,t);return{left:n,top:r,leftOffset:i.left,topOffset:i.top}}_getCursorBoundariesOffsets(e,t){return t?this.__getCursorBoundariesOffsets(e):this.cursorOffsetCache&&`top`in this.cursorOffsetCache?this.cursorOffsetCache:this.cursorOffsetCache=this.__getCursorBoundariesOffsets(e)}__getCursorBoundariesOffsets(e){let t=0,n=0,{charIndex:r,lineIndex:i}=this.get2DCursorLocation(e),{textAlign:a,direction:o}=this;for(let e=0;e<i;e++)t+=this.getHeightOfLine(e);let s=this._getLineLeftOffset(i),c=this.__charBounds[i][r];c&&(n=c.left),this.charSpacing!==0&&r===this._textLines[i].length&&(n-=this._getWidthOfCharSpacing());let l=s+(n>0?n:0);return o===`rtl`&&(a===`right`||a===`justify`||a===`justify-right`?l*=-1:a===`left`||a===`justify-left`?l=s-(n>0?n:0):a!==`center`&&a!==`justify-center`||(l=s-(n>0?n:0))),{top:t,left:l}}renderCursorAt(e){this._renderCursor(this.canvas.contextTop,this._getCursorBoundaries(e,!0),e)}renderCursor(e,t){this._renderCursor(e,t,this.selectionStart)}getCursorRenderingData(e=this.selectionStart,t=this._getCursorBoundaries(e)){let n=this.get2DCursorLocation(e),r=n.lineIndex,i=n.charIndex>0?n.charIndex-1:0,a=this.getValueOfPropertyAt(r,i,`fontSize`),o=this.getObjectScaling().x*this.canvas.getZoom(),s=this.cursorWidth/o,c=this.getValueOfPropertyAt(r,i,`deltaY`),l=t.topOffset+(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-a*(1-this._fontSizeFraction);return{color:this.cursorColor||this.getValueOfPropertyAt(r,i,`fill`),opacity:this._currentCursorOpacity,left:t.left+t.leftOffset-s/2,top:l+t.top+c,width:s,height:a}}_renderCursor(e,t,n){let{color:r,opacity:i,left:a,top:o,width:s,height:c}=this.getCursorRenderingData(n,t);e.fillStyle=r,e.globalAlpha=i,e.fillRect(a,o,s,c)}renderSelection(e,t){let n={selectionStart:this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,selectionEnd:this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd};this._renderSelection(e,n,t)}renderDragSourceEffect(){let e=this.draggableTextDelegate.getDragStartSelection();this._renderSelection(this.canvas.contextTop,e,this._getCursorBoundaries(e.selectionStart,!0))}renderDropTargetEffect(e){let t=this.getSelectionStartFromPointer(e);this.renderCursorAt(t)}_renderSelection(e,t,n){let{textAlign:r,direction:i}=this,a=t.selectionStart,o=t.selectionEnd,s=r.includes(En),c=this.get2DCursorLocation(a),l=this.get2DCursorLocation(o),u=c.lineIndex,d=l.lineIndex,f=c.charIndex<0?0:c.charIndex,p=l.charIndex<0?0:l.charIndex;for(let t=u;t<=d;t++){let a=this._getLineLeftOffset(t)||0,o=this.getHeightOfLine(t),c=0,l=0;if(t===u&&(c=this.__charBounds[u][f].left),t>=u&&t<d)l=s&&!this.isEndOfWrapping(t)?this.width:this.getLineWidth(t)||5;else if(t===d)if(p===0)l=this.__charBounds[d][p].left;else{let e=this._getWidthOfCharSpacing();l=this.__charBounds[d][p-1].left+this.__charBounds[d][p-1].width-e}let m=o;(this.lineHeight<1||t===d&&this.lineHeight>1)&&(o/=this.lineHeight);let h=n.left+a+c,g=o,_=0,v=l-c;this.inCompositionMode?(e.fillStyle=this.compositionColor||`black`,g=1,_=o):e.fillStyle=this.selectionColor,i===`rtl`&&(r===`right`||r===`justify`||r===`justify-right`?h=this.width-h-v:r===`left`||r===`justify-left`?h=n.left+a-l:r!==`center`&&r!==`justify-center`||(h=n.left+a-l)),e.fillRect(h,n.top+n.topOffset+_,v,g),n.topOffset+=m}}getCurrentCharFontSize(){let e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,`fontSize`)}getCurrentCharColor(){let e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,j)}_getCurrentCharIndex(){let e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}dispose(){this.exitEditingImpl(),this.draggableTextDelegate.dispose(),super.dispose()}};a(cs,`ownDefaults`,ss),a(cs,`type`,`IText`),M.setClass(cs),M.setClass(cs,`i-text`);var ls=class e extends cs{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(t,{...e.ownDefaults,...n})}static createControls(){return{controls:gi()}}initDimensions(){this.initialized&&(this.isEditing&&this.initDelayedCursor(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set(`width`,this.dynamicMinWidth),this.textAlign.includes(`justify`)&&this.enlargeSpaces(),this.height=this.calcTextHeight())}_generateStyleMap(e){let t=0,n=0,r=0,i={};for(let a=0;a<e.graphemeLines.length;a++)e.graphemeText[r]===`
|
|
27
|
-
`&&a>0?(n=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&a>0&&(n++,r++),i[a]={line:t,offset:n},r+=e.graphemeLines[a].length,n+=e.graphemeLines[a].length;return i}styleHas(e,t){if(this._styleMap&&!this.isWrapping){let e=this._styleMap[t];e&&(t=e.line)}return super.styleHas(e,t)}isEmptyStyles(e){if(!this.styles)return!0;let t,n,r=0,i=!1,a=this._styleMap[e],o=this._styleMap[e+1];a&&(e=a.line,r=a.offset),o&&(t=o.line,i=t===e,n=o.offset);let s=e===void 0?this.styles:{line:this.styles[e]};for(let e in s)for(let t in s[e]){let a=parseInt(t,10);if(a>=r&&(!i||a<n))for(let n in s[e][t])return!1}return!0}_getStyleDeclaration(e,t){if(this._styleMap&&!this.isWrapping){let n=this._styleMap[e];if(!n)return{};e=n.line,t=n.offset+t}return super._getStyleDeclaration(e,t)}_setStyleDeclaration(e,t,n){let r=this._styleMap[e];super._setStyleDeclaration(r.line,r.offset+t,n)}_deleteStyleDeclaration(e,t){let n=this._styleMap[e];super._deleteStyleDeclaration(n.line,n.offset+t)}_getLineStyle(e){let t=this._styleMap[e];return!!this.styles[t.line]}_setLineStyle(e){let t=this._styleMap[e];super._setLineStyle(t.line)}_wrapText(e,t){this.isWrapping=!0;let n=this.getGraphemeDataForRender(e),r=[];for(let e=0;e<n.wordsData.length;e++)r.push(...this._wrapLine(e,t,n));return this.isWrapping=!1,r}getGraphemeDataForRender(e){let t=this.splitByGrapheme,n=t?``:` `,r=0;return{wordsData:e.map((e,i)=>{let a=0,o=t?this.graphemeSplit(e):this.wordSplit(e);return o.length===0?[{word:[],width:0}]:o.map(e=>{let o=t?[e]:this.graphemeSplit(e),s=this._measureWord(o,i,a);return r=Math.max(s,r),a+=o.length+n.length,{word:o,width:s}})}),largestWordWidth:r}}_measureWord(e,t,n=0){let r,i=0;for(let a=0,o=e.length;a<o;a++)i+=this._getGraphemeBox(e[a],t,a+n,r,!0).kernedWidth,r=e[a];return i}wordSplit(e){return e.split(this._wordJoiners)}_wrapLine(e,t,{largestWordWidth:n,wordsData:r},i=0){let a=this._getWidthOfCharSpacing(),o=this.splitByGrapheme,s=[],c=o?``:` `,l=0,u=[],d=0,f=0,p=!0;t-=i;let m=Math.max(t,n,this.dynamicMinWidth),h=r[e],g;for(g=0;g<h.length;g++){let{word:t,width:n}=h[g];d+=t.length,l+=f+n-a,l>m&&!p?(s.push(u),u=[],l=n,p=!0):l+=a,p||o||u.push(c),u=u.concat(t),f=o?0:this._measureWord([c],e,d),d++,p=!1}return g&&s.push(u),n+i>this.dynamicMinWidth&&(this.dynamicMinWidth=n-a+i),s}isEndOfWrapping(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line}missingNewlineOffset(e,t){return this.splitByGrapheme&&!t?+!!this.isEndOfWrapping(e):1}_splitTextIntoLines(e){let t=super._splitTextIntoLines(e),n=this._wrapText(t.lines,this.width),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].join(``);return t.lines=r,t.graphemeLines=n,t}getMinWidth(){return Math.max(this.minWidth,this.dynamicMinWidth)}_removeExtraneousStyles(){let e=new Map;for(let t in this._styleMap){let n=parseInt(t,10);if(this._textLines[n]){let n=this._styleMap[t].line;e.set(`${n}`,!0)}}for(let t in this.styles)e.has(t)||delete this.styles[t]}toObject(e=[]){return super.toObject([`minWidth`,`splitByGrapheme`,...e])}};a(ls,`type`,`Textbox`),a(ls,`textLayoutProperties`,[...cs.textLayoutProperties,`width`]),a(ls,`ownDefaults`,{minWidth:20,dynamicMinWidth:2,lockScalingFlip:!0,noScaleCache:!1,_wordJoiners:/[ \t\r]/,splitByGrapheme:!1}),M.setClass(ls);var us=class extends ra{shouldPerformLayout(e){return!!e.target.clipPath&&super.shouldPerformLayout(e)}shouldLayoutClipPath(){return!1}calcLayoutResult(e,t){let{target:n}=e,{clipPath:r,group:i}=n;if(!r||!this.shouldPerformLayout(e))return;let{width:a,height:o}=wt(na(n,r)),s=new N(a,o);if(r.absolutePositioned)return{center:Mt(r.getRelativeCenterPoint(),void 0,i?i.calcTransformMatrix():void 0),size:s};{let i=r.getRelativeCenterPoint().transform(n.calcOwnMatrix(),!0);if(this.shouldPerformLayout(e)){let{center:n=new N,correction:r=new N}=this.calcBoundingBox(t,e)||{};return{center:n.add(i),correction:r.subtract(i),size:s}}return{center:n.getRelativeCenterPoint().add(i),size:s}}}};a(us,`type`,`clip-path`),M.setClass(us);var ds=class extends ra{getInitialSize({target:e},{size:t}){return new N(e.width||t.x,e.height||t.y)}};a(ds,`type`,`fixed`),M.setClass(ds);var fs=class extends oa{subscribeTargets(e){let t=e.target;e.targets.reduce((e,t)=>(t.parent&&e.add(t.parent),e),new Set).forEach(e=>{e.layoutManager.subscribeTargets({target:e,targets:[t]})})}unsubscribeTargets(e){let t=e.target,n=t.getObjects();e.targets.reduce((e,t)=>(t.parent&&e.add(t.parent),e),new Set).forEach(e=>{!n.some(t=>t.parent===e)&&e.layoutManager.unsubscribeTargets({target:e,targets:[t]})})}},ps=class e extends ca{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),Object.assign(this,e.ownDefaults),this.setOptions(n);let{left:r,top:i,layoutManager:a}=n;this.groupInit(t,{left:r,top:i,layoutManager:a==null?new fs:a})}_shouldSetNestedCoords(){return!0}__objectSelectionMonitor(){}multiSelectAdd(...e){this.multiSelectionStacking===`selection-order`?this.add(...e):e.forEach(e=>{let t=this._objects.findIndex(t=>t.isInFrontOf(e)),n=t===-1?this.size():t;this.insertAt(n,e)})}canEnterGroup(e){return this.getObjects().some(t=>t.isDescendantOf(e)||e.isDescendantOf(t))?(c(`error`,`ActiveSelection: circular object trees are not supported, this call has no effect`),!1):super.canEnterGroup(e)}enterGroup(e,t){e.parent&&e.parent===e.group?e.parent._exitGroup(e):e.group&&e.parent!==e.group&&e.group.remove(e),this._enterGroup(e,t)}exitGroup(e,t){this._exitGroup(e,t),e.parent&&e.parent._enterGroup(e,!0)}_onAfterObjectsChange(e,t){super._onAfterObjectsChange(e,t);let n=new Set;t.forEach(e=>{let{parent:t}=e;t&&n.add(t)}),e===`removed`?n.forEach(e=>{e._onAfterObjectsChange(ta,t)}):n.forEach(e=>{e._set(`dirty`,!0)})}onDeselect(){return this.removeAll(),!1}toString(){return`#<ActiveSelection: (${this.complexity()})>`}shouldCache(){return!1}isOnACache(){return!1}_renderControls(e,t,n){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;let r={hasControls:!1,...n,forActiveSelection:!0};for(let t=0;t<this._objects.length;t++)this._objects[t]._renderControls(e,r);super._renderControls(e,t),e.restore()}};a(ps,`type`,`ActiveSelection`),a(ps,`ownDefaults`,{multiSelectionStacking:`canvas-stacking`}),M.setClass(ps),M.setClass(ps,`activeSelection`);var ms=class{constructor(){a(this,`resources`,{})}applyFilters(e,t,n,r,i){let a=i.getContext(`2d`,{willReadFrequently:!0,desynchronized:!0});if(!a)return;a.drawImage(t,0,0,n,r);let o={sourceWidth:n,sourceHeight:r,imageData:a.getImageData(0,0,n,r),originalEl:t,originalImageData:a.getImageData(0,0,n,r),canvasEl:i,ctx:a,filterBackend:this};e.forEach(e=>{e.applyTo(o)});let{imageData:s}=o;return s.width===n&&s.height===r||(i.width=s.width,i.height=s.height),a.putImageData(s,0,0),o}},hs=class{constructor({tileSize:e=s.textureSize}={}){a(this,`aPosition`,new Float32Array([0,0,0,1,1,0,1,1])),a(this,`resources`,{}),this.tileSize=e,this.setupGLContext(e,e),this.captureGPUInfo()}setupGLContext(e,t){this.dispose(),this.createWebGLCanvas(e,t)}createWebGLCanvas(e,t){let n=F({width:e,height:t}),r=n.getContext(`webgl`,{alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1});r&&(r.clearColor(0,0,0,0),this.canvas=n,this.gl=r)}applyFilters(e,t,n,r,i,a){let o=this.gl,s=i.getContext(`2d`);if(!o||!s)return;let c;a&&(c=this.getCachedTexture(a,t));let l={originalWidth:t.width||t.naturalWidth||0,originalHeight:t.height||t.naturalHeight||0,sourceWidth:n,sourceHeight:r,destinationWidth:n,destinationHeight:r,context:o,sourceTexture:this.createTexture(o,n,r,c?void 0:t),targetTexture:this.createTexture(o,n,r),originalTexture:c||this.createTexture(o,n,r,c?void 0:t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:i},u=o.createFramebuffer();return o.bindFramebuffer(o.FRAMEBUFFER,u),e.forEach(e=>{e&&e.applyTo(l)}),function(e){let t=e.targetCanvas,n=t.width,r=t.height,i=e.destinationWidth,a=e.destinationHeight;n===i&&r===a||(t.width=i,t.height=a)}(l),this.copyGLTo2D(o,l),o.bindTexture(o.TEXTURE_2D,null),o.deleteTexture(l.sourceTexture),o.deleteTexture(l.targetTexture),o.deleteFramebuffer(u),s.setTransform(1,0,0,1,0,0),l}dispose(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()}clearWebGLCaches(){this.programCache={},this.textureCache={}}createTexture(e,t,n,r,i){let{NEAREST:a,TEXTURE_2D:o,RGBA:s,UNSIGNED_BYTE:c,CLAMP_TO_EDGE:l,TEXTURE_MAG_FILTER:u,TEXTURE_MIN_FILTER:d,TEXTURE_WRAP_S:f,TEXTURE_WRAP_T:p}=e,m=e.createTexture();return e.bindTexture(o,m),e.texParameteri(o,u,i||a),e.texParameteri(o,d,i||a),e.texParameteri(o,f,l),e.texParameteri(o,p,l),r?e.texImage2D(o,0,s,s,c,r):e.texImage2D(o,0,s,t,n,0,s,c,null),m}getCachedTexture(e,t,n){let{textureCache:r}=this;if(r[e])return r[e];{let i=this.createTexture(this.gl,t.width,t.height,t,n);return i&&(r[e]=i),i}}evictCachesForKey(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])}copyGLTo2D(e,t){let n=e.canvas,r=t.targetCanvas,i=r.getContext(`2d`);if(!i)return;i.translate(0,r.height),i.scale(1,-1);let a=n.height-r.height;i.drawImage(n,0,a,r.width,r.height,0,0,r.width,r.height)}copyGLTo2DPutImageData(e,t){let n=t.targetCanvas.getContext(`2d`),r=t.destinationWidth,i=t.destinationHeight,a=r*i*4;if(!n)return;let o=new Uint8Array(this.imageBuffer,0,a),s=new Uint8ClampedArray(this.imageBuffer,0,a);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,o);let c=new ImageData(s,r,i);n.putImageData(c,0,0)}captureGPUInfo(){if(this.gpuInfo)return this.gpuInfo;let e=this.gl,t={renderer:``,vendor:``};if(!e)return t;let n=e.getExtension(`WEBGL_debug_renderer_info`);if(n){let r=e.getParameter(n.UNMASKED_RENDERER_WEBGL),i=e.getParameter(n.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),i&&(t.vendor=i.toLowerCase())}return this.gpuInfo=t,t}};let gs;function _s(){let{WebGLProbe:e}=h();return e.queryWebGL(P()),s.enableGLFiltering&&e.isSupported(s.textureSize)?new hs({tileSize:s.textureSize}):new ms}function vs(e=!0){return!gs&&e&&(gs=_s()),gs}let ys=[`cropX`,`cropY`];var bs=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(),a(this,`_lastScaleX`,1),a(this,`_lastScaleY`,1),a(this,`_filterScalingX`,1),a(this,`_filterScalingY`,1),this.filters=[],Object.assign(this,e.ownDefaults),this.setOptions(n),this.cacheKey=`texture${je()}`,this.setElement(typeof t==`string`?(this.canvas&&H(this.canvas.getElement())||g()).getElementById(t):t,n)}getElement(){return this._element}setElement(e,t={}){this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._element=e,this._originalElement=e,this._setWidthHeight(t),this.filters.length!==0&&this.applyFilters(),this.resizeFilter&&this.applyResizeFilters()}removeTexture(e){let t=vs(!1);t instanceof hs&&t.evictCachesForKey(e)}dispose(){super.dispose(),this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._cacheContext=null,[`_originalElement`,`_element`,`_filteredEl`,`_cacheCanvas`].forEach(e=>{let t=this[e];t&&h().dispose(t),this[e]=void 0})}getCrossOrigin(){return this._originalElement&&(this._originalElement.crossOrigin||null)}getOriginalSize(){let e=this.getElement();return e?{width:e.naturalWidth||e.width,height:e.naturalHeight||e.height}:{width:0,height:0}}_stroke(e){if(!this.stroke||this.strokeWidth===0)return;let t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,-n),e.lineTo(t,-n),e.lineTo(t,n),e.lineTo(-t,n),e.lineTo(-t,-n),e.closePath()}toObject(e=[]){let t=[];return this.filters.forEach(e=>{e&&t.push(e.toObject())}),{...super.toObject([...ys,...e]),src:this.getSrc(),crossOrigin:this.getCrossOrigin(),filters:t,...this.resizeFilter?{resizeFilter:this.resizeFilter.toObject()}:{}}}hasCrop(){return!!this.cropX||!!this.cropY||this.width<this._element.width||this.height<this._element.height}_toSVG(){let e=[],t=this._element,n=-this.width/2,r=-this.height/2,i=[],a=[],o=``,s=``;if(!t)return[];if(this.hasCrop()){let e=je();i.push(`<clipPath id="imageCrop_`+e+`">
|
|
28
|
-
`,` <rect x="`+n+`" y="`+r+`" width="`+
|
|
16
|
+
`),t}getSvgStyles(){let e=this.opacity!==void 0&&this.opacity!==1?`opacity: ${H(this.opacity)};`:``,t=this.visible?``:` visibility: hidden;`;return[e,this.getSvgFilter(),t].join(``)}toClipPathSVG(e){let t=[],n=this._createSVGBgRect(e);n&&t.push(` `,n);for(let n=0;n<this._objects.length;n++)t.push(` `,this._objects[n].toClipPathSVG(e));return this._createBaseClipPathSVGMarkup(t,{reviver:e})}static fromObject({type:e,objects:t=[],layoutManager:n,...r},i){return Promise.all([et(t,i),tt(r,i)]).then(([e,t])=>{let i=new this(e,{...r,...t,layoutManager:new Ba});return i.layoutManager=n?new(M.getClass(n.type))(new(M.getClass(n.strategy))):new za,i.layoutManager.subscribeTargets({type:Na,target:i,targets:i.getObjects()}),i.setCoords(),i})}};o(Ha,`type`,`Group`),o(Ha,`ownDefaults`,Va),M.setClass(Ha);let Ua=(e,t)=>e&&e.length===1?e[0]:new Ha(e,t),Wa=(e,t)=>Math.min(t.width/e.width,t.height/e.height),Ga=(e,t)=>Math.max(t.width/e.width,t.height/e.height),Ka=`\\s*,?\\s*`,qa=`${Ka}(${Qn})`,Ja=`${qa}${qa}${qa}${Ka}([01])${Ka}([01])${qa}${qa}`,Ya={m:`l`,M:`L`},Xa=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=Ce(e),f=we(e),p=Ce(t),m=we(t),h=n*i*p-r*a*m+o,g=r*i*p+n*a*m+s;return[`C`,l+c*(-n*i*f-r*a*d),u+c*(-r*i*f+n*a*d),h+c*(n*i*m+r*a*p),g+c*(r*i*m-n*a*p),h,g]},Za=(e,t,n,r,i,a,o)=>{let s=0,c=0,l=0,u=Math.PI,d=o*ee,f=we(d),p=Ce(d),m=.5*(-p*e-f*t),h=.5*(-p*t+f*e),g=n**2,_=r**2,v=h**2,y=m**2,b=g*_-g*v-_*y,x=Math.abs(n),S=Math.abs(r);if(b<0){let e=Math.sqrt(1-b/(g*_));x*=e,S*=e}else l=(i===a?-1:1)*Math.sqrt(b/(g*v+_*y));let C=l*x*h/S,w=-l*S*m/x,T=p*C-f*w+e*.5,E=f*C+p*w+t*.5,D=Qa(1,0,(m-C)/x,(h-w)/S),O=Qa((m-C)/x,(h-w)/S,(-m-C)/x,(-h-w)/S);a===0&&O>0?O-=2*u:a===1&&O<0&&(O+=2*u);let te=Math.ceil(Math.abs(O/u*2)),k=[],ne=O/te,re=8/3*Math.sin(ne/4)*Math.sin(ne/4)/Math.sin(ne/2),ie=D+ne;for(let e=0;e<te;e++)k[e]=Xa(D,ie,p,f,x,S,T,E,re,s,c),s=k[e][5],c=k[e][6],D=ie,ie+=ne;return k},Qa=(e,t,n,r)=>{let i=Math.atan2(t,e),a=Math.atan2(r,n);return a>=i?a-i:2*Math.PI-(i-a)},$a=e=>e**3,eo=e=>3*e**2*(1-e),to=e=>3*e*(1-e)**2,no=e=>(1-e)**3;function ro(e,t,n,r,i,a,o,s){let l;if(c.cachesBoundsOfCurve&&(l=[...arguments].join(),b.boundsOfCurveCache[l]))return b.boundsOfCurveCache[l];let u=Math.sqrt,d=Math.abs,f=[],p=[[0,0],[0,0]],m=6*e-12*n+6*i,h=-3*e+9*n-9*i+3*o,g=3*n-3*e;for(let e=0;e<2;++e){if(e>0&&(m=6*t-12*r+6*a,h=-3*t+9*r-9*a+3*s,g=3*r-3*t),d(h)<1e-12){if(d(m)<1e-12)continue;let e=-g/m;0<e&&e<1&&f.push(e);continue}let n=m*m-4*g*h;if(n<0)continue;let i=u(n),o=(-m+i)/(2*h);0<o&&o<1&&f.push(o);let c=(-m-i)/(2*h);0<c&&c<1&&f.push(c)}let _=f.length,v=_,y=so(e,t,n,r,i,a,o,s);for(;_--;){let{x:e,y:t}=y(f[_]);p[0][_]=e,p[1][_]=t}p[0][v]=e,p[1][v]=t,p[0][v+1]=o,p[1][v+1]=s;let x=[new N(Math.min(...p[0]),Math.min(...p[1])),new N(Math.max(...p[0]),Math.max(...p[1]))];return c.cachesBoundsOfCurve&&(b.boundsOfCurveCache[l]=x),x}let io=(e,t,[n,r,i,a,o,s,c,l])=>{if(c===e&&l===t)return[];if(r===0||i===0)return[[`L`,c,l]];let u=Za(c-e,l-t,r,i,o,s,a);for(let n=0,r=u.length;n<r;n++)u[n][1]+=e,u[n][2]+=t,u[n][3]+=e,u[n][4]+=t,u[n][5]+=e,u[n][6]+=t;return u},ao=e=>{let t=0,n=0,r=0,i=0,a=[],o,s=0,c=0;for(let l of e){let e=[...l],u;switch(e[0]){case`l`:e[1]+=t,e[2]+=n;case`L`:t=e[1],n=e[2],u=[`L`,t,n];break;case`h`:e[1]+=t;case`H`:t=e[1],u=[`L`,t,n];break;case`v`:e[1]+=n;case`V`:n=e[1],u=[`L`,t,n];break;case`m`:e[1]+=t,e[2]+=n;case`M`:t=e[1],n=e[2],r=e[1],i=e[2],u=[`M`,t,n];break;case`c`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n,e[5]+=t,e[6]+=n;case`C`:s=e[3],c=e[4],t=e[5],n=e[6],u=[`C`,e[1],e[2],s,c,t,n];break;case`s`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case`S`:o===`C`?(s=2*t-s,c=2*n-c):(s=t,c=n),t=e[3],n=e[4],u=[`C`,s,c,e[1],e[2],t,n],s=u[3],c=u[4];break;case`q`:e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case`Q`:s=e[1],c=e[2],t=e[3],n=e[4],u=[`Q`,s,c,t,n];break;case`t`:e[1]+=t,e[2]+=n;case`T`:o===`Q`?(s=2*t-s,c=2*n-c):(s=t,c=n),t=e[1],n=e[2],u=[`Q`,s,c,t,n];break;case`a`:e[6]+=t,e[7]+=n;case`A`:io(t,n,e).forEach(e=>a.push(e)),t=e[6],n=e[7];break;case`z`:case`Z`:t=r,n=i,u=[`Z`]}u?(a.push(u),o=u[0]):o=``}return a},oo=(e,t,n,r)=>Math.sqrt((n-e)**2+(r-t)**2),so=(e,t,n,r,i,a,o,s)=>c=>{let l=$a(c),u=eo(c),d=to(c),f=no(c);return new N(o*l+i*u+n*d+e*f,s*l+a*u+r*d+t*f)},co=e=>e**2,lo=e=>2*e*(1-e),uo=e=>(1-e)**2,fo=(e,t,n,r,i,a,o,s)=>c=>{let l=co(c),u=lo(c),d=uo(c),f=3*(d*(n-e)+u*(i-n)+l*(o-i)),p=3*(d*(r-t)+u*(a-r)+l*(s-a));return Math.atan2(p,f)},po=(e,t,n,r,i,a)=>o=>{let s=co(o),c=lo(o),l=uo(o);return new N(i*s+n*c+e*l,a*s+r*c+t*l)},mo=(e,t,n,r,i,a)=>o=>{let s=1-o,c=2*(s*(n-e)+o*(i-n)),l=2*(s*(r-t)+o*(a-r));return Math.atan2(l,c)},ho=(e,t,n)=>{let r=new N(t,n),i=0;for(let t=1;t<=100;t+=1){let n=e(t/100);i+=oo(r.x,r.y,n.x,n.y),r=n}return i},go=(e,t)=>{let n=0,r=0,i={x:e.x,y:e.y},a={...i},o,s=.01,c=0,l=e.iterator,u=e.angleFinder;for(;r<t&&s>1e-4;)a=l(n),c=n,o=oo(i.x,i.y,a.x,a.y),o+r>t?(n-=s,s/=2):(i=a,n+=s,r+=o);return{...a,angle:u(c)}},_o=e=>{let t=0,n=0,r=0,i=0,a=0,o,s,c=[];for(let l of e){let e={x:n,y:r,command:l[0],length:0};switch(l[0]){case`M`:s=e,s.x=i=n=l[1],s.y=a=r=l[2];break;case`L`:s=e,s.length=oo(n,r,l[1],l[2]),n=l[1],r=l[2];break;case`C`:o=so(n,r,l[1],l[2],l[3],l[4],l[5],l[6]),s=e,s.iterator=o,s.angleFinder=fo(n,r,l[1],l[2],l[3],l[4],l[5],l[6]),s.length=ho(o,n,r),n=l[5],r=l[6];break;case`Q`:o=po(n,r,l[1],l[2],l[3],l[4]),s=e,s.iterator=o,s.angleFinder=mo(n,r,l[1],l[2],l[3],l[4]),s.length=ho(o,n,r),n=l[3],r=l[4];break;case`Z`:s=e,s.destX=i,s.destY=a,s.length=oo(n,r,i,a),n=i,r=a}t+=s.length,c.push(s)}return c.push({length:t,x:n,y:r}),c},vo=(e,t,n=_o(e))=>{let r=0;for(;t-n[r].length>0&&r<n.length-2;)t-=n[r].length,r++;let i=n[r],a=t/i.length,o=e[r];switch(i.command){case`M`:return{x:i.x,y:i.y,angle:0};case`Z`:return{...new N(i.x,i.y).lerp(new N(i.destX,i.destY),a),angle:Math.atan2(i.destY-i.y,i.destX-i.x)};case`L`:return{...new N(i.x,i.y).lerp(new N(o[1],o[2]),a),angle:Math.atan2(o[2]-i.y,o[1]-i.x)};case`C`:return go(i,t);case`Q`:return go(i,t)}},yo=/* @__PURE__ */ RegExp(`[mzlhvcsqta][^mzlhvcsqta]*`,`gi`),bo=new RegExp(Ja,`g`),xo=new RegExp(Qn,`gi`),So={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},Co=e=>{var t;let n=[],r=(t=e.match(yo))==null?[]:t;for(let e of r){let t=e[0];if(t===`z`||t===`Z`){n.push([t]);continue}let r=So[t.toLowerCase()],i=[];if(t===`a`||t===`A`){bo.lastIndex=0;let t;for(;t=bo.exec(e);)i.push(...t.slice(1))}else i=e.match(xo)||[];let a=i.length,o=a-a%r;for(let e=0;e<o;e+=r){let a=Array(r),o=Ya[t];a[0]=e>0&&o?o:t;for(let t=0;t<r;t++)a[t+1]=parseFloat(i[e+t]);n.push(a)}if(o<a||a===0)return n}return n},wo=(e,t=0)=>{let n=new N(e[0]),r=new N(e[1]),i=1,a=0,o=[],s=e.length,c=s>2;c&&(i=e[2].x<r.x?-1:e[2].x===r.x?0:1,a=e[2].y<r.y?-1:e[2].y===r.y?0:1),o.push([`M`,n.x-i*t,n.y-a*t]);let l=1;for(;l<s;l++){if(!n.eq(r)){let e=n.midPointFrom(r);o.push([`Q`,n.x,n.y,e.x,e.y])}n=e[l],l+1<e.length&&(r=e[l+1])}return c&&(i=n.x>e[l-2].x?1:n.x===e[l-2].x?0:-1,a=n.y>e[l-2].y?1:n.y===e[l-2].y?0:-1),o.push([`L`,n.x+i*t,n.y+a*t]),o},To=(e,t,n)=>(n&&(t=z(t,[1,0,0,1,-n.x,-n.y])),e.map(e=>{let n=[...e];for(let r=1;r<e.length-1;r+=2){let{x:i,y:a}=L({x:e[r],y:e[r+1]},t);n[r]=i,n[r+1]=a}return n})),Eo=(e,t)=>{let n=Math.PI*2/e,r=-C;e%2==0&&(r+=n/2);let i=Array(e+1);for(let a=0;a<e;a++){let e=a*n+r,{x:o,y:s}=new N(Ce(e),we(e)).scalarMultiply(t);i[a]=[a===0?`M`:`L`,o,s]}return i[e]=[`Z`],i},Do=(e,t)=>e.map(e=>e.map((e,n)=>n===0||t===void 0?e:B(e,t)).join(` `)).join(` `),Oo=(e,t)=>{var n;let r=e,i=t;r.inverted&&!i.inverted&&(r=t,i=e),Ht(i,(n=i.group)==null?void 0:n.calcTransformMatrix(),r.calcTransformMatrix());let a=r.inverted&&i.inverted;return a&&(r.inverted=i.inverted=!1),new Ha([r],{clipPath:i,inverted:a})},ko=(e,t)=>Math.floor(Math.random()*(t-e+1))+e,Ao=e=>{if(e.transformMatrix){let{scaleX:t,scaleY:n,angle:r,skewX:i}=We(e.transformMatrix);e.flipX=!1,e.flipY=!1,e.set(fe,t),e.set(pe,n),e.angle=r,e.skewX=i,e.skewY=0}},jo=(e,t)=>{let n=e._findCenterFromElement();e.transformMatrix&&(Ao(e),n=n.transform(e.transformMatrix)),delete e.transformMatrix,t&&(e.scaleX*=t.scaleX,e.scaleY*=t.scaleY,e.cropX=t.cropX,e.cropY=t.cropY,n.x+=t.offsetLeft,n.y+=t.offsetTop,e.width=t.width,e.height=t.height),e.setPositionByOrigin(n,D,D)};var Mo=/* @__PURE__ */ n({addTransformToObject:()=>Pt,animate:()=>ui,animateColor:()=>di,applyTransformToObject:()=>Ft,calcAngleBetweenVectors:()=>Yt,calcDimensionsMatrix:()=>Ze,calcPlaneChangeMatrix:()=>zt,calcVectorRotation:()=>Xt,cancelAnimFrame:()=>Ae,capValue:()=>_r,composeMatrix:()=>Qe,copyCanvasElement:()=>Pe,cos:()=>Ce,createCanvasElement:()=>P,createImage:()=>Ne,createRotateMatrix:()=>Ke,createScaleMatrix:()=>qe,createSkewXMatrix:()=>Ye,createSkewYMatrix:()=>Xe,createTranslateMatrix:()=>Ge,createVector:()=>qt,crossProduct:()=>$t,degreesToRadians:()=>I,dotProduct:()=>en,ease:()=>Sr,enlivenObjectEnlivables:()=>tt,enlivenObjects:()=>et,findScaleToCover:()=>Ga,findScaleToFit:()=>Wa,getBoundsOfCurve:()=>ro,getOrthonormalVector:()=>Qt,getPathSegmentsInfo:()=>_o,getPointOnPath:()=>vo,getPointer:()=>kt,getRandomInt:()=>ko,getRegularPolygonPath:()=>Eo,getSmoothPathFromPoints:()=>wo,getSvgAttributes:()=>In,getUnitVector:()=>Zt,groupSVGElements:()=>Ua,hasStyleChanged:()=>yn,invertTransform:()=>R,isBetweenVectors:()=>tn,isIdentityMatrix:()=>ze,isTouchEvent:()=>At,isTransparent:()=>dn,joinPath:()=>Do,loadImage:()=>$e,magnitude:()=>Jt,makeBoundingBoxFromPoints:()=>Mt,makePathSimpler:()=>ao,matrixToSVG:()=>it,mergeClipPaths:()=>Oo,multiplyTransformMatrices:()=>z,multiplyTransformMatrixArray:()=>Be,parsePath:()=>Co,parsePreserveAspectRatioAttribute:()=>Rn,parseUnit:()=>K,pick:()=>nt,projectStrokeOnPoints:()=>_n,qrDecompose:()=>We,radiansToDegrees:()=>Re,removeFromArray:()=>Se,removeTransformFromObject:()=>Nt,removeTransformMatrixForSvgParsing:()=>jo,requestAnimFrame:()=>ke,resetObjectTransform:()=>It,rotateVector:()=>Kt,saveObjectTransform:()=>Lt,sendObjectToPlane:()=>Ht,sendPointToPlane:()=>Bt,sendVectorToPlane:()=>Vt,sin:()=>we,sizeAfterTransform:()=>Rt,string:()=>yt,stylesFromArray:()=>xn,stylesToArray:()=>bn,toBlob:()=>Le,toDataURL:()=>Fe,toFixed:()=>B,transformPath:()=>To,transformPoint:()=>L});function No(e,t){let n=e.style;n&&Object.entries(t).forEach(([e,t])=>n.setProperty(e,t))}var Po=class extends _t{constructor(e,{allowTouchScrolling:t=!1,containerClass:n=``}={}){super(e),o(this,`upper`,void 0),o(this,`container`,void 0);let{el:r}=this.lower,i=this.createUpperCanvas();this.upper={el:i,ctx:i.getContext(`2d`)},this.applyCanvasStyle(r,{allowTouchScrolling:t}),this.applyCanvasStyle(i,{allowTouchScrolling:t,styles:{position:`absolute`,left:`0`,top:`0`}});let a=this.createContainerElement();a.classList.add(n),r.parentNode&&r.parentNode.replaceChild(a,r),a.append(r,i),this.container=a}createUpperCanvas(){let{el:e}=this.lower,t=P();return t.className=e.className,t.classList.remove(`lower-canvas`),t.classList.add(`upper-canvas`),t.setAttribute(`data-fabric`,`top`),t.style.cssText=e.style.cssText,t.setAttribute(`draggable`,`true`),t}createContainerElement(){let e=_().createElement(`div`);return e.setAttribute(`data-fabric`,`wrapper`),No(e,{position:`relative`}),gt(e),e}applyCanvasStyle(e,t){let{styles:n,allowTouchScrolling:r}=t;No(e,{...n,"touch-action":r?`manipulation`:ne}),gt(e)}setDimensions(e,t){super.setDimensions(e,t);let{el:n,ctx:r}=this.upper;pt(n,r,e,t)}setCSSDimensions(e){super.setCSSDimensions(e),mt(this.upper.el,e),mt(this.container,e)}cleanupDOM(e){let t=this.container,{el:n}=this.lower,{el:r}=this.upper;super.cleanupDOM(e),t.removeChild(r),t.removeChild(n),t.parentNode&&t.parentNode.replaceChild(n,t)}dispose(){super.dispose(),g().dispose(this.upper.el),delete this.upper,delete this.container}};let Fo={uniformScaling:!0,uniScaleKey:`shiftKey`,centeredScaling:!1,centeredRotation:!1,centeredKey:`altKey`,altActionKey:`shiftKey`,selection:!0,selectionKey:`shiftKey`,selectionColor:`rgba(100, 100, 255, 0.3)`,selectionDashArray:[],selectionBorderColor:`rgba(255, 255, 255, 0.3)`,selectionLineWidth:1,selectionFullyContained:!1,hoverCursor:`move`,moveCursor:`move`,defaultCursor:`default`,freeDrawingCursor:`crosshair`,notAllowedCursor:`not-allowed`,perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,stopContextMenu:!0,fireRightClick:!0,fireMiddleClick:!0,enablePointerEvents:!1,containerClass:`canvas-container`,preserveObjectStacking:!0},Io=(e,t,n,r)=>{let{target:i,offsetX:a,offsetY:o}=t,s=n-a,c=r-o,l=!W(i,`lockMovementX`)&&i.left!==s,u=!W(i,`lockMovementY`)&&i.top!==c;return l&&i.set(`left`,s),u&&i.set(`top`,c),(l||u)&&hi(ie,sn(e,t,n,r)),l||u},Lo=le,Ro=e=>function(t,n,r){let{points:i,pathOffset:a}=r;return new N(i[e]).subtract(a).transform(z(r.getViewportTransform(),r.calcTransformMatrix()))},zo=(e,t,n,r)=>{let{target:i,pointIndex:a}=t,o=i,s=Bt(new N(n,r),void 0,o.calcOwnMatrix());return o.points[a]=s.add(o.pathOffset),o.setDimensions(),o.set(`dirty`,!0),!0},Bo=(e,t)=>function(n,r,i,a){let o=r.target,s=new N(o.points[(e>0?e:o.points.length)-1]),c=s.subtract(o.pathOffset).transform(o.calcOwnMatrix()),l=t(n,{...r,pointIndex:e},i,a),u=s.subtract(o.pathOffset).transform(o.calcOwnMatrix()).subtract(c);return o.left-=u.x,o.top-=u.y,l},Vo=e=>gi(Lo,Bo(e,zo));function Ho(e,t={}){let n={};for(let r=0;r<(typeof e==`number`?e:e.points.length);r++)n[`p${r}`]=new q({actionName:Lo,positionHandler:Ro(r),actionHandler:Vo(r),...t});return n}let Uo=(e,t,n)=>{let{path:r,pathOffset:i}=e,a=r[t];return new N(a[n]-i.x,a[n+1]-i.y).transform(z(e.getViewportTransform(),e.calcTransformMatrix()))},Wo=(e,t,n,r,i)=>{let{path:a,pathOffset:o}=e,s=a[(r>0?r:a.length)-1],c=new N(s[i],s[i+1]),l=c.subtract(o).transform(e.calcOwnMatrix()),u=Bt(new N(t,n),void 0,e.calcOwnMatrix());a[r][i]=u.x+o.x,a[r][i+1]=u.y+o.y,e.setDimensions();let d=c.subtract(e.pathOffset).transform(e.calcOwnMatrix()).subtract(l);return e.left-=d.x,e.top-=d.y,e.set(`dirty`,!0),!0};function Go(e,t,n){let{commandIndex:r,pointIndex:i}=this;return Uo(n,r,i)}function Ko(e,t,n,r){let{target:i}=t,{commandIndex:a,pointIndex:o}=this,s=Wo(i,n,r,a,o);return s&&hi(this.actionName,{...sn(e,t,n,r),commandIndex:a,pointIndex:o}),s}let qo=e=>e===`C`?5:e===`Q`?3:1;var Jo=class extends q{constructor(e){super(e)}render(e,t,n,r,i){let a={...r,cornerColor:this.controlFill,cornerStrokeColor:this.controlStroke,transparentCorners:!this.controlFill};super.render(e,t,n,a,i)}},Yo=class extends Jo{constructor(e){super(e)}render(e,t,n,r,i){let{path:a}=i,{commandIndex:o,pointIndex:s,connectToCommandIndex:c,connectToPointIndex:l}=this;e.save(),e.strokeStyle=this.controlStroke,this.connectionDashArray&&e.setLineDash(this.connectionDashArray);let[u]=a[o],d=Uo(i,c,l);if(u===`Q`){let r=Uo(i,o,s+2);e.moveTo(r.x,r.y),e.lineTo(t,n)}else e.moveTo(t,n);e.lineTo(d.x,d.y),e.stroke(),e.restore(),super.render(e,t,n,r,i)}};let Xo=(e,t,n,r,i,a)=>new(n?Yo:Jo)({commandIndex:e,pointIndex:t,actionName:`modifyPath`,positionHandler:Go,actionHandler:Ko,connectToCommandIndex:i,connectToPointIndex:a,...r,...n?r.controlPointStyle:r.pointStyle});function Zo(e,t={}){let n={},r=`M`;return e.path.forEach((e,i)=>{let a=e[0];switch(a!==`Z`&&(n[`c_${i}_${a}`]=Xo(i,e.length-2,!1,t)),a){case`C`:n[`c_${i}_C_CP_1`]=Xo(i,1,!0,t,i-1,qo(r)),n[`c_${i}_C_CP_2`]=Xo(i,3,!0,t,i,5);break;case`Q`:n[`c_${i}_Q_CP_1`]=Xo(i,1,!0,t,i,3)}r=a}),n}var Qo=/* @__PURE__ */ n({changeHeight:()=>Si,changeObjectHeight:()=>bi,changeObjectWidth:()=>yi,changeWidth:()=>xi,createObjectDefaultControls:()=>Zi,createPathControls:()=>Zo,createPolyActionHandler:()=>Vo,createPolyControls:()=>Ho,createPolyPositionHandler:()=>Ro,createResizeControls:()=>Qi,createTextboxDefaultControls:()=>$i,dragHandler:()=>Io,factoryPolyActionHandler:()=>Bo,getLocalPoint:()=>un,polyActionHandler:()=>zo,renderCircleControl:()=>Ci,renderSquareControl:()=>wi,rotationStyleHandler:()=>Ti,rotationWithSnapping:()=>Ei,scaleCursorStyleHandler:()=>ji,scaleOrSkewActionName:()=>qi,scaleSkewCursorStyleHandler:()=>Ji,scalingEqually:()=>Ii,scalingX:()=>Li,scalingXOrSkewingY:()=>Yi,scalingY:()=>Ri,scalingYOrSkewingX:()=>Xi,skewCursorStyleHandler:()=>Vi,skewHandlerX:()=>Wi,skewHandlerY:()=>Gi,wrapWithFireEvent:()=>gi,wrapWithFixedAnchor:()=>_i}),$o=class e extends Et{constructor(...e){super(...e),o(this,`_hoveredTargets`,[]),o(this,`_currentTransform`,null),o(this,`_groupSelector`,null),o(this,`contextTopDirty`,!1)}static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}get upperCanvasEl(){var e;return(e=this.elements.upper)==null?void 0:e.el}get contextTop(){var e;return(e=this.elements.upper)==null?void 0:e.ctx}get wrapperEl(){return this.elements.container}initElements(e){this.elements=new Po(e,{allowTouchScrolling:this.allowTouchScrolling,containerClass:this.containerClass}),this._createCacheCanvas()}_onObjectAdded(e){this._objectsToRender=void 0,super._onObjectAdded(e)}_onObjectRemoved(e){this._objectsToRender=void 0,e===this._activeObject&&(this.fire(`before:selection:cleared`,{deselected:[e]}),this._discardActiveObject(),this.fire(`selection:cleared`,{deselected:[e]}),e.fire(`deselected`,{target:e})),e===this._hoveredTarget&&(this._hoveredTarget=void 0,this._hoveredTargets=[]),super._onObjectRemoved(e)}_onStackOrderChanged(){this._objectsToRender=void 0,super._onStackOrderChanged()}_chooseObjectsToRender(){let e=this._activeObject;return!this.preserveObjectStacking&&e?this._objects.filter(t=>!t.group&&t!==e).concat(e):this._objects}renderAll(){this.cancelRequestedRender(),!this.destroyed&&(this.contextTopDirty&&!this._groupSelector&&!this.isDrawingMode&&(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1),!this._objectsToRender&&(this._objectsToRender=this._chooseObjectsToRender()),this.renderCanvas(this.getContext(),this._objectsToRender))}renderTopLayer(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()}renderTop(){let e=this.contextTop;this.clearContext(e),this.renderTopLayer(e),this.fire(`after:render`,{ctx:e})}setTargetFindTolerance(e){e=Math.round(e),this.targetFindTolerance=e;let t=this.getRetinaScaling(),n=Math.ceil((e*2+1)*t);this.pixelFindCanvasEl.width=this.pixelFindCanvasEl.height=n,this.pixelFindContext.scale(t,t)}isTargetTransparent(e,t,n){let r=this.targetFindTolerance,i=this.pixelFindContext;this.clearContext(i),i.save(),i.translate(-t+r,-n+r),i.transform(...this.viewportTransform);let a=e.selectionBackgroundColor;e.selectionBackgroundColor=``,e.render(i),e.selectionBackgroundColor=a,i.restore();let o=Math.round(r*this.getRetinaScaling());return dn(i,o,o,o)}_isSelectionKeyPressed(e){let t=this.selectionKey;return t?Array.isArray(t)?!!t.find(t=>!!t&&e[t]===!0):e[t]:!1}_shouldClearSelection(e,t){let n=this.getActiveObjects(),r=this._activeObject;return!!(!t||t&&r&&n.length>1&&n.indexOf(t)===-1&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t)}_shouldCenterTransform(e,t,n){if(!e)return;let r;return t===`scale`||t===`scaleX`||t===`scaleY`||t===`resizing`?r=this.centeredScaling||e.centeredScaling:t===`rotate`&&(r=this.centeredRotation||e.centeredRotation),r?!n:n}_getOriginFromCorner(e,t){let n=t?e.controls[t].getTransformAnchorPoint():{x:e.originX,y:e.originY};return t?([`ml`,`tl`,`bl`].includes(t)?n.x=k:[`mr`,`tr`,`br`].includes(t)&&(n.x=O),[`tl`,`mt`,`tr`].includes(t)?n.y=te:[`bl`,`mb`,`br`].includes(t)&&(n.y=`top`),n):n}_setupCurrentTransform(e,t,n){var r;let i=t.group?Bt(this.getScenePoint(e),void 0,t.group.calcTransformMatrix()):this.getScenePoint(e),{key:a=``,control:o}=t.getActiveControl()||{},s=n&&o?(r=o.getActionHandler(e,t,o))==null?void 0:r.bind(o):Io,c=rn(n,a,e,t),l=e[this.centeredKey],u=this._shouldCenterTransform(t,c,l)?{x:D,y:D}:this._getOriginFromCorner(t,a),{scaleX:d,scaleY:f,skewX:p,skewY:m,left:h,top:g,angle:_,width:v,height:y,cropX:b,cropY:x}=t,S={target:t,action:c,actionHandler:s,actionPerformed:!1,corner:a,scaleX:d,scaleY:f,skewX:p,skewY:m,offsetX:i.x-h,offsetY:i.y-g,originX:u.x,originY:u.y,ex:i.x,ey:i.y,lastX:i.x,lastY:i.y,theta:I(_),width:v,height:y,shiftKey:e.shiftKey,altKey:l,original:{...Lt(t),originX:u.x,originY:u.y,cropX:b,cropY:x}};this._currentTransform=S,this.fire(`before:transform`,{e,transform:S})}setCursor(e){this.upperCanvasEl.style.cursor=e}_drawSelection(e){let{x:t,y:n,deltaX:r,deltaY:i}=this._groupSelector,a=new N(t,n).transform(this.viewportTransform),o=new N(t+r,n+i).transform(this.viewportTransform),s=this.selectionLineWidth/2,c=Math.min(a.x,o.x),l=Math.min(a.y,o.y),u=Math.max(a.x,o.x),d=Math.max(a.y,o.y),f=u-c,p=d-l;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(c,l,f,p)),!(!this.selectionLineWidth||!this.selectionBorderColor||f<this.selectionLineWidth||p<this.selectionLineWidth)&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,c+=s,l+=s,u-=s,d-=s,e.setLineDash(this.selectionDashArray||[]),e.strokeRect(c,l,u-c,d-l))}findTarget(e){if(this._targetInfo)return this._targetInfo;if(this.skipTargetFind)return{subTargets:[],currentSubTargets:[]};let t=this.getScenePoint(e),n=this._activeObject,r=this.getActiveObjects(),i=this.searchPossibleTargets(this._objects,t),{subTargets:a,container:o,target:s}=i,c={...i,currentSubTargets:a,currentContainer:o,currentTarget:s};if(!n)return c;let l={...this.searchPossibleTargets([n],t),currentSubTargets:a,currentContainer:o,currentTarget:s};return n.findControl(this.getViewportPoint(e),At(e))?{...l,target:n}:l.target&&(r.length>1||!this.preserveObjectStacking||this.preserveObjectStacking&&e[this.altSelectionKey])?l:c}_pointIsInObjectSelectionArea(e,t){let n=e.getCoords(),r=this.getZoom(),i=e.padding/r;if(i){let[e,t,r,a]=n,o=Math.atan2(t.y-e.y,t.x-e.x),s=Ce(o)*i,c=we(o)*i,l=s+c,u=s-c;n=[new N(e.x-u,e.y-l),new N(t.x+l,t.y-u),new N(r.x+u,r.y+l),new N(a.x-l,a.y+u)]}return fi.isPointInPolygon(t,n)}_checkTarget(e,t){if(e&&e.visible&&e.evented&&this._pointIsInObjectSelectionArea(e,t)){if((this.perPixelTargetFind||e.perPixelTargetFind)&&!e.isEditing){let n=t.transform(this.viewportTransform);if(!this.isTargetTransparent(e,n.x,n.y))return!0}else return!0}return!1}_searchPossibleTargets(e,t,n){let r=e.length;for(;r--;){let i=e[r];if(this._checkTarget(i,t)){if(Ee(i)&&i.subTargetCheck){let{target:e}=this._searchPossibleTargets(i._objects,t,n);e&&n.push(e)}return{target:i,subTargets:n}}}return{subTargets:[]}}searchPossibleTargets(e,t){let n=this._searchPossibleTargets(e,t,[]);n.container=n.target;let{container:r,subTargets:i}=n;if(r&&Ee(r)&&r.interactive&&i[0]){for(let e=i.length-1;e>0;e--){let t=i[e];if(!(Ee(t)&&t.interactive))return n.target=t,n}return n.target=i[0],n}return n}getViewportPoint(e){return this._viewportPoint?this._viewportPoint:this._getPointerImpl(e,!0)}getScenePoint(e){return this._scenePoint?this._scenePoint:this._getPointerImpl(e)}_getPointerImpl(e,t=!1){let n=this.upperCanvasEl,r=n.getBoundingClientRect(),i=kt(e),a=r.width||0,o=r.height||0;(!a||!o)&&(`top`in r&&`bottom`in r&&(o=Math.abs(r.top-r.bottom)),`right`in r&&`left`in r&&(a=Math.abs(r.right-r.left))),this.calcOffset(),i.x-=this._offset.left,i.y-=this._offset.top,t||(i=Bt(i,void 0,this.viewportTransform));let s=this.getRetinaScaling();s!==1&&(i.x/=s,i.y/=s);let c=a===0||o===0?new N(1,1):new N(n.width/a,n.height/o);return i.multiply(c)}_setDimensionsImpl(e,t){this._resetTransformEventData(),super._setDimensionsImpl(e,t),this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop)}_createCacheCanvas(){this.pixelFindCanvasEl=P(),this.pixelFindContext=this.pixelFindCanvasEl.getContext(`2d`,{willReadFrequently:!0}),this.setTargetFindTolerance(this.targetFindTolerance)}getTopContext(){return this.elements.upper.ctx}getSelectionContext(){return this.elements.upper.ctx}getSelectionElement(){return this.elements.upper.el}getActiveObject(){return this._activeObject}getActiveObjects(){let e=this._activeObject;return lt(e)?e.getObjects():e?[e]:[]}_fireSelectionEvents(e,t){let n=!1,r=!1,i=this.getActiveObjects(),a=[],o=[];e.forEach(e=>{i.includes(e)||(n=!0,e.fire(`deselected`,{e:t,target:e}),o.push(e))}),i.forEach(r=>{e.includes(r)||(n=!0,r.fire(`selected`,{e:t,target:r}),a.push(r))}),e.length>0&&i.length>0?(r=!0,n&&this.fire(`selection:updated`,{e:t,selected:a,deselected:o})):i.length>0?(r=!0,this.fire(`selection:created`,{e:t,selected:a})):e.length>0&&(r=!0,this.fire(`selection:cleared`,{e:t,deselected:o})),r&&(this._objectsToRender=void 0)}setActiveObject(e,t){let n=this.getActiveObjects(),r=this._setActiveObject(e,t);return this._fireSelectionEvents(n,t),r}_setActiveObject(e,t){let n=this._activeObject;return n===e||!this._discardActiveObject(t,e)&&this._activeObject||e.onSelect({e:t})?!1:(this._activeObject=e,lt(e)&&n!==e&&e.set(`canvas`,this),e.setCoords(),!0)}_discardActiveObject(e,t){let n=this._activeObject;return n?!n.onDeselect({e,object:t})&&(this._currentTransform&&this._currentTransform.target===n&&this.endCurrentTransform(e),lt(n)&&n===this._hoveredTarget&&(this._hoveredTarget=void 0),this._activeObject=void 0,!0):!1}discardActiveObject(e){let t=this.getActiveObjects(),n=this.getActiveObject();t.length&&this.fire(`before:selection:cleared`,{e,deselected:[n]});let r=this._discardActiveObject(e);return this._fireSelectionEvents(t,e),r}endCurrentTransform(e){let t=this._currentTransform;this._finalizeCurrentTransform(e),t&&t.target&&(t.target.isMoving=!1),this._currentTransform=null}_finalizeCurrentTransform(e){let t=this._currentTransform,n=t.target,r={e,target:n,transform:t,action:t.action};n._scaling&&(n._scaling=!1),n.setCoords(),t.actionPerformed&&(this.fire(`object:modified`,r),n.fire(_e,r))}setViewportTransform(e){super.setViewportTransform(e);let t=this._activeObject;t&&t.setCoords()}destroy(){let e=this._activeObject;lt(e)&&(e.removeAll(),e.dispose()),delete this._activeObject,super.destroy(),this.pixelFindContext=null,this.pixelFindCanvasEl=void 0}clear(){this.discardActiveObject(),this._activeObject=void 0,this.clearContext(this.contextTop),super.clear()}drawControls(e){let t=this._activeObject;t&&t._renderControls(e)}_toObject(e,t,n){let r=this._realizeGroupTransformOnObject(e),i=super._toObject(e,t,n);return e.set(r),i}_realizeGroupTransformOnObject(e){let{group:t}=e;if(t&<(t)&&this._activeObject===t){let n=nt(e,[`angle`,`flipX`,`flipY`,O,fe,pe,me,he,`top`]);return Pt(e,t.calcOwnMatrix()),n}return{}}_setSVGObject(e,t,n){let r=this._realizeGroupTransformOnObject(t);super._setSVGObject(e,t,n),t.set(r)}};o($o,`ownDefaults`,Fo);var es=class{constructor(e){o(this,`targets`,[]),o(this,`__disposer`,void 0);let t=()=>{let{hiddenTextarea:t}=e.getActiveObject()||{};t&&t.focus()},n=e.upperCanvasEl;n.addEventListener(`click`,t),this.__disposer=()=>n.removeEventListener(`click`,t)}exitTextEditing(){this.target=void 0,this.targets.forEach(e=>{e.isEditing&&e.exitEditing()})}add(e){this.targets.push(e)}remove(e){this.unregister(e),Se(this.targets,e)}register(e){this.target=e}unregister(e){e===this.target&&(this.target=void 0)}onMouseMove(e){var t;(t=this.target)!=null&&t.isEditing&&this.target.updateSelectionOnMouseMove(e)}clear(){this.targets=[],this.target=void 0}dispose(){this.clear(),this.__disposer(),delete this.__disposer}};let X={passive:!1},ts=(e,t)=>({viewportPoint:e.getViewportPoint(t),scenePoint:e.getScenePoint(t)}),ns=(e,...t)=>e.addEventListener(...t),Z=(e,...t)=>e.removeEventListener(...t),rs={mouse:{in:`over`,out:`out`,targetIn:`mouseover`,targetOut:`mouseout`,canvasIn:`mouse:over`,canvasOut:`mouse:out`},drag:{in:`enter`,out:`leave`,targetIn:`dragenter`,targetOut:`dragleave`,canvasIn:`drag:enter`,canvasOut:`drag:leave`}};var is=class extends $o{constructor(e,t={}){super(e,t),o(this,`_isClick`,void 0),o(this,`textEditingManager`,new es(this)),[`_onMouseDown`,`_onTouchStart`,`_onMouseMove`,`_onMouseUp`,`_onTouchEnd`,`_onResize`,`_onMouseWheel`,`_onMouseOut`,`_onMouseEnter`,`_onContextMenu`,`_onClick`,`_onDragStart`,`_onDragEnd`,`_onDragProgress`,`_onDragOver`,`_onDragEnter`,`_onDragLeave`,`_onDrop`].forEach(e=>{this[e]=this[e].bind(this)}),this.addOrRemove(ns)}_getEventPrefix(){return this.enablePointerEvents?`pointer`:`mouse`}addOrRemove(e,t=!1){let n=this.upperCanvasEl,r=this._getEventPrefix();e(ft(n),`resize`,this._onResize),e(n,r+`down`,this._onMouseDown),e(n,`${r}move`,this._onMouseMove,X),e(n,`${r}out`,this._onMouseOut),e(n,`${r}enter`,this._onMouseEnter),e(n,`wheel`,this._onMouseWheel,{passive:!1}),e(n,`contextmenu`,this._onContextMenu),t||(e(n,`click`,this._onClick),e(n,`dblclick`,this._onClick)),e(n,`dragstart`,this._onDragStart),e(n,`dragend`,this._onDragEnd),e(n,`dragover`,this._onDragOver),e(n,`dragenter`,this._onDragEnter),e(n,`dragleave`,this._onDragLeave),e(n,`drop`,this._onDrop),this.enablePointerEvents||e(n,`touchstart`,this._onTouchStart,X)}removeListeners(){this.addOrRemove(Z);let e=this._getEventPrefix(),t=dt(this.upperCanvasEl);Z(t,`${e}up`,this._onMouseUp),Z(t,`touchend`,this._onTouchEnd,X),Z(t,`${e}move`,this._onMouseMove,X),Z(t,`touchmove`,this._onMouseMove,X),clearTimeout(this._willAddMouseDown)}_onMouseWheel(e){this._cacheTransformEventData(e),this._handleEvent(e,`wheel`),this._resetTransformEventData()}_onMouseOut(e){let t=this._hoveredTarget,n={e,...ts(this,e)};this.fire(`mouse:out`,{...n,target:t}),this._hoveredTarget=void 0,t&&t.fire(`mouseout`,{...n}),this._hoveredTargets.forEach(e=>{this.fire(`mouse:out`,{...n,target:e}),e&&e.fire(`mouseout`,{...n})}),this._hoveredTargets=[]}_onMouseEnter(e){let{target:t}=this.findTarget(e);!this._currentTransform&&!t&&(this.fire(`mouse:over`,{e,...ts(this,e)}),this._hoveredTarget=void 0,this._hoveredTargets=[])}_onDragStart(e){this._isClick=!1;let t=this.getActiveObject();if(t&&t.onDragStart(e)){this._dragSource=t;let n={e,target:t};this.fire(`dragstart`,n),t.fire(`dragstart`,n),ns(this.upperCanvasEl,`drag`,this._onDragProgress);return}jt(e)}_renderDragEffects(e,t,n){let r=!1,i=this._dropTarget;i&&i!==t&&i!==n&&(i.clearContextTop(),r=!0),t==null||t.clearContextTop(),n!==t&&(n==null||n.clearContextTop());let a=this.contextTop;a.save(),a.transform(...this.viewportTransform),t&&(a.save(),t.transform(a),t.renderDragSourceEffect(e),a.restore(),r=!0),n&&(a.save(),n.transform(a),n.renderDropTargetEffect(e),a.restore(),r=!0),a.restore(),r&&(this.contextTopDirty=!0)}_onDragEnd(e){let{currentSubTargets:t}=this.findTarget(e),n=!!e.dataTransfer&&e.dataTransfer.dropEffect!==`none`,r=n?this._activeObject:void 0,i={e,target:this._dragSource,subTargets:t,dragSource:this._dragSource,didDrop:n,dropTarget:r};Z(this.upperCanvasEl,`drag`,this._onDragProgress),this.fire(`dragend`,i),this._dragSource&&this._dragSource.fire(`dragend`,i),delete this._dragSource,this._onMouseUp(e)}_onDragProgress(e){let t={e,target:this._dragSource,dragSource:this._dragSource,dropTarget:this._draggedoverTarget};this.fire(`drag`,t),this._dragSource&&this._dragSource.fire(`drag`,t)}_onDragOver(e){let t=`dragover`,{currentContainer:n,currentSubTargets:r}=this.findTarget(e),i=this._dragSource,a={e,target:n,subTargets:r,dragSource:i,canDrop:!1,dropTarget:void 0},o;this.fire(t,a),this._fireEnterLeaveEvents(e,n,a),n&&(n.canDrop(e)&&(o=n),n.fire(t,a));for(let n=0;n<r.length;n++){let i=r[n];i.canDrop(e)&&(o=i),i.fire(t,a)}this._renderDragEffects(e,i,o),this._dropTarget=o}_onDragEnter(e){let{currentContainer:t,currentSubTargets:n}=this.findTarget(e),r={e,target:t,subTargets:n,dragSource:this._dragSource};this.fire(`dragenter`,r),this._fireEnterLeaveEvents(e,t,r)}_onDragLeave(e){let{currentSubTargets:t}=this.findTarget(e),n={e,target:this._draggedoverTarget,subTargets:t,dragSource:this._dragSource};this.fire(`dragleave`,n),this._fireEnterLeaveEvents(e,void 0,n),this._renderDragEffects(e,this._dragSource),this._dropTarget=void 0,this._hoveredTargets=[]}_onDrop(e){let{currentContainer:t,currentSubTargets:n}=this.findTarget(e),r=this._basicEventHandler(`drop:before`,{e,target:t,subTargets:n,dragSource:this._dragSource,...ts(this,e)});r.didDrop=!1,r.dropTarget=void 0,this._basicEventHandler(`drop`,r),this.fire(`drop:after`,r)}_onContextMenu(e){let{target:t,subTargets:n}=this.findTarget(e),r=this._basicEventHandler(`contextmenu:before`,{e,target:t,subTargets:n});return this.stopContextMenu&&jt(e),this._basicEventHandler(`contextmenu`,r),!1}_onClick(e){let t=e.detail;t>3||t<2||(this._cacheTransformEventData(e),t==2&&e.type===`dblclick`&&this._handleEvent(e,`dblclick`),t==3&&this._handleEvent(e,`tripleclick`),this._resetTransformEventData())}fireEventFromPointerEvent(e,t,n,r={}){this._cacheTransformEventData(e);let{target:i,subTargets:a}=this.findTarget(e),o={e,target:i,subTargets:a,...ts(this,e),transform:this._currentTransform,...r};this.fire(t,o),i&&i.fire(n,o);for(let e=0;e<a.length;e++)a[e]!==i&&a[e].fire(n,o);this._resetTransformEventData()}getPointerId(e){let t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1}_isMainEvent(e){return e.isPrimary===!0?!0:e.isPrimary===!1?!1:e.type===`touchend`&&e.touches.length===0||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId}_onTouchStart(e){this._cacheTransformEventData(e);let t=!this.allowTouchScrolling,n=this._activeObject;this.mainTouchId===void 0&&(this.mainTouchId=this.getPointerId(e)),this.__onMouseDown(e);let{target:r}=this.findTarget(e);(this.isDrawingMode||n&&r===n)&&(t=!0),t&&e.preventDefault();let i=this.upperCanvasEl,a=this._getEventPrefix(),o=dt(i);ns(o,`touchend`,this._onTouchEnd,X),t&&ns(o,`touchmove`,this._onMouseMove,X),Z(i,`${a}down`,this._onMouseDown),this._resetTransformEventData()}_onMouseDown(e){this._cacheTransformEventData(e),this.__onMouseDown(e);let t=this.upperCanvasEl,n=this._getEventPrefix();Z(t,`${n}move`,this._onMouseMove,X);let r=dt(t);ns(r,`${n}up`,this._onMouseUp),ns(r,`${n}move`,this._onMouseMove,X),this._resetTransformEventData()}_onTouchEnd(e){if(e.touches.length>0)return;this._cacheTransformEventData(e),this.__onMouseUp(e),this._resetTransformEventData(),delete this.mainTouchId;let t=this._getEventPrefix(),n=dt(this.upperCanvasEl);Z(n,`touchend`,this._onTouchEnd,X),Z(n,`touchmove`,this._onMouseMove,X),this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout(()=>{ns(this.upperCanvasEl,`${t}down`,this._onMouseDown),this._willAddMouseDown=0},400)}_onMouseUp(e){this._cacheTransformEventData(e),this.__onMouseUp(e);let t=this.upperCanvasEl,n=this._getEventPrefix();if(this._isMainEvent(e)){let e=dt(this.upperCanvasEl);Z(e,`${n}up`,this._onMouseUp),Z(e,`${n}move`,this._onMouseMove,X),ns(t,`${n}move`,this._onMouseMove,X)}this._resetTransformEventData()}_onMouseMove(e){this._cacheTransformEventData(e);let t=this.getActiveObject();!this.allowTouchScrolling&&(!t||!t.shouldStartDragging(e))&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e),this._resetTransformEventData()}_onResize(){this.calcOffset(),this._resetTransformEventData()}_shouldRender(e){let t=this.getActiveObject();return!!t!=!!e||t&&e&&t!==e}__onMouseUp(e){var t;this._handleEvent(e,`up:before`);let n=this._currentTransform,r=this._isClick,{target:i}=this.findTarget(e),{button:a}=e;if(a){(this.fireMiddleClick&&a===1||this.fireRightClick&&a===2)&&this._handleEvent(e,`up`);return}if(this.isDrawingMode&&this._isCurrentlyDrawing){this._onMouseUpInDrawingMode(e);return}if(!this._isMainEvent(e))return;let o=!1;if(n&&(this._finalizeCurrentTransform(e),o=n.actionPerformed),!r){let t=i===this._activeObject;this.handleSelection(e),o||(o=this._shouldRender(i)||!t&&i===this._activeObject)}let s,c;if(i){let{key:t,control:r}=i.findControl(this.getViewportPoint(e),At(e))||{};if(c=t,i.selectable&&i!==this._activeObject&&i.activeOn===`up`)this.setActiveObject(i,e),o=!0;else if(r){let t=r.getMouseUpHandler(e,i,r);t&&(s=this.getScenePoint(e),t.call(r,e,n,s.x,s.y))}i.isMoving=!1}if(n&&(n.target!==i||n.corner!==c)){let t=n.target&&n.target.controls[n.corner],r=t&&t.getMouseUpHandler(e,n.target,t);s=s||this.getScenePoint(e),r&&r.call(t,e,n,s.x,s.y)}this._setCursorFromEvent(e,i),this._handleEvent(e,`up`),this._groupSelector=null,this._currentTransform=null,i&&(i.__corner=void 0),o?this.requestRenderAll():!r&&!((t=this._activeObject)!=null&&t.isEditing)&&this.renderTop()}_basicEventHandler(e,t){let{target:n,subTargets:r=[]}=t;this.fire(e,t),n&&n.fire(e,t);for(let i=0;i<r.length;i++)r[i]!==n&&r[i].fire(e,t);return t}_handleEvent(e,t,n){let{target:r,subTargets:i}=this.findTarget(e),a={e,target:r,subTargets:i,...ts(this,e),transform:this._currentTransform,...t===`down:before`||t===`down`?n:{}};(t===`up:before`||t===`up`)&&(a.isClick=this._isClick),this.fire(`mouse:${t}`,a),r&&r.fire(`mouse${t}`,a);for(let e=0;e<i.length;e++)i[e]!==r&&i[e].fire(`mouse${t}`,a)}_onMouseDownInDrawingMode(e){this._isCurrentlyDrawing=!0,this.getActiveObject()&&(this.discardActiveObject(e),this.requestRenderAll());let t=this.getScenePoint(e);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseDown(t,{e,pointer:t}),this._handleEvent(e,`down`,{alreadySelected:!1})}_onMouseMoveInDrawingMode(e){if(this._isCurrentlyDrawing){let t=this.getScenePoint(e);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseMove(t,{e,pointer:t})}this.setCursor(this.freeDrawingCursor),this._handleEvent(e,`move`)}_onMouseUpInDrawingMode(e){let t=this.getScenePoint(e);this._isCurrentlyDrawing=this.freeDrawingBrush?!!this.freeDrawingBrush.onMouseUp({e,pointer:t}):!1,this._handleEvent(e,`up`)}__onMouseDown(e){this._isClick=!0,this._handleEvent(e,`down:before`);let{target:t}=this.findTarget(e),n=!!t&&t===this._activeObject,{button:r}=e;if(r){(this.fireMiddleClick&&r===1||this.fireRightClick&&r===2)&&this._handleEvent(e,`down`,{alreadySelected:n});return}if(this.isDrawingMode){this._onMouseDownInDrawingMode(e);return}if(!this._isMainEvent(e)||this._currentTransform)return;let i=this._shouldRender(t),a=!1;if(this.handleMultiSelection(e,t)?(t=this._activeObject,a=!0,i=!0):this._shouldClearSelection(e,t)&&this.discardActiveObject(e),this.selection&&(!t||!t.selectable&&!t.isEditing&&t!==this._activeObject)){let t=this.getScenePoint(e);this._groupSelector={x:t.x,y:t.y,deltaY:0,deltaX:0}}if(n=!!t&&t===this._activeObject,t){t.selectable&&t.activeOn===`down`&&this.setActiveObject(t,e);let r=t.findControl(this.getViewportPoint(e),At(e));if(t===this._activeObject&&(r||!a)){this._setupCurrentTransform(e,t,n);let i=r?r.control:void 0,a=this.getScenePoint(e),o=i&&i.getMouseDownHandler(e,t,i);o&&o.call(i,e,this._currentTransform,a.x,a.y)}}i&&(this._objectsToRender=void 0),this._handleEvent(e,`down`,{alreadySelected:n}),i&&this.requestRenderAll()}_resetTransformEventData(){this._targetInfo=this._viewportPoint=this._scenePoint=void 0}_cacheTransformEventData(e){this._resetTransformEventData(),this._viewportPoint=this.getViewportPoint(e),this._scenePoint=Bt(this._viewportPoint,void 0,this.viewportTransform),this._targetInfo=this.findTarget(e),this._currentTransform&&(this._targetInfo.target=this._currentTransform.target)}__onMouseMove(e){if(this._isClick=!1,this._handleEvent(e,`move:before`),this.isDrawingMode){this._onMouseMoveInDrawingMode(e);return}if(!this._isMainEvent(e))return;let t=this._groupSelector;if(t){let n=this.getScenePoint(e);t.deltaX=n.x-t.x,t.deltaY=n.y-t.y,this.renderTop()}else if(this._currentTransform)this._transformObject(e);else{let{target:t}=this.findTarget(e);this._setCursorFromEvent(e,t),this._fireOverOutEvents(e,t)}this.textEditingManager.onMouseMove(e),this._handleEvent(e,`move`)}_fireOverOutEvents(e,t){let{_hoveredTarget:n,_hoveredTargets:r}=this,{subTargets:i,currentTarget:a}=this.findTarget(e),o=Math.max(r.length,i.length);this.fireSyntheticInOutEvents(`mouse`,{e,target:t,oldTarget:n,actualTarget:a,oldActualTarget:this._hoveredActualTarget,fireCanvas:!0});for(let a=0;a<o;a++)i[a]===t||r[a]&&r[a]===n||this.fireSyntheticInOutEvents(`mouse`,{e,target:i[a],oldTarget:r[a]});this._hoveredActualTarget=a,this._hoveredTarget=t,this._hoveredTargets=i}_fireEnterLeaveEvents(e,t,n){let r=this._draggedoverTarget,i=this._hoveredTargets,{subTargets:a}=this.findTarget(e),o=Math.max(i.length,a.length);this.fireSyntheticInOutEvents(`drag`,{...n,target:t,oldTarget:r,fireCanvas:!0});for(let e=0;e<o;e++)this.fireSyntheticInOutEvents(`drag`,{...n,target:a[e],oldTarget:i[e]});this._draggedoverTarget=t}fireSyntheticInOutEvents(e,{target:t,oldTarget:n,actualTarget:r,oldActualTarget:i,fireCanvas:a,e:o,...s}){let{targetIn:c,targetOut:l,canvasIn:u,canvasOut:d}=rs[e],f=n!==t,p=i!==r,m=t&&f,h=r&&p,g=n&&f,_=i&&p,v={...s,e:o,...ts(this,o)},y={...v,target:n,nextTarget:t,actualTarget:i,nextActualTarget:r};(g||_)&&a&&this.fire(d,y),g&&n.fire(l,y),_&&n!==i&&i.fire(l,y);let b={...v,target:t,previousTarget:n,actualTarget:r,previousActualTarget:i};(m||h)&&a&&this.fire(u,b),m&&t.fire(c,b),h&&r!==t&&r.fire(c,b)}_transformObject(e){let t=this.getScenePoint(e),n=this._currentTransform,r=n.target,i=r.group?Bt(t,void 0,r.group.calcTransformMatrix()):t;n.shiftKey=e.shiftKey,n.altKey=!!this.centeredKey&&e[this.centeredKey],this._performTransformAction(e,n,i),n.actionPerformed&&this.requestRenderAll()}_performTransformAction(e,t,n){let{action:r,actionHandler:i,target:a}=t,o=!!i&&i(e,t,n.x,n.y);o&&a.setCoords(),r===`drag`&&o&&(t.target.isMoving=!0,this.setCursor(t.target.moveCursor||this.moveCursor)),t.actionPerformed=t.actionPerformed||o}_setCursorFromEvent(e,t){if(!t){this.setCursor(this.defaultCursor);return}let n=t.hoverCursor||this.hoverCursor,r=lt(this._activeObject)?this._activeObject:null,i=(!r||t.group!==r)&&t.findControl(this.getViewportPoint(e));if(i){let{control:n,coord:r}=i;this.setCursor(n.cursorStyleHandler(e,n,t,r))}else{if(t.subTargetCheck){let{subTargets:t}=this.findTarget(e);t.concat().reverse().forEach(e=>{n=e.hoverCursor||n})}this.setCursor(n)}}handleMultiSelection(e,t){let n=this._activeObject,r=lt(n);if(n&&this._isSelectionKeyPressed(e)&&this.selection&&t&&t.selectable&&(n!==t||r)&&(r||!t.isDescendantOf(n)&&!n.isDescendantOf(t))&&!t.onSelect({e})&&!n.getActiveControl()){if(r){let r=n.getObjects(),i=[];if(t===n){let n=this.getScenePoint(e),a=this.searchPossibleTargets(r,n);if(a.target?(t=a.target,i=a.subTargets):(a=this.searchPossibleTargets(this._objects,n),t=a.target,i=a.subTargets),!t||!t.selectable)return!1}t.group===n?(n.remove(t),this._hoveredTarget=t,this._hoveredTargets=i,n.size()===1&&this._setActiveObject(n.item(0),e)):(n.multiSelectAdd(t),this._hoveredTarget=n,this._hoveredTargets=i),this._fireSelectionEvents(r,e)}else{n.isEditing&&n.exitEditing();let r=new(M.getClass(`ActiveSelection`))([],{canvas:this});r.multiSelectAdd(n,t),this._hoveredTarget=r,this._setActiveObject(r,e),this._fireSelectionEvents([n],e)}return!0}return!1}handleSelection(e){if(!this.selection||!this._groupSelector)return!1;let{x:t,y:n,deltaX:r,deltaY:i}=this._groupSelector,a=new N(t,n),o=a.add(new N(r,i)),s=a.min(o),c=a.max(o).subtract(s),l=this.collectObjects({left:s.x,top:s.y,width:c.x,height:c.y},{includeIntersecting:!this.selectionFullyContained}),u=a.eq(o)?l[0]?[l[0]]:[]:l.length>1?l.filter(t=>!t.onSelect({e})).reverse():l;if(u.length===1)this.setActiveObject(u[0],e);else if(u.length>1){let t=M.getClass(`ActiveSelection`);this.setActiveObject(new t(u,{canvas:this}),e)}return this._groupSelector=null,!0}toCanvasElement(e=1,t){let{upper:n}=this.elements;n.ctx=void 0;let r=super.toCanvasElement(e,t);return n.ctx=n.el.getContext(`2d`),r}clear(){this.textEditingManager.clear(),super.clear()}destroy(){this.removeListeners(),this.textEditingManager.dispose(),super.destroy()}};let as={x1:0,y1:0,x2:0,y2:0},os={...as,r1:0,r2:0},ss=(e,t)=>isNaN(e)&&typeof t==`number`?t:e;function cs(e){return e&&/%$/.test(e)&&Number.isFinite(parseFloat(e))}function ls(e,t){let n=typeof e==`number`?e:typeof e==`string`?parseFloat(e)/(cs(e)?100:1):NaN;return _r(0,ss(n,t),1)}let us=/\s*;\s*/,ds=/\s*:\s*/;function fs(e,t){let n,r,i=e.getAttribute(`style`);if(i){let e=i.split(us);e[e.length-1]===``&&e.pop();for(let t=e.length;t--;){let[i,a]=e[t].split(ds).map(e=>e.trim());i===`stop-color`?n=a:i===`stop-opacity`&&(r=a)}}n=n||e.getAttribute(`stop-color`)||`rgb(0,0,0)`,r=ss(parseFloat(r||e.getAttribute(`stop-opacity`)||``),1);let a=new G(n);return a.setAlpha(a.getAlpha()*r*t),{offset:ls(e.getAttribute(`offset`),0),color:a.toRgba()}}function ps(e,t){let n=[],r=e.getElementsByTagName(`stop`),i=ls(t,1);for(let e=r.length;e--;)n.push(fs(r[e],i));return n}function ms(e){return e.nodeName===`linearGradient`||e.nodeName===`LINEARGRADIENT`?`linear`:`radial`}function hs(e){return e.getAttribute(`gradientUnits`)===`userSpaceOnUse`?`pixels`:`percentage`}function gs(e,{width:t,height:n,gradientUnits:r}){let i;return Object.entries(e).reduce((e,[a,o])=>{if(o===`Infinity`)i=1;else if(o===`-Infinity`)i=0;else{let e=typeof o==`string`;i=e?parseFloat(o):o,e&&cs(o)&&(i*=.01,r===`pixels`&&((a===`x1`||a===`x2`||a===`r2`)&&(i*=t),(a===`y1`||a===`y2`)&&(i*=n)))}return e[a]=i,e},{})}function _s(e,t){return e.getAttribute(t)}function vs(e){return{x1:_s(e,`x1`)||0,y1:_s(e,`y1`)||0,x2:_s(e,`x2`)||`100%`,y2:_s(e,`y2`)||0}}function ys(e){return{x1:_s(e,`fx`)||_s(e,`cx`)||`50%`,y1:_s(e,`fy`)||_s(e,`cy`)||`50%`,r1:0,x2:_s(e,`cx`)||`50%`,y2:_s(e,`cy`)||`50%`,r2:_s(e,`r`)||`50%`}}function bs(e,t){return gs(ms(e)===`linear`?vs(e):ys(e),{...t,gradientUnits:hs(e)})}var xs=class{constructor(e){let{type:t=`linear`,gradientUnits:n=`pixels`,coords:r={},colorStops:i=[],offsetX:a=0,offsetY:o=0,gradientTransform:s,id:c}=e||{};Object.assign(this,{type:t,gradientUnits:n,coords:{...t===`radial`?os:as,...r},colorStops:i,offsetX:a,offsetY:o,gradientTransform:s,id:c?`${c}_${Me()}`:Me()})}addColorStop(e){for(let t in e)this.colorStops.push({offset:parseFloat(t),color:e[t]});return this}toObject(e){return{...nt(this,e),type:this.type,coords:{...this.coords},colorStops:this.colorStops.map(e=>({...e})),offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?[...this.gradientTransform]:void 0}}toSVG(e,{additionalTransform:t}={}){let n=[],r=this.gradientTransform?this.gradientTransform.concat():E.concat(),i=this.gradientUnits===`pixels`?`userSpaceOnUse`:`objectBoundingBox`,a=this.colorStops.map(e=>({...e})).sort((e,t)=>e.offset-t.offset),o=-this.offsetX,s=-this.offsetY;i===`objectBoundingBox`?(o/=e.width,s/=e.height):(o+=e.width/2,s+=e.height/2),ct(e)&&this.gradientUnits!==`percentage`&&(o-=e.pathOffset.x,s-=e.pathOffset.y),r[4]-=o,r[5]-=s;let c=[`id="SVGID_${H(String(this.id))}"`,`gradientUnits="${i}"`,`gradientTransform="${t?t+` `:``}${it(r)}"`,``].join(` `),l=e=>parseFloat(String(e));if(this.type===`linear`){let{x1:e,y1:t,x2:r,y2:i}=this.coords,a=l(e),o=l(t),s=l(r),u=l(i);n.push(`<linearGradient `,c,` x1="`,a,`" y1="`,o,`" x2="`,s,`" y2="`,u,`">
|
|
17
|
+
`)}else if(this.type===`radial`){let{x1:e,y1:t,x2:r,y2:i,r1:o,r2:s}=this.coords,u=l(e),d=l(t),f=l(r),p=l(i),m=l(o),h=l(s),g=m>h;n.push(`<radialGradient `,c,` cx="`,g?u:f,`" cy="`,g?d:p,`" r="`,g?m:h,`" fx="`,g?f:u,`" fy="`,g?p:d,`">
|
|
18
|
+
`),g&&(a.reverse(),a.forEach(e=>{e.offset=1-e.offset}));let _=Math.min(m,h);if(_>0){let e=_/Math.max(m,h);a.forEach(t=>{t.offset+=e*(1-t.offset)})}}return a.forEach(({color:e,offset:t})=>{let r=String(e),i=Nn(r)?r:new G(r).toRgba();n.push(`<stop offset="${t*100}%" style="stop-color:${H(i)};"/>\n`)}),n.push(this.type===`linear`?`</linearGradient>`:`</radialGradient>`,`
|
|
19
|
+
`),n.join(``)}toLive(e){let{x1:t,y1:n,x2:r,y2:i,r1:a,r2:o}=this.coords,s=this.type===`linear`?e.createLinearGradient(t,n,r,i):e.createRadialGradient(t,n,a,r,i,o);return this.colorStops.forEach(({color:e,offset:t})=>{s.addColorStop(t,e)}),s}static async fromObject(e){let{colorStops:t,gradientTransform:n}=e;return new this({...e,colorStops:t?t.map(e=>({...e})):void 0,gradientTransform:n?[...n]:void 0})}static fromElement(e,t,n){let r=hs(e),i=t._findCenterFromElement();return new this({id:e.getAttribute(`id`)||void 0,type:ms(e),coords:bs(e,{width:n.viewBoxWidth||n.width,height:n.viewBoxHeight||n.height}),colorStops:ps(e,n.opacity),gradientUnits:r,gradientTransform:xa(e.getAttribute(`gradientTransform`)||``),...r===`pixels`?{offsetX:t.width/2-i.x,offsetY:t.height/2-i.y}:{offsetX:0,offsetY:0}})}};o(xs,`type`,`Gradient`),M.setClass(xs,`gradient`),M.setClass(xs,`linear`),M.setClass(xs,`radial`);var Ss=class{get type(){return`pattern`}set type(e){l(`warn`,`Setting type has no effect`,e)}constructor(e){o(this,`repeat`,`repeat`),o(this,`offsetX`,0),o(this,`offsetY`,0),o(this,`crossOrigin`,``),this.id=Me(),Object.assign(this,e)}isImageSource(){return!!this.source&&typeof this.source.src==`string`}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():``}toLive(e){return!this.source||this.isImageSource()&&(!this.source.complete||this.source.naturalWidth===0||this.source.naturalHeight===0)?null:e.createPattern(this.source,this.repeat)}toObject(e=[]){let{repeat:t,crossOrigin:n}=this;return{...nt(this,e),type:`pattern`,source:this.sourceToString(),repeat:t,crossOrigin:n,offsetX:B(this.offsetX,c.NUM_FRACTION_DIGITS),offsetY:B(this.offsetY,c.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null}}toSVG({width:e,height:t}){let{source:n,repeat:r,id:i}=this,a=ss(this.offsetX/e,0),o=ss(this.offsetY/t,0),s=r===`repeat-y`||r===`no-repeat`?1+Math.abs(a||0):ss(n.width/e,0),c=r===`repeat-x`||r===`no-repeat`?1+Math.abs(o||0):ss(n.height/t,0);return[`<pattern id="SVGID_${H(i)}" x="${a}" y="${o}" width="${s}" height="${c}">`,`<image x="0" y="0" width="${n.width}" height="${n.height}" xlink:href="${H(this.sourceToString())}"></image>`,`</pattern>`,``].join(`
|
|
20
|
+
`)}static async fromObject({type:e,source:t,patternTransform:n,...r},i){let a=await $e(t,{...i,crossOrigin:r.crossOrigin});return new this({...r,patternTransform:n&&n.slice(0),source:a})}};o(Ss,`type`,`Pattern`),M.setClass(Ss),M.setClass(Ss,`pattern`);var Cs=class{constructor(e){o(this,`color`,`rgb(0, 0, 0)`),o(this,`width`,1),o(this,`shadow`,null),o(this,`strokeLineCap`,`round`),o(this,`strokeLineJoin`,`round`),o(this,`strokeMiterLimit`,10),o(this,`strokeDashArray`,null),o(this,`limitedToCanvasSize`,!1),this.canvas=e}_setBrushStyles(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])}_saveAndTransform(e){let t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])}needsFullRender(){return new G(this.color).getAlpha()<1||!!this.shadow}_setShadow(){if(!this.shadow||!this.canvas)return;let e=this.canvas,t=this.shadow,n=e.contextTop,r=e.getZoom()*e.getRetinaScaling();n.shadowColor=t.color,n.shadowBlur=t.blur*r,n.shadowOffsetX=t.offsetX*r,n.shadowOffsetY=t.offsetY*r}_resetShadow(){let e=this.canvas.contextTop;e.shadowColor=``,e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}_isOutSideCanvas(e){let{x:t,y:n}=e.transform(this.canvas.viewportTransform);return t<0||t>this.canvas.getWidth()||n<0||n>this.canvas.getHeight()}},ws=class e extends J{constructor(t,{path:n,left:r,top:i,...a}={}){super(),Object.assign(this,e.ownDefaults),this.setOptions(a),this._setPath(t||[],!0),typeof r==`number`&&this.set(`left`,r),typeof i==`number`&&this.set(`top`,i)}_setPath(e,t){this.path=ao(Array.isArray(e)?e:Co(e)),this.setBoundingBox(t)}_findCenterFromElement(){let e=this._calcBoundsFromPath();return new N(e.left+e.width/2,e.top+e.height/2)}_renderPathCommands(e){let t=-this.pathOffset.x,n=-this.pathOffset.y;e.beginPath();for(let r of this.path)switch(r[0]){case`L`:e.lineTo(r[1]+t,r[2]+n);break;case`M`:e.moveTo(r[1]+t,r[2]+n);break;case`C`:e.bezierCurveTo(r[1]+t,r[2]+n,r[3]+t,r[4]+n,r[5]+t,r[6]+n);break;case`Q`:e.quadraticCurveTo(r[1]+t,r[2]+n,r[3]+t,r[4]+n);break;case`Z`:e.closePath()}}_render(e){this._renderPathCommands(e),this._renderPaintInOrder(e)}toString(){return`#<Path (${this.complexity()}): { "top": ${this.top}, "left": ${this.left} }>`}toObject(e=[]){return{...super.toObject(e),path:this.path.map(e=>e.slice())}}toDatalessObject(e=[]){let t=this.toObject(e);return this.sourcePath&&(delete t.path,t.sourcePath=this.sourcePath),t}_toSVG(){return[`<path `,`COMMON_PARTS`,`d="${Do(this.path,c.NUM_FRACTION_DIGITS)}" stroke-linecap="round" />\n`]}_getOffsetTransform(){let e=c.NUM_FRACTION_DIGITS;return` translate(${B(-this.pathOffset.x,e)}, ${B(-this.pathOffset.y,e)})`}toClipPathSVG(e){let t=this._getOffsetTransform();return` `+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})}toSVG(e){let t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})}complexity(){return this.path.length}setDimensions(){this.setBoundingBox()}setBoundingBox(e){let{width:t,height:n,pathOffset:r}=this._calcDimensions();this.set({width:t,height:n,pathOffset:r}),e&&this.setPositionByOrigin(r,`center`,`center`)}_calcBoundsFromPath(){let e=[],t=0,n=0,r=0,i=0;for(let a of this.path)switch(a[0]){case`L`:r=a[1],i=a[2],e.push({x:t,y:n},{x:r,y:i});break;case`M`:r=a[1],i=a[2],t=r,n=i;break;case`C`:e.push(...ro(r,i,a[1],a[2],a[3],a[4],a[5],a[6])),r=a[5],i=a[6];break;case`Q`:e.push(...ro(r,i,a[1],a[2],a[1],a[2],a[3],a[4])),r=a[3],i=a[4];break;case`Z`:r=t,i=n}return Mt(e)}_calcDimensions(){let e=this._calcBoundsFromPath();return{...e,pathOffset:new N(e.left+e.width/2,e.top+e.height/2)}}static fromObject(e){return this._fromObject(e,{extraParam:`path`})}static async fromElement(e,t,n){let{d:r,...i}=ka(e,this.ATTRIBUTE_NAMES,n);return new this(r,{...i,...t,left:void 0,top:void 0})}};o(ws,`type`,`Path`),o(ws,`cacheProperties`,[...yr,`path`,`fillRule`]),o(ws,`ATTRIBUTE_NAMES`,[...na,`d`]),M.setClass(ws),M.setSVGClass(ws);function Ts(e){return Do(e)===`M 0 0 Q 0 0 0 0 L 0 0`}var Es=class e extends Cs{constructor(e){super(e),o(this,`decimate`,.4),o(this,`drawStraightLine`,!1),o(this,`straightLineKey`,`shiftKey`),this._points=[],this._hasStraightLine=!1}needsFullRender(){return super.needsFullRender()||this._hasStraightLine}static drawSegment(e,t,n){let r=t.midPointFrom(n);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r}onMouseDown(e,{e:t}){this.canvas._isMainEvent(t)&&(this.drawStraightLine=!!this.straightLineKey&&t[this.straightLineKey],this._prepareForDrawing(e),this._addPoint(e),this._render())}onMouseMove(t,{e:n}){if(this.canvas._isMainEvent(n)&&(this.drawStraightLine=!!this.straightLineKey&&n[this.straightLineKey],!(this.limitedToCanvasSize===!0&&this._isOutSideCanvas(t))&&this._addPoint(t)&&this._points.length>1)){if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{let t=this._points,n=t.length,r=this.canvas.contextTop;this._saveAndTransform(r),this.oldEnd&&(r.beginPath(),r.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=e.drawSegment(r,t[n-2],t[n-1]),r.stroke(),r.restore()}}}onMouseUp({e}){return!this.canvas._isMainEvent(e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)}_prepareForDrawing(e){this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)}_addPoint(e){return this._points.length>1&&e.eq(this._points[this._points.length-1])?!1:(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),!0)}_reset(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1}_render(t=this.canvas.contextTop){let n=this._points[0],r=this._points[1];if(this._saveAndTransform(t),t.beginPath(),this._points.length===2&&n.x===r.x&&n.y===r.y){let e=this.width/1e3;n.x-=e,r.x+=e}t.moveTo(n.x,n.y);for(let i=1;i<this._points.length;i++)e.drawSegment(t,n,r),n=this._points[i],r=this._points[i+1];t.lineTo(n.x,n.y),t.stroke(),t.restore()}convertPointsToSVGPath(e){let t=this.width/1e3;return wo(e,t)}createPath(e){let t=new ws(e,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,t.shadow=new gr(this.shadow)),t}decimatePoints(e,t){if(e.length<=2)return e;let n=e[0],r,i=(t/this.canvas.getZoom())**2,a=e.length-1,o=[n];for(let t=1;t<a-1;t++)r=(n.x-e[t].x)**2+(n.y-e[t].y)**2,r>=i&&(n=e[t],o.push(n));return o.push(e[a]),o}_finalizeAndAddPath(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));let e=this.convertPointsToSVGPath(this._points);if(Ts(e)){this.canvas.requestRenderAll();return}let t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire(`before:path:created`,{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire(`path:created`,{path:t})}};let Ds=[`radius`,`startAngle`,`endAngle`,`counterClockwise`],Os={radius:0,startAngle:0,endAngle:360,counterClockwise:!1};var ks=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t)}_set(e,t){return super._set(e,t),e===`radius`&&this.setRadius(t),this}_render(e){e.beginPath(),e.arc(0,0,this.radius,I(this.startAngle),I(this.endAngle),this.counterClockwise),this._renderPaintInOrder(e)}getRadiusX(){return this.get(`radius`)*this.get(fe)}getRadiusY(){return this.get(`radius`)*this.get(pe)}setRadius(e){this.radius=e,this.set({width:e*2,height:e*2})}toObject(e=[]){return super.toObject([...Ds,...e])}_toSVG(){let{radius:e,startAngle:t,endAngle:n}=this,r=(n-t)%360;if(r===0)return[`<circle `,`COMMON_PARTS`,`cx="0" cy="0" `,`r="`,`${H(e)}`,`" />
|
|
21
|
+
`];{let i=I(t),a=I(n),o=Ce(i)*e,s=we(i)*e,c=Ce(a)*e,l=we(a)*e;return[`<path d="M ${o} ${s} A ${e} ${e} 0 ${+(r>180)} ${+!this.counterClockwise} ${c} ${l}" `,`COMMON_PARTS`,` />
|
|
22
|
+
`]}}static async fromElement(e,t,n){let{left:r=0,top:i=0,radius:a=0,...o}=ka(e,this.ATTRIBUTE_NAMES,n);return new this({...o,radius:a,left:r-a,top:i-a})}static fromObject(e){return super._fromObject(e)}};o(ks,`type`,`Circle`),o(ks,`cacheProperties`,[...yr,...Ds]),o(ks,`ownDefaults`,Os),o(ks,`ATTRIBUTE_NAMES`,[`cx`,`cy`,`r`,...na]),M.setClass(ks),M.setSVGClass(ks);var As=class extends Cs{constructor(e){super(e),o(this,`width`,10),this.points=[]}drawDot(e){let t=this.addPoint(e),n=this.canvas.contextTop;this._saveAndTransform(n),this.dot(n,t),n.restore()}dot(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,Math.PI*2,!1),e.closePath(),e.fill()}onMouseDown(e){this.points=[],this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)}_render(){let e=this.canvas.contextTop,t=this.points;this._saveAndTransform(e);for(let n=0;n<t.length;n++)this.dot(e,t[n]);e.restore()}onMouseMove(e){this.limitedToCanvasSize===!0&&this._isOutSideCanvas(e)||(this.needsFullRender()?(this.canvas.clearContext(this.canvas.contextTop),this.addPoint(e),this._render()):this.drawDot(e))}onMouseUp(){let e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;let t=[];for(let e=0;e<this.points.length;e++){let n=this.points[e],r=new ks({radius:n.radius,left:n.x,top:n.y,originX:D,originY:D,fill:n.fill});this.shadow&&(r.shadow=new gr(this.shadow)),t.push(r)}let n=new Ha(t,{canvas:this.canvas});this.canvas.fire(`before:path:created`,{path:n}),this.canvas.add(n),this.canvas.fire(`path:created`,{path:n}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.requestRenderAll()}addPoint({x:e,y:t}){let n={x:e,y:t,radius:ko(Math.max(0,this.width-20),this.width+20)/2,fill:new G(this.color).setAlpha(ko(0,100)/100).toRgba()};return this.points.push(n),n}};function js(e){let t={},n=[];for(let r=0,i;r<e.length;r++)i=`${e[r].left},${e[r].top},${e[r].width}`,t[i]||(t[i]=!0,n.push(e[r]));return n}var Ms=class extends Cs{constructor(e){super(e),o(this,`width`,10),o(this,`density`,20),o(this,`dotWidth`,1),o(this,`dotWidthVariance`,1),o(this,`randomOpacity`,!1),o(this,`optimizeOverlapping`,!0),this.sprayChunks=[],this.sprayChunk=[]}onMouseDown(e){this.sprayChunks=[],this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.addSprayChunk(e),this.renderChunck(this.sprayChunk)}onMouseMove(e){this.limitedToCanvasSize===!0&&this._isOutSideCanvas(e)||(this.addSprayChunk(e),this.renderChunck(this.sprayChunk))}onMouseUp(){let e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;let t=[];for(let e=0;e<this.sprayChunks.length;e++){let n=this.sprayChunks[e];for(let e=0;e<n.length;e++){let r=n[e],i=new Ma({width:r.width,height:r.width,left:r.x+r.width/2,top:r.y+r.width/2,originX:D,originY:D,fill:this.color});t.push(i)}}let n=new Ha(this.optimizeOverlapping?js(t):t,{objectCaching:!0,subTargetCheck:!1,interactive:!1});this.shadow&&n.set(`shadow`,new gr(this.shadow)),this.canvas.fire(`before:path:created`,{path:n}),this.canvas.add(n),this.canvas.fire(`path:created`,{path:n}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.requestRenderAll()}renderChunck(e){let t=this.canvas.contextTop;t.fillStyle=this.color,this._saveAndTransform(t);for(let n=0;n<e.length;n++){let r=e[n];t.globalAlpha=r.opacity,t.fillRect(r.x,r.y,r.width,r.width)}t.restore()}_render(){let e=this.canvas.contextTop;e.fillStyle=this.color,this._saveAndTransform(e);for(let e=0;e<this.sprayChunks.length;e++)this.renderChunck(this.sprayChunks[e]);e.restore()}addSprayChunk(e){this.sprayChunk=[];let t=this.width/2;for(let n=0;n<this.density;n++)this.sprayChunk.push({x:ko(e.x-t,e.x+t),y:ko(e.y-t,e.y+t),width:this.dotWidthVariance?ko(Math.max(1,this.dotWidth-this.dotWidthVariance),this.dotWidth+this.dotWidthVariance):this.dotWidth,opacity:this.randomOpacity?ko(0,100)/100:1});this.sprayChunks.push(this.sprayChunk)}},Ns=class extends Es{constructor(e){super(e)}getPatternSrc(){let e=P(),t=e.getContext(`2d`);return e.width=e.height=25,t&&(t.fillStyle=this.color,t.beginPath(),t.arc(10,10,10,0,Math.PI*2,!1),t.closePath(),t.fill()),e}getPattern(e){return e.createPattern(this.source||this.getPatternSrc(),`repeat`)}_setBrushStyles(e){super._setBrushStyles(e);let t=this.getPattern(e);t&&(e.strokeStyle=t)}createPath(e){let t=super.createPath(e),n=t._getLeftTopCoords().scalarAdd(t.strokeWidth/2);return t.stroke=new Ss({source:this.source||this.getPatternSrc(),offsetX:-n.x,offsetY:-n.y}),t}},Ps=class{},Fs=class extends Ps{testPrecision(e,t){let n=`precision ${t} float;\nvoid main(){}`,r=e.createShader(e.FRAGMENT_SHADER);return r?(e.shaderSource(r,n),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)):!1}queryWebGL(e){let t=e.getContext(`webgl`);t&&(this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.GLPrecision=[`highp`,`mediump`,`lowp`].find(e=>this.testPrecision(t,e)),t.getExtension(`WEBGL_lose_context`).loseContext(),l(`log`,`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(e){return!!this.maxTextureSize&&this.maxTextureSize>=e}};let Is=[`x1`,`x2`,`y1`,`y2`];var Ls=class e extends J{constructor([t,n,r,i]=[0,0,0,0],a={}){super(),Object.assign(this,e.ownDefaults),this.setOptions(a),this.x1=t,this.x2=r,this.y1=n,this.y2=i,this._setWidthHeight();let{left:o,top:s}=a;typeof o==`number`&&this.set(`left`,o),typeof s==`number`&&this.set(`top`,s)}_setWidthHeight(){let{x1:e,y1:t,x2:n,y2:r}=this;this.width=Math.abs(n-e),this.height=Math.abs(r-t);let{left:i,top:a,width:o,height:s}=Mt([{x:e,y:t},{x:n,y:r}]),c=new N(i+o/2,a+s/2);this.setPositionByOrigin(c,D,D)}_set(e,t){return super._set(e,t),Is.includes(e)&&this._setWidthHeight(),this}_render(e){e.beginPath();let t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;let n=e.strokeStyle;if(V(this.stroke))e.strokeStyle=this.stroke.toLive(e);else{var r;e.strokeStyle=(r=this.stroke)==null?e.fillStyle:r}this.stroke&&this._renderStroke(e),e.strokeStyle=n}_findCenterFromElement(){return new N((this.x1+this.x2)/2,(this.y1+this.y2)/2)}toObject(e=[]){return{...super.toObject(e),...this.calcLinePoints()}}_getNonTransformedDimensions(){let e=super._getNonTransformedDimensions();return this.strokeLineCap===`butt`&&(this.width===0&&(e.y-=this.strokeWidth),this.height===0&&(e.x-=this.strokeWidth)),e}calcLinePoints(){let{x1:e,x2:t,y1:n,y2:r,width:i,height:a}=this,o=e<=t?-.5:.5,s=n<=r?-.5:.5;return{x1:o*i,x2:o*-i,y1:s*a,y2:s*-a}}_toSVG(){let{x1:e,x2:t,y1:n,y2:r}=this.calcLinePoints();return[`<line `,`COMMON_PARTS`,`x1="${e}" y1="${n}" x2="${t}" y2="${r}" />\n`]}static async fromElement(e,t,n){let{x1:r=0,y1:i=0,x2:a=0,y2:o=0,...s}=ka(e,this.ATTRIBUTE_NAMES,n);return new this([r,i,a,o],s)}static fromObject({x1:e,y1:t,x2:n,y2:r,...i}){return this._fromObject({...i,points:[e,t,n,r]},{extraParam:`points`})}};o(Ls,`type`,`Line`),o(Ls,`cacheProperties`,[...yr,...Is]),o(Ls,`ATTRIBUTE_NAMES`,na.concat(Is)),M.setClass(Ls),M.setSVGClass(Ls);let Rs={width:100,height:100};var zs=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t)}_render(e){let t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderPaintInOrder(e)}_toSVG(){let e=this.width/2,t=this.height/2;return[`<polygon `,`COMMON_PARTS`,`points="`,`${-e} ${t},0 ${-t},${e} ${t}`,`" />`]}};o(zs,`type`,`Triangle`),o(zs,`ownDefaults`,Rs),M.setClass(zs),M.setSVGClass(zs);let Bs={rx:0,ry:0},Vs=[`rx`,`ry`];var Hs=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t){super(),Object.assign(this,e.ownDefaults),this.setOptions(t)}_set(e,t){switch(super._set(e,t),e){case`rx`:this.rx=t,this.set(`width`,t*2);break;case`ry`:this.ry=t,this.set(`height`,t*2)}return this}getRx(){return this.get(`rx`)*this.get(fe)}getRy(){return this.get(`ry`)*this.get(pe)}toObject(e=[]){return super.toObject([...Vs,...e])}_toSVG(){return[`<ellipse `,`COMMON_PARTS`,`cx="0" cy="0" rx="${H(this.rx)}" ry="${H(this.ry)}" />\n`]}_render(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,T,!1),e.restore(),this._renderPaintInOrder(e)}static async fromElement(e,t,n){let r=ka(e,this.ATTRIBUTE_NAMES,n);return r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,new this(r)}};o(Hs,`type`,`Ellipse`),o(Hs,`cacheProperties`,[...yr,...Vs]),o(Hs,`ownDefaults`,Bs),o(Hs,`ATTRIBUTE_NAMES`,[...na,`cx`,`cy`,`rx`,`ry`]),M.setClass(Hs),M.setSVGClass(Hs);function Us(e){if(!e)return[];let t=e.replace(/,/g,` `).trim().split(/\s+/),n=[];for(let e=0;e<t.length;e+=2)n.push({x:parseFloat(t[e]),y:parseFloat(t[e+1])});return n}let Ws={exactBoundingBox:!1};var Gs=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),o(this,`strokeDiff`,void 0),Object.assign(this,e.ownDefaults),this.setOptions(n),this.points=t;let{left:r,top:i}=n;this.initialized=!0,this.setBoundingBox(!0),typeof r==`number`&&this.set(`left`,r),typeof i==`number`&&this.set(`top`,i)}isOpen(){return!0}_projectStrokeOnPoints(e){return _n(this.points,e,this.isOpen())}_calcDimensions(e){e={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:this.strokeMiterLimit,strokeUniform:this.strokeUniform,strokeWidth:this.strokeWidth,...e||{}};let t=this.exactBoundingBox?this._projectStrokeOnPoints(e).map(e=>e.projectedPoint):this.points;if(t.length===0)return{left:0,top:0,width:0,height:0,pathOffset:new N,strokeOffset:new N,strokeDiff:new N};let n=Mt(t),r=Ze({...e,scaleX:1,scaleY:1}),i=Mt(this.points.map(e=>L(e,r,!0))),a=new N(this.scaleX,this.scaleY),o=n.left+n.width/2,s=n.top+n.height/2;return this.exactBoundingBox&&(o-=s*Math.tan(I(this.skewX)),s-=o*Math.tan(I(this.skewY))),{...n,pathOffset:new N(o,s),strokeOffset:new N(i.left,i.top).subtract(new N(n.left,n.top)).multiply(a),strokeDiff:new N(n.width,n.height).subtract(new N(i.width,i.height)).multiply(a)}}_findCenterFromElement(){let e=Mt(this.points);return new N(e.left+e.width/2,e.top+e.height/2)}setDimensions(){this.setBoundingBox()}setBoundingBox(e){let{left:t,top:n,width:r,height:i,pathOffset:a,strokeOffset:o,strokeDiff:s}=this._calcDimensions();this.set({width:r,height:i,pathOffset:a,strokeOffset:o,strokeDiff:s}),e&&this.setPositionByOrigin(new N(t+r/2,n+i/2),`center`,`center`)}isStrokeAccountedForInDimensions(){return this.exactBoundingBox}_getNonTransformedDimensions(){return this.exactBoundingBox?new N(this.width,this.height):super._getNonTransformedDimensions()}_getTransformedDimensions(e={}){if(this.exactBoundingBox){let a;if(Object.keys(e).some(e=>this.strokeUniform||this.constructor.layoutProperties.includes(e))){var t,n;let{width:r,height:i}=this._calcDimensions(e);a=new N((t=e.width)==null?r:t,(n=e.height)==null?i:n)}else{var r,i;a=new N((r=e.width)==null?this.width:r,(i=e.height)==null?this.height:i)}return a.multiply(new N(e.scaleX||this.scaleX,e.scaleY||this.scaleY))}return super._getTransformedDimensions(e)}_set(e,t){let n=this.initialized&&this[e]!==t,r=super._set(e,t);return this.exactBoundingBox&&n&&((e===`scaleX`||e===`scaleY`)&&this.strokeUniform&&this.constructor.layoutProperties.includes(`strokeUniform`)||this.constructor.layoutProperties.includes(e))&&this.setDimensions(),r}toObject(e=[]){return{...super.toObject(e),points:this.points.map(({x:e,y:t})=>({x:e,y:t}))}}_toSVG(){let e=this.pathOffset.x,t=this.pathOffset.y,n=c.NUM_FRACTION_DIGITS,r=this.points.map(({x:r,y:i})=>`${B(r-e,n)},${B(i-t,n)}`).join(` `);return[`<${H(this.constructor.type).toLowerCase()} `,`COMMON_PARTS`,`points="${r}" />\n`]}_render(e){let t=this.points.length,n=this.pathOffset.x,r=this.pathOffset.y;if(t&&!isNaN(this.points[t-1].y)){e.beginPath(),e.moveTo(this.points[0].x-n,this.points[0].y-r);for(let i=0;i<t;i++){let t=this.points[i];e.lineTo(t.x-n,t.y-r)}!this.isOpen()&&e.closePath(),this._renderPaintInOrder(e)}}complexity(){return this.points.length}static async fromElement(e,t,n){let r=Us(e.getAttribute(`points`)),{left:i,top:a,...o}=ka(e,this.ATTRIBUTE_NAMES,n);return new this(r,{...o,...t})}static fromObject(e){return this._fromObject(e,{extraParam:`points`})}};o(Gs,`ownDefaults`,Ws),o(Gs,`type`,`Polyline`),o(Gs,`layoutProperties`,[me,he,`strokeLineCap`,`strokeLineJoin`,`strokeMiterLimit`,`strokeWidth`,`strokeUniform`,`points`]),o(Gs,`cacheProperties`,[...yr,`points`]),o(Gs,`ATTRIBUTE_NAMES`,[...na]),M.setClass(Gs),M.setSVGClass(Gs);var Ks=class extends Gs{isOpen(){return!1}};o(Ks,`ownDefaults`,Ws),o(Ks,`type`,`Polygon`),M.setClass(Ks),M.setSVGClass(Ks);var qs=class extends J{isEmptyStyles(e){if(!this.styles||e!==void 0&&!this.styles[e])return!0;let t=e===void 0?this.styles:{line:this.styles[e]};for(let e in t)for(let n in t[e])for(let r in t[e][n])return!1;return!0}styleHas(e,t){if(!this.styles||t!==void 0&&!this.styles[t])return!1;let n=t===void 0?this.styles:{0:this.styles[t]};for(let t in n)for(let r in n[t])if(n[t][r][e]!==void 0)return!0;return!1}cleanStyle(e){if(!this.styles)return!1;let t=this.styles,n=0,r,i,a=!0,o=0;for(let o in t){r=0;for(let s in t[o]){let c=t[o][s]||{},l=c[e]!==void 0;n++,l?(i?c[e]!==i&&(a=!1):i=c[e],c[e]===this[e]&&delete c[e]):a=!1,Object.keys(c).length===0?delete t[o][s]:r++}r===0&&delete t[o]}for(let e=0;e<this._textLines.length;e++)o+=this._textLines[e].length;a&&n===o&&(this[e]=i,this.removeStyle(e))}removeStyle(e){if(!this.styles)return;let t=this.styles,n,r,i;for(r in t){for(i in n=t[r],n)delete n[i][e],Object.keys(n[i]).length===0&&delete n[i];Object.keys(n).length===0&&delete t[r]}}_extendStyles(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e);this._getLineStyle(n)||this._setLineStyle(n);let i=rt({...this._getStyleDeclaration(n,r),...t},e=>e!==void 0);this._setStyleDeclaration(n,r,i)}getSelectionStyles(e,t,n){let r=[];for(let i=e;i<(t||e);i++)r.push(this.getStyleAtPosition(i,n));return r}getStyleAtPosition(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e);return t?this.getCompleteStyleDeclaration(n,r):this._getStyleDeclaration(n,r)}setSelectionStyles(e,t,n){for(let r=t;r<(n||t);r++)this._extendStyles(r,e);this._forceClearCache=!0}_getStyleDeclaration(e,t){var n;let r=this.styles&&this.styles[e];return r?(n=r[t])==null?{}:n:{}}getCompleteStyleDeclaration(e,t){return{...nt(this,this.constructor._styleProperties),...this._getStyleDeclaration(e,t)}}_setStyleDeclaration(e,t,n){this.styles[e][t]=n}_deleteStyleDeclaration(e,t){delete this.styles[e][t]}_getLineStyle(e){return!!this.styles[e]}_setLineStyle(e){this.styles[e]={}}_deleteLineStyle(e){delete this.styles[e]}};o(qs,`_styleProperties`,Yn);let Js=/ +/g,Ys=/"/g;function Xs(e,t,n,r,i){return`\t\t${Bn(e,{left:t,top:n,width:r,height:i})}\n`}var Zs=class extends Vn{_toSVG(){let e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)}toSVG(e){let t=this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0}),n=this.path;return n?t+n._createBaseSVGMarkup(n._toSVG(),{reviver:e,withShadow:!0,additionalTransform:it(this.calcOwnMatrix())}):t}_getSVGLeftTopOffsets(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}}_wrapSVGTextAndBg({textBgRects:e,textSpans:t}){let n=this.getSvgTextDecoration(this);return[e.join(``),` <text xml:space="preserve" `,`font-family="${H(this.fontFamily.replace(Ys,`'`))}" `,`font-size="${H(this.fontSize)}" `,this.fontStyle?`font-style="${H(this.fontStyle)}" `:``,this.fontWeight?`font-weight="${H(this.fontWeight)}" `:``,n?`text-decoration="${n}" `:``,this.direction===`rtl`?`direction="rtl" `:``,`style="`,this.getSvgStyles(!0),`"`,this.addPaintOrder(),` >`,t.join(``),`</text>
|
|
23
|
+
`]}_getSVGTextAndBg(e,t){let n=[],r=[],i=e,a;this.backgroundColor&&r.push(Xs(this.backgroundColor,-this.width/2,-this.height/2,this.width,this.height));for(let e=0,o=this._textLines.length;e<o;e++)a=this._getLineLeftOffset(e),this.direction===`rtl`&&(a+=this.width),(this.textBackgroundColor||this.styleHas(`textBackgroundColor`,e))&&this._setSVGTextLineBg(r,e,t+a,i),this._setSVGTextLineText(n,e,t+a,i),i+=this.getHeightOfLine(e);return{textSpans:n,textBgRects:r}}_createTextCharSpan(e,t,n,r,i){let a=c.NUM_FRACTION_DIGITS,o=this.getSvgSpanStyles(t,e!==e.trim()||!!e.match(Js)),s=o?`style="${o}" `:``,l=t.deltaY,u=l?` dy="${B(l,a)}" `:``,{angle:d,renderLeft:f,renderTop:p,width:m}=i,h=``;if(f!==void 0){let e=m/2;d&&(h=` rotate="${B(Re(d),a)}" `);let t=Ke({angle:Re(d)});t[4]=f,t[5]=p;let i=new N(-e,0).transform(t);n=i.x,r=i.y}return`<tspan x="${B(n,a)}" y="${B(r,a)}" ${u}${h}${s}>${H(e)}</tspan>`}_setSVGTextLineText(e,t,n,r){let i=this.getHeightOfLine(t),a=this.textAlign.includes(Zn),o=this._textLines[t],s,c,l=``,u,d,f=0,p;r+=i*(1-this._fontSizeFraction)/this.lineHeight;for(let i=0,m=o.length-1;i<=m;i++)p=i===m||this.charSpacing||this.path,l+=o[i],u=this.__charBounds[t][i],f===0?(n+=u.kernedWidth-u.width,f+=u.width):f+=u.kernedWidth,a&&!p&&this._reSpaceAndTab.test(o[i])&&(p=!0),p||(s=s||this.getCompleteStyleDeclaration(t,i),c=this.getCompleteStyleDeclaration(t,i+1),p=yn(s,c,!0)),p&&(d=this._getStyleDeclaration(t,i),e.push(this._createTextCharSpan(l,d,n,r,u)),l=``,s=c,this.direction===`rtl`?n-=f:n+=f,f=0)}_setSVGTextLineBg(e,t,n,r){let i=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,o=0,s=0,c,l=this.getValueOfPropertyAt(t,0,`textBackgroundColor`);for(let u=0;u<i.length;u++){let{left:i,width:d,kernedWidth:f}=this.__charBounds[t][u];c=this.getValueOfPropertyAt(t,u,`textBackgroundColor`),c===l?o+=f:(l&&e.push(Xs(l,n+s,r,o,a)),s=i,o=d,l=c)}c&&e.push(Xs(l,n+s,r,o-this._getWidthOfCharSpacing(),a))}getSvgStyles(e){let t=Nn(this.textDecorationColor)?` text-decoration-color: ${H(this[Wn])};`:``;return`${super.getSvgStyles(e)} text-decoration-thickness: ${B(this.textDecorationThickness*this.getObjectScaling().y/10,c.NUM_FRACTION_DIGITS)}%;${t} white-space: pre;`}getSvgSpanStyles(e,t){let{fontFamily:n,strokeWidth:r,stroke:i,fill:a,fontSize:o,fontStyle:s,fontWeight:l,textDecorationThickness:u,textDecorationColor:d,linethrough:f,overline:p,underline:m}=e,h=this.getSvgTextDecoration({underline:m==null?this.underline:m,overline:p==null?this.overline:p,linethrough:f==null?this.linethrough:f}),g=u||this.textDecorationThickness,_=d||this.textDecorationColor,v=Pn(r),y=Fn(n),b=Pn(o),x=Fn(s),S=Pn(l)||Fn(l),C=Fn(_);return[i?zn(ge,i):``,v?`stroke-width: ${H(v)}; `:``,y?`font-family: ${!y.includes(`'`)&&!y.includes(`"`)?`'${H(y)}'`:H(y)}; `:``,b?`font-size: ${H(b)}px; `:``,x?`font-style: ${H(x)}; `:``,S?`font-weight: ${H(S)}; `:``,h?`text-decoration: ${h}; text-decoration-thickness: ${B(g*this.getObjectScaling().y/10,c.NUM_FRACTION_DIGITS)}%;${C?` text-decoration-color: ${H(C)};`:``} `:``,a?zn(j,a):``,t?`white-space: pre; `:``].join(``)}getSvgTextDecoration(e){return[`overline`,`underline`,`line-through`].filter(t=>e[t.replace(`-`,``)]).join(` `)}};let Qs,$s;function ec(){let e=_();return(!Qs||$s!==e)&&(Qs=F({width:0,height:0}).getContext(`2d`),$s=e),Qs}var Q=class e extends qs{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(),o(this,`__charBounds`,[]),Object.assign(this,e.ownDefaults),this.setOptions(n),this.styles||(this.styles={}),this.text=t,this.initialized=!0,this.path&&this.setPathInfo(),this.initDimensions(),this.setCoords()}setPathInfo(){let e=this.path;e&&(e.segmentsInfo=_o(e.path))}_splitText(){let e=this._splitTextIntoLines(this.text);return this.textLines=e.lines,this._textLines=e.graphemeLines,this._unwrappedTextLines=e._unwrappedLines,this._text=e.graphemeText,e}initDimensions(){this._splitText(),this._clearCache(),this.dirty=!0,this.path?(this.width=this.path.width,this.height=this.path.height):(this.width=this.calcTextWidth()||this.cursorWidth||this.MIN_TEXT_WIDTH,this.height=this.calcTextHeight()),this.textAlign.includes(`justify`)&&this.enlargeSpaces()}enlargeSpaces(){let e,t,n,r,i,a,o;for(let s=0,c=this._textLines.length;s<c;s++)if((this.textAlign===`justify`||s!==c-1&&!this.isEndOfWrapping(s))&&(r=0,i=this._textLines[s],t=this.getLineWidth(s),t<this.width&&(o=this.textLines[s].match(this._reSpacesAndTabs)))){n=o.length,e=(this.width-t)/n;for(let t=0;t<=i.length;t++)a=this.__charBounds[s][t],this._reSpaceAndTab.test(i[t])?(a.width+=e,a.kernedWidth+=e,a.left+=r,r+=e):a.left+=r}}isEndOfWrapping(e){return e===this._textLines.length-1}missingNewlineOffset(e){return 1}get2DCursorLocation(e,t){let n=t?this._unwrappedTextLines:this._textLines,r=0;for(;r<n.length;r++){if(e<=n[r].length)return{lineIndex:r,charIndex:e};e-=n[r].length+this.missingNewlineOffset(r,t)}return{lineIndex:r-1,charIndex:n[r-1].length<e?n[r-1].length:e}}toString(){return`#<Text (${this.complexity()}): { "text": "${this.text}", "fontFamily": "${this.fontFamily}" }>`}_getCacheCanvasDimensions(){let e=super._getCacheCanvasDimensions(),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e}needsItsOwnCache(){return super.needsItsOwnCache()||!!this.shadow&&(this.underline||this.overline||this.linethrough||this.styleHas(`underline`)||this.styleHas(`overline`)||this.styleHas(`linethrough`))}_render(e){let t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,`underline`),this._renderText(e),this._renderTextDecoration(e,`overline`),this._renderTextDecoration(e,`linethrough`)}_renderText(e){this.paintFirst===`stroke`?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))}_setTextStyles(e,t,n){if(e.textBaseline=`alphabetic`,this.path)switch(this.pathAlign){case D:e.textBaseline=`middle`;break;case`ascender`:e.textBaseline=`top`;break;case`descender`:e.textBaseline=te}e.font=this._getFontDeclaration(t,n)}calcTextWidth(){let e=this.getLineWidth(0);for(let t=1,n=this._textLines.length;t<n;t++){let n=this.getLineWidth(t);n>e&&(e=n)}return e}_renderTextLine(e,t,n,r,i,a){this._renderChars(e,t,n,r,i,a)}_renderTextLinesBackground(e){if(!this.textBackgroundColor&&!this.styleHas(`textBackgroundColor`))return;let t=e.fillStyle,n=this._getLeftOffset(),r=this._getWidthOfCharSpacing(),i=this._getTopOffset();for(let t=0,a=this._textLines.length;t<a;t++){let a=this.getHeightOfLine(t);if(!this.textBackgroundColor&&!this.styleHas(`textBackgroundColor`,t)){i+=a;continue}let o=this._textLines[t].length,s=this._getLineLeftOffset(t),c=0,l=0,u,d,f=this.getValueOfPropertyAt(t,0,`textBackgroundColor`),p=this.getHeightOfLineImpl(t);for(let r=0;r<o;r++){let a=this.__charBounds[t][r];d=this.getValueOfPropertyAt(t,r,`textBackgroundColor`),this.path?(e.save(),e.translate(a.renderLeft,a.renderTop),e.rotate(a.angle),e.fillStyle=d,d&&e.fillRect(-a.width/2,-p*(1-this._fontSizeFraction),a.width,p),e.restore()):d===f?c+=a.kernedWidth:(u=n+s+l,this.direction===`rtl`&&(u=this.width-u-c),e.fillStyle=f,f&&e.fillRect(u,i,c,p),l=a.left,c=a.width,f=d)}d&&!this.path&&(c-=r,u=n+s+l,this.direction===`rtl`&&(u=this.width-u-c),e.fillStyle=d,e.fillRect(u,i,c,p)),i+=a}e.fillStyle=t,this._removeShadow(e)}_measureChar(e,t,n,r){let i=b.getFontCache(t),a=this._getFontDeclaration(t),o=n?n+e:e,s=n&&a===this._getFontDeclaration(r),c=t.fontSize/this.CACHE_FONT_SIZE,l,u,d,f;if(n&&i.has(n)&&(d=i.get(n)),i.has(e)&&(f=l=i.get(e)),s&&i.has(o)&&(u=i.get(o),f=u-d),l===void 0||d===void 0||u===void 0){let r=ec();this._setTextStyles(r,t,!0),l===void 0&&(f=l=r.measureText(e).width,i.set(e,l)),d===void 0&&s&&n&&(d=r.measureText(n).width,i.set(n,d)),s&&u===void 0&&(u=r.measureText(o).width,i.set(o,u),f=u-d)}return{width:l*c,kernedWidth:f*c}}getHeightOfChar(e,t){return this.getValueOfPropertyAt(e,t,`fontSize`)}measureLine(e){let t=this._measureLine(e);return this.charSpacing!==0&&(t.width-=this._getWidthOfCharSpacing()),t.width<0&&(t.width=0),t}_measureLine(e){let t=0,n,r,i=this.pathSide===k,a=this.path,o=this._textLines[e],s=o.length,c=Array(s);this.__charBounds[e]=c;for(let i=0;i<s;i++){let a=o[i];r=this._getGraphemeBox(a,e,i,n),c[i]=r,t+=r.kernedWidth,n=a}if(c[s]={left:r?r.left+r.width:0,width:0,kernedWidth:0,height:this.fontSize,deltaY:0},a&&a.segmentsInfo){let e=0,n=a.segmentsInfo[a.segmentsInfo.length-1].length;switch(this.textAlign){case O:e=i?n-t:0;break;case D:e=(n-t)/2;break;case k:e=i?0:n-t}e+=this.pathStartOffset*(i?-1:1);for(let t=i?s-1:0;i?t>=0:t<s;i?t--:t++)r=c[t],e>n?e%=n:e<0&&(e+=n),this._setGraphemeOnPath(e,r),e+=r.kernedWidth}return{width:t,numOfSpaces:0}}_setGraphemeOnPath(e,t){let n=e+t.kernedWidth/2,r=this.path,i=vo(r.path,n,r.segmentsInfo);t.renderLeft=i.x-r.pathOffset.x,t.renderTop=i.y-r.pathOffset.y,t.angle=i.angle+(this.pathSide===`right`?Math.PI:0)}_getGraphemeBox(e,t,n,r,i){let a=this.getCompleteStyleDeclaration(t,n),o=r?this.getCompleteStyleDeclaration(t,n-1):{},s=this._measureChar(e,a,r,o),c=s.kernedWidth,l=s.width,u;this.charSpacing!==0&&(u=this._getWidthOfCharSpacing(),l+=u,c+=u);let d={width:l,left:0,height:a.fontSize,kernedWidth:c,deltaY:a.deltaY};if(n>0&&!i){let e=this.__charBounds[t][n-1];d.left=e.left+e.width+s.kernedWidth-s.width}return d}getHeightOfLineImpl(e){let t=this.__lineHeights;if(t[e])return t[e];let n=this.getHeightOfChar(e,0);for(let t=1,r=this._textLines[e].length;t<r;t++)n=Math.max(this.getHeightOfChar(e,t),n);return t[e]=n*this._fontSizeMult}getHeightOfLine(e){return this.getHeightOfLineImpl(e)*this.lineHeight}calcTextHeight(){let e=0;for(let t=0,n=this._textLines.length;t<n;t++)e+=t===n-1?this.getHeightOfLineImpl(t):this.getHeightOfLine(t);return e}_getLeftOffset(){return this.direction===`ltr`?-this.width/2:this.width/2}_getTopOffset(){return-this.height/2}_renderTextCommon(e,t){e.save();let n=0,r=this._getLeftOffset(),i=this._getTopOffset();for(let a=0,o=this._textLines.length;a<o;a++)this._renderTextLine(t,e,this._textLines[a],r+this._getLineLeftOffset(a),i+n+this.getHeightOfLineImpl(a),a),n+=this.getHeightOfLine(a);e.restore()}_renderTextFill(e){(this.fill||this.styleHas(`fill`))&&this._renderTextCommon(e,`fillText`)}_renderTextStroke(e){(this.stroke&&this.strokeWidth!==0||!this.isEmptyStyles())&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this._setLineDash(e,this.strokeDashArray),e.beginPath(),this._renderTextCommon(e,`strokeText`),e.closePath(),e.restore())}_renderChars(e,t,n,r,i,a){let o=this.textAlign.includes(Zn),s=this.path,c=!o&&this.charSpacing===0&&this.isEmptyStyles(a)&&!s,l=this.direction===`ltr`,u=this.direction===`ltr`?1:-1,d=t.direction,f,p,m=``,h,g=0,_,v;if(t.save(),d!==this.direction&&(t.canvas.setAttribute(`dir`,l?`ltr`:`rtl`),t.direction=l?`ltr`:`rtl`,t.textAlign=l?O:k),i-=this.getHeightOfLineImpl(a)*this._fontSizeFraction,c){this._renderChar(e,t,a,0,n.join(``),r,i),t.restore();return}for(let c=0,l=n.length-1;c<=l;c++)_=c===l||this.charSpacing||s,m+=n[c],h=this.__charBounds[a][c],g===0?(r+=u*(h.kernedWidth-h.width),g+=h.width):g+=h.kernedWidth,o&&!_&&this._reSpaceAndTab.test(n[c])&&(_=!0),_||(f=f||this.getCompleteStyleDeclaration(a,c),p=this.getCompleteStyleDeclaration(a,c+1),_=yn(f,p,!1)),_&&(s?(t.save(),t.translate(h.renderLeft,h.renderTop),t.rotate(h.angle),this._renderChar(e,t,a,c,m,-g/2,0),t.restore()):(v=r,this._renderChar(e,t,a,c,m,v,i)),m=``,f=p,r+=u*g,g=0);t.restore()}_applyPatternGradientTransformText(e){let t=this.width+this.strokeWidth,n=this.height+this.strokeWidth,r=F({width:t,height:n}),i=r.getContext(`2d`);return r.width=t,r.height=n,i.beginPath(),i.moveTo(0,0),i.lineTo(t,0),i.lineTo(t,n),i.lineTo(0,n),i.closePath(),i.translate(t/2,n/2),i.fillStyle=e.toLive(i),this._applyPatternGradientTransform(i,e),i.fill(),i.createPattern(r,`no-repeat`)}handleFiller(e,t,n){let r,i;return V(n)?n.gradientUnits===`percentage`||n.gradientTransform||n.patternTransform?(r=-this.width/2,i=-this.height/2,e.translate(r,i),e[t]=this._applyPatternGradientTransformText(n),{offsetX:r,offsetY:i}):(e[t]=n.toLive(e),this._applyPatternGradientTransform(e,n)):(e[t]=n,{offsetX:0,offsetY:0})}_setStrokeStyles(e,{stroke:t,strokeWidth:n}){return e.lineWidth=n,e.lineCap=this.strokeLineCap,e.lineDashOffset=this.strokeDashOffset,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,this.handleFiller(e,`strokeStyle`,t)}_setFillStyles(e,{fill:t}){return this.handleFiller(e,`fillStyle`,t)}_renderChar(e,t,n,r,i,a,o){let s=this._getStyleDeclaration(n,r),c=this.getCompleteStyleDeclaration(n,r),l=e===`fillText`&&c.fill,u=e===`strokeText`&&c.stroke&&c.strokeWidth;if(u||l){if(t.save(),t.font=this._getFontDeclaration(c),s.textBackgroundColor&&this._removeShadow(t),s.deltaY&&(o+=s.deltaY),l){let e=this._setFillStyles(t,c);t.fillText(i,a-e.offsetX,o-e.offsetY)}if(u){let e=this._setStrokeStyles(t,c);t.strokeText(i,a-e.offsetX,o-e.offsetY)}t.restore()}}setSuperscript(e,t){this._setScript(e,t,this.superscript)}setSubscript(e,t){this._setScript(e,t,this.subscript)}_setScript(e,t,n){let r=this.get2DCursorLocation(e,!0),i=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,`fontSize`),a=this.getValueOfPropertyAt(r.lineIndex,r.charIndex,`deltaY`),o={fontSize:i*n.size,deltaY:a+i*n.baseline};this.setSelectionStyles(o,e,t)}_getLineLeftOffset(e){let t=this.getLineWidth(e),n=this.width-t,r=this.textAlign,i=this.direction,a=this.isEndOfWrapping(e),o=0;return r===`justify`||r===`justify-center`&&!a||r===`justify-right`&&!a||r===`justify-left`&&!a?0:(r===`center`&&(o=n/2),r===`right`&&(o=n),r===`justify-center`&&(o=n/2),r===`justify-right`&&(o=n),i===`rtl`&&(r===`right`||r===`justify-right`?o=0:r===`left`||r===`justify-left`?o=-n:(r===`center`||r===`justify-center`)&&(o=-n/2)),o)}_clearCache(){this._forceClearCache=!1,this.__lineWidths=[],this.__lineHeights=[],this.__charBounds=[]}getLineWidth(e){if(this.__lineWidths[e]!==void 0)return this.__lineWidths[e];let{width:t}=this.measureLine(e);return this.__lineWidths[e]=t,t}_getWidthOfCharSpacing(){return this.charSpacing===0?0:this.fontSize*this.charSpacing/1e3}getValueOfPropertyAt(e,t,n){var r;return(r=this._getStyleDeclaration(e,t)[n])==null?this[n]:r}_renderTextDecoration(e,t){if(!this[t]&&!this.styleHas(t))return;let n=this._getTopOffset(),r=this._getLeftOffset(),i=this.path,a=this._getWidthOfCharSpacing(),o=t===`linethrough`?.5:+(t===`overline`),s=this.offsets[t];for(let c=0,l=this._textLines.length;c<l;c++){let l=this.getHeightOfLine(c);if(!this[t]&&!this.styleHas(t,c)){n+=l;continue}let u=this._textLines[c],d=l/this.lineHeight,f=this._getLineLeftOffset(c),p=0,m=0,h=this.getValueOfPropertyAt(c,0,t),g=this.getValueOfPropertyAt(c,0,j),_=this.getValueOfPropertyAt(c,0,`textDecorationColor`)||g,v=this.getValueOfPropertyAt(c,0,Un),y=h,b,x=_,S=v,C=n+d*(1-this._fontSizeFraction),w=this.getHeightOfChar(c,0),T=this.getValueOfPropertyAt(c,0,`deltaY`);for(let n=0,a=u.length;n<a;n++){let a=this.__charBounds[c][n];y=this.getValueOfPropertyAt(c,n,t),b=this.getValueOfPropertyAt(c,n,j),x=this.getValueOfPropertyAt(c,n,`textDecorationColor`)||b,S=this.getValueOfPropertyAt(c,n,Un);let l=this.getHeightOfChar(c,n),u=this.getValueOfPropertyAt(c,n,`deltaY`);if(i&&y&&b){let t=this.fontSize*S/1e3;e.save(),e.fillStyle=x,e.translate(a.renderLeft,a.renderTop),e.rotate(a.angle),e.fillRect(-a.kernedWidth/2,s*l+u-o*t,a.kernedWidth,t),e.restore()}else if((y!==h||b!==g||x!==_||l!==w||S!==v||u!==T)&&m>0){let t=this.fontSize*v/1e3,n=r+f+p;this.direction===`rtl`&&(n=this.width-n-m),h&&_&&v&&(e.fillStyle=_,e.fillRect(n,C+s*w+T-o*t,m,t)),p=a.left,m=a.width,h=y,_=x,v=S,g=b,w=l,T=u}else m+=a.kernedWidth}let ee=r+f+p;this.direction===`rtl`&&(ee=this.width-ee-m),e.fillStyle=x;let E=this.fontSize*S/1e3;y&&x&&S&&e.fillRect(ee,C+s*w+T-o*E,m-a,E),n+=l}this._removeShadow(e)}_getFontDeclaration({fontFamily:t=this.fontFamily,fontStyle:n=this.fontStyle,fontWeight:r=this.fontWeight,fontSize:i=this.fontSize}={},a){let o=t.includes(`'`)||t.includes(`"`)||t.includes(`,`)||e.genericFonts.includes(t.toLowerCase())?t:`"${t}"`;return[n,r,`${a?this.CACHE_FONT_SIZE:i}px`,o].join(` `)}render(e){this.visible&&(!this.canvas||!this.canvas.skipOffscreen||this.group||this.isOnScreen())&&(this._forceClearCache&&this.initDimensions(),super.render(e))}graphemeSplit(e){return Ct(e)}_splitTextIntoLines(e){let t=e.split(this._reNewline),n=Array(t.length),r=[`
|
|
24
|
+
`],i=[];for(let e=0;e<t.length;e++)n[e]=this.graphemeSplit(t[e]),i=i.concat(n[e],r);return i.pop(),{_unwrappedLines:n,lines:t,graphemeText:i,graphemeLines:n}}toObject(e=[]){return{...super.toObject([...Jn,...e]),styles:bn(this.styles,this.text),...this.path?{path:this.path.toObject()}:{}}}set(e,t){let{textLayoutProperties:n}=this.constructor;super.set(e,t);let r=!1,i=!1;if(typeof e==`object`)for(let t in e)t===`path`&&this.setPathInfo(),r=r||n.includes(t),i=i||t===`path`;else r=n.includes(e),i=e===`path`;return i&&this.setPathInfo(),r&&this.initialized&&(this.initDimensions(),this.setCoords()),this}complexity(){return 1}static async fromElement(t,n,r){let i=ka(t,e.ATTRIBUTE_NAMES,r),{textAnchor:a=O,textDecoration:o=``,dx:s=0,dy:c=0,top:l=0,left:u=0,fontSize:d=16,strokeWidth:f=1,...p}={...n,...i},m=Sn(t.textContent||``).trim(),h=new this(m,{left:u+s,top:l+c,underline:o.includes(`underline`),overline:o.includes(`overline`),linethrough:o.includes(`line-through`),strokeWidth:0,fontSize:d,...p}),g=h.getScaledHeight()/h.height,_=((h.height+h.strokeWidth)*h.lineHeight-h.height)*g,v=h.getScaledHeight()+_,y=0;return a===`center`&&(y=h.getScaledWidth()/2),a===`right`&&(y=h.getScaledWidth()),h.set({left:h.left-y,top:h.top-(v-h.fontSize*(.07+h._fontSizeFraction))/h.lineHeight,strokeWidth:f}),h}static fromObject(e){return this._fromObject({...e,styles:xn(e.styles||{},e.text)},{extraParam:`text`})}};o(Q,`textLayoutProperties`,qn),o(Q,`cacheProperties`,[...yr,...Jn]),o(Q,`ownDefaults`,Xn),o(Q,`type`,`Text`),o(Q,`genericFonts`,[`serif`,`sans-serif`,`monospace`,`cursive`,`fantasy`,`system-ui`,`ui-serif`,`ui-sans-serif`,`ui-monospace`,`ui-rounded`,`math`,`emoji`,`fangsong`]),o(Q,`ATTRIBUTE_NAMES`,na.concat(`x`,`y`,`dx`,`dy`,`font-family`,`font-style`,`font-weight`,`font-size`,`letter-spacing`,`text-decoration`,`text-decoration-thickness`,`text-decoration-color`,`text-anchor`)),ta(Q,[Zs]),M.setClass(Q),M.setSVGClass(Q);var tc=class{constructor(e){o(this,`target`,void 0),o(this,`__mouseDownInPlace`,!1),o(this,`__dragStartFired`,!1),o(this,`__isDraggingOver`,!1),o(this,`__dragStartSelection`,void 0),o(this,`__dragImageDisposer`,void 0),o(this,`_dispose`,void 0),this.target=e;let t=[this.target.on(`dragenter`,this.dragEnterHandler.bind(this)),this.target.on(`dragover`,this.dragOverHandler.bind(this)),this.target.on(`dragleave`,this.dragLeaveHandler.bind(this)),this.target.on(`dragend`,this.dragEndHandler.bind(this)),this.target.on(`drop`,this.dropHandler.bind(this))];this._dispose=()=>{t.forEach(e=>e()),this._dispose=void 0}}isPointerOverSelection(e){let t=this.target,n=t.getSelectionStartFromPointer(e);return t.isEditing&&n>=t.selectionStart&&n<=t.selectionEnd&&t.selectionStart<t.selectionEnd}start(e){return this.__mouseDownInPlace=this.isPointerOverSelection(e)}isActive(){return this.__mouseDownInPlace}end(e){let t=this.isActive();return t&&!this.__dragStartFired&&(this.target.setCursorByClick(e),this.target.initDelayedCursor(!0)),this.__mouseDownInPlace=!1,this.__dragStartFired=!1,this.__isDraggingOver=!1,t}getDragStartSelection(){return this.__dragStartSelection}setDragImage(e,{selectionStart:t,selectionEnd:n}){var r;let i=this.target,a=i.canvas,o=new N(i.flipX?-1:1,i.flipY?-1:1),s=i._getCursorBoundaries(t),c=new N(s.left+s.leftOffset,s.top+s.topOffset).multiply(o).transform(i.calcTransformMatrix()),l=a.getScenePoint(e).subtract(c),u=i.getCanvasRetinaScaling(),d=i.getBoundingRect(),f=c.subtract(new N(d.left,d.top)),p=a.viewportTransform,m=f.add(l).transform(p,!0),h=i.backgroundColor,g=vn(i.styles);i.backgroundColor=``;let _={stroke:`transparent`,fill:`transparent`,textBackgroundColor:`transparent`};i.setSelectionStyles(_,0,t),i.setSelectionStyles(_,n,i.text.length),i.dirty=!0;let v=i.toCanvasElement({enableRetinaScaling:a.enableRetinaScaling,viewportTransform:!0});i.backgroundColor=h,i.styles=g,i.dirty=!0,No(v,{position:`fixed`,left:`${-v.width}px`,border:ne,width:`${v.width/u}px`,height:`${v.height/u}px`}),this.__dragImageDisposer&&this.__dragImageDisposer(),this.__dragImageDisposer=()=>{v.remove()},dt(e.target||this.target.hiddenTextarea).body.appendChild(v),(r=e.dataTransfer)==null||r.setDragImage(v,m.x,m.y)}onDragStart(e){this.__dragStartFired=!0;let t=this.target,n=this.isActive();if(n&&e.dataTransfer){let n=this.__dragStartSelection={selectionStart:t.selectionStart,selectionEnd:t.selectionEnd},r=t._text.slice(n.selectionStart,n.selectionEnd).join(``),i={text:t.text,value:r,...n};e.dataTransfer.setData(`text/plain`,r),e.dataTransfer.setData(`application/fabric`,JSON.stringify({value:r,styles:t.getSelectionStyles(n.selectionStart,n.selectionEnd,!0)})),e.dataTransfer.effectAllowed=`copyMove`,this.setDragImage(e,i)}return t.abortCursorAnimation(),n}canDrop(e){if(this.target.editable&&!this.target.getActiveControl()&&!e.defaultPrevented){if(this.isActive()&&this.__dragStartSelection){let t=this.target.getSelectionStartFromPointer(e),n=this.__dragStartSelection;return t<n.selectionStart||t>n.selectionEnd}return!0}return!1}targetCanDrop(e){return this.target.canDrop(e)}dragEnterHandler({e}){let t=this.targetCanDrop(e);!this.__isDraggingOver&&t&&(this.__isDraggingOver=!0)}dragOverHandler(e){let{e:t}=e,n=this.targetCanDrop(t);!this.__isDraggingOver&&n?this.__isDraggingOver=!0:this.__isDraggingOver&&!n&&(this.__isDraggingOver=!1),this.__isDraggingOver&&(t.preventDefault(),e.canDrop=!0,e.dropTarget=this.target)}dragLeaveHandler(){(this.__isDraggingOver||this.isActive())&&(this.__isDraggingOver=!1)}dropHandler(e){var t;let{e:n}=e,r=n.defaultPrevented;this.__isDraggingOver=!1,n.preventDefault();let i=(t=n.dataTransfer)==null?void 0:t.getData(`text/plain`);if(i&&!r){let t=this.target,r=t.canvas,a=t.getSelectionStartFromPointer(n),{styles:o}=n.dataTransfer.types.includes(`application/fabric`)?JSON.parse(n.dataTransfer.getData(`application/fabric`)):{},s=i[Math.max(0,i.length-1)];if(this.__dragStartSelection){let e=this.__dragStartSelection.selectionStart,n=this.__dragStartSelection.selectionEnd;a>e&&a<=n?a=e:a>n&&(a-=n-e),t.removeChars(e,n),delete this.__dragStartSelection}t._reNewline.test(s)&&(t._reNewline.test(t._text[a])||a===t._text.length)&&(i=i.trimEnd()),e.didDrop=!0,e.dropTarget=t,t.insertChars(i,o,a),r.setActiveObject(t),t.enterEditing(n),t.selectionStart=Math.min(a+0,t._text.length),t.selectionEnd=Math.min(t.selectionStart+i.length,t._text.length),t.hiddenTextarea.value=t.text,t._updateTextarea(),t.hiddenTextarea.focus(),t.fire(ue,{index:a+0,action:`drop`}),r.fire(`text:changed`,{target:t}),r.contextTopDirty=!0,r.requestRenderAll()}}dragEndHandler({e}){if(this.isActive()&&this.__dragStartFired&&this.__dragStartSelection){var t;let n=this.target,r=this.target.canvas,{selectionStart:i,selectionEnd:a}=this.__dragStartSelection,o=((t=e.dataTransfer)==null?void 0:t.dropEffect)||`none`;o===`none`?(n.selectionStart=i,n.selectionEnd=a,n._updateTextarea(),n.hiddenTextarea.focus()):(n.clearContextTop(),o===`move`&&(n.removeChars(i,a),n.selectionStart=n.selectionEnd=i,n.hiddenTextarea&&(n.hiddenTextarea.value=n.text),n._updateTextarea(),n.fire(ue,{index:i,action:`dragend`}),r.fire(`text:changed`,{target:n}),r.requestRenderAll()),n.exitEditing())}this.__dragImageDisposer&&this.__dragImageDisposer(),delete this.__dragImageDisposer,delete this.__dragStartSelection,this.__isDraggingOver=!1}dispose(){this._dispose&&this._dispose()}};let nc=/[ \n\.,;!\?\-]/;var rc=class extends Q{constructor(...e){super(...e),o(this,`_currentCursorOpacity`,1)}initBehavior(){this._tick=this._tick.bind(this),this._onTickComplete=this._onTickComplete.bind(this),this.updateSelectionOnMouseMove=this.updateSelectionOnMouseMove.bind(this)}onDeselect(e){return this.isEditing&&this.exitEditing(),this.selected=!1,super.onDeselect(e)}_animateCursor({toValue:e,duration:t,delay:n,onComplete:r}){return ui({startValue:this._currentCursorOpacity,endValue:e,duration:t,delay:n,onComplete:r,abort:()=>!this.canvas||this.selectionStart!==this.selectionEnd,onChange:e=>{this._currentCursorOpacity=e,this.renderCursorOrSelection()}})}_tick(e){this._currentTickState=this._animateCursor({toValue:0,duration:this.cursorDuration/2,delay:Math.max(e||0,100),onComplete:this._onTickComplete})}_onTickComplete(){var e;(e=this._currentTickCompleteState)==null||e.abort(),this._currentTickCompleteState=this._animateCursor({toValue:1,duration:this.cursorDuration,onComplete:this._tick})}initDelayedCursor(e){this.abortCursorAnimation(),this._tick(e?0:this.cursorDelay)}abortCursorAnimation(){let e=!1;[this._currentTickState,this._currentTickCompleteState].forEach(t=>{t&&!t.isDone()&&(e=!0,t.abort())}),this._currentCursorOpacity=1,e&&this.clearContextTop()}restartCursorIfNeeded(){[this._currentTickState,this._currentTickCompleteState].some(e=>!e||e.isDone())&&this.initDelayedCursor()}selectAll(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this}cmdAll(){this.selectAll(),this.renderCursorOrSelection()}getSelectedText(){return this._text.slice(this.selectionStart,this.selectionEnd).join(``)}findWordBoundaryLeft(e){let t=0,n=e-1;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n--;for(;/\S/.test(this._text[n])&&n>-1;)t++,n--;return e-t}findWordBoundaryRight(e){let t=0,n=e;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)t++,n++;for(;/\S/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t}findLineBoundaryLeft(e){let t=0,n=e-1;for(;!/\n/.test(this._text[n])&&n>-1;)t++,n--;return e-t}findLineBoundaryRight(e){let t=0,n=e;for(;!/\n/.test(this._text[n])&&n<this._text.length;)t++,n++;return e+t}searchWordBoundary(e,t){let n=this._text,r=e>0&&this._reSpace.test(n[e])&&(t===-1||!re.test(n[e-1]))?e-1:e,i=n[r];for(;r>0&&r<n.length&&!nc.test(i);)r+=t,i=n[r];return t===-1&&nc.test(i)&&r++,r}selectWord(e){var t;e=(t=e)==null?this.selectionStart:t;let n=this.searchWordBoundary(e,-1),r=Math.max(n,this.searchWordBoundary(e,1));this.selectionStart=n,this.selectionEnd=r,this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()}selectLine(e){var t;e=(t=e)==null?this.selectionStart:t;let n=this.findLineBoundaryLeft(e),r=this.findLineBoundaryRight(e);this.selectionStart=n,this.selectionEnd=r,this._fireSelectionChanged(),this._updateTextarea()}enterEditing(e){!this.isEditing&&this.editable&&(this.enterEditingImpl(),this.fire(`editing:entered`,e?{e}:void 0),this._fireSelectionChanged(),this.canvas&&(this.canvas.fire(`text:editing:entered`,{target:this,e}),this.canvas.requestRenderAll()))}enterEditingImpl(){this.canvas&&(this.canvas.calcOffset(),this.canvas.textEditingManager.exitTextEditing()),this.isEditing=!0,this.initHiddenTextarea(),this.hiddenTextarea.focus(),this.hiddenTextarea.value=this.text,this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._textBeforeEdit=this.text,this._tick()}updateSelectionOnMouseMove(e){if(this.getActiveControl())return;let t=this.hiddenTextarea;dt(t).activeElement!==t&&t.focus();let n=this.getSelectionStartFromPointer(e),r=this.selectionStart,i=this.selectionEnd;(n===this.__selectionStartOnMouseDown&&r!==i||r!==n&&i!==n)&&(n>this.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=n):(this.selectionStart=n,this.selectionEnd=this.__selectionStartOnMouseDown),(this.selectionStart!==r||this.selectionEnd!==i)&&(this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}_setEditingProps(){this.hoverCursor=`text`,this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor=`text`),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0}fromStringToGraphemeSelection(e,t,n){let r=n.slice(0,e),i=this.graphemeSplit(r).length;if(e===t)return{selectionStart:i,selectionEnd:i};let a=n.slice(e,t);return{selectionStart:i,selectionEnd:i+this.graphemeSplit(a).length}}fromGraphemeToStringSelection(e,t,n){let r=n.slice(0,e).join(``).length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+n.slice(e,t).join(``).length}}_updateTextarea(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){let e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}}updateFromTextArea(){let{hiddenTextarea:e,direction:t,textAlign:n,inCompositionMode:r}=this;if(!e)return;let i=n===`justify`?t===`ltr`?O:k:n.replace(`justify-`,``),a=this.getPositionByOrigin(i,`top`);this.cursorOffsetCache={},this.text=e.value,this.set(`dirty`,!0),this.initDimensions(),this.setPositionByOrigin(a,i,`top`),this.setCoords();let o=this.fromStringToGraphemeSelection(e.selectionStart,e.selectionEnd,e.value);this.selectionEnd=this.selectionStart=o.selectionEnd,r||(this.selectionStart=o.selectionStart),this.updateTextareaPosition()}updateTextareaPosition(){if(this.selectionStart===this.selectionEnd){let e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}}_calcTextareaPosition(){if(!this.canvas)return{left:`1px`,top:`1px`};let e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),n=this.get2DCursorLocation(e),r=n.lineIndex,i=n.charIndex,a=this.getValueOfPropertyAt(r,i,`fontSize`)*this.lineHeight,o=t.leftOffset,s=this.getCanvasRetinaScaling(),c=this.canvas.upperCanvasEl,l=c.width/s,u=c.height/s,d=l-a,f=u-a,p=new N(t.left+o,t.top+t.topOffset+a).transform(this.calcTransformMatrix()).transform(this.canvas.viewportTransform).multiply(new N(c.clientWidth/l,c.clientHeight/u));return p.x<0&&(p.x=0),p.x>d&&(p.x=d),p.y<0&&(p.y=0),p.y>f&&(p.y=f),p.x+=this.canvas._offset.left,p.y+=this.canvas._offset.top,{left:`${p.x}px`,top:`${p.y}px`,fontSize:`${a}px`,charHeight:a}}_saveEditingProps(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}}_restoreEditingProps(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor||this.canvas.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor||this.canvas.moveCursor),delete this._savedProps)}exitEditingImpl(){let e=this.hiddenTextarea;this.selected=!1,this.isEditing=!1,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this.selectionStart!==this.selectionEnd&&this.clearContextTop(),this.selectionEnd=this.selectionStart,this._restoreEditingProps(),this._forceClearCache&&(this.initDimensions(),this.setCoords())}exitEditing(){let e=this._textBeforeEdit!==this.text;return this.exitEditingImpl(),this.fire(`editing:exited`),e&&this.fire(`modified`),this.canvas&&(this.canvas.fire(`text:editing:exited`,{target:this}),e&&this.canvas.fire(`object:modified`,{target:this})),this}_removeExtraneousStyles(){for(let e in this.styles)this._textLines[e]||delete this.styles[e]}removeStyleFromTo(e,t){let{lineIndex:n,charIndex:r}=this.get2DCursorLocation(e,!0),{lineIndex:i,charIndex:a}=this.get2DCursorLocation(t,!0);if(n===i){if(this.styles[n]){let e=this.styles[n],t=a-r;for(let t=r;t<a;t++)delete e[t];for(let r in this.styles[n]){let n=parseInt(r,10);n>=a&&(e[n-t]=e[r],delete e[r])}}}else{if(this.styles[n])for(let e=r;e<this._unwrappedTextLines[n].length;e++)delete this.styles[n][e];if(this.styles[i])for(let e=a;e<this._unwrappedTextLines[i].length;e++){let t=this.styles[i][e];t&&(this.styles[n]||(this.styles[n]={}),this.styles[n][r+e-a]=t)}for(let e=n+1;e<=i;e++)delete this.styles[e];this.shiftLineStyles(i,n-i)}}shiftLineStyles(e,t){let n=Object.assign({},this.styles);for(let r in this.styles){let i=parseInt(r,10);i>e&&(this.styles[i+t]=n[i],n[i-t]||delete this.styles[i])}}insertNewlineStyleObject(e,t,n,r){let i={},a=this._unwrappedTextLines[e].length,o=a===t,s=!1;n||(n=1),this.shiftLineStyles(e,n);let c=this.styles[e]?this.styles[e][t===0?t:t-1]:void 0;for(let n in this.styles[e]){let r=parseInt(n,10);r>=t&&(s=!0,i[r-t]=this.styles[e][n],o&&t===0||delete this.styles[e][n])}let l=!1;for(s&&!o&&(this.styles[e+n]=i,l=!0),(l||a>t)&&n--;n>0;)r&&r[n-1]?this.styles[e+n]={0:{...r[n-1]}}:c?this.styles[e+n]={0:{...c}}:delete this.styles[e+n],n--;this._forceClearCache=!0}insertCharStyleObject(e,t,n,r){this.styles||(this.styles={});let i=this.styles[e],a=i?{...i}:{};n||(n=1);for(let e in a){let r=parseInt(e,10);r>=t&&(i[r+n]=a[r],a[r-n]||delete i[r])}if(this._forceClearCache=!0,r){for(;n--;)Object.keys(r[n]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+n]={...r[n]});return}if(!i)return;let o=i[t?t-1:1];for(;o&&n--;)this.styles[e][t+n]={...o}}insertNewStyleBlock(e,t,n){let r=this.get2DCursorLocation(t,!0),i=[0],a=0;for(let t=0;t<e.length;t++)e[t]===`
|
|
25
|
+
`?(a++,i[a]=0):i[a]++;i[0]>0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,i[0],n),n=n&&n.slice(i[0]+1)),a&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+i[0],a);let o=1;for(;o<a;o++)i[o]>0?this.insertCharStyleObject(r.lineIndex+o,0,i[o],n):n&&this.styles[r.lineIndex+o]&&n[0]&&(this.styles[r.lineIndex+o][0]=n[0]),n=n&&n.slice(i[o]+1);i[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,i[o],n)}removeChars(e,t=e+1){this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(``),this.set(`dirty`,!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}insertChars(e,t,n,r=n){r>n&&this.removeStyleFromTo(n,r);let i=this.graphemeSplit(e);this.insertNewStyleBlock(i,n,t),this._text=[...this._text.slice(0,n),...i,...this._text.slice(r)],this.text=this._text.join(``),this.set(`dirty`,!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}setSelectionStartEndWithShift(e,t,n){n<=e?(t===e?this._selectionDirection=O:this._selectionDirection===`right`&&(this._selectionDirection=O,this.selectionEnd=e),this.selectionStart=n):n>e&&n<t?this._selectionDirection===`right`?this.selectionEnd=n:this.selectionStart=n:(t===e?this._selectionDirection=k:this._selectionDirection===`left`&&(this._selectionDirection=k,this.selectionStart=t),this.selectionEnd=n)}},ic=class extends rc{initHiddenTextarea(){let e=this.canvas&&dt(this.canvas.getElement())||_(),t=e.createElement(`textarea`);Object.entries({autocapitalize:`off`,autocorrect:`off`,autocomplete:`off`,spellcheck:`false`,"data-fabric":`textarea`,wrap:`off`,name:`fabricTextarea`}).forEach(([e,n])=>t.setAttribute(e,n));let{top:n,left:r,fontSize:i}=this._calcTextareaPosition();t.style.cssText=`position: absolute; top: ${n}; left: ${r}; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: ${i};`,(this.hiddenTextareaContainer||e.body).appendChild(t),Object.entries({blur:`blur`,keydown:`onKeyDown`,keyup:`onKeyUp`,input:`onInput`,copy:`copy`,cut:`copy`,paste:`paste`,compositionstart:`onCompositionStart`,compositionupdate:`onCompositionUpdate`,compositionend:`onCompositionEnd`}).forEach(([e,n])=>t.addEventListener(e,this[n].bind(this))),this.hiddenTextarea=t}blur(){this.abortCursorAnimation()}onKeyDown(e){if(!this.isEditing)return;let t=this.direction===`rtl`?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else if(e.keyCode in this.ctrlKeysMapDown&&(e.ctrlKey||e.metaKey))this[this.ctrlKeysMapDown[e.keyCode]](e);else return;e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}onKeyUp(e){if(!this.isEditing||this._copyDone||this.inCompositionMode){this._copyDone=!1;return}if(e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey))this[this.ctrlKeysMapUp[e.keyCode]](e);else return;e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll()}onInput(e){let t=this.fromPaste,{value:n,selectionStart:r,selectionEnd:i}=this.hiddenTextarea;if(this.fromPaste=!1,e&&e.stopPropagation(),!this.isEditing)return;let a=()=>{this.updateFromTextArea(),this.fire(ue),this.canvas&&(this.canvas.fire(`text:changed`,{target:this}),this.canvas.requestRenderAll())};if(this.hiddenTextarea.value===``){this.styles={},a();return}let o=this._splitTextIntoLines(n).graphemeText,s=this._text.length,l=o.length,u=this.selectionStart,d=this.selectionEnd,f=u!==d,p,m,h=l-s,_,v,y=this.fromStringToGraphemeSelection(r,i,n),b=u>y.selectionStart;f?(m=this._text.slice(u,d),h+=d-u):l<s&&(m=b?this._text.slice(d+h,d):this._text.slice(u,u-h));let x=o.slice(y.selectionEnd-h,y.selectionEnd);if(m&&m.length&&(x.length&&(p=this.getSelectionStyles(u,u+1,!1),p=x.map(()=>p[0])),f?(_=u,v=d):b?(_=d-m.length,v=d):(_=d,v=d+m.length),this.removeStyleFromTo(_,v)),x.length){let{copyPasteData:e}=g();t&&x.join(``)===e.copiedText&&!c.disableStyleCopyPaste&&(p=e.copiedTextStyle),this.insertNewStyleBlock(x,u,p)}a()}onCompositionStart(){this.inCompositionMode=!0}onCompositionEnd(){this.inCompositionMode=!1}onCompositionUpdate({target:e}){let{selectionStart:t,selectionEnd:n}=e;this.compositionStart=t,this.compositionEnd=n,this.updateTextareaPosition()}copy(){if(this.selectionStart===this.selectionEnd)return;let{copyPasteData:e}=g();e.copiedText=this.getSelectedText(),e.copiedTextStyle=c.disableStyleCopyPaste?void 0:this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0}paste(){this.fromPaste=!0}_getWidthBeforeCursor(e,t){let n=this._getLineLeftOffset(e),r;return t>0&&(r=this.__charBounds[e][t-1],n+=r.left+r.width),n}getDownCursorOffset(e,t){let n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===this._textLines.length-1||e.metaKey||e.keyCode===34)return this._text.length-n;let a=r.charIndex,o=this._getWidthBeforeCursor(i,a),s=this._getIndexOnLine(i+1,o);return this._textLines[i].slice(a).length+s+1+this.missingNewlineOffset(i)}_getSelectionForOffset(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart}getUpCursorOffset(e,t){let n=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===0||e.metaKey||e.keyCode===33)return-n;let a=r.charIndex,o=this._getWidthBeforeCursor(i,a),s=this._getIndexOnLine(i-1,o),c=this._textLines[i].slice(0,a),l=this.missingNewlineOffset(i-1);return-this._textLines[i-1].length+s-c.length+(1-l)}_getIndexOnLine(e,t){let n=this._textLines[e],r=this._getLineLeftOffset(e),i=0,a,o;for(let s=0,c=n.length;s<c;s++)if(a=this.__charBounds[e][s].width,r+=a,r>t){o=!0;let e=r-a,n=r,c=Math.abs(e-t);i=Math.abs(n-t)<c?s:s-1;break}return o||(i=n.length-1),i}moveCursorDown(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown(`Down`,e)}moveCursorUp(e){(this.selectionStart!==0||this.selectionEnd!==0)&&this._moveCursorUpOrDown(`Up`,e)}_moveCursorUpOrDown(e,t){let n=this[`get${e}CursorOffset`](t,this._selectionDirection===k);if(t.shiftKey?this.moveCursorWithShift(n):this.moveCursorWithoutShift(n),n!==0){let e=this.text.length;this.selectionStart=_r(0,this.selectionStart,e),this.selectionEnd=_r(0,this.selectionEnd,e),this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea()}}moveCursorWithShift(e){let t=this._selectionDirection===`left`?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),e!==0}moveCursorWithoutShift(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),e!==0}moveCursorLeft(e){(this.selectionStart!==0||this.selectionEnd!==0)&&this._moveCursorLeftOrRight(`Left`,e)}_move(e,t,n){let r;if(e.altKey)r=this[`findWordBoundary${n}`](this[t]);else if(e.metaKey||e.keyCode===35||e.keyCode===36)r=this[`findLineBoundary${n}`](this[t]);else return this[t]+=n===`Left`?-1:1,!0;return r!==void 0&&this[t]!==r&&(this[t]=r,!0)}_moveLeft(e,t){return this._move(e,t,`Left`)}_moveRight(e,t){return this._move(e,t,`Right`)}moveCursorLeftWithoutShift(e){let t=!0;return this._selectionDirection=O,this.selectionEnd===this.selectionStart&&this.selectionStart!==0&&(t=this._moveLeft(e,`selectionStart`)),this.selectionEnd=this.selectionStart,t}moveCursorLeftWithShift(e){if(this._selectionDirection===`right`&&this.selectionStart!==this.selectionEnd)return this._moveLeft(e,`selectionEnd`);if(this.selectionStart!==0)return this._selectionDirection=O,this._moveLeft(e,`selectionStart`)}moveCursorRight(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight(`Right`,e)}_moveCursorLeftOrRight(e,t){let n=`moveCursor${e}${t.shiftKey?`WithShift`:`WithoutShift`}`;this._currentCursorOpacity=1,this[n](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())}moveCursorRightWithShift(e){if(this._selectionDirection===`left`&&this.selectionStart!==this.selectionEnd)return this._moveRight(e,`selectionStart`);if(this.selectionEnd!==this._text.length)return this._selectionDirection=k,this._moveRight(e,`selectionEnd`)}moveCursorRightWithoutShift(e){let t=!0;return this._selectionDirection=k,this.selectionStart===this.selectionEnd?(t=this._moveRight(e,`selectionStart`),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t}};let ac=e=>!!e.button;var oc=class extends ic{constructor(...e){super(...e),o(this,`draggableTextDelegate`,void 0)}initBehavior(){this.on(`mousedown`,this._mouseDownHandler),this.on(`mouseup`,this.mouseUpHandler),this.on(`mousedblclick`,this.doubleClickHandler),this.on(`mousetripleclick`,this.tripleClickHandler),this.draggableTextDelegate=new tc(this),super.initBehavior()}shouldStartDragging(){return this.draggableTextDelegate.isActive()}onDragStart(e){return this.draggableTextDelegate.onDragStart(e)}canDrop(e){return this.draggableTextDelegate.canDrop(e)}doubleClickHandler(e){this.isEditing&&(this.selectWord(this.getSelectionStartFromPointer(e.e)),this.renderCursorOrSelection())}tripleClickHandler(e){this.isEditing&&(this.selectLine(this.getSelectionStartFromPointer(e.e)),this.renderCursorOrSelection())}_mouseDownHandler({e,alreadySelected:t}){this.canvas&&this.editable&&!ac(e)&&!this.getActiveControl()&&(this.draggableTextDelegate.start(e)||(this.canvas.textEditingManager.register(this),t&&(this.inCompositionMode=!1,this.setCursorByClick(e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()),this.selected||(this.selected=t||this.isEditing)))}mouseUpHandler({e,transform:t}){let n=this.draggableTextDelegate.end(e);if(this.canvas){this.canvas.textEditingManager.unregister(this);let e=this.canvas._activeObject;if(e&&e!==this)return}!this.editable||this.group&&!this.group.interactive||t&&t.actionPerformed||ac(e)||n||this.selected&&!this.getActiveControl()&&(this.enterEditing(e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection())}setCursorByClick(e){let t=this.getSelectionStartFromPointer(e),n=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(n,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())}getSelectionStartFromPointer(e){let t=this.canvas.getScenePoint(e).transform(R(this.calcTransformMatrix())).add(new N(-this._getLeftOffset(),-this._getTopOffset())),n=0,r=0,i=0;for(let e=0;e<this._textLines.length&&n<=t.y;e++)n+=this.getHeightOfLine(e),i=e,e>0&&(r+=this._textLines[e-1].length+this.missingNewlineOffset(e-1));let a=this._textLines[i].length,o=this._getLineLeftOffset(i),s=this.__charBounds[i],c=this.direction===`rtl`,l=c?o-t.x:t.x,u=c?0:Math.abs(o);for(let e=0;e<a;e++){let t=s[e].kernedWidth,n=u+t;if(l<=n){Math.abs(l-n)<=Math.abs(l-u)&&r++;break}u=n,r++}return Math.min(this.flipX?a-r:r,this._text.length)}};let sc=`moveCursorUp`,cc=`moveCursorDown`,lc=`moveCursorLeft`,uc=`moveCursorRight`,dc=`exitEditing`,fc={9:dc,27:dc,33:sc,34:cc,35:uc,36:lc,37:lc,38:sc,39:uc,40:cc},pc={9:dc,27:dc,33:sc,34:cc,35:lc,36:uc,37:uc,38:sc,39:lc,40:cc},mc={67:`copy`,88:`cut`},hc={65:`cmdAll`},gc=(e,t)=>{let n=t.getRetinaScaling();e.setTransform(n,0,0,n,0,0);let r=t.viewportTransform;e.transform(r[0],r[1],r[2],r[3],r[4],r[5])},_c={selectionStart:0,selectionEnd:0,selectionColor:`rgba(17,119,255,0.3)`,isEditing:!1,editable:!0,editingBorderColor:`rgba(102,153,255,0.25)`,cursorWidth:2,cursorColor:``,cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,keysMap:fc,keysMapRtl:pc,ctrlKeysMapDown:hc,ctrlKeysMapUp:mc,_selectionDirection:null,_reSpace:/\s|\r?\n/,inCompositionMode:!1};var vc=class e extends oc{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}get type(){let e=super.type;return e===`itext`?`i-text`:e}constructor(t,n){super(t,{...e.ownDefaults,...n}),this.initBehavior()}_set(e,t){return this.isEditing&&this._savedProps&&e in this._savedProps?(this._savedProps[e]=t,this):(e===`canvas`&&(this.canvas instanceof is&&this.canvas.textEditingManager.remove(this),t instanceof is&&t.textEditingManager.add(this)),super._set(e,t))}setSelectionStart(e){e=Math.max(e,0),this._updateAndFire(`selectionStart`,e)}setSelectionEnd(e){e=Math.min(e,this.text.length),this._updateAndFire(`selectionEnd`,e)}_updateAndFire(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()}_fireSelectionChanged(){this.fire(`selection:changed`),this.canvas&&this.canvas.fire(`text:selection:changed`,{target:this})}initDimensions(){this.isEditing&&this.initDelayedCursor(),super.initDimensions()}getSelectionStyles(e=this.selectionStart||0,t=this.selectionEnd,n){return super.getSelectionStyles(e,t,n)}setSelectionStyles(e,t=this.selectionStart||0,n=this.selectionEnd){return super.setSelectionStyles(e,t,n)}get2DCursorLocation(e=this.selectionStart,t){return super.get2DCursorLocation(e,t)}render(e){super.render(e),this.cursorOffsetCache={},this.renderCursorOrSelection()}toCanvasElement(e){let t=this.isEditing;this.isEditing=!1;let n=super.toCanvasElement(e);return this.isEditing=t,n}renderCursorOrSelection(){if(!this.isEditing||!this.canvas)return;let e=this.clearContextTop(!0);if(!e)return;let t=this._getCursorBoundaries(),n=this.findAncestorsWithClipPath(),r=n.length>0,i=e,a;if(r){a=F(e.canvas),i=a.getContext(`2d`),gc(i,this.canvas);let t=this.calcTransformMatrix();i.transform(t[0],t[1],t[2],t[3],t[4],t[5])}if(this.selectionStart===this.selectionEnd&&!this.inCompositionMode?this.renderCursor(i,t):this.renderSelection(i,t),r)for(let t of n){let n=t.clipPath,r=F(e.canvas),a=r.getContext(`2d`);if(gc(a,this.canvas),!n.absolutePositioned){let e=t.calcTransformMatrix();a.transform(e[0],e[1],e[2],e[3],e[4],e[5])}n.transform(a),n.drawObject(a,!0,{}),this.drawClipPathOnCache(i,n,r)}r&&(e.setTransform(1,0,0,1,0,0),e.drawImage(a,0,0)),this.canvas.contextTopDirty=!0,e.restore()}findAncestorsWithClipPath(){let e=[],t=this;for(;t;)t.clipPath&&e.push(t),t=t.parent;return e}_getCursorBoundaries(e=this.selectionStart,t){let n=this._getLeftOffset(),r=this._getTopOffset(),i=this._getCursorBoundariesOffsets(e,t);return{left:n,top:r,leftOffset:i.left,topOffset:i.top}}_getCursorBoundariesOffsets(e,t){return t?this.__getCursorBoundariesOffsets(e):this.cursorOffsetCache&&`top`in this.cursorOffsetCache?this.cursorOffsetCache:this.cursorOffsetCache=this.__getCursorBoundariesOffsets(e)}__getCursorBoundariesOffsets(e){let t=0,n=0,{charIndex:r,lineIndex:i}=this.get2DCursorLocation(e),{textAlign:a,direction:o}=this;for(let e=0;e<i;e++)t+=this.getHeightOfLine(e);let s=this._getLineLeftOffset(i),c=this.__charBounds[i][r];c&&(n=c.left),this.charSpacing!==0&&r===this._textLines[i].length&&(n-=this._getWidthOfCharSpacing());let l=s+(n>0?n:0);return o===`rtl`&&(a===`right`||a===`justify`||a===`justify-right`?l*=-1:(a===`left`||a===`justify-left`||a===`center`||a===`justify-center`)&&(l=s-(n>0?n:0))),{top:t,left:l}}renderCursorAt(e){this._renderCursor(this.canvas.contextTop,this._getCursorBoundaries(e,!0),e)}renderCursor(e,t){this._renderCursor(e,t,this.selectionStart)}getCursorRenderingData(e=this.selectionStart,t=this._getCursorBoundaries(e)){let n=this.get2DCursorLocation(e),r=n.lineIndex,i=n.charIndex>0?n.charIndex-1:0,a=this.getValueOfPropertyAt(r,i,`fontSize`),o=this.getObjectScaling().x*this.canvas.getZoom(),s=this.cursorWidth/o,c=this.getValueOfPropertyAt(r,i,`deltaY`),l=t.topOffset+(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-a*(1-this._fontSizeFraction);return{color:this.cursorColor||this.getValueOfPropertyAt(r,i,`fill`),opacity:this._currentCursorOpacity,left:t.left+t.leftOffset-s/2,top:l+t.top+c,width:s,height:a}}_renderCursor(e,t,n){let{color:r,opacity:i,left:a,top:o,width:s,height:c}=this.getCursorRenderingData(n,t);e.fillStyle=r,e.globalAlpha=i,e.fillRect(a,o,s,c)}renderSelection(e,t){let n={selectionStart:this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,selectionEnd:this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd};this._renderSelection(e,n,t)}renderDragSourceEffect(){let e=this.draggableTextDelegate.getDragStartSelection();this._renderSelection(this.canvas.contextTop,e,this._getCursorBoundaries(e.selectionStart,!0))}renderDropTargetEffect(e){let t=this.getSelectionStartFromPointer(e);this.renderCursorAt(t)}_renderSelection(e,t,n){let{textAlign:r,direction:i}=this,a=t.selectionStart,o=t.selectionEnd,s=r.includes(Zn),c=this.get2DCursorLocation(a),l=this.get2DCursorLocation(o),u=c.lineIndex,d=l.lineIndex,f=c.charIndex<0?0:c.charIndex,p=l.charIndex<0?0:l.charIndex;for(let t=u;t<=d;t++){let a=this._getLineLeftOffset(t)||0,o=this.getHeightOfLine(t),c=0,l=0;if(t===u&&(c=this.__charBounds[u][f].left),t>=u&&t<d)l=s&&!this.isEndOfWrapping(t)?this.width:this.getLineWidth(t)||5;else if(t===d){if(p===0)l=this.__charBounds[d][p].left;else{let e=this._getWidthOfCharSpacing();l=this.__charBounds[d][p-1].left+this.__charBounds[d][p-1].width-e}}let m=o;(this.lineHeight<1||t===d&&this.lineHeight>1)&&(o/=this.lineHeight);let h=n.left+a+c,g=o,_=0,v=l-c;this.inCompositionMode?(e.fillStyle=this.compositionColor||`black`,g=1,_=o):e.fillStyle=this.selectionColor,i===`rtl`&&(r===`right`||r===`justify`||r===`justify-right`?h=this.width-h-v:(r===`left`||r===`justify-left`||r===`center`||r===`justify-center`)&&(h=n.left+a-l)),e.fillRect(h,n.top+n.topOffset+_,v,g),n.topOffset+=m}}getCurrentCharFontSize(){let e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,`fontSize`)}getCurrentCharColor(){let e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,j)}_getCurrentCharIndex(){let e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}dispose(){this.exitEditingImpl(),this.draggableTextDelegate.dispose(),super.dispose()}};o(vc,`ownDefaults`,_c),o(vc,`type`,`IText`),M.setClass(vc),M.setClass(vc,`i-text`);let yc={minWidth:20,dynamicMinWidth:2,lockScalingFlip:!0,noScaleCache:!1,_wordJoiners:/[ \t\r]/,splitByGrapheme:!1};var bc=class e extends vc{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(t,{...e.ownDefaults,...n})}static createControls(){return{controls:$i()}}initDimensions(){this.initialized&&(this.isEditing&&this.initDelayedCursor(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set(`width`,this.dynamicMinWidth),this.textAlign.includes(`justify`)&&this.enlargeSpaces(),this.height=this.calcTextHeight())}_generateStyleMap(e){let t=0,n=0,r=0,i={};for(let a=0;a<e.graphemeLines.length;a++)e.graphemeText[r]===`
|
|
26
|
+
`&&a>0?(n=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&a>0&&(n++,r++),i[a]={line:t,offset:n},r+=e.graphemeLines[a].length,n+=e.graphemeLines[a].length;return i}styleHas(e,t){if(t!==void 0&&this._styleMap&&!this.isWrapping){let e=this._styleMap[t];e&&(t=e.line)}return super.styleHas(e,t)}isEmptyStyles(e){if(e===void 0)return super.isEmptyStyles();if(!this.styles)return!0;let t=0,n,r,i=!1,a=this._styleMap[e],o=this._styleMap[e+1];a&&(e=a.line,t=a.offset),o&&(n=o.line,i=n===e,r=o.offset);let s=this.styles[e];for(let e in s){let n=parseInt(e,10);if(n>=t&&(!i||n<r))for(let t in s[e])return!1}return!0}_getStyleDeclaration(e,t){if(this._styleMap&&!this.isWrapping){let n=this._styleMap[e];if(!n)return{};e=n.line,t=n.offset+t}return super._getStyleDeclaration(e,t)}_setStyleDeclaration(e,t,n){let r=this._styleMap[e];super._setStyleDeclaration(r.line,r.offset+t,n)}_deleteStyleDeclaration(e,t){let n=this._styleMap[e];super._deleteStyleDeclaration(n.line,n.offset+t)}_getLineStyle(e){let t=this._styleMap[e];return!!this.styles[t.line]}_setLineStyle(e){let t=this._styleMap[e];super._setLineStyle(t.line)}_wrapText(e,t){this.isWrapping=!0;let n=this.getGraphemeDataForRender(e),r=[];for(let e=0;e<n.wordsData.length;e++)r.push(...this._wrapLine(e,t,n));return this.isWrapping=!1,r}getGraphemeDataForRender(e){let t=this.splitByGrapheme,n=t?``:` `,r=0;return{wordsData:e.map((e,i)=>{let a=0,o=t?this.graphemeSplit(e):this.wordSplit(e);return o.length===0?[{word:[],width:0}]:o.map(e=>{let o=t?[e]:this.graphemeSplit(e),s=this._measureWord(o,i,a);return r=Math.max(s,r),a+=o.length+n.length,{word:o,width:s}})}),largestWordWidth:r}}_measureWord(e,t,n=0){let r=0,i;for(let a=0,o=e.length;a<o;a++){let o=this._getGraphemeBox(e[a],t,a+n,i,!0);r+=o.kernedWidth,i=e[a]}return r}wordSplit(e){return e.split(this._wordJoiners)}_wrapLine(e,t,{largestWordWidth:n,wordsData:r},i=0){let a=this._getWidthOfCharSpacing(),o=this.splitByGrapheme,s=[],c=o?``:` `,l=0,u=[],d=0,f=0,p=!0;t-=i;let m=Math.max(t,n,this.dynamicMinWidth),h=r[e],g=0;for(;g<h.length;g++){let{word:t,width:n}=h[g];d+=t.length,l+=f+n-a,l>m&&!p?(s.push(u),u=[],l=n,p=!0):l+=a,!p&&!o&&u.push(c),u=u.concat(t),f=o?0:this._measureWord([c],e,d),d++,p=!1}return g&&s.push(u),n+i>this.dynamicMinWidth&&(this.dynamicMinWidth=n-a+i),s}isEndOfWrapping(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line}missingNewlineOffset(e,t){return this.splitByGrapheme&&!t?+!!this.isEndOfWrapping(e):1}_splitTextIntoLines(e){let t=super._splitTextIntoLines(e),n=this._wrapText(t.lines,this.width),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].join(``);return t.lines=r,t.graphemeLines=n,t}getMinWidth(){return Math.max(this.minWidth,this.dynamicMinWidth)}_removeExtraneousStyles(){let e=/* @__PURE__ */ new Map;for(let t in this._styleMap){let n=parseInt(t,10);if(this._textLines[n]){let n=this._styleMap[t].line;e.set(`${n}`,!0)}}for(let t in this.styles)e.has(t)||delete this.styles[t]}toObject(e=[]){return super.toObject([`minWidth`,`splitByGrapheme`,...e])}};o(bc,`type`,`Textbox`),o(bc,`textLayoutProperties`,[...vc.textLayoutProperties,`width`]),o(bc,`ownDefaults`,yc),M.setClass(bc);var xc=class extends Ia{shouldPerformLayout(e){return!!e.target.clipPath&&super.shouldPerformLayout(e)}shouldLayoutClipPath(){return!1}calcLayoutResult(e,t){let{target:n}=e,{clipPath:r,group:i}=n;if(!r||!this.shouldPerformLayout(e))return;let{width:a,height:o}=Mt(Fa(n,r)),s=new N(a,o);if(r.absolutePositioned)return{center:Bt(r.getRelativeCenterPoint(),void 0,i?i.calcTransformMatrix():void 0),size:s};{let i=r.getRelativeCenterPoint().transform(n.calcOwnMatrix(),!0);if(this.shouldPerformLayout(e)){let{center:n=new N,correction:r=new N}=this.calcBoundingBox(t,e)||{};return{center:n.add(i),correction:r.subtract(i),size:s}}return{center:n.getRelativeCenterPoint().add(i),size:s}}}};o(xc,`type`,`clip-path`),M.setClass(xc);var Sc=class extends Ia{getInitialSize({target:e},{size:t}){return new N(e.width||t.x,e.height||t.y)}};o(Sc,`type`,`fixed`),M.setClass(Sc);var Cc=class extends za{subscribeTargets(e){let t=e.target;e.targets.reduce((e,t)=>(t.parent&&e.add(t.parent),e),/* @__PURE__ */ new Set).forEach(e=>{e.layoutManager.subscribeTargets({target:e,targets:[t]})})}unsubscribeTargets(e){let t=e.target,n=t.getObjects();e.targets.reduce((e,t)=>(t.parent&&e.add(t.parent),e),/* @__PURE__ */ new Set).forEach(e=>{!n.some(t=>t.parent===e)&&e.layoutManager.unsubscribeTargets({target:e,targets:[t]})})}};let wc={multiSelectionStacking:`canvas-stacking`};var Tc=class e extends Ha{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t=[],n={}){super(),Object.assign(this,e.ownDefaults),this.setOptions(n);let{left:r,top:i,layoutManager:a}=n;this.groupInit(t,{left:r,top:i,layoutManager:a==null?new Cc:a})}_shouldSetNestedCoords(){return!0}__objectSelectionMonitor(){}multiSelectAdd(...e){this.multiSelectionStacking===`selection-order`?this.add(...e):e.forEach(e=>{let t=this._objects.findIndex(t=>t.isInFrontOf(e)),n=t===-1?this.size():t;this.insertAt(n,e)})}canEnterGroup(e){return this.getObjects().some(t=>t.isDescendantOf(e)||e.isDescendantOf(t))?(l(`error`,`ActiveSelection: circular object trees are not supported, this call has no effect`),!1):super.canEnterGroup(e)}enterGroup(e,t){e.parent&&e.parent===e.group?e.parent._exitGroup(e):e.group&&e.parent!==e.group&&e.group.remove(e),this._enterGroup(e,t)}exitGroup(e,t){this._exitGroup(e,t),e.parent&&e.parent._enterGroup(e,!0)}_onAfterObjectsChange(e,t){super._onAfterObjectsChange(e,t);let n=/* @__PURE__ */ new Set;t.forEach(e=>{let{parent:t}=e;t&&n.add(t)}),e===`removed`?n.forEach(e=>{e._onAfterObjectsChange(Pa,t)}):n.forEach(e=>{e._set(`dirty`,!0)})}onDeselect(){return this.removeAll(),!1}toString(){return`#<ActiveSelection: (${this.complexity()})>`}shouldCache(){return!1}isOnACache(){return!1}_renderControls(e,t,n){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;let r={hasControls:!1,...n,forActiveSelection:!0};for(let t=0;t<this._objects.length;t++)this._objects[t]._renderControls(e,r);super._renderControls(e,t),e.restore()}};o(Tc,`type`,`ActiveSelection`),o(Tc,`ownDefaults`,wc),M.setClass(Tc),M.setClass(Tc,`activeSelection`);var Ec=class{constructor(){o(this,`resources`,{})}applyFilters(e,t,n,r,i){let a=i.getContext(`2d`,{willReadFrequently:!0,desynchronized:!0});if(!a)return;a.drawImage(t,0,0,n,r);let o={sourceWidth:n,sourceHeight:r,imageData:a.getImageData(0,0,n,r),originalEl:t,originalImageData:a.getImageData(0,0,n,r),canvasEl:i,ctx:a,filterBackend:this};e.forEach(e=>{e.applyTo(o)});let{imageData:s}=o;return(s.width!==n||s.height!==r)&&(i.width=s.width,i.height=s.height),a.putImageData(s,0,0),o}},Dc=class{constructor({tileSize:e=c.textureSize}={}){o(this,`aPosition`,new Float32Array([0,0,0,1,1,0,1,1])),o(this,`resources`,{}),this.tileSize=e,this.setupGLContext(e,e),this.captureGPUInfo()}setupGLContext(e,t){this.dispose(),this.createWebGLCanvas(e,t)}createWebGLCanvas(e,t){let n=F({width:e,height:t}),r=n.getContext(`webgl`,{alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1});r&&(r.clearColor(0,0,0,0),this.canvas=n,this.gl=r)}applyFilters(e,t,n,r,i,a){let o=this.gl,s=i.getContext(`2d`);if(!o||!s)return;let c;a&&(c=this.getCachedTexture(a,t));let l={originalWidth:t.width||t.naturalWidth||0,originalHeight:t.height||t.naturalHeight||0,sourceWidth:n,sourceHeight:r,destinationWidth:n,destinationHeight:r,context:o,sourceTexture:this.createTexture(o,n,r,c?void 0:t),targetTexture:this.createTexture(o,n,r),originalTexture:c||this.createTexture(o,n,r,c?void 0:t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:i},u=o.createFramebuffer();return o.bindFramebuffer(o.FRAMEBUFFER,u),e.forEach(e=>{e&&e.applyTo(l)}),Oc(l),this.copyGLTo2D(o,l),o.bindTexture(o.TEXTURE_2D,null),o.deleteTexture(l.sourceTexture),o.deleteTexture(l.targetTexture),o.deleteFramebuffer(u),s.setTransform(1,0,0,1,0,0),l}dispose(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()}clearWebGLCaches(){this.programCache={},this.textureCache={}}createTexture(e,t,n,r,i){let{NEAREST:a,TEXTURE_2D:o,RGBA:s,UNSIGNED_BYTE:c,CLAMP_TO_EDGE:l,TEXTURE_MAG_FILTER:u,TEXTURE_MIN_FILTER:d,TEXTURE_WRAP_S:f,TEXTURE_WRAP_T:p}=e,m=e.createTexture();return e.bindTexture(o,m),e.texParameteri(o,u,i||a),e.texParameteri(o,d,i||a),e.texParameteri(o,f,l),e.texParameteri(o,p,l),r?e.texImage2D(o,0,s,s,c,r):e.texImage2D(o,0,s,t,n,0,s,c,null),m}getCachedTexture(e,t,n){let{textureCache:r}=this;if(r[e])return r[e];{let i=this.createTexture(this.gl,t.width,t.height,t,n);return i&&(r[e]=i),i}}evictCachesForKey(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])}copyGLTo2D(e,t){let n=e.canvas,r=t.targetCanvas,i=r.getContext(`2d`);if(!i)return;i.translate(0,r.height),i.scale(1,-1);let a=n.height-r.height;i.drawImage(n,0,a,r.width,r.height,0,0,r.width,r.height)}copyGLTo2DPutImageData(e,t){let n=t.targetCanvas.getContext(`2d`),r=t.destinationWidth,i=t.destinationHeight,a=r*i*4;if(!n)return;let o=new Uint8Array(this.imageBuffer,0,a),s=new Uint8ClampedArray(this.imageBuffer,0,a);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,o);let c=new ImageData(s,r,i);n.putImageData(c,0,0)}captureGPUInfo(){if(this.gpuInfo)return this.gpuInfo;let e=this.gl,t={renderer:``,vendor:``};if(!e)return t;let n=e.getExtension(`WEBGL_debug_renderer_info`);if(n){let r=e.getParameter(n.UNMASKED_RENDERER_WEBGL),i=e.getParameter(n.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),i&&(t.vendor=i.toLowerCase())}return this.gpuInfo=t,t}};function Oc(e){let t=e.targetCanvas,n=t.width,r=t.height,i=e.destinationWidth,a=e.destinationHeight;(n!==i||r!==a)&&(t.width=i,t.height=a)}let kc;function Ac(){let{WebGLProbe:e}=g();return e.queryWebGL(P()),c.enableGLFiltering&&e.isSupported(c.textureSize)?new Dc({tileSize:c.textureSize}):new Ec}function jc(e=!0){return!kc&&e&&(kc=Ac()),kc}function Mc(e){kc=e}let Nc={strokeWidth:0,srcFromAttribute:!1,minimumScaleTrigger:.5,cropX:0,cropY:0,imageSmoothing:!0},Pc=[`cropX`,`cropY`];var Fc=class e extends J{static getDefaults(){return{...super.getDefaults(),...e.ownDefaults}}constructor(t,n){super(),o(this,`_lastScaleX`,1),o(this,`_lastScaleY`,1),o(this,`_filterScalingX`,1),o(this,`_filterScalingY`,1),this.filters=[],Object.assign(this,e.ownDefaults),this.setOptions(n),this.cacheKey=`texture${Me()}`,this.setElement(typeof t==`string`?(this.canvas&&dt(this.canvas.getElement())||_()).getElementById(t):t,n)}getElement(){return this._element}setElement(e,t={}){this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._element=e,this._originalElement=e,this._setWidthHeight(t),this.filters.length!==0&&this.applyFilters(),this.resizeFilter&&this.applyResizeFilters()}removeTexture(e){let t=jc(!1);t instanceof Dc&&t.evictCachesForKey(e)}dispose(){super.dispose(),this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._cacheContext=null,[`_originalElement`,`_element`,`_filteredEl`,`_cacheCanvas`].forEach(e=>{let t=this[e];t&&g().dispose(t),this[e]=void 0})}getCrossOrigin(){return this._originalElement&&(this._originalElement.crossOrigin||null)}getOriginalSize(){let e=this.getElement();return e?{width:`naturalWidth`in e&&e.naturalWidth||e.width,height:`naturalHeight`in e&&e.naturalHeight||e.height}:{width:0,height:0}}_stroke(e){if(!this.stroke||this.strokeWidth===0)return;let t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,-n),e.lineTo(t,-n),e.lineTo(t,n),e.lineTo(-t,n),e.lineTo(-t,-n),e.closePath()}toObject(e=[]){let t=[];return this.filters.forEach(e=>{e&&t.push(e.toObject())}),{...super.toObject([...Pc,...e]),src:this.getSrc(),crossOrigin:this.getCrossOrigin(),filters:t,...this.resizeFilter?{resizeFilter:this.resizeFilter.toObject()}:{}}}hasCrop(){return!!this.cropX||!!this.cropY||this.width<this._element.width||this.height<this._element.height}_toSVG(){let e=[],t=this._element,n=-this.width/2,r=-this.height/2,i=[],a=[],o=``,s=``;if(!t)return[];if(this.hasCrop()){let e=Me();i.push(`<clipPath id="imageCrop_`+e+`">
|
|
27
|
+
`,` <rect x="`+n+`" y="`+r+`" width="`+H(this.width)+`" height="`+H(this.height)+`" />
|
|
29
28
|
`,`</clipPath>
|
|
30
|
-
`),o=` clip-path="url(#imageCrop_`+e+`)" `}if(this.imageSmoothing||(s=` image-rendering="optimizeSpeed"`),e.push(` <image `,`COMMON_PARTS`,`xlink:href="${U(this.getSrc(!0))}" x="${n-this.cropX}" y="${r-this.cropY}" width="${t.width||t.naturalWidth}" height="${t.height||t.naturalHeight}"${s}${o}></image>\n`),this.stroke||this.strokeDashArray){let e=this.fill;this.fill=null,a=[`\t<rect x="${n}" y="${r}" width="${U(this.width)}" height="${U(this.height)}" style="${this.getSvgStyles()}" />\n`],this.fill=e}return i=this.paintFirst===`fill`?i.concat(e,a):i.concat(a,e),i}getSrc(e){let t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute(`src`)||``:t.src:this.src||``}getSvgSrc(e){return this.getSrc(e)}setSrc(e,{crossOrigin:t,signal:n}={}){return Ze(e,{crossOrigin:t,signal:n}).then(e=>{t!==void 0&&this.set({crossOrigin:t}),this.setElement(e)})}toString(){return`#<Image: { src: "${this.getSrc()}" }>`}applyResizeFilters(){let e=this.resizeFilter,t=this.minimumScaleTrigger,n=this.getTotalObjectScaling(),r=n.x,i=n.y,a=this._filteredEl||this._originalElement;if(this.group&&this.set(`dirty`,!0),!e||r>t&&i>t)return this._element=a,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=i);let o=F(a),{width:s,height:c}=a;this._element=o,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=i,vs().applyFilters([e],a,s,c,this._element),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height}applyFilters(e=this.filters||[]){if(e=e.filter(e=>e&&!e.isNeutralState()),this.set(`dirty`,!0),this.removeTexture(`${this.cacheKey}_filtered`),e.length===0)return this._element=this._originalElement,this._filteredEl=void 0,this._filterScalingX=1,void(this._filterScalingY=1);let t=this._originalElement,n=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){let e=F({width:n,height:r});this._element=e,this._filteredEl=e}else this._filteredEl&&(this._element=this._filteredEl,this._filteredEl.getContext(`2d`).clearRect(0,0,n,r),this._lastScaleX=1,this._lastScaleY=1);vs().applyFilters(e,this._originalElement,n,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height)}_render(e){e.imageSmoothingEnabled=this.imageSmoothing,!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)}drawCacheOnCanvas(e){e.imageSmoothingEnabled=this.imageSmoothing,super.drawCacheOnCanvas(e)}shouldCache(){return this.needsItsOwnCache()}_renderFill(e){let t=this._element;if(!t)return;let n=this._filterScalingX,r=this._filterScalingY,i=this.width,a=this.height,o=Math.max(this.cropX,0),s=Math.max(this.cropY,0),c=t.naturalWidth||t.width,l=t.naturalHeight||t.height,u=o*n,d=s*r,f=Math.min(i*n,c-u),p=Math.min(a*r,l-d),m=-i/2,h=-a/2,g=Math.min(i,c/n-o),_=Math.min(a,l/r-s);t&&e.drawImage(t,u,d,f,p,m,h,g,_)}_needsResize(){let e=this.getTotalObjectScaling();return e.x!==this._lastScaleX||e.y!==this._lastScaleY}_resetWidthHeight(){this.set(this.getOriginalSize())}_setWidthHeight({width:e,height:t}={}){let n=this.getOriginalSize();this.width=e||n.width,this.height=t||n.height}parsePreserveAspectRatioAttribute(){let e=mn(this.preserveAspectRatio||``),t=this.width,n=this.height,r={width:t,height:n},i,a=this._element.width,o=this._element.height,s=1,c=1,l=0,u=0,d=0,f=0;return!e||e.alignX===`none`&&e.alignY===`none`?(s=t/a,c=n/o):(e.meetOrSlice===`meet`&&(s=c=ua(this._element,r),i=(t-a*s)/2,e.alignX===`Min`&&(l=-i),e.alignX===`Max`&&(l=i),i=(n-o*c)/2,e.alignY===`Min`&&(u=-i),e.alignY===`Max`&&(u=i)),e.meetOrSlice===`slice`&&(s=c=da(this._element,r),i=a-t/s,e.alignX===`Mid`&&(d=i/2),e.alignX===`Max`&&(d=i),i=o-n/c,e.alignY===`Mid`&&(f=i/2),e.alignY===`Max`&&(f=i),a=t/s,o=n/c)),{width:a,height:o,scaleX:s,scaleY:c,offsetLeft:l,offsetTop:u,cropX:d,cropY:f}}static fromObject({filters:e,resizeFilter:t,src:n,crossOrigin:r,type:i,...a},o){return Promise.all([Ze(n,{...o,crossOrigin:r}),e&&Qe(e,o),t?Qe([t],o):[],$e(a,o)]).then(([e,t=[],[r],i={}])=>new this(e,{...a,src:n,filters:t,resizeFilter:r,...i}))}static fromURL(e,{crossOrigin:t=null,signal:n}={},r){return Ze(e,{crossOrigin:t,signal:n}).then(e=>new this(e,r))}static async fromElement(e,t={},n){let r=Zi(e,this.ATTRIBUTE_NAMES,n);return this.fromURL(r[`xlink:href`]||r.href,t,r).catch(e=>(c(`log`,`Unable to parse Image`,e),null))}};function xs(e){if(!Fn.test(e.nodeName))return{};let t=e.getAttribute(`viewBox`),n,r,i=1,a=1,o=e.getAttribute(`width`),s=e.getAttribute(`height`),c=e.getAttribute(`x`)||0,l=e.getAttribute(`y`)||0,u=!(t&&Ln.test(t)),d=!o||!s||o===`100%`||s===`100%`,f=``,p=0,m=0;if(u&&(c||l)&&e.parentNode&&e.parentNode.nodeName!==`#document`&&(f=` translate(`+K(c||`0`)+` `+K(l||`0`)+`) `,n=(e.getAttribute(`transform`)||``)+f,e.setAttribute(`transform`,n),e.removeAttribute(`x`),e.removeAttribute(`y`)),u&&d)return{width:0,height:0};let h={width:0,height:0};if(u)return h.width=K(o),h.height=K(s),h;let g=t.match(Ln),_=-parseFloat(g[1]),v=-parseFloat(g[2]),y=parseFloat(g[3]),b=parseFloat(g[4]);h.minX=_,h.minY=v,h.viewBoxWidth=y,h.viewBoxHeight=b,d?(h.width=y,h.height=b):(h.width=K(o),h.height=K(s),i=h.width/y,a=h.height/b);let x=mn(e.getAttribute(`preserveAspectRatio`)||``);if(x.alignX!==`none`&&(x.meetOrSlice===`meet`&&(a=i=i>a?a:i),x.meetOrSlice===`slice`&&(a=i=i>a?i:a),p=h.width-y*i,m=h.height-b*i,x.alignX===`Mid`&&(p/=2),x.alignY===`Mid`&&(m/=2),x.alignX===`Min`&&(p=0),x.alignY===`Min`&&(m=0)),i===1&&a===1&&_===0&&v===0&&c===0&&l===0)return h;if((c||l)&&e.parentNode.nodeName!==`#document`&&(f=` translate(`+K(c||`0`)+` `+K(l||`0`)+`) `),n=f+` matrix(`+i+` 0 0 `+a+` `+(_*i+p)+` `+(v*a+m)+`) `,e.nodeName===`svg`){for(r=e.ownerDocument.createElementNS(kn,`g`);e.firstChild;)r.appendChild(e.firstChild);e.appendChild(r)}else r=e,r.removeAttribute(`x`),r.removeAttribute(`y`),n=r.getAttribute(`transform`)+n;return r.setAttribute(`transform`,n),h}a(bs,`type`,`Image`),a(bs,`cacheProperties`,[...Un,...ys]),a(bs,`ownDefaults`,{strokeWidth:0,srcFromAttribute:!1,minimumScaleTrigger:.5,cropX:0,cropY:0,imageSmoothing:!0}),a(bs,`ATTRIBUTE_NAMES`,[...ki,`x`,`y`,`width`,`height`,`preserveAspectRatio`,`xlink:href`,`href`,`crossOrigin`,`image-rendering`]),M.setClass(bs),M.setSVGClass(bs);let Ss=e=>e.tagName.replace(`svg:`,``),Cs=_n([`pattern`,`defs`,`symbol`,`metadata`,`clipPath`,`mask`,`desc`]);function ws(e,t){let n,r,i,a,o=[];for(i=0,a=t.length;i<a;i++)n=t[i],r=e.getElementsByTagNameNS(`http://www.w3.org/2000/svg`,n),o=o.concat(Array.from(r));return o}let Ts=[`gradientTransform`,`x1`,`x2`,`y1`,`y2`,`gradientUnits`,`cx`,`cy`,`r`,`fx`,`fy`],Es=`xlink:href`;function Ds(e,t){var n;let r=((n=t.getAttribute(Es))==null?void 0:n.slice(1))||``,i=e.getElementById(r);if(i&&i.getAttribute(Es)&&Ds(e,i),i&&(Ts.forEach(e=>{let n=i.getAttribute(e);!t.hasAttribute(e)&&n&&t.setAttribute(e,n)}),!t.children.length)){let e=i.cloneNode(!0);for(;e.firstChild;)t.appendChild(e.firstChild)}t.removeAttribute(Es)}let Os=[`linearGradient`,`radialGradient`,`svg:linearGradient`,`svg:radialGradient`],ks=e=>M.getSVGClass(Ss(e).toLowerCase());var As=class{constructor(e,t,n,r,i){this.elements=e,this.options=t,this.reviver=n,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=r,this.clipPaths=i,this.gradientDefs=function(e){let t=ws(e,Os),n={},r=t.length;for(;r--;){let i=t[r];i.getAttribute(`xlink:href`)&&Ds(e,i);let a=i.getAttribute(`id`);a&&(n[a]=i)}return n}(r),this.cssRules=function(e){let t=e.getElementsByTagName(`style`),n={};for(let e=0;e<t.length;e++){let r=(t[e].textContent||``).replace(/\/\*[\s\S]*?\*\//g,``);r.trim()!==``&&r.split(`}`).filter((e,t,n)=>n.length>1&&e.trim()).forEach(e=>{if((e.match(/{/g)||[]).length>1&&e.trim().startsWith(`@`))return;let t=e.split(`{`),r={},i=t[1].trim().split(`;`).filter(function(e){return e.trim()});for(let e=0;e<i.length;e++){let t=i[e].split(`:`),n=t[0].trim();r[n]=t[1].trim()}(e=t[0].trim()).split(`,`).forEach(e=>{(e=e.replace(/^svg/i,``).trim())!==``&&(n[e]={...n[e]||{},...r})})})}return n}(r)}parse(){return Promise.all(this.elements.map(e=>this.createObject(e)))}async createObject(e){let t=ks(e);if(t){let n=await t.fromElement(e,this.options,this.cssRules);return this.resolveGradient(n,e,j),this.resolveGradient(n,e,he),n instanceof bs&&n._originalElement?Wa(n,n.parsePreserveAspectRatioAttribute()):Wa(n),await this.resolveClipPath(n,e),this.reviver&&this.reviver(e,n),n}return null}extractPropertyDefinition(e,t,n){let r=e[t],i=this.regexUrl;if(!i.test(r))return;i.lastIndex=0;let a=i.exec(r)[1];return i.lastIndex=0,n[a]}resolveGradient(e,t,n){let r=this.extractPropertyDefinition(e,n,this.gradientDefs);if(r){let i=t.getAttribute(n+`-opacity`),a=ko.fromElement(r,e,{...this.options,opacity:i});e.set(n,a)}}async resolveClipPath(e,t,n){let r=this.extractPropertyDefinition(e,`clipPath`,this.clipPaths);if(r){let i=R(e.calcTransformMatrix()),a=r[0].parentElement,o=t;for(;!n&&o.parentElement&&o.getAttribute(`clip-path`)!==e.clipPath;)o=o.parentElement;o.parentElement.appendChild(a);let s=Ki(`${o.getAttribute(`transform`)||``} ${a.getAttribute(`originalTransform`)||``}`);a.setAttribute(`transform`,`matrix(${s.join(`,`)})`);let c=await Promise.all(r.map(e=>ks(e).fromElement(e,this.options,this.cssRules).then(e=>(Wa(e),e.fillRule=e.clipRule,delete e.clipRule,e)))),l=c.length===1?c[0]:new ca(c),u=z(i,l.calcTransformMatrix());l.clipPath&&await this.resolveClipPath(l,o,a.getAttribute(`clip-path`)?o:void 0);let{scaleX:d,scaleY:f,angle:p,skewX:m,translateX:h,translateY:g}=He(u);l.set({flipX:!1,flipY:!1}),l.set({scaleX:d,scaleY:f,angle:p,skewX:m,skewY:0}),l.setPositionByOrigin(new N(h,g),E,E),e.clipPath=l}else delete e.clipPath}};let js=e=>Pn.test(Ss(e));async function Ms(e,t,{crossOrigin:n,signal:r}={}){if(r&&r.aborted)return c(`log`,new u(`parseSVGDocument`)),{objects:[],elements:[],options:{},allElements:[]};let i=e.documentElement;(function(e){let t=ws(e,[`use`,`svg:use`]),n=[`x`,`y`,`xlink:href`,`href`,`transform`];for(let r of t){let t=r.attributes,i={};for(let e of t)e.value&&(i[e.name]=e.value);let a=(i[`xlink:href`]||i.href||``).slice(1);if(a===``)return;let o=e.getElementById(a);if(o===null)return;let s=o.cloneNode(!0),c=s.attributes,l={};for(let e of c)e.value&&(l[e.name]=e.value);let{x:u=0,y:d=0,transform:f=``}=i,p=`${f} ${l.transform||``} translate(${u}, ${d})`;if(xs(s),/^svg$/i.test(s.nodeName)){let e=s.ownerDocument.createElementNS(kn,`g`);Object.entries(l).forEach(([t,n])=>e.setAttributeNS(kn,t,n)),e.append(...s.childNodes),s=e}for(let e of t){if(!e)continue;let{name:t,value:r}=e;if(!n.includes(t))if(t===`style`){let e={};Ji(r,e),Object.entries(l).forEach(([t,n])=>{e[t]=n}),Ji(l.style||``,e);let n=Object.entries(e).map(e=>e.join(`:`)).join(`;`);s.setAttribute(t,n)}else !l[t]&&s.setAttribute(t,r)}s.setAttribute(`transform`,p),s.setAttribute(`instantiated_by_use`,`1`),s.removeAttribute(`id`),r.parentNode.replaceChild(s,r)}})(e);let a=Array.from(i.getElementsByTagName(`*`)),o={...xs(i),crossOrigin:n,signal:r},s=a.filter(e=>(xs(e),js(e)&&!function(e){let t=e;for(;t&&(t=t.parentElement);)if(t&&t.nodeName&&Cs.test(Ss(t))&&!t.getAttribute(`instantiated_by_use`))return!0;return!1}(e)));if(!s||s&&!s.length)return{objects:[],elements:[],options:{},allElements:[],options:o,allElements:a};let l={};return a.filter(e=>Ss(e)===`clipPath`).forEach(e=>{e.setAttribute(`originalTransform`,e.getAttribute(`transform`)||``);let t=e.getAttribute(`id`);l[t]=Array.from(e.getElementsByTagName(`*`)).filter(e=>js(e))}),{objects:await new As(s,o,t,e,l).parse(),elements:s,options:o,allElements:a}}function Ns(e,t,n){return Ms(new(_()).DOMParser().parseFromString(e.trim(),`text/xml`),t,n)}let Ps=e=>e.webgl!==void 0,Fs=`precision highp float`,Is=`\n ${Fs};\n varying vec2 vTexCoord;\n uniform sampler2D uTexture;\n void main() {\n gl_FragColor = texture2D(uTexture, vTexCoord);\n }`,Ls=new RegExp(Fs,`g`);var $=class{get type(){return this.constructor.type}constructor({type:e,...t}={}){Object.assign(this,this.constructor.defaults,t)}getFragmentSource(){return Is}getVertexSource(){return`
|
|
29
|
+
`),o=` clip-path="url(#imageCrop_`+e+`)" `}if(this.imageSmoothing||(s=` image-rendering="optimizeSpeed"`),e.push(` <image `,`COMMON_PARTS`,`xlink:href="${H(this.getSrc(!0))}" x="${n-this.cropX}" y="${r-this.cropY}" width="${t.width||t.naturalWidth}" height="${t.height||t.naturalHeight}"${s}${o}></image>\n`),this.stroke||this.strokeDashArray){let e=this.fill;this.fill=null,a=[`\t<rect x="${n}" y="${r}" width="${H(this.width)}" height="${H(this.height)}" style="${this.getSvgStyles()}" />\n`],this.fill=e}return i=this.paintFirst===`fill`?i.concat(e,a):i.concat(a,e),i}getSrc(e){let t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute(`src`)||``:t.src:this.src||``}getSvgSrc(e){return this.getSrc(e)}setSrc(e,t={}){let{crossOrigin:n}=t;return $e(e,t).then(e=>{n!==void 0&&this.set({crossOrigin:n}),this.setElement(e)})}toString(){return`#<Image: { src: "${this.getSrc()}" }>`}applyResizeFilters(){let e=this.resizeFilter,t=this.minimumScaleTrigger,n=this.getTotalObjectScaling(),r=n.x,i=n.y,a=this._filteredEl||this._originalElement;if(this.group&&this.set(`dirty`,!0),!e||r>t&&i>t){this._element=a,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,this._lastScaleY=i;return}let o=F(a),{width:s,height:c}=a;this._element=o,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=i,jc().applyFilters([e],a,s,c,this._element),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height}applyFilters(e=this.filters||[]){if(e=e.filter(e=>e&&!e.isNeutralState()),this.set(`dirty`,!0),this.removeTexture(`${this.cacheKey}_filtered`),e.length===0){this._element=this._originalElement,this._filteredEl=void 0,this._filterScalingX=1,this._filterScalingY=1;return}let t=this._originalElement,n=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){let e=F({width:n,height:r});this._element=e,this._filteredEl=e}else this._filteredEl&&(this._element=this._filteredEl,this._filteredEl.getContext(`2d`).clearRect(0,0,n,r),this._lastScaleX=1,this._lastScaleY=1);jc().applyFilters(e,this._originalElement,n,r,this._element,this.cacheKey),(this._originalElement.width!==this._element.width||this._originalElement.height!==this._element.height)&&(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height)}_render(e){e.imageSmoothingEnabled=this.imageSmoothing,this.isMoving!==!0&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)}drawCacheOnCanvas(e){e.imageSmoothingEnabled=this.imageSmoothing,super.drawCacheOnCanvas(e)}shouldCache(){return this.needsItsOwnCache()}_renderFill(e){let t=this._element;if(!t)return;let n=this._filterScalingX,r=this._filterScalingY,i=this.width,a=this.height,o=Math.max(this.cropX,0),s=Math.max(this.cropY,0),c=t.naturalWidth||t.width,l=t.naturalHeight||t.height,u=o*n,d=s*r,f=Math.min(i*n,c-u),p=Math.min(a*r,l-d),m=-i/2,h=-a/2,g=Math.min(i,c/n-o),_=Math.min(a,l/r-s);t&&e.drawImage(t,u,d,f,p,m,h,g,_)}_needsResize(){let e=this.getTotalObjectScaling();return e.x!==this._lastScaleX||e.y!==this._lastScaleY}_resetWidthHeight(){this.set(this.getOriginalSize())}_setWidthHeight({width:e,height:t}={}){let n=this.getOriginalSize();this.width=e||n.width,this.height=t||n.height}parsePreserveAspectRatioAttribute(){let e=Rn(this.preserveAspectRatio||``),t=this.width,n=this.height,r={width:t,height:n},i=this._element.width,a=this._element.height,o=1,s=1,c=0,l=0,u=0,d=0,f;return e&&(e.alignX!==`none`||e.alignY!==`none`)?(e.meetOrSlice===`meet`&&(o=s=Wa(this._element,r),f=(t-i*o)/2,e.alignX===`Min`&&(c=-f),e.alignX===`Max`&&(c=f),f=(n-a*s)/2,e.alignY===`Min`&&(l=-f),e.alignY===`Max`&&(l=f)),e.meetOrSlice===`slice`&&(o=s=Ga(this._element,r),f=i-t/o,e.alignX===`Mid`&&(u=f/2),e.alignX===`Max`&&(u=f),f=a-n/s,e.alignY===`Mid`&&(d=f/2),e.alignY===`Max`&&(d=f),i=t/o,a=n/s)):(o=t/i,s=n/a),{width:i,height:a,scaleX:o,scaleY:s,offsetLeft:c,offsetTop:l,cropX:u,cropY:d}}static fromObject({filters:e,resizeFilter:t,src:n,crossOrigin:r,type:i,...a},o){return Promise.all([$e(n,{...o,crossOrigin:r}),e&&et(e,o),t?et([t],o):[],tt(a,o)]).then(([e,t=[],[r],i={}])=>new this(e,{...a,src:n,filters:t,resizeFilter:r,...i}))}static fromURL(e,t={},n){let{crossOrigin:r=null}=t;return $e(e,{...t,crossOrigin:r}).then(e=>new this(e,n))}static async fromElement(e,t={},n){let r=ka(e,this.ATTRIBUTE_NAMES,n);return this.fromURL(r[`xlink:href`]||r.href,t,r).catch(e=>(l(`log`,`Unable to parse Image`,e),null))}};o(Fc,`type`,`Image`),o(Fc,`cacheProperties`,[...yr,...Pc]),o(Fc,`ownDefaults`,Nc),o(Fc,`ATTRIBUTE_NAMES`,[...na,`x`,`y`,`width`,`height`,`preserveAspectRatio`,`xlink:href`,`href`,`crossOrigin`,`image-rendering`]),M.setClass(Fc),M.setSVGClass(Fc);function Ic(e){if(!ur.test(e.nodeName))return{};let t=e.getAttribute(`viewBox`),n=1,r=1,i,a,o=e.getAttribute(`width`),s=e.getAttribute(`height`),c=e.getAttribute(`x`)||0,l=e.getAttribute(`y`)||0,u=!(t&&fr.test(t)),d=!o||!s||o===`100%`||s===`100%`,f=``,p=0,m=0;if(u&&(c||l)&&e.parentNode&&e.parentNode.nodeName!==`#document`&&(f=` translate(`+K(c||`0`)+` `+K(l||`0`)+`) `,i=(e.getAttribute(`transform`)||``)+f,e.setAttribute(`transform`,i),e.removeAttribute(`x`),e.removeAttribute(`y`)),u&&d)return{width:0,height:0};let h={width:0,height:0};if(u)return h.width=K(o),h.height=K(s),h;let g=t.match(fr),_=-parseFloat(g[1]),v=-parseFloat(g[2]),y=parseFloat(g[3]),b=parseFloat(g[4]);h.minX=_,h.minY=v,h.viewBoxWidth=y,h.viewBoxHeight=b,d?(h.width=y,h.height=b):(h.width=K(o),h.height=K(s),n=h.width/y,r=h.height/b);let x=Rn(e.getAttribute(`preserveAspectRatio`)||``);if(x.alignX!==`none`&&(x.meetOrSlice===`meet`&&(r=n=n>r?r:n),x.meetOrSlice===`slice`&&(r=n=n>r?n:r),p=h.width-y*n,m=h.height-b*n,x.alignX===`Mid`&&(p/=2),x.alignY===`Mid`&&(m/=2),x.alignX===`Min`&&(p=0),x.alignY===`Min`&&(m=0)),n===1&&r===1&&_===0&&v===0&&c===0&&l===0)return h;if((c||l)&&e.parentNode.nodeName!==`#document`&&(f=` translate(`+K(c||`0`)+` `+K(l||`0`)+`) `),i=f+` matrix(`+n+` 0 0 `+r+` `+(_*n+p)+` `+(v*r+m)+`) `,e.nodeName===`svg`){for(a=e.ownerDocument.createElementNS(er,`g`);e.firstChild;)a.appendChild(e.firstChild);e.appendChild(a)}else a=e,a.removeAttribute(`x`),a.removeAttribute(`y`),i=a.getAttribute(`transform`)+i;return a.setAttribute(`transform`,i),h}let Lc=e=>e.tagName.replace(`svg:`,``),Rc=Hn(ir);function zc(e){let t=e;for(;t&&(t=t.parentElement);)if(t&&t.nodeName&&Rc.test(Lc(t))&&!t.getAttribute(`instantiated_by_use`))return!0;return!1}function Bc(e,t){let n,r=[],i,a,o;for(a=0,o=t.length;a<o;a++)n=t[a],i=e.getElementsByTagNameNS(`http://www.w3.org/2000/svg`,n),r=r.concat(Array.from(i));return r}function Vc(e){let t=Bc(e,[`use`,`svg:use`]),n=[`x`,`y`,`xlink:href`,`href`,`transform`];for(let r of t){let t=r.attributes,i={};for(let e of t)e.value&&(i[e.name]=e.value);let a=(i[`xlink:href`]||i.href||``).slice(1);if(a===``)return;let o=e.getElementById(a);if(o===null)return;let s=o.cloneNode(!0),c=s.attributes,l={};for(let e of c)e.value&&(l[e.name]=e.value);let{x:u=0,y:d=0,transform:f=``}=i,p=`${f} ${l.transform||``} translate(${u}, ${d})`;if(Ic(s),/^svg$/i.test(s.nodeName)){let e=s.ownerDocument.createElementNS(er,`g`);Object.entries(l).forEach(([t,n])=>e.setAttributeNS(er,t,n)),e.append(...s.childNodes),s=e}for(let e of t){if(!e)continue;let{name:t,value:r}=e;if(!n.includes(t)){if(t===`style`){let e={};Ta(r,e),Object.entries(l).forEach(([t,n])=>{e[t]=n}),Ta(l.style||``,e);let n=Object.entries(e).map(e=>e.join(`:`)).join(`;`);s.setAttribute(t,n)}else!l[t]&&s.setAttribute(t,r)}}s.setAttribute(`transform`,p),s.setAttribute(`instantiated_by_use`,`1`),s.removeAttribute(`id`),r.parentNode.replaceChild(s,r)}}let Hc=[`gradientTransform`,`x1`,`x2`,`y1`,`y2`,`gradientUnits`,`cx`,`cy`,`r`,`fx`,`fy`],Uc=`xlink:href`,Wc=`href`,Gc=e=>e.getAttribute(Wc)||e.getAttribute(Uc);function Kc(e,t){var n;let r=((n=Gc(t))==null?void 0:n.slice(1))||``,i=e.getElementById(r);if(i&&Gc(i)&&Kc(e,i),i&&(Hc.forEach(e=>{let n=i.getAttribute(e);!t.hasAttribute(e)&&n&&t.setAttribute(e,n)}),!t.children.length)){let e=i.cloneNode(!0);for(;e.firstChild;)t.appendChild(e.firstChild)}t.removeAttribute(Uc),t.removeAttribute(Wc)}let qc=[`linearGradient`,`radialGradient`,`svg:linearGradient`,`svg:radialGradient`];function Jc(e){let t=Bc(e,qc),n={},r=t.length;for(;r--;){let i=t[r];Gc(i)&&Kc(e,i);let a=i.getAttribute(`id`);a&&(n[a]=i)}return n}function Yc(e){let t=e.getElementsByTagName(`style`),n={};for(let e=0;e<t.length;e++){let r=(t[e].textContent||``).replace(/\/\*[\s\S]*?\*\//g,``);r.trim()!==``&&r.split(`}`).filter((e,t,n)=>n.length>1&&e.trim()).forEach(e=>{if((e.match(/{/g)||[]).length>1&&e.trim().startsWith(`@`))return;let t=e.split(`{`),r={},i=t[1].trim().split(`;`).filter(function(e){return e.trim()});for(let e=0;e<i.length;e++){let t=i[e].split(`:`),n=t[0].trim();r[n]=t[1].trim()}e=t[0].trim(),e.split(`,`).forEach(e=>{e=e.replace(/^svg/i,``).trim(),e!==``&&(n[e]={...n[e]||{},...r})})})}return n}let Xc=e=>M.getSVGClass(Lc(e).toLowerCase());var Zc=class{constructor(e,t,n,r,i){this.elements=e,this.options=t,this.reviver=n,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=r,this.clipPaths=i,this.gradientDefs=Jc(r),this.cssRules=Yc(r)}parse(){return Promise.all(this.elements.map(e=>this.createObject(e)))}async createObject(e){let t=Xc(e);if(t){let n=await t.fromElement(e,this.options,this.cssRules);return this.resolveGradient(n,e,j),this.resolveGradient(n,e,ge),n instanceof Fc&&n._originalElement?jo(n,n.parsePreserveAspectRatioAttribute()):jo(n),await this.resolveClipPath(n,e),this.reviver&&this.reviver(e,n),n}return null}extractPropertyDefinition(e,t,n){let r=e[t];if(typeof r!=`string`)return;let i=this.regexUrl;if(!i.test(r))return;i.lastIndex=0;let a=i.exec(r)[1];return i.lastIndex=0,n[a]?{def:n[a],id:a}:void 0}resolveGradient(e,t,n){let r=this.extractPropertyDefinition(e,n,this.gradientDefs);if(r){let i=t.getAttribute(n+`-opacity`),a=xs.fromElement(r.def,e,{...this.options,opacity:i});e.set(n,a)}}async resolveClipPath(e,t,n,r=/* @__PURE__ */ new Set){if(typeof e.clipPath!=`string`)return;let i=this.extractPropertyDefinition(e,`clipPath`,this.clipPaths);if(i&&!r.has(i.id)){let s=i.def,c=R(e.calcTransformMatrix()),l=s[0].parentElement,u=t;for(;!n&&u.parentElement&&u.getAttribute(`clip-path`)!==e.clipPath;)u=u.parentElement;u.parentElement.appendChild(l);let d=xa(`${u.getAttribute(`transform`)||``} ${l.getAttribute(`originalTransform`)||``}`);l.setAttribute(`transform`,`matrix(${d.join(`,`)})`);let f=new Set(r);f.add(i.id);let p=await Promise.all(s.map(async e=>{let t=await Xc(e).fromElement(e,this.options,this.cssRules);return jo(t),t.fillRule=t.clipRule,delete t.clipRule,await this.resolveClipPath(t,e,void 0,f),t})),m=p.length===1?p[0]:new Ha(p),h=z(c,m.calcTransformMatrix()),g=u.parentElement;for(;g&&g.getAttribute(`clip-path`)!==e.clipPath;)g=g.parentElement;if(g&&!m.clipPath&&(m.clipPath=e.clipPath),m.clipPath){var a,o;await this.resolveClipPath(m,(a=g)==null?u:a,(o=g)==null?l.getAttribute(`clip-path`)?u:void 0:o,g?r:f)}let{scaleX:_,scaleY:v,angle:y,skewX:b,translateX:x,translateY:S}=We(h);m.set({flipX:!1,flipY:!1}),m.set({scaleX:_,scaleY:v,angle:y,skewX:b,skewY:0}),m.setPositionByOrigin(new N(x,S),D,D),e.clipPath=m}else{delete e.clipPath;return}}};let Qc=e=>lr.test(Lc(e)),$c=()=>({objects:[],elements:[],options:{},allElements:[]});async function el(e,t,{crossOrigin:n,signal:r}={}){if(r&&r.aborted)return l(`log`,new d(`parseSVGDocument`)),$c();let i=e.documentElement;Vc(e);let a=Array.from(i.getElementsByTagName(`*`)),o={...Ic(i),crossOrigin:n,signal:r},s=a.filter(e=>(Ic(e),Qc(e)&&!zc(e)));if(!s||s&&!s.length)return{...$c(),options:o,allElements:a};let c={};return a.filter(e=>Lc(e)===`clipPath`).forEach(e=>{e.setAttribute(`originalTransform`,e.getAttribute(`transform`)||``);let t=e.getAttribute(`id`);c[t]=Array.from(e.getElementsByTagName(`*`)).filter(e=>Qc(e))}),{objects:await new Zc(s,o,t,e,c).parse(),elements:s,options:o,allElements:a}}function tl(e,t,n){return el(new(v()).DOMParser().parseFromString(e.trim(),`text/xml`),t,n)}function nl(e,t,n={}){return fetch(e.replace(/^\n\s*/,``).trim(),{signal:n.signal}).then(e=>{if(!e.ok)throw new u(`HTTP error! status: ${e.status}`);return e.text()}).then(e=>tl(e,t,n)).catch(()=>$c())}let rl=e=>e.webgl!==void 0,il=(e,t)=>{let n=F({width:e,height:t}),r=P().getContext(`webgl`),i={imageBuffer:/* @__PURE__ */ new ArrayBuffer(e*t*4)},a={destinationWidth:e,destinationHeight:t,targetCanvas:n},o;o=v().performance.now(),Dc.prototype.copyGLTo2D.call(i,r,a);let s=v().performance.now()-o;return o=v().performance.now(),Dc.prototype.copyGLTo2DPutImageData.call(i,r,a),s>v().performance.now()-o},al=`precision highp float`,ol=`
|
|
30
|
+
${al};
|
|
31
|
+
varying vec2 vTexCoord;
|
|
32
|
+
uniform sampler2D uTexture;
|
|
33
|
+
void main() {
|
|
34
|
+
gl_FragColor = texture2D(uTexture, vTexCoord);
|
|
35
|
+
}`,sl=RegExp(al,`g`);var $=class{get type(){return this.constructor.type}constructor({type:e,...t}={}){Object.assign(this,this.constructor.defaults,t)}getFragmentSource(){return ol}getVertexSource(){return`
|
|
31
36
|
attribute vec2 aPosition;
|
|
32
37
|
varying vec2 vTexCoord;
|
|
33
38
|
void main() {
|
|
34
39
|
vTexCoord = aPosition;
|
|
35
40
|
gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);
|
|
36
|
-
}`}createProgram(e,t=this.getFragmentSource(),n=this.getVertexSource()){let{WebGLProbe:{GLPrecision:r=`highp`}}=
|
|
41
|
+
}`}createProgram(e,t=this.getFragmentSource(),n=this.getVertexSource()){let{WebGLProbe:{GLPrecision:r=`highp`}}=g();r!==`highp`&&(t=t.replace(sl,al.replace(`highp`,r)));let i=e.createShader(e.VERTEX_SHADER),a=e.createShader(e.FRAGMENT_SHADER),o=e.createProgram();if(!i||!a||!o)throw new u(`Vertex, fragment shader or program creation error`);if(e.shaderSource(i,n),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))throw new u(`Vertex shader compile error for ${this.type}: ${e.getShaderInfoLog(i)}`);if(e.shaderSource(a,t),e.compileShader(a),!e.getShaderParameter(a,e.COMPILE_STATUS))throw new u(`Fragment shader compile error for ${this.type}: ${e.getShaderInfoLog(a)}`);if(e.attachShader(o,i),e.attachShader(o,a),e.linkProgram(o),!e.getProgramParameter(o,e.LINK_STATUS))throw new u(`Shader link error for "${this.type}" ${e.getProgramInfoLog(o)}`);let s=this.getUniformLocations(e,o)||{};return s.uStepW=e.getUniformLocation(o,`uStepW`),s.uStepH=e.getUniformLocation(o,`uStepH`),{program:o,attributeLocations:this.getAttributeLocations(e,o),uniformLocations:s}}getAttributeLocations(e,t){return{aPosition:e.getAttribLocation(t,`aPosition`)}}getUniformLocations(e,t){let n=this.constructor.uniformLocations,r={};for(let i=0;i<n.length;i++)r[n[i]]=e.getUniformLocation(t,n[i]);return r}sendAttributeData(e,t,n){let r=t.aPosition,i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,n,e.STATIC_DRAW)}_setupFrameBuffer(e){let t=e.context;if(e.passes>1){let n=e.destinationWidth,r=e.destinationHeight;(e.sourceWidth!==n||e.sourceHeight!==r)&&(t.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(t,n,r)),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e.targetTexture,0)}else t.bindFramebuffer(t.FRAMEBUFFER,null),t.finish()}_swapTextures(e){e.passes--,e.pass++;let t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t}isNeutralState(e){return!1}applyTo(e){rl(e)?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)}applyTo2d(e){}getCacheKey(){return this.type}retrieveShader(e){let t=this.getCacheKey();return e.programCache[t]||(e.programCache[t]=this.createProgram(e.context)),e.programCache[t]}applyToWebGL(e){let t=e.context,n=this.retrieveShader(e);e.pass===0&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(n.program),this.sendAttributeData(t,n.attributeLocations,e.aPosition),t.uniform1f(n.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(n.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,n.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)}bindAdditionalTexture(e,t,n){e.activeTexture(n),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)}unbindAdditionalTexture(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)}sendUniformData(e,t){}createHelpLayer(e){if(!e.helpLayer){let{sourceWidth:t,sourceHeight:n}=e;e.helpLayer=F({width:t,height:n})}}toObject(){let e=Object.keys(this.constructor.defaults||{});return{type:this.type,...e.reduce((e,t)=>(e[t]=this[t],e),{})}}toJSON(){return this.toObject()}static async fromObject({type:e,...t},n){return new this(t)}};o($,`type`,`BaseFilter`),o($,`uniformLocations`,[]);let cl={multiply:`gl_FragColor.rgb *= uColor.rgb;
|
|
37
42
|
`,screen:`gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);
|
|
38
43
|
`,add:`gl_FragColor.rgb += uColor.rgb;
|
|
39
44
|
`,difference:`gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);
|
|
@@ -60,7 +65,19 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
60
65
|
`,tint:`
|
|
61
66
|
gl_FragColor.rgb *= (1.0 - uColor.a);
|
|
62
67
|
gl_FragColor.rgb += uColor.rgb;
|
|
63
|
-
`};var
|
|
68
|
+
`},ll={color:`#F95C63`,mode:`multiply`,alpha:1};var ul=class extends ${getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return`
|
|
69
|
+
precision highp float;
|
|
70
|
+
uniform sampler2D uTexture;
|
|
71
|
+
uniform vec4 uColor;
|
|
72
|
+
varying vec2 vTexCoord;
|
|
73
|
+
void main() {
|
|
74
|
+
vec4 color = texture2D(uTexture, vTexCoord);
|
|
75
|
+
gl_FragColor = color;
|
|
76
|
+
if (color.a > 0.0) {
|
|
77
|
+
${cl[this.mode]}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
`}applyTo2d({imageData:{data:e}}){let t=new G(this.color).getSource(),n=this.alpha,r=t[0]*n,i=t[1]*n,a=t[2]*n,o=1-n;for(let t=0;t<e.length;t+=4){let n=e[t],s=e[t+1],c=e[t+2],l,u,d;switch(this.mode){case`multiply`:l=n*r/255,u=s*i/255,d=c*a/255;break;case`screen`:l=255-(255-n)*(255-r)/255,u=255-(255-s)*(255-i)/255,d=255-(255-c)*(255-a)/255;break;case`add`:l=n+r,u=s+i,d=c+a;break;case`difference`:l=Math.abs(n-r),u=Math.abs(s-i),d=Math.abs(c-a);break;case`subtract`:l=n-r,u=s-i,d=c-a;break;case`darken`:l=Math.min(n,r),u=Math.min(s,i),d=Math.min(c,a);break;case`lighten`:l=Math.max(n,r),u=Math.max(s,i),d=Math.max(c,a);break;case`overlay`:l=r<128?2*n*r/255:255-2*(255-n)*(255-r)/255,u=i<128?2*s*i/255:255-2*(255-s)*(255-i)/255,d=a<128?2*c*a/255:255-2*(255-c)*(255-a)/255;break;case`exclusion`:l=r+n-2*r*n/255,u=i+s-2*i*s/255,d=a+c-2*a*c/255;break;case`tint`:l=r+n*o,u=i+s*o,d=a+c*o}e[t]=l,e[t+1]=u,e[t+2]=d}}sendUniformData(e,t){let n=new G(this.color).getSource();n[0]=this.alpha*n[0]/255,n[1]=this.alpha*n[1]/255,n[2]=this.alpha*n[2]/255,n[3]=this.alpha,e.uniform4fv(t.uColor,n)}};o(ul,`defaults`,ll),o(ul,`type`,`BlendColor`),o(ul,`uniformLocations`,[`uColor`]),M.setClass(ul);let dl={multiply:`
|
|
64
81
|
precision highp float;
|
|
65
82
|
uniform sampler2D uTexture;
|
|
66
83
|
uniform sampler2D uImage;
|
|
@@ -86,7 +103,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
86
103
|
color.a = color2.a;
|
|
87
104
|
gl_FragColor = color;
|
|
88
105
|
}
|
|
89
|
-
`};var
|
|
106
|
+
`},fl={mode:`multiply`,alpha:1};var pl=class extends ${getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return dl[this.mode]}getVertexSource(){return`
|
|
90
107
|
attribute vec2 aPosition;
|
|
91
108
|
varying vec2 vTexCoord;
|
|
92
109
|
varying vec2 vTexCoord2;
|
|
@@ -96,7 +113,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
96
113
|
vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;
|
|
97
114
|
gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);
|
|
98
115
|
}
|
|
99
|
-
`}applyToWebGL(e){let t=e.context,n=this.createTexture(e.filterBackend,this.image);this.bindAdditionalTexture(t,n,t.TEXTURE1),super.applyToWebGL(e),this.unbindAdditionalTexture(t,t.TEXTURE1)}createTexture(e,t){return e.getCachedTexture(t.cacheKey,t.getElement())}calculateMatrix(){let e=this.image,{width:t,height:n}=e.getElement();return[1/e.scaleX,0,0,0,1/e.scaleY,0,-e.left/t,-e.top/n,1]}applyTo2d({imageData:{data:e,width:t,height:n},filterBackend:{resources:r}}){let i=this.image;r.blendImage||(r.blendImage=P());let a=r.blendImage,o=a.getContext(`2d`);a.width!==t||a.height!==n?(a.width=t,a.height=n):o.clearRect(0,0,t,n),o.setTransform(i.scaleX,0,0,i.scaleY,i.left,i.top),o.drawImage(i.getElement(),0,0,t,n);let s=o.getImageData(0,0,t,n).data;for(let t=0;t<e.length;t+=4){let n=e[t],r=e[t+1],i=e[t+2],a=e[t+3],o=s[t],c=s[t+1],l=s[t+2],u=s[t+3];switch(this.mode){case`multiply`:e[t]=n*o/255,e[t+1]=r*c/255,e[t+2]=i*l/255,e[t+3]=a*u/255;break;case`mask`:e[t+3]=u}}}sendUniformData(e,t){let n=this.calculateMatrix();e.uniform1i(t.uImage,1),e.uniformMatrix3fv(t.uTransformMatrix,!1,n)}toObject(){return{...super.toObject(),image:this.image&&this.image.toObject()}}static async fromObject({type:e,image:t,...n},r){return
|
|
116
|
+
`}applyToWebGL(e){let t=e.context,n=this.createTexture(e.filterBackend,this.image);this.bindAdditionalTexture(t,n,t.TEXTURE1),super.applyToWebGL(e),this.unbindAdditionalTexture(t,t.TEXTURE1)}createTexture(e,t){return e.getCachedTexture(t.cacheKey,t.getElement())}calculateMatrix(){let e=this.image,{width:t,height:n}=e.getElement();return[1/e.scaleX,0,0,0,1/e.scaleY,0,-e.left/t,-e.top/n,1]}applyTo2d({imageData:{data:e,width:t,height:n},filterBackend:{resources:r}}){let i=this.image;r.blendImage||(r.blendImage=P());let a=r.blendImage,o=a.getContext(`2d`);a.width!==t||a.height!==n?(a.width=t,a.height=n):o.clearRect(0,0,t,n),o.setTransform(i.scaleX,0,0,i.scaleY,i.left,i.top),o.drawImage(i.getElement(),0,0,t,n);let s=o.getImageData(0,0,t,n).data;for(let t=0;t<e.length;t+=4){let n=e[t],r=e[t+1],i=e[t+2],a=e[t+3],o=s[t],c=s[t+1],l=s[t+2],u=s[t+3];switch(this.mode){case`multiply`:e[t]=n*o/255,e[t+1]=r*c/255,e[t+2]=i*l/255,e[t+3]=a*u/255;break;case`mask`:e[t+3]=u}}}sendUniformData(e,t){let n=this.calculateMatrix();e.uniform1i(t.uImage,1),e.uniformMatrix3fv(t.uTransformMatrix,!1,n)}toObject(){return{...super.toObject(),image:this.image&&this.image.toObject()}}static async fromObject({type:e,image:t,...n},r){return Fc.fromObject(t,r).then(e=>new this({...n,image:e}))}};o(pl,`type`,`BlendImage`),o(pl,`defaults`,fl),o(pl,`uniformLocations`,[`uTransformMatrix`,`uImage`]),M.setClass(pl);let ml={blur:0};var hl=class extends ${getFragmentSource(){return`
|
|
100
117
|
precision highp float;
|
|
101
118
|
uniform sampler2D uTexture;
|
|
102
119
|
uniform vec2 uDelta;
|
|
@@ -125,7 +142,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
125
142
|
gl_FragColor.rgb = color.rgb / totalC;
|
|
126
143
|
gl_FragColor.a = color.a / totalA;
|
|
127
144
|
}
|
|
128
|
-
`}applyTo(e){
|
|
145
|
+
`}applyTo(e){rl(e)?(this.aspectRatio=e.sourceWidth/e.sourceHeight,e.passes++,this._setupFrameBuffer(e),this.horizontal=!0,this.applyToWebGL(e),this._swapTextures(e),this._setupFrameBuffer(e),this.horizontal=!1,this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)}applyTo2d({imageData:{data:e,width:t,height:n}}){this.aspectRatio=t/n,this.horizontal=!0;let r=this.getBlurValue()*t,i=new Uint8ClampedArray(e),a=4*t;for(let t=0;t<e.length;t+=4){let n=0,o=0,s=0,c=0,l=0,u=t-t%a,d=u+a;for(let i=-14;i<15;i++){let a=i/15,f=Math.floor(r*a)*4,p=1-Math.abs(a),m=t+f;m<u?m=u:m>d&&(m=d);let h=e[m+3]*p;n+=e[m]*h,o+=e[m+1]*h,s+=e[m+2]*h,c+=h,l+=p}i[t]=n/c,i[t+1]=o/c,i[t+2]=s/c,i[t+3]=c/l}this.horizontal=!1,r=this.getBlurValue()*n;for(let t=0;t<i.length;t+=4){let n=0,o=0,s=0,c=0,l=0,u=t%a,d=i.length-a+u;for(let e=-14;e<15;e++){let f=e/15,p=Math.floor(r*f)*a,m=1-Math.abs(f),h=t+p;h<u?h=u:h>d&&(h=d);let g=i[h+3]*m;n+=i[h]*g,o+=i[h+1]*g,s+=i[h+2]*g,c+=g,l+=m}e[t]=n/c,e[t+1]=o/c,e[t+2]=s/c,e[t+3]=c/l}}sendUniformData(e,t){let n=this.chooseRightDelta();e.uniform2fv(t.uDelta,n)}isNeutralState(){return this.blur===0}getBlurValue(){let e=1,{horizontal:t,aspectRatio:n}=this;return t?n>1&&(e=1/n):n<1&&(e=n),e*this.blur*.12}chooseRightDelta(){let e=this.getBlurValue();return this.horizontal?[e,0]:[0,e]}};o(hl,`type`,`Blur`),o(hl,`defaults`,ml),o(hl,`uniformLocations`,[`uDelta`]),M.setClass(hl);let gl={brightness:0};var _l=class extends ${getFragmentSource(){return`
|
|
129
146
|
precision highp float;
|
|
130
147
|
uniform sampler2D uTexture;
|
|
131
148
|
uniform float uBrightness;
|
|
@@ -135,7 +152,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
135
152
|
color.rgb += uBrightness;
|
|
136
153
|
gl_FragColor = color;
|
|
137
154
|
}
|
|
138
|
-
`}applyTo2d({imageData:{data:e}}){let t=Math.round(
|
|
155
|
+
`}applyTo2d({imageData:{data:e}}){let t=Math.round(this.brightness*255);for(let n=0;n<e.length;n+=4)e[n]+=t,e[n+1]+=t,e[n+2]+=t}isNeutralState(){return this.brightness===0}sendUniformData(e,t){e.uniform1f(t.uBrightness,this.brightness)}};o(_l,`type`,`Brightness`),o(_l,`defaults`,gl),o(_l,`uniformLocations`,[`uBrightness`]),M.setClass(_l);let vl={matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],colorsOnly:!0};var yl=class extends ${getFragmentSource(){return`
|
|
139
156
|
precision highp float;
|
|
140
157
|
uniform sampler2D uTexture;
|
|
141
158
|
varying vec2 vTexCoord;
|
|
@@ -146,7 +163,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
146
163
|
color *= uColorMatrix;
|
|
147
164
|
color += uConstants;
|
|
148
165
|
gl_FragColor = color;
|
|
149
|
-
}`}applyTo2d(e){let t=e.imageData.data,n=this.matrix,r=this.colorsOnly;for(let e=0;e<t.length;e+=4){let i=t[e],a=t[e+1],o=t[e+2];if(t[e]=i*n[0]+a*n[1]+o*n[2]+
|
|
166
|
+
}`}applyTo2d(e){let t=e.imageData.data,n=this.matrix,r=this.colorsOnly;for(let e=0;e<t.length;e+=4){let i=t[e],a=t[e+1],o=t[e+2];if(t[e]=i*n[0]+a*n[1]+o*n[2]+n[4]*255,t[e+1]=i*n[5]+a*n[6]+o*n[7]+n[9]*255,t[e+2]=i*n[10]+a*n[11]+o*n[12]+n[14]*255,!r){let r=t[e+3];t[e]+=r*n[3],t[e+1]+=r*n[8],t[e+2]+=r*n[13],t[e+3]=i*n[15]+a*n[16]+o*n[17]+r*n[18]+n[19]*255}}}sendUniformData(e,t){let n=this.matrix,r=[n[0],n[1],n[2],n[3],n[5],n[6],n[7],n[8],n[10],n[11],n[12],n[13],n[15],n[16],n[17],n[18]],i=[n[4],n[9],n[14],n[19]];e.uniformMatrix4fv(t.uColorMatrix,!1,r),e.uniform4fv(t.uConstants,i)}toObject(){return{...super.toObject(),matrix:[...this.matrix]}}};o(yl,`type`,`ColorMatrix`),o(yl,`defaults`,vl),o(yl,`uniformLocations`,[`uColorMatrix`,`uConstants`]),M.setClass(yl);function bl(e,t){var n=class extends yl{toObject(){return{type:this.type,colorsOnly:this.colorsOnly}}};let r=(o(n,`type`,e),o(n,`defaults`,{colorsOnly:!1,matrix:t}),n);return M.setClass(r,e),r}let xl=bl(`Brownie`,[.5997,.34553,-.27082,0,.186,-.0377,.86095,.15059,0,-.1449,.24113,-.07441,.44972,0,-.02965,0,0,0,1,0]),Sl=bl(`Vintage`,[.62793,.32021,-.03965,0,.03784,.02578,.64411,.03259,0,.02926,.0466,-.08512,.52416,0,.02023,0,0,0,1,0]),Cl=bl(`Kodachrome`,[1.12855,-.39673,-.03992,0,.24991,-.16404,1.08352,-.05498,0,.09698,-.16786,-.56034,1.60148,0,.13972,0,0,0,1,0]),wl=bl(`Technicolor`,[1.91252,-.85453,-.09155,0,.04624,-.30878,1.76589,-.10601,0,-.27589,-.2311,-.75018,1.84759,0,.12137,0,0,0,1,0]),Tl=bl(`Polaroid`,[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0]),El=bl(`Sepia`,[.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0]),Dl=bl(`BlackWhite`,[1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,0,0,0,1,0]);var Ol=class extends ${constructor(e={}){super(e),this.subFilters=e.subFilters||[]}applyTo(e){rl(e)&&(e.passes+=this.subFilters.length-1),this.subFilters.forEach(t=>{t.applyTo(e)})}toObject(){return{type:this.type,subFilters:this.subFilters.map(e=>e.toObject())}}isNeutralState(){return!this.subFilters.some(e=>!e.isNeutralState())}static fromObject(e,t){return Promise.all((e.subFilters||[]).map(e=>M.getClass(e.type).fromObject(e,t))).then(e=>new this({subFilters:e}))}};o(Ol,`type`,`Composed`),M.setClass(Ol);let kl={contrast:0};var Al=class extends ${getFragmentSource(){return`
|
|
150
167
|
precision highp float;
|
|
151
168
|
uniform sampler2D uTexture;
|
|
152
169
|
uniform float uContrast;
|
|
@@ -156,7 +173,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
156
173
|
float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));
|
|
157
174
|
color.rgb = contrastF * (color.rgb - 0.5) + 0.5;
|
|
158
175
|
gl_FragColor = color;
|
|
159
|
-
}`}isNeutralState(){return this.contrast===0}applyTo2d({imageData:{data:e}}){let t=Math.floor(
|
|
176
|
+
}`}isNeutralState(){return this.contrast===0}applyTo2d({imageData:{data:e}}){let t=Math.floor(this.contrast*255),n=259*(t+255)/(255*(259-t));for(let t=0;t<e.length;t+=4)e[t]=n*(e[t]-128)+128,e[t+1]=n*(e[t+1]-128)+128,e[t+2]=n*(e[t+2]-128)+128}sendUniformData(e,t){e.uniform1f(t.uContrast,this.contrast)}};o(Al,`type`,`Contrast`),o(Al,`defaults`,kl),o(Al,`uniformLocations`,[`uContrast`]),M.setClass(Al);let jl={Convolute_3_1:`
|
|
160
177
|
precision highp float;
|
|
161
178
|
uniform sampler2D uTexture;
|
|
162
179
|
uniform float uMatrix[9];
|
|
@@ -300,7 +317,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
300
317
|
gl_FragColor = color;
|
|
301
318
|
gl_FragColor.a = alpha;
|
|
302
319
|
}
|
|
303
|
-
`};var
|
|
320
|
+
`},Ml={opaque:!1,matrix:[0,0,0,0,1,0,0,0,0]};var Nl=class extends ${getCacheKey(){return`${this.type}_${Math.sqrt(this.matrix.length)}_${+!!this.opaque}`}getFragmentSource(){return jl[this.getCacheKey()]}applyTo2d(e){let t=e.imageData,n=t.data,r=this.matrix,i=Math.round(Math.sqrt(r.length)),a=Math.floor(i/2),o=t.width,s=t.height,c=e.ctx.createImageData(o,s),l=c.data,u=+!!this.opaque,d,f,p,m,h,g,_,v,y,b,x,S,C;for(x=0;x<s;x++)for(b=0;b<o;b++){for(h=(x*o+b)*4,d=0,f=0,p=0,m=0,C=0;C<i;C++)for(S=0;S<i;S++)_=x+C-a,g=b+S-a,!(_<0||_>=s||g<0||g>=o)&&(v=(_*o+g)*4,y=r[C*i+S],d+=n[v]*y,f+=n[v+1]*y,p+=n[v+2]*y,u||(m+=n[v+3]*y));l[h]=d,l[h+1]=f,l[h+2]=p,u?l[h+3]=n[h+3]:l[h+3]=m}e.imageData=c}sendUniformData(e,t){e.uniform1fv(t.uMatrix,this.matrix)}toObject(){return{...super.toObject(),opaque:this.opaque,matrix:[...this.matrix]}}};o(Nl,`type`,`Convolute`),o(Nl,`defaults`,Ml),o(Nl,`uniformLocations`,[`uMatrix`,`uOpaque`,`uHalfSize`,`uSize`]),M.setClass(Nl);let Pl=`Gamma`,Fl={gamma:[1,1,1]};var Il=class extends ${getFragmentSource(){return`
|
|
304
321
|
precision highp float;
|
|
305
322
|
uniform sampler2D uTexture;
|
|
306
323
|
uniform vec3 uGamma;
|
|
@@ -314,7 +331,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
314
331
|
gl_FragColor = color;
|
|
315
332
|
gl_FragColor.rgb *= color.a;
|
|
316
333
|
}
|
|
317
|
-
`}constructor(e={}){super(e),this.gamma=e.gamma||this.constructor.defaults.gamma.concat()}applyTo2d({imageData:{data:e}}){let t=this.gamma,n=1/t[0],r=1/t[1],i=1/t[2];this.rgbValues||(this.rgbValues={r
|
|
334
|
+
`}constructor(e={}){super(e),this.gamma=e.gamma||this.constructor.defaults.gamma.concat()}applyTo2d({imageData:{data:e}}){let t=this.gamma,n=1/t[0],r=1/t[1],i=1/t[2];this.rgbValues||(this.rgbValues={r:/* @__PURE__ */ new Uint8Array(256),g:/* @__PURE__ */ new Uint8Array(256),b:/* @__PURE__ */ new Uint8Array(256)});let a=this.rgbValues;for(let e=0;e<256;e++)a.r[e]=(e/255)**n*255,a.g[e]=(e/255)**r*255,a.b[e]=(e/255)**i*255;for(let t=0;t<e.length;t+=4)e[t]=a.r[e[t]],e[t+1]=a.g[e[t+1]],e[t+2]=a.b[e[t+2]]}sendUniformData(e,t){e.uniform3fv(t.uGamma,this.gamma)}isNeutralState(){let{gamma:e}=this;return e[0]===1&&e[1]===1&&e[2]===1}toObject(){return{type:Pl,gamma:this.gamma.concat()}}};o(Il,`type`,Pl),o(Il,`defaults`,Fl),o(Il,`uniformLocations`,[`uGamma`]),M.setClass(Il);let Ll={average:`
|
|
318
335
|
precision highp float;
|
|
319
336
|
uniform sampler2D uTexture;
|
|
320
337
|
varying vec2 vTexCoord;
|
|
@@ -343,7 +360,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
343
360
|
float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;
|
|
344
361
|
gl_FragColor = vec4(average, average, average, col.a);
|
|
345
362
|
}
|
|
346
|
-
`};var
|
|
363
|
+
`},Rl={mode:`average`};var zl=class extends ${applyTo2d({imageData:{data:e}}){for(let t=0,n;t<e.length;t+=4){let r=e[t],i=e[t+1],a=e[t+2];switch(this.mode){case`average`:n=(r+i+a)/3;break;case`lightness`:n=(Math.min(r,i,a)+Math.max(r,i,a))/2;break;case`luminosity`:n=.21*r+.72*i+.07*a}e[t+2]=e[t+1]=e[t]=n}}getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return Ll[this.mode]}sendUniformData(e,t){e.uniform1i(t.uMode,1)}isNeutralState(){return!1}};o(zl,`type`,`Grayscale`),o(zl,`defaults`,Rl),o(zl,`uniformLocations`,[`uMode`]),M.setClass(zl);let Bl={...vl,rotation:0};var Vl=class extends yl{calculateMatrix(){let e=this.rotation*Math.PI,t=Ce(e),n=we(e),r=1/3,i=Math.sqrt(r)*n,a=1-t;this.matrix=[t+a/3,r*a-i,r*a+i,0,0,r*a+i,t+r*a,r*a-i,0,0,r*a-i,r*a+i,t+r*a,0,0,0,0,0,1,0]}isNeutralState(){return this.rotation===0}applyTo(e){this.calculateMatrix(),super.applyTo(e)}toObject(){return{type:this.type,rotation:this.rotation}}};o(Vl,`type`,`HueRotation`),o(Vl,`defaults`,Bl),M.setClass(Vl);let Hl={alpha:!1,invert:!0};var Ul=class extends ${applyTo2d({imageData:{data:e}}){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[t+2]=255-e[t+2],this.alpha&&(e[t+3]=255-e[t+3])}getFragmentSource(){return`
|
|
347
364
|
precision highp float;
|
|
348
365
|
uniform sampler2D uTexture;
|
|
349
366
|
uniform int uInvert;
|
|
@@ -361,7 +378,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
361
378
|
gl_FragColor = color;
|
|
362
379
|
}
|
|
363
380
|
}
|
|
364
|
-
`}isNeutralState(){return!this.invert}sendUniformData(e,t){e.uniform1i(t.uInvert,Number(this.invert)),e.uniform1i(t.uAlpha,Number(this.alpha))}};
|
|
381
|
+
`}isNeutralState(){return!this.invert}sendUniformData(e,t){e.uniform1i(t.uInvert,Number(this.invert)),e.uniform1i(t.uAlpha,Number(this.alpha))}};o(Ul,`type`,`Invert`),o(Ul,`defaults`,Hl),o(Ul,`uniformLocations`,[`uInvert`,`uAlpha`]),M.setClass(Ul);let Wl={noise:0};var Gl=class extends ${getFragmentSource(){return`
|
|
365
382
|
precision highp float;
|
|
366
383
|
uniform sampler2D uTexture;
|
|
367
384
|
uniform float uStepH;
|
|
@@ -376,7 +393,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
376
393
|
color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;
|
|
377
394
|
gl_FragColor = color;
|
|
378
395
|
}
|
|
379
|
-
`}applyTo2d({imageData:{data:e}}){let t=this.noise;for(let n=0;n<e.length;n+=4){let r=(.5-Math.random())*t;e[n]+=r,e[n+1]+=r,e[n+2]+=r}}sendUniformData(e,t){e.uniform1f(t.uNoise,this.noise/255),e.uniform1f(t.uSeed,Math.random())}isNeutralState(){return this.noise===0}};
|
|
396
|
+
`}applyTo2d({imageData:{data:e}}){let t=this.noise;for(let n=0;n<e.length;n+=4){let r=(.5-Math.random())*t;e[n]+=r,e[n+1]+=r,e[n+2]+=r}}sendUniformData(e,t){e.uniform1f(t.uNoise,this.noise/255),e.uniform1f(t.uSeed,Math.random())}isNeutralState(){return this.noise===0}};o(Gl,`type`,`Noise`),o(Gl,`defaults`,Wl),o(Gl,`uniformLocations`,[`uNoise`,`uSeed`]),M.setClass(Gl);let Kl={blocksize:4};var ql=class extends ${applyTo2d({imageData:{data:e,width:t,height:n}}){for(let r=0;r<n;r+=this.blocksize)for(let i=0;i<t;i+=this.blocksize){let a=r*4*t+i*4,o=e[a],s=e[a+1],c=e[a+2],l=e[a+3];for(let a=r;a<Math.min(r+this.blocksize,n);a++)for(let n=i;n<Math.min(i+this.blocksize,t);n++){let r=a*4*t+n*4;e[r]=o,e[r+1]=s,e[r+2]=c,e[r+3]=l}}}isNeutralState(){return this.blocksize===1}getFragmentSource(){return`
|
|
380
397
|
precision highp float;
|
|
381
398
|
uniform sampler2D uTexture;
|
|
382
399
|
uniform float uBlocksize;
|
|
@@ -394,7 +411,7 @@ Resulting to default behavior: removing object from previous canvas and adding t
|
|
|
394
411
|
vec4 color = texture2D(uTexture, squareCoords);
|
|
395
412
|
gl_FragColor = color;
|
|
396
413
|
}
|
|
397
|
-
`}sendUniformData(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}};
|
|
414
|
+
`}sendUniformData(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}};o(ql,`type`,`Pixelate`),o(ql,`defaults`,Kl),o(ql,`uniformLocations`,[`uBlocksize`]),M.setClass(ql);let Jl={color:`#FFFFFF`,distance:.02,useAlpha:!1};var Yl=class extends ${getFragmentSource(){return`
|
|
398
415
|
precision highp float;
|
|
399
416
|
uniform sampler2D uTexture;
|
|
400
417
|
uniform vec4 uLow;
|
|
@@ -406,8 +423,23 @@ void main() {
|
|
|
406
423
|
gl_FragColor.a = 0.0;
|
|
407
424
|
}
|
|
408
425
|
}
|
|
409
|
-
`}applyTo2d({imageData:{data:e}}){let t=
|
|
410
|
-
|
|
426
|
+
`}applyTo2d({imageData:{data:e}}){let t=this.distance*255,n=new G(this.color).getSource(),r=[n[0]-t,n[1]-t,n[2]-t],i=[n[0]+t,n[1]+t,n[2]+t];for(let t=0;t<e.length;t+=4){let n=e[t],a=e[t+1],o=e[t+2];n>r[0]&&a>r[1]&&o>r[2]&&n<i[0]&&a<i[1]&&o<i[2]&&(e[t+3]=0)}}sendUniformData(e,t){let n=new G(this.color).getSource(),r=this.distance,i=[0+n[0]/255-r,0+n[1]/255-r,0+n[2]/255-r,1],a=[n[0]/255+r,n[1]/255+r,n[2]/255+r,1];e.uniform4fv(t.uLow,i),e.uniform4fv(t.uHigh,a)}};o(Yl,`type`,`RemoveColor`),o(Yl,`defaults`,Jl),o(Yl,`uniformLocations`,[`uLow`,`uHigh`]),M.setClass(Yl);let Xl={resizeType:`hermite`,scaleX:1,scaleY:1,lanczosLobes:3};var Zl=class extends ${sendUniformData(e,t){e.uniform2fv(t.uDelta,this.horizontal?[1/this.width,0]:[0,1/this.height]),e.uniform1fv(t.uTaps,this.taps)}getFilterWindow(){let e=this.tempScale;return Math.ceil(this.lanczosLobes/e)}getCacheKey(){let e=this.getFilterWindow();return`${this.type}_${e}`}getFragmentSource(){let e=this.getFilterWindow();return this.generateShader(e)}getTaps(){let e=this.lanczosCreate(this.lanczosLobes),t=this.tempScale,n=this.getFilterWindow(),r=Array(n);for(let i=1;i<=n;i++)r[i-1]=e(i*t);return r}generateShader(e){let t=Array(e);for(let n=1;n<=e;n++)t[n-1]=`${n}.0 * uDelta`;return`
|
|
427
|
+
precision highp float;
|
|
428
|
+
uniform sampler2D uTexture;
|
|
429
|
+
uniform vec2 uDelta;
|
|
430
|
+
varying vec2 vTexCoord;
|
|
431
|
+
uniform float uTaps[${e}];
|
|
432
|
+
void main() {
|
|
433
|
+
vec4 color = texture2D(uTexture, vTexCoord);
|
|
434
|
+
float sum = 1.0;
|
|
435
|
+
${t.map((e,t)=>`
|
|
436
|
+
color += texture2D(uTexture, vTexCoord + ${e}) * uTaps[${t}] + texture2D(uTexture, vTexCoord - ${e}) * uTaps[${t}];
|
|
437
|
+
sum += 2.0 * uTaps[${t}];
|
|
438
|
+
`).join(`
|
|
439
|
+
`)}
|
|
440
|
+
gl_FragColor = color / sum;
|
|
441
|
+
}
|
|
442
|
+
`}applyToForWebgl(e){e.passes++,this.width=e.sourceWidth,this.horizontal=!0,this.dW=Math.round(this.width*this.scaleX),this.dH=e.sourceHeight,this.tempScale=this.dW/this.width,this.taps=this.getTaps(),e.destinationWidth=this.dW,super.applyTo(e),e.sourceWidth=e.destinationWidth,this.height=e.sourceHeight,this.horizontal=!1,this.dH=Math.round(this.height*this.scaleY),this.tempScale=this.dH/this.height,this.taps=this.getTaps(),e.destinationHeight=this.dH,super.applyTo(e),e.sourceHeight=e.destinationHeight}applyTo(e){rl(e)?this.applyToForWebgl(e):this.applyTo2d(e)}isNeutralState(){return this.scaleX===1&&this.scaleY===1}lanczosCreate(e){return t=>{if(t>=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;t*=Math.PI;let n=t/e;return Math.sin(t)/t*Math.sin(n)/n}}applyTo2d(e){let t=e.imageData,n=this.scaleX,r=this.scaleY;this.rcpScaleX=1/n,this.rcpScaleY=1/r;let i=t.width,a=t.height,o=Math.round(i*n),s=Math.round(a*r),c;c=this.resizeType===`sliceHack`?this.sliceByTwo(e,i,a,o,s):this.resizeType===`hermite`?this.hermiteFastResize(e,i,a,o,s):this.resizeType===`bilinear`?this.bilinearFiltering(e,i,a,o,s):this.resizeType===`lanczos`?this.lanczosResize(e,i,a,o,s):new ImageData(o,s),e.imageData=c}sliceByTwo(e,t,n,r,i){let a=e.imageData,o=.5,s=!1,c=!1,l=t*o,u=n*o,d=e.filterBackend.resources,f=0,p=0,m=t,h=0;d.sliceByTwo||(d.sliceByTwo=P());let g=d.sliceByTwo;(g.width<t*1.5||g.height<n)&&(g.width=t*1.5,g.height=n);let _=g.getContext(`2d`);for(_.clearRect(0,0,t*1.5,n),_.putImageData(a,0,0),r=Math.floor(r),i=Math.floor(i);!s||!c;)t=l,n=u,r<Math.floor(l*o)?l=Math.floor(l*o):(l=r,s=!0),i<Math.floor(u*o)?u=Math.floor(u*o):(u=i,c=!0),_.drawImage(g,f,p,t,n,m,h,l,u),f=m,p=h,h+=u;return _.getImageData(f,p,r,i)}lanczosResize(e,t,n,r,i){function a(e){let y,b,x,S,C,w,T,ee,E,D,O;for(_.x=(e+.5)*u,v.x=Math.floor(_.x),y=0;y<i;y++){for(_.y=(y+.5)*d,v.y=Math.floor(_.y),C=0,w=0,T=0,ee=0,E=0,b=v.x-m;b<=v.x+m;b++)if(!(b<0||b>=t)){D=Math.floor(1e3*Math.abs(b-_.x)),g[D]||(g[D]={});for(let e=v.y-h;e<=v.y+h;e++)e<0||e>=n||(O=Math.floor(1e3*Math.abs(e-_.y)),g[D][O]||(g[D][O]=l(Math.sqrt((D*f)**2+(O*p)**2)/1e3)),x=g[D][O],x>0&&(S=(e*t+b)*4,C+=x,w+=x*o[S],T+=x*o[S+1],ee+=x*o[S+2],E+=x*o[S+3]))}S=(y*r+e)*4,c[S]=w/C,c[S+1]=T/C,c[S+2]=ee/C,c[S+3]=E/C}return++e<r?a(e):s}let o=e.imageData.data,s=e.ctx.createImageData(r,i),c=s.data,l=this.lanczosCreate(this.lanczosLobes),u=this.rcpScaleX,d=this.rcpScaleY,f=2/this.rcpScaleX,p=2/this.rcpScaleY,m=Math.ceil(u*this.lanczosLobes/2),h=Math.ceil(d*this.lanczosLobes/2),g={},_={x:0,y:0},v={x:0,y:0};return a(0)}bilinearFiltering(e,t,n,r,i){let a,o,s,c,l,u,d,f,p,m,h,g,_=0,v,y=this.rcpScaleX,b=this.rcpScaleY,x=4*(t-1),S=e.imageData.data,C=e.ctx.createImageData(r,i),w=C.data;for(d=0;d<i;d++)for(f=0;f<r;f++)for(l=Math.floor(y*f),u=Math.floor(b*d),p=y*f-l,m=b*d-u,v=4*(u*t+l),h=0;h<4;h++)a=S[v+h],o=S[v+4+h],s=S[v+x+h],c=S[v+x+4+h],g=a*(1-p)*(1-m)+o*p*(1-m)+s*m*(1-p)+c*p*m,w[_++]=g;return C}hermiteFastResize(e,t,n,r,i){let a=this.rcpScaleX,o=this.rcpScaleY,s=Math.ceil(a/2),c=Math.ceil(o/2),l=e.imageData.data,u=e.ctx.createImageData(r,i),d=u.data;for(let e=0;e<i;e++)for(let n=0;n<r;n++){let i=(n+e*r)*4,u,f=0,p=0,m=0,h=0,g=0,_=0,v=(e+.5)*o;for(let r=Math.floor(e*o);r<(e+1)*o;r++){let e=Math.abs(v-(r+.5))/c,i=(n+.5)*a,o=e*e;for(let e=Math.floor(n*a);e<(n+1)*a;e++){let n=Math.abs(i-(e+.5))/s,a=Math.sqrt(o+n*n);a>1&&a<-1||(u=2*a*a*a-3*a*a+1,u>0&&(n=4*(e+r*t),_+=u*l[n+3],p+=u,l[n+3]<255&&(u=u*l[n+3]/250),m+=u*l[n],h+=u*l[n+1],g+=u*l[n+2],f+=u))}}d[i]=m/f,d[i+1]=h/f,d[i+2]=g/f,d[i+3]=_/p}return u}};o(Zl,`type`,`Resize`),o(Zl,`defaults`,Xl),o(Zl,`uniformLocations`,[`uDelta`,`uTaps`]),M.setClass(Zl);let Ql={saturation:0};var $l=class extends ${getFragmentSource(){return`
|
|
411
443
|
precision highp float;
|
|
412
444
|
uniform sampler2D uTexture;
|
|
413
445
|
uniform float uSaturation;
|
|
@@ -421,7 +453,7 @@ void main() {
|
|
|
421
453
|
color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;
|
|
422
454
|
gl_FragColor = color;
|
|
423
455
|
}
|
|
424
|
-
`}applyTo2d({imageData:{data:e}}){let t=-this.saturation;for(let n=0;n<e.length;n+=4){let r=e[n],i=e[n+1],a=e[n+2],o=Math.max(r,i,a);e[n]+=o===r?0:(o-r)*t,e[n+1]+=o===i?0:(o-i)*t,e[n+2]+=o===a?0:(o-a)*t}}sendUniformData(e,t){e.uniform1f(t.uSaturation,-this.saturation)}isNeutralState(){return this.saturation===0}};
|
|
456
|
+
`}applyTo2d({imageData:{data:e}}){let t=-this.saturation;for(let n=0;n<e.length;n+=4){let r=e[n],i=e[n+1],a=e[n+2],o=Math.max(r,i,a);e[n]+=o===r?0:(o-r)*t,e[n+1]+=o===i?0:(o-i)*t,e[n+2]+=o===a?0:(o-a)*t}}sendUniformData(e,t){e.uniform1f(t.uSaturation,-this.saturation)}isNeutralState(){return this.saturation===0}};o($l,`type`,`Saturation`),o($l,`defaults`,Ql),o($l,`uniformLocations`,[`uSaturation`]),M.setClass($l);let eu={vibrance:0};var tu=class extends ${getFragmentSource(){return`
|
|
425
457
|
precision highp float;
|
|
426
458
|
uniform sampler2D uTexture;
|
|
427
459
|
uniform float uVibrance;
|
|
@@ -436,5 +468,5 @@ void main() {
|
|
|
436
468
|
color.b += max != color.b ? (max - color.b) * amt : 0.00;
|
|
437
469
|
gl_FragColor = color;
|
|
438
470
|
}
|
|
439
|
-
`}applyTo2d({imageData:{data:e}}){let t=-this.vibrance;for(let n=0;n<e.length;n+=4){let r=e[n],i=e[n+1],a=e[n+2],o=Math.max(r,i,a),s=(r+i+a)/3,c=
|
|
471
|
+
`}applyTo2d({imageData:{data:e}}){let t=-this.vibrance;for(let n=0;n<e.length;n+=4){let r=e[n],i=e[n+1],a=e[n+2],o=Math.max(r,i,a),s=(r+i+a)/3,c=Math.abs(o-s)*2/255*t;e[n]+=o===r?0:(o-r)*c,e[n+1]+=o===i?0:(o-i)*c,e[n+2]+=o===a?0:(o-a)*c}}sendUniformData(e,t){e.uniform1f(t.uVibrance,-this.vibrance)}isNeutralState(){return this.vibrance===0}};o(tu,`type`,`Vibrance`),o(tu,`defaults`,eu),o(tu,`uniformLocations`,[`uVibrance`]),M.setClass(tu);var nu=/* @__PURE__ */ n({BaseFilter:()=>$,BlackWhite:()=>Dl,BlendColor:()=>ul,BlendImage:()=>pl,Blur:()=>hl,Brightness:()=>_l,Brownie:()=>xl,ColorMatrix:()=>yl,Composed:()=>Ol,Contrast:()=>Al,Convolute:()=>Nl,Gamma:()=>Il,Grayscale:()=>zl,HueRotation:()=>Vl,Invert:()=>Ul,Kodachrome:()=>Cl,Noise:()=>Gl,Pixelate:()=>ql,Polaroid:()=>Tl,RemoveColor:()=>Yl,Resize:()=>Zl,Saturation:()=>$l,Sepia:()=>El,Technicolor:()=>wl,Vibrance:()=>tu,Vintage:()=>Sl});let ru={};h(()=>({document,window,isTouchSupported:`ontouchstart`in window||`ontouchstart`in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new Fs,dispose(){},copyPasteData:ru})),e.ActiveSelection=Tc,e.BaseBrush=Cs,e.BaseFabricObject=mi,e.Canvas=is,e.Canvas2dFilterBackend=Ec,e.CanvasDOMManager=Po,e.Circle=ks,e.CircleBrush=As,e.ClipPathLayout=xc,e.Color=G,e.Control=q,e.Ellipse=Hs,e.FabricImage=Fc,e.Image=Fc,e.FabricObject=J,e.Object=J,e.FabricText=Q,e.Text=Q,e.FitContentLayout=La,e.FixedLayout=Sc,e.GLProbe=Ps,e.Gradient=xs,e.Group=Ha,e.IText=vc,e.InteractiveFabricObject=ea,e.Intersection=fi,e.LayoutManager=za,e.LayoutStrategy=Ia,e.Line=Ls,e.Observable=xe,e.Path=ws,e.Pattern=Ss,e.PatternBrush=Ns,e.PencilBrush=Es,e.Point=N,e.Polygon=Ks,e.Polyline=Gs,e.Rect=Ma,e.Shadow=gr,e.SprayBrush=Ms,e.StaticCanvas=Et,e.StaticCanvasDOMManager=_t,e.Textbox=bc,e.Triangle=zs,e.WebGLFilterBackend=Dc,e.WebGLProbe=Fs,e.cache=b,e.classRegistry=M,e.config=c,Object.defineProperty(e,"controlsUtils",{enumerable:!0,get:function(){return Qo}}),e.createCollectionMixin=De,Object.defineProperty(e,"filters",{enumerable:!0,get:function(){return nu}}),e.getDevicePixelRatio=y,e.getEnv=g,e.getFabricDocument=_,e.getFabricWindow=v,e.getFilterBackend=jc,e.iMatrix=E,e.initFilterBackend=Ac,e.isPutImageFaster=il,e.isWebGLPipelineState=rl,e.loadSVGFromString=tl,e.loadSVGFromURL=nl,e.parseSVGDocument=el,e.runningAnimations=be,e.setEnv=m,e.setEnvFactory=h,e.setFilterBackend=Mc,Object.defineProperty(e,"util",{enumerable:!0,get:function(){return Mo}}),e.version=x});
|
|
440
472
|
//# sourceMappingURL=index.min.js.map
|