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.
Files changed (604) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintignore +3 -0
  5. package/.eslintrc.js +43 -0
  6. package/.eslintrc.json +38 -46
  7. package/.eslintrc_tests +12 -0
  8. package/.gitattributes +2 -0
  9. package/.gitpod.yml +17 -1
  10. package/.prettierignore +19 -0
  11. package/.prettierrc +4 -0
  12. package/CHANGELOG.md +532 -189
  13. package/CONTRIBUTING.md +224 -59
  14. package/README.md +200 -235
  15. package/bower.json +1 -3
  16. package/dist/fabric.d.ts +42 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +27582 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.min.js +1 -0
  21. package/dist/index.mjs +27519 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/index.node.cjs +27663 -0
  24. package/dist/index.node.cjs.map +1 -0
  25. package/dist/index.node.d.ts +14 -0
  26. package/dist/index.node.mjs +27606 -0
  27. package/dist/index.node.mjs.map +1 -0
  28. package/dist/src/ClassRegistry.d.ts +13 -0
  29. package/dist/src/Collection.d.ts +136 -0
  30. package/dist/src/CommonMethods.d.ts +32 -0
  31. package/dist/src/EventTypeDefs.d.ts +227 -0
  32. package/dist/src/Intersection.d.ts +112 -0
  33. package/dist/src/Observable.d.ts +60 -0
  34. package/dist/src/Pattern.d.ts +113 -0
  35. package/dist/src/Point.d.ts +232 -0
  36. package/dist/src/Shadow.d.ts +97 -0
  37. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  38. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  39. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  40. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  41. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  42. package/dist/src/cache.d.ts +47 -0
  43. package/dist/src/canvas/Canvas.d.ts +548 -0
  44. package/dist/src/canvas/SelectableCanvas.d.ts +754 -0
  45. package/dist/src/canvas/StaticCanvas.d.ts +778 -0
  46. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  47. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  48. package/dist/src/color/Color.d.ts +174 -0
  49. package/dist/src/color/color_map.d.ts +155 -0
  50. package/dist/src/color/constants.d.ts +22 -0
  51. package/dist/src/color/util.d.ts +12 -0
  52. package/dist/src/config.d.ts +115 -0
  53. package/dist/src/constants.d.ts +14 -0
  54. package/dist/src/controls/Control.d.ts +228 -0
  55. package/dist/src/controls/changeWidth.d.ts +13 -0
  56. package/dist/src/controls/commonControls.d.ts +28 -0
  57. package/dist/src/controls/controlRendering.d.ts +29 -0
  58. package/dist/src/controls/drag.d.ts +12 -0
  59. package/dist/src/controls/index.d.ts +13 -0
  60. package/dist/src/controls/polyControl.d.ts +5 -0
  61. package/dist/src/controls/rotate.d.ts +12 -0
  62. package/dist/src/controls/scale.d.ts +47 -0
  63. package/dist/src/controls/scaleSkew.d.ts +39 -0
  64. package/dist/src/controls/skew.d.ts +33 -0
  65. package/dist/src/controls/util.d.ts +41 -0
  66. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  67. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  68. package/dist/src/env/browser.d.ts +3 -0
  69. package/dist/src/env/index.d.ts +15 -0
  70. package/dist/src/env/node.d.ts +5 -0
  71. package/dist/src/env/types.d.ts +15 -0
  72. package/dist/src/filters/BaseFilter.d.ts +153 -0
  73. package/dist/src/filters/BlendColor.d.ts +80 -0
  74. package/dist/src/filters/BlendImage.d.ts +92 -0
  75. package/dist/src/filters/Blur.d.ts +51 -0
  76. package/dist/src/filters/Boilerplate.d.ts +48 -0
  77. package/dist/src/filters/Brightness.d.ts +47 -0
  78. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  79. package/dist/src/filters/ColorMatrix.d.ts +63 -0
  80. package/dist/src/filters/ColorMatrixFilters.d.ts +545 -0
  81. package/dist/src/filters/Composed.d.ts +45 -0
  82. package/dist/src/filters/Contrast.d.ts +45 -0
  83. package/dist/src/filters/Convolute.d.ts +82 -0
  84. package/dist/src/filters/FilterBackend.d.ts +14 -0
  85. package/dist/src/filters/GLProbes/GLProbe.d.ts +11 -0
  86. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  87. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  88. package/dist/src/filters/Gamma.d.ts +54 -0
  89. package/dist/src/filters/Grayscale.d.ts +46 -0
  90. package/dist/src/filters/HueRotation.d.ts +24 -0
  91. package/dist/src/filters/Invert.d.ts +55 -0
  92. package/dist/src/filters/Noise.d.ts +54 -0
  93. package/dist/src/filters/Pixelate.d.ts +44 -0
  94. package/dist/src/filters/RemoveColor.d.ts +63 -0
  95. package/dist/src/filters/Resize.d.ts +136 -0
  96. package/dist/src/filters/Saturation.d.ts +48 -0
  97. package/dist/src/filters/Vibrance.d.ts +48 -0
  98. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  99. package/dist/src/filters/filters.d.ts +21 -0
  100. package/dist/src/filters/index.d.ts +5 -0
  101. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  102. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  103. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  104. package/dist/src/filters/shaders/blur.d.ts +2 -0
  105. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  106. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  107. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  108. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  109. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  110. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  111. package/dist/src/filters/shaders/invert.d.ts +2 -0
  112. package/dist/src/filters/shaders/noise.d.ts +2 -0
  113. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  114. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  115. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  116. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  117. package/dist/src/filters/typedefs.d.ts +49 -0
  118. package/dist/src/gradient/Gradient.d.ts +149 -0
  119. package/dist/src/gradient/constants.d.ts +15 -0
  120. package/dist/src/gradient/parser/index.d.ts +4 -0
  121. package/dist/src/gradient/parser/misc.d.ts +4 -0
  122. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  123. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  124. package/dist/src/gradient/typedefs.d.ts +93 -0
  125. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  126. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  127. package/dist/src/parkinglot/straighten.d.ts +2 -0
  128. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  129. package/dist/src/parser/attributes.d.ts +6 -0
  130. package/dist/src/parser/constants.d.ts +53 -0
  131. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  132. package/dist/src/parser/elementById.d.ts +6 -0
  133. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  134. package/dist/src/parser/elements_parser.d.ts +3 -0
  135. package/dist/src/parser/getCSSRules.d.ts +7 -0
  136. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  137. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  138. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  139. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  140. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  141. package/dist/src/parser/index.d.ts +10 -0
  142. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  143. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  144. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  145. package/dist/src/parser/normalizeValue.d.ts +2 -0
  146. package/dist/src/parser/parseAttributes.d.ts +9 -0
  147. package/dist/src/parser/parseElements.d.ts +11 -0
  148. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  149. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  150. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  151. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  152. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  153. package/dist/src/parser/parseStyleString.d.ts +2 -0
  154. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  155. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  156. package/dist/src/parser/percent.d.ts +9 -0
  157. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  158. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  159. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  160. package/dist/src/parser/selectorMatches.d.ts +2 -0
  161. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  162. package/dist/src/parser/skewMatrix.d.ts +2 -0
  163. package/dist/src/parser/translateMatrix.d.ts +2 -0
  164. package/dist/src/shapes/ActiveSelection.d.ts +82 -0
  165. package/dist/src/shapes/Circle.d.ts +99 -0
  166. package/dist/src/shapes/Ellipse.d.ts +84 -0
  167. package/dist/src/shapes/Group.d.ts +408 -0
  168. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  169. package/dist/src/shapes/IText/IText.d.ts +335 -0
  170. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  171. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +83 -0
  172. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  173. package/dist/src/shapes/IText/constants.d.ts +13 -0
  174. package/dist/src/shapes/Image.d.ts +311 -0
  175. package/dist/src/shapes/Line.d.ts +126 -0
  176. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  177. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  178. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  179. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  180. package/dist/src/shapes/Object/Object.d.ts +594 -0
  181. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  182. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  183. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  184. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  185. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  186. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  187. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  188. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  189. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  190. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  191. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  192. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  193. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  194. package/dist/src/shapes/Path.d.ts +130 -0
  195. package/dist/src/shapes/Polygon.d.ts +9 -0
  196. package/dist/src/shapes/Polyline.d.ts +140 -0
  197. package/dist/src/shapes/Rect.d.ts +76 -0
  198. package/dist/src/shapes/Text/StyledText.d.ts +119 -0
  199. package/dist/src/shapes/Text/Text.d.ts +673 -0
  200. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  201. package/dist/src/shapes/Text/constants.d.ts +7 -0
  202. package/dist/src/shapes/Textbox.d.ts +185 -0
  203. package/dist/src/shapes/Triangle.d.ts +25 -0
  204. package/dist/src/typedefs.d.ts +90 -0
  205. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  206. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  207. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  208. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  209. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  210. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  211. package/dist/src/util/animation/animate.d.ts +37 -0
  212. package/dist/src/util/animation/easing.d.ts +130 -0
  213. package/dist/src/util/animation/types.d.ts +87 -0
  214. package/dist/src/util/applyMixins.d.ts +8 -0
  215. package/dist/src/util/dom_event.d.ts +5 -0
  216. package/dist/src/util/dom_misc.d.ts +39 -0
  217. package/dist/src/util/dom_request.d.ts +14 -0
  218. package/dist/src/util/dom_style.d.ts +7 -0
  219. package/dist/src/util/fireEvent.d.ts +3 -0
  220. package/dist/src/util/index.d.ts +35 -0
  221. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  222. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  223. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  224. package/dist/src/util/internals/index.d.ts +4 -0
  225. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  226. package/dist/src/util/internals/uid.d.ts +2 -0
  227. package/dist/src/util/lang_string.d.ts +22 -0
  228. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  229. package/dist/src/util/misc/capValue.d.ts +2 -0
  230. package/dist/src/util/misc/cos.d.ts +10 -0
  231. package/dist/src/util/misc/dom.d.ts +28 -0
  232. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  233. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  234. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  235. package/dist/src/util/misc/matrix.d.ts +92 -0
  236. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  237. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  238. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  239. package/dist/src/util/misc/pick.d.ts +9 -0
  240. package/dist/src/util/misc/planeChange.d.ts +84 -0
  241. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  242. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  243. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  244. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  245. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  246. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  247. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  248. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  249. package/dist/src/util/misc/sin.d.ts +10 -0
  250. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  251. package/dist/src/util/misc/textStyles.d.ts +32 -0
  252. package/dist/src/util/misc/toFixed.d.ts +8 -0
  253. package/dist/src/util/misc/vectors.d.ts +57 -0
  254. package/dist/src/util/path/index.d.ts +96 -0
  255. package/dist/src/util/path/regex.d.ts +3 -0
  256. package/dist/src/util/path/typechecks.d.ts +24 -0
  257. package/dist/src/util/path/typedefs.d.ts +220 -0
  258. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  259. package/dist/src/util/types.d.ts +19 -0
  260. package/fabric.ts +51 -0
  261. package/index.node.ts +37 -0
  262. package/index.ts +1 -0
  263. package/package.json +100 -40
  264. package/publish.js +0 -26
  265. package/rollup.config.mjs +91 -0
  266. package/rollup.test.config.js +24 -0
  267. package/scripts/build.mjs +50 -0
  268. package/scripts/buildLock.mjs +115 -0
  269. package/scripts/buildReporter.mjs +15 -0
  270. package/scripts/buildStats.mjs +139 -0
  271. package/scripts/dirname.mjs +14 -0
  272. package/scripts/git.mjs +36 -0
  273. package/scripts/index.mjs +564 -0
  274. package/scripts/sandbox.mjs +149 -0
  275. package/src/ClassRegistry.ts +56 -0
  276. package/src/Collection.ts +346 -0
  277. package/src/CommonMethods.ts +63 -0
  278. package/src/EventTypeDefs.ts +296 -0
  279. package/src/Intersection.ts +302 -0
  280. package/src/Observable.ts +181 -0
  281. package/src/Pattern.ts +227 -0
  282. package/src/Point.ts +388 -0
  283. package/src/Shadow.ts +214 -0
  284. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  285. package/src/brushes/CircleBrush.ts +145 -0
  286. package/src/brushes/PatternBrush.ts +70 -0
  287. package/src/brushes/PencilBrush.ts +300 -0
  288. package/src/brushes/SprayBrush.ts +219 -0
  289. package/src/cache.ts +90 -0
  290. package/src/canvas/Canvas.ts +1607 -0
  291. package/src/canvas/SelectableCanvas.ts +1608 -0
  292. package/src/canvas/StaticCanvas.ts +1734 -0
  293. package/src/canvas/TextEditingManager.ts +48 -0
  294. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  295. package/src/color/Color.ts +404 -0
  296. package/src/color/color_map.ts +154 -0
  297. package/src/color/constants.ts +26 -0
  298. package/src/color/util.ts +32 -0
  299. package/src/config.ts +159 -0
  300. package/src/constants.ts +20 -0
  301. package/src/controls/Control.ts +380 -0
  302. package/src/controls/changeWidth.ts +52 -0
  303. package/src/controls/commonControls.ts +105 -0
  304. package/src/controls/controlRendering.ts +138 -0
  305. package/src/controls/drag.ts +31 -0
  306. package/src/controls/index.ts +22 -0
  307. package/src/controls/polyControl.ts +135 -0
  308. package/src/controls/rotate.ts +87 -0
  309. package/src/controls/scale.ts +277 -0
  310. package/src/controls/scaleSkew.ts +92 -0
  311. package/src/controls/skew.ts +242 -0
  312. package/src/controls/util.ts +154 -0
  313. package/src/controls/wrapWithFireEvent.ts +25 -0
  314. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  315. package/src/env/browser.ts +32 -0
  316. package/src/env/index.ts +24 -0
  317. package/src/env/node.ts +56 -0
  318. package/src/env/types.ts +15 -0
  319. package/src/filters/{base_filter.class.js → BaseFilter.ts} +192 -151
  320. package/src/filters/BlendColor.ts +217 -0
  321. package/src/filters/BlendImage.ts +228 -0
  322. package/src/filters/Blur.ts +179 -0
  323. package/src/filters/Boilerplate.ts +94 -0
  324. package/src/filters/Brightness.ts +83 -0
  325. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  326. package/src/filters/ColorMatrix.ts +145 -0
  327. package/src/filters/ColorMatrixFilters.ts +77 -0
  328. package/src/filters/Composed.ts +76 -0
  329. package/src/filters/Contrast.ts +82 -0
  330. package/src/filters/Convolute.ts +184 -0
  331. package/src/filters/FilterBackend.ts +34 -0
  332. package/src/filters/GLProbes/GLProbe.ts +11 -0
  333. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  334. package/src/filters/GLProbes/WebGLProbe.ts +46 -0
  335. package/src/filters/Gamma.ts +110 -0
  336. package/src/filters/Grayscale.ts +102 -0
  337. package/src/filters/HueRotation.ts +62 -0
  338. package/src/filters/Invert.ts +99 -0
  339. package/src/filters/Noise.ts +94 -0
  340. package/src/filters/Pixelate.ts +96 -0
  341. package/src/filters/RemoveColor.ts +135 -0
  342. package/src/filters/Resize.ts +538 -0
  343. package/src/filters/Saturation.ts +87 -0
  344. package/src/filters/Vibrance.ts +88 -0
  345. package/src/filters/WebGLFilterBackend.ts +430 -0
  346. package/src/filters/filters.ts +28 -0
  347. package/src/filters/index.ts +5 -0
  348. package/src/filters/shaders/baseFilter.ts +19 -0
  349. package/src/filters/shaders/blendColor.ts +33 -0
  350. package/src/filters/shaders/blendImage.ts +32 -0
  351. package/src/filters/shaders/blur.ts +24 -0
  352. package/src/filters/shaders/brightness.ts +11 -0
  353. package/src/filters/shaders/colorMatrix.ts +12 -0
  354. package/src/filters/shaders/constrast.ts +11 -0
  355. package/src/filters/shaders/convolute.ts +154 -0
  356. package/src/filters/shaders/gamma.ts +15 -0
  357. package/src/filters/shaders/grayscale.ts +36 -0
  358. package/src/filters/shaders/invert.ts +19 -0
  359. package/src/filters/shaders/noise.ts +16 -0
  360. package/src/filters/shaders/pixelate.ts +19 -0
  361. package/src/filters/shaders/removeColor.ts +13 -0
  362. package/src/filters/shaders/saturation.ts +15 -0
  363. package/src/filters/shaders/vibrance.ts +16 -0
  364. package/src/filters/typedefs.ts +65 -0
  365. package/src/gradient/Gradient.ts +406 -0
  366. package/src/gradient/constants.ts +12 -0
  367. package/src/gradient/parser/index.ts +3 -0
  368. package/src/gradient/parser/misc.ts +13 -0
  369. package/src/gradient/parser/parseColorStops.ts +56 -0
  370. package/src/gradient/parser/parseCoords.ts +73 -0
  371. package/src/gradient/typedefs.ts +104 -0
  372. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  373. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  374. package/src/parkinglot/straighten.ts +58 -0
  375. package/src/parser/applyViewboxTransform.ts +157 -0
  376. package/src/parser/attributes.ts +25 -0
  377. package/src/parser/constants.ts +115 -0
  378. package/src/parser/doesSomeParentMatch.ts +19 -0
  379. package/src/parser/elementById.ts +21 -0
  380. package/src/parser/elementMatchesRule.ts +16 -0
  381. package/src/parser/elements_parser.ts +191 -0
  382. package/src/parser/getCSSRules.ts +62 -0
  383. package/src/parser/getGlobalStylesForElement.ts +19 -0
  384. package/src/parser/getGradientDefs.ts +31 -0
  385. package/src/parser/getMultipleNodes.ts +15 -0
  386. package/src/parser/getSvgRegex.ts +5 -0
  387. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  388. package/src/parser/index.ts +9 -0
  389. package/src/parser/loadSVGFromString.ts +26 -0
  390. package/src/parser/loadSVGFromURL.ts +40 -0
  391. package/src/parser/normalizeAttr.ts +10 -0
  392. package/src/parser/normalizeValue.ts +63 -0
  393. package/src/parser/parseAttributes.ts +90 -0
  394. package/src/parser/parseElements.ts +28 -0
  395. package/src/parser/parseFontDeclaration.ts +44 -0
  396. package/src/parser/parsePointsAttribute.ts +34 -0
  397. package/src/parser/parseSVGDocument.ts +93 -0
  398. package/src/parser/parseStyleAttribute.ts +27 -0
  399. package/src/parser/parseStyleObject.ts +15 -0
  400. package/src/parser/parseStyleString.ts +16 -0
  401. package/src/parser/parseTransformAttribute.ts +155 -0
  402. package/src/parser/parseUseDirectives.ts +78 -0
  403. package/src/parser/percent.ts +27 -0
  404. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  405. package/src/parser/rotateMatrix.ts +21 -0
  406. package/src/parser/scaleMatrix.ts +9 -0
  407. package/src/parser/selectorMatches.ts +25 -0
  408. package/src/parser/setStrokeFillOpacity.ts +40 -0
  409. package/src/parser/skewMatrix.ts +6 -0
  410. package/src/parser/translateMatrix.ts +8 -0
  411. package/src/shapes/ActiveSelection.ts +189 -0
  412. package/src/shapes/Circle.ts +242 -0
  413. package/src/shapes/Ellipse.ts +179 -0
  414. package/src/shapes/Group.ts +1100 -0
  415. package/src/shapes/IText/DraggableTextDelegate.ts +382 -0
  416. package/src/shapes/IText/IText.ts +693 -0
  417. package/src/shapes/IText/ITextBehavior.ts +1064 -0
  418. package/src/shapes/IText/ITextClickBehavior.ts +325 -0
  419. package/src/shapes/IText/ITextKeyBehavior.ts +685 -0
  420. package/src/shapes/IText/constants.ts +47 -0
  421. package/src/shapes/Image.ts +841 -0
  422. package/src/shapes/Line.ts +346 -0
  423. package/src/shapes/Object/AnimatableObject.ts +106 -0
  424. package/src/shapes/Object/FabricObject.ts +29 -0
  425. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  426. package/src/shapes/Object/InteractiveObject.ts +672 -0
  427. package/src/shapes/Object/Object.ts +1561 -0
  428. package/src/shapes/Object/ObjectGeometry.ts +813 -0
  429. package/src/shapes/Object/ObjectOrigin.ts +276 -0
  430. package/src/shapes/Object/StackedObject.ts +206 -0
  431. package/src/shapes/Object/defaultValues.ts +108 -0
  432. package/src/shapes/Object/types/BaseProps.ts +96 -0
  433. package/src/shapes/Object/types/BorderProps.ts +40 -0
  434. package/src/shapes/Object/types/ControlProps.ts +69 -0
  435. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  436. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  437. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  438. package/src/shapes/Object/types/ObjectProps.ts +46 -0
  439. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  440. package/src/shapes/Object/types/index.ts +8 -0
  441. package/src/shapes/Path.ts +416 -0
  442. package/src/shapes/Polygon.ts +20 -0
  443. package/src/shapes/Polyline.ts +359 -0
  444. package/src/shapes/Rect.ts +233 -0
  445. package/src/shapes/Text/StyledText.ts +329 -0
  446. package/src/shapes/Text/Text.ts +1884 -0
  447. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  448. package/src/shapes/Text/constants.ts +91 -0
  449. package/src/shapes/Textbox.ts +477 -0
  450. package/src/shapes/Triangle.ts +60 -0
  451. package/src/typedefs.ts +115 -0
  452. package/src/util/animation/AnimationBase.ts +166 -0
  453. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  454. package/src/util/animation/AnimationRegistry.ts +58 -0
  455. package/src/util/animation/ArrayAnimation.ts +27 -0
  456. package/src/util/animation/ColorAnimation.ts +74 -0
  457. package/src/util/animation/ValueAnimation.ts +29 -0
  458. package/src/util/animation/animate.ts +74 -0
  459. package/src/util/animation/easing.ts +327 -0
  460. package/src/util/animation/types.ts +136 -0
  461. package/src/util/applyMixins.ts +22 -0
  462. package/src/util/dom_event.ts +28 -0
  463. package/src/util/dom_misc.ts +121 -0
  464. package/src/util/dom_request.ts +64 -0
  465. package/src/util/dom_style.ts +20 -0
  466. package/src/util/fireEvent.ts +15 -0
  467. package/src/util/index.ts +102 -0
  468. package/src/util/internals/cloneDeep.ts +2 -0
  469. package/src/util/internals/getRandomInt.ts +8 -0
  470. package/src/util/internals/ifNaN.ts +9 -0
  471. package/src/util/internals/index.ts +3 -0
  472. package/src/util/internals/removeFromArray.ts +14 -0
  473. package/src/util/internals/uid.ts +3 -0
  474. package/src/util/lang_string.ts +79 -0
  475. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  476. package/src/util/misc/capValue.ts +2 -0
  477. package/src/util/misc/cos.ts +24 -0
  478. package/src/util/misc/dom.ts +50 -0
  479. package/src/util/misc/findScaleTo.ts +44 -0
  480. package/src/util/misc/groupSVGElements.ts +15 -0
  481. package/src/util/misc/isTransparent.ts +28 -0
  482. package/src/util/misc/matrix.ts +207 -0
  483. package/src/util/misc/mergeClipPaths.ts +40 -0
  484. package/src/util/misc/objectEnlive.ts +189 -0
  485. package/src/util/misc/objectTransforms.ts +129 -0
  486. package/src/util/misc/pick.ts +29 -0
  487. package/src/util/misc/planeChange.ts +136 -0
  488. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  489. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +226 -0
  490. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  491. package/src/util/misc/projectStroke/index.ts +53 -0
  492. package/src/util/misc/projectStroke/types.ts +24 -0
  493. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  494. package/src/util/misc/resolveOrigin.ts +22 -0
  495. package/src/util/misc/rotatePoint.ts +15 -0
  496. package/src/util/misc/sin.ts +26 -0
  497. package/src/util/misc/svgParsing.ts +181 -0
  498. package/src/util/misc/textStyles.ts +134 -0
  499. package/src/util/misc/toFixed.ts +8 -0
  500. package/src/util/misc/vectors.ts +82 -0
  501. package/src/util/path/index.ts +1038 -0
  502. package/src/util/path/regex.ts +41 -0
  503. package/src/util/path/typechecks.ts +145 -0
  504. package/src/util/path/typedefs.ts +305 -0
  505. package/src/util/transform_matrix_removal.ts +60 -0
  506. package/src/util/types.ts +78 -0
  507. package/tsconfig.json +106 -0
  508. package/HEADER.js +0 -203
  509. package/build.js +0 -287
  510. package/dist/fabric.js +0 -31187
  511. package/dist/fabric.min.js +0 -1
  512. package/old-travis-reference.yml +0 -97
  513. package/src/brushes/circle_brush.class.js +0 -144
  514. package/src/brushes/pattern_brush.class.js +0 -61
  515. package/src/brushes/pencil_brush.class.js +0 -310
  516. package/src/brushes/spray_brush.class.js +0 -219
  517. package/src/canvas.class.js +0 -1312
  518. package/src/color.class.js +0 -636
  519. package/src/control.class.js +0 -339
  520. package/src/controls.actions.js +0 -740
  521. package/src/controls.render.js +0 -99
  522. package/src/elements_parser.js +0 -152
  523. package/src/filters/2d_backend.class.js +0 -65
  524. package/src/filters/blendcolor_filter.class.js +0 -251
  525. package/src/filters/blendimage_filter.class.js +0 -247
  526. package/src/filters/blur_filter.class.js +0 -217
  527. package/src/filters/brightness_filter.class.js +0 -113
  528. package/src/filters/colormatrix_filter.class.js +0 -159
  529. package/src/filters/composed_filter.class.js +0 -72
  530. package/src/filters/contrast_filter.class.js +0 -113
  531. package/src/filters/convolute_filter.class.js +0 -352
  532. package/src/filters/filter_boilerplate.js +0 -111
  533. package/src/filters/filter_generator.js +0 -85
  534. package/src/filters/gamma_filter.class.js +0 -136
  535. package/src/filters/grayscale_filter.class.js +0 -154
  536. package/src/filters/hue_rotation.class.js +0 -107
  537. package/src/filters/invert_filter.class.js +0 -111
  538. package/src/filters/noise_filter.class.js +0 -134
  539. package/src/filters/pixelate_filter.class.js +0 -137
  540. package/src/filters/removecolor_filter.class.js +0 -173
  541. package/src/filters/resize_filter.class.js +0 -490
  542. package/src/filters/saturate_filter.class.js +0 -119
  543. package/src/filters/vibrance_filter.class.js +0 -122
  544. package/src/filters/webgl_backend.class.js +0 -396
  545. package/src/globalFabric.js +0 -4
  546. package/src/gradient.class.js +0 -490
  547. package/src/intersection.class.js +0 -172
  548. package/src/log.js +0 -11
  549. package/src/mixins/animation.mixin.js +0 -231
  550. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  551. package/src/mixins/canvas_events.mixin.js +0 -974
  552. package/src/mixins/canvas_gestures.mixin.js +0 -149
  553. package/src/mixins/canvas_grouping.mixin.js +0 -177
  554. package/src/mixins/canvas_serialization.mixin.js +0 -228
  555. package/src/mixins/collection.mixin.js +0 -170
  556. package/src/mixins/default_controls.js +0 -114
  557. package/src/mixins/itext.svg_export.js +0 -241
  558. package/src/mixins/itext_behavior.mixin.js +0 -940
  559. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  560. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  561. package/src/mixins/object.svg_export.js +0 -258
  562. package/src/mixins/object_geometry.mixin.js +0 -683
  563. package/src/mixins/object_interactivity.mixin.js +0 -314
  564. package/src/mixins/object_origin.mixin.js +0 -255
  565. package/src/mixins/object_stacking.mixin.js +0 -80
  566. package/src/mixins/object_straightening.mixin.js +0 -80
  567. package/src/mixins/observable.mixin.js +0 -141
  568. package/src/mixins/shared_methods.mixin.js +0 -94
  569. package/src/mixins/stateful.mixin.js +0 -107
  570. package/src/mixins/text_style.mixin.js +0 -324
  571. package/src/parser.js +0 -1090
  572. package/src/pattern.class.js +0 -189
  573. package/src/point.class.js +0 -337
  574. package/src/shadow.class.js +0 -195
  575. package/src/shapes/active_selection.class.js +0 -155
  576. package/src/shapes/circle.class.js +0 -210
  577. package/src/shapes/ellipse.class.js +0 -181
  578. package/src/shapes/group.class.js +0 -593
  579. package/src/shapes/image.class.js +0 -764
  580. package/src/shapes/itext.class.js +0 -526
  581. package/src/shapes/line.class.js +0 -324
  582. package/src/shapes/object.class.js +0 -2008
  583. package/src/shapes/path.class.js +0 -384
  584. package/src/shapes/polygon.class.js +0 -81
  585. package/src/shapes/polyline.class.js +0 -268
  586. package/src/shapes/rect.class.js +0 -187
  587. package/src/shapes/text.class.js +0 -1696
  588. package/src/shapes/textbox.class.js +0 -461
  589. package/src/shapes/triangle.class.js +0 -93
  590. package/src/static_canvas.class.js +0 -1881
  591. package/src/util/anim_ease.js +0 -398
  592. package/src/util/animate.js +0 -254
  593. package/src/util/animate_color.js +0 -74
  594. package/src/util/dom_event.js +0 -50
  595. package/src/util/dom_misc.js +0 -300
  596. package/src/util/dom_request.js +0 -54
  597. package/src/util/dom_style.js +0 -70
  598. package/src/util/lang_array.js +0 -94
  599. package/src/util/lang_class.js +0 -115
  600. package/src/util/lang_object.js +0 -75
  601. package/src/util/lang_string.js +0 -110
  602. package/src/util/misc.js +0 -1330
  603. package/src/util/named_accessors.mixin.js +0 -428
  604. package/src/util/path.js +0 -829
@@ -1,149 +0,0 @@
1
- /**
2
- * Adds support for multi-touch gestures using the Event.js library.
3
- * Fires the following custom events:
4
- * - touch:gesture
5
- * - touch:drag
6
- * - touch:orientation
7
- * - touch:shake
8
- * - touch:longpress
9
- */
10
- (function() {
11
-
12
- var degreesToRadians = fabric.util.degreesToRadians,
13
- radiansToDegrees = fabric.util.radiansToDegrees;
14
-
15
- fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {
16
- /**
17
- * Method that defines actions when an Event.js gesture is detected on an object. Currently only supports
18
- * 2 finger gestures.
19
- * @param {Event} e Event object by Event.js
20
- * @param {Event} self Event proxy object by Event.js
21
- */
22
- __onTransformGesture: function(e, self) {
23
-
24
- if (this.isDrawingMode || !e.touches || e.touches.length !== 2 || 'gesture' !== self.gesture) {
25
- return;
26
- }
27
-
28
- var target = this.findTarget(e);
29
- if ('undefined' !== typeof target) {
30
- this.__gesturesParams = {
31
- e: e,
32
- self: self,
33
- target: target
34
- };
35
-
36
- this.__gesturesRenderer();
37
- }
38
-
39
- this.fire('touch:gesture', {
40
- target: target, e: e, self: self
41
- });
42
- },
43
- __gesturesParams: null,
44
- __gesturesRenderer: function() {
45
-
46
- if (this.__gesturesParams === null || this._currentTransform === null) {
47
- return;
48
- }
49
-
50
- var self = this.__gesturesParams.self,
51
- t = this._currentTransform,
52
- e = this.__gesturesParams.e;
53
-
54
- t.action = 'scale';
55
- t.originX = t.originY = 'center';
56
-
57
- this._scaleObjectBy(self.scale, e);
58
-
59
- if (self.rotation !== 0) {
60
- t.action = 'rotate';
61
- this._rotateObjectByAngle(self.rotation, e);
62
- }
63
-
64
- this.requestRenderAll();
65
-
66
- t.action = 'drag';
67
- },
68
-
69
- /**
70
- * Method that defines actions when an Event.js drag is detected.
71
- *
72
- * @param {Event} e Event object by Event.js
73
- * @param {Event} self Event proxy object by Event.js
74
- */
75
- __onDrag: function(e, self) {
76
- this.fire('touch:drag', {
77
- e: e, self: self
78
- });
79
- },
80
-
81
- /**
82
- * Method that defines actions when an Event.js orientation event is detected.
83
- *
84
- * @param {Event} e Event object by Event.js
85
- * @param {Event} self Event proxy object by Event.js
86
- */
87
- __onOrientationChange: function(e, self) {
88
- this.fire('touch:orientation', {
89
- e: e, self: self
90
- });
91
- },
92
-
93
- /**
94
- * Method that defines actions when an Event.js shake event is detected.
95
- *
96
- * @param {Event} e Event object by Event.js
97
- * @param {Event} self Event proxy object by Event.js
98
- */
99
- __onShake: function(e, self) {
100
- this.fire('touch:shake', {
101
- e: e, self: self
102
- });
103
- },
104
-
105
- /**
106
- * Method that defines actions when an Event.js longpress event is detected.
107
- *
108
- * @param {Event} e Event object by Event.js
109
- * @param {Event} self Event proxy object by Event.js
110
- */
111
- __onLongPress: function(e, self) {
112
- this.fire('touch:longpress', {
113
- e: e, self: self
114
- });
115
- },
116
-
117
- /**
118
- * Scales an object by a factor
119
- * @param {Number} s The scale factor to apply to the current scale level
120
- * @param {Event} e Event object by Event.js
121
- */
122
- _scaleObjectBy: function(s, e) {
123
- var t = this._currentTransform,
124
- target = t.target;
125
- t.gestureScale = s;
126
- target._scaling = true;
127
- return fabric.controlsUtils.scalingEqually(e, t, 0, 0);
128
- },
129
-
130
- /**
131
- * Rotates object by an angle
132
- * @param {Number} curAngle The angle of rotation in degrees
133
- * @param {Event} e Event object by Event.js
134
- */
135
- _rotateObjectByAngle: function(curAngle, e) {
136
- var t = this._currentTransform;
137
-
138
- if (t.target.get('lockRotation')) {
139
- return;
140
- }
141
- t.target.rotate(radiansToDegrees(degreesToRadians(curAngle) + t.theta));
142
- this._fire('rotating', {
143
- target: t.target,
144
- e: e,
145
- transform: t,
146
- });
147
- }
148
- });
149
- })();
@@ -1,177 +0,0 @@
1
- (function() {
2
-
3
- var min = Math.min,
4
- max = Math.max;
5
-
6
- fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {
7
-
8
- /**
9
- * @private
10
- * @param {Event} e Event object
11
- * @param {fabric.Object} target
12
- * @return {Boolean}
13
- */
14
- _shouldGroup: function(e, target) {
15
- var activeObject = this._activeObject;
16
- return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&
17
- (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });
18
- },
19
-
20
- /**
21
- * @private
22
- * @param {Event} e Event object
23
- * @param {fabric.Object} target
24
- */
25
- _handleGrouping: function (e, target) {
26
- var activeObject = this._activeObject;
27
- // avoid multi select when shift click on a corner
28
- if (activeObject.__corner) {
29
- return;
30
- }
31
- if (target === activeObject) {
32
- // if it's a group, find target again, using activeGroup objects
33
- target = this.findTarget(e, true);
34
- // if even object is not found or we are on activeObjectCorner, bail out
35
- if (!target || !target.selectable) {
36
- return;
37
- }
38
- }
39
- if (activeObject && activeObject.type === 'activeSelection') {
40
- this._updateActiveSelection(target, e);
41
- }
42
- else {
43
- this._createActiveSelection(target, e);
44
- }
45
- },
46
-
47
- /**
48
- * @private
49
- */
50
- _updateActiveSelection: function(target, e) {
51
- var activeSelection = this._activeObject,
52
- currentActiveObjects = activeSelection._objects.slice(0);
53
- if (activeSelection.contains(target)) {
54
- activeSelection.removeWithUpdate(target);
55
- this._hoveredTarget = target;
56
- this._hoveredTargets = this.targets.concat();
57
- if (activeSelection.size() === 1) {
58
- // activate last remaining object
59
- this._setActiveObject(activeSelection.item(0), e);
60
- }
61
- }
62
- else {
63
- activeSelection.addWithUpdate(target);
64
- this._hoveredTarget = activeSelection;
65
- this._hoveredTargets = this.targets.concat();
66
- }
67
- this._fireSelectionEvents(currentActiveObjects, e);
68
- },
69
-
70
- /**
71
- * @private
72
- */
73
- _createActiveSelection: function(target, e) {
74
- var currentActives = this.getActiveObjects(), group = this._createGroup(target);
75
- this._hoveredTarget = group;
76
- // ISSUE 4115: should we consider subTargets here?
77
- // this._hoveredTargets = [];
78
- // this._hoveredTargets = this.targets.concat();
79
- this._setActiveObject(group, e);
80
- this._fireSelectionEvents(currentActives, e);
81
- },
82
-
83
- /**
84
- * @private
85
- * @param {Object} target
86
- */
87
- _createGroup: function(target) {
88
- var objects = this._objects,
89
- isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),
90
- groupObjects = isActiveLower
91
- ? [this._activeObject, target]
92
- : [target, this._activeObject];
93
- this._activeObject.isEditing && this._activeObject.exitEditing();
94
- return new fabric.ActiveSelection(groupObjects, {
95
- canvas: this
96
- });
97
- },
98
-
99
- /**
100
- * @private
101
- * @param {Event} e mouse event
102
- */
103
- _groupSelectedObjects: function (e) {
104
-
105
- var group = this._collectObjects(e),
106
- aGroup;
107
-
108
- // do not create group for 1 element only
109
- if (group.length === 1) {
110
- this.setActiveObject(group[0], e);
111
- }
112
- else if (group.length > 1) {
113
- aGroup = new fabric.ActiveSelection(group.reverse(), {
114
- canvas: this
115
- });
116
- this.setActiveObject(aGroup, e);
117
- }
118
- },
119
-
120
- /**
121
- * @private
122
- */
123
- _collectObjects: function(e) {
124
- var group = [],
125
- currentObject,
126
- x1 = this._groupSelector.ex,
127
- y1 = this._groupSelector.ey,
128
- x2 = x1 + this._groupSelector.left,
129
- y2 = y1 + this._groupSelector.top,
130
- selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),
131
- selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),
132
- allowIntersect = !this.selectionFullyContained,
133
- isClick = x1 === x2 && y1 === y2;
134
- // we iterate reverse order to collect top first in case of click.
135
- for (var i = this._objects.length; i--; ) {
136
- currentObject = this._objects[i];
137
-
138
- if (!currentObject || !currentObject.selectable || !currentObject.visible) {
139
- continue;
140
- }
141
-
142
- if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2, true)) ||
143
- currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2, true) ||
144
- (allowIntersect && currentObject.containsPoint(selectionX1Y1, null, true)) ||
145
- (allowIntersect && currentObject.containsPoint(selectionX2Y2, null, true))
146
- ) {
147
- group.push(currentObject);
148
- // only add one object if it's a click
149
- if (isClick) {
150
- break;
151
- }
152
- }
153
- }
154
-
155
- if (group.length > 1) {
156
- group = group.filter(function(object) {
157
- return !object.onSelect({ e: e });
158
- });
159
- }
160
-
161
- return group;
162
- },
163
-
164
- /**
165
- * @private
166
- */
167
- _maybeGroupObjects: function(e) {
168
- if (this.selection && this._groupSelector) {
169
- this._groupSelectedObjects(e);
170
- }
171
- this.setCursor(this.defaultCursor);
172
- // clear selection and current transformation
173
- this._groupSelector = null;
174
- }
175
- });
176
-
177
- })();
@@ -1,228 +0,0 @@
1
- fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {
2
- /**
3
- * Populates canvas with data from the specified JSON.
4
- * JSON format must conform to the one of {@link fabric.Canvas#toJSON}
5
- * @param {String|Object} json JSON string or object
6
- * @param {Function} callback Callback, invoked when json is parsed
7
- * and corresponding objects (e.g: {@link fabric.Image})
8
- * are initialized
9
- * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.
10
- * @return {fabric.Canvas} instance
11
- * @chainable
12
- * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}
13
- * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}
14
- * @example <caption>loadFromJSON</caption>
15
- * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));
16
- * @example <caption>loadFromJSON with reviver</caption>
17
- * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {
18
- * // `o` = json object
19
- * // `object` = fabric.Object instance
20
- * // ... do some stuff ...
21
- * });
22
- */
23
- loadFromJSON: function (json, callback, reviver) {
24
- if (!json) {
25
- return;
26
- }
27
-
28
- // serialize if it wasn't already
29
- var serialized = (typeof json === 'string')
30
- ? JSON.parse(json)
31
- : fabric.util.object.clone(json);
32
-
33
- var _this = this,
34
- clipPath = serialized.clipPath,
35
- renderOnAddRemove = this.renderOnAddRemove;
36
-
37
- this.renderOnAddRemove = false;
38
-
39
- delete serialized.clipPath;
40
-
41
- this._enlivenObjects(serialized.objects, function (enlivenedObjects) {
42
- _this.clear();
43
- _this._setBgOverlay(serialized, function () {
44
- if (clipPath) {
45
- _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) {
46
- _this.clipPath = enlivenedCanvasClip[0];
47
- _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);
48
- });
49
- }
50
- else {
51
- _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);
52
- }
53
- });
54
- }, reviver);
55
- return this;
56
- },
57
-
58
- /**
59
- * @private
60
- * @param {Object} serialized Object with background and overlay information
61
- * @param {Array} restored canvas objects
62
- * @param {Function} cached renderOnAddRemove callback
63
- * @param {Function} callback Invoked after all background and overlay images/patterns loaded
64
- */
65
- __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) {
66
- var _this = this;
67
- enlivenedObjects.forEach(function(obj, index) {
68
- // we splice the array just in case some custom classes restored from JSON
69
- // will add more object to canvas at canvas init.
70
- _this.insertAt(obj, index);
71
- });
72
- this.renderOnAddRemove = renderOnAddRemove;
73
- // remove parts i cannot set as options
74
- delete serialized.objects;
75
- delete serialized.backgroundImage;
76
- delete serialized.overlayImage;
77
- delete serialized.background;
78
- delete serialized.overlay;
79
- // this._initOptions does too many things to just
80
- // call it. Normally loading an Object from JSON
81
- // create the Object instance. Here the Canvas is
82
- // already an instance and we are just loading things over it
83
- this._setOptions(serialized);
84
- this.renderAll();
85
- callback && callback();
86
- },
87
-
88
- /**
89
- * @private
90
- * @param {Object} serialized Object with background and overlay information
91
- * @param {Function} callback Invoked after all background and overlay images/patterns loaded
92
- */
93
- _setBgOverlay: function(serialized, callback) {
94
- var loaded = {
95
- backgroundColor: false,
96
- overlayColor: false,
97
- backgroundImage: false,
98
- overlayImage: false
99
- };
100
-
101
- if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {
102
- callback && callback();
103
- return;
104
- }
105
-
106
- var cbIfLoaded = function () {
107
- if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {
108
- callback && callback();
109
- }
110
- };
111
-
112
- this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);
113
- this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);
114
- this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);
115
- this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);
116
- },
117
-
118
- /**
119
- * @private
120
- * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)
121
- * @param {(Object|String)} value Value to set
122
- * @param {Object} loaded Set loaded property to true if property is set
123
- * @param {Object} callback Callback function to invoke after property is set
124
- */
125
- __setBgOverlay: function(property, value, loaded, callback) {
126
- var _this = this;
127
-
128
- if (!value) {
129
- loaded[property] = true;
130
- callback && callback();
131
- return;
132
- }
133
-
134
- if (property === 'backgroundImage' || property === 'overlayImage') {
135
- fabric.util.enlivenObjects([value], function(enlivedObject){
136
- _this[property] = enlivedObject[0];
137
- loaded[property] = true;
138
- callback && callback();
139
- });
140
- }
141
- else {
142
- this['set' + fabric.util.string.capitalize(property, true)](value, function() {
143
- loaded[property] = true;
144
- callback && callback();
145
- });
146
- }
147
- },
148
-
149
- /**
150
- * @private
151
- * @param {Array} objects
152
- * @param {Function} callback
153
- * @param {Function} [reviver]
154
- */
155
- _enlivenObjects: function (objects, callback, reviver) {
156
- if (!objects || objects.length === 0) {
157
- callback && callback([]);
158
- return;
159
- }
160
-
161
- fabric.util.enlivenObjects(objects, function(enlivenedObjects) {
162
- callback && callback(enlivenedObjects);
163
- }, null, reviver);
164
- },
165
-
166
- /**
167
- * @private
168
- * @param {String} format
169
- * @param {Function} callback
170
- */
171
- _toDataURL: function (format, callback) {
172
- this.clone(function (clone) {
173
- callback(clone.toDataURL(format));
174
- });
175
- },
176
-
177
- /**
178
- * @private
179
- * @param {String} format
180
- * @param {Number} multiplier
181
- * @param {Function} callback
182
- */
183
- _toDataURLWithMultiplier: function (format, multiplier, callback) {
184
- this.clone(function (clone) {
185
- callback(clone.toDataURLWithMultiplier(format, multiplier));
186
- });
187
- },
188
-
189
- /**
190
- * Clones canvas instance
191
- * @param {Object} [callback] Receives cloned instance as a first argument
192
- * @param {Array} [properties] Array of properties to include in the cloned canvas and children
193
- */
194
- clone: function (callback, properties) {
195
- var data = JSON.stringify(this.toJSON(properties));
196
- this.cloneWithoutData(function(clone) {
197
- clone.loadFromJSON(data, function() {
198
- callback && callback(clone);
199
- });
200
- });
201
- },
202
-
203
- /**
204
- * Clones canvas instance without cloning existing data.
205
- * This essentially copies canvas dimensions, clipping properties, etc.
206
- * but leaves data empty (so that you can populate it with your own)
207
- * @param {Object} [callback] Receives cloned instance as a first argument
208
- */
209
- cloneWithoutData: function(callback) {
210
- var el = fabric.util.createCanvasElement();
211
-
212
- el.width = this.width;
213
- el.height = this.height;
214
-
215
- var clone = new fabric.Canvas(el);
216
- if (this.backgroundImage) {
217
- clone.setBackgroundImage(this.backgroundImage.src, function() {
218
- clone.renderAll();
219
- callback && callback(clone);
220
- });
221
- clone.backgroundImageOpacity = this.backgroundImageOpacity;
222
- clone.backgroundImageStretch = this.backgroundImageStretch;
223
- }
224
- else {
225
- callback && callback(clone);
226
- }
227
- }
228
- });