fabric 5.3.0 โ 6.0.0-beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +11 -0
- package/.babelrcAlt +19 -0
- package/.browserslistrc +5 -0
- package/.eslintrc.js +43 -0
- package/.eslintrc.json +38 -46
- package/.eslintrc_tests +12 -0
- package/.gitattributes +2 -0
- package/.prettierignore +16 -0
- package/.prettierrc +4 -0
- package/CHANGELOG.md +491 -189
- package/CONTRIBUTING.md +226 -58
- package/README.md +188 -239
- package/bower.json +1 -3
- package/dist/fabric.d.ts +1021 -0
- package/dist/index.cjs +28027 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.min.js +1 -0
- package/dist/index.mjs +27964 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.node.cjs +28092 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.d.ts +15 -0
- package/dist/index.node.mjs +28035 -0
- package/dist/index.node.mjs.map +1 -0
- package/dist/src/Collection.d.ts +126 -0
- package/dist/src/CommonMethods.d.ts +32 -0
- package/dist/src/EventTypeDefs.d.ts +226 -0
- package/dist/src/Intersection.d.ts +100 -0
- package/dist/src/Observable.d.ts +54 -0
- package/dist/src/Pattern.d.ts +104 -0
- package/dist/src/Point.d.ts +232 -0
- package/dist/src/Shadow.d.ts +87 -0
- package/dist/src/brushes/BaseBrush.d.ts +105 -0
- package/dist/src/brushes/CircleBrush.d.ts +49 -0
- package/dist/src/brushes/PatternBrush.d.ts +23 -0
- package/dist/src/brushes/PencilBrush.d.ts +92 -0
- package/dist/src/brushes/SprayBrush.d.ts +79 -0
- package/dist/src/cache.d.ts +46 -0
- package/dist/src/canvas/Canvas.d.ts +567 -0
- package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
- package/dist/src/canvas/StaticCanvas.d.ts +751 -0
- package/dist/src/canvas/TextEditingManager.d.ts +17 -0
- package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
- package/dist/src/color/Color.d.ts +174 -0
- package/dist/src/color/color_map.d.ts +155 -0
- package/dist/src/color/constants.d.ts +22 -0
- package/dist/src/color/util.d.ts +12 -0
- package/dist/src/config.d.ts +115 -0
- package/dist/src/constants.d.ts +14 -0
- package/dist/src/controls/Control.d.ts +228 -0
- package/dist/src/controls/changeWidth.d.ts +13 -0
- package/dist/src/controls/controls.render.d.ts +29 -0
- package/dist/src/controls/default_controls.d.ts +50 -0
- package/dist/src/controls/drag.d.ts +12 -0
- package/dist/src/controls/polyControl.d.ts +5 -0
- package/dist/src/controls/rotate.d.ts +12 -0
- package/dist/src/controls/scale.d.ts +47 -0
- package/dist/src/controls/scaleSkew.d.ts +39 -0
- package/dist/src/controls/skew.d.ts +33 -0
- package/dist/src/controls/util.d.ts +41 -0
- package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
- package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
- package/dist/src/env/browser.d.ts +3 -0
- package/dist/src/env/index.d.ts +7 -0
- package/dist/src/env/node.d.ts +3 -0
- package/dist/src/env/types.d.ts +15 -0
- package/dist/src/filters/BaseFilter.d.ts +156 -0
- package/dist/src/filters/BlendColor.d.ts +80 -0
- package/dist/src/filters/BlendImage.d.ts +90 -0
- package/dist/src/filters/Blur.d.ts +50 -0
- package/dist/src/filters/Boilerplate.d.ts +46 -0
- package/dist/src/filters/Brightness.d.ts +46 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
- package/dist/src/filters/ColorMatrix.d.ts +62 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
- package/dist/src/filters/Composed.d.ts +47 -0
- package/dist/src/filters/Contrast.d.ts +44 -0
- package/dist/src/filters/Convolute.d.ts +82 -0
- package/dist/src/filters/FilterBackend.d.ts +14 -0
- package/dist/src/filters/Gamma.d.ts +53 -0
- package/dist/src/filters/Grayscale.d.ts +45 -0
- package/dist/src/filters/HueRotation.d.ts +24 -0
- package/dist/src/filters/Invert.d.ts +54 -0
- package/dist/src/filters/Noise.d.ts +53 -0
- package/dist/src/filters/Pixelate.d.ts +43 -0
- package/dist/src/filters/RemoveColor.d.ts +62 -0
- package/dist/src/filters/Resize.d.ts +134 -0
- package/dist/src/filters/Saturation.d.ts +47 -0
- package/dist/src/filters/Vibrance.d.ts +47 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
- package/dist/src/filters/WebGLProbe.d.ts +28 -0
- package/dist/src/filters/typedefs.d.ts +49 -0
- package/dist/src/gradient/Gradient.d.ts +149 -0
- package/dist/src/gradient/constants.d.ts +15 -0
- package/dist/src/gradient/parser/index.d.ts +4 -0
- package/dist/src/gradient/parser/misc.d.ts +4 -0
- package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
- package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
- package/dist/src/gradient/typedefs.d.ts +93 -0
- package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
- package/dist/src/mixins/stateful.mixin.d.ts +18 -0
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
- package/dist/src/parkinglot/straighten.d.ts +2 -0
- package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
- package/dist/src/parser/attributes.d.ts +6 -0
- package/dist/src/parser/constants.d.ts +54 -0
- package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
- package/dist/src/parser/elementById.d.ts +6 -0
- package/dist/src/parser/elementMatchesRule.d.ts +5 -0
- package/dist/src/parser/elements_parser.d.ts +3 -0
- package/dist/src/parser/getCSSRules.d.ts +7 -0
- package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
- package/dist/src/parser/getGradientDefs.d.ts +7 -0
- package/dist/src/parser/getMultipleNodes.d.ts +2 -0
- package/dist/src/parser/getSvgRegex.d.ts +2 -0
- package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
- package/dist/src/parser/loadSVGFromString.d.ts +12 -0
- package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
- package/dist/src/parser/normalizeAttr.d.ts +2 -0
- package/dist/src/parser/normalizeValue.d.ts +2 -0
- package/dist/src/parser/parseAttributes.d.ts +9 -0
- package/dist/src/parser/parseElements.d.ts +11 -0
- package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
- package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
- package/dist/src/parser/parseSVGDocument.d.ts +15 -0
- package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
- package/dist/src/parser/parseStyleObject.d.ts +2 -0
- package/dist/src/parser/parseStyleString.d.ts +2 -0
- package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
- package/dist/src/parser/parseUseDirectives.d.ts +2 -0
- package/dist/src/parser/percent.d.ts +9 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
- package/dist/src/parser/rotateMatrix.d.ts +2 -0
- package/dist/src/parser/scaleMatrix.d.ts +2 -0
- package/dist/src/parser/selectorMatches.d.ts +2 -0
- package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
- package/dist/src/parser/skewMatrix.d.ts +2 -0
- package/dist/src/parser/translateMatrix.d.ts +2 -0
- package/dist/src/shapes/ActiveSelection.d.ts +66 -0
- package/dist/src/shapes/Circle.d.ts +80 -0
- package/dist/src/shapes/Ellipse.d.ts +74 -0
- package/dist/src/shapes/Group.d.ts +381 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
- package/dist/src/shapes/IText/IText.d.ts +322 -0
- package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
- package/dist/src/shapes/IText/constants.d.ts +13 -0
- package/dist/src/shapes/Image.d.ts +283 -0
- package/dist/src/shapes/Line.d.ts +117 -0
- package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
- package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
- package/dist/src/shapes/Object/Object.d.ts +906 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
- package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
- package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
- package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
- package/dist/src/shapes/Path.d.ts +123 -0
- package/dist/src/shapes/Polygon.d.ts +7 -0
- package/dist/src/shapes/Polyline.d.ts +130 -0
- package/dist/src/shapes/Rect.d.ts +62 -0
- package/dist/src/shapes/Text/StyledText.d.ts +118 -0
- package/dist/src/shapes/Text/Text.d.ts +656 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
- package/dist/src/shapes/Textbox.d.ts +170 -0
- package/dist/src/shapes/Triangle.d.ts +17 -0
- package/dist/src/typedefs.d.ts +93 -0
- package/dist/src/util/animation/AnimationBase.d.ts +54 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
- package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
- package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
- package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
- package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
- package/dist/src/util/animation/animate.d.ts +37 -0
- package/dist/src/util/animation/easing.d.ts +130 -0
- package/dist/src/util/animation/types.d.ts +87 -0
- package/dist/src/util/applyMixins.d.ts +8 -0
- package/dist/src/util/class_registry.d.ts +14 -0
- package/dist/src/util/dom_event.d.ts +5 -0
- package/dist/src/util/dom_misc.d.ts +40 -0
- package/dist/src/util/dom_request.d.ts +14 -0
- package/dist/src/util/dom_style.d.ts +7 -0
- package/dist/src/util/fireEvent.d.ts +3 -0
- package/dist/src/util/internals/cloneDeep.d.ts +2 -0
- package/dist/src/util/internals/getRandomInt.d.ts +8 -0
- package/dist/src/util/internals/ifNaN.d.ts +8 -0
- package/dist/src/util/internals/index.d.ts +4 -0
- package/dist/src/util/internals/removeFromArray.d.ts +9 -0
- package/dist/src/util/internals/uid.d.ts +2 -0
- package/dist/src/util/lang_class.d.ts +12 -0
- package/dist/src/util/lang_string.d.ts +22 -0
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
- package/dist/src/util/misc/capValue.d.ts +2 -0
- package/dist/src/util/misc/cos.d.ts +10 -0
- package/dist/src/util/misc/dom.d.ts +28 -0
- package/dist/src/util/misc/findScaleTo.d.ts +29 -0
- package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
- package/dist/src/util/misc/isTransparent.d.ts +11 -0
- package/dist/src/util/misc/matrix.d.ts +92 -0
- package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
- package/dist/src/util/misc/objectEnlive.d.ts +56 -0
- package/dist/src/util/misc/objectTransforms.d.ts +68 -0
- package/dist/src/util/misc/pick.d.ts +8 -0
- package/dist/src/util/misc/planeChange.d.ts +84 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
- package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
- package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
- package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
- package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
- package/dist/src/util/misc/rotatePoint.d.ts +12 -0
- package/dist/src/util/misc/sin.d.ts +10 -0
- package/dist/src/util/misc/svgParsing.d.ts +53 -0
- package/dist/src/util/misc/textStyles.d.ts +32 -0
- package/dist/src/util/misc/toFixed.d.ts +8 -0
- package/dist/src/util/misc/vectors.d.ts +57 -0
- package/dist/src/util/path.d.ts +108 -0
- package/dist/src/util/transform_matrix_removal.d.ts +14 -0
- package/dist/src/util/types.d.ts +19 -0
- package/fabric.ts +427 -0
- package/index.node.ts +43 -0
- package/index.ts +1 -0
- package/package.json +90 -39
- package/publish.js +0 -26
- package/rollup.config.mjs +79 -0
- package/rollup.test.config.js +24 -0
- package/scripts/build.mjs +50 -0
- package/scripts/buildLock.mjs +115 -0
- package/scripts/buildReporter.mjs +15 -0
- package/scripts/buildStats.mjs +139 -0
- package/scripts/dirname.mjs +14 -0
- package/scripts/index.mjs +679 -0
- package/scripts/transform_files.mjs +504 -0
- package/src/Collection.ts +311 -0
- package/src/CommonMethods.ts +63 -0
- package/src/EventTypeDefs.ts +294 -0
- package/src/Intersection.ts +273 -0
- package/src/Observable.ts +175 -0
- package/src/Pattern.ts +211 -0
- package/src/Point.ts +388 -0
- package/src/Shadow.ts +215 -0
- package/src/brushes/{base_brush.class.js โ BaseBrush.ts} +65 -42
- package/src/brushes/CircleBrush.ts +145 -0
- package/src/brushes/PatternBrush.ts +70 -0
- package/src/brushes/PencilBrush.ts +300 -0
- package/src/brushes/SprayBrush.ts +219 -0
- package/src/cache.ts +89 -0
- package/src/canvas/Canvas.ts +1672 -0
- package/src/canvas/SelectableCanvas.ts +1636 -0
- package/src/canvas/StaticCanvas.ts +1709 -0
- package/src/canvas/TextEditingManager.ts +48 -0
- package/src/canvas/canvas_gestures.mixin.ts +207 -0
- package/src/color/Color.ts +404 -0
- package/src/color/color_map.ts +154 -0
- package/src/color/constants.ts +26 -0
- package/src/color/util.ts +32 -0
- package/src/config.ts +159 -0
- package/src/constants.ts +19 -0
- package/src/controls/Control.ts +377 -0
- package/src/controls/changeWidth.ts +52 -0
- package/src/controls/controls.render.ts +138 -0
- package/src/controls/default_controls.ts +132 -0
- package/src/controls/drag.ts +31 -0
- package/src/controls/polyControl.ts +135 -0
- package/src/controls/rotate.ts +87 -0
- package/src/controls/scale.ts +277 -0
- package/src/controls/scaleSkew.ts +92 -0
- package/src/controls/skew.ts +242 -0
- package/src/controls/util.ts +154 -0
- package/src/controls/wrapWithFireEvent.ts +25 -0
- package/src/controls/wrapWithFixedAnchor.ts +20 -0
- package/src/env/browser.ts +28 -0
- package/src/env/index.ts +19 -0
- package/src/env/node.ts +52 -0
- package/src/env/types.ts +15 -0
- package/src/filters/{base_filter.class.js โ BaseFilter.ts} +201 -149
- package/src/filters/BlendColor.ts +258 -0
- package/src/filters/BlendImage.ts +254 -0
- package/src/filters/Blur.ts +202 -0
- package/src/filters/Boilerplate.ts +91 -0
- package/src/filters/Brightness.ts +93 -0
- package/src/filters/Canvas2dFilterBackend.ts +65 -0
- package/src/filters/ColorMatrix.ts +156 -0
- package/src/filters/ColorMatrixFilters.ts +106 -0
- package/src/filters/Composed.ts +85 -0
- package/src/filters/Contrast.ts +94 -0
- package/src/filters/Convolute.ts +341 -0
- package/src/filters/FilterBackend.ts +32 -0
- package/src/filters/Gamma.ts +127 -0
- package/src/filters/Grayscale.ts +137 -0
- package/src/filters/HueRotation.ts +66 -0
- package/src/filters/Invert.ts +117 -0
- package/src/filters/Noise.ts +109 -0
- package/src/filters/Pixelate.ts +114 -0
- package/src/filters/RemoveColor.ts +148 -0
- package/src/filters/Resize.ts +540 -0
- package/src/filters/Saturation.ts +100 -0
- package/src/filters/Vibrance.ts +103 -0
- package/src/filters/WebGLFilterBackend.ts +430 -0
- package/src/filters/WebGLProbe.ts +62 -0
- package/src/filters/typedefs.ts +65 -0
- package/src/gradient/Gradient.ts +401 -0
- package/src/gradient/constants.ts +12 -0
- package/src/gradient/parser/index.ts +3 -0
- package/src/gradient/parser/misc.ts +13 -0
- package/src/gradient/parser/parseColorStops.ts +55 -0
- package/src/gradient/parser/parseCoords.ts +73 -0
- package/src/gradient/typedefs.ts +104 -0
- package/src/mixins/{eraser_brush.mixin.js โ eraser_brush.mixin.ts} +350 -239
- package/src/mixins/stateful.mixin.ts +104 -0
- package/src/parkinglot/canvas_animation.mixin.ts +121 -0
- package/src/parkinglot/straighten.ts +58 -0
- package/src/parser/applyViewboxTransform.ts +162 -0
- package/src/parser/attributes.ts +25 -0
- package/src/parser/constants.ts +118 -0
- package/src/parser/doesSomeParentMatch.ts +19 -0
- package/src/parser/elementById.ts +23 -0
- package/src/parser/elementMatchesRule.ts +19 -0
- package/src/parser/elements_parser.ts +191 -0
- package/src/parser/getCSSRules.ts +62 -0
- package/src/parser/getGlobalStylesForElement.ts +19 -0
- package/src/parser/getGradientDefs.ts +32 -0
- package/src/parser/getMultipleNodes.ts +15 -0
- package/src/parser/getSvgRegex.ts +5 -0
- package/src/parser/hasAncestorWithNodeName.ts +14 -0
- package/src/parser/loadSVGFromString.ts +26 -0
- package/src/parser/loadSVGFromURL.ts +40 -0
- package/src/parser/normalizeAttr.ts +10 -0
- package/src/parser/normalizeValue.ts +63 -0
- package/src/parser/parseAttributes.ts +90 -0
- package/src/parser/parseElements.ts +28 -0
- package/src/parser/parseFontDeclaration.ts +44 -0
- package/src/parser/parsePointsAttribute.ts +36 -0
- package/src/parser/parseSVGDocument.ts +106 -0
- package/src/parser/parseStyleAttribute.ts +27 -0
- package/src/parser/parseStyleObject.ts +15 -0
- package/src/parser/parseStyleString.ts +16 -0
- package/src/parser/parseTransformAttribute.ts +155 -0
- package/src/parser/parseUseDirectives.ts +79 -0
- package/src/parser/percent.ts +27 -0
- package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
- package/src/parser/rotateMatrix.ts +21 -0
- package/src/parser/scaleMatrix.ts +9 -0
- package/src/parser/selectorMatches.ts +25 -0
- package/src/parser/setStrokeFillOpacity.ts +40 -0
- package/src/parser/skewMatrix.ts +6 -0
- package/src/parser/translateMatrix.ts +8 -0
- package/src/shapes/ActiveSelection.ts +157 -0
- package/src/shapes/Circle.ts +205 -0
- package/src/shapes/Ellipse.ts +154 -0
- package/src/shapes/Group.ts +1053 -0
- package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
- package/src/shapes/IText/IText.ts +666 -0
- package/src/shapes/IText/ITextBehavior.ts +1055 -0
- package/src/shapes/IText/ITextClickBehavior.ts +321 -0
- package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
- package/src/shapes/IText/constants.ts +47 -0
- package/src/shapes/Image.ts +789 -0
- package/src/shapes/Line.ts +329 -0
- package/src/shapes/Object/AnimatableObject.ts +106 -0
- package/src/shapes/Object/FabricObject.ts +19 -0
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
- package/src/shapes/Object/InteractiveObject.ts +645 -0
- package/src/shapes/Object/Object.ts +1896 -0
- package/src/shapes/Object/ObjectGeometry.ts +830 -0
- package/src/shapes/Object/ObjectOrigin.ts +354 -0
- package/src/shapes/Object/StackedObject.ts +191 -0
- package/src/shapes/Object/defaultValues.ts +112 -0
- package/src/shapes/Path.ts +395 -0
- package/src/shapes/Polygon.ts +19 -0
- package/src/shapes/Polyline.ts +333 -0
- package/src/shapes/Rect.ts +199 -0
- package/src/shapes/Text/StyledText.ts +319 -0
- package/src/shapes/Text/Text.ts +1948 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
- package/src/shapes/Textbox.ts +471 -0
- package/src/shapes/Triangle.ts +45 -0
- package/src/typedefs.ts +119 -0
- package/src/util/animation/AnimationBase.ts +166 -0
- package/src/util/animation/AnimationFrameProvider.ts +28 -0
- package/src/util/animation/AnimationRegistry.ts +58 -0
- package/src/util/animation/ArrayAnimation.ts +27 -0
- package/src/util/animation/ColorAnimation.ts +74 -0
- package/src/util/animation/ValueAnimation.ts +29 -0
- package/src/util/animation/animate.ts +74 -0
- package/src/util/animation/easing.ts +327 -0
- package/src/util/animation/types.ts +136 -0
- package/src/util/applyMixins.ts +22 -0
- package/src/util/class_registry.ts +54 -0
- package/src/util/dom_event.ts +28 -0
- package/src/util/dom_misc.ts +138 -0
- package/src/util/dom_request.ts +64 -0
- package/src/util/dom_style.ts +20 -0
- package/src/util/fireEvent.ts +15 -0
- package/src/util/internals/cloneDeep.ts +2 -0
- package/src/util/internals/getRandomInt.ts +8 -0
- package/src/util/internals/ifNaN.ts +9 -0
- package/src/util/internals/index.ts +3 -0
- package/src/util/internals/removeFromArray.ts +14 -0
- package/src/util/internals/uid.ts +3 -0
- package/src/util/lang_class.ts +90 -0
- package/src/util/lang_string.ts +79 -0
- package/src/util/misc/boundingBoxFromPoints.ts +37 -0
- package/src/util/misc/capValue.ts +2 -0
- package/src/util/misc/cos.ts +24 -0
- package/src/util/misc/dom.ts +50 -0
- package/src/util/misc/findScaleTo.ts +44 -0
- package/src/util/misc/groupSVGElements.ts +15 -0
- package/src/util/misc/isTransparent.ts +51 -0
- package/src/util/misc/matrix.ts +207 -0
- package/src/util/misc/mergeClipPaths.ts +40 -0
- package/src/util/misc/objectEnlive.ts +189 -0
- package/src/util/misc/objectTransforms.ts +129 -0
- package/src/util/misc/pick.ts +17 -0
- package/src/util/misc/planeChange.ts +136 -0
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
- package/src/util/misc/projectStroke/index.ts +53 -0
- package/src/util/misc/projectStroke/types.ts +24 -0
- package/src/util/misc/radiansDegreesConversion.ts +18 -0
- package/src/util/misc/resolveOrigin.ts +22 -0
- package/src/util/misc/rotatePoint.ts +15 -0
- package/src/util/misc/sin.ts +26 -0
- package/src/util/misc/svgParsing.ts +181 -0
- package/src/util/misc/textStyles.ts +133 -0
- package/src/util/misc/toFixed.ts +8 -0
- package/src/util/misc/vectors.ts +82 -0
- package/src/util/path.ts +941 -0
- package/src/util/transform_matrix_removal.ts +60 -0
- package/src/util/types.ts +78 -0
- package/tsconfig.json +106 -0
- package/HEADER.js +0 -203
- package/build.js +0 -287
- package/dist/fabric.js +0 -31187
- package/dist/fabric.min.js +0 -1
- package/old-travis-reference.yml +0 -97
- package/src/brushes/circle_brush.class.js +0 -144
- package/src/brushes/pattern_brush.class.js +0 -61
- package/src/brushes/pencil_brush.class.js +0 -310
- package/src/brushes/spray_brush.class.js +0 -219
- package/src/canvas.class.js +0 -1312
- package/src/color.class.js +0 -636
- package/src/control.class.js +0 -339
- package/src/controls.actions.js +0 -740
- package/src/controls.render.js +0 -99
- package/src/elements_parser.js +0 -152
- package/src/filters/2d_backend.class.js +0 -65
- package/src/filters/blendcolor_filter.class.js +0 -251
- package/src/filters/blendimage_filter.class.js +0 -247
- package/src/filters/blur_filter.class.js +0 -217
- package/src/filters/brightness_filter.class.js +0 -113
- package/src/filters/colormatrix_filter.class.js +0 -159
- package/src/filters/composed_filter.class.js +0 -72
- package/src/filters/contrast_filter.class.js +0 -113
- package/src/filters/convolute_filter.class.js +0 -352
- package/src/filters/filter_boilerplate.js +0 -111
- package/src/filters/filter_generator.js +0 -85
- package/src/filters/gamma_filter.class.js +0 -136
- package/src/filters/grayscale_filter.class.js +0 -154
- package/src/filters/hue_rotation.class.js +0 -107
- package/src/filters/invert_filter.class.js +0 -111
- package/src/filters/noise_filter.class.js +0 -134
- package/src/filters/pixelate_filter.class.js +0 -137
- package/src/filters/removecolor_filter.class.js +0 -173
- package/src/filters/resize_filter.class.js +0 -490
- package/src/filters/saturate_filter.class.js +0 -119
- package/src/filters/vibrance_filter.class.js +0 -122
- package/src/filters/webgl_backend.class.js +0 -396
- package/src/globalFabric.js +0 -4
- package/src/gradient.class.js +0 -490
- package/src/intersection.class.js +0 -172
- package/src/log.js +0 -11
- package/src/mixins/animation.mixin.js +0 -231
- package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
- package/src/mixins/canvas_events.mixin.js +0 -974
- package/src/mixins/canvas_gestures.mixin.js +0 -149
- package/src/mixins/canvas_grouping.mixin.js +0 -177
- package/src/mixins/canvas_serialization.mixin.js +0 -228
- package/src/mixins/collection.mixin.js +0 -170
- package/src/mixins/default_controls.js +0 -114
- package/src/mixins/itext.svg_export.js +0 -241
- package/src/mixins/itext_behavior.mixin.js +0 -940
- package/src/mixins/itext_click_behavior.mixin.js +0 -278
- package/src/mixins/itext_key_behavior.mixin.js +0 -694
- package/src/mixins/object.svg_export.js +0 -258
- package/src/mixins/object_geometry.mixin.js +0 -683
- package/src/mixins/object_interactivity.mixin.js +0 -314
- package/src/mixins/object_origin.mixin.js +0 -255
- package/src/mixins/object_stacking.mixin.js +0 -80
- package/src/mixins/object_straightening.mixin.js +0 -80
- package/src/mixins/observable.mixin.js +0 -141
- package/src/mixins/shared_methods.mixin.js +0 -94
- package/src/mixins/stateful.mixin.js +0 -107
- package/src/mixins/text_style.mixin.js +0 -324
- package/src/parser.js +0 -1090
- package/src/pattern.class.js +0 -189
- package/src/point.class.js +0 -337
- package/src/shadow.class.js +0 -195
- package/src/shapes/active_selection.class.js +0 -155
- package/src/shapes/circle.class.js +0 -210
- package/src/shapes/ellipse.class.js +0 -181
- package/src/shapes/group.class.js +0 -593
- package/src/shapes/image.class.js +0 -764
- package/src/shapes/itext.class.js +0 -526
- package/src/shapes/line.class.js +0 -324
- package/src/shapes/object.class.js +0 -2008
- package/src/shapes/path.class.js +0 -384
- package/src/shapes/polygon.class.js +0 -81
- package/src/shapes/polyline.class.js +0 -268
- package/src/shapes/rect.class.js +0 -187
- package/src/shapes/text.class.js +0 -1696
- package/src/shapes/textbox.class.js +0 -461
- package/src/shapes/triangle.class.js +0 -93
- package/src/static_canvas.class.js +0 -1881
- package/src/util/anim_ease.js +0 -398
- package/src/util/animate.js +0 -254
- package/src/util/animate_color.js +0 -74
- package/src/util/dom_event.js +0 -50
- package/src/util/dom_misc.js +0 -300
- package/src/util/dom_request.js +0 -54
- package/src/util/dom_style.js +0 -70
- package/src/util/lang_array.js +0 -94
- package/src/util/lang_class.js +0 -115
- package/src/util/lang_object.js +0 -75
- package/src/util/lang_string.js +0 -110
- package/src/util/misc.js +0 -1330
- package/src/util/named_accessors.mixin.js +0 -428
- package/src/util/path.js +0 -829
package/CONTRIBUTING.md
CHANGED
|
@@ -1,92 +1,260 @@
|
|
|
1
|
-
# Contributing to Fabric
|
|
1
|
+
# ๐ Contributing to Fabric ๐ฅณ
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
2. [Issue tracker](#issue-tracker)
|
|
5
|
-
3. [Issue tracker guidelines](#issue-tracker-guidelines)
|
|
6
|
-
4. [Pull requests](#pull-request)
|
|
7
|
-
5. [Pull request guidelines](#pull-request-guidelines)
|
|
3
|
+
This guide covers all you need to know from the start, for a first time contributor, advancing to the more advanced topics as you continue reading.
|
|
8
4
|
|
|
9
|
-
## Questions?!?
|
|
5
|
+
## ๐ง Questions?!?
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
Please
|
|
7
|
+
Questions are legit but that doesn't make them bug reports...\
|
|
8
|
+
Please refer to available resources (read below) and refrain from opening an issue in such a case.
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
Demos and examples can be found on [jsfiddle], [codepen.io] and [fabricjs.com].
|
|
10
|
+
To find an answer, first [search the repository][search_issues]. It contains a lot of useful threads.
|
|
16
11
|
|
|
17
|
-
|
|
12
|
+
Questions might inspire you to [improve the docs](#-improving-docs) ๐ Please do ๐.
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
Demos and examples ๐ค can be found on [fabricjs.com][website], [`jsfiddle`][jsfiddles], [`codepen.io`][codepens] and more.
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
- What did you expect to happen?
|
|
23
|
-
- What happened instead?
|
|
16
|
+
## ๐ท๏ธ Issue Tracker
|
|
24
17
|
|
|
25
|
-
|
|
18
|
+
- **Before You Begin** ๐ฌ
|
|
19
|
+
- ๐ Make sure you didn't fall into a known [**GOTCHA**][gotchas].
|
|
20
|
+
- ๐ [**Searching**][search_issues] for existing issues and discussions is
|
|
21
|
+
๐ **VITAL** in order to keep the community in a good state, prevent spamming ๐ and become a skilled fabric dev ๐ฆ.
|
|
22
|
+
- **Fill out the [๐ report][bug_report] with care**, it is there for a reason.
|
|
23
|
+
- The **Title** must be informative, short and ๐งฟ to the point.
|
|
24
|
+
- **Description**
|
|
25
|
+
- Describe the issue making sure you are very clear.
|
|
26
|
+
- Add (๐) logs, screenshots or videos if that makes sense.
|
|
27
|
+
- Make an effort explaining yourself!
|
|
28
|
+
- A good description has been read at least **3** times **before submitting**.
|
|
29
|
+
- **Test Case**
|
|
30
|
+
- Create a minimal and immediate test case, reproducing the bug.
|
|
31
|
+
- Add relevant explanations.
|
|
32
|
+
- It should be extremely **easy** for someone to understand your bug and **fast** to reproduce it. **Don't leave it to us to do your part**.
|
|
33
|
+
- Bug templates can be found within a bug report.
|
|
34
|
+
- Specify which **version** of Fabric.js you are using.
|
|
35
|
+
- **Upgrade** to the latest version before proceeding, your ๐ may have turned into a ๐ฆ.
|
|
26
36
|
|
|
27
|
-
|
|
37
|
+
**These are minimal requirements. Without them issues shall be โ.**
|
|
28
38
|
|
|
29
|
-
|
|
39
|
+
If it's not a bug **OR** if you're unsure, start a ๐ค [discussion][discussions].
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
Check out [**Helping Out**](#%EF%B8%8F-helping-out).
|
|
32
42
|
|
|
33
|
-
|
|
34
|
-
perfect, but even a simple script demonstrating the error would suffice. You could use [this jsfiddle template](http://jsfiddle.net/fabricjs/Da7SP/) as a
|
|
35
|
-
starting point.
|
|
43
|
+
---
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
## ๐ฆ Fixing typos
|
|
38
46
|
|
|
39
|
-
|
|
47
|
+
Typos are a nasty thing.\
|
|
48
|
+
Though it may seem insignificant, typo fixes are appreciated!\
|
|
49
|
+
It's a good and simple way to start contributing.
|
|
40
50
|
|
|
41
|
-
|
|
51
|
+
## ๐ Improving Docs
|
|
42
52
|
|
|
43
|
-
|
|
53
|
+
Improving **DOCS** is **SUPER** important for everyone.\
|
|
54
|
+
Even if it's a small fix it is valuable ๐... **don't hesitate**!
|
|
44
55
|
|
|
45
|
-
|
|
56
|
+
We plan on building a brand new website, stay tuned.
|
|
57
|
+
|
|
58
|
+
## โค๏ธ Helping Out
|
|
59
|
+
|
|
60
|
+
Answering questions and addressing issues, as well as fixing and adding types (see [Pull Requests](#-pull-requests)), are great ways to start contributing to fabric.
|
|
61
|
+
|
|
62
|
+
- [Issues][issues]
|
|
63
|
+
- [Discussions][discussions]
|
|
64
|
+
|
|
65
|
+
### ๐ฎ Adding a DEMO
|
|
66
|
+
|
|
67
|
+
Take a look at an existing [demo file][demo_file].\
|
|
68
|
+
Create a new file in the same directory (`posts/demos/_posts`) and follow [**developing the website**](#fabricjscom-deprecated).
|
|
69
|
+
|
|
70
|
+
### ~~`fabricjs.com`~~ (_deprecated_)
|
|
71
|
+
|
|
72
|
+
To develop fabric's site you need to clone [`fabricjs.com`][website_repo] in the same parent folder of [`fabric.js`][repo], so that `fabric.js` and `fabricjs.com` are siblings.
|
|
73
|
+
|
|
74
|
+
To start the dev server run `npm start:dev` inside the `fabricjs.com` directory (after installing dependencies).
|
|
75
|
+
|
|
76
|
+
If you are working on windows, check out [`jekyll` docs][jekyll] for further instructions or use [WSL][wsl].
|
|
77
|
+
|
|
78
|
+
## ๐ Fixing Bugs
|
|
79
|
+
|
|
80
|
+
- Open an [issue](#-issue-tracker), if there isn't any, addressing the bug.
|
|
81
|
+
- Fix the bug, see [Developing](#-developing-).
|
|
82
|
+
- Add [tests](#-testing).
|
|
83
|
+
- [PR](#-pull-requests)
|
|
84
|
+
|
|
85
|
+
## ๐ Pull Requests
|
|
86
|
+
|
|
87
|
+
Fabric is an open source project ๐ฆ and as such depends on the **genuine effort** of individuals and the community as a whole.
|
|
88
|
+
**Join Us** to make Fabric better ๐บ .
|
|
89
|
+
|
|
90
|
+
### Getting Started
|
|
91
|
+
|
|
92
|
+
- Read this section through.
|
|
93
|
+
- Take a look at [**GOTCHAS**][gotchas]
|
|
94
|
+
- Follow [Developing](#-developing-) and read [Testing](#-testing).
|
|
95
|
+
|
|
96
|
+
### โ
Guidelines
|
|
97
|
+
|
|
98
|
+
- **Code Style** \
|
|
99
|
+
Fabric uses [`prettier`][prettier] to format files and [`eslint`][eslint] for linting (`npm run lint -- --fix`).\
|
|
100
|
+
To enjoy a seamless dev experience add the [`Prettier - Code formatter`][prettier_extension] extension via the extensions toolbar in VSCode.
|
|
101
|
+
- **โ `dist`** \
|
|
102
|
+
Commit changes to [source files](src). Don't commit the generated [distribution files](dist).
|
|
103
|
+
- **Tests** \
|
|
104
|
+
PRs must be backed with relevant tests, follow [TESTING](#-testing).
|
|
105
|
+
- **Docs** \
|
|
106
|
+
Add relevant comments to your code if necessary using [JSDoc 3][jsdoc] and update relevant guides.\
|
|
107
|
+
The generated documentation can be found at [fabricjs.com][docs], see [DOCS](#-improving-docs).
|
|
108
|
+
- **Changelog**\
|
|
109
|
+
Add a concise listing to the [**CHANGELOG**](CHANGELOG.md) describing what has changed.
|
|
110
|
+
- **1๏ธโฃ PR per feature/bug** \
|
|
111
|
+
Create a new branch for every pull request.\
|
|
112
|
+
If you want to do more than one thing, create multiple pull requests ๐ช.
|
|
113
|
+
- **And there you go!** \
|
|
114
|
+
If you still have questions we're always happy to help.
|
|
115
|
+
|
|
116
|
+
After you open a PR a maintainer will review it.
|
|
117
|
+
It is more than likely you will be requested to change stuff and refine your work before it is merged into the repo.
|
|
118
|
+
|
|
119
|
+
## ๐งช Testing
|
|
120
|
+
|
|
121
|
+
[](../../actions/workflows/build.yml)
|
|
122
|
+
[](../../actions/workflows/tests.yml)
|
|
123
|
+
[](../../actions/workflows/codeql-analysis.yml)
|
|
124
|
+
|
|
125
|
+
Test suites use [`QUnit`][qunit] for assertions and [`testem`][testem] for serving
|
|
126
|
+
|
|
127
|
+
- `unit` tests: test logic and state
|
|
128
|
+
- `visual` tests: test visual outcome against image refs located at `/test/visual/golden`
|
|
129
|
+
|
|
130
|
+
### Getting Started
|
|
131
|
+
|
|
132
|
+
- build and watch for changes:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
|
|
136
|
+
npm run build -- -f -w
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- run tests:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
|
|
144
|
+
npm test -- -a -d
|
|
145
|
+
> Running all tests in debug mode (read more in the help section)
|
|
146
|
+
|
|
147
|
+
npm test -- -s visual --dev -l -c chrome
|
|
148
|
+
> Running live visual tests on chrome (navigate to see)
|
|
149
|
+
|
|
150
|
+
npm test -- --help
|
|
151
|
+
|
|
152
|
+
> Usage: fabric.js test [options]
|
|
153
|
+
|
|
154
|
+
> run test suite
|
|
155
|
+
|
|
156
|
+
Options:
|
|
157
|
+
-s, --suite <suite...> test suite to run (choices: "unit", "visual")
|
|
158
|
+
-f, --file <file> run a specific test file
|
|
159
|
+
--filter <filter> filter tests by name
|
|
160
|
+
-a, --all run all tests (default: false)
|
|
161
|
+
-d, --debug debug visual tests by overriding refs (golden images) in case of visual changes (default:
|
|
162
|
+
false)
|
|
163
|
+
-r, --recreate recreate visual refs (golden images) (default: false)
|
|
164
|
+
-v, --verbose log passing tests (default: false)
|
|
165
|
+
-l, --launch launch tests in the browser (default: false)
|
|
166
|
+
--dev runs testem in `dev` mode, without a `ci` flag (default: false)
|
|
167
|
+
-c, --context <context...> context to test in (choices: "chrome", "firefox", "node", default: "node")
|
|
168
|
+
-p, --port
|
|
169
|
+
-o, --out <out> path to report test results to
|
|
170
|
+
--clear-cache clear CLI test cache (default: false)
|
|
171
|
+
-h, --help display help for command
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## ๐ง๐ข Developing ๐กโจ
|
|
178
|
+
|
|
179
|
+
### Setting Up Locally
|
|
180
|
+
|
|
181
|
+
1. ๐ด Fork the repository
|
|
182
|
+
1. ๐พ Clone your ๐ด to your ๐ป
|
|
183
|
+
1. Install dependencies ๐น๏ธ `npm i --include=dev`
|
|
184
|
+
1. Next Up [Prototyping](#-prototyping) & [Testing](#-testing)
|
|
185
|
+
|
|
186
|
+
#### Online
|
|
46
187
|
|
|
47
188
|
[](https://gitpod.io/from-referrer/)
|
|
48
189
|
|
|
49
|
-
|
|
190
|
+
Gitpod will start the [prototyping](#-prototyping) apps and expose them as endpoints.
|
|
191
|
+
`A service is available on port ...` popups will show up.
|
|
192
|
+
|
|
193
|
+
### ๐งญ Prototyping
|
|
194
|
+
|
|
195
|
+
[`.codesandbox/templates`](.codesandbox/templates) contains templates for **INSTANT** out-of-the-box prototyping **๐ Try it out**
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
|
|
199
|
+
npm run sandbox build next [/path/to/sandbox]
|
|
200
|
+
> building next app at /path/to/sandbox
|
|
50
201
|
|
|
51
|
-
|
|
202
|
+
npm run sandbox start </path/to/sandbox>
|
|
203
|
+
> starting dev server
|
|
52
204
|
|
|
53
|
-
|
|
205
|
+
npm run sandbox deploy </path/to/sandbox>
|
|
206
|
+
> created codesandbox https://codesandbox.io/s/fgh476
|
|
54
207
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
If you are working on windows, check out [`jekyll` docs](https://jekyllrb.com/docs/installation/) for futher instructions.
|
|
208
|
+
npm run sandbox deploy -- --template node
|
|
209
|
+
> created codesandbox https://codesandbox.io/s/fgh476
|
|
58
210
|
|
|
59
|
-
|
|
60
|
-
Take a look at an existing [demo file](https://github.com/fabricjs/fabricjs.com/blob/gh-pages/posts/demos/_posts/2020-2-15-custom-control-render.md).
|
|
61
|
-
Create a new file in the same directory (`posts/demos/_posts`) and you're good to go.
|
|
211
|
+
npm run sandbox -- --help
|
|
62
212
|
|
|
63
|
-
|
|
213
|
+
> Usage: fabric.js sandbox [options] [command]
|
|
64
214
|
|
|
65
|
-
|
|
215
|
+
> sandbox commands
|
|
66
216
|
|
|
67
|
-
|
|
217
|
+
Options:
|
|
218
|
+
-h, --help display help for command
|
|
68
219
|
|
|
69
|
-
|
|
220
|
+
Commands:
|
|
221
|
+
deploy [options] [path] deploy a sandbox to codesandbox
|
|
222
|
+
build <template> [destination] build and start a sandbox
|
|
223
|
+
start <path> start a sandbox
|
|
224
|
+
help [command] display help for command
|
|
70
225
|
|
|
71
|
-
|
|
226
|
+
```
|
|
72
227
|
|
|
73
|
-
|
|
228
|
+
### ๐ฎ Symlinking
|
|
74
229
|
|
|
75
|
-
|
|
230
|
+
Establish symlinking to work with a local version on separate projects.
|
|
76
231
|
|
|
77
|
-
|
|
232
|
+
1. From `fabric.js` folder run `npm link` **OR** `yarn link`.
|
|
233
|
+
1. From the project's folder run `npm link fabric` **OR** `yarn link fabric`.
|
|
78
234
|
|
|
79
|
-
|
|
235
|
+
See [npm link][npm_link] **OR** [yarn link][yarn_link].\
|
|
236
|
+
Don't forget to unlink the package once you're done.
|
|
80
237
|
|
|
81
|
-
[
|
|
82
|
-
[
|
|
83
|
-
[
|
|
84
|
-
[
|
|
85
|
-
[
|
|
86
|
-
[
|
|
87
|
-
[
|
|
88
|
-
[
|
|
89
|
-
[
|
|
90
|
-
[
|
|
91
|
-
[
|
|
92
|
-
[
|
|
238
|
+
[repo]: ../..
|
|
239
|
+
[issues]: ../../issues
|
|
240
|
+
[discussions]: ../../discussions
|
|
241
|
+
[search_issues]: ../../search?type=Issues
|
|
242
|
+
[bug_report]: ../../issues/new?template=bug_report.md
|
|
243
|
+
[website_repo]: https://github.com/fabricjs/fabricjs.com
|
|
244
|
+
[website]: http://fabricjs.com/
|
|
245
|
+
[docs]: http://fabricjs.com/docs
|
|
246
|
+
[demos]: http://fabricjs.com/demos/
|
|
247
|
+
[gotchas]: http://fabricjs.com/fabric-gotchas
|
|
248
|
+
[demo_file]: https://github.com/fabricjs/fabricjs.com/blob/gh-pages/posts/demos/_posts/2020-2-15-custom-control-render.md
|
|
249
|
+
[jsfiddles]: https://jsfiddle.net/user/fabricjs/fiddles/
|
|
250
|
+
[codepens]: https://codepen.io/tag/fabricjs
|
|
251
|
+
[jekyll]: https://jekyllrb.com/docs/installation/
|
|
252
|
+
[wsl]: https://learn.microsoft.com/en-us/windows/wsl/
|
|
253
|
+
[prettier]: https://prettier.io/
|
|
254
|
+
[prettier_extension]: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
|
|
255
|
+
[eslint]: https://eslint.org/
|
|
256
|
+
[jsdoc]: https://jsdoc.app/
|
|
257
|
+
[qunit]: https://qunitjs.com/
|
|
258
|
+
[testem]: https://github.com/testem/testem
|
|
259
|
+
[npm_link]: https://docs.npmjs.com/cli/v8/commands/npm-link
|
|
260
|
+
[yarn_link]: https://yarnpkg.com/cli/link
|