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,673 @@
|
|
|
1
|
+
import { ObjectEvents } from '../../EventTypeDefs';
|
|
2
|
+
import { TextStyle, TextStyleDeclaration, StyledText } from './StyledText';
|
|
3
|
+
import type { Point } from '../../Point';
|
|
4
|
+
import type { TCacheCanvasDimensions, TClassProperties, TFiller } from '../../typedefs';
|
|
5
|
+
import { Path } from '../Path';
|
|
6
|
+
import type { FabricObjectProps, SerializedObjectProps, TProps } from '../Object/types';
|
|
7
|
+
type TPathSide = 'left' | 'right';
|
|
8
|
+
type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';
|
|
9
|
+
/**
|
|
10
|
+
* Measure and return the info of a single grapheme.
|
|
11
|
+
* needs the the info of previous graphemes already filled
|
|
12
|
+
* Override to customize measuring
|
|
13
|
+
*/
|
|
14
|
+
export type GraphemeBBox<onPath = false> = {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
kernedWidth: number;
|
|
18
|
+
left: number;
|
|
19
|
+
deltaY: number;
|
|
20
|
+
} & (onPath extends true ? {
|
|
21
|
+
renderLeft: number;
|
|
22
|
+
renderTop: number;
|
|
23
|
+
angle: number;
|
|
24
|
+
} : Record<string, never>);
|
|
25
|
+
interface UniqueTextProps {
|
|
26
|
+
charSpacing: number;
|
|
27
|
+
lineHeight: number;
|
|
28
|
+
fontSize: number;
|
|
29
|
+
fontWeight: string;
|
|
30
|
+
fontFamily: string;
|
|
31
|
+
fontStyle: string;
|
|
32
|
+
pathSide: TPathSide;
|
|
33
|
+
pathAlign: TPathAlign;
|
|
34
|
+
underline: boolean;
|
|
35
|
+
overline: boolean;
|
|
36
|
+
linethrough: boolean;
|
|
37
|
+
textAlign: string;
|
|
38
|
+
direction: CanvasDirection;
|
|
39
|
+
path?: Path;
|
|
40
|
+
}
|
|
41
|
+
export interface SerializedTextProps extends SerializedObjectProps, UniqueTextProps {
|
|
42
|
+
}
|
|
43
|
+
export interface TextProps extends FabricObjectProps, UniqueTextProps {
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Text class
|
|
47
|
+
* @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}
|
|
48
|
+
*/
|
|
49
|
+
export declare class Text<Props extends TProps<TextProps> = Partial<TextProps>, SProps extends SerializedTextProps = SerializedTextProps, EventSpec extends ObjectEvents = ObjectEvents> extends StyledText<Props, SProps, EventSpec> implements UniqueTextProps {
|
|
50
|
+
/**
|
|
51
|
+
* Properties that requires a text layout recalculation when changed
|
|
52
|
+
* @type string[]
|
|
53
|
+
* @protected
|
|
54
|
+
*/
|
|
55
|
+
static textLayoutProperties: string[];
|
|
56
|
+
/**
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
_reNewline: RegExp;
|
|
60
|
+
/**
|
|
61
|
+
* Use this regular expression to filter for whitespaces that is not a new line.
|
|
62
|
+
* Mostly used when text is 'justify' aligned.
|
|
63
|
+
* @private
|
|
64
|
+
*/
|
|
65
|
+
_reSpacesAndTabs: RegExp;
|
|
66
|
+
/**
|
|
67
|
+
* Use this regular expression to filter for whitespace that is not a new line.
|
|
68
|
+
* Mostly used when text is 'justify' aligned.
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
_reSpaceAndTab: RegExp;
|
|
72
|
+
/**
|
|
73
|
+
* Use this regular expression to filter consecutive groups of non spaces.
|
|
74
|
+
* Mostly used when text is 'justify' aligned.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
_reWords: RegExp;
|
|
78
|
+
text: string;
|
|
79
|
+
/**
|
|
80
|
+
* Font size (in pixels)
|
|
81
|
+
* @type Number
|
|
82
|
+
* @default
|
|
83
|
+
*/
|
|
84
|
+
fontSize: number;
|
|
85
|
+
/**
|
|
86
|
+
* Font weight (e.g. bold, normal, 400, 600, 800)
|
|
87
|
+
* @type {(Number|String)}
|
|
88
|
+
* @default
|
|
89
|
+
*/
|
|
90
|
+
fontWeight: string;
|
|
91
|
+
/**
|
|
92
|
+
* Font family
|
|
93
|
+
* @type String
|
|
94
|
+
* @default
|
|
95
|
+
*/
|
|
96
|
+
fontFamily: string;
|
|
97
|
+
/**
|
|
98
|
+
* Text decoration underline.
|
|
99
|
+
* @type Boolean
|
|
100
|
+
* @default
|
|
101
|
+
*/
|
|
102
|
+
underline: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Text decoration overline.
|
|
105
|
+
* @type Boolean
|
|
106
|
+
* @default
|
|
107
|
+
*/
|
|
108
|
+
overline: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Text decoration linethrough.
|
|
111
|
+
* @type Boolean
|
|
112
|
+
* @default
|
|
113
|
+
*/
|
|
114
|
+
linethrough: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Text alignment. Possible values: "left", "center", "right", "justify",
|
|
117
|
+
* "justify-left", "justify-center" or "justify-right".
|
|
118
|
+
* @type String
|
|
119
|
+
* @default
|
|
120
|
+
*/
|
|
121
|
+
textAlign: string;
|
|
122
|
+
/**
|
|
123
|
+
* Font style . Possible values: "", "normal", "italic" or "oblique".
|
|
124
|
+
* @type String
|
|
125
|
+
* @default
|
|
126
|
+
*/
|
|
127
|
+
fontStyle: string;
|
|
128
|
+
/**
|
|
129
|
+
* Line height
|
|
130
|
+
* @type Number
|
|
131
|
+
* @default
|
|
132
|
+
*/
|
|
133
|
+
lineHeight: number;
|
|
134
|
+
/**
|
|
135
|
+
* Superscript schema object (minimum overlap)
|
|
136
|
+
*/
|
|
137
|
+
superscript: {
|
|
138
|
+
/**
|
|
139
|
+
* fontSize factor
|
|
140
|
+
* @default 0.6
|
|
141
|
+
*/
|
|
142
|
+
size: number;
|
|
143
|
+
/**
|
|
144
|
+
* baseline-shift factor (upwards)
|
|
145
|
+
* @default -0.35
|
|
146
|
+
*/
|
|
147
|
+
baseline: number;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Subscript schema object (minimum overlap)
|
|
151
|
+
*/
|
|
152
|
+
subscript: {
|
|
153
|
+
/**
|
|
154
|
+
* fontSize factor
|
|
155
|
+
* @default 0.6
|
|
156
|
+
*/
|
|
157
|
+
size: number;
|
|
158
|
+
/**
|
|
159
|
+
* baseline-shift factor (downwards)
|
|
160
|
+
* @default 0.11
|
|
161
|
+
*/
|
|
162
|
+
baseline: number;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Background color of text lines
|
|
166
|
+
* @type String
|
|
167
|
+
* @default
|
|
168
|
+
*/
|
|
169
|
+
textBackgroundColor: string;
|
|
170
|
+
styles: TextStyle;
|
|
171
|
+
/**
|
|
172
|
+
* Path that the text should follow.
|
|
173
|
+
* since 4.6.0 the path will be drawn automatically.
|
|
174
|
+
* if you want to make the path visible, give it a stroke and strokeWidth or fill value
|
|
175
|
+
* if you want it to be hidden, assign visible = false to the path.
|
|
176
|
+
* This feature is in BETA, and SVG import/export is not yet supported.
|
|
177
|
+
* @type Path
|
|
178
|
+
* @example
|
|
179
|
+
* const textPath = new Text('Text on a path', {
|
|
180
|
+
* top: 150,
|
|
181
|
+
* left: 150,
|
|
182
|
+
* textAlign: 'center',
|
|
183
|
+
* charSpacing: -50,
|
|
184
|
+
* path: new Path('M 0 0 C 50 -100 150 -100 200 0', {
|
|
185
|
+
* strokeWidth: 1,
|
|
186
|
+
* visible: false
|
|
187
|
+
* }),
|
|
188
|
+
* pathSide: 'left',
|
|
189
|
+
* pathStartOffset: 0
|
|
190
|
+
* });
|
|
191
|
+
* @default
|
|
192
|
+
*/
|
|
193
|
+
path: Path | null;
|
|
194
|
+
/**
|
|
195
|
+
* Offset amount for text path starting position
|
|
196
|
+
* Only used when text has a path
|
|
197
|
+
* @type Number
|
|
198
|
+
* @default
|
|
199
|
+
*/
|
|
200
|
+
pathStartOffset: number;
|
|
201
|
+
/**
|
|
202
|
+
* Which side of the path the text should be drawn on.
|
|
203
|
+
* Only used when text has a path
|
|
204
|
+
* @type {TPathSide} 'left|right'
|
|
205
|
+
* @default
|
|
206
|
+
*/
|
|
207
|
+
pathSide: TPathSide;
|
|
208
|
+
/**
|
|
209
|
+
* How text is aligned to the path. This property determines
|
|
210
|
+
* the perpendicular position of each character relative to the path.
|
|
211
|
+
* (one of "baseline", "center", "ascender", "descender")
|
|
212
|
+
* This feature is in BETA, and its behavior may change
|
|
213
|
+
* @type TPathAlign
|
|
214
|
+
* @default
|
|
215
|
+
*/
|
|
216
|
+
pathAlign: TPathAlign;
|
|
217
|
+
/**
|
|
218
|
+
* @private
|
|
219
|
+
*/
|
|
220
|
+
_fontSizeFraction: number;
|
|
221
|
+
/**
|
|
222
|
+
* @private
|
|
223
|
+
*/
|
|
224
|
+
offsets: {
|
|
225
|
+
underline: number;
|
|
226
|
+
linethrough: number;
|
|
227
|
+
overline: number;
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Text Line proportion to font Size (in pixels)
|
|
231
|
+
* @type Number
|
|
232
|
+
* @default
|
|
233
|
+
*/
|
|
234
|
+
_fontSizeMult: number;
|
|
235
|
+
/**
|
|
236
|
+
* additional space between characters
|
|
237
|
+
* expressed in thousands of em unit
|
|
238
|
+
* @type Number
|
|
239
|
+
* @default
|
|
240
|
+
*/
|
|
241
|
+
charSpacing: number;
|
|
242
|
+
/**
|
|
243
|
+
* Baseline shift, styles only, keep at 0 for the main text object
|
|
244
|
+
* @type {Number}
|
|
245
|
+
* @default
|
|
246
|
+
*/
|
|
247
|
+
deltaY: number;
|
|
248
|
+
/**
|
|
249
|
+
* WARNING: EXPERIMENTAL. NOT SUPPORTED YET
|
|
250
|
+
* determine the direction of the text.
|
|
251
|
+
* This has to be set manually together with textAlign and originX for proper
|
|
252
|
+
* experience.
|
|
253
|
+
* some interesting link for the future
|
|
254
|
+
* https://www.w3.org/International/questions/qa-bidi-unicode-controls
|
|
255
|
+
* @since 4.5.0
|
|
256
|
+
* @type {CanvasDirection} 'ltr|rtl'
|
|
257
|
+
* @default
|
|
258
|
+
*/
|
|
259
|
+
direction: CanvasDirection;
|
|
260
|
+
/**
|
|
261
|
+
* contains characters bounding boxes
|
|
262
|
+
*/
|
|
263
|
+
protected __charBounds: GraphemeBBox[][];
|
|
264
|
+
/**
|
|
265
|
+
* use this size when measuring text. To avoid IE11 rounding errors
|
|
266
|
+
* @type {Number}
|
|
267
|
+
* @default
|
|
268
|
+
* @readonly
|
|
269
|
+
* @private
|
|
270
|
+
*/
|
|
271
|
+
CACHE_FONT_SIZE: number;
|
|
272
|
+
/**
|
|
273
|
+
* contains the min text width to avoid getting 0
|
|
274
|
+
* @type {Number}
|
|
275
|
+
* @default
|
|
276
|
+
*/
|
|
277
|
+
MIN_TEXT_WIDTH: number;
|
|
278
|
+
/**
|
|
279
|
+
* contains the the text of the object, divided in lines as they are displayed
|
|
280
|
+
* on screen. Wrapping will divide the text independently of line breaks
|
|
281
|
+
* @type {string[]}
|
|
282
|
+
* @default
|
|
283
|
+
*/
|
|
284
|
+
textLines: string[];
|
|
285
|
+
/**
|
|
286
|
+
* same as textlines, but each line is an array of graphemes as split by splitByGrapheme
|
|
287
|
+
* @type {string[]}
|
|
288
|
+
* @default
|
|
289
|
+
*/
|
|
290
|
+
_textLines: string[][];
|
|
291
|
+
_unwrappedTextLines: string[][];
|
|
292
|
+
_text: string[];
|
|
293
|
+
cursorWidth: number;
|
|
294
|
+
__lineHeights: number[];
|
|
295
|
+
__lineWidths: number[];
|
|
296
|
+
initialized?: true;
|
|
297
|
+
static cacheProperties: string[];
|
|
298
|
+
static ownDefaults: Record<string, any>;
|
|
299
|
+
static getDefaults(): {
|
|
300
|
+
[x: string]: any;
|
|
301
|
+
};
|
|
302
|
+
constructor(text: string, options: any);
|
|
303
|
+
/**
|
|
304
|
+
* If text has a path, it will add the extra information needed
|
|
305
|
+
* for path and text calculations
|
|
306
|
+
*/
|
|
307
|
+
setPathInfo(): void;
|
|
308
|
+
/**
|
|
309
|
+
* @private
|
|
310
|
+
* Divides text into lines of text and lines of graphemes.
|
|
311
|
+
*/
|
|
312
|
+
_splitText(): {
|
|
313
|
+
_unwrappedLines: string[][];
|
|
314
|
+
lines: string[];
|
|
315
|
+
graphemeText: string[];
|
|
316
|
+
graphemeLines: string[][];
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Initialize or update text dimensions.
|
|
320
|
+
* Updates this.width and this.height with the proper values.
|
|
321
|
+
* Does not return dimensions.
|
|
322
|
+
*/
|
|
323
|
+
initDimensions(): void;
|
|
324
|
+
/**
|
|
325
|
+
* Enlarge space boxes and shift the others
|
|
326
|
+
*/
|
|
327
|
+
enlargeSpaces(): void;
|
|
328
|
+
/**
|
|
329
|
+
* Detect if the text line is ended with an hard break
|
|
330
|
+
* text and itext do not have wrapping, return false
|
|
331
|
+
* @return {Boolean}
|
|
332
|
+
*/
|
|
333
|
+
isEndOfWrapping(lineIndex: number): boolean;
|
|
334
|
+
/**
|
|
335
|
+
* Detect if a line has a linebreak and so we need to account for it when moving
|
|
336
|
+
* and counting style.
|
|
337
|
+
* It return always for text and Itext.
|
|
338
|
+
* @return Number
|
|
339
|
+
*/
|
|
340
|
+
missingNewlineOffset(lineIndex: number): number;
|
|
341
|
+
/**
|
|
342
|
+
* Returns 2d representation (lineIndex and charIndex) of cursor
|
|
343
|
+
* @param {Number} selectionStart
|
|
344
|
+
* @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.
|
|
345
|
+
*/
|
|
346
|
+
get2DCursorLocation(selectionStart: number, skipWrapping?: boolean): {
|
|
347
|
+
lineIndex: number;
|
|
348
|
+
charIndex: number;
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* Returns string representation of an instance
|
|
352
|
+
* @return {String} String representation of text object
|
|
353
|
+
*/
|
|
354
|
+
toString(): string;
|
|
355
|
+
/**
|
|
356
|
+
* Return the dimension and the zoom level needed to create a cache canvas
|
|
357
|
+
* big enough to host the object to be cached.
|
|
358
|
+
* @private
|
|
359
|
+
* @param {Object} dim.x width of object to be cached
|
|
360
|
+
* @param {Object} dim.y height of object to be cached
|
|
361
|
+
* @return {Object}.width width of canvas
|
|
362
|
+
* @return {Object}.height height of canvas
|
|
363
|
+
* @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache
|
|
364
|
+
* @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache
|
|
365
|
+
*/
|
|
366
|
+
_getCacheCanvasDimensions(): TCacheCanvasDimensions;
|
|
367
|
+
/**
|
|
368
|
+
* @private
|
|
369
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
370
|
+
*/
|
|
371
|
+
_render(ctx: CanvasRenderingContext2D): void;
|
|
372
|
+
/**
|
|
373
|
+
* @private
|
|
374
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
375
|
+
*/
|
|
376
|
+
_renderText(ctx: CanvasRenderingContext2D): void;
|
|
377
|
+
/**
|
|
378
|
+
* Set the font parameter of the context with the object properties or with charStyle
|
|
379
|
+
* @private
|
|
380
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
381
|
+
* @param {Object} [charStyle] object with font style properties
|
|
382
|
+
* @param {String} [charStyle.fontFamily] Font Family
|
|
383
|
+
* @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )
|
|
384
|
+
* @param {String} [charStyle.fontWeight] Font weight
|
|
385
|
+
* @param {String} [charStyle.fontStyle] Font style (italic|normal)
|
|
386
|
+
*/
|
|
387
|
+
_setTextStyles(ctx: CanvasRenderingContext2D, charStyle?: any, forMeasuring?: boolean): void;
|
|
388
|
+
/**
|
|
389
|
+
* calculate and return the text Width measuring each line.
|
|
390
|
+
* @private
|
|
391
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
392
|
+
* @return {Number} Maximum width of Text object
|
|
393
|
+
*/
|
|
394
|
+
calcTextWidth(): number;
|
|
395
|
+
/**
|
|
396
|
+
* @private
|
|
397
|
+
* @param {String} method Method name ("fillText" or "strokeText")
|
|
398
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
399
|
+
* @param {String} line Text to render
|
|
400
|
+
* @param {Number} left Left position of text
|
|
401
|
+
* @param {Number} top Top position of text
|
|
402
|
+
* @param {Number} lineIndex Index of a line in a text
|
|
403
|
+
*/
|
|
404
|
+
_renderTextLine(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: string[], left: number, top: number, lineIndex: number): void;
|
|
405
|
+
/**
|
|
406
|
+
* Renders the text background for lines, taking care of style
|
|
407
|
+
* @private
|
|
408
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
409
|
+
*/
|
|
410
|
+
_renderTextLinesBackground(ctx: CanvasRenderingContext2D): void;
|
|
411
|
+
/**
|
|
412
|
+
* measure and return the width of a single character.
|
|
413
|
+
* possibly overridden to accommodate different measure logic or
|
|
414
|
+
* to hook some external lib for character measurement
|
|
415
|
+
* @private
|
|
416
|
+
* @param {String} _char, char to be measured
|
|
417
|
+
* @param {Object} charStyle style of char to be measured
|
|
418
|
+
* @param {String} [previousChar] previous char
|
|
419
|
+
* @param {Object} [prevCharStyle] style of previous char
|
|
420
|
+
*/
|
|
421
|
+
_measureChar(_char: string, charStyle: TextStyleDeclaration, previousChar: string | undefined, prevCharStyle: any): {
|
|
422
|
+
width: number;
|
|
423
|
+
kernedWidth: number;
|
|
424
|
+
};
|
|
425
|
+
/**
|
|
426
|
+
* Computes height of character at given position
|
|
427
|
+
* @param {Number} line the line index number
|
|
428
|
+
* @param {Number} _char the character index number
|
|
429
|
+
* @return {Number} fontSize of the character
|
|
430
|
+
*/
|
|
431
|
+
getHeightOfChar(line: number, _char: number): number;
|
|
432
|
+
/**
|
|
433
|
+
* measure a text line measuring all characters.
|
|
434
|
+
* @param {Number} lineIndex line number
|
|
435
|
+
*/
|
|
436
|
+
measureLine(lineIndex: number): {
|
|
437
|
+
width: number;
|
|
438
|
+
numOfSpaces: number;
|
|
439
|
+
};
|
|
440
|
+
/**
|
|
441
|
+
* measure every grapheme of a line, populating __charBounds
|
|
442
|
+
* @param {Number} lineIndex
|
|
443
|
+
* @return {Object} object.width total width of characters
|
|
444
|
+
* @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs
|
|
445
|
+
*/
|
|
446
|
+
_measureLine(lineIndex: number): {
|
|
447
|
+
width: number;
|
|
448
|
+
numOfSpaces: number;
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* Calculate the angle and the left,top position of the char that follow a path.
|
|
452
|
+
* It appends it to graphemeInfo to be reused later at rendering
|
|
453
|
+
* @private
|
|
454
|
+
* @param {Number} positionInPath to be measured
|
|
455
|
+
* @param {GraphemeBBox} graphemeInfo current grapheme box information
|
|
456
|
+
* @param {Object} startingPoint position of the point
|
|
457
|
+
*/
|
|
458
|
+
_setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox<true>, startingPoint: Point): void;
|
|
459
|
+
/**
|
|
460
|
+
*
|
|
461
|
+
* @param {String} grapheme to be measured
|
|
462
|
+
* @param {Number} lineIndex index of the line where the char is
|
|
463
|
+
* @param {Number} charIndex position in the line
|
|
464
|
+
* @param {String} [prevGrapheme] character preceding the one to be measured
|
|
465
|
+
* @returns {GraphemeBBox} grapheme bbox
|
|
466
|
+
*/
|
|
467
|
+
_getGraphemeBox(grapheme: string, lineIndex: number, charIndex: number, prevGrapheme?: string, skipLeft?: boolean): GraphemeBBox;
|
|
468
|
+
/**
|
|
469
|
+
* Calculate height of line at 'lineIndex'
|
|
470
|
+
* @param {Number} lineIndex index of line to calculate
|
|
471
|
+
* @return {Number}
|
|
472
|
+
*/
|
|
473
|
+
getHeightOfLine(lineIndex: number): number;
|
|
474
|
+
/**
|
|
475
|
+
* Calculate text box height
|
|
476
|
+
*/
|
|
477
|
+
calcTextHeight(): number;
|
|
478
|
+
/**
|
|
479
|
+
* @private
|
|
480
|
+
* @return {Number} Left offset
|
|
481
|
+
*/
|
|
482
|
+
_getLeftOffset(): number;
|
|
483
|
+
/**
|
|
484
|
+
* @private
|
|
485
|
+
* @return {Number} Top offset
|
|
486
|
+
*/
|
|
487
|
+
_getTopOffset(): number;
|
|
488
|
+
/**
|
|
489
|
+
* @private
|
|
490
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
491
|
+
* @param {String} method Method name ("fillText" or "strokeText")
|
|
492
|
+
*/
|
|
493
|
+
_renderTextCommon(ctx: CanvasRenderingContext2D, method: 'fillText' | 'strokeText'): void;
|
|
494
|
+
/**
|
|
495
|
+
* @private
|
|
496
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
497
|
+
*/
|
|
498
|
+
_renderTextFill(ctx: CanvasRenderingContext2D): void;
|
|
499
|
+
/**
|
|
500
|
+
* @private
|
|
501
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
502
|
+
*/
|
|
503
|
+
_renderTextStroke(ctx: CanvasRenderingContext2D): void;
|
|
504
|
+
/**
|
|
505
|
+
* @private
|
|
506
|
+
* @param {String} method fillText or strokeText.
|
|
507
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
508
|
+
* @param {Array} line Content of the line, splitted in an array by grapheme
|
|
509
|
+
* @param {Number} left
|
|
510
|
+
* @param {Number} top
|
|
511
|
+
* @param {Number} lineIndex
|
|
512
|
+
*/
|
|
513
|
+
_renderChars(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: Array<any>, left: number, top: number, lineIndex: number): void;
|
|
514
|
+
/**
|
|
515
|
+
* This function try to patch the missing gradientTransform on canvas gradients.
|
|
516
|
+
* transforming a context to transform the gradient, is going to transform the stroke too.
|
|
517
|
+
* we want to transform the gradient but not the stroke operation, so we create
|
|
518
|
+
* a transformed gradient on a pattern and then we use the pattern instead of the gradient.
|
|
519
|
+
* this method has drawbacks: is slow, is in low resolution, needs a patch for when the size
|
|
520
|
+
* is limited.
|
|
521
|
+
* @private
|
|
522
|
+
* @param {TFiller} filler a fabric gradient instance
|
|
523
|
+
* @return {CanvasPattern} a pattern to use as fill/stroke style
|
|
524
|
+
*/
|
|
525
|
+
_applyPatternGradientTransformText(filler: TFiller): CanvasPattern;
|
|
526
|
+
handleFiller<T extends 'fill' | 'stroke'>(ctx: CanvasRenderingContext2D, property: `${T}Style`, filler: TFiller | string): {
|
|
527
|
+
offsetX: number;
|
|
528
|
+
offsetY: number;
|
|
529
|
+
};
|
|
530
|
+
_setStrokeStyles(ctx: CanvasRenderingContext2D, { stroke, strokeWidth }: Pick<this, 'stroke' | 'strokeWidth'>): {
|
|
531
|
+
offsetX: number;
|
|
532
|
+
offsetY: number;
|
|
533
|
+
};
|
|
534
|
+
_setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>): {
|
|
535
|
+
offsetX: number;
|
|
536
|
+
offsetY: number;
|
|
537
|
+
};
|
|
538
|
+
/**
|
|
539
|
+
* @private
|
|
540
|
+
* @param {String} method
|
|
541
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
542
|
+
* @param {Number} lineIndex
|
|
543
|
+
* @param {Number} charIndex
|
|
544
|
+
* @param {String} _char
|
|
545
|
+
* @param {Number} left Left coordinate
|
|
546
|
+
* @param {Number} top Top coordinate
|
|
547
|
+
* @param {Number} lineHeight Height of the line
|
|
548
|
+
*/
|
|
549
|
+
_renderChar(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, lineIndex: number, charIndex: number, _char: string, left: number, top: number): void;
|
|
550
|
+
/**
|
|
551
|
+
* Turns the character into a 'superior figure' (i.e. 'superscript')
|
|
552
|
+
* @param {Number} start selection start
|
|
553
|
+
* @param {Number} end selection end
|
|
554
|
+
*/
|
|
555
|
+
setSuperscript(start: number, end: number): void;
|
|
556
|
+
/**
|
|
557
|
+
* Turns the character into an 'inferior figure' (i.e. 'subscript')
|
|
558
|
+
* @param {Number} start selection start
|
|
559
|
+
* @param {Number} end selection end
|
|
560
|
+
*/
|
|
561
|
+
setSubscript(start: number, end: number): void;
|
|
562
|
+
/**
|
|
563
|
+
* Applies 'schema' at given position
|
|
564
|
+
* @private
|
|
565
|
+
* @param {Number} start selection start
|
|
566
|
+
* @param {Number} end selection end
|
|
567
|
+
* @param {Number} schema
|
|
568
|
+
*/
|
|
569
|
+
protected _setScript(start: number, end: number, schema: {
|
|
570
|
+
size: number;
|
|
571
|
+
baseline: number;
|
|
572
|
+
}): void;
|
|
573
|
+
/**
|
|
574
|
+
* @private
|
|
575
|
+
* @param {Number} lineIndex index text line
|
|
576
|
+
* @return {Number} Line left offset
|
|
577
|
+
*/
|
|
578
|
+
_getLineLeftOffset(lineIndex: number): number;
|
|
579
|
+
/**
|
|
580
|
+
* @private
|
|
581
|
+
*/
|
|
582
|
+
_clearCache(): void;
|
|
583
|
+
/**
|
|
584
|
+
* Measure a single line given its index. Used to calculate the initial
|
|
585
|
+
* text bounding box. The values are calculated and stored in __lineWidths cache.
|
|
586
|
+
* @private
|
|
587
|
+
* @param {Number} lineIndex line number
|
|
588
|
+
* @return {Number} Line width
|
|
589
|
+
*/
|
|
590
|
+
getLineWidth(lineIndex: number): number;
|
|
591
|
+
_getWidthOfCharSpacing(): number;
|
|
592
|
+
/**
|
|
593
|
+
* Retrieves the value of property at given character position
|
|
594
|
+
* @param {Number} lineIndex the line number
|
|
595
|
+
* @param {Number} charIndex the character number
|
|
596
|
+
* @param {String} property the property name
|
|
597
|
+
* @returns the value of 'property'
|
|
598
|
+
*/
|
|
599
|
+
getValueOfPropertyAt(lineIndex: number, charIndex: number, property: string): any;
|
|
600
|
+
/**
|
|
601
|
+
* @private
|
|
602
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
603
|
+
*/
|
|
604
|
+
_renderTextDecoration(ctx: CanvasRenderingContext2D, type: 'underline' | 'linethrough' | 'overline'): void;
|
|
605
|
+
/**
|
|
606
|
+
* return font declaration string for canvas context
|
|
607
|
+
* @param {Object} [styleObject] object
|
|
608
|
+
* @returns {String} font declaration formatted for canvas context.
|
|
609
|
+
*/
|
|
610
|
+
_getFontDeclaration(styleObject?: TextStyleDeclaration, forMeasuring?: boolean): string;
|
|
611
|
+
/**
|
|
612
|
+
* Renders text instance on a specified context
|
|
613
|
+
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
614
|
+
*/
|
|
615
|
+
render(ctx: CanvasRenderingContext2D): void;
|
|
616
|
+
/**
|
|
617
|
+
* Override this method to customize grapheme splitting
|
|
618
|
+
* @todo the util `graphemeSplit` needs to be injectable in some way.
|
|
619
|
+
* is more comfortable to inject the correct util rather than having to override text
|
|
620
|
+
* in the middle of the prototype chain
|
|
621
|
+
* @param {string} value
|
|
622
|
+
* @returns {string[]} array of graphemes
|
|
623
|
+
*/
|
|
624
|
+
graphemeSplit(value: string): string[];
|
|
625
|
+
/**
|
|
626
|
+
* Returns the text as an array of lines.
|
|
627
|
+
* @param {String} text text to split
|
|
628
|
+
* @returns Lines in the text
|
|
629
|
+
*/
|
|
630
|
+
_splitTextIntoLines(text: string): {
|
|
631
|
+
_unwrappedLines: string[][];
|
|
632
|
+
lines: string[];
|
|
633
|
+
graphemeText: string[];
|
|
634
|
+
graphemeLines: string[][];
|
|
635
|
+
};
|
|
636
|
+
/**
|
|
637
|
+
* Returns object representation of an instance
|
|
638
|
+
* @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
|
|
639
|
+
* @return {Object} Object representation of an instance
|
|
640
|
+
*/
|
|
641
|
+
toObject<T extends Omit<Props & TClassProperties<this>, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick<T, K> & SProps;
|
|
642
|
+
set(key: string | any, value?: any): this;
|
|
643
|
+
/**
|
|
644
|
+
* Returns complexity of an instance
|
|
645
|
+
* @return {Number} complexity
|
|
646
|
+
*/
|
|
647
|
+
complexity(): number;
|
|
648
|
+
static genericFonts: string[];
|
|
649
|
+
/**
|
|
650
|
+
* List of attribute names to account for when parsing SVG element (used by {@link Text.fromElement})
|
|
651
|
+
* @static
|
|
652
|
+
* @memberOf Text
|
|
653
|
+
* @see: http://www.w3.org/TR/SVG/text.html#TextElement
|
|
654
|
+
*/
|
|
655
|
+
static ATTRIBUTE_NAMES: string[];
|
|
656
|
+
/**
|
|
657
|
+
* Returns Text instance from an SVG element (<b>not yet implemented</b>)
|
|
658
|
+
* @static
|
|
659
|
+
* @memberOf Text
|
|
660
|
+
* @param {SVGElement} element Element to parse
|
|
661
|
+
* @param {Function} callback callback function invoked after parsing
|
|
662
|
+
* @param {Object} [options] Options object
|
|
663
|
+
*/
|
|
664
|
+
static fromElement(element: SVGElement, callback: (text: Text | null) => any, options: object): any;
|
|
665
|
+
/**
|
|
666
|
+
* Returns Text instance from an object representation
|
|
667
|
+
* @param {Object} object plain js Object to create an instance from
|
|
668
|
+
* @returns {Promise<Text>}
|
|
669
|
+
*/
|
|
670
|
+
static fromObject<T extends TProps<SerializedTextProps>>(object: T): Promise<Text<Partial<TextProps>, SerializedTextProps, ObjectEvents>>;
|
|
671
|
+
}
|
|
672
|
+
export {};
|
|
673
|
+
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TSVGReviver } from '../../typedefs';
|
|
2
|
+
import { FabricObjectSVGExportMixin } from '../Object/FabricObjectSVGExportMixin';
|
|
3
|
+
export declare class TextSVGExportMixin extends FabricObjectSVGExportMixin {
|
|
4
|
+
_toSVG(): string[];
|
|
5
|
+
toSVG(reviver: TSVGReviver): string;
|
|
6
|
+
private _getSVGLeftTopOffsets;
|
|
7
|
+
private _wrapSVGTextAndBg;
|
|
8
|
+
/**
|
|
9
|
+
* @private
|
|
10
|
+
* @param {Number} textTopOffset Text top offset
|
|
11
|
+
* @param {Number} textLeftOffset Text left offset
|
|
12
|
+
* @return {Object}
|
|
13
|
+
*/
|
|
14
|
+
private _getSVGTextAndBg;
|
|
15
|
+
private _createTextCharSpan;
|
|
16
|
+
private _setSVGTextLineText;
|
|
17
|
+
private _setSVGTextLineBg;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated unused
|
|
20
|
+
*/
|
|
21
|
+
_getSVGLineTopOffset(lineIndex: number): {
|
|
22
|
+
lineTop: number;
|
|
23
|
+
offset: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Returns styles-string for svg-export
|
|
27
|
+
* @param {Boolean} skipShadow a boolean to skip shadow filter output
|
|
28
|
+
* @return {String}
|
|
29
|
+
*/
|
|
30
|
+
getSvgStyles(skipShadow?: boolean): string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=TextSVGExportMixin.d.ts.map
|