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,461 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = {});
6
-
7
- /**
8
- * Textbox class, based on IText, allows the user to resize the text rectangle
9
- * and wraps lines automatically. Textboxes have their Y scaling locked, the
10
- * user can only change width. Height is adjusted automatically based on the
11
- * wrapping of lines.
12
- * @class fabric.Textbox
13
- * @extends fabric.IText
14
- * @mixes fabric.Observable
15
- * @return {fabric.Textbox} thisArg
16
- * @see {@link fabric.Textbox#initialize} for constructor definition
17
- */
18
- fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {
19
-
20
- /**
21
- * Type of an object
22
- * @type String
23
- * @default
24
- */
25
- type: 'textbox',
26
-
27
- /**
28
- * Minimum width of textbox, in pixels.
29
- * @type Number
30
- * @default
31
- */
32
- minWidth: 20,
33
-
34
- /**
35
- * Minimum calculated width of a textbox, in pixels.
36
- * fixed to 2 so that an empty textbox cannot go to 0
37
- * and is still selectable without text.
38
- * @type Number
39
- * @default
40
- */
41
- dynamicMinWidth: 2,
42
-
43
- /**
44
- * Cached array of text wrapping.
45
- * @type Array
46
- */
47
- __cachedLines: null,
48
-
49
- /**
50
- * Override standard Object class values
51
- */
52
- lockScalingFlip: true,
53
-
54
- /**
55
- * Override standard Object class values
56
- * Textbox needs this on false
57
- */
58
- noScaleCache: false,
59
-
60
- /**
61
- * Properties which when set cause object to change dimensions
62
- * @type Object
63
- * @private
64
- */
65
- _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),
66
-
67
- /**
68
- * Use this regular expression to split strings in breakable lines
69
- * @private
70
- */
71
- _wordJoiners: /[ \t\r]/,
72
-
73
- /**
74
- * Use this boolean property in order to split strings that have no white space concept.
75
- * this is a cheap way to help with chinese/japanese
76
- * @type Boolean
77
- * @since 2.6.0
78
- */
79
- splitByGrapheme: false,
80
-
81
- /**
82
- * Unlike superclass's version of this function, Textbox does not update
83
- * its width.
84
- * @private
85
- * @override
86
- */
87
- initDimensions: function() {
88
- if (this.__skipDimension) {
89
- return;
90
- }
91
- this.isEditing && this.initDelayedCursor();
92
- this.clearContextTop();
93
- this._clearCache();
94
- // clear dynamicMinWidth as it will be different after we re-wrap line
95
- this.dynamicMinWidth = 0;
96
- // wrap lines
97
- this._styleMap = this._generateStyleMap(this._splitText());
98
- // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap
99
- if (this.dynamicMinWidth > this.width) {
100
- this._set('width', this.dynamicMinWidth);
101
- }
102
- if (this.textAlign.indexOf('justify') !== -1) {
103
- // once text is measured we need to make space fatter to make justified text.
104
- this.enlargeSpaces();
105
- }
106
- // clear cache and re-calculate height
107
- this.height = this.calcTextHeight();
108
- this.saveState({ propertySet: '_dimensionAffectingProps' });
109
- },
110
-
111
- /**
112
- * Generate an object that translates the style object so that it is
113
- * broken up by visual lines (new lines and automatic wrapping).
114
- * The original text styles object is broken up by actual lines (new lines only),
115
- * which is only sufficient for Text / IText
116
- * @private
117
- */
118
- _generateStyleMap: function(textInfo) {
119
- var realLineCount = 0,
120
- realLineCharCount = 0,
121
- charCount = 0,
122
- map = {};
123
-
124
- for (var i = 0; i < textInfo.graphemeLines.length; i++) {
125
- if (textInfo.graphemeText[charCount] === '\n' && i > 0) {
126
- realLineCharCount = 0;
127
- charCount++;
128
- realLineCount++;
129
- }
130
- else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {
131
- // this case deals with space's that are removed from end of lines when wrapping
132
- realLineCharCount++;
133
- charCount++;
134
- }
135
-
136
- map[i] = { line: realLineCount, offset: realLineCharCount };
137
-
138
- charCount += textInfo.graphemeLines[i].length;
139
- realLineCharCount += textInfo.graphemeLines[i].length;
140
- }
141
-
142
- return map;
143
- },
144
-
145
- /**
146
- * Returns true if object has a style property or has it on a specified line
147
- * @param {Number} lineIndex
148
- * @return {Boolean}
149
- */
150
- styleHas: function(property, lineIndex) {
151
- if (this._styleMap && !this.isWrapping) {
152
- var map = this._styleMap[lineIndex];
153
- if (map) {
154
- lineIndex = map.line;
155
- }
156
- }
157
- return fabric.Text.prototype.styleHas.call(this, property, lineIndex);
158
- },
159
-
160
- /**
161
- * Returns true if object has no styling or no styling in a line
162
- * @param {Number} lineIndex , lineIndex is on wrapped lines.
163
- * @return {Boolean}
164
- */
165
- isEmptyStyles: function(lineIndex) {
166
- if (!this.styles) {
167
- return true;
168
- }
169
- var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,
170
- map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];
171
- if (map) {
172
- lineIndex = map.line;
173
- offset = map.offset;
174
- }
175
- if (mapNextLine) {
176
- nextLineIndex = mapNextLine.line;
177
- shouldLimit = nextLineIndex === lineIndex;
178
- nextOffset = mapNextLine.offset;
179
- }
180
- obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };
181
- for (var p1 in obj) {
182
- for (var p2 in obj[p1]) {
183
- if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {
184
- // eslint-disable-next-line no-unused-vars
185
- for (var p3 in obj[p1][p2]) {
186
- return false;
187
- }
188
- }
189
- }
190
- }
191
- return true;
192
- },
193
-
194
- /**
195
- * @param {Number} lineIndex
196
- * @param {Number} charIndex
197
- * @private
198
- */
199
- _getStyleDeclaration: function(lineIndex, charIndex) {
200
- if (this._styleMap && !this.isWrapping) {
201
- var map = this._styleMap[lineIndex];
202
- if (!map) {
203
- return null;
204
- }
205
- lineIndex = map.line;
206
- charIndex = map.offset + charIndex;
207
- }
208
- return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);
209
- },
210
-
211
- /**
212
- * @param {Number} lineIndex
213
- * @param {Number} charIndex
214
- * @param {Object} style
215
- * @private
216
- */
217
- _setStyleDeclaration: function(lineIndex, charIndex, style) {
218
- var map = this._styleMap[lineIndex];
219
- lineIndex = map.line;
220
- charIndex = map.offset + charIndex;
221
-
222
- this.styles[lineIndex][charIndex] = style;
223
- },
224
-
225
- /**
226
- * @param {Number} lineIndex
227
- * @param {Number} charIndex
228
- * @private
229
- */
230
- _deleteStyleDeclaration: function(lineIndex, charIndex) {
231
- var map = this._styleMap[lineIndex];
232
- lineIndex = map.line;
233
- charIndex = map.offset + charIndex;
234
- delete this.styles[lineIndex][charIndex];
235
- },
236
-
237
- /**
238
- * probably broken need a fix
239
- * Returns the real style line that correspond to the wrapped lineIndex line
240
- * Used just to verify if the line does exist or not.
241
- * @param {Number} lineIndex
242
- * @returns {Boolean} if the line exists or not
243
- * @private
244
- */
245
- _getLineStyle: function(lineIndex) {
246
- var map = this._styleMap[lineIndex];
247
- return !!this.styles[map.line];
248
- },
249
-
250
- /**
251
- * Set the line style to an empty object so that is initialized
252
- * @param {Number} lineIndex
253
- * @param {Object} style
254
- * @private
255
- */
256
- _setLineStyle: function(lineIndex) {
257
- var map = this._styleMap[lineIndex];
258
- this.styles[map.line] = {};
259
- },
260
-
261
- /**
262
- * Wraps text using the 'width' property of Textbox. First this function
263
- * splits text on newlines, so we preserve newlines entered by the user.
264
- * Then it wraps each line using the width of the Textbox by calling
265
- * _wrapLine().
266
- * @param {Array} lines The string array of text that is split into lines
267
- * @param {Number} desiredWidth width you want to wrap to
268
- * @returns {Array} Array of lines
269
- */
270
- _wrapText: function(lines, desiredWidth) {
271
- var wrapped = [], i;
272
- this.isWrapping = true;
273
- for (i = 0; i < lines.length; i++) {
274
- wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));
275
- }
276
- this.isWrapping = false;
277
- return wrapped;
278
- },
279
-
280
- /**
281
- * Helper function to measure a string of text, given its lineIndex and charIndex offset
282
- * it gets called when charBounds are not available yet.
283
- * @param {CanvasRenderingContext2D} ctx
284
- * @param {String} text
285
- * @param {number} lineIndex
286
- * @param {number} charOffset
287
- * @returns {number}
288
- * @private
289
- */
290
- _measureWord: function(word, lineIndex, charOffset) {
291
- var width = 0, prevGrapheme, skipLeft = true;
292
- charOffset = charOffset || 0;
293
- for (var i = 0, len = word.length; i < len; i++) {
294
- var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);
295
- width += box.kernedWidth;
296
- prevGrapheme = word[i];
297
- }
298
- return width;
299
- },
300
-
301
- /**
302
- * Wraps a line of text using the width of the Textbox and a context.
303
- * @param {Array} line The grapheme array that represent the line
304
- * @param {Number} lineIndex
305
- * @param {Number} desiredWidth width you want to wrap the line to
306
- * @param {Number} reservedSpace space to remove from wrapping for custom functionalities
307
- * @returns {Array} Array of line(s) into which the given text is wrapped
308
- * to.
309
- */
310
- _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {
311
- var lineWidth = 0,
312
- splitByGrapheme = this.splitByGrapheme,
313
- graphemeLines = [],
314
- line = [],
315
- // spaces in different languages?
316
- words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),
317
- word = '',
318
- offset = 0,
319
- infix = splitByGrapheme ? '' : ' ',
320
- wordWidth = 0,
321
- infixWidth = 0,
322
- largestWordWidth = 0,
323
- lineJustStarted = true,
324
- additionalSpace = this._getWidthOfCharSpacing(),
325
- reservedSpace = reservedSpace || 0;
326
- // fix a difference between split and graphemeSplit
327
- if (words.length === 0) {
328
- words.push([]);
329
- }
330
- desiredWidth -= reservedSpace;
331
- for (var i = 0; i < words.length; i++) {
332
- // if using splitByGrapheme words are already in graphemes.
333
- word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);
334
- wordWidth = this._measureWord(word, lineIndex, offset);
335
- offset += word.length;
336
-
337
- lineWidth += infixWidth + wordWidth - additionalSpace;
338
- if (lineWidth > desiredWidth && !lineJustStarted) {
339
- graphemeLines.push(line);
340
- line = [];
341
- lineWidth = wordWidth;
342
- lineJustStarted = true;
343
- }
344
- else {
345
- lineWidth += additionalSpace;
346
- }
347
-
348
- if (!lineJustStarted && !splitByGrapheme) {
349
- line.push(infix);
350
- }
351
- line = line.concat(word);
352
-
353
- infixWidth = splitByGrapheme ? 0 : this._measureWord([infix], lineIndex, offset);
354
- offset++;
355
- lineJustStarted = false;
356
- // keep track of largest word
357
- if (wordWidth > largestWordWidth) {
358
- largestWordWidth = wordWidth;
359
- }
360
- }
361
-
362
- i && graphemeLines.push(line);
363
-
364
- if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {
365
- this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;
366
- }
367
- return graphemeLines;
368
- },
369
-
370
- /**
371
- * Detect if the text line is ended with an hard break
372
- * text and itext do not have wrapping, return false
373
- * @param {Number} lineIndex text to split
374
- * @return {Boolean}
375
- */
376
- isEndOfWrapping: function(lineIndex) {
377
- if (!this._styleMap[lineIndex + 1]) {
378
- // is last line, return true;
379
- return true;
380
- }
381
- if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {
382
- // this is last line before a line break, return true;
383
- return true;
384
- }
385
- return false;
386
- },
387
-
388
- /**
389
- * Detect if a line has a linebreak and so we need to account for it when moving
390
- * and counting style.
391
- * @return Number
392
- */
393
- missingNewlineOffset: function(lineIndex) {
394
- if (this.splitByGrapheme) {
395
- return this.isEndOfWrapping(lineIndex) ? 1 : 0;
396
- }
397
- return 1;
398
- },
399
-
400
- /**
401
- * Gets lines of text to render in the Textbox. This function calculates
402
- * text wrapping on the fly every time it is called.
403
- * @param {String} text text to split
404
- * @returns {Array} Array of lines in the Textbox.
405
- * @override
406
- */
407
- _splitTextIntoLines: function(text) {
408
- var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),
409
- graphemeLines = this._wrapText(newText.lines, this.width),
410
- lines = new Array(graphemeLines.length);
411
- for (var i = 0; i < graphemeLines.length; i++) {
412
- lines[i] = graphemeLines[i].join('');
413
- }
414
- newText.lines = lines;
415
- newText.graphemeLines = graphemeLines;
416
- return newText;
417
- },
418
-
419
- getMinWidth: function() {
420
- return Math.max(this.minWidth, this.dynamicMinWidth);
421
- },
422
-
423
- _removeExtraneousStyles: function() {
424
- var linesToKeep = {};
425
- for (var prop in this._styleMap) {
426
- if (this._textLines[prop]) {
427
- linesToKeep[this._styleMap[prop].line] = 1;
428
- }
429
- }
430
- for (var prop in this.styles) {
431
- if (!linesToKeep[prop]) {
432
- delete this.styles[prop];
433
- }
434
- }
435
- },
436
-
437
- /**
438
- * Returns object representation of an instance
439
- * @method toObject
440
- * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
441
- * @return {Object} object representation of an instance
442
- */
443
- toObject: function(propertiesToInclude) {
444
- return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));
445
- }
446
- });
447
-
448
- /**
449
- * Returns fabric.Textbox instance from an object representation
450
- * @static
451
- * @memberOf fabric.Textbox
452
- * @param {Object} object Object to create an instance from
453
- * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created
454
- */
455
- fabric.Textbox.fromObject = function(object, callback) {
456
- var styles = fabric.util.stylesFromArray(object.styles, object.text);
457
- //copy object to prevent mutation
458
- var objCopy = Object.assign({}, object, { styles: styles });
459
- return fabric.Object._fromObject('Textbox', objCopy, callback, 'text');
460
- };
461
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,93 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { });
6
-
7
- if (fabric.Triangle) {
8
- fabric.warn('fabric.Triangle is already defined');
9
- return;
10
- }
11
-
12
- /**
13
- * Triangle class
14
- * @class fabric.Triangle
15
- * @extends fabric.Object
16
- * @return {fabric.Triangle} thisArg
17
- * @see {@link fabric.Triangle#initialize} for constructor definition
18
- */
19
- fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {
20
-
21
- /**
22
- * Type of an object
23
- * @type String
24
- * @default
25
- */
26
- type: 'triangle',
27
-
28
- /**
29
- * Width is set to 100 to compensate the old initialize code that was setting it to 100
30
- * @type Number
31
- * @default
32
- */
33
- width: 100,
34
-
35
- /**
36
- * Height is set to 100 to compensate the old initialize code that was setting it to 100
37
- * @type Number
38
- * @default
39
- */
40
- height: 100,
41
-
42
- /**
43
- * @private
44
- * @param {CanvasRenderingContext2D} ctx Context to render on
45
- */
46
- _render: function(ctx) {
47
- var widthBy2 = this.width / 2,
48
- heightBy2 = this.height / 2;
49
-
50
- ctx.beginPath();
51
- ctx.moveTo(-widthBy2, heightBy2);
52
- ctx.lineTo(0, -heightBy2);
53
- ctx.lineTo(widthBy2, heightBy2);
54
- ctx.closePath();
55
-
56
- this._renderPaintInOrder(ctx);
57
- },
58
-
59
- /* _TO_SVG_START_ */
60
- /**
61
- * Returns svg representation of an instance
62
- * @return {Array} an array of strings with the specific svg representation
63
- * of the instance
64
- */
65
- _toSVG: function() {
66
- var widthBy2 = this.width / 2,
67
- heightBy2 = this.height / 2,
68
- points = [
69
- -widthBy2 + ' ' + heightBy2,
70
- '0 ' + -heightBy2,
71
- widthBy2 + ' ' + heightBy2
72
- ].join(',');
73
- return [
74
- '<polygon ', 'COMMON_PARTS',
75
- 'points="', points,
76
- '" />'
77
- ];
78
- },
79
- /* _TO_SVG_END_ */
80
- });
81
-
82
- /**
83
- * Returns {@link fabric.Triangle} instance from an object representation
84
- * @static
85
- * @memberOf fabric.Triangle
86
- * @param {Object} object Object to create an instance from
87
- * @param {function} [callback] invoked with new instance as first argument
88
- */
89
- fabric.Triangle.fromObject = function(object, callback) {
90
- return fabric.Object._fromObject('Triangle', object, callback);
91
- };
92
-
93
- })(typeof exports !== 'undefined' ? exports : this);