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
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
(function(global) {
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var fabric = global.fabric || (global.fabric = {});
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Textbox class, based on IText, allows the user to resize the text rectangle
|
|
9
|
-
* and wraps lines automatically. Textboxes have their Y scaling locked, the
|
|
10
|
-
* user can only change width. Height is adjusted automatically based on the
|
|
11
|
-
* wrapping of lines.
|
|
12
|
-
* @class fabric.Textbox
|
|
13
|
-
* @extends fabric.IText
|
|
14
|
-
* @mixes fabric.Observable
|
|
15
|
-
* @return {fabric.Textbox} thisArg
|
|
16
|
-
* @see {@link fabric.Textbox#initialize} for constructor definition
|
|
17
|
-
*/
|
|
18
|
-
fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Type of an object
|
|
22
|
-
* @type String
|
|
23
|
-
* @default
|
|
24
|
-
*/
|
|
25
|
-
type: 'textbox',
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Minimum width of textbox, in pixels.
|
|
29
|
-
* @type Number
|
|
30
|
-
* @default
|
|
31
|
-
*/
|
|
32
|
-
minWidth: 20,
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Minimum calculated width of a textbox, in pixels.
|
|
36
|
-
* fixed to 2 so that an empty textbox cannot go to 0
|
|
37
|
-
* and is still selectable without text.
|
|
38
|
-
* @type Number
|
|
39
|
-
* @default
|
|
40
|
-
*/
|
|
41
|
-
dynamicMinWidth: 2,
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Cached array of text wrapping.
|
|
45
|
-
* @type Array
|
|
46
|
-
*/
|
|
47
|
-
__cachedLines: null,
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Override standard Object class values
|
|
51
|
-
*/
|
|
52
|
-
lockScalingFlip: true,
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Override standard Object class values
|
|
56
|
-
* Textbox needs this on false
|
|
57
|
-
*/
|
|
58
|
-
noScaleCache: false,
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Properties which when set cause object to change dimensions
|
|
62
|
-
* @type Object
|
|
63
|
-
* @private
|
|
64
|
-
*/
|
|
65
|
-
_dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Use this regular expression to split strings in breakable lines
|
|
69
|
-
* @private
|
|
70
|
-
*/
|
|
71
|
-
_wordJoiners: /[ \t\r]/,
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Use this boolean property in order to split strings that have no white space concept.
|
|
75
|
-
* this is a cheap way to help with chinese/japanese
|
|
76
|
-
* @type Boolean
|
|
77
|
-
* @since 2.6.0
|
|
78
|
-
*/
|
|
79
|
-
splitByGrapheme: false,
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Unlike superclass's version of this function, Textbox does not update
|
|
83
|
-
* its width.
|
|
84
|
-
* @private
|
|
85
|
-
* @override
|
|
86
|
-
*/
|
|
87
|
-
initDimensions: function() {
|
|
88
|
-
if (this.__skipDimension) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
this.isEditing && this.initDelayedCursor();
|
|
92
|
-
this.clearContextTop();
|
|
93
|
-
this._clearCache();
|
|
94
|
-
// clear dynamicMinWidth as it will be different after we re-wrap line
|
|
95
|
-
this.dynamicMinWidth = 0;
|
|
96
|
-
// wrap lines
|
|
97
|
-
this._styleMap = this._generateStyleMap(this._splitText());
|
|
98
|
-
// if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap
|
|
99
|
-
if (this.dynamicMinWidth > this.width) {
|
|
100
|
-
this._set('width', this.dynamicMinWidth);
|
|
101
|
-
}
|
|
102
|
-
if (this.textAlign.indexOf('justify') !== -1) {
|
|
103
|
-
// once text is measured we need to make space fatter to make justified text.
|
|
104
|
-
this.enlargeSpaces();
|
|
105
|
-
}
|
|
106
|
-
// clear cache and re-calculate height
|
|
107
|
-
this.height = this.calcTextHeight();
|
|
108
|
-
this.saveState({ propertySet: '_dimensionAffectingProps' });
|
|
109
|
-
},
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Generate an object that translates the style object so that it is
|
|
113
|
-
* broken up by visual lines (new lines and automatic wrapping).
|
|
114
|
-
* The original text styles object is broken up by actual lines (new lines only),
|
|
115
|
-
* which is only sufficient for Text / IText
|
|
116
|
-
* @private
|
|
117
|
-
*/
|
|
118
|
-
_generateStyleMap: function(textInfo) {
|
|
119
|
-
var realLineCount = 0,
|
|
120
|
-
realLineCharCount = 0,
|
|
121
|
-
charCount = 0,
|
|
122
|
-
map = {};
|
|
123
|
-
|
|
124
|
-
for (var i = 0; i < textInfo.graphemeLines.length; i++) {
|
|
125
|
-
if (textInfo.graphemeText[charCount] === '\n' && i > 0) {
|
|
126
|
-
realLineCharCount = 0;
|
|
127
|
-
charCount++;
|
|
128
|
-
realLineCount++;
|
|
129
|
-
}
|
|
130
|
-
else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {
|
|
131
|
-
// this case deals with space's that are removed from end of lines when wrapping
|
|
132
|
-
realLineCharCount++;
|
|
133
|
-
charCount++;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
map[i] = { line: realLineCount, offset: realLineCharCount };
|
|
137
|
-
|
|
138
|
-
charCount += textInfo.graphemeLines[i].length;
|
|
139
|
-
realLineCharCount += textInfo.graphemeLines[i].length;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return map;
|
|
143
|
-
},
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Returns true if object has a style property or has it on a specified line
|
|
147
|
-
* @param {Number} lineIndex
|
|
148
|
-
* @return {Boolean}
|
|
149
|
-
*/
|
|
150
|
-
styleHas: function(property, lineIndex) {
|
|
151
|
-
if (this._styleMap && !this.isWrapping) {
|
|
152
|
-
var map = this._styleMap[lineIndex];
|
|
153
|
-
if (map) {
|
|
154
|
-
lineIndex = map.line;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return fabric.Text.prototype.styleHas.call(this, property, lineIndex);
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Returns true if object has no styling or no styling in a line
|
|
162
|
-
* @param {Number} lineIndex , lineIndex is on wrapped lines.
|
|
163
|
-
* @return {Boolean}
|
|
164
|
-
*/
|
|
165
|
-
isEmptyStyles: function(lineIndex) {
|
|
166
|
-
if (!this.styles) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,
|
|
170
|
-
map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];
|
|
171
|
-
if (map) {
|
|
172
|
-
lineIndex = map.line;
|
|
173
|
-
offset = map.offset;
|
|
174
|
-
}
|
|
175
|
-
if (mapNextLine) {
|
|
176
|
-
nextLineIndex = mapNextLine.line;
|
|
177
|
-
shouldLimit = nextLineIndex === lineIndex;
|
|
178
|
-
nextOffset = mapNextLine.offset;
|
|
179
|
-
}
|
|
180
|
-
obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };
|
|
181
|
-
for (var p1 in obj) {
|
|
182
|
-
for (var p2 in obj[p1]) {
|
|
183
|
-
if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {
|
|
184
|
-
// eslint-disable-next-line no-unused-vars
|
|
185
|
-
for (var p3 in obj[p1][p2]) {
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return true;
|
|
192
|
-
},
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* @param {Number} lineIndex
|
|
196
|
-
* @param {Number} charIndex
|
|
197
|
-
* @private
|
|
198
|
-
*/
|
|
199
|
-
_getStyleDeclaration: function(lineIndex, charIndex) {
|
|
200
|
-
if (this._styleMap && !this.isWrapping) {
|
|
201
|
-
var map = this._styleMap[lineIndex];
|
|
202
|
-
if (!map) {
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
lineIndex = map.line;
|
|
206
|
-
charIndex = map.offset + charIndex;
|
|
207
|
-
}
|
|
208
|
-
return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);
|
|
209
|
-
},
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* @param {Number} lineIndex
|
|
213
|
-
* @param {Number} charIndex
|
|
214
|
-
* @param {Object} style
|
|
215
|
-
* @private
|
|
216
|
-
*/
|
|
217
|
-
_setStyleDeclaration: function(lineIndex, charIndex, style) {
|
|
218
|
-
var map = this._styleMap[lineIndex];
|
|
219
|
-
lineIndex = map.line;
|
|
220
|
-
charIndex = map.offset + charIndex;
|
|
221
|
-
|
|
222
|
-
this.styles[lineIndex][charIndex] = style;
|
|
223
|
-
},
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* @param {Number} lineIndex
|
|
227
|
-
* @param {Number} charIndex
|
|
228
|
-
* @private
|
|
229
|
-
*/
|
|
230
|
-
_deleteStyleDeclaration: function(lineIndex, charIndex) {
|
|
231
|
-
var map = this._styleMap[lineIndex];
|
|
232
|
-
lineIndex = map.line;
|
|
233
|
-
charIndex = map.offset + charIndex;
|
|
234
|
-
delete this.styles[lineIndex][charIndex];
|
|
235
|
-
},
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* probably broken need a fix
|
|
239
|
-
* Returns the real style line that correspond to the wrapped lineIndex line
|
|
240
|
-
* Used just to verify if the line does exist or not.
|
|
241
|
-
* @param {Number} lineIndex
|
|
242
|
-
* @returns {Boolean} if the line exists or not
|
|
243
|
-
* @private
|
|
244
|
-
*/
|
|
245
|
-
_getLineStyle: function(lineIndex) {
|
|
246
|
-
var map = this._styleMap[lineIndex];
|
|
247
|
-
return !!this.styles[map.line];
|
|
248
|
-
},
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Set the line style to an empty object so that is initialized
|
|
252
|
-
* @param {Number} lineIndex
|
|
253
|
-
* @param {Object} style
|
|
254
|
-
* @private
|
|
255
|
-
*/
|
|
256
|
-
_setLineStyle: function(lineIndex) {
|
|
257
|
-
var map = this._styleMap[lineIndex];
|
|
258
|
-
this.styles[map.line] = {};
|
|
259
|
-
},
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Wraps text using the 'width' property of Textbox. First this function
|
|
263
|
-
* splits text on newlines, so we preserve newlines entered by the user.
|
|
264
|
-
* Then it wraps each line using the width of the Textbox by calling
|
|
265
|
-
* _wrapLine().
|
|
266
|
-
* @param {Array} lines The string array of text that is split into lines
|
|
267
|
-
* @param {Number} desiredWidth width you want to wrap to
|
|
268
|
-
* @returns {Array} Array of lines
|
|
269
|
-
*/
|
|
270
|
-
_wrapText: function(lines, desiredWidth) {
|
|
271
|
-
var wrapped = [], i;
|
|
272
|
-
this.isWrapping = true;
|
|
273
|
-
for (i = 0; i < lines.length; i++) {
|
|
274
|
-
wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));
|
|
275
|
-
}
|
|
276
|
-
this.isWrapping = false;
|
|
277
|
-
return wrapped;
|
|
278
|
-
},
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Helper function to measure a string of text, given its lineIndex and charIndex offset
|
|
282
|
-
* it gets called when charBounds are not available yet.
|
|
283
|
-
* @param {CanvasRenderingContext2D} ctx
|
|
284
|
-
* @param {String} text
|
|
285
|
-
* @param {number} lineIndex
|
|
286
|
-
* @param {number} charOffset
|
|
287
|
-
* @returns {number}
|
|
288
|
-
* @private
|
|
289
|
-
*/
|
|
290
|
-
_measureWord: function(word, lineIndex, charOffset) {
|
|
291
|
-
var width = 0, prevGrapheme, skipLeft = true;
|
|
292
|
-
charOffset = charOffset || 0;
|
|
293
|
-
for (var i = 0, len = word.length; i < len; i++) {
|
|
294
|
-
var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);
|
|
295
|
-
width += box.kernedWidth;
|
|
296
|
-
prevGrapheme = word[i];
|
|
297
|
-
}
|
|
298
|
-
return width;
|
|
299
|
-
},
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Wraps a line of text using the width of the Textbox and a context.
|
|
303
|
-
* @param {Array} line The grapheme array that represent the line
|
|
304
|
-
* @param {Number} lineIndex
|
|
305
|
-
* @param {Number} desiredWidth width you want to wrap the line to
|
|
306
|
-
* @param {Number} reservedSpace space to remove from wrapping for custom functionalities
|
|
307
|
-
* @returns {Array} Array of line(s) into which the given text is wrapped
|
|
308
|
-
* to.
|
|
309
|
-
*/
|
|
310
|
-
_wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {
|
|
311
|
-
var lineWidth = 0,
|
|
312
|
-
splitByGrapheme = this.splitByGrapheme,
|
|
313
|
-
graphemeLines = [],
|
|
314
|
-
line = [],
|
|
315
|
-
// spaces in different languages?
|
|
316
|
-
words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),
|
|
317
|
-
word = '',
|
|
318
|
-
offset = 0,
|
|
319
|
-
infix = splitByGrapheme ? '' : ' ',
|
|
320
|
-
wordWidth = 0,
|
|
321
|
-
infixWidth = 0,
|
|
322
|
-
largestWordWidth = 0,
|
|
323
|
-
lineJustStarted = true,
|
|
324
|
-
additionalSpace = this._getWidthOfCharSpacing(),
|
|
325
|
-
reservedSpace = reservedSpace || 0;
|
|
326
|
-
// fix a difference between split and graphemeSplit
|
|
327
|
-
if (words.length === 0) {
|
|
328
|
-
words.push([]);
|
|
329
|
-
}
|
|
330
|
-
desiredWidth -= reservedSpace;
|
|
331
|
-
for (var i = 0; i < words.length; i++) {
|
|
332
|
-
// if using splitByGrapheme words are already in graphemes.
|
|
333
|
-
word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);
|
|
334
|
-
wordWidth = this._measureWord(word, lineIndex, offset);
|
|
335
|
-
offset += word.length;
|
|
336
|
-
|
|
337
|
-
lineWidth += infixWidth + wordWidth - additionalSpace;
|
|
338
|
-
if (lineWidth > desiredWidth && !lineJustStarted) {
|
|
339
|
-
graphemeLines.push(line);
|
|
340
|
-
line = [];
|
|
341
|
-
lineWidth = wordWidth;
|
|
342
|
-
lineJustStarted = true;
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
lineWidth += additionalSpace;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
if (!lineJustStarted && !splitByGrapheme) {
|
|
349
|
-
line.push(infix);
|
|
350
|
-
}
|
|
351
|
-
line = line.concat(word);
|
|
352
|
-
|
|
353
|
-
infixWidth = splitByGrapheme ? 0 : this._measureWord([infix], lineIndex, offset);
|
|
354
|
-
offset++;
|
|
355
|
-
lineJustStarted = false;
|
|
356
|
-
// keep track of largest word
|
|
357
|
-
if (wordWidth > largestWordWidth) {
|
|
358
|
-
largestWordWidth = wordWidth;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
i && graphemeLines.push(line);
|
|
363
|
-
|
|
364
|
-
if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {
|
|
365
|
-
this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;
|
|
366
|
-
}
|
|
367
|
-
return graphemeLines;
|
|
368
|
-
},
|
|
369
|
-
|
|
370
|
-
/**
|
|
371
|
-
* Detect if the text line is ended with an hard break
|
|
372
|
-
* text and itext do not have wrapping, return false
|
|
373
|
-
* @param {Number} lineIndex text to split
|
|
374
|
-
* @return {Boolean}
|
|
375
|
-
*/
|
|
376
|
-
isEndOfWrapping: function(lineIndex) {
|
|
377
|
-
if (!this._styleMap[lineIndex + 1]) {
|
|
378
|
-
// is last line, return true;
|
|
379
|
-
return true;
|
|
380
|
-
}
|
|
381
|
-
if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {
|
|
382
|
-
// this is last line before a line break, return true;
|
|
383
|
-
return true;
|
|
384
|
-
}
|
|
385
|
-
return false;
|
|
386
|
-
},
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Detect if a line has a linebreak and so we need to account for it when moving
|
|
390
|
-
* and counting style.
|
|
391
|
-
* @return Number
|
|
392
|
-
*/
|
|
393
|
-
missingNewlineOffset: function(lineIndex) {
|
|
394
|
-
if (this.splitByGrapheme) {
|
|
395
|
-
return this.isEndOfWrapping(lineIndex) ? 1 : 0;
|
|
396
|
-
}
|
|
397
|
-
return 1;
|
|
398
|
-
},
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Gets lines of text to render in the Textbox. This function calculates
|
|
402
|
-
* text wrapping on the fly every time it is called.
|
|
403
|
-
* @param {String} text text to split
|
|
404
|
-
* @returns {Array} Array of lines in the Textbox.
|
|
405
|
-
* @override
|
|
406
|
-
*/
|
|
407
|
-
_splitTextIntoLines: function(text) {
|
|
408
|
-
var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),
|
|
409
|
-
graphemeLines = this._wrapText(newText.lines, this.width),
|
|
410
|
-
lines = new Array(graphemeLines.length);
|
|
411
|
-
for (var i = 0; i < graphemeLines.length; i++) {
|
|
412
|
-
lines[i] = graphemeLines[i].join('');
|
|
413
|
-
}
|
|
414
|
-
newText.lines = lines;
|
|
415
|
-
newText.graphemeLines = graphemeLines;
|
|
416
|
-
return newText;
|
|
417
|
-
},
|
|
418
|
-
|
|
419
|
-
getMinWidth: function() {
|
|
420
|
-
return Math.max(this.minWidth, this.dynamicMinWidth);
|
|
421
|
-
},
|
|
422
|
-
|
|
423
|
-
_removeExtraneousStyles: function() {
|
|
424
|
-
var linesToKeep = {};
|
|
425
|
-
for (var prop in this._styleMap) {
|
|
426
|
-
if (this._textLines[prop]) {
|
|
427
|
-
linesToKeep[this._styleMap[prop].line] = 1;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
for (var prop in this.styles) {
|
|
431
|
-
if (!linesToKeep[prop]) {
|
|
432
|
-
delete this.styles[prop];
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
},
|
|
436
|
-
|
|
437
|
-
/**
|
|
438
|
-
* Returns object representation of an instance
|
|
439
|
-
* @method toObject
|
|
440
|
-
* @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
|
|
441
|
-
* @return {Object} object representation of an instance
|
|
442
|
-
*/
|
|
443
|
-
toObject: function(propertiesToInclude) {
|
|
444
|
-
return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));
|
|
445
|
-
}
|
|
446
|
-
});
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Returns fabric.Textbox instance from an object representation
|
|
450
|
-
* @static
|
|
451
|
-
* @memberOf fabric.Textbox
|
|
452
|
-
* @param {Object} object Object to create an instance from
|
|
453
|
-
* @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created
|
|
454
|
-
*/
|
|
455
|
-
fabric.Textbox.fromObject = function(object, callback) {
|
|
456
|
-
var styles = fabric.util.stylesFromArray(object.styles, object.text);
|
|
457
|
-
//copy object to prevent mutation
|
|
458
|
-
var objCopy = Object.assign({}, object, { styles: styles });
|
|
459
|
-
return fabric.Object._fromObject('Textbox', objCopy, callback, 'text');
|
|
460
|
-
};
|
|
461
|
-
})(typeof exports !== 'undefined' ? exports : this);
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
(function(global) {
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var fabric = global.fabric || (global.fabric = { });
|
|
6
|
-
|
|
7
|
-
if (fabric.Triangle) {
|
|
8
|
-
fabric.warn('fabric.Triangle is already defined');
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Triangle class
|
|
14
|
-
* @class fabric.Triangle
|
|
15
|
-
* @extends fabric.Object
|
|
16
|
-
* @return {fabric.Triangle} thisArg
|
|
17
|
-
* @see {@link fabric.Triangle#initialize} for constructor definition
|
|
18
|
-
*/
|
|
19
|
-
fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Type of an object
|
|
23
|
-
* @type String
|
|
24
|
-
* @default
|
|
25
|
-
*/
|
|
26
|
-
type: 'triangle',
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Width is set to 100 to compensate the old initialize code that was setting it to 100
|
|
30
|
-
* @type Number
|
|
31
|
-
* @default
|
|
32
|
-
*/
|
|
33
|
-
width: 100,
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Height is set to 100 to compensate the old initialize code that was setting it to 100
|
|
37
|
-
* @type Number
|
|
38
|
-
* @default
|
|
39
|
-
*/
|
|
40
|
-
height: 100,
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @private
|
|
44
|
-
* @param {CanvasRenderingContext2D} ctx Context to render on
|
|
45
|
-
*/
|
|
46
|
-
_render: function(ctx) {
|
|
47
|
-
var widthBy2 = this.width / 2,
|
|
48
|
-
heightBy2 = this.height / 2;
|
|
49
|
-
|
|
50
|
-
ctx.beginPath();
|
|
51
|
-
ctx.moveTo(-widthBy2, heightBy2);
|
|
52
|
-
ctx.lineTo(0, -heightBy2);
|
|
53
|
-
ctx.lineTo(widthBy2, heightBy2);
|
|
54
|
-
ctx.closePath();
|
|
55
|
-
|
|
56
|
-
this._renderPaintInOrder(ctx);
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
/* _TO_SVG_START_ */
|
|
60
|
-
/**
|
|
61
|
-
* Returns svg representation of an instance
|
|
62
|
-
* @return {Array} an array of strings with the specific svg representation
|
|
63
|
-
* of the instance
|
|
64
|
-
*/
|
|
65
|
-
_toSVG: function() {
|
|
66
|
-
var widthBy2 = this.width / 2,
|
|
67
|
-
heightBy2 = this.height / 2,
|
|
68
|
-
points = [
|
|
69
|
-
-widthBy2 + ' ' + heightBy2,
|
|
70
|
-
'0 ' + -heightBy2,
|
|
71
|
-
widthBy2 + ' ' + heightBy2
|
|
72
|
-
].join(',');
|
|
73
|
-
return [
|
|
74
|
-
'<polygon ', 'COMMON_PARTS',
|
|
75
|
-
'points="', points,
|
|
76
|
-
'" />'
|
|
77
|
-
];
|
|
78
|
-
},
|
|
79
|
-
/* _TO_SVG_END_ */
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Returns {@link fabric.Triangle} instance from an object representation
|
|
84
|
-
* @static
|
|
85
|
-
* @memberOf fabric.Triangle
|
|
86
|
-
* @param {Object} object Object to create an instance from
|
|
87
|
-
* @param {function} [callback] invoked with new instance as first argument
|
|
88
|
-
*/
|
|
89
|
-
fabric.Triangle.fromObject = function(object, callback) {
|
|
90
|
-
return fabric.Object._fromObject('Triangle', object, callback);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
})(typeof exports !== 'undefined' ? exports : this);
|