fabric 5.3.0-browser → 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.
Files changed (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +142 -88
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -1,74 +0,0 @@
1
- (function() {
2
- // Calculate an in-between color. Returns a "rgba()" string.
3
- // Credit: Edwin Martin <edwin@bitstorm.org>
4
- // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js
5
- function calculateColor(begin, end, pos) {
6
- var color = 'rgba('
7
- + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','
8
- + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','
9
- + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);
10
-
11
- color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);
12
- color += ')';
13
- return color;
14
- }
15
-
16
- /**
17
- * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.
18
- * @memberOf fabric.util
19
- * @param {String} fromColor The starting color in hex or rgb(a) format.
20
- * @param {String} toColor The starting color in hex or rgb(a) format.
21
- * @param {Number} [duration] Duration of change (in ms).
22
- * @param {Object} [options] Animation options
23
- * @param {Function} [options.onChange] Callback; invoked on every value change
24
- * @param {Function} [options.onComplete] Callback; invoked when value change is completed
25
- * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.
26
- * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.
27
- * @returns {Function} abort function
28
- */
29
- function animateColor(fromColor, toColor, duration, options) {
30
- var startColor = new fabric.Color(fromColor).getSource(),
31
- endColor = new fabric.Color(toColor).getSource(),
32
- originalOnComplete = options.onComplete,
33
- originalOnChange = options.onChange;
34
- options = options || {};
35
-
36
- return fabric.util.animate(fabric.util.object.extend(options, {
37
- duration: duration || 500,
38
- startValue: startColor,
39
- endValue: endColor,
40
- byValue: endColor,
41
- easing: function (currentTime, startValue, byValue, duration) {
42
- var posValue = options.colorEasing
43
- ? options.colorEasing(currentTime, duration)
44
- : 1 - Math.cos(currentTime / duration * (Math.PI / 2));
45
- return calculateColor(startValue, byValue, posValue);
46
- },
47
- // has to take in account for color restoring;
48
- onComplete: function(current, valuePerc, timePerc) {
49
- if (originalOnComplete) {
50
- return originalOnComplete(
51
- calculateColor(endColor, endColor, 0),
52
- valuePerc,
53
- timePerc
54
- );
55
- }
56
- },
57
- onChange: function(current, valuePerc, timePerc) {
58
- if (originalOnChange) {
59
- if (Array.isArray(current)) {
60
- return originalOnChange(
61
- calculateColor(current, current, 0),
62
- valuePerc,
63
- timePerc
64
- );
65
- }
66
- originalOnChange(current, valuePerc, timePerc);
67
- }
68
- }
69
- }));
70
- }
71
-
72
- fabric.util.animateColor = animateColor;
73
-
74
- })();
@@ -1,50 +0,0 @@
1
- (function () {
2
- // since ie11 can use addEventListener but they do not support options, i need to check
3
- var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent,
4
- touchEvents = ['touchstart', 'touchmove', 'touchend'];
5
- /**
6
- * Adds an event listener to an element
7
- * @function
8
- * @memberOf fabric.util
9
- * @param {HTMLElement} element
10
- * @param {String} eventName
11
- * @param {Function} handler
12
- */
13
- fabric.util.addListener = function(element, eventName, handler, options) {
14
- element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);
15
- };
16
-
17
- /**
18
- * Removes an event listener from an element
19
- * @function
20
- * @memberOf fabric.util
21
- * @param {HTMLElement} element
22
- * @param {String} eventName
23
- * @param {Function} handler
24
- */
25
- fabric.util.removeListener = function(element, eventName, handler, options) {
26
- element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);
27
- };
28
-
29
- function getTouchInfo(event) {
30
- var touchProp = event.changedTouches;
31
- if (touchProp && touchProp[0]) {
32
- return touchProp[0];
33
- }
34
- return event;
35
- }
36
-
37
- fabric.util.getPointer = function(event) {
38
- var element = event.target,
39
- scroll = fabric.util.getScrollLeftTop(element),
40
- _evt = getTouchInfo(event);
41
- return {
42
- x: _evt.clientX + scroll.left,
43
- y: _evt.clientY + scroll.top
44
- };
45
- };
46
-
47
- fabric.util.isTouchEvent = function(event) {
48
- return touchEvents.indexOf(event.type) > -1 || event.pointerType === 'touch';
49
- };
50
- })();
@@ -1,300 +0,0 @@
1
- (function() {
2
-
3
- var _slice = Array.prototype.slice;
4
-
5
- /**
6
- * Takes id and returns an element with that id (if one exists in a document)
7
- * @memberOf fabric.util
8
- * @param {String|HTMLElement} id
9
- * @return {HTMLElement|null}
10
- */
11
- function getById(id) {
12
- return typeof id === 'string' ? fabric.document.getElementById(id) : id;
13
- }
14
-
15
- var sliceCanConvertNodelists,
16
- /**
17
- * Converts an array-like object (e.g. arguments or NodeList) to an array
18
- * @memberOf fabric.util
19
- * @param {Object} arrayLike
20
- * @return {Array}
21
- */
22
- toArray = function(arrayLike) {
23
- return _slice.call(arrayLike, 0);
24
- };
25
-
26
- try {
27
- sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;
28
- }
29
- catch (err) { }
30
-
31
- if (!sliceCanConvertNodelists) {
32
- toArray = function(arrayLike) {
33
- var arr = new Array(arrayLike.length), i = arrayLike.length;
34
- while (i--) {
35
- arr[i] = arrayLike[i];
36
- }
37
- return arr;
38
- };
39
- }
40
-
41
- /**
42
- * Creates specified element with specified attributes
43
- * @memberOf fabric.util
44
- * @param {String} tagName Type of an element to create
45
- * @param {Object} [attributes] Attributes to set on an element
46
- * @return {HTMLElement} Newly created element
47
- */
48
- function makeElement(tagName, attributes) {
49
- var el = fabric.document.createElement(tagName);
50
- for (var prop in attributes) {
51
- if (prop === 'class') {
52
- el.className = attributes[prop];
53
- }
54
- else if (prop === 'for') {
55
- el.htmlFor = attributes[prop];
56
- }
57
- else {
58
- el.setAttribute(prop, attributes[prop]);
59
- }
60
- }
61
- return el;
62
- }
63
-
64
- /**
65
- * Adds class to an element
66
- * @memberOf fabric.util
67
- * @param {HTMLElement} element Element to add class to
68
- * @param {String} className Class to add to an element
69
- */
70
- function addClass(element, className) {
71
- if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {
72
- element.className += (element.className ? ' ' : '') + className;
73
- }
74
- }
75
-
76
- /**
77
- * Wraps element with another element
78
- * @memberOf fabric.util
79
- * @param {HTMLElement} element Element to wrap
80
- * @param {HTMLElement|String} wrapper Element to wrap with
81
- * @param {Object} [attributes] Attributes to set on a wrapper
82
- * @return {HTMLElement} wrapper
83
- */
84
- function wrapElement(element, wrapper, attributes) {
85
- if (typeof wrapper === 'string') {
86
- wrapper = makeElement(wrapper, attributes);
87
- }
88
- if (element.parentNode) {
89
- element.parentNode.replaceChild(wrapper, element);
90
- }
91
- wrapper.appendChild(element);
92
- return wrapper;
93
- }
94
-
95
- /**
96
- * Returns element scroll offsets
97
- * @memberOf fabric.util
98
- * @param {HTMLElement} element Element to operate on
99
- * @return {Object} Object with left/top values
100
- */
101
- function getScrollLeftTop(element) {
102
-
103
- var left = 0,
104
- top = 0,
105
- docElement = fabric.document.documentElement,
106
- body = fabric.document.body || {
107
- scrollLeft: 0, scrollTop: 0
108
- };
109
-
110
- // While loop checks (and then sets element to) .parentNode OR .host
111
- // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,
112
- // but the .parentNode of a root ShadowDOM node will always be null, instead
113
- // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938
114
- while (element && (element.parentNode || element.host)) {
115
-
116
- // Set element to element parent, or 'host' in case of ShadowDOM
117
- element = element.parentNode || element.host;
118
-
119
- if (element === fabric.document) {
120
- left = body.scrollLeft || docElement.scrollLeft || 0;
121
- top = body.scrollTop || docElement.scrollTop || 0;
122
- }
123
- else {
124
- left += element.scrollLeft || 0;
125
- top += element.scrollTop || 0;
126
- }
127
-
128
- if (element.nodeType === 1 && element.style.position === 'fixed') {
129
- break;
130
- }
131
- }
132
-
133
- return { left: left, top: top };
134
- }
135
-
136
- /**
137
- * Returns offset for a given element
138
- * @function
139
- * @memberOf fabric.util
140
- * @param {HTMLElement} element Element to get offset for
141
- * @return {Object} Object with "left" and "top" properties
142
- */
143
- function getElementOffset(element) {
144
- var docElem,
145
- doc = element && element.ownerDocument,
146
- box = { left: 0, top: 0 },
147
- offset = { left: 0, top: 0 },
148
- scrollLeftTop,
149
- offsetAttributes = {
150
- borderLeftWidth: 'left',
151
- borderTopWidth: 'top',
152
- paddingLeft: 'left',
153
- paddingTop: 'top'
154
- };
155
-
156
- if (!doc) {
157
- return offset;
158
- }
159
-
160
- for (var attr in offsetAttributes) {
161
- offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;
162
- }
163
-
164
- docElem = doc.documentElement;
165
- if ( typeof element.getBoundingClientRect !== 'undefined' ) {
166
- box = element.getBoundingClientRect();
167
- }
168
-
169
- scrollLeftTop = getScrollLeftTop(element);
170
-
171
- return {
172
- left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,
173
- top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top
174
- };
175
- }
176
-
177
- /**
178
- * Returns style attribute value of a given element
179
- * @memberOf fabric.util
180
- * @param {HTMLElement} element Element to get style attribute for
181
- * @param {String} attr Style attribute to get for element
182
- * @return {String} Style attribute value of the given element.
183
- */
184
- var getElementStyle;
185
- if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {
186
- getElementStyle = function(element, attr) {
187
- var style = fabric.document.defaultView.getComputedStyle(element, null);
188
- return style ? style[attr] : undefined;
189
- };
190
- }
191
- else {
192
- getElementStyle = function(element, attr) {
193
- var value = element.style[attr];
194
- if (!value && element.currentStyle) {
195
- value = element.currentStyle[attr];
196
- }
197
- return value;
198
- };
199
- }
200
-
201
- (function () {
202
- var style = fabric.document.documentElement.style,
203
- selectProp = 'userSelect' in style
204
- ? 'userSelect'
205
- : 'MozUserSelect' in style
206
- ? 'MozUserSelect'
207
- : 'WebkitUserSelect' in style
208
- ? 'WebkitUserSelect'
209
- : 'KhtmlUserSelect' in style
210
- ? 'KhtmlUserSelect'
211
- : '';
212
-
213
- /**
214
- * Makes element unselectable
215
- * @memberOf fabric.util
216
- * @param {HTMLElement} element Element to make unselectable
217
- * @return {HTMLElement} Element that was passed in
218
- */
219
- function makeElementUnselectable(element) {
220
- if (typeof element.onselectstart !== 'undefined') {
221
- element.onselectstart = fabric.util.falseFunction;
222
- }
223
- if (selectProp) {
224
- element.style[selectProp] = 'none';
225
- }
226
- else if (typeof element.unselectable === 'string') {
227
- element.unselectable = 'on';
228
- }
229
- return element;
230
- }
231
-
232
- /**
233
- * Makes element selectable
234
- * @memberOf fabric.util
235
- * @param {HTMLElement} element Element to make selectable
236
- * @return {HTMLElement} Element that was passed in
237
- */
238
- function makeElementSelectable(element) {
239
- if (typeof element.onselectstart !== 'undefined') {
240
- element.onselectstart = null;
241
- }
242
- if (selectProp) {
243
- element.style[selectProp] = '';
244
- }
245
- else if (typeof element.unselectable === 'string') {
246
- element.unselectable = '';
247
- }
248
- return element;
249
- }
250
-
251
- fabric.util.makeElementUnselectable = makeElementUnselectable;
252
- fabric.util.makeElementSelectable = makeElementSelectable;
253
- })();
254
-
255
- function getNodeCanvas(element) {
256
- var impl = fabric.jsdomImplForWrapper(element);
257
- return impl._canvas || impl._image;
258
- };
259
-
260
- function cleanUpJsdomNode(element) {
261
- if (!fabric.isLikelyNode) {
262
- return;
263
- }
264
- var impl = fabric.jsdomImplForWrapper(element);
265
- if (impl) {
266
- impl._image = null;
267
- impl._canvas = null;
268
- // unsure if necessary
269
- impl._currentSrc = null;
270
- impl._attributes = null;
271
- impl._classList = null;
272
- }
273
- }
274
-
275
- function setImageSmoothing(ctx, value) {
276
- ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled
277
- || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;
278
- ctx.imageSmoothingEnabled = value;
279
- }
280
-
281
- /**
282
- * setImageSmoothing sets the context imageSmoothingEnabled property.
283
- * Used by canvas and by ImageObject.
284
- * @memberOf fabric.util
285
- * @since 4.0.0
286
- * @param {HTMLRenderingContext2D} ctx to set on
287
- * @param {Boolean} value true or false
288
- */
289
- fabric.util.setImageSmoothing = setImageSmoothing;
290
- fabric.util.getById = getById;
291
- fabric.util.toArray = toArray;
292
- fabric.util.addClass = addClass;
293
- fabric.util.makeElement = makeElement;
294
- fabric.util.wrapElement = wrapElement;
295
- fabric.util.getScrollLeftTop = getScrollLeftTop;
296
- fabric.util.getElementOffset = getElementOffset;
297
- fabric.util.getNodeCanvas = getNodeCanvas;
298
- fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;
299
-
300
- })();
@@ -1,54 +0,0 @@
1
- (function() {
2
-
3
- function addParamToUrl(url, param) {
4
- return url + (/\?/.test(url) ? '&' : '?') + param;
5
- }
6
-
7
- function emptyFn() { }
8
-
9
- /**
10
- * Cross-browser abstraction for sending XMLHttpRequest
11
- * @memberOf fabric.util
12
- * @param {String} url URL to send XMLHttpRequest to
13
- * @param {Object} [options] Options object
14
- * @param {String} [options.method="GET"]
15
- * @param {String} [options.parameters] parameters to append to url in GET or in body
16
- * @param {String} [options.body] body to send with POST or PUT request
17
- * @param {Function} options.onComplete Callback to invoke when request is completed
18
- * @return {XMLHttpRequest} request
19
- */
20
- function request(url, options) {
21
- options || (options = { });
22
-
23
- var method = options.method ? options.method.toUpperCase() : 'GET',
24
- onComplete = options.onComplete || function() { },
25
- xhr = new fabric.window.XMLHttpRequest(),
26
- body = options.body || options.parameters;
27
-
28
- /** @ignore */
29
- xhr.onreadystatechange = function() {
30
- if (xhr.readyState === 4) {
31
- onComplete(xhr);
32
- xhr.onreadystatechange = emptyFn;
33
- }
34
- };
35
-
36
- if (method === 'GET') {
37
- body = null;
38
- if (typeof options.parameters === 'string') {
39
- url = addParamToUrl(url, options.parameters);
40
- }
41
- }
42
-
43
- xhr.open(method, url, true);
44
-
45
- if (method === 'POST' || method === 'PUT') {
46
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
47
- }
48
-
49
- xhr.send(body);
50
- return xhr;
51
- }
52
-
53
- fabric.util.request = request;
54
- })();
@@ -1,70 +0,0 @@
1
- (function () {
2
-
3
- /**
4
- * Cross-browser wrapper for setting element's style
5
- * @memberOf fabric.util
6
- * @param {HTMLElement} element
7
- * @param {Object} styles
8
- * @return {HTMLElement} Element that was passed as a first argument
9
- */
10
- function setStyle(element, styles) {
11
- var elementStyle = element.style;
12
- if (!elementStyle) {
13
- return element;
14
- }
15
- if (typeof styles === 'string') {
16
- element.style.cssText += ';' + styles;
17
- return styles.indexOf('opacity') > -1
18
- ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1])
19
- : element;
20
- }
21
- for (var property in styles) {
22
- if (property === 'opacity') {
23
- setOpacity(element, styles[property]);
24
- }
25
- else {
26
- var normalizedProperty = (property === 'float' || property === 'cssFloat')
27
- ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')
28
- : property;
29
- elementStyle.setProperty(normalizedProperty, styles[property]);
30
- }
31
- }
32
- return element;
33
- }
34
-
35
- var parseEl = fabric.document.createElement('div'),
36
- supportsOpacity = typeof parseEl.style.opacity === 'string',
37
- supportsFilters = typeof parseEl.style.filter === 'string',
38
- reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,
39
-
40
- /** @ignore */
41
- setOpacity = function (element) { return element; };
42
-
43
- if (supportsOpacity) {
44
- /** @ignore */
45
- setOpacity = function(element, value) {
46
- element.style.opacity = value;
47
- return element;
48
- };
49
- }
50
- else if (supportsFilters) {
51
- /** @ignore */
52
- setOpacity = function(element, value) {
53
- var es = element.style;
54
- if (element.currentStyle && !element.currentStyle.hasLayout) {
55
- es.zoom = 1;
56
- }
57
- if (reOpacity.test(es.filter)) {
58
- value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');
59
- es.filter = es.filter.replace(reOpacity, value);
60
- }
61
- else {
62
- es.filter += ' alpha(opacity=' + (value * 100) + ')';
63
- }
64
- return element;
65
- };
66
- }
67
-
68
- fabric.util.setStyle = setStyle;
69
-
70
- })();
@@ -1,94 +0,0 @@
1
- (function() {
2
-
3
- var slice = Array.prototype.slice;
4
-
5
- /**
6
- * Invokes method on all items in a given array
7
- * @memberOf fabric.util.array
8
- * @param {Array} array Array to iterate over
9
- * @param {String} method Name of a method to invoke
10
- * @return {Array}
11
- */
12
- function invoke(array, method) {
13
- var args = slice.call(arguments, 2), result = [];
14
- for (var i = 0, len = array.length; i < len; i++) {
15
- result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);
16
- }
17
- return result;
18
- }
19
-
20
- /**
21
- * Finds maximum value in array (not necessarily "first" one)
22
- * @memberOf fabric.util.array
23
- * @param {Array} array Array to iterate over
24
- * @param {String} byProperty
25
- * @return {*}
26
- */
27
- function max(array, byProperty) {
28
- return find(array, byProperty, function(value1, value2) {
29
- return value1 >= value2;
30
- });
31
- }
32
-
33
- /**
34
- * Finds minimum value in array (not necessarily "first" one)
35
- * @memberOf fabric.util.array
36
- * @param {Array} array Array to iterate over
37
- * @param {String} byProperty
38
- * @return {*}
39
- */
40
- function min(array, byProperty) {
41
- return find(array, byProperty, function(value1, value2) {
42
- return value1 < value2;
43
- });
44
- }
45
-
46
- /**
47
- * @private
48
- */
49
- function fill(array, value) {
50
- var k = array.length;
51
- while (k--) {
52
- array[k] = value;
53
- }
54
- return array;
55
- }
56
-
57
- /**
58
- * @private
59
- */
60
- function find(array, byProperty, condition) {
61
- if (!array || array.length === 0) {
62
- return;
63
- }
64
-
65
- var i = array.length - 1,
66
- result = byProperty ? array[i][byProperty] : array[i];
67
- if (byProperty) {
68
- while (i--) {
69
- if (condition(array[i][byProperty], result)) {
70
- result = array[i][byProperty];
71
- }
72
- }
73
- }
74
- else {
75
- while (i--) {
76
- if (condition(array[i], result)) {
77
- result = array[i];
78
- }
79
- }
80
- }
81
- return result;
82
- }
83
-
84
- /**
85
- * @namespace fabric.util.array
86
- */
87
- fabric.util.array = {
88
- fill: fill,
89
- invoke: invoke,
90
- min: min,
91
- max: max
92
- };
93
-
94
- })();