fabric 6.2.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +1 -0
- package/CHANGELOG.md +12 -4
- package/README.md +1 -1
- package/dist/extensions/aligning_guidelines/constant.d.ts +3 -0
- package/dist/extensions/aligning_guidelines/constant.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/index.d.ts +5 -0
- package/dist/extensions/aligning_guidelines/index.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/typedefs.d.ts +33 -0
- package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/util/basic.d.ts +4 -0
- package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
- package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
- package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/util/draw.d.ts +6 -0
- package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
- package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
- package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
- package/dist/extensions/index.d.ts +2 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/index.js +140 -108
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +140 -108
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +140 -108
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +140 -108
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/ClassRegistry.min.mjs.map +1 -1
- package/dist/src/ClassRegistry.mjs.map +1 -1
- package/dist/src/Collection.min.mjs.map +1 -1
- package/dist/src/Collection.mjs.map +1 -1
- package/dist/src/Intersection.min.mjs.map +1 -1
- package/dist/src/Intersection.mjs.map +1 -1
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +1 -1
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.d.ts +1 -1
- package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.mjs +1 -1
- package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +1 -1
- package/dist/src/LayoutManager/types.d.ts.map +1 -1
- package/dist/src/Observable.min.mjs.map +1 -1
- package/dist/src/Observable.mjs.map +1 -1
- package/dist/src/Pattern/Pattern.d.ts +2 -2
- package/dist/src/Pattern/Pattern.d.ts.map +1 -1
- package/dist/src/Pattern/Pattern.min.mjs +1 -1
- package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
- package/dist/src/Pattern/Pattern.mjs +14 -12
- package/dist/src/Pattern/Pattern.mjs.map +1 -1
- package/dist/src/Point.min.mjs.map +1 -1
- package/dist/src/Point.mjs.map +1 -1
- package/dist/src/Shadow.min.mjs.map +1 -1
- package/dist/src/Shadow.mjs.map +1 -1
- package/dist/src/brushes/CircleBrush.min.mjs.map +1 -1
- package/dist/src/brushes/CircleBrush.mjs.map +1 -1
- package/dist/src/brushes/PatternBrush.min.mjs.map +1 -1
- package/dist/src/brushes/PatternBrush.mjs.map +1 -1
- package/dist/src/brushes/PencilBrush.min.mjs.map +1 -1
- package/dist/src/brushes/PencilBrush.mjs.map +1 -1
- package/dist/src/brushes/SprayBrush.min.mjs.map +1 -1
- package/dist/src/brushes/SprayBrush.mjs.map +1 -1
- package/dist/src/canvas/Canvas.d.ts +1 -1
- package/dist/src/canvas/Canvas.d.ts.map +1 -1
- package/dist/src/canvas/Canvas.min.mjs.map +1 -1
- package/dist/src/canvas/Canvas.mjs +2 -1
- package/dist/src/canvas/Canvas.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.mjs +1 -1
- package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.mjs.map +1 -1
- package/dist/src/canvas/TextEditingManager.min.mjs.map +1 -1
- package/dist/src/canvas/TextEditingManager.mjs.map +1 -1
- package/dist/src/color/Color.d.ts.map +1 -1
- package/dist/src/color/Color.min.mjs.map +1 -1
- package/dist/src/color/Color.mjs +1 -0
- package/dist/src/color/Color.mjs.map +1 -1
- package/dist/src/color/util.min.mjs.map +1 -1
- package/dist/src/color/util.mjs.map +1 -1
- package/dist/src/config.min.mjs.map +1 -1
- package/dist/src/config.mjs.map +1 -1
- package/dist/src/controls/Control.min.mjs.map +1 -1
- package/dist/src/controls/Control.mjs.map +1 -1
- package/dist/src/controls/changeWidth.min.mjs.map +1 -1
- package/dist/src/controls/changeWidth.mjs.map +1 -1
- package/dist/src/controls/controlRendering.min.mjs.map +1 -1
- package/dist/src/controls/controlRendering.mjs.map +1 -1
- package/dist/src/controls/drag.min.mjs.map +1 -1
- package/dist/src/controls/drag.mjs.map +1 -1
- package/dist/src/controls/fireEvent.min.mjs.map +1 -1
- package/dist/src/controls/fireEvent.mjs.map +1 -1
- package/dist/src/controls/pathControl.min.mjs.map +1 -1
- package/dist/src/controls/pathControl.mjs.map +1 -1
- package/dist/src/controls/polyControl.min.mjs.map +1 -1
- package/dist/src/controls/polyControl.mjs.map +1 -1
- package/dist/src/controls/rotate.min.mjs.map +1 -1
- package/dist/src/controls/rotate.mjs.map +1 -1
- package/dist/src/controls/scale.min.mjs.map +1 -1
- package/dist/src/controls/scale.mjs.map +1 -1
- package/dist/src/controls/scaleSkew.min.mjs.map +1 -1
- package/dist/src/controls/scaleSkew.mjs.map +1 -1
- package/dist/src/controls/skew.min.mjs.map +1 -1
- package/dist/src/controls/skew.mjs.map +1 -1
- package/dist/src/controls/util.min.mjs.map +1 -1
- package/dist/src/controls/util.mjs.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
- package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +1 -1
- package/dist/src/controls/wrapWithFixedAnchor.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.d.ts +5 -5
- package/dist/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.mjs +5 -5
- package/dist/src/filters/BaseFilter.mjs.map +1 -1
- package/dist/src/filters/BlendColor.min.mjs.map +1 -1
- package/dist/src/filters/BlendColor.mjs.map +1 -1
- package/dist/src/filters/BlendImage.min.mjs.map +1 -1
- package/dist/src/filters/BlendImage.mjs.map +1 -1
- package/dist/src/filters/Blur.min.mjs.map +1 -1
- package/dist/src/filters/Blur.mjs.map +1 -1
- package/dist/src/filters/Brightness.min.mjs.map +1 -1
- package/dist/src/filters/Brightness.mjs.map +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
- package/dist/src/filters/Composed.min.mjs.map +1 -1
- package/dist/src/filters/Composed.mjs.map +1 -1
- package/dist/src/filters/Contrast.min.mjs.map +1 -1
- package/dist/src/filters/Contrast.mjs.map +1 -1
- package/dist/src/filters/Convolute.min.mjs.map +1 -1
- package/dist/src/filters/Convolute.mjs.map +1 -1
- package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +1 -1
- package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +1 -1
- package/dist/src/filters/Gamma.min.mjs.map +1 -1
- package/dist/src/filters/Gamma.mjs.map +1 -1
- package/dist/src/filters/Grayscale.min.mjs.map +1 -1
- package/dist/src/filters/Grayscale.mjs.map +1 -1
- package/dist/src/filters/Invert.min.mjs.map +1 -1
- package/dist/src/filters/Invert.mjs.map +1 -1
- package/dist/src/filters/Noise.min.mjs.map +1 -1
- package/dist/src/filters/Noise.mjs.map +1 -1
- package/dist/src/filters/Pixelate.min.mjs.map +1 -1
- package/dist/src/filters/Pixelate.mjs.map +1 -1
- package/dist/src/filters/RemoveColor.min.mjs.map +1 -1
- package/dist/src/filters/RemoveColor.mjs.map +1 -1
- package/dist/src/filters/Resize.min.mjs.map +1 -1
- package/dist/src/filters/Resize.mjs.map +1 -1
- package/dist/src/filters/Saturation.min.mjs.map +1 -1
- package/dist/src/filters/Saturation.mjs.map +1 -1
- package/dist/src/filters/Vibrance.min.mjs.map +1 -1
- package/dist/src/filters/Vibrance.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
- package/dist/src/filters/typedefs.d.ts +0 -1
- package/dist/src/filters/typedefs.d.ts.map +1 -1
- package/dist/src/filters/utils.min.mjs.map +1 -1
- package/dist/src/filters/utils.mjs.map +1 -1
- package/dist/src/gradient/Gradient.d.ts +7 -3
- package/dist/src/gradient/Gradient.d.ts.map +1 -1
- package/dist/src/gradient/Gradient.min.mjs +1 -1
- package/dist/src/gradient/Gradient.min.mjs.map +1 -1
- package/dist/src/gradient/Gradient.mjs +36 -24
- package/dist/src/gradient/Gradient.mjs.map +1 -1
- package/dist/src/gradient/parser/parseColorStops.min.mjs.map +1 -1
- package/dist/src/gradient/parser/parseColorStops.mjs.map +1 -1
- package/dist/src/gradient/parser/parseCoords.d.ts.map +1 -1
- package/dist/src/gradient/parser/parseCoords.min.mjs.map +1 -1
- package/dist/src/gradient/parser/parseCoords.mjs.map +1 -1
- package/dist/src/parser/applyViewboxTransform.min.mjs.map +1 -1
- package/dist/src/parser/applyViewboxTransform.mjs.map +1 -1
- package/dist/src/parser/constants.min.mjs.map +1 -1
- package/dist/src/parser/constants.mjs.map +1 -1
- package/dist/src/parser/elements_parser.min.mjs.map +1 -1
- package/dist/src/parser/elements_parser.mjs.map +1 -1
- package/dist/src/parser/getCSSRules.min.mjs.map +1 -1
- package/dist/src/parser/getCSSRules.mjs.map +1 -1
- package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +1 -1
- package/dist/src/parser/getGlobalStylesForElement.mjs.map +1 -1
- package/dist/src/parser/getGradientDefs.min.mjs.map +1 -1
- package/dist/src/parser/getGradientDefs.mjs.map +1 -1
- package/dist/src/parser/getMultipleNodes.min.mjs.map +1 -1
- package/dist/src/parser/getMultipleNodes.mjs.map +1 -1
- package/dist/src/parser/loadSVGFromString.min.mjs.map +1 -1
- package/dist/src/parser/loadSVGFromString.mjs.map +1 -1
- package/dist/src/parser/loadSVGFromURL.min.mjs.map +1 -1
- package/dist/src/parser/loadSVGFromURL.mjs.map +1 -1
- package/dist/src/parser/normalizeAttr.min.mjs.map +1 -1
- package/dist/src/parser/normalizeAttr.mjs.map +1 -1
- package/dist/src/parser/normalizeValue.min.mjs.map +1 -1
- package/dist/src/parser/normalizeValue.mjs.map +1 -1
- package/dist/src/parser/parseAttributes.min.mjs.map +1 -1
- package/dist/src/parser/parseAttributes.mjs.map +1 -1
- package/dist/src/parser/parseFontDeclaration.min.mjs.map +1 -1
- package/dist/src/parser/parseFontDeclaration.mjs.map +1 -1
- package/dist/src/parser/parseSVGDocument.min.mjs.map +1 -1
- package/dist/src/parser/parseSVGDocument.mjs.map +1 -1
- package/dist/src/parser/parseStyleObject.min.mjs.map +1 -1
- package/dist/src/parser/parseStyleObject.mjs.map +1 -1
- package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
- package/dist/src/parser/parseStyleString.mjs.map +1 -1
- package/dist/src/parser/parseTransformAttribute.min.mjs.map +1 -1
- package/dist/src/parser/parseTransformAttribute.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
- package/dist/src/parser/percent.min.mjs.map +1 -1
- package/dist/src/parser/percent.mjs.map +1 -1
- package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +1 -1
- package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +1 -1
- package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +1 -1
- package/dist/src/parser/setStrokeFillOpacity.mjs.map +1 -1
- package/dist/src/shapes/ActiveSelection.min.mjs.map +1 -1
- package/dist/src/shapes/ActiveSelection.mjs.map +1 -1
- package/dist/src/shapes/Circle.min.mjs.map +1 -1
- package/dist/src/shapes/Circle.mjs.map +1 -1
- package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
- package/dist/src/shapes/Ellipse.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts +2 -2
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/Group.min.mjs.map +1 -1
- package/dist/src/shapes/Group.mjs.map +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs +2 -2
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Line.min.mjs.map +1 -1
- package/dist/src/shapes/Line.mjs.map +1 -1
- package/dist/src/shapes/Object/AnimatableObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/AnimatableObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/AnimatableObject.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/FabricObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObject.mjs +2 -1
- package/dist/src/shapes/Object/FabricObject.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.d.ts +13 -13
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs +13 -13
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.d.ts +4 -4
- package/dist/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist/src/shapes/Object/Object.min.mjs +1 -1
- package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.mjs +10 -14
- package/dist/src/shapes/Object/Object.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectOrigin.min.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectOrigin.mjs.map +1 -1
- package/dist/src/shapes/Object/StackedObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/StackedObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/StackedObject.mjs.map +1 -1
- package/dist/src/shapes/Path.min.mjs.map +1 -1
- package/dist/src/shapes/Path.mjs.map +1 -1
- package/dist/src/shapes/Polyline.d.ts.map +1 -1
- package/dist/src/shapes/Polyline.min.mjs +1 -1
- package/dist/src/shapes/Polyline.min.mjs.map +1 -1
- package/dist/src/shapes/Polyline.mjs +10 -2
- package/dist/src/shapes/Polyline.mjs.map +1 -1
- package/dist/src/shapes/Rect.min.mjs.map +1 -1
- package/dist/src/shapes/Rect.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.min.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.mjs +1 -1
- package/dist/src/shapes/Text/Text.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/shapes/Triangle.min.mjs.map +1 -1
- package/dist/src/shapes/Triangle.mjs.map +1 -1
- package/dist/src/util/animation/AnimationBase.min.mjs.map +1 -1
- package/dist/src/util/animation/AnimationBase.mjs.map +1 -1
- package/dist/src/util/animation/AnimationRegistry.min.mjs.map +1 -1
- package/dist/src/util/animation/AnimationRegistry.mjs.map +1 -1
- package/dist/src/util/animation/ArrayAnimation.min.mjs.map +1 -1
- package/dist/src/util/animation/ArrayAnimation.mjs.map +1 -1
- package/dist/src/util/animation/ColorAnimation.min.mjs.map +1 -1
- package/dist/src/util/animation/ColorAnimation.mjs.map +1 -1
- package/dist/src/util/animation/ValueAnimation.min.mjs.map +1 -1
- package/dist/src/util/animation/ValueAnimation.mjs.map +1 -1
- package/dist/src/util/animation/animate.d.ts.map +1 -1
- package/dist/src/util/animation/animate.min.mjs.map +1 -1
- package/dist/src/util/animation/animate.mjs.map +1 -1
- package/dist/src/util/animation/easing.min.mjs.map +1 -1
- package/dist/src/util/animation/easing.mjs.map +1 -1
- package/dist/src/util/animation/types.d.ts.map +1 -1
- package/dist/src/util/applyMixins.min.mjs.map +1 -1
- package/dist/src/util/applyMixins.mjs.map +1 -1
- package/dist/src/util/dom_style.min.mjs.map +1 -1
- package/dist/src/util/dom_style.mjs.map +1 -1
- package/dist/src/util/internals/cloneDeep.d.ts +6 -0
- package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
- package/dist/src/util/internals/cloneStyles.d.ts +3 -0
- package/dist/src/util/internals/cloneStyles.d.ts.map +1 -0
- package/dist/src/util/internals/cloneStyles.min.mjs +2 -0
- package/dist/src/util/internals/cloneStyles.min.mjs.map +1 -0
- package/dist/src/util/internals/cloneStyles.mjs +15 -0
- package/dist/src/util/internals/cloneStyles.mjs.map +1 -0
- package/dist/src/util/internals/findRight.min.mjs.map +1 -1
- package/dist/src/util/internals/findRight.mjs.map +1 -1
- package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +1 -1
- package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +1 -1
- package/dist/src/util/misc/dom.min.mjs.map +1 -1
- package/dist/src/util/misc/dom.mjs.map +1 -1
- package/dist/src/util/misc/findScaleTo.min.mjs.map +1 -1
- package/dist/src/util/misc/findScaleTo.mjs.map +1 -1
- package/dist/src/util/misc/groupSVGElements.min.mjs.map +1 -1
- package/dist/src/util/misc/groupSVGElements.mjs.map +1 -1
- package/dist/src/util/misc/isTransparent.min.mjs.map +1 -1
- package/dist/src/util/misc/isTransparent.mjs.map +1 -1
- package/dist/src/util/misc/matrix.min.mjs.map +1 -1
- package/dist/src/util/misc/matrix.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/dist/src/util/misc/objectTransforms.min.mjs.map +1 -1
- package/dist/src/util/misc/objectTransforms.mjs.map +1 -1
- package/dist/src/util/misc/pick.min.mjs.map +1 -1
- package/dist/src/util/misc/pick.mjs.map +1 -1
- package/dist/src/util/misc/planeChange.min.mjs.map +1 -1
- package/dist/src/util/misc/planeChange.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/index.min.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/index.mjs.map +1 -1
- package/dist/src/util/misc/resolveOrigin.min.mjs.map +1 -1
- package/dist/src/util/misc/resolveOrigin.mjs.map +1 -1
- package/dist/src/util/misc/rotatePoint.min.mjs.map +1 -1
- package/dist/src/util/misc/rotatePoint.mjs.map +1 -1
- package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
- package/dist/src/util/misc/svgParsing.mjs.map +1 -1
- package/dist/src/util/misc/textStyles.min.mjs +1 -1
- package/dist/src/util/misc/textStyles.min.mjs.map +1 -1
- package/dist/src/util/misc/textStyles.mjs +3 -3
- package/dist/src/util/misc/textStyles.mjs.map +1 -1
- package/dist/src/util/misc/vectors.min.mjs.map +1 -1
- package/dist/src/util/misc/vectors.mjs.map +1 -1
- package/dist/src/util/path/index.min.mjs.map +1 -1
- package/dist/src/util/path/index.mjs.map +1 -1
- package/dist/src/util/path/typedefs.d.ts.map +1 -1
- package/dist/src/util/transform_matrix_removal.min.mjs.map +1 -1
- package/dist/src/util/transform_matrix_removal.mjs.map +1 -1
- package/dist/src/util/typeAssertions.min.mjs.map +1 -1
- package/dist/src/util/typeAssertions.mjs.map +1 -1
- package/dist-extensions/aligning_guidelines/constant.mjs +11 -0
- package/dist-extensions/aligning_guidelines/constant.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/index.mjs +130 -0
- package/dist-extensions/aligning_guidelines/index.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/util/basic.mjs +11 -0
- package/dist-extensions/aligning_guidelines/util/basic.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs +193 -0
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs +102 -0
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/util/draw.mjs +75 -0
- package/dist-extensions/aligning_guidelines/util/draw.mjs.map +1 -0
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +42 -0
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +3 -0
- package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts +5 -0
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +33 -0
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +4 -0
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +6 -0
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
- package/dist-extensions/extensions/index.d.ts +2 -0
- package/dist-extensions/extensions/index.d.ts.map +1 -0
- package/dist-extensions/fabric-extensions.min.js +2 -0
- package/dist-extensions/fabric-extensions.min.js.map +1 -0
- package/dist-extensions/fabric.d.ts +119 -0
- package/dist-extensions/fabric.d.ts.map +1 -0
- package/dist-extensions/index.d.ts +2 -0
- package/dist-extensions/index.d.ts.map +1 -0
- package/dist-extensions/index.mjs +2 -0
- package/dist-extensions/index.mjs.map +1 -0
- package/dist-extensions/src/ClassRegistry.d.ts +14 -0
- package/dist-extensions/src/ClassRegistry.d.ts.map +1 -0
- package/dist-extensions/src/Collection.d.ts +141 -0
- package/dist-extensions/src/Collection.d.ts.map +1 -0
- package/dist-extensions/src/CommonMethods.d.ts +32 -0
- package/dist-extensions/src/CommonMethods.d.ts.map +1 -0
- package/dist-extensions/src/EventTypeDefs.d.ts +286 -0
- package/dist-extensions/src/EventTypeDefs.d.ts.map +1 -0
- package/dist-extensions/src/Intersection.d.ts +120 -0
- package/dist-extensions/src/Intersection.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +22 -0
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +56 -0
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +13 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +14 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +14 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +30 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +10 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/constants.d.ts +7 -0
- package/dist-extensions/src/LayoutManager/constants.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/index.d.ts +7 -0
- package/dist-extensions/src/LayoutManager/index.d.ts.map +1 -0
- package/dist-extensions/src/LayoutManager/types.d.ts +106 -0
- package/dist-extensions/src/LayoutManager/types.d.ts.map +1 -0
- package/dist-extensions/src/Observable.d.ts +68 -0
- package/dist-extensions/src/Observable.d.ts.map +1 -0
- package/dist-extensions/src/Pattern/Pattern.d.ts +99 -0
- package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -0
- package/dist-extensions/src/Pattern/index.d.ts +3 -0
- package/dist-extensions/src/Pattern/index.d.ts.map +1 -0
- package/dist-extensions/src/Pattern/types.d.ts +12 -0
- package/dist-extensions/src/Pattern/types.d.ts.map +1 -0
- package/dist-extensions/src/Point.d.ts +233 -0
- package/dist-extensions/src/Point.d.ts.map +1 -0
- package/dist-extensions/src/Shadow.d.ts +95 -0
- package/dist-extensions/src/Shadow.d.ts.map +1 -0
- package/dist-extensions/src/brushes/BaseBrush.d.ts +101 -0
- package/dist-extensions/src/brushes/BaseBrush.d.ts.map +1 -0
- package/dist-extensions/src/brushes/CircleBrush.d.ts +44 -0
- package/dist-extensions/src/brushes/CircleBrush.d.ts.map +1 -0
- package/dist-extensions/src/brushes/PatternBrush.d.ts +23 -0
- package/dist-extensions/src/brushes/PatternBrush.d.ts.map +1 -0
- package/dist-extensions/src/brushes/PencilBrush.d.ts +92 -0
- package/dist-extensions/src/brushes/PencilBrush.d.ts.map +1 -0
- package/dist-extensions/src/brushes/SprayBrush.d.ts +74 -0
- package/dist-extensions/src/brushes/SprayBrush.d.ts.map +1 -0
- package/dist-extensions/src/brushes/typedefs.d.ts +18 -0
- package/dist-extensions/src/brushes/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/cache.d.ts +47 -0
- package/dist-extensions/src/cache.d.ts.map +1 -0
- package/dist-extensions/src/canvas/Canvas.d.ts +339 -0
- package/dist-extensions/src/canvas/Canvas.d.ts.map +1 -0
- package/dist-extensions/src/canvas/CanvasOptions.d.ts +229 -0
- package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -0
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +29 -0
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +1 -0
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +29 -0
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +1 -0
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts +24 -0
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +1 -0
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts +534 -0
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -0
- package/dist-extensions/src/canvas/StaticCanvas.d.ts +639 -0
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -0
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +153 -0
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +1 -0
- package/dist-extensions/src/canvas/TextEditingManager.d.ts +21 -0
- package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +1 -0
- package/dist-extensions/src/color/Color.d.ts +162 -0
- package/dist-extensions/src/color/Color.d.ts.map +1 -0
- package/dist-extensions/src/color/color_map.d.ts +155 -0
- package/dist-extensions/src/color/color_map.d.ts.map +1 -0
- package/dist-extensions/src/color/constants.d.ts +111 -0
- package/dist-extensions/src/color/constants.d.ts.map +1 -0
- package/dist-extensions/src/color/typedefs.d.ts +16 -0
- package/dist-extensions/src/color/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/color/util.d.ts +27 -0
- package/dist-extensions/src/color/util.d.ts.map +1 -0
- package/dist-extensions/src/config.d.ts +115 -0
- package/dist-extensions/src/config.d.ts.map +1 -0
- package/dist-extensions/src/constants.d.ts +35 -0
- package/dist-extensions/src/constants.d.ts.map +1 -0
- package/dist-extensions/src/controls/Control.d.ts +229 -0
- package/dist-extensions/src/controls/Control.d.ts.map +1 -0
- package/dist-extensions/src/controls/changeWidth.d.ts +13 -0
- package/dist-extensions/src/controls/changeWidth.d.ts.map +1 -0
- package/dist-extensions/src/controls/commonControls.d.ts +28 -0
- package/dist-extensions/src/controls/commonControls.d.ts.map +1 -0
- package/dist-extensions/src/controls/controlRendering.d.ts +29 -0
- package/dist-extensions/src/controls/controlRendering.d.ts.map +1 -0
- package/dist-extensions/src/controls/drag.d.ts +12 -0
- package/dist-extensions/src/controls/drag.d.ts.map +1 -0
- package/dist-extensions/src/controls/fireEvent.d.ts +3 -0
- package/dist-extensions/src/controls/fireEvent.d.ts.map +1 -0
- package/dist-extensions/src/controls/index.d.ts +14 -0
- package/dist-extensions/src/controls/index.d.ts.map +1 -0
- package/dist-extensions/src/controls/pathControl.d.ts +12 -0
- package/dist-extensions/src/controls/pathControl.d.ts.map +1 -0
- package/dist-extensions/src/controls/polyControl.d.ts +30 -0
- package/dist-extensions/src/controls/polyControl.d.ts.map +1 -0
- package/dist-extensions/src/controls/rotate.d.ts +12 -0
- package/dist-extensions/src/controls/rotate.d.ts.map +1 -0
- package/dist-extensions/src/controls/scale.d.ts +47 -0
- package/dist-extensions/src/controls/scale.d.ts.map +1 -0
- package/dist-extensions/src/controls/scaleSkew.d.ts +39 -0
- package/dist-extensions/src/controls/scaleSkew.d.ts.map +1 -0
- package/dist-extensions/src/controls/skew.d.ts +33 -0
- package/dist-extensions/src/controls/skew.d.ts.map +1 -0
- package/dist-extensions/src/controls/util.d.ts +41 -0
- package/dist-extensions/src/controls/util.d.ts.map +1 -0
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +10 -0
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +1 -0
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +9 -0
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +1 -0
- package/dist-extensions/src/env/browser.d.ts +3 -0
- package/dist-extensions/src/env/browser.d.ts.map +1 -0
- package/dist-extensions/src/env/index.d.ts +34 -0
- package/dist-extensions/src/env/index.d.ts.map +1 -0
- package/dist-extensions/src/env/types.d.ts +16 -0
- package/dist-extensions/src/env/types.d.ts.map +1 -0
- package/dist-extensions/src/filters/BaseFilter.d.ts +153 -0
- package/dist-extensions/src/filters/BaseFilter.d.ts.map +1 -0
- package/dist-extensions/src/filters/BlendColor.d.ts +68 -0
- package/dist-extensions/src/filters/BlendColor.d.ts.map +1 -0
- package/dist-extensions/src/filters/BlendImage.d.ts +99 -0
- package/dist-extensions/src/filters/BlendImage.d.ts.map +1 -0
- package/dist-extensions/src/filters/Blur.d.ts +50 -0
- package/dist-extensions/src/filters/Blur.d.ts.map +1 -0
- package/dist-extensions/src/filters/Brightness.d.ts +46 -0
- package/dist-extensions/src/filters/Brightness.d.ts.map +1 -0
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +27 -0
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +1 -0
- package/dist-extensions/src/filters/ColorMatrix.d.ts +66 -0
- package/dist-extensions/src/filters/ColorMatrix.d.ts.map +1 -0
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +15 -0
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +1 -0
- package/dist-extensions/src/filters/Composed.d.ts +47 -0
- package/dist-extensions/src/filters/Composed.d.ts.map +1 -0
- package/dist-extensions/src/filters/Contrast.d.ts +44 -0
- package/dist-extensions/src/filters/Contrast.d.ts.map +1 -0
- package/dist-extensions/src/filters/Convolute.d.ts +81 -0
- package/dist-extensions/src/filters/Convolute.d.ts.map +1 -0
- package/dist-extensions/src/filters/FilterBackend.d.ts +15 -0
- package/dist-extensions/src/filters/FilterBackend.d.ts.map +1 -0
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +7 -0
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +1 -0
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +1 -0
- package/dist-extensions/src/filters/Gamma.d.ts +58 -0
- package/dist-extensions/src/filters/Gamma.d.ts.map +1 -0
- package/dist-extensions/src/filters/Grayscale.d.ts +44 -0
- package/dist-extensions/src/filters/Grayscale.d.ts.map +1 -0
- package/dist-extensions/src/filters/HueRotation.d.ts +31 -0
- package/dist-extensions/src/filters/HueRotation.d.ts.map +1 -0
- package/dist-extensions/src/filters/Invert.d.ts +53 -0
- package/dist-extensions/src/filters/Invert.d.ts.map +1 -0
- package/dist-extensions/src/filters/Noise.d.ts +44 -0
- package/dist-extensions/src/filters/Noise.d.ts.map +1 -0
- package/dist-extensions/src/filters/Pixelate.d.ts +41 -0
- package/dist-extensions/src/filters/Pixelate.d.ts.map +1 -0
- package/dist-extensions/src/filters/RemoveColor.d.ts +53 -0
- package/dist-extensions/src/filters/RemoveColor.d.ts.map +1 -0
- package/dist-extensions/src/filters/Resize.d.ts +137 -0
- package/dist-extensions/src/filters/Resize.d.ts.map +1 -0
- package/dist-extensions/src/filters/Saturation.d.ts +46 -0
- package/dist-extensions/src/filters/Saturation.d.ts.map +1 -0
- package/dist-extensions/src/filters/Vibrance.d.ts +46 -0
- package/dist-extensions/src/filters/Vibrance.d.ts.map +1 -0
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +131 -0
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +1 -0
- package/dist-extensions/src/filters/filters.d.ts +23 -0
- package/dist-extensions/src/filters/filters.d.ts.map +1 -0
- package/dist-extensions/src/filters/index.d.ts +7 -0
- package/dist-extensions/src/filters/index.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts +4 -0
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/blendColor.d.ts +13 -0
- package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/blendImage.d.ts +4 -0
- package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/blur.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/blur.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/brightness.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/brightness.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/constrast.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/constrast.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/convolute.d.ts +11 -0
- package/dist-extensions/src/filters/shaders/convolute.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/gamma.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/gamma.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/grayscale.d.ts +3 -0
- package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/invert.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/invert.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/noise.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/noise.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/pixelate.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/removeColor.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/saturation.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/saturation.d.ts.map +1 -0
- package/dist-extensions/src/filters/shaders/vibrance.d.ts +2 -0
- package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +1 -0
- package/dist-extensions/src/filters/typedefs.d.ts +70 -0
- package/dist-extensions/src/filters/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/filters/utils.d.ts +10 -0
- package/dist-extensions/src/filters/utils.d.ts.map +1 -0
- package/dist-extensions/src/gradient/Gradient.d.ts +156 -0
- package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -0
- package/dist-extensions/src/gradient/constants.d.ts +15 -0
- package/dist-extensions/src/gradient/constants.d.ts.map +1 -0
- package/dist-extensions/src/gradient/index.d.ts +3 -0
- package/dist-extensions/src/gradient/index.d.ts.map +1 -0
- package/dist-extensions/src/gradient/parser/misc.d.ts +4 -0
- package/dist-extensions/src/gradient/parser/misc.d.ts.map +1 -0
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +3 -0
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +1 -0
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts +17 -0
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +1 -0
- package/dist-extensions/src/gradient/typedefs.d.ts +93 -0
- package/dist-extensions/src/gradient/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts +13 -0
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +1 -0
- package/dist-extensions/src/parser/attributes.d.ts +6 -0
- package/dist-extensions/src/parser/attributes.d.ts.map +1 -0
- package/dist-extensions/src/parser/constants.d.ts +41 -0
- package/dist-extensions/src/parser/constants.d.ts.map +1 -0
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +2 -0
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +1 -0
- package/dist-extensions/src/parser/elementMatchesRule.d.ts +5 -0
- package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +1 -0
- package/dist-extensions/src/parser/elements_parser.d.ts +33 -0
- package/dist-extensions/src/parser/elements_parser.d.ts.map +1 -0
- package/dist-extensions/src/parser/getCSSRules.d.ts +8 -0
- package/dist-extensions/src/parser/getCSSRules.d.ts.map +1 -0
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +6 -0
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +1 -0
- package/dist-extensions/src/parser/getGradientDefs.d.ts +7 -0
- package/dist-extensions/src/parser/getGradientDefs.d.ts.map +1 -0
- package/dist-extensions/src/parser/getMultipleNodes.d.ts +2 -0
- package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +1 -0
- package/dist-extensions/src/parser/getSvgRegex.d.ts +2 -0
- package/dist-extensions/src/parser/getSvgRegex.d.ts.map +1 -0
- package/dist-extensions/src/parser/getTagName.d.ts +2 -0
- package/dist-extensions/src/parser/getTagName.d.ts.map +1 -0
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +2 -0
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +1 -0
- package/dist-extensions/src/parser/loadSVGFromString.d.ts +18 -0
- package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +1 -0
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts +19 -0
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +1 -0
- package/dist-extensions/src/parser/normalizeAttr.d.ts +3 -0
- package/dist-extensions/src/parser/normalizeAttr.d.ts.map +1 -0
- package/dist-extensions/src/parser/normalizeValue.d.ts +2 -0
- package/dist-extensions/src/parser/normalizeValue.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseAttributes.d.ts +10 -0
- package/dist-extensions/src/parser/parseAttributes.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts +10 -0
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +1 -0
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts +10 -0
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseSVGDocument.d.ts +22 -0
- package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts +9 -0
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseStyleObject.d.ts +8 -0
- package/dist-extensions/src/parser/parseStyleObject.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseStyleString.d.ts +8 -0
- package/dist-extensions/src/parser/parseStyleString.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts +11 -0
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +1 -0
- package/dist-extensions/src/parser/parseUseDirectives.d.ts +2 -0
- package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +1 -0
- package/dist-extensions/src/parser/percent.d.ts +9 -0
- package/dist-extensions/src/parser/percent.d.ts.map +1 -0
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +1 -0
- package/dist-extensions/src/parser/selectorMatches.d.ts +2 -0
- package/dist-extensions/src/parser/selectorMatches.d.ts.map +1 -0
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +6 -0
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +1 -0
- package/dist-extensions/src/parser/typedefs.d.ts +10 -0
- package/dist-extensions/src/parser/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/shapes/ActiveSelection.d.ts +109 -0
- package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Circle.d.ts +111 -0
- package/dist-extensions/src/shapes/Circle.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Ellipse.d.ts +88 -0
- package/dist-extensions/src/shapes/Ellipse.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Group.d.ts +303 -0
- package/dist-extensions/src/shapes/Group.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/IText.d.ts +314 -0
- package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +299 -0
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +198 -0
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +1 -0
- package/dist-extensions/src/shapes/IText/constants.d.ts +13 -0
- package/dist-extensions/src/shapes/IText/constants.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Image.d.ts +312 -0
- package/dist-extensions/src/shapes/Image.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Line.d.ts +122 -0
- package/dist-extensions/src/shapes/Line.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts +33 -0
- package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts +11 -0
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +72 -0
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +317 -0
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/Object.d.ts +614 -0
- package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +237 -0
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts +96 -0
- package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/StackedObject.d.ts +60 -0
- package/dist-extensions/src/shapes/Object/StackedObject.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts +8 -0
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +88 -0
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +37 -0
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +63 -0
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +66 -0
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +43 -0
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +34 -0
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Object/types/index.d.ts +6 -0
- package/dist-extensions/src/shapes/Object/types/index.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Path.d.ts +215 -0
- package/dist-extensions/src/shapes/Path.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Polygon.d.ts +7 -0
- package/dist-extensions/src/shapes/Polygon.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Polyline.d.ts +156 -0
- package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Rect.d.ts +83 -0
- package/dist-extensions/src/shapes/Rect.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Text/StyledText.d.ts +128 -0
- package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Text/Text.d.ts +697 -0
- package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +47 -0
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Text/constants.d.ts +13 -0
- package/dist-extensions/src/shapes/Text/constants.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Textbox.d.ts +226 -0
- package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Triangle.d.ts +27 -0
- package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -0
- package/dist-extensions/src/typedefs.d.ts +97 -0
- package/dist-extensions/src/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/AnimationBase.d.ts +54 -0
- package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +3 -0
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +29 -0
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +10 -0
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts +11 -0
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts +10 -0
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/animate.d.ts +37 -0
- package/dist-extensions/src/util/animation/animate.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/easing.d.ts +130 -0
- package/dist-extensions/src/util/animation/easing.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/index.d.ts +3 -0
- package/dist-extensions/src/util/animation/index.d.ts.map +1 -0
- package/dist-extensions/src/util/animation/types.d.ts +87 -0
- package/dist-extensions/src/util/animation/types.d.ts.map +1 -0
- package/dist-extensions/src/util/applyMixins.d.ts +8 -0
- package/dist-extensions/src/util/applyMixins.d.ts.map +1 -0
- package/dist-extensions/src/util/dom_event.d.ts +6 -0
- package/dist-extensions/src/util/dom_event.d.ts.map +1 -0
- package/dist-extensions/src/util/dom_misc.d.ts +12 -0
- package/dist-extensions/src/util/dom_misc.d.ts.map +1 -0
- package/dist-extensions/src/util/dom_style.d.ts +7 -0
- package/dist-extensions/src/util/dom_style.d.ts.map +1 -0
- package/dist-extensions/src/util/index.d.ts +37 -0
- package/dist-extensions/src/util/index.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +2 -0
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/cloneStyles.d.ts +3 -0
- package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/console.d.ts +8 -0
- package/dist-extensions/src/util/internals/console.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/dom_request.d.ts +16 -0
- package/dist-extensions/src/util/internals/dom_request.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/findRight.d.ts +2 -0
- package/dist-extensions/src/util/internals/findRight.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/getRandomInt.d.ts +8 -0
- package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/ifNaN.d.ts +8 -0
- package/dist-extensions/src/util/internals/ifNaN.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/removeFromArray.d.ts +9 -0
- package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +1 -0
- package/dist-extensions/src/util/internals/uid.d.ts +2 -0
- package/dist-extensions/src/util/internals/uid.d.ts.map +1 -0
- package/dist-extensions/src/util/lang_string.d.ts +22 -0
- package/dist-extensions/src/util/lang_string.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/capValue.d.ts +2 -0
- package/dist-extensions/src/util/misc/capValue.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/cos.d.ts +10 -0
- package/dist-extensions/src/util/misc/cos.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/dom.d.ts +28 -0
- package/dist-extensions/src/util/misc/dom.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/findScaleTo.d.ts +20 -0
- package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts +11 -0
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/isTransparent.d.ts +11 -0
- package/dist-extensions/src/util/misc/isTransparent.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/matrix.d.ts +170 -0
- package/dist-extensions/src/util/misc/matrix.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +23 -0
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/objectEnlive.d.ts +45 -0
- package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/objectTransforms.d.ts +62 -0
- package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/pick.d.ts +9 -0
- package/dist-extensions/src/util/misc/pick.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/planeChange.d.ts +64 -0
- package/dist-extensions/src/util/misc/planeChange.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +52 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +90 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +27 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts +12 -0
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts +23 -0
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +14 -0
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts +9 -0
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/rotatePoint.d.ts +12 -0
- package/dist-extensions/src/util/misc/rotatePoint.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/sin.d.ts +10 -0
- package/dist-extensions/src/util/misc/sin.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/svgParsing.d.ts +46 -0
- package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/textStyles.d.ts +32 -0
- package/dist-extensions/src/util/misc/textStyles.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/toFixed.d.ts +8 -0
- package/dist-extensions/src/util/misc/toFixed.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/vectors.d.ts +72 -0
- package/dist-extensions/src/util/misc/vectors.d.ts.map +1 -0
- package/dist-extensions/src/util/path/index.d.ts +95 -0
- package/dist-extensions/src/util/path/index.d.ts.map +1 -0
- package/dist-extensions/src/util/path/regex.d.ts +2 -0
- package/dist-extensions/src/util/path/regex.d.ts.map +1 -0
- package/dist-extensions/src/util/path/typedefs.d.ts +221 -0
- package/dist-extensions/src/util/path/typedefs.d.ts.map +1 -0
- package/dist-extensions/src/util/transform_matrix_removal.d.ts +14 -0
- package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +1 -0
- package/dist-extensions/src/util/typeAssertions.d.ts +13 -0
- package/dist-extensions/src/util/typeAssertions.d.ts.map +1 -0
- package/eslint.config.mjs +108 -0
- package/extensions/README.MD +27 -0
- package/extensions/aligning_guidelines/README.MD +22 -0
- package/extensions/aligning_guidelines/constant.ts +10 -0
- package/extensions/aligning_guidelines/index.ts +166 -0
- package/extensions/aligning_guidelines/typedefs.ts +36 -0
- package/extensions/aligning_guidelines/util/basic.spec.ts +31 -0
- package/extensions/aligning_guidelines/util/basic.ts +20 -0
- package/extensions/aligning_guidelines/util/collect-line.ts +172 -0
- package/extensions/aligning_guidelines/util/collect-point.ts +83 -0
- package/extensions/aligning_guidelines/util/draw.ts +74 -0
- package/extensions/aligning_guidelines/util/get-objects-by-target.ts +45 -0
- package/extensions/index.ts +4 -0
- package/jest.config.js +1 -1
- package/jest.extend.ts +14 -15
- package/package.json +17 -12
- package/playwright.setup.ts +5 -5
- package/rollup.config.mjs +46 -4
- package/scripts/build.mjs +1 -1
- package/scripts/buildLock.mjs +5 -5
- package/scripts/buildStats.mjs +2 -2
- package/scripts/git.mjs +1 -1
- package/scripts/index.mjs +34 -32
- package/scripts/sandbox.mjs +15 -15
- package/src/ClassRegistry.spec.ts +1 -1
- package/src/ClassRegistry.ts +1 -1
- package/src/Collection.ts +9 -9
- package/src/EventTypeDefs.ts +2 -2
- package/src/Intersection.spec.ts +2 -2
- package/src/Intersection.ts +11 -11
- package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +3 -3
- package/src/LayoutManager/ActiveSelectionLayoutManager.ts +2 -2
- package/src/LayoutManager/LayoutManager.spec.ts +17 -17
- package/src/LayoutManager/LayoutManager.ts +15 -15
- package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +3 -3
- package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +1 -1
- package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +4 -4
- package/src/LayoutManager/LayoutStrategies/utils.ts +4 -4
- package/src/LayoutManager/types.ts +12 -13
- package/src/Observable.ts +7 -7
- package/src/Pattern/Pattern.ts +20 -10
- package/src/Point.ts +3 -3
- package/src/Shadow.ts +7 -7
- package/src/brushes/CircleBrush.ts +1 -1
- package/src/brushes/PatternBrush.ts +1 -1
- package/src/brushes/PencilBrush.ts +1 -1
- package/src/brushes/SprayBrush.ts +3 -3
- package/src/canvas/Canvas.ts +38 -35
- package/src/canvas/DOMManagers/CanvasDOMManager.ts +2 -2
- package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +1 -1
- package/src/canvas/DOMManagers/util.ts +2 -2
- package/src/canvas/SelectableCanvas.spec.ts +8 -8
- package/src/canvas/SelectableCanvas.ts +20 -20
- package/src/canvas/StaticCanvas.ts +44 -43
- package/src/canvas/StaticCanvasOptions.ts +0 -1
- package/src/canvas/TextEditingManager.ts +1 -1
- package/src/canvas/__tests__/eventData.test.ts +17 -17
- package/src/color/Color.ts +3 -2
- package/src/color/color.test.ts +2 -2
- package/src/color/typedefs.ts +1 -1
- package/src/color/util.ts +1 -1
- package/src/config.ts +1 -1
- package/src/controls/Control.spec.ts +8 -8
- package/src/controls/Control.ts +14 -14
- package/src/controls/changeWidth.test.ts +2 -2
- package/src/controls/changeWidth.ts +4 -4
- package/src/controls/controlRendering.ts +4 -4
- package/src/controls/drag.ts +1 -1
- package/src/controls/fireEvent.ts +1 -1
- package/src/controls/pathControl.spec.ts +9 -9
- package/src/controls/pathControl.ts +20 -20
- package/src/controls/polyControl.spec.ts +6 -6
- package/src/controls/polyControl.ts +11 -11
- package/src/controls/rotate.ts +4 -4
- package/src/controls/scale.test.ts +9 -9
- package/src/controls/scale.ts +13 -13
- package/src/controls/scaleSkew.ts +3 -3
- package/src/controls/skew.ts +8 -8
- package/src/controls/util.ts +6 -6
- package/src/controls/wrapWithFireEvent.ts +2 -2
- package/src/controls/wrapWithFixedAnchor.spec.ts +5 -5
- package/src/controls/wrapWithFixedAnchor.ts +2 -2
- package/src/env/node.ts +2 -2
- package/src/filters/BaseFilter.ts +27 -25
- package/src/filters/BlendColor.ts +1 -1
- package/src/filters/BlendImage.ts +4 -4
- package/src/filters/Blur.ts +1 -1
- package/src/filters/Boilerplate.ts +1 -1
- package/src/filters/Brightness.ts +1 -1
- package/src/filters/Canvas2dFilterBackend.ts +1 -1
- package/src/filters/ColorMatrix.ts +2 -2
- package/src/filters/ColorMatrixFilters.ts +7 -7
- package/src/filters/Composed.ts +5 -5
- package/src/filters/Contrast.ts +1 -1
- package/src/filters/Convolute.ts +1 -1
- package/src/filters/GLProbes/WebGLProbe.ts +2 -2
- package/src/filters/Gamma.ts +1 -1
- package/src/filters/Grayscale.ts +1 -1
- package/src/filters/Invert.ts +1 -1
- package/src/filters/Noise.ts +1 -1
- package/src/filters/Pixelate.ts +1 -1
- package/src/filters/RemoveColor.ts +1 -1
- package/src/filters/Resize.ts +9 -9
- package/src/filters/Saturation.ts +1 -1
- package/src/filters/Vibrance.ts +1 -1
- package/src/filters/WebGLFilterBackend.ts +10 -10
- package/src/filters/typedefs.ts +1 -3
- package/src/filters/utils.ts +3 -3
- package/src/gradient/Gradient.spec.ts +19 -19
- package/src/gradient/Gradient.ts +51 -50
- package/src/gradient/parser/parseColorStops.ts +3 -3
- package/src/gradient/parser/parseCoords.ts +28 -25
- package/src/mixins/eraser_brush.mixin.ts +21 -21
- package/src/parkinglot/straighten.ts +1 -1
- package/src/parser/applyViewboxTransform.ts +2 -2
- package/src/parser/constants.ts +2 -2
- package/src/parser/elements_parser.ts +13 -13
- package/src/parser/getCSSRules.ts +1 -1
- package/src/parser/getGlobalStylesForElement.ts +1 -1
- package/src/parser/getGradientDefs.ts +1 -1
- package/src/parser/getMultipleNodes.ts +2 -2
- package/src/parser/loadSVGFromString.test.ts +1 -4
- package/src/parser/loadSVGFromString.ts +1 -1
- package/src/parser/loadSVGFromURL.ts +1 -1
- package/src/parser/normalizeAttr.ts +1 -1
- package/src/parser/normalizeValue.ts +2 -2
- package/src/parser/parseAttributes.ts +3 -3
- package/src/parser/parseFontDeclaration.ts +1 -1
- package/src/parser/parseSVGDocument.ts +3 -3
- package/src/parser/parseStyleObject.ts +1 -1
- package/src/parser/parseStyleString.ts +1 -1
- package/src/parser/parseTransformAttribute.ts +1 -1
- package/src/parser/parseUseDirectives.ts +1 -1
- package/src/parser/percent.ts +4 -4
- package/src/parser/recursivelyParseGradientsXlink.ts +1 -1
- package/src/parser/setStrokeFillOpacity.ts +1 -1
- package/src/parser/typedefs.ts +1 -1
- package/src/shapes/ActiveSelection.spec.ts +1 -1
- package/src/shapes/ActiveSelection.ts +4 -4
- package/src/shapes/Circle.ts +5 -5
- package/src/shapes/Ellipse.ts +4 -4
- package/src/shapes/Group.spec.ts +5 -5
- package/src/shapes/Group.ts +19 -17
- package/src/shapes/IText/DraggableTextDelegate.ts +9 -10
- package/src/shapes/IText/IText.test.ts +1 -1
- package/src/shapes/IText/IText.ts +12 -12
- package/src/shapes/IText/ITextBehavior.test.ts +2 -2
- package/src/shapes/IText/ITextBehavior.ts +21 -21
- package/src/shapes/IText/ITextClickBehavior.ts +2 -2
- package/src/shapes/IText/ITextKeyBehavior.test.ts +2 -2
- package/src/shapes/IText/ITextKeyBehavior.ts +13 -13
- package/src/shapes/Image.ts +16 -16
- package/src/shapes/Line.ts +4 -4
- package/src/shapes/Object/AnimatableObject.ts +13 -10
- package/src/shapes/Object/FabricObject.ts +7 -3
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +9 -9
- package/src/shapes/Object/InteractiveObject.spec.ts +3 -3
- package/src/shapes/Object/InteractiveObject.ts +32 -32
- package/src/shapes/Object/Object.ts +33 -31
- package/src/shapes/Object/ObjectGeometry.ts +9 -9
- package/src/shapes/Object/ObjectOrigin.ts +11 -11
- package/src/shapes/Object/StackedObject.ts +3 -4
- package/src/shapes/Path.ts +14 -14
- package/src/shapes/Polyline.spec.ts +1 -1
- package/src/shapes/Polyline.ts +15 -16
- package/src/shapes/Rect.ts +6 -6
- package/src/shapes/Text/StyledText.spec.ts +2 -2
- package/src/shapes/Text/StyledText.ts +7 -7
- package/src/shapes/Text/Text.spec.ts +1 -1
- package/src/shapes/Text/Text.ts +33 -33
- package/src/shapes/Text/TextSVGExportMixin.spec.ts +1 -1
- package/src/shapes/Text/TextSVGExportMixin.ts +23 -23
- package/src/shapes/Textbox.ts +7 -7
- package/src/shapes/Triangle.ts +1 -1
- package/src/typedefs.ts +3 -3
- package/src/util/animation/AnimationBase.ts +2 -2
- package/src/util/animation/AnimationRegistry.ts +1 -1
- package/src/util/animation/ArrayAnimation.ts +2 -2
- package/src/util/animation/ColorAnimation.ts +5 -5
- package/src/util/animation/ValueAnimation.ts +1 -1
- package/src/util/animation/animate.ts +6 -6
- package/src/util/animation/animations.spec.ts +7 -7
- package/src/util/animation/easing.ts +1 -1
- package/src/util/animation/types.ts +5 -6
- package/src/util/applyMixins.ts +2 -2
- package/src/util/dom_style.ts +2 -2
- package/src/util/internals/cloneDeep.ts +6 -0
- package/src/util/internals/cloneStyles.spec.ts +46 -0
- package/src/util/internals/cloneStyles.ts +12 -0
- package/src/util/internals/findRight.ts +1 -1
- package/src/util/internals/getRandomInt.test.ts +1 -1
- package/src/util/misc/boundingBoxFromPoints.ts +1 -1
- package/src/util/misc/dom.ts +3 -3
- package/src/util/misc/findScaleTo.ts +2 -2
- package/src/util/misc/groupSVGElements.ts +1 -1
- package/src/util/misc/isTransparent.ts +1 -1
- package/src/util/misc/matrix.ts +6 -6
- package/src/util/misc/objectEnlive.ts +9 -9
- package/src/util/misc/objectTransforms.ts +5 -5
- package/src/util/misc/pick.ts +2 -2
- package/src/util/misc/planeChange.spec.ts +9 -9
- package/src/util/misc/planeChange.ts +5 -5
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +7 -7
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +16 -16
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +2 -2
- package/src/util/misc/projectStroke/index.ts +7 -7
- package/src/util/misc/resolveOrigin.ts +1 -1
- package/src/util/misc/rotatePoint.ts +1 -1
- package/src/util/misc/svgParsing.ts +5 -5
- package/src/util/misc/textStyles.ts +6 -6
- package/src/util/misc/vectors.ts +1 -1
- package/src/util/path/index.spec.ts +3 -3
- package/src/util/path/index.ts +30 -30
- package/src/util/path/typechecks.ts +22 -22
- package/src/util/path/typedefs.ts +14 -17
- package/src/util/transform_matrix_removal.ts +3 -3
- package/src/util/typeAssertions.ts +4 -4
- package/tsconfig-extensions.json +108 -0
- package/tsconfig.json +4 -3
- package/.eslintignore +0 -3
- package/.eslintrc.js +0 -60
- package/.eslintrc.json +0 -143
- package/.eslintrc_tests +0 -58
- package/dist/src/util/internals/cloneDeep.min.mjs +0 -2
- package/dist/src/util/internals/cloneDeep.min.mjs.map +0 -1
- package/dist/src/util/internals/cloneDeep.mjs +0 -4
- package/dist/src/util/internals/cloneDeep.mjs.map +0 -1
- package/dist/src/util/internals/index.d.ts +0 -5
- package/dist/src/util/internals/index.d.ts.map +0 -1
- package/src/benchmarks/README.md +0 -7
- package/src/benchmarks/calcCornerCoords.mjs +0 -117
- package/src/benchmarks/calcTransformMatrix.mjs +0 -104
- package/src/benchmarks/pathCloning.mjs +0 -111
- package/src/benchmarks/pathData.mjs +0 -5
- package/src/benchmarks/raycasting.mjs +0 -152
- package/src/benchmarks/transformMatrixKey.mjs +0 -97
- package/src/util/internals/index.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/util/path/index.ts"],"sourcesContent":["import { cache } from '../../cache';\nimport { config } from '../../config';\nimport { halfPI, PiBy180 } from '../../constants';\nimport type { TMat2D, TRadian, TRectBounds } from '../../typedefs';\nimport { cos } from '../misc/cos';\nimport { multiplyTransformMatrices, transformPoint } from '../misc/matrix';\nimport { sin } from '../misc/sin';\nimport { toFixed } from '../misc/toFixed';\nimport type {\n TCurveInfo,\n TComplexPathData,\n TParsedAbsoluteCubicCurveCommand,\n TPathSegmentInfo,\n TPointAngle,\n TSimpleParsedCommand,\n TSimplePathData,\n TPathSegmentCommandInfo,\n TComplexParsedCommand,\n TPathSegmentInfoCommon,\n TEndPathInfo,\n TParsedArcCommand,\n} from './typedefs';\nimport type { XY } from '../../Point';\nimport { Point } from '../../Point';\nimport { rePathCommand } from './regex';\nimport { cleanupSvgAttribute } from '../internals/cleanupSvgAttribute';\n\n/**\n * Commands that may be repeated\n */\nconst repeatedCommands: Record<string, string | undefined> = {\n m: 'l',\n M: 'L',\n};\n\n/**\n * Convert an arc of a rotated ellipse to a Bezier Curve\n * @param {TRadian} theta1 start of the arc\n * @param {TRadian} theta2 end of the arc\n * @param cosTh cosine of the angle of rotation\n * @param sinTh sine of the angle of rotation\n * @param rx x-axis radius (before rotation)\n * @param ry y-axis radius (before rotation)\n * @param cx1 center x of the ellipse\n * @param cy1 center y of the ellipse\n * @param mT\n * @param fromX starting point of arc x\n * @param fromY starting point of arc y\n */\nconst segmentToBezier = (\n theta1: TRadian,\n theta2: TRadian,\n cosTh: number,\n sinTh: number,\n rx: number,\n ry: number,\n cx1: number,\n cy1: number,\n mT: number,\n fromX: number,\n fromY: number\n): TParsedAbsoluteCubicCurveCommand => {\n const costh1 = cos(theta1),\n sinth1 = sin(theta1),\n costh2 = cos(theta2),\n sinth2 = sin(theta2),\n toX = cosTh * rx * costh2 - sinTh * ry * sinth2 + cx1,\n toY = sinTh * rx * costh2 + cosTh * ry * sinth2 + cy1,\n cp1X = fromX + mT * (-cosTh * rx * sinth1 - sinTh * ry * costh1),\n cp1Y = fromY + mT * (-sinTh * rx * sinth1 + cosTh * ry * costh1),\n cp2X = toX + mT * (cosTh * rx * sinth2 + sinTh * ry * costh2),\n cp2Y = toY + mT * (sinTh * rx * sinth2 - cosTh * ry * costh2);\n\n return ['C', cp1X, cp1Y, cp2X, cp2Y, toX, toY];\n};\n\n/**\n * Adapted from {@link http://dxr.mozilla.org/mozilla-central/source/dom/svg/SVGPathDataParser.cpp}\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n * @param toX\n * @param toY\n * @param rx\n * @param ry\n * @param {number} large 0 or 1 flag\n * @param {number} sweep 0 or 1 flag\n * @param rotateX\n */\nconst arcToSegments = (\n toX: number,\n toY: number,\n rx: number,\n ry: number,\n large: number,\n sweep: number,\n rotateX: TRadian\n): TParsedAbsoluteCubicCurveCommand[] => {\n if (rx === 0 || ry === 0) {\n return [];\n }\n let fromX = 0,\n fromY = 0,\n root = 0;\n const PI = Math.PI,\n theta = rotateX * PiBy180,\n sinTheta = sin(theta),\n cosTh = cos(theta),\n px = 0.5 * (-cosTh * toX - sinTheta * toY),\n py = 0.5 * (-cosTh * toY + sinTheta * toX),\n rx2 = rx ** 2,\n ry2 = ry ** 2,\n py2 = py ** 2,\n px2 = px ** 2,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2;\n let _rx = Math.abs(rx);\n let _ry = Math.abs(ry);\n\n if (pl < 0) {\n const s = Math.sqrt(1 - pl / (rx2 * ry2));\n _rx *= s;\n _ry *= s;\n } else {\n root =\n (large === sweep ? -1.0 : 1.0) * Math.sqrt(pl / (rx2 * py2 + ry2 * px2));\n }\n\n const cx = (root * _rx * py) / _ry,\n cy = (-root * _ry * px) / _rx,\n cx1 = cosTh * cx - sinTheta * cy + toX * 0.5,\n cy1 = sinTheta * cx + cosTh * cy + toY * 0.5;\n let mTheta = calcVectorAngle(1, 0, (px - cx) / _rx, (py - cy) / _ry);\n let dtheta = calcVectorAngle(\n (px - cx) / _rx,\n (py - cy) / _ry,\n (-px - cx) / _rx,\n (-py - cy) / _ry\n );\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n } else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n const segments = Math.ceil(Math.abs((dtheta / PI) * 2)),\n result = [],\n mDelta = dtheta / segments,\n mT =\n ((8 / 3) * Math.sin(mDelta / 4) * Math.sin(mDelta / 4)) /\n Math.sin(mDelta / 2);\n let th3 = mTheta + mDelta;\n\n for (let i = 0; i < segments; i++) {\n result[i] = segmentToBezier(\n mTheta,\n th3,\n cosTh,\n sinTheta,\n _rx,\n _ry,\n cx1,\n cy1,\n mT,\n fromX,\n fromY\n );\n fromX = result[i][5];\n fromY = result[i][6];\n mTheta = th3;\n th3 += mDelta;\n }\n return result;\n};\n\n/**\n * @private\n * Calculate the angle between two vectors\n * @param ux u endpoint x\n * @param uy u endpoint y\n * @param vx v endpoint x\n * @param vy v endpoint y\n */\nconst calcVectorAngle = (\n ux: number,\n uy: number,\n vx: number,\n vy: number\n): TRadian => {\n const ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n } else {\n return 2 * Math.PI - (ta - tb);\n }\n};\n\n// functions for the Cubic beizer\n// taken from: https://github.com/konvajs/konva/blob/7.0.5/src/shapes/Path.ts#L350\nconst CB1 = (t: number) => t ** 3;\nconst CB2 = (t: number) => 3 * t ** 2 * (1 - t);\nconst CB3 = (t: number) => 3 * t * (1 - t) ** 2;\nconst CB4 = (t: number) => (1 - t) ** 3;\n\n/**\n * Calculate bounding box of a cubic Bezier curve\n * Taken from http://jsbin.com/ivomiq/56/edit (no credits available)\n * TODO: can we normalize this with the starting points set at 0 and then translated the bbox?\n * @param {number} begx starting point\n * @param {number} begy\n * @param {number} cp1x first control point\n * @param {number} cp1y\n * @param {number} cp2x second control point\n * @param {number} cp2y\n * @param {number} endx end of bezier\n * @param {number} endy\n * @return {TRectBounds} the rectangular bounds\n */\nexport function getBoundsOfCurve(\n begx: number,\n begy: number,\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n endx: number,\n endy: number\n): TRectBounds {\n let argsString: string;\n if (config.cachesBoundsOfCurve) {\n // eslint-disable-next-line\n argsString = [...arguments].join();\n if (cache.boundsOfCurveCache[argsString]) {\n return cache.boundsOfCurveCache[argsString];\n }\n }\n\n const sqrt = Math.sqrt,\n abs = Math.abs,\n tvalues = [],\n bounds: [[x: number, y: number], [x: number, y: number]] = [\n [0, 0],\n [0, 0],\n ];\n\n let b = 6 * begx - 12 * cp1x + 6 * cp2x;\n let a = -3 * begx + 9 * cp1x - 9 * cp2x + 3 * endx;\n let c = 3 * cp1x - 3 * begx;\n\n for (let i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * begy - 12 * cp1y + 6 * cp2y;\n a = -3 * begy + 9 * cp1y - 9 * cp2y + 3 * endy;\n c = 3 * cp1y - 3 * begy;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n const t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n const b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n const sqrtb2ac = sqrt(b2ac);\n const t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n const t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length;\n const jlen = j;\n const iterator = getPointOnCubicBezierIterator(\n begx,\n begy,\n cp1x,\n cp1y,\n cp2x,\n cp2y,\n endx,\n endy\n );\n while (j--) {\n const { x, y } = iterator(tvalues[j]);\n bounds[0][j] = x;\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = begx;\n bounds[1][jlen] = begy;\n bounds[0][jlen + 1] = endx;\n bounds[1][jlen + 1] = endy;\n const result: TRectBounds = [\n new Point(Math.min(...bounds[0]), Math.min(...bounds[1])),\n new Point(Math.max(...bounds[0]), Math.max(...bounds[1])),\n ];\n if (config.cachesBoundsOfCurve) {\n cache.boundsOfCurveCache[argsString!] = result;\n }\n return result;\n}\n\n/**\n * Converts arc to a bunch of cubic Bezier curves\n * @param {number} fx starting point x\n * @param {number} fy starting point y\n * @param {TParsedArcCommand} coords Arc command\n */\nexport const fromArcToBeziers = (\n fx: number,\n fy: number,\n [_, rx, ry, rot, large, sweep, tx, ty]: TParsedArcCommand\n): TParsedAbsoluteCubicCurveCommand[] => {\n const segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (let i = 0, len = segsNorm.length; i < len; i++) {\n segsNorm[i][1] += fx;\n segsNorm[i][2] += fy;\n segsNorm[i][3] += fx;\n segsNorm[i][4] += fy;\n segsNorm[i][5] += fx;\n segsNorm[i][6] += fy;\n }\n return segsNorm;\n};\n\n/**\n * This function takes a parsed SVG path and makes it simpler for fabricJS logic.\n * Simplification consist of:\n * - All commands converted to absolute (lowercase to uppercase)\n * - S converted to C\n * - T converted to Q\n * - A converted to C\n * @param {TComplexPathData} path the array of commands of a parsed SVG path for `Path`\n * @return {TSimplePathData} the simplified array of commands of a parsed SVG path for `Path`\n * TODO: figure out how to remove the type assertions in a nice way\n */\nexport const makePathSimpler = (path: TComplexPathData): TSimplePathData => {\n // x and y represent the last point of the path, AKA the previous command point.\n // we add them to each relative command to make it an absolute comment.\n // we also swap the v V h H with L, because are easier to transform.\n let x = 0,\n y = 0;\n // x1 and y1 represent the last point of the subpath. the subpath is started with\n // m or M command. When a z or Z command is drawn, x and y need to be resetted to\n // the last x1 and y1.\n let x1 = 0,\n y1 = 0;\n // previous will host the letter of the previous command, to handle S and T.\n // controlX and controlY will host the previous reflected control point\n const destinationPath: TSimplePathData = [];\n let previous,\n // placeholders\n controlX = 0,\n controlY = 0;\n for (const parsedCommand of path) {\n const current: TComplexParsedCommand = [...parsedCommand];\n let converted: TSimpleParsedCommand | undefined;\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'L':\n x = current[1];\n y = current[2];\n converted = ['L', x, y];\n break;\n case 'h': // horizontal lineto, relative\n current[1] += x;\n // falls through\n case 'H':\n x = current[1];\n converted = ['L', x, y];\n break;\n case 'v': // vertical lineto, relative\n current[1] += y;\n // falls through\n case 'V':\n y = current[1];\n converted = ['L', x, y];\n break;\n case 'm': // moveTo, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'M':\n x = current[1];\n y = current[2];\n x1 = current[1];\n y1 = current[2];\n converted = ['M', x, y];\n break;\n case 'c': // bezierCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n current[5] += x;\n current[6] += y;\n // falls through\n case 'C':\n controlX = current[3];\n controlY = current[4];\n x = current[5];\n y = current[6];\n converted = ['C', current[1], current[2], controlX, controlY, x, y];\n break;\n case 's': // shorthand cubic bezierCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'S':\n // would be sScC but since we are swapping sSc for C, we check just that.\n if (previous === 'C') {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n } else {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[3];\n y = current[4];\n converted = ['C', controlX, controlY, current[1], current[2], x, y];\n // converted[3] and converted[4] are NOW the second control point.\n // we keep it for the next reflection.\n controlX = converted[3];\n controlY = converted[4];\n break;\n case 'q': // quadraticCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'Q':\n controlX = current[1];\n controlY = current[2];\n x = current[3];\n y = current[4];\n converted = ['Q', controlX, controlY, x, y];\n break;\n case 't': // shorthand quadraticCurveTo, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'T':\n if (previous === 'Q') {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n } else {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[1];\n y = current[2];\n converted = ['Q', controlX, controlY, x, y];\n break;\n case 'a':\n current[6] += x;\n current[7] += y;\n // falls through\n case 'A':\n fromArcToBeziers(x, y, current).forEach((b) => destinationPath.push(b));\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = x1;\n y = y1;\n converted = ['Z'];\n break;\n default:\n }\n if (converted) {\n destinationPath.push(converted);\n previous = converted[0];\n } else {\n previous = '';\n }\n }\n return destinationPath;\n};\n\n// todo verify if we can just use the point class here\n/**\n * Calc length from point x1,y1 to x2,y2\n * @param {number} x1 starting point x\n * @param {number} y1 starting point y\n * @param {number} x2 starting point x\n * @param {number} y2 starting point y\n * @return {number} length of segment\n */\nconst calcLineLength = (\n x1: number,\n y1: number,\n x2: number,\n y2: number\n): number => Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n\n/**\n * Get an iterator that takes a percentage and returns a point\n * @param {number} begx\n * @param {number} begy\n * @param {number} cp1x\n * @param {number} cp1y\n * @param {number} cp2x\n * @param {number} cp2y\n * @param {number} endx\n * @param {number} endy\n */\nconst getPointOnCubicBezierIterator =\n (\n begx: number,\n begy: number,\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n endx: number,\n endy: number\n ) =>\n (pct: number) => {\n const c1 = CB1(pct),\n c2 = CB2(pct),\n c3 = CB3(pct),\n c4 = CB4(pct);\n return new Point(\n endx * c1 + cp2x * c2 + cp1x * c3 + begx * c4,\n endy * c1 + cp2y * c2 + cp1y * c3 + begy * c4\n );\n };\n\nconst QB1 = (t: number) => t ** 2;\nconst QB2 = (t: number) => 2 * t * (1 - t);\nconst QB3 = (t: number) => (1 - t) ** 2;\n\nconst getTangentCubicIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number,\n p4x: number,\n p4y: number\n ) =>\n (pct: number) => {\n const qb1 = QB1(pct),\n qb2 = QB2(pct),\n qb3 = QB3(pct),\n tangentX =\n 3 * (qb3 * (p2x - p1x) + qb2 * (p3x - p2x) + qb1 * (p4x - p3x)),\n tangentY =\n 3 * (qb3 * (p2y - p1y) + qb2 * (p3y - p2y) + qb1 * (p4y - p3y));\n return Math.atan2(tangentY, tangentX);\n };\n\nconst getPointOnQuadraticBezierIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number\n ) =>\n (pct: number) => {\n const c1 = QB1(pct),\n c2 = QB2(pct),\n c3 = QB3(pct);\n return new Point(\n p3x * c1 + p2x * c2 + p1x * c3,\n p3y * c1 + p2y * c2 + p1y * c3\n );\n };\n\nconst getTangentQuadraticIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number\n ) =>\n (pct: number) => {\n const invT = 1 - pct,\n tangentX = 2 * (invT * (p2x - p1x) + pct * (p3x - p2x)),\n tangentY = 2 * (invT * (p2y - p1y) + pct * (p3y - p2y));\n return Math.atan2(tangentY, tangentX);\n };\n\n// this will run over a path segment (a cubic or quadratic segment) and approximate it\n// with 100 segments. This will good enough to calculate the length of the curve\nconst pathIterator = (\n iterator: (pct: number) => Point,\n x1: number,\n y1: number\n) => {\n let tempP = new Point(x1, y1),\n tmpLen = 0;\n for (let perc = 1; perc <= 100; perc += 1) {\n const p = iterator(perc / 100);\n tmpLen += calcLineLength(tempP.x, tempP.y, p.x, p.y);\n tempP = p;\n }\n return tmpLen;\n};\n\n/**\n * Given a pathInfo, and a distance in pixels, find the percentage from 0 to 1\n * that correspond to that pixels run over the path.\n * The percentage will be then used to find the correct point on the canvas for the path.\n * @param {Array} segInfo fabricJS collection of information on a parsed path\n * @param {number} distance from starting point, in pixels.\n * @return {TPointAngle} info object with x and y ( the point on canvas ) and angle, the tangent on that point;\n */\nconst findPercentageForDistance = (\n segInfo: TCurveInfo<'Q' | 'C'>,\n distance: number\n): TPointAngle => {\n let perc = 0,\n tmpLen = 0,\n tempP: XY = { x: segInfo.x, y: segInfo.y },\n p: XY = { ...tempP },\n nextLen: number,\n nextStep = 0.01,\n lastPerc = 0;\n // nextStep > 0.0001 covers 0.00015625 that 1/64th of 1/100\n // the path\n const iterator = segInfo.iterator,\n angleFinder = segInfo.angleFinder;\n while (tmpLen < distance && nextStep > 0.0001) {\n p = iterator(perc);\n lastPerc = perc;\n nextLen = calcLineLength(tempP.x, tempP.y, p.x, p.y);\n // compare tmpLen each cycle with distance, decide next perc to test.\n if (nextLen + tmpLen > distance) {\n // we discard this step and we make smaller steps.\n perc -= nextStep;\n nextStep /= 2;\n } else {\n tempP = p;\n perc += nextStep;\n tmpLen += nextLen;\n }\n }\n return { ...p, angle: angleFinder(lastPerc) };\n};\n\n/**\n * Run over a parsed and simplified path and extract some information (length of each command and starting point)\n * @param {TSimplePathData} path parsed path commands\n * @return {TPathSegmentInfo[]} path commands information\n */\nexport const getPathSegmentsInfo = (\n path: TSimplePathData\n): TPathSegmentInfo[] => {\n let totalLength = 0,\n //x2 and y2 are the coords of segment start\n //x1 and y1 are the coords of the current point\n x1 = 0,\n y1 = 0,\n x2 = 0,\n y2 = 0,\n iterator,\n tempInfo: TPathSegmentInfo;\n const info: TPathSegmentInfo[] = [];\n for (const current of path) {\n const basicInfo: TPathSegmentInfoCommon<keyof TPathSegmentCommandInfo> = {\n x: x1,\n y: y1,\n command: current[0],\n length: 0,\n };\n switch (\n current[0] //first letter\n ) {\n case 'M':\n tempInfo = <TPathSegmentInfoCommon<'M'>>basicInfo;\n tempInfo.x = x2 = x1 = current[1];\n tempInfo.y = y2 = y1 = current[2];\n break;\n case 'L':\n tempInfo = <TPathSegmentInfoCommon<'L'>>basicInfo;\n tempInfo.length = calcLineLength(x1, y1, current[1], current[2]);\n x1 = current[1];\n y1 = current[2];\n break;\n case 'C':\n iterator = getPointOnCubicBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n tempInfo = <TCurveInfo<'C'>>basicInfo;\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = getTangentCubicIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n tempInfo.length = pathIterator(iterator, x1, y1);\n\n x1 = current[5];\n y1 = current[6];\n break;\n case 'Q':\n iterator = getPointOnQuadraticBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n tempInfo = <TCurveInfo<'Q'>>basicInfo;\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = getTangentQuadraticIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[3];\n y1 = current[4];\n break;\n case 'Z':\n // we add those in order to ease calculations later\n tempInfo = <TEndPathInfo>basicInfo;\n tempInfo.destX = x2;\n tempInfo.destY = y2;\n tempInfo.length = calcLineLength(x1, y1, x2, y2);\n x1 = x2;\n y1 = y2;\n break;\n }\n totalLength += tempInfo.length;\n info.push(tempInfo);\n }\n info.push({ length: totalLength, x: x1, y: y1 });\n return info;\n};\n\n/**\n * Get the point on the path that is distance along the path\n * @param path\n * @param distance\n * @param infos\n */\nexport const getPointOnPath = (\n path: TSimplePathData,\n distance: number,\n infos: TPathSegmentInfo[] = getPathSegmentsInfo(path)\n): TPointAngle | undefined => {\n let i = 0;\n while (distance - infos[i].length > 0 && i < infos.length - 2) {\n distance -= infos[i].length;\n i++;\n }\n const segInfo = infos[i],\n segPercent = distance / segInfo.length,\n segment = path[i];\n\n switch (segInfo.command) {\n case 'M':\n return { x: segInfo.x, y: segInfo.y, angle: 0 };\n case 'Z':\n return {\n ...new Point(segInfo.x, segInfo.y).lerp(\n new Point(segInfo.destX, segInfo.destY),\n segPercent\n ),\n angle: Math.atan2(segInfo.destY - segInfo.y, segInfo.destX - segInfo.x),\n };\n case 'L':\n return {\n ...new Point(segInfo.x, segInfo.y).lerp(\n new Point(segment[1]!, segment[2]!),\n segPercent\n ),\n angle: Math.atan2(segment[2]! - segInfo.y, segment[1]! - segInfo.x),\n };\n case 'C':\n return findPercentageForDistance(segInfo, distance);\n case 'Q':\n return findPercentageForDistance(segInfo, distance);\n default:\n // throw Error('Invalid command');\n }\n};\n\nconst rePathCmdAll = new RegExp(rePathCommand, 'gi');\nconst rePathCmd = new RegExp(rePathCommand, 'i');\n\n/**\n *\n * @param {string} pathString\n * @return {TComplexPathData} An array of SVG path commands\n * @example <caption>Usage</caption>\n * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [\n * ['M', 3, 4],\n * ['Q', 3, 5, 2, 1, 4, 0],\n * ['Q', 9, 12, 2, 1, 4, 0],\n * ];\n */\nexport const parsePath = (pathString: string): TComplexPathData => {\n // clean the string\n // add spaces around the numbers\n pathString = cleanupSvgAttribute(pathString);\n\n const res: TComplexPathData = [];\n for (let [matchStr] of pathString.matchAll(rePathCmdAll)) {\n const chain: TComplexPathData = [];\n let paramArr: RegExpExecArray | null;\n do {\n paramArr = rePathCmd.exec(matchStr);\n if (!paramArr) {\n break;\n }\n // ignore undefined match groups\n const filteredGroups = paramArr.filter((g) => g);\n // remove the first element from the match array since it's just the whole command\n filteredGroups.shift();\n // if we can't parse the number, just interpret it as a string\n // (since it's probably the path command)\n const command = filteredGroups.map((g) => {\n const numParse = Number.parseFloat(g);\n if (Number.isNaN(numParse)) {\n return g;\n } else {\n return numParse;\n }\n });\n chain.push(command as any);\n // stop now if it's a z command\n if (filteredGroups.length <= 1) {\n break;\n }\n // remove the last part of the chained command\n filteredGroups.shift();\n // ` ?` is to support commands with optional spaces between flags\n matchStr = matchStr.replace(\n new RegExp(`${filteredGroups.join(' ?')} ?$`),\n ''\n );\n } while (paramArr);\n // add the chain, convert multiple m's to l's in the process\n chain.reverse().forEach((c, idx) => {\n const transformed = repeatedCommands[c[0]];\n if (idx > 0 && (transformed == 'l' || transformed == 'L')) {\n c[0] = transformed;\n }\n res.push(c);\n });\n }\n return res;\n};\n\n/**\n *\n * Converts points to a smooth SVG path\n * @param {XY[]} points Array of points\n * @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.\n * @return {(string|number)[][]} An array of SVG path commands\n */\nexport const getSmoothPathFromPoints = (\n points: Point[],\n correction = 0\n): TSimplePathData => {\n let p1 = new Point(points[0]),\n p2 = new Point(points[1]),\n multSignX = 1,\n multSignY = 0;\n const path: TSimplePathData = [],\n len = points.length,\n manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push([\n 'M',\n p1.x - multSignX * correction,\n p1.y - multSignY * correction,\n ]);\n let i;\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n const midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push(['Q', p1.x, p1.y, midPoint.x, midPoint.y]);\n }\n p1 = points[i];\n if (i + 1 < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push([\n 'L',\n p1.x + multSignX * correction,\n p1.y + multSignY * correction,\n ]);\n return path;\n};\n\n/**\n * Transform a path by transforming each segment.\n * it has to be a simplified path or it won't work.\n * WARNING: this depends from pathOffset for correct operation\n * @param {TSimplePathData} path fabricJS parsed and simplified path commands\n * @param {TMat2D} transform matrix that represent the transformation\n * @param {Point} [pathOffset] `Path.pathOffset`\n * @returns {TSimplePathData} the transformed path\n */\nexport const transformPath = (\n path: TSimplePathData,\n transform: TMat2D,\n pathOffset: Point\n): TSimplePathData => {\n if (pathOffset) {\n transform = multiplyTransformMatrices(transform, [\n 1,\n 0,\n 0,\n 1,\n -pathOffset.x,\n -pathOffset.y,\n ]);\n }\n return path.map((pathSegment) => {\n const newSegment: TSimpleParsedCommand = [...pathSegment];\n for (let i = 1; i < pathSegment.length - 1; i += 2) {\n // TODO: is there a way to get around casting to any?\n const { x, y } = transformPoint(\n {\n x: pathSegment[i] as number,\n y: pathSegment[i + 1] as number,\n },\n transform\n );\n newSegment[i] = x;\n newSegment[i + 1] = y;\n }\n return newSegment;\n });\n};\n\n/**\n * Returns an array of path commands to create a regular polygon\n * @param {number} numVertexes\n * @param {number} radius\n * @returns {TSimplePathData} An array of SVG path commands\n */\nexport const getRegularPolygonPath = (\n numVertexes: number,\n radius: number\n): TSimplePathData => {\n const interiorAngle = (Math.PI * 2) / numVertexes;\n // rotationAdjustment rotates the path by 1/2 the interior angle so that the polygon always has a flat side on the bottom\n // This isn't strictly necessary, but it's how we tend to think of and expect polygons to be drawn\n let rotationAdjustment = -halfPI;\n if (numVertexes % 2 === 0) {\n rotationAdjustment += interiorAngle / 2;\n }\n const d = new Array(numVertexes + 1);\n for (let i = 0; i < numVertexes; i++) {\n const rad = i * interiorAngle + rotationAdjustment;\n const { x, y } = new Point(cos(rad), sin(rad)).scalarMultiply(radius);\n d[i] = [i === 0 ? 'M' : 'L', x, y];\n }\n d[numVertexes] = ['Z'];\n return d;\n};\n\n/**\n * Join path commands to go back to svg format\n * @param {TSimplePathData} pathData fabricJS parsed path commands\n * @param {number} fractionDigits number of fraction digits to \"leave\"\n * @return {String} joined path 'M 0 0 L 20 30'\n */\nexport const joinPath = (pathData: TSimplePathData, fractionDigits?: number) =>\n pathData\n .map((segment) => {\n return segment\n .map((arg, i) => {\n if (i === 0) return arg;\n return fractionDigits === undefined\n ? arg\n : toFixed(arg, fractionDigits);\n })\n .join(' ');\n })\n .join(' ');\n"],"names":["repeatedCommands","m","M","segmentToBezier","theta1","theta2","cosTh","sinTh","rx","ry","cx1","cy1","mT","fromX","fromY","costh1","cos","sinth1","sin","costh2","sinth2","toX","toY","cp1X","cp1Y","cp2X","cp2Y","arcToSegments","large","sweep","rotateX","root","PI","Math","theta","PiBy180","sinTheta","px","py","rx2","ry2","py2","px2","pl","_rx","abs","_ry","s","sqrt","cx","cy","mTheta","calcVectorAngle","dtheta","segments","ceil","result","mDelta","th3","i","ux","uy","vx","vy","ta","atan2","tb","CB1","t","CB2","CB3","CB4","getBoundsOfCurve","begx","begy","cp1x","cp1y","cp2x","cp2y","endx","endy","argsString","config","cachesBoundsOfCurve","arguments","join","cache","boundsOfCurveCache","tvalues","bounds","b","a","c","push","b2ac","sqrtb2ac","t1","t2","j","length","jlen","iterator","getPointOnCubicBezierIterator","x","y","Point","min","max","fromArcToBeziers","fx","fy","_ref","_","rot","tx","ty","segsNorm","len","makePathSimpler","path","x1","y1","destinationPath","previous","controlX","controlY","parsedCommand","current","converted","forEach","calcLineLength","x2","y2","pct","c1","c2","c3","c4","QB1","QB2","QB3","getTangentCubicIterator","p1x","p1y","p2x","p2y","p3x","p3y","p4x","p4y","qb1","qb2","qb3","tangentX","tangentY","getPointOnQuadraticBezierIterator","getTangentQuadraticIterator","invT","pathIterator","tempP","tmpLen","perc","p","findPercentageForDistance","segInfo","distance","_objectSpread","nextLen","nextStep","lastPerc","angleFinder","angle","getPathSegmentsInfo","totalLength","tempInfo","info","basicInfo","command","destX","destY","getPointOnPath","infos","undefined","segPercent","segment","lerp","rePathCmdAll","RegExp","rePathCommand","rePathCmd","parsePath","pathString","cleanupSvgAttribute","res","matchStr","matchAll","chain","paramArr","exec","filteredGroups","filter","g","shift","map","numParse","Number","parseFloat","isNaN","replace","concat","reverse","idx","transformed","getSmoothPathFromPoints","points","correction","p1","p2","multSignX","multSignY","manyPoints","eq","midPoint","midPointFrom","transformPath","transform","pathOffset","multiplyTransformMatrices","pathSegment","newSegment","transformPoint","getRegularPolygonPath","numVertexes","radius","interiorAngle","rotationAdjustment","halfPI","d","Array","rad","scalarMultiply","joinPath","pathData","fractionDigits","arg","toFixed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/util/path/index.ts"],"sourcesContent":["import { cache } from '../../cache';\nimport { config } from '../../config';\nimport { halfPI, PiBy180 } from '../../constants';\nimport type { TMat2D, TRadian, TRectBounds } from '../../typedefs';\nimport { cos } from '../misc/cos';\nimport { multiplyTransformMatrices, transformPoint } from '../misc/matrix';\nimport { sin } from '../misc/sin';\nimport { toFixed } from '../misc/toFixed';\nimport type {\n TCurveInfo,\n TComplexPathData,\n TParsedAbsoluteCubicCurveCommand,\n TPathSegmentInfo,\n TPointAngle,\n TSimpleParsedCommand,\n TSimplePathData,\n TPathSegmentCommandInfo,\n TComplexParsedCommand,\n TPathSegmentInfoCommon,\n TEndPathInfo,\n TParsedArcCommand,\n} from './typedefs';\nimport type { XY } from '../../Point';\nimport { Point } from '../../Point';\nimport { rePathCommand } from './regex';\nimport { cleanupSvgAttribute } from '../internals/cleanupSvgAttribute';\n\n/**\n * Commands that may be repeated\n */\nconst repeatedCommands: Record<string, string | undefined> = {\n m: 'l',\n M: 'L',\n};\n\n/**\n * Convert an arc of a rotated ellipse to a Bezier Curve\n * @param {TRadian} theta1 start of the arc\n * @param {TRadian} theta2 end of the arc\n * @param cosTh cosine of the angle of rotation\n * @param sinTh sine of the angle of rotation\n * @param rx x-axis radius (before rotation)\n * @param ry y-axis radius (before rotation)\n * @param cx1 center x of the ellipse\n * @param cy1 center y of the ellipse\n * @param mT\n * @param fromX starting point of arc x\n * @param fromY starting point of arc y\n */\nconst segmentToBezier = (\n theta1: TRadian,\n theta2: TRadian,\n cosTh: number,\n sinTh: number,\n rx: number,\n ry: number,\n cx1: number,\n cy1: number,\n mT: number,\n fromX: number,\n fromY: number,\n): TParsedAbsoluteCubicCurveCommand => {\n const costh1 = cos(theta1),\n sinth1 = sin(theta1),\n costh2 = cos(theta2),\n sinth2 = sin(theta2),\n toX = cosTh * rx * costh2 - sinTh * ry * sinth2 + cx1,\n toY = sinTh * rx * costh2 + cosTh * ry * sinth2 + cy1,\n cp1X = fromX + mT * (-cosTh * rx * sinth1 - sinTh * ry * costh1),\n cp1Y = fromY + mT * (-sinTh * rx * sinth1 + cosTh * ry * costh1),\n cp2X = toX + mT * (cosTh * rx * sinth2 + sinTh * ry * costh2),\n cp2Y = toY + mT * (sinTh * rx * sinth2 - cosTh * ry * costh2);\n\n return ['C', cp1X, cp1Y, cp2X, cp2Y, toX, toY];\n};\n\n/**\n * Adapted from {@link http://dxr.mozilla.org/mozilla-central/source/dom/svg/SVGPathDataParser.cpp}\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n * @param toX\n * @param toY\n * @param rx\n * @param ry\n * @param {number} large 0 or 1 flag\n * @param {number} sweep 0 or 1 flag\n * @param rotateX\n */\nconst arcToSegments = (\n toX: number,\n toY: number,\n rx: number,\n ry: number,\n large: number,\n sweep: number,\n rotateX: TRadian,\n): TParsedAbsoluteCubicCurveCommand[] => {\n if (rx === 0 || ry === 0) {\n return [];\n }\n let fromX = 0,\n fromY = 0,\n root = 0;\n const PI = Math.PI,\n theta = rotateX * PiBy180,\n sinTheta = sin(theta),\n cosTh = cos(theta),\n px = 0.5 * (-cosTh * toX - sinTheta * toY),\n py = 0.5 * (-cosTh * toY + sinTheta * toX),\n rx2 = rx ** 2,\n ry2 = ry ** 2,\n py2 = py ** 2,\n px2 = px ** 2,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2;\n let _rx = Math.abs(rx);\n let _ry = Math.abs(ry);\n\n if (pl < 0) {\n const s = Math.sqrt(1 - pl / (rx2 * ry2));\n _rx *= s;\n _ry *= s;\n } else {\n root =\n (large === sweep ? -1.0 : 1.0) * Math.sqrt(pl / (rx2 * py2 + ry2 * px2));\n }\n\n const cx = (root * _rx * py) / _ry,\n cy = (-root * _ry * px) / _rx,\n cx1 = cosTh * cx - sinTheta * cy + toX * 0.5,\n cy1 = sinTheta * cx + cosTh * cy + toY * 0.5;\n let mTheta = calcVectorAngle(1, 0, (px - cx) / _rx, (py - cy) / _ry);\n let dtheta = calcVectorAngle(\n (px - cx) / _rx,\n (py - cy) / _ry,\n (-px - cx) / _rx,\n (-py - cy) / _ry,\n );\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n } else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n const segments = Math.ceil(Math.abs((dtheta / PI) * 2)),\n result = [],\n mDelta = dtheta / segments,\n mT =\n ((8 / 3) * Math.sin(mDelta / 4) * Math.sin(mDelta / 4)) /\n Math.sin(mDelta / 2);\n let th3 = mTheta + mDelta;\n\n for (let i = 0; i < segments; i++) {\n result[i] = segmentToBezier(\n mTheta,\n th3,\n cosTh,\n sinTheta,\n _rx,\n _ry,\n cx1,\n cy1,\n mT,\n fromX,\n fromY,\n );\n fromX = result[i][5];\n fromY = result[i][6];\n mTheta = th3;\n th3 += mDelta;\n }\n return result;\n};\n\n/**\n * @private\n * Calculate the angle between two vectors\n * @param ux u endpoint x\n * @param uy u endpoint y\n * @param vx v endpoint x\n * @param vy v endpoint y\n */\nconst calcVectorAngle = (\n ux: number,\n uy: number,\n vx: number,\n vy: number,\n): TRadian => {\n const ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n } else {\n return 2 * Math.PI - (ta - tb);\n }\n};\n\n// functions for the Cubic beizer\n// taken from: https://github.com/konvajs/konva/blob/7.0.5/src/shapes/Path.ts#L350\nconst CB1 = (t: number) => t ** 3;\nconst CB2 = (t: number) => 3 * t ** 2 * (1 - t);\nconst CB3 = (t: number) => 3 * t * (1 - t) ** 2;\nconst CB4 = (t: number) => (1 - t) ** 3;\n\n/**\n * Calculate bounding box of a cubic Bezier curve\n * Taken from http://jsbin.com/ivomiq/56/edit (no credits available)\n * TODO: can we normalize this with the starting points set at 0 and then translated the bbox?\n * @param {number} begx starting point\n * @param {number} begy\n * @param {number} cp1x first control point\n * @param {number} cp1y\n * @param {number} cp2x second control point\n * @param {number} cp2y\n * @param {number} endx end of bezier\n * @param {number} endy\n * @return {TRectBounds} the rectangular bounds\n */\nexport function getBoundsOfCurve(\n begx: number,\n begy: number,\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n endx: number,\n endy: number,\n): TRectBounds {\n let argsString: string;\n if (config.cachesBoundsOfCurve) {\n // eslint-disable-next-line\n argsString = [...arguments].join();\n if (cache.boundsOfCurveCache[argsString]) {\n return cache.boundsOfCurveCache[argsString];\n }\n }\n\n const sqrt = Math.sqrt,\n abs = Math.abs,\n tvalues = [],\n bounds: [[x: number, y: number], [x: number, y: number]] = [\n [0, 0],\n [0, 0],\n ];\n\n let b = 6 * begx - 12 * cp1x + 6 * cp2x;\n let a = -3 * begx + 9 * cp1x - 9 * cp2x + 3 * endx;\n let c = 3 * cp1x - 3 * begx;\n\n for (let i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * begy - 12 * cp1y + 6 * cp2y;\n a = -3 * begy + 9 * cp1y - 9 * cp2y + 3 * endy;\n c = 3 * cp1y - 3 * begy;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n const t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n const b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n const sqrtb2ac = sqrt(b2ac);\n const t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n const t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length;\n const jlen = j;\n const iterator = getPointOnCubicBezierIterator(\n begx,\n begy,\n cp1x,\n cp1y,\n cp2x,\n cp2y,\n endx,\n endy,\n );\n while (j--) {\n const { x, y } = iterator(tvalues[j]);\n bounds[0][j] = x;\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = begx;\n bounds[1][jlen] = begy;\n bounds[0][jlen + 1] = endx;\n bounds[1][jlen + 1] = endy;\n const result: TRectBounds = [\n new Point(Math.min(...bounds[0]), Math.min(...bounds[1])),\n new Point(Math.max(...bounds[0]), Math.max(...bounds[1])),\n ];\n if (config.cachesBoundsOfCurve) {\n cache.boundsOfCurveCache[argsString!] = result;\n }\n return result;\n}\n\n/**\n * Converts arc to a bunch of cubic Bezier curves\n * @param {number} fx starting point x\n * @param {number} fy starting point y\n * @param {TParsedArcCommand} coords Arc command\n */\nexport const fromArcToBeziers = (\n fx: number,\n fy: number,\n [_, rx, ry, rot, large, sweep, tx, ty]: TParsedArcCommand,\n): TParsedAbsoluteCubicCurveCommand[] => {\n const segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (let i = 0, len = segsNorm.length; i < len; i++) {\n segsNorm[i][1] += fx;\n segsNorm[i][2] += fy;\n segsNorm[i][3] += fx;\n segsNorm[i][4] += fy;\n segsNorm[i][5] += fx;\n segsNorm[i][6] += fy;\n }\n return segsNorm;\n};\n\n/**\n * This function takes a parsed SVG path and makes it simpler for fabricJS logic.\n * Simplification consist of:\n * - All commands converted to absolute (lowercase to uppercase)\n * - S converted to C\n * - T converted to Q\n * - A converted to C\n * @param {TComplexPathData} path the array of commands of a parsed SVG path for `Path`\n * @return {TSimplePathData} the simplified array of commands of a parsed SVG path for `Path`\n * TODO: figure out how to remove the type assertions in a nice way\n */\nexport const makePathSimpler = (path: TComplexPathData): TSimplePathData => {\n // x and y represent the last point of the path, AKA the previous command point.\n // we add them to each relative command to make it an absolute comment.\n // we also swap the v V h H with L, because are easier to transform.\n let x = 0,\n y = 0;\n // x1 and y1 represent the last point of the subpath. the subpath is started with\n // m or M command. When a z or Z command is drawn, x and y need to be resetted to\n // the last x1 and y1.\n let x1 = 0,\n y1 = 0;\n // previous will host the letter of the previous command, to handle S and T.\n // controlX and controlY will host the previous reflected control point\n const destinationPath: TSimplePathData = [];\n let previous,\n // placeholders\n controlX = 0,\n controlY = 0;\n for (const parsedCommand of path) {\n const current: TComplexParsedCommand = [...parsedCommand];\n let converted: TSimpleParsedCommand | undefined;\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'L':\n x = current[1];\n y = current[2];\n converted = ['L', x, y];\n break;\n case 'h': // horizontal lineto, relative\n current[1] += x;\n // falls through\n case 'H':\n x = current[1];\n converted = ['L', x, y];\n break;\n case 'v': // vertical lineto, relative\n current[1] += y;\n // falls through\n case 'V':\n y = current[1];\n converted = ['L', x, y];\n break;\n case 'm': // moveTo, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'M':\n x = current[1];\n y = current[2];\n x1 = current[1];\n y1 = current[2];\n converted = ['M', x, y];\n break;\n case 'c': // bezierCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n current[5] += x;\n current[6] += y;\n // falls through\n case 'C':\n controlX = current[3];\n controlY = current[4];\n x = current[5];\n y = current[6];\n converted = ['C', current[1], current[2], controlX, controlY, x, y];\n break;\n case 's': // shorthand cubic bezierCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'S':\n // would be sScC but since we are swapping sSc for C, we check just that.\n if (previous === 'C') {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n } else {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[3];\n y = current[4];\n converted = ['C', controlX, controlY, current[1], current[2], x, y];\n // converted[3] and converted[4] are NOW the second control point.\n // we keep it for the next reflection.\n controlX = converted[3];\n controlY = converted[4];\n break;\n case 'q': // quadraticCurveTo, relative\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'Q':\n controlX = current[1];\n controlY = current[2];\n x = current[3];\n y = current[4];\n converted = ['Q', controlX, controlY, x, y];\n break;\n case 't': // shorthand quadraticCurveTo, relative\n current[1] += x;\n current[2] += y;\n // falls through\n case 'T':\n if (previous === 'Q') {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n } else {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[1];\n y = current[2];\n converted = ['Q', controlX, controlY, x, y];\n break;\n case 'a':\n current[6] += x;\n current[7] += y;\n // falls through\n case 'A':\n fromArcToBeziers(x, y, current).forEach((b) => destinationPath.push(b));\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = x1;\n y = y1;\n converted = ['Z'];\n break;\n default:\n }\n if (converted) {\n destinationPath.push(converted);\n previous = converted[0];\n } else {\n previous = '';\n }\n }\n return destinationPath;\n};\n\n// todo verify if we can just use the point class here\n/**\n * Calc length from point x1,y1 to x2,y2\n * @param {number} x1 starting point x\n * @param {number} y1 starting point y\n * @param {number} x2 starting point x\n * @param {number} y2 starting point y\n * @return {number} length of segment\n */\nconst calcLineLength = (\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n): number => Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n\n/**\n * Get an iterator that takes a percentage and returns a point\n * @param {number} begx\n * @param {number} begy\n * @param {number} cp1x\n * @param {number} cp1y\n * @param {number} cp2x\n * @param {number} cp2y\n * @param {number} endx\n * @param {number} endy\n */\nconst getPointOnCubicBezierIterator =\n (\n begx: number,\n begy: number,\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n endx: number,\n endy: number,\n ) =>\n (pct: number) => {\n const c1 = CB1(pct),\n c2 = CB2(pct),\n c3 = CB3(pct),\n c4 = CB4(pct);\n return new Point(\n endx * c1 + cp2x * c2 + cp1x * c3 + begx * c4,\n endy * c1 + cp2y * c2 + cp1y * c3 + begy * c4,\n );\n };\n\nconst QB1 = (t: number) => t ** 2;\nconst QB2 = (t: number) => 2 * t * (1 - t);\nconst QB3 = (t: number) => (1 - t) ** 2;\n\nconst getTangentCubicIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number,\n p4x: number,\n p4y: number,\n ) =>\n (pct: number) => {\n const qb1 = QB1(pct),\n qb2 = QB2(pct),\n qb3 = QB3(pct),\n tangentX =\n 3 * (qb3 * (p2x - p1x) + qb2 * (p3x - p2x) + qb1 * (p4x - p3x)),\n tangentY =\n 3 * (qb3 * (p2y - p1y) + qb2 * (p3y - p2y) + qb1 * (p4y - p3y));\n return Math.atan2(tangentY, tangentX);\n };\n\nconst getPointOnQuadraticBezierIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number,\n ) =>\n (pct: number) => {\n const c1 = QB1(pct),\n c2 = QB2(pct),\n c3 = QB3(pct);\n return new Point(\n p3x * c1 + p2x * c2 + p1x * c3,\n p3y * c1 + p2y * c2 + p1y * c3,\n );\n };\n\nconst getTangentQuadraticIterator =\n (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number,\n ) =>\n (pct: number) => {\n const invT = 1 - pct,\n tangentX = 2 * (invT * (p2x - p1x) + pct * (p3x - p2x)),\n tangentY = 2 * (invT * (p2y - p1y) + pct * (p3y - p2y));\n return Math.atan2(tangentY, tangentX);\n };\n\n// this will run over a path segment (a cubic or quadratic segment) and approximate it\n// with 100 segments. This will good enough to calculate the length of the curve\nconst pathIterator = (\n iterator: (pct: number) => Point,\n x1: number,\n y1: number,\n) => {\n let tempP = new Point(x1, y1),\n tmpLen = 0;\n for (let perc = 1; perc <= 100; perc += 1) {\n const p = iterator(perc / 100);\n tmpLen += calcLineLength(tempP.x, tempP.y, p.x, p.y);\n tempP = p;\n }\n return tmpLen;\n};\n\n/**\n * Given a pathInfo, and a distance in pixels, find the percentage from 0 to 1\n * that correspond to that pixels run over the path.\n * The percentage will be then used to find the correct point on the canvas for the path.\n * @param {Array} segInfo fabricJS collection of information on a parsed path\n * @param {number} distance from starting point, in pixels.\n * @return {TPointAngle} info object with x and y ( the point on canvas ) and angle, the tangent on that point;\n */\nconst findPercentageForDistance = (\n segInfo: TCurveInfo<'Q' | 'C'>,\n distance: number,\n): TPointAngle => {\n let perc = 0,\n tmpLen = 0,\n tempP: XY = { x: segInfo.x, y: segInfo.y },\n p: XY = { ...tempP },\n nextLen: number,\n nextStep = 0.01,\n lastPerc = 0;\n // nextStep > 0.0001 covers 0.00015625 that 1/64th of 1/100\n // the path\n const iterator = segInfo.iterator,\n angleFinder = segInfo.angleFinder;\n while (tmpLen < distance && nextStep > 0.0001) {\n p = iterator(perc);\n lastPerc = perc;\n nextLen = calcLineLength(tempP.x, tempP.y, p.x, p.y);\n // compare tmpLen each cycle with distance, decide next perc to test.\n if (nextLen + tmpLen > distance) {\n // we discard this step and we make smaller steps.\n perc -= nextStep;\n nextStep /= 2;\n } else {\n tempP = p;\n perc += nextStep;\n tmpLen += nextLen;\n }\n }\n return { ...p, angle: angleFinder(lastPerc) };\n};\n\n/**\n * Run over a parsed and simplified path and extract some information (length of each command and starting point)\n * @param {TSimplePathData} path parsed path commands\n * @return {TPathSegmentInfo[]} path commands information\n */\nexport const getPathSegmentsInfo = (\n path: TSimplePathData,\n): TPathSegmentInfo[] => {\n let totalLength = 0,\n //x2 and y2 are the coords of segment start\n //x1 and y1 are the coords of the current point\n x1 = 0,\n y1 = 0,\n x2 = 0,\n y2 = 0,\n iterator,\n tempInfo: TPathSegmentInfo;\n const info: TPathSegmentInfo[] = [];\n for (const current of path) {\n const basicInfo: TPathSegmentInfoCommon<keyof TPathSegmentCommandInfo> = {\n x: x1,\n y: y1,\n command: current[0],\n length: 0,\n };\n switch (\n current[0] //first letter\n ) {\n case 'M':\n tempInfo = <TPathSegmentInfoCommon<'M'>>basicInfo;\n tempInfo.x = x2 = x1 = current[1];\n tempInfo.y = y2 = y1 = current[2];\n break;\n case 'L':\n tempInfo = <TPathSegmentInfoCommon<'L'>>basicInfo;\n tempInfo.length = calcLineLength(x1, y1, current[1], current[2]);\n x1 = current[1];\n y1 = current[2];\n break;\n case 'C':\n iterator = getPointOnCubicBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6],\n );\n tempInfo = <TCurveInfo<'C'>>basicInfo;\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = getTangentCubicIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6],\n );\n tempInfo.length = pathIterator(iterator, x1, y1);\n\n x1 = current[5];\n y1 = current[6];\n break;\n case 'Q':\n iterator = getPointOnQuadraticBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n );\n tempInfo = <TCurveInfo<'Q'>>basicInfo;\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = getTangentQuadraticIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n );\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[3];\n y1 = current[4];\n break;\n case 'Z':\n // we add those in order to ease calculations later\n tempInfo = <TEndPathInfo>basicInfo;\n tempInfo.destX = x2;\n tempInfo.destY = y2;\n tempInfo.length = calcLineLength(x1, y1, x2, y2);\n x1 = x2;\n y1 = y2;\n break;\n }\n totalLength += tempInfo.length;\n info.push(tempInfo);\n }\n info.push({ length: totalLength, x: x1, y: y1 });\n return info;\n};\n\n/**\n * Get the point on the path that is distance along the path\n * @param path\n * @param distance\n * @param infos\n */\nexport const getPointOnPath = (\n path: TSimplePathData,\n distance: number,\n infos: TPathSegmentInfo[] = getPathSegmentsInfo(path),\n): TPointAngle | undefined => {\n let i = 0;\n while (distance - infos[i].length > 0 && i < infos.length - 2) {\n distance -= infos[i].length;\n i++;\n }\n const segInfo = infos[i],\n segPercent = distance / segInfo.length,\n segment = path[i];\n\n switch (segInfo.command) {\n case 'M':\n return { x: segInfo.x, y: segInfo.y, angle: 0 };\n case 'Z':\n return {\n ...new Point(segInfo.x, segInfo.y).lerp(\n new Point(segInfo.destX, segInfo.destY),\n segPercent,\n ),\n angle: Math.atan2(segInfo.destY - segInfo.y, segInfo.destX - segInfo.x),\n };\n case 'L':\n return {\n ...new Point(segInfo.x, segInfo.y).lerp(\n new Point(segment[1]!, segment[2]!),\n segPercent,\n ),\n angle: Math.atan2(segment[2]! - segInfo.y, segment[1]! - segInfo.x),\n };\n case 'C':\n return findPercentageForDistance(segInfo, distance);\n case 'Q':\n return findPercentageForDistance(segInfo, distance);\n default:\n // throw Error('Invalid command');\n }\n};\n\nconst rePathCmdAll = new RegExp(rePathCommand, 'gi');\nconst rePathCmd = new RegExp(rePathCommand, 'i');\n\n/**\n *\n * @param {string} pathString\n * @return {TComplexPathData} An array of SVG path commands\n * @example <caption>Usage</caption>\n * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [\n * ['M', 3, 4],\n * ['Q', 3, 5, 2, 1, 4, 0],\n * ['Q', 9, 12, 2, 1, 4, 0],\n * ];\n */\nexport const parsePath = (pathString: string): TComplexPathData => {\n // clean the string\n // add spaces around the numbers\n pathString = cleanupSvgAttribute(pathString);\n\n const res: TComplexPathData = [];\n for (let [matchStr] of pathString.matchAll(rePathCmdAll)) {\n const chain: TComplexPathData = [];\n let paramArr: RegExpExecArray | null;\n do {\n paramArr = rePathCmd.exec(matchStr);\n if (!paramArr) {\n break;\n }\n // ignore undefined match groups\n const filteredGroups = paramArr.filter((g) => g);\n // remove the first element from the match array since it's just the whole command\n filteredGroups.shift();\n // if we can't parse the number, just interpret it as a string\n // (since it's probably the path command)\n const command = filteredGroups.map((g) => {\n const numParse = Number.parseFloat(g);\n if (Number.isNaN(numParse)) {\n return g;\n } else {\n return numParse;\n }\n });\n chain.push(command as any);\n // stop now if it's a z command\n if (filteredGroups.length <= 1) {\n break;\n }\n // remove the last part of the chained command\n filteredGroups.shift();\n // ` ?` is to support commands with optional spaces between flags\n matchStr = matchStr.replace(\n new RegExp(`${filteredGroups.join(' ?')} ?$`),\n '',\n );\n } while (paramArr);\n // add the chain, convert multiple m's to l's in the process\n chain.reverse().forEach((c, idx) => {\n const transformed = repeatedCommands[c[0]];\n if (idx > 0 && (transformed == 'l' || transformed == 'L')) {\n c[0] = transformed;\n }\n res.push(c);\n });\n }\n return res;\n};\n\n/**\n *\n * Converts points to a smooth SVG path\n * @param {XY[]} points Array of points\n * @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.\n * @return {(string|number)[][]} An array of SVG path commands\n */\nexport const getSmoothPathFromPoints = (\n points: Point[],\n correction = 0,\n): TSimplePathData => {\n let p1 = new Point(points[0]),\n p2 = new Point(points[1]),\n multSignX = 1,\n multSignY = 0;\n const path: TSimplePathData = [],\n len = points.length,\n manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push([\n 'M',\n p1.x - multSignX * correction,\n p1.y - multSignY * correction,\n ]);\n let i;\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n const midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push(['Q', p1.x, p1.y, midPoint.x, midPoint.y]);\n }\n p1 = points[i];\n if (i + 1 < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push([\n 'L',\n p1.x + multSignX * correction,\n p1.y + multSignY * correction,\n ]);\n return path;\n};\n\n/**\n * Transform a path by transforming each segment.\n * it has to be a simplified path or it won't work.\n * WARNING: this depends from pathOffset for correct operation\n * @param {TSimplePathData} path fabricJS parsed and simplified path commands\n * @param {TMat2D} transform matrix that represent the transformation\n * @param {Point} [pathOffset] `Path.pathOffset`\n * @returns {TSimplePathData} the transformed path\n */\nexport const transformPath = (\n path: TSimplePathData,\n transform: TMat2D,\n pathOffset: Point,\n): TSimplePathData => {\n if (pathOffset) {\n transform = multiplyTransformMatrices(transform, [\n 1,\n 0,\n 0,\n 1,\n -pathOffset.x,\n -pathOffset.y,\n ]);\n }\n return path.map((pathSegment) => {\n const newSegment: TSimpleParsedCommand = [...pathSegment];\n for (let i = 1; i < pathSegment.length - 1; i += 2) {\n // TODO: is there a way to get around casting to any?\n const { x, y } = transformPoint(\n {\n x: pathSegment[i] as number,\n y: pathSegment[i + 1] as number,\n },\n transform,\n );\n newSegment[i] = x;\n newSegment[i + 1] = y;\n }\n return newSegment;\n });\n};\n\n/**\n * Returns an array of path commands to create a regular polygon\n * @param {number} numVertexes\n * @param {number} radius\n * @returns {TSimplePathData} An array of SVG path commands\n */\nexport const getRegularPolygonPath = (\n numVertexes: number,\n radius: number,\n): TSimplePathData => {\n const interiorAngle = (Math.PI * 2) / numVertexes;\n // rotationAdjustment rotates the path by 1/2 the interior angle so that the polygon always has a flat side on the bottom\n // This isn't strictly necessary, but it's how we tend to think of and expect polygons to be drawn\n let rotationAdjustment = -halfPI;\n if (numVertexes % 2 === 0) {\n rotationAdjustment += interiorAngle / 2;\n }\n const d = new Array(numVertexes + 1);\n for (let i = 0; i < numVertexes; i++) {\n const rad = i * interiorAngle + rotationAdjustment;\n const { x, y } = new Point(cos(rad), sin(rad)).scalarMultiply(radius);\n d[i] = [i === 0 ? 'M' : 'L', x, y];\n }\n d[numVertexes] = ['Z'];\n return d;\n};\n\n/**\n * Join path commands to go back to svg format\n * @param {TSimplePathData} pathData fabricJS parsed path commands\n * @param {number} fractionDigits number of fraction digits to \"leave\"\n * @return {String} joined path 'M 0 0 L 20 30'\n */\nexport const joinPath = (pathData: TSimplePathData, fractionDigits?: number) =>\n pathData\n .map((segment) => {\n return segment\n .map((arg, i) => {\n if (i === 0) return arg;\n return fractionDigits === undefined\n ? arg\n : toFixed(arg, fractionDigits);\n })\n .join(' ');\n })\n .join(' ');\n"],"names":["repeatedCommands","m","M","segmentToBezier","theta1","theta2","cosTh","sinTh","rx","ry","cx1","cy1","mT","fromX","fromY","costh1","cos","sinth1","sin","costh2","sinth2","toX","toY","cp1X","cp1Y","cp2X","cp2Y","arcToSegments","large","sweep","rotateX","root","PI","Math","theta","PiBy180","sinTheta","px","py","rx2","ry2","py2","px2","pl","_rx","abs","_ry","s","sqrt","cx","cy","mTheta","calcVectorAngle","dtheta","segments","ceil","result","mDelta","th3","i","ux","uy","vx","vy","ta","atan2","tb","CB1","t","CB2","CB3","CB4","getBoundsOfCurve","begx","begy","cp1x","cp1y","cp2x","cp2y","endx","endy","argsString","config","cachesBoundsOfCurve","arguments","join","cache","boundsOfCurveCache","tvalues","bounds","b","a","c","push","b2ac","sqrtb2ac","t1","t2","j","length","jlen","iterator","getPointOnCubicBezierIterator","x","y","Point","min","max","fromArcToBeziers","fx","fy","_ref","_","rot","tx","ty","segsNorm","len","makePathSimpler","path","x1","y1","destinationPath","previous","controlX","controlY","parsedCommand","current","converted","forEach","calcLineLength","x2","y2","pct","c1","c2","c3","c4","QB1","QB2","QB3","getTangentCubicIterator","p1x","p1y","p2x","p2y","p3x","p3y","p4x","p4y","qb1","qb2","qb3","tangentX","tangentY","getPointOnQuadraticBezierIterator","getTangentQuadraticIterator","invT","pathIterator","tempP","tmpLen","perc","p","findPercentageForDistance","segInfo","distance","_objectSpread","nextLen","nextStep","lastPerc","angleFinder","angle","getPathSegmentsInfo","totalLength","tempInfo","info","basicInfo","command","destX","destY","getPointOnPath","infos","undefined","segPercent","segment","lerp","rePathCmdAll","RegExp","rePathCommand","rePathCmd","parsePath","pathString","cleanupSvgAttribute","res","matchStr","matchAll","chain","paramArr","exec","filteredGroups","filter","g","shift","map","numParse","Number","parseFloat","isNaN","replace","concat","reverse","idx","transformed","getSmoothPathFromPoints","points","correction","p1","p2","multSignX","multSignY","manyPoints","eq","midPoint","midPointFrom","transformPath","transform","pathOffset","multiplyTransformMatrices","pathSegment","newSegment","transformPoint","getRegularPolygonPath","numVertexes","radius","interiorAngle","rotationAdjustment","halfPI","d","Array","rad","scalarMultiply","joinPath","pathData","fractionDigits","arg","toFixed"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typedefs.d.ts","sourceRoot":"","sources":["../../../../src/util/path/typedefs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typedefs.d.ts","sourceRoot":"","sources":["../../../../src/util/path/typedefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform_matrix_removal.min.mjs","sources":["../../../src/util/transform_matrix_removal.ts"],"sourcesContent":["import { CENTER, SCALE_X, SCALE_Y } from '../constants';\nimport type { FabricImage } from '../shapes/Image';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { qrDecompose } from './misc/matrix';\n\ntype FabricObjectWithTransformMatrix = FabricObject & {\n transformMatrix?: TMat2D;\n};\n\n/**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n */\nconst _assignTransformMatrixProps = (\n object: FabricObjectWithTransformMatrix
|
|
1
|
+
{"version":3,"file":"transform_matrix_removal.min.mjs","sources":["../../../src/util/transform_matrix_removal.ts"],"sourcesContent":["import { CENTER, SCALE_X, SCALE_Y } from '../constants';\nimport type { FabricImage } from '../shapes/Image';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { qrDecompose } from './misc/matrix';\n\ntype FabricObjectWithTransformMatrix = FabricObject & {\n transformMatrix?: TMat2D;\n};\n\n/**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n */\nconst _assignTransformMatrixProps = (\n object: FabricObjectWithTransformMatrix,\n) => {\n if (object.transformMatrix) {\n const { scaleX, scaleY, angle, skewX } = qrDecompose(\n object.transformMatrix,\n );\n object.flipX = false;\n object.flipY = false;\n object.set(SCALE_X, scaleX);\n object.set(SCALE_Y, scaleY);\n object.angle = angle;\n object.skewX = skewX;\n object.skewY = 0;\n }\n};\n\n/**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n */\nexport const removeTransformMatrixForSvgParsing = (\n object: FabricObjectWithTransformMatrix,\n preserveAspectRatioOptions?: any,\n) => {\n let center = object._findCenterFromElement();\n if (object.transformMatrix) {\n _assignTransformMatrixProps(object);\n center = center.transform(object.transformMatrix);\n }\n delete object.transformMatrix;\n if (preserveAspectRatioOptions) {\n object.scaleX *= preserveAspectRatioOptions.scaleX;\n object.scaleY *= preserveAspectRatioOptions.scaleY;\n (object as FabricImage).cropX = preserveAspectRatioOptions.cropX;\n (object as FabricImage).cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n object.width = preserveAspectRatioOptions.width;\n object.height = preserveAspectRatioOptions.height;\n }\n object.setPositionByOrigin(center, CENTER, CENTER);\n};\n"],"names":["removeTransformMatrixForSvgParsing","object","preserveAspectRatioOptions","center","_findCenterFromElement","transformMatrix","scaleX","scaleY","angle","skewX","qrDecompose","flipX","flipY","set","SCALE_X","SCALE_Y","skewY","_assignTransformMatrixProps","transform","cropX","cropY","x","offsetLeft","y","offsetTop","width","height","setPositionByOrigin","CENTER"],"mappings":"4HAgBA,MAuBaA,EAAqCA,CAChDC,EACAC,KAEA,IAAIC,EAASF,EAAOG,yBAChBH,EAAOI,kBA3BXJ,KAEA,GAAIA,EAAOI,gBAAiB,CAC1B,MAAMC,OAAEA,EAAMC,OAAEA,EAAMC,MAAEA,EAAKC,MAAEA,GAAUC,EACvCT,EAAOI,iBAETJ,EAAOU,OAAQ,EACfV,EAAOW,OAAQ,EACfX,EAAOY,IAAIC,EAASR,GACpBL,EAAOY,IAAIE,EAASR,GACpBN,EAAOO,MAAQA,EACfP,EAAOQ,MAAQA,EACfR,EAAOe,MAAQ,CACjB,GAeEC,CAA4BhB,GAC5BE,EAASA,EAAOe,UAAUjB,EAAOI,yBAE5BJ,EAAOI,gBACVH,IACFD,EAAOK,QAAUJ,EAA2BI,OAC5CL,EAAOM,QAAUL,EAA2BK,OAC3CN,EAAuBkB,MAAQjB,EAA2BiB,MAC1DlB,EAAuBmB,MAAQlB,EAA2BkB,MAC3DjB,EAAOkB,GAAKnB,EAA2BoB,WACvCnB,EAAOoB,GAAKrB,EAA2BsB,UACvCvB,EAAOwB,MAAQvB,EAA2BuB,MAC1CxB,EAAOyB,OAASxB,EAA2BwB,QAE7CzB,EAAO0B,oBAAoBxB,EAAQyB,EAAQA,EAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform_matrix_removal.mjs","sources":["../../../src/util/transform_matrix_removal.ts"],"sourcesContent":["import { CENTER, SCALE_X, SCALE_Y } from '../constants';\nimport type { FabricImage } from '../shapes/Image';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { qrDecompose } from './misc/matrix';\n\ntype FabricObjectWithTransformMatrix = FabricObject & {\n transformMatrix?: TMat2D;\n};\n\n/**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n */\nconst _assignTransformMatrixProps = (\n object: FabricObjectWithTransformMatrix
|
|
1
|
+
{"version":3,"file":"transform_matrix_removal.mjs","sources":["../../../src/util/transform_matrix_removal.ts"],"sourcesContent":["import { CENTER, SCALE_X, SCALE_Y } from '../constants';\nimport type { FabricImage } from '../shapes/Image';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { qrDecompose } from './misc/matrix';\n\ntype FabricObjectWithTransformMatrix = FabricObject & {\n transformMatrix?: TMat2D;\n};\n\n/**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n */\nconst _assignTransformMatrixProps = (\n object: FabricObjectWithTransformMatrix,\n) => {\n if (object.transformMatrix) {\n const { scaleX, scaleY, angle, skewX } = qrDecompose(\n object.transformMatrix,\n );\n object.flipX = false;\n object.flipY = false;\n object.set(SCALE_X, scaleX);\n object.set(SCALE_Y, scaleY);\n object.angle = angle;\n object.skewX = skewX;\n object.skewY = 0;\n }\n};\n\n/**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n */\nexport const removeTransformMatrixForSvgParsing = (\n object: FabricObjectWithTransformMatrix,\n preserveAspectRatioOptions?: any,\n) => {\n let center = object._findCenterFromElement();\n if (object.transformMatrix) {\n _assignTransformMatrixProps(object);\n center = center.transform(object.transformMatrix);\n }\n delete object.transformMatrix;\n if (preserveAspectRatioOptions) {\n object.scaleX *= preserveAspectRatioOptions.scaleX;\n object.scaleY *= preserveAspectRatioOptions.scaleY;\n (object as FabricImage).cropX = preserveAspectRatioOptions.cropX;\n (object as FabricImage).cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n object.width = preserveAspectRatioOptions.width;\n object.height = preserveAspectRatioOptions.height;\n }\n object.setPositionByOrigin(center, CENTER, CENTER);\n};\n"],"names":["_assignTransformMatrixProps","object","transformMatrix","scaleX","scaleY","angle","skewX","qrDecompose","flipX","flipY","set","SCALE_X","SCALE_Y","skewY","removeTransformMatrixForSvgParsing","preserveAspectRatioOptions","center","_findCenterFromElement","transform","cropX","cropY","x","offsetLeft","y","offsetTop","width","height","setPositionByOrigin","CENTER"],"mappings":";;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,2BAA2B,GAC/BC,MAAuC,IACpC;EACH,IAAIA,MAAM,CAACC,eAAe,EAAE;IAC1B,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAEC,KAAK;AAAEC,MAAAA,KAAAA;AAAM,KAAC,GAAGC,WAAW,CAClDN,MAAM,CAACC,eACT,CAAC,CAAA;IACDD,MAAM,CAACO,KAAK,GAAG,KAAK,CAAA;IACpBP,MAAM,CAACQ,KAAK,GAAG,KAAK,CAAA;AACpBR,IAAAA,MAAM,CAACS,GAAG,CAACC,OAAO,EAAER,MAAM,CAAC,CAAA;AAC3BF,IAAAA,MAAM,CAACS,GAAG,CAACE,OAAO,EAAER,MAAM,CAAC,CAAA;IAC3BH,MAAM,CAACI,KAAK,GAAGA,KAAK,CAAA;IACpBJ,MAAM,CAACK,KAAK,GAAGA,KAAK,CAAA;IACpBL,MAAM,CAACY,KAAK,GAAG,CAAC,CAAA;AAClB,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;MACaC,kCAAkC,GAAGA,CAChDb,MAAuC,EACvCc,0BAAgC,KAC7B;AACH,EAAA,IAAIC,MAAM,GAAGf,MAAM,CAACgB,sBAAsB,EAAE,CAAA;EAC5C,IAAIhB,MAAM,CAACC,eAAe,EAAE;IAC1BF,2BAA2B,CAACC,MAAM,CAAC,CAAA;IACnCe,MAAM,GAAGA,MAAM,CAACE,SAAS,CAACjB,MAAM,CAACC,eAAe,CAAC,CAAA;AACnD,GAAA;EACA,OAAOD,MAAM,CAACC,eAAe,CAAA;AAC7B,EAAA,IAAIa,0BAA0B,EAAE;AAC9Bd,IAAAA,MAAM,CAACE,MAAM,IAAIY,0BAA0B,CAACZ,MAAM,CAAA;AAClDF,IAAAA,MAAM,CAACG,MAAM,IAAIW,0BAA0B,CAACX,MAAM,CAAA;AACjDH,IAAAA,MAAM,CAAiBkB,KAAK,GAAGJ,0BAA0B,CAACI,KAAK,CAAA;AAC/DlB,IAAAA,MAAM,CAAiBmB,KAAK,GAAGL,0BAA0B,CAACK,KAAK,CAAA;AAChEJ,IAAAA,MAAM,CAACK,CAAC,IAAIN,0BAA0B,CAACO,UAAU,CAAA;AACjDN,IAAAA,MAAM,CAACO,CAAC,IAAIR,0BAA0B,CAACS,SAAS,CAAA;AAChDvB,IAAAA,MAAM,CAACwB,KAAK,GAAGV,0BAA0B,CAACU,KAAK,CAAA;AAC/CxB,IAAAA,MAAM,CAACyB,MAAM,GAAGX,0BAA0B,CAACW,MAAM,CAAA;AACnD,GAAA;EACAzB,MAAM,CAAC0B,mBAAmB,CAACX,MAAM,EAAEY,MAAM,EAAEA,MAAM,CAAC,CAAA;AACpD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeAssertions.min.mjs","sources":["../../../src/util/typeAssertions.ts"],"sourcesContent":["import type { FabricObject } from '../shapes/Object/Object';\nimport type { TFiller } from '../typedefs';\nimport type { FabricText } from '../shapes/Text/Text';\nimport type { Pattern } from '../Pattern';\nimport type { Path } from '../shapes/Path';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\n\nexport const isFiller = (\n filler: TFiller | string | null
|
|
1
|
+
{"version":3,"file":"typeAssertions.min.mjs","sources":["../../../src/util/typeAssertions.ts"],"sourcesContent":["import type { FabricObject } from '../shapes/Object/Object';\nimport type { TFiller } from '../typedefs';\nimport type { FabricText } from '../shapes/Text/Text';\nimport type { Pattern } from '../Pattern';\nimport type { Path } from '../shapes/Path';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\n\nexport const isFiller = (\n filler: TFiller | string | null,\n): filler is TFiller => {\n return !!filler && (filler as TFiller).toLive !== undefined;\n};\n\nexport const isSerializableFiller = (\n filler: TFiller | string | null,\n): filler is TFiller => {\n return !!filler && typeof (filler as TFiller).toObject === 'function';\n};\n\nexport const isPattern = (filler: TFiller): filler is Pattern => {\n return (\n !!filler && (filler as Pattern).offsetX !== undefined && 'source' in filler\n );\n};\n\nexport const isTextObject = (\n fabricObject?: FabricObject,\n): fabricObject is FabricText => {\n return (\n !!fabricObject &&\n typeof (fabricObject as FabricText)._renderText === 'function'\n );\n};\n\nexport const isPath = (fabricObject?: FabricObject): fabricObject is Path => {\n // we could use instanceof but that would mean pulling in Text code for a simple check\n // @todo discuss what to do and how to do\n return (\n !!fabricObject &&\n typeof (fabricObject as Path)._renderPathCommands === 'function'\n );\n};\n\nexport const isActiveSelection = (\n fabricObject?: FabricObject,\n): fabricObject is ActiveSelection =>\n !!fabricObject && 'multiSelectionStacking' in fabricObject;\n"],"names":["isFiller","filler","undefined","toLive","isSerializableFiller","toObject","isPattern","offsetX","isTextObject","fabricObject","_renderText","isPath","_renderPathCommands","isActiveSelection"],"mappings":"AAOaA,MAAAA,EACXC,KAESA,QAAyCC,IAA9BD,EAAmBE,OAG5BC,EACXH,KAESA,GAAkD,mBAAhCA,EAAmBI,SAGnCC,EAAaL,KAEpBA,QAA0CC,IAA/BD,EAAmBM,SAAyB,WAAYN,EAI5DO,EACXC,KAGIA,GACkD,mBAA5CA,EAA4BC,YAI3BC,EAAUF,KAIjBA,GACoD,mBAA9CA,EAAsBG,oBAIrBC,EACXJ,KAEEA,GAAgB,2BAA4BA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeAssertions.mjs","sources":["../../../src/util/typeAssertions.ts"],"sourcesContent":["import type { FabricObject } from '../shapes/Object/Object';\nimport type { TFiller } from '../typedefs';\nimport type { FabricText } from '../shapes/Text/Text';\nimport type { Pattern } from '../Pattern';\nimport type { Path } from '../shapes/Path';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\n\nexport const isFiller = (\n filler: TFiller | string | null
|
|
1
|
+
{"version":3,"file":"typeAssertions.mjs","sources":["../../../src/util/typeAssertions.ts"],"sourcesContent":["import type { FabricObject } from '../shapes/Object/Object';\nimport type { TFiller } from '../typedefs';\nimport type { FabricText } from '../shapes/Text/Text';\nimport type { Pattern } from '../Pattern';\nimport type { Path } from '../shapes/Path';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\n\nexport const isFiller = (\n filler: TFiller | string | null,\n): filler is TFiller => {\n return !!filler && (filler as TFiller).toLive !== undefined;\n};\n\nexport const isSerializableFiller = (\n filler: TFiller | string | null,\n): filler is TFiller => {\n return !!filler && typeof (filler as TFiller).toObject === 'function';\n};\n\nexport const isPattern = (filler: TFiller): filler is Pattern => {\n return (\n !!filler && (filler as Pattern).offsetX !== undefined && 'source' in filler\n );\n};\n\nexport const isTextObject = (\n fabricObject?: FabricObject,\n): fabricObject is FabricText => {\n return (\n !!fabricObject &&\n typeof (fabricObject as FabricText)._renderText === 'function'\n );\n};\n\nexport const isPath = (fabricObject?: FabricObject): fabricObject is Path => {\n // we could use instanceof but that would mean pulling in Text code for a simple check\n // @todo discuss what to do and how to do\n return (\n !!fabricObject &&\n typeof (fabricObject as Path)._renderPathCommands === 'function'\n );\n};\n\nexport const isActiveSelection = (\n fabricObject?: FabricObject,\n): fabricObject is ActiveSelection =>\n !!fabricObject && 'multiSelectionStacking' in fabricObject;\n"],"names":["isFiller","filler","toLive","undefined","isSerializableFiller","toObject","isPattern","offsetX","isTextObject","fabricObject","_renderText","isPath","_renderPathCommands","isActiveSelection"],"mappings":"AAOaA,MAAAA,QAAQ,GACnBC,MAA+B,IACT;EACtB,OAAO,CAAC,CAACA,MAAM,IAAKA,MAAM,CAAaC,MAAM,KAAKC,SAAS,CAAA;AAC7D,EAAC;AAEYC,MAAAA,oBAAoB,GAC/BH,MAA+B,IACT;EACtB,OAAO,CAAC,CAACA,MAAM,IAAI,OAAQA,MAAM,CAAaI,QAAQ,KAAK,UAAU,CAAA;AACvE,EAAC;AAEYC,MAAAA,SAAS,GAAIL,MAAe,IAAwB;AAC/D,EAAA,OACE,CAAC,CAACA,MAAM,IAAKA,MAAM,CAAaM,OAAO,KAAKJ,SAAS,IAAI,QAAQ,IAAIF,MAAM,CAAA;AAE/E,EAAC;AAEYO,MAAAA,YAAY,GACvBC,YAA2B,IACI;EAC/B,OACE,CAAC,CAACA,YAAY,IACd,OAAQA,YAAY,CAAgBC,WAAW,KAAK,UAAU,CAAA;AAElE,EAAC;AAEYC,MAAAA,MAAM,GAAIF,YAA2B,IAA2B;AAC3E;AACA;EACA,OACE,CAAC,CAACA,YAAY,IACd,OAAQA,YAAY,CAAUG,mBAAmB,KAAK,UAAU,CAAA;AAEpE,EAAC;AAEM,MAAMC,iBAAiB,GAC5BJ,YAA2B,IAE3B,CAAC,CAACA,YAAY,IAAI,wBAAwB,IAAIA;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const aligningLineConfig = {
|
|
2
|
+
/** At what distance from the shape does alignment begin? */
|
|
3
|
+
margin: 4,
|
|
4
|
+
/** Aligning line dimensions */
|
|
5
|
+
width: 1,
|
|
6
|
+
/** Aligning line color */
|
|
7
|
+
color: 'rgb(255,0,0,0.9)'
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { aligningLineConfig };
|
|
11
|
+
//# sourceMappingURL=constant.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.mjs","sources":["../../extensions/aligning_guidelines/constant.ts"],"sourcesContent":["import type { AligningLineConfig } from './typedefs';\n\nexport const aligningLineConfig: AligningLineConfig = {\n /** At what distance from the shape does alignment begin? */\n margin: 4,\n /** Aligning line dimensions */\n width: 1,\n /** Aligning line color */\n color: 'rgb(255,0,0,0.9)',\n};\n"],"names":["aligningLineConfig","margin","width","color"],"mappings":"AAEO,MAAMA,kBAAsC,GAAG;AACpD;AACAC,EAAAA,MAAM,EAAE,CAAC;AACT;AACAC,EAAAA,KAAK,EAAE,CAAC;AACR;AACAC,EAAAA,KAAK,EAAE,kBAAA;AACT;;;;"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Point, util } from 'fabric';
|
|
2
|
+
import { collectVerticalPoint, collectHorizontalPoint } from './util/collect-point.mjs';
|
|
3
|
+
import { drawPointList, drawVerticalLine, drawHorizontalLine } from './util/draw.mjs';
|
|
4
|
+
import { getObjectsByTarget } from './util/get-objects-by-target.mjs';
|
|
5
|
+
import { collectLine } from './util/collect-line.mjs';
|
|
6
|
+
import { aligningLineConfig } from './constant.mjs';
|
|
7
|
+
|
|
8
|
+
function initAligningGuidelines(canvas) {
|
|
9
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
10
|
+
Object.assign(aligningLineConfig, options);
|
|
11
|
+
const horizontalLines = new Set();
|
|
12
|
+
const verticalLines = new Set();
|
|
13
|
+
let onlyDrawPoint = false;
|
|
14
|
+
const cacheMap = new Map();
|
|
15
|
+
const getCaCheMapValue = object => {
|
|
16
|
+
const cacheKey = [object.calcTransformMatrix().toString(), object.width, object.height].join();
|
|
17
|
+
const cacheValue = cacheMap.get(cacheKey);
|
|
18
|
+
if (cacheValue) return cacheValue;
|
|
19
|
+
const coords = object.getCoords();
|
|
20
|
+
const rect = util.makeBoundingBoxFromPoints(coords);
|
|
21
|
+
const value = [rect, coords];
|
|
22
|
+
cacheMap.set(cacheKey, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
function moving(e) {
|
|
26
|
+
const activeObject = e.target;
|
|
27
|
+
activeObject.setCoords();
|
|
28
|
+
onlyDrawPoint = false;
|
|
29
|
+
verticalLines.clear();
|
|
30
|
+
horizontalLines.clear();
|
|
31
|
+
const objects = getObjectsByTarget(activeObject);
|
|
32
|
+
const activeObjectRect = activeObject.getBoundingRect();
|
|
33
|
+
for (const object of objects) {
|
|
34
|
+
const objectRect = getCaCheMapValue(object)[0];
|
|
35
|
+
const {
|
|
36
|
+
vLines,
|
|
37
|
+
hLines
|
|
38
|
+
} = collectLine({
|
|
39
|
+
activeObject,
|
|
40
|
+
activeObjectRect,
|
|
41
|
+
objectRect
|
|
42
|
+
});
|
|
43
|
+
vLines.forEach(o => {
|
|
44
|
+
verticalLines.add(JSON.stringify(o));
|
|
45
|
+
});
|
|
46
|
+
hLines.forEach(o => {
|
|
47
|
+
horizontalLines.add(JSON.stringify(o));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function scalingOrResizing(e) {
|
|
52
|
+
// br bl tr tl mb ml mt mr
|
|
53
|
+
const activeObject = e.target;
|
|
54
|
+
activeObject.setCoords();
|
|
55
|
+
const isScale = String(e.transform.action).startsWith('scale');
|
|
56
|
+
verticalLines.clear();
|
|
57
|
+
horizontalLines.clear();
|
|
58
|
+
const objects = getObjectsByTarget(activeObject);
|
|
59
|
+
let corner = e.transform.corner;
|
|
60
|
+
if (activeObject.flipX) corner = corner.replace('l', 'r').replace('r', 'l');
|
|
61
|
+
if (activeObject.flipY) corner = corner.replace('t', 'b').replace('b', 't');
|
|
62
|
+
let index = ['tl', 'tr', 'br', 'bl', 'mt', 'mr', 'mb', 'ml'].indexOf(corner);
|
|
63
|
+
if (index == -1) return;
|
|
64
|
+
onlyDrawPoint = index > 3;
|
|
65
|
+
if (onlyDrawPoint) {
|
|
66
|
+
const angle = activeObject.getTotalAngle();
|
|
67
|
+
if (angle % 90 != 0) return;
|
|
68
|
+
index -= 4;
|
|
69
|
+
}
|
|
70
|
+
let point = activeObject.getCoords()[index];
|
|
71
|
+
for (const object of objects) {
|
|
72
|
+
const [rect, coords] = getCaCheMapValue(object);
|
|
73
|
+
const center = new Point(rect.left + rect.width / 2, rect.top + rect.height / 2);
|
|
74
|
+
const list = [...coords, center];
|
|
75
|
+
const props = {
|
|
76
|
+
activeObject,
|
|
77
|
+
point,
|
|
78
|
+
list,
|
|
79
|
+
isScale,
|
|
80
|
+
index
|
|
81
|
+
};
|
|
82
|
+
const vLines = collectVerticalPoint(props);
|
|
83
|
+
const hLines = collectHorizontalPoint(props);
|
|
84
|
+
vLines.forEach(o => {
|
|
85
|
+
verticalLines.add(JSON.stringify(o));
|
|
86
|
+
});
|
|
87
|
+
hLines.forEach(o => {
|
|
88
|
+
horizontalLines.add(JSON.stringify(o));
|
|
89
|
+
});
|
|
90
|
+
if (vLines.length || hLines.length) point = activeObject.getCoords()[index];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function beforeRender() {
|
|
94
|
+
canvas.clearContext(canvas.contextTop);
|
|
95
|
+
}
|
|
96
|
+
function afterRender() {
|
|
97
|
+
if (onlyDrawPoint) {
|
|
98
|
+
const list = [];
|
|
99
|
+
for (const v of verticalLines) list.push(JSON.parse(v));
|
|
100
|
+
for (const h of horizontalLines) list.push(JSON.parse(h));
|
|
101
|
+
drawPointList(canvas, list);
|
|
102
|
+
} else {
|
|
103
|
+
for (const v of verticalLines) drawVerticalLine(canvas, JSON.parse(v));
|
|
104
|
+
for (const h of horizontalLines) drawHorizontalLine(canvas, JSON.parse(h));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function mouseUp() {
|
|
108
|
+
verticalLines.clear();
|
|
109
|
+
horizontalLines.clear();
|
|
110
|
+
cacheMap.clear();
|
|
111
|
+
canvas.requestRenderAll();
|
|
112
|
+
}
|
|
113
|
+
canvas.on('object:resizing', scalingOrResizing);
|
|
114
|
+
canvas.on('object:scaling', scalingOrResizing);
|
|
115
|
+
canvas.on('object:moving', moving);
|
|
116
|
+
canvas.on('before:render', beforeRender);
|
|
117
|
+
canvas.on('after:render', afterRender);
|
|
118
|
+
canvas.on('mouse:up', mouseUp);
|
|
119
|
+
return () => {
|
|
120
|
+
canvas.off('object:resizing', scalingOrResizing);
|
|
121
|
+
canvas.off('object:scaling', scalingOrResizing);
|
|
122
|
+
canvas.off('object:moving', moving);
|
|
123
|
+
canvas.off('before:render', beforeRender);
|
|
124
|
+
canvas.off('after:render', afterRender);
|
|
125
|
+
canvas.off('mouse:up', mouseUp);
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export { initAligningGuidelines };
|
|
130
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../extensions/aligning_guidelines/index.ts"],"sourcesContent":["import type {\n BasicTransformEvent,\n Canvas,\n FabricObject,\n TBBox,\n TPointerEvent,\n} from 'fabric';\nimport { Point, util } from 'fabric';\nimport {\n collectHorizontalPoint,\n collectVerticalPoint,\n} from './util/collect-point';\nimport {\n drawHorizontalLine,\n drawPointList,\n drawVerticalLine,\n} from './util/draw';\nimport { getObjectsByTarget } from './util/get-objects-by-target';\nimport { collectLine } from './util/collect-line';\nimport type {\n AligningLineConfig,\n HorizontalLine,\n VerticalLine,\n} from './typedefs';\nimport { aligningLineConfig } from './constant';\n\ntype TransformEvent = BasicTransformEvent<TPointerEvent> & {\n target: FabricObject;\n};\n\nexport type { AligningLineConfig } from './typedefs';\n\nexport function initAligningGuidelines(\n canvas: Canvas,\n options: Partial<AligningLineConfig> = {},\n) {\n Object.assign(aligningLineConfig, options);\n\n const horizontalLines = new Set<string>();\n const verticalLines = new Set<string>();\n let onlyDrawPoint = false;\n const cacheMap = new Map<string, [TBBox, Point[]]>();\n\n const getCaCheMapValue = (object: FabricObject) => {\n const cacheKey = [\n object.calcTransformMatrix().toString(),\n object.width,\n object.height,\n ].join();\n const cacheValue = cacheMap.get(cacheKey);\n if (cacheValue) return cacheValue;\n const coords = object.getCoords();\n const rect = util.makeBoundingBoxFromPoints(coords);\n const value: [TBBox, Point[]] = [rect, coords];\n cacheMap.set(cacheKey, value);\n return value;\n };\n\n function moving(e: TransformEvent) {\n const activeObject = e.target;\n activeObject.setCoords();\n onlyDrawPoint = false;\n verticalLines.clear();\n horizontalLines.clear();\n\n const objects = getObjectsByTarget(activeObject);\n const activeObjectRect = activeObject.getBoundingRect();\n\n for (const object of objects) {\n const objectRect = getCaCheMapValue(object)[0];\n const { vLines, hLines } = collectLine({\n activeObject,\n activeObjectRect,\n objectRect,\n });\n vLines.forEach((o) => {\n verticalLines.add(JSON.stringify(o));\n });\n hLines.forEach((o) => {\n horizontalLines.add(JSON.stringify(o));\n });\n }\n }\n\n function scalingOrResizing(e: TransformEvent) {\n // br bl tr tl mb ml mt mr\n const activeObject = e.target;\n activeObject.setCoords();\n const isScale = String(e.transform.action).startsWith('scale');\n verticalLines.clear();\n horizontalLines.clear();\n\n const objects = getObjectsByTarget(activeObject);\n let corner = e.transform.corner;\n if (activeObject.flipX) corner = corner.replace('l', 'r').replace('r', 'l');\n if (activeObject.flipY) corner = corner.replace('t', 'b').replace('b', 't');\n let index = ['tl', 'tr', 'br', 'bl', 'mt', 'mr', 'mb', 'ml'].indexOf(\n corner,\n );\n if (index == -1) return;\n onlyDrawPoint = index > 3;\n if (onlyDrawPoint) {\n const angle = activeObject.getTotalAngle();\n if (angle % 90 != 0) return;\n index -= 4;\n }\n let point = activeObject.getCoords()[index];\n for (const object of objects) {\n const [rect, coords] = getCaCheMapValue(object);\n const center = new Point(\n rect.left + rect.width / 2,\n rect.top + rect.height / 2,\n );\n const list = [...coords, center];\n const props = { activeObject, point, list, isScale, index };\n const vLines = collectVerticalPoint(props);\n const hLines = collectHorizontalPoint(props);\n vLines.forEach((o) => {\n verticalLines.add(JSON.stringify(o));\n });\n hLines.forEach((o) => {\n horizontalLines.add(JSON.stringify(o));\n });\n if (vLines.length || hLines.length)\n point = activeObject.getCoords()[index];\n }\n }\n\n function beforeRender() {\n canvas.clearContext(canvas.contextTop);\n }\n function afterRender() {\n if (onlyDrawPoint) {\n const list: Array<VerticalLine | HorizontalLine> = [];\n for (const v of verticalLines) list.push(JSON.parse(v));\n for (const h of horizontalLines) list.push(JSON.parse(h));\n drawPointList(canvas, list);\n } else {\n for (const v of verticalLines) drawVerticalLine(canvas, JSON.parse(v));\n for (const h of horizontalLines)\n drawHorizontalLine(canvas, JSON.parse(h));\n }\n }\n function mouseUp() {\n verticalLines.clear();\n horizontalLines.clear();\n cacheMap.clear();\n canvas.requestRenderAll();\n }\n\n canvas.on('object:resizing', scalingOrResizing);\n canvas.on('object:scaling', scalingOrResizing);\n canvas.on('object:moving', moving);\n canvas.on('before:render', beforeRender);\n canvas.on('after:render', afterRender);\n canvas.on('mouse:up', mouseUp);\n\n return () => {\n canvas.off('object:resizing', scalingOrResizing);\n canvas.off('object:scaling', scalingOrResizing);\n canvas.off('object:moving', moving);\n canvas.off('before:render', beforeRender);\n canvas.off('after:render', afterRender);\n canvas.off('mouse:up', mouseUp);\n };\n}\n"],"names":["initAligningGuidelines","canvas","options","arguments","length","undefined","Object","assign","aligningLineConfig","horizontalLines","Set","verticalLines","onlyDrawPoint","cacheMap","Map","getCaCheMapValue","object","cacheKey","calcTransformMatrix","toString","width","height","join","cacheValue","get","coords","getCoords","rect","util","makeBoundingBoxFromPoints","value","set","moving","e","activeObject","target","setCoords","clear","objects","getObjectsByTarget","activeObjectRect","getBoundingRect","objectRect","vLines","hLines","collectLine","forEach","o","add","JSON","stringify","scalingOrResizing","isScale","String","transform","action","startsWith","corner","flipX","replace","flipY","index","indexOf","angle","getTotalAngle","point","center","Point","left","top","list","props","collectVerticalPoint","collectHorizontalPoint","beforeRender","clearContext","contextTop","afterRender","v","push","parse","h","drawPointList","drawVerticalLine","drawHorizontalLine","mouseUp","requestRenderAll","on","off"],"mappings":";;;;;;;AAgCO,SAASA,sBAAsBA,CACpCC,MAAc,EAEd;AAAA,EAAA,IADAC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;AAEzCG,EAAAA,MAAM,CAACC,MAAM,CAACC,kBAAkB,EAAEN,OAAO,CAAC,CAAA;AAE1C,EAAA,MAAMO,eAAe,GAAG,IAAIC,GAAG,EAAU,CAAA;AACzC,EAAA,MAAMC,aAAa,GAAG,IAAID,GAAG,EAAU,CAAA;EACvC,IAAIE,aAAa,GAAG,KAAK,CAAA;AACzB,EAAA,MAAMC,QAAQ,GAAG,IAAIC,GAAG,EAA4B,CAAA;EAEpD,MAAMC,gBAAgB,GAAIC,MAAoB,IAAK;IACjD,MAAMC,QAAQ,GAAG,CACfD,MAAM,CAACE,mBAAmB,EAAE,CAACC,QAAQ,EAAE,EACvCH,MAAM,CAACI,KAAK,EACZJ,MAAM,CAACK,MAAM,CACd,CAACC,IAAI,EAAE,CAAA;AACR,IAAA,MAAMC,UAAU,GAAGV,QAAQ,CAACW,GAAG,CAACP,QAAQ,CAAC,CAAA;IACzC,IAAIM,UAAU,EAAE,OAAOA,UAAU,CAAA;AACjC,IAAA,MAAME,MAAM,GAAGT,MAAM,CAACU,SAAS,EAAE,CAAA;AACjC,IAAA,MAAMC,IAAI,GAAGC,IAAI,CAACC,yBAAyB,CAACJ,MAAM,CAAC,CAAA;AACnD,IAAA,MAAMK,KAAuB,GAAG,CAACH,IAAI,EAAEF,MAAM,CAAC,CAAA;AAC9CZ,IAAAA,QAAQ,CAACkB,GAAG,CAACd,QAAQ,EAAEa,KAAK,CAAC,CAAA;AAC7B,IAAA,OAAOA,KAAK,CAAA;GACb,CAAA;EAED,SAASE,MAAMA,CAACC,CAAiB,EAAE;AACjC,IAAA,MAAMC,YAAY,GAAGD,CAAC,CAACE,MAAM,CAAA;IAC7BD,YAAY,CAACE,SAAS,EAAE,CAAA;AACxBxB,IAAAA,aAAa,GAAG,KAAK,CAAA;IACrBD,aAAa,CAAC0B,KAAK,EAAE,CAAA;IACrB5B,eAAe,CAAC4B,KAAK,EAAE,CAAA;AAEvB,IAAA,MAAMC,OAAO,GAAGC,kBAAkB,CAACL,YAAY,CAAC,CAAA;AAChD,IAAA,MAAMM,gBAAgB,GAAGN,YAAY,CAACO,eAAe,EAAE,CAAA;AAEvD,IAAA,KAAK,MAAMzB,MAAM,IAAIsB,OAAO,EAAE;MAC5B,MAAMI,UAAU,GAAG3B,gBAAgB,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;MAC9C,MAAM;QAAE2B,MAAM;AAAEC,QAAAA,MAAAA;OAAQ,GAAGC,WAAW,CAAC;QACrCX,YAAY;QACZM,gBAAgB;AAChBE,QAAAA,UAAAA;AACF,OAAC,CAAC,CAAA;AACFC,MAAAA,MAAM,CAACG,OAAO,CAAEC,CAAC,IAAK;QACpBpC,aAAa,CAACqC,GAAG,CAACC,IAAI,CAACC,SAAS,CAACH,CAAC,CAAC,CAAC,CAAA;AACtC,OAAC,CAAC,CAAA;AACFH,MAAAA,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAK;QACpBtC,eAAe,CAACuC,GAAG,CAACC,IAAI,CAACC,SAAS,CAACH,CAAC,CAAC,CAAC,CAAA;AACxC,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;EAEA,SAASI,iBAAiBA,CAAClB,CAAiB,EAAE;AAC5C;AACA,IAAA,MAAMC,YAAY,GAAGD,CAAC,CAACE,MAAM,CAAA;IAC7BD,YAAY,CAACE,SAAS,EAAE,CAAA;AACxB,IAAA,MAAMgB,OAAO,GAAGC,MAAM,CAACpB,CAAC,CAACqB,SAAS,CAACC,MAAM,CAAC,CAACC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9D7C,aAAa,CAAC0B,KAAK,EAAE,CAAA;IACrB5B,eAAe,CAAC4B,KAAK,EAAE,CAAA;AAEvB,IAAA,MAAMC,OAAO,GAAGC,kBAAkB,CAACL,YAAY,CAAC,CAAA;AAChD,IAAA,IAAIuB,MAAM,GAAGxB,CAAC,CAACqB,SAAS,CAACG,MAAM,CAAA;IAC/B,IAAIvB,YAAY,CAACwB,KAAK,EAAED,MAAM,GAAGA,MAAM,CAACE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC3E,IAAIzB,YAAY,CAAC0B,KAAK,EAAEH,MAAM,GAAGA,MAAM,CAACE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC3E,IAAIE,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAACC,OAAO,CAClEL,MACF,CAAC,CAAA;AACD,IAAA,IAAII,KAAK,IAAI,CAAC,CAAC,EAAE,OAAA;IACjBjD,aAAa,GAAGiD,KAAK,GAAG,CAAC,CAAA;AACzB,IAAA,IAAIjD,aAAa,EAAE;AACjB,MAAA,MAAMmD,KAAK,GAAG7B,YAAY,CAAC8B,aAAa,EAAE,CAAA;AAC1C,MAAA,IAAID,KAAK,GAAG,EAAE,IAAI,CAAC,EAAE,OAAA;AACrBF,MAAAA,KAAK,IAAI,CAAC,CAAA;AACZ,KAAA;IACA,IAAII,KAAK,GAAG/B,YAAY,CAACR,SAAS,EAAE,CAACmC,KAAK,CAAC,CAAA;AAC3C,IAAA,KAAK,MAAM7C,MAAM,IAAIsB,OAAO,EAAE;MAC5B,MAAM,CAACX,IAAI,EAAEF,MAAM,CAAC,GAAGV,gBAAgB,CAACC,MAAM,CAAC,CAAA;MAC/C,MAAMkD,MAAM,GAAG,IAAIC,KAAK,CACtBxC,IAAI,CAACyC,IAAI,GAAGzC,IAAI,CAACP,KAAK,GAAG,CAAC,EAC1BO,IAAI,CAAC0C,GAAG,GAAG1C,IAAI,CAACN,MAAM,GAAG,CAC3B,CAAC,CAAA;AACD,MAAA,MAAMiD,IAAI,GAAG,CAAC,GAAG7C,MAAM,EAAEyC,MAAM,CAAC,CAAA;AAChC,MAAA,MAAMK,KAAK,GAAG;QAAErC,YAAY;QAAE+B,KAAK;QAAEK,IAAI;QAAElB,OAAO;AAAES,QAAAA,KAAAA;OAAO,CAAA;AAC3D,MAAA,MAAMlB,MAAM,GAAG6B,oBAAoB,CAACD,KAAK,CAAC,CAAA;AAC1C,MAAA,MAAM3B,MAAM,GAAG6B,sBAAsB,CAACF,KAAK,CAAC,CAAA;AAC5C5B,MAAAA,MAAM,CAACG,OAAO,CAAEC,CAAC,IAAK;QACpBpC,aAAa,CAACqC,GAAG,CAACC,IAAI,CAACC,SAAS,CAACH,CAAC,CAAC,CAAC,CAAA;AACtC,OAAC,CAAC,CAAA;AACFH,MAAAA,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAK;QACpBtC,eAAe,CAACuC,GAAG,CAACC,IAAI,CAACC,SAAS,CAACH,CAAC,CAAC,CAAC,CAAA;AACxC,OAAC,CAAC,CAAA;AACF,MAAA,IAAIJ,MAAM,CAACvC,MAAM,IAAIwC,MAAM,CAACxC,MAAM,EAChC6D,KAAK,GAAG/B,YAAY,CAACR,SAAS,EAAE,CAACmC,KAAK,CAAC,CAAA;AAC3C,KAAA;AACF,GAAA;EAEA,SAASa,YAAYA,GAAG;AACtBzE,IAAAA,MAAM,CAAC0E,YAAY,CAAC1E,MAAM,CAAC2E,UAAU,CAAC,CAAA;AACxC,GAAA;EACA,SAASC,WAAWA,GAAG;AACrB,IAAA,IAAIjE,aAAa,EAAE;MACjB,MAAM0D,IAA0C,GAAG,EAAE,CAAA;AACrD,MAAA,KAAK,MAAMQ,CAAC,IAAInE,aAAa,EAAE2D,IAAI,CAACS,IAAI,CAAC9B,IAAI,CAAC+B,KAAK,CAACF,CAAC,CAAC,CAAC,CAAA;AACvD,MAAA,KAAK,MAAMG,CAAC,IAAIxE,eAAe,EAAE6D,IAAI,CAACS,IAAI,CAAC9B,IAAI,CAAC+B,KAAK,CAACC,CAAC,CAAC,CAAC,CAAA;AACzDC,MAAAA,aAAa,CAACjF,MAAM,EAAEqE,IAAI,CAAC,CAAA;AAC7B,KAAC,MAAM;AACL,MAAA,KAAK,MAAMQ,CAAC,IAAInE,aAAa,EAAEwE,gBAAgB,CAAClF,MAAM,EAAEgD,IAAI,CAAC+B,KAAK,CAACF,CAAC,CAAC,CAAC,CAAA;AACtE,MAAA,KAAK,MAAMG,CAAC,IAAIxE,eAAe,EAC7B2E,kBAAkB,CAACnF,MAAM,EAAEgD,IAAI,CAAC+B,KAAK,CAACC,CAAC,CAAC,CAAC,CAAA;AAC7C,KAAA;AACF,GAAA;EACA,SAASI,OAAOA,GAAG;IACjB1E,aAAa,CAAC0B,KAAK,EAAE,CAAA;IACrB5B,eAAe,CAAC4B,KAAK,EAAE,CAAA;IACvBxB,QAAQ,CAACwB,KAAK,EAAE,CAAA;IAChBpC,MAAM,CAACqF,gBAAgB,EAAE,CAAA;AAC3B,GAAA;AAEArF,EAAAA,MAAM,CAACsF,EAAE,CAAC,iBAAiB,EAAEpC,iBAAiB,CAAC,CAAA;AAC/ClD,EAAAA,MAAM,CAACsF,EAAE,CAAC,gBAAgB,EAAEpC,iBAAiB,CAAC,CAAA;AAC9ClD,EAAAA,MAAM,CAACsF,EAAE,CAAC,eAAe,EAAEvD,MAAM,CAAC,CAAA;AAClC/B,EAAAA,MAAM,CAACsF,EAAE,CAAC,eAAe,EAAEb,YAAY,CAAC,CAAA;AACxCzE,EAAAA,MAAM,CAACsF,EAAE,CAAC,cAAc,EAAEV,WAAW,CAAC,CAAA;AACtC5E,EAAAA,MAAM,CAACsF,EAAE,CAAC,UAAU,EAAEF,OAAO,CAAC,CAAA;AAE9B,EAAA,OAAO,MAAM;AACXpF,IAAAA,MAAM,CAACuF,GAAG,CAAC,iBAAiB,EAAErC,iBAAiB,CAAC,CAAA;AAChDlD,IAAAA,MAAM,CAACuF,GAAG,CAAC,gBAAgB,EAAErC,iBAAiB,CAAC,CAAA;AAC/ClD,IAAAA,MAAM,CAACuF,GAAG,CAAC,eAAe,EAAExD,MAAM,CAAC,CAAA;AACnC/B,IAAAA,MAAM,CAACuF,GAAG,CAAC,eAAe,EAAEd,YAAY,CAAC,CAAA;AACzCzE,IAAAA,MAAM,CAACuF,GAAG,CAAC,cAAc,EAAEX,WAAW,CAAC,CAAA;AACvC5E,IAAAA,MAAM,CAACuF,GAAG,CAAC,UAAU,EAAEH,OAAO,CAAC,CAAA;GAChC,CAAA;AACH;;;;"}
|