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
package/README.md
CHANGED
|
@@ -1,292 +1,257 @@
|
|
|
1
|
-
|
|
1
|
+
# Fabric.js
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[](http://travis-ci.org/#!/kangax/fabric.js)
|
|
6
|
-
[](https://codeclimate.com/github/kangax/fabric.js)
|
|
7
|
-
[](https://coveralls.io/r/kangax/fabric.js?branch=master)
|
|
8
|
-
[](https://gitpod.io/#https://github.com/fabricjs/fabric.js)
|
|
9
|
-
|
|
10
|
-
<!-- npm, bower, CDNJS versions, downloads -->
|
|
11
|
-
|
|
12
|
-
[](http://badge.fury.io/bo/fabric)
|
|
13
|
-
[](http://badge.fury.io/js/fabric)
|
|
14
|
-
[](https://www.npmjs.org/package/fabric)
|
|
15
|
-
[](https://cdnjs.com/libraries/fabric.js)
|
|
16
|
-
|
|
17
|
-
<!-- bounties, tips -->
|
|
3
|
+
<a href="http://fabricjs.com/kitchensink" target="_blank"><img align="right" src="/lib/screenshot.png" style="width:400px"></a>
|
|
18
4
|
|
|
19
|
-
|
|
20
|
-
[](https://flattr.com/submit/auto?user_id=kangax&url=http://github.com/kangax/fabric.js&title=Fabric.js&language=&tags=github&category=software)
|
|
5
|
+
A **simple and powerful Javascript HTML5 canvas library**.
|
|
21
6
|
|
|
22
|
-
|
|
7
|
+
- [**Website**][website]
|
|
8
|
+
- [**GOTCHAS**][gotchas]
|
|
9
|
+
- [**Contributing, Developing and More**](CONTRIBUTING.md)
|
|
23
10
|
|
|
24
|
-
|
|
11
|
+
---
|
|
25
12
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### Non-Technical Introduction to Fabric
|
|
29
|
-
|
|
30
|
-
Fabric.js allows you to easily create simple shapes like rectangles, circles, triangles and other polygons or more complex shapes made up of many paths, onto the HTML `<canvas>` element on a webpage using JavaScript. Fabric.js will then allow you to manipulate the size, position and rotation of these objects with a mouse. It’s also possible to change some of the attributes of these objects such as their color, transparency, depth position on the webpage or selecting groups of these objects using the Fabric.js library. Fabric.js will also allow you to convert an SVG image into JavaScript data that can be used for putting it onto the `<canvas>` element.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
[Contributions](https://github.com/kangax/fabric.js/wiki/Love-Fabric%3F-Help-us-by...) are very much welcome!
|
|
34
|
-
|
|
35
|
-
### Goals
|
|
13
|
+
<!-- build/coverage status, climate -->
|
|
36
14
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
- [Fast](https://github.com/kangax/fabric.js/wiki/Focus-on-speed)
|
|
41
|
-
- Encapsulated in one object
|
|
42
|
-
- No browser sniffing for critical functionality
|
|
43
|
-
- Runs under ES5 strict mode
|
|
44
|
-
- Runs on a server under [Node.js](http://nodejs.org/) (active stable releases and latest of current) (see [Node.js limitations](https://github.com/kangax/fabric.js/wiki/Fabric-limitations-in-node.js))
|
|
45
|
-
- Follows [Semantic Versioning](http://semver.org/)
|
|
15
|
+
[](../../actions/workflows/build.yml)
|
|
16
|
+
[](../../actions/workflows/tests.yml)
|
|
17
|
+
[](../../actions/workflows/codeql-analysis.yml)
|
|
46
18
|
|
|
47
|
-
|
|
19
|
+
---
|
|
48
20
|
|
|
49
|
-
|
|
50
|
-
- Safari 5+
|
|
51
|
-
- Opera 9.64+
|
|
52
|
-
- Chrome (all versions)
|
|
53
|
-
- Edge (chromium based, all versions)
|
|
54
|
-
- IE11 and Edge legacy, not supported. Fabric up to 5.0 is written with ES5 in mind, but no specific tests are run for those browsers.
|
|
21
|
+
<!-- npm, bower, CDNJS versions, downloads -->
|
|
55
22
|
|
|
56
|
-
|
|
23
|
+
[][cdnjs]
|
|
24
|
+
[][jsdelivr]
|
|
25
|
+
[](https://gitpod.io/#https://github.com/fabricjs/fabric.js)
|
|
57
26
|
|
|
58
|
-
|
|
27
|
+
[](http://badge.fury.io/js/fabric)
|
|
28
|
+
[](https://www.npmjs.org/package/fabric)
|
|
29
|
+
[](http://badge.fury.io/bo/fabric)
|
|
59
30
|
|
|
60
|
-
|
|
31
|
+
---
|
|
61
32
|
|
|
62
|
-
|
|
33
|
+
[](https://github.com/sponsors/asturur)
|
|
34
|
+
[](https://github.com/sponsors/melchiar)
|
|
35
|
+
[](https://github.com/sponsors/ShaMan123)
|
|
36
|
+
[](https://www.patreon.com/fabricJS)
|
|
63
37
|
|
|
64
|
-
|
|
38
|
+
---
|
|
65
39
|
|
|
66
|
-
|
|
40
|
+
## Features
|
|
67
41
|
|
|
68
|
-
|
|
42
|
+
- Out of the box interactions such as scale, move, rotate, skew, group...
|
|
43
|
+
- Built in shapes, controls, animations, image filters, gradients, patterns, brushes...
|
|
44
|
+
- `JPG`, `PNG`, `JSON` and `SVG` i/o
|
|
45
|
+
- [Typed and modular](#migrating-to-v6)
|
|
46
|
+
- [Unit tested](CONTRIBUTING.md#%F0%9F%A7%AA%20testing)
|
|
69
47
|
|
|
70
|
-
|
|
71
|
-
Please follow the instructions located [here](https://github.com/Automattic/node-canvas#compiling) in order to get it up and running.
|
|
48
|
+
#### Supported Browsers/Environments
|
|
72
49
|
|
|
50
|
+
| Context | Supported Version | Notes |
|
|
51
|
+
| :---------: | :---------------: | ------------------------------- |
|
|
52
|
+
| Firefox | ✔️ | modern version (tbd) |
|
|
53
|
+
| Safari | ✔️ | version >= 10.1 |
|
|
54
|
+
| Opera | ✔️ | chromium based |
|
|
55
|
+
| Chrome | ✔️ | modern version (tbd) |
|
|
56
|
+
| Edge | ✔️ | chromium based |
|
|
57
|
+
| Edge Legacy | ❌ |
|
|
58
|
+
| IE11 | ❌ |
|
|
59
|
+
| Node.js | ✔️ | [Node.js installation](#nodejs) |
|
|
73
60
|
|
|
74
|
-
|
|
61
|
+
Fabric.js Does not use transpilation by default, the browser version we support is determined by the level of canvas api we want to use and some js syntax. While JS can be easily transpiled, canvas API can't.
|
|
75
62
|
|
|
63
|
+
## Migrating to v6
|
|
76
64
|
|
|
77
|
-
|
|
65
|
+
v6 is a **MAJOR** effort including migrating to TS and es6, countless fixes, rewrites and features.\
|
|
66
|
+
Currently in beta, refer to [#8299](../../issues/8299) for guidance.
|
|
78
67
|
|
|
79
|
-
```
|
|
80
|
-
|
|
68
|
+
```bash
|
|
69
|
+
$ npm install fabric@beta --save
|
|
70
|
+
// or
|
|
71
|
+
$ yarn add fabric@beta
|
|
81
72
|
```
|
|
82
73
|
|
|
83
|
-
|
|
74
|
+
## Installation
|
|
84
75
|
|
|
76
|
+
```bash
|
|
77
|
+
$ npm install fabric --save
|
|
78
|
+
// or
|
|
79
|
+
$ yarn add fabric
|
|
85
80
|
```
|
|
86
|
-
import { fabric } from "fabric";
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
NOTE: es6 imports won't work in browser or with bundlers which expect es6 module like vite. Use commonjs syntax instead.
|
|
90
|
-
|
|
91
|
-
See [the example section](#examples-of-use) for usage examples.
|
|
92
|
-
|
|
93
|
-
<h3 id="fabric-building">Building</h3>
|
|
94
|
-
|
|
95
|
-
1. [Install Node.js](https://github.com/joyent/node/wiki/Installation)
|
|
96
|
-
|
|
97
|
-
2. Build distribution file **[~77K minified, ~20K gzipped]**
|
|
98
|
-
|
|
99
|
-
$ node build.js
|
|
100
|
-
|
|
101
|
-
2.1 Or build a custom distribution file, by passing (comma separated) module names to be included.
|
|
102
|
-
|
|
103
|
-
$ node build.js modules=text,serialization,parser
|
|
104
|
-
// or
|
|
105
|
-
$ node build.js modules=text
|
|
106
|
-
// or
|
|
107
|
-
$ node build.js modules=parser,text
|
|
108
|
-
// etc.
|
|
109
|
-
|
|
110
|
-
By default (when none of the modules are specified) only basic functionality is included.
|
|
111
|
-
See the list of modules below for more information on each one of them.
|
|
112
|
-
Note that default distribution has support for **static canvases** only.
|
|
113
|
-
|
|
114
|
-
To get minimal distribution with interactivity, make sure to include corresponding module:
|
|
115
|
-
|
|
116
|
-
$ node build.js modules=interaction
|
|
117
81
|
|
|
118
|
-
|
|
82
|
+
#### Browser
|
|
119
83
|
|
|
120
|
-
|
|
84
|
+
[][cdnjs]
|
|
85
|
+
[][jsdelivr]
|
|
121
86
|
|
|
122
|
-
|
|
87
|
+
See [browser modules][mdn_es6] for using es6 imports in the browser or use a dedicated bundler.
|
|
123
88
|
|
|
124
|
-
|
|
89
|
+
#### Node.js
|
|
125
90
|
|
|
126
|
-
|
|
91
|
+
Fabric.js depends on [node-canvas][node_canvas] for a canvas implementation (`HTMLCanvasElement` replacement) and [jsdom][jsdom] for a `window` implementation on node.
|
|
92
|
+
This means that you may encounter `node-canvas` limitations and [bugs][node_canvas_issues].
|
|
127
93
|
|
|
128
|
-
|
|
129
|
-
$ node build.js modules=... minifier=yui
|
|
94
|
+
Follow these [instructions][node_canvas_install] to get `node-canvas` up and running.
|
|
130
95
|
|
|
131
|
-
|
|
132
|
-
$ node build.js modules=... minifier=closure
|
|
96
|
+
## Quick Start
|
|
133
97
|
|
|
134
|
-
|
|
98
|
+
```js
|
|
99
|
+
// v6
|
|
100
|
+
import { Canvas, Rect } from 'fabric'; // browser
|
|
101
|
+
import { StaticCanvas, Rect } from 'fabric/node'; // node
|
|
135
102
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
$ node build.js sourcemap modules=...
|
|
141
|
-
|
|
142
|
-
If you use google closure compiler you have to add `sourceMappingURL` manually at the end of the minified file all.min.js (see issue https://code.google.com/p/closure-compiler/issues/detail?id=941).
|
|
143
|
-
|
|
144
|
-
//# sourceMappingURL=fabric.min.js.map
|
|
145
|
-
|
|
146
|
-
6. Ensure code guidelines are met (prerequisite: `npm -g install eslint`)
|
|
147
|
-
|
|
148
|
-
$ npm run lint && npm run lint_tests
|
|
149
|
-
|
|
150
|
-
<h3 id="fabric-building">Testing</h3>
|
|
151
|
-
|
|
152
|
-
1. [Install Node.js](https://github.com/joyent/node/wiki/Installation)
|
|
153
|
-
|
|
154
|
-
2. [Install NPM, if necessary](https://github.com/npm/npm#super-easy-install)
|
|
155
|
-
|
|
156
|
-
3. Install NPM packages
|
|
157
|
-
|
|
158
|
-
$ npm install
|
|
159
|
-
|
|
160
|
-
4. Run test suite
|
|
161
|
-
|
|
162
|
-
Make sure testem is installed
|
|
163
|
-
|
|
164
|
-
$ npm install -g testem
|
|
165
|
-
|
|
166
|
-
Run tests Chrome and Node (by default):
|
|
167
|
-
|
|
168
|
-
$ testem
|
|
169
|
-
|
|
170
|
-
See testem docs for more info: https://github.com/testem/testem
|
|
171
|
-
|
|
172
|
-
### Demos
|
|
173
|
-
|
|
174
|
-
- [Demos](http://fabricjs.com/demos/)
|
|
175
|
-
- [Kitchensink demo](http://fabricjs.com/kitchensink)
|
|
176
|
-
- [Benchmarks](http://fabricjs.com/benchmarks/)
|
|
177
|
-
|
|
178
|
-
[Who's using Fabric?](http://trends.builtwith.com/javascript/FabricJS)
|
|
179
|
-
|
|
180
|
-
### Documentation
|
|
181
|
-
|
|
182
|
-
Documentation is always available at [http://fabricjs.com/docs/](http://fabricjs.com/docs/).
|
|
183
|
-
|
|
184
|
-
Also see [official 4-part intro series](http://fabricjs.com/articles), [presentation from BK.js](http://www.slideshare.net/kangax/fabricjs-building-acanvaslibrarybk) and [presentation from Falsy Values](http://www.slideshare.net/kangax/fabric-falsy-values-8067834) for an overview of fabric.js, how it works, and its features.
|
|
185
|
-
|
|
186
|
-
### Optional modules
|
|
187
|
-
|
|
188
|
-
These are the optional modules that could be specified for inclusion, when building custom version of fabric:
|
|
103
|
+
// v5
|
|
104
|
+
import { fabric } from 'fabric';
|
|
105
|
+
```
|
|
189
106
|
|
|
190
|
-
|
|
191
|
-
- **itext** — Adds support for interactive text (`fabric.IText`, `fabric.Textbox`)
|
|
192
|
-
- **serialization** — Adds support for `loadFromJSON`, `loadFromDatalessJSON`, and `clone` methods on `fabric.Canvas`
|
|
193
|
-
- **interaction** — Adds support for interactive features of fabric — selecting/transforming objects/groups via mouse/touch devices.
|
|
194
|
-
- **parser** — Adds support for `fabric.parseSVGDocument`, `fabric.loadSVGFromURL`, and `fabric.loadSVGFromString`
|
|
195
|
-
- **image_filters** — Adds support for image filters, such as grayscale of white removal.
|
|
196
|
-
- **easing** — Adds support for animation easing functions
|
|
197
|
-
- **node** — Adds support for running fabric under node.js, with help of [jsdom](https://github.com/tmpvar/jsdom) and [node-canvas](https://github.com/learnboost/node-canvas) libraries.
|
|
198
|
-
- **freedrawing** — Adds support for free drawing
|
|
199
|
-
- **erasing** — Adds support for object erasing using an eraser brush
|
|
200
|
-
- **gestures** — Adds support for multitouch gestures with help of [Event.js](https://github.com/mudcube/Event.js)
|
|
201
|
-
- **object_straightening** — Adds support for rotating an object to one of 0, 90, 180, 270, etc. depending on which is angle is closer.
|
|
202
|
-
- **animation** — Adds support for animation (`fabric.util.animate`, `fabric.util.requestAnimFrame`, `fabric.Object#animate`, `fabric.Canvas#fxCenterObjectH/#fxCenterObjectV/#fxRemove`)
|
|
107
|
+
<details><summary><b>Plain HTML</b></summary>
|
|
203
108
|
|
|
204
|
-
|
|
109
|
+
```html
|
|
110
|
+
<canvas id="canvas" width="300" height="300"></canvas>
|
|
111
|
+
|
|
112
|
+
<script src="https://cdn.jsdelivr.net/npm/fabric"></script>
|
|
113
|
+
<script>
|
|
114
|
+
const canvas = new fabric.Canvas('canvas');
|
|
115
|
+
const rect = new fabric.Rect({
|
|
116
|
+
top: 100,
|
|
117
|
+
left: 100,
|
|
118
|
+
width: 60,
|
|
119
|
+
height: 70,
|
|
120
|
+
fill: 'red',
|
|
121
|
+
});
|
|
122
|
+
canvas.add(rect);
|
|
123
|
+
</script>
|
|
124
|
+
```
|
|
205
125
|
|
|
206
|
-
|
|
207
|
-
- **no-strict** — Strips "use strict" directives from source
|
|
208
|
-
- **no-svg-export** — Removes svg exporting functionality
|
|
209
|
-
- **sourcemap** - Generates a sourceMap file and adds the `sourceMappingURL` (only if uglifyjs is used) to `dist/fabric.min.js`
|
|
126
|
+
</details>
|
|
210
127
|
|
|
211
|
-
|
|
128
|
+
<details><summary><b>ReactJS</b></summary>
|
|
212
129
|
|
|
213
|
-
|
|
130
|
+
```tsx
|
|
131
|
+
import React, { useEffect, useRef } from 'react';
|
|
132
|
+
import * as fabric from 'fabric'; // v6
|
|
133
|
+
import { fabric } from 'fabric'; // v5
|
|
214
134
|
|
|
215
|
-
|
|
135
|
+
export const FabricJSCanvas = () => {
|
|
136
|
+
const canvasEl = useRef<HTMLCanvasElement>(null);
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
const options = { ... };
|
|
139
|
+
const canvas = new fabric.Canvas(canvasEl.current, options);
|
|
140
|
+
// make the fabric.Canvas instance available to your app
|
|
141
|
+
updateCanvasContext(canvas);
|
|
142
|
+
return () => {
|
|
143
|
+
updateCanvasContext(null);
|
|
144
|
+
canvas.dispose();
|
|
145
|
+
}
|
|
146
|
+
}, []);
|
|
216
147
|
|
|
217
|
-
|
|
148
|
+
return <canvas width="300" height="300" ref={canvasEl}/>;
|
|
149
|
+
};
|
|
218
150
|
|
|
219
|
-
```html
|
|
220
|
-
<!DOCTYPE html>
|
|
221
|
-
<html>
|
|
222
|
-
<head>
|
|
223
|
-
</head>
|
|
224
|
-
<body>
|
|
225
|
-
<canvas id="canvas" width="300" height="300"></canvas>
|
|
226
|
-
|
|
227
|
-
<script src="lib/fabric.js"></script>
|
|
228
|
-
<script>
|
|
229
|
-
var canvas = new fabric.Canvas('canvas');
|
|
230
|
-
|
|
231
|
-
var rect = new fabric.Rect({
|
|
232
|
-
top : 100,
|
|
233
|
-
left : 100,
|
|
234
|
-
width : 60,
|
|
235
|
-
height : 70,
|
|
236
|
-
fill : 'red'
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
canvas.add(rect);
|
|
240
|
-
</script>
|
|
241
|
-
</body>
|
|
242
|
-
</html>
|
|
243
151
|
```
|
|
244
152
|
|
|
245
|
-
|
|
153
|
+
</details>
|
|
154
|
+
|
|
155
|
+
<details><summary><b>Node.js</b></summary>
|
|
156
|
+
|
|
157
|
+
```js
|
|
158
|
+
import http from 'http';
|
|
159
|
+
import * as fabric from 'fabric/node'; // v6
|
|
160
|
+
import { fabric } from 'fabric'; // v5
|
|
161
|
+
|
|
162
|
+
const port = 8080;
|
|
163
|
+
|
|
164
|
+
http
|
|
165
|
+
.createServer((req, res) => {
|
|
166
|
+
const canvas = new fabric.Canvas(null, { width: 100, height: 100 });
|
|
167
|
+
const rect = new fabric.Rect({ width: 20, height: 50, fill: '#ff0000' });
|
|
168
|
+
const text = new fabric.Text('fabric.js', { fill: 'blue', fontSize: 24 });
|
|
169
|
+
canvas.add(rect, text);
|
|
170
|
+
canvas.renderAll();
|
|
171
|
+
if (req.url === '/download') {
|
|
172
|
+
res.setHeader('Content-Type', 'image/png');
|
|
173
|
+
res.setHeader('Content-Disposition', 'attachment; filename="fabric.png"');
|
|
174
|
+
canvas.createPNGStream().pipe(res);
|
|
175
|
+
} else if (req.url === '/view') {
|
|
176
|
+
canvas.createPNGStream().pipe(res);
|
|
177
|
+
} else {
|
|
178
|
+
const imageData = canvas.toDataURL();
|
|
179
|
+
res.writeHead(200, '', { 'Content-Type': 'text/html' });
|
|
180
|
+
res.write(`<img src="${imageData}" />`);
|
|
181
|
+
res.end();
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
.listen(port, (err) => {
|
|
185
|
+
if (err) throw err;
|
|
186
|
+
console.log(
|
|
187
|
+
`> Ready on http://localhost:${port}, http://localhost:${port}/view, http://localhost:${port}/download`
|
|
188
|
+
);
|
|
189
|
+
});
|
|
190
|
+
```
|
|
246
191
|
|
|
247
|
-
|
|
248
|
-
- [Fabric on CodeTriage](http://www.codetriage.com/kangax/fabric.js)
|
|
249
|
-
- [Contributing](./CONTRIBUTING.md)
|
|
192
|
+
</details>
|
|
250
193
|
|
|
251
|
-
|
|
194
|
+
See our ready to use [templates](./.codesandbox/templates/).
|
|
252
195
|
|
|
253
|
-
|
|
196
|
+
---
|
|
254
197
|
|
|
255
|
-
|
|
198
|
+
## Other Solutions
|
|
256
199
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
200
|
+
| Project | Description | Demo |
|
|
201
|
+
| ------------------------------ | -------------------- | :--: |
|
|
202
|
+
| [Three.js][three.js] | 3D graphics |
|
|
203
|
+
| [PixiJS][pixijs] | WebGL renderer |
|
|
204
|
+
| [Konva][konva] | Similar features | ❌ |
|
|
205
|
+
| [Canvas2PDF][canvas2pdf] | PDF renderer |
|
|
206
|
+
| [html-to-image][html-to-image] | HTML to image/canvas |
|
|
260
207
|
|
|
261
|
-
|
|
208
|
+
## More Resources
|
|
262
209
|
|
|
263
|
-
|
|
210
|
+
- [Demos on `fabricjs.com`][demos]
|
|
211
|
+
- [Fabric.js on `Twitter`][twitter]
|
|
212
|
+
- [Fabric.js on `CodeTriage`][code_triage]
|
|
213
|
+
- [Fabric.js on `Stack Overflow`][so]
|
|
214
|
+
- [Fabric.js on `jsfiddle`][jsfiddles]
|
|
215
|
+
- [Fabric.js on `Codepen.io`][codepens]
|
|
264
216
|
|
|
265
|
-
|
|
217
|
+
## Credits [](https://www.patreon.com/fabricJS)
|
|
266
218
|
|
|
267
|
-
- [
|
|
219
|
+
- [kangax][kagnax]
|
|
220
|
+
- [asturur][asturur] on [`Twitter`][asturur_twitter]
|
|
221
|
+
[](https://github.com/sponsors/asturur)
|
|
222
|
+
- [melchiar][melchiar] [](https://github.com/sponsors/melchiar)
|
|
223
|
+
- [ShaMan123][shaman123] [](https://github.com/sponsors/ShaMan123)
|
|
268
224
|
- Ernest Delgado for the original idea of [manipulating images on canvas](http://www.ernestdelgado.com/archive/canvas/)
|
|
269
225
|
- [Maxim "hakunin" Chernyak](http://twitter.com/hakunin) for ideas, and help with various parts of the library throughout its life
|
|
270
226
|
- [Sergey Nisnevich](http://nisnya.com) for help with geometry logic
|
|
271
227
|
- [Stefan Kienzle](https://twitter.com/kienzle_s) for help with bugs, features, documentation, GitHub issues
|
|
272
|
-
- [Shutterstock](http://www.shutterstock.com/jobs) for the time and resources invested in using and improving
|
|
273
|
-
- [
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
228
|
+
- [Shutterstock](http://www.shutterstock.com/jobs) for the time and resources invested in using and improving Fabric.js
|
|
229
|
+
- [and all the other contributors][contributors]
|
|
230
|
+
|
|
231
|
+
[asturur]: https://github.com/asturur
|
|
232
|
+
[asturur_twitter]: https://twitter.com/AndreaBogazzi
|
|
233
|
+
[canvas2pdf]: https://github.com/joshua-gould/canvas2pdf
|
|
234
|
+
[cdnjs]: https://cdnjs.com/libraries/fabric.js
|
|
235
|
+
[code_triage]: https://www.codetriage.com/kangax/fabric.js
|
|
236
|
+
[codepens]: https://codepen.io/tag/fabricjs
|
|
237
|
+
[contributors]: https://github.com/fabricjs/fabric.js/graphs/contributors
|
|
238
|
+
[demos]: http://fabricjs.com/demos/
|
|
239
|
+
[gotchas]: http://fabricjs.com/fabric-gotchas
|
|
240
|
+
[html-to-image]: https://github.com/bubkoo/html-to-image
|
|
241
|
+
[jsdelivr]: https://www.jsdelivr.com/package/npm/fabric
|
|
242
|
+
[jsdom]: https://github.com/jsdom/jsdom
|
|
243
|
+
[jsfiddles]: https://jsfiddle.net/user/fabricjs/fiddles/
|
|
244
|
+
[kagnax]: https://twitter.com/kangax
|
|
245
|
+
[konva]: https://github.com/konvajs/konva
|
|
246
|
+
[mdn_es6]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
|
|
247
|
+
[melchiar]: https://github.com/melchiar
|
|
248
|
+
[node_canvas]: https://github.com/Automattic/node-canvas
|
|
249
|
+
[node_canvas_install]: https://github.com/Automattic/node-canvas#compiling
|
|
250
|
+
[node_canvas_issues]: https://github.com/Automattic/node-canvas/issues
|
|
251
|
+
[patreon_badge]: https://img.shields.io/static/v1?label=Patreon&message=%F0%9F%91%8D&logo=Patreon&color=blueviolet
|
|
252
|
+
[pixijs]: https://github.com/pixijs/pixijs
|
|
253
|
+
[shaman123]: https://github.com/ShaMan123
|
|
254
|
+
[so]: https://stackoverflow.com/questions/tagged/fabricjs
|
|
255
|
+
[three.js]: https://github.com/mrdoob/three.js/
|
|
256
|
+
[twitter]: https://twitter.com/fabricjs
|
|
257
|
+
[website]: http://fabricjs.com/
|
package/bower.json
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fabric.js",
|
|
3
3
|
"homepage": "http://fabricjs.com",
|
|
4
|
-
"authors": [
|
|
5
|
-
"kangax", "Kienz", "asturur"
|
|
6
|
-
],
|
|
4
|
+
"authors": ["kangax", "Kienz", "asturur"],
|
|
7
5
|
"description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
|
|
8
6
|
"main": "./dist/fabric.min.js",
|
|
9
7
|
"ignore": [
|
package/dist/fabric.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export { getEnv, getDocument, getWindow } from './src/env';
|
|
2
|
+
export { cache } from './src/cache';
|
|
3
|
+
export { VERSION as version, iMatrix } from './src/constants';
|
|
4
|
+
export { config } from './src/config';
|
|
5
|
+
export { classRegistry } from './src/ClassRegistry';
|
|
6
|
+
export { runningAnimations } from './src/util/animation/AnimationRegistry';
|
|
7
|
+
export { Observable } from './src/Observable';
|
|
8
|
+
export { StaticCanvas } from './src/canvas/StaticCanvas';
|
|
9
|
+
export { Canvas } from './src/canvas/Canvas';
|
|
10
|
+
export { Point } from './src/Point';
|
|
11
|
+
export { Intersection } from './src/Intersection';
|
|
12
|
+
export { Color } from './src/color/Color';
|
|
13
|
+
export { Gradient } from './src/gradient/Gradient';
|
|
14
|
+
export { Pattern } from './src/Pattern';
|
|
15
|
+
export { Shadow } from './src/Shadow';
|
|
16
|
+
export { BaseBrush } from './src/brushes/BaseBrush';
|
|
17
|
+
export { PencilBrush } from './src/brushes/PencilBrush';
|
|
18
|
+
export { CircleBrush } from './src/brushes/CircleBrush';
|
|
19
|
+
export { SprayBrush } from './src/brushes/SprayBrush';
|
|
20
|
+
export { PatternBrush } from './src/brushes/PatternBrush';
|
|
21
|
+
export { FabricObject as Object } from './src/shapes/Object/FabricObject';
|
|
22
|
+
export { Line } from './src/shapes/Line';
|
|
23
|
+
export { Circle } from './src/shapes/Circle';
|
|
24
|
+
export { Triangle } from './src/shapes/Triangle';
|
|
25
|
+
export { Ellipse } from './src/shapes/Ellipse';
|
|
26
|
+
export { Rect } from './src/shapes/Rect';
|
|
27
|
+
export { Path } from './src/shapes/Path';
|
|
28
|
+
export { Polyline } from './src/shapes/Polyline';
|
|
29
|
+
export { Polygon } from './src/shapes/Polygon';
|
|
30
|
+
export { Text } from './src/shapes/Text/Text';
|
|
31
|
+
export { IText } from './src/shapes/IText/IText';
|
|
32
|
+
export { Textbox } from './src/shapes/Textbox';
|
|
33
|
+
export { Group } from './src/shapes/Group';
|
|
34
|
+
export { ActiveSelection } from './src/shapes/ActiveSelection';
|
|
35
|
+
export { Image } from './src/shapes/Image';
|
|
36
|
+
export { createCollectionMixin } from './src/Collection';
|
|
37
|
+
export * as util from './src/util';
|
|
38
|
+
export * from './src/parser';
|
|
39
|
+
export { Control } from './src/controls/Control';
|
|
40
|
+
export * as controlsUtils from './src/controls';
|
|
41
|
+
export * from './src/filters';
|
|
42
|
+
//# sourceMappingURL=fabric.d.ts.map
|
package/dist/index.d.ts
ADDED