@nasser-sw/fabric 7.0.1-beta2 → 7.0.1-beta3
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/.babelrc +0 -0
- package/.babelrcAlt +0 -0
- package/.browserslistrc +0 -0
- package/.editorconfig +0 -0
- package/.gitattributes +0 -0
- package/.gitpod.yml +0 -0
- package/.prettierignore +0 -0
- package/.prettierrc +0 -0
- package/CHANGELOG.md +0 -0
- package/CODE_OF_CONDUCT.md +0 -0
- package/CONTRIBUTING.md +0 -0
- package/LICENSE +0 -0
- package/OVERLAY_EDITOR_MIGRATION.md +0 -0
- package/README.md +0 -0
- package/SECURITY.md +0 -0
- package/debug/konva/CHANGELOG.md +0 -0
- package/debug/konva/LICENSE +0 -0
- package/debug/konva/README.md +0 -0
- package/debug/konva/gulpfile.mjs +0 -0
- package/debug/konva/package.json +0 -0
- package/debug/konva/release.sh +0 -0
- package/debug/konva/resources/doc-includes/ContainerParams.txt +0 -0
- package/debug/konva/resources/doc-includes/NodeParams.txt +0 -0
- package/debug/konva/resources/doc-includes/ShapeParams.txt +0 -0
- package/debug/konva/resources/jsdoc.conf.json +0 -0
- package/debug/konva/rollup.config.mjs +0 -0
- package/debug/konva/src/Animation.ts +0 -0
- package/debug/konva/src/BezierFunctions.ts +0 -0
- package/debug/konva/src/Canvas.ts +0 -0
- package/debug/konva/src/Container.ts +0 -0
- package/debug/konva/src/Context.ts +0 -0
- package/debug/konva/src/Core.ts +0 -0
- package/debug/konva/src/DragAndDrop.ts +0 -0
- package/debug/konva/src/Factory.ts +0 -0
- package/debug/konva/src/FastLayer.ts +0 -0
- package/debug/konva/src/Global.ts +0 -0
- package/debug/konva/src/Group.ts +0 -0
- package/debug/konva/src/Layer.ts +0 -0
- package/debug/konva/src/Node.ts +0 -0
- package/debug/konva/src/PointerEvents.ts +0 -0
- package/debug/konva/src/Shape.ts +0 -0
- package/debug/konva/src/Stage.ts +0 -0
- package/debug/konva/src/Tween.ts +0 -0
- package/debug/konva/src/Util.ts +0 -0
- package/debug/konva/src/Validators.ts +0 -0
- package/debug/konva/src/_CoreInternals.ts +0 -0
- package/debug/konva/src/_FullInternals.ts +0 -0
- package/debug/konva/src/canvas-backend.ts +0 -0
- package/debug/konva/src/filters/Blur.ts +0 -0
- package/debug/konva/src/filters/Brighten.ts +0 -0
- package/debug/konva/src/filters/Brightness.ts +0 -0
- package/debug/konva/src/filters/Contrast.ts +0 -0
- package/debug/konva/src/filters/Emboss.ts +0 -0
- package/debug/konva/src/filters/Enhance.ts +0 -0
- package/debug/konva/src/filters/Grayscale.ts +0 -0
- package/debug/konva/src/filters/HSL.ts +0 -0
- package/debug/konva/src/filters/HSV.ts +0 -0
- package/debug/konva/src/filters/Invert.ts +0 -0
- package/debug/konva/src/filters/Kaleidoscope.ts +0 -0
- package/debug/konva/src/filters/Mask.ts +0 -0
- package/debug/konva/src/filters/Noise.ts +0 -0
- package/debug/konva/src/filters/Pixelate.ts +0 -0
- package/debug/konva/src/filters/Posterize.ts +0 -0
- package/debug/konva/src/filters/RGB.ts +0 -0
- package/debug/konva/src/filters/RGBA.ts +0 -0
- package/debug/konva/src/filters/Sepia.ts +0 -0
- package/debug/konva/src/filters/Solarize.ts +0 -0
- package/debug/konva/src/filters/Threshold.ts +0 -0
- package/debug/konva/src/index.ts +0 -0
- package/debug/konva/src/shapes/Arc.ts +0 -0
- package/debug/konva/src/shapes/Arrow.ts +0 -0
- package/debug/konva/src/shapes/Circle.ts +0 -0
- package/debug/konva/src/shapes/Ellipse.ts +0 -0
- package/debug/konva/src/shapes/Image.ts +0 -0
- package/debug/konva/src/shapes/Label.ts +0 -0
- package/debug/konva/src/shapes/Line.ts +0 -0
- package/debug/konva/src/shapes/Path.ts +0 -0
- package/debug/konva/src/shapes/Rect.ts +0 -0
- package/debug/konva/src/shapes/RegularPolygon.ts +0 -0
- package/debug/konva/src/shapes/Ring.ts +0 -0
- package/debug/konva/src/shapes/Sprite.ts +0 -0
- package/debug/konva/src/shapes/Star.ts +0 -0
- package/debug/konva/src/shapes/Text.ts +0 -0
- package/debug/konva/src/shapes/TextPath.ts +0 -0
- package/debug/konva/src/shapes/Transformer.ts +0 -0
- package/debug/konva/src/shapes/Wedge.ts +0 -0
- package/debug/konva/src/skia-backend.ts +0 -0
- package/debug/konva/src/types.ts +0 -0
- package/debug/konva/tsconfig.json +0 -0
- package/debug/konva/tsconfig.test.json +0 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs +0 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs.map +0 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -0
- package/dist/extensions/aligning_guidelines/constant.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/constant.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/index.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/index.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/typedefs.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/util/basic.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/util/draw.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
- package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
- package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
- package/dist/extensions/data_updaters/gradient/index.d.ts +0 -0
- package/dist/extensions/data_updaters/gradient/index.d.ts.map +0 -0
- package/dist/extensions/data_updaters/origins/index.d.ts +0 -0
- package/dist/extensions/data_updaters/origins/index.d.ts.map +0 -0
- package/dist/extensions/index.d.ts +0 -0
- package/dist/extensions/index.d.ts.map +0 -0
- package/dist/fabric.d.ts +0 -0
- package/dist/fabric.d.ts.map +0 -0
- package/dist/fabric.min.mjs +0 -0
- package/dist/fabric.min.mjs.map +0 -0
- package/dist/fabric.mjs +0 -0
- package/dist/fabric.mjs.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +1266 -1000
- 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 +1266 -1000
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +1266 -1000
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +0 -0
- package/dist/index.node.d.ts.map +0 -0
- package/dist/index.node.mjs +1266 -1000
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.min.mjs.map +0 -0
- package/dist/package.json.mjs +1 -1
- package/dist/package.json.mjs.map +0 -0
- package/dist/src/ClassRegistry.d.ts +0 -0
- package/dist/src/ClassRegistry.d.ts.map +0 -0
- package/dist/src/ClassRegistry.min.mjs +0 -0
- package/dist/src/ClassRegistry.min.mjs.map +0 -0
- package/dist/src/ClassRegistry.mjs +0 -0
- package/dist/src/ClassRegistry.mjs.map +0 -0
- package/dist/src/Collection.d.ts +0 -0
- package/dist/src/Collection.d.ts.map +0 -0
- package/dist/src/Collection.min.mjs +0 -0
- package/dist/src/Collection.min.mjs.map +0 -0
- package/dist/src/Collection.mjs +0 -0
- package/dist/src/Collection.mjs.map +0 -0
- package/dist/src/CommonMethods.d.ts +0 -0
- package/dist/src/CommonMethods.d.ts.map +0 -0
- package/dist/src/CommonMethods.min.mjs +0 -0
- package/dist/src/CommonMethods.min.mjs.map +0 -0
- package/dist/src/CommonMethods.mjs +0 -0
- package/dist/src/CommonMethods.mjs.map +0 -0
- package/dist/src/EventTypeDefs.d.ts +0 -0
- package/dist/src/EventTypeDefs.d.ts.map +0 -0
- package/dist/src/Intersection.d.ts +0 -0
- package/dist/src/Intersection.d.ts.map +0 -0
- package/dist/src/Intersection.min.mjs +0 -0
- package/dist/src/Intersection.min.mjs.map +0 -0
- package/dist/src/Intersection.mjs +0 -0
- package/dist/src/Intersection.mjs.map +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -0
- package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutManager.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutManager.mjs +0 -0
- package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -0
- package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -0
- package/dist/src/LayoutManager/constants.d.ts +0 -0
- package/dist/src/LayoutManager/constants.d.ts.map +0 -0
- package/dist/src/LayoutManager/constants.min.mjs +0 -0
- package/dist/src/LayoutManager/constants.min.mjs.map +0 -0
- package/dist/src/LayoutManager/constants.mjs +0 -0
- package/dist/src/LayoutManager/constants.mjs.map +0 -0
- package/dist/src/LayoutManager/index.d.ts +0 -0
- package/dist/src/LayoutManager/index.d.ts.map +0 -0
- package/dist/src/LayoutManager/types.d.ts +0 -0
- package/dist/src/LayoutManager/types.d.ts.map +0 -0
- package/dist/src/Observable.d.ts +0 -0
- package/dist/src/Observable.d.ts.map +0 -0
- package/dist/src/Observable.min.mjs +0 -0
- package/dist/src/Observable.min.mjs.map +0 -0
- package/dist/src/Observable.mjs +0 -0
- package/dist/src/Observable.mjs.map +0 -0
- package/dist/src/Pattern/Pattern.d.ts +0 -0
- package/dist/src/Pattern/Pattern.d.ts.map +0 -0
- package/dist/src/Pattern/Pattern.min.mjs +0 -0
- package/dist/src/Pattern/Pattern.min.mjs.map +0 -0
- package/dist/src/Pattern/Pattern.mjs +0 -0
- package/dist/src/Pattern/Pattern.mjs.map +0 -0
- package/dist/src/Pattern/index.d.ts +0 -0
- package/dist/src/Pattern/index.d.ts.map +0 -0
- package/dist/src/Pattern/types.d.ts +0 -0
- package/dist/src/Pattern/types.d.ts.map +0 -0
- package/dist/src/Point.d.ts +0 -0
- package/dist/src/Point.d.ts.map +0 -0
- package/dist/src/Point.min.mjs +0 -0
- package/dist/src/Point.min.mjs.map +0 -0
- package/dist/src/Point.mjs +0 -0
- package/dist/src/Point.mjs.map +0 -0
- package/dist/src/Shadow.d.ts +0 -0
- package/dist/src/Shadow.d.ts.map +0 -0
- package/dist/src/Shadow.min.mjs +0 -0
- package/dist/src/Shadow.min.mjs.map +0 -0
- package/dist/src/Shadow.mjs +0 -0
- package/dist/src/Shadow.mjs.map +0 -0
- package/dist/src/brushes/BaseBrush.d.ts +0 -0
- package/dist/src/brushes/BaseBrush.d.ts.map +0 -0
- package/dist/src/brushes/BaseBrush.min.mjs +0 -0
- package/dist/src/brushes/BaseBrush.min.mjs.map +0 -0
- package/dist/src/brushes/BaseBrush.mjs +0 -0
- package/dist/src/brushes/BaseBrush.mjs.map +0 -0
- package/dist/src/brushes/CircleBrush.d.ts +0 -0
- package/dist/src/brushes/CircleBrush.d.ts.map +0 -0
- package/dist/src/brushes/CircleBrush.min.mjs +0 -0
- package/dist/src/brushes/CircleBrush.min.mjs.map +0 -0
- package/dist/src/brushes/CircleBrush.mjs +0 -0
- package/dist/src/brushes/CircleBrush.mjs.map +0 -0
- package/dist/src/brushes/PatternBrush.d.ts +0 -0
- package/dist/src/brushes/PatternBrush.d.ts.map +0 -0
- package/dist/src/brushes/PatternBrush.min.mjs +0 -0
- package/dist/src/brushes/PatternBrush.min.mjs.map +0 -0
- package/dist/src/brushes/PatternBrush.mjs +0 -0
- package/dist/src/brushes/PatternBrush.mjs.map +0 -0
- package/dist/src/brushes/PencilBrush.d.ts +0 -0
- package/dist/src/brushes/PencilBrush.d.ts.map +0 -0
- package/dist/src/brushes/PencilBrush.min.mjs +0 -0
- package/dist/src/brushes/PencilBrush.min.mjs.map +0 -0
- package/dist/src/brushes/PencilBrush.mjs +0 -0
- package/dist/src/brushes/PencilBrush.mjs.map +0 -0
- package/dist/src/brushes/SprayBrush.d.ts +0 -0
- package/dist/src/brushes/SprayBrush.d.ts.map +0 -0
- package/dist/src/brushes/SprayBrush.min.mjs +0 -0
- package/dist/src/brushes/SprayBrush.min.mjs.map +0 -0
- package/dist/src/brushes/SprayBrush.mjs +0 -0
- package/dist/src/brushes/SprayBrush.mjs.map +0 -0
- package/dist/src/brushes/typedefs.d.ts +0 -0
- package/dist/src/brushes/typedefs.d.ts.map +0 -0
- package/dist/src/cache.d.ts +0 -0
- package/dist/src/cache.d.ts.map +0 -0
- package/dist/src/cache.min.mjs +0 -0
- package/dist/src/cache.min.mjs.map +0 -0
- package/dist/src/cache.mjs +0 -0
- package/dist/src/cache.mjs.map +0 -0
- package/dist/src/canvas/Canvas.d.ts +0 -0
- package/dist/src/canvas/Canvas.d.ts.map +0 -0
- package/dist/src/canvas/Canvas.min.mjs +0 -0
- package/dist/src/canvas/Canvas.min.mjs.map +0 -0
- package/dist/src/canvas/Canvas.mjs +0 -0
- package/dist/src/canvas/Canvas.mjs.map +0 -0
- package/dist/src/canvas/CanvasOptions.d.ts +0 -0
- package/dist/src/canvas/CanvasOptions.d.ts.map +0 -0
- package/dist/src/canvas/CanvasOptions.min.mjs +0 -0
- package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -0
- package/dist/src/canvas/CanvasOptions.mjs +0 -0
- package/dist/src/canvas/CanvasOptions.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -0
- package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -0
- package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/util.d.ts +0 -0
- package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -0
- package/dist/src/canvas/DOMManagers/util.min.mjs +0 -0
- package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -0
- package/dist/src/canvas/DOMManagers/util.mjs +0 -0
- package/dist/src/canvas/DOMManagers/util.mjs.map +0 -0
- package/dist/src/canvas/SelectableCanvas.d.ts +0 -0
- package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -0
- package/dist/src/canvas/SelectableCanvas.min.mjs +0 -0
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -0
- package/dist/src/canvas/SelectableCanvas.mjs +0 -0
- package/dist/src/canvas/SelectableCanvas.mjs.map +0 -0
- package/dist/src/canvas/StaticCanvas.d.ts +0 -0
- package/dist/src/canvas/StaticCanvas.d.ts.map +0 -0
- package/dist/src/canvas/StaticCanvas.min.mjs +0 -0
- package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -0
- package/dist/src/canvas/StaticCanvas.mjs +0 -0
- package/dist/src/canvas/StaticCanvas.mjs.map +0 -0
- package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -0
- package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
- package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -0
- package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -0
- package/dist/src/canvas/StaticCanvasOptions.mjs +0 -0
- package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -0
- package/dist/src/canvas/TextEditingManager.d.ts +0 -0
- package/dist/src/canvas/TextEditingManager.d.ts.map +0 -0
- package/dist/src/canvas/TextEditingManager.min.mjs +0 -0
- package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -0
- package/dist/src/canvas/TextEditingManager.mjs +0 -0
- package/dist/src/canvas/TextEditingManager.mjs.map +0 -0
- package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -0
- package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -0
- package/dist/src/color/Color.d.ts +0 -0
- package/dist/src/color/Color.d.ts.map +0 -0
- package/dist/src/color/Color.min.mjs +0 -0
- package/dist/src/color/Color.min.mjs.map +0 -0
- package/dist/src/color/Color.mjs +0 -0
- package/dist/src/color/Color.mjs.map +0 -0
- package/dist/src/color/color_map.d.ts +0 -0
- package/dist/src/color/color_map.d.ts.map +0 -0
- package/dist/src/color/color_map.min.mjs +0 -0
- package/dist/src/color/color_map.min.mjs.map +0 -0
- package/dist/src/color/color_map.mjs +0 -0
- package/dist/src/color/color_map.mjs.map +0 -0
- package/dist/src/color/constants.d.ts +0 -0
- package/dist/src/color/constants.d.ts.map +0 -0
- package/dist/src/color/constants.min.mjs +0 -0
- package/dist/src/color/constants.min.mjs.map +0 -0
- package/dist/src/color/constants.mjs +0 -0
- package/dist/src/color/constants.mjs.map +0 -0
- package/dist/src/color/typedefs.d.ts +0 -0
- package/dist/src/color/typedefs.d.ts.map +0 -0
- package/dist/src/color/util.d.ts +0 -0
- package/dist/src/color/util.d.ts.map +0 -0
- package/dist/src/color/util.min.mjs +0 -0
- package/dist/src/color/util.min.mjs.map +0 -0
- package/dist/src/color/util.mjs +0 -0
- package/dist/src/color/util.mjs.map +0 -0
- package/dist/src/config.d.ts +0 -0
- package/dist/src/config.d.ts.map +0 -0
- package/dist/src/config.min.mjs +0 -0
- package/dist/src/config.min.mjs.map +0 -0
- package/dist/src/config.mjs +0 -0
- package/dist/src/config.mjs.map +0 -0
- package/dist/src/constants.d.ts +0 -0
- package/dist/src/constants.d.ts.map +0 -0
- package/dist/src/constants.min.mjs +0 -0
- package/dist/src/constants.min.mjs.map +0 -0
- package/dist/src/constants.mjs +0 -0
- package/dist/src/constants.mjs.map +0 -0
- package/dist/src/controls/Control.d.ts +0 -0
- package/dist/src/controls/Control.d.ts.map +0 -0
- package/dist/src/controls/Control.min.mjs +0 -0
- package/dist/src/controls/Control.min.mjs.map +0 -0
- package/dist/src/controls/Control.mjs +0 -0
- package/dist/src/controls/Control.mjs.map +0 -0
- package/dist/src/controls/changeHeight.d.ts +0 -0
- package/dist/src/controls/changeHeight.d.ts.map +0 -0
- package/dist/src/controls/changeWidth.d.ts +0 -0
- package/dist/src/controls/changeWidth.d.ts.map +0 -0
- package/dist/src/controls/changeWidth.min.mjs +0 -0
- package/dist/src/controls/changeWidth.min.mjs.map +0 -0
- package/dist/src/controls/changeWidth.mjs +0 -0
- package/dist/src/controls/changeWidth.mjs.map +0 -0
- package/dist/src/controls/commonControls.d.ts +0 -0
- package/dist/src/controls/commonControls.d.ts.map +0 -0
- package/dist/src/controls/commonControls.min.mjs +0 -0
- package/dist/src/controls/commonControls.min.mjs.map +0 -0
- package/dist/src/controls/commonControls.mjs +0 -0
- package/dist/src/controls/commonControls.mjs.map +0 -0
- package/dist/src/controls/controlRendering.d.ts +0 -0
- package/dist/src/controls/controlRendering.d.ts.map +0 -0
- package/dist/src/controls/controlRendering.min.mjs +0 -0
- package/dist/src/controls/controlRendering.min.mjs.map +0 -0
- package/dist/src/controls/controlRendering.mjs +0 -0
- package/dist/src/controls/controlRendering.mjs.map +0 -0
- package/dist/src/controls/drag.d.ts +0 -0
- package/dist/src/controls/drag.d.ts.map +0 -0
- package/dist/src/controls/drag.min.mjs +0 -0
- package/dist/src/controls/drag.min.mjs.map +0 -0
- package/dist/src/controls/drag.mjs +0 -0
- package/dist/src/controls/drag.mjs.map +0 -0
- package/dist/src/controls/fireEvent.d.ts +0 -0
- package/dist/src/controls/fireEvent.d.ts.map +0 -0
- package/dist/src/controls/fireEvent.min.mjs +0 -0
- package/dist/src/controls/fireEvent.min.mjs.map +0 -0
- package/dist/src/controls/fireEvent.mjs +0 -0
- package/dist/src/controls/fireEvent.mjs.map +0 -0
- package/dist/src/controls/index.d.ts +0 -0
- package/dist/src/controls/index.d.ts.map +0 -0
- package/dist/src/controls/index.min.mjs +0 -0
- package/dist/src/controls/index.min.mjs.map +0 -0
- package/dist/src/controls/index.mjs +0 -0
- package/dist/src/controls/index.mjs.map +0 -0
- package/dist/src/controls/pathControl.d.ts +0 -0
- package/dist/src/controls/pathControl.d.ts.map +0 -0
- package/dist/src/controls/pathControl.min.mjs +0 -0
- package/dist/src/controls/pathControl.min.mjs.map +0 -0
- package/dist/src/controls/pathControl.mjs +0 -0
- package/dist/src/controls/pathControl.mjs.map +0 -0
- package/dist/src/controls/polyControl.d.ts +0 -0
- package/dist/src/controls/polyControl.d.ts.map +0 -0
- package/dist/src/controls/polyControl.min.mjs +0 -0
- package/dist/src/controls/polyControl.min.mjs.map +0 -0
- package/dist/src/controls/polyControl.mjs +0 -0
- package/dist/src/controls/polyControl.mjs.map +0 -0
- package/dist/src/controls/rotate.d.ts +0 -0
- package/dist/src/controls/rotate.d.ts.map +0 -0
- package/dist/src/controls/rotate.min.mjs +0 -0
- package/dist/src/controls/rotate.min.mjs.map +0 -0
- package/dist/src/controls/rotate.mjs +0 -0
- package/dist/src/controls/rotate.mjs.map +0 -0
- package/dist/src/controls/scale.d.ts +0 -0
- package/dist/src/controls/scale.d.ts.map +0 -0
- package/dist/src/controls/scale.min.mjs +0 -0
- package/dist/src/controls/scale.min.mjs.map +0 -0
- package/dist/src/controls/scale.mjs +0 -0
- package/dist/src/controls/scale.mjs.map +0 -0
- package/dist/src/controls/scaleSkew.d.ts +0 -0
- package/dist/src/controls/scaleSkew.d.ts.map +0 -0
- package/dist/src/controls/scaleSkew.min.mjs +0 -0
- package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
- package/dist/src/controls/scaleSkew.mjs +0 -0
- package/dist/src/controls/scaleSkew.mjs.map +0 -0
- package/dist/src/controls/skew.d.ts +0 -0
- package/dist/src/controls/skew.d.ts.map +0 -0
- package/dist/src/controls/skew.min.mjs +0 -0
- package/dist/src/controls/skew.min.mjs.map +0 -0
- package/dist/src/controls/skew.mjs +0 -0
- package/dist/src/controls/skew.mjs.map +0 -0
- package/dist/src/controls/util.d.ts +0 -0
- package/dist/src/controls/util.d.ts.map +0 -0
- package/dist/src/controls/util.min.mjs +0 -0
- package/dist/src/controls/util.min.mjs.map +0 -0
- package/dist/src/controls/util.mjs +0 -0
- package/dist/src/controls/util.mjs.map +0 -0
- package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
- package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
- package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
- package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
- package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
- package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
- package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
- package/dist/src/env/browser.d.ts +0 -0
- package/dist/src/env/browser.d.ts.map +0 -0
- package/dist/src/env/browser.min.mjs +0 -0
- package/dist/src/env/browser.min.mjs.map +0 -0
- package/dist/src/env/browser.mjs +0 -0
- package/dist/src/env/browser.mjs.map +0 -0
- package/dist/src/env/index.d.ts +0 -0
- package/dist/src/env/index.d.ts.map +0 -0
- package/dist/src/env/index.min.mjs +0 -0
- package/dist/src/env/index.min.mjs.map +0 -0
- package/dist/src/env/index.mjs +0 -0
- package/dist/src/env/index.mjs.map +0 -0
- package/dist/src/env/node.d.ts +0 -0
- package/dist/src/env/node.d.ts.map +0 -0
- package/dist/src/env/types.d.ts +0 -0
- package/dist/src/env/types.d.ts.map +0 -0
- package/dist/src/filters/BaseFilter.d.ts +0 -0
- package/dist/src/filters/BaseFilter.d.ts.map +0 -0
- package/dist/src/filters/BaseFilter.min.mjs +0 -0
- package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
- package/dist/src/filters/BaseFilter.mjs +0 -0
- package/dist/src/filters/BaseFilter.mjs.map +0 -0
- package/dist/src/filters/BlendColor.d.ts +0 -0
- package/dist/src/filters/BlendColor.d.ts.map +0 -0
- package/dist/src/filters/BlendColor.min.mjs +0 -0
- package/dist/src/filters/BlendColor.min.mjs.map +0 -0
- package/dist/src/filters/BlendColor.mjs +0 -0
- package/dist/src/filters/BlendColor.mjs.map +0 -0
- package/dist/src/filters/BlendImage.d.ts +0 -0
- package/dist/src/filters/BlendImage.d.ts.map +0 -0
- package/dist/src/filters/BlendImage.min.mjs +0 -0
- package/dist/src/filters/BlendImage.min.mjs.map +0 -0
- package/dist/src/filters/BlendImage.mjs +0 -0
- package/dist/src/filters/BlendImage.mjs.map +0 -0
- package/dist/src/filters/Blur.d.ts +0 -0
- package/dist/src/filters/Blur.d.ts.map +0 -0
- package/dist/src/filters/Blur.min.mjs +0 -0
- package/dist/src/filters/Blur.min.mjs.map +0 -0
- package/dist/src/filters/Blur.mjs +0 -0
- package/dist/src/filters/Blur.mjs.map +0 -0
- package/dist/src/filters/Boilerplate.d.ts +0 -0
- package/dist/src/filters/Boilerplate.d.ts.map +0 -0
- package/dist/src/filters/Brightness.d.ts +0 -0
- package/dist/src/filters/Brightness.d.ts.map +0 -0
- package/dist/src/filters/Brightness.min.mjs +0 -0
- package/dist/src/filters/Brightness.min.mjs.map +0 -0
- package/dist/src/filters/Brightness.mjs +0 -0
- package/dist/src/filters/Brightness.mjs.map +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
- package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
- package/dist/src/filters/ColorMatrix.d.ts +0 -0
- package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
- package/dist/src/filters/ColorMatrix.min.mjs +0 -0
- package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
- package/dist/src/filters/ColorMatrix.mjs +0 -0
- package/dist/src/filters/ColorMatrix.mjs.map +0 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
- package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
- package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
- package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
- package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
- package/dist/src/filters/Composed.d.ts +0 -0
- package/dist/src/filters/Composed.d.ts.map +0 -0
- package/dist/src/filters/Composed.min.mjs +0 -0
- package/dist/src/filters/Composed.min.mjs.map +0 -0
- package/dist/src/filters/Composed.mjs +0 -0
- package/dist/src/filters/Composed.mjs.map +0 -0
- package/dist/src/filters/Contrast.d.ts +0 -0
- package/dist/src/filters/Contrast.d.ts.map +0 -0
- package/dist/src/filters/Contrast.min.mjs +0 -0
- package/dist/src/filters/Contrast.min.mjs.map +0 -0
- package/dist/src/filters/Contrast.mjs +0 -0
- package/dist/src/filters/Contrast.mjs.map +0 -0
- package/dist/src/filters/Convolute.d.ts +0 -0
- package/dist/src/filters/Convolute.d.ts.map +0 -0
- package/dist/src/filters/Convolute.min.mjs +0 -0
- package/dist/src/filters/Convolute.min.mjs.map +0 -0
- package/dist/src/filters/Convolute.mjs +0 -0
- package/dist/src/filters/Convolute.mjs.map +0 -0
- package/dist/src/filters/FilterBackend.d.ts +0 -0
- package/dist/src/filters/FilterBackend.d.ts.map +0 -0
- package/dist/src/filters/FilterBackend.min.mjs +0 -0
- package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
- package/dist/src/filters/FilterBackend.mjs +0 -0
- package/dist/src/filters/FilterBackend.mjs.map +0 -0
- package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
- package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
- package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
- package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
- package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
- package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
- package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
- package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
- package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
- package/dist/src/filters/Gamma.d.ts +0 -0
- package/dist/src/filters/Gamma.d.ts.map +0 -0
- package/dist/src/filters/Gamma.min.mjs +0 -0
- package/dist/src/filters/Gamma.min.mjs.map +0 -0
- package/dist/src/filters/Gamma.mjs +0 -0
- package/dist/src/filters/Gamma.mjs.map +0 -0
- package/dist/src/filters/Grayscale.d.ts +0 -0
- package/dist/src/filters/Grayscale.d.ts.map +0 -0
- package/dist/src/filters/Grayscale.min.mjs +0 -0
- package/dist/src/filters/Grayscale.min.mjs.map +0 -0
- package/dist/src/filters/Grayscale.mjs +0 -0
- package/dist/src/filters/Grayscale.mjs.map +0 -0
- package/dist/src/filters/HueRotation.d.ts +0 -0
- package/dist/src/filters/HueRotation.d.ts.map +0 -0
- package/dist/src/filters/HueRotation.min.mjs +0 -0
- package/dist/src/filters/HueRotation.min.mjs.map +0 -0
- package/dist/src/filters/HueRotation.mjs +0 -0
- package/dist/src/filters/HueRotation.mjs.map +0 -0
- package/dist/src/filters/Invert.d.ts +0 -0
- package/dist/src/filters/Invert.d.ts.map +0 -0
- package/dist/src/filters/Invert.min.mjs +0 -0
- package/dist/src/filters/Invert.min.mjs.map +0 -0
- package/dist/src/filters/Invert.mjs +0 -0
- package/dist/src/filters/Invert.mjs.map +0 -0
- package/dist/src/filters/Noise.d.ts +0 -0
- package/dist/src/filters/Noise.d.ts.map +0 -0
- package/dist/src/filters/Noise.min.mjs +0 -0
- package/dist/src/filters/Noise.min.mjs.map +0 -0
- package/dist/src/filters/Noise.mjs +0 -0
- package/dist/src/filters/Noise.mjs.map +0 -0
- package/dist/src/filters/Pixelate.d.ts +0 -0
- package/dist/src/filters/Pixelate.d.ts.map +0 -0
- package/dist/src/filters/Pixelate.min.mjs +0 -0
- package/dist/src/filters/Pixelate.min.mjs.map +0 -0
- package/dist/src/filters/Pixelate.mjs +0 -0
- package/dist/src/filters/Pixelate.mjs.map +0 -0
- package/dist/src/filters/RemoveColor.d.ts +0 -0
- package/dist/src/filters/RemoveColor.d.ts.map +0 -0
- package/dist/src/filters/RemoveColor.min.mjs +0 -0
- package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
- package/dist/src/filters/RemoveColor.mjs +0 -0
- package/dist/src/filters/RemoveColor.mjs.map +0 -0
- package/dist/src/filters/Resize.d.ts +0 -0
- package/dist/src/filters/Resize.d.ts.map +0 -0
- package/dist/src/filters/Resize.min.mjs +0 -0
- package/dist/src/filters/Resize.min.mjs.map +0 -0
- package/dist/src/filters/Resize.mjs +0 -0
- package/dist/src/filters/Resize.mjs.map +0 -0
- package/dist/src/filters/Saturation.d.ts +0 -0
- package/dist/src/filters/Saturation.d.ts.map +0 -0
- package/dist/src/filters/Saturation.min.mjs +0 -0
- package/dist/src/filters/Saturation.min.mjs.map +0 -0
- package/dist/src/filters/Saturation.mjs +0 -0
- package/dist/src/filters/Saturation.mjs.map +0 -0
- package/dist/src/filters/Vibrance.d.ts +0 -0
- package/dist/src/filters/Vibrance.d.ts.map +0 -0
- package/dist/src/filters/Vibrance.min.mjs +0 -0
- package/dist/src/filters/Vibrance.min.mjs.map +0 -0
- package/dist/src/filters/Vibrance.mjs +0 -0
- package/dist/src/filters/Vibrance.mjs.map +0 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
- package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
- package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
- package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
- package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
- package/dist/src/filters/filters.d.ts +0 -0
- package/dist/src/filters/filters.d.ts.map +0 -0
- package/dist/src/filters/filters.min.mjs +0 -0
- package/dist/src/filters/filters.min.mjs.map +0 -0
- package/dist/src/filters/filters.mjs +0 -0
- package/dist/src/filters/filters.mjs.map +0 -0
- package/dist/src/filters/index.d.ts +0 -0
- package/dist/src/filters/index.d.ts.map +0 -0
- package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
- package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
- package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
- package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
- package/dist/src/filters/shaders/baseFilter.mjs +0 -0
- package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
- package/dist/src/filters/shaders/blendColor.d.ts +0 -0
- package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
- package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
- package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
- package/dist/src/filters/shaders/blendColor.mjs +0 -0
- package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
- package/dist/src/filters/shaders/blendImage.d.ts +0 -0
- package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
- package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
- package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
- package/dist/src/filters/shaders/blendImage.mjs +0 -0
- package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
- package/dist/src/filters/shaders/blur.d.ts +0 -0
- package/dist/src/filters/shaders/blur.d.ts.map +0 -0
- package/dist/src/filters/shaders/blur.min.mjs +0 -0
- package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
- package/dist/src/filters/shaders/blur.mjs +0 -0
- package/dist/src/filters/shaders/blur.mjs.map +0 -0
- package/dist/src/filters/shaders/brightness.d.ts +0 -0
- package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
- package/dist/src/filters/shaders/brightness.min.mjs +0 -0
- package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
- package/dist/src/filters/shaders/brightness.mjs +0 -0
- package/dist/src/filters/shaders/brightness.mjs.map +0 -0
- package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
- package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
- package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
- package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
- package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
- package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
- package/dist/src/filters/shaders/constrast.d.ts +0 -0
- package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
- package/dist/src/filters/shaders/constrast.min.mjs +0 -0
- package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
- package/dist/src/filters/shaders/constrast.mjs +0 -0
- package/dist/src/filters/shaders/constrast.mjs.map +0 -0
- package/dist/src/filters/shaders/convolute.d.ts +0 -0
- package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
- package/dist/src/filters/shaders/convolute.min.mjs +0 -0
- package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
- package/dist/src/filters/shaders/convolute.mjs +0 -0
- package/dist/src/filters/shaders/convolute.mjs.map +0 -0
- package/dist/src/filters/shaders/gamma.d.ts +0 -0
- package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
- package/dist/src/filters/shaders/gamma.min.mjs +0 -0
- package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
- package/dist/src/filters/shaders/gamma.mjs +0 -0
- package/dist/src/filters/shaders/gamma.mjs.map +0 -0
- package/dist/src/filters/shaders/grayscale.d.ts +0 -0
- package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
- package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
- package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
- package/dist/src/filters/shaders/grayscale.mjs +0 -0
- package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
- package/dist/src/filters/shaders/invert.d.ts +0 -0
- package/dist/src/filters/shaders/invert.d.ts.map +0 -0
- package/dist/src/filters/shaders/invert.min.mjs +0 -0
- package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
- package/dist/src/filters/shaders/invert.mjs +0 -0
- package/dist/src/filters/shaders/invert.mjs.map +0 -0
- package/dist/src/filters/shaders/noise.d.ts +0 -0
- package/dist/src/filters/shaders/noise.d.ts.map +0 -0
- package/dist/src/filters/shaders/noise.min.mjs +0 -0
- package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
- package/dist/src/filters/shaders/noise.mjs +0 -0
- package/dist/src/filters/shaders/noise.mjs.map +0 -0
- package/dist/src/filters/shaders/pixelate.d.ts +0 -0
- package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
- package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
- package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
- package/dist/src/filters/shaders/pixelate.mjs +0 -0
- package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
- package/dist/src/filters/shaders/removeColor.d.ts +0 -0
- package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
- package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
- package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
- package/dist/src/filters/shaders/removeColor.mjs +0 -0
- package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
- package/dist/src/filters/shaders/saturation.d.ts +0 -0
- package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
- package/dist/src/filters/shaders/saturation.min.mjs +0 -0
- package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
- package/dist/src/filters/shaders/saturation.mjs +0 -0
- package/dist/src/filters/shaders/saturation.mjs.map +0 -0
- package/dist/src/filters/shaders/vibrance.d.ts +0 -0
- package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
- package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
- package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
- package/dist/src/filters/shaders/vibrance.mjs +0 -0
- package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
- package/dist/src/filters/typedefs.d.ts +0 -0
- package/dist/src/filters/typedefs.d.ts.map +0 -0
- package/dist/src/filters/utils.d.ts +0 -0
- package/dist/src/filters/utils.d.ts.map +0 -0
- package/dist/src/filters/utils.min.mjs +0 -0
- package/dist/src/filters/utils.min.mjs.map +0 -0
- package/dist/src/filters/utils.mjs +0 -0
- package/dist/src/filters/utils.mjs.map +0 -0
- package/dist/src/gradient/Gradient.d.ts +0 -0
- package/dist/src/gradient/Gradient.d.ts.map +0 -0
- package/dist/src/gradient/Gradient.min.mjs +0 -0
- package/dist/src/gradient/Gradient.min.mjs.map +0 -0
- package/dist/src/gradient/Gradient.mjs +0 -0
- package/dist/src/gradient/Gradient.mjs.map +0 -0
- package/dist/src/gradient/constants.d.ts +0 -0
- package/dist/src/gradient/constants.d.ts.map +0 -0
- package/dist/src/gradient/constants.min.mjs +0 -0
- package/dist/src/gradient/constants.min.mjs.map +0 -0
- package/dist/src/gradient/constants.mjs +0 -0
- package/dist/src/gradient/constants.mjs.map +0 -0
- package/dist/src/gradient/index.d.ts +0 -0
- package/dist/src/gradient/index.d.ts.map +0 -0
- package/dist/src/gradient/parser/misc.d.ts +0 -0
- package/dist/src/gradient/parser/misc.d.ts.map +0 -0
- package/dist/src/gradient/parser/misc.min.mjs +0 -0
- package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
- package/dist/src/gradient/parser/misc.mjs +0 -0
- package/dist/src/gradient/parser/misc.mjs.map +0 -0
- package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
- package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
- package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
- package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
- package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
- package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
- package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
- package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
- package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
- package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
- package/dist/src/gradient/parser/parseCoords.mjs +0 -0
- package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
- package/dist/src/gradient/typedefs.d.ts +0 -0
- package/dist/src/gradient/typedefs.d.ts.map +0 -0
- package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
- package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
- package/dist/src/parkinglot/straighten.d.ts +0 -0
- package/dist/src/parkinglot/straighten.d.ts.map +0 -0
- package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
- package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
- package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
- package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
- package/dist/src/parser/applyViewboxTransform.mjs +0 -0
- package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
- package/dist/src/parser/attributes.d.ts +0 -0
- package/dist/src/parser/attributes.d.ts.map +0 -0
- package/dist/src/parser/attributes.min.mjs +0 -0
- package/dist/src/parser/attributes.min.mjs.map +0 -0
- package/dist/src/parser/attributes.mjs +0 -0
- package/dist/src/parser/attributes.mjs.map +0 -0
- package/dist/src/parser/constants.d.ts +0 -0
- package/dist/src/parser/constants.d.ts.map +0 -0
- package/dist/src/parser/constants.min.mjs +0 -0
- package/dist/src/parser/constants.min.mjs.map +0 -0
- package/dist/src/parser/constants.mjs +0 -0
- package/dist/src/parser/constants.mjs.map +0 -0
- package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
- package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
- package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
- package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
- package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
- package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
- package/dist/src/parser/elementMatchesRule.d.ts +0 -0
- package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
- package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
- package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
- package/dist/src/parser/elementMatchesRule.mjs +0 -0
- package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
- package/dist/src/parser/elements_parser.d.ts +0 -0
- package/dist/src/parser/elements_parser.d.ts.map +0 -0
- package/dist/src/parser/elements_parser.min.mjs +0 -0
- package/dist/src/parser/elements_parser.min.mjs.map +0 -0
- package/dist/src/parser/elements_parser.mjs +0 -0
- package/dist/src/parser/elements_parser.mjs.map +0 -0
- package/dist/src/parser/getCSSRules.d.ts +0 -0
- package/dist/src/parser/getCSSRules.d.ts.map +0 -0
- package/dist/src/parser/getCSSRules.min.mjs +0 -0
- package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
- package/dist/src/parser/getCSSRules.mjs +0 -0
- package/dist/src/parser/getCSSRules.mjs.map +0 -0
- package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
- package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
- package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
- package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
- package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
- package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
- package/dist/src/parser/getGradientDefs.d.ts +0 -0
- package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
- package/dist/src/parser/getGradientDefs.min.mjs +0 -0
- package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
- package/dist/src/parser/getGradientDefs.mjs +0 -0
- package/dist/src/parser/getGradientDefs.mjs.map +0 -0
- package/dist/src/parser/getMultipleNodes.d.ts +0 -0
- package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
- package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
- package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
- package/dist/src/parser/getMultipleNodes.mjs +0 -0
- package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
- package/dist/src/parser/getSvgRegex.d.ts +0 -0
- package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
- package/dist/src/parser/getSvgRegex.min.mjs +0 -0
- package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
- package/dist/src/parser/getSvgRegex.mjs +0 -0
- package/dist/src/parser/getSvgRegex.mjs.map +0 -0
- package/dist/src/parser/getTagName.d.ts +0 -0
- package/dist/src/parser/getTagName.d.ts.map +0 -0
- package/dist/src/parser/getTagName.min.mjs +0 -0
- package/dist/src/parser/getTagName.min.mjs.map +0 -0
- package/dist/src/parser/getTagName.mjs +0 -0
- package/dist/src/parser/getTagName.mjs.map +0 -0
- package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
- package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
- package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
- package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
- package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
- package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
- package/dist/src/parser/loadSVGFromString.d.ts +0 -0
- package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
- package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
- package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
- package/dist/src/parser/loadSVGFromString.mjs +0 -0
- package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
- package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
- package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
- package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
- package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
- package/dist/src/parser/loadSVGFromURL.mjs +0 -0
- package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
- package/dist/src/parser/normalizeAttr.d.ts +0 -0
- package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
- package/dist/src/parser/normalizeAttr.min.mjs +0 -0
- package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
- package/dist/src/parser/normalizeAttr.mjs +0 -0
- package/dist/src/parser/normalizeAttr.mjs.map +0 -0
- package/dist/src/parser/normalizeValue.d.ts +0 -0
- package/dist/src/parser/normalizeValue.d.ts.map +0 -0
- package/dist/src/parser/normalizeValue.min.mjs +0 -0
- package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
- package/dist/src/parser/normalizeValue.mjs +0 -0
- package/dist/src/parser/normalizeValue.mjs.map +0 -0
- package/dist/src/parser/parseAttributes.d.ts +0 -0
- package/dist/src/parser/parseAttributes.d.ts.map +0 -0
- package/dist/src/parser/parseAttributes.min.mjs +0 -0
- package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
- package/dist/src/parser/parseAttributes.mjs +0 -0
- package/dist/src/parser/parseAttributes.mjs.map +0 -0
- package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
- package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
- package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
- package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
- package/dist/src/parser/parseFontDeclaration.mjs +0 -0
- package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
- package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
- package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
- package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
- package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
- package/dist/src/parser/parsePointsAttribute.mjs +0 -0
- package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
- package/dist/src/parser/parseSVGDocument.d.ts +0 -0
- package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
- package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
- package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
- package/dist/src/parser/parseSVGDocument.mjs +0 -0
- package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
- package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
- package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
- package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
- package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
- package/dist/src/parser/parseStyleAttribute.mjs +0 -0
- package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
- package/dist/src/parser/parseStyleObject.d.ts +0 -0
- package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
- package/dist/src/parser/parseStyleObject.min.mjs +0 -0
- package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
- package/dist/src/parser/parseStyleObject.mjs +0 -0
- package/dist/src/parser/parseStyleObject.mjs.map +0 -0
- package/dist/src/parser/parseStyleString.d.ts +0 -0
- package/dist/src/parser/parseStyleString.d.ts.map +0 -0
- package/dist/src/parser/parseStyleString.min.mjs +0 -0
- package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
- package/dist/src/parser/parseStyleString.mjs +0 -0
- package/dist/src/parser/parseStyleString.mjs.map +0 -0
- package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
- package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
- package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
- package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
- package/dist/src/parser/parseTransformAttribute.mjs +0 -0
- package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
- package/dist/src/parser/parseUseDirectives.d.ts +0 -0
- package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
- package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
- package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
- package/dist/src/parser/parseUseDirectives.mjs +0 -0
- package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
- package/dist/src/parser/percent.d.ts +0 -0
- package/dist/src/parser/percent.d.ts.map +0 -0
- package/dist/src/parser/percent.min.mjs +0 -0
- package/dist/src/parser/percent.min.mjs.map +0 -0
- package/dist/src/parser/percent.mjs +0 -0
- package/dist/src/parser/percent.mjs.map +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
- package/dist/src/parser/selectorMatches.d.ts +0 -0
- package/dist/src/parser/selectorMatches.d.ts.map +0 -0
- package/dist/src/parser/selectorMatches.min.mjs +0 -0
- package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
- package/dist/src/parser/selectorMatches.mjs +0 -0
- package/dist/src/parser/selectorMatches.mjs.map +0 -0
- package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
- package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
- package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
- package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
- package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
- package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
- package/dist/src/parser/typedefs.d.ts +0 -0
- package/dist/src/parser/typedefs.d.ts.map +0 -0
- package/dist/src/shapes/ActiveSelection.d.ts +0 -0
- package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
- package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
- package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
- package/dist/src/shapes/ActiveSelection.mjs +0 -0
- package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
- package/dist/src/shapes/Circle.d.ts +0 -0
- package/dist/src/shapes/Circle.d.ts.map +0 -0
- package/dist/src/shapes/Circle.min.mjs +0 -0
- package/dist/src/shapes/Circle.min.mjs.map +0 -0
- package/dist/src/shapes/Circle.mjs +0 -0
- package/dist/src/shapes/Circle.mjs.map +0 -0
- package/dist/src/shapes/Ellipse.d.ts +0 -0
- package/dist/src/shapes/Ellipse.d.ts.map +0 -0
- package/dist/src/shapes/Ellipse.min.mjs +0 -0
- package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
- package/dist/src/shapes/Ellipse.mjs +0 -0
- package/dist/src/shapes/Ellipse.mjs.map +0 -0
- package/dist/src/shapes/Group.d.ts +0 -0
- package/dist/src/shapes/Group.d.ts.map +0 -0
- package/dist/src/shapes/Group.min.mjs +0 -0
- package/dist/src/shapes/Group.min.mjs.map +0 -0
- package/dist/src/shapes/Group.mjs +0 -0
- package/dist/src/shapes/Group.mjs.map +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
- package/dist/src/shapes/IText/IText.d.ts +0 -0
- package/dist/src/shapes/IText/IText.d.ts.map +0 -0
- package/dist/src/shapes/IText/IText.min.mjs +0 -0
- package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.mjs +206 -206
- package/dist/src/shapes/IText/IText.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
- package/dist/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
- package/dist/src/shapes/IText/ITextBehavior.min.mjs +0 -0
- package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs +152 -152
- package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
- package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +0 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs +0 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +0 -0
- package/dist/src/shapes/IText/constants.d.ts +0 -0
- package/dist/src/shapes/IText/constants.d.ts.map +0 -0
- package/dist/src/shapes/IText/constants.min.mjs +0 -0
- package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
- package/dist/src/shapes/IText/constants.mjs +0 -0
- package/dist/src/shapes/IText/constants.mjs.map +0 -0
- package/dist/src/shapes/Image.d.ts +0 -0
- package/dist/src/shapes/Image.d.ts.map +0 -0
- package/dist/src/shapes/Image.min.mjs +0 -0
- package/dist/src/shapes/Image.min.mjs.map +0 -0
- package/dist/src/shapes/Image.mjs +0 -0
- package/dist/src/shapes/Image.mjs.map +0 -0
- package/dist/src/shapes/Line.d.ts +0 -0
- package/dist/src/shapes/Line.d.ts.map +0 -0
- package/dist/src/shapes/Line.min.mjs +0 -0
- package/dist/src/shapes/Line.min.mjs.map +0 -0
- package/dist/src/shapes/Line.mjs +0 -0
- package/dist/src/shapes/Line.mjs.map +0 -0
- package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
- package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
- package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
- package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
- package/dist/src/shapes/Object/FabricObject.mjs +0 -0
- package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
- package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
- package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
- package/dist/src/shapes/Object/Object.d.ts +0 -0
- package/dist/src/shapes/Object/Object.d.ts.map +0 -0
- package/dist/src/shapes/Object/Object.min.mjs +0 -0
- package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
- package/dist/src/shapes/Object/Object.mjs +0 -0
- package/dist/src/shapes/Object/Object.mjs.map +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
- package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
- package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
- package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
- package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
- package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
- package/dist/src/shapes/Object/defaultValues.mjs +0 -0
- package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
- package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
- package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
- package/dist/src/shapes/Object/types/index.d.ts +0 -0
- package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
- package/dist/src/shapes/Path.d.ts +0 -0
- package/dist/src/shapes/Path.d.ts.map +0 -0
- package/dist/src/shapes/Path.min.mjs +0 -0
- package/dist/src/shapes/Path.min.mjs.map +0 -0
- package/dist/src/shapes/Path.mjs +0 -0
- package/dist/src/shapes/Path.mjs.map +0 -0
- package/dist/src/shapes/Polygon.d.ts +0 -0
- package/dist/src/shapes/Polygon.d.ts.map +0 -0
- package/dist/src/shapes/Polygon.min.mjs +0 -0
- package/dist/src/shapes/Polygon.min.mjs.map +0 -0
- package/dist/src/shapes/Polygon.mjs +0 -0
- package/dist/src/shapes/Polygon.mjs.map +0 -0
- package/dist/src/shapes/Polyline.d.ts +7 -0
- 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 +48 -16
- package/dist/src/shapes/Polyline.mjs.map +1 -1
- package/dist/src/shapes/Rect.d.ts +0 -0
- package/dist/src/shapes/Rect.d.ts.map +0 -0
- package/dist/src/shapes/Rect.min.mjs +0 -0
- package/dist/src/shapes/Rect.min.mjs.map +0 -0
- package/dist/src/shapes/Rect.mjs +0 -0
- package/dist/src/shapes/Rect.mjs.map +0 -0
- package/dist/src/shapes/Text/StyledText.d.ts +0 -0
- package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
- package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
- package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
- package/dist/src/shapes/Text/StyledText.mjs +0 -0
- package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
- package/dist/src/shapes/Text/Text.d.ts +0 -0
- package/dist/src/shapes/Text/Text.d.ts.map +0 -0
- package/dist/src/shapes/Text/Text.min.mjs +0 -0
- package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.mjs +283 -283
- package/dist/src/shapes/Text/Text.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
- package/dist/src/shapes/Text/constants.d.ts +0 -0
- package/dist/src/shapes/Text/constants.d.ts.map +0 -0
- package/dist/src/shapes/Text/constants.min.mjs +0 -0
- package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
- package/dist/src/shapes/Text/constants.mjs +0 -0
- package/dist/src/shapes/Text/constants.mjs.map +1 -1
- package/dist/src/shapes/Textbox.d.ts +0 -0
- package/dist/src/shapes/Textbox.d.ts.map +0 -0
- package/dist/src/shapes/Textbox.min.mjs +0 -0
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs +147 -147
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/shapes/Triangle.d.ts +27 -2
- package/dist/src/shapes/Triangle.d.ts.map +1 -1
- package/dist/src/shapes/Triangle.min.mjs +1 -1
- package/dist/src/shapes/Triangle.min.mjs.map +1 -1
- package/dist/src/shapes/Triangle.mjs +72 -12
- package/dist/src/shapes/Triangle.mjs.map +1 -1
- package/dist/src/text/browserLines.d.ts +0 -0
- package/dist/src/text/browserLines.d.ts.map +0 -0
- package/dist/src/text/browserLines.min.mjs +0 -0
- package/dist/src/text/browserLines.min.mjs.map +1 -1
- package/dist/src/text/browserLines.mjs +20 -20
- package/dist/src/text/browserLines.mjs.map +1 -1
- package/dist/src/text/ellipsis.d.ts +0 -0
- package/dist/src/text/ellipsis.d.ts.map +0 -0
- package/dist/src/text/ellipsis.min.mjs +0 -0
- package/dist/src/text/ellipsis.min.mjs.map +1 -1
- package/dist/src/text/ellipsis.mjs +11 -11
- package/dist/src/text/ellipsis.mjs.map +1 -1
- package/dist/src/text/hitTest.d.ts +0 -0
- package/dist/src/text/hitTest.d.ts.map +0 -0
- package/dist/src/text/hitTest.min.mjs +0 -0
- package/dist/src/text/hitTest.min.mjs.map +1 -1
- package/dist/src/text/hitTest.mjs +19 -19
- package/dist/src/text/hitTest.mjs.map +1 -1
- package/dist/src/text/layout.d.ts +0 -0
- package/dist/src/text/layout.d.ts.map +0 -0
- package/dist/src/text/layout.min.mjs +0 -0
- package/dist/src/text/layout.min.mjs.map +1 -1
- package/dist/src/text/layout.mjs +33 -33
- package/dist/src/text/layout.mjs.map +1 -1
- package/dist/src/text/measure.d.ts +0 -0
- package/dist/src/text/measure.d.ts.map +0 -0
- package/dist/src/text/measure.min.mjs +0 -0
- package/dist/src/text/measure.min.mjs.map +1 -1
- package/dist/src/text/measure.mjs +20 -20
- package/dist/src/text/measure.mjs.map +1 -1
- package/dist/src/text/overlayEditor.d.ts +0 -0
- package/dist/src/text/overlayEditor.d.ts.map +0 -0
- package/dist/src/text/overlayEditor.min.mjs +0 -0
- package/dist/src/text/overlayEditor.min.mjs.map +1 -1
- package/dist/src/text/overlayEditor.mjs +33 -33
- package/dist/src/text/overlayEditor.mjs.map +1 -1
- package/dist/src/text/unicode.d.ts +0 -0
- package/dist/src/text/unicode.d.ts.map +0 -0
- package/dist/src/text/unicode.min.mjs +0 -0
- package/dist/src/text/unicode.min.mjs.map +1 -1
- package/dist/src/text/unicode.mjs +8 -8
- package/dist/src/text/unicode.mjs.map +1 -1
- package/dist/src/typedefs.d.ts +0 -0
- package/dist/src/typedefs.d.ts.map +0 -0
- package/dist/src/util/animation/AnimationBase.d.ts +0 -0
- package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
- package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
- package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
- package/dist/src/util/animation/AnimationBase.mjs +0 -0
- package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
- package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
- package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
- package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
- package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
- package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
- package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
- package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
- package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
- package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
- package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
- package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
- package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
- package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
- package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
- package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
- package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
- package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
- package/dist/src/util/animation/ColorAnimation.mjs +0 -0
- package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
- package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
- package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
- package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
- package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
- package/dist/src/util/animation/ValueAnimation.mjs +0 -0
- package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
- package/dist/src/util/animation/animate.d.ts +0 -0
- package/dist/src/util/animation/animate.d.ts.map +0 -0
- package/dist/src/util/animation/animate.min.mjs +0 -0
- package/dist/src/util/animation/animate.min.mjs.map +0 -0
- package/dist/src/util/animation/animate.mjs +0 -0
- package/dist/src/util/animation/animate.mjs.map +0 -0
- package/dist/src/util/animation/easing.d.ts +0 -0
- package/dist/src/util/animation/easing.d.ts.map +0 -0
- package/dist/src/util/animation/easing.min.mjs +0 -0
- package/dist/src/util/animation/easing.min.mjs.map +0 -0
- package/dist/src/util/animation/easing.mjs +0 -0
- package/dist/src/util/animation/easing.mjs.map +0 -0
- package/dist/src/util/animation/index.d.ts +0 -0
- package/dist/src/util/animation/index.d.ts.map +0 -0
- package/dist/src/util/animation/types.d.ts +0 -0
- package/dist/src/util/animation/types.d.ts.map +0 -0
- package/dist/src/util/applyMixins.d.ts +0 -0
- package/dist/src/util/applyMixins.d.ts.map +0 -0
- package/dist/src/util/applyMixins.min.mjs +0 -0
- package/dist/src/util/applyMixins.min.mjs.map +0 -0
- package/dist/src/util/applyMixins.mjs +0 -0
- package/dist/src/util/applyMixins.mjs.map +0 -0
- package/dist/src/util/dom_event.d.ts +0 -0
- package/dist/src/util/dom_event.d.ts.map +0 -0
- package/dist/src/util/dom_event.min.mjs +0 -0
- package/dist/src/util/dom_event.min.mjs.map +0 -0
- package/dist/src/util/dom_event.mjs +0 -0
- package/dist/src/util/dom_event.mjs.map +0 -0
- package/dist/src/util/dom_misc.d.ts +0 -0
- package/dist/src/util/dom_misc.d.ts.map +0 -0
- package/dist/src/util/dom_misc.min.mjs +0 -0
- package/dist/src/util/dom_misc.min.mjs.map +0 -0
- package/dist/src/util/dom_misc.mjs +0 -0
- package/dist/src/util/dom_misc.mjs.map +0 -0
- package/dist/src/util/index.d.ts +0 -0
- package/dist/src/util/index.d.ts.map +0 -0
- package/dist/src/util/index.min.mjs +0 -0
- package/dist/src/util/index.min.mjs.map +0 -0
- package/dist/src/util/index.mjs +0 -0
- package/dist/src/util/index.mjs.map +0 -0
- package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
- package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
- package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
- package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
- package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
- package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
- package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
- package/dist/src/util/internals/cloneStyles.d.ts +0 -0
- package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
- package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
- package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
- package/dist/src/util/internals/cloneStyles.mjs +0 -0
- package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
- package/dist/src/util/internals/console.d.ts +0 -0
- package/dist/src/util/internals/console.d.ts.map +0 -0
- package/dist/src/util/internals/console.min.mjs +0 -0
- package/dist/src/util/internals/console.min.mjs.map +0 -0
- package/dist/src/util/internals/console.mjs +0 -0
- package/dist/src/util/internals/console.mjs.map +0 -0
- package/dist/src/util/internals/dom_style.d.ts +0 -0
- package/dist/src/util/internals/dom_style.d.ts.map +0 -0
- package/dist/src/util/internals/dom_style.min.mjs +0 -0
- package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
- package/dist/src/util/internals/dom_style.mjs +0 -0
- package/dist/src/util/internals/dom_style.mjs.map +0 -0
- package/dist/src/util/internals/findRight.d.ts +0 -0
- package/dist/src/util/internals/findRight.d.ts.map +0 -0
- package/dist/src/util/internals/findRight.min.mjs +0 -0
- package/dist/src/util/internals/findRight.min.mjs.map +0 -0
- package/dist/src/util/internals/findRight.mjs +0 -0
- package/dist/src/util/internals/findRight.mjs.map +0 -0
- package/dist/src/util/internals/getRandomInt.d.ts +0 -0
- package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
- package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
- package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
- package/dist/src/util/internals/getRandomInt.mjs +0 -0
- package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
- package/dist/src/util/internals/ifNaN.d.ts +0 -0
- package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
- package/dist/src/util/internals/ifNaN.min.mjs +0 -0
- package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
- package/dist/src/util/internals/ifNaN.mjs +0 -0
- package/dist/src/util/internals/ifNaN.mjs.map +0 -0
- package/dist/src/util/internals/removeFromArray.d.ts +0 -0
- package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
- package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
- package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
- package/dist/src/util/internals/removeFromArray.mjs +0 -0
- package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
- package/dist/src/util/internals/uid.d.ts +0 -0
- package/dist/src/util/internals/uid.d.ts.map +0 -0
- package/dist/src/util/internals/uid.min.mjs +0 -0
- package/dist/src/util/internals/uid.min.mjs.map +0 -0
- package/dist/src/util/internals/uid.mjs +0 -0
- package/dist/src/util/internals/uid.mjs.map +0 -0
- package/dist/src/util/lang_string.d.ts +0 -0
- package/dist/src/util/lang_string.d.ts.map +0 -0
- package/dist/src/util/lang_string.min.mjs +0 -0
- package/dist/src/util/lang_string.min.mjs.map +0 -0
- package/dist/src/util/lang_string.mjs +0 -0
- package/dist/src/util/lang_string.mjs.map +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
- package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
- package/dist/src/util/misc/capValue.d.ts +0 -0
- package/dist/src/util/misc/capValue.d.ts.map +0 -0
- package/dist/src/util/misc/capValue.min.mjs +0 -0
- package/dist/src/util/misc/capValue.min.mjs.map +0 -0
- package/dist/src/util/misc/capValue.mjs +0 -0
- package/dist/src/util/misc/capValue.mjs.map +0 -0
- package/dist/src/util/misc/cornerRadius.d.ts +70 -0
- package/dist/src/util/misc/cornerRadius.d.ts.map +1 -0
- package/dist/src/util/misc/cornerRadius.min.mjs +2 -0
- package/dist/src/util/misc/cornerRadius.min.mjs.map +1 -0
- package/dist/src/util/misc/cornerRadius.mjs +181 -0
- package/dist/src/util/misc/cornerRadius.mjs.map +1 -0
- package/dist/src/util/misc/cos.d.ts +0 -0
- package/dist/src/util/misc/cos.d.ts.map +0 -0
- package/dist/src/util/misc/cos.min.mjs +0 -0
- package/dist/src/util/misc/cos.min.mjs.map +0 -0
- package/dist/src/util/misc/cos.mjs +0 -0
- package/dist/src/util/misc/cos.mjs.map +0 -0
- package/dist/src/util/misc/dom.d.ts +0 -0
- package/dist/src/util/misc/dom.d.ts.map +0 -0
- package/dist/src/util/misc/dom.min.mjs +0 -0
- package/dist/src/util/misc/dom.min.mjs.map +0 -0
- package/dist/src/util/misc/dom.mjs +0 -0
- package/dist/src/util/misc/dom.mjs.map +0 -0
- package/dist/src/util/misc/findScaleTo.d.ts +0 -0
- package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
- package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
- package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
- package/dist/src/util/misc/findScaleTo.mjs +0 -0
- package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
- package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
- package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
- package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
- package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
- package/dist/src/util/misc/groupSVGElements.mjs +0 -0
- package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
- package/dist/src/util/misc/isTransparent.d.ts +0 -0
- package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
- package/dist/src/util/misc/isTransparent.min.mjs +0 -0
- package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
- package/dist/src/util/misc/isTransparent.mjs +0 -0
- package/dist/src/util/misc/isTransparent.mjs.map +0 -0
- package/dist/src/util/misc/matrix.d.ts +0 -0
- package/dist/src/util/misc/matrix.d.ts.map +0 -0
- package/dist/src/util/misc/matrix.min.mjs +0 -0
- package/dist/src/util/misc/matrix.min.mjs.map +0 -0
- package/dist/src/util/misc/matrix.mjs +0 -0
- package/dist/src/util/misc/matrix.mjs.map +0 -0
- package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
- package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
- package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
- package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
- package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
- package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
- package/dist/src/util/misc/objectEnlive.d.ts +0 -0
- package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
- package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
- package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
- package/dist/src/util/misc/objectEnlive.mjs +0 -0
- package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
- package/dist/src/util/misc/objectTransforms.d.ts +0 -0
- package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
- package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
- package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
- package/dist/src/util/misc/objectTransforms.mjs +0 -0
- package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
- package/dist/src/util/misc/pick.d.ts +0 -0
- package/dist/src/util/misc/pick.d.ts.map +0 -0
- package/dist/src/util/misc/pick.min.mjs +0 -0
- package/dist/src/util/misc/pick.min.mjs.map +0 -0
- package/dist/src/util/misc/pick.mjs +0 -0
- package/dist/src/util/misc/pick.mjs.map +0 -0
- package/dist/src/util/misc/planeChange.d.ts +0 -0
- package/dist/src/util/misc/planeChange.d.ts.map +0 -0
- package/dist/src/util/misc/planeChange.min.mjs +0 -0
- package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
- package/dist/src/util/misc/planeChange.mjs +0 -0
- package/dist/src/util/misc/planeChange.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
- package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
- package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
- package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/index.mjs +0 -0
- package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
- package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
- package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
- package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
- package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
- package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
- package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
- package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
- package/dist/src/util/misc/resolveOrigin.mjs +0 -0
- package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
- package/dist/src/util/misc/sin.d.ts +0 -0
- package/dist/src/util/misc/sin.d.ts.map +0 -0
- package/dist/src/util/misc/sin.min.mjs +0 -0
- package/dist/src/util/misc/sin.min.mjs.map +0 -0
- package/dist/src/util/misc/sin.mjs +0 -0
- package/dist/src/util/misc/sin.mjs.map +0 -0
- package/dist/src/util/misc/svgExport.d.ts +0 -0
- package/dist/src/util/misc/svgExport.d.ts.map +0 -0
- package/dist/src/util/misc/svgExport.min.mjs +0 -0
- package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
- package/dist/src/util/misc/svgExport.mjs +0 -0
- package/dist/src/util/misc/svgExport.mjs.map +0 -0
- package/dist/src/util/misc/svgParsing.d.ts +0 -0
- package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
- package/dist/src/util/misc/svgParsing.min.mjs +0 -0
- package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
- package/dist/src/util/misc/svgParsing.mjs +0 -0
- package/dist/src/util/misc/svgParsing.mjs.map +0 -0
- package/dist/src/util/misc/textStyles.d.ts +0 -0
- package/dist/src/util/misc/textStyles.d.ts.map +0 -0
- package/dist/src/util/misc/textStyles.min.mjs +0 -0
- package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
- package/dist/src/util/misc/textStyles.mjs +0 -0
- package/dist/src/util/misc/textStyles.mjs.map +0 -0
- package/dist/src/util/misc/toFixed.d.ts +0 -0
- package/dist/src/util/misc/toFixed.d.ts.map +0 -0
- package/dist/src/util/misc/toFixed.min.mjs +0 -0
- package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
- package/dist/src/util/misc/toFixed.mjs +0 -0
- package/dist/src/util/misc/toFixed.mjs.map +0 -0
- package/dist/src/util/misc/vectors.d.ts +0 -0
- package/dist/src/util/misc/vectors.d.ts.map +0 -0
- package/dist/src/util/misc/vectors.min.mjs +0 -0
- package/dist/src/util/misc/vectors.min.mjs.map +0 -0
- package/dist/src/util/misc/vectors.mjs +0 -0
- package/dist/src/util/misc/vectors.mjs.map +0 -0
- package/dist/src/util/path/index.d.ts +0 -0
- package/dist/src/util/path/index.d.ts.map +0 -0
- package/dist/src/util/path/index.min.mjs +0 -0
- package/dist/src/util/path/index.min.mjs.map +0 -0
- package/dist/src/util/path/index.mjs +0 -0
- package/dist/src/util/path/index.mjs.map +0 -0
- package/dist/src/util/path/regex.d.ts +0 -0
- package/dist/src/util/path/regex.d.ts.map +0 -0
- package/dist/src/util/path/regex.min.mjs +0 -0
- package/dist/src/util/path/regex.min.mjs.map +0 -0
- package/dist/src/util/path/regex.mjs +0 -0
- package/dist/src/util/path/regex.mjs.map +0 -0
- package/dist/src/util/path/typechecks.d.ts +0 -0
- package/dist/src/util/path/typechecks.d.ts.map +0 -0
- package/dist/src/util/path/typedefs.d.ts +0 -0
- package/dist/src/util/path/typedefs.d.ts.map +0 -0
- package/dist/src/util/transform_matrix_removal.d.ts +0 -0
- package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
- package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
- package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
- package/dist/src/util/transform_matrix_removal.mjs +0 -0
- package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
- package/dist/src/util/typeAssertions.d.ts +0 -0
- package/dist/src/util/typeAssertions.d.ts.map +0 -0
- package/dist/src/util/typeAssertions.min.mjs +0 -0
- package/dist/src/util/typeAssertions.min.mjs.map +0 -0
- package/dist/src/util/typeAssertions.mjs +0 -0
- package/dist/src/util/typeAssertions.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
- package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/index.mjs +0 -0
- package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
- package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
- package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
- package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
- package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
- package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
- package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
- package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
- package/dist-extensions/data_updaters/origins/index.mjs +0 -0
- package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
- package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
- package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
- package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
- package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
- package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
- package/dist-extensions/extensions/index.d.ts +0 -0
- package/dist-extensions/extensions/index.d.ts.map +0 -0
- package/dist-extensions/fabric-extensions.min.js +0 -0
- package/dist-extensions/fabric-extensions.min.js.map +0 -0
- package/dist-extensions/fabric.d.ts +0 -0
- package/dist-extensions/fabric.d.ts.map +0 -0
- package/dist-extensions/index.d.ts +0 -0
- package/dist-extensions/index.d.ts.map +0 -0
- package/dist-extensions/index.mjs +0 -0
- package/dist-extensions/index.mjs.map +0 -0
- package/dist-extensions/src/ClassRegistry.d.ts +0 -0
- package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
- package/dist-extensions/src/Collection.d.ts +0 -0
- package/dist-extensions/src/Collection.d.ts.map +0 -0
- package/dist-extensions/src/CommonMethods.d.ts +0 -0
- package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
- package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
- package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
- package/dist-extensions/src/Intersection.d.ts +0 -0
- package/dist-extensions/src/Intersection.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
- package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
- package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
- package/dist-extensions/src/Observable.d.ts +0 -0
- package/dist-extensions/src/Observable.d.ts.map +0 -0
- package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
- package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
- package/dist-extensions/src/Pattern/index.d.ts +0 -0
- package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
- package/dist-extensions/src/Pattern/types.d.ts +0 -0
- package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
- package/dist-extensions/src/Point.d.ts +0 -0
- package/dist-extensions/src/Point.d.ts.map +0 -0
- package/dist-extensions/src/Shadow.d.ts +0 -0
- package/dist-extensions/src/Shadow.d.ts.map +0 -0
- package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
- package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
- package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
- package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
- package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
- package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
- package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
- package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
- package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
- package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
- package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
- package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/cache.d.ts +0 -0
- package/dist-extensions/src/cache.d.ts.map +0 -0
- package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
- package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
- package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
- package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
- package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
- package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
- package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
- package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
- package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
- package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
- package/dist-extensions/src/color/Color.d.ts +0 -0
- package/dist-extensions/src/color/Color.d.ts.map +0 -0
- package/dist-extensions/src/color/color_map.d.ts +0 -0
- package/dist-extensions/src/color/color_map.d.ts.map +0 -0
- package/dist-extensions/src/color/constants.d.ts +0 -0
- package/dist-extensions/src/color/constants.d.ts.map +0 -0
- package/dist-extensions/src/color/typedefs.d.ts +0 -0
- package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/color/util.d.ts +0 -0
- package/dist-extensions/src/color/util.d.ts.map +0 -0
- package/dist-extensions/src/config.d.ts +0 -0
- package/dist-extensions/src/config.d.ts.map +0 -0
- package/dist-extensions/src/constants.d.ts +0 -0
- package/dist-extensions/src/constants.d.ts.map +0 -0
- package/dist-extensions/src/controls/Control.d.ts +0 -0
- package/dist-extensions/src/controls/Control.d.ts.map +0 -0
- package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
- package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
- package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
- package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
- package/dist-extensions/src/controls/commonControls.d.ts +0 -0
- package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
- package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
- package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
- package/dist-extensions/src/controls/drag.d.ts +0 -0
- package/dist-extensions/src/controls/drag.d.ts.map +0 -0
- package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
- package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
- package/dist-extensions/src/controls/index.d.ts +0 -0
- package/dist-extensions/src/controls/index.d.ts.map +0 -0
- package/dist-extensions/src/controls/pathControl.d.ts +0 -0
- package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
- package/dist-extensions/src/controls/polyControl.d.ts +0 -0
- package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
- package/dist-extensions/src/controls/rotate.d.ts +0 -0
- package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
- package/dist-extensions/src/controls/scale.d.ts +0 -0
- package/dist-extensions/src/controls/scale.d.ts.map +0 -0
- package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
- package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
- package/dist-extensions/src/controls/skew.d.ts +0 -0
- package/dist-extensions/src/controls/skew.d.ts.map +0 -0
- package/dist-extensions/src/controls/util.d.ts +0 -0
- package/dist-extensions/src/controls/util.d.ts.map +0 -0
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
- package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
- package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
- package/dist-extensions/src/env/browser.d.ts +0 -0
- package/dist-extensions/src/env/browser.d.ts.map +0 -0
- package/dist-extensions/src/env/index.d.ts +0 -0
- package/dist-extensions/src/env/index.d.ts.map +0 -0
- package/dist-extensions/src/env/types.d.ts +0 -0
- package/dist-extensions/src/env/types.d.ts.map +0 -0
- package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
- package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
- package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
- package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
- package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
- package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
- package/dist-extensions/src/filters/Blur.d.ts +0 -0
- package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
- package/dist-extensions/src/filters/Brightness.d.ts +0 -0
- package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
- package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
- package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
- package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
- package/dist-extensions/src/filters/Composed.d.ts +0 -0
- package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
- package/dist-extensions/src/filters/Contrast.d.ts +0 -0
- package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
- package/dist-extensions/src/filters/Convolute.d.ts +0 -0
- package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
- package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
- package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
- package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
- package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
- package/dist-extensions/src/filters/Gamma.d.ts +0 -0
- package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
- package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
- package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
- package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
- package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
- package/dist-extensions/src/filters/Invert.d.ts +0 -0
- package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
- package/dist-extensions/src/filters/Noise.d.ts +0 -0
- package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
- package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
- package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
- package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
- package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
- package/dist-extensions/src/filters/Resize.d.ts +0 -0
- package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
- package/dist-extensions/src/filters/Saturation.d.ts +0 -0
- package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
- package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
- package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
- package/dist-extensions/src/filters/filters.d.ts +0 -0
- package/dist-extensions/src/filters/filters.d.ts.map +0 -0
- package/dist-extensions/src/filters/index.d.ts +0 -0
- package/dist-extensions/src/filters/index.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
- package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
- package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
- package/dist-extensions/src/filters/typedefs.d.ts +0 -0
- package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/filters/utils.d.ts +0 -0
- package/dist-extensions/src/filters/utils.d.ts.map +0 -0
- package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
- package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
- package/dist-extensions/src/gradient/constants.d.ts +0 -0
- package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
- package/dist-extensions/src/gradient/index.d.ts +0 -0
- package/dist-extensions/src/gradient/index.d.ts.map +0 -0
- package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
- package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
- package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
- package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
- package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
- package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
- package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
- package/dist-extensions/src/parser/attributes.d.ts +0 -0
- package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
- package/dist-extensions/src/parser/constants.d.ts +0 -0
- package/dist-extensions/src/parser/constants.d.ts.map +0 -0
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
- package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
- package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
- package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
- package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
- package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
- package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
- package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
- package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
- package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
- package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
- package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
- package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
- package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
- package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
- package/dist-extensions/src/parser/getTagName.d.ts +0 -0
- package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
- package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
- package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
- package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
- package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
- package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
- package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
- package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
- package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
- package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
- package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
- package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
- package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
- package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
- package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
- package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
- package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
- package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
- package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
- package/dist-extensions/src/parser/percent.d.ts +0 -0
- package/dist-extensions/src/parser/percent.d.ts.map +0 -0
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
- package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
- package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
- package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
- package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
- package/dist-extensions/src/parser/typedefs.d.ts +0 -0
- package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
- package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Circle.d.ts +0 -0
- package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
- package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Group.d.ts +0 -0
- package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
- package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
- package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Image.d.ts +0 -0
- package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Line.d.ts +0 -0
- package/dist-extensions/src/shapes/Line.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
- package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Path.d.ts +0 -0
- package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
- package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Polyline.d.ts +7 -0
- package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Rect.d.ts +0 -0
- package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
- package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Text/Text.d.ts +0 -0
- package/dist-extensions/src/shapes/Text/Text.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Text/constants.d.ts +0 -0
- package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Textbox.d.ts +0 -0
- package/dist-extensions/src/shapes/Textbox.d.ts.map +0 -0
- package/dist-extensions/src/shapes/Triangle.d.ts +27 -2
- package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -1
- package/dist-extensions/src/text/browserLines.d.ts +0 -0
- package/dist-extensions/src/text/browserLines.d.ts.map +0 -0
- package/dist-extensions/src/text/ellipsis.d.ts +0 -0
- package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
- package/dist-extensions/src/text/hitTest.d.ts +0 -0
- package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
- package/dist-extensions/src/text/layout.d.ts +0 -0
- package/dist-extensions/src/text/layout.d.ts.map +0 -0
- package/dist-extensions/src/text/measure.d.ts +0 -0
- package/dist-extensions/src/text/measure.d.ts.map +0 -0
- package/dist-extensions/src/text/overlayEditor.d.ts +0 -0
- package/dist-extensions/src/text/overlayEditor.d.ts.map +0 -0
- package/dist-extensions/src/text/unicode.d.ts +0 -0
- package/dist-extensions/src/text/unicode.d.ts.map +0 -0
- package/dist-extensions/src/typedefs.d.ts +0 -0
- package/dist-extensions/src/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
- package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
- package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
- package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
- package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
- package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
- package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/animate.d.ts +0 -0
- package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/easing.d.ts +0 -0
- package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/index.d.ts +0 -0
- package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
- package/dist-extensions/src/util/animation/types.d.ts +0 -0
- package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
- package/dist-extensions/src/util/applyMixins.d.ts +0 -0
- package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
- package/dist-extensions/src/util/dom_event.d.ts +0 -0
- package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
- package/dist-extensions/src/util/dom_misc.d.ts +0 -0
- package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
- package/dist-extensions/src/util/index.d.ts +0 -0
- package/dist-extensions/src/util/index.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
- package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
- package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
- package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/console.d.ts +0 -0
- package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
- package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
- package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
- package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
- package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
- package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
- package/dist-extensions/src/util/internals/uid.d.ts +0 -0
- package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
- package/dist-extensions/src/util/lang_string.d.ts +0 -0
- package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
- package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
- package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/cornerRadius.d.ts +70 -0
- package/dist-extensions/src/util/misc/cornerRadius.d.ts.map +1 -0
- package/dist-extensions/src/util/misc/cos.d.ts +0 -0
- package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/dom.d.ts +0 -0
- package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
- package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
- package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
- package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
- package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
- package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
- package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
- package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/pick.d.ts +0 -0
- package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
- package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
- package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
- package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
- package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
- package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
- package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/sin.d.ts +0 -0
- package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
- package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
- package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
- package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
- package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
- package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
- package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
- package/dist-extensions/src/util/path/index.d.ts +0 -0
- package/dist-extensions/src/util/path/index.d.ts.map +0 -0
- package/dist-extensions/src/util/path/regex.d.ts +0 -0
- package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
- package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
- package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
- package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
- package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
- package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
- package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
- package/docs/fabric-konva-gap-analysis.md +274 -0
- package/docs/konva-text-behavior-spec.md +265 -0
- package/docs/text-engine-design.md +698 -0
- package/eslint.config.mjs +0 -0
- package/examples/overlay-edit.html +416 -416
- package/extensions/README.MD +0 -0
- package/extensions/aligning_guidelines/README.MD +0 -0
- package/extensions/aligning_guidelines/constant.ts +0 -0
- package/extensions/aligning_guidelines/index.ts +0 -0
- package/extensions/aligning_guidelines/typedefs.ts +0 -0
- package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
- package/extensions/aligning_guidelines/util/basic.ts +0 -0
- package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
- package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
- package/extensions/aligning_guidelines/util/draw.ts +0 -0
- package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
- package/extensions/data_updaters/README.md +0 -0
- package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
- package/extensions/data_updaters/gradient/index.spec.ts +0 -0
- package/extensions/data_updaters/gradient/index.ts +0 -0
- package/extensions/data_updaters/origins/README.md +0 -0
- package/extensions/data_updaters/origins/index.spec.ts +0 -0
- package/extensions/data_updaters/origins/index.ts +0 -0
- package/extensions/index.ts +0 -0
- package/fabric-test-editor.html +964 -507
- package/fabric.ts +0 -0
- package/index.node.ts +0 -0
- package/index.ts +0 -0
- package/lib/aligning_guidelines.js +0 -0
- package/lib/centering_guidelines.js +0 -0
- package/lib/event.js +0 -0
- package/package.json +164 -164
- package/playwright.config.ts +0 -0
- package/playwright.setup.ts +0 -0
- package/publish-next.js +0 -0
- package/publish.js +0 -0
- package/rollup.config.mjs +0 -0
- package/scripts/bench-text.js +591 -591
- package/scripts/build.mjs +0 -0
- package/scripts/buildLock.mjs +0 -0
- package/scripts/buildReporter.mjs +0 -0
- package/scripts/buildStats.mjs +0 -0
- package/scripts/dirname.mjs +0 -0
- package/scripts/git.mjs +0 -0
- package/scripts/index.mjs +0 -0
- package/scripts/sandbox.mjs +0 -0
- package/src/ClassRegistry.spec.ts +0 -0
- package/src/ClassRegistry.ts +0 -0
- package/src/Collection.spec.ts +0 -0
- package/src/Collection.ts +0 -0
- package/src/CommonMethods.ts +0 -0
- package/src/EventTypeDefs.ts +0 -0
- package/src/Intersection.spec.ts +0 -0
- package/src/Intersection.ts +0 -0
- package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
- package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
- package/src/LayoutManager/LayoutManager.spec.ts +0 -0
- package/src/LayoutManager/LayoutManager.ts +0 -0
- package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
- package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
- package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
- package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
- package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
- package/src/LayoutManager/README.md +0 -0
- package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
- package/src/LayoutManager/constants.ts +0 -0
- package/src/LayoutManager/index.ts +0 -0
- package/src/LayoutManager/types.ts +0 -0
- package/src/Observable.spec.ts +0 -0
- package/src/Observable.ts +0 -0
- package/src/Pattern/Pattern.spec.ts +0 -0
- package/src/Pattern/Pattern.ts +0 -0
- package/src/Pattern/index.ts +0 -0
- package/src/Pattern/types.ts +0 -0
- package/src/Point.spec.ts +0 -0
- package/src/Point.ts +0 -0
- package/src/Shadow.spec.ts +0 -0
- package/src/Shadow.ts +0 -0
- package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
- package/src/brushes/BaseBrush.spec.ts +0 -0
- package/src/brushes/BaseBrush.ts +0 -0
- package/src/brushes/CircleBrush.test.ts +0 -0
- package/src/brushes/CircleBrush.ts +0 -0
- package/src/brushes/PatternBrush.ts +0 -0
- package/src/brushes/PencilBrush.spec.ts +0 -0
- package/src/brushes/PencilBrush.ts +0 -0
- package/src/brushes/SprayBrush.ts +0 -0
- package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
- package/src/brushes/typedefs.ts +0 -0
- package/src/cache.spec.ts +0 -0
- package/src/cache.ts +0 -0
- package/src/canvas/Canvas-dispose.spec.ts +0 -0
- package/src/canvas/Canvas-events.spec.ts +0 -0
- package/src/canvas/Canvas.spec.ts +0 -0
- package/src/canvas/Canvas.ts +0 -0
- package/src/canvas/CanvasOptions.ts +0 -0
- package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
- package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
- package/src/canvas/DOMManagers/util.spec.ts +0 -0
- package/src/canvas/DOMManagers/util.ts +0 -0
- package/src/canvas/SelectableCanvas.spec.ts +0 -0
- package/src/canvas/SelectableCanvas.ts +0 -0
- package/src/canvas/StaticCanvas.spec.ts +0 -0
- package/src/canvas/StaticCanvas.ts +0 -0
- package/src/canvas/StaticCanvasOptions.ts +0 -0
- package/src/canvas/TextEditingManager.ts +0 -0
- package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
- package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
- package/src/canvas/__tests__/eventData.test.ts +0 -0
- package/src/canvas/canvas_gestures.mixin.ts +0 -0
- package/src/color/Color.ts +0 -0
- package/src/color/color.test.ts +0 -0
- package/src/color/color_map.ts +0 -0
- package/src/color/constants.ts +0 -0
- package/src/color/typedefs.ts +0 -0
- package/src/color/util.ts +0 -0
- package/src/config.ts +0 -0
- package/src/constants.ts +0 -0
- package/src/controls/Control-cursor.spec.ts +0 -0
- package/src/controls/Control-handlers.spec.ts +0 -0
- package/src/controls/Control.spec.ts +0 -0
- package/src/controls/Control.ts +0 -0
- package/src/controls/changeHeight.ts +0 -0
- package/src/controls/changeWidth.test.ts +0 -0
- package/src/controls/changeWidth.ts +0 -0
- package/src/controls/commonControls.ts +0 -0
- package/src/controls/controlRendering.ts +0 -0
- package/src/controls/drag.ts +0 -0
- package/src/controls/fireEvent.ts +0 -0
- package/src/controls/index.ts +0 -0
- package/src/controls/pathControl.spec.ts +0 -0
- package/src/controls/pathControl.ts +0 -0
- package/src/controls/polyControl.spec.ts +0 -0
- package/src/controls/polyControl.ts +0 -0
- package/src/controls/rotate.ts +0 -0
- package/src/controls/scale.test.ts +0 -0
- package/src/controls/scale.ts +0 -0
- package/src/controls/scaleSkew.ts +0 -0
- package/src/controls/skew.ts +0 -0
- package/src/controls/util.ts +0 -0
- package/src/controls/wrapWithFireEvent.ts +0 -0
- package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
- package/src/controls/wrapWithFixedAnchor.ts +0 -0
- package/src/env/browser.ts +0 -0
- package/src/env/env.spec.ts +0 -0
- package/src/env/index.ts +0 -0
- package/src/env/node.ts +0 -0
- package/src/env/types.ts +0 -0
- package/src/filters/BaseFilter.spec.ts +0 -0
- package/src/filters/BaseFilter.ts +0 -0
- package/src/filters/BlendColor.ts +0 -0
- package/src/filters/BlendImage.ts +0 -0
- package/src/filters/Blur.ts +0 -0
- package/src/filters/Boilerplate.ts +0 -0
- package/src/filters/Brightness.ts +0 -0
- package/src/filters/Canvas2dFilterBackend.ts +0 -0
- package/src/filters/ColorMatrix.spec.ts +0 -0
- package/src/filters/ColorMatrix.ts +0 -0
- package/src/filters/ColorMatrixFilters.ts +0 -0
- package/src/filters/Composed.ts +0 -0
- package/src/filters/Contrast.ts +0 -0
- package/src/filters/Convolute.ts +0 -0
- package/src/filters/FilterBackend.ts +0 -0
- package/src/filters/GLProbes/GLProbe.ts +0 -0
- package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
- package/src/filters/GLProbes/WebGLProbe.ts +0 -0
- package/src/filters/Gamma.ts +0 -0
- package/src/filters/Grayscale.ts +0 -0
- package/src/filters/HueRotation.ts +0 -0
- package/src/filters/Invert.ts +0 -0
- package/src/filters/Noise.ts +0 -0
- package/src/filters/Pixelate.ts +0 -0
- package/src/filters/RemoveColor.ts +0 -0
- package/src/filters/Resize.ts +0 -0
- package/src/filters/Saturation.ts +0 -0
- package/src/filters/Vibrance.ts +0 -0
- package/src/filters/WebGLFilterBackend.spec.ts +0 -0
- package/src/filters/WebGLFilterBackend.ts +0 -0
- package/src/filters/filters.ts +0 -0
- package/src/filters/index.ts +0 -0
- package/src/filters/shaders/baseFilter.ts +0 -0
- package/src/filters/shaders/blendColor.ts +0 -0
- package/src/filters/shaders/blendImage.ts +0 -0
- package/src/filters/shaders/blur.ts +0 -0
- package/src/filters/shaders/brightness.ts +0 -0
- package/src/filters/shaders/colorMatrix.ts +0 -0
- package/src/filters/shaders/constrast.ts +0 -0
- package/src/filters/shaders/convolute.ts +0 -0
- package/src/filters/shaders/gamma.ts +0 -0
- package/src/filters/shaders/grayscale.ts +0 -0
- package/src/filters/shaders/invert.ts +0 -0
- package/src/filters/shaders/noise.ts +0 -0
- package/src/filters/shaders/pixelate.ts +0 -0
- package/src/filters/shaders/removeColor.ts +0 -0
- package/src/filters/shaders/saturation.ts +0 -0
- package/src/filters/shaders/vibrance.ts +0 -0
- package/src/filters/typedefs.ts +0 -0
- package/src/filters/utils.ts +0 -0
- package/src/gradient/Gradient.spec.ts +0 -0
- package/src/gradient/Gradient.ts +0 -0
- package/src/gradient/constants.ts +0 -0
- package/src/gradient/index.ts +0 -0
- package/src/gradient/parser/misc.ts +0 -0
- package/src/gradient/parser/parseColorStops.ts +0 -0
- package/src/gradient/parser/parseCoords.ts +0 -0
- package/src/gradient/typedefs.ts +0 -0
- package/src/mixins/eraser_brush.mixin.ts +0 -0
- package/src/parkinglot/canvas_animation.mixin.ts +0 -0
- package/src/parkinglot/straighten.ts +0 -0
- package/src/parser/applyViewboxTransform.spec.ts +0 -0
- package/src/parser/applyViewboxTransform.ts +0 -0
- package/src/parser/attributes.ts +0 -0
- package/src/parser/constants.spec.ts +0 -0
- package/src/parser/constants.ts +0 -0
- package/src/parser/doesSomeParentMatch.ts +0 -0
- package/src/parser/elementMatchesRule.ts +0 -0
- package/src/parser/elements_parser.ts +0 -0
- package/src/parser/getCSSRules.spec.ts +0 -0
- package/src/parser/getCSSRules.ts +0 -0
- package/src/parser/getGlobalStylesForElement.ts +0 -0
- package/src/parser/getGradientDefs.ts +0 -0
- package/src/parser/getMultipleNodes.ts +0 -0
- package/src/parser/getSvgRegex.ts +0 -0
- package/src/parser/getTagName.ts +0 -0
- package/src/parser/hasInvalidAncestor.ts +0 -0
- package/src/parser/loadSVGFromString.test.ts +0 -0
- package/src/parser/loadSVGFromString.ts +0 -0
- package/src/parser/loadSVGFromURL.ts +0 -0
- package/src/parser/normalizeAttr.ts +0 -0
- package/src/parser/normalizeValue.ts +0 -0
- package/src/parser/parseAttributes.ts +0 -0
- package/src/parser/parseFontDeclaration.ts +0 -0
- package/src/parser/parsePointsAttribute.ts +0 -0
- package/src/parser/parseSVGDocument.ts +0 -0
- package/src/parser/parseStyleAttribute.ts +0 -0
- package/src/parser/parseStyleObject.ts +0 -0
- package/src/parser/parseStyleString.ts +0 -0
- package/src/parser/parseTransformAttribute.ts +0 -0
- package/src/parser/parseUseDirectives.test.ts +0 -0
- package/src/parser/parseUseDirectives.ts +0 -0
- package/src/parser/parser.spec.ts +0 -0
- package/src/parser/percent.ts +0 -0
- package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
- package/src/parser/selectorMatches.ts +0 -0
- package/src/parser/setStrokeFillOpacity.ts +0 -0
- package/src/parser/typedefs.ts +0 -0
- package/src/shapes/ActiveSelection.spec.ts +0 -0
- package/src/shapes/ActiveSelection.ts +0 -0
- package/src/shapes/Circle.spec.ts +0 -0
- package/src/shapes/Circle.ts +0 -0
- package/src/shapes/Ellipse.spec.ts +0 -0
- package/src/shapes/Ellipse.ts +0 -0
- package/src/shapes/Group.spec.ts +0 -0
- package/src/shapes/Group.ts +0 -0
- package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
- package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
- package/src/shapes/IText/IText.test.ts +0 -0
- package/src/shapes/IText/IText.ts +846 -846
- package/src/shapes/IText/ITextBehavior.test.ts +0 -0
- package/src/shapes/IText/ITextBehavior.ts +1176 -1176
- package/src/shapes/IText/ITextClickBehavior.ts +254 -254
- package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
- package/src/shapes/IText/ITextKeyBehavior.ts +0 -0
- package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
- package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
- package/src/shapes/IText/constants.ts +0 -0
- package/src/shapes/Image-filters.spec.ts +0 -0
- package/src/shapes/Image.spec.ts +0 -0
- package/src/shapes/Image.ts +0 -0
- package/src/shapes/Line.spec.ts +0 -0
- package/src/shapes/Line.ts +0 -0
- package/src/shapes/Object/FabricObject.spec.ts +0 -0
- package/src/shapes/Object/FabricObject.ts +0 -0
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
- package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
- package/src/shapes/Object/InteractiveObject.ts +0 -0
- package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
- package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
- package/src/shapes/Object/Object.spec.ts +0 -0
- package/src/shapes/Object/Object.ts +0 -0
- package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
- package/src/shapes/Object/ObjectGeometry.ts +0 -0
- package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
- package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
- package/src/shapes/Object/StackedObject.spec.ts +0 -0
- package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
- package/src/shapes/Object/defaultValues.ts +0 -0
- package/src/shapes/Object/types/BaseProps.ts +0 -0
- package/src/shapes/Object/types/BorderProps.ts +0 -0
- package/src/shapes/Object/types/ControlProps.ts +0 -0
- package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
- package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
- package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
- package/src/shapes/Object/types/ObjectProps.ts +0 -0
- package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
- package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
- package/src/shapes/Object/types/index.ts +0 -0
- package/src/shapes/Path.spec.ts +0 -0
- package/src/shapes/Path.ts +0 -0
- package/src/shapes/Polygon.spec.ts +0 -0
- package/src/shapes/Polygon.ts +0 -0
- package/src/shapes/Polyline.spec.ts +0 -0
- package/src/shapes/Polyline.ts +70 -29
- package/src/shapes/Rect.spec.ts +0 -0
- package/src/shapes/Rect.ts +0 -0
- package/src/shapes/Text/StyledText.spec.ts +0 -0
- package/src/shapes/Text/StyledText.ts +0 -0
- package/src/shapes/Text/Text.spec.ts +0 -0
- package/src/shapes/Text/Text.ts +2226 -2226
- package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
- package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
- package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
- package/src/shapes/Text/constants.ts +134 -134
- package/src/shapes/Textbox.spec.ts +0 -0
- package/src/shapes/Textbox.ts +788 -788
- package/src/shapes/Triangle.spec.ts +76 -0
- package/src/shapes/Triangle.ts +85 -15
- package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
- package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
- package/src/text/browserLines.ts +233 -233
- package/src/text/ellipsis.ts +516 -516
- package/src/text/hitTest.ts +623 -623
- package/src/text/layout.ts +586 -586
- package/src/text/measure.ts +475 -475
- package/src/text/overlayEditor.ts +1035 -1035
- package/src/text/unicode.ts +454 -454
- package/src/typedefs.ts +0 -0
- package/src/util/__snapshots__/index.spec.ts.snap +0 -0
- package/src/util/animation/AnimationBase.ts +0 -0
- package/src/util/animation/AnimationFrameProvider.ts +0 -0
- package/src/util/animation/AnimationRegistry.ts +0 -0
- package/src/util/animation/ArrayAnimation.ts +0 -0
- package/src/util/animation/ColorAnimation.ts +0 -0
- package/src/util/animation/ValueAnimation.ts +0 -0
- package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
- package/src/util/animation/animate.ts +0 -0
- package/src/util/animation/animations.spec.ts +0 -0
- package/src/util/animation/easing.ts +0 -0
- package/src/util/animation/index.ts +0 -0
- package/src/util/animation/types.ts +0 -0
- package/src/util/applyMixins.ts +0 -0
- package/src/util/dom_event.spec.ts +0 -0
- package/src/util/dom_event.ts +0 -0
- package/src/util/dom_misc.ts +0 -0
- package/src/util/index.spec.ts +0 -0
- package/src/util/index.ts +0 -0
- package/src/util/internals/applyCanvasTransform.ts +0 -0
- package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
- package/src/util/internals/cleanupSvgAttribute.ts +0 -0
- package/src/util/internals/cloneStyles.spec.ts +0 -0
- package/src/util/internals/cloneStyles.ts +0 -0
- package/src/util/internals/console.ts +0 -0
- package/src/util/internals/dom_style.spec.ts +0 -0
- package/src/util/internals/dom_style.ts +0 -0
- package/src/util/internals/findRight.ts +0 -0
- package/src/util/internals/getRandomInt.test.ts +0 -0
- package/src/util/internals/getRandomInt.ts +0 -0
- package/src/util/internals/ifNaN.ts +0 -0
- package/src/util/internals/removeFromArray.spec.ts +0 -0
- package/src/util/internals/removeFromArray.ts +0 -0
- package/src/util/internals/uid.ts +0 -0
- package/src/util/lang_string.spec.ts +0 -0
- package/src/util/lang_string.ts +0 -0
- package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
- package/src/util/misc/boundingBoxFromPoints.ts +0 -0
- package/src/util/misc/capValue.spec.ts +0 -0
- package/src/util/misc/capValue.ts +0 -0
- package/src/util/misc/cornerRadius.spec.ts +141 -0
- package/src/util/misc/cornerRadius.ts +269 -0
- package/src/util/misc/cos.spec.ts +0 -0
- package/src/util/misc/cos.ts +0 -0
- package/src/util/misc/dom.spec.ts +0 -0
- package/src/util/misc/dom.ts +0 -0
- package/src/util/misc/findScaleTo.spec.ts +0 -0
- package/src/util/misc/findScaleTo.ts +0 -0
- package/src/util/misc/groupSVGElements.spec.ts +0 -0
- package/src/util/misc/groupSVGElements.ts +0 -0
- package/src/util/misc/isTransparent.ts +0 -0
- package/src/util/misc/matrix.spec.ts +0 -0
- package/src/util/misc/matrix.ts +0 -0
- package/src/util/misc/mergeClipPaths.spec.ts +0 -0
- package/src/util/misc/mergeClipPaths.ts +0 -0
- package/src/util/misc/objectEnlive.spec.ts +0 -0
- package/src/util/misc/objectEnlive.ts +0 -0
- package/src/util/misc/objectTransforms.spec.ts +0 -0
- package/src/util/misc/objectTransforms.ts +0 -0
- package/src/util/misc/pick.spec.ts +0 -0
- package/src/util/misc/pick.ts +0 -0
- package/src/util/misc/planeChange.spec.ts +0 -0
- package/src/util/misc/planeChange.ts +0 -0
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
- package/src/util/misc/projectStroke/index.ts +0 -0
- package/src/util/misc/projectStroke/types.ts +0 -0
- package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
- package/src/util/misc/radiansDegreesConversion.ts +0 -0
- package/src/util/misc/resolveOrigin.ts +0 -0
- package/src/util/misc/sin.ts +0 -0
- package/src/util/misc/svgExport.ts +0 -0
- package/src/util/misc/svgParsing.spec.ts +0 -0
- package/src/util/misc/svgParsing.ts +0 -0
- package/src/util/misc/textStyles.ts +0 -0
- package/src/util/misc/toFixed.spec.ts +0 -0
- package/src/util/misc/toFixed.ts +0 -0
- package/src/util/misc/vectors.spec.ts +0 -0
- package/src/util/misc/vectors.ts +0 -0
- package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
- package/src/util/path/index.spec.ts +0 -0
- package/src/util/path/index.ts +0 -0
- package/src/util/path/regex.ts +0 -0
- package/src/util/path/typechecks.ts +0 -0
- package/src/util/path/typedefs.ts +0 -0
- package/src/util/transform_matrix_removal.ts +0 -0
- package/src/util/typeAssertions.spec.ts +0 -0
- package/src/util/typeAssertions.ts +0 -0
- package/tsconfig-extensions.json +0 -0
- package/tsconfig.json +0 -0
- package/tsconfig.spec.json +0 -0
- package/typedoc.config.json +0 -0
- package/vitest.config.ts +0 -0
- package/vitest.d.ts +0 -0
- package/vitest.env.d.ts +0 -0
- package/vitest.extend.ts +0 -0
- package/vitest.setup.ts +0 -0
- package/dist/src/controls/changeHeight.min.mjs +0 -2
- package/dist/src/controls/changeHeight.min.mjs.map +0 -1
- package/dist/src/controls/changeHeight.mjs +0 -36
- package/dist/src/controls/changeHeight.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.mjs","sources":["../../../../src/shapes/Text/Text.ts"],"sourcesContent":["import { cache } from '../../cache';\nimport { DEFAULT_SVG_FONT_SIZE, FILL, STROKE } from '../../constants';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type {\n CompleteTextStyleDeclaration,\n TextStyle,\n TextStyleDeclaration,\n} from './StyledText';\nimport { StyledText } from './StyledText';\nimport { SHARED_ATTRIBUTES } from '../../parser/attributes';\nimport { parseAttributes } from '../../parser/parseAttributes';\nimport type {\n Abortable,\n TCacheCanvasDimensions,\n TClassProperties,\n TFiller,\n TOptions,\n} from '../../typedefs';\nimport { classRegistry } from '../../ClassRegistry';\nimport { graphemeSplit } from '../../util/lang_string';\nimport { createCanvasElementFor } from '../../util/misc/dom';\nimport { layoutText, type LayoutResult, type TextLayoutOptions } from '../../text/layout';\nimport { measureGrapheme, measureGraphemeWithKerning } from '../../text/measure';\nimport { applyEllipsis } from '../../text/ellipsis';\nimport { segmentGraphemes } from '../../text/unicode';\nimport type { TextStyleArray } from '../../util/misc/textStyles';\nimport {\n hasStyleChanged,\n stylesFromArray,\n stylesToArray,\n} from '../../util/misc/textStyles';\nimport { getPathSegmentsInfo, getPointOnPath } from '../../util/path';\nimport { cacheProperties } from '../Object/FabricObject';\nimport type { Path } from '../Path';\nimport { TextSVGExportMixin } from './TextSVGExportMixin';\nimport { applyMixins } from '../../util/applyMixins';\nimport type { FabricObjectProps, SerializedObjectProps } from '../Object/types';\nimport type { StylePropertiesType } from './constants';\nimport {\n additionalProps,\n textDefaultValues,\n textLayoutProperties,\n JUSTIFY,\n JUSTIFY_CENTER,\n JUSTIFY_LEFT,\n JUSTIFY_RIGHT,\n TEXT_DECORATION_THICKNESS,\n} from './constants';\nimport { CENTER, LEFT, RIGHT, TOP, BOTTOM } from '../../constants';\nimport { isFiller } from '../../util/typeAssertions';\nimport type { Gradient } from '../../gradient/Gradient';\nimport type { Pattern } from '../../Pattern';\nimport type { CSSRules } from '../../parser/typedefs';\nimport { getBrowserLines, clearBrowserLines } from '../../text/browserLines';\nimport type { BrowserLine } from '../../text/browserLines';\n\nlet measuringContext: CanvasRenderingContext2D | null;\n\n/**\n * Return a context for measurement of text string.\n * if created it gets stored for reuse\n */\nfunction getMeasuringContext() {\n if (!measuringContext) {\n const canvas = createCanvasElementFor({\n width: 0,\n height: 0,\n });\n measuringContext = canvas.getContext('2d');\n }\n return measuringContext;\n}\n\nexport type TPathSide = 'left' | 'right';\n\nexport type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';\n\nexport type TextLinesInfo = {\n lines: string[];\n graphemeLines: string[][];\n graphemeText: string[];\n _unwrappedLines: string[][];\n};\n\n/**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * Override to customize measuring\n */\nexport type GraphemeBBox = {\n width: number;\n height: number;\n kernedWidth: number;\n left: number;\n deltaY: number;\n renderLeft?: number;\n renderTop?: number;\n angle?: number;\n};\n\n// @TODO this is not complete\ninterface UniqueTextProps {\n charSpacing: number;\n lineHeight: number;\n fontSize: number;\n fontWeight: string | number;\n fontFamily: string;\n fontStyle: string;\n pathSide: TPathSide;\n pathAlign: TPathAlign;\n underline: boolean;\n overline: boolean;\n linethrough: boolean;\n textAlign: string;\n direction: CanvasDirection;\n path?: Path;\n textDecorationThickness: number;\n wrap: 'word' | 'char' | 'none';\n ellipsis: boolean | string;\n letterSpacing: number;\n enableAdvancedLayout: boolean;\n verticalAlign: 'top' | 'middle' | 'bottom';\n useOverlayEditing: boolean;\n}\n\nexport interface SerializedTextProps\n extends SerializedObjectProps,\n UniqueTextProps {\n styles: TextStyleArray | TextStyle;\n}\n\nexport interface TextProps extends FabricObjectProps, UniqueTextProps {\n styles: TextStyle;\n}\n\n/**\n * Text class\n * @see {@link http://fabricjs.com/fabric-intro-part-2#text}\n */\nexport class FabricText<\n Props extends TOptions<TextProps> = Partial<TextProps>,\n SProps extends SerializedTextProps = SerializedTextProps,\n EventSpec extends ObjectEvents = ObjectEvents,\n >\n extends StyledText<Props, SProps, EventSpec>\n implements UniqueTextProps\n{\n /**\n * Properties that requires a text layout recalculation when changed\n * @type string[]\n * @protected\n */\n static textLayoutProperties: string[] = textLayoutProperties;\n\n /**\n * @private\n */\n declare _reNewline: RegExp;\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reSpacesAndTabs: RegExp;\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reSpaceAndTab: RegExp;\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reWords: RegExp;\n\n declare text: string;\n\n /**\n * Font size (in pixels)\n * @type Number\n */\n declare fontSize: number;\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n */\n declare fontWeight: string | number;\n\n /**\n * Font family\n * @type String\n */\n declare fontFamily: string;\n\n /**\n * Text decoration underline.\n * @type Boolean\n */\n declare underline: boolean;\n\n /**\n * Text decoration overline.\n * @type Boolean\n */\n declare overline: boolean;\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n */\n declare linethrough: boolean;\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n */\n declare textAlign: string;\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n */\n declare fontStyle: string;\n\n /**\n * Line height\n * @type Number\n */\n declare lineHeight: number;\n\n /**\n * Superscript schema object (minimum overlap)\n */\n declare superscript: {\n /**\n * fontSize factor\n * @default 0.6\n */\n size: number;\n /**\n * baseline-shift factor (upwards)\n * @default -0.35\n */\n baseline: number;\n };\n\n /**\n * Subscript schema object (minimum overlap)\n */\n declare subscript: {\n /**\n * fontSize factor\n * @default 0.6\n */\n size: number;\n /**\n * baseline-shift factor (downwards)\n * @default 0.11\n */\n baseline: number;\n };\n\n /**\n * Background color of text lines\n * @type String\n */\n declare textBackgroundColor: string;\n\n declare styles: TextStyle;\n\n /**\n * Path that the text should follow.\n * since 4.6.0 the path will be drawn automatically.\n * if you want to make the path visible, give it a stroke and strokeWidth or fill value\n * if you want it to be hidden, assign visible = false to the path.\n * This feature is in BETA, and SVG import/export is not yet supported.\n * @type Path\n * @example\n * const textPath = new Text('Text on a path', {\n * top: 150,\n * left: 150,\n * textAlign: 'center',\n * charSpacing: -50,\n * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {\n * strokeWidth: 1,\n * visible: false\n * }),\n * pathSide: 'left',\n * pathStartOffset: 0\n * });\n */\n declare path?: Path;\n\n /**\n * Text wrapping mode\n * @type string\n * @default 'word'\n */\n declare wrap: 'word' | 'char' | 'none';\n\n /**\n * Ellipsis truncation\n * @type boolean | string\n * @default false\n */\n declare ellipsis: boolean | string;\n\n /**\n * Letter spacing in pixels (Konva-style)\n * @type number\n * @default 0\n */\n declare letterSpacing: number;\n\n /**\n * Enable advanced text layout engine\n * @type boolean\n * @default false\n */\n declare enableAdvancedLayout: boolean;\n\n /**\n * Vertical text alignment\n * @type string\n * @default 'top'\n */\n declare verticalAlign: 'top' | 'middle' | 'bottom';\n\n /**\n * Use overlay editor for inline text editing instead of hidden textarea.\n * @default false\n */\n declare useOverlayEditing: boolean;\n\n /**\n * The text decoration tickness for underline, overline and strikethrough\n * The tickness is expressed in thousandths of fontSize ( em ).\n * The original value was 1/15 that translates to 66.6667 thousandths.\n * The choice of unit of measure is to align with charSpacing.\n * You can slim the tickness without issues, while large underline or overline may end up\n * outside the bounding box of the text. In order to fix that a bigger refactor of the code\n * is needed and is out of scope for now. If you need such large overline on the first line\n * of text or large underline on the last line of text, consider disabling caching as a\n * workaround\n * @default 66.667\n */\n declare textDecorationThickness: number;\n\n /**\n * Offset amount for text path starting position\n * Only used when text has a path\n */\n declare pathStartOffset: number;\n\n /**\n * Which side of the path the text should be drawn on.\n * Only used when text has a path\n * @type {TPathSide} 'left|right'\n */\n declare pathSide: TPathSide;\n\n /**\n * How text is aligned to the path. This property determines\n * the perpendicular position of each character relative to the path.\n * (one of \"baseline\", \"center\", \"ascender\", \"descender\")\n * This feature is in BETA, and its behavior may change\n * @type TPathAlign\n */\n declare pathAlign: TPathAlign;\n\n /**\n * @private\n */\n declare _fontSizeFraction: number;\n\n /**\n * @private\n */\n declare offsets: { underline: number; linethrough: number; overline: number };\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n */\n declare _fontSizeMult: number;\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n */\n declare charSpacing: number;\n\n /**\n * Baseline shift, styles only, keep at 0 for the main text object\n * @type {Number}\n */\n declare deltaY: number;\n\n /**\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\n * determine the direction of the text.\n * This has to be set manually together with textAlign and originX for proper\n * experience.\n * some interesting link for the future\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\n * @since 4.5.0\n * @type {CanvasDirection} 'ltr|rtl'\n */\n declare direction: CanvasDirection;\n\n /**\n * contains characters bounding boxes\n * This variable is considered to be protected.\n * But for how mixins are implemented right now, we can't leave it private\n * @protected\n */\n __charBounds: GraphemeBBox[][] = [];\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @readonly\n * @private\n */\n declare CACHE_FONT_SIZE: number;\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n */\n declare MIN_TEXT_WIDTH: number;\n\n /**\n * contains the the text of the object, divided in lines as they are displayed\n * on screen. Wrapping will divide the text independently of line breaks\n * @type {string[]}\n */\n declare textLines: string[];\n\n /**\n * same as textlines, but each line is an array of graphemes as split by splitByGrapheme\n * @type {string[]}\n */\n declare _textLines: string[][];\n\n declare _unwrappedTextLines: string[][];\n declare _text: string[];\n declare cursorWidth: number;\n declare __lineHeights: number[];\n declare __lineWidths: number[];\n declare initialized?: true;\n\n static cacheProperties = [...cacheProperties, ...additionalProps];\n\n static ownDefaults = textDefaultValues;\n\n static type = 'Text';\n\n static getDefaults(): Record<string, any> {\n return { ...super.getDefaults(), ...FabricText.ownDefaults };\n }\n\n constructor(text: string, options?: Props) {\n super();\n Object.assign(this, FabricText.ownDefaults);\n this.setOptions(options);\n if (!this.styles) {\n this.styles = {};\n }\n this.text = text;\n this.initialized = true;\n if (this.path) {\n this.setPathInfo();\n }\n this.initDimensions();\n this.setCoords();\n }\n\n /**\n * If text has a path, it will add the extra information needed\n * for path and text calculations\n */\n setPathInfo() {\n const path = this.path;\n if (path) {\n path.segmentsInfo = getPathSegmentsInfo(path.path);\n }\n }\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n * Uses browser lines when available for pixel-perfect consistency.\n */\n _splitText(): TextLinesInfo {\n // Check if we have valid browser lines and should use them\n const browserLines = getBrowserLines(this);\n if (browserLines && this.useOverlayEditing) {\n return this._splitTextFromBrowserLines(browserLines);\n }\n \n const newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n }\n\n /**\n * Create TextLinesInfo from browser-extracted lines\n * @private\n */\n _splitTextFromBrowserLines(browserLines: BrowserLine[]): TextLinesInfo {\n const lines: string[] = [];\n const graphemeLines: string[][] = [];\n const unwrappedLines: string[][] = [];\n let graphemeText: string[] = [];\n\n for (const browserLine of browserLines) {\n lines.push(browserLine.text);\n const lineGraphemes = this.graphemeSplit(browserLine.text);\n graphemeLines.push(lineGraphemes);\n unwrappedLines.push(lineGraphemes);\n graphemeText = graphemeText.concat(lineGraphemes);\n \n // Add newline separator between lines (except for the last line)\n if (browserLine !== browserLines[browserLines.length - 1]) {\n graphemeText.push('\\n');\n }\n }\n\n const result: TextLinesInfo = {\n lines,\n graphemeLines,\n graphemeText,\n _unwrappedLines: unwrappedLines,\n };\n\n // Update instance properties\n this.textLines = result.lines;\n this._textLines = result.graphemeLines;\n this._unwrappedTextLines = result._unwrappedLines;\n this._text = result.graphemeText;\n\n return result;\n }\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions(): void {\n // Use advanced layout if enabled\n if (this.enableAdvancedLayout && !this.path) {\n return this.initDimensionsAdvanced();\n }\n \n this._splitText();\n this._clearCache();\n this.dirty = true;\n if (this.path) {\n this.width = this.path.width;\n this.height = this.path.height;\n } else {\n this.width =\n this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n this.height = this.calcTextHeight();\n }\n if (this.textAlign.includes(JUSTIFY)) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n }\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces() {\n let diffSpace,\n currentLineWidth,\n numberOfSpaces,\n accumulatedSpace,\n line,\n charBound,\n spaces;\n const isRtl = this.direction === 'rtl';\n \n for (let i = 0, len = this._textLines.length; i < len; i++) {\n if (\n this.textAlign !== JUSTIFY &&\n (i === len - 1 || this.isEndOfWrapping(i))\n ) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (\n currentLineWidth < this.width &&\n (spaces = this.textLines[i].match(this._reSpacesAndTabs))\n ) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n \n if (isRtl) {\n // For RTL text, we need to redistribute spaces while maintaining correct visual order\n // The key insight is that RTL text is stored in logical order but displayed in visual order\n // We need to adjust bounds to account for the visual positioning\n \n // First, collect all space positions\n const spaceIndices = [];\n for (let j = 0; j < line.length; j++) {\n if (this._reSpaceAndTab.test(line[j])) {\n spaceIndices.push(j);\n }\n }\n \n // Calculate total expansion\n const totalExpansion = diffSpace * numberOfSpaces;\n \n // For RTL, we need to work backwards through the visual positions\n // but still update logical positions correctly\n let spaceCount = 0;\n for (let j = 0; j <= line.length; j++) {\n charBound = this.__charBounds[i][j];\n if (charBound) {\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n spaceCount++;\n }\n \n // For RTL, shift all characters to the right by the total expansion\n // minus the expansion that comes after this character\n const remainingSpaces = numberOfSpaces - spaceCount;\n const shiftAmount = remainingSpaces * diffSpace;\n charBound.left += shiftAmount;\n }\n }\n } else {\n // LTR processing (original logic)\n for (let j = 0; j <= line.length; j++) {\n charBound = this.__charBounds[i][j];\n if (charBound) {\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n } else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Advanced layout using new text engine (Konva-compatible)\n * @private\n */\n _layoutTextAdvanced(): LayoutResult {\n const options = this._getAdvancedLayoutOptions();\n return layoutText(options);\n }\n\n /**\n * Get advanced layout options from current text properties\n * @private\n */\n _getAdvancedLayoutOptions(): TextLayoutOptions {\n return {\n text: this.text,\n width: this.width,\n height: this.height,\n wrap: this.wrap || 'word',\n align: this._mapTextAlignToAlign(this.textAlign),\n ellipsis: this.ellipsis || false,\n fontSize: this.fontSize,\n lineHeight: this.lineHeight,\n letterSpacing: this.letterSpacing || 0,\n charSpacing: this.charSpacing,\n direction: this.direction === 'inherit' ? 'ltr' : this.direction,\n fontFamily: this.fontFamily,\n fontStyle: this.fontStyle,\n fontWeight: this.fontWeight,\n verticalAlign: this.verticalAlign || 'top',\n };\n }\n\n /**\n * Map Fabric textAlign to Konva align format\n * @private\n */\n _mapTextAlignToAlign(textAlign: string): 'left' | 'center' | 'right' | 'justify' {\n switch (textAlign) {\n case 'center':\n case CENTER:\n return 'center';\n case 'right':\n case RIGHT:\n return 'right';\n case 'justify':\n case JUSTIFY:\n case JUSTIFY_LEFT:\n case JUSTIFY_RIGHT:\n case JUSTIFY_CENTER:\n return 'justify';\n default:\n return 'left';\n }\n }\n\n /**\n * Enhanced initDimensions that uses advanced layout when enabled\n */\n initDimensionsAdvanced(): void {\n if (!this.enableAdvancedLayout) {\n return this.initDimensions();\n }\n\n const layout = this._layoutTextAdvanced();\n \n // Update dimensions from layout\n this.width = layout.totalWidth || this.MIN_TEXT_WIDTH;\n this.height = layout.totalHeight;\n \n // Convert layout to legacy format for compatibility\n this._convertLayoutToLegacyFormat(layout);\n \n this.dirty = true;\n }\n\n /**\n * Convert new layout format to legacy _textLines and __charBounds format\n * @private\n */\n _convertLayoutToLegacyFormat(layout: LayoutResult): void {\n this._textLines = layout.lines.map(line => line.graphemes);\n (this as any).textLines = layout.lines.map(line => line.text);\n \n // Convert bounds to legacy format\n this.__charBounds = layout.lines.map(line => \n line.bounds.map(bound => ({\n left: bound.left,\n top: bound.y,\n width: bound.width,\n height: bound.height,\n kernedWidth: bound.kernedWidth,\n deltaY: bound.deltaY || 0,\n }))\n );\n \n // Update grapheme info for compatibility\n if (layout.lines.length > 0) {\n (this as any)._unwrappedTextLines = layout.lines.map(line => line.graphemes);\n }\n }\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping(lineIndex: number): boolean {\n return lineIndex === this._textLines.length - 1;\n }\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * It return always 1 for text and Itext. Textbox has its own implementation\n * @return Number\n */\n missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1;\n missingNewlineOffset(_lineIndex: number): 1 {\n return 1;\n }\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor\n * @param {Number} selectionStart\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n */\n get2DCursorLocation(selectionStart: number, skipWrapping?: boolean) {\n const lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\n let i: number;\n for (i = 0; i < lines.length; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart,\n };\n }\n selectionStart -=\n lines[i].length + this.missingNewlineOffset(i, skipWrapping);\n }\n return {\n lineIndex: i - 1,\n charIndex:\n lines[i - 1].length < selectionStart\n ? lines[i - 1].length\n : selectionStart,\n };\n }\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString(): string {\n return `#<Text (${this.complexity()}): { \"text\": \"${\n this.text\n }\", \"fontFamily\": \"${this.fontFamily}\" }>`;\n }\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions(): TCacheCanvasDimensions {\n const dims = super._getCacheCanvasDimensions();\n const fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render(ctx: CanvasRenderingContext2D) {\n const path = this.path;\n path && !path.isNotVisible() && path._render(ctx);\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText(ctx: CanvasRenderingContext2D) {\n // Skip text rendering if in overlay editing mode\n if ((this as any).__overlayEditor) {\n return;\n }\n if (this.paintFirst === STROKE) {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n } else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n }\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles(\n ctx: CanvasRenderingContext2D,\n charStyle?: any,\n forMeasuring?: boolean,\n ) {\n ctx.textBaseline = 'alphabetic';\n if (this.path) {\n switch (this.pathAlign) {\n case CENTER:\n ctx.textBaseline = 'middle';\n break;\n case 'ascender':\n ctx.textBaseline = TOP;\n break;\n case 'descender':\n ctx.textBaseline = BOTTOM;\n break;\n }\n }\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n }\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of Text object\n */\n calcTextWidth(): number {\n let maxWidth = this.getLineWidth(0);\n\n for (let i = 1, len = this._textLines.length; i < len; i++) {\n const currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n }\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n line: string[],\n left: number,\n top: number,\n lineIndex: number,\n ) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n }\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground(ctx: CanvasRenderingContext2D) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n const originalFill = ctx.fillStyle,\n leftOffset = this._getLeftOffset();\n let lineTopOffset = this._getTopOffset();\n\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i);\n if (\n !this.textBackgroundColor &&\n !this.styleHas('textBackgroundColor', i)\n ) {\n lineTopOffset += heightOfLine;\n continue;\n }\n const jlen = this._textLines[i].length;\n const lineLeftOffset = this._getLineLeftOffset(i);\n let boxWidth = 0;\n let boxStart = 0;\n let drawStart;\n let currentColor;\n let lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (let j = 0; j < jlen; j++) {\n // at this point charbox are either standard or full with pathInfo if there is a path.\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (this.path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillStyle = currentColor;\n currentColor &&\n ctx.fillRect(\n -charBox.width / 2,\n (-heightOfLine / this.lineHeight) * (1 - this._fontSizeFraction),\n charBox.width,\n heightOfLine / this.lineHeight,\n );\n ctx.restore();\n } else if (currentColor !== lastColor) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = lastColor;\n lastColor &&\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight,\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor && !this.path) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight,\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n }\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} _char, char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar(\n _char: string,\n charStyle: CompleteTextStyleDeclaration,\n previousChar: string | undefined,\n prevCharStyle: CompleteTextStyleDeclaration | Record<string, never>,\n ) {\n const fontCache = cache.getFontCache(charStyle),\n fontDeclaration = this._getFontDeclaration(charStyle),\n couple = previousChar + _char,\n stylesAreEqual =\n previousChar &&\n fontDeclaration === this._getFontDeclaration(prevCharStyle),\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE;\n let width: number | undefined,\n coupleWidth: number | undefined,\n previousWidth: number | undefined,\n kernedWidth: number | undefined;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth!;\n }\n if (\n width === undefined ||\n previousWidth === undefined ||\n coupleWidth === undefined\n ) {\n const ctx = getMeasuringContext()!;\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n // safe to use the non-null since if undefined we defined it before.\n kernedWidth = coupleWidth - previousWidth!;\n }\n }\n return {\n width: width * fontMultiplier,\n kernedWidth: kernedWidth! * fontMultiplier,\n };\n }\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line index number\n * @param {Number} _char the character index number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar(line: number, _char: number): number {\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\n }\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n */\n measureLine(lineIndex: number) {\n const lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n }\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine(lineIndex: number) {\n let width = 0,\n prevGrapheme: string | undefined,\n graphemeInfo: GraphemeBBox | undefined;\n\n const reverse = this.pathSide === RIGHT,\n path = this.path,\n line = this._textLines[lineIndex],\n llength = line.length,\n lineBounds = new Array<GraphemeBBox>(llength);\n\n this.__charBounds[lineIndex] = lineBounds;\n for (let i = 0; i < llength; i++) {\n const grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[llength] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize,\n deltaY: 0,\n } as GraphemeBBox;\n if (path && path.segmentsInfo) {\n let positionInPath = 0;\n const totalPathLength =\n path.segmentsInfo[path.segmentsInfo.length - 1].length;\n switch (this.textAlign) {\n case LEFT:\n positionInPath = reverse ? totalPathLength - width : 0;\n break;\n case CENTER:\n positionInPath = (totalPathLength - width) / 2;\n break;\n case RIGHT:\n positionInPath = reverse ? 0 : totalPathLength - width;\n break;\n //todo - add support for justify\n }\n positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\n for (\n let i = reverse ? llength - 1 : 0;\n reverse ? i >= 0 : i < llength;\n reverse ? i-- : i++\n ) {\n graphemeInfo = lineBounds[i];\n if (positionInPath > totalPathLength) {\n positionInPath %= totalPathLength;\n } else if (positionInPath < 0) {\n positionInPath += totalPathLength;\n }\n // it would probably much faster to send all the grapheme position for a line\n // and calculate path position/angle at once.\n this._setGraphemeOnPath(positionInPath, graphemeInfo);\n positionInPath += graphemeInfo.kernedWidth;\n }\n }\n return { width: width, numOfSpaces: 0 };\n }\n\n /**\n * Calculate the angle and the left,top position of the char that follow a path.\n * It appends it to graphemeInfo to be reused later at rendering\n * @private\n * @param {Number} positionInPath to be measured\n * @param {GraphemeBBox} graphemeInfo current grapheme box information\n * @param {Object} startingPoint position of the point\n */\n _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox) {\n const centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\n path = this.path!;\n\n // we are at currentPositionOnPath. we want to know what point on the path is.\n const info = getPointOnPath(path.path, centerPosition, path.segmentsInfo)!;\n graphemeInfo.renderLeft = info.x - path.pathOffset.x;\n graphemeInfo.renderTop = info.y - path.pathOffset.y;\n graphemeInfo.angle = info.angle + (this.pathSide === RIGHT ? Math.PI : 0);\n }\n\n /**\n *\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n * @returns {GraphemeBBox} grapheme bbox\n */\n _getGraphemeBox(\n grapheme: string,\n lineIndex: number,\n charIndex: number,\n prevGrapheme?: string,\n skipLeft?: boolean,\n ): GraphemeBBox {\n const style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme\n ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1)\n : {},\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle);\n let kernedWidth = info.kernedWidth,\n width = info.width,\n charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n const box: GraphemeBBox = {\n width,\n left: 0,\n height: style.fontSize,\n kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n const previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left =\n previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n }\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine(lineIndex: number): number {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n // char 0 is measured before the line cycle because it needs to char\n // emptylines\n let maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (let i = 1, len = this._textLines[lineIndex].length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return (this.__lineHeights[lineIndex] =\n maxHeight * this.lineHeight * this._fontSizeMult);\n }\n\n /**\n * Calculate text box height\n */\n calcTextHeight() {\n let lineHeight,\n height = 0;\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += i === len - 1 ? lineHeight / this.lineHeight : lineHeight;\n }\n return height;\n }\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset(): number {\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\n }\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset(): number {\n return -this.height / 2;\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon(\n ctx: CanvasRenderingContext2D,\n method: 'fillText' | 'strokeText',\n ) {\n ctx.save();\n let lineHeights = 0;\n const left = this._getLeftOffset(),\n top = this._getTopOffset();\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset,\n top + lineHeights + maxHeight,\n i,\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill(ctx: CanvasRenderingContext2D) {\n if (!this.fill && !this.styleHas(FILL)) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke(ctx: CanvasRenderingContext2D) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n }\n\n /**\n * @private\n * @param {String} method fillText or strokeText.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} line Content of the line, splitted in an array by grapheme\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n */\n _renderChars(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n line: Array<any>,\n left: number,\n top: number,\n lineIndex: number,\n ) {\n const lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.includes(JUSTIFY),\n path = this.path,\n shortCut =\n !isJustify &&\n this.charSpacing === 0 &&\n this.isEmptyStyles(lineIndex) &&\n !path,\n isLtr = this.direction === 'ltr',\n sign = this.direction === 'ltr' ? 1 : -1,\n // this was changed in the PR #7674\n // currentDirection = ctx.canvas.getAttribute('dir');\n currentDirection = ctx.direction;\n\n let actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n drawingLeft;\n\n ctx.save();\n if (currentDirection !== this.direction) {\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n ctx.direction = isLtr ? 'ltr' : 'rtl';\n \n // For justify alignments, we need to set the correct canvas text alignment\n // This is crucial for RTL text to render in the correct order\n if (isJustify) {\n // Justify uses LEFT alignment as a base, letting the character positioning handle justification\n ctx.textAlign = LEFT;\n } else {\n ctx.textAlign = isLtr ? LEFT : RIGHT;\n }\n }\n top -= (lineHeight * this._fontSizeFraction) / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top);\n ctx.restore();\n return;\n }\n for (let i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing || path;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i] as Required<GraphemeBBox>;\n if (boxWidth === 0) {\n left += sign * (charBox.kernedWidth - charBox.width);\n boxWidth += charBox.width;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle =\n actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = hasStyleChanged(actualStyle, nextStyle, false);\n }\n if (timeToRender) {\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n this._renderChar(\n method,\n ctx,\n lineIndex,\n i,\n charsToRender,\n -boxWidth / 2,\n 0,\n );\n ctx.restore();\n } else {\n drawingLeft = left;\n this._renderChar(\n method,\n ctx,\n lineIndex,\n i,\n charsToRender,\n drawingLeft,\n top,\n );\n }\n charsToRender = '';\n actualStyle = nextStyle;\n left += sign * boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n }\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {TFiller} filler a fabric gradient instance\n * @return {CanvasPattern} a pattern to use as fill/stroke style\n */\n _applyPatternGradientTransformText(filler: TFiller) {\n // TODO: verify compatibility with strokeUniform\n const width = this.width + this.strokeWidth,\n height = this.height + this.strokeWidth,\n pCanvas = createCanvasElementFor({\n width,\n height,\n }),\n pCtx = pCanvas.getContext('2d')!;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx.beginPath();\n pCtx.moveTo(0, 0);\n pCtx.lineTo(width, 0);\n pCtx.lineTo(width, height);\n pCtx.lineTo(0, height);\n pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.fillStyle = filler.toLive(pCtx)!;\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fill();\n return pCtx.createPattern(pCanvas, 'no-repeat')!;\n }\n\n handleFiller<T extends 'fill' | 'stroke'>(\n ctx: CanvasRenderingContext2D,\n property: `${T}Style`,\n filler: TFiller | string,\n ): { offsetX: number; offsetY: number } {\n let offsetX: number, offsetY: number;\n if (isFiller(filler)) {\n if (\n (filler as Gradient<'linear'>).gradientUnits === 'percentage' ||\n (filler as Gradient<'linear'>).gradientTransform ||\n (filler as Pattern).patternTransform\n ) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n offsetX = -this.width / 2;\n offsetY = -this.height / 2;\n ctx.translate(offsetX, offsetY);\n ctx[property] = this._applyPatternGradientTransformText(filler);\n return { offsetX, offsetY };\n } else {\n // is a simple gradient or pattern\n ctx[property] = filler.toLive(ctx)!;\n return this._applyPatternGradientTransform(ctx, filler);\n }\n } else {\n // is a color\n ctx[property] = filler;\n }\n return { offsetX: 0, offsetY: 0 };\n }\n\n /**\n * This function prepare the canvas for a stroke style, and stroke and strokeWidth\n * need to be sent in as defined\n * @param {CanvasRenderingContext2D} ctx\n * @param {CompleteTextStyleDeclaration} style with stroke and strokeWidth defined\n * @returns\n */\n _setStrokeStyles(\n ctx: CanvasRenderingContext2D,\n {\n stroke,\n strokeWidth,\n }: Pick<CompleteTextStyleDeclaration, 'stroke' | 'strokeWidth'>,\n ) {\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = this.strokeLineCap;\n ctx.lineDashOffset = this.strokeDashOffset;\n ctx.lineJoin = this.strokeLineJoin;\n ctx.miterLimit = this.strokeMiterLimit;\n return this.handleFiller(ctx, 'strokeStyle', stroke!);\n }\n\n /**\n * This function prepare the canvas for a ill style, and fill\n * need to be sent in as defined\n * @param {CanvasRenderingContext2D} ctx\n * @param {CompleteTextStyleDeclaration} style with ill defined\n * @returns\n */\n _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>) {\n return this.handleFiller(ctx, 'fillStyle', fill!);\n }\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n lineIndex: number,\n charIndex: number,\n _char: string,\n left: number,\n top: number,\n ) {\n const decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke =\n method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n ctx.save();\n\n ctx.font = this._getFontDeclaration(fullDecl);\n\n if (decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl.deltaY) {\n top += decl.deltaY;\n }\n\n if (shouldFill) {\n const fillOffsets = this._setFillStyles(ctx, fullDecl);\n ctx.fillText(\n _char,\n left - fillOffsets.offsetX,\n top - fillOffsets.offsetY,\n );\n }\n\n if (shouldStroke) {\n const strokeOffsets = this._setStrokeStyles(ctx, fullDecl);\n ctx.strokeText(\n _char,\n left - strokeOffsets.offsetX,\n top - strokeOffsets.offsetY,\n );\n }\n\n ctx.restore();\n }\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n */\n setSuperscript(start: number, end: number) {\n this._setScript(start, end, this.superscript);\n }\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n */\n setSubscript(start: number, end: number) {\n this._setScript(start, end, this.subscript);\n }\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n */\n protected _setScript(\n start: number,\n end: number,\n schema: {\n size: number;\n baseline: number;\n },\n ) {\n const loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(\n loc.lineIndex,\n loc.charIndex,\n 'fontSize',\n ),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = {\n fontSize: fontSize * schema.size,\n deltaY: dy + fontSize * schema.baseline,\n };\n this.setSelectionStyles(style, start, end);\n }\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset(lineIndex: number): number {\n const lineWidth = this.getLineWidth(lineIndex),\n lineDiff = this.width - lineWidth,\n textAlign = this.textAlign,\n direction = this.direction,\n isEndOfWrapping = this.isEndOfWrapping(lineIndex);\n let leftOffset = 0;\n \n // Handle justify alignments (excluding last lines and wrapped line ends)\n const isJustifyLine = \n textAlign === JUSTIFY ||\n (textAlign === JUSTIFY_CENTER && !isEndOfWrapping) ||\n (textAlign === JUSTIFY_RIGHT && !isEndOfWrapping) ||\n (textAlign === JUSTIFY_LEFT && !isEndOfWrapping);\n \n if (isJustifyLine) {\n // Justify lines should start at the left edge for LTR and right edge for RTL\n // The space distribution is handled by enlargeSpaces()\n if (direction === 'rtl') {\n // For RTL justify, we need to account for the line being right-aligned\n return 0;\n } else {\n return 0;\n }\n }\n \n // Handle non-justify alignments\n if (textAlign === CENTER) {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === RIGHT) {\n leftOffset = lineDiff;\n }\n if (textAlign === JUSTIFY_CENTER) {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === JUSTIFY_RIGHT) {\n leftOffset = lineDiff;\n }\n \n // Apply RTL adjustments for non-justify alignments\n if (direction === 'rtl') {\n if (\n textAlign === RIGHT ||\n textAlign === JUSTIFY ||\n textAlign === JUSTIFY_RIGHT\n ) {\n leftOffset = 0;\n } else if (textAlign === LEFT || textAlign === JUSTIFY_LEFT) {\n leftOffset = -lineDiff;\n } else if (textAlign === CENTER || textAlign === JUSTIFY_CENTER) {\n leftOffset = -lineDiff / 2;\n }\n }\n return leftOffset;\n }\n\n /**\n * @private\n */\n _clearCache() {\n this._forceClearCache = false;\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n }\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth(lineIndex: number): number {\n if (this.__lineWidths[lineIndex] !== undefined) {\n return this.__lineWidths[lineIndex];\n }\n\n const { width } = this.measureLine(lineIndex);\n this.__lineWidths[lineIndex] = width;\n return width;\n }\n\n _getWidthOfCharSpacing() {\n if (this.charSpacing !== 0) {\n return (this.fontSize * this.charSpacing) / 1000;\n }\n return 0;\n }\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the character number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt<T extends StylePropertiesType>(\n lineIndex: number,\n charIndex: number,\n property: T,\n ): this[T] {\n const charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n return (charStyle[property] ?? this[property]) as this[T];\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration(\n ctx: CanvasRenderingContext2D,\n type: 'underline' | 'linethrough' | 'overline',\n ) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n let topOffset = this._getTopOffset();\n const leftOffset = this._getLeftOffset(),\n path = this.path,\n charSpacing = this._getWidthOfCharSpacing(),\n offsetAligner =\n type === 'linethrough' ? 0.5 : type === 'overline' ? 1 : 0,\n offsetY = this.offsets[type];\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n const line = this._textLines[i];\n const maxHeight = heightOfLine / this.lineHeight;\n const lineLeftOffset = this._getLineLeftOffset(i);\n let boxStart = 0;\n let boxWidth = 0;\n let lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n let lastFill = this.getValueOfPropertyAt(i, 0, FILL);\n let lastTickness = this.getValueOfPropertyAt(\n i,\n 0,\n TEXT_DECORATION_THICKNESS,\n );\n let currentDecoration = lastDecoration;\n let currentFill = lastFill;\n let currentTickness = lastTickness;\n const top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n let size = this.getHeightOfChar(i, 0);\n let dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (let j = 0, jlen = line.length; j < jlen; j++) {\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, FILL);\n currentTickness = this.getValueOfPropertyAt(\n i,\n j,\n TEXT_DECORATION_THICKNESS,\n );\n const currentSize = this.getHeightOfChar(i, j);\n const currentDy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if (path && currentDecoration && currentFill) {\n const finalTickness = (this.fontSize * currentTickness) / 1000;\n ctx.save();\n // bug? verify lastFill is a valid fill here.\n ctx.fillStyle = lastFill as string;\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillRect(\n -charBox.kernedWidth / 2,\n offsetY * currentSize + currentDy - offsetAligner * finalTickness,\n charBox.kernedWidth,\n finalTickness,\n );\n ctx.restore();\n } else if (\n (currentDecoration !== lastDecoration ||\n currentFill !== lastFill ||\n currentSize !== size ||\n currentTickness !== lastTickness ||\n currentDy !== dy) &&\n boxWidth > 0\n ) {\n const finalTickness = (this.fontSize * lastTickness) / 1000;\n let drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n if (lastDecoration && lastFill && lastTickness) {\n // bug? verify lastFill is a valid fill here.\n ctx.fillStyle = lastFill as string;\n ctx.fillRect(\n drawStart,\n top + offsetY * size + dy - offsetAligner * finalTickness,\n boxWidth,\n finalTickness,\n );\n }\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastTickness = currentTickness;\n lastFill = currentFill;\n size = currentSize;\n dy = currentDy;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n }\n let drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentFill as string;\n const finalTickness = (this.fontSize * currentTickness) / 1000;\n currentDecoration &&\n currentFill &&\n currentTickness &&\n ctx.fillRect(\n drawStart,\n top + offsetY * size + dy - offsetAligner * finalTickness,\n boxWidth - charSpacing,\n finalTickness,\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n }\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration(\n {\n fontFamily = this.fontFamily,\n fontStyle = this.fontStyle,\n fontWeight = this.fontWeight,\n fontSize = this.fontSize,\n }: Partial<\n Pick<\n TextStyleDeclaration,\n 'fontFamily' | 'fontStyle' | 'fontWeight' | 'fontSize'\n >\n > = {},\n forMeasuring?: boolean,\n ): string {\n const parsedFontFamily =\n fontFamily.includes(\"'\") ||\n fontFamily.includes('\"') ||\n fontFamily.includes(',') ||\n FabricText.genericFonts.includes(fontFamily.toLowerCase())\n ? fontFamily\n : `\"${fontFamily}\"`;\n return [\n fontStyle,\n fontWeight,\n `${forMeasuring ? this.CACHE_FONT_SIZE : fontSize}px`,\n parsedFontFamily,\n ].join(' ');\n }\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render(ctx: CanvasRenderingContext2D) {\n if (!this.visible) {\n return;\n }\n if (\n this.canvas &&\n this.canvas.skipOffscreen &&\n !this.group &&\n !this.isOnScreen()\n ) {\n return;\n }\n if (this._forceClearCache) {\n this.initDimensions();\n }\n super.render(ctx);\n }\n\n /**\n * Override this method to customize grapheme splitting\n * @todo the util `graphemeSplit` needs to be injectable in some way.\n * is more comfortable to inject the correct util rather than having to override text\n * in the middle of the prototype chain\n * @param {string} value\n * @returns {string[]} array of graphemes\n */\n graphemeSplit(value: string): string[] {\n return graphemeSplit(value);\n }\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns Lines in the text\n */\n _splitTextIntoLines(text: string): TextLinesInfo {\n const lines = text.split(this._reNewline),\n newLines = new Array<string[]>(lines.length),\n newLine = ['\\n'];\n let newText: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n newLines[i] = this.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return {\n _unwrappedLines: newLines,\n lines: lines,\n graphemeText: newText,\n graphemeLines: newLines,\n };\n }\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject<\n T extends Omit<Props & TClassProperties<this>, keyof SProps>,\n K extends keyof T = never,\n >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {\n return {\n ...super.toObject([...additionalProps, ...propertiesToInclude] as K[]),\n styles: stylesToArray(this.styles, this.text),\n ...(this.path ? { path: this.path.toObject() } : {}),\n };\n }\n\n set(key: string | any, value?: any) {\n const { textLayoutProperties } = this.constructor as typeof FabricText;\n super.set(key, value);\n let needsDims = false;\n let isAddingPath = false;\n if (typeof key === 'object') {\n for (const _key in key) {\n if (_key === 'path') {\n this.setPathInfo();\n }\n needsDims = needsDims || textLayoutProperties.includes(_key);\n isAddingPath = isAddingPath || _key === 'path';\n }\n } else {\n needsDims = textLayoutProperties.includes(key);\n isAddingPath = key === 'path';\n }\n if (isAddingPath) {\n this.setPathInfo();\n }\n if (needsDims && this.initialized) {\n // Clear browser lines when layout-affecting properties change\n clearBrowserLines(this);\n this.initDimensions();\n this.setCoords();\n }\n return this;\n }\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity(): number {\n return 1;\n }\n\n /**\n * List of generic font families\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/font-family#generic-name\n */\n static genericFonts = [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-monospace',\n 'ui-rounded',\n 'math',\n 'emoji',\n 'fangsong',\n ];\n\n /* _FROM_SVG_START_ */\n\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link FabricText.fromElement})\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'font-family',\n 'font-style',\n 'font-weight',\n 'font-size',\n 'letter-spacing',\n 'text-decoration',\n 'text-anchor',\n );\n\n /**\n * Returns FabricText instance from an SVG element (<b>not yet implemented</b>)\n * @param {HTMLElement} element Element to parse\n * @param {Object} [options] Options object\n */\n static async fromElement(\n element: HTMLElement | SVGElement,\n options?: Abortable,\n cssRules?: CSSRules,\n ) {\n const parsedAttributes = parseAttributes(\n element,\n FabricText.ATTRIBUTE_NAMES,\n cssRules,\n );\n\n const {\n textAnchor = LEFT as typeof LEFT | typeof CENTER | typeof RIGHT,\n textDecoration = '',\n dx = 0,\n dy = 0,\n top = 0,\n left = 0,\n fontSize = DEFAULT_SVG_FONT_SIZE,\n strokeWidth = 1,\n ...restOfOptions\n } = { ...options, ...parsedAttributes };\n\n const textContent = (element.textContent || '')\n .replace(/^\\s+|\\s+$|\\n+/g, '')\n .replace(/\\s+/g, ' ');\n\n // this code here is probably the usual issue for SVG center find\n // this can later looked at again and probably removed.\n\n const text = new this(textContent, {\n left: left + dx,\n top: top + dy,\n underline: textDecoration.includes('underline'),\n overline: textDecoration.includes('overline'),\n linethrough: textDecoration.includes('line-through'),\n // we initialize this as 0\n strokeWidth: 0,\n fontSize,\n ...restOfOptions,\n }),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff =\n (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff;\n\n let offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (textAnchor === CENTER) {\n offX = text.getScaledWidth() / 2;\n }\n if (textAnchor === RIGHT) {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top:\n text.top -\n (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) /\n text.lineHeight,\n strokeWidth,\n });\n return text;\n }\n\n /* _FROM_SVG_END_ */\n\n /**\n * Returns FabricText instance from an object representation\n * @param {Object} object plain js Object to create an instance from\n * @returns {Promise<FabricText>}\n */\n static fromObject<\n T extends TOptions<SerializedTextProps>,\n S extends FabricText,\n >(object: T) {\n return this._fromObject<S>(\n {\n ...object,\n styles: stylesFromArray(object.styles || {}, object.text),\n },\n {\n extraParam: 'text',\n },\n );\n }\n}\n\napplyMixins(FabricText, [TextSVGExportMixin]);\nclassRegistry.setClass(FabricText);\nclassRegistry.setSVGClass(FabricText);\n"],"names":["measuringContext","getMeasuringContext","canvas","createCanvasElementFor","width","height","getContext","FabricText","StyledText","getDefaults","ownDefaults","constructor","text","options","_defineProperty","Object","assign","setOptions","styles","initialized","path","setPathInfo","initDimensions","setCoords","segmentsInfo","getPathSegmentsInfo","_splitText","browserLines","getBrowserLines","useOverlayEditing","_splitTextFromBrowserLines","newLines","_splitTextIntoLines","textLines","lines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","unwrappedLines","browserLine","push","lineGraphemes","graphemeSplit","concat","length","result","enableAdvancedLayout","initDimensionsAdvanced","_clearCache","dirty","calcTextWidth","cursorWidth","MIN_TEXT_WIDTH","calcTextHeight","textAlign","includes","JUSTIFY","enlargeSpaces","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","isRtl","direction","i","len","isEndOfWrapping","getLineWidth","match","_reSpacesAndTabs","j","_reSpaceAndTab","test","spaceCount","__charBounds","kernedWidth","remainingSpaces","shiftAmount","left","_layoutTextAdvanced","_getAdvancedLayoutOptions","layoutText","wrap","align","_mapTextAlignToAlign","ellipsis","fontSize","lineHeight","letterSpacing","charSpacing","fontFamily","fontStyle","fontWeight","verticalAlign","CENTER","RIGHT","JUSTIFY_LEFT","JUSTIFY_RIGHT","JUSTIFY_CENTER","layout","totalWidth","totalHeight","_convertLayoutToLegacyFormat","map","graphemes","bounds","bound","top","y","deltaY","lineIndex","missingNewlineOffset","_lineIndex","get2DCursorLocation","selectionStart","skipWrapping","charIndex","toString","complexity","_getCacheCanvasDimensions","dims","zoomX","zoomY","_render","ctx","isNotVisible","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","__overlayEditor","paintFirst","STROKE","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","pathAlign","TOP","BOTTOM","font","_getFontDeclaration","maxWidth","_renderTextLine","method","_renderChars","textBackgroundColor","styleHas","originalFill","fillStyle","leftOffset","_getLeftOffset","lineTopOffset","_getTopOffset","heightOfLine","getHeightOfLine","jlen","lineLeftOffset","_getLineLeftOffset","boxWidth","boxStart","drawStart","currentColor","lastColor","getValueOfPropertyAt","charBox","save","translate","renderLeft","renderTop","rotate","angle","fillRect","_fontSizeFraction","restore","_removeShadow","_measureChar","_char","previousChar","prevCharStyle","fontCache","cache","getFontCache","fontDeclaration","couple","stylesAreEqual","fontMultiplier","CACHE_FONT_SIZE","coupleWidth","previousWidth","undefined","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","prevGrapheme","graphemeInfo","reverse","pathSide","llength","lineBounds","Array","grapheme","_getGraphemeBox","positionInPath","totalPathLength","LEFT","pathStartOffset","_setGraphemeOnPath","numOfSpaces","centerPosition","info","getPointOnPath","x","pathOffset","Math","PI","skipLeft","style","getCompleteStyleDeclaration","prevStyle","box","previousBox","__lineHeights","maxHeight","max","_fontSizeMult","_renderTextCommon","lineHeights","fill","FILL","stroke","strokeWidth","isEmptyStyles","shadow","affectStroke","_setLineDash","strokeDashArray","beginPath","closePath","isJustify","shortCut","isLtr","sign","currentDirection","actualStyle","nextStyle","charsToRender","timeToRender","drawingLeft","setAttribute","_renderChar","join","hasStyleChanged","_applyPatternGradientTransformText","filler","pCanvas","pCtx","moveTo","lineTo","toLive","_applyPatternGradientTransform","createPattern","handleFiller","property","offsetX","offsetY","isFiller","gradientUnits","gradientTransform","patternTransform","_setStrokeStyles","_ref","lineWidth","lineCap","strokeLineCap","lineDashOffset","strokeDashOffset","lineJoin","strokeLineJoin","miterLimit","strokeMiterLimit","_setFillStyles","_ref2","decl","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillOffsets","fillText","strokeOffsets","strokeText","setSuperscript","start","end","_setScript","superscript","setSubscript","subscript","schema","loc","dy","size","baseline","setSelectionStyles","lineDiff","isJustifyLine","_forceClearCache","__lineWidths","_charStyle$property","type","topOffset","offsetAligner","offsets","lastDecoration","lastFill","lastTickness","TEXT_DECORATION_THICKNESS","currentDecoration","currentFill","currentTickness","currentSize","currentDy","finalTickness","arguments","parsedFontFamily","genericFonts","toLowerCase","render","visible","skipOffscreen","group","isOnScreen","value","split","_reNewline","newLine","newText","pop","toObject","propertiesToInclude","additionalProps","stylesToArray","set","key","textLayoutProperties","needsDims","isAddingPath","_key","clearBrowserLines","fromElement","element","cssRules","parsedAttributes","parseAttributes","ATTRIBUTE_NAMES","textAnchor","textDecoration","dx","DEFAULT_SVG_FONT_SIZE","restOfOptions","textContent","replace","underline","overline","linethrough","textHeightScaleFactor","getScaledHeight","lineHeightDiff","scaledDiff","textHeight","offX","getScaledWidth","fromObject","object","_fromObject","stylesFromArray","extraParam","cacheProperties","textDefaultValues","SHARED_ATTRIBUTES","applyMixins","TextSVGExportMixin","classRegistry","setClass","setSVGClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Text.mjs","sources":["../../../../src/shapes/Text/Text.ts"],"sourcesContent":["import { cache } from '../../cache';\r\nimport { DEFAULT_SVG_FONT_SIZE, FILL, STROKE } from '../../constants';\r\nimport type { ObjectEvents } from '../../EventTypeDefs';\r\nimport type {\r\n CompleteTextStyleDeclaration,\r\n TextStyle,\r\n TextStyleDeclaration,\r\n} from './StyledText';\r\nimport { StyledText } from './StyledText';\r\nimport { SHARED_ATTRIBUTES } from '../../parser/attributes';\r\nimport { parseAttributes } from '../../parser/parseAttributes';\r\nimport type {\r\n Abortable,\r\n TCacheCanvasDimensions,\r\n TClassProperties,\r\n TFiller,\r\n TOptions,\r\n} from '../../typedefs';\r\nimport { classRegistry } from '../../ClassRegistry';\r\nimport { graphemeSplit } from '../../util/lang_string';\r\nimport { createCanvasElementFor } from '../../util/misc/dom';\r\nimport { layoutText, type LayoutResult, type TextLayoutOptions } from '../../text/layout';\r\nimport { measureGrapheme, measureGraphemeWithKerning } from '../../text/measure';\r\nimport { applyEllipsis } from '../../text/ellipsis';\r\nimport { segmentGraphemes } from '../../text/unicode';\r\nimport type { TextStyleArray } from '../../util/misc/textStyles';\r\nimport {\r\n hasStyleChanged,\r\n stylesFromArray,\r\n stylesToArray,\r\n} from '../../util/misc/textStyles';\r\nimport { getPathSegmentsInfo, getPointOnPath } from '../../util/path';\r\nimport { cacheProperties } from '../Object/FabricObject';\r\nimport type { Path } from '../Path';\r\nimport { TextSVGExportMixin } from './TextSVGExportMixin';\r\nimport { applyMixins } from '../../util/applyMixins';\r\nimport type { FabricObjectProps, SerializedObjectProps } from '../Object/types';\r\nimport type { StylePropertiesType } from './constants';\r\nimport {\r\n additionalProps,\r\n textDefaultValues,\r\n textLayoutProperties,\r\n JUSTIFY,\r\n JUSTIFY_CENTER,\r\n JUSTIFY_LEFT,\r\n JUSTIFY_RIGHT,\r\n TEXT_DECORATION_THICKNESS,\r\n} from './constants';\r\nimport { CENTER, LEFT, RIGHT, TOP, BOTTOM } from '../../constants';\r\nimport { isFiller } from '../../util/typeAssertions';\r\nimport type { Gradient } from '../../gradient/Gradient';\r\nimport type { Pattern } from '../../Pattern';\r\nimport type { CSSRules } from '../../parser/typedefs';\r\nimport { getBrowserLines, clearBrowserLines } from '../../text/browserLines';\r\nimport type { BrowserLine } from '../../text/browserLines';\r\n\r\nlet measuringContext: CanvasRenderingContext2D | null;\r\n\r\n/**\r\n * Return a context for measurement of text string.\r\n * if created it gets stored for reuse\r\n */\r\nfunction getMeasuringContext() {\r\n if (!measuringContext) {\r\n const canvas = createCanvasElementFor({\r\n width: 0,\r\n height: 0,\r\n });\r\n measuringContext = canvas.getContext('2d');\r\n }\r\n return measuringContext;\r\n}\r\n\r\nexport type TPathSide = 'left' | 'right';\r\n\r\nexport type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';\r\n\r\nexport type TextLinesInfo = {\r\n lines: string[];\r\n graphemeLines: string[][];\r\n graphemeText: string[];\r\n _unwrappedLines: string[][];\r\n};\r\n\r\n/**\r\n * Measure and return the info of a single grapheme.\r\n * needs the the info of previous graphemes already filled\r\n * Override to customize measuring\r\n */\r\nexport type GraphemeBBox = {\r\n width: number;\r\n height: number;\r\n kernedWidth: number;\r\n left: number;\r\n deltaY: number;\r\n renderLeft?: number;\r\n renderTop?: number;\r\n angle?: number;\r\n};\r\n\r\n// @TODO this is not complete\r\ninterface UniqueTextProps {\r\n charSpacing: number;\r\n lineHeight: number;\r\n fontSize: number;\r\n fontWeight: string | number;\r\n fontFamily: string;\r\n fontStyle: string;\r\n pathSide: TPathSide;\r\n pathAlign: TPathAlign;\r\n underline: boolean;\r\n overline: boolean;\r\n linethrough: boolean;\r\n textAlign: string;\r\n direction: CanvasDirection;\r\n path?: Path;\r\n textDecorationThickness: number;\r\n wrap: 'word' | 'char' | 'none';\r\n ellipsis: boolean | string;\r\n letterSpacing: number;\r\n enableAdvancedLayout: boolean;\r\n verticalAlign: 'top' | 'middle' | 'bottom';\r\n useOverlayEditing: boolean;\r\n}\r\n\r\nexport interface SerializedTextProps\r\n extends SerializedObjectProps,\r\n UniqueTextProps {\r\n styles: TextStyleArray | TextStyle;\r\n}\r\n\r\nexport interface TextProps extends FabricObjectProps, UniqueTextProps {\r\n styles: TextStyle;\r\n}\r\n\r\n/**\r\n * Text class\r\n * @see {@link http://fabricjs.com/fabric-intro-part-2#text}\r\n */\r\nexport class FabricText<\r\n Props extends TOptions<TextProps> = Partial<TextProps>,\r\n SProps extends SerializedTextProps = SerializedTextProps,\r\n EventSpec extends ObjectEvents = ObjectEvents,\r\n >\r\n extends StyledText<Props, SProps, EventSpec>\r\n implements UniqueTextProps\r\n{\r\n /**\r\n * Properties that requires a text layout recalculation when changed\r\n * @type string[]\r\n * @protected\r\n */\r\n static textLayoutProperties: string[] = textLayoutProperties;\r\n\r\n /**\r\n * @private\r\n */\r\n declare _reNewline: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter for whitespaces that is not a new line.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reSpacesAndTabs: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter for whitespace that is not a new line.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reSpaceAndTab: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter consecutive groups of non spaces.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reWords: RegExp;\r\n\r\n declare text: string;\r\n\r\n /**\r\n * Font size (in pixels)\r\n * @type Number\r\n */\r\n declare fontSize: number;\r\n\r\n /**\r\n * Font weight (e.g. bold, normal, 400, 600, 800)\r\n * @type {(Number|String)}\r\n */\r\n declare fontWeight: string | number;\r\n\r\n /**\r\n * Font family\r\n * @type String\r\n */\r\n declare fontFamily: string;\r\n\r\n /**\r\n * Text decoration underline.\r\n * @type Boolean\r\n */\r\n declare underline: boolean;\r\n\r\n /**\r\n * Text decoration overline.\r\n * @type Boolean\r\n */\r\n declare overline: boolean;\r\n\r\n /**\r\n * Text decoration linethrough.\r\n * @type Boolean\r\n */\r\n declare linethrough: boolean;\r\n\r\n /**\r\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\r\n * \"justify-left\", \"justify-center\" or \"justify-right\".\r\n * @type String\r\n */\r\n declare textAlign: string;\r\n\r\n /**\r\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\r\n * @type String\r\n */\r\n declare fontStyle: string;\r\n\r\n /**\r\n * Line height\r\n * @type Number\r\n */\r\n declare lineHeight: number;\r\n\r\n /**\r\n * Superscript schema object (minimum overlap)\r\n */\r\n declare superscript: {\r\n /**\r\n * fontSize factor\r\n * @default 0.6\r\n */\r\n size: number;\r\n /**\r\n * baseline-shift factor (upwards)\r\n * @default -0.35\r\n */\r\n baseline: number;\r\n };\r\n\r\n /**\r\n * Subscript schema object (minimum overlap)\r\n */\r\n declare subscript: {\r\n /**\r\n * fontSize factor\r\n * @default 0.6\r\n */\r\n size: number;\r\n /**\r\n * baseline-shift factor (downwards)\r\n * @default 0.11\r\n */\r\n baseline: number;\r\n };\r\n\r\n /**\r\n * Background color of text lines\r\n * @type String\r\n */\r\n declare textBackgroundColor: string;\r\n\r\n declare styles: TextStyle;\r\n\r\n /**\r\n * Path that the text should follow.\r\n * since 4.6.0 the path will be drawn automatically.\r\n * if you want to make the path visible, give it a stroke and strokeWidth or fill value\r\n * if you want it to be hidden, assign visible = false to the path.\r\n * This feature is in BETA, and SVG import/export is not yet supported.\r\n * @type Path\r\n * @example\r\n * const textPath = new Text('Text on a path', {\r\n * top: 150,\r\n * left: 150,\r\n * textAlign: 'center',\r\n * charSpacing: -50,\r\n * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {\r\n * strokeWidth: 1,\r\n * visible: false\r\n * }),\r\n * pathSide: 'left',\r\n * pathStartOffset: 0\r\n * });\r\n */\r\n declare path?: Path;\r\n\r\n /**\r\n * Text wrapping mode\r\n * @type string\r\n * @default 'word'\r\n */\r\n declare wrap: 'word' | 'char' | 'none';\r\n\r\n /**\r\n * Ellipsis truncation\r\n * @type boolean | string\r\n * @default false\r\n */\r\n declare ellipsis: boolean | string;\r\n\r\n /**\r\n * Letter spacing in pixels (Konva-style)\r\n * @type number\r\n * @default 0\r\n */\r\n declare letterSpacing: number;\r\n\r\n /**\r\n * Enable advanced text layout engine\r\n * @type boolean\r\n * @default false\r\n */\r\n declare enableAdvancedLayout: boolean;\r\n\r\n /**\r\n * Vertical text alignment\r\n * @type string\r\n * @default 'top'\r\n */\r\n declare verticalAlign: 'top' | 'middle' | 'bottom';\r\n\r\n /**\r\n * Use overlay editor for inline text editing instead of hidden textarea.\r\n * @default false\r\n */\r\n declare useOverlayEditing: boolean;\r\n\r\n /**\r\n * The text decoration tickness for underline, overline and strikethrough\r\n * The tickness is expressed in thousandths of fontSize ( em ).\r\n * The original value was 1/15 that translates to 66.6667 thousandths.\r\n * The choice of unit of measure is to align with charSpacing.\r\n * You can slim the tickness without issues, while large underline or overline may end up\r\n * outside the bounding box of the text. In order to fix that a bigger refactor of the code\r\n * is needed and is out of scope for now. If you need such large overline on the first line\r\n * of text or large underline on the last line of text, consider disabling caching as a\r\n * workaround\r\n * @default 66.667\r\n */\r\n declare textDecorationThickness: number;\r\n\r\n /**\r\n * Offset amount for text path starting position\r\n * Only used when text has a path\r\n */\r\n declare pathStartOffset: number;\r\n\r\n /**\r\n * Which side of the path the text should be drawn on.\r\n * Only used when text has a path\r\n * @type {TPathSide} 'left|right'\r\n */\r\n declare pathSide: TPathSide;\r\n\r\n /**\r\n * How text is aligned to the path. This property determines\r\n * the perpendicular position of each character relative to the path.\r\n * (one of \"baseline\", \"center\", \"ascender\", \"descender\")\r\n * This feature is in BETA, and its behavior may change\r\n * @type TPathAlign\r\n */\r\n declare pathAlign: TPathAlign;\r\n\r\n /**\r\n * @private\r\n */\r\n declare _fontSizeFraction: number;\r\n\r\n /**\r\n * @private\r\n */\r\n declare offsets: { underline: number; linethrough: number; overline: number };\r\n\r\n /**\r\n * Text Line proportion to font Size (in pixels)\r\n * @type Number\r\n */\r\n declare _fontSizeMult: number;\r\n\r\n /**\r\n * additional space between characters\r\n * expressed in thousands of em unit\r\n * @type Number\r\n */\r\n declare charSpacing: number;\r\n\r\n /**\r\n * Baseline shift, styles only, keep at 0 for the main text object\r\n * @type {Number}\r\n */\r\n declare deltaY: number;\r\n\r\n /**\r\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\r\n * determine the direction of the text.\r\n * This has to be set manually together with textAlign and originX for proper\r\n * experience.\r\n * some interesting link for the future\r\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\r\n * @since 4.5.0\r\n * @type {CanvasDirection} 'ltr|rtl'\r\n */\r\n declare direction: CanvasDirection;\r\n\r\n /**\r\n * contains characters bounding boxes\r\n * This variable is considered to be protected.\r\n * But for how mixins are implemented right now, we can't leave it private\r\n * @protected\r\n */\r\n __charBounds: GraphemeBBox[][] = [];\r\n\r\n /**\r\n * use this size when measuring text. To avoid IE11 rounding errors\r\n * @type {Number}\r\n * @readonly\r\n * @private\r\n */\r\n declare CACHE_FONT_SIZE: number;\r\n\r\n /**\r\n * contains the min text width to avoid getting 0\r\n * @type {Number}\r\n */\r\n declare MIN_TEXT_WIDTH: number;\r\n\r\n /**\r\n * contains the the text of the object, divided in lines as they are displayed\r\n * on screen. Wrapping will divide the text independently of line breaks\r\n * @type {string[]}\r\n */\r\n declare textLines: string[];\r\n\r\n /**\r\n * same as textlines, but each line is an array of graphemes as split by splitByGrapheme\r\n * @type {string[]}\r\n */\r\n declare _textLines: string[][];\r\n\r\n declare _unwrappedTextLines: string[][];\r\n declare _text: string[];\r\n declare cursorWidth: number;\r\n declare __lineHeights: number[];\r\n declare __lineWidths: number[];\r\n declare initialized?: true;\r\n\r\n static cacheProperties = [...cacheProperties, ...additionalProps];\r\n\r\n static ownDefaults = textDefaultValues;\r\n\r\n static type = 'Text';\r\n\r\n static getDefaults(): Record<string, any> {\r\n return { ...super.getDefaults(), ...FabricText.ownDefaults };\r\n }\r\n\r\n constructor(text: string, options?: Props) {\r\n super();\r\n Object.assign(this, FabricText.ownDefaults);\r\n this.setOptions(options);\r\n if (!this.styles) {\r\n this.styles = {};\r\n }\r\n this.text = text;\r\n this.initialized = true;\r\n if (this.path) {\r\n this.setPathInfo();\r\n }\r\n this.initDimensions();\r\n this.setCoords();\r\n }\r\n\r\n /**\r\n * If text has a path, it will add the extra information needed\r\n * for path and text calculations\r\n */\r\n setPathInfo() {\r\n const path = this.path;\r\n if (path) {\r\n path.segmentsInfo = getPathSegmentsInfo(path.path);\r\n }\r\n }\r\n\r\n /**\r\n * @private\r\n * Divides text into lines of text and lines of graphemes.\r\n * Uses browser lines when available for pixel-perfect consistency.\r\n */\r\n _splitText(): TextLinesInfo {\r\n // Check if we have valid browser lines and should use them\r\n const browserLines = getBrowserLines(this);\r\n if (browserLines && this.useOverlayEditing) {\r\n return this._splitTextFromBrowserLines(browserLines);\r\n }\r\n \r\n const newLines = this._splitTextIntoLines(this.text);\r\n this.textLines = newLines.lines;\r\n this._textLines = newLines.graphemeLines;\r\n this._unwrappedTextLines = newLines._unwrappedLines;\r\n this._text = newLines.graphemeText;\r\n return newLines;\r\n }\r\n\r\n /**\r\n * Create TextLinesInfo from browser-extracted lines\r\n * @private\r\n */\r\n _splitTextFromBrowserLines(browserLines: BrowserLine[]): TextLinesInfo {\r\n const lines: string[] = [];\r\n const graphemeLines: string[][] = [];\r\n const unwrappedLines: string[][] = [];\r\n let graphemeText: string[] = [];\r\n\r\n for (const browserLine of browserLines) {\r\n lines.push(browserLine.text);\r\n const lineGraphemes = this.graphemeSplit(browserLine.text);\r\n graphemeLines.push(lineGraphemes);\r\n unwrappedLines.push(lineGraphemes);\r\n graphemeText = graphemeText.concat(lineGraphemes);\r\n \r\n // Add newline separator between lines (except for the last line)\r\n if (browserLine !== browserLines[browserLines.length - 1]) {\r\n graphemeText.push('\\n');\r\n }\r\n }\r\n\r\n const result: TextLinesInfo = {\r\n lines,\r\n graphemeLines,\r\n graphemeText,\r\n _unwrappedLines: unwrappedLines,\r\n };\r\n\r\n // Update instance properties\r\n this.textLines = result.lines;\r\n this._textLines = result.graphemeLines;\r\n this._unwrappedTextLines = result._unwrappedLines;\r\n this._text = result.graphemeText;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Initialize or update text dimensions.\r\n * Updates this.width and this.height with the proper values.\r\n * Does not return dimensions.\r\n */\r\n initDimensions(): void {\r\n // Use advanced layout if enabled\r\n if (this.enableAdvancedLayout && !this.path) {\r\n return this.initDimensionsAdvanced();\r\n }\r\n \r\n this._splitText();\r\n this._clearCache();\r\n this.dirty = true;\r\n if (this.path) {\r\n this.width = this.path.width;\r\n this.height = this.path.height;\r\n } else {\r\n this.width =\r\n this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\r\n this.height = this.calcTextHeight();\r\n }\r\n if (this.textAlign.includes(JUSTIFY)) {\r\n // once text is measured we need to make space fatter to make justified text.\r\n this.enlargeSpaces();\r\n }\r\n }\r\n\r\n /**\r\n * Enlarge space boxes and shift the others\r\n */\r\n enlargeSpaces() {\r\n let diffSpace,\r\n currentLineWidth,\r\n numberOfSpaces,\r\n accumulatedSpace,\r\n line,\r\n charBound,\r\n spaces;\r\n const isRtl = this.direction === 'rtl';\r\n \r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n if (\r\n this.textAlign !== JUSTIFY &&\r\n (i === len - 1 || this.isEndOfWrapping(i))\r\n ) {\r\n continue;\r\n }\r\n accumulatedSpace = 0;\r\n line = this._textLines[i];\r\n currentLineWidth = this.getLineWidth(i);\r\n if (\r\n currentLineWidth < this.width &&\r\n (spaces = this.textLines[i].match(this._reSpacesAndTabs))\r\n ) {\r\n numberOfSpaces = spaces.length;\r\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\r\n \r\n if (isRtl) {\r\n // For RTL text, we need to redistribute spaces while maintaining correct visual order\r\n // The key insight is that RTL text is stored in logical order but displayed in visual order\r\n // We need to adjust bounds to account for the visual positioning\r\n \r\n // First, collect all space positions\r\n const spaceIndices = [];\r\n for (let j = 0; j < line.length; j++) {\r\n if (this._reSpaceAndTab.test(line[j])) {\r\n spaceIndices.push(j);\r\n }\r\n }\r\n \r\n // Calculate total expansion\r\n const totalExpansion = diffSpace * numberOfSpaces;\r\n \r\n // For RTL, we need to work backwards through the visual positions\r\n // but still update logical positions correctly\r\n let spaceCount = 0;\r\n for (let j = 0; j <= line.length; j++) {\r\n charBound = this.__charBounds[i][j];\r\n if (charBound) {\r\n if (this._reSpaceAndTab.test(line[j])) {\r\n charBound.width += diffSpace;\r\n charBound.kernedWidth += diffSpace;\r\n spaceCount++;\r\n }\r\n \r\n // For RTL, shift all characters to the right by the total expansion\r\n // minus the expansion that comes after this character\r\n const remainingSpaces = numberOfSpaces - spaceCount;\r\n const shiftAmount = remainingSpaces * diffSpace;\r\n charBound.left += shiftAmount;\r\n }\r\n }\r\n } else {\r\n // LTR processing (original logic)\r\n for (let j = 0; j <= line.length; j++) {\r\n charBound = this.__charBounds[i][j];\r\n if (charBound) {\r\n if (this._reSpaceAndTab.test(line[j])) {\r\n charBound.width += diffSpace;\r\n charBound.kernedWidth += diffSpace;\r\n charBound.left += accumulatedSpace;\r\n accumulatedSpace += diffSpace;\r\n } else {\r\n charBound.left += accumulatedSpace;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Advanced layout using new text engine (Konva-compatible)\r\n * @private\r\n */\r\n _layoutTextAdvanced(): LayoutResult {\r\n const options = this._getAdvancedLayoutOptions();\r\n return layoutText(options);\r\n }\r\n\r\n /**\r\n * Get advanced layout options from current text properties\r\n * @private\r\n */\r\n _getAdvancedLayoutOptions(): TextLayoutOptions {\r\n return {\r\n text: this.text,\r\n width: this.width,\r\n height: this.height,\r\n wrap: this.wrap || 'word',\r\n align: this._mapTextAlignToAlign(this.textAlign),\r\n ellipsis: this.ellipsis || false,\r\n fontSize: this.fontSize,\r\n lineHeight: this.lineHeight,\r\n letterSpacing: this.letterSpacing || 0,\r\n charSpacing: this.charSpacing,\r\n direction: this.direction === 'inherit' ? 'ltr' : this.direction,\r\n fontFamily: this.fontFamily,\r\n fontStyle: this.fontStyle,\r\n fontWeight: this.fontWeight,\r\n verticalAlign: this.verticalAlign || 'top',\r\n };\r\n }\r\n\r\n /**\r\n * Map Fabric textAlign to Konva align format\r\n * @private\r\n */\r\n _mapTextAlignToAlign(textAlign: string): 'left' | 'center' | 'right' | 'justify' {\r\n switch (textAlign) {\r\n case 'center':\r\n case CENTER:\r\n return 'center';\r\n case 'right':\r\n case RIGHT:\r\n return 'right';\r\n case 'justify':\r\n case JUSTIFY:\r\n case JUSTIFY_LEFT:\r\n case JUSTIFY_RIGHT:\r\n case JUSTIFY_CENTER:\r\n return 'justify';\r\n default:\r\n return 'left';\r\n }\r\n }\r\n\r\n /**\r\n * Enhanced initDimensions that uses advanced layout when enabled\r\n */\r\n initDimensionsAdvanced(): void {\r\n if (!this.enableAdvancedLayout) {\r\n return this.initDimensions();\r\n }\r\n\r\n const layout = this._layoutTextAdvanced();\r\n \r\n // Update dimensions from layout\r\n this.width = layout.totalWidth || this.MIN_TEXT_WIDTH;\r\n this.height = layout.totalHeight;\r\n \r\n // Convert layout to legacy format for compatibility\r\n this._convertLayoutToLegacyFormat(layout);\r\n \r\n this.dirty = true;\r\n }\r\n\r\n /**\r\n * Convert new layout format to legacy _textLines and __charBounds format\r\n * @private\r\n */\r\n _convertLayoutToLegacyFormat(layout: LayoutResult): void {\r\n this._textLines = layout.lines.map(line => line.graphemes);\r\n (this as any).textLines = layout.lines.map(line => line.text);\r\n \r\n // Convert bounds to legacy format\r\n this.__charBounds = layout.lines.map(line => \r\n line.bounds.map(bound => ({\r\n left: bound.left,\r\n top: bound.y,\r\n width: bound.width,\r\n height: bound.height,\r\n kernedWidth: bound.kernedWidth,\r\n deltaY: bound.deltaY || 0,\r\n }))\r\n );\r\n \r\n // Update grapheme info for compatibility\r\n if (layout.lines.length > 0) {\r\n (this as any)._unwrappedTextLines = layout.lines.map(line => line.graphemes);\r\n }\r\n }\r\n\r\n /**\r\n * Detect if the text line is ended with an hard break\r\n * text and itext do not have wrapping, return false\r\n * @return {Boolean}\r\n */\r\n isEndOfWrapping(lineIndex: number): boolean {\r\n return lineIndex === this._textLines.length - 1;\r\n }\r\n\r\n /**\r\n * Detect if a line has a linebreak and so we need to account for it when moving\r\n * and counting style.\r\n * It return always 1 for text and Itext. Textbox has its own implementation\r\n * @return Number\r\n */\r\n missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1;\r\n missingNewlineOffset(_lineIndex: number): 1 {\r\n return 1;\r\n }\r\n\r\n /**\r\n * Returns 2d representation (lineIndex and charIndex) of cursor\r\n * @param {Number} selectionStart\r\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\r\n */\r\n get2DCursorLocation(selectionStart: number, skipWrapping?: boolean) {\r\n const lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\r\n let i: number;\r\n for (i = 0; i < lines.length; i++) {\r\n if (selectionStart <= lines[i].length) {\r\n return {\r\n lineIndex: i,\r\n charIndex: selectionStart,\r\n };\r\n }\r\n selectionStart -=\r\n lines[i].length + this.missingNewlineOffset(i, skipWrapping);\r\n }\r\n return {\r\n lineIndex: i - 1,\r\n charIndex:\r\n lines[i - 1].length < selectionStart\r\n ? lines[i - 1].length\r\n : selectionStart,\r\n };\r\n }\r\n\r\n /**\r\n * Returns string representation of an instance\r\n * @return {String} String representation of text object\r\n */\r\n toString(): string {\r\n return `#<Text (${this.complexity()}): { \"text\": \"${\r\n this.text\r\n }\", \"fontFamily\": \"${this.fontFamily}\" }>`;\r\n }\r\n\r\n /**\r\n * Return the dimension and the zoom level needed to create a cache canvas\r\n * big enough to host the object to be cached.\r\n * @private\r\n * @param {Object} dim.x width of object to be cached\r\n * @param {Object} dim.y height of object to be cached\r\n * @return {Object}.width width of canvas\r\n * @return {Object}.height height of canvas\r\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\r\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\r\n */\r\n _getCacheCanvasDimensions(): TCacheCanvasDimensions {\r\n const dims = super._getCacheCanvasDimensions();\r\n const fontSize = this.fontSize;\r\n dims.width += fontSize * dims.zoomX;\r\n dims.height += fontSize * dims.zoomY;\r\n return dims;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _render(ctx: CanvasRenderingContext2D) {\r\n const path = this.path;\r\n path && !path.isNotVisible() && path._render(ctx);\r\n this._setTextStyles(ctx);\r\n this._renderTextLinesBackground(ctx);\r\n this._renderTextDecoration(ctx, 'underline');\r\n this._renderText(ctx);\r\n this._renderTextDecoration(ctx, 'overline');\r\n this._renderTextDecoration(ctx, 'linethrough');\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderText(ctx: CanvasRenderingContext2D) {\r\n // Skip text rendering if in overlay editing mode\r\n if ((this as any).__overlayEditor) {\r\n return;\r\n }\r\n if (this.paintFirst === STROKE) {\r\n this._renderTextStroke(ctx);\r\n this._renderTextFill(ctx);\r\n } else {\r\n this._renderTextFill(ctx);\r\n this._renderTextStroke(ctx);\r\n }\r\n }\r\n\r\n /**\r\n * Set the font parameter of the context with the object properties or with charStyle\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Object} [charStyle] object with font style properties\r\n * @param {String} [charStyle.fontFamily] Font Family\r\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\r\n * @param {String} [charStyle.fontWeight] Font weight\r\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\r\n */\r\n _setTextStyles(\r\n ctx: CanvasRenderingContext2D,\r\n charStyle?: any,\r\n forMeasuring?: boolean,\r\n ) {\r\n ctx.textBaseline = 'alphabetic';\r\n if (this.path) {\r\n switch (this.pathAlign) {\r\n case CENTER:\r\n ctx.textBaseline = 'middle';\r\n break;\r\n case 'ascender':\r\n ctx.textBaseline = TOP;\r\n break;\r\n case 'descender':\r\n ctx.textBaseline = BOTTOM;\r\n break;\r\n }\r\n }\r\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\r\n }\r\n\r\n /**\r\n * calculate and return the text Width measuring each line.\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @return {Number} Maximum width of Text object\r\n */\r\n calcTextWidth(): number {\r\n let maxWidth = this.getLineWidth(0);\r\n\r\n for (let i = 1, len = this._textLines.length; i < len; i++) {\r\n const currentLineWidth = this.getLineWidth(i);\r\n if (currentLineWidth > maxWidth) {\r\n maxWidth = currentLineWidth;\r\n }\r\n }\r\n return maxWidth;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {String} line Text to render\r\n * @param {Number} left Left position of text\r\n * @param {Number} top Top position of text\r\n * @param {Number} lineIndex Index of a line in a text\r\n */\r\n _renderTextLine(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n line: string[],\r\n left: number,\r\n top: number,\r\n lineIndex: number,\r\n ) {\r\n this._renderChars(method, ctx, line, left, top, lineIndex);\r\n }\r\n\r\n /**\r\n * Renders the text background for lines, taking care of style\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextLinesBackground(ctx: CanvasRenderingContext2D) {\r\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\r\n return;\r\n }\r\n const originalFill = ctx.fillStyle,\r\n leftOffset = this._getLeftOffset();\r\n let lineTopOffset = this._getTopOffset();\r\n\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i);\r\n if (\r\n !this.textBackgroundColor &&\r\n !this.styleHas('textBackgroundColor', i)\r\n ) {\r\n lineTopOffset += heightOfLine;\r\n continue;\r\n }\r\n const jlen = this._textLines[i].length;\r\n const lineLeftOffset = this._getLineLeftOffset(i);\r\n let boxWidth = 0;\r\n let boxStart = 0;\r\n let drawStart;\r\n let currentColor;\r\n let lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\r\n for (let j = 0; j < jlen; j++) {\r\n // at this point charbox are either standard or full with pathInfo if there is a path.\r\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\r\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\r\n if (this.path) {\r\n ctx.save();\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n ctx.fillStyle = currentColor;\r\n currentColor &&\r\n ctx.fillRect(\r\n -charBox.width / 2,\r\n (-heightOfLine / this.lineHeight) * (1 - this._fontSizeFraction),\r\n charBox.width,\r\n heightOfLine / this.lineHeight,\r\n );\r\n ctx.restore();\r\n } else if (currentColor !== lastColor) {\r\n drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = lastColor;\r\n lastColor &&\r\n ctx.fillRect(\r\n drawStart,\r\n lineTopOffset,\r\n boxWidth,\r\n heightOfLine / this.lineHeight,\r\n );\r\n boxStart = charBox.left;\r\n boxWidth = charBox.width;\r\n lastColor = currentColor;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n }\r\n if (currentColor && !this.path) {\r\n drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = currentColor;\r\n ctx.fillRect(\r\n drawStart,\r\n lineTopOffset,\r\n boxWidth,\r\n heightOfLine / this.lineHeight,\r\n );\r\n }\r\n lineTopOffset += heightOfLine;\r\n }\r\n ctx.fillStyle = originalFill;\r\n // if there is text background color no\r\n // other shadows should be casted\r\n this._removeShadow(ctx);\r\n }\r\n\r\n /**\r\n * measure and return the width of a single character.\r\n * possibly overridden to accommodate different measure logic or\r\n * to hook some external lib for character measurement\r\n * @private\r\n * @param {String} _char, char to be measured\r\n * @param {Object} charStyle style of char to be measured\r\n * @param {String} [previousChar] previous char\r\n * @param {Object} [prevCharStyle] style of previous char\r\n */\r\n _measureChar(\r\n _char: string,\r\n charStyle: CompleteTextStyleDeclaration,\r\n previousChar: string | undefined,\r\n prevCharStyle: CompleteTextStyleDeclaration | Record<string, never>,\r\n ) {\r\n const fontCache = cache.getFontCache(charStyle),\r\n fontDeclaration = this._getFontDeclaration(charStyle),\r\n couple = previousChar + _char,\r\n stylesAreEqual =\r\n previousChar &&\r\n fontDeclaration === this._getFontDeclaration(prevCharStyle),\r\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE;\r\n let width: number | undefined,\r\n coupleWidth: number | undefined,\r\n previousWidth: number | undefined,\r\n kernedWidth: number | undefined;\r\n\r\n if (previousChar && fontCache[previousChar] !== undefined) {\r\n previousWidth = fontCache[previousChar];\r\n }\r\n if (fontCache[_char] !== undefined) {\r\n kernedWidth = width = fontCache[_char];\r\n }\r\n if (stylesAreEqual && fontCache[couple] !== undefined) {\r\n coupleWidth = fontCache[couple];\r\n kernedWidth = coupleWidth - previousWidth!;\r\n }\r\n if (\r\n width === undefined ||\r\n previousWidth === undefined ||\r\n coupleWidth === undefined\r\n ) {\r\n const ctx = getMeasuringContext()!;\r\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\r\n this._setTextStyles(ctx, charStyle, true);\r\n if (width === undefined) {\r\n kernedWidth = width = ctx.measureText(_char).width;\r\n fontCache[_char] = width;\r\n }\r\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\r\n previousWidth = ctx.measureText(previousChar).width;\r\n fontCache[previousChar] = previousWidth;\r\n }\r\n if (stylesAreEqual && coupleWidth === undefined) {\r\n // we can measure the kerning couple and subtract the width of the previous character\r\n coupleWidth = ctx.measureText(couple).width;\r\n fontCache[couple] = coupleWidth;\r\n // safe to use the non-null since if undefined we defined it before.\r\n kernedWidth = coupleWidth - previousWidth!;\r\n }\r\n }\r\n return {\r\n width: width * fontMultiplier,\r\n kernedWidth: kernedWidth! * fontMultiplier,\r\n };\r\n }\r\n\r\n /**\r\n * Computes height of character at given position\r\n * @param {Number} line the line index number\r\n * @param {Number} _char the character index number\r\n * @return {Number} fontSize of the character\r\n */\r\n getHeightOfChar(line: number, _char: number): number {\r\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\r\n }\r\n\r\n /**\r\n * measure a text line measuring all characters.\r\n * @param {Number} lineIndex line number\r\n */\r\n measureLine(lineIndex: number) {\r\n const lineInfo = this._measureLine(lineIndex);\r\n if (this.charSpacing !== 0) {\r\n lineInfo.width -= this._getWidthOfCharSpacing();\r\n }\r\n if (lineInfo.width < 0) {\r\n lineInfo.width = 0;\r\n }\r\n return lineInfo;\r\n }\r\n\r\n /**\r\n * measure every grapheme of a line, populating __charBounds\r\n * @param {Number} lineIndex\r\n * @return {Object} object.width total width of characters\r\n * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs\r\n */\r\n _measureLine(lineIndex: number) {\r\n let width = 0,\r\n prevGrapheme: string | undefined,\r\n graphemeInfo: GraphemeBBox | undefined;\r\n\r\n const reverse = this.pathSide === RIGHT,\r\n path = this.path,\r\n line = this._textLines[lineIndex],\r\n llength = line.length,\r\n lineBounds = new Array<GraphemeBBox>(llength);\r\n\r\n this.__charBounds[lineIndex] = lineBounds;\r\n for (let i = 0; i < llength; i++) {\r\n const grapheme = line[i];\r\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\r\n lineBounds[i] = graphemeInfo;\r\n width += graphemeInfo.kernedWidth;\r\n prevGrapheme = grapheme;\r\n }\r\n // this latest bound box represent the last character of the line\r\n // to simplify cursor handling in interactive mode.\r\n lineBounds[llength] = {\r\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\r\n width: 0,\r\n kernedWidth: 0,\r\n height: this.fontSize,\r\n deltaY: 0,\r\n } as GraphemeBBox;\r\n if (path && path.segmentsInfo) {\r\n let positionInPath = 0;\r\n const totalPathLength =\r\n path.segmentsInfo[path.segmentsInfo.length - 1].length;\r\n switch (this.textAlign) {\r\n case LEFT:\r\n positionInPath = reverse ? totalPathLength - width : 0;\r\n break;\r\n case CENTER:\r\n positionInPath = (totalPathLength - width) / 2;\r\n break;\r\n case RIGHT:\r\n positionInPath = reverse ? 0 : totalPathLength - width;\r\n break;\r\n //todo - add support for justify\r\n }\r\n positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\r\n for (\r\n let i = reverse ? llength - 1 : 0;\r\n reverse ? i >= 0 : i < llength;\r\n reverse ? i-- : i++\r\n ) {\r\n graphemeInfo = lineBounds[i];\r\n if (positionInPath > totalPathLength) {\r\n positionInPath %= totalPathLength;\r\n } else if (positionInPath < 0) {\r\n positionInPath += totalPathLength;\r\n }\r\n // it would probably much faster to send all the grapheme position for a line\r\n // and calculate path position/angle at once.\r\n this._setGraphemeOnPath(positionInPath, graphemeInfo);\r\n positionInPath += graphemeInfo.kernedWidth;\r\n }\r\n }\r\n return { width: width, numOfSpaces: 0 };\r\n }\r\n\r\n /**\r\n * Calculate the angle and the left,top position of the char that follow a path.\r\n * It appends it to graphemeInfo to be reused later at rendering\r\n * @private\r\n * @param {Number} positionInPath to be measured\r\n * @param {GraphemeBBox} graphemeInfo current grapheme box information\r\n * @param {Object} startingPoint position of the point\r\n */\r\n _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox) {\r\n const centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\r\n path = this.path!;\r\n\r\n // we are at currentPositionOnPath. we want to know what point on the path is.\r\n const info = getPointOnPath(path.path, centerPosition, path.segmentsInfo)!;\r\n graphemeInfo.renderLeft = info.x - path.pathOffset.x;\r\n graphemeInfo.renderTop = info.y - path.pathOffset.y;\r\n graphemeInfo.angle = info.angle + (this.pathSide === RIGHT ? Math.PI : 0);\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} grapheme to be measured\r\n * @param {Number} lineIndex index of the line where the char is\r\n * @param {Number} charIndex position in the line\r\n * @param {String} [prevGrapheme] character preceding the one to be measured\r\n * @returns {GraphemeBBox} grapheme bbox\r\n */\r\n _getGraphemeBox(\r\n grapheme: string,\r\n lineIndex: number,\r\n charIndex: number,\r\n prevGrapheme?: string,\r\n skipLeft?: boolean,\r\n ): GraphemeBBox {\r\n const style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\r\n prevStyle = prevGrapheme\r\n ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1)\r\n : {},\r\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle);\r\n let kernedWidth = info.kernedWidth,\r\n width = info.width,\r\n charSpacing;\r\n\r\n if (this.charSpacing !== 0) {\r\n charSpacing = this._getWidthOfCharSpacing();\r\n width += charSpacing;\r\n kernedWidth += charSpacing;\r\n }\r\n\r\n const box: GraphemeBBox = {\r\n width,\r\n left: 0,\r\n height: style.fontSize,\r\n kernedWidth,\r\n deltaY: style.deltaY,\r\n };\r\n if (charIndex > 0 && !skipLeft) {\r\n const previousBox = this.__charBounds[lineIndex][charIndex - 1];\r\n box.left =\r\n previousBox.left + previousBox.width + info.kernedWidth - info.width;\r\n }\r\n return box;\r\n }\r\n\r\n /**\r\n * Calculate height of line at 'lineIndex'\r\n * @param {Number} lineIndex index of line to calculate\r\n * @return {Number}\r\n */\r\n getHeightOfLine(lineIndex: number): number {\r\n if (this.__lineHeights[lineIndex]) {\r\n return this.__lineHeights[lineIndex];\r\n }\r\n\r\n // char 0 is measured before the line cycle because it needs to char\r\n // emptylines\r\n let maxHeight = this.getHeightOfChar(lineIndex, 0);\r\n for (let i = 1, len = this._textLines[lineIndex].length; i < len; i++) {\r\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\r\n }\r\n\r\n return (this.__lineHeights[lineIndex] =\r\n maxHeight * this.lineHeight * this._fontSizeMult);\r\n }\r\n\r\n /**\r\n * Calculate text box height\r\n */\r\n calcTextHeight() {\r\n let lineHeight,\r\n height = 0;\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n lineHeight = this.getHeightOfLine(i);\r\n height += i === len - 1 ? lineHeight / this.lineHeight : lineHeight;\r\n }\r\n return height;\r\n }\r\n\r\n /**\r\n * @private\r\n * @return {Number} Left offset\r\n */\r\n _getLeftOffset(): number {\r\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\r\n }\r\n\r\n /**\r\n * @private\r\n * @return {Number} Top offset\r\n */\r\n _getTopOffset(): number {\r\n return -this.height / 2;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\r\n */\r\n _renderTextCommon(\r\n ctx: CanvasRenderingContext2D,\r\n method: 'fillText' | 'strokeText',\r\n ) {\r\n ctx.save();\r\n let lineHeights = 0;\r\n const left = this._getLeftOffset(),\r\n top = this._getTopOffset();\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i),\r\n maxHeight = heightOfLine / this.lineHeight,\r\n leftOffset = this._getLineLeftOffset(i);\r\n this._renderTextLine(\r\n method,\r\n ctx,\r\n this._textLines[i],\r\n left + leftOffset,\r\n top + lineHeights + maxHeight,\r\n i,\r\n );\r\n lineHeights += heightOfLine;\r\n }\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextFill(ctx: CanvasRenderingContext2D) {\r\n if (!this.fill && !this.styleHas(FILL)) {\r\n return;\r\n }\r\n\r\n this._renderTextCommon(ctx, 'fillText');\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextStroke(ctx: CanvasRenderingContext2D) {\r\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\r\n return;\r\n }\r\n\r\n if (this.shadow && !this.shadow.affectStroke) {\r\n this._removeShadow(ctx);\r\n }\r\n\r\n ctx.save();\r\n this._setLineDash(ctx, this.strokeDashArray);\r\n ctx.beginPath();\r\n this._renderTextCommon(ctx, 'strokeText');\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method fillText or strokeText.\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Array} line Content of the line, splitted in an array by grapheme\r\n * @param {Number} left\r\n * @param {Number} top\r\n * @param {Number} lineIndex\r\n */\r\n _renderChars(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n line: Array<any>,\r\n left: number,\r\n top: number,\r\n lineIndex: number,\r\n ) {\r\n const lineHeight = this.getHeightOfLine(lineIndex),\r\n isJustify = this.textAlign.includes(JUSTIFY),\r\n path = this.path,\r\n shortCut =\r\n !isJustify &&\r\n this.charSpacing === 0 &&\r\n this.isEmptyStyles(lineIndex) &&\r\n !path,\r\n isLtr = this.direction === 'ltr',\r\n sign = this.direction === 'ltr' ? 1 : -1,\r\n // this was changed in the PR #7674\r\n // currentDirection = ctx.canvas.getAttribute('dir');\r\n currentDirection = ctx.direction;\r\n\r\n let actualStyle,\r\n nextStyle,\r\n charsToRender = '',\r\n charBox,\r\n boxWidth = 0,\r\n timeToRender,\r\n drawingLeft;\r\n\r\n ctx.save();\r\n if (currentDirection !== this.direction) {\r\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\r\n ctx.direction = isLtr ? 'ltr' : 'rtl';\r\n \r\n // For justify alignments, we need to set the correct canvas text alignment\r\n // This is crucial for RTL text to render in the correct order\r\n if (isJustify) {\r\n // Justify uses LEFT alignment as a base, letting the character positioning handle justification\r\n ctx.textAlign = LEFT;\r\n } else {\r\n ctx.textAlign = isLtr ? LEFT : RIGHT;\r\n }\r\n }\r\n top -= (lineHeight * this._fontSizeFraction) / this.lineHeight;\r\n if (shortCut) {\r\n // render all the line in one pass without checking\r\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\r\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top);\r\n ctx.restore();\r\n return;\r\n }\r\n for (let i = 0, len = line.length - 1; i <= len; i++) {\r\n timeToRender = i === len || this.charSpacing || path;\r\n charsToRender += line[i];\r\n charBox = this.__charBounds[lineIndex][i] as Required<GraphemeBBox>;\r\n if (boxWidth === 0) {\r\n left += sign * (charBox.kernedWidth - charBox.width);\r\n boxWidth += charBox.width;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n if (isJustify && !timeToRender) {\r\n if (this._reSpaceAndTab.test(line[i])) {\r\n timeToRender = true;\r\n }\r\n }\r\n if (!timeToRender) {\r\n // if we have charSpacing, we render char by char\r\n actualStyle =\r\n actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\r\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\r\n timeToRender = hasStyleChanged(actualStyle, nextStyle, false);\r\n }\r\n if (timeToRender) {\r\n if (path) {\r\n ctx.save();\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n this._renderChar(\r\n method,\r\n ctx,\r\n lineIndex,\r\n i,\r\n charsToRender,\r\n -boxWidth / 2,\r\n 0,\r\n );\r\n ctx.restore();\r\n } else {\r\n drawingLeft = left;\r\n this._renderChar(\r\n method,\r\n ctx,\r\n lineIndex,\r\n i,\r\n charsToRender,\r\n drawingLeft,\r\n top,\r\n );\r\n }\r\n charsToRender = '';\r\n actualStyle = nextStyle;\r\n left += sign * boxWidth;\r\n boxWidth = 0;\r\n }\r\n }\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * This function try to patch the missing gradientTransform on canvas gradients.\r\n * transforming a context to transform the gradient, is going to transform the stroke too.\r\n * we want to transform the gradient but not the stroke operation, so we create\r\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\r\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\r\n * is limited.\r\n * @private\r\n * @param {TFiller} filler a fabric gradient instance\r\n * @return {CanvasPattern} a pattern to use as fill/stroke style\r\n */\r\n _applyPatternGradientTransformText(filler: TFiller) {\r\n // TODO: verify compatibility with strokeUniform\r\n const width = this.width + this.strokeWidth,\r\n height = this.height + this.strokeWidth,\r\n pCanvas = createCanvasElementFor({\r\n width,\r\n height,\r\n }),\r\n pCtx = pCanvas.getContext('2d')!;\r\n pCanvas.width = width;\r\n pCanvas.height = height;\r\n pCtx.beginPath();\r\n pCtx.moveTo(0, 0);\r\n pCtx.lineTo(width, 0);\r\n pCtx.lineTo(width, height);\r\n pCtx.lineTo(0, height);\r\n pCtx.closePath();\r\n pCtx.translate(width / 2, height / 2);\r\n pCtx.fillStyle = filler.toLive(pCtx)!;\r\n this._applyPatternGradientTransform(pCtx, filler);\r\n pCtx.fill();\r\n return pCtx.createPattern(pCanvas, 'no-repeat')!;\r\n }\r\n\r\n handleFiller<T extends 'fill' | 'stroke'>(\r\n ctx: CanvasRenderingContext2D,\r\n property: `${T}Style`,\r\n filler: TFiller | string,\r\n ): { offsetX: number; offsetY: number } {\r\n let offsetX: number, offsetY: number;\r\n if (isFiller(filler)) {\r\n if (\r\n (filler as Gradient<'linear'>).gradientUnits === 'percentage' ||\r\n (filler as Gradient<'linear'>).gradientTransform ||\r\n (filler as Pattern).patternTransform\r\n ) {\r\n // need to transform gradient in a pattern.\r\n // this is a slow process. If you are hitting this codepath, and the object\r\n // is not using caching, you should consider switching it on.\r\n // we need a canvas as big as the current object caching canvas.\r\n offsetX = -this.width / 2;\r\n offsetY = -this.height / 2;\r\n ctx.translate(offsetX, offsetY);\r\n ctx[property] = this._applyPatternGradientTransformText(filler);\r\n return { offsetX, offsetY };\r\n } else {\r\n // is a simple gradient or pattern\r\n ctx[property] = filler.toLive(ctx)!;\r\n return this._applyPatternGradientTransform(ctx, filler);\r\n }\r\n } else {\r\n // is a color\r\n ctx[property] = filler;\r\n }\r\n return { offsetX: 0, offsetY: 0 };\r\n }\r\n\r\n /**\r\n * This function prepare the canvas for a stroke style, and stroke and strokeWidth\r\n * need to be sent in as defined\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {CompleteTextStyleDeclaration} style with stroke and strokeWidth defined\r\n * @returns\r\n */\r\n _setStrokeStyles(\r\n ctx: CanvasRenderingContext2D,\r\n {\r\n stroke,\r\n strokeWidth,\r\n }: Pick<CompleteTextStyleDeclaration, 'stroke' | 'strokeWidth'>,\r\n ) {\r\n ctx.lineWidth = strokeWidth;\r\n ctx.lineCap = this.strokeLineCap;\r\n ctx.lineDashOffset = this.strokeDashOffset;\r\n ctx.lineJoin = this.strokeLineJoin;\r\n ctx.miterLimit = this.strokeMiterLimit;\r\n return this.handleFiller(ctx, 'strokeStyle', stroke!);\r\n }\r\n\r\n /**\r\n * This function prepare the canvas for a ill style, and fill\r\n * need to be sent in as defined\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {CompleteTextStyleDeclaration} style with ill defined\r\n * @returns\r\n */\r\n _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>) {\r\n return this.handleFiller(ctx, 'fillStyle', fill!);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Number} lineIndex\r\n * @param {Number} charIndex\r\n * @param {String} _char\r\n * @param {Number} left Left coordinate\r\n * @param {Number} top Top coordinate\r\n * @param {Number} lineHeight Height of the line\r\n */\r\n _renderChar(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n lineIndex: number,\r\n charIndex: number,\r\n _char: string,\r\n left: number,\r\n top: number,\r\n ) {\r\n const decl = this._getStyleDeclaration(lineIndex, charIndex),\r\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\r\n shouldFill = method === 'fillText' && fullDecl.fill,\r\n shouldStroke =\r\n method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\r\n\r\n if (!shouldStroke && !shouldFill) {\r\n return;\r\n }\r\n ctx.save();\r\n\r\n ctx.font = this._getFontDeclaration(fullDecl);\r\n\r\n if (decl.textBackgroundColor) {\r\n this._removeShadow(ctx);\r\n }\r\n if (decl.deltaY) {\r\n top += decl.deltaY;\r\n }\r\n\r\n if (shouldFill) {\r\n const fillOffsets = this._setFillStyles(ctx, fullDecl);\r\n ctx.fillText(\r\n _char,\r\n left - fillOffsets.offsetX,\r\n top - fillOffsets.offsetY,\r\n );\r\n }\r\n\r\n if (shouldStroke) {\r\n const strokeOffsets = this._setStrokeStyles(ctx, fullDecl);\r\n ctx.strokeText(\r\n _char,\r\n left - strokeOffsets.offsetX,\r\n top - strokeOffsets.offsetY,\r\n );\r\n }\r\n\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * Turns the character into a 'superior figure' (i.e. 'superscript')\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n */\r\n setSuperscript(start: number, end: number) {\r\n this._setScript(start, end, this.superscript);\r\n }\r\n\r\n /**\r\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n */\r\n setSubscript(start: number, end: number) {\r\n this._setScript(start, end, this.subscript);\r\n }\r\n\r\n /**\r\n * Applies 'schema' at given position\r\n * @private\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n * @param {Number} schema\r\n */\r\n protected _setScript(\r\n start: number,\r\n end: number,\r\n schema: {\r\n size: number;\r\n baseline: number;\r\n },\r\n ) {\r\n const loc = this.get2DCursorLocation(start, true),\r\n fontSize = this.getValueOfPropertyAt(\r\n loc.lineIndex,\r\n loc.charIndex,\r\n 'fontSize',\r\n ),\r\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\r\n style = {\r\n fontSize: fontSize * schema.size,\r\n deltaY: dy + fontSize * schema.baseline,\r\n };\r\n this.setSelectionStyles(style, start, end);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {Number} lineIndex index text line\r\n * @return {Number} Line left offset\r\n */\r\n _getLineLeftOffset(lineIndex: number): number {\r\n const lineWidth = this.getLineWidth(lineIndex),\r\n lineDiff = this.width - lineWidth,\r\n textAlign = this.textAlign,\r\n direction = this.direction,\r\n isEndOfWrapping = this.isEndOfWrapping(lineIndex);\r\n let leftOffset = 0;\r\n \r\n // Handle justify alignments (excluding last lines and wrapped line ends)\r\n const isJustifyLine = \r\n textAlign === JUSTIFY ||\r\n (textAlign === JUSTIFY_CENTER && !isEndOfWrapping) ||\r\n (textAlign === JUSTIFY_RIGHT && !isEndOfWrapping) ||\r\n (textAlign === JUSTIFY_LEFT && !isEndOfWrapping);\r\n \r\n if (isJustifyLine) {\r\n // Justify lines should start at the left edge for LTR and right edge for RTL\r\n // The space distribution is handled by enlargeSpaces()\r\n if (direction === 'rtl') {\r\n // For RTL justify, we need to account for the line being right-aligned\r\n return 0;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n \r\n // Handle non-justify alignments\r\n if (textAlign === CENTER) {\r\n leftOffset = lineDiff / 2;\r\n }\r\n if (textAlign === RIGHT) {\r\n leftOffset = lineDiff;\r\n }\r\n if (textAlign === JUSTIFY_CENTER) {\r\n leftOffset = lineDiff / 2;\r\n }\r\n if (textAlign === JUSTIFY_RIGHT) {\r\n leftOffset = lineDiff;\r\n }\r\n \r\n // Apply RTL adjustments for non-justify alignments\r\n if (direction === 'rtl') {\r\n if (\r\n textAlign === RIGHT ||\r\n textAlign === JUSTIFY ||\r\n textAlign === JUSTIFY_RIGHT\r\n ) {\r\n leftOffset = 0;\r\n } else if (textAlign === LEFT || textAlign === JUSTIFY_LEFT) {\r\n leftOffset = -lineDiff;\r\n } else if (textAlign === CENTER || textAlign === JUSTIFY_CENTER) {\r\n leftOffset = -lineDiff / 2;\r\n }\r\n }\r\n return leftOffset;\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _clearCache() {\r\n this._forceClearCache = false;\r\n this.__lineWidths = [];\r\n this.__lineHeights = [];\r\n this.__charBounds = [];\r\n }\r\n\r\n /**\r\n * Measure a single line given its index. Used to calculate the initial\r\n * text bounding box. The values are calculated and stored in __lineWidths cache.\r\n * @private\r\n * @param {Number} lineIndex line number\r\n * @return {Number} Line width\r\n */\r\n getLineWidth(lineIndex: number): number {\r\n if (this.__lineWidths[lineIndex] !== undefined) {\r\n return this.__lineWidths[lineIndex];\r\n }\r\n\r\n const { width } = this.measureLine(lineIndex);\r\n this.__lineWidths[lineIndex] = width;\r\n return width;\r\n }\r\n\r\n _getWidthOfCharSpacing() {\r\n if (this.charSpacing !== 0) {\r\n return (this.fontSize * this.charSpacing) / 1000;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Retrieves the value of property at given character position\r\n * @param {Number} lineIndex the line number\r\n * @param {Number} charIndex the character number\r\n * @param {String} property the property name\r\n * @returns the value of 'property'\r\n */\r\n getValueOfPropertyAt<T extends StylePropertiesType>(\r\n lineIndex: number,\r\n charIndex: number,\r\n property: T,\r\n ): this[T] {\r\n const charStyle = this._getStyleDeclaration(lineIndex, charIndex);\r\n return (charStyle[property] ?? this[property]) as this[T];\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextDecoration(\r\n ctx: CanvasRenderingContext2D,\r\n type: 'underline' | 'linethrough' | 'overline',\r\n ) {\r\n if (!this[type] && !this.styleHas(type)) {\r\n return;\r\n }\r\n let topOffset = this._getTopOffset();\r\n const leftOffset = this._getLeftOffset(),\r\n path = this.path,\r\n charSpacing = this._getWidthOfCharSpacing(),\r\n offsetAligner =\r\n type === 'linethrough' ? 0.5 : type === 'overline' ? 1 : 0,\r\n offsetY = this.offsets[type];\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i);\r\n if (!this[type] && !this.styleHas(type, i)) {\r\n topOffset += heightOfLine;\r\n continue;\r\n }\r\n const line = this._textLines[i];\r\n const maxHeight = heightOfLine / this.lineHeight;\r\n const lineLeftOffset = this._getLineLeftOffset(i);\r\n let boxStart = 0;\r\n let boxWidth = 0;\r\n let lastDecoration = this.getValueOfPropertyAt(i, 0, type);\r\n let lastFill = this.getValueOfPropertyAt(i, 0, FILL);\r\n let lastTickness = this.getValueOfPropertyAt(\r\n i,\r\n 0,\r\n TEXT_DECORATION_THICKNESS,\r\n );\r\n let currentDecoration = lastDecoration;\r\n let currentFill = lastFill;\r\n let currentTickness = lastTickness;\r\n const top = topOffset + maxHeight * (1 - this._fontSizeFraction);\r\n let size = this.getHeightOfChar(i, 0);\r\n let dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\r\n for (let j = 0, jlen = line.length; j < jlen; j++) {\r\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\r\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\r\n currentFill = this.getValueOfPropertyAt(i, j, FILL);\r\n currentTickness = this.getValueOfPropertyAt(\r\n i,\r\n j,\r\n TEXT_DECORATION_THICKNESS,\r\n );\r\n const currentSize = this.getHeightOfChar(i, j);\r\n const currentDy = this.getValueOfPropertyAt(i, j, 'deltaY');\r\n if (path && currentDecoration && currentFill) {\r\n const finalTickness = (this.fontSize * currentTickness) / 1000;\r\n ctx.save();\r\n // bug? verify lastFill is a valid fill here.\r\n ctx.fillStyle = lastFill as string;\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n ctx.fillRect(\r\n -charBox.kernedWidth / 2,\r\n offsetY * currentSize + currentDy - offsetAligner * finalTickness,\r\n charBox.kernedWidth,\r\n finalTickness,\r\n );\r\n ctx.restore();\r\n } else if (\r\n (currentDecoration !== lastDecoration ||\r\n currentFill !== lastFill ||\r\n currentSize !== size ||\r\n currentTickness !== lastTickness ||\r\n currentDy !== dy) &&\r\n boxWidth > 0\r\n ) {\r\n const finalTickness = (this.fontSize * lastTickness) / 1000;\r\n let drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n if (lastDecoration && lastFill && lastTickness) {\r\n // bug? verify lastFill is a valid fill here.\r\n ctx.fillStyle = lastFill as string;\r\n ctx.fillRect(\r\n drawStart,\r\n top + offsetY * size + dy - offsetAligner * finalTickness,\r\n boxWidth,\r\n finalTickness,\r\n );\r\n }\r\n boxStart = charBox.left;\r\n boxWidth = charBox.width;\r\n lastDecoration = currentDecoration;\r\n lastTickness = currentTickness;\r\n lastFill = currentFill;\r\n size = currentSize;\r\n dy = currentDy;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n }\r\n let drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = currentFill as string;\r\n const finalTickness = (this.fontSize * currentTickness) / 1000;\r\n currentDecoration &&\r\n currentFill &&\r\n currentTickness &&\r\n ctx.fillRect(\r\n drawStart,\r\n top + offsetY * size + dy - offsetAligner * finalTickness,\r\n boxWidth - charSpacing,\r\n finalTickness,\r\n );\r\n topOffset += heightOfLine;\r\n }\r\n // if there is text background color no\r\n // other shadows should be casted\r\n this._removeShadow(ctx);\r\n }\r\n\r\n /**\r\n * return font declaration string for canvas context\r\n * @param {Object} [styleObject] object\r\n * @returns {String} font declaration formatted for canvas context.\r\n */\r\n _getFontDeclaration(\r\n {\r\n fontFamily = this.fontFamily,\r\n fontStyle = this.fontStyle,\r\n fontWeight = this.fontWeight,\r\n fontSize = this.fontSize,\r\n }: Partial<\r\n Pick<\r\n TextStyleDeclaration,\r\n 'fontFamily' | 'fontStyle' | 'fontWeight' | 'fontSize'\r\n >\r\n > = {},\r\n forMeasuring?: boolean,\r\n ): string {\r\n const parsedFontFamily =\r\n fontFamily.includes(\"'\") ||\r\n fontFamily.includes('\"') ||\r\n fontFamily.includes(',') ||\r\n FabricText.genericFonts.includes(fontFamily.toLowerCase())\r\n ? fontFamily\r\n : `\"${fontFamily}\"`;\r\n return [\r\n fontStyle,\r\n fontWeight,\r\n `${forMeasuring ? this.CACHE_FONT_SIZE : fontSize}px`,\r\n parsedFontFamily,\r\n ].join(' ');\r\n }\r\n\r\n /**\r\n * Renders text instance on a specified context\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n render(ctx: CanvasRenderingContext2D) {\r\n if (!this.visible) {\r\n return;\r\n }\r\n if (\r\n this.canvas &&\r\n this.canvas.skipOffscreen &&\r\n !this.group &&\r\n !this.isOnScreen()\r\n ) {\r\n return;\r\n }\r\n if (this._forceClearCache) {\r\n this.initDimensions();\r\n }\r\n super.render(ctx);\r\n }\r\n\r\n /**\r\n * Override this method to customize grapheme splitting\r\n * @todo the util `graphemeSplit` needs to be injectable in some way.\r\n * is more comfortable to inject the correct util rather than having to override text\r\n * in the middle of the prototype chain\r\n * @param {string} value\r\n * @returns {string[]} array of graphemes\r\n */\r\n graphemeSplit(value: string): string[] {\r\n return graphemeSplit(value);\r\n }\r\n\r\n /**\r\n * Returns the text as an array of lines.\r\n * @param {String} text text to split\r\n * @returns Lines in the text\r\n */\r\n _splitTextIntoLines(text: string): TextLinesInfo {\r\n const lines = text.split(this._reNewline),\r\n newLines = new Array<string[]>(lines.length),\r\n newLine = ['\\n'];\r\n let newText: string[] = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n newLines[i] = this.graphemeSplit(lines[i]);\r\n newText = newText.concat(newLines[i], newLine);\r\n }\r\n newText.pop();\r\n return {\r\n _unwrappedLines: newLines,\r\n lines: lines,\r\n graphemeText: newText,\r\n graphemeLines: newLines,\r\n };\r\n }\r\n\r\n /**\r\n * Returns object representation of an instance\r\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\r\n * @return {Object} Object representation of an instance\r\n */\r\n toObject<\r\n T extends Omit<Props & TClassProperties<this>, keyof SProps>,\r\n K extends keyof T = never,\r\n >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {\r\n return {\r\n ...super.toObject([...additionalProps, ...propertiesToInclude] as K[]),\r\n styles: stylesToArray(this.styles, this.text),\r\n ...(this.path ? { path: this.path.toObject() } : {}),\r\n };\r\n }\r\n\r\n set(key: string | any, value?: any) {\r\n const { textLayoutProperties } = this.constructor as typeof FabricText;\r\n super.set(key, value);\r\n let needsDims = false;\r\n let isAddingPath = false;\r\n if (typeof key === 'object') {\r\n for (const _key in key) {\r\n if (_key === 'path') {\r\n this.setPathInfo();\r\n }\r\n needsDims = needsDims || textLayoutProperties.includes(_key);\r\n isAddingPath = isAddingPath || _key === 'path';\r\n }\r\n } else {\r\n needsDims = textLayoutProperties.includes(key);\r\n isAddingPath = key === 'path';\r\n }\r\n if (isAddingPath) {\r\n this.setPathInfo();\r\n }\r\n if (needsDims && this.initialized) {\r\n // Clear browser lines when layout-affecting properties change\r\n clearBrowserLines(this);\r\n this.initDimensions();\r\n this.setCoords();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns complexity of an instance\r\n * @return {Number} complexity\r\n */\r\n complexity(): number {\r\n return 1;\r\n }\r\n\r\n /**\r\n * List of generic font families\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/font-family#generic-name\r\n */\r\n static genericFonts = [\r\n 'serif',\r\n 'sans-serif',\r\n 'monospace',\r\n 'cursive',\r\n 'fantasy',\r\n 'system-ui',\r\n 'ui-serif',\r\n 'ui-sans-serif',\r\n 'ui-monospace',\r\n 'ui-rounded',\r\n 'math',\r\n 'emoji',\r\n 'fangsong',\r\n ];\r\n\r\n /* _FROM_SVG_START_ */\r\n\r\n /**\r\n * List of attribute names to account for when parsing SVG element (used by {@link FabricText.fromElement})\r\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\r\n */\r\n static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(\r\n 'x',\r\n 'y',\r\n 'dx',\r\n 'dy',\r\n 'font-family',\r\n 'font-style',\r\n 'font-weight',\r\n 'font-size',\r\n 'letter-spacing',\r\n 'text-decoration',\r\n 'text-anchor',\r\n );\r\n\r\n /**\r\n * Returns FabricText instance from an SVG element (<b>not yet implemented</b>)\r\n * @param {HTMLElement} element Element to parse\r\n * @param {Object} [options] Options object\r\n */\r\n static async fromElement(\r\n element: HTMLElement | SVGElement,\r\n options?: Abortable,\r\n cssRules?: CSSRules,\r\n ) {\r\n const parsedAttributes = parseAttributes(\r\n element,\r\n FabricText.ATTRIBUTE_NAMES,\r\n cssRules,\r\n );\r\n\r\n const {\r\n textAnchor = LEFT as typeof LEFT | typeof CENTER | typeof RIGHT,\r\n textDecoration = '',\r\n dx = 0,\r\n dy = 0,\r\n top = 0,\r\n left = 0,\r\n fontSize = DEFAULT_SVG_FONT_SIZE,\r\n strokeWidth = 1,\r\n ...restOfOptions\r\n } = { ...options, ...parsedAttributes };\r\n\r\n const textContent = (element.textContent || '')\r\n .replace(/^\\s+|\\s+$|\\n+/g, '')\r\n .replace(/\\s+/g, ' ');\r\n\r\n // this code here is probably the usual issue for SVG center find\r\n // this can later looked at again and probably removed.\r\n\r\n const text = new this(textContent, {\r\n left: left + dx,\r\n top: top + dy,\r\n underline: textDecoration.includes('underline'),\r\n overline: textDecoration.includes('overline'),\r\n linethrough: textDecoration.includes('line-through'),\r\n // we initialize this as 0\r\n strokeWidth: 0,\r\n fontSize,\r\n ...restOfOptions,\r\n }),\r\n textHeightScaleFactor = text.getScaledHeight() / text.height,\r\n lineHeightDiff =\r\n (text.height + text.strokeWidth) * text.lineHeight - text.height,\r\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\r\n textHeight = text.getScaledHeight() + scaledDiff;\r\n\r\n let offX = 0;\r\n /*\r\n Adjust positioning:\r\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\r\n fabric output by default at top, left.\r\n */\r\n if (textAnchor === CENTER) {\r\n offX = text.getScaledWidth() / 2;\r\n }\r\n if (textAnchor === RIGHT) {\r\n offX = text.getScaledWidth();\r\n }\r\n text.set({\r\n left: text.left - offX,\r\n top:\r\n text.top -\r\n (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) /\r\n text.lineHeight,\r\n strokeWidth,\r\n });\r\n return text;\r\n }\r\n\r\n /* _FROM_SVG_END_ */\r\n\r\n /**\r\n * Returns FabricText instance from an object representation\r\n * @param {Object} object plain js Object to create an instance from\r\n * @returns {Promise<FabricText>}\r\n */\r\n static fromObject<\r\n T extends TOptions<SerializedTextProps>,\r\n S extends FabricText,\r\n >(object: T) {\r\n return this._fromObject<S>(\r\n {\r\n ...object,\r\n styles: stylesFromArray(object.styles || {}, object.text),\r\n },\r\n {\r\n extraParam: 'text',\r\n },\r\n );\r\n }\r\n}\r\n\r\napplyMixins(FabricText, [TextSVGExportMixin]);\r\nclassRegistry.setClass(FabricText);\r\nclassRegistry.setSVGClass(FabricText);\r\n"],"names":["measuringContext","getMeasuringContext","canvas","createCanvasElementFor","width","height","getContext","FabricText","StyledText","getDefaults","ownDefaults","constructor","text","options","_defineProperty","Object","assign","setOptions","styles","initialized","path","setPathInfo","initDimensions","setCoords","segmentsInfo","getPathSegmentsInfo","_splitText","browserLines","getBrowserLines","useOverlayEditing","_splitTextFromBrowserLines","newLines","_splitTextIntoLines","textLines","lines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","unwrappedLines","browserLine","push","lineGraphemes","graphemeSplit","concat","length","result","enableAdvancedLayout","initDimensionsAdvanced","_clearCache","dirty","calcTextWidth","cursorWidth","MIN_TEXT_WIDTH","calcTextHeight","textAlign","includes","JUSTIFY","enlargeSpaces","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","isRtl","direction","i","len","isEndOfWrapping","getLineWidth","match","_reSpacesAndTabs","j","_reSpaceAndTab","test","spaceCount","__charBounds","kernedWidth","remainingSpaces","shiftAmount","left","_layoutTextAdvanced","_getAdvancedLayoutOptions","layoutText","wrap","align","_mapTextAlignToAlign","ellipsis","fontSize","lineHeight","letterSpacing","charSpacing","fontFamily","fontStyle","fontWeight","verticalAlign","CENTER","RIGHT","JUSTIFY_LEFT","JUSTIFY_RIGHT","JUSTIFY_CENTER","layout","totalWidth","totalHeight","_convertLayoutToLegacyFormat","map","graphemes","bounds","bound","top","y","deltaY","lineIndex","missingNewlineOffset","_lineIndex","get2DCursorLocation","selectionStart","skipWrapping","charIndex","toString","complexity","_getCacheCanvasDimensions","dims","zoomX","zoomY","_render","ctx","isNotVisible","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","__overlayEditor","paintFirst","STROKE","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","pathAlign","TOP","BOTTOM","font","_getFontDeclaration","maxWidth","_renderTextLine","method","_renderChars","textBackgroundColor","styleHas","originalFill","fillStyle","leftOffset","_getLeftOffset","lineTopOffset","_getTopOffset","heightOfLine","getHeightOfLine","jlen","lineLeftOffset","_getLineLeftOffset","boxWidth","boxStart","drawStart","currentColor","lastColor","getValueOfPropertyAt","charBox","save","translate","renderLeft","renderTop","rotate","angle","fillRect","_fontSizeFraction","restore","_removeShadow","_measureChar","_char","previousChar","prevCharStyle","fontCache","cache","getFontCache","fontDeclaration","couple","stylesAreEqual","fontMultiplier","CACHE_FONT_SIZE","coupleWidth","previousWidth","undefined","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","prevGrapheme","graphemeInfo","reverse","pathSide","llength","lineBounds","Array","grapheme","_getGraphemeBox","positionInPath","totalPathLength","LEFT","pathStartOffset","_setGraphemeOnPath","numOfSpaces","centerPosition","info","getPointOnPath","x","pathOffset","Math","PI","skipLeft","style","getCompleteStyleDeclaration","prevStyle","box","previousBox","__lineHeights","maxHeight","max","_fontSizeMult","_renderTextCommon","lineHeights","fill","FILL","stroke","strokeWidth","isEmptyStyles","shadow","affectStroke","_setLineDash","strokeDashArray","beginPath","closePath","isJustify","shortCut","isLtr","sign","currentDirection","actualStyle","nextStyle","charsToRender","timeToRender","drawingLeft","setAttribute","_renderChar","join","hasStyleChanged","_applyPatternGradientTransformText","filler","pCanvas","pCtx","moveTo","lineTo","toLive","_applyPatternGradientTransform","createPattern","handleFiller","property","offsetX","offsetY","isFiller","gradientUnits","gradientTransform","patternTransform","_setStrokeStyles","_ref","lineWidth","lineCap","strokeLineCap","lineDashOffset","strokeDashOffset","lineJoin","strokeLineJoin","miterLimit","strokeMiterLimit","_setFillStyles","_ref2","decl","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillOffsets","fillText","strokeOffsets","strokeText","setSuperscript","start","end","_setScript","superscript","setSubscript","subscript","schema","loc","dy","size","baseline","setSelectionStyles","lineDiff","isJustifyLine","_forceClearCache","__lineWidths","_charStyle$property","type","topOffset","offsetAligner","offsets","lastDecoration","lastFill","lastTickness","TEXT_DECORATION_THICKNESS","currentDecoration","currentFill","currentTickness","currentSize","currentDy","finalTickness","arguments","parsedFontFamily","genericFonts","toLowerCase","render","visible","skipOffscreen","group","isOnScreen","value","split","_reNewline","newLine","newText","pop","toObject","propertiesToInclude","additionalProps","stylesToArray","set","key","textLayoutProperties","needsDims","isAddingPath","_key","clearBrowserLines","fromElement","element","cssRules","parsedAttributes","parseAttributes","ATTRIBUTE_NAMES","textAnchor","textDecoration","dx","DEFAULT_SVG_FONT_SIZE","restOfOptions","textContent","replace","underline","overline","linethrough","textHeightScaleFactor","getScaledHeight","lineHeightDiff","scaledDiff","textHeight","offX","getScaledWidth","fromObject","object","_fromObject","stylesFromArray","extraParam","cacheProperties","textDefaultValues","SHARED_ATTRIBUTES","applyMixins","TextSVGExportMixin","classRegistry","setClass","setSVGClass"],"mappings":"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"}
|