fabric 5.3.0 → 6.0.0-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 +11 -0
- package/.babelrcAlt +19 -0
- package/.browserslistrc +5 -0
- package/.eslintignore +3 -0
- package/.eslintrc.js +43 -0
- package/.eslintrc.json +38 -46
- package/.eslintrc_tests +12 -0
- package/.gitattributes +2 -0
- package/.gitpod.yml +17 -1
- package/.prettierignore +19 -0
- package/.prettierrc +4 -0
- package/CHANGELOG.md +532 -189
- package/CONTRIBUTING.md +224 -59
- package/README.md +200 -235
- package/bower.json +1 -3
- package/dist/fabric.d.ts +42 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +27582 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +1 -0
- package/dist/index.mjs +27519 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.node.cjs +27663 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.d.ts +14 -0
- package/dist/index.node.mjs +27606 -0
- package/dist/index.node.mjs.map +1 -0
- package/dist/src/ClassRegistry.d.ts +13 -0
- package/dist/src/Collection.d.ts +136 -0
- package/dist/src/CommonMethods.d.ts +32 -0
- package/dist/src/EventTypeDefs.d.ts +227 -0
- package/dist/src/Intersection.d.ts +112 -0
- package/dist/src/Observable.d.ts +60 -0
- package/dist/src/Pattern.d.ts +113 -0
- package/dist/src/Point.d.ts +232 -0
- package/dist/src/Shadow.d.ts +97 -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 +47 -0
- package/dist/src/canvas/Canvas.d.ts +548 -0
- package/dist/src/canvas/SelectableCanvas.d.ts +754 -0
- package/dist/src/canvas/StaticCanvas.d.ts +778 -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/commonControls.d.ts +28 -0
- package/dist/src/controls/controlRendering.d.ts +29 -0
- package/dist/src/controls/drag.d.ts +12 -0
- package/dist/src/controls/index.d.ts +13 -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 +15 -0
- package/dist/src/env/node.d.ts +5 -0
- package/dist/src/env/types.d.ts +15 -0
- package/dist/src/filters/BaseFilter.d.ts +153 -0
- package/dist/src/filters/BlendColor.d.ts +80 -0
- package/dist/src/filters/BlendImage.d.ts +92 -0
- package/dist/src/filters/Blur.d.ts +51 -0
- package/dist/src/filters/Boilerplate.d.ts +48 -0
- package/dist/src/filters/Brightness.d.ts +47 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
- package/dist/src/filters/ColorMatrix.d.ts +63 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts +545 -0
- package/dist/src/filters/Composed.d.ts +45 -0
- package/dist/src/filters/Contrast.d.ts +45 -0
- package/dist/src/filters/Convolute.d.ts +82 -0
- package/dist/src/filters/FilterBackend.d.ts +14 -0
- package/dist/src/filters/GLProbes/GLProbe.d.ts +11 -0
- package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
- package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
- package/dist/src/filters/Gamma.d.ts +54 -0
- package/dist/src/filters/Grayscale.d.ts +46 -0
- package/dist/src/filters/HueRotation.d.ts +24 -0
- package/dist/src/filters/Invert.d.ts +55 -0
- package/dist/src/filters/Noise.d.ts +54 -0
- package/dist/src/filters/Pixelate.d.ts +44 -0
- package/dist/src/filters/RemoveColor.d.ts +63 -0
- package/dist/src/filters/Resize.d.ts +136 -0
- package/dist/src/filters/Saturation.d.ts +48 -0
- package/dist/src/filters/Vibrance.d.ts +48 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
- package/dist/src/filters/filters.d.ts +21 -0
- package/dist/src/filters/index.d.ts +5 -0
- package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
- package/dist/src/filters/shaders/blendColor.d.ts +13 -0
- package/dist/src/filters/shaders/blendImage.d.ts +3 -0
- package/dist/src/filters/shaders/blur.d.ts +2 -0
- package/dist/src/filters/shaders/brightness.d.ts +2 -0
- package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
- package/dist/src/filters/shaders/constrast.d.ts +2 -0
- package/dist/src/filters/shaders/convolute.d.ts +11 -0
- package/dist/src/filters/shaders/gamma.d.ts +2 -0
- package/dist/src/filters/shaders/grayscale.d.ts +3 -0
- package/dist/src/filters/shaders/invert.d.ts +2 -0
- package/dist/src/filters/shaders/noise.d.ts +2 -0
- package/dist/src/filters/shaders/pixelate.d.ts +2 -0
- package/dist/src/filters/shaders/removeColor.d.ts +2 -0
- package/dist/src/filters/shaders/saturation.d.ts +2 -0
- package/dist/src/filters/shaders/vibrance.d.ts +2 -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 +3 -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/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 +53 -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/index.d.ts +10 -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 +82 -0
- package/dist/src/shapes/Circle.d.ts +99 -0
- package/dist/src/shapes/Ellipse.d.ts +84 -0
- package/dist/src/shapes/Group.d.ts +408 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
- package/dist/src/shapes/IText/IText.d.ts +335 -0
- package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +83 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
- package/dist/src/shapes/IText/constants.d.ts +13 -0
- package/dist/src/shapes/Image.d.ts +311 -0
- package/dist/src/shapes/Line.d.ts +126 -0
- package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
- package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
- package/dist/src/shapes/Object/Object.d.ts +594 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
- package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
- package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
- package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
- package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
- package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
- package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
- package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
- package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
- package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
- package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
- package/dist/src/shapes/Object/types/index.d.ts +6 -0
- package/dist/src/shapes/Path.d.ts +130 -0
- package/dist/src/shapes/Polygon.d.ts +9 -0
- package/dist/src/shapes/Polyline.d.ts +140 -0
- package/dist/src/shapes/Rect.d.ts +76 -0
- package/dist/src/shapes/Text/StyledText.d.ts +119 -0
- package/dist/src/shapes/Text/Text.d.ts +673 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
- package/dist/src/shapes/Text/constants.d.ts +7 -0
- package/dist/src/shapes/Textbox.d.ts +185 -0
- package/dist/src/shapes/Triangle.d.ts +25 -0
- package/dist/src/typedefs.d.ts +90 -0
- package/dist/src/util/animation/AnimationBase.d.ts +54 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -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/dom_event.d.ts +5 -0
- package/dist/src/util/dom_misc.d.ts +39 -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/index.d.ts +35 -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_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 +9 -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/index.d.ts +96 -0
- package/dist/src/util/path/regex.d.ts +3 -0
- package/dist/src/util/path/typechecks.d.ts +24 -0
- package/dist/src/util/path/typedefs.d.ts +220 -0
- package/dist/src/util/transform_matrix_removal.d.ts +14 -0
- package/dist/src/util/types.d.ts +19 -0
- package/fabric.ts +51 -0
- package/index.node.ts +37 -0
- package/index.ts +1 -0
- package/package.json +100 -40
- package/publish.js +0 -26
- package/rollup.config.mjs +91 -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/git.mjs +36 -0
- package/scripts/index.mjs +564 -0
- package/scripts/sandbox.mjs +149 -0
- package/src/ClassRegistry.ts +56 -0
- package/src/Collection.ts +346 -0
- package/src/CommonMethods.ts +63 -0
- package/src/EventTypeDefs.ts +296 -0
- package/src/Intersection.ts +302 -0
- package/src/Observable.ts +181 -0
- package/src/Pattern.ts +227 -0
- package/src/Point.ts +388 -0
- package/src/Shadow.ts +214 -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 +90 -0
- package/src/canvas/Canvas.ts +1607 -0
- package/src/canvas/SelectableCanvas.ts +1608 -0
- package/src/canvas/StaticCanvas.ts +1734 -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 +20 -0
- package/src/controls/Control.ts +380 -0
- package/src/controls/changeWidth.ts +52 -0
- package/src/controls/commonControls.ts +105 -0
- package/src/controls/controlRendering.ts +138 -0
- package/src/controls/drag.ts +31 -0
- package/src/controls/index.ts +22 -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 +32 -0
- package/src/env/index.ts +24 -0
- package/src/env/node.ts +56 -0
- package/src/env/types.ts +15 -0
- package/src/filters/{base_filter.class.js → BaseFilter.ts} +192 -151
- package/src/filters/BlendColor.ts +217 -0
- package/src/filters/BlendImage.ts +228 -0
- package/src/filters/Blur.ts +179 -0
- package/src/filters/Boilerplate.ts +94 -0
- package/src/filters/Brightness.ts +83 -0
- package/src/filters/Canvas2dFilterBackend.ts +65 -0
- package/src/filters/ColorMatrix.ts +145 -0
- package/src/filters/ColorMatrixFilters.ts +77 -0
- package/src/filters/Composed.ts +76 -0
- package/src/filters/Contrast.ts +82 -0
- package/src/filters/Convolute.ts +184 -0
- package/src/filters/FilterBackend.ts +34 -0
- package/src/filters/GLProbes/GLProbe.ts +11 -0
- package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
- package/src/filters/GLProbes/WebGLProbe.ts +46 -0
- package/src/filters/Gamma.ts +110 -0
- package/src/filters/Grayscale.ts +102 -0
- package/src/filters/HueRotation.ts +62 -0
- package/src/filters/Invert.ts +99 -0
- package/src/filters/Noise.ts +94 -0
- package/src/filters/Pixelate.ts +96 -0
- package/src/filters/RemoveColor.ts +135 -0
- package/src/filters/Resize.ts +538 -0
- package/src/filters/Saturation.ts +87 -0
- package/src/filters/Vibrance.ts +88 -0
- package/src/filters/WebGLFilterBackend.ts +430 -0
- package/src/filters/filters.ts +28 -0
- package/src/filters/index.ts +5 -0
- package/src/filters/shaders/baseFilter.ts +19 -0
- package/src/filters/shaders/blendColor.ts +33 -0
- package/src/filters/shaders/blendImage.ts +32 -0
- package/src/filters/shaders/blur.ts +24 -0
- package/src/filters/shaders/brightness.ts +11 -0
- package/src/filters/shaders/colorMatrix.ts +12 -0
- package/src/filters/shaders/constrast.ts +11 -0
- package/src/filters/shaders/convolute.ts +154 -0
- package/src/filters/shaders/gamma.ts +15 -0
- package/src/filters/shaders/grayscale.ts +36 -0
- package/src/filters/shaders/invert.ts +19 -0
- package/src/filters/shaders/noise.ts +16 -0
- package/src/filters/shaders/pixelate.ts +19 -0
- package/src/filters/shaders/removeColor.ts +13 -0
- package/src/filters/shaders/saturation.ts +15 -0
- package/src/filters/shaders/vibrance.ts +16 -0
- package/src/filters/typedefs.ts +65 -0
- package/src/gradient/Gradient.ts +406 -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 +56 -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/parkinglot/canvas_animation.mixin.ts +121 -0
- package/src/parkinglot/straighten.ts +58 -0
- package/src/parser/applyViewboxTransform.ts +157 -0
- package/src/parser/attributes.ts +25 -0
- package/src/parser/constants.ts +115 -0
- package/src/parser/doesSomeParentMatch.ts +19 -0
- package/src/parser/elementById.ts +21 -0
- package/src/parser/elementMatchesRule.ts +16 -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 +31 -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/index.ts +9 -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 +34 -0
- package/src/parser/parseSVGDocument.ts +93 -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 +78 -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 +189 -0
- package/src/shapes/Circle.ts +242 -0
- package/src/shapes/Ellipse.ts +179 -0
- package/src/shapes/Group.ts +1100 -0
- package/src/shapes/IText/DraggableTextDelegate.ts +382 -0
- package/src/shapes/IText/IText.ts +693 -0
- package/src/shapes/IText/ITextBehavior.ts +1064 -0
- package/src/shapes/IText/ITextClickBehavior.ts +325 -0
- package/src/shapes/IText/ITextKeyBehavior.ts +685 -0
- package/src/shapes/IText/constants.ts +47 -0
- package/src/shapes/Image.ts +841 -0
- package/src/shapes/Line.ts +346 -0
- package/src/shapes/Object/AnimatableObject.ts +106 -0
- package/src/shapes/Object/FabricObject.ts +29 -0
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
- package/src/shapes/Object/InteractiveObject.ts +672 -0
- package/src/shapes/Object/Object.ts +1561 -0
- package/src/shapes/Object/ObjectGeometry.ts +813 -0
- package/src/shapes/Object/ObjectOrigin.ts +276 -0
- package/src/shapes/Object/StackedObject.ts +206 -0
- package/src/shapes/Object/defaultValues.ts +108 -0
- package/src/shapes/Object/types/BaseProps.ts +96 -0
- package/src/shapes/Object/types/BorderProps.ts +40 -0
- package/src/shapes/Object/types/ControlProps.ts +69 -0
- package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
- package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
- package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
- package/src/shapes/Object/types/ObjectProps.ts +46 -0
- package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
- package/src/shapes/Object/types/index.ts +8 -0
- package/src/shapes/Path.ts +416 -0
- package/src/shapes/Polygon.ts +20 -0
- package/src/shapes/Polyline.ts +359 -0
- package/src/shapes/Rect.ts +233 -0
- package/src/shapes/Text/StyledText.ts +329 -0
- package/src/shapes/Text/Text.ts +1884 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
- package/src/shapes/Text/constants.ts +91 -0
- package/src/shapes/Textbox.ts +477 -0
- package/src/shapes/Triangle.ts +60 -0
- package/src/typedefs.ts +115 -0
- package/src/util/animation/AnimationBase.ts +166 -0
- package/src/util/animation/AnimationFrameProvider.ts +9 -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/dom_event.ts +28 -0
- package/src/util/dom_misc.ts +121 -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/index.ts +102 -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_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 +28 -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 +29 -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 +226 -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 +134 -0
- package/src/util/misc/toFixed.ts +8 -0
- package/src/util/misc/vectors.ts +82 -0
- package/src/util/path/index.ts +1038 -0
- package/src/util/path/regex.ts +41 -0
- package/src/util/path/typechecks.ts +145 -0
- package/src/util/path/typedefs.ts +305 -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,41 @@
|
|
|
1
|
+
// absolute value number
|
|
2
|
+
const absNumberRegExStr = String.raw`(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?`;
|
|
3
|
+
export const numberRegExStr = `[-+]?${absNumberRegExStr}`;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* p for param
|
|
7
|
+
* using "bad naming" here because it makes the regex much easier to read
|
|
8
|
+
*/
|
|
9
|
+
const p = `(${numberRegExStr})`;
|
|
10
|
+
|
|
11
|
+
const reMoveToCommand = `(M) (?:${p} ${p} ?)+`;
|
|
12
|
+
|
|
13
|
+
const reLineCommand = `(L) (?:${p} ${p} ?)+`;
|
|
14
|
+
|
|
15
|
+
const reHorizontalLineCommand = `(H) (?:${p} ?)+`;
|
|
16
|
+
|
|
17
|
+
const reVerticalLineCommand = `(V) (?:${p} ?)+`;
|
|
18
|
+
|
|
19
|
+
const reClosePathCommand = String.raw`(Z)\s*`;
|
|
20
|
+
|
|
21
|
+
const reCubicCurveCommand = `(C) (?:${p} ${p} ${p} ${p} ${p} ${p} ?)+`;
|
|
22
|
+
|
|
23
|
+
const reCubicCurveShortcutCommand = `(S) (?:${p} ${p} ${p} ${p} ?)+`;
|
|
24
|
+
|
|
25
|
+
const reQuadraticCurveCommand = `(Q) (?:${p} ${p} ${p} ${p} ?)+`;
|
|
26
|
+
|
|
27
|
+
const reQuadraticCurveShortcutCommand = `(T) (?:${p} ${p} ?)+`;
|
|
28
|
+
|
|
29
|
+
const reArcCommand = `(A) (?:${p} ${p} ${p} ([01]) ?([01]) ${p} ${p} ?)+`;
|
|
30
|
+
|
|
31
|
+
export const rePathCommand =
|
|
32
|
+
`(?:(?:${reMoveToCommand})` +
|
|
33
|
+
`|(?:${reLineCommand})` +
|
|
34
|
+
`|(?:${reHorizontalLineCommand})` +
|
|
35
|
+
`|(?:${reVerticalLineCommand})` +
|
|
36
|
+
`|(?:${reClosePathCommand})` +
|
|
37
|
+
`|(?:${reCubicCurveCommand})` +
|
|
38
|
+
`|(?:${reCubicCurveShortcutCommand})` +
|
|
39
|
+
`|(?:${reQuadraticCurveCommand})` +
|
|
40
|
+
`|(?:${reQuadraticCurveShortcutCommand})` +
|
|
41
|
+
`|(?:${reArcCommand}))`;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TComplexParsedCommand,
|
|
3
|
+
TParsedAbsoluteArcCommand,
|
|
4
|
+
TParsedAbsoluteClosePathCommand,
|
|
5
|
+
TParsedAbsoluteCubicCurveCommand,
|
|
6
|
+
TParsedAbsoluteCubicCurveShortcutCommand,
|
|
7
|
+
TParsedAbsoluteHorizontalLineCommand,
|
|
8
|
+
TParsedAbsoluteLineCommand,
|
|
9
|
+
TParsedAbsoluteMoveToCommand,
|
|
10
|
+
TParsedAbsoluteQuadraticCurveCommand,
|
|
11
|
+
TParsedAbsoluteQuadraticCurveShortcutCommand,
|
|
12
|
+
TParsedAbsoluteVerticalLineCommand,
|
|
13
|
+
TParsedClosePathCommand,
|
|
14
|
+
TParsedLineCommand,
|
|
15
|
+
TParsedRelativeArcCommand,
|
|
16
|
+
TParsedRelativeClosePathCommand,
|
|
17
|
+
TParsedRelativeCubicCurveCommand,
|
|
18
|
+
TParsedRelativeCubicCurveShortcutCommand,
|
|
19
|
+
TParsedRelativeHorizontalLineCommand,
|
|
20
|
+
TParsedRelativeLineCommand,
|
|
21
|
+
TParsedRelativeMoveToCommand,
|
|
22
|
+
TParsedRelativeQuadraticCurveCommand,
|
|
23
|
+
TParsedRelativeQuadraticCurveShortcutCommand,
|
|
24
|
+
TParsedRelativeVerticalLineCommand,
|
|
25
|
+
} from './typedefs';
|
|
26
|
+
|
|
27
|
+
export function isAbsMoveToCmd(
|
|
28
|
+
cmd: TComplexParsedCommand
|
|
29
|
+
): cmd is TParsedAbsoluteMoveToCommand {
|
|
30
|
+
return cmd.length == 3 && cmd[0] == 'M';
|
|
31
|
+
}
|
|
32
|
+
export function isRelMoveToCmd(
|
|
33
|
+
cmd: TComplexParsedCommand
|
|
34
|
+
): cmd is TParsedRelativeMoveToCommand {
|
|
35
|
+
return cmd.length == 3 && cmd[0] == 'm';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isAbsLineCmd(
|
|
39
|
+
cmd: TComplexParsedCommand
|
|
40
|
+
): cmd is TParsedAbsoluteLineCommand {
|
|
41
|
+
return cmd.length == 3 && cmd[0] == 'L';
|
|
42
|
+
}
|
|
43
|
+
export function isRelLineCmd(
|
|
44
|
+
cmd: TComplexParsedCommand
|
|
45
|
+
): cmd is TParsedRelativeLineCommand {
|
|
46
|
+
return cmd.length == 3 && cmd[0] == 'l';
|
|
47
|
+
}
|
|
48
|
+
export function isLineCommand(
|
|
49
|
+
cmd: TComplexParsedCommand
|
|
50
|
+
): cmd is TParsedLineCommand {
|
|
51
|
+
return isAbsLineCmd(cmd) || isRelLineCmd(cmd);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function isAbsHorizontalLineCmd(
|
|
55
|
+
cmd: TComplexParsedCommand
|
|
56
|
+
): cmd is TParsedAbsoluteHorizontalLineCommand {
|
|
57
|
+
return cmd.length == 2 && cmd[0] == 'H';
|
|
58
|
+
}
|
|
59
|
+
export function isRelHorizontalLineCmd(
|
|
60
|
+
cmd: TComplexParsedCommand
|
|
61
|
+
): cmd is TParsedRelativeHorizontalLineCommand {
|
|
62
|
+
return cmd.length == 2 && cmd[0] == 'h';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function isAbsVerticalLineCmd(
|
|
66
|
+
cmd: TComplexParsedCommand
|
|
67
|
+
): cmd is TParsedAbsoluteVerticalLineCommand {
|
|
68
|
+
return cmd.length == 2 && cmd[0] == 'V';
|
|
69
|
+
}
|
|
70
|
+
export function isRelVerticalLineCmd(
|
|
71
|
+
cmd: TComplexParsedCommand
|
|
72
|
+
): cmd is TParsedRelativeVerticalLineCommand {
|
|
73
|
+
return cmd.length == 2 && cmd[0] == 'v';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function isAbsClosePathCmd(
|
|
77
|
+
cmd: TComplexParsedCommand
|
|
78
|
+
): cmd is TParsedAbsoluteClosePathCommand {
|
|
79
|
+
return cmd.length == 1 && cmd[0] == 'Z';
|
|
80
|
+
}
|
|
81
|
+
export function isRelClosePathCmd(
|
|
82
|
+
cmd: TComplexParsedCommand
|
|
83
|
+
): cmd is TParsedRelativeClosePathCommand {
|
|
84
|
+
return cmd.length == 1 && cmd[0] == 'z';
|
|
85
|
+
}
|
|
86
|
+
export function isClosePathCommand(
|
|
87
|
+
cmd: TComplexParsedCommand
|
|
88
|
+
): cmd is TParsedClosePathCommand {
|
|
89
|
+
return cmd.length == 1 && (cmd[0] == 'z' || cmd[0] == 'Z');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function isAbsCubicCurveCmd(
|
|
93
|
+
cmd: TComplexParsedCommand
|
|
94
|
+
): cmd is TParsedAbsoluteCubicCurveCommand {
|
|
95
|
+
return cmd.length == 7 && cmd[0] == 'C';
|
|
96
|
+
}
|
|
97
|
+
export function isRelCubicCurveCmd(
|
|
98
|
+
cmd: TComplexParsedCommand
|
|
99
|
+
): cmd is TParsedRelativeCubicCurveCommand {
|
|
100
|
+
return cmd.length == 7 && cmd[0] == 'c';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function isAbsCubicCurveShortcutCmd(
|
|
104
|
+
cmd: TComplexParsedCommand
|
|
105
|
+
): cmd is TParsedAbsoluteCubicCurveShortcutCommand {
|
|
106
|
+
return cmd.length == 5 && cmd[0] == 'S';
|
|
107
|
+
}
|
|
108
|
+
export function isRelCubicCurveShortcutCmd(
|
|
109
|
+
cmd: TComplexParsedCommand
|
|
110
|
+
): cmd is TParsedRelativeCubicCurveShortcutCommand {
|
|
111
|
+
return cmd.length == 5 && cmd[0] == 's';
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export function isAbsQuadraticCurveCmd(
|
|
115
|
+
cmd: TComplexParsedCommand
|
|
116
|
+
): cmd is TParsedAbsoluteQuadraticCurveCommand {
|
|
117
|
+
return cmd.length == 5 && cmd[0] == 'Q';
|
|
118
|
+
}
|
|
119
|
+
export function isRelQuadraticCurveCmd(
|
|
120
|
+
cmd: TComplexParsedCommand
|
|
121
|
+
): cmd is TParsedRelativeQuadraticCurveCommand {
|
|
122
|
+
return cmd.length == 5 && cmd[0] == 'q';
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function isAbsQuadraticCurveShortcutCmd(
|
|
126
|
+
cmd: TComplexParsedCommand
|
|
127
|
+
): cmd is TParsedAbsoluteQuadraticCurveShortcutCommand {
|
|
128
|
+
return cmd.length == 3 && cmd[0] == 'T';
|
|
129
|
+
}
|
|
130
|
+
export function isRelQuadraticCurveShortcutCmd(
|
|
131
|
+
cmd: TComplexParsedCommand
|
|
132
|
+
): cmd is TParsedRelativeQuadraticCurveShortcutCommand {
|
|
133
|
+
return cmd.length == 3 && cmd[0] == 't';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function isAbsArcCmd(
|
|
137
|
+
cmd: TComplexParsedCommand
|
|
138
|
+
): cmd is TParsedAbsoluteArcCommand {
|
|
139
|
+
return cmd.length == 8 && cmd[0] == 'A';
|
|
140
|
+
}
|
|
141
|
+
export function isRelArcCmd(
|
|
142
|
+
cmd: TComplexParsedCommand
|
|
143
|
+
): cmd is TParsedRelativeArcCommand {
|
|
144
|
+
return cmd.length == 8 && cmd[0] == 'a';
|
|
145
|
+
}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import type { TRadian } from '../../typedefs';
|
|
2
|
+
import type { XY, Point } from '../../Point';
|
|
3
|
+
|
|
4
|
+
export type TPathSegmentInfoCommon<C extends string> = {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
command?: C;
|
|
8
|
+
length: number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type TCurveInfo<C extends string> = TPathSegmentInfoCommon<C> & {
|
|
12
|
+
/**
|
|
13
|
+
* Get the Point a certain percent distance along the curve
|
|
14
|
+
* @param pct
|
|
15
|
+
*/
|
|
16
|
+
iterator: (pct: number) => Point;
|
|
17
|
+
/**
|
|
18
|
+
* Get the angle to a percent
|
|
19
|
+
* @param pct
|
|
20
|
+
*/
|
|
21
|
+
angleFinder: (pct: number) => number;
|
|
22
|
+
/**
|
|
23
|
+
* Total length of the curve
|
|
24
|
+
*/
|
|
25
|
+
length: number;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type TEndPathInfo = TPathSegmentInfoCommon<'Z'> & {
|
|
29
|
+
destX: number;
|
|
30
|
+
destY: number;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Relevant info to calculate path length/points on path
|
|
35
|
+
* for each command type in a simplified parsed path
|
|
36
|
+
*/
|
|
37
|
+
export type TPathSegmentCommandInfo = {
|
|
38
|
+
M: TPathSegmentInfoCommon<'M'>;
|
|
39
|
+
L: TPathSegmentInfoCommon<'L'>;
|
|
40
|
+
C: TCurveInfo<'C'>;
|
|
41
|
+
Q: TCurveInfo<'Q'>;
|
|
42
|
+
Z: TEndPathInfo;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export type TPathSegmentInfo =
|
|
46
|
+
TPathSegmentCommandInfo[keyof TPathSegmentCommandInfo];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A parsed command of any length (even impossible ones)
|
|
50
|
+
*/
|
|
51
|
+
export type TParsedCommand =
|
|
52
|
+
| [command: string]
|
|
53
|
+
| [command: string, arg1: number]
|
|
54
|
+
| [command: string, arg1: number, arg2: number]
|
|
55
|
+
| [command: string, arg1: number, arg2: number, arg3: number]
|
|
56
|
+
| [command: string, arg1: number, arg2: number, arg3: number, arg4: number]
|
|
57
|
+
| [
|
|
58
|
+
command: string,
|
|
59
|
+
arg1: number,
|
|
60
|
+
arg2: number,
|
|
61
|
+
arg3: number,
|
|
62
|
+
arg4: number,
|
|
63
|
+
arg5: number
|
|
64
|
+
]
|
|
65
|
+
| [
|
|
66
|
+
command: string,
|
|
67
|
+
arg1: number,
|
|
68
|
+
arg2: number,
|
|
69
|
+
arg3: number,
|
|
70
|
+
arg4: number,
|
|
71
|
+
arg5: number,
|
|
72
|
+
arg6: number
|
|
73
|
+
]
|
|
74
|
+
| [
|
|
75
|
+
command: string,
|
|
76
|
+
arg1: number,
|
|
77
|
+
arg2: number,
|
|
78
|
+
arg3: number,
|
|
79
|
+
arg4: number,
|
|
80
|
+
arg5: number,
|
|
81
|
+
arg6: number,
|
|
82
|
+
arg7: number
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Command strings of any length
|
|
87
|
+
*/
|
|
88
|
+
type TCommand1<T extends TParsedCommand> = `${T[0]}`;
|
|
89
|
+
type TCommand2<T extends TParsedCommand> = `${T[0]} ${T[1]}`;
|
|
90
|
+
type TCommand3<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]}`;
|
|
91
|
+
type TCommand4<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]} ${T[3]}`;
|
|
92
|
+
type TCommand5<T extends TParsedCommand> =
|
|
93
|
+
`${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]}`;
|
|
94
|
+
type TCommand6<T extends TParsedCommand> =
|
|
95
|
+
`${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]} ${T[5]}`;
|
|
96
|
+
type TCommand7<T extends TParsedCommand> =
|
|
97
|
+
`${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]} ${T[5]} ${T[6]}`;
|
|
98
|
+
type TCommand8<T extends TParsedCommand> =
|
|
99
|
+
`${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]} ${T[5]} ${T[6]} ${T[7]}`;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Begin parsed SVG path commands
|
|
103
|
+
* Read about commands at {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths|MDN}
|
|
104
|
+
*/
|
|
105
|
+
export type TParsedAbsoluteMoveToCommand = [command: 'M', x: number, y: number];
|
|
106
|
+
export type TParsedRelativeMoveToCommand = [
|
|
107
|
+
command: 'm',
|
|
108
|
+
dx: number,
|
|
109
|
+
dy: number
|
|
110
|
+
];
|
|
111
|
+
export type TParsedMoveToCommand =
|
|
112
|
+
| TParsedAbsoluteMoveToCommand
|
|
113
|
+
| TParsedRelativeMoveToCommand;
|
|
114
|
+
|
|
115
|
+
export type TMoveToCommand = TCommand3<TParsedMoveToCommand>;
|
|
116
|
+
|
|
117
|
+
export type TParsedAbsoluteLineCommand = [command: 'L', x: number, y: number];
|
|
118
|
+
export type TParsedRelativeLineCommand = [command: 'l', dx: number, dy: number];
|
|
119
|
+
export type TParsedLineCommand =
|
|
120
|
+
| TParsedAbsoluteLineCommand
|
|
121
|
+
| TParsedRelativeLineCommand;
|
|
122
|
+
|
|
123
|
+
export type TLineCommand = TCommand3<TParsedLineCommand>;
|
|
124
|
+
|
|
125
|
+
export type TParsedAbsoluteHorizontalLineCommand = [command: 'H', x: number];
|
|
126
|
+
export type TParsedRelativeHorizontalLineCommand = [command: 'h', dx: number];
|
|
127
|
+
export type TParsedHorizontalLineCommand =
|
|
128
|
+
| TParsedAbsoluteHorizontalLineCommand
|
|
129
|
+
| TParsedRelativeHorizontalLineCommand;
|
|
130
|
+
|
|
131
|
+
export type THorizontalLineCommand = TCommand2<TParsedHorizontalLineCommand>;
|
|
132
|
+
|
|
133
|
+
export type TParsedAbsoluteVerticalLineCommand = [command: 'V', y: number];
|
|
134
|
+
export type TParsedRelativeVerticalLineCommand = [command: 'v', dy: number];
|
|
135
|
+
export type TParsedVerticalLineCommand =
|
|
136
|
+
| TParsedAbsoluteVerticalLineCommand
|
|
137
|
+
| TParsedRelativeVerticalLineCommand;
|
|
138
|
+
|
|
139
|
+
export type TVerticalLineCommand = TCommand2<TParsedVerticalLineCommand>;
|
|
140
|
+
|
|
141
|
+
export type TParsedAbsoluteClosePathCommand = [command: 'Z'];
|
|
142
|
+
export type TParsedRelativeClosePathCommand = [command: 'z'];
|
|
143
|
+
export type TParsedClosePathCommand =
|
|
144
|
+
| TParsedAbsoluteClosePathCommand
|
|
145
|
+
| TParsedRelativeClosePathCommand;
|
|
146
|
+
|
|
147
|
+
export type TClosePathCommand = TCommand1<TParsedClosePathCommand>;
|
|
148
|
+
|
|
149
|
+
export type TParsedAbsoluteCubicCurveCommand = [
|
|
150
|
+
command: 'C',
|
|
151
|
+
controlPoint1X: number,
|
|
152
|
+
controlPoint1Y: number,
|
|
153
|
+
controlPoint2X: number,
|
|
154
|
+
controlPoint2Y: number,
|
|
155
|
+
endX: number,
|
|
156
|
+
endY: number
|
|
157
|
+
];
|
|
158
|
+
export type TParsedRelativeCubicCurveCommand = [
|
|
159
|
+
command: 'c',
|
|
160
|
+
controlPoint1DX: number,
|
|
161
|
+
controlPoint1DY: number,
|
|
162
|
+
controlPoint2DX: number,
|
|
163
|
+
controlPoint2DY: number,
|
|
164
|
+
endDX: number,
|
|
165
|
+
endDY: number
|
|
166
|
+
];
|
|
167
|
+
export type TParsedCubicCurveCommand =
|
|
168
|
+
| TParsedAbsoluteCubicCurveCommand
|
|
169
|
+
| TParsedRelativeCubicCurveCommand;
|
|
170
|
+
|
|
171
|
+
export type TCubicCurveCommand = TCommand7<TParsedCubicCurveCommand>;
|
|
172
|
+
|
|
173
|
+
export type TParsedAbsoluteCubicCurveShortcutCommand = [
|
|
174
|
+
command: 'S',
|
|
175
|
+
controlPoint2X: number,
|
|
176
|
+
controlPoint2Y: number,
|
|
177
|
+
endX: number,
|
|
178
|
+
endY: number
|
|
179
|
+
];
|
|
180
|
+
export type TParsedRelativeCubicCurveShortcutCommand = [
|
|
181
|
+
command: 's',
|
|
182
|
+
controlPoint2DX: number,
|
|
183
|
+
controlPoint2DY: number,
|
|
184
|
+
endDX: number,
|
|
185
|
+
endDY: number
|
|
186
|
+
];
|
|
187
|
+
export type TParsedCubicCurveShortcutCommand =
|
|
188
|
+
| TParsedAbsoluteCubicCurveShortcutCommand
|
|
189
|
+
| TParsedRelativeCubicCurveShortcutCommand;
|
|
190
|
+
|
|
191
|
+
export type TCubicCurveShortcutCommand =
|
|
192
|
+
TCommand5<TParsedCubicCurveShortcutCommand>;
|
|
193
|
+
|
|
194
|
+
export type TParsedAbsoluteQuadraticCurveCommand = [
|
|
195
|
+
command: 'Q',
|
|
196
|
+
controlPointX: number,
|
|
197
|
+
controlPointY: number,
|
|
198
|
+
endX: number,
|
|
199
|
+
endY: number
|
|
200
|
+
];
|
|
201
|
+
export type TParsedRelativeQuadraticCurveCommand = [
|
|
202
|
+
command: 'q',
|
|
203
|
+
controlPointDX: number,
|
|
204
|
+
controlPointDY: number,
|
|
205
|
+
endDX: number,
|
|
206
|
+
endDY: number
|
|
207
|
+
];
|
|
208
|
+
export type TParsedQuadraticCurveCommand =
|
|
209
|
+
| TParsedAbsoluteQuadraticCurveCommand
|
|
210
|
+
| TParsedRelativeQuadraticCurveCommand;
|
|
211
|
+
|
|
212
|
+
export type TQuadraticCurveCommand = TCommand5<TParsedQuadraticCurveCommand>;
|
|
213
|
+
|
|
214
|
+
export type TParsedAbsoluteQuadraticCurveShortcutCommand = [
|
|
215
|
+
command: 'T',
|
|
216
|
+
endX: number,
|
|
217
|
+
endY: number
|
|
218
|
+
];
|
|
219
|
+
export type TParsedRelativeQuadraticCurveShortcutCommand = [
|
|
220
|
+
command: 't',
|
|
221
|
+
endDX: number,
|
|
222
|
+
endDY: number
|
|
223
|
+
];
|
|
224
|
+
export type TParsedQuadraticCurveShortcutCommand =
|
|
225
|
+
| TParsedAbsoluteQuadraticCurveShortcutCommand
|
|
226
|
+
| TParsedRelativeQuadraticCurveShortcutCommand;
|
|
227
|
+
|
|
228
|
+
export type TQuadraticCurveShortcutCommand =
|
|
229
|
+
TCommand3<TParsedQuadraticCurveShortcutCommand>;
|
|
230
|
+
|
|
231
|
+
export type TParsedAbsoluteArcCommand = [
|
|
232
|
+
command: 'A',
|
|
233
|
+
radiusX: number,
|
|
234
|
+
radiusY: number,
|
|
235
|
+
rotation: TRadian,
|
|
236
|
+
largeArc: 0 | 1,
|
|
237
|
+
sweep: 0 | 1,
|
|
238
|
+
endX: number,
|
|
239
|
+
endY: number
|
|
240
|
+
];
|
|
241
|
+
export type TParsedRelativeArcCommand = [
|
|
242
|
+
command: 'a',
|
|
243
|
+
radiusX: number,
|
|
244
|
+
radiusY: number,
|
|
245
|
+
rotation: TRadian,
|
|
246
|
+
largeArc: 0 | 1,
|
|
247
|
+
sweep: 0 | 1,
|
|
248
|
+
endDX: number,
|
|
249
|
+
endDY: number
|
|
250
|
+
];
|
|
251
|
+
|
|
252
|
+
export type TParsedArcCommand =
|
|
253
|
+
| TParsedAbsoluteArcCommand
|
|
254
|
+
| TParsedRelativeArcCommand;
|
|
255
|
+
|
|
256
|
+
export type TArcCommandSingleFlag<T extends TParsedArcCommand> =
|
|
257
|
+
`${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]}${T[5]} ${T[6]} ${T[7]}`;
|
|
258
|
+
export type TArcCommand =
|
|
259
|
+
| TCommand8<TParsedArcCommand>
|
|
260
|
+
| TArcCommandSingleFlag<TParsedArcCommand>;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* End parsed path commands
|
|
264
|
+
*/
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Any old valid SVG path command
|
|
268
|
+
*/
|
|
269
|
+
export type TComplexParsedCommand =
|
|
270
|
+
| TParsedMoveToCommand
|
|
271
|
+
| TParsedLineCommand
|
|
272
|
+
| TParsedHorizontalLineCommand
|
|
273
|
+
| TParsedVerticalLineCommand
|
|
274
|
+
| TParsedClosePathCommand
|
|
275
|
+
| TParsedCubicCurveCommand
|
|
276
|
+
| TParsedCubicCurveShortcutCommand
|
|
277
|
+
| TParsedQuadraticCurveCommand
|
|
278
|
+
| TParsedQuadraticCurveShortcutCommand
|
|
279
|
+
| TParsedArcCommand;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* A series of path commands
|
|
283
|
+
*/
|
|
284
|
+
export type TComplexPathData = TComplexParsedCommand[];
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Any SVG command that all Fabric functions can understand
|
|
288
|
+
*
|
|
289
|
+
*/
|
|
290
|
+
export type TSimpleParsedCommand =
|
|
291
|
+
| TParsedAbsoluteMoveToCommand
|
|
292
|
+
| TParsedAbsoluteLineCommand
|
|
293
|
+
| TParsedAbsoluteClosePathCommand
|
|
294
|
+
| TParsedAbsoluteCubicCurveCommand
|
|
295
|
+
| TParsedAbsoluteQuadraticCurveCommand;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* A series of simple paths
|
|
299
|
+
*/
|
|
300
|
+
export type TSimplePathData = TSimpleParsedCommand[];
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* A point (vector) and angle between the vector and x-axis
|
|
304
|
+
*/
|
|
305
|
+
export type TPointAngle = XY & { angle: TRadian };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Image } from '../shapes/Image';
|
|
2
|
+
import type { FabricObject } from '../shapes/Object/FabricObject';
|
|
3
|
+
import { TMat2D } from '../typedefs';
|
|
4
|
+
import { qrDecompose } from './misc/matrix';
|
|
5
|
+
|
|
6
|
+
type FabricObjectWithTransformMatrix = FabricObject & {
|
|
7
|
+
transformMatrix?: TMat2D;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* This function is an helper for svg import. it decompose the transformMatrix
|
|
12
|
+
* and assign properties to object.
|
|
13
|
+
* untransformed coordinates
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
const _assignTransformMatrixProps = (
|
|
17
|
+
object: FabricObjectWithTransformMatrix
|
|
18
|
+
) => {
|
|
19
|
+
if (object.transformMatrix) {
|
|
20
|
+
const { scaleX, scaleY, angle, skewX } = qrDecompose(
|
|
21
|
+
object.transformMatrix
|
|
22
|
+
);
|
|
23
|
+
object.flipX = false;
|
|
24
|
+
object.flipY = false;
|
|
25
|
+
object.set('scaleX', scaleX);
|
|
26
|
+
object.set('scaleY', scaleY);
|
|
27
|
+
object.angle = angle;
|
|
28
|
+
object.skewX = skewX;
|
|
29
|
+
object.skewY = 0;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* This function is an helper for svg import. it removes the transform matrix
|
|
35
|
+
* and set to object properties that fabricjs can handle
|
|
36
|
+
* @private
|
|
37
|
+
* @param {Object} preserveAspectRatioOptions
|
|
38
|
+
*/
|
|
39
|
+
export const removeTransformMatrixForSvgParsing = (
|
|
40
|
+
object: FabricObjectWithTransformMatrix,
|
|
41
|
+
preserveAspectRatioOptions?: any
|
|
42
|
+
) => {
|
|
43
|
+
let center = object._findCenterFromElement();
|
|
44
|
+
if (object.transformMatrix) {
|
|
45
|
+
_assignTransformMatrixProps(object);
|
|
46
|
+
center = center.transform(object.transformMatrix);
|
|
47
|
+
}
|
|
48
|
+
delete object.transformMatrix;
|
|
49
|
+
if (preserveAspectRatioOptions) {
|
|
50
|
+
object.scaleX *= preserveAspectRatioOptions.scaleX;
|
|
51
|
+
object.scaleY *= preserveAspectRatioOptions.scaleY;
|
|
52
|
+
(object as Image).cropX = preserveAspectRatioOptions.cropX;
|
|
53
|
+
(object as Image).cropY = preserveAspectRatioOptions.cropY;
|
|
54
|
+
center.x += preserveAspectRatioOptions.offsetLeft;
|
|
55
|
+
center.y += preserveAspectRatioOptions.offsetTop;
|
|
56
|
+
object.width = preserveAspectRatioOptions.width;
|
|
57
|
+
object.height = preserveAspectRatioOptions.height;
|
|
58
|
+
}
|
|
59
|
+
object.setPositionByOrigin(center, 'center', 'center');
|
|
60
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { ActiveSelection } from '../shapes/ActiveSelection';
|
|
2
|
+
import type { Group } from '../shapes/Group';
|
|
3
|
+
import type {
|
|
4
|
+
FabricObject,
|
|
5
|
+
TCachedFabricObject,
|
|
6
|
+
} from '../shapes/Object/Object';
|
|
7
|
+
import type { FabricObjectWithDragSupport } from '../shapes/Object/InteractiveObject';
|
|
8
|
+
import type { TFiller } from '../typedefs';
|
|
9
|
+
import type { Text } from '../shapes/Text/Text';
|
|
10
|
+
import type { Pattern } from '../Pattern';
|
|
11
|
+
import type { IText } from '../shapes/IText/IText';
|
|
12
|
+
import type { Textbox } from '../shapes/Textbox';
|
|
13
|
+
|
|
14
|
+
export const isFiller = (
|
|
15
|
+
filler: TFiller | string | null
|
|
16
|
+
): filler is TFiller => {
|
|
17
|
+
return !!filler && (filler as TFiller).toLive !== undefined;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const isSerializableFiller = (
|
|
21
|
+
filler: TFiller | string | null
|
|
22
|
+
): filler is TFiller => {
|
|
23
|
+
return !!filler && typeof (filler as TFiller).toObject === 'function';
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const isPattern = (filler: TFiller): filler is Pattern => {
|
|
27
|
+
return (
|
|
28
|
+
!!filler &&
|
|
29
|
+
(filler as Pattern).offsetX !== undefined &&
|
|
30
|
+
(filler as Pattern).source !== undefined
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const isCollection = (
|
|
35
|
+
fabricObject?: FabricObject
|
|
36
|
+
): fabricObject is Group | ActiveSelection => {
|
|
37
|
+
return !!fabricObject && Array.isArray((fabricObject as Group)._objects);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const isActiveSelection = (
|
|
41
|
+
fabricObject?: FabricObject
|
|
42
|
+
): fabricObject is ActiveSelection => {
|
|
43
|
+
return !!fabricObject && fabricObject.isType('ActiveSelection');
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const isTextObject = (
|
|
47
|
+
fabricObject?: FabricObject
|
|
48
|
+
): fabricObject is Text => {
|
|
49
|
+
// we could use instanceof but that would mean pulling in Text code for a simple check
|
|
50
|
+
// @todo discuss what to do and how to do
|
|
51
|
+
return !!fabricObject && fabricObject.isType('Text', 'IText', 'Textbox');
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const isInteractiveTextObject = (
|
|
55
|
+
fabricObject?: FabricObject
|
|
56
|
+
): fabricObject is IText | Textbox => {
|
|
57
|
+
// we could use instanceof but that would mean pulling in Text code for a simple check
|
|
58
|
+
// @todo discuss what to do and how to do
|
|
59
|
+
return !!fabricObject && fabricObject.isType('IText', 'Textbox');
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const isFabricObjectCached = (
|
|
63
|
+
fabricObject: FabricObject
|
|
64
|
+
): fabricObject is TCachedFabricObject => {
|
|
65
|
+
return fabricObject.shouldCache() && !!fabricObject._cacheCanvas;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const isFabricObjectWithDragSupport = (
|
|
69
|
+
fabricObject?: FabricObject
|
|
70
|
+
): fabricObject is FabricObjectWithDragSupport => {
|
|
71
|
+
return (
|
|
72
|
+
!!fabricObject &&
|
|
73
|
+
typeof (fabricObject as FabricObjectWithDragSupport).onDragStart ===
|
|
74
|
+
'function' &&
|
|
75
|
+
typeof (fabricObject as FabricObjectWithDragSupport).shouldStartDragging ===
|
|
76
|
+
'function'
|
|
77
|
+
);
|
|
78
|
+
};
|