fabric 6.0.2 → 6.2.0

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 (207) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/index.js +250 -101
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/dist/index.min.mjs +1 -1
  7. package/dist/index.min.mjs.map +1 -1
  8. package/dist/index.mjs +250 -101
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.node.cjs +250 -101
  11. package/dist/index.node.cjs.map +1 -1
  12. package/dist/index.node.mjs +250 -101
  13. package/dist/index.node.mjs.map +1 -1
  14. package/dist/package.json.min.mjs +1 -1
  15. package/dist/package.json.mjs +1 -1
  16. package/dist/src/ClassRegistry.d.ts +1 -0
  17. package/dist/src/ClassRegistry.d.ts.map +1 -1
  18. package/dist/src/ClassRegistry.min.mjs +1 -1
  19. package/dist/src/ClassRegistry.min.mjs.map +1 -1
  20. package/dist/src/ClassRegistry.mjs +3 -0
  21. package/dist/src/ClassRegistry.mjs.map +1 -1
  22. package/dist/src/Collection.d.ts +3 -3
  23. package/dist/src/Collection.d.ts.map +1 -1
  24. package/dist/src/EventTypeDefs.d.ts +19 -11
  25. package/dist/src/EventTypeDefs.d.ts.map +1 -1
  26. package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
  27. package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
  28. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
  29. package/dist/src/LayoutManager/LayoutManager.mjs +2 -2
  30. package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
  31. package/dist/src/Shadow.d.ts.map +1 -1
  32. package/dist/src/Shadow.min.mjs +1 -1
  33. package/dist/src/Shadow.min.mjs.map +1 -1
  34. package/dist/src/Shadow.mjs +1 -5
  35. package/dist/src/Shadow.mjs.map +1 -1
  36. package/dist/src/canvas/DOMManagers/util.d.ts.map +1 -1
  37. package/dist/src/canvas/DOMManagers/util.min.mjs +1 -1
  38. package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
  39. package/dist/src/canvas/DOMManagers/util.mjs +9 -15
  40. package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
  41. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  42. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  43. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  44. package/dist/src/canvas/SelectableCanvas.mjs +3 -0
  45. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  46. package/dist/src/canvas/StaticCanvas.d.ts +20 -24
  47. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  48. package/dist/src/color/util.d.ts.map +1 -1
  49. package/dist/src/constants.d.ts +1 -0
  50. package/dist/src/constants.d.ts.map +1 -1
  51. package/dist/src/constants.min.mjs +1 -1
  52. package/dist/src/constants.min.mjs.map +1 -1
  53. package/dist/src/constants.mjs +2 -1
  54. package/dist/src/constants.mjs.map +1 -1
  55. package/dist/src/controls/controlRendering.d.ts +1 -1
  56. package/dist/src/controls/controlRendering.d.ts.map +1 -1
  57. package/dist/src/controls/controlRendering.min.mjs.map +1 -1
  58. package/dist/src/controls/controlRendering.mjs.map +1 -1
  59. package/dist/src/controls/fireEvent.d.ts +2 -2
  60. package/dist/src/controls/fireEvent.d.ts.map +1 -1
  61. package/dist/src/controls/fireEvent.min.mjs.map +1 -1
  62. package/dist/src/controls/fireEvent.mjs.map +1 -1
  63. package/dist/src/controls/index.d.ts +1 -0
  64. package/dist/src/controls/index.d.ts.map +1 -1
  65. package/dist/src/controls/index.min.mjs +1 -1
  66. package/dist/src/controls/index.mjs +1 -0
  67. package/dist/src/controls/index.mjs.map +1 -1
  68. package/dist/src/controls/pathControl.d.ts +12 -0
  69. package/dist/src/controls/pathControl.d.ts.map +1 -0
  70. package/dist/src/controls/pathControl.min.mjs +2 -0
  71. package/dist/src/controls/pathControl.min.mjs.map +1 -0
  72. package/dist/src/controls/pathControl.mjs +156 -0
  73. package/dist/src/controls/pathControl.mjs.map +1 -0
  74. package/dist/src/controls/polyControl.d.ts.map +1 -1
  75. package/dist/src/controls/polyControl.min.mjs +1 -1
  76. package/dist/src/controls/polyControl.min.mjs.map +1 -1
  77. package/dist/src/controls/polyControl.mjs +1 -9
  78. package/dist/src/controls/polyControl.mjs.map +1 -1
  79. package/dist/src/controls/util.d.ts +1 -1
  80. package/dist/src/controls/wrapWithFireEvent.d.ts +5 -3
  81. package/dist/src/controls/wrapWithFireEvent.d.ts.map +1 -1
  82. package/dist/src/controls/wrapWithFireEvent.min.mjs +1 -1
  83. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
  84. package/dist/src/controls/wrapWithFireEvent.mjs +7 -4
  85. package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
  86. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +1 -1
  87. package/dist/src/env/index.d.ts.map +1 -1
  88. package/dist/src/env/node.d.ts.map +1 -1
  89. package/dist/src/filters/BaseFilter.d.ts.map +1 -1
  90. package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
  91. package/dist/src/filters/BaseFilter.mjs +0 -1
  92. package/dist/src/filters/BaseFilter.mjs.map +1 -1
  93. package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
  94. package/dist/src/filters/ColorMatrixFilters.d.ts +8 -96
  95. package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
  96. package/dist/src/filters/Convolute.d.ts +2 -1
  97. package/dist/src/filters/Convolute.d.ts.map +1 -1
  98. package/dist/src/filters/shaders/baseFilter.d.ts +1 -1
  99. package/dist/src/filters/shaders/baseFilter.d.ts.map +1 -1
  100. package/dist/src/filters/utils.d.ts.map +1 -1
  101. package/dist/src/parser/normalizeAttr.d.ts.map +1 -1
  102. package/dist/src/parser/parseStyleString.d.ts.map +1 -1
  103. package/dist/src/parser/parseStyleString.min.mjs +1 -1
  104. package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
  105. package/dist/src/parser/parseStyleString.mjs +1 -0
  106. package/dist/src/parser/parseStyleString.mjs.map +1 -1
  107. package/dist/src/parser/parseUseDirectives.d.ts.map +1 -1
  108. package/dist/src/parser/parseUseDirectives.min.mjs +1 -1
  109. package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
  110. package/dist/src/parser/parseUseDirectives.mjs +61 -43
  111. package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
  112. package/dist/src/shapes/Group.d.ts +20 -20
  113. package/dist/src/shapes/Group.d.ts.map +1 -1
  114. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
  115. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  116. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  117. package/dist/src/shapes/IText/ITextBehavior.mjs +0 -1
  118. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  119. package/dist/src/shapes/Image.d.ts.map +1 -1
  120. package/dist/src/shapes/Image.min.mjs.map +1 -1
  121. package/dist/src/shapes/Image.mjs +0 -2
  122. package/dist/src/shapes/Image.mjs.map +1 -1
  123. package/dist/src/shapes/Path.d.ts +9 -9
  124. package/dist/src/shapes/Path.d.ts.map +1 -1
  125. package/dist/src/shapes/Polyline.d.ts +1 -1
  126. package/dist/src/shapes/Rect.d.ts +1 -1
  127. package/dist/src/shapes/Text/Text.d.ts +1 -1
  128. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  129. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  130. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  131. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -2
  132. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  133. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  134. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  135. package/dist/src/shapes/Textbox.mjs +0 -2
  136. package/dist/src/shapes/Textbox.mjs.map +1 -1
  137. package/dist/src/util/applyMixins.d.ts.map +1 -1
  138. package/dist/src/util/dom_misc.d.ts.map +1 -1
  139. package/dist/src/util/dom_misc.min.mjs +1 -1
  140. package/dist/src/util/dom_misc.min.mjs.map +1 -1
  141. package/dist/src/util/dom_misc.mjs +7 -9
  142. package/dist/src/util/dom_misc.mjs.map +1 -1
  143. package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
  144. package/dist/src/util/internals/console.d.ts +1 -1
  145. package/dist/src/util/internals/findRight.d.ts.map +1 -1
  146. package/dist/src/util/internals/removeFromArray.d.ts.map +1 -1
  147. package/dist/src/util/misc/dom.d.ts.map +1 -1
  148. package/dist/src/util/misc/groupSVGElements.d.ts.map +1 -1
  149. package/dist/src/util/misc/matrix.d.ts.map +1 -1
  150. package/dist/src/util/misc/objectEnlive.d.ts +1 -1
  151. package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
  152. package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
  153. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  154. package/dist/src/util/misc/objectEnlive.mjs +7 -11
  155. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  156. package/dist/src/util/misc/objectTransforms.d.ts.map +1 -1
  157. package/dist/src/util/misc/pick.d.ts.map +1 -1
  158. package/dist/src/util/misc/planeChange.d.ts.map +1 -1
  159. package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
  160. package/dist/src/util/misc/textStyles.d.ts.map +1 -1
  161. package/dist/src/util/path/index.d.ts +0 -1
  162. package/dist/src/util/path/index.d.ts.map +1 -1
  163. package/dist/src/util/path/index.min.mjs +1 -1
  164. package/dist/src/util/path/index.min.mjs.map +1 -1
  165. package/dist/src/util/path/index.mjs +1 -2
  166. package/dist/src/util/path/index.mjs.map +1 -1
  167. package/dist/src/util/path/typedefs.d.ts +1 -0
  168. package/dist/src/util/path/typedefs.d.ts.map +1 -1
  169. package/dist/src/util/typeAssertions.d.ts +2 -2
  170. package/dist/src/util/typeAssertions.d.ts.map +1 -1
  171. package/lib/aligning_guidelines.js +76 -1
  172. package/lib/centering_guidelines.js +3 -1
  173. package/package.json +3 -3
  174. package/src/ClassRegistry.spec.ts +39 -0
  175. package/src/ClassRegistry.ts +4 -0
  176. package/src/EventTypeDefs.ts +22 -10
  177. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +1 -0
  178. package/src/LayoutManager/LayoutManager.spec.ts +1 -0
  179. package/src/LayoutManager/LayoutManager.ts +2 -0
  180. package/src/Shadow.ts +1 -6
  181. package/src/canvas/DOMManagers/util.ts +11 -15
  182. package/src/canvas/SelectableCanvas.spec.ts +18 -0
  183. package/src/canvas/SelectableCanvas.ts +3 -0
  184. package/src/constants.ts +1 -0
  185. package/src/controls/controlRendering.ts +4 -2
  186. package/src/controls/fireEvent.ts +2 -2
  187. package/src/controls/index.ts +1 -0
  188. package/src/controls/pathControl.spec.ts +75 -0
  189. package/src/controls/pathControl.ts +293 -0
  190. package/src/controls/polyControl.ts +1 -1
  191. package/src/controls/wrapWithFireEvent.ts +14 -5
  192. package/src/filters/BaseFilter.ts +1 -2
  193. package/src/parser/parseStyleString.ts +1 -0
  194. package/src/parser/parseUseDirectives.test.ts +113 -0
  195. package/src/parser/parseUseDirectives.ts +64 -58
  196. package/src/shapes/IText/ITextBehavior.ts +4 -2
  197. package/src/shapes/Image.ts +0 -2
  198. package/src/shapes/Text/TextSVGExportMixin.ts +0 -2
  199. package/src/shapes/Textbox.ts +0 -2
  200. package/src/util/dom_misc.ts +17 -10
  201. package/src/util/misc/objectEnlive.spec.ts +68 -0
  202. package/src/util/misc/objectEnlive.ts +7 -13
  203. package/src/util/path/__snapshots__/index.spec.ts.snap +327 -0
  204. package/src/util/path/index.spec.ts +13 -2
  205. package/src/util/path/index.ts +2 -4
  206. package/src/util/path/typedefs.ts +2 -0
  207. package/.gitmodules +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"applyMixins.d.ts","sourceRoot":"","sources":["../../../src/util/applyMixins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,EACtE,WAAW,EAAE,CAAC,EACd,YAAY,EAAE,CAAC,EAAE;eAasB,aAAa,CAAC,GAAG,CAAC,CAAC;EAC3D"}
1
+ {"version":3,"file":"applyMixins.d.ts","sourceRoot":"","sources":["../../../src/util/applyMixins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,EACtE,WAAW,EAAE,CAAC,EACd,YAAY,EAAE,CAAC,EAAE,GAaK,CAAC,GAAG;IAAE,SAAS,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,CAC7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom_misc.d.ts","sourceRoot":"","sources":["../../../src/util/dom_misc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;;;EAoC3D;AAED,eAAO,MAAM,sBAAsB,OAAQ,WAAW,aAC5B,CAAC;AAE3B,eAAO,MAAM,oBAAoB,OAAQ,WAAW,wCACb,CAAC"}
1
+ {"version":3,"file":"dom_misc.d.ts","sourceRoot":"","sources":["../../../src/util/dom_misc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;;;EA2C3D;AAED,eAAO,MAAM,sBAAsB,OAAQ,WAAW,aAC5B,CAAC;AAE3B,eAAO,MAAM,oBAAoB,OAAQ,WAAW,wCACb,CAAC"}
@@ -1,2 +1,2 @@
1
- function o(o){const l=o&&e(o);let t=0,n=0;if(!o||!l)return{left:t,top:n};const r=l.documentElement,c=l.body||{scrollLeft:0,scrollTop:0};for(;o&&(o.parentNode||o.host)&&((o=o.parentNode||o.host)===l?(t=c.scrollLeft||r.scrollLeft||0,n=c.scrollTop||r.scrollTop||0):(t+=o.scrollLeft||0,n+=o.scrollTop||0),1!==o.nodeType||"fixed"!==o.style.position););return{left:t,top:n}}const e=o=>o.ownerDocument||null,l=o=>{var e;return(null===(e=o.ownerDocument)||void 0===e?void 0:e.defaultView)||null};export{e as getDocumentFromElement,o as getScrollLeftTop,l as getWindowFromElement};
1
+ function o(o){const l=o&&e(o);let t=0,n=0;if(!o||!l)return{left:t,top:n};let r=o;const c=l.documentElement,s=l.body||{scrollLeft:0,scrollTop:0};for(;r&&(r.parentNode||r.host)&&(r=r.parentNode||r.host,r===l?(t=s.scrollLeft||c.scrollLeft||0,n=s.scrollTop||c.scrollTop||0):(t+=r.scrollLeft||0,n+=r.scrollTop||0),1!==r.nodeType||"fixed"!==r.style.position););return{left:t,top:n}}const e=o=>o.ownerDocument||null,l=o=>{var e;return(null===(e=o.ownerDocument)||void 0===e?void 0:e.defaultView)||null};export{e as getDocumentFromElement,o as getScrollLeftTop,l as getWindowFromElement};
2
2
  //# sourceMappingURL=dom_misc.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom_misc.min.mjs","sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n const doc = element && getDocumentFromElement(element);\n let left = 0,\n top = 0;\n if (!element || !doc) {\n return { left, top };\n }\n\n const docElement = doc.documentElement,\n body = doc.body || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n while (element && (element.parentNode || element.host)) {\n // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n // @ts-expect-error because element is typed as HTMLElement but it can go up to document\n if (element === doc) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += element!.scrollLeft || 0;\n top += element!.scrollTop || 0;\n }\n\n if (element!.nodeType === 1 && element!.style.position === 'fixed') {\n break;\n }\n }\n\n return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n el.ownerDocument?.defaultView || null;\n"],"names":["getScrollLeftTop","element","doc","getDocumentFromElement","left","top","docElement","documentElement","body","scrollLeft","scrollTop","parentNode","host","nodeType","style","position","el","ownerDocument","getWindowFromElement","_el$ownerDocument","defaultView"],"mappings":"AAKO,SAASA,EAAiBC,GAC/B,MAAMC,EAAMD,GAAWE,EAAuBF,GAC9C,IAAIG,EAAO,EACTC,EAAM,EACR,IAAKJ,IAAYC,EACf,MAAO,CAAEE,OAAMC,OAGjB,MAAMC,EAAaJ,EAAIK,gBACrBC,EAAON,EAAIM,MAAQ,CACjBC,WAAY,EACZC,UAAW,GAOf,KAAOT,IAAYA,EAAQU,YAAcV,EAAQW,SAE/CX,EAAUA,EAAQU,YAAcV,EAAQW,QAExBV,GACdE,EAAOI,EAAKC,YAAcH,EAAWG,YAAc,EACnDJ,EAAMG,EAAKE,WAAaJ,EAAWI,WAAa,IAEhDN,GAAQH,EAASQ,YAAc,EAC/BJ,GAAOJ,EAASS,WAAa,GAGL,IAAtBT,EAASY,UAA8C,UAA5BZ,EAASa,MAAMC,YAKhD,MAAO,CAAEX,OAAMC,MACjB,CAEO,MAAMF,EAA0Ba,GACrCA,EAAGC,eAAiB,KAETC,EAAwBF,IAAe,IAAAG,EAAA,OAClCA,QAAhBA,EAAAH,EAAGC,qBAAHE,IAAgBA,OAAhBA,EAAAA,EAAkBC,cAAe,IAAI"}
1
+ {"version":3,"file":"dom_misc.min.mjs","sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n const doc = element && getDocumentFromElement(element);\n let left = 0,\n top = 0;\n if (!element || !doc) {\n return { left, top };\n }\n let elementLoop: HTMLElement | Document | ShadowRoot = element;\n const docElement = doc.documentElement,\n body = doc.body || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (\n elementLoop &&\n (elementLoop.parentNode || (elementLoop as unknown as ShadowRoot).host)\n ) {\n elementLoop = (elementLoop.parentNode ||\n (elementLoop as unknown as ShadowRoot).host) as\n | HTMLElement\n | Document\n | ShadowRoot;\n if (elementLoop === doc) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += (elementLoop as HTMLElement).scrollLeft || 0;\n top += (elementLoop as HTMLElement).scrollTop || 0;\n }\n\n if (\n elementLoop.nodeType === 1 &&\n (elementLoop as HTMLElement).style.position === 'fixed'\n ) {\n break;\n }\n }\n\n return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n el.ownerDocument?.defaultView || null;\n"],"names":["getScrollLeftTop","element","doc","getDocumentFromElement","left","top","elementLoop","docElement","documentElement","body","scrollLeft","scrollTop","parentNode","host","nodeType","style","position","el","ownerDocument","getWindowFromElement","_el$ownerDocument","defaultView"],"mappings":"AAKO,SAASA,EAAiBC,GAC/B,MAAMC,EAAMD,GAAWE,EAAuBF,GAC9C,IAAIG,EAAO,EACTC,EAAM,EACR,IAAKJ,IAAYC,EACf,MAAO,CAAEE,OAAMC,OAEjB,IAAIC,EAAmDL,EACvD,MAAMM,EAAaL,EAAIM,gBACrBC,EAAOP,EAAIO,MAAQ,CACjBC,WAAY,EACZC,UAAW,GAMf,KACEL,IACCA,EAAYM,YAAeN,EAAsCO,QAElEP,EAAeA,EAAYM,YACxBN,EAAsCO,KAIrCP,IAAgBJ,GAClBE,EAAOK,EAAKC,YAAcH,EAAWG,YAAc,EACnDL,EAAMI,EAAKE,WAAaJ,EAAWI,WAAa,IAEhDP,GAASE,EAA4BI,YAAc,EACnDL,GAAQC,EAA4BK,WAAa,GAIxB,IAAzBL,EAAYQ,UACoC,UAA/CR,EAA4BS,MAAMC,YAMvC,MAAO,CAAEZ,OAAMC,MACjB,CAEO,MAAMF,EAA0Bc,GACrCA,EAAGC,eAAiB,KAETC,EAAwBF,IAAe,IAAAG,EAAA,OAClCA,QAAhBA,EAAAH,EAAGC,qBAAHE,IAAgBA,OAAhBA,EAAAA,EAAkBC,cAAe,IAAI"}
@@ -13,6 +13,7 @@ function getScrollLeftTop(element) {
13
13
  top
14
14
  };
15
15
  }
16
+ let elementLoop = element;
16
17
  const docElement = doc.documentElement,
17
18
  body = doc.body || {
18
19
  scrollLeft: 0,
@@ -22,19 +23,16 @@ function getScrollLeftTop(element) {
22
23
  // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,
23
24
  // but the .parentNode of a root ShadowDOM node will always be null, instead
24
25
  // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938
25
- // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM
26
- while (element && (element.parentNode || element.host)) {
27
- // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM
28
- element = element.parentNode || element.host;
29
- // @ts-expect-error because element is typed as HTMLElement but it can go up to document
30
- if (element === doc) {
26
+ while (elementLoop && (elementLoop.parentNode || elementLoop.host)) {
27
+ elementLoop = elementLoop.parentNode || elementLoop.host;
28
+ if (elementLoop === doc) {
31
29
  left = body.scrollLeft || docElement.scrollLeft || 0;
32
30
  top = body.scrollTop || docElement.scrollTop || 0;
33
31
  } else {
34
- left += element.scrollLeft || 0;
35
- top += element.scrollTop || 0;
32
+ left += elementLoop.scrollLeft || 0;
33
+ top += elementLoop.scrollTop || 0;
36
34
  }
37
- if (element.nodeType === 1 && element.style.position === 'fixed') {
35
+ if (elementLoop.nodeType === 1 && elementLoop.style.position === 'fixed') {
38
36
  break;
39
37
  }
40
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dom_misc.mjs","sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n const doc = element && getDocumentFromElement(element);\n let left = 0,\n top = 0;\n if (!element || !doc) {\n return { left, top };\n }\n\n const docElement = doc.documentElement,\n body = doc.body || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n while (element && (element.parentNode || element.host)) {\n // @ts-expect-error Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n // @ts-expect-error because element is typed as HTMLElement but it can go up to document\n if (element === doc) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += element!.scrollLeft || 0;\n top += element!.scrollTop || 0;\n }\n\n if (element!.nodeType === 1 && element!.style.position === 'fixed') {\n break;\n }\n }\n\n return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n el.ownerDocument?.defaultView || null;\n"],"names":["getScrollLeftTop","element","doc","getDocumentFromElement","left","top","docElement","documentElement","body","scrollLeft","scrollTop","parentNode","host","nodeType","style","position","el","ownerDocument","getWindowFromElement","_el$ownerDocument","defaultView"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,CAACC,OAA2B,EAAE;AAC5D,EAAA,MAAMC,GAAG,GAAGD,OAAO,IAAIE,sBAAsB,CAACF,OAAO,CAAC,CAAA;EACtD,IAAIG,IAAI,GAAG,CAAC;AACVC,IAAAA,GAAG,GAAG,CAAC,CAAA;AACT,EAAA,IAAI,CAACJ,OAAO,IAAI,CAACC,GAAG,EAAE;IACpB,OAAO;MAAEE,IAAI;AAAEC,MAAAA,GAAAA;KAAK,CAAA;AACtB,GAAA;AAEA,EAAA,MAAMC,UAAU,GAAGJ,GAAG,CAACK,eAAe;AACpCC,IAAAA,IAAI,GAAGN,GAAG,CAACM,IAAI,IAAI;AACjBC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,SAAS,EAAE,CAAA;KACZ,CAAA;AACH;AACA;AACA;AACA;AACA;EACA,OAAOT,OAAO,KAAKA,OAAO,CAACU,UAAU,IAAIV,OAAO,CAACW,IAAI,CAAC,EAAE;AACtD;AACAX,IAAAA,OAAO,GAAGA,OAAO,CAACU,UAAU,IAAIV,OAAO,CAACW,IAAI,CAAA;AAC5C;IACA,IAAIX,OAAO,KAAKC,GAAG,EAAE;MACnBE,IAAI,GAAGI,IAAI,CAACC,UAAU,IAAIH,UAAU,CAACG,UAAU,IAAI,CAAC,CAAA;MACpDJ,GAAG,GAAGG,IAAI,CAACE,SAAS,IAAIJ,UAAU,CAACI,SAAS,IAAI,CAAC,CAAA;AACnD,KAAC,MAAM;AACLN,MAAAA,IAAI,IAAIH,OAAO,CAAEQ,UAAU,IAAI,CAAC,CAAA;AAChCJ,MAAAA,GAAG,IAAIJ,OAAO,CAAES,SAAS,IAAI,CAAC,CAAA;AAChC,KAAA;AAEA,IAAA,IAAIT,OAAO,CAAEY,QAAQ,KAAK,CAAC,IAAIZ,OAAO,CAAEa,KAAK,CAACC,QAAQ,KAAK,OAAO,EAAE;AAClE,MAAA,MAAA;AACF,KAAA;AACF,GAAA;EAEA,OAAO;IAAEX,IAAI;AAAEC,IAAAA,GAAAA;GAAK,CAAA;AACtB,CAAA;AAEO,MAAMF,sBAAsB,GAAIa,EAAe,IACpDA,EAAE,CAACC,aAAa,IAAI,KAAI;AAEnB,MAAMC,oBAAoB,GAAIF,EAAe,IAAA;AAAA,EAAA,IAAAG,iBAAA,CAAA;AAAA,EAAA,OAClD,CAAAA,CAAAA,iBAAA,GAAAH,EAAE,CAACC,aAAa,MAAAE,IAAAA,IAAAA,iBAAA,KAAhBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkBC,WAAW,KAAI,IAAI,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"dom_misc.mjs","sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n const doc = element && getDocumentFromElement(element);\n let left = 0,\n top = 0;\n if (!element || !doc) {\n return { left, top };\n }\n let elementLoop: HTMLElement | Document | ShadowRoot = element;\n const docElement = doc.documentElement,\n body = doc.body || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (\n elementLoop &&\n (elementLoop.parentNode || (elementLoop as unknown as ShadowRoot).host)\n ) {\n elementLoop = (elementLoop.parentNode ||\n (elementLoop as unknown as ShadowRoot).host) as\n | HTMLElement\n | Document\n | ShadowRoot;\n if (elementLoop === doc) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += (elementLoop as HTMLElement).scrollLeft || 0;\n top += (elementLoop as HTMLElement).scrollTop || 0;\n }\n\n if (\n elementLoop.nodeType === 1 &&\n (elementLoop as HTMLElement).style.position === 'fixed'\n ) {\n break;\n }\n }\n\n return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n el.ownerDocument?.defaultView || null;\n"],"names":["getScrollLeftTop","element","doc","getDocumentFromElement","left","top","elementLoop","docElement","documentElement","body","scrollLeft","scrollTop","parentNode","host","nodeType","style","position","el","ownerDocument","getWindowFromElement","_el$ownerDocument","defaultView"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,CAACC,OAA2B,EAAE;AAC5D,EAAA,MAAMC,GAAG,GAAGD,OAAO,IAAIE,sBAAsB,CAACF,OAAO,CAAC,CAAA;EACtD,IAAIG,IAAI,GAAG,CAAC;AACVC,IAAAA,GAAG,GAAG,CAAC,CAAA;AACT,EAAA,IAAI,CAACJ,OAAO,IAAI,CAACC,GAAG,EAAE;IACpB,OAAO;MAAEE,IAAI;AAAEC,MAAAA,GAAAA;KAAK,CAAA;AACtB,GAAA;EACA,IAAIC,WAAgD,GAAGL,OAAO,CAAA;AAC9D,EAAA,MAAMM,UAAU,GAAGL,GAAG,CAACM,eAAe;AACpCC,IAAAA,IAAI,GAAGP,GAAG,CAACO,IAAI,IAAI;AACjBC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,SAAS,EAAE,CAAA;KACZ,CAAA;AACH;AACA;AACA;AACA;EACA,OACEL,WAAW,KACVA,WAAW,CAACM,UAAU,IAAKN,WAAW,CAA2BO,IAAI,CAAC,EACvE;AACAP,IAAAA,WAAW,GAAIA,WAAW,CAACM,UAAU,IAClCN,WAAW,CAA2BO,IAG3B,CAAA;IACd,IAAIP,WAAW,KAAKJ,GAAG,EAAE;MACvBE,IAAI,GAAGK,IAAI,CAACC,UAAU,IAAIH,UAAU,CAACG,UAAU,IAAI,CAAC,CAAA;MACpDL,GAAG,GAAGI,IAAI,CAACE,SAAS,IAAIJ,UAAU,CAACI,SAAS,IAAI,CAAC,CAAA;AACnD,KAAC,MAAM;AACLP,MAAAA,IAAI,IAAKE,WAAW,CAAiBI,UAAU,IAAI,CAAC,CAAA;AACpDL,MAAAA,GAAG,IAAKC,WAAW,CAAiBK,SAAS,IAAI,CAAC,CAAA;AACpD,KAAA;AAEA,IAAA,IACEL,WAAW,CAACQ,QAAQ,KAAK,CAAC,IACzBR,WAAW,CAAiBS,KAAK,CAACC,QAAQ,KAAK,OAAO,EACvD;AACA,MAAA,MAAA;AACF,KAAA;AACF,GAAA;EAEA,OAAO;IAAEZ,IAAI;AAAEC,IAAAA,GAAAA;GAAK,CAAA;AACtB,CAAA;AAEO,MAAMF,sBAAsB,GAAIc,EAAe,IACpDA,EAAE,CAACC,aAAa,IAAI,KAAI;AAEnB,MAAMC,oBAAoB,GAAIF,EAAe,IAAA;AAAA,EAAA,IAAAG,iBAAA,CAAA;AAAA,EAAA,OAClD,CAAAA,CAAAA,iBAAA,GAAAH,EAAE,CAACC,aAAa,MAAAE,IAAAA,IAAAA,iBAAA,KAAhBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkBC,WAAW,KAAI,IAAI,CAAA;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"cloneDeep.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/cloneDeep.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,oCACc,CAAC"}
1
+ {"version":3,"file":"cloneDeep.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/cloneDeep.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,KAAG,CACpB,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const log: (severity: 'log' | 'warn' | 'error', ...optionalParams: any[]) => void;
1
+ export declare const log: (severity: "log" | "warn" | "error", ...optionalParams: any[]) => void;
2
2
  export declare class FabricError extends Error {
3
3
  constructor(message?: string, options?: ErrorOptions);
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findRight.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/findRight.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,+CAEI,MAAM,iBAAiB,OAAO,WAQ5D,CAAC"}
1
+ {"version":3,"file":"findRight.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/findRight.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,CAAC,SACvB,CAAC,EAAE,aACC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,WAQ5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"removeFromArray.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/removeFromArray.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,kCAM3B,CAAC"}
1
+ {"version":3,"file":"removeFromArray.d.ts","sourceRoot":"","sources":["../../../../src/util/internals/removeFromArray.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,KAAG,CAAC,EAM1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,iBAMtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAO,gBACW,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,WACpB,iBAAiB,KACxB,iBAMF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,aACV,iBAAiB,UACnB,WAAW,WACV,MAAM,WACkC,CAAC;AAEpD,eAAO,MAAM,YAAY,YACd,iBAAiB,GAAG,MAAM,gCAGpC,CAAC"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,iBAMtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAO,gBACW,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,WACpB,iBAAiB,KACxB,iBAMF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,aACV,iBAAiB,UACnB,WAAW,WACV,MAAM,WACkC,CAAC;AAEpD,eAAO,MAAM,YAAY,YACd,iBAAiB,GAAG,MAAM,KAClC,MAAM,IAAI,iBAEZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"groupSVGElements.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/groupSVGElements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,aACjB,YAAY,EAAE,YACd,QAAQ,UAAU,CAAC,sJAM9B,CAAC"}
1
+ {"version":3,"file":"groupSVGElements.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/groupSVGElements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,aACjB,YAAY,EAAE,YACd,OAAO,CAAC,UAAU,CAAC,sJAM9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/matrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GACnD,iBAAiB,GACjB,gBAAgB,CAAC;AAEnB,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,CAC5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,0BAC0B,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,MACtB,EAAE,4BAEU,OAAO,KACrB,KAAgD,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,eAAe,uBAO3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,iCAG5B,OAAO,WASJ,CAAC;AAEd;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,aAC7B,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,UACvC,OAAO,WAQM,CAAC;AAExB,eAAO,MAAM,iBAAiB,6BACD,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,WAAW,iBAAgB,eAevC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,MAAO,MAAM,uBAO9C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,KAAS,EAAE,GAAE,iBAAsB,EACrC,EAAE,CAAK,EAAE,CAAK,EAAE,GAAE,OAAO,CAAC,EAAE,CAAM,GACjC,MAAM,CAYR;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,MAAO,MAAM,MAAK,MAAM,WAOrD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,OAAO,WACP,CAAC;AAEpC,eAAO,MAAM,WAAW,UAAW,OAAO,YACN,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,cAAe,OAAO,WAOnD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,cAAe,OAAO,WAOnD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,oDAO9B,gBAAgB,WAYlB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,YAAa,kBAAkB,WAWxD,CAAC"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/matrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GACnD,iBAAiB,GACjB,gBAAgB,CAAC;AAEnB,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,CAC5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,YACW,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,MACtB,EAAE,KACF,MAAM,iBACM,OAAO,KACrB,KAAgD,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM,KAAG,MAO3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,MACjC,MAAM,KACN,MAAM,UACD,OAAO,KACd,MAQU,CAAC;AAEd;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,aAC7B,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,UACvC,OAAO,WAQM,CAAC;AAExB,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAC1B,OAAO,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,WAAW,MAAO,MAAM,KAAG,eAevC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,MAAO,MAAM,iBAAU,MAOxD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,KAAS,EAAE,GAAE,iBAAsB,EACrC,EAAE,CAAK,EAAE,CAAK,EAAE,GAAE,OAAO,CAAC,EAAE,CAAM,GACjC,MAAM,CAYR;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,MAAO,MAAM,MAAK,MAAM,KAAO,MAO5D,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,OAAO,WACP,CAAC;AAEpC,eAAO,MAAM,WAAW,UAAW,OAAO,YACN,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,cAAe,OAAO,KAAG,MAOtD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,cAAe,OAAO,KAAG,MAOtD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,oDAO9B,gBAAgB,WAYlB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,YAAa,kBAAkB,KAAG,MAW3D,CAAC"}
@@ -33,7 +33,7 @@ export type EnlivenObjectOptions = Abortable & {
33
33
  * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
34
34
  * @returns {Promise<FabricObject[]>}
35
35
  */
36
- export declare const enlivenObjects: <T extends Shadow | FabricObject<Partial<import("../../..").FabricObjectProps>, import("../../..").SerializedObjectProps, import("../../EventTypeDefs").ObjectEvents> | BaseFilter<string, object> | BaseFabricObject<Partial<import("../../shapes/Object/types/ObjectProps").ObjectProps>, import("../../..").SerializedObjectProps, import("../../EventTypeDefs").ObjectEvents> | TFiller>(objects: any[], { signal, reviver }?: EnlivenObjectOptions) => Promise<T[]>;
36
+ export declare const enlivenObjects: <T extends BaseFabricObject | FabricObject | BaseFilter<string> | Shadow | TFiller>(objects: any[], { signal, reviver }?: EnlivenObjectOptions) => Promise<T[]>;
37
37
  /**
38
38
  * Creates corresponding fabric instances residing in an object, e.g. `clipPath`
39
39
  * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,4BACqB,gBAAgB,8BA+B9C,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,wYAQhB,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,6MAGhB,GAAG,eACT,SAAS,eAkDnB,CAAC"}
1
+ {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,4BACqB,gBAAgB,8BA+B9C,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,WAEF,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,CAAC,yMAEiB,GAAG,eACT,SAAS,eA6CnB,CAAC"}
@@ -1,2 +1,2 @@
1
- import{noop as e}from"../../constants.min.mjs";import{createImage as n}from"./dom.min.mjs";import{classRegistry as t}from"../../ClassRegistry.min.mjs";import{SignalAbortedError as o,FabricError as r}from"../internals/console.min.mjs";const s=function(e){let{signal:t,crossOrigin:s=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(i,a){if(t&&t.aborted)return a(new o("loadImage"));const l=n();let c;t&&(c=function(e){l.src="",a(e)},t.addEventListener("abort",c,{once:!0}));const m=function(){l.onload=l.onerror=null,c&&(null==t||t.removeEventListener("abort",c)),i(l)};e?(l.onload=m,l.onerror=function(){c&&(null==t||t.removeEventListener("abort",c)),a(new r("Error loading ".concat(l.src)))},s&&(l.crossOrigin=s),l.src=e):m()}))},i=function(n){let{signal:o,reviver:r=e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((e,s)=>{const i=[];o&&o.addEventListener("abort",s,{once:!0}),Promise.all(n.map((e=>t.getClass(e.type).fromObject(e,{signal:o}).then((n=>(r(e,n),i.push(n),n)))))).then(e).catch((e=>{i.forEach((e=>{e.dispose&&e.dispose()})),s(e)})).finally((()=>{o&&o.removeEventListener("abort",s)}))}))},a=function(e){let{signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((o,r)=>{const s=[];n&&n.addEventListener("abort",r,{once:!0});const a=Object.values(e).map((e=>e?e.type?i([e],{signal:n}).then((e=>{let[n]=e;return s.push(n),n})):e.source?t.getClass("pattern").fromObject(e,{signal:n}).then((e=>(s.push(e),e))):e:e)),l=Object.keys(e);Promise.all(a).then((e=>e.reduce(((e,n,t)=>(e[l[t]]=n,e)),{}))).then(o).catch((e=>{s.forEach((e=>{e.dispose&&e.dispose()})),r(e)})).finally((()=>{n&&n.removeEventListener("abort",r)}))}))};export{a as enlivenObjectEnlivables,i as enlivenObjects,s as loadImage};
1
+ import{noop as e}from"../../constants.min.mjs";import{createImage as n}from"./dom.min.mjs";import{classRegistry as t}from"../../ClassRegistry.min.mjs";import{SignalAbortedError as o,FabricError as r}from"../internals/console.min.mjs";const s=function(e){let{signal:t,crossOrigin:s=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(i,a){if(t&&t.aborted)return a(new o("loadImage"));const l=n();let c;t&&(c=function(e){l.src="",a(e)},t.addEventListener("abort",c,{once:!0}));const m=function(){l.onload=l.onerror=null,c&&(null==t||t.removeEventListener("abort",c)),i(l)};e?(l.onload=m,l.onerror=function(){c&&(null==t||t.removeEventListener("abort",c)),a(new r("Error loading ".concat(l.src)))},s&&(l.crossOrigin=s),l.src=e):m()}))},i=function(n){let{signal:o,reviver:r=e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((e,s)=>{const i=[];o&&o.addEventListener("abort",s,{once:!0}),Promise.all(n.map((e=>t.getClass(e.type).fromObject(e,{signal:o}).then((n=>(r(e,n),i.push(n),n)))))).then(e).catch((e=>{i.forEach((e=>{e.dispose&&e.dispose()})),s(e)})).finally((()=>{o&&o.removeEventListener("abort",s)}))}))},a=function(e){let{signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((o,r)=>{const s=[];n&&n.addEventListener("abort",r,{once:!0});const a=Object.values(e).map((e=>e&&e.type&&t.has(e.type)?i([e],{signal:n}).then((e=>{let[n]=e;return s.push(n),n})):e)),l=Object.keys(e);Promise.all(a).then((e=>e.reduce(((e,n,t)=>(e[l[t]]=n,e)),{}))).then(o).catch((e=>{s.forEach((e=>{e.dispose&&e.dispose()})),r(e)})).finally((()=>{n&&n.removeEventListener("abort",r)}))}))};export{a as enlivenObjectEnlivables,i as enlivenObjects,s as loadImage};
2
2
  //# sourceMappingURL=objectEnlive.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.min.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { Pattern } from '../../Pattern';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {}\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n >(\n serializedObj: Record<string, any>,\n instance: T\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {}\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n })\n )\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>\n>(\n serializedObject: any,\n { signal }: Abortable = {}\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n // clipPath or shadow or gradient\n if (value.type) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n // pattern\n if (value.source) {\n return classRegistry\n .getClass<typeof Pattern>('pattern')\n .fromObject(value, { signal })\n .then((pattern: Pattern) => {\n instances.push(pattern);\n return pattern;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","concat","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","_ref","enlived","source","pattern","keys","reduce","acc","index"],"mappings":"0OA6BaA,MAAAA,EAAY,SACvBC,GAAW,IACXC,OAAEA,EAAMC,YAAEA,EAAc,MAAwBC,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAErD,IAAIG,SAA0B,SAAUC,EAASC,GAC/C,GAAIP,GAAUA,EAAOQ,QACnB,OAAOD,EAAO,IAAIE,EAAmB,cAEvC,MAAMC,EAAMC,IACZ,IAAIC,EACAZ,IACFY,EAAQ,SAAUC,GAChBH,EAAII,IAAM,GACVP,EAAOM,IAETb,EAAOe,iBAAiB,QAASH,EAAO,CAAEI,MAAM,KAElD,MAAMC,EAAO,WACXP,EAAIQ,OAASR,EAAIS,QAAU,KAC3BP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CN,EAAQI,IAELX,GAILW,EAAIQ,OAASD,EACbP,EAAIS,QAAU,WACZP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CL,EAAO,IAAIc,EAAWC,iBAAAA,OAAkBZ,EAAII,QAE9Cb,IAAgBS,EAAIT,YAAcA,GAClCS,EAAII,IAAMf,GATRkB,GAUJ,GAAE,EA8BSM,EAAiB,SAQ5BC,GAAc,IACdxB,OAAEA,EAAMyB,QAAEA,EAAUC,GAA4BxB,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAErD,IAAIG,SAAa,CAACC,EAASC,KACzB,MAAMoB,EAAiB,GACvB3B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAC3DX,QAAQuB,IACNJ,EAAQK,KAAKC,GACXC,EACGC,SAICF,EAAIG,MACLC,WAAWJ,EAAK,CAAE9B,WAClBmC,MAAMC,IACLX,EAAQK,EAAKM,GACbT,EAAUU,KAAKD,GACRA,QAIZD,KAAK7B,GACLgC,OAAOC,IAENZ,EAAUa,SAASC,IAChBA,EAA0BC,SACxBD,EAA0BC,SAAS,IAExCnC,EAAOgC,EAAM,IAEdI,SAAQ,KACP3C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ,EASSqC,EAA0B,SAGrCC,GAAqB,IACrB7C,OAAEA,GAAmBE,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAE1B,IAAIG,SAAW,CAACC,EAASC,KACvB,MAAMoB,EAAiD,GACvD3B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAE3D,MAAM8B,EAAWC,OAAOC,OAAOH,GAAkBhB,KAAKoB,GAC/CA,EAIDA,EAAMhB,KACDV,EAAgD,CAAC0B,GAAQ,CAC9DjD,WACCmC,MAAKe,IAAe,IAAbC,GAAQD,EAEhB,OADAvB,EAAUU,KAAKc,GACRA,CAAO,IAIdF,EAAMG,OACDrB,EACJC,SAAyB,WACzBE,WAAWe,EAAO,CAAEjD,WACpBmC,MAAMkB,IACL1B,EAAUU,KAAKgB,GACRA,KAGNJ,EArBEA,IAuBLK,EAAOP,OAAOO,KAAKT,GACzBxC,QAAQuB,IAAIkB,GACTX,MAAMgB,GACEA,EAAQI,QAAO,CAACC,EAAKf,EAAUgB,KACpCD,EAAIF,EAAKG,IAAUhB,EACZe,IACN,CAAE,KAENrB,KAAK7B,GACLgC,OAAOC,IAENZ,EAAUa,SAASC,IACjBA,EAASC,SAAWD,EAASC,SAAS,IAExCnC,EAAOgC,EAAM,IAEdI,SAAQ,KACP3C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ"}
1
+ {"version":3,"file":"objectEnlive.min.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {}\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n >(\n serializedObj: Record<string, any>,\n instance: T\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {}\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n })\n )\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>\n>(\n serializedObject: any,\n { signal }: Abortable = {}\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","concat","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":"0OA4BaA,MAAAA,EAAY,SACvBC,GAAW,IACXC,OAAEA,EAAMC,YAAEA,EAAc,MAAwBC,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAErD,IAAIG,SAA0B,SAAUC,EAASC,GAC/C,GAAIP,GAAUA,EAAOQ,QACnB,OAAOD,EAAO,IAAIE,EAAmB,cAEvC,MAAMC,EAAMC,IACZ,IAAIC,EACAZ,IACFY,EAAQ,SAAUC,GAChBH,EAAII,IAAM,GACVP,EAAOM,IAETb,EAAOe,iBAAiB,QAASH,EAAO,CAAEI,MAAM,KAElD,MAAMC,EAAO,WACXP,EAAIQ,OAASR,EAAIS,QAAU,KAC3BP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CN,EAAQI,IAELX,GAILW,EAAIQ,OAASD,EACbP,EAAIS,QAAU,WACZP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CL,EAAO,IAAIc,EAAWC,iBAAAA,OAAkBZ,EAAII,QAE9Cb,IAAgBS,EAAIT,YAAcA,GAClCS,EAAII,IAAMf,GATRkB,GAUJ,GAAE,EA8BSM,EAAiB,SAQ5BC,GAAc,IACdxB,OAAEA,EAAMyB,QAAEA,EAAUC,GAA4BxB,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAErD,IAAIG,SAAa,CAACC,EAASC,KACzB,MAAMoB,EAAiB,GACvB3B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAC3DX,QAAQuB,IACNJ,EAAQK,KAAKC,GACXC,EACGC,SAICF,EAAIG,MACLC,WAAWJ,EAAK,CAAE9B,WAClBmC,MAAMC,IACLX,EAAQK,EAAKM,GACbT,EAAUU,KAAKD,GACRA,QAIZD,KAAK7B,GACLgC,OAAOC,IAENZ,EAAUa,SAASC,IAChBA,EAA0BC,SACxBD,EAA0BC,SAAS,IAExCnC,EAAOgC,EAAM,IAEdI,SAAQ,KACP3C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ,EASSqC,EAA0B,SAGrCC,GAAqB,IACrB7C,OAAEA,GAAmBE,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,GAAE,OAE1B,IAAIG,SAAW,CAACC,EAASC,KACvB,MAAMoB,EAAiD,GACvD3B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAE3D,MAAM8B,EAAWC,OAAOC,OAAOH,GAAkBhB,KAAKoB,GAC/CA,GASDA,EAAMhB,MAAQF,EAAcmB,IAAID,EAAMhB,MACjCV,EAAgD,CAAC0B,GAAQ,CAC9DjD,WACCmC,MAAKgB,IAAe,IAAbC,GAAQD,EAEhB,OADAxB,EAAUU,KAAKe,GACRA,CAAO,IAbTH,IAkBLI,EAAON,OAAOM,KAAKR,GACzBxC,QAAQuB,IAAIkB,GACTX,MAAMiB,GACEA,EAAQE,QAAO,CAACC,EAAKd,EAAUe,KACpCD,EAAIF,EAAKG,IAAUf,EACZc,IACN,CAAE,KAENpB,KAAK7B,GACLgC,OAAOC,IAENZ,EAAUa,SAASC,IACjBA,EAASC,SAAWD,EAASC,SAAS,IAExCnC,EAAOgC,EAAM,IAEdI,SAAQ,KACP3C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ"}
@@ -106,8 +106,13 @@ const enlivenObjectEnlivables = function (serializedObject) {
106
106
  if (!value) {
107
107
  return value;
108
108
  }
109
- // clipPath or shadow or gradient
110
- if (value.type) {
109
+ /**
110
+ * clipPath or shadow or gradient or text on a path or a pattern,
111
+ * or the backgroundImage or overlayImage of canvas
112
+ * If we have a type and there is a classe registered for it, we enlive it.
113
+ * If there is no class registered for it we return the value as is
114
+ * */
115
+ if (value.type && classRegistry.has(value.type)) {
111
116
  return enlivenObjects([value], {
112
117
  signal
113
118
  }).then(_ref => {
@@ -116,15 +121,6 @@ const enlivenObjectEnlivables = function (serializedObject) {
116
121
  return enlived;
117
122
  });
118
123
  }
119
- // pattern
120
- if (value.source) {
121
- return classRegistry.getClass('pattern').fromObject(value, {
122
- signal
123
- }).then(pattern => {
124
- instances.push(pattern);
125
- return pattern;
126
- });
127
- }
128
124
  return value;
129
125
  });
130
126
  const keys = Object.keys(serializedObject);
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { Pattern } from '../../Pattern';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {}\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n >(\n serializedObj: Record<string, any>,\n instance: T\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {}\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n })\n )\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>\n>(\n serializedObject: any,\n { signal }: Abortable = {}\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n // clipPath or shadow or gradient\n if (value.type) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n // pattern\n if (value.source) {\n return classRegistry\n .getClass<typeof Pattern>('pattern')\n .fromObject(value, { signal })\n .then((pattern: Pattern) => {\n instances.push(pattern);\n return pattern;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","concat","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","_ref","enlived","source","pattern","keys","reduce","acc","index"],"mappings":";;;;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,SAAS,GAAG,UACvBC,GAAW,EAAA;EAAA,IACX;IAAEC,MAAM;AAAEC,IAAAA,WAAW,GAAG,IAAA;AAAuB,GAAC,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;AAAA,EAAA,OAErD,IAAIG,OAAO,CAAmB,UAAUC,OAAO,EAAEC,MAAM,EAAE;AACvD,IAAA,IAAIP,MAAM,IAAIA,MAAM,CAACQ,OAAO,EAAE;AAC5B,MAAA,OAAOD,MAAM,CAAC,IAAIE,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAA;AACpD,KAAA;AACA,IAAA,MAAMC,GAAG,GAAGC,WAAW,EAAE,CAAA;AACzB,IAAA,IAAIC,KAAyC,CAAA;AAC7C,IAAA,IAAIZ,MAAM,EAAE;AACVY,MAAAA,KAAK,GAAG,UAAUC,GAAU,EAAE;QAC5BH,GAAG,CAACI,GAAG,GAAG,EAAE,CAAA;QACZP,MAAM,CAACM,GAAG,CAAC,CAAA;OACZ,CAAA;AACDb,MAAAA,MAAM,CAACe,gBAAgB,CAAC,OAAO,EAAEH,KAAK,EAAE;AAAEI,QAAAA,IAAI,EAAE,IAAA;AAAK,OAAC,CAAC,CAAA;AACzD,KAAA;AACA,IAAA,MAAMC,IAAI,GAAG,YAAY;AACvBP,MAAAA,GAAG,CAACQ,MAAM,GAAGR,GAAG,CAACS,OAAO,GAAG,IAAI,CAAA;AAC/BP,MAAAA,KAAK,KAAIZ,MAAM,KAANA,IAAAA,IAAAA,MAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAEoB,mBAAmB,CAAC,OAAO,EAAER,KAAK,CAAC,CAAA,CAAA;MACpDN,OAAO,CAACI,GAAG,CAAC,CAAA;KACb,CAAA;IACD,IAAI,CAACX,GAAG,EAAE;AACRkB,MAAAA,IAAI,EAAE,CAAA;AACN,MAAA,OAAA;AACF,KAAA;IACAP,GAAG,CAACQ,MAAM,GAAGD,IAAI,CAAA;IACjBP,GAAG,CAACS,OAAO,GAAG,YAAY;AACxBP,MAAAA,KAAK,KAAIZ,MAAM,KAANA,IAAAA,IAAAA,MAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAEoB,mBAAmB,CAAC,OAAO,EAAER,KAAK,CAAC,CAAA,CAAA;MACpDL,MAAM,CAAC,IAAIc,WAAW,CAAAC,gBAAAA,CAAAA,MAAA,CAAkBZ,GAAG,CAACI,GAAG,CAAE,CAAC,CAAC,CAAA;KACpD,CAAA;AACDb,IAAAA,WAAW,KAAKS,GAAG,CAACT,WAAW,GAAGA,WAAW,CAAC,CAAA;IAC9CS,GAAG,CAACI,GAAG,GAAGf,GAAG,CAAA;AACf,GAAC,CAAC,CAAA;AAAA,EAAA;AAoBJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACawB,MAAAA,cAAc,GAAG,UAQ5BC,OAAc,EAAA;EAAA,IACd;IAAExB,MAAM;AAAEyB,IAAAA,OAAO,GAAGC,IAAAA;AAA2B,GAAC,GAAAxB,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;AAAA,EAAA,OAErD,IAAIG,OAAO,CAAM,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpC,MAAMoB,SAAc,GAAG,EAAE,CAAA;IACzB3B,MAAM,IAAIA,MAAM,CAACe,gBAAgB,CAAC,OAAO,EAAER,MAAM,EAAE;AAAES,MAAAA,IAAI,EAAE,IAAA;AAAK,KAAC,CAAC,CAAA;IAClEX,OAAO,CAACuB,GAAG,CACTJ,OAAO,CAACK,GAAG,CAAEC,GAAG,IACdC,aAAa,CACVC,QAAQ,CAIPF,GAAG,CAACG,IAAI,CAAC,CACVC,UAAU,CAACJ,GAAG,EAAE;AAAE9B,MAAAA,MAAAA;AAAO,KAAC,CAAC,CAC3BmC,IAAI,CAAEC,cAAc,IAAK;AACxBX,MAAAA,OAAO,CAACK,GAAG,EAAEM,cAAc,CAAC,CAAA;AAC5BT,MAAAA,SAAS,CAACU,IAAI,CAACD,cAAc,CAAC,CAAA;AAC9B,MAAA,OAAOA,cAAc,CAAA;AACvB,KAAC,CACL,CACF,CAAC,CACED,IAAI,CAAC7B,OAAO,CAAC,CACbgC,KAAK,CAAEC,KAAK,IAAK;AAChB;AACAZ,MAAAA,SAAS,CAACa,OAAO,CAAEC,QAAQ,IAAK;AAC7BA,QAAAA,QAAQ,CAAkBC,OAAO,IAC/BD,QAAQ,CAAkBC,OAAO,EAAE,CAAA;AACxC,OAAC,CAAC,CAAA;MACFnC,MAAM,CAACgC,KAAK,CAAC,CAAA;AACf,KAAC,CAAC,CACDI,OAAO,CAAC,MAAM;MACb3C,MAAM,IAAIA,MAAM,CAACoB,mBAAmB,CAAC,OAAO,EAAEb,MAAM,CAAC,CAAA;AACvD,KAAC,CAAC,CAAA;AACN,GAAC,CAAC,CAAA;AAAA,EAAA;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACaqC,MAAAA,uBAAuB,GAAG,UAGrCC,gBAAqB,EAAA;EAAA,IACrB;AAAE7C,IAAAA,MAAAA;AAAkB,GAAC,GAAAE,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;AAAA,EAAA,OAE1B,IAAIG,OAAO,CAAI,CAACC,OAAO,EAAEC,MAAM,KAAK;IAClC,MAAMoB,SAA8C,GAAG,EAAE,CAAA;IACzD3B,MAAM,IAAIA,MAAM,CAACe,gBAAgB,CAAC,OAAO,EAAER,MAAM,EAAE;AAAES,MAAAA,IAAI,EAAE,IAAA;AAAK,KAAC,CAAC,CAAA;AAClE;AACA,IAAA,MAAM8B,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAACH,gBAAgB,CAAC,CAAChB,GAAG,CAAEoB,KAAU,IAAK;MACnE,IAAI,CAACA,KAAK,EAAE;AACV,QAAA,OAAOA,KAAK,CAAA;AACd,OAAA;AACA;MACA,IAAIA,KAAK,CAAChB,IAAI,EAAE;AACd,QAAA,OAAOV,cAAc,CAAkC,CAAC0B,KAAK,CAAC,EAAE;AAC9DjD,UAAAA,MAAAA;AACF,SAAC,CAAC,CAACmC,IAAI,CAACe,IAAA,IAAe;AAAA,UAAA,IAAd,CAACC,OAAO,CAAC,GAAAD,IAAA,CAAA;AAChBvB,UAAAA,SAAS,CAACU,IAAI,CAACc,OAAO,CAAC,CAAA;AACvB,UAAA,OAAOA,OAAO,CAAA;AAChB,SAAC,CAAC,CAAA;AACJ,OAAA;AACA;MACA,IAAIF,KAAK,CAACG,MAAM,EAAE;QAChB,OAAOrB,aAAa,CACjBC,QAAQ,CAAiB,SAAS,CAAC,CACnCE,UAAU,CAACe,KAAK,EAAE;AAAEjD,UAAAA,MAAAA;AAAO,SAAC,CAAC,CAC7BmC,IAAI,CAAEkB,OAAgB,IAAK;AAC1B1B,UAAAA,SAAS,CAACU,IAAI,CAACgB,OAAO,CAAC,CAAA;AACvB,UAAA,OAAOA,OAAO,CAAA;AAChB,SAAC,CAAC,CAAA;AACN,OAAA;AACA,MAAA,OAAOJ,KAAK,CAAA;AACd,KAAC,CAAC,CAAA;AACF,IAAA,MAAMK,IAAI,GAAGP,MAAM,CAACO,IAAI,CAACT,gBAAgB,CAAC,CAAA;IAC1CxC,OAAO,CAACuB,GAAG,CAACkB,QAAQ,CAAC,CAClBX,IAAI,CAAEgB,OAAO,IAAK;MACjB,OAAOA,OAAO,CAACI,MAAM,CAAC,CAACC,GAAG,EAAEf,QAAQ,EAAEgB,KAAK,KAAK;AAC9CD,QAAAA,GAAG,CAACF,IAAI,CAACG,KAAK,CAAC,CAAC,GAAGhB,QAAQ,CAAA;AAC3B,QAAA,OAAOe,GAAG,CAAA;OACX,EAAE,EAAE,CAAC,CAAA;KACP,CAAC,CACDrB,IAAI,CAAC7B,OAAO,CAAC,CACbgC,KAAK,CAAEC,KAAK,IAAK;AAChB;AACAZ,MAAAA,SAAS,CAACa,OAAO,CAAEC,QAAa,IAAK;AACnCA,QAAAA,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACC,OAAO,EAAE,CAAA;AACxC,OAAC,CAAC,CAAA;MACFnC,MAAM,CAACgC,KAAK,CAAC,CAAA;AACf,KAAC,CAAC,CACDI,OAAO,CAAC,MAAM;MACb3C,MAAM,IAAIA,MAAM,CAACoB,mBAAmB,CAAC,OAAO,EAAEb,MAAM,CAAC,CAAA;AACvD,KAAC,CAAC,CAAA;AACN,GAAC,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"objectEnlive.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {}\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n >(\n serializedObj: Record<string, any>,\n instance: T\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {}\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n })\n )\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>\n>(\n serializedObject: any,\n { signal }: Abortable = {}\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","concat","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"objectTransforms.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectTransforms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,WAC5B,YAAY,4BASrB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,WAAY,YAAY,4BAItD,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACzB,YAAY,4BAWrB,CAAC;AACF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WAAY,YAAY,SAQxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAY,YAAY;;;;;;;;;;CAUtD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,UACtB,MAAM,UACL,MAAM,qBAaf,CAAC"}
1
+ {"version":3,"file":"objectTransforms.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectTransforms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,WAC5B,YAAY,aACT,MAAM,SAQlB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,WAAY,YAAY,aAAa,MAAM,SAIzE,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACzB,YAAY,aACT,MAAM,SAUlB,CAAC;AACF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WAAY,YAAY,SAQxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAY,YAAY;;;;;;;;;;CAUtD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,UACtB,MAAM,UACL,MAAM,KACX,MAAM,UAYV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/pick.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,IAAI,8EAUhB,CAAC;AAEF,eAAO,MAAM,MAAM,mHAEqD,OAAO,eAQ9E,CAAC"}
1
+ {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/pick.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UACxC,CAAC,SACH,CAAC,MAAM,CAAC,CAAC,EAAE,eAQlB,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAC1C,CAAC,aACE,CAAC,CAAiB,SAAP,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,OAAO,eAQ9E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"planeChange.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/planeChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,wCAGuB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,UACpB,KAAK,iCAGX,KAAyD,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,UACrB,KAAK,iCAGX,KAA+D,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,WACpB,YAAY,SACb,MAAM,OACR,MAAM,WAQZ,CAAC"}
1
+ {"version":3,"file":"planeChange.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/planeChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UAC1B,MAAM,OACR,MAAM,WAC6C,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,UACpB,KAAK,SACN,MAAM,OACR,MAAM,KACT,KAAyD,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,UACrB,KAAK,SACN,MAAM,OACR,MAAM,KACT,KAA+D,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,WACpB,YAAY,SACb,MAAM,OACR,MAAM,KACV,MAOF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"svgParsing.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/svgParsing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,KAAK,EACL,MAAM,EACN,cAAc,EAEf,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAU,cAAc,aA2BpD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,MAAM,8BA0BtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAaF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,cACjC,MAAM,KAChB,iBAWF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,+BAKnB,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,UACJ,GAAG,kCA2BZ,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,MAAM,gCACiB,KAAK,+BAQpC,CAAC"}
1
+ {"version":3,"file":"svgParsing.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/svgParsing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,KAAK,EACL,MAAM,EACN,cAAc,EAEf,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAU,cAAc,aA2BpD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,MAAM,8BA0BtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAaF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,cACjC,MAAM,KAChB,iBAWF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,cAAe,MAAM,WAKxC,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,UACJ,GAAG,kCA2BZ,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,MAAM,gCACiB,KAAK,+BAQpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"textStyles.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/textStyles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AAItC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,oBAAoB,CAAC;CAC7B,EAAE,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,eAAe,cACf,oBAAoB,aACpB,oBAAoB,oCAesB,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,WAChB,SAAS,QACX,MAAM,mBAuCb,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,WAClB,cAAc,GAAG,SAAS,QAC5B,MAAM,KACX,SAkCF,CAAC"}
1
+ {"version":3,"file":"textStyles.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/textStyles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AAItC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,oBAAoB,CAAC;CAC7B,EAAE,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,eAAe,cACf,oBAAoB,aACpB,oBAAoB,oCAesB,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,WAChB,SAAS,QACX,MAAM,KACX,cAsCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,WAClB,cAAc,GAAG,SAAS,QAC5B,MAAM,KACX,SAkCF,CAAC"}
@@ -58,7 +58,6 @@ export declare const getPointOnPath: (path: TSimplePathData, distance: number, i
58
58
  * ['Q', 3, 5, 2, 1, 4, 0],
59
59
  * ['Q', 9, 12, 2, 1, 4, 0],
60
60
  * ];
61
- *
62
61
  */
63
62
  export declare const parsePath: (pathString: string) => TComplexPathData;
64
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/path/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKnE,OAAO,KAAK,EAEV,gBAAgB,EAChB,gCAAgC,EAEhC,gBAAgB,EAChB,WAAW,EAEX,eAAe,EAKf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsLpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,WAAW,CAoFb;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,OACvB,MAAM,MACN,MAAM,0CAC8B,iBAAiB,KACxD,gCAAgC,EAYlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,6CA4J3B,CAAC;AA0KF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,6BAE7B,gBAAgB,EAkGlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,oCAEf,MAAM,UACT,gBAAgB,EAAE,KACxB,WAAW,GAAG,SAoChB,CAAC;AAKF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,eAAgB,MAAM,qBAmD3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,WAC1B,KAAK,EAAE,yCA4ChB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,yDAGZ,KAAK,oBA4BlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,UACX,MAAM,oBAiBf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,+CAAgD,MAAM,WAY7D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/path/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKnE,OAAO,KAAK,EAEV,gBAAgB,EAChB,gCAAgC,EAChC,gBAAgB,EAChB,WAAW,EAEX,eAAe,EAKf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsLpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,WAAW,CAoFb;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,OACvB,MAAM,MACN,MAAM,0CAC8B,iBAAiB,KACxD,gCAAgC,EAYlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,SAAU,gBAAgB,KAAG,eA4JxD,CAAC;AA0KF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SACxB,eAAe,KACpB,gBAAgB,EAkGlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SACnB,eAAe,YACX,MAAM,UACT,gBAAgB,EAAE,KACxB,WAAW,GAAG,SAoChB,CAAC;AAKF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,eAAgB,MAAM,KAAG,gBAmD9C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,WAC1B,KAAK,EAAE,0BAEd,eA0CF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,SAClB,eAAe,aACV,MAAM,cACL,KAAK,KAChB,eA2BF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gBACnB,MAAM,UACX,MAAM,KACb,eAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,aAAc,eAAe,mBAAmB,MAAM,WAY7D,CAAC"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e}from"../../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{cache as t}from"../../cache.min.mjs";import{config as n}from"../../config.min.mjs";import{halfPI as r,PiBy180 as s}from"../../constants.min.mjs";import{cos as a}from"../misc/cos.min.mjs";import{multiplyTransformMatrices as o,transformPoint as c}from"../misc/matrix.min.mjs";import{sin as i}from"../misc/sin.min.mjs";import{toFixed as l}from"../misc/toFixed.min.mjs";import{Point as h}from"../../Point.min.mjs";import{rePathCommand as m}from"./regex.min.mjs";import{cleanupSvgAttribute as u}from"../internals/cleanupSvgAttribute.min.mjs";const f={m:"l",M:"L"},x=(e,t,n,r,s,o,c,l,h,m,u)=>{const f=a(e),x=i(e),p=a(t),y=i(t),g=n*s*p-r*o*y+c,M=r*s*p+n*o*y+l;return["C",m+h*(-n*s*x-r*o*f),u+h*(-r*s*x+n*o*f),g+h*(n*s*y+r*o*p),M+h*(r*s*y-n*o*p),g,M]},p=(e,t,n,r)=>{const s=Math.atan2(t,e),a=Math.atan2(r,n);return a>=s?a-s:2*Math.PI-(s-a)};function y(e,r,s,a,o,c,i,l){let m;if(n.cachesBoundsOfCurve&&(m=[...arguments].join(),t.boundsOfCurveCache[m]))return t.boundsOfCurveCache[m];const u=Math.sqrt,f=Math.abs,x=[],p=[[0,0],[0,0]];let y=6*e-12*s+6*o,g=-3*e+9*s-9*o+3*i,M=3*s-3*e;for(let e=0;e<2;++e){if(e>0&&(y=6*r-12*a+6*c,g=-3*r+9*a-9*c+3*l,M=3*a-3*r),f(g)<1e-12){if(f(y)<1e-12)continue;const e=-M/y;0<e&&e<1&&x.push(e);continue}const t=y*y-4*M*g;if(t<0)continue;const n=u(t),s=(-y+n)/(2*g);0<s&&s<1&&x.push(s);const o=(-y-n)/(2*g);0<o&&o<1&&x.push(o)}let b=x.length;const w=b,j=d(e,r,s,a,o,c,i,l);for(;b--;){const{x:e,y:t}=j(x[b]);p[0][b]=e,p[1][b]=t}p[0][w]=e,p[1][w]=r,p[0][w+1]=i,p[1][w+1]=l;const k=[new h(Math.min(...p[0]),Math.min(...p[1])),new h(Math.max(...p[0]),Math.max(...p[1]))];return n.cachesBoundsOfCurve&&(t.boundsOfCurveCache[m]=k),k}const g=(e,t,n)=>{let[r,o,c,l,h,m,u,f]=n;const y=((e,t,n,r,o,c,l)=>{if(0===n||0===r)return[];let h=0,m=0,u=0;const f=Math.PI,y=l*s,g=i(y),M=a(y),b=.5*(-M*e-g*t),d=.5*(-M*t+g*e),w=n**2,j=r**2,k=d**2,C=b**2,v=w*j-w*k-j*C;let L=Math.abs(n),Q=Math.abs(r);if(v<0){const e=Math.sqrt(1-v/(w*j));L*=e,Q*=e}else u=(o===c?-1:1)*Math.sqrt(v/(w*k+j*C));const q=u*L*d/Q,F=-u*Q*b/L,P=M*q-g*F+.5*e,A=g*q+M*F+.5*t;let E=p(1,0,(b-q)/L,(d-F)/Q),O=p((b-q)/L,(d-F)/Q,(-b-q)/L,(-d-F)/Q);0===c&&O>0?O-=2*f:1===c&&O<0&&(O+=2*f);const Z=Math.ceil(Math.abs(O/f*2)),N=new Array(Z),B=O/Z,I=8/3*Math.sin(B/4)*Math.sin(B/4)/Math.sin(B/2);let R=E+B;for(let e=0;e<Z;e++)N[e]=x(E,R,M,g,L,Q,P,A,I,h,m),h=N[e][5],m=N[e][6],E=R,R+=B;return N})(u-e,f-t,o,c,h,m,l);for(let n=0,r=y.length;n<r;n++)y[n][1]+=e,y[n][2]+=t,y[n][3]+=e,y[n][4]+=t,y[n][5]+=e,y[n][6]+=t;return y},M=e=>{let t=0,n=0,r=0,s=0;const a=[];let o,c=0,i=0;for(const l of e){const e=[...l];let h;switch(e[0]){case"l":e[1]+=t,e[2]+=n;case"L":t=e[1],n=e[2],h=["L",t,n];break;case"h":e[1]+=t;case"H":t=e[1],h=["L",t,n];break;case"v":e[1]+=n;case"V":n=e[1],h=["L",t,n];break;case"m":e[1]+=t,e[2]+=n;case"M":t=e[1],n=e[2],r=e[1],s=e[2],h=["M",t,n];break;case"c":e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n,e[5]+=t,e[6]+=n;case"C":c=e[3],i=e[4],t=e[5],n=e[6],h=["C",e[1],e[2],c,i,t,n];break;case"s":e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case"S":"C"===o?(c=2*t-c,i=2*n-i):(c=t,i=n),t=e[3],n=e[4],h=["C",c,i,e[1],e[2],t,n],c=h[3],i=h[4];break;case"q":e[1]+=t,e[2]+=n,e[3]+=t,e[4]+=n;case"Q":c=e[1],i=e[2],t=e[3],n=e[4],h=["Q",c,i,t,n];break;case"t":e[1]+=t,e[2]+=n;case"T":"Q"===o?(c=2*t-c,i=2*n-i):(c=t,i=n),t=e[1],n=e[2],h=["Q",c,i,t,n];break;case"a":e[6]+=t,e[7]+=n;case"A":g(t,n,e).forEach((e=>a.push(e))),t=e[6],n=e[7];break;case"z":case"Z":t=r,n=s,h=["Z"]}h?(a.push(h),o=h[0]):o=""}return a},b=(e,t,n,r)=>Math.sqrt((n-e)**2+(r-t)**2),d=(e,t,n,r,s,a,o,c)=>i=>{const l=i**3,m=(e=>3*e**2*(1-e))(i),u=(e=>3*e*(1-e)**2)(i),f=(e=>(1-e)**3)(i);return new h(o*l+s*m+n*u+e*f,c*l+a*m+r*u+t*f)},w=e=>e**2,j=e=>2*e*(1-e),k=e=>(1-e)**2,C=(e,t,n,r,s,a,o,c)=>i=>{const l=w(i),h=j(i),m=k(i),u=3*(m*(n-e)+h*(s-n)+l*(o-s)),f=3*(m*(r-t)+h*(a-r)+l*(c-a));return Math.atan2(f,u)},v=(e,t,n,r,s,a)=>o=>{const c=w(o),i=j(o),l=k(o);return new h(s*c+n*i+e*l,a*c+r*i+t*l)},L=(e,t,n,r,s,a)=>o=>{const c=1-o,i=2*(c*(n-e)+o*(s-n)),l=2*(c*(r-t)+o*(a-r));return Math.atan2(l,i)},Q=(e,t,n)=>{let r=new h(t,n),s=0;for(let t=1;t<=100;t+=1){const n=e(t/100);s+=b(r.x,r.y,n.x,n.y),r=n}return s},q=(t,n)=>{let r,s=0,a=0,o={x:t.x,y:t.y},c=e({},o),i=.01,l=0;const h=t.iterator,m=t.angleFinder;for(;a<n&&i>1e-4;)c=h(s),l=s,r=b(o.x,o.y,c.x,c.y),r+a>n?(s-=i,i/=2):(o=c,s+=i,a+=r);return e(e({},c),{},{angle:m(l)})},F=e=>{let t,n,r=0,s=0,a=0,o=0,c=0;const i=[];for(const l of e){const e={x:s,y:a,command:l[0],length:0};switch(l[0]){case"M":n=e,n.x=o=s=l[1],n.y=c=a=l[2];break;case"L":n=e,n.length=b(s,a,l[1],l[2]),s=l[1],a=l[2];break;case"C":t=d(s,a,l[1],l[2],l[3],l[4],l[5],l[6]),n=e,n.iterator=t,n.angleFinder=C(s,a,l[1],l[2],l[3],l[4],l[5],l[6]),n.length=Q(t,s,a),s=l[5],a=l[6];break;case"Q":t=v(s,a,l[1],l[2],l[3],l[4]),n=e,n.iterator=t,n.angleFinder=L(s,a,l[1],l[2],l[3],l[4]),n.length=Q(t,s,a),s=l[3],a=l[4];break;case"Z":n=e,n.destX=o,n.destY=c,n.length=b(s,a,o,c),s=o,a=c}r+=n.length,i.push(n)}return i.push({length:r,x:s,y:a}),i},P=function(t,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:F(t),s=0;for(;n-r[s].length>0&&s<r.length-2;)n-=r[s].length,s++;const a=r[s],o=n/a.length,c=t[s];switch(a.command){case"M":return{x:a.x,y:a.y,angle:0};case"Z":return e(e({},new h(a.x,a.y).lerp(new h(a.destX,a.destY),o)),{},{angle:Math.atan2(a.destY-a.y,a.destX-a.x)});case"L":return e(e({},new h(a.x,a.y).lerp(new h(c[1],c[2]),o)),{},{angle:Math.atan2(c[2]-a.y,c[1]-a.x)});case"C":case"Q":return q(a,n)}},A=new RegExp(m,"gi"),E=new RegExp(m,"i"),O=e=>{e=u(e);const t=[];for(let[n]of e.matchAll(A)){const e=[];let r;do{if(r=E.exec(n),!r)break;const t=r.filter((e=>e));t.shift();const s=t.map((e=>{const t=Number.parseFloat(e);return Number.isNaN(t)?e:t}));if(e.push(s),t.length<=1)break;t.shift(),n=n.replace(new RegExp("".concat(t.join(" ?")," ?$")),"")}while(r);e.reverse().forEach(((e,n)=>{const r=f[e[0]];n>0&&("l"==r||"L"==r)&&(e[0]=r),t.push(e)}))}return t},Z=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=new h(e[0]),r=new h(e[1]),s=1,a=0;const o=[],c=e.length,i=c>2;let l;for(i&&(s=e[2].x<r.x?-1:e[2].x===r.x?0:1,a=e[2].y<r.y?-1:e[2].y===r.y?0:1),o.push(["M",n.x-s*t,n.y-a*t]),l=1;l<c;l++){if(!n.eq(r)){const e=n.midPointFrom(r);o.push(["Q",n.x,n.y,e.x,e.y])}n=e[l],l+1<e.length&&(r=e[l+1])}return i&&(s=n.x>e[l-2].x?1:n.x===e[l-2].x?0:-1,a=n.y>e[l-2].y?1:n.y===e[l-2].y?0:-1),o.push(["L",n.x+s*t,n.y+a*t]),o},N=(e,t,n)=>(n&&(t=o(t,[1,0,0,1,-n.x,-n.y])),e.map((e=>{const n=[...e];for(let r=1;r<e.length-1;r+=2){const{x:s,y:a}=c({x:e[r],y:e[r+1]},t);n[r]=s,n[r+1]=a}return n}))),B=(e,t)=>{const n=2*Math.PI/e;let s=-r;e%2==0&&(s+=n/2);const o=new Array(e+1);for(let r=0;r<e;r++){const e=r*n+s,{x:c,y:l}=new h(a(e),i(e)).scalarMultiply(t);o[r]=[0===r?"M":"L",c,l]}return o[e]=["Z"],o},I=(e,t)=>e.map((e=>e.map(((e,n)=>0===n||void 0===t?e:l(e,t))).join(" "))).join(" ");export{g as fromArcToBeziers,y as getBoundsOfCurve,F as getPathSegmentsInfo,P as getPointOnPath,B as getRegularPolygonPath,Z as getSmoothPathFromPoints,I as joinPath,M as makePathSimpler,O as parsePath,N as transformPath};
1
+ import{objectSpread2 as t}from"../../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{cache as e}from"../../cache.min.mjs";import{config as n}from"../../config.min.mjs";import{halfPI as s,PiBy180 as r}from"../../constants.min.mjs";import{cos as a}from"../misc/cos.min.mjs";import{multiplyTransformMatrices as o,transformPoint as c}from"../misc/matrix.min.mjs";import{sin as i}from"../misc/sin.min.mjs";import{toFixed as l}from"../misc/toFixed.min.mjs";import{Point as h}from"../../Point.min.mjs";import{rePathCommand as m}from"./regex.min.mjs";import{cleanupSvgAttribute as u}from"../internals/cleanupSvgAttribute.min.mjs";const f={m:"l",M:"L"},x=(t,e,n,s,r,o,c,l,h,m,u)=>{const f=a(t),x=i(t),p=a(e),g=i(e),y=n*r*p-s*o*g+c,M=s*r*p+n*o*g+l;return["C",m+h*(-n*r*x-s*o*f),u+h*(-s*r*x+n*o*f),y+h*(n*r*g+s*o*p),M+h*(s*r*g-n*o*p),y,M]},p=(t,e,n,s)=>{const r=Math.atan2(e,t),a=Math.atan2(s,n);return a>=r?a-r:2*Math.PI-(r-a)};function g(t,s,r,a,o,c,i,l){let m;if(n.cachesBoundsOfCurve&&(m=[...arguments].join(),e.boundsOfCurveCache[m]))return e.boundsOfCurveCache[m];const u=Math.sqrt,f=Math.abs,x=[],p=[[0,0],[0,0]];let g=6*t-12*r+6*o,y=-3*t+9*r-9*o+3*i,M=3*r-3*t;for(let t=0;t<2;++t){if(t>0&&(g=6*s-12*a+6*c,y=-3*s+9*a-9*c+3*l,M=3*a-3*s),f(y)<1e-12){if(f(g)<1e-12)continue;const t=-M/g;0<t&&t<1&&x.push(t);continue}const e=g*g-4*M*y;if(e<0)continue;const n=u(e),r=(-g+n)/(2*y);0<r&&r<1&&x.push(r);const o=(-g-n)/(2*y);0<o&&o<1&&x.push(o)}let b=x.length;const w=b,j=d(t,s,r,a,o,c,i,l);for(;b--;){const{x:t,y:e}=j(x[b]);p[0][b]=t,p[1][b]=e}p[0][w]=t,p[1][w]=s,p[0][w+1]=i,p[1][w+1]=l;const k=[new h(Math.min(...p[0]),Math.min(...p[1])),new h(Math.max(...p[0]),Math.max(...p[1]))];return n.cachesBoundsOfCurve&&(e.boundsOfCurveCache[m]=k),k}const y=(t,e,n)=>{let[s,o,c,l,h,m,u,f]=n;const g=((t,e,n,s,o,c,l)=>{if(0===n||0===s)return[];let h=0,m=0,u=0;const f=Math.PI,g=l*r,y=i(g),M=a(g),b=.5*(-M*t-y*e),d=.5*(-M*e+y*t),w=n**2,j=s**2,k=d**2,C=b**2,v=w*j-w*k-j*C;let L=Math.abs(n),Q=Math.abs(s);if(v<0){const t=Math.sqrt(1-v/(w*j));L*=t,Q*=t}else u=(o===c?-1:1)*Math.sqrt(v/(w*k+j*C));const q=u*L*d/Q,F=-u*Q*b/L,P=M*q-y*F+.5*t,E=y*q+M*F+.5*e;let O=p(1,0,(b-q)/L,(d-F)/Q),Z=p((b-q)/L,(d-F)/Q,(-b-q)/L,(-d-F)/Q);0===c&&Z>0?Z-=2*f:1===c&&Z<0&&(Z+=2*f);const A=Math.ceil(Math.abs(Z/f*2)),N=[],B=Z/A,I=8/3*Math.sin(B/4)*Math.sin(B/4)/Math.sin(B/2);let R=O+B;for(let t=0;t<A;t++)N[t]=x(O,R,M,y,L,Q,P,E,I,h,m),h=N[t][5],m=N[t][6],O=R,R+=B;return N})(u-t,f-e,o,c,h,m,l);for(let n=0,s=g.length;n<s;n++)g[n][1]+=t,g[n][2]+=e,g[n][3]+=t,g[n][4]+=e,g[n][5]+=t,g[n][6]+=e;return g},M=t=>{let e=0,n=0,s=0,r=0;const a=[];let o,c=0,i=0;for(const l of t){const t=[...l];let h;switch(t[0]){case"l":t[1]+=e,t[2]+=n;case"L":e=t[1],n=t[2],h=["L",e,n];break;case"h":t[1]+=e;case"H":e=t[1],h=["L",e,n];break;case"v":t[1]+=n;case"V":n=t[1],h=["L",e,n];break;case"m":t[1]+=e,t[2]+=n;case"M":e=t[1],n=t[2],s=t[1],r=t[2],h=["M",e,n];break;case"c":t[1]+=e,t[2]+=n,t[3]+=e,t[4]+=n,t[5]+=e,t[6]+=n;case"C":c=t[3],i=t[4],e=t[5],n=t[6],h=["C",t[1],t[2],c,i,e,n];break;case"s":t[1]+=e,t[2]+=n,t[3]+=e,t[4]+=n;case"S":"C"===o?(c=2*e-c,i=2*n-i):(c=e,i=n),e=t[3],n=t[4],h=["C",c,i,t[1],t[2],e,n],c=h[3],i=h[4];break;case"q":t[1]+=e,t[2]+=n,t[3]+=e,t[4]+=n;case"Q":c=t[1],i=t[2],e=t[3],n=t[4],h=["Q",c,i,e,n];break;case"t":t[1]+=e,t[2]+=n;case"T":"Q"===o?(c=2*e-c,i=2*n-i):(c=e,i=n),e=t[1],n=t[2],h=["Q",c,i,e,n];break;case"a":t[6]+=e,t[7]+=n;case"A":y(e,n,t).forEach((t=>a.push(t))),e=t[6],n=t[7];break;case"z":case"Z":e=s,n=r,h=["Z"]}h?(a.push(h),o=h[0]):o=""}return a},b=(t,e,n,s)=>Math.sqrt((n-t)**2+(s-e)**2),d=(t,e,n,s,r,a,o,c)=>i=>{const l=i**3,m=(t=>3*t**2*(1-t))(i),u=(t=>3*t*(1-t)**2)(i),f=(t=>(1-t)**3)(i);return new h(o*l+r*m+n*u+t*f,c*l+a*m+s*u+e*f)},w=t=>t**2,j=t=>2*t*(1-t),k=t=>(1-t)**2,C=(t,e,n,s,r,a,o,c)=>i=>{const l=w(i),h=j(i),m=k(i),u=3*(m*(n-t)+h*(r-n)+l*(o-r)),f=3*(m*(s-e)+h*(a-s)+l*(c-a));return Math.atan2(f,u)},v=(t,e,n,s,r,a)=>o=>{const c=w(o),i=j(o),l=k(o);return new h(r*c+n*i+t*l,a*c+s*i+e*l)},L=(t,e,n,s,r,a)=>o=>{const c=1-o,i=2*(c*(n-t)+o*(r-n)),l=2*(c*(s-e)+o*(a-s));return Math.atan2(l,i)},Q=(t,e,n)=>{let s=new h(e,n),r=0;for(let e=1;e<=100;e+=1){const n=t(e/100);r+=b(s.x,s.y,n.x,n.y),s=n}return r},q=(e,n)=>{let s,r=0,a=0,o={x:e.x,y:e.y},c=t({},o),i=.01,l=0;const h=e.iterator,m=e.angleFinder;for(;a<n&&i>1e-4;)c=h(r),l=r,s=b(o.x,o.y,c.x,c.y),s+a>n?(r-=i,i/=2):(o=c,r+=i,a+=s);return t(t({},c),{},{angle:m(l)})},F=t=>{let e,n,s=0,r=0,a=0,o=0,c=0;const i=[];for(const l of t){const t={x:r,y:a,command:l[0],length:0};switch(l[0]){case"M":n=t,n.x=o=r=l[1],n.y=c=a=l[2];break;case"L":n=t,n.length=b(r,a,l[1],l[2]),r=l[1],a=l[2];break;case"C":e=d(r,a,l[1],l[2],l[3],l[4],l[5],l[6]),n=t,n.iterator=e,n.angleFinder=C(r,a,l[1],l[2],l[3],l[4],l[5],l[6]),n.length=Q(e,r,a),r=l[5],a=l[6];break;case"Q":e=v(r,a,l[1],l[2],l[3],l[4]),n=t,n.iterator=e,n.angleFinder=L(r,a,l[1],l[2],l[3],l[4]),n.length=Q(e,r,a),r=l[3],a=l[4];break;case"Z":n=t,n.destX=o,n.destY=c,n.length=b(r,a,o,c),r=o,a=c}s+=n.length,i.push(n)}return i.push({length:s,x:r,y:a}),i},P=function(e,n){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:F(e),r=0;for(;n-s[r].length>0&&r<s.length-2;)n-=s[r].length,r++;const a=s[r],o=n/a.length,c=e[r];switch(a.command){case"M":return{x:a.x,y:a.y,angle:0};case"Z":return t(t({},new h(a.x,a.y).lerp(new h(a.destX,a.destY),o)),{},{angle:Math.atan2(a.destY-a.y,a.destX-a.x)});case"L":return t(t({},new h(a.x,a.y).lerp(new h(c[1],c[2]),o)),{},{angle:Math.atan2(c[2]-a.y,c[1]-a.x)});case"C":case"Q":return q(a,n)}},E=new RegExp(m,"gi"),O=new RegExp(m,"i"),Z=t=>{t=u(t);const e=[];for(let[n]of t.matchAll(E)){const t=[];let s;do{if(s=O.exec(n),!s)break;const e=s.filter((t=>t));e.shift();const r=e.map((t=>{const e=Number.parseFloat(t);return Number.isNaN(e)?t:e}));if(t.push(r),e.length<=1)break;e.shift(),n=n.replace(new RegExp("".concat(e.join(" ?")," ?$")),"")}while(s);t.reverse().forEach(((t,n)=>{const s=f[t[0]];n>0&&("l"==s||"L"==s)&&(t[0]=s),e.push(t)}))}return e},A=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=new h(t[0]),s=new h(t[1]),r=1,a=0;const o=[],c=t.length,i=c>2;let l;for(i&&(r=t[2].x<s.x?-1:t[2].x===s.x?0:1,a=t[2].y<s.y?-1:t[2].y===s.y?0:1),o.push(["M",n.x-r*e,n.y-a*e]),l=1;l<c;l++){if(!n.eq(s)){const t=n.midPointFrom(s);o.push(["Q",n.x,n.y,t.x,t.y])}n=t[l],l+1<t.length&&(s=t[l+1])}return i&&(r=n.x>t[l-2].x?1:n.x===t[l-2].x?0:-1,a=n.y>t[l-2].y?1:n.y===t[l-2].y?0:-1),o.push(["L",n.x+r*e,n.y+a*e]),o},N=(t,e,n)=>(n&&(e=o(e,[1,0,0,1,-n.x,-n.y])),t.map((t=>{const n=[...t];for(let s=1;s<t.length-1;s+=2){const{x:r,y:a}=c({x:t[s],y:t[s+1]},e);n[s]=r,n[s+1]=a}return n}))),B=(t,e)=>{const n=2*Math.PI/t;let r=-s;t%2==0&&(r+=n/2);const o=new Array(t+1);for(let s=0;s<t;s++){const t=s*n+r,{x:c,y:l}=new h(a(t),i(t)).scalarMultiply(e);o[s]=[0===s?"M":"L",c,l]}return o[t]=["Z"],o},I=(t,e)=>t.map((t=>t.map(((t,n)=>0===n||void 0===e?t:l(t,e))).join(" "))).join(" ");export{y as fromArcToBeziers,g as getBoundsOfCurve,F as getPathSegmentsInfo,P as getPointOnPath,B as getRegularPolygonPath,A as getSmoothPathFromPoints,I as joinPath,M as makePathSimpler,Z as parsePath,N as transformPath};
2
2
  //# sourceMappingURL=index.min.mjs.map