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,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
- })();