fabric 7.3.1 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -27
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.mjs +1 -1
- package/{dist-extensions/_virtual/_@oxc-project_runtime@0.122.0 → dist/_virtual/_@oxc-project_runtime@0.126.0}/helpers/toPrimitive.mjs +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.mjs +1 -1
- package/{dist-extensions/_virtual/_@oxc-project_runtime@0.122.0 → dist/_virtual/_@oxc-project_runtime@0.126.0}/helpers/typeof.mjs +1 -1
- package/dist/index.js +88 -66
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +35 -35
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +37 -37
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +88 -66
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +83 -62
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +83 -62
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.min.mjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/src/Collection.min.mjs +1 -1
- package/dist/src/Collection.mjs +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutManager.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +1 -1
- package/dist/src/Observable.min.mjs +1 -1
- package/dist/src/Observable.mjs +1 -1
- package/dist/src/Pattern/Pattern.min.mjs +1 -1
- package/dist/src/Pattern/Pattern.mjs +1 -1
- package/dist/src/Shadow.min.mjs +1 -1
- package/dist/src/Shadow.mjs +1 -1
- package/dist/src/brushes/BaseBrush.min.mjs +1 -1
- package/dist/src/brushes/BaseBrush.mjs +1 -1
- package/dist/src/brushes/CircleBrush.min.mjs +1 -1
- package/dist/src/brushes/CircleBrush.mjs +1 -1
- package/dist/src/brushes/PencilBrush.min.mjs +1 -1
- package/dist/src/brushes/PencilBrush.mjs +1 -1
- package/dist/src/brushes/SprayBrush.min.mjs +1 -1
- package/dist/src/brushes/SprayBrush.mjs +1 -1
- package/dist/src/cache.min.mjs +1 -1
- package/dist/src/cache.mjs +1 -1
- package/dist/src/canvas/Canvas.min.mjs +1 -1
- package/dist/src/canvas/Canvas.mjs +1 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +1 -1
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +1 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +1 -1
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs +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 +5 -5
- package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.mjs +4 -4
- package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
- package/dist/src/canvas/TextEditingManager.min.mjs +1 -1
- package/dist/src/canvas/TextEditingManager.mjs +1 -1
- package/dist/src/color/Color.min.mjs +1 -1
- package/dist/src/color/Color.mjs +1 -1
- package/dist/src/config.min.mjs +1 -1
- package/dist/src/config.mjs +1 -1
- package/dist/src/controls/Control.min.mjs +1 -1
- package/dist/src/controls/Control.mjs +1 -1
- package/dist/src/filters/BaseFilter.min.mjs +1 -1
- package/dist/src/filters/BaseFilter.mjs +1 -1
- package/dist/src/filters/BlendColor.min.mjs +1 -1
- package/dist/src/filters/BlendColor.mjs +1 -1
- package/dist/src/filters/BlendImage.min.mjs +1 -1
- package/dist/src/filters/BlendImage.mjs +1 -1
- package/dist/src/filters/Blur.min.mjs +1 -1
- package/dist/src/filters/Blur.mjs +1 -1
- package/dist/src/filters/Brightness.min.mjs +1 -1
- package/dist/src/filters/Brightness.mjs +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.mjs +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs +1 -1
- package/dist/src/filters/ColorMatrix.mjs +1 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs +1 -1
- package/dist/src/filters/ColorMatrixFilters.mjs +1 -1
- package/dist/src/filters/Composed.min.mjs +1 -1
- package/dist/src/filters/Composed.mjs +1 -1
- package/dist/src/filters/Contrast.min.mjs +1 -1
- package/dist/src/filters/Contrast.mjs +1 -1
- package/dist/src/filters/Convolute.min.mjs +1 -1
- package/dist/src/filters/Convolute.min.mjs.map +1 -1
- package/dist/src/filters/Convolute.mjs +1 -1
- package/dist/src/filters/Gamma.min.mjs +1 -1
- package/dist/src/filters/Gamma.mjs +1 -1
- package/dist/src/filters/Grayscale.min.mjs +1 -1
- package/dist/src/filters/Grayscale.mjs +1 -1
- package/dist/src/filters/HueRotation.min.mjs +1 -1
- package/dist/src/filters/HueRotation.mjs +1 -1
- package/dist/src/filters/Invert.min.mjs +1 -1
- package/dist/src/filters/Invert.mjs +1 -1
- package/dist/src/filters/Noise.min.mjs +1 -1
- package/dist/src/filters/Noise.mjs +1 -1
- package/dist/src/filters/Pixelate.min.mjs +1 -1
- package/dist/src/filters/Pixelate.mjs +1 -1
- package/dist/src/filters/RemoveColor.min.mjs +1 -1
- package/dist/src/filters/RemoveColor.mjs +1 -1
- package/dist/src/filters/Resize.min.mjs +2 -2
- package/dist/src/filters/Resize.min.mjs.map +1 -1
- package/dist/src/filters/Resize.mjs +2 -2
- package/dist/src/filters/Resize.mjs.map +1 -1
- package/dist/src/filters/Saturation.min.mjs +1 -1
- package/dist/src/filters/Saturation.mjs +1 -1
- package/dist/src/filters/Vibrance.min.mjs +1 -1
- package/dist/src/filters/Vibrance.mjs +1 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs +1 -1
- package/dist/src/filters/WebGLFilterBackend.mjs +1 -1
- package/dist/src/gradient/Gradient.d.ts.map +1 -1
- package/dist/src/gradient/Gradient.min.mjs +4 -4
- package/dist/src/gradient/Gradient.min.mjs.map +1 -1
- package/dist/src/gradient/Gradient.mjs +6 -2
- package/dist/src/gradient/Gradient.mjs.map +1 -1
- package/dist/src/gradient/typedefs.d.ts +7 -7
- package/dist/src/parser/applyViewboxTransform.d.ts.map +1 -1
- package/dist/src/parser/applyViewboxTransform.min.mjs +1 -1
- package/dist/src/parser/applyViewboxTransform.min.mjs.map +1 -1
- package/dist/src/parser/applyViewboxTransform.mjs +2 -4
- package/dist/src/parser/applyViewboxTransform.mjs.map +1 -1
- package/dist/src/shapes/ActiveSelection.min.mjs +1 -1
- package/dist/src/shapes/ActiveSelection.mjs +1 -1
- package/dist/src/shapes/Circle.min.mjs +2 -2
- package/dist/src/shapes/Circle.min.mjs.map +1 -1
- package/dist/src/shapes/Circle.mjs +1 -1
- package/dist/src/shapes/Ellipse.min.mjs +1 -1
- package/dist/src/shapes/Ellipse.mjs +1 -1
- package/dist/src/shapes/Group.min.mjs +1 -1
- package/dist/src/shapes/Group.mjs +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs +1 -1
- package/dist/src/shapes/IText/IText.d.ts.map +1 -1
- package/dist/src/shapes/IText/IText.min.mjs +1 -1
- package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.mjs +3 -3
- package/dist/src/shapes/IText/IText.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.min.mjs +1 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.mjs +1 -1
- package/dist/src/shapes/Image.min.mjs +1 -1
- package/dist/src/shapes/Image.mjs +1 -1
- package/dist/src/shapes/Line.min.mjs +1 -1
- package/dist/src/shapes/Line.mjs +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +2 -2
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +11 -26
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs +7 -6
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.min.mjs +1 -1
- package/dist/src/shapes/Object/Object.mjs +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs +6 -2
- package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +1 -1
- package/dist/src/shapes/Path.min.mjs +1 -1
- package/dist/src/shapes/Path.mjs +1 -1
- package/dist/src/shapes/Polygon.min.mjs +1 -1
- package/dist/src/shapes/Polygon.mjs +1 -1
- package/dist/src/shapes/Polyline.min.mjs +1 -1
- package/dist/src/shapes/Polyline.mjs +1 -1
- package/dist/src/shapes/Rect.min.mjs +1 -1
- package/dist/src/shapes/Rect.mjs +1 -1
- package/dist/src/shapes/Text/StyledText.min.mjs +1 -1
- package/dist/src/shapes/Text/StyledText.mjs +1 -1
- package/dist/src/shapes/Text/Text.d.ts +4 -4
- package/dist/src/shapes/Text/Text.min.mjs +1 -1
- package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.mjs +3 -3
- package/dist/src/shapes/Text/Text.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +2 -2
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +14 -7
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Textbox.d.ts.map +1 -1
- package/dist/src/shapes/Textbox.min.mjs +2 -2
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs +2 -3
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/shapes/Triangle.min.mjs +1 -1
- package/dist/src/shapes/Triangle.mjs +1 -1
- package/dist/src/util/animation/AnimationBase.min.mjs +1 -1
- package/dist/src/util/animation/AnimationBase.mjs +1 -1
- package/dist/src/util/animation/easing.min.mjs +1 -1
- package/dist/src/util/animation/easing.min.mjs.map +1 -1
- package/dist/src/util/animation/easing.mjs +1 -1
- package/dist/src/util/animation/easing.mjs.map +1 -1
- package/dist/src/util/internals/applyCanvasTransform.d.ts +1 -1
- package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +1 -1
- package/dist/src/util/internals/applyCanvasTransform.mjs +1 -1
- package/dist/src/util/internals/applyCanvasTransform.mjs.map +1 -1
- package/dist/src/util/internals/svgExportCheck.d.ts +4 -0
- package/dist/src/util/internals/svgExportCheck.d.ts.map +1 -0
- package/dist/src/util/internals/svgExportCheck.min.mjs +2 -0
- package/dist/src/util/internals/svgExportCheck.min.mjs.map +1 -0
- package/dist/src/util/internals/svgExportCheck.mjs +12 -0
- package/dist/src/util/internals/svgExportCheck.mjs.map +1 -0
- package/dist/src/util/misc/matrix.d.ts +14 -0
- package/dist/src/util/misc/matrix.d.ts.map +1 -1
- package/dist/src/util/misc/matrix.min.mjs +1 -1
- package/dist/src/util/misc/matrix.min.mjs.map +1 -1
- package/dist/src/util/misc/matrix.mjs +15 -1
- package/dist/src/util/misc/matrix.mjs.map +1 -1
- package/dist/src/util/misc/mergeClipPaths.d.ts +1 -1
- package/dist/src/util/misc/mergeClipPaths.min.mjs.map +1 -1
- package/dist/src/util/misc/mergeClipPaths.mjs +1 -1
- package/dist/src/util/misc/mergeClipPaths.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs +1 -1
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +1 -1
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +1 -1
- package/dist/src/util/misc/svgParsing.d.ts +2 -2
- package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
- package/dist/src/util/misc/svgParsing.min.mjs +1 -1
- package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
- package/dist/src/util/misc/svgParsing.mjs +8 -3
- package/dist/src/util/misc/svgParsing.mjs.map +1 -1
- package/dist/src/util/path/index.d.ts.map +1 -1
- package/dist/src/util/path/index.min.mjs +1 -1
- package/dist/src/util/path/index.min.mjs.map +1 -1
- package/dist/src/util/path/index.mjs +2 -1
- package/dist/src/util/path/index.mjs.map +1 -1
- package/dist/src/util/path/regex.min.mjs.map +1 -1
- package/dist/src/util/path/regex.mjs +1 -1
- package/dist/src/util/path/regex.mjs.map +1 -1
- package/dist-extensions/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.mjs +1 -1
- package/{dist/_virtual/_@oxc-project_runtime@0.122.0 → dist-extensions/_virtual/_@oxc-project_runtime@0.126.0}/helpers/toPrimitive.mjs +1 -1
- package/dist-extensions/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.mjs +1 -1
- package/{dist/_virtual/_@oxc-project_runtime@0.122.0 → dist-extensions/_virtual/_@oxc-project_runtime@0.126.0}/helpers/typeof.mjs +1 -1
- package/dist-extensions/aligning_guidelines/index.mjs +1 -1
- package/dist-extensions/cropping_controls/croppingHandlers.mjs +1 -7
- package/dist-extensions/cropping_controls/croppingHandlers.mjs.map +1 -1
- package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -1
- package/dist-extensions/fabric-extensions.min.js +1 -1
- package/dist-extensions/fabric-extensions.min.js.map +1 -1
- package/dist-extensions/src/canvas/StaticCanvas.d.ts +1 -1
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -1
- package/dist-extensions/src/gradient/typedefs.d.ts +7 -7
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +1 -1
- package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +1 -1
- package/dist-extensions/src/shapes/Text/Text.d.ts +4 -4
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
- package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +1 -1
- package/dist-extensions/src/util/internals/svgExportCheck.d.ts +4 -0
- package/dist-extensions/src/util/internals/svgExportCheck.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/matrix.d.ts +14 -0
- package/dist-extensions/src/util/misc/matrix.d.ts.map +1 -1
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +1 -1
- package/dist-extensions/src/util/misc/svgParsing.d.ts +2 -2
- package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -1
- package/dist-extensions/src/util/path/index.d.ts.map +1 -1
- package/extensions/cropping_controls/croppingHandlers.ts +13 -19
- package/package.json +10 -10
- package/src/LayoutManager/README.md +3 -3
- package/src/canvas/StaticCanvas.spec.ts +19 -0
- package/src/canvas/StaticCanvas.ts +7 -3
- package/src/filters/Resize.ts +1 -1
- package/src/gradient/Gradient.spec.ts +60 -1
- package/src/gradient/Gradient.ts +9 -2
- package/src/gradient/typedefs.ts +7 -7
- package/src/parser/applyViewboxTransform.ts +2 -4
- package/src/shapes/IText/IText.ts +1 -2
- package/src/shapes/IText/ITextBehavior.test.ts +6 -6
- package/src/shapes/Object/FabricObject.spec.ts +3 -2
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +47 -37
- package/src/shapes/Object/InteractiveObject.ts +13 -3
- package/src/shapes/Object/Object-interactivity.spec.ts +126 -7
- package/src/shapes/Object/ObjectGeometry.spec.ts +10 -1
- package/src/shapes/Object/ObjectGeometry.ts +10 -3
- package/src/shapes/Object/objectSvgExport.spec.ts +27 -0
- package/src/shapes/Object/types/FabricObjectProps.ts +1 -1
- package/src/shapes/Text/Text.spec.ts +25 -0
- package/src/shapes/Text/Text.ts +5 -5
- package/src/shapes/Text/TextSVGExportMixin.ts +25 -11
- package/src/shapes/Textbox.ts +1 -2
- package/src/util/animation/animations.spec.ts +1 -1
- package/src/util/animation/easing.ts +1 -1
- package/src/util/internals/applyCanvasTransform.ts +1 -1
- package/src/util/internals/svgExportCheck.ts +20 -0
- package/src/util/misc/matrix.spec.ts +52 -0
- package/src/util/misc/matrix.ts +16 -0
- package/src/util/misc/mergeClipPaths.ts +1 -1
- package/src/util/misc/objectEnlive.ts +1 -1
- package/src/util/misc/svgParsing.ts +22 -10
- package/src/util/path/index.ts +3 -2
- package/src/util/path/regex.ts +1 -1
- package/src/util/typeAssertions.spec.ts +1 -1
- /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.min.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPrimitive.min.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.min.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/typeof.min.mjs +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveObject.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/InteractiveObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"InteractiveObject.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/InteractiveObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGeometry.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectGeometry.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export interface FabricObjectProps extends ObjectProps, ControlProps, BorderProp
|
|
|
6
6
|
/**
|
|
7
7
|
* When `true`, cache does not get updated during scaling. The picture will get blocky if scaled
|
|
8
8
|
* too much and will be redrawn with correct details at the end of scaling.
|
|
9
|
-
* this setting is performance and application
|
|
9
|
+
* this setting is performance and application dependent.
|
|
10
10
|
* default to true
|
|
11
11
|
* since 1.7.0
|
|
12
12
|
* @type Boolean
|
|
@@ -198,11 +198,11 @@ export declare class FabricText<Props extends TOptions<TextProps> = Partial<Text
|
|
|
198
198
|
*/
|
|
199
199
|
path?: Path;
|
|
200
200
|
/**
|
|
201
|
-
* The text decoration
|
|
202
|
-
* The
|
|
201
|
+
* The text decoration thickness for underline, overline and strikethrough
|
|
202
|
+
* The thickness is expressed in thousandths of fontSize ( em ).
|
|
203
203
|
* The original value was 1/15 that translates to 66.6667 thousandths.
|
|
204
204
|
* The choice of unit of measure is to align with charSpacing.
|
|
205
|
-
* You can slim the
|
|
205
|
+
* You can slim the thickness without issues, while large underline or overline may end up
|
|
206
206
|
* outside the bounding box of the text. In order to fix that a bigger refactor of the code
|
|
207
207
|
* is needed and is out of scope for now. If you need such large overline on the first line
|
|
208
208
|
* of text or large underline on the last line of text, consider disabling caching as a
|
|
@@ -524,7 +524,7 @@ export declare class FabricText<Props extends TOptions<TextProps> = Partial<Text
|
|
|
524
524
|
* @private
|
|
525
525
|
* @param {String} method fillText or strokeText.
|
|
526
526
|
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
527
|
-
* @param {Array} line Content of the line,
|
|
527
|
+
* @param {Array} line Content of the line, split in an array by grapheme
|
|
528
528
|
* @param {Number} left
|
|
529
529
|
* @param {Number} top
|
|
530
530
|
* @param {Number} lineIndex
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextSVGExportMixin.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Text/TextSVGExportMixin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"TextSVGExportMixin.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Text/TextSVGExportMixin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,QAAQ,CAAC;AAyBvD,qBAAa,kBAAmB,SAAQ,0BAA0B;IAChE,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,GAAG,MAAM,EAAE;IAMvD,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM;IAoB3E,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,iBAAiB;IA+BzB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,mBAAmB;IAiE3B,OAAO,CAAC,iBAAiB;IA8CzB;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO;IASxE;;;;;OAKG;IACH,gBAAgB,CACd,IAAI,EAAE,kBAAkB,GAAG,UAAU,EACrC,KAAK,EAAE,oBAAoB,EAC3B,aAAa,CAAC,EAAE,OAAO;IAyDzB;;;;OAIG;IACH,oBAAoB,CAClB,IAAI,EAAE,kBAAkB,GAAG,UAAU,EACrC,KAAK,EAAE,oBAAoB;CAc9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textbox.d.ts","sourceRoot":"","sources":["../../../src/shapes/Textbox.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Textbox.d.ts","sourceRoot":"","sources":["../../../src/shapes/Textbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { StaticCanvas } from '../../canvas/StaticCanvas';
|
|
|
3
3
|
* Set the transform of the passed context to the same of a specific Canvas or StaticCanvas.
|
|
4
4
|
* setTransform is used since this utility will RESET the ctx transform to the basic value
|
|
5
5
|
* of retina scaling and viewport transform
|
|
6
|
-
* It is not meant to be added to other transforms, it is used internally to
|
|
6
|
+
* It is not meant to be added to other transforms, it is used internally to prepare canvases to draw
|
|
7
7
|
* @param ctx
|
|
8
8
|
* @param canvas
|
|
9
9
|
*/
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const isSafeSvgStyleValue: (value: unknown) => value is string;
|
|
2
|
+
export declare const getSafeSvgStyleNumber: (value: unknown, fallback?: string) => string;
|
|
3
|
+
export declare const getSafeSvgStyleToken: (value: unknown, fallback?: string) => string;
|
|
4
|
+
//# sourceMappingURL=svgExportCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svgExportCheck.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/svgExportCheck.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAGvB,CAAC;AAExC,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,EACd,iBAAa,KACZ,MAGF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,EAAE,iBAAa,KAAG,MACO,CAAC"}
|
|
@@ -53,6 +53,20 @@ export declare const multiplyTransformMatrices: (a: TMat2D, b: TMat2D, is2x2?: b
|
|
|
53
53
|
*/
|
|
54
54
|
export declare const multiplyTransformMatrixArray: (matrices: (TMat2D | undefined | null | false)[], is2x2?: boolean) => TMat2D;
|
|
55
55
|
export declare const calcPlaneRotation: ([a, b]: TMat2D) => TRadian;
|
|
56
|
+
/**
|
|
57
|
+
* Returns the uniform scale (zoom) magnitude of a 2D affine matrix,
|
|
58
|
+
* computed as the length of the image of the unit X basis vector.
|
|
59
|
+
*/
|
|
60
|
+
export declare const calcPlaneZoom: ([a, b]: TMat2D) => number;
|
|
61
|
+
/**
|
|
62
|
+
* Returns the Y-axis scale magnitude of a 2D affine matrix,
|
|
63
|
+
* computed as the length of the image of the unit Y basis vector.
|
|
64
|
+
* We do not support non uniform zooming on the viewport but to make things work
|
|
65
|
+
* we need to have a function that can return the value on Y axis.
|
|
66
|
+
* Bug reports and features will be planned with zoom being just a number
|
|
67
|
+
* that is the same for both axis
|
|
68
|
+
*/
|
|
69
|
+
export declare const calcPlaneScaleY: ([, , c, d]: TMat2D) => number;
|
|
56
70
|
/**
|
|
57
71
|
* Decomposes standard 2x3 matrix into transform components
|
|
58
72
|
* @param {TMat2D} a transformMatrix
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/matrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GACnD,iBAAiB,GACjB,gBAAgB,CAAC;AAEnB,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,CAC5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,YACW,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,GAAG,EAAE,EACL,GAAG,MAAM,EACT,eAAe,OAAO,KACrB,KAAgD,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,MAO3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,QAAQ,OAAO,KACd,MAQU,CAAC;AAEd;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,GACvC,UAAU,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,EAC/C,QAAQ,OAAO,WAQM,CAAC;AAExB,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAC1B,OAAO,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,eAevC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,GAAG,MAAM,EAAE,UAAK,KAAG,MAOxD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,KAAS,EAAE,GAAE,iBAAsB,EACrC,EAAE,CAAK,EAAE,CAAK,EAAE,GAAE,OAAO,CAAC,EAAE,CAAM,GACjC,MAAM,CAYR;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,EAAE,IAAG,MAAU,KAAG,MAO5D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,WACP,CAAC;AAEpC,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,YACN,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,OAAO,KAAG,MAOtD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,OAAO,KAAG,MAOtD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAAI,iDAOlC,gBAAgB,WAYlB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,kBAAkB,KAAG,MAW3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Group } from '../../shapes/Group';
|
|
|
4
4
|
* Merges 2 clip paths into one visually equal clip path
|
|
5
5
|
*
|
|
6
6
|
* **IMPORTANT**:\
|
|
7
|
-
* Does **NOT** clone the arguments, clone them
|
|
7
|
+
* Does **NOT** clone the arguments, clone them prior if necessary.
|
|
8
8
|
*
|
|
9
9
|
* Creates a wrapper (group) that contains one clip path and is clipped by the other so content is kept where both overlap.
|
|
10
10
|
* Use this method if both the clip paths may have nested clip paths of their own, so assigning one to the other's clip path property is not possible.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TBBox, SVGElementName } from '../../typedefs';
|
|
1
|
+
import type { TBBox, SVGElementName, TFiller } from '../../typedefs';
|
|
2
2
|
/**
|
|
3
3
|
* Returns array of attributes for given svg that fabric parses
|
|
4
4
|
* @param {SVGElementName} type Type of svg element (eg. 'circle')
|
|
@@ -35,6 +35,6 @@ export declare const parsePreserveAspectRatioAttribute: (attribute: string) => T
|
|
|
35
35
|
* @param {boolean} inlineStyle The default is inline style, the separator used is ":", The other is "="
|
|
36
36
|
* @returns
|
|
37
37
|
*/
|
|
38
|
-
export declare const colorPropToSVG: (prop: string, value?:
|
|
38
|
+
export declare const colorPropToSVG: (prop: string, value?: string | TFiller | null, inlineStyle?: boolean) => string;
|
|
39
39
|
export declare const createSVGRect: (color: string, { left, top, width, height }: TBBox, precision?: number) => string;
|
|
40
40
|
//# sourceMappingURL=svgParsing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svgParsing.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/svgParsing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"svgParsing.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/svgParsing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,KAAK,EACL,cAAc,EAEd,OAAO,EACR,MAAM,gBAAgB,CAAC;AAKxB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,cAAc,aA2BpD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,iBAAgC,WA0BxE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAaF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,GAC5C,WAAW,MAAM,KAChB,iBAWF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,QAAQ,MAAM,GAAG,OAAO,GAAG,IAAI,EAC/B,qBAAkB,WAgCnB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,EACb,8BAA8B,KAAK,EACnC,kBAAsC,WAOvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/path/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKnE,OAAO,KAAK,EAEV,gBAAgB,EAChB,gCAAgC,EAChC,gBAAgB,EAChB,WAAW,EAEX,eAAe,EAKf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsLpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,WAAW,CAoFb;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,IAAI,MAAM,EACV,wCAAwC,iBAAiB,KACxD,gCAAgC,EAYlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,gBAAgB,KAAG,eA4JxD,CAAC;AA0KF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,eAAe,KACpB,gBAAgB,EAkGlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,eAAe,EACrB,UAAU,MAAM,EAChB,QAAO,gBAAgB,EAA8B,KACpD,WAAW,GAAG,SAoChB,CAAC;AAgBF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,YAAY,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/path/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKnE,OAAO,KAAK,EAEV,gBAAgB,EAChB,gCAAgC,EAChC,gBAAgB,EAChB,WAAW,EAEX,eAAe,EAKf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsLpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,WAAW,CAoFb;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,IAAI,MAAM,EACV,wCAAwC,iBAAiB,KACxD,gCAAgC,EAYlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,gBAAgB,KAAG,eA4JxD,CAAC;AA0KF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,eAAe,KACpB,gBAAgB,EAkGlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,eAAe,EACrB,UAAU,MAAM,EAChB,QAAO,gBAAgB,EAA8B,KACpD,WAAW,GAAG,SAoChB,CAAC;AAgBF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,YAAY,MAAM,KAAG,gBA6C9C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,KAAK,EAAE,EACf,mBAAc,KACb,eA0CF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,eAAe,EACrB,WAAW,MAAM,EACjB,YAAY,KAAK,KAChB,eA2BF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,EACnB,QAAQ,MAAM,KACb,eAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAU,eAAe,EAAE,iBAAiB,MAAM,WAY7D,CAAC"}
|
|
@@ -224,25 +224,19 @@ export function ghostScalePositionHandler(
|
|
|
224
224
|
const vpt = fabricObject.getViewportTransform();
|
|
225
225
|
const _finalMatrix = util.multiplyTransformMatrices(vpt, matrix);
|
|
226
226
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
} else {
|
|
241
|
-
y =
|
|
242
|
-
fabricObject.getElement().height -
|
|
243
|
-
fabricObject.height / 2 -
|
|
244
|
-
fabricObject.cropY;
|
|
245
|
-
}
|
|
227
|
+
const x =
|
|
228
|
+
this.x < 0
|
|
229
|
+
? -fabricObject.width / 2 - fabricObject.cropX
|
|
230
|
+
: fabricObject.getElement().width -
|
|
231
|
+
fabricObject.width / 2 -
|
|
232
|
+
fabricObject.cropX;
|
|
233
|
+
|
|
234
|
+
const y =
|
|
235
|
+
this.y < 0
|
|
236
|
+
? -fabricObject.height / 2 - fabricObject.cropY
|
|
237
|
+
: fabricObject.getElement().height -
|
|
238
|
+
fabricObject.height / 2 -
|
|
239
|
+
fabricObject.cropY;
|
|
246
240
|
return new Point(x, y).transform(_finalMatrix);
|
|
247
241
|
}
|
|
248
242
|
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "fabric",
|
|
3
3
|
"description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
|
|
4
4
|
"homepage": "http://fabricjs.com/",
|
|
5
|
-
"version": "7.
|
|
5
|
+
"version": "7.4.0",
|
|
6
6
|
"author": "Juriy Zaytsev <kangax@gmail.com>",
|
|
7
7
|
"contributors": [
|
|
8
8
|
{
|
|
@@ -65,30 +65,30 @@
|
|
|
65
65
|
"prepare": "husky install"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@eslint/js": "^
|
|
68
|
+
"@eslint/js": "^10.0.1",
|
|
69
69
|
"@playwright/test": "^1.58.2",
|
|
70
70
|
"@rollup/plugin-terser": "^1.0.0",
|
|
71
71
|
"@types/jsdom": "^21.1.7",
|
|
72
72
|
"@types/micromatch": "^4.0.10",
|
|
73
73
|
"@types/node": "^24.7.0",
|
|
74
|
-
"@vitest/browser-playwright": "4.1.
|
|
75
|
-
"@vitest/coverage-v8": "4.1.
|
|
76
|
-
"@vitest/ui": "4.1.
|
|
74
|
+
"@vitest/browser-playwright": "4.1.5",
|
|
75
|
+
"@vitest/coverage-v8": "4.1.5",
|
|
76
|
+
"@vitest/ui": "4.1.5",
|
|
77
77
|
"commander": "^14.0.3",
|
|
78
|
-
"es-toolkit": "1.
|
|
78
|
+
"es-toolkit": "1.46.0",
|
|
79
79
|
"eslint-config-prettier": "^10.1.8",
|
|
80
80
|
"husky": "^9.1.7",
|
|
81
81
|
"inquirer": "^13.3.2",
|
|
82
82
|
"lint-staged": "^16.4.0",
|
|
83
83
|
"micromatch": "^4.0.8",
|
|
84
|
-
"oxfmt": "^0.
|
|
84
|
+
"oxfmt": "^0.45.0",
|
|
85
85
|
"ps-list": "^9.0.0",
|
|
86
86
|
"rolldown": "^1.0.0-rc.12",
|
|
87
87
|
"serve": "^14.2.6",
|
|
88
88
|
"tsc-files": "^1.1.4",
|
|
89
|
-
"typescript": "^6.0.
|
|
90
|
-
"typescript-eslint": "^8.58.
|
|
91
|
-
"vitest": "4.1.
|
|
89
|
+
"typescript": "^6.0.3",
|
|
90
|
+
"typescript-eslint": "^8.58.2",
|
|
91
|
+
"vitest": "4.1.5",
|
|
92
92
|
"westures": "^1.1.1"
|
|
93
93
|
},
|
|
94
94
|
"engines": {
|
|
@@ -6,7 +6,7 @@ Layout manager exposes a main public method that performs group layout given a t
|
|
|
6
6
|
|
|
7
7
|
The layout manager will calculate the size and position of the group when is created or updated
|
|
8
8
|
The FitContent strategy is the classic fabric 5.x group and will grow or shrink when objects are added or removed.
|
|
9
|
-
In general the expectation is that wrapping objects in a group without specifying a new
|
|
9
|
+
In general the expectation is that wrapping objects in a group without specifying a new position or transformations won't change the object visual position, the position of the objects will be the same that those object would have had on the canvas if they weren't on the group. Their coordinates will change to adapt to the group structure.
|
|
10
10
|
This is a legacy behaviour that carries over this new code.
|
|
11
11
|
The behaviour is not important if you are building a group from scratch and you are adding it in a specific position or requesting a specific transform ( scaleX, angle, etc ). In that case the original position is meaningless and is overridden with your transform.
|
|
12
12
|
|
|
@@ -28,7 +28,7 @@ When larger or smaller than the actual boundingbox the group is centered on the
|
|
|
28
28
|
|
|
29
29
|
The Fixed layout strategy is the only strategy in which the developer can change the width and height of the group at will without having it reset when adding or removing objects.
|
|
30
30
|
|
|
31
|
-
It must be clear that is also possible change width and height of the group in the other cases, but that is an ephemeral change that gets
|
|
31
|
+
It must be clear that is also possible change width and height of the group in the other cases, but that is an ephemeral change that gets reset at the next performLayout
|
|
32
32
|
|
|
33
33
|
### Clippath layout strategy
|
|
34
34
|
|
|
@@ -60,7 +60,7 @@ performLayout -> onBeforeLayout -> getLayoutResult -> commitLayout -> onAfterLay
|
|
|
60
60
|
The flow has the following goals/features:
|
|
61
61
|
|
|
62
62
|
- alerting the user a layout ends and finish
|
|
63
|
-
- subscribe to object events in order to
|
|
63
|
+
- subscribe to object events in order to perform layout on change
|
|
64
64
|
- calculate group new size and position
|
|
65
65
|
- move the objects to their new position relative to the group center.
|
|
66
66
|
|
|
@@ -1947,6 +1947,25 @@ describe('StaticCanvas', () => {
|
|
|
1947
1947
|
canvas.viewportTransform = StaticCanvas.getDefaults().viewportTransform;
|
|
1948
1948
|
});
|
|
1949
1949
|
|
|
1950
|
+
it('returns the scale magnitude when viewport transform encodes rotation', () => {
|
|
1951
|
+
const cos = Math.SQRT1_2,
|
|
1952
|
+
sin = Math.SQRT1_2;
|
|
1953
|
+
canvas.setViewportTransform([cos, sin, -sin, cos, 0, 0] as TMat2D);
|
|
1954
|
+
expect(canvas.getZoom()).toBeCloseTo(1);
|
|
1955
|
+
|
|
1956
|
+
canvas.setViewportTransform([
|
|
1957
|
+
2 * cos,
|
|
1958
|
+
2 * sin,
|
|
1959
|
+
-2 * sin,
|
|
1960
|
+
2 * cos,
|
|
1961
|
+
0,
|
|
1962
|
+
0,
|
|
1963
|
+
] as TMat2D);
|
|
1964
|
+
expect(canvas.getZoom()).toBeCloseTo(2);
|
|
1965
|
+
|
|
1966
|
+
canvas.viewportTransform = StaticCanvas.getDefaults().viewportTransform;
|
|
1967
|
+
});
|
|
1968
|
+
|
|
1950
1969
|
it('sets zoom level correctly', () => {
|
|
1951
1970
|
expect(canvas.setZoom).toBeTypeOf('function');
|
|
1952
1971
|
|
|
@@ -27,7 +27,11 @@ import {
|
|
|
27
27
|
import { runningAnimations } from '../util/animation/AnimationRegistry';
|
|
28
28
|
import { uid } from '../util/internals/uid';
|
|
29
29
|
import { createCanvasElementFor, toBlob, toDataURL } from '../util/misc/dom';
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
calcPlaneZoom,
|
|
32
|
+
invertTransform,
|
|
33
|
+
transformPoint,
|
|
34
|
+
} from '../util/misc/matrix';
|
|
31
35
|
import type { EnlivenObjectOptions } from '../util/misc/objectEnlive';
|
|
32
36
|
import {
|
|
33
37
|
enlivenObjectEnlivables,
|
|
@@ -347,11 +351,11 @@ export class StaticCanvas<
|
|
|
347
351
|
}
|
|
348
352
|
|
|
349
353
|
/**
|
|
350
|
-
* Returns canvas zoom level
|
|
354
|
+
* Returns the canvas zoom level as the magnitude of the viewport scale.
|
|
351
355
|
* @return {Number}
|
|
352
356
|
*/
|
|
353
357
|
getZoom() {
|
|
354
|
-
return this.viewportTransform
|
|
358
|
+
return calcPlaneZoom(this.viewportTransform);
|
|
355
359
|
}
|
|
356
360
|
|
|
357
361
|
/**
|
package/src/filters/Resize.ts
CHANGED
|
@@ -494,7 +494,7 @@ export class Resize extends BaseFilter<'Resize', ResizeOwnProps> {
|
|
|
494
494
|
for (let j = 0; j < dH; j++) {
|
|
495
495
|
for (let i = 0; i < dW; i++) {
|
|
496
496
|
const x2 = (i + j * dW) * 4;
|
|
497
|
-
let weight
|
|
497
|
+
let weight: number;
|
|
498
498
|
let weights = 0;
|
|
499
499
|
let weightsAlpha = 0;
|
|
500
500
|
let gxR = 0;
|
|
@@ -232,6 +232,34 @@ describe('Gradient', () => {
|
|
|
232
232
|
const obj = new FabricObject({ width: 100, height: 100 });
|
|
233
233
|
expect(gradient.toSVG(obj)).toEqualSVG(SVG_RADIAL_PERCENTAGE);
|
|
234
234
|
});
|
|
235
|
+
|
|
236
|
+
test('toSVG preserves safe modern CSS stop colors', () => {
|
|
237
|
+
const gradient = new Gradient({
|
|
238
|
+
type: 'linear',
|
|
239
|
+
colorStops: [
|
|
240
|
+
{ offset: 0, color: 'currentColor' },
|
|
241
|
+
{ offset: 0.5, color: 'var(--theme-primary)' },
|
|
242
|
+
{ offset: 1, color: 'oklch(62% 0.25 29)' },
|
|
243
|
+
],
|
|
244
|
+
});
|
|
245
|
+
const obj = new FabricObject({ width: 100, height: 100 });
|
|
246
|
+
const svg = gradient.toSVG(obj);
|
|
247
|
+
|
|
248
|
+
expect(svg).toContain('style="stop-color:currentColor;"');
|
|
249
|
+
expect(svg).toContain('style="stop-color:var(--theme-primary);"');
|
|
250
|
+
expect(svg).toContain('style="stop-color:oklch(62% 0.25 29);"');
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
test('toSVG escapes safe stop colors in XML attributes', () => {
|
|
254
|
+
const gradient = new Gradient({
|
|
255
|
+
type: 'linear',
|
|
256
|
+
colorStops: [{ offset: 0, color: 'red&blue' }],
|
|
257
|
+
});
|
|
258
|
+
const obj = new FabricObject({ width: 100, height: 100 });
|
|
259
|
+
const svg = gradient.toSVG(obj);
|
|
260
|
+
|
|
261
|
+
expect(svg).toContain('style="stop-color:red&blue;"');
|
|
262
|
+
});
|
|
235
263
|
});
|
|
236
264
|
|
|
237
265
|
test('properties radialGradient', () => {
|
|
@@ -781,8 +809,39 @@ describe('Gradient', () => {
|
|
|
781
809
|
describe('Attrivbute injection', () => {
|
|
782
810
|
it('id injection', () => {
|
|
783
811
|
const gradient = new Gradient({ id: 'malicious"><script>' });
|
|
784
|
-
const svg = gradient.toSVG({
|
|
812
|
+
const svg = gradient.toSVG(new FabricObject({ width: 100, height: 100 }));
|
|
785
813
|
expect(svg).toContain('id="SVGID_malicious"><script>');
|
|
786
814
|
});
|
|
815
|
+
|
|
816
|
+
it('stop color HTML injection', () => {
|
|
817
|
+
const gradient = new Gradient({
|
|
818
|
+
colorStops: [
|
|
819
|
+
{ offset: 0, color: 'red"><img src="x" onerror="alert(1)">' },
|
|
820
|
+
],
|
|
821
|
+
});
|
|
822
|
+
const svg = gradient.toSVG(new FabricObject({ width: 100, height: 100 }));
|
|
823
|
+
expect(svg).not.toContain('<img');
|
|
824
|
+
expect(svg).not.toContain('onerror=');
|
|
825
|
+
expect(svg).not.toContain('red"><img src="x" onerror="alert(1)">');
|
|
826
|
+
expect(svg).toContain('style="stop-color:rgba(0,0,0,1);"');
|
|
827
|
+
});
|
|
828
|
+
|
|
829
|
+
it('stop color CSS declaration injection', () => {
|
|
830
|
+
const gradient = new Gradient({
|
|
831
|
+
colorStops: [{ offset: 0, color: 'red;stop-opacity:0' }],
|
|
832
|
+
});
|
|
833
|
+
const svg = gradient.toSVG(new FabricObject({ width: 100, height: 100 }));
|
|
834
|
+
expect(svg).not.toContain('stop-opacity:0');
|
|
835
|
+
expect(svg).toContain('style="stop-color:rgba(0,0,0,1);"');
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
it('stop color rejects url-based payloads', () => {
|
|
839
|
+
const gradient = new Gradient({
|
|
840
|
+
colorStops: [{ offset: 0, color: 'url(javascript:alert(1))' }],
|
|
841
|
+
});
|
|
842
|
+
const svg = gradient.toSVG(new FabricObject({ width: 100, height: 100 }));
|
|
843
|
+
expect(svg).not.toContain('javascript:');
|
|
844
|
+
expect(svg).toContain('style="stop-color:rgba(0,0,0,1);"');
|
|
845
|
+
});
|
|
787
846
|
});
|
|
788
847
|
});
|
package/src/gradient/Gradient.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { parseTransformAttribute } from '../parser/parseTransformAttribute';
|
|
|
3
3
|
import type { FabricObject } from '../shapes/Object/FabricObject';
|
|
4
4
|
import type { TMat2D } from '../typedefs';
|
|
5
5
|
import { uid } from '../util/internals/uid';
|
|
6
|
+
import { isSafeSvgStyleValue } from '../util/internals/svgExportCheck';
|
|
6
7
|
import { pick } from '../util/misc/pick';
|
|
7
8
|
import { matrixToSVG } from '../util/misc/svgExport';
|
|
8
9
|
import { linearDefaultCoords, radialDefaultCoords } from './constants';
|
|
@@ -19,6 +20,7 @@ import type {
|
|
|
19
20
|
SerializedGradientProps,
|
|
20
21
|
} from './typedefs';
|
|
21
22
|
import { classRegistry } from '../ClassRegistry';
|
|
23
|
+
import { Color } from '../color/Color';
|
|
22
24
|
import { isPath } from '../util/typeAssertions';
|
|
23
25
|
import { escapeXml } from '../util/lang_string';
|
|
24
26
|
|
|
@@ -282,10 +284,15 @@ export class Gradient<
|
|
|
282
284
|
});
|
|
283
285
|
}
|
|
284
286
|
}
|
|
285
|
-
// todo make a malicious script tag injection test with color and also apply a fix with escapeXml
|
|
286
287
|
colorStops.forEach(({ color, offset }) => {
|
|
288
|
+
const rawColor = String(color);
|
|
289
|
+
// `escapeXml` protects the SVG attribute, but the value is also embedded in
|
|
290
|
+
// a CSS declaration, so reject tokens that can break either context.
|
|
291
|
+
const serializedColor = isSafeSvgStyleValue(rawColor)
|
|
292
|
+
? rawColor
|
|
293
|
+
: new Color(rawColor).toRgba();
|
|
287
294
|
markup.push(
|
|
288
|
-
`<stop offset="${offset * 100}%" style="stop-color:${
|
|
295
|
+
`<stop offset="${offset * 100}%" style="stop-color:${escapeXml(serializedColor)};"/>\n`,
|
|
289
296
|
);
|
|
290
297
|
});
|
|
291
298
|
|
package/src/gradient/typedefs.ts
CHANGED
|
@@ -13,19 +13,19 @@ export type ColorStop = {
|
|
|
13
13
|
|
|
14
14
|
export type LinearGradientCoords<T extends GradientCoordValue> = {
|
|
15
15
|
/**
|
|
16
|
-
* X
|
|
16
|
+
* X coordinate of the first point
|
|
17
17
|
*/
|
|
18
18
|
x1: T;
|
|
19
19
|
/**
|
|
20
|
-
* Y
|
|
20
|
+
* Y coordinate of the first point
|
|
21
21
|
*/
|
|
22
22
|
y1: T;
|
|
23
23
|
/**
|
|
24
|
-
* X
|
|
24
|
+
* X coordinate of the second point
|
|
25
25
|
*/
|
|
26
26
|
x2: T;
|
|
27
27
|
/**
|
|
28
|
-
* Y
|
|
28
|
+
* Y coordinate of the second point
|
|
29
29
|
*/
|
|
30
30
|
y2: T;
|
|
31
31
|
};
|
|
@@ -36,15 +36,15 @@ export type RadialGradientCoords<T extends GradientCoordValue> = {
|
|
|
36
36
|
*/
|
|
37
37
|
x1: T;
|
|
38
38
|
/**
|
|
39
|
-
* Y
|
|
39
|
+
* Y coordinate of the first focal point
|
|
40
40
|
*/
|
|
41
41
|
y1: T;
|
|
42
42
|
/**
|
|
43
|
-
* X
|
|
43
|
+
* X coordinate of the second focal point
|
|
44
44
|
*/
|
|
45
45
|
x2: T;
|
|
46
46
|
/**
|
|
47
|
-
* Y
|
|
47
|
+
* Y coordinate of the second focal point
|
|
48
48
|
*/
|
|
49
49
|
y2: T;
|
|
50
50
|
/**
|
|
@@ -27,8 +27,6 @@ export function applyViewboxTransform(
|
|
|
27
27
|
const viewBoxAttr: string | null = element.getAttribute('viewBox');
|
|
28
28
|
let scaleX = 1;
|
|
29
29
|
let scaleY = 1;
|
|
30
|
-
let minX = 0;
|
|
31
|
-
let minY = 0;
|
|
32
30
|
let matrix;
|
|
33
31
|
let el;
|
|
34
32
|
const widthAttr = element.getAttribute('width');
|
|
@@ -79,8 +77,8 @@ export function applyViewboxTransform(
|
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
const pasedViewBox = viewBoxAttr.match(reViewBoxAttrValue)!;
|
|
82
|
-
minX = -parseFloat(pasedViewBox[1]);
|
|
83
|
-
minY = -parseFloat(pasedViewBox[2]);
|
|
80
|
+
const minX = -parseFloat(pasedViewBox[1]);
|
|
81
|
+
const minY = -parseFloat(pasedViewBox[2]);
|
|
84
82
|
const viewBoxWidth = parseFloat(pasedViewBox[3]);
|
|
85
83
|
const viewBoxHeight = parseFloat(pasedViewBox[4]);
|
|
86
84
|
parsedDim.minX = minX;
|
|
@@ -671,7 +671,6 @@ export class IText<
|
|
|
671
671
|
for (let i = startLine; i <= endLine; i++) {
|
|
672
672
|
const lineOffset = this._getLineLeftOffset(i) || 0;
|
|
673
673
|
let lineHeight = this.getHeightOfLine(i),
|
|
674
|
-
realLineHeight = 0,
|
|
675
674
|
boxStart = 0,
|
|
676
675
|
boxEnd = 0;
|
|
677
676
|
|
|
@@ -694,7 +693,7 @@ export class IText<
|
|
|
694
693
|
charSpacing;
|
|
695
694
|
}
|
|
696
695
|
}
|
|
697
|
-
realLineHeight = lineHeight;
|
|
696
|
+
const realLineHeight = lineHeight;
|
|
698
697
|
if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {
|
|
699
698
|
lineHeight /= this.lineHeight;
|
|
700
699
|
}
|
|
@@ -142,21 +142,21 @@ describe('IText cursor animation snapshot', () => {
|
|
|
142
142
|
vi.useRealTimers();
|
|
143
143
|
});
|
|
144
144
|
test('initDelayedCursor false - with delay', () => {
|
|
145
|
-
const iText = new IText('', { canvas: {} });
|
|
145
|
+
const iText = new IText('', { canvas: { getZoom: () => 1 } });
|
|
146
146
|
iText.initDelayedCursor();
|
|
147
147
|
vi.advanceTimersByTime(2000);
|
|
148
148
|
expect(currentAnimation).toMatchSnapshot();
|
|
149
149
|
iText.abortCursorAnimation();
|
|
150
150
|
});
|
|
151
151
|
test('initDelayedCursor true - with NO delay', () => {
|
|
152
|
-
const iText = new IText('', { canvas: {} });
|
|
152
|
+
const iText = new IText('', { canvas: { getZoom: () => 1 } });
|
|
153
153
|
iText.initDelayedCursor(true);
|
|
154
154
|
vi.advanceTimersByTime(2000);
|
|
155
155
|
expect(currentAnimation).toMatchSnapshot();
|
|
156
156
|
iText.abortCursorAnimation();
|
|
157
157
|
});
|
|
158
158
|
test('selectionStart/selection end will abort animation', () => {
|
|
159
|
-
const iText = new IText('asd', { canvas: {} });
|
|
159
|
+
const iText = new IText('asd', { canvas: { getZoom: () => 1 } });
|
|
160
160
|
iText.initDelayedCursor(true);
|
|
161
161
|
vi.advanceTimersByTime(160);
|
|
162
162
|
iText.selectionStart = 0;
|
|
@@ -166,7 +166,7 @@ describe('IText cursor animation snapshot', () => {
|
|
|
166
166
|
iText.abortCursorAnimation();
|
|
167
167
|
});
|
|
168
168
|
test('exiting from a canvas will abort animation', () => {
|
|
169
|
-
const iText = new IText('asd', { canvas: {} });
|
|
169
|
+
const iText = new IText('asd', { canvas: { getZoom: () => 1 } });
|
|
170
170
|
iText.initDelayedCursor(true);
|
|
171
171
|
vi.advanceTimersByTime(160);
|
|
172
172
|
iText.canvas = undefined;
|
|
@@ -175,7 +175,7 @@ describe('IText cursor animation snapshot', () => {
|
|
|
175
175
|
iText.abortCursorAnimation();
|
|
176
176
|
});
|
|
177
177
|
test('Animation is configurable - fast cursor with delay', () => {
|
|
178
|
-
const iText = new IText('', { canvas: {} });
|
|
178
|
+
const iText = new IText('', { canvas: { getZoom: () => 1 } });
|
|
179
179
|
iText.cursorDelay = 200;
|
|
180
180
|
iText.cursorDuration = 80;
|
|
181
181
|
iText.initDelayedCursor();
|
|
@@ -184,7 +184,7 @@ describe('IText cursor animation snapshot', () => {
|
|
|
184
184
|
iText.abortCursorAnimation();
|
|
185
185
|
});
|
|
186
186
|
test('Animation is configurable - fast cursor with no delay', () => {
|
|
187
|
-
const iText = new IText('', { canvas: {} });
|
|
187
|
+
const iText = new IText('', { canvas: { getZoom: () => 1 } });
|
|
188
188
|
iText.cursorDelay = 200;
|
|
189
189
|
iText.cursorDuration = 80;
|
|
190
190
|
iText.initDelayedCursor(true);
|