fabric 5.3.0 → 6.0.0-beta1
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 +11 -0
- package/.babelrcAlt +19 -0
- package/.browserslistrc +5 -0
- package/.eslintrc.js +43 -0
- package/.eslintrc.json +38 -46
- package/.eslintrc_tests +12 -0
- package/.gitattributes +2 -0
- package/.prettierignore +16 -0
- package/.prettierrc +4 -0
- package/CHANGELOG.md +491 -189
- package/CONTRIBUTING.md +226 -58
- package/README.md +188 -239
- package/bower.json +1 -3
- package/dist/fabric.d.ts +1021 -0
- package/dist/index.cjs +28027 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.min.js +1 -0
- package/dist/index.mjs +27964 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.node.cjs +28092 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.d.ts +15 -0
- package/dist/index.node.mjs +28035 -0
- package/dist/index.node.mjs.map +1 -0
- package/dist/src/Collection.d.ts +126 -0
- package/dist/src/CommonMethods.d.ts +32 -0
- package/dist/src/EventTypeDefs.d.ts +226 -0
- package/dist/src/Intersection.d.ts +100 -0
- package/dist/src/Observable.d.ts +54 -0
- package/dist/src/Pattern.d.ts +104 -0
- package/dist/src/Point.d.ts +232 -0
- package/dist/src/Shadow.d.ts +87 -0
- package/dist/src/brushes/BaseBrush.d.ts +105 -0
- package/dist/src/brushes/CircleBrush.d.ts +49 -0
- package/dist/src/brushes/PatternBrush.d.ts +23 -0
- package/dist/src/brushes/PencilBrush.d.ts +92 -0
- package/dist/src/brushes/SprayBrush.d.ts +79 -0
- package/dist/src/cache.d.ts +46 -0
- package/dist/src/canvas/Canvas.d.ts +567 -0
- package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
- package/dist/src/canvas/StaticCanvas.d.ts +751 -0
- package/dist/src/canvas/TextEditingManager.d.ts +17 -0
- package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
- package/dist/src/color/Color.d.ts +174 -0
- package/dist/src/color/color_map.d.ts +155 -0
- package/dist/src/color/constants.d.ts +22 -0
- package/dist/src/color/util.d.ts +12 -0
- package/dist/src/config.d.ts +115 -0
- package/dist/src/constants.d.ts +14 -0
- package/dist/src/controls/Control.d.ts +228 -0
- package/dist/src/controls/changeWidth.d.ts +13 -0
- package/dist/src/controls/controls.render.d.ts +29 -0
- package/dist/src/controls/default_controls.d.ts +50 -0
- package/dist/src/controls/drag.d.ts +12 -0
- package/dist/src/controls/polyControl.d.ts +5 -0
- package/dist/src/controls/rotate.d.ts +12 -0
- package/dist/src/controls/scale.d.ts +47 -0
- package/dist/src/controls/scaleSkew.d.ts +39 -0
- package/dist/src/controls/skew.d.ts +33 -0
- package/dist/src/controls/util.d.ts +41 -0
- package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
- package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
- package/dist/src/env/browser.d.ts +3 -0
- package/dist/src/env/index.d.ts +7 -0
- package/dist/src/env/node.d.ts +3 -0
- package/dist/src/env/types.d.ts +15 -0
- package/dist/src/filters/BaseFilter.d.ts +156 -0
- package/dist/src/filters/BlendColor.d.ts +80 -0
- package/dist/src/filters/BlendImage.d.ts +90 -0
- package/dist/src/filters/Blur.d.ts +50 -0
- package/dist/src/filters/Boilerplate.d.ts +46 -0
- package/dist/src/filters/Brightness.d.ts +46 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
- package/dist/src/filters/ColorMatrix.d.ts +62 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
- package/dist/src/filters/Composed.d.ts +47 -0
- package/dist/src/filters/Contrast.d.ts +44 -0
- package/dist/src/filters/Convolute.d.ts +82 -0
- package/dist/src/filters/FilterBackend.d.ts +14 -0
- package/dist/src/filters/Gamma.d.ts +53 -0
- package/dist/src/filters/Grayscale.d.ts +45 -0
- package/dist/src/filters/HueRotation.d.ts +24 -0
- package/dist/src/filters/Invert.d.ts +54 -0
- package/dist/src/filters/Noise.d.ts +53 -0
- package/dist/src/filters/Pixelate.d.ts +43 -0
- package/dist/src/filters/RemoveColor.d.ts +62 -0
- package/dist/src/filters/Resize.d.ts +134 -0
- package/dist/src/filters/Saturation.d.ts +47 -0
- package/dist/src/filters/Vibrance.d.ts +47 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
- package/dist/src/filters/WebGLProbe.d.ts +28 -0
- package/dist/src/filters/typedefs.d.ts +49 -0
- package/dist/src/gradient/Gradient.d.ts +149 -0
- package/dist/src/gradient/constants.d.ts +15 -0
- package/dist/src/gradient/parser/index.d.ts +4 -0
- package/dist/src/gradient/parser/misc.d.ts +4 -0
- package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
- package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
- package/dist/src/gradient/typedefs.d.ts +93 -0
- package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
- package/dist/src/mixins/stateful.mixin.d.ts +18 -0
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
- package/dist/src/parkinglot/straighten.d.ts +2 -0
- package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
- package/dist/src/parser/attributes.d.ts +6 -0
- package/dist/src/parser/constants.d.ts +54 -0
- package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
- package/dist/src/parser/elementById.d.ts +6 -0
- package/dist/src/parser/elementMatchesRule.d.ts +5 -0
- package/dist/src/parser/elements_parser.d.ts +3 -0
- package/dist/src/parser/getCSSRules.d.ts +7 -0
- package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
- package/dist/src/parser/getGradientDefs.d.ts +7 -0
- package/dist/src/parser/getMultipleNodes.d.ts +2 -0
- package/dist/src/parser/getSvgRegex.d.ts +2 -0
- package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
- package/dist/src/parser/loadSVGFromString.d.ts +12 -0
- package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
- package/dist/src/parser/normalizeAttr.d.ts +2 -0
- package/dist/src/parser/normalizeValue.d.ts +2 -0
- package/dist/src/parser/parseAttributes.d.ts +9 -0
- package/dist/src/parser/parseElements.d.ts +11 -0
- package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
- package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
- package/dist/src/parser/parseSVGDocument.d.ts +15 -0
- package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
- package/dist/src/parser/parseStyleObject.d.ts +2 -0
- package/dist/src/parser/parseStyleString.d.ts +2 -0
- package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
- package/dist/src/parser/parseUseDirectives.d.ts +2 -0
- package/dist/src/parser/percent.d.ts +9 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
- package/dist/src/parser/rotateMatrix.d.ts +2 -0
- package/dist/src/parser/scaleMatrix.d.ts +2 -0
- package/dist/src/parser/selectorMatches.d.ts +2 -0
- package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
- package/dist/src/parser/skewMatrix.d.ts +2 -0
- package/dist/src/parser/translateMatrix.d.ts +2 -0
- package/dist/src/shapes/ActiveSelection.d.ts +66 -0
- package/dist/src/shapes/Circle.d.ts +80 -0
- package/dist/src/shapes/Ellipse.d.ts +74 -0
- package/dist/src/shapes/Group.d.ts +381 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
- package/dist/src/shapes/IText/IText.d.ts +322 -0
- package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
- package/dist/src/shapes/IText/constants.d.ts +13 -0
- package/dist/src/shapes/Image.d.ts +283 -0
- package/dist/src/shapes/Line.d.ts +117 -0
- package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
- package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
- package/dist/src/shapes/Object/Object.d.ts +906 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
- package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
- package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
- package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
- package/dist/src/shapes/Path.d.ts +123 -0
- package/dist/src/shapes/Polygon.d.ts +7 -0
- package/dist/src/shapes/Polyline.d.ts +130 -0
- package/dist/src/shapes/Rect.d.ts +62 -0
- package/dist/src/shapes/Text/StyledText.d.ts +118 -0
- package/dist/src/shapes/Text/Text.d.ts +656 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
- package/dist/src/shapes/Textbox.d.ts +170 -0
- package/dist/src/shapes/Triangle.d.ts +17 -0
- package/dist/src/typedefs.d.ts +93 -0
- package/dist/src/util/animation/AnimationBase.d.ts +54 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
- package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
- package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
- package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
- package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
- package/dist/src/util/animation/animate.d.ts +37 -0
- package/dist/src/util/animation/easing.d.ts +130 -0
- package/dist/src/util/animation/types.d.ts +87 -0
- package/dist/src/util/applyMixins.d.ts +8 -0
- package/dist/src/util/class_registry.d.ts +14 -0
- package/dist/src/util/dom_event.d.ts +5 -0
- package/dist/src/util/dom_misc.d.ts +40 -0
- package/dist/src/util/dom_request.d.ts +14 -0
- package/dist/src/util/dom_style.d.ts +7 -0
- package/dist/src/util/fireEvent.d.ts +3 -0
- package/dist/src/util/internals/cloneDeep.d.ts +2 -0
- package/dist/src/util/internals/getRandomInt.d.ts +8 -0
- package/dist/src/util/internals/ifNaN.d.ts +8 -0
- package/dist/src/util/internals/index.d.ts +4 -0
- package/dist/src/util/internals/removeFromArray.d.ts +9 -0
- package/dist/src/util/internals/uid.d.ts +2 -0
- package/dist/src/util/lang_class.d.ts +12 -0
- package/dist/src/util/lang_string.d.ts +22 -0
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
- package/dist/src/util/misc/capValue.d.ts +2 -0
- package/dist/src/util/misc/cos.d.ts +10 -0
- package/dist/src/util/misc/dom.d.ts +28 -0
- package/dist/src/util/misc/findScaleTo.d.ts +29 -0
- package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
- package/dist/src/util/misc/isTransparent.d.ts +11 -0
- package/dist/src/util/misc/matrix.d.ts +92 -0
- package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
- package/dist/src/util/misc/objectEnlive.d.ts +56 -0
- package/dist/src/util/misc/objectTransforms.d.ts +68 -0
- package/dist/src/util/misc/pick.d.ts +8 -0
- package/dist/src/util/misc/planeChange.d.ts +84 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
- package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
- package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
- package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
- package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
- package/dist/src/util/misc/rotatePoint.d.ts +12 -0
- package/dist/src/util/misc/sin.d.ts +10 -0
- package/dist/src/util/misc/svgParsing.d.ts +53 -0
- package/dist/src/util/misc/textStyles.d.ts +32 -0
- package/dist/src/util/misc/toFixed.d.ts +8 -0
- package/dist/src/util/misc/vectors.d.ts +57 -0
- package/dist/src/util/path.d.ts +108 -0
- package/dist/src/util/transform_matrix_removal.d.ts +14 -0
- package/dist/src/util/types.d.ts +19 -0
- package/fabric.ts +427 -0
- package/index.node.ts +43 -0
- package/index.ts +1 -0
- package/package.json +90 -39
- package/publish.js +0 -26
- package/rollup.config.mjs +79 -0
- package/rollup.test.config.js +24 -0
- package/scripts/build.mjs +50 -0
- package/scripts/buildLock.mjs +115 -0
- package/scripts/buildReporter.mjs +15 -0
- package/scripts/buildStats.mjs +139 -0
- package/scripts/dirname.mjs +14 -0
- package/scripts/index.mjs +679 -0
- package/scripts/transform_files.mjs +504 -0
- package/src/Collection.ts +311 -0
- package/src/CommonMethods.ts +63 -0
- package/src/EventTypeDefs.ts +294 -0
- package/src/Intersection.ts +273 -0
- package/src/Observable.ts +175 -0
- package/src/Pattern.ts +211 -0
- package/src/Point.ts +388 -0
- package/src/Shadow.ts +215 -0
- package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
- package/src/brushes/CircleBrush.ts +145 -0
- package/src/brushes/PatternBrush.ts +70 -0
- package/src/brushes/PencilBrush.ts +300 -0
- package/src/brushes/SprayBrush.ts +219 -0
- package/src/cache.ts +89 -0
- package/src/canvas/Canvas.ts +1672 -0
- package/src/canvas/SelectableCanvas.ts +1636 -0
- package/src/canvas/StaticCanvas.ts +1709 -0
- package/src/canvas/TextEditingManager.ts +48 -0
- package/src/canvas/canvas_gestures.mixin.ts +207 -0
- package/src/color/Color.ts +404 -0
- package/src/color/color_map.ts +154 -0
- package/src/color/constants.ts +26 -0
- package/src/color/util.ts +32 -0
- package/src/config.ts +159 -0
- package/src/constants.ts +19 -0
- package/src/controls/Control.ts +377 -0
- package/src/controls/changeWidth.ts +52 -0
- package/src/controls/controls.render.ts +138 -0
- package/src/controls/default_controls.ts +132 -0
- package/src/controls/drag.ts +31 -0
- package/src/controls/polyControl.ts +135 -0
- package/src/controls/rotate.ts +87 -0
- package/src/controls/scale.ts +277 -0
- package/src/controls/scaleSkew.ts +92 -0
- package/src/controls/skew.ts +242 -0
- package/src/controls/util.ts +154 -0
- package/src/controls/wrapWithFireEvent.ts +25 -0
- package/src/controls/wrapWithFixedAnchor.ts +20 -0
- package/src/env/browser.ts +28 -0
- package/src/env/index.ts +19 -0
- package/src/env/node.ts +52 -0
- package/src/env/types.ts +15 -0
- package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
- package/src/filters/BlendColor.ts +258 -0
- package/src/filters/BlendImage.ts +254 -0
- package/src/filters/Blur.ts +202 -0
- package/src/filters/Boilerplate.ts +91 -0
- package/src/filters/Brightness.ts +93 -0
- package/src/filters/Canvas2dFilterBackend.ts +65 -0
- package/src/filters/ColorMatrix.ts +156 -0
- package/src/filters/ColorMatrixFilters.ts +106 -0
- package/src/filters/Composed.ts +85 -0
- package/src/filters/Contrast.ts +94 -0
- package/src/filters/Convolute.ts +341 -0
- package/src/filters/FilterBackend.ts +32 -0
- package/src/filters/Gamma.ts +127 -0
- package/src/filters/Grayscale.ts +137 -0
- package/src/filters/HueRotation.ts +66 -0
- package/src/filters/Invert.ts +117 -0
- package/src/filters/Noise.ts +109 -0
- package/src/filters/Pixelate.ts +114 -0
- package/src/filters/RemoveColor.ts +148 -0
- package/src/filters/Resize.ts +540 -0
- package/src/filters/Saturation.ts +100 -0
- package/src/filters/Vibrance.ts +103 -0
- package/src/filters/WebGLFilterBackend.ts +430 -0
- package/src/filters/WebGLProbe.ts +62 -0
- package/src/filters/typedefs.ts +65 -0
- package/src/gradient/Gradient.ts +401 -0
- package/src/gradient/constants.ts +12 -0
- package/src/gradient/parser/index.ts +3 -0
- package/src/gradient/parser/misc.ts +13 -0
- package/src/gradient/parser/parseColorStops.ts +55 -0
- package/src/gradient/parser/parseCoords.ts +73 -0
- package/src/gradient/typedefs.ts +104 -0
- package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
- package/src/mixins/stateful.mixin.ts +104 -0
- package/src/parkinglot/canvas_animation.mixin.ts +121 -0
- package/src/parkinglot/straighten.ts +58 -0
- package/src/parser/applyViewboxTransform.ts +162 -0
- package/src/parser/attributes.ts +25 -0
- package/src/parser/constants.ts +118 -0
- package/src/parser/doesSomeParentMatch.ts +19 -0
- package/src/parser/elementById.ts +23 -0
- package/src/parser/elementMatchesRule.ts +19 -0
- package/src/parser/elements_parser.ts +191 -0
- package/src/parser/getCSSRules.ts +62 -0
- package/src/parser/getGlobalStylesForElement.ts +19 -0
- package/src/parser/getGradientDefs.ts +32 -0
- package/src/parser/getMultipleNodes.ts +15 -0
- package/src/parser/getSvgRegex.ts +5 -0
- package/src/parser/hasAncestorWithNodeName.ts +14 -0
- package/src/parser/loadSVGFromString.ts +26 -0
- package/src/parser/loadSVGFromURL.ts +40 -0
- package/src/parser/normalizeAttr.ts +10 -0
- package/src/parser/normalizeValue.ts +63 -0
- package/src/parser/parseAttributes.ts +90 -0
- package/src/parser/parseElements.ts +28 -0
- package/src/parser/parseFontDeclaration.ts +44 -0
- package/src/parser/parsePointsAttribute.ts +36 -0
- package/src/parser/parseSVGDocument.ts +106 -0
- package/src/parser/parseStyleAttribute.ts +27 -0
- package/src/parser/parseStyleObject.ts +15 -0
- package/src/parser/parseStyleString.ts +16 -0
- package/src/parser/parseTransformAttribute.ts +155 -0
- package/src/parser/parseUseDirectives.ts +79 -0
- package/src/parser/percent.ts +27 -0
- package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
- package/src/parser/rotateMatrix.ts +21 -0
- package/src/parser/scaleMatrix.ts +9 -0
- package/src/parser/selectorMatches.ts +25 -0
- package/src/parser/setStrokeFillOpacity.ts +40 -0
- package/src/parser/skewMatrix.ts +6 -0
- package/src/parser/translateMatrix.ts +8 -0
- package/src/shapes/ActiveSelection.ts +157 -0
- package/src/shapes/Circle.ts +205 -0
- package/src/shapes/Ellipse.ts +154 -0
- package/src/shapes/Group.ts +1053 -0
- package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
- package/src/shapes/IText/IText.ts +666 -0
- package/src/shapes/IText/ITextBehavior.ts +1055 -0
- package/src/shapes/IText/ITextClickBehavior.ts +321 -0
- package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
- package/src/shapes/IText/constants.ts +47 -0
- package/src/shapes/Image.ts +789 -0
- package/src/shapes/Line.ts +329 -0
- package/src/shapes/Object/AnimatableObject.ts +106 -0
- package/src/shapes/Object/FabricObject.ts +19 -0
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
- package/src/shapes/Object/InteractiveObject.ts +645 -0
- package/src/shapes/Object/Object.ts +1896 -0
- package/src/shapes/Object/ObjectGeometry.ts +830 -0
- package/src/shapes/Object/ObjectOrigin.ts +354 -0
- package/src/shapes/Object/StackedObject.ts +191 -0
- package/src/shapes/Object/defaultValues.ts +112 -0
- package/src/shapes/Path.ts +395 -0
- package/src/shapes/Polygon.ts +19 -0
- package/src/shapes/Polyline.ts +333 -0
- package/src/shapes/Rect.ts +199 -0
- package/src/shapes/Text/StyledText.ts +319 -0
- package/src/shapes/Text/Text.ts +1948 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
- package/src/shapes/Textbox.ts +471 -0
- package/src/shapes/Triangle.ts +45 -0
- package/src/typedefs.ts +119 -0
- package/src/util/animation/AnimationBase.ts +166 -0
- package/src/util/animation/AnimationFrameProvider.ts +28 -0
- package/src/util/animation/AnimationRegistry.ts +58 -0
- package/src/util/animation/ArrayAnimation.ts +27 -0
- package/src/util/animation/ColorAnimation.ts +74 -0
- package/src/util/animation/ValueAnimation.ts +29 -0
- package/src/util/animation/animate.ts +74 -0
- package/src/util/animation/easing.ts +327 -0
- package/src/util/animation/types.ts +136 -0
- package/src/util/applyMixins.ts +22 -0
- package/src/util/class_registry.ts +54 -0
- package/src/util/dom_event.ts +28 -0
- package/src/util/dom_misc.ts +138 -0
- package/src/util/dom_request.ts +64 -0
- package/src/util/dom_style.ts +20 -0
- package/src/util/fireEvent.ts +15 -0
- package/src/util/internals/cloneDeep.ts +2 -0
- package/src/util/internals/getRandomInt.ts +8 -0
- package/src/util/internals/ifNaN.ts +9 -0
- package/src/util/internals/index.ts +3 -0
- package/src/util/internals/removeFromArray.ts +14 -0
- package/src/util/internals/uid.ts +3 -0
- package/src/util/lang_class.ts +90 -0
- package/src/util/lang_string.ts +79 -0
- package/src/util/misc/boundingBoxFromPoints.ts +37 -0
- package/src/util/misc/capValue.ts +2 -0
- package/src/util/misc/cos.ts +24 -0
- package/src/util/misc/dom.ts +50 -0
- package/src/util/misc/findScaleTo.ts +44 -0
- package/src/util/misc/groupSVGElements.ts +15 -0
- package/src/util/misc/isTransparent.ts +51 -0
- package/src/util/misc/matrix.ts +207 -0
- package/src/util/misc/mergeClipPaths.ts +40 -0
- package/src/util/misc/objectEnlive.ts +189 -0
- package/src/util/misc/objectTransforms.ts +129 -0
- package/src/util/misc/pick.ts +17 -0
- package/src/util/misc/planeChange.ts +136 -0
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
- package/src/util/misc/projectStroke/index.ts +53 -0
- package/src/util/misc/projectStroke/types.ts +24 -0
- package/src/util/misc/radiansDegreesConversion.ts +18 -0
- package/src/util/misc/resolveOrigin.ts +22 -0
- package/src/util/misc/rotatePoint.ts +15 -0
- package/src/util/misc/sin.ts +26 -0
- package/src/util/misc/svgParsing.ts +181 -0
- package/src/util/misc/textStyles.ts +133 -0
- package/src/util/misc/toFixed.ts +8 -0
- package/src/util/misc/vectors.ts +82 -0
- package/src/util/path.ts +941 -0
- package/src/util/transform_matrix_removal.ts +60 -0
- package/src/util/types.ts +78 -0
- package/tsconfig.json +106 -0
- package/HEADER.js +0 -203
- package/build.js +0 -287
- package/dist/fabric.js +0 -31187
- package/dist/fabric.min.js +0 -1
- package/old-travis-reference.yml +0 -97
- package/src/brushes/circle_brush.class.js +0 -144
- package/src/brushes/pattern_brush.class.js +0 -61
- package/src/brushes/pencil_brush.class.js +0 -310
- package/src/brushes/spray_brush.class.js +0 -219
- package/src/canvas.class.js +0 -1312
- package/src/color.class.js +0 -636
- package/src/control.class.js +0 -339
- package/src/controls.actions.js +0 -740
- package/src/controls.render.js +0 -99
- package/src/elements_parser.js +0 -152
- package/src/filters/2d_backend.class.js +0 -65
- package/src/filters/blendcolor_filter.class.js +0 -251
- package/src/filters/blendimage_filter.class.js +0 -247
- package/src/filters/blur_filter.class.js +0 -217
- package/src/filters/brightness_filter.class.js +0 -113
- package/src/filters/colormatrix_filter.class.js +0 -159
- package/src/filters/composed_filter.class.js +0 -72
- package/src/filters/contrast_filter.class.js +0 -113
- package/src/filters/convolute_filter.class.js +0 -352
- package/src/filters/filter_boilerplate.js +0 -111
- package/src/filters/filter_generator.js +0 -85
- package/src/filters/gamma_filter.class.js +0 -136
- package/src/filters/grayscale_filter.class.js +0 -154
- package/src/filters/hue_rotation.class.js +0 -107
- package/src/filters/invert_filter.class.js +0 -111
- package/src/filters/noise_filter.class.js +0 -134
- package/src/filters/pixelate_filter.class.js +0 -137
- package/src/filters/removecolor_filter.class.js +0 -173
- package/src/filters/resize_filter.class.js +0 -490
- package/src/filters/saturate_filter.class.js +0 -119
- package/src/filters/vibrance_filter.class.js +0 -122
- package/src/filters/webgl_backend.class.js +0 -396
- package/src/globalFabric.js +0 -4
- package/src/gradient.class.js +0 -490
- package/src/intersection.class.js +0 -172
- package/src/log.js +0 -11
- package/src/mixins/animation.mixin.js +0 -231
- package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
- package/src/mixins/canvas_events.mixin.js +0 -974
- package/src/mixins/canvas_gestures.mixin.js +0 -149
- package/src/mixins/canvas_grouping.mixin.js +0 -177
- package/src/mixins/canvas_serialization.mixin.js +0 -228
- package/src/mixins/collection.mixin.js +0 -170
- package/src/mixins/default_controls.js +0 -114
- package/src/mixins/itext.svg_export.js +0 -241
- package/src/mixins/itext_behavior.mixin.js +0 -940
- package/src/mixins/itext_click_behavior.mixin.js +0 -278
- package/src/mixins/itext_key_behavior.mixin.js +0 -694
- package/src/mixins/object.svg_export.js +0 -258
- package/src/mixins/object_geometry.mixin.js +0 -683
- package/src/mixins/object_interactivity.mixin.js +0 -314
- package/src/mixins/object_origin.mixin.js +0 -255
- package/src/mixins/object_stacking.mixin.js +0 -80
- package/src/mixins/object_straightening.mixin.js +0 -80
- package/src/mixins/observable.mixin.js +0 -141
- package/src/mixins/shared_methods.mixin.js +0 -94
- package/src/mixins/stateful.mixin.js +0 -107
- package/src/mixins/text_style.mixin.js +0 -324
- package/src/parser.js +0 -1090
- package/src/pattern.class.js +0 -189
- package/src/point.class.js +0 -337
- package/src/shadow.class.js +0 -195
- package/src/shapes/active_selection.class.js +0 -155
- package/src/shapes/circle.class.js +0 -210
- package/src/shapes/ellipse.class.js +0 -181
- package/src/shapes/group.class.js +0 -593
- package/src/shapes/image.class.js +0 -764
- package/src/shapes/itext.class.js +0 -526
- package/src/shapes/line.class.js +0 -324
- package/src/shapes/object.class.js +0 -2008
- package/src/shapes/path.class.js +0 -384
- package/src/shapes/polygon.class.js +0 -81
- package/src/shapes/polyline.class.js +0 -268
- package/src/shapes/rect.class.js +0 -187
- package/src/shapes/text.class.js +0 -1696
- package/src/shapes/textbox.class.js +0 -461
- package/src/shapes/triangle.class.js +0 -93
- package/src/static_canvas.class.js +0 -1881
- package/src/util/anim_ease.js +0 -398
- package/src/util/animate.js +0 -254
- package/src/util/animate_color.js +0 -74
- package/src/util/dom_event.js +0 -50
- package/src/util/dom_misc.js +0 -300
- package/src/util/dom_request.js +0 -54
- package/src/util/dom_style.js +0 -70
- package/src/util/lang_array.js +0 -94
- package/src/util/lang_class.js +0 -115
- package/src/util/lang_object.js +0 -75
- package/src/util/lang_string.js +0 -110
- package/src/util/misc.js +0 -1330
- package/src/util/named_accessors.mixin.js +0 -428
- package/src/util/path.js +0 -829
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IPoint, Point } from '../../../Point';
|
|
2
|
+
import { StrokeProjectionsBase } from './StrokeProjectionsBase';
|
|
3
|
+
import { TProjection, TProjectStrokeOnPointsOptions } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* class in charge of finding projections for each type of line cap for start/end of an open path
|
|
6
|
+
* @see {@link [Open path projections at #8344](https://github.com/fabricjs/fabric.js/pull/8344#1-open-path)}
|
|
7
|
+
*
|
|
8
|
+
* Reference:
|
|
9
|
+
* - MDN:
|
|
10
|
+
* - https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap
|
|
11
|
+
* - https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap
|
|
12
|
+
* - Spec: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-linecap-dev
|
|
13
|
+
* - Playground to understand how the line joins works: https://hypertolosana.github.io/efficient-webgl-stroking/index.html
|
|
14
|
+
* - View the calculated projections for each of the control points: https://codesandbox.io/s/project-stroke-points-with-context-to-trace-b8jc4j?file=/src/index.js
|
|
15
|
+
*/
|
|
16
|
+
export declare class StrokeLineCapProjections extends StrokeProjectionsBase {
|
|
17
|
+
/**
|
|
18
|
+
* edge point
|
|
19
|
+
*/
|
|
20
|
+
A: Point;
|
|
21
|
+
/**
|
|
22
|
+
* point next to edge point
|
|
23
|
+
*/
|
|
24
|
+
T: Point;
|
|
25
|
+
constructor(A: IPoint, T: IPoint, options: TProjectStrokeOnPointsOptions);
|
|
26
|
+
calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
|
|
27
|
+
/**
|
|
28
|
+
* OPEN PATH START/END - Line cap: Butt
|
|
29
|
+
* Calculation: to find the projections, just find the points orthogonal to the stroke
|
|
30
|
+
*
|
|
31
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#1-1-butt
|
|
32
|
+
*/
|
|
33
|
+
projectButt(): Point[];
|
|
34
|
+
/**
|
|
35
|
+
* OPEN PATH START/END - Line cap: Round
|
|
36
|
+
* Calculation: same as stroke line join `round`
|
|
37
|
+
*
|
|
38
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#1-2-round
|
|
39
|
+
*/
|
|
40
|
+
projectRound(): Point[];
|
|
41
|
+
/**
|
|
42
|
+
* OPEN PATH START/END - Line cap: Square
|
|
43
|
+
* Calculation: project a rectangle of points on the stroke in the opposite direction of the vector `AT`
|
|
44
|
+
*
|
|
45
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#1-3-square
|
|
46
|
+
*/
|
|
47
|
+
projectSquare(): Point[];
|
|
48
|
+
protected projectPoints(): Point[];
|
|
49
|
+
project(): TProjection[];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=StrokeLineCapProjections.d.ts.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { IPoint, Point } from '../../../Point';
|
|
2
|
+
import { getBisector } from '../vectors';
|
|
3
|
+
import { StrokeProjectionsBase } from './StrokeProjectionsBase';
|
|
4
|
+
import { TProjection, TProjectStrokeOnPointsOptions } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* class in charge of finding projections for each type of line join
|
|
7
|
+
* @see {@link [Closed path projections at #8344](https://github.com/fabricjs/fabric.js/pull/8344#2-closed-path)}
|
|
8
|
+
*
|
|
9
|
+
* - MDN:
|
|
10
|
+
* - https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
|
|
11
|
+
* - https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linejoin
|
|
12
|
+
* - Spec: https://svgwg.org/svg2-draft/painting.html#StrokeLinejoinProperty
|
|
13
|
+
* - Playground to understand how the line joins works: https://hypertolosana.github.io/efficient-webgl-stroking/index.html
|
|
14
|
+
* - View the calculated projections for each of the control points: https://codesandbox.io/s/project-stroke-points-with-context-to-trace-b8jc4j?file=/src/index.js
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
export declare class StrokeLineJoinProjections extends StrokeProjectionsBase {
|
|
18
|
+
/**
|
|
19
|
+
* The point being projected (the angle ∠BAC)
|
|
20
|
+
*/
|
|
21
|
+
A: Point;
|
|
22
|
+
/**
|
|
23
|
+
* The point before A
|
|
24
|
+
*/
|
|
25
|
+
B: Point;
|
|
26
|
+
/**
|
|
27
|
+
* The point after A
|
|
28
|
+
*/
|
|
29
|
+
C: Point;
|
|
30
|
+
/**
|
|
31
|
+
* The bisector of A (∠BAC)
|
|
32
|
+
*/
|
|
33
|
+
bisector: ReturnType<typeof getBisector>;
|
|
34
|
+
constructor(A: IPoint, B: IPoint, C: IPoint, options: TProjectStrokeOnPointsOptions);
|
|
35
|
+
get bisectorVector(): Point;
|
|
36
|
+
get bisectorAngle(): import("../../../typedefs").TRadian;
|
|
37
|
+
calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
|
|
38
|
+
/**
|
|
39
|
+
* BEVEL
|
|
40
|
+
* Calculation: the projection points are formed by the vector orthogonal to the vertex.
|
|
41
|
+
*
|
|
42
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#2-2-bevel
|
|
43
|
+
*/
|
|
44
|
+
projectBevel(): Point[];
|
|
45
|
+
/**
|
|
46
|
+
* MITER
|
|
47
|
+
* Calculation: the corner is formed by extending the outer edges of the stroke
|
|
48
|
+
* at the tangents of the path segments until they intersect.
|
|
49
|
+
*
|
|
50
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#2-1-miter
|
|
51
|
+
*/
|
|
52
|
+
projectMiter(): Point[];
|
|
53
|
+
/**
|
|
54
|
+
* ROUND (without skew)
|
|
55
|
+
* Calculation: the projections are the two vectors parallel to X and Y axes
|
|
56
|
+
*
|
|
57
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#2-3-1-round-without-skew
|
|
58
|
+
*/
|
|
59
|
+
private projectRoundNoSkew;
|
|
60
|
+
/**
|
|
61
|
+
* ROUND (with skew)
|
|
62
|
+
* Calculation: the projections are the points furthest from the vertex in
|
|
63
|
+
* the direction of the X and Y axes after distortion.
|
|
64
|
+
*
|
|
65
|
+
* @todo TODO:
|
|
66
|
+
* - Consider only projections that are inside the beginning and end of the circle segment
|
|
67
|
+
*
|
|
68
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344#2-3-2-round-skew
|
|
69
|
+
*/
|
|
70
|
+
private projectRoundWithSkew;
|
|
71
|
+
projectRound(): Point[];
|
|
72
|
+
/**
|
|
73
|
+
* Project stroke width on points returning projections for each point as follows:
|
|
74
|
+
* - `miter`: 1 point corresponding to the outer boundary. If the miter limit is exceeded, it will be 2 points (becomes bevel)
|
|
75
|
+
* - `bevel`: 2 points corresponding to the bevel possible boundaries, orthogonal to the stroke.
|
|
76
|
+
* - `round`: same as `bevel` when it has no skew, with skew are 4 points.
|
|
77
|
+
*/
|
|
78
|
+
protected projectPoints(): Point[];
|
|
79
|
+
project(): TProjection[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=StrokeLineJoinProjections.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IPoint, Point } from '../../../Point';
|
|
2
|
+
import { TProjectStrokeOnPointsOptions, TProjection } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class StrokeProjectionsBase {
|
|
7
|
+
options: TProjectStrokeOnPointsOptions;
|
|
8
|
+
scale: Point;
|
|
9
|
+
strokeUniformScalar: Point;
|
|
10
|
+
strokeProjectionMagnitude: number;
|
|
11
|
+
static getAcuteAngleFactor(vector1: Point, vector2?: Point): 1 | -1;
|
|
12
|
+
constructor(options: TProjectStrokeOnPointsOptions);
|
|
13
|
+
/**
|
|
14
|
+
* When the stroke is uniform, scaling affects the arrangement of points. So we must take it into account.
|
|
15
|
+
*/
|
|
16
|
+
protected createSideVector(from: IPoint, to: IPoint): Point;
|
|
17
|
+
protected abstract calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
|
|
18
|
+
protected projectOrthogonally(from: Point, to: Point, magnitude?: number): Point;
|
|
19
|
+
protected isSkewed(): boolean;
|
|
20
|
+
protected applySkew(point: Point): Point;
|
|
21
|
+
protected scaleUnitVector(unitVector: Point, scalar: number): Point;
|
|
22
|
+
protected abstract projectPoints(): Point[];
|
|
23
|
+
abstract project(): TProjection[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=StrokeProjectionsBase.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IPoint } from '../../../Point';
|
|
2
|
+
import { TProjection, TProjectStrokeOnPointsOptions } from './types';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* Used to calculate object's bounding box
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/fabricjs/fabric.js/pull/8344
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export declare const projectStrokeOnPoints: (points: IPoint[], options: TProjectStrokeOnPointsOptions, openPath?: boolean) => TProjection[];
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Point } from '../../../Point';
|
|
2
|
+
import { TDegree } from '../../../typedefs';
|
|
3
|
+
import { getBisector } from '../vectors';
|
|
4
|
+
export type TProjectStrokeOnPointsOptions = {
|
|
5
|
+
strokeWidth: number;
|
|
6
|
+
strokeLineCap: CanvasLineCap;
|
|
7
|
+
strokeLineJoin: CanvasLineJoin;
|
|
8
|
+
/**
|
|
9
|
+
* https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit
|
|
10
|
+
*/
|
|
11
|
+
strokeMiterLimit: number;
|
|
12
|
+
strokeUniform: boolean;
|
|
13
|
+
scaleX: number;
|
|
14
|
+
scaleY: number;
|
|
15
|
+
skewX: TDegree;
|
|
16
|
+
skewY: TDegree;
|
|
17
|
+
};
|
|
18
|
+
export type TProjection = {
|
|
19
|
+
projectedPoint: Point;
|
|
20
|
+
originPoint: Point;
|
|
21
|
+
bisector?: ReturnType<typeof getBisector>;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TRadian, TDegree } from '../../typedefs';
|
|
2
|
+
/**
|
|
3
|
+
* Transforms degrees to radians.
|
|
4
|
+
* @param {TDegree} degrees value in degrees
|
|
5
|
+
* @return {TRadian} value in radians
|
|
6
|
+
*/
|
|
7
|
+
export declare const degreesToRadians: (degrees: TDegree) => TRadian;
|
|
8
|
+
/**
|
|
9
|
+
* Transforms radians to degrees.
|
|
10
|
+
* @param {TRadian} radians value in radians
|
|
11
|
+
* @return {TDegree} value in degrees
|
|
12
|
+
*/
|
|
13
|
+
export declare const radiansToDegrees: (radians: TRadian) => TDegree;
|
|
14
|
+
//# sourceMappingURL=radiansDegreesConversion.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TOriginX, TOriginY } from '../../typedefs';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves origin value relative to center
|
|
4
|
+
* @private
|
|
5
|
+
* @param {TOriginX | TOriginY} originValue originX / originY
|
|
6
|
+
* @returns number
|
|
7
|
+
*/
|
|
8
|
+
export declare const resolveOrigin: (originValue: TOriginX | TOriginY | number) => number;
|
|
9
|
+
//# sourceMappingURL=resolveOrigin.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Point } from '../../Point';
|
|
2
|
+
import type { TRadian } from '../../typedefs';
|
|
3
|
+
/**
|
|
4
|
+
* Rotates `point` around `origin` with `radians`
|
|
5
|
+
* @deprecated use the Point.rotate
|
|
6
|
+
* @param {Point} origin The origin of the rotation
|
|
7
|
+
* @param {Point} origin The origin of the rotation
|
|
8
|
+
* @param {TRadian} radians The radians of the angle for the rotation
|
|
9
|
+
* @return {Point} The new rotated point
|
|
10
|
+
*/
|
|
11
|
+
export declare const rotatePoint: (point: Point, origin: Point, radians: TRadian) => Point;
|
|
12
|
+
//# sourceMappingURL=rotatePoint.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TRadian } from '../../typedefs';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the cos of an angle, avoiding returning floats for known results
|
|
4
|
+
* This function is here just to avoid getting 0.999999999999999 when dealing
|
|
5
|
+
* with numbers that are really 1 or 0.
|
|
6
|
+
* @param {TRadian} angle the angle
|
|
7
|
+
* @return {Number} the sin value for angle.
|
|
8
|
+
*/
|
|
9
|
+
export declare const sin: (angle: TRadian) => number;
|
|
10
|
+
//# sourceMappingURL=sin.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { SVGElementName, TBBox, TMat2D } from '../../typedefs';
|
|
2
|
+
/**
|
|
3
|
+
* Returns array of attributes for given svg that fabric parses
|
|
4
|
+
* @param {SVGElementName} type Type of svg element (eg. 'circle')
|
|
5
|
+
* @return {Array} string names of supported attributes
|
|
6
|
+
*/
|
|
7
|
+
export declare const getSvgAttributes: (type: SVGElementName) => string[];
|
|
8
|
+
/**
|
|
9
|
+
* Converts from attribute value to pixel value if applicable.
|
|
10
|
+
* Returns converted pixels or original value not converted.
|
|
11
|
+
* @param {string} value number to operate on
|
|
12
|
+
* @param {number} fontSize
|
|
13
|
+
* @return {number}
|
|
14
|
+
*/
|
|
15
|
+
export declare const parseUnit: (value: string, fontSize: number) => number;
|
|
16
|
+
export declare const enum MeetOrSlice {
|
|
17
|
+
meet = "meet",
|
|
18
|
+
slice = "slice"
|
|
19
|
+
}
|
|
20
|
+
export declare const enum MinMidMax {
|
|
21
|
+
min = "Min",
|
|
22
|
+
mid = "Mid",
|
|
23
|
+
max = "Max",
|
|
24
|
+
none = "none"
|
|
25
|
+
}
|
|
26
|
+
export type TPreserveArParsed = {
|
|
27
|
+
meetOrSlice: MeetOrSlice;
|
|
28
|
+
alignX: MinMidMax;
|
|
29
|
+
alignY: MinMidMax;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Parse preserveAspectRatio attribute from element
|
|
33
|
+
* https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio
|
|
34
|
+
* @param {string} attribute to be parsed
|
|
35
|
+
* @return {Object} an object containing align and meetOrSlice attribute
|
|
36
|
+
*/
|
|
37
|
+
export declare const parsePreserveAspectRatioAttribute: (attribute: string) => TPreserveArParsed;
|
|
38
|
+
/**
|
|
39
|
+
* given an array of 6 number returns something like `"matrix(...numbers)"`
|
|
40
|
+
* @param {TMat2D} transform an array with 6 numbers
|
|
41
|
+
* @return {String} transform matrix for svg
|
|
42
|
+
*/
|
|
43
|
+
export declare const matrixToSVG: (transform: TMat2D) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values
|
|
46
|
+
* we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1
|
|
47
|
+
* @param prop
|
|
48
|
+
* @param value
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
export declare const colorPropToSVG: (prop: string, value?: any) => string;
|
|
52
|
+
export declare const createSVGRect: (color: string, { left, top, width, height }: TBBox, precision?: number) => string;
|
|
53
|
+
//# sourceMappingURL=svgParsing.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { TextStyle, TextStyleDeclaration } from '../../shapes/Text/StyledText';
|
|
2
|
+
export type TextStyleArray = {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
style: TextStyleDeclaration;
|
|
6
|
+
}[];
|
|
7
|
+
/**
|
|
8
|
+
* @param {Object} prevStyle first style to compare
|
|
9
|
+
* @param {Object} thisStyle second style to compare
|
|
10
|
+
* @param {boolean} forTextSpans whether to check overline, underline, and line-through properties
|
|
11
|
+
* @return {boolean} true if the style changed
|
|
12
|
+
*/
|
|
13
|
+
export declare const hasStyleChanged: (prevStyle: TextStyleDeclaration, thisStyle: TextStyleDeclaration, forTextSpans?: boolean) => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Returns the array form of a text object's inline styles property with styles grouped in ranges
|
|
16
|
+
* rather than per character. This format is less verbose, and is better suited for storage
|
|
17
|
+
* so it is used in serialization (not during runtime).
|
|
18
|
+
* @param {object} styles per character styles for a text object
|
|
19
|
+
* @param {String} text the text string that the styles are applied to
|
|
20
|
+
* @return {{start: number, end: number, style: object}[]}
|
|
21
|
+
*/
|
|
22
|
+
export declare const stylesToArray: (styles: TextStyle, text: string) => TextStyleArray;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the object form of the styles property with styles that are assigned per
|
|
25
|
+
* character rather than grouped by range. This format is more verbose, and is
|
|
26
|
+
* only used during runtime (not for serialization/storage)
|
|
27
|
+
* @param {Array} styles the serialized form of a text object's styles
|
|
28
|
+
* @param {String} text the text string that the styles are applied to
|
|
29
|
+
* @return {Object}
|
|
30
|
+
*/
|
|
31
|
+
export declare const stylesFromArray: (styles: TextStyleArray | TextStyle, text: string) => TextStyle;
|
|
32
|
+
//# sourceMappingURL=textStyles.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper around Number#toFixed, which contrary to native method returns number, not string.
|
|
3
|
+
* @param {number|string} number number to operate on
|
|
4
|
+
* @param {number} fractionDigits number of fraction digits to "leave"
|
|
5
|
+
* @return {number}
|
|
6
|
+
*/
|
|
7
|
+
export declare const toFixed: (number: number | string, fractionDigits: number) => number;
|
|
8
|
+
//# sourceMappingURL=toFixed.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { IPoint, Point } from '../../Point';
|
|
2
|
+
import { TRadian } from '../../typedefs';
|
|
3
|
+
/**
|
|
4
|
+
* Rotates `vector` with `radians`
|
|
5
|
+
* @param {Point} vector The vector to rotate (x and y)
|
|
6
|
+
* @param {Number} radians The radians of the angle for the rotation
|
|
7
|
+
* @return {Point} The new rotated point
|
|
8
|
+
*/
|
|
9
|
+
export declare const rotateVector: (vector: Point, radians: TRadian) => Point;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a vector from points represented as a point
|
|
12
|
+
*
|
|
13
|
+
* @param {Point} from
|
|
14
|
+
* @param {Point} to
|
|
15
|
+
* @returns {Point} vector
|
|
16
|
+
*/
|
|
17
|
+
export declare const createVector: (from: IPoint, to: IPoint) => Point;
|
|
18
|
+
/**
|
|
19
|
+
* return the magnitude of a vector
|
|
20
|
+
* @return {number}
|
|
21
|
+
*/
|
|
22
|
+
export declare const magnitude: (point: Point) => number;
|
|
23
|
+
/**
|
|
24
|
+
* Calculates the angle between 2 vectors
|
|
25
|
+
* @param {Point} a
|
|
26
|
+
* @param {Point} b
|
|
27
|
+
* @returns the angle in radians from `a` to `b`
|
|
28
|
+
*/
|
|
29
|
+
export declare const calcAngleBetweenVectors: (a: Point, b: Point) => TRadian;
|
|
30
|
+
/**
|
|
31
|
+
* Calculates the angle between the x axis and the vector
|
|
32
|
+
* @param {Point} v
|
|
33
|
+
* @returns the angle in radians of `v`
|
|
34
|
+
*/
|
|
35
|
+
export declare const calcVectorRotation: (v: Point) => TRadian;
|
|
36
|
+
/**
|
|
37
|
+
* @param {Point} v
|
|
38
|
+
* @returns {Point} vector representing the unit vector pointing to the direction of `v`
|
|
39
|
+
*/
|
|
40
|
+
export declare const getUnitVector: (v: Point) => Point;
|
|
41
|
+
/**
|
|
42
|
+
* @param {Point} A
|
|
43
|
+
* @param {Point} B
|
|
44
|
+
* @param {Point} C
|
|
45
|
+
* @returns {{ vector: Point, angle: TRadian}} vector representing the bisector of A and A's angle
|
|
46
|
+
*/
|
|
47
|
+
export declare const getBisector: (A: Point, B: Point, C: Point) => {
|
|
48
|
+
vector: Point;
|
|
49
|
+
angle: TRadian;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* @param {Point} v
|
|
53
|
+
* @param {Boolean} [counterClockwise] the direction of the orthogonal vector, defaults to `true`
|
|
54
|
+
* @returns {Point} the unit orthogonal vector
|
|
55
|
+
*/
|
|
56
|
+
export declare const getOrthonormalVector: (v: Point, counterClockwise?: boolean) => Point;
|
|
57
|
+
//# sourceMappingURL=vectors.d.ts.map
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Point } from '../Point';
|
|
2
|
+
import type { PathData, TMat2D } from '../typedefs';
|
|
3
|
+
type PathSegmentInfoCommon = {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
command: string;
|
|
7
|
+
length: number;
|
|
8
|
+
};
|
|
9
|
+
type CurveInfo = PathSegmentInfoCommon & {
|
|
10
|
+
iterator: (pct: number) => Point;
|
|
11
|
+
angleFinder: (pct: number) => number;
|
|
12
|
+
length: number;
|
|
13
|
+
};
|
|
14
|
+
export type PathSegmentInfo = {
|
|
15
|
+
M: PathSegmentInfoCommon;
|
|
16
|
+
L: PathSegmentInfoCommon;
|
|
17
|
+
C: CurveInfo;
|
|
18
|
+
Q: CurveInfo;
|
|
19
|
+
Z: PathSegmentInfoCommon & {
|
|
20
|
+
destX: number;
|
|
21
|
+
destY: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type TPathSegmentsInfo = PathSegmentInfo[keyof PathSegmentInfo];
|
|
25
|
+
/**
|
|
26
|
+
* Calculate bounding box of a beziercurve
|
|
27
|
+
* @param {Number} x0 starting point
|
|
28
|
+
* @param {Number} y0
|
|
29
|
+
* @param {Number} x1 first control point
|
|
30
|
+
* @param {Number} y1
|
|
31
|
+
* @param {Number} x2 secondo control point
|
|
32
|
+
* @param {Number} y2
|
|
33
|
+
* @param {Number} x3 end of bezier
|
|
34
|
+
* @param {Number} y3
|
|
35
|
+
*/
|
|
36
|
+
export declare function getBoundsOfCurve(x0: any, y0: any, x1: any, y1: any, x2: any, y2: any, x3: any, y3: any): any;
|
|
37
|
+
/**
|
|
38
|
+
* Converts arc to a bunch of bezier curves
|
|
39
|
+
* @param {Number} fx starting point x
|
|
40
|
+
* @param {Number} fy starting point y
|
|
41
|
+
* @param {Array} coords Arc command
|
|
42
|
+
*/
|
|
43
|
+
export declare const fromArcToBeziers: (fx: any, fy: any, [_, rx, ry, rot, large, sweep, tx, ty]?: [any?, any?, any?, any?, any?, any?, any?, any?]) => any[];
|
|
44
|
+
/**
|
|
45
|
+
* This function take a parsed SVG path and make it simpler for fabricJS logic.
|
|
46
|
+
* simplification consist of: only UPPERCASE absolute commands ( relative converted to absolute )
|
|
47
|
+
* S converted in C, T converted in Q, A converted in C.
|
|
48
|
+
* @param {PathData} path the array of commands of a parsed svg path for `Path`
|
|
49
|
+
* @return {PathData} the simplified array of commands of a parsed svg path for `Path`
|
|
50
|
+
*/
|
|
51
|
+
export declare const makePathSimpler: (path: PathData) => PathData;
|
|
52
|
+
/**
|
|
53
|
+
* Run over a parsed and simplified path and extract some information (length of each command and starting point)
|
|
54
|
+
* @param {PathData} path parsed path commands
|
|
55
|
+
* @return {Array} path commands information
|
|
56
|
+
*/
|
|
57
|
+
export declare const getPathSegmentsInfo: (path: PathData) => TPathSegmentsInfo[];
|
|
58
|
+
export declare const getPointOnPath: (path: PathData, distance: number, infos?: ReturnType<typeof getPathSegmentsInfo>) => Point | {
|
|
59
|
+
x: number;
|
|
60
|
+
y: number;
|
|
61
|
+
angle: number;
|
|
62
|
+
} | undefined;
|
|
63
|
+
/**
|
|
64
|
+
*
|
|
65
|
+
* @param {string} pathString
|
|
66
|
+
* @return {(string|number)[][]} An array of SVG path commands
|
|
67
|
+
* @example <caption>Usage</caption>
|
|
68
|
+
* parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [
|
|
69
|
+
* ['M', 3, 4],
|
|
70
|
+
* ['Q', 3, 5, 2, 1, 4, 0],
|
|
71
|
+
* ['Q', 9, 12, 2, 1, 4, 0],
|
|
72
|
+
* ];
|
|
73
|
+
*
|
|
74
|
+
*/
|
|
75
|
+
export declare const parsePath: (pathString: any) => any[];
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* Converts points to a smooth SVG path
|
|
79
|
+
* @param {{ x: number,y: number }[]} points Array of points
|
|
80
|
+
* @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.
|
|
81
|
+
* @return {(string|number)[][]} An array of SVG path commands
|
|
82
|
+
*/
|
|
83
|
+
export declare const getSmoothPathFromPoints: (points: any, correction?: number) => (string | number)[][];
|
|
84
|
+
/**
|
|
85
|
+
* Transform a path by transforming each segment.
|
|
86
|
+
* it has to be a simplified path or it won't work.
|
|
87
|
+
* WARNING: this depends from pathOffset for correct operation
|
|
88
|
+
* @param {PathData} path fabricJS parsed and simplified path commands
|
|
89
|
+
* @param {TMat2D} transform matrix that represent the transformation
|
|
90
|
+
* @param {Point} [pathOffset] `Path.pathOffset`
|
|
91
|
+
* @returns {Array} the transformed path
|
|
92
|
+
*/
|
|
93
|
+
export declare const transformPath: (path: PathData, transform: TMat2D, pathOffset: Point) => (string | number)[][];
|
|
94
|
+
/**
|
|
95
|
+
* Returns an array of path commands to create a regular polygon
|
|
96
|
+
* @param {number} radius
|
|
97
|
+
* @param {number} numVertexes
|
|
98
|
+
* @returns {(string|number)[][]} An array of SVG path commands
|
|
99
|
+
*/
|
|
100
|
+
export declare const getRegularPolygonPath: (numVertexes: any, radius: any) => any[];
|
|
101
|
+
/**
|
|
102
|
+
* Join path commands to go back to svg format
|
|
103
|
+
* @param {Array} pathData fabricJS parsed path commands
|
|
104
|
+
* @return {String} joined path 'M 0 0 L 20 30'
|
|
105
|
+
*/
|
|
106
|
+
export declare const joinPath: (pathData: any) => any;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FabricObject } from '../shapes/Object/FabricObject';
|
|
2
|
+
import { TMat2D } from '../typedefs';
|
|
3
|
+
type FabricObjectWithTransformMatrix = FabricObject & {
|
|
4
|
+
transformMatrix?: TMat2D;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* This function is an helper for svg import. it removes the transform matrix
|
|
8
|
+
* and set to object properties that fabricjs can handle
|
|
9
|
+
* @private
|
|
10
|
+
* @param {Object} preserveAspectRatioOptions
|
|
11
|
+
*/
|
|
12
|
+
export declare const removeTransformMatrixForSvgParsing: (object: FabricObjectWithTransformMatrix, preserveAspectRatioOptions?: any) => void;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=transform_matrix_removal.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ActiveSelection } from '../shapes/ActiveSelection';
|
|
2
|
+
import type { Group } from '../shapes/Group';
|
|
3
|
+
import type { FabricObject, TCachedFabricObject } from '../shapes/Object/Object';
|
|
4
|
+
import type { FabricObjectWithDragSupport } from '../shapes/Object/InteractiveObject';
|
|
5
|
+
import type { TFiller } from '../typedefs';
|
|
6
|
+
import type { Text } from '../shapes/Text/Text';
|
|
7
|
+
import type { Pattern } from '../Pattern';
|
|
8
|
+
import type { IText } from '../shapes/IText/IText';
|
|
9
|
+
import type { Textbox } from '../shapes/Textbox';
|
|
10
|
+
export declare const isFiller: (filler: TFiller | string | null) => filler is TFiller;
|
|
11
|
+
export declare const isSerializableFiller: (filler: TFiller | string | null) => filler is TFiller;
|
|
12
|
+
export declare const isPattern: (filler: TFiller) => filler is Pattern;
|
|
13
|
+
export declare const isCollection: (fabricObject?: FabricObject) => fabricObject is Group | ActiveSelection;
|
|
14
|
+
export declare const isActiveSelection: (fabricObject?: FabricObject) => fabricObject is ActiveSelection;
|
|
15
|
+
export declare const isTextObject: (fabricObject?: FabricObject) => fabricObject is Text<import("../EventTypeDefs").ObjectEvents>;
|
|
16
|
+
export declare const isInteractiveTextObject: (fabricObject?: FabricObject) => fabricObject is IText<import("../shapes/IText/ITextBehavior").ITextEvents> | Textbox;
|
|
17
|
+
export declare const isFabricObjectCached: (fabricObject: FabricObject) => fabricObject is TCachedFabricObject;
|
|
18
|
+
export declare const isFabricObjectWithDragSupport: (fabricObject?: FabricObject) => fabricObject is FabricObjectWithDragSupport;
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|