kritzel-stencil 0.0.129 → 0.0.131

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 (310) hide show
  1. package/dist/cjs/{index-C7Read21.js → index-BwINBV6L.js} +259 -191
  2. package/dist/cjs/index-BwINBV6L.js.map +1 -0
  3. package/dist/cjs/{index-CUSIflVf.js → index-nzUNdMPh.js} +43 -17
  4. package/dist/cjs/index-nzUNdMPh.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -1
  6. package/dist/cjs/index.cjs.js.map +1 -1
  7. package/dist/cjs/{kritzel-brush-style_22.cjs.entry.js → kritzel-brush-style_23.cjs.entry.js} +930 -841
  8. package/dist/cjs/loader.cjs.js +2 -2
  9. package/dist/cjs/stencil.cjs.js +3 -3
  10. package/dist/cjs/stencil.cjs.js.map +1 -1
  11. package/dist/collection/classes/commands/add-object.command.js +3 -2
  12. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  13. package/dist/collection/classes/commands/add-selection-group.command.js +4 -3
  14. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  15. package/dist/collection/classes/commands/base.command.js +4 -2
  16. package/dist/collection/classes/commands/base.command.js.map +1 -1
  17. package/dist/collection/classes/commands/batch.command.js +1 -0
  18. package/dist/collection/classes/commands/batch.command.js.map +1 -1
  19. package/dist/collection/classes/commands/move-selection-group.command.js +6 -0
  20. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  21. package/dist/collection/classes/commands/remove-object.command.js +5 -4
  22. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  23. package/dist/collection/classes/commands/remove-selection-group.command.js +3 -2
  24. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  25. package/dist/collection/classes/commands/resize-selection-group.command.js +3 -0
  26. package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
  27. package/dist/collection/classes/commands/rotate-selection-group.command.js +5 -2
  28. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  29. package/dist/collection/classes/commands/update-object.command.js +3 -0
  30. package/dist/collection/classes/commands/update-object.command.js.map +1 -1
  31. package/dist/collection/classes/commands/update-viewport.command.js +2 -0
  32. package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
  33. package/dist/collection/classes/database.class.js +6 -5
  34. package/dist/collection/classes/database.class.js.map +1 -1
  35. package/dist/collection/classes/handlers/base.handler.js +1 -0
  36. package/dist/collection/classes/handlers/base.handler.js.map +1 -1
  37. package/dist/collection/classes/handlers/context-menu.handler.js +2 -2
  38. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  39. package/dist/collection/classes/handlers/move.handler.js +8 -3
  40. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  41. package/dist/collection/classes/handlers/resize.handler.js +6 -6
  42. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  43. package/dist/collection/classes/handlers/rotation.handler.js +2 -2
  44. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  45. package/dist/collection/classes/handlers/selection.handler.js +10 -8
  46. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  47. package/dist/collection/classes/history.class.js +4 -0
  48. package/dist/collection/classes/history.class.js.map +1 -1
  49. package/dist/collection/classes/objects/base-object.class.js +29 -16
  50. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  51. package/dist/collection/classes/objects/custom-element.class.js +3 -2
  52. package/dist/collection/classes/objects/custom-element.class.js.map +1 -1
  53. package/dist/collection/classes/objects/image.class.js +12 -12
  54. package/dist/collection/classes/objects/image.class.js.map +1 -1
  55. package/dist/collection/classes/objects/path.class.js +30 -28
  56. package/dist/collection/classes/objects/path.class.js.map +1 -1
  57. package/dist/collection/classes/objects/selection-box.class.js +2 -5
  58. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  59. package/dist/collection/classes/objects/selection-group.class.js +13 -12
  60. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  61. package/dist/collection/classes/objects/text.class.js +11 -11
  62. package/dist/collection/classes/objects/text.class.js.map +1 -1
  63. package/dist/collection/classes/registries/icon-registry.class.js +1 -1
  64. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -1
  65. package/dist/collection/classes/registries/tool.registry.js +1 -1
  66. package/dist/collection/classes/registries/tool.registry.js.map +1 -1
  67. package/dist/collection/classes/reviver.class.js +1 -0
  68. package/dist/collection/classes/reviver.class.js.map +1 -1
  69. package/dist/collection/classes/store.class.js +18 -30
  70. package/dist/collection/classes/store.class.js.map +1 -1
  71. package/dist/collection/classes/structures/circular-buffer.structure.js +5 -3
  72. package/dist/collection/classes/structures/circular-buffer.structure.js.map +1 -1
  73. package/dist/collection/classes/structures/object-map.structure.js +43 -0
  74. package/dist/collection/classes/structures/object-map.structure.js.map +1 -0
  75. package/dist/collection/classes/tools/base-tool.class.js +3 -2
  76. package/dist/collection/classes/tools/base-tool.class.js.map +1 -1
  77. package/dist/collection/classes/tools/brush-tool.class.js +7 -7
  78. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  79. package/dist/collection/classes/tools/eraser-tool.class.js +2 -3
  80. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  81. package/dist/collection/classes/tools/image-tool.class.js +3 -4
  82. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  83. package/dist/collection/classes/tools/selection-tool.class.js +12 -9
  84. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  85. package/dist/collection/classes/tools/text-tool.class.js +26 -27
  86. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  87. package/dist/collection/classes/viewport.class.js +4 -3
  88. package/dist/collection/classes/viewport.class.js.map +1 -1
  89. package/dist/collection/classes/workspace.class.js +5 -0
  90. package/dist/collection/classes/workspace.class.js.map +1 -1
  91. package/dist/collection/collection-manifest.json +2 -1
  92. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +6 -6
  93. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  94. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -0
  95. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +102 -88
  96. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  97. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +137 -148
  98. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  99. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +6 -7
  100. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  101. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -3
  102. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +5 -6
  104. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +44 -40
  106. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  107. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +3 -5
  108. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  109. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +17 -17
  110. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  111. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +4 -5
  112. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  113. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +3 -3
  114. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -1
  115. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +16 -169
  116. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +176 -196
  117. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  118. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +136 -0
  119. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +267 -0
  120. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -0
  121. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +164 -48
  122. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  123. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +83 -78
  124. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +160 -130
  125. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  126. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +4 -5
  127. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
  128. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +13 -14
  129. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  130. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +5 -3
  131. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  132. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +6 -6
  133. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  134. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +5 -5
  135. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
  136. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +25 -32
  137. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
  138. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +4 -1
  139. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -1
  140. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +116 -95
  141. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  142. package/dist/collection/configs/default-engine-state.js +1 -1
  143. package/dist/collection/configs/default-engine-state.js.map +1 -1
  144. package/dist/collection/helpers/event.helper.js +2 -2
  145. package/dist/collection/helpers/event.helper.js.map +1 -1
  146. package/dist/collection/helpers/html.helper.js +1 -2
  147. package/dist/collection/helpers/html.helper.js.map +1 -1
  148. package/dist/collection/helpers/keyboard.helper.js +18 -0
  149. package/dist/collection/helpers/keyboard.helper.js.map +1 -1
  150. package/dist/collection/helpers/object.helper.js +2 -14
  151. package/dist/collection/helpers/object.helper.js.map +1 -1
  152. package/dist/collection/index.js +2 -0
  153. package/dist/collection/index.js.map +1 -1
  154. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  155. package/dist/collection/interfaces/menu-item.interface.js.map +1 -1
  156. package/dist/components/index.d.ts +2 -0
  157. package/dist/components/index.js +5 -3
  158. package/dist/components/index.js.map +1 -1
  159. package/dist/components/kritzel-brush-style.js +1 -1
  160. package/dist/components/kritzel-color-palette.js +1 -1
  161. package/dist/components/kritzel-color.js +1 -1
  162. package/dist/components/kritzel-context-menu.js +1 -1
  163. package/dist/components/kritzel-control-brush-config.js +1 -1
  164. package/dist/components/kritzel-control-text-config.js +1 -1
  165. package/dist/components/kritzel-controls.js +1 -1
  166. package/dist/components/kritzel-cursor-trail.js +1 -1
  167. package/dist/components/kritzel-dropdown.js +1 -1
  168. package/dist/components/kritzel-editor.js +145 -126
  169. package/dist/components/kritzel-editor.js.map +1 -1
  170. package/dist/components/kritzel-engine.js +1 -1
  171. package/dist/components/kritzel-font-family.js +1 -1
  172. package/dist/components/kritzel-font-size.js +1 -1
  173. package/dist/components/kritzel-font.js +1 -1
  174. package/dist/components/kritzel-icon.js +1 -1
  175. package/dist/components/kritzel-menu-item.d.ts +11 -0
  176. package/dist/components/kritzel-menu-item.js +9 -0
  177. package/dist/components/kritzel-menu-item.js.map +1 -0
  178. package/dist/components/kritzel-menu.js +1 -1
  179. package/dist/components/kritzel-portal.js +1 -1
  180. package/dist/components/kritzel-split-button.js +1 -1
  181. package/dist/components/kritzel-stroke-size.js +1 -1
  182. package/dist/components/kritzel-tooltip.js +1 -1
  183. package/dist/components/kritzel-utility-panel.js +1 -1
  184. package/dist/components/kritzel-workspace-manager.js +1 -1
  185. package/dist/components/{p-BU2q3PRS.js → p-B1BLgWL1.js} +9 -6
  186. package/dist/components/p-B1BLgWL1.js.map +1 -0
  187. package/dist/components/{p-5CJxFNEE.js → p-BB0_-X42.js} +5 -4
  188. package/dist/components/p-BB0_-X42.js.map +1 -0
  189. package/dist/components/{p-yZFrTtMQ.js → p-BB5R2k1o.js} +42 -48
  190. package/dist/components/p-BB5R2k1o.js.map +1 -0
  191. package/dist/components/p-BPz_H-EG.js +137 -0
  192. package/dist/components/p-BPz_H-EG.js.map +1 -0
  193. package/dist/components/{p-BqrTPNyu.js → p-BYanlgdq.js} +41 -15
  194. package/dist/components/p-BYanlgdq.js.map +1 -0
  195. package/dist/components/{p-BeVv4o5c.js → p-B_lb1FGi.js} +7 -2
  196. package/dist/components/p-B_lb1FGi.js.map +1 -0
  197. package/dist/components/p-BeljsQ-8.js +252 -0
  198. package/dist/components/p-BeljsQ-8.js.map +1 -0
  199. package/dist/components/{p-_ntxNi8v.js → p-BexTdWaX.js} +21 -19
  200. package/dist/components/p-BexTdWaX.js.map +1 -0
  201. package/dist/components/{p-BzSz74Ci.js → p-BgmKrd5Z.js} +8 -5
  202. package/dist/components/p-BgmKrd5Z.js.map +1 -0
  203. package/dist/components/{p-BZ-j_4CK.js → p-BhiYvSBc.js} +6 -6
  204. package/dist/components/p-BhiYvSBc.js.map +1 -0
  205. package/dist/components/{p-jG1e48OE.js → p-BrBQUN0Q.js} +16 -16
  206. package/dist/components/p-BrBQUN0Q.js.map +1 -0
  207. package/dist/components/{p-DtmZW6eP.js → p-BubxwvMA.js} +9 -7
  208. package/dist/components/p-BubxwvMA.js.map +1 -0
  209. package/dist/components/{p-D-zg05gA.js → p-BuewJQNl.js} +332 -393
  210. package/dist/components/p-BuewJQNl.js.map +1 -0
  211. package/dist/components/p-CGmS8wnN.js +186 -0
  212. package/dist/components/p-CGmS8wnN.js.map +1 -0
  213. package/dist/components/{p-BaKb8ZLg.js → p-CHxPWeZd.js} +15 -13
  214. package/dist/components/p-CHxPWeZd.js.map +1 -0
  215. package/dist/components/{p-rQeWFfPG.js → p-CMJ3P0Vw.js} +8 -7
  216. package/dist/components/p-CMJ3P0Vw.js.map +1 -0
  217. package/dist/components/{p-B7VrEdgP.js → p-DHSEK3rF.js} +141 -102
  218. package/dist/components/p-DHSEK3rF.js.map +1 -0
  219. package/dist/components/{p-BAPUTr3K.js → p-DMrtdhBD.js} +9 -8
  220. package/dist/components/p-DMrtdhBD.js.map +1 -0
  221. package/dist/components/p-DnUKql15.js +30 -0
  222. package/dist/components/p-DnUKql15.js.map +1 -0
  223. package/dist/components/p-DxTu1aoJ.js +237 -0
  224. package/dist/components/p-DxTu1aoJ.js.map +1 -0
  225. package/dist/components/{p-BLmFBe2a.js → p-p1Jkec_q.js} +7 -5
  226. package/dist/components/p-p1Jkec_q.js.map +1 -0
  227. package/dist/components/{p-V4ui5aWj.js → p-rIRXQdie.js} +11 -10
  228. package/dist/components/p-rIRXQdie.js.map +1 -0
  229. package/dist/components/{p-a7KmQzo4.js → p-t4NIsuX9.js} +15 -13
  230. package/dist/components/p-t4NIsuX9.js.map +1 -0
  231. package/dist/components/{p-BvlGgLAQ.js → p-trncBp_6.js} +47 -41
  232. package/dist/components/p-trncBp_6.js.map +1 -0
  233. package/dist/components/{p-BcQTDgzV.js → p-yZ48g7-u.js} +8 -7
  234. package/dist/components/p-yZ48g7-u.js.map +1 -0
  235. package/dist/esm/{index-J4NpPimy.js → index-B-oSk-v8.js} +259 -192
  236. package/dist/esm/index-B-oSk-v8.js.map +1 -0
  237. package/dist/esm/{index-NiIEUDzj.js → index-oCOlsFCN.js} +43 -17
  238. package/dist/esm/index-oCOlsFCN.js.map +1 -0
  239. package/dist/esm/index.js +1 -1
  240. package/dist/esm/{kritzel-brush-style_22.entry.js → kritzel-brush-style_23.entry.js} +929 -841
  241. package/dist/esm/loader.js +3 -3
  242. package/dist/esm/stencil.js +4 -4
  243. package/dist/esm/stencil.js.map +1 -1
  244. package/dist/stencil/index.esm.js +1 -1
  245. package/dist/stencil/p-3bb80782.entry.js +2 -0
  246. package/dist/stencil/p-3bb80782.entry.js.map +1 -0
  247. package/dist/stencil/p-B-oSk-v8.js +2 -0
  248. package/dist/stencil/p-B-oSk-v8.js.map +1 -0
  249. package/dist/stencil/p-oCOlsFCN.js +3 -0
  250. package/dist/stencil/p-oCOlsFCN.js.map +1 -0
  251. package/dist/stencil/stencil.esm.js +1 -1
  252. package/dist/stencil/stencil.esm.js.map +1 -1
  253. package/dist/types/classes/objects/path.class.d.ts +0 -2
  254. package/dist/types/classes/structures/object-map.structure.d.ts +11 -0
  255. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +3 -0
  256. package/dist/types/components/shared/kritzel-menu/kritzel-menu.d.ts +18 -20
  257. package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +26 -0
  258. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +15 -10
  259. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +23 -15
  260. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +18 -14
  261. package/dist/types/components.d.ts +90 -61
  262. package/dist/types/helpers/keyboard.helper.d.ts +1 -0
  263. package/dist/types/index.d.ts +2 -0
  264. package/dist/types/interfaces/engine-state.interface.d.ts +2 -2
  265. package/dist/types/interfaces/menu-item.interface.d.ts +21 -7
  266. package/dist/types/stencil-public-runtime.d.ts +6 -4
  267. package/package.json +1 -1
  268. package/dist/cjs/index-C7Read21.js.map +0 -1
  269. package/dist/cjs/index-CUSIflVf.js.map +0 -1
  270. package/dist/collection/classes/structures/octree.structure.js +0 -115
  271. package/dist/collection/classes/structures/octree.structure.js.map +0 -1
  272. package/dist/components/p-5CJxFNEE.js.map +0 -1
  273. package/dist/components/p-B7VrEdgP.js.map +0 -1
  274. package/dist/components/p-BAPUTr3K.js.map +0 -1
  275. package/dist/components/p-BLmFBe2a.js.map +0 -1
  276. package/dist/components/p-BU2q3PRS.js.map +0 -1
  277. package/dist/components/p-BZ-j_4CK.js.map +0 -1
  278. package/dist/components/p-BaKb8ZLg.js.map +0 -1
  279. package/dist/components/p-Bb6od8He.js +0 -42
  280. package/dist/components/p-Bb6od8He.js.map +0 -1
  281. package/dist/components/p-BcQTDgzV.js.map +0 -1
  282. package/dist/components/p-BeVv4o5c.js.map +0 -1
  283. package/dist/components/p-BmJbJwkH.js +0 -167
  284. package/dist/components/p-BmJbJwkH.js.map +0 -1
  285. package/dist/components/p-BqrTPNyu.js.map +0 -1
  286. package/dist/components/p-BvlGgLAQ.js.map +0 -1
  287. package/dist/components/p-BzSz74Ci.js.map +0 -1
  288. package/dist/components/p-C6OxvITm.js +0 -168
  289. package/dist/components/p-C6OxvITm.js.map +0 -1
  290. package/dist/components/p-D-zg05gA.js.map +0 -1
  291. package/dist/components/p-Dozs0Zfn.js +0 -115
  292. package/dist/components/p-Dozs0Zfn.js.map +0 -1
  293. package/dist/components/p-DtmZW6eP.js.map +0 -1
  294. package/dist/components/p-V4ui5aWj.js.map +0 -1
  295. package/dist/components/p-_ntxNi8v.js.map +0 -1
  296. package/dist/components/p-a7KmQzo4.js.map +0 -1
  297. package/dist/components/p-aaxf-h5S.js +0 -159
  298. package/dist/components/p-aaxf-h5S.js.map +0 -1
  299. package/dist/components/p-jG1e48OE.js.map +0 -1
  300. package/dist/components/p-rQeWFfPG.js.map +0 -1
  301. package/dist/components/p-yZFrTtMQ.js.map +0 -1
  302. package/dist/esm/index-J4NpPimy.js.map +0 -1
  303. package/dist/esm/index-NiIEUDzj.js.map +0 -1
  304. package/dist/stencil/p-43202395.entry.js +0 -2
  305. package/dist/stencil/p-43202395.entry.js.map +0 -1
  306. package/dist/stencil/p-J4NpPimy.js +0 -2
  307. package/dist/stencil/p-J4NpPimy.js.map +0 -1
  308. package/dist/stencil/p-NiIEUDzj.js +0 -3
  309. package/dist/stencil/p-NiIEUDzj.js.map +0 -1
  310. package/dist/types/classes/structures/octree.structure.d.ts +0 -18
@@ -1,27 +1,27 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BqrTPNyu.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-BYanlgdq.js';
2
2
  import { K as KritzelMouseButton } from './p-D8W6LE-c.js';
3
- import { d as KritzelBaseObject, e as KritzelBaseCommand, f as KritzelBaseTool, g as KritzelEventHelper, U as UpdateObjectCommand, c as KritzelTextTool, b as KritzelBrushTool, K as KritzelText, a as KritzelPath, A as AddObjectCommand, h as KritzelToolRegistry, i as KritzelKeyboardHelper } from './p-B7VrEdgP.js';
4
- import { O as ObjectHelper } from './p-Bb6od8He.js';
5
- import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-BU2q3PRS.js';
6
- import { K as KritzelWorkspace } from './p-BeVv4o5c.js';
7
- import { d as defineCustomElement$2 } from './p-DtmZW6eP.js';
8
- import { d as defineCustomElement$1 } from './p-BLmFBe2a.js';
3
+ import { e as KritzelBaseObject, f as KritzelBaseCommand, g as KritzelBaseTool, h as KritzelEventHelper, U as UpdateObjectCommand, c as KritzelTextTool, b as KritzelBrushTool, K as KritzelText, a as KritzelPath, A as AddObjectCommand, i as KritzelToolRegistry, d as KritzelKeyboardHelper } from './p-DHSEK3rF.js';
4
+ import { O as ObjectHelper } from './p-DnUKql15.js';
5
+ import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-B1BLgWL1.js';
6
+ import { K as KritzelWorkspace } from './p-B_lb1FGi.js';
7
+ import { d as defineCustomElement$2 } from './p-BubxwvMA.js';
8
+ import { d as defineCustomElement$1 } from './p-p1Jkec_q.js';
9
9
 
10
10
  class KritzelImage extends KritzelBaseObject {
11
+ __class__ = 'KritzelImage';
12
+ src = '';
13
+ maxWidth = 300;
14
+ maxHeight = 300;
15
+ maxCompressionSize = 300;
16
+ isDebugInfoVisible = true;
11
17
  constructor(config) {
12
18
  super();
13
- this.__class__ = 'KritzelImage';
14
- this.src = '';
15
- this.maxWidth = 300;
16
- this.maxHeight = 300;
17
- this.maxCompressionSize = 300;
18
- this.isDebugInfoVisible = true;
19
- this.src = (config === null || config === void 0 ? void 0 : config.src) || '';
20
- this.x = (config === null || config === void 0 ? void 0 : config.x) || 0;
21
- this.y = (config === null || config === void 0 ? void 0 : config.y) || 0;
22
- this.translateX = (config === null || config === void 0 ? void 0 : config.translateX) || 0;
23
- this.translateY = (config === null || config === void 0 ? void 0 : config.translateY) || 0;
24
- this.scale = (config === null || config === void 0 ? void 0 : config.scale) || 1;
19
+ this.src = config?.src || '';
20
+ this.x = config?.x || 0;
21
+ this.y = config?.y || 0;
22
+ this.translateX = config?.translateX || 0;
23
+ this.translateY = config?.translateY || 0;
24
+ this.scale = config?.scale || 1;
25
25
  }
26
26
  static create(store) {
27
27
  const object = new KritzelImage();
@@ -61,6 +61,7 @@ class KritzelImage extends KritzelBaseObject {
61
61
  }
62
62
 
63
63
  class BatchCommand extends KritzelBaseCommand {
64
+ commands;
64
65
  constructor(store, initiator, commands, skipHistory = false) {
65
66
  super(store, initiator, skipHistory);
66
67
  this.commands = commands;
@@ -74,10 +75,11 @@ class BatchCommand extends KritzelBaseCommand {
74
75
  }
75
76
 
76
77
  class KritzelCustomElement extends KritzelBaseObject {
78
+ __class__ = 'KritzelCustomElement';
79
+ element;
80
+ isInteractive = true;
77
81
  constructor(config) {
78
82
  super();
79
- this.__class__ = 'KritzelCustomElement';
80
- this.isInteractive = true;
81
83
  if (config) {
82
84
  this.translateX = config.translateX || 0;
83
85
  this.translateY = config.translateY || 0;
@@ -126,26 +128,27 @@ class KritzelCustomElement extends KritzelBaseObject {
126
128
  }
127
129
 
128
130
  class RemoveObjectCommand extends KritzelBaseCommand {
131
+ object;
129
132
  constructor(store, initiator, object, skipHistory = false) {
130
133
  super(store, initiator, skipHistory);
131
134
  this.object = object;
132
135
  }
133
136
  execute() {
134
- this._store.state.objectsOctree.remove(object => object.id === this.object.id);
135
- this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
137
+ this._store.state.objectsMap.remove(object => object.id === this.object.id);
138
+ this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
136
139
  this._store.deleteObjectFromDatabase(this.object.id);
137
140
  }
138
141
  undo() {
139
- this._store.state.objectsOctree.insert(this.object);
140
- this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
142
+ this._store.state.objectsMap.insert(this.object);
143
+ this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
141
144
  this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
142
145
  }
143
146
  }
144
147
 
145
148
  class KritzelEraserTool extends KritzelBaseTool {
149
+ touchStartTimeout = null;
146
150
  constructor(store) {
147
151
  super(store);
148
- this.touchStartTimeout = null;
149
152
  }
150
153
  handlePointerDown(event) {
151
154
  if (event.pointerType === 'mouse') {
@@ -162,7 +165,6 @@ class KritzelEraserTool extends KritzelBaseTool {
162
165
  }
163
166
  }
164
167
  handlePointerMove(event) {
165
- var _a;
166
168
  if (event.pointerType === 'mouse') {
167
169
  if (this._store.state.isErasing) {
168
170
  const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
@@ -178,7 +180,7 @@ class KritzelEraserTool extends KritzelBaseTool {
178
180
  }
179
181
  if (event.pointerType === 'touch') {
180
182
  if (this._store.state.pointers.size === 1 && this._store.state.isErasing) {
181
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
183
+ const shadowRoot = this._store.state.host?.shadowRoot;
182
184
  if (!shadowRoot)
183
185
  return;
184
186
  const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
@@ -225,23 +227,30 @@ class KritzelEraserTool extends KritzelBaseTool {
225
227
  }
226
228
 
227
229
  class RemoveSelectionGroupCommand extends KritzelBaseCommand {
230
+ previousSelectionGroup;
228
231
  constructor(store, initiator, skipHistory = false) {
229
232
  super(store, initiator, skipHistory);
230
233
  this.previousSelectionGroup = this._store.state.selectionGroup;
231
234
  }
232
235
  execute() {
233
- this._store.state.objectsOctree.remove(object => { var _a; return object.id === ((_a = this.previousSelectionGroup) === null || _a === void 0 ? void 0 : _a.id); });
236
+ this._store.state.objectsMap.remove(object => object.id === this.previousSelectionGroup?.id);
234
237
  this._store.state.selectionGroup = null;
235
238
  }
236
239
  undo() {
237
240
  if (this.previousSelectionGroup) {
238
- this._store.state.objectsOctree.insert(this.previousSelectionGroup);
241
+ this._store.state.objectsMap.insert(this.previousSelectionGroup);
239
242
  this._store.state.selectionGroup = this.previousSelectionGroup;
240
243
  }
241
244
  }
242
245
  }
243
246
 
244
247
  class MoveSelectionGroupCommand extends KritzelBaseCommand {
248
+ selectionGroup;
249
+ startX;
250
+ startY;
251
+ endX;
252
+ endY;
253
+ skipExecution;
245
254
  constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false, skipHistory = false) {
246
255
  super(store, initiator, skipHistory);
247
256
  this.startX = startX;
@@ -266,20 +275,26 @@ class MoveSelectionGroupCommand extends KritzelBaseCommand {
266
275
  }
267
276
 
268
277
  class KritzelBaseHandler {
278
+ _store;
269
279
  constructor(store) {
270
280
  this._store = store;
271
281
  }
272
282
  }
273
283
 
274
284
  class KritzelMoveHandler extends KritzelBaseHandler {
285
+ dragStartX;
286
+ dragStartY;
287
+ startX;
288
+ startY;
289
+ endX;
290
+ endY;
275
291
  constructor(store) {
276
292
  super(store);
277
293
  }
278
294
  handlePointerDown(event) {
279
- var _a, _b;
280
295
  if (event.pointerType === 'mouse') {
281
296
  if (KritzelEventHelper.isLeftClick(event)) {
282
- if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
297
+ if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
283
298
  const clientX = event.clientX - this._store.offsetX;
284
299
  const clientY = event.clientY - this._store.offsetY;
285
300
  this._store.state.isDragging = true;
@@ -293,7 +308,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
293
308
  if (event.pointerType === 'touch') {
294
309
  const activePointers = Array.from(this._store.state.pointers.values());
295
310
  if (this._store.state.pointers.size === 1) {
296
- if (((_b = this._store.state.selectionGroup) === null || _b === void 0 ? void 0 : _b.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
311
+ if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
297
312
  const x = Math.round(activePointers[0].clientX - this._store.offsetX);
298
313
  const y = Math.round(activePointers[0].clientY - this._store.offsetY);
299
314
  this.dragStartX = x;
@@ -375,6 +390,9 @@ var KritzelHandleType;
375
390
  })(KritzelHandleType || (KritzelHandleType = {}));
376
391
 
377
392
  class ResizeSelectionGroupCommand extends KritzelBaseCommand {
393
+ newSize;
394
+ previousSize;
395
+ selectionGroup;
378
396
  constructor(store, initiator, previousSize, newSize, skipHistory = false) {
379
397
  super(store, initiator, skipHistory);
380
398
  this.previousSize = previousSize;
@@ -392,12 +410,12 @@ class ResizeSelectionGroupCommand extends KritzelBaseCommand {
392
410
  }
393
411
 
394
412
  class KritzelResizeHandler extends KritzelBaseHandler {
413
+ initialMouseX = 0;
414
+ initialMouseY = 0;
415
+ initialSize = { x: 0, y: 0, width: 0, height: 0 };
416
+ newSize = { x: 0, y: 0, width: 0, height: 0 };
395
417
  constructor(store) {
396
418
  super(store);
397
- this.initialMouseX = 0;
398
- this.initialMouseY = 0;
399
- this.initialSize = { x: 0, y: 0, width: 0, height: 0 };
400
- this.newSize = { x: 0, y: 0, width: 0, height: 0 };
401
419
  }
402
420
  handlePointerDown(event) {
403
421
  if (event.pointerType === 'mouse') {
@@ -521,7 +539,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
521
539
  if (this._store.state.isResizing) {
522
540
  const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
523
541
  const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
524
- return new UpdateObjectCommand(this._store, this, object, Object.assign({}, object));
542
+ return new UpdateObjectCommand(this._store, this, object, { ...object });
525
543
  });
526
544
  this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
527
545
  this._store.state.isResizing = false;
@@ -532,7 +550,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
532
550
  if (this._store.state.isResizing) {
533
551
  const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
534
552
  const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
535
- return new UpdateObjectCommand(this._store, this, object, Object.assign({}, object));
553
+ return new UpdateObjectCommand(this._store, this, object, { ...object });
536
554
  });
537
555
  this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
538
556
  this._store.state.isResizing = false;
@@ -544,6 +562,9 @@ class KritzelResizeHandler extends KritzelBaseHandler {
544
562
  }
545
563
 
546
564
  class RotateSelectionGroupCommand extends KritzelBaseCommand {
565
+ rotation;
566
+ initialRotation;
567
+ selectionGroup;
547
568
  constructor(store, initiator, rotation, skipHistory = false) {
548
569
  super(store, initiator, skipHistory);
549
570
  this.rotation = rotation;
@@ -554,23 +575,23 @@ class RotateSelectionGroupCommand extends KritzelBaseCommand {
554
575
  this._store.state.selectionGroup = this.selectionGroup;
555
576
  this._store.state.selectionGroup.rotate(this.rotation);
556
577
  this._store.state.selectionGroup.objects.forEach(object => {
557
- this._store.state.objectsOctree.update(object);
578
+ this._store.state.objectsMap.update(object);
558
579
  });
559
580
  }
560
581
  undo() {
561
582
  this._store.state.selectionGroup = this.selectionGroup;
562
583
  this._store.state.selectionGroup.rotate(this.rotation - this.initialRotation);
563
584
  this._store.state.selectionGroup.objects.forEach(object => {
564
- this._store.state.objectsOctree.update(object);
585
+ this._store.state.objectsMap.update(object);
565
586
  });
566
587
  }
567
588
  }
568
589
 
569
590
  class KritzelRotationHandler extends KritzelBaseHandler {
591
+ initialRotation = 0;
592
+ rotation = 0;
570
593
  constructor(store) {
571
594
  super(store);
572
- this.initialRotation = 0;
573
- this.rotation = 0;
574
595
  }
575
596
  handlePointerDown(event) {
576
597
  if (event.pointerType === 'mouse') {
@@ -680,11 +701,8 @@ class KritzelRotationHandler extends KritzelBaseHandler {
680
701
  }
681
702
 
682
703
  class KrtizelSelectionBox extends KritzelBaseObject {
683
- constructor() {
684
- super(...arguments);
685
- this.__class__ = 'KrtizelSelectionBox';
686
- this.objects = [];
687
- }
704
+ __class__ = 'KrtizelSelectionBox';
705
+ objects = [];
688
706
  static create(store) {
689
707
  const object = new KrtizelSelectionBox();
690
708
  object._store = store;
@@ -702,24 +720,30 @@ class KrtizelSelectionBox extends KritzelBaseObject {
702
720
  }
703
721
 
704
722
  class AddSelectionGroupCommand extends KritzelBaseCommand {
723
+ selectionGroup;
705
724
  constructor(store, initiator, selectionGroup, skipHistory = false) {
706
725
  super(store, initiator, skipHistory);
707
726
  this.selectionGroup = selectionGroup;
708
727
  }
709
728
  execute() {
710
- this._store.state.objectsOctree.remove(object => object instanceof KrtizelSelectionBox);
711
- this._store.state.objectsOctree.insert(this.selectionGroup);
729
+ this._store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
730
+ this._store.state.objectsMap.insert(this.selectionGroup);
712
731
  this._store.state.selectionGroup = this.selectionGroup;
713
732
  this._store.state.selectionBox = null;
714
733
  }
715
734
  undo() {
716
- this._store.state.objectsOctree.remove(object => object.id === this.selectionGroup.id);
735
+ this._store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);
717
736
  this._store.state.selectionGroup = null;
718
737
  this._store.state.selectionBox = null;
719
738
  }
720
739
  }
721
740
 
722
741
  class KritzelSelectionHandler extends KritzelBaseHandler {
742
+ startX;
743
+ startY;
744
+ touchStartX = 0;
745
+ touchStartY = 0;
746
+ touchStartTimeout = null;
723
747
  get isSelectionClick() {
724
748
  return this._store.state.selectionBox && this._store.state.selectionBox.width === 0 && this._store.state.selectionBox.height === 0;
725
749
  }
@@ -728,9 +752,6 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
728
752
  }
729
753
  constructor(store) {
730
754
  super(store);
731
- this.touchStartX = 0;
732
- this.touchStartY = 0;
733
- this.touchStartTimeout = null;
734
755
  }
735
756
  handlePointerDown(event) {
736
757
  if (event.pointerType === 'mouse') {
@@ -805,7 +826,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
805
826
  removeSelectionBox() {
806
827
  this._store.state.selectionBox = null;
807
828
  this._store.state.isSelecting = false;
808
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox);
829
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);
809
830
  this._store.rerender();
810
831
  }
811
832
  startMouseSelection(event) {
@@ -820,8 +841,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
820
841
  this._store.state.selectionGroup = null;
821
842
  this._store.state.selectionBox = selectionBox;
822
843
  this._store.state.isSelecting = true;
823
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
824
- this._store.state.objectsOctree.insert(selectionBox);
844
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
845
+ this._store.state.objectsMap.insert(selectionBox);
825
846
  }
826
847
  startTouchSelection() {
827
848
  const activePointers = Array.from(this._store.state.pointers.values());
@@ -842,8 +863,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
842
863
  this._store.state.selectionGroup = null;
843
864
  this._store.state.selectionBox = selectionBox;
844
865
  this._store.state.isSelecting = true;
845
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
846
- this._store.state.objectsOctree.insert(selectionBox);
866
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
867
+ this._store.state.objectsMap.insert(selectionBox);
847
868
  }
848
869
  updateMouseSelection(event) {
849
870
  let clientX, clientY;
@@ -931,6 +952,11 @@ class KritzelHoverHandler extends KritzelBaseHandler {
931
952
  }
932
953
 
933
954
  class KritzelSelectionTool extends KritzelBaseTool {
955
+ selectionHandler;
956
+ moveHandler;
957
+ hoverHandler;
958
+ resizeHandler;
959
+ rotationHandler;
934
960
  constructor(store) {
935
961
  super(store);
936
962
  this.selectionHandler = new KritzelSelectionHandler(this._store);
@@ -956,7 +982,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
956
982
  !this._store.state.isRotationHandleSelected) {
957
983
  this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));
958
984
  }
959
- if (selectedObject && selectedObject.isSelected === false && (selectedObject === null || selectedObject === void 0 ? void 0 : selectedObject.objects.length) === 1 && selectedObject.objects[0].isInteractive) {
985
+ if (selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {
960
986
  return;
961
987
  }
962
988
  }
@@ -1039,7 +1065,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
1039
1065
  getSelectedObject(event) {
1040
1066
  const path = event.composedPath().slice(1);
1041
1067
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
1042
- const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
1068
+ const object = this._store.findObjectById(objectElement?.id);
1043
1069
  if (!object) {
1044
1070
  return null;
1045
1071
  }
@@ -1055,21 +1081,19 @@ class KritzelSelectionTool extends KritzelBaseTool {
1055
1081
  }
1056
1082
  }
1057
1083
  getHandleType(event) {
1058
- var _a;
1059
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
1084
+ const shadowRoot = this._store.state.host?.shadowRoot;
1060
1085
  if (!shadowRoot)
1061
1086
  return;
1062
1087
  const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
1063
- const handle = elementAtPoint === null || elementAtPoint === void 0 ? void 0 : elementAtPoint.closest('.resize-handle-overlay');
1064
- return handle === null || handle === void 0 ? void 0 : handle.classList[1];
1088
+ const handle = elementAtPoint?.closest('.resize-handle-overlay');
1089
+ return handle?.classList[1];
1065
1090
  }
1066
1091
  isHandleSelected(event) {
1067
- var _a;
1068
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
1092
+ const shadowRoot = this._store.state.host?.shadowRoot;
1069
1093
  if (!shadowRoot)
1070
1094
  return false;
1071
1095
  const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
1072
- return !!(elementAtPoint === null || elementAtPoint === void 0 ? void 0 : elementAtPoint.classList.contains('resize-handle-overlay'));
1096
+ return !!elementAtPoint?.classList.contains('resize-handle-overlay');
1073
1097
  }
1074
1098
  isRotationHandleSelected(event) {
1075
1099
  const path = event.composedPath();
@@ -1078,6 +1102,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
1078
1102
  }
1079
1103
 
1080
1104
  class KritzelReviver {
1105
+ _store;
1081
1106
  constructor(store) {
1082
1107
  this._store = store;
1083
1108
  }
@@ -1134,12 +1159,13 @@ class KritzelReviver {
1134
1159
  }
1135
1160
 
1136
1161
  class KritzelSelectionGroup extends KritzelBaseObject {
1137
- constructor() {
1138
- super(...arguments);
1139
- this.__class__ = 'KritzelSelectionGroup';
1140
- this.objects = [];
1141
- this.unchangedObjects = [];
1142
- }
1162
+ __class__ = 'KritzelSelectionGroup';
1163
+ objects = [];
1164
+ unchangedObjects = [];
1165
+ minX;
1166
+ maxX;
1167
+ minY;
1168
+ maxY;
1143
1169
  get length() {
1144
1170
  return this.objects.length;
1145
1171
  }
@@ -1180,17 +1206,17 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1180
1206
  });
1181
1207
  this.translateX = x;
1182
1208
  this.translateY = y;
1183
- this._store.state.objectsOctree.update(this);
1209
+ this._store.state.objectsMap.update(this);
1184
1210
  }
1185
1211
  move(startX, startY, endX, endY) {
1186
1212
  const deltaX = (startX - endX) / this._store.state.scale;
1187
1213
  const deltaY = (startY - endY) / this._store.state.scale;
1188
1214
  this.translateX += deltaX;
1189
1215
  this.translateY += deltaY;
1190
- this._store.state.objectsOctree.update(this);
1216
+ this._store.state.objectsMap.update(this);
1191
1217
  this.objects.forEach(obj => {
1192
1218
  obj.move(startX, startY, endX, endY);
1193
- this._store.state.objectsOctree.update(obj);
1219
+ this._store.state.objectsMap.update(obj);
1194
1220
  });
1195
1221
  this.unchangedObjects.forEach(obj => {
1196
1222
  obj.translateX += deltaX;
@@ -1208,7 +1234,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1208
1234
  const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
1209
1235
  const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
1210
1236
  child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
1211
- this._store.state.objectsOctree.update(child);
1237
+ this._store.state.objectsMap.update(child);
1212
1238
  });
1213
1239
  this.refreshObjectDimensions();
1214
1240
  this.unchangedObjects = ObjectHelper.clone(this.objects);
@@ -1229,7 +1255,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1229
1255
  child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
1230
1256
  child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
1231
1257
  child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
1232
- this._store.state.objectsOctree.update(child);
1258
+ this._store.state.objectsMap.update(child);
1233
1259
  });
1234
1260
  }
1235
1261
  copy() {
@@ -1269,7 +1295,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1269
1295
  this.width = (this.maxX - this.minX - this.padding) * this.scale;
1270
1296
  this.height = (this.maxY - this.minY - this.padding) * this.scale;
1271
1297
  }
1272
- this._store.state.objectsOctree.update(this);
1298
+ this._store.state.objectsMap.update(this);
1273
1299
  }
1274
1300
  getOffsetXToCenter(obj) {
1275
1301
  const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;
@@ -1298,10 +1324,10 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1298
1324
  function _mergeNamespaces(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:true,get:function(){return t[r]}});}}));})),Object.freeze(e)}function copyExifWithoutOrientation(e,t){return new Promise((function(r,i){let o;return getApp1Segment(e).then((function(e){try{return o=e,r(new Blob([t.slice(0,2),o,t.slice(2)],{type:"image/jpeg"}))}catch(e){return i(e)}}),i)}))}const getApp1Segment=e=>new Promise(((t,r)=>{const i=new FileReader;i.addEventListener("load",(({target:{result:e}})=>{const i=new DataView(e);let o=0;if(65496!==i.getUint16(o))return r("not a valid JPEG");for(o+=2;;){const a=i.getUint16(o);if(65498===a)break;const s=i.getUint16(o+2);if(65505===a&&1165519206===i.getUint32(o+4)){const a=o+10;let f;switch(i.getUint16(a)){case 18761:f=true;break;case 19789:f=false;break;default:return r("TIFF header contains invalid endian")}if(42!==i.getUint16(a+2,f))return r("TIFF header contains invalid version");const l=i.getUint32(a+4,f),c=a+l+2+12*i.getUint16(a+l,f);for(let e=a+l+2;e<c;e+=12){if(274==i.getUint16(e,f)){if(3!==i.getUint16(e+2,f))return r("Orientation data type is invalid");if(1!==i.getUint32(e+4,f))return r("Orientation data count is invalid");i.setUint16(e+8,1,f);break}}return t(e.slice(o,o+2+s))}o+=2+s;}return t(new Blob)})),i.readAsArrayBuffer(e);}));var e={},t={get exports(){return e},set exports(t){e=t;}};!function(e){var r,i,UZIP={};t.exports=UZIP,UZIP.parse=function(e,t){for(var r=UZIP.bin.readUshort,i=UZIP.bin.readUint,o=0,a={},s=new Uint8Array(e),f=s.length-4;101010256!=i(s,f);)f--;o=f;o+=4;var l=r(s,o+=4);r(s,o+=2);var c=i(s,o+=2),u=i(s,o+=4);o+=4,o=u;for(var h=0;h<l;h++){i(s,o),o+=4,o+=4,o+=4,i(s,o+=4);c=i(s,o+=4);var d=i(s,o+=4),A=r(s,o+=4),g=r(s,o+2),p=r(s,o+4);o+=6;var m=i(s,o+=8);o+=4,o+=A+g+p,UZIP._readLocal(s,m,a,c,d,t);}return a},UZIP._readLocal=function(e,t,r,i,o,a){var s=UZIP.bin.readUshort,f=UZIP.bin.readUint;f(e,t),s(e,t+=4),s(e,t+=2);var l=s(e,t+=2);f(e,t+=2),f(e,t+=4),t+=4;var c=s(e,t+=8),u=s(e,t+=2);t+=2;var h=UZIP.bin.readUTF8(e,t,c);if(t+=c,t+=u,a)r[h]={size:o,csize:i};else {var d=new Uint8Array(e.buffer,t);if(0==l)r[h]=new Uint8Array(d.buffer.slice(t,t+i));else {if(8!=l)throw "unknown compression method: "+l;var A=new Uint8Array(o);UZIP.inflateRaw(d,A),r[h]=A;}}},UZIP.inflateRaw=function(e,t){return UZIP.F.inflate(e,t)},UZIP.inflate=function(e,t){return UZIP.inflateRaw(new Uint8Array(e.buffer,e.byteOffset+2,e.length-6),t)},UZIP.deflate=function(e,t){null==t&&(t={level:6});var r=0,i=new Uint8Array(50+Math.floor(1.1*e.length));i[r]=120,i[r+1]=156,r+=2,r=UZIP.F.deflateRaw(e,i,r,t.level);var o=UZIP.adler(e,0,e.length);return i[r+0]=o>>>24&255,i[r+1]=o>>>16&255,i[r+2]=o>>>8&255,i[r+3]=o>>>0&255,new Uint8Array(i.buffer,0,r+4)},UZIP.deflateRaw=function(e,t){null==t&&(t={level:6});var r=new Uint8Array(50+Math.floor(1.1*e.length)),i=UZIP.F.deflateRaw(e,r,i,t.level);return new Uint8Array(r.buffer,0,i)},UZIP.encode=function(e,t){null==t&&(t=false);var r=0,i=UZIP.bin.writeUint,o=UZIP.bin.writeUshort,a={};for(var s in e){var f=!UZIP._noNeed(s)&&!t,l=e[s],c=UZIP.crc.crc(l,0,l.length);a[s]={cpr:f,usize:l.length,crc:c,file:f?UZIP.deflateRaw(l):l};}for(var s in a)r+=a[s].file.length+30+46+2*UZIP.bin.sizeUTF8(s);r+=22;var u=new Uint8Array(r),h=0,d=[];for(var s in a){var A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,0);}var g=0,p=h;for(var s in a){A=a[s];d.push(h),h=UZIP._writeHeader(u,h,s,A,1,d[g++]);}var m=h-p;return i(u,h,101010256),h+=4,o(u,h+=4,g),o(u,h+=2,g),i(u,h+=2,m),i(u,h+=4,p),h+=4,h+=2,u.buffer},UZIP._noNeed=function(e){var t=e.split(".").pop().toLowerCase();return -1!="png,jpg,jpeg,zip".indexOf(t)},UZIP._writeHeader=function(e,t,r,i,o,a){var s=UZIP.bin.writeUint,f=UZIP.bin.writeUshort,l=i.file;return s(e,t,0==o?67324752:33639248),t+=4,1==o&&(t+=2),f(e,t,20),f(e,t+=2,0),f(e,t+=2,i.cpr?8:0),s(e,t+=2,0),s(e,t+=4,i.crc),s(e,t+=4,l.length),s(e,t+=4,i.usize),f(e,t+=4,UZIP.bin.sizeUTF8(r)),f(e,t+=2,0),t+=2,1==o&&(t+=2,t+=2,s(e,t+=6,a),t+=4),t+=UZIP.bin.writeUTF8(e,t,r),0==o&&(e.set(l,t),t+=l.length),t},UZIP.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var r=t,i=0;i<8;i++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r;}return e}(),update:function(e,t,r,i){for(var o=0;o<i;o++)e=UZIP.crc.table[255&(e^t[r+o])]^e>>>8;return e},crc:function(e,t,r){return 4294967295^UZIP.crc.update(4294967295,e,t,r)}},UZIP.adler=function(e,t,r){for(var i=1,o=0,a=t,s=t+r;a<s;){for(var f=Math.min(a+5552,s);a<f;)o+=i+=e[a++];i%=65521,o%=65521;}return o<<16|i},UZIP.bin={readUshort:function(e,t){return e[t]|e[t+1]<<8},writeUshort:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255;},readUint:function(e,t){return 16777216*e[t+3]+(e[t+2]<<16|e[t+1]<<8|e[t])},writeUint:function(e,t,r){e[t]=255&r,e[t+1]=r>>8&255,e[t+2]=r>>16&255,e[t+3]=r>>24&255;},readASCII:function(e,t,r){for(var i="",o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII:function(e,t,r){for(var i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i);},pad:function(e){return e.length<2?"0"+e:e},readUTF8:function(e,t,r){for(var i,o="",a=0;a<r;a++)o+="%"+UZIP.bin.pad(e[t+a].toString(16));try{i=decodeURIComponent(o);}catch(i){return UZIP.bin.readASCII(e,t,r)}return i},writeUTF8:function(e,t,r){for(var i=r.length,o=0,a=0;a<i;a++){var s=r.charCodeAt(a);if(0==(4294967168&s))e[t+o]=s,o++;else if(0==(4294965248&s))e[t+o]=192|s>>6,e[t+o+1]=128|s>>0&63,o+=2;else if(0==(4294901760&s))e[t+o]=224|s>>12,e[t+o+1]=128|s>>6&63,e[t+o+2]=128|s>>0&63,o+=3;else {if(0!=(4292870144&s))throw "e";e[t+o]=240|s>>18,e[t+o+1]=128|s>>12&63,e[t+o+2]=128|s>>6&63,e[t+o+3]=128|s>>0&63,o+=4;}}return o},sizeUTF8:function(e){for(var t=e.length,r=0,i=0;i<t;i++){var o=e.charCodeAt(i);if(0==(4294967168&o))r++;else if(0==(4294965248&o))r+=2;else if(0==(4294901760&o))r+=3;else {if(0!=(4292870144&o))throw "e";r+=4;}}return r}},UZIP.F={},UZIP.F.deflateRaw=function(e,t,r,i){var o=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][i],a=UZIP.F.U,s=UZIP.F._goodIndex;var f=UZIP.F._putsE,l=0,c=r<<3,u=0,h=e.length;if(0==i){for(;l<h;){f(t,c,l+(_=Math.min(65535,h-l))==h?1:0),c=UZIP.F._copyExact(e,l,_,t,c+8),l+=_;}return c>>>3}var d=a.lits,A=a.strt,g=a.prev,p=0,m=0,w=0,v=0,b=0,y=0;for(h>2&&(A[y=UZIP.F._hash(e,0)]=0),l=0;l<h;l++){if(b=y,l+1<h-2){y=UZIP.F._hash(e,l+1);var E=l+1&32767;g[E]=A[y],A[y]=E;}if(u<=l){(p>14e3||m>26697)&&h-l>100&&(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(l==h-1||u==h?1:0,d,p,v,e,w,l-w,t,c),p=m=v=0,w=l);var F=0;l<h-2&&(F=UZIP.F._bestMatch(e,l,g,b,Math.min(o[2],h-l),o[3]));var _=F>>>16,B=65535&F;if(0!=F){B=65535&F;var U=s(_=F>>>16,a.of0);a.lhst[257+U]++;var C=s(B,a.df0);a.dhst[C]++,v+=a.exb[U]+a.dxb[C],d[p]=_<<23|l-u,d[p+1]=B<<16|U<<8|C,p+=2,u=l+_;}else a.lhst[e[l]]++;m++;}}for(w==l&&0!=e.length||(u<l&&(d[p]=l-u,p+=2,u=l),c=UZIP.F._writeBlock(1,d,p,v,e,w,l-w,t,c),p=0,m=0,p=m=v=0,w=l);0!=(7&c);)c++;return c>>>3},UZIP.F._bestMatch=function(e,t,r,i,o,a){var s=32767&t,f=r[s],l=s-f+32768&32767;if(f==s||i!=UZIP.F._hash(e,t-l))return 0;for(var c=0,u=0,h=Math.min(32767,t);l<=h&&0!=--a&&f!=s;){if(0==c||e[t+c]==e[t+c-l]){var d=UZIP.F._howLong(e,t,l);if(d>c){if(u=l,(c=d)>=o)break;l+2<d&&(d=l+2);for(var A=0,g=0;g<d-2;g++){var p=t-l+g+32768&32767,m=p-r[p]+32768&32767;m>A&&(A=m,f=p);}}}l+=(s=f)-(f=r[s])+32768&32767;}return c<<16|u},UZIP.F._howLong=function(e,t,r){if(e[t]!=e[t-r]||e[t+1]!=e[t+1-r]||e[t+2]!=e[t+2-r])return 0;var i=t,o=Math.min(e.length,t+258);for(t+=3;t<o&&e[t]==e[t-r];)t++;return t-i},UZIP.F._hash=function(e,t){return (e[t]<<8|e[t+1])+(e[t+2]<<4)&65535},UZIP.saved=0,UZIP.F._writeBlock=function(e,t,r,i,o,a,s,f,l){var c,u,h,d,A,g,p,m,w,v=UZIP.F.U,b=UZIP.F._putsF,y=UZIP.F._putsE;v.lhst[256]++,u=(c=UZIP.F.getTrees())[0],h=c[1],d=c[2],A=c[3],g=c[4],p=c[5],m=c[6],w=c[7];var E=32+(0==(l+3&7)?0:8-(l+3&7))+(s<<3),F=i+UZIP.F.contSize(v.fltree,v.lhst)+UZIP.F.contSize(v.fdtree,v.dhst),_=i+UZIP.F.contSize(v.ltree,v.lhst)+UZIP.F.contSize(v.dtree,v.dhst);_+=14+3*p+UZIP.F.contSize(v.itree,v.ihst)+(2*v.ihst[16]+3*v.ihst[17]+7*v.ihst[18]);for(var B=0;B<286;B++)v.lhst[B]=0;for(B=0;B<30;B++)v.dhst[B]=0;for(B=0;B<19;B++)v.ihst[B]=0;var U=E<F&&E<_?0:F<_?1:2;if(b(f,l,e),b(f,l+1,U),l+=3,0==U){for(;0!=(7&l);)l++;l=UZIP.F._copyExact(o,a,s,f,l);}else {var C,I;if(1==U&&(C=v.fltree,I=v.fdtree),2==U){UZIP.F.makeCodes(v.ltree,u),UZIP.F.revCodes(v.ltree,u),UZIP.F.makeCodes(v.dtree,h),UZIP.F.revCodes(v.dtree,h),UZIP.F.makeCodes(v.itree,d),UZIP.F.revCodes(v.itree,d),C=v.ltree,I=v.dtree,y(f,l,A-257),y(f,l+=5,g-1),y(f,l+=5,p-4),l+=4;for(var Q=0;Q<p;Q++)y(f,l+3*Q,v.itree[1+(v.ordr[Q]<<1)]);l+=3*p,l=UZIP.F._codeTiny(m,v.itree,f,l),l=UZIP.F._codeTiny(w,v.itree,f,l);}for(var M=a,x=0;x<r;x+=2){for(var S=t[x],R=S>>>23,T=M+(8388607&S);M<T;)l=UZIP.F._writeLit(o[M++],C,f,l);if(0!=R){var O=t[x+1],P=O>>16,H=O>>8&255,L=255&O;y(f,l=UZIP.F._writeLit(257+H,C,f,l),R-v.of0[H]),l+=v.exb[H],b(f,l=UZIP.F._writeLit(L,I,f,l),P-v.df0[L]),l+=v.dxb[L],M+=R;}}l=UZIP.F._writeLit(256,C,f,l);}return l},UZIP.F._copyExact=function(e,t,r,i,o){var a=o>>>3;return i[a]=r,i[a+1]=r>>>8,i[a+2]=255-i[a],i[a+3]=255-i[a+1],a+=4,i.set(new Uint8Array(e.buffer,t,r),a),o+(r+4<<3)},UZIP.F.getTrees=function(){for(var e=UZIP.F.U,t=UZIP.F._hufTree(e.lhst,e.ltree,15),r=UZIP.F._hufTree(e.dhst,e.dtree,15),i=[],o=UZIP.F._lenCodes(e.ltree,i),a=[],s=UZIP.F._lenCodes(e.dtree,a),f=0;f<i.length;f+=2)e.ihst[i[f]]++;for(f=0;f<a.length;f+=2)e.ihst[a[f]]++;for(var l=UZIP.F._hufTree(e.ihst,e.itree,7),c=19;c>4&&0==e.itree[1+(e.ordr[c-1]<<1)];)c--;return [t,r,l,o,s,c,i,a]},UZIP.F.getSecond=function(e){for(var t=[],r=0;r<e.length;r+=2)t.push(e[r+1]);return t},UZIP.F.nonZero=function(e){for(var t="",r=0;r<e.length;r+=2)0!=e[r+1]&&(t+=(r>>1)+",");return t},UZIP.F.contSize=function(e,t){for(var r=0,i=0;i<t.length;i++)r+=t[i]*e[1+(i<<1)];return r},UZIP.F._codeTiny=function(e,t,r,i){for(var o=0;o<e.length;o+=2){var a=e[o],s=e[o+1];i=UZIP.F._writeLit(a,t,r,i);var f=16==a?2:17==a?3:7;a>15&&(UZIP.F._putsE(r,i,s,f),i+=f);}return i},UZIP.F._lenCodes=function(e,t){for(var r=e.length;2!=r&&0==e[r-1];)r-=2;for(var i=0;i<r;i+=2){var o=e[i+1],a=i+3<r?e[i+3]:-1,s=i+5<r?e[i+5]:-1,f=0==i?-1:e[i-1];if(0==o&&a==o&&s==o){for(var l=i+5;l+2<r&&e[l+2]==o;)l+=2;(c=Math.min(l+1-i>>>1,138))<11?t.push(17,c-3):t.push(18,c-11),i+=2*c-2;}else if(o==f&&a==o&&s==o){for(l=i+5;l+2<r&&e[l+2]==o;)l+=2;var c=Math.min(l+1-i>>>1,6);t.push(16,c-3),i+=2*c-2;}else t.push(o,0);}return r>>>1},UZIP.F._hufTree=function(e,t,r){var i=[],o=e.length,a=t.length,s=0;for(s=0;s<a;s+=2)t[s]=0,t[s+1]=0;for(s=0;s<o;s++)0!=e[s]&&i.push({lit:s,f:e[s]});var f=i.length,l=i.slice(0);if(0==f)return 0;if(1==f){var c=i[0].lit;l=0==c?1:0;return t[1+(c<<1)]=1,t[1+(l<<1)]=1,1}i.sort((function(e,t){return e.f-t.f}));var u=i[0],h=i[1],d=0,A=1,g=2;for(i[0]={lit:-1,f:u.f+h.f,l:u,r:h,d:0};A!=f-1;)u=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],h=d!=A&&(g==f||i[d].f<i[g].f)?i[d++]:i[g++],i[A++]={lit:-1,f:u.f+h.f,l:u,r:h};var p=UZIP.F.setDepth(i[A-1],0);for(p>r&&(UZIP.F.restrictDepth(l,r,p),p=r),s=0;s<f;s++)t[1+(l[s].lit<<1)]=l[s].d;return p},UZIP.F.setDepth=function(e,t){return -1!=e.lit?(e.d=t,t):Math.max(UZIP.F.setDepth(e.l,t+1),UZIP.F.setDepth(e.r,t+1))},UZIP.F.restrictDepth=function(e,t,r){var i=0,o=1<<r-t,a=0;for(e.sort((function(e,t){return t.d==e.d?e.f-t.f:t.d-e.d})),i=0;i<e.length&&e[i].d>t;i++){var s=e[i].d;e[i].d=t,a+=o-(1<<r-s);}for(a>>>=r-t;a>0;){(s=e[i].d)<t?(e[i].d++,a-=1<<t-s-1):i++;}for(;i>=0;i--)e[i].d==t&&a<0&&(e[i].d--,a++);0!=a&&console.log("debt left");},UZIP.F._goodIndex=function(e,t){var r=0;return t[16|r]<=e&&(r|=16),t[8|r]<=e&&(r|=8),t[4|r]<=e&&(r|=4),t[2|r]<=e&&(r|=2),t[1|r]<=e&&(r|=1),r},UZIP.F._writeLit=function(e,t,r,i){return UZIP.F._putsF(r,i,t[e<<1]),i+t[1+(e<<1)]},UZIP.F.inflate=function(e,t){var r=Uint8Array;if(3==e[0]&&0==e[1])return t||new r(0);var i=UZIP.F,o=i._bitsF,a=i._bitsE,s=i._decodeTiny,f=i.makeCodes,l=i.codes2map,c=i._get17,u=i.U,h=null==t;h&&(t=new r(e.length>>>2<<3));for(var d,A,g=0,p=0,m=0,w=0,v=0,b=0,y=0,E=0,F=0;0==g;)if(g=o(e,F,1),p=o(e,F+1,2),F+=3,0!=p){if(h&&(t=UZIP.F._check(t,E+(1<<17))),1==p&&(d=u.flmap,A=u.fdmap,b=511,y=31),2==p){m=a(e,F,5)+257,w=a(e,F+5,5)+1,v=a(e,F+10,4)+4,F+=14;for(var _=0;_<38;_+=2)u.itree[_]=0,u.itree[_+1]=0;var B=1;for(_=0;_<v;_++){var U=a(e,F+3*_,3);u.itree[1+(u.ordr[_]<<1)]=U,U>B&&(B=U);}F+=3*v,f(u.itree,B),l(u.itree,B,u.imap),d=u.lmap,A=u.dmap,F=s(u.imap,(1<<B)-1,m+w,e,F,u.ttree);var C=i._copyOut(u.ttree,0,m,u.ltree);b=(1<<C)-1;var I=i._copyOut(u.ttree,m,w,u.dtree);y=(1<<I)-1,f(u.ltree,C),l(u.ltree,C,d),f(u.dtree,I),l(u.dtree,I,A);}for(;;){var Q=d[c(e,F)&b];F+=15&Q;var M=Q>>>4;if(M>>>8==0)t[E++]=M;else {if(256==M)break;var x=E+M-254;if(M>264){var S=u.ldef[M-257];x=E+(S>>>3)+a(e,F,7&S),F+=7&S;}var R=A[c(e,F)&y];F+=15&R;var T=R>>>4,O=u.ddef[T],P=(O>>>4)+o(e,F,15&O);for(F+=15&O,h&&(t=UZIP.F._check(t,E+(1<<17)));E<x;)t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P],t[E]=t[E++-P];E=x;}}}else {0!=(7&F)&&(F+=8-(7&F));var H=4+(F>>>3),L=e[H-4]|e[H-3]<<8;h&&(t=UZIP.F._check(t,E+L)),t.set(new r(e.buffer,e.byteOffset+H,L),E),F=H+L<<3,E+=L;}return t.length==E?t:t.slice(0,E)},UZIP.F._check=function(e,t){var r=e.length;if(t<=r)return e;var i=new Uint8Array(Math.max(r<<1,t));return i.set(e,0),i},UZIP.F._decodeTiny=function(e,t,r,i,o,a){for(var s=UZIP.F._bitsE,f=UZIP.F._get17,l=0;l<r;){var c=e[f(i,o)&t];o+=15&c;var u=c>>>4;if(u<=15)a[l]=u,l++;else {var h=0,d=0;16==u?(d=3+s(i,o,2),o+=2,h=a[l-1]):17==u?(d=3+s(i,o,3),o+=3):18==u&&(d=11+s(i,o,7),o+=7);for(var A=l+d;l<A;)a[l]=h,l++;}}return o},UZIP.F._copyOut=function(e,t,r,i){for(var o=0,a=0,s=i.length>>>1;a<r;){var f=e[a+t];i[a<<1]=0,i[1+(a<<1)]=f,f>o&&(o=f),a++;}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},UZIP.F.makeCodes=function(e,t){for(var r,i,o,a,s=UZIP.F.U,f=e.length,l=s.bl_count,c=0;c<=t;c++)l[c]=0;for(c=1;c<f;c+=2)l[e[c]]++;var u=s.next_code;for(r=0,l[0]=0,i=1;i<=t;i++)r=r+l[i-1]<<1,u[i]=r;for(o=0;o<f;o+=2)0!=(a=e[o+1])&&(e[o]=u[a],u[a]++);},UZIP.F.codes2map=function(e,t,r){for(var i=e.length,o=UZIP.F.U.rev15,a=0;a<i;a+=2)if(0!=e[a+1])for(var s=a>>1,f=e[a+1],l=s<<4|f,c=t-f,u=e[a]<<c,h=u+(1<<c);u!=h;){r[o[u]>>>15-t]=l,u++;}},UZIP.F.revCodes=function(e,t){for(var r=UZIP.F.U.rev15,i=15-t,o=0;o<e.length;o+=2){var a=e[o]<<t-e[o+1];e[o]=r[a]>>>i;}},UZIP.F._putsE=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8;},UZIP.F._putsF=function(e,t,r){r<<=7&t;var i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16;},UZIP.F._bitsE=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},UZIP.F._bitsF=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},UZIP.F._get17=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},UZIP.F._get25=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},UZIP.F.U=(r=Uint16Array,i=Uint32Array,{next_code:new r(16),bl_count:new r(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new r(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new i(32),flmap:new r(512),fltree:[],fdmap:new r(32),fdtree:[],lmap:new r(32768),ltree:[],ttree:[],dmap:new r(32768),dtree:[],imap:new r(512),itree:[],rev15:new r(32768),lhst:new i(286),dhst:new i(30),ihst:new i(19),lits:new i(15e3),strt:new r(65536),prev:new r(32768)}),function(){for(var e=UZIP.F.U,t=0;t<32768;t++){var r=t;r=(4278255360&(r=(4042322160&(r=(3435973836&(r=(2863311530&r)>>>1|(1431655765&r)<<1))>>>2|(858993459&r)<<2))>>>4|(252645135&r)<<4))>>>8|(16711935&r)<<8,e.rev15[t]=(r>>>16|r<<16)>>>17;}function pushV(e,t,r){for(;0!=t--;)e.push(0,r);}for(t=0;t<32;t++)e.ldef[t]=e.of0[t]<<3|e.exb[t],e.ddef[t]=e.df0[t]<<4|e.dxb[t];pushV(e.fltree,144,8),pushV(e.fltree,112,9),pushV(e.fltree,24,7),pushV(e.fltree,8,8),UZIP.F.makeCodes(e.fltree,9),UZIP.F.codes2map(e.fltree,9,e.flmap),UZIP.F.revCodes(e.fltree,9),pushV(e.fdtree,32,5),UZIP.F.makeCodes(e.fdtree,5),UZIP.F.codes2map(e.fdtree,5,e.fdmap),UZIP.F.revCodes(e.fdtree,5),pushV(e.itree,19,0),pushV(e.ltree,286,0),pushV(e.dtree,30,0),pushV(e.ttree,320,0);}();}();var UZIP=_mergeNamespaces({__proto__:null,default:e},[e]);const UPNG=function(){var e={nextZero(e,t){for(;0!=e[t];)t++;return t},readUshort:(e,t)=>e[t]<<8|e[t+1],writeUshort(e,t,r){e[t]=r>>8&255,e[t+1]=255&r;},readUint:(e,t)=>16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3]),writeUint(e,t,r){e[t]=r>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r;},readASCII(e,t,r){let i="";for(let o=0;o<r;o++)i+=String.fromCharCode(e[t+o]);return i},writeASCII(e,t,r){for(let i=0;i<r.length;i++)e[t+i]=r.charCodeAt(i);},readBytes(e,t,r){const i=[];for(let o=0;o<r;o++)i.push(e[t+o]);return i},pad:e=>e.length<2?`0${e}`:e,readUTF8(t,r,i){let o,a="";for(let o=0;o<i;o++)a+=`%${e.pad(t[r+o].toString(16))}`;try{o=decodeURIComponent(a);}catch(o){return e.readASCII(t,r,i)}return o}};function decodeImage(t,r,i,o){const a=r*i,s=_getBPP(o),f=Math.ceil(r*s/8),l=new Uint8Array(4*a),c=new Uint32Array(l.buffer),{ctype:u}=o,{depth:h}=o,d=e.readUshort;if(6==u){const e=a<<2;if(8==h)for(var A=0;A<e;A+=4)l[A]=t[A],l[A+1]=t[A+1],l[A+2]=t[A+2],l[A+3]=t[A+3];if(16==h)for(A=0;A<e;A++)l[A]=t[A<<1];}else if(2==u){const e=o.tabs.tRNS;if(null==e){if(8==h)for(A=0;A<a;A++){var g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g];}if(16==h)for(A=0;A<a;A++){g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g];}}else {var p=e[0];const r=e[1],i=e[2];if(8==h)for(A=0;A<a;A++){var m=A<<2;g=3*A;c[A]=255<<24|t[g+2]<<16|t[g+1]<<8|t[g],t[g]==p&&t[g+1]==r&&t[g+2]==i&&(l[m+3]=0);}if(16==h)for(A=0;A<a;A++){m=A<<2,g=6*A;c[A]=255<<24|t[g+4]<<16|t[g+2]<<8|t[g],d(t,g)==p&&d(t,g+2)==r&&d(t,g+4)==i&&(l[m+3]=0);}}}else if(3==u){const e=o.tabs.PLTE,s=o.tabs.tRNS,c=s?s.length:0;if(1==h)for(var w=0;w<i;w++){var v=w*f,b=w*r;for(A=0;A<r;A++){m=b+A<<2;var y=3*(E=t[v+(A>>3)]>>7-((7&A)<<0)&1);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}}if(2==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>2)]>>6-((3&A)<<1)&3);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}if(4==h)for(w=0;w<i;w++)for(v=w*f,b=w*r,A=0;A<r;A++){m=b+A<<2,y=3*(E=t[v+(A>>1)]>>4-((1&A)<<2)&15);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}if(8==h)for(A=0;A<a;A++){var E;m=A<<2,y=3*(E=t[A]);l[m]=e[y],l[m+1]=e[y+1],l[m+2]=e[y+2],l[m+3]=E<c?s[E]:255;}}else if(4==u){if(8==h)for(A=0;A<a;A++){m=A<<2;var F=t[_=A<<1];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+1];}if(16==h)for(A=0;A<a;A++){var _;m=A<<2,F=t[_=A<<2];l[m]=F,l[m+1]=F,l[m+2]=F,l[m+3]=t[_+2];}}else if(0==u)for(p=o.tabs.tRNS?o.tabs.tRNS:-1,w=0;w<i;w++){const e=w*f,i=w*r;if(1==h)for(var B=0;B<r;B++){var U=(F=255*(t[e+(B>>>3)]>>>7-(7&B)&1))==255*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(2==h)for(B=0;B<r;B++){U=(F=85*(t[e+(B>>>2)]>>>6-((3&B)<<1)&3))==85*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(4==h)for(B=0;B<r;B++){U=(F=17*(t[e+(B>>>1)]>>>4-((1&B)<<2)&15))==17*p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(8==h)for(B=0;B<r;B++){U=(F=t[e+B])==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}else if(16==h)for(B=0;B<r;B++){F=t[e+(B<<1)],U=d(t,e+(B<<1))==p?0:255;c[i+B]=U<<24|F<<16|F<<8|F;}}return l}function _decompress(e,r,i,o){const a=_getBPP(e),s=Math.ceil(i*a/8),f=new Uint8Array((s+1+e.interlace)*o);return r=e.tabs.CgBI?t(r,f):_inflate(r,f),0==e.interlace?r=_filterZero(r,e,0,i,o):1==e.interlace&&(r=function _readInterlace(e,t){const r=t.width,i=t.height,o=_getBPP(t),a=o>>3,s=Math.ceil(r*o/8),f=new Uint8Array(i*s);let l=0;const c=[0,0,4,0,2,0,1],u=[0,4,0,2,0,1,0],h=[8,8,8,4,4,2,2],d=[8,8,4,4,2,2,1];let A=0;for(;A<7;){const p=h[A],m=d[A];let w=0,v=0,b=c[A];for(;b<i;)b+=p,v++;let y=u[A];for(;y<r;)y+=m,w++;const E=Math.ceil(w*o/8);_filterZero(e,t,l,w,v);let F=0,_=c[A];for(;_<i;){let t=u[A],i=l+F*E<<3;for(;t<r;){var g;if(1==o)g=(g=e[i>>3])>>7-(7&i)&1,f[_*s+(t>>3)]|=g<<7-((7&t)<<0);if(2==o)g=(g=e[i>>3])>>6-(7&i)&3,f[_*s+(t>>2)]|=g<<6-((3&t)<<1);if(4==o)g=(g=e[i>>3])>>4-(7&i)&15,f[_*s+(t>>1)]|=g<<4-((1&t)<<2);if(o>=8){const r=_*s+t*a;for(let t=0;t<a;t++)f[r+t]=e[(i>>3)+t];}i+=o,t+=m;}F++,_+=p;}w*v!=0&&(l+=v*(1+E)),A+=1;}return f}(r,e)),r}function _inflate(e,r){return t(new Uint8Array(e.buffer,2,e.length-6),r)}var t=function(){const e={H:{}};return e.H.N=function(t,r){const i=Uint8Array;let o,a,s=0,f=0,l=0,c=0,u=0,h=0,d=0,A=0,g=0;if(3==t[0]&&0==t[1])return r||new i(0);const p=e.H,m=p.b,w=p.e,v=p.R,b=p.n,y=p.A,E=p.Z,F=p.m,_=null==r;for(_&&(r=new i(t.length>>>2<<5));0==s;)if(s=m(t,g,1),f=m(t,g+1,2),g+=3,0!=f){if(_&&(r=e.H.W(r,A+(1<<17))),1==f&&(o=F.J,a=F.h,h=511,d=31),2==f){l=w(t,g,5)+257,c=w(t,g+5,5)+1,u=w(t,g+10,4)+4,g+=14;let e=1;for(var B=0;B<38;B+=2)F.Q[B]=0,F.Q[B+1]=0;for(B=0;B<u;B++){const r=w(t,g+3*B,3);F.Q[1+(F.X[B]<<1)]=r,r>e&&(e=r);}g+=3*u,b(F.Q,e),y(F.Q,e,F.u),o=F.w,a=F.d,g=v(F.u,(1<<e)-1,l+c,t,g,F.v);const r=p.V(F.v,0,l,F.C);h=(1<<r)-1;const i=p.V(F.v,l,c,F.D);d=(1<<i)-1,b(F.C,r),y(F.C,r,o),b(F.D,i),y(F.D,i,a);}for(;;){const e=o[E(t,g)&h];g+=15&e;const i=e>>>4;if(i>>>8==0)r[A++]=i;else {if(256==i)break;{let e=A+i-254;if(i>264){const r=F.q[i-257];e=A+(r>>>3)+w(t,g,7&r),g+=7&r;}const o=a[E(t,g)&d];g+=15&o;const s=o>>>4,f=F.c[s],l=(f>>>4)+m(t,g,15&f);for(g+=15&f;A<e;)r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l],r[A]=r[A++-l];A=e;}}}}else {0!=(7&g)&&(g+=8-(7&g));const o=4+(g>>>3),a=t[o-4]|t[o-3]<<8;_&&(r=e.H.W(r,A+a)),r.set(new i(t.buffer,t.byteOffset+o,a),A),g=o+a<<3,A+=a;}return r.length==A?r:r.slice(0,A)},e.H.W=function(e,t){const r=e.length;if(t<=r)return e;const i=new Uint8Array(r<<1);return i.set(e,0),i},e.H.R=function(t,r,i,o,a,s){const f=e.H.e,l=e.H.Z;let c=0;for(;c<i;){const e=t[l(o,a)&r];a+=15&e;const i=e>>>4;if(i<=15)s[c]=i,c++;else {let e=0,t=0;16==i?(t=3+f(o,a,2),a+=2,e=s[c-1]):17==i?(t=3+f(o,a,3),a+=3):18==i&&(t=11+f(o,a,7),a+=7);const r=c+t;for(;c<r;)s[c]=e,c++;}}return a},e.H.V=function(e,t,r,i){let o=0,a=0;const s=i.length>>>1;for(;a<r;){const r=e[a+t];i[a<<1]=0,i[1+(a<<1)]=r,r>o&&(o=r),a++;}for(;a<s;)i[a<<1]=0,i[1+(a<<1)]=0,a++;return o},e.H.n=function(t,r){const i=e.H.m,o=t.length;let a,s,f;let l;const c=i.j;for(var u=0;u<=r;u++)c[u]=0;for(u=1;u<o;u+=2)c[t[u]]++;const h=i.K;for(a=0,c[0]=0,s=1;s<=r;s++)a=a+c[s-1]<<1,h[s]=a;for(f=0;f<o;f+=2)l=t[f+1],0!=l&&(t[f]=h[l],h[l]++);},e.H.A=function(t,r,i){const o=t.length,a=e.H.m.r;for(let e=0;e<o;e+=2)if(0!=t[e+1]){const o=e>>1,s=t[e+1],f=o<<4|s,l=r-s;let c=t[e]<<l;const u=c+(1<<l);for(;c!=u;){i[a[c]>>>15-r]=f,c++;}}},e.H.l=function(t,r){const i=e.H.m.r,o=15-r;for(let e=0;e<t.length;e+=2){const a=t[e]<<r-t[e+1];t[e]=i[a]>>>o;}},e.H.M=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8;},e.H.I=function(e,t,r){r<<=7&t;const i=t>>>3;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16;},e.H.e=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8)>>>(7&t)&(1<<r)-1},e.H.b=function(e,t,r){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)&(1<<r)-1},e.H.Z=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16)>>>(7&t)},e.H.i=function(e,t){return (e[t>>>3]|e[1+(t>>>3)]<<8|e[2+(t>>>3)]<<16|e[3+(t>>>3)]<<24)>>>(7&t)},e.H.m=function(){const e=Uint16Array,t=Uint32Array;return {K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new t(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new t(286),Y:new t(30),a:new t(19),t:new t(15e3),k:new e(65536),g:new e(32768)}}(),function(){const t=e.H.m;for(var r=0;r<32768;r++){let e=r;e=(2863311530&e)>>>1|(1431655765&e)<<1,e=(3435973836&e)>>>2|(858993459&e)<<2,e=(4042322160&e)>>>4|(252645135&e)<<4,e=(4278255360&e)>>>8|(16711935&e)<<8,t.r[r]=(e>>>16|e<<16)>>>17;}function n(e,t,r){for(;0!=t--;)e.push(0,r);}for(r=0;r<32;r++)t.q[r]=t.S[r]<<3|t.T[r],t.c[r]=t.p[r]<<4|t.z[r];n(t._,144,8),n(t._,112,9),n(t._,24,7),n(t._,8,8),e.H.n(t._,9),e.H.A(t._,9,t.J),e.H.l(t._,9),n(t.$,32,5),e.H.n(t.$,5),e.H.A(t.$,5,t.h),e.H.l(t.$,5),n(t.Q,19,0),n(t.C,286,0),n(t.D,30,0),n(t.v,320,0);}(),e.H.N}();function _getBPP(e){return [1,null,3,1,2,null,4][e.ctype]*e.depth}function _filterZero(e,t,r,i,o){let a=_getBPP(t);const s=Math.ceil(i*a/8);let f,l;a=Math.ceil(a/8);let c=e[r],u=0;if(c>1&&(e[r]=[0,0,1][c-2]),3==c)for(u=a;u<s;u++)e[u+1]=e[u+1]+(e[u+1-a]>>>1)&255;for(let t=0;t<o;t++)if(f=r+t*s,l=f+t+1,c=e[l-1],u=0,0==c)for(;u<s;u++)e[f+u]=e[l+u];else if(1==c){for(;u<a;u++)e[f+u]=e[l+u];for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-a];}else if(2==c)for(;u<s;u++)e[f+u]=e[l+u]+e[f+u-s];else if(3==c){for(;u<a;u++)e[f+u]=e[l+u]+(e[f+u-s]>>>1);for(;u<s;u++)e[f+u]=e[l+u]+(e[f+u-s]+e[f+u-a]>>>1);}else {for(;u<a;u++)e[f+u]=e[l+u]+_paeth(0,e[f+u-s],0);for(;u<s;u++)e[f+u]=e[l+u]+_paeth(e[f+u-a],e[f+u-s],e[f+u-a-s]);}return e}function _paeth(e,t,r){const i=e+t-r,o=i-e,a=i-t,s=i-r;return o*o<=a*a&&o*o<=s*s?e:a*a<=s*s?t:r}function _IHDR(t,r,i){i.width=e.readUint(t,r),r+=4,i.height=e.readUint(t,r),r+=4,i.depth=t[r],r++,i.ctype=t[r],r++,i.compress=t[r],r++,i.filter=t[r],r++,i.interlace=t[r],r++;}function _copyTile(e,t,r,i,o,a,s,f,l){const c=Math.min(t,o),u=Math.min(r,a);let h=0,d=0;for(let r=0;r<u;r++)for(let a=0;a<c;a++)if(s>=0&&f>=0?(h=r*t+a<<2,d=(f+r)*o+s+a<<2):(h=(-f+r)*t-s+a<<2,d=r*o+a<<2),0==l)i[d]=e[h],i[d+1]=e[h+1],i[d+2]=e[h+2],i[d+3]=e[h+3];else if(1==l){var A=e[h+3]*(1/255),g=e[h]*A,p=e[h+1]*A,m=e[h+2]*A,w=i[d+3]*(1/255),v=i[d]*w,b=i[d+1]*w,y=i[d+2]*w;const t=1-A,r=A+w*t,o=0==r?0:1/r;i[d+3]=255*r,i[d+0]=(g+v*t)*o,i[d+1]=(p+b*t)*o,i[d+2]=(m+y*t)*o;}else if(2==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];A==w&&g==v&&p==b&&m==y?(i[d]=0,i[d+1]=0,i[d+2]=0,i[d+3]=0):(i[d]=g,i[d+1]=p,i[d+2]=m,i[d+3]=A);}else if(3==l){A=e[h+3],g=e[h],p=e[h+1],m=e[h+2],w=i[d+3],v=i[d],b=i[d+1],y=i[d+2];if(A==w&&g==v&&p==b&&m==y)continue;if(A<220&&w>20)return false}return true}return {decode:function decode(r){const i=new Uint8Array(r);let o=8;const a=e,s=a.readUshort,f=a.readUint,l={tabs:{},frames:[]},c=new Uint8Array(i.length);let u,h=0,d=0;const A=[137,80,78,71,13,10,26,10];for(var g=0;g<8;g++)if(i[g]!=A[g])throw "The input is not a PNG file!";for(;o<i.length;){const e=a.readUint(i,o);o+=4;const r=a.readASCII(i,o,4);if(o+=4,"IHDR"==r)_IHDR(i,o,l);else if("iCCP"==r){for(var p=o;0!=i[p];)p++;a.readASCII(i,o,p-o);const s=i.slice(p+2,o+e);let f=null;try{f=_inflate(s);}catch(e){f=t(s);}l.tabs[r]=f;}else if("CgBI"==r)l.tabs[r]=i.slice(o,o+4);else if("IDAT"==r){for(g=0;g<e;g++)c[h+g]=i[o+g];h+=e;}else if("acTL"==r)l.tabs[r]={num_frames:f(i,o),num_plays:f(i,o+4)},u=new Uint8Array(i.length);else if("fcTL"==r){if(0!=d)(E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height),d=0;const e={x:f(i,o+12),y:f(i,o+16),width:f(i,o+4),height:f(i,o+8)};let t=s(i,o+22);t=s(i,o+20)/(0==t?100:t);const r={rect:e,delay:Math.round(1e3*t),dispose:i[o+24],blend:i[o+25]};l.frames.push(r);}else if("fdAT"==r){for(g=0;g<e-4;g++)u[d+g]=i[o+g+4];d+=e-4;}else if("pHYs"==r)l.tabs[r]=[a.readUint(i,o),a.readUint(i,o+4),i[o+8]];else if("cHRM"==r){l.tabs[r]=[];for(g=0;g<8;g++)l.tabs[r].push(a.readUint(i,o+4*g));}else if("tEXt"==r||"zTXt"==r){null==l.tabs[r]&&(l.tabs[r]={});var m=a.nextZero(i,o),w=a.readASCII(i,o,m-o),v=o+e-m-1;if("tEXt"==r)y=a.readASCII(i,m+1,v);else {var b=_inflate(i.slice(m+2,m+2+v));y=a.readUTF8(b,0,b.length);}l.tabs[r][w]=y;}else if("iTXt"==r){null==l.tabs[r]&&(l.tabs[r]={});m=0,p=o;m=a.nextZero(i,p);w=a.readASCII(i,p,m-p);const t=i[p=m+1];var y;p+=2,m=a.nextZero(i,p),a.readASCII(i,p,m-p),p=m+1,m=a.nextZero(i,p),a.readUTF8(i,p,m-p);v=e-((p=m+1)-o);if(0==t)y=a.readUTF8(i,p,v);else {b=_inflate(i.slice(p,p+v));y=a.readUTF8(b,0,b.length);}l.tabs[r][w]=y;}else if("PLTE"==r)l.tabs[r]=a.readBytes(i,o,e);else if("hIST"==r){const e=l.tabs.PLTE.length/3;l.tabs[r]=[];for(g=0;g<e;g++)l.tabs[r].push(s(i,o+2*g));}else if("tRNS"==r)3==l.ctype?l.tabs[r]=a.readBytes(i,o,e):0==l.ctype?l.tabs[r]=s(i,o):2==l.ctype&&(l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]);else if("gAMA"==r)l.tabs[r]=a.readUint(i,o)/1e5;else if("sRGB"==r)l.tabs[r]=i[o];else if("bKGD"==r)0==l.ctype||4==l.ctype?l.tabs[r]=[s(i,o)]:2==l.ctype||6==l.ctype?l.tabs[r]=[s(i,o),s(i,o+2),s(i,o+4)]:3==l.ctype&&(l.tabs[r]=i[o]);else if("IEND"==r)break;o+=e,a.readUint(i,o),o+=4;}var E;return 0!=d&&((E=l.frames[l.frames.length-1]).data=_decompress(l,u.slice(0,d),E.rect.width,E.rect.height)),l.data=_decompress(l,c,l.width,l.height),delete l.compress,delete l.interlace,delete l.filter,l},toRGBA8:function toRGBA8(e){const t=e.width,r=e.height;if(null==e.tabs.acTL)return [decodeImage(e.data,t,r,e).buffer];const i=[];null==e.frames[0].data&&(e.frames[0].data=e.data);const o=t*r*4,a=new Uint8Array(o),s=new Uint8Array(o),f=new Uint8Array(o);for(let c=0;c<e.frames.length;c++){const u=e.frames[c],h=u.rect.x,d=u.rect.y,A=u.rect.width,g=u.rect.height,p=decodeImage(u.data,A,g,e);if(0!=c)for(var l=0;l<o;l++)f[l]=a[l];if(0==u.blend?_copyTile(p,A,g,a,t,r,h,d,0):1==u.blend&&_copyTile(p,A,g,a,t,r,h,d,1),i.push(a.buffer.slice(0)),0==u.dispose);else if(1==u.dispose)_copyTile(s,A,g,a,t,r,h,d,0);else if(2==u.dispose)for(l=0;l<o;l++)a[l]=f[l];}return i},_paeth:_paeth,_copyTile:_copyTile,_bin:e}}();!function(){const{_copyTile:e}=UPNG,{_bin:t}=UPNG,r=UPNG._paeth;var i={table:function(){const e=new Uint32Array(256);for(let t=0;t<256;t++){let r=t;for(let e=0;e<8;e++)1&r?r=3988292384^r>>>1:r>>>=1;e[t]=r;}return e}(),update(e,t,r,o){for(let a=0;a<o;a++)e=i.table[255&(e^t[r+a])]^e>>>8;return e},crc:(e,t,r)=>4294967295^i.update(4294967295,e,t,r)};function addErr(e,t,r,i){t[r]+=e[0]*i>>4,t[r+1]+=e[1]*i>>4,t[r+2]+=e[2]*i>>4,t[r+3]+=e[3]*i>>4;}function N(e){return Math.max(0,Math.min(255,e))}function D(e,t){const r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2],a=e[3]-t[3];return r*r+i*i+o*o+a*a}function dither(e,t,r,i,o,a,s){null==s&&(s=1);const f=i.length,l=[];for(var c=0;c<f;c++){const e=i[c];l.push([e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255]);}for(c=0;c<f;c++){let e=4294967295;for(var u=0,h=0;h<f;h++){var d=D(l[c],l[h]);h!=c&&d<e&&(e=d,u=h);}}const A=new Uint32Array(o.buffer),g=new Int16Array(t*r*4),p=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(c=0;c<p.length;c++)p[c]=255*((p[c]+.5)/16-.5);for(let o=0;o<r;o++)for(let w=0;w<t;w++){var m;c=4*(o*t+w);if(2!=s)m=[N(e[c]+g[c]),N(e[c+1]+g[c+1]),N(e[c+2]+g[c+2]),N(e[c+3]+g[c+3])];else {d=p[4*(3&o)+(3&w)];m=[N(e[c]+d),N(e[c+1]+d),N(e[c+2]+d),N(e[c+3]+d)];}u=0;let v=16777215;for(h=0;h<f;h++){const e=D(m,l[h]);e<v&&(v=e,u=h);}const b=l[u],y=[m[0]-b[0],m[1]-b[1],m[2]-b[2],m[3]-b[3]];1==s&&(w!=t-1&&addErr(y,g,c+4,7),o!=r-1&&(0!=w&&addErr(y,g,c+4*t-4,3),addErr(y,g,c+4*t,5),w!=t-1&&addErr(y,g,c+4*t+4,1))),a[c>>2]=u,A[c>>2]=i[u];}}function _main(e,r,o,a,s){null==s&&(s={});const{crc:f}=i,l=t.writeUint,c=t.writeUshort,u=t.writeASCII;let h=8;const d=e.frames.length>1;let A,g=false,p=33+(d?20:0);if(null!=s.sRGB&&(p+=13),null!=s.pHYs&&(p+=21),null!=s.iCCP&&(A=pako.deflate(s.iCCP),p+=21+A.length+4),3==e.ctype){for(var m=e.plte.length,w=0;w<m;w++)e.plte[w]>>>24!=255&&(g=true);p+=8+3*m+4+(g?8+1*m+4:0);}for(var v=0;v<e.frames.length;v++){d&&(p+=38),p+=(F=e.frames[v]).cimg.length+12,0!=v&&(p+=4);}p+=12;const b=new Uint8Array(p),y=[137,80,78,71,13,10,26,10];for(w=0;w<8;w++)b[w]=y[w];if(l(b,h,13),h+=4,u(b,h,"IHDR"),h+=4,l(b,h,r),h+=4,l(b,h,o),h+=4,b[h]=e.depth,h++,b[h]=e.ctype,h++,b[h]=0,h++,b[h]=0,h++,b[h]=0,h++,l(b,h,f(b,h-17,17)),h+=4,null!=s.sRGB&&(l(b,h,1),h+=4,u(b,h,"sRGB"),h+=4,b[h]=s.sRGB,h++,l(b,h,f(b,h-5,5)),h+=4),null!=s.iCCP){const e=13+A.length;l(b,h,e),h+=4,u(b,h,"iCCP"),h+=4,u(b,h,"ICC profile"),h+=11,h+=2,b.set(A,h),h+=A.length,l(b,h,f(b,h-(e+4),e+4)),h+=4;}if(null!=s.pHYs&&(l(b,h,9),h+=4,u(b,h,"pHYs"),h+=4,l(b,h,s.pHYs[0]),h+=4,l(b,h,s.pHYs[1]),h+=4,b[h]=s.pHYs[2],h++,l(b,h,f(b,h-13,13)),h+=4),d&&(l(b,h,8),h+=4,u(b,h,"acTL"),h+=4,l(b,h,e.frames.length),h+=4,l(b,h,null!=s.loop?s.loop:0),h+=4,l(b,h,f(b,h-12,12)),h+=4),3==e.ctype){l(b,h,3*(m=e.plte.length)),h+=4,u(b,h,"PLTE"),h+=4;for(w=0;w<m;w++){const t=3*w,r=e.plte[w],i=255&r,o=r>>>8&255,a=r>>>16&255;b[h+t+0]=i,b[h+t+1]=o,b[h+t+2]=a;}if(h+=3*m,l(b,h,f(b,h-3*m-4,3*m+4)),h+=4,g){l(b,h,m),h+=4,u(b,h,"tRNS"),h+=4;for(w=0;w<m;w++)b[h+w]=e.plte[w]>>>24&255;h+=m,l(b,h,f(b,h-m-4,m+4)),h+=4;}}let E=0;for(v=0;v<e.frames.length;v++){var F=e.frames[v];d&&(l(b,h,26),h+=4,u(b,h,"fcTL"),h+=4,l(b,h,E++),h+=4,l(b,h,F.rect.width),h+=4,l(b,h,F.rect.height),h+=4,l(b,h,F.rect.x),h+=4,l(b,h,F.rect.y),h+=4,c(b,h,a[v]),h+=2,c(b,h,1e3),h+=2,b[h]=F.dispose,h++,b[h]=F.blend,h++,l(b,h,f(b,h-30,30)),h+=4);const t=F.cimg;l(b,h,(m=t.length)+(0==v?0:4)),h+=4;const r=h;u(b,h,0==v?"IDAT":"fdAT"),h+=4,0!=v&&(l(b,h,E++),h+=4),b.set(t,h),h+=m,l(b,h,f(b,r,h-r)),h+=4;}return l(b,h,0),h+=4,u(b,h,"IEND"),h+=4,l(b,h,f(b,h-4,4)),h+=4,b.buffer}function compressPNG(e,t,r){for(let i=0;i<e.frames.length;i++){const o=e.frames[i];const a=o.rect.height,s=new Uint8Array(a*o.bpl+a);o.cimg=_filterZero(o.img,a,o.bpp,o.bpl,s,t,r);}}function compress(t,r,i,o,a){const s=a[0],f=a[1],l=a[2],c=a[3],u=a[4],h=a[5];let d=6,A=8,g=255;for(var p=0;p<t.length;p++){const e=new Uint8Array(t[p]);for(var m=e.length,w=0;w<m;w+=4)g&=e[w+3];}const v=255!=g,b=function framize(t,r,i,o,a,s){const f=[];for(var l=0;l<t.length;l++){const h=new Uint8Array(t[l]),A=new Uint32Array(h.buffer);var c;let g=0,p=0,m=r,w=i,v=o?1:0;if(0!=l){const b=s||o||1==l||0!=f[l-2].dispose?1:2;let y=0,E=1e9;for(let e=0;e<b;e++){var u=new Uint8Array(t[l-1-e]);const o=new Uint32Array(t[l-1-e]);let s=r,f=i,c=-1,h=-1;for(let e=0;e<i;e++)for(let t=0;t<r;t++){A[d=e*r+t]!=o[d]&&(t<s&&(s=t),t>c&&(c=t),e<f&&(f=e),e>h&&(h=e));} -1==c&&(s=f=c=h=0),a&&(1==(1&s)&&s--,1==(1&f)&&f--);const v=(c-s+1)*(h-f+1);v<E&&(E=v,y=e,g=s,p=f,m=c-s+1,w=h-f+1);}u=new Uint8Array(t[l-1-y]);1==y&&(f[l-1].dispose=2),c=new Uint8Array(m*w*4),e(u,r,i,c,m,w,-g,-p,0),v=e(h,r,i,c,m,w,-g,-p,3)?1:0,1==v?_prepareDiff(h,r,i,c,{x:g,y:p,width:m,height:w}):e(h,r,i,c,m,w,-g,-p,0);}else c=h.slice(0);f.push({rect:{x:g,y:p,width:m,height:w},img:c,blend:v,dispose:0});}if(o)for(l=0;l<f.length;l++){if(1==(A=f[l]).blend)continue;const e=A.rect,o=f[l-1].rect,s=Math.min(e.x,o.x),c=Math.min(e.y,o.y),u={x:s,y:c,width:Math.max(e.x+e.width,o.x+o.width)-s,height:Math.max(e.y+e.height,o.y+o.height)-c};f[l-1].dispose=1,l-1!=0&&_updateFrame(t,r,i,f,l-1,u,a),_updateFrame(t,r,i,f,l,u,a);}let h=0;if(1!=t.length)for(var d=0;d<f.length;d++){var A;h+=(A=f[d]).rect.width*A.rect.height;}return f}(t,r,i,s,f,l),y={},E=[],F=[];if(0!=o){const e=[];for(w=0;w<b.length;w++)e.push(b[w].img.buffer);const t=function concatRGBA(e){let t=0;for(var r=0;r<e.length;r++)t+=e[r].byteLength;const i=new Uint8Array(t);let o=0;for(r=0;r<e.length;r++){const t=new Uint8Array(e[r]),a=t.length;for(let e=0;e<a;e+=4){let r=t[e],a=t[e+1],s=t[e+2];const f=t[e+3];0==f&&(r=a=s=0),i[o+e]=r,i[o+e+1]=a,i[o+e+2]=s,i[o+e+3]=f;}o+=a;}return i.buffer}(e),r=quantize(t,o);for(w=0;w<r.plte.length;w++)E.push(r.plte[w].est.rgba);let i=0;for(w=0;w<b.length;w++){const e=(B=b[w]).img.length;var _=new Uint8Array(r.inds.buffer,i>>2,e>>2);F.push(_);const t=new Uint8Array(r.abuf,i,e);h&&dither(B.img,B.rect.width,B.rect.height,E,t,_),B.img.set(t),i+=e;}}else for(p=0;p<b.length;p++){var B=b[p];const e=new Uint32Array(B.img.buffer);var U=B.rect.width;m=e.length,_=new Uint8Array(m);F.push(_);for(w=0;w<m;w++){const t=e[w];if(0!=w&&t==e[w-1])_[w]=_[w-1];else if(w>U&&t==e[w-U])_[w]=_[w-U];else {let e=y[t];if(null==e&&(y[t]=e=E.length,E.push(t),E.length>=300))break;_[w]=e;}}}const C=E.length;C<=256&&0==u&&(A=C<=2?1:C<=4?2:C<=16?4:8,A=Math.max(A,c));for(p=0;p<b.length;p++){(B=b[p]).rect.x;U=B.rect.width;const e=B.rect.height;let t=B.img;let r=4*U,i=4;if(C<=256&&0==u){r=Math.ceil(A*U/8);var I=new Uint8Array(r*e);const o=F[p];for(let t=0;t<e;t++){w=t*r;const e=t*U;if(8==A)for(var Q=0;Q<U;Q++)I[w+Q]=o[e+Q];else if(4==A)for(Q=0;Q<U;Q++)I[w+(Q>>1)]|=o[e+Q]<<4-4*(1&Q);else if(2==A)for(Q=0;Q<U;Q++)I[w+(Q>>2)]|=o[e+Q]<<6-2*(3&Q);else if(1==A)for(Q=0;Q<U;Q++)I[w+(Q>>3)]|=o[e+Q]<<7-1*(7&Q);}t=I,d=3,i=1;}else if(0==v&&1==b.length){I=new Uint8Array(U*e*3);const o=U*e;for(w=0;w<o;w++){const e=3*w,r=4*w;I[e]=t[r],I[e+1]=t[r+1],I[e+2]=t[r+2];}t=I,d=2,i=3,r=3*U;}B.img=t,B.bpl=r,B.bpp=i;}return {ctype:d,depth:A,plte:E,frames:b}}function _updateFrame(t,r,i,o,a,s,f){const l=Uint8Array,c=Uint32Array,u=new l(t[a-1]),h=new c(t[a-1]),d=a+1<t.length?new l(t[a+1]):null,A=new l(t[a]),g=new c(A.buffer);let p=r,m=i,w=-1,v=-1;for(let e=0;e<s.height;e++)for(let t=0;t<s.width;t++){const i=s.x+t,f=s.y+e,l=f*r+i,c=g[l];0==c||0==o[a-1].dispose&&h[l]==c&&(null==d||0!=d[4*l+3])||(i<p&&(p=i),i>w&&(w=i),f<m&&(m=f),f>v&&(v=f));} -1==w&&(p=m=w=v=0),f&&(1==(1&p)&&p--,1==(1&m)&&m--),s={x:p,y:m,width:w-p+1,height:v-m+1};const b=o[a];b.rect=s,b.blend=1,b.img=new Uint8Array(s.width*s.height*4),0==o[a-1].dispose?(e(u,r,i,b.img,s.width,s.height,-s.x,-s.y,0),_prepareDiff(A,r,i,b.img,s)):e(A,r,i,b.img,s.width,s.height,-s.x,-s.y,0);}function _prepareDiff(t,r,i,o,a){e(t,r,i,o,a.width,a.height,-a.x,-a.y,2);}function _filterZero(e,t,r,i,o,a,s){const f=[];let l,c=[0,1,2,3,4];-1!=a?c=[a]:(t*i>5e5||1==r)&&(c=[0]),s&&(l={level:0});const u=UZIP;for(var h=0;h<c.length;h++){for(let a=0;a<t;a++)_filterLine(o,e,a,i,r,c[h]);f.push(u.deflate(o,l));}let d,A=1e9;for(h=0;h<f.length;h++)f[h].length<A&&(d=h,A=f[h].length);return f[d]}function _filterLine(e,t,i,o,a,s){const f=i*o;let l=f+i;if(e[l]=s,l++,0==s)if(o<500)for(var c=0;c<o;c++)e[l+c]=t[f+c];else e.set(new Uint8Array(t.buffer,f,o),l);else if(1==s){for(c=0;c<a;c++)e[l+c]=t[f+c];for(c=a;c<o;c++)e[l+c]=t[f+c]-t[f+c-a]+256&255;}else if(0==i){for(c=0;c<a;c++)e[l+c]=t[f+c];if(2==s)for(c=a;c<o;c++)e[l+c]=t[f+c];if(3==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-(t[f+c-a]>>1)+256&255;if(4==s)for(c=a;c<o;c++)e[l+c]=t[f+c]-r(t[f+c-a],0,0)+256&255;}else {if(2==s)for(c=0;c<o;c++)e[l+c]=t[f+c]+256-t[f+c-o]&255;if(3==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-(t[f+c-o]>>1)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-(t[f+c-o]+t[f+c-a]>>1)&255;}if(4==s){for(c=0;c<a;c++)e[l+c]=t[f+c]+256-r(0,t[f+c-o],0)&255;for(c=a;c<o;c++)e[l+c]=t[f+c]+256-r(t[f+c-a],t[f+c-o],t[f+c-a-o])&255;}}}function quantize(e,t){const r=new Uint8Array(e),i=r.slice(0),o=new Uint32Array(i.buffer),a=getKDtree(i,t),s=a[0],f=a[1],l=r.length,c=new Uint8Array(l>>2);let u;if(r.length<2e7)for(var h=0;h<l;h+=4){u=getNearest(s,d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255)),c[h>>2]=u.ind,o[h>>2]=u.est.rgba;}else for(h=0;h<l;h+=4){var d=r[h]*(1/255),A=r[h+1]*(1/255),g=r[h+2]*(1/255),p=r[h+3]*(1/255);for(u=s;u.left;)u=planeDst(u.est,d,A,g,p)<=0?u.left:u.right;c[h>>2]=u.ind,o[h>>2]=u.est.rgba;}return {abuf:i.buffer,inds:c,plte:f}}function getKDtree(e,t,r){null==r&&(r=1e-4);const i=new Uint32Array(e.buffer),o={i0:0,i1:e.length,bst:null,est:null,tdst:0,left:null,right:null};o.bst=stats(e,o.i0,o.i1),o.est=estats(o.bst);const a=[o];for(;a.length<t;){let t=0,o=0;for(var s=0;s<a.length;s++)a[s].est.L>t&&(t=a[s].est.L,o=s);if(t<r)break;const f=a[o],l=splitPixels(e,i,f.i0,f.i1,f.est.e,f.est.eMq255);if(f.i0>=l||f.i1<=l){f.est.L=0;continue}const c={i0:f.i0,i1:l,bst:null,est:null,tdst:0,left:null,right:null};c.bst=stats(e,c.i0,c.i1),c.est=estats(c.bst);const u={i0:l,i1:f.i1,bst:null,est:null,tdst:0,left:null,right:null};u.bst={R:[],m:[],N:f.bst.N-c.bst.N};for(s=0;s<16;s++)u.bst.R[s]=f.bst.R[s]-c.bst.R[s];for(s=0;s<4;s++)u.bst.m[s]=f.bst.m[s]-c.bst.m[s];u.est=estats(u.bst),f.left=c,f.right=u,a[o]=c,a.push(u);}a.sort(((e,t)=>t.bst.N-e.bst.N));for(s=0;s<a.length;s++)a[s].ind=s;return [o,a]}function getNearest(e,t,r,i,o){if(null==e.left)return e.tdst=function dist(e,t,r,i,o){const a=t-e[0],s=r-e[1],f=i-e[2],l=o-e[3];return a*a+s*s+f*f+l*l}(e.est.q,t,r,i,o),e;const a=planeDst(e.est,t,r,i,o);let s=e.left,f=e.right;a>0&&(s=e.right,f=e.left);const l=getNearest(s,t,r,i,o);if(l.tdst<=a*a)return l;const c=getNearest(f,t,r,i,o);return c.tdst<l.tdst?c:l}function planeDst(e,t,r,i,o){const{e:a}=e;return a[0]*t+a[1]*r+a[2]*i+a[3]*o-e.eMq}function splitPixels(e,t,r,i,o,a){for(i-=4;r<i;){for(;vecDot(e,r,o)<=a;)r+=4;for(;vecDot(e,i,o)>a;)i-=4;if(r>=i)break;const s=t[r>>2];t[r>>2]=t[i>>2],t[i>>2]=s,r+=4,i-=4;}for(;vecDot(e,r,o)>a;)r-=4;return r+4}function vecDot(e,t,r){return e[t]*r[0]+e[t+1]*r[1]+e[t+2]*r[2]+e[t+3]*r[3]}function stats(e,t,r){const i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=[0,0,0,0],a=r-t>>2;for(let a=t;a<r;a+=4){const t=e[a]*(1/255),r=e[a+1]*(1/255),s=e[a+2]*(1/255),f=e[a+3]*(1/255);o[0]+=t,o[1]+=r,o[2]+=s,o[3]+=f,i[0]+=t*t,i[1]+=t*r,i[2]+=t*s,i[3]+=t*f,i[5]+=r*r,i[6]+=r*s,i[7]+=r*f,i[10]+=s*s,i[11]+=s*f,i[15]+=f*f;}return i[4]=i[1],i[8]=i[2],i[9]=i[6],i[12]=i[3],i[13]=i[7],i[14]=i[11],{R:i,m:o,N:a}}function estats(e){const{R:t}=e,{m:r}=e,{N:i}=e,a=r[0],s=r[1],f=r[2],l=r[3],c=0==i?0:1/i,u=[t[0]-a*a*c,t[1]-a*s*c,t[2]-a*f*c,t[3]-a*l*c,t[4]-s*a*c,t[5]-s*s*c,t[6]-s*f*c,t[7]-s*l*c,t[8]-f*a*c,t[9]-f*s*c,t[10]-f*f*c,t[11]-f*l*c,t[12]-l*a*c,t[13]-l*s*c,t[14]-l*f*c,t[15]-l*l*c],h=u,d=o;let A=[Math.random(),Math.random(),Math.random(),Math.random()],g=0,p=0;if(0!=i)for(let e=0;e<16&&(A=d.multVec(h,A),p=Math.sqrt(d.dot(A,A)),A=d.sml(1/p,A),!(0!=e&&Math.abs(p-g)<1e-9));e++)g=p;const m=[a*c,s*c,f*c,l*c];return {Cov:u,q:m,e:A,L:g,eMq255:d.dot(d.sml(255,m),A),eMq:d.dot(A,m),rgba:(Math.round(255*m[3])<<24|Math.round(255*m[2])<<16|Math.round(255*m[1])<<8|Math.round(255*m[0])<<0)>>>0}}var o={multVec:(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]],dot:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],sml:(e,t)=>[e*t[0],e*t[1],e*t[2],e*t[3]]};UPNG.encode=function encode(e,t,r,i,o,a,s){null==i&&(i=0),null==s&&(s=false);const f=compress(e,t,r,i,[false,false,false,0,s,false]);return compressPNG(f,-1),_main(f,t,r,o,a)},UPNG.encodeLL=function encodeLL(e,t,r,i,o,a,s,f){const l={ctype:0+(1==i?0:2)+(0==o?0:4),depth:a,frames:[]},c=(i+o)*a,u=c*t;for(let i=0;i<e.length;i++)l.frames.push({rect:{x:0,y:0,width:t,height:r},img:new Uint8Array(e[i]),blend:0,dispose:1,bpp:Math.ceil(c/8),bpl:Math.ceil(u/8)});return compressPNG(l,0,true),_main(l,t,r,s,f)},UPNG.encode.compress=compress,UPNG.encode.dither=dither,UPNG.quantize=quantize,UPNG.quantize.getKDtree=getKDtree,UPNG.quantize.getNearest=getNearest;}();const r={toArrayBuffer(e,t){const i=e.width,o=e.height,a=i<<2,s=e.getContext("2d").getImageData(0,0,i,o),f=new Uint32Array(s.data.buffer),l=(32*i+31)/32<<2,c=l*o,u=122+c,h=new ArrayBuffer(u),d=new DataView(h),A=1<<20;let g,p,m,w,v=A,b=0,y=0,E=0;function set16(e){d.setUint16(y,e,true),y+=2;}function set32(e){d.setUint32(y,e,true),y+=4;}function seek(e){y+=e;}set16(19778),set32(u),seek(4),set32(122),set32(108),set32(i),set32(-o>>>0),set16(1),set16(32),set32(3),set32(c),set32(2835),set32(2835),seek(8),set32(16711680),set32(65280),set32(255),set32(4278190080),set32(1466527264),function convert(){for(;b<o&&v>0;){for(w=122+b*l,g=0;g<a;)v--,p=f[E++],m=p>>>24,d.setUint32(w+g,p<<8|m),g+=4;b++;}E<f.length?(v=A,setTimeout(convert,r._dly)):t(h);}();},toBlob(e,t){this.toArrayBuffer(e,(e=>{t(new Blob([e],{type:"image/bmp"}));}));},_dly:9};var i={CHROME:"CHROME",FIREFOX:"FIREFOX",DESKTOP_SAFARI:"DESKTOP_SAFARI",IE:"IE",IOS:"IOS",ETC:"ETC"},o={[i.CHROME]:16384,[i.FIREFOX]:11180,[i.DESKTOP_SAFARI]:16384,[i.IE]:8192,[i.IOS]:4096,[i.ETC]:8192};const a="undefined"!=typeof window,s="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,f=a&&window.cordova&&window.cordova.require&&window.cordova.require("cordova/modulemapper"),CustomFile=(a||s)&&(f&&f.getOriginalSymbol(window,"File")||"undefined"!=typeof File&&File),CustomFileReader=(a||s)&&(f&&f.getOriginalSymbol(window,"FileReader")||"undefined"!=typeof FileReader&&FileReader);function getFilefromDataUrl(e,t,r=Date.now()){return new Promise((i=>{const o=e.split(","),a=o[0].match(/:(.*?);/)[1],s=globalThis.atob(o[1]);let f=s.length;const l=new Uint8Array(f);for(;f--;)l[f]=s.charCodeAt(f);const c=new Blob([l],{type:a});c.name=t,c.lastModified=r,i(c);}))}function getDataUrlFromFile(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=()=>t(i.result),i.onerror=e=>r(e),i.readAsDataURL(e);}))}function loadImage(e){return new Promise(((t,r)=>{const i=new Image;i.onload=()=>t(i),i.onerror=e=>r(e),i.src=e;}))}function getBrowserName(){if(void 0!==getBrowserName.cachedResult)return getBrowserName.cachedResult;let e=i.ETC;const{userAgent:t}=navigator;return /Chrom(e|ium)/i.test(t)?e=i.CHROME:/iP(ad|od|hone)/i.test(t)&&/WebKit/i.test(t)?e=i.IOS:/Safari/i.test(t)?e=i.DESKTOP_SAFARI:/Firefox/i.test(t)?e=i.FIREFOX:(/MSIE/i.test(t)||true==!!document.documentMode)&&(e=i.IE),getBrowserName.cachedResult=e,getBrowserName.cachedResult}function approximateBelowMaximumCanvasSizeOfBrowser(e,t){const r=getBrowserName(),i=o[r];let a=e,s=t,f=a*s;const l=a>s?s/a:a/s;for(;f>i*i;){const e=(i+a)/2,t=(i+s)/2;e<t?(s=t,a=t*l):(s=e*l,a=e),f=a*s;}return {width:a,height:s}}function getNewCanvasAndCtx(e,t){let r,i;try{if(r=new OffscreenCanvas(e,t),i=r.getContext("2d"),null===i)throw new Error("getContext of OffscreenCanvas returns null")}catch(e){r=document.createElement("canvas"),i=r.getContext("2d");}return r.width=e,r.height=t,[r,i]}function drawImageInCanvas(e,t){const{width:r,height:i}=approximateBelowMaximumCanvasSizeOfBrowser(e.width,e.height),[o,a]=getNewCanvasAndCtx(r,i);return t&&/jpe?g/.test(t)&&(a.fillStyle="white",a.fillRect(0,0,o.width,o.height)),a.drawImage(e,0,0,o.width,o.height),o}function isIOS(){return void 0!==isIOS.cachedResult||(isIOS.cachedResult=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"undefined"!=typeof document&&"ontouchend"in document),isIOS.cachedResult}function drawFileInCanvas(e,t={}){return new Promise((function(r,o){let a,s;var $Try_2_Post=function(){try{return s=drawImageInCanvas(a,t.fileType||e.type),r([a,s])}catch(e){return o(e)}},$Try_2_Catch=function(t){try{var $Try_3_Catch=function(e){try{throw e}catch(e){return o(e)}};try{let t;return getDataUrlFromFile(e).then((function(e){try{return t=e,loadImage(t).then((function(e){try{return a=e,function(){try{return $Try_2_Post()}catch(e){return o(e)}}()}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){return $Try_3_Catch(e)}}),$Try_3_Catch)}catch(e){$Try_3_Catch(e);}}catch(e){return o(e)}};try{if(isIOS()||[i.DESKTOP_SAFARI,i.MOBILE_SAFARI].includes(getBrowserName()))throw new Error("Skip createImageBitmap on IOS and Safari");return createImageBitmap(e).then((function(e){try{return a=e,$Try_2_Post()}catch(e){return $Try_2_Catch()}}),$Try_2_Catch)}catch(e){$Try_2_Catch();}}))}function canvasToFile(e,t,i,o,a=1){return new Promise((function(s,f){let l;if("image/png"===t){let c,u,h;return c=e.getContext("2d"),({data:u}=c.getImageData(0,0,e.width,e.height)),h=UPNG.encode([u.buffer],e.width,e.height,4096*a),l=new Blob([h],{type:t}),l.name=i,l.lastModified=o,$If_4.call(this)}{if("image/bmp"===t)return new Promise((t=>r.toBlob(e,t))).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_5.call(this)}catch(e){return f(e)}}.bind(this),f);{if("function"==typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return e.convertToBlob({type:t,quality:a}).then(function(e){try{return l=e,l.name=i,l.lastModified=o,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f);{let d;return d=e.toDataURL(t,a),getFilefromDataUrl(d,i,o).then(function(e){try{return l=e,$If_6.call(this)}catch(e){return f(e)}}.bind(this),f)}function $If_6(){return $If_5.call(this)}}function $If_5(){return $If_4.call(this)}}function $If_4(){return s(l)}}))}function cleanupCanvasMemory(e){e.width=0,e.height=0;}function isAutoOrientationInBrowser(){return new Promise((function(e,t){let i,o,a,s;return void 0!==isAutoOrientationInBrowser.cachedResult?e(isAutoOrientationInBrowser.cachedResult):(getFilefromDataUrl("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==","test.jpg",Date.now()).then((function(r){try{return i=r,drawFileInCanvas(i).then((function(r){try{return o=r[1],canvasToFile(o,i.type,i.name,i.lastModified).then((function(r){try{return a=r,cleanupCanvasMemory(o),drawFileInCanvas(a).then((function(r){try{return s=r[0],isAutoOrientationInBrowser.cachedResult=1===s.width&&2===s.height,e(isAutoOrientationInBrowser.cachedResult)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t)}catch(e){return t(e)}}),t))}))}function getExifOrientation(e){return new Promise(((t,r)=>{const i=new CustomFileReader;i.onload=e=>{const r=new DataView(e.target.result);if(65496!=r.getUint16(0,false))return t(-2);const i=r.byteLength;let o=2;for(;o<i;){if(r.getUint16(o+2,false)<=8)return t(-1);const e=r.getUint16(o,false);if(o+=2,65505==e){if(1165519206!=r.getUint32(o+=2,false))return t(-1);const e=18761==r.getUint16(o+=6,false);o+=r.getUint32(o+4,e);const i=r.getUint16(o,e);o+=2;for(let a=0;a<i;a++)if(274==r.getUint16(o+12*a,e))return t(r.getUint16(o+12*a+8,e))}else {if(65280!=(65280&e))break;o+=r.getUint16(o,false);}}return t(-1)},i.onerror=e=>r(e),i.readAsArrayBuffer(e);}))}function handleMaxWidthOrHeight(e,t){const{width:r}=e,{height:i}=e,{maxWidthOrHeight:o}=t;let a,s=e;return isFinite(o)&&(r>o||i>o)&&([s,a]=getNewCanvasAndCtx(r,i),r>i?(s.width=o,s.height=i/r*o):(s.width=r/i*o,s.height=o),a.drawImage(e,0,0,s.width,s.height),cleanupCanvasMemory(e)),s}function followExifOrientation(e,t){const{width:r}=e,{height:i}=e,[o,a]=getNewCanvasAndCtx(r,i);switch(t>4&&t<9?(o.width=i,o.height=r):(o.width=r,o.height=i),t){case 2:a.transform(-1,0,0,1,r,0);break;case 3:a.transform(-1,0,0,-1,r,i);break;case 4:a.transform(1,0,0,-1,0,i);break;case 5:a.transform(0,1,1,0,0,0);break;case 6:a.transform(0,1,-1,0,i,0);break;case 7:a.transform(0,-1,-1,0,i,r);break;case 8:a.transform(0,-1,1,0,0,r);}return a.drawImage(e,0,0,r,i),cleanupCanvasMemory(e),o}function compress(e,t,r=0){return new Promise((function(i,o){let a,s,f,l,c,u,h,d,A,g,p,m,w,v,b,y,E,F,_,B;function incProgress(e=5){if(t.signal&&t.signal.aborted)throw t.signal.reason;a+=e,t.onProgress(Math.min(a,100));}function setProgress(e){if(t.signal&&t.signal.aborted)throw t.signal.reason;a=Math.min(Math.max(e,a),100),t.onProgress(a);}return a=r,s=t.maxIteration||10,f=1024*t.maxSizeMB*1024,incProgress(),drawFileInCanvas(e,t).then(function(r){try{return [,l]=r,incProgress(),c=handleMaxWidthOrHeight(l,t),incProgress(),new Promise((function(r,i){var o;if(!(o=t.exifOrientation))return getExifOrientation(e).then(function(e){try{return o=e,$If_2.call(this)}catch(e){return i(e)}}.bind(this),i);function $If_2(){return r(o)}return $If_2.call(this)})).then(function(r){try{return u=r,incProgress(),isAutoOrientationInBrowser().then(function(r){try{return h=r?c:followExifOrientation(c,u),incProgress(),d=t.initialQuality||1,A=t.fileType||e.type,canvasToFile(h,A,e.name,e.lastModified,d).then(function(r){try{{if(g=r,incProgress(),p=g.size>f,m=g.size>e.size,!p&&!m)return setProgress(100),i(g);var a;function $Loop_3(){if(s--&&(b>f||b>w)){let t,r;return t=B?.95*_.width:_.width,r=B?.95*_.height:_.height,[E,F]=getNewCanvasAndCtx(t,r),F.drawImage(_,0,0,t,r),d*="image/png"===A?.85:.95,canvasToFile(E,A,e.name,e.lastModified,d).then((function(e){try{return y=e,cleanupCanvasMemory(_),_=E,b=y.size,setProgress(Math.min(99,Math.floor((v-b)/(v-f)*100))),$Loop_3}catch(e){return o(e)}}),o)}return [1]}return w=e.size,v=g.size,b=v,_=h,B=!t.alwaysKeepResolution&&p,(a=function(e){for(;e;){if(e.then)return void e.then(a,o);try{if(e.pop){if(e.length)return e.pop()?$Loop_3_exit.call(this):e;e=$Loop_3;}else e=e.call(this);}catch(e){return o(e)}}}.bind(this))($Loop_3);function $Loop_3_exit(){return cleanupCanvasMemory(_),cleanupCanvasMemory(E),cleanupCanvasMemory(c),cleanupCanvasMemory(h),cleanupCanvasMemory(l),setProgress(100),i(y)}}}catch(u){return o(u)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}catch(e){return o(e)}}.bind(this),o)}))}const l="\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n";let c;function compressOnWebWorker(e,t){return new Promise(((r,i)=>{c||(c=function createWorkerScriptURL(e){const t=[];return t.push(e),URL.createObjectURL(new Blob(t))}(l));const o=new Worker(c);o.addEventListener("message",(function handler(e){if(t.signal&&t.signal.aborted)o.terminate();else if(void 0===e.data.progress){if(e.data.error)return i(new Error(e.data.error)),void o.terminate();r(e.data.file),o.terminate();}else t.onProgress(e.data.progress);})),o.addEventListener("error",i),t.signal&&t.signal.addEventListener("abort",(()=>{i(t.signal.reason),o.terminate();})),o.postMessage({file:e,imageCompressionLibUrl:t.libURL,options:{...t,onProgress:void 0,signal:void 0}});}))}function imageCompression(e,t){return new Promise((function(r,i){let o,a,s,f,l,c;if(o={...t},s=0,({onProgress:f}=o),o.maxSizeMB=o.maxSizeMB||Number.POSITIVE_INFINITY,l="boolean"!=typeof o.useWebWorker||o.useWebWorker,delete o.useWebWorker,o.onProgress=e=>{s=e,"function"==typeof f&&f(s);},!(e instanceof Blob||e instanceof CustomFile))return i(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(e.type))return i(new Error("The file given is not an image"));if(c="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!l||"function"!=typeof Worker||c)return compress(e,o).then(function(e){try{return a=e,$If_4.call(this)}catch(e){return i(e)}}.bind(this),i);var u=function(){try{return $If_4.call(this)}catch(e){return i(e)}}.bind(this),$Try_1_Catch=function(t){try{return compress(e,o).then((function(e){try{return a=e,u()}catch(e){return i(e)}}),i)}catch(e){return i(e)}};try{return o.libURL=o.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js",compressOnWebWorker(e,o).then((function(e){try{return a=e,u()}catch(e){return $Try_1_Catch()}}),$Try_1_Catch)}catch(e){$Try_1_Catch();}function $If_4(){try{a.name=e.name,a.lastModified=e.lastModified;}catch(e){}try{o.preserveExif&&"image/jpeg"===e.type&&(!o.fileType||o.fileType&&o.fileType===e.type)&&(a=copyExifWithoutOrientation(e,a));}catch(e){}return r(a)}}))}imageCompression.getDataUrlFromFile=getDataUrlFromFile,imageCompression.getFilefromDataUrl=getFilefromDataUrl,imageCompression.loadImage=loadImage,imageCompression.drawImageInCanvas=drawImageInCanvas,imageCompression.drawFileInCanvas=drawFileInCanvas,imageCompression.canvasToFile=canvasToFile,imageCompression.getExifOrientation=getExifOrientation,imageCompression.handleMaxWidthOrHeight=handleMaxWidthOrHeight,imageCompression.followExifOrientation=followExifOrientation,imageCompression.cleanupCanvasMemory=cleanupCanvasMemory,imageCompression.isAutoOrientationInBrowser=isAutoOrientationInBrowser,imageCompression.approximateBelowMaximumCanvasSizeOfBrowser=approximateBelowMaximumCanvasSizeOfBrowser,imageCompression.copyExifWithoutOrientation=copyExifWithoutOrientation,imageCompression.getBrowserName=getBrowserName,imageCompression.version="2.0.2";
1299
1325
 
1300
1326
  class KritzelImageTool extends KritzelBaseTool {
1327
+ fileInput = null;
1328
+ maxCompressionSize = 300;
1301
1329
  constructor(store) {
1302
1330
  super(store);
1303
- this.fileInput = null;
1304
- this.maxCompressionSize = 300;
1305
1331
  this.setupFileInput();
1306
1332
  }
1307
1333
  onActivate() {
@@ -1348,9 +1374,8 @@ class KritzelImageTool extends KritzelBaseTool {
1348
1374
  readFile(file) {
1349
1375
  const reader = new FileReader();
1350
1376
  reader.onload = e => {
1351
- var _a;
1352
1377
  const img = new Image();
1353
- img.src = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
1378
+ img.src = e.target?.result;
1354
1379
  img.onload = () => this.createKritzelImage(img);
1355
1380
  };
1356
1381
  reader.readAsDataURL(file);
@@ -1384,10 +1409,11 @@ const ABSOLUTE_SCALE_MAX = 1000;
1384
1409
  const ABSOLUTE_SCALE_MIN = 0.0001;
1385
1410
 
1386
1411
  class KritzelViewport {
1412
+ _store;
1413
+ initialTouchDistance = 0;
1414
+ startX = 0;
1415
+ startY = 0;
1387
1416
  constructor(store, host) {
1388
- this.initialTouchDistance = 0;
1389
- this.startX = 0;
1390
- this.startY = 0;
1391
1417
  this._store = store;
1392
1418
  this._store.state.host = host;
1393
1419
  this._store.state.viewportWidth = host.clientWidth;
@@ -1534,6 +1560,8 @@ class KritzelViewport {
1534
1560
  }
1535
1561
 
1536
1562
  class UpdateViewportCommand extends KritzelBaseCommand {
1563
+ currentViewport;
1564
+ previousViewport;
1537
1565
  constructor(store, initiator, previousViewport, skipHistory = false) {
1538
1566
  super(store, initiator, skipHistory);
1539
1567
  this.previousViewport = previousViewport;
@@ -1556,10 +1584,12 @@ class UpdateViewportCommand extends KritzelBaseCommand {
1556
1584
  }
1557
1585
 
1558
1586
  class KritzelCircularBuffer {
1587
+ buffer;
1588
+ capacity;
1589
+ head = 0;
1590
+ tail = 0;
1591
+ size = 0;
1559
1592
  constructor(capacity) {
1560
- this.head = 0;
1561
- this.tail = 0;
1562
- this.size = 0;
1563
1593
  this.capacity = capacity;
1564
1594
  this.buffer = new Array(capacity).fill(null);
1565
1595
  }
@@ -1602,6 +1632,10 @@ class KritzelCircularBuffer {
1602
1632
  }
1603
1633
 
1604
1634
  class KritzelHistory {
1635
+ _store;
1636
+ undoStack;
1637
+ redoStack;
1638
+ previousViewport;
1605
1639
  constructor(store) {
1606
1640
  this._store = store;
1607
1641
  this.undoStack = new KritzelCircularBuffer(this._store.state.historyBufferSize);
@@ -1683,128 +1717,13 @@ class KritzelHistory {
1683
1717
  }
1684
1718
  }
1685
1719
 
1686
- class KritzelOctree {
1687
- constructor(bounds, capacity = 8) {
1688
- this.objects = [];
1689
- this.children = null;
1690
- this.bounds = bounds;
1691
- this.capacity = capacity;
1692
- }
1693
- reset() {
1694
- this.objects = [];
1695
- this.children = null;
1696
- }
1697
- insert(object) {
1698
- if (!this.intersects(object.rotatedBoundingBox, this.bounds)) {
1699
- return false;
1700
- }
1701
- if (this.objects.length < this.capacity && this.children === null) {
1702
- this.objects.push(object);
1703
- return true;
1704
- }
1705
- if (this.children === null) {
1706
- this.subdivide();
1707
- }
1708
- for (const child of this.children) {
1709
- if (child.insert(object)) {
1710
- return true;
1711
- }
1712
- }
1713
- return false;
1714
- }
1715
- update(object) {
1716
- const index = this.objects.findIndex(o => o.id === object.id);
1717
- if (index !== -1) {
1718
- this.objects[index] = object;
1719
- return true;
1720
- }
1721
- if (this.children !== null) {
1722
- for (const child of this.children) {
1723
- if (child.update(object)) {
1724
- return true;
1725
- }
1726
- }
1727
- }
1728
- return false;
1729
- }
1730
- remove(predicate) {
1731
- const index = this.objects.findIndex(o => predicate(o));
1732
- if (index !== -1) {
1733
- this.objects.splice(index, 1);
1734
- }
1735
- if (this.children !== null) {
1736
- for (const child of this.children) {
1737
- child.remove(predicate);
1738
- }
1739
- }
1740
- }
1741
- query(range) {
1742
- const results = [];
1743
- if (!this.intersects(range, this.bounds)) {
1744
- return results;
1745
- }
1746
- for (const object of this.objects) {
1747
- if (this.intersects(object.rotatedBoundingBox, range)) {
1748
- results.push(object);
1749
- }
1750
- }
1751
- if (this.children !== null) {
1752
- for (const child of this.children) {
1753
- results.push(...child.query(range));
1754
- }
1755
- }
1756
- return results;
1757
- }
1758
- filter(predicate) {
1759
- const results = this.objects.filter(o => predicate(o));
1760
- if (this.children !== null) {
1761
- for (const child of this.children) {
1762
- results.push(...child.filter(predicate));
1763
- }
1764
- }
1765
- return results;
1766
- }
1767
- allObjects() {
1768
- const results = [...this.objects];
1769
- if (this.children !== null) {
1770
- for (const child of this.children) {
1771
- results.push(...child.allObjects());
1772
- }
1773
- }
1774
- return results;
1775
- }
1776
- subdivide() {
1777
- const { x, y, z, width, height, depth } = this.bounds;
1778
- const halfWidth = width / 2;
1779
- const halfHeight = height / 2;
1780
- const halfDepth = depth / 2;
1781
- this.children = [
1782
- new KritzelOctree({ x, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1783
- new KritzelOctree({ x: x + halfWidth, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1784
- new KritzelOctree({ x, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1785
- new KritzelOctree({ x: x + halfWidth, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1786
- new KritzelOctree({ x, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1787
- new KritzelOctree({ x: x + halfWidth, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1788
- new KritzelOctree({ x, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1789
- new KritzelOctree({ x: x + halfWidth, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),
1790
- ];
1791
- }
1792
- intersects(a, b) {
1793
- return !(a.x >= b.x + b.width || // a is completely to the right of b
1794
- a.x + a.width <= b.x || // a is completely to the left of b
1795
- a.y >= b.y + b.height || // a is completely below b
1796
- a.y + a.height <= b.y // a is completely above b
1797
- );
1798
- }
1799
- }
1800
-
1801
1720
  const DEFAULT_ENGINE_STATE = {
1802
1721
  activeWorkspace: null,
1803
1722
  activeTool: null,
1804
1723
  activeText: null,
1805
1724
  currentPath: null,
1806
1725
  copiedObjects: null,
1807
- objectsOctree: null,
1726
+ objectsMap: null,
1808
1727
  selectionBox: null,
1809
1728
  selectionGroup: null,
1810
1729
  resizeHandleType: null,
@@ -1860,8 +1779,11 @@ const DEFAULT_ENGINE_STATE = {
1860
1779
  };
1861
1780
 
1862
1781
  class KritzelDatabase {
1782
+ db = null;
1783
+ dbName;
1784
+ dbVersion;
1785
+ isLoggingEnabled;
1863
1786
  constructor(dbName, dbVersion, isLoggingEnabled = false) {
1864
- this.db = null;
1865
1787
  this.dbName = dbName;
1866
1788
  this.dbVersion = dbVersion;
1867
1789
  this.isLoggingEnabled = isLoggingEnabled;
@@ -1986,8 +1908,7 @@ class KritzelDatabase {
1986
1908
  resolve(requestResult);
1987
1909
  };
1988
1910
  transaction.onabort = () => {
1989
- var _a;
1990
- reject((_a = transaction.error) !== null && _a !== void 0 ? _a : new Error('Transaction aborted'));
1911
+ reject(transaction.error ?? new Error('Transaction aborted'));
1991
1912
  };
1992
1913
  transaction.onerror = () => {
1993
1914
  reject(transaction.error);
@@ -2045,9 +1966,8 @@ class KritzelDatabase {
2045
1966
  Promise.all(promises).then(() => resolve(results));
2046
1967
  };
2047
1968
  transaction.onabort = () => {
2048
- var _a;
2049
1969
  console.error('[IndexedDB] Batch transaction aborted:', transaction.error);
2050
- reject((_a = transaction.error) !== null && _a !== void 0 ? _a : new Error('Transaction aborted'));
1970
+ reject(transaction.error ?? new Error('Transaction aborted'));
2051
1971
  };
2052
1972
  transaction.onerror = () => {
2053
1973
  console.error('[IndexedDB] Batch transaction error:', transaction.error);
@@ -2086,7 +2006,56 @@ class KritzelDatabase {
2086
2006
  }
2087
2007
  }
2088
2008
 
2009
+ class KritzelObjectMap {
2010
+ map;
2011
+ constructor() {
2012
+ this.map = new Map();
2013
+ }
2014
+ reset() {
2015
+ this.map.clear();
2016
+ }
2017
+ insert(object) {
2018
+ if (!object.id) {
2019
+ return false;
2020
+ }
2021
+ this.map.set(object.id, object);
2022
+ return true;
2023
+ }
2024
+ update(object) {
2025
+ if (!object.id || !this.map.has(object.id)) {
2026
+ return false;
2027
+ }
2028
+ this.map.set(object.id, object);
2029
+ return true;
2030
+ }
2031
+ remove(predicate) {
2032
+ for (const [id, object] of this.map) {
2033
+ if (predicate(object)) {
2034
+ this.map.delete(id);
2035
+ }
2036
+ }
2037
+ }
2038
+ filter(predicate) {
2039
+ const results = [];
2040
+ for (const object of this.map.values()) {
2041
+ if (predicate(object)) {
2042
+ results.push(object);
2043
+ }
2044
+ }
2045
+ return results;
2046
+ }
2047
+ allObjects() {
2048
+ return Array.from(this.map.values());
2049
+ }
2050
+ }
2051
+
2089
2052
  class KritzelStore {
2053
+ _kritzelEngine;
2054
+ _state;
2055
+ _history;
2056
+ _database;
2057
+ _listeners = new Map();
2058
+ objects = [];
2090
2059
  get history() {
2091
2060
  return this._history;
2092
2061
  }
@@ -2097,10 +2066,10 @@ class KritzelStore {
2097
2066
  return this._state;
2098
2067
  }
2099
2068
  get currentZIndex() {
2100
- return this._state.objectsOctree.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;
2069
+ return this._state.objectsMap.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).length;
2101
2070
  }
2102
2071
  get allObjects() {
2103
- return this._state.objectsOctree.allObjects();
2072
+ return this._state.objectsMap.allObjects();
2104
2073
  }
2105
2074
  get selectedObjects() {
2106
2075
  return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
@@ -2115,20 +2084,11 @@ class KritzelStore {
2115
2084
  return this._state.isEnabled === false || this._state.isReady === false || this._state.activeWorkspace === null;
2116
2085
  }
2117
2086
  constructor(kritzelEngine) {
2118
- this._listeners = new Map();
2119
- this.objects = [];
2120
2087
  this._state = DEFAULT_ENGINE_STATE;
2121
2088
  this._kritzelEngine = kritzelEngine;
2122
2089
  this._history = new KritzelHistory(this);
2123
2090
  this._database = new KritzelDatabase('kritzelDB', 1, this._state.debugInfo.logDatabase);
2124
- this._state.objectsOctree = new KritzelOctree({
2125
- x: -Infinity,
2126
- y: -Infinity,
2127
- z: -Infinity,
2128
- width: Infinity,
2129
- height: Infinity,
2130
- depth: Infinity,
2131
- });
2091
+ this._state.objectsMap = new KritzelObjectMap();
2132
2092
  }
2133
2093
  async initializeDatabase() {
2134
2094
  await this._database.open([
@@ -2141,11 +2101,10 @@ class KritzelStore {
2141
2101
  this.rerender();
2142
2102
  }
2143
2103
  async initializeWorkspace(workspace) {
2144
- var _a;
2145
2104
  const workspaces = await this.getWorkspaces();
2146
2105
  const mostRecentWorkspace = [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0];
2147
2106
  const fallbackWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');
2148
- this._state.activeWorkspace = (_a = workspace !== null && workspace !== void 0 ? workspace : mostRecentWorkspace) !== null && _a !== void 0 ? _a : fallbackWorkspace;
2107
+ this._state.activeWorkspace = workspace ?? mostRecentWorkspace ?? fallbackWorkspace;
2149
2108
  const isExistingWorkspace = await this.getWorkspace(this._state.activeWorkspace.id);
2150
2109
  if (isExistingWorkspace) {
2151
2110
  await this.updateWorkspace(this._state.activeWorkspace);
@@ -2160,13 +2119,13 @@ class KritzelStore {
2160
2119
  await this.initializeWorkspaceObjects(this._state.activeWorkspace.id);
2161
2120
  }
2162
2121
  async initializeWorkspaceObjects(workspaceId) {
2163
- this._state.objectsOctree.reset();
2122
+ this._state.objectsMap.reset();
2164
2123
  this._history.reset();
2165
2124
  const objectsFromDb = await this._database.getAllByRange('objects', IDBKeyRange.bound([workspaceId], [workspaceId, '\uffff']));
2166
2125
  const reviver = new KritzelReviver(this);
2167
2126
  objectsFromDb.forEach(element => {
2168
2127
  const revivedObject = reviver.revive(element);
2169
- this._state.objectsOctree.insert(revivedObject);
2128
+ this._state.objectsMap.insert(revivedObject);
2170
2129
  });
2171
2130
  this.rerender();
2172
2131
  }
@@ -2257,6 +2216,7 @@ class KritzelStore {
2257
2216
  const objectRange = IDBKeyRange.bound([workspace.id], [workspace.id, '\uffff']);
2258
2217
  await this._database.deleteByRange('objects', objectRange);
2259
2218
  await this._database.delete('workspaces', workspace.id);
2219
+ this.state.workspaces = this.state.workspaces.filter(ws => ws.id !== workspace.id);
2260
2220
  }
2261
2221
  rerender() {
2262
2222
  if (this._kritzelEngine) {
@@ -2382,15 +2342,8 @@ class KritzelStore {
2382
2342
  this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
2383
2343
  }
2384
2344
  selectAllObjectsInViewport() {
2385
- const objectsInViewport = this._state.objectsOctree
2386
- .query({
2387
- x: -this._state.translateX / this._state.scale,
2388
- y: -this._state.translateY / this._state.scale,
2389
- z: this._state.scale,
2390
- width: this._state.viewportWidth / this._state.scale,
2391
- height: this._state.viewportHeight / this._state.scale,
2392
- depth: 100,
2393
- })
2345
+ const objectsInViewport = this._state.objectsMap
2346
+ .filter(o => o.isInViewport())
2394
2347
  .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));
2395
2348
  if (objectsInViewport.length > 0) {
2396
2349
  const selectionGroup = KritzelSelectionGroup.create(this);
@@ -2423,8 +2376,7 @@ class KritzelStore {
2423
2376
  this.state.activeText = null;
2424
2377
  }
2425
2378
  getObjectFromPointerEvent(event, selector = '.object') {
2426
- var _a;
2427
- const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
2379
+ const shadowRoot = this.state.host?.shadowRoot;
2428
2380
  if (!shadowRoot)
2429
2381
  return null;
2430
2382
  const clientX = event.clientX;
@@ -2439,8 +2391,7 @@ class KritzelStore {
2439
2391
  return null;
2440
2392
  }
2441
2393
  getObjectsFromPointerEvent(event, selector = '.object') {
2442
- var _a;
2443
- const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
2394
+ const shadowRoot = this.state.host?.shadowRoot;
2444
2395
  if (!shadowRoot)
2445
2396
  return [];
2446
2397
  const clientX = event.clientX;
@@ -2558,10 +2509,10 @@ class KritzelKeyHandler extends KritzelBaseHandler {
2558
2509
  }
2559
2510
 
2560
2511
  class KritzelContextMenuHandler extends KritzelBaseHandler {
2512
+ globalContextMenuItems = [];
2513
+ objectContextMenuItems = [];
2561
2514
  constructor(store, globalContextMenuItems, objectContextMenuItems) {
2562
2515
  super(store);
2563
- this.globalContextMenuItems = [];
2564
- this.objectContextMenuItems = [];
2565
2516
  this.globalContextMenuItems = globalContextMenuItems;
2566
2517
  this.objectContextMenuItems = objectContextMenuItems;
2567
2518
  }
@@ -2610,6 +2561,17 @@ class KritzelClassHelper {
2610
2561
  const kritzelEngineCss = ":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}textarea{all:unset;box-sizing:border-box;outline:none !important;border:none !important;overflow:visible}.resize-handle-overlay.top-left,.resize-handle-overlay.bottom-right{cursor:nwse-resize}.resize-handle-overlay.top-right,.resize-handle-overlay.bottom-left{cursor:nesw-resize}.rotation-handle-overlay{cursor:grab}";
2611
2562
 
2612
2563
  const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine extends H {
2564
+ workspace;
2565
+ activeTool;
2566
+ globalContextMenuItems;
2567
+ objectContextMenuItems;
2568
+ scaleMax = ABSOLUTE_SCALE_MAX;
2569
+ scaleMin = ABSOLUTE_SCALE_MIN;
2570
+ isEngineReady;
2571
+ activeToolChange;
2572
+ workspacesChange;
2573
+ get host() { return this; }
2574
+ forceUpdate = 0;
2613
2575
  onWorkspaceChange(newWorkspace) {
2614
2576
  if (newWorkspace) {
2615
2577
  this.store.initializeWorkspace(newWorkspace);
@@ -2635,6 +2597,11 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2635
2597
  this.store.state.scaleMin = newValue;
2636
2598
  }
2637
2599
  }
2600
+ store;
2601
+ viewport;
2602
+ contextMenuHandler;
2603
+ keyHandler;
2604
+ contextMenuElement = null;
2638
2605
  get isSelecting() {
2639
2606
  return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;
2640
2607
  }
@@ -2650,10 +2617,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2650
2617
  this.isEngineReady = createEvent(this, "isEngineReady");
2651
2618
  this.activeToolChange = createEvent(this, "activeToolChange");
2652
2619
  this.workspacesChange = createEvent(this, "workspacesChange");
2653
- this.scaleMax = ABSOLUTE_SCALE_MAX;
2654
- this.scaleMin = ABSOLUTE_SCALE_MIN;
2655
- this.forceUpdate = 0;
2656
- this.contextMenuElement = null;
2657
2620
  this.store = new KritzelStore(this);
2658
2621
  }
2659
2622
  componentWillLoad() {
@@ -2673,7 +2636,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2673
2636
  }
2674
2637
  }
2675
2638
  handleWheel(ev) {
2676
- var _a, _b;
2677
2639
  if (this.store.isDisabled) {
2678
2640
  return;
2679
2641
  }
@@ -2681,10 +2643,9 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2681
2643
  this.hideContextMenu();
2682
2644
  }
2683
2645
  this.viewport.handleWheel(ev);
2684
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handleWheel(ev);
2646
+ this.store.state?.activeTool?.handleWheel(ev);
2685
2647
  }
2686
2648
  handlePointerDown(ev) {
2687
- var _a, _b;
2688
2649
  if (this.store.isDisabled) {
2689
2650
  return;
2690
2651
  }
@@ -2701,36 +2662,33 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2701
2662
  this.host.setPointerCapture(ev.pointerId);
2702
2663
  this.store.state.pointers.set(ev.pointerId, ev);
2703
2664
  this.viewport.handlePointerDown(ev);
2704
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerDown(ev);
2665
+ this.store.state?.activeTool?.handlePointerDown(ev);
2705
2666
  }
2706
2667
  handlePointerMove(ev) {
2707
- var _a, _b;
2708
2668
  if (this.store.isDisabled) {
2709
2669
  return;
2710
2670
  }
2711
2671
  this.store.state.pointers.set(ev.pointerId, ev);
2712
2672
  this.viewport.handlePointerMove(ev);
2713
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerMove(ev);
2673
+ this.store.state?.activeTool?.handlePointerMove(ev);
2714
2674
  }
2715
2675
  handlePointerUp(ev) {
2716
- var _a, _b;
2717
2676
  if (this.store.isDisabled) {
2718
2677
  return;
2719
2678
  }
2720
2679
  this.store.state.pointers.delete(ev.pointerId);
2721
2680
  this.host.releasePointerCapture(ev.pointerId);
2722
2681
  this.viewport.handlePointerUp(ev);
2723
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
2682
+ this.store.state?.activeTool?.handlePointerUp(ev);
2724
2683
  }
2725
2684
  handlePointerCancel(ev) {
2726
- var _a, _b;
2727
2685
  if (this.store.isDisabled) {
2728
2686
  return;
2729
2687
  }
2730
2688
  this.host.releasePointerCapture(ev.pointerId);
2731
2689
  this.store.state.pointers.delete(ev.pointerId);
2732
2690
  this.viewport.handlePointerUp(ev);
2733
- (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
2691
+ this.store.state?.activeTool?.handlePointerUp(ev);
2734
2692
  }
2735
2693
  handleContextMenu(ev) {
2736
2694
  ev.preventDefault();
@@ -2779,11 +2737,10 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2779
2737
  return Promise.resolve(registeredTool);
2780
2738
  }
2781
2739
  async changeActiveTool(tool) {
2782
- var _a;
2783
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
2740
+ this.store.state.activeTool?.onDeactivate();
2784
2741
  this.store.setState('activeTool', tool);
2785
2742
  this.store.deselectAllObjects();
2786
- tool === null || tool === void 0 ? void 0 : tool.onActivate();
2743
+ tool?.onActivate();
2787
2744
  }
2788
2745
  async setFocus() {
2789
2746
  this.host.focus();
@@ -2860,15 +2817,13 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2860
2817
  return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];
2861
2818
  }
2862
2819
  async selectObjects(objects) {
2863
- var _a;
2864
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
2820
+ this.store.state.activeTool?.onDeactivate();
2865
2821
  this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2866
2822
  this.store.deselectAllObjects();
2867
2823
  this.store.selectObjects(objects);
2868
2824
  }
2869
2825
  async selectAllObjectsInViewport() {
2870
- var _a;
2871
- (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
2826
+ this.store.state.activeTool?.onDeactivate();
2872
2827
  this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2873
2828
  this.store.deselectAllObjects();
2874
2829
  this.store.selectAllObjectsInViewport();
@@ -2883,8 +2838,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2883
2838
  return object;
2884
2839
  }
2885
2840
  async getCopiedObjects() {
2886
- var _a;
2887
- return ((_a = this.store.state.copiedObjects) === null || _a === void 0 ? void 0 : _a.objects) || [];
2841
+ return this.store.state.copiedObjects?.objects || [];
2888
2842
  }
2889
2843
  async createWorkspace(workspace) {
2890
2844
  return this.store.createWorkspace(workspace).then(() => {
@@ -2897,8 +2851,8 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2897
2851
  });
2898
2852
  }
2899
2853
  async deleteWorkspace(workspace) {
2900
- return this.store.deleteWorkspace(workspace).then(() => {
2901
- this.workspacesChange.emit(this.store.state.workspaces.filter(ws => ws.id !== workspace.id));
2854
+ return this.store.deleteWorkspace(workspace).then(async () => {
2855
+ this.workspacesChange.emit(this.store.state.workspaces);
2902
2856
  });
2903
2857
  }
2904
2858
  async getWorkspaces() {
@@ -2922,149 +2876,134 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2922
2876
  }
2923
2877
  }
2924
2878
  render() {
2925
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
2926
2879
  const computedStyle = window.getComputedStyle(this.host);
2927
2880
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
2928
2881
  const baseHandleSize = parseFloat(baseHandleSizePx);
2929
2882
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
2930
- return (h(Host, { key: 'c7e747aa6106e7904cf9f44db37fa285a6fb4434' }, h("div", { key: 'b75652ab9f9531dce765cbe448ad3131c172d06a', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: 'fd1355bd640b9296949f6bbcf084589578654db6' }, "ActiveWorkspaceId: ", (_b = (_a = this.store.state) === null || _a === void 0 ? void 0 : _a.activeWorkspace) === null || _b === void 0 ? void 0 :
2931
- _b.id), h("div", { key: '8520e3e774e97ebc42ee86401fbfbafbe41c88e8' }, "ActiveWorkspaceName: ", (_d = (_c = this.store.state) === null || _c === void 0 ? void 0 : _c.activeWorkspace) === null || _d === void 0 ? void 0 :
2932
- _d.name), h("div", { key: 'f247b4d76cd018e787a9b59829deedeb6c5c5272' }, "TranslateX: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
2933
- _e.translateX), h("div", { key: 'e0438479bc9e950ef2cbe88ed0aa0b8ec1888890' }, "TranslateY: ", (_f = this.store.state) === null || _f === void 0 ? void 0 :
2934
- _f.translateY), h("div", { key: '1735fde66588e285039bcc090dee71630608d666' }, "ViewportWidth: ", (_g = this.store.state) === null || _g === void 0 ? void 0 :
2935
- _g.viewportWidth), h("div", { key: '15f8b3305c27a395b8aa6463c5acec42bb3e3ddd' }, "ViewportHeight: ", (_h = this.store.state) === null || _h === void 0 ? void 0 :
2936
- _h.viewportHeight), h("div", { key: 'd2e39bae191c7256967d0140f38e75dccf95f24c' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: 'cd3f53ff4a8f119a2ef975133f69fc3798fe0f71' }, "Scale: ", (_j = this.store.state) === null || _j === void 0 ? void 0 :
2937
- _j.scale), h("div", { key: 'b1f8c77589a80fe49d0947602bda46438921f7a8' }, "ActiveTool: ", (_l = (_k = this.store.state) === null || _k === void 0 ? void 0 : _k.activeTool) === null || _l === void 0 ? void 0 :
2938
- _l.name), h("div", { key: '41cd94f58f71cd5c1cffc679ada5fc51f6ceeea7' }, "HasViewportChanged: ", ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.hasViewportChanged) ? 'true' : 'false'), h("div", { key: 'bf8495bb924673aad3a9ca57ed0bf9ac23874dfb' }, "IsEnabled: ", ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.isEnabled) ? 'true' : 'false'), h("div", { key: '3823936f5b46b100742f94fac8d7e87ed93ddb58' }, "IsScaling: ", ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.isScaling) ? 'true' : 'false'), h("div", { key: '62eb836fff78b050cdab8cbef54f88f9d5b644ba' }, "IsPanning: ", ((_q = this.store.state) === null || _q === void 0 ? void 0 : _q.isPanning) ? 'true' : 'false'), h("div", { key: 'dac6b8d18ae8f6317bdd318ad48a9612f9942613' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: 'af232e2cd738e255029f5611531c246ac63a28ce' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '95a44fef4b6befe95bfadfc62957103b48bf76b6' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: 'e8162d4de449a0d6756c2f540fca28353c193438' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '4440d023cd4982c834736e06863698c3baf72353' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: 'd3e467dd18e53850df4d5bedf2b69f54b1fbe5c6' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'df6e4bca16cbe4346786a544d6f6c53d87bdb699' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '532aebf1ff35cc578f12e36cdaf00713ffc76b97' }, "PointerX: ", (_r = this.store.state) === null || _r === void 0 ? void 0 :
2939
- _r.pointerX), h("div", { key: 'f710f8c8d27979da4a40e50452e2cdd63cdefa98' }, "PointerY: ", (_s = this.store.state) === null || _s === void 0 ? void 0 :
2940
- _s.pointerY), h("div", { key: '0175010e1d5a22be81ca0b2d88dd1aff217eacfd' }, "SelectedObjects: ", ((_t = this.store.state.selectionGroup) === null || _t === void 0 ? void 0 : _t.objects.length) || 0)), h("div", { key: 'dc2964c479405ed147bd5f090e24262595a474e2', id: "origin", class: "origin", style: {
2941
- transform: `matrix(${(_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale}, 0, 0, ${(_v = this.store.state) === null || _v === void 0 ? void 0 : _v.scale}, ${(_w = this.store.state) === null || _w === void 0 ? void 0 : _w.translateX}, ${(_x = this.store.state) === null || _x === void 0 ? void 0 : _x.translateY})`,
2942
- } }, (_y = this.store.state.objectsOctree.allObjects()) === null || _y === void 0 ? void 0 :
2943
- _y.map(object => {
2944
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
2945
- return (h("div", { key: object.id, style: { display: object.isInViewport() ? 'block' : 'none', transform: object === null || object === void 0 ? void 0 : object.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
2946
- height: object === null || object === void 0 ? void 0 : object.totalHeight.toString(),
2947
- width: object === null || object === void 0 ? void 0 : object.totalWidth.toString(),
2948
- left: '0',
2949
- top: '0',
2950
- position: 'absolute',
2951
- transform: `rotate(${object.rotationDegrees}deg)`,
2952
- transformOrigin: 'center',
2953
- opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
2954
- pointerEvents: object.markedForRemoval ? 'none' : 'auto',
2955
- } }, h("foreignObject", { x: "0", y: "0", width: object.totalWidth.toString(), height: object.totalHeight.toString(), style: {
2956
- minHeight: '0',
2957
- minWidth: '0',
2958
- backgroundColor: object.backgroundColor,
2959
- borderColor: object.borderColor,
2960
- borderWidth: object.borderWidth + 'px',
2961
- borderStyle: 'solid',
2962
- padding: object.padding + 'px',
2963
- overflow: 'visible',
2964
- } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => (el ? object.mount(el) : object.unmount()), xmlns: "http://www.w3.org/2000/svg", style: {
2965
- height: object === null || object === void 0 ? void 0 : object.height.toString(),
2966
- width: object === null || object === void 0 ? void 0 : object.width.toString(),
2967
- position: 'absolute',
2968
- overflow: 'visible',
2969
- }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => (el ? object.mount(el) : object.unmount()), src: object.src, style: {
2970
- width: '100%',
2971
- height: '100%',
2972
- userSelect: 'none',
2973
- pointerEvents: 'none',
2974
- }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => (el ? object.mount(el) : object.unmount()), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
2975
- width: '100%',
2976
- height: '100%',
2977
- color: object.fontColor,
2978
- fontSize: ((_a = object.fontSize) === null || _a === void 0 ? void 0 : _a.toString()) + 'px',
2979
- fontFamily: object.fontFamily,
2980
- border: 'none',
2981
- outline: 'none',
2982
- resize: 'none',
2983
- overflow: 'hidden',
2984
- display: 'block',
2985
- padding: '1px',
2986
- whiteSpace: 'nowrap',
2987
- pointerEvents: object.isReadonly ? 'none' : 'auto',
2988
- cursor: object.isReadonly ? 'default' : 'text',
2989
- caretColor: object.isReadonly ? 'transparent' : 'auto',
2990
- } })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
2991
- width: '100%',
2992
- height: '100%',
2993
- pointerEvents: 'auto',
2994
- overflow: 'hidden',
2995
- display: 'block',
2996
- } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
2997
- width: '100%',
2998
- height: '100%',
2999
- } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
3000
- width: '100%',
3001
- height: '100%',
3002
- } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
3003
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
3004
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_b = this.store.state) === null || _b === void 0 ? void 0 : _b.scale})`,
3005
- strokeLinecap: 'square',
3006
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
3007
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
3008
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_c = this.store.state) === null || _c === void 0 ? void 0 : _c.scale})`,
3009
- strokeLinecap: 'square',
3010
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
3011
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
3012
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_d = this.store.state) === null || _d === void 0 ? void 0 : _d.scale})`,
3013
- strokeLinecap: 'square',
3014
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
3015
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
3016
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_e = this.store.state) === null || _e === void 0 ? void 0 : _e.scale})`,
3017
- strokeLinecap: 'square',
3018
- }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / ((_f = this.store.state) === null || _f === void 0 ? void 0 : _f.scale)}`, style: {
3019
- fill: 'var(--kritzel-selection-handle-color, #000000)',
3020
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_g = this.store.state) === null || _g === void 0 ? void 0 : _g.scale)}`, style: {
3021
- fill: 'transparent',
3022
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.scale)}`, style: {
3023
- fill: 'var(--kritzel-selection-handle-color, #000000)',
3024
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.scale)}`, style: {
3025
- fill: 'transparent',
3026
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.scale)}`, style: {
3027
- fill: 'var(--kritzel-selection-handle-color, #000000)',
3028
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.scale)}`, style: {
3029
- fill: 'transparent',
3030
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.scale)}`, style: {
3031
- fill: 'var(--kritzel-selection-handle-color, #000000)',
3032
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.scale)}`, style: {
3033
- fill: 'transparent',
3034
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale)), style: {
3035
- stroke: 'var(--kritzel-selection-border-color, #007AFF)',
3036
- strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale})`,
3037
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_r = this.store.state) === null || _r === void 0 ? void 0 : _r.scale)), r: `${(baseHandleSize * object.scale) / ((_s = this.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
3038
- fill: 'var(--kritzel-selection-handle-color, #000000)',
3039
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_t = this.store.state) === null || _t === void 0 ? void 0 : _t.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, style: {
3040
- fill: 'transparent',
3041
- cursor: 'grab',
3042
- }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
3043
- }), h("svg", { key: '86f9a08bea3ac2d261b14b2eec471fafd20ca11f', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
3044
- height: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.height.toString(),
3045
- width: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.width.toString(),
2883
+ return (h(Host, { key: 'fd353ff17bcde1a9ab646b6f463d1c6ce00a3dff' }, h("div", { key: '45bc2af8f1a3a2bfa3aa76a478c7bf208027da0c', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '50e932febc35c7dbe852ad99d96ca4f0e0b742fc' }, "ActiveWorkspaceId: ", this.store.state?.activeWorkspace?.id), h("div", { key: 'af94b5061f0803588fece6cccdf540f46f13ca05' }, "ActiveWorkspaceName: ", this.store.state?.activeWorkspace?.name), h("div", { key: '89c0d21ce94f4eda72153554fadbd6942e785edc' }, "TranslateX: ", this.store.state?.translateX), h("div", { key: '340b5165265241972a7a940268c7940063ba8c12' }, "TranslateY: ", this.store.state?.translateY), h("div", { key: '428054b3ea4a1c327f03d6b37bfe6331dea6c57b' }, "ViewportWidth: ", this.store.state?.viewportWidth), h("div", { key: 'd67420ef633627413066a28b8ef9ac43c520015d' }, "ViewportHeight: ", this.store.state?.viewportHeight), h("div", { key: 'dedf9eb89c79fa496f7b6d0df9c646898f66b3d4' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '59bb8416941fd84305f2892f24098f6f4a084401' }, "Scale: ", this.store.state?.scale), h("div", { key: '6705a4cec22e4e33f75e296e17bc2952a3d1cba7' }, "ActiveTool: ", this.store.state?.activeTool?.name), h("div", { key: 'ca22e0a377a11fdca851b38f1bf425648cd3b9dd' }, "HasViewportChanged: ", this.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '57508b9ee24a5af631e6bb1eace404c39af14f82' }, "IsEnabled: ", this.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'f6cea367b5007f767afb25a033215abda734de9d' }, "IsScaling: ", this.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '4386ef749facd2e54da7f58aa2713b87ed76f2df' }, "IsPanning: ", this.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '1713185b36a50dfe0f9efa0c92394222db80a377' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '5104f428b808e7d843712302ad2e58b619876bee' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '2cb3b27a00627188e7082fa94169eb961a1ae6ed' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '7407656e61be665f27e706738faa6d318e2c1d04' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '701bf05c25cb3d3728af6602f694e6064627ea59' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '772c345ea9c64ef800fdbb26919f1a54ca889025' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'dc687c8ba24182b8b61979ad334b989d3be72ec6' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '10cbc575a7905396a76eca4e7b56be719755aeb4' }, "PointerX: ", this.store.state?.pointerX), h("div", { key: '4f21199328ffadddcc58b7d6b102a89e5079f676' }, "PointerY: ", this.store.state?.pointerY), h("div", { key: 'ac705f38cb323b8dc8cbf95f875657c5dec5c9ae' }, "SelectedObjects: ", this.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '2ca55c53246e64520af6720a3f87d2357295ca7f', id: "origin", class: "origin", style: {
2884
+ transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,
2885
+ } }, this.store.state.objectsMap.allObjects()?.map(object => {
2886
+ return (h("div", { key: object.id, style: { display: object.isInViewport() ? 'block' : 'none', transform: object?.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' } }, h("svg", { xmlns: "http://www.w3.org/2000/svg", id: object.id, class: "object", style: {
2887
+ height: object?.totalHeight.toString(),
2888
+ width: object?.totalWidth.toString(),
2889
+ left: '0',
2890
+ top: '0',
2891
+ position: 'absolute',
2892
+ transform: `rotate(${object.rotationDegrees}deg)`,
2893
+ transformOrigin: 'center',
2894
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
2895
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
2896
+ } }, h("foreignObject", { x: "0", y: "0", width: object.totalWidth.toString(), height: object.totalHeight.toString(), style: {
2897
+ minHeight: '0',
2898
+ minWidth: '0',
2899
+ backgroundColor: object.backgroundColor,
2900
+ borderColor: object.borderColor,
2901
+ borderWidth: object.borderWidth + 'px',
2902
+ borderStyle: 'solid',
2903
+ padding: object.padding + 'px',
2904
+ overflow: 'visible',
2905
+ } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => (el ? object.mount(el) : object.unmount()), xmlns: "http://www.w3.org/2000/svg", style: {
2906
+ height: object?.height.toString(),
2907
+ width: object?.width.toString(),
2908
+ position: 'absolute',
2909
+ overflow: 'visible',
2910
+ }, viewBox: object?.viewBox }, h("path", { d: object?.d, fill: object.fill, stroke: object?.stroke }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => (el ? object.mount(el) : object.unmount()), src: object.src, style: {
2911
+ width: '100%',
2912
+ height: '100%',
2913
+ userSelect: 'none',
2914
+ pointerEvents: 'none',
2915
+ }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => (el ? object.mount(el) : object.unmount()), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
2916
+ width: '100%',
2917
+ height: '100%',
2918
+ color: object.fontColor,
2919
+ fontSize: object.fontSize?.toString() + 'px',
2920
+ fontFamily: object.fontFamily,
2921
+ border: 'none',
2922
+ outline: 'none',
2923
+ resize: 'none',
2924
+ overflow: 'hidden',
2925
+ display: 'block',
2926
+ padding: '1px',
2927
+ whiteSpace: 'nowrap',
2928
+ pointerEvents: object.isReadonly ? 'none' : 'auto',
2929
+ cursor: object.isReadonly ? 'default' : 'text',
2930
+ caretColor: object.isReadonly ? 'transparent' : 'auto',
2931
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
2932
+ width: '100%',
2933
+ height: '100%',
2934
+ pointerEvents: 'auto',
2935
+ overflow: 'hidden',
2936
+ display: 'block',
2937
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
2938
+ width: '100%',
2939
+ height: '100%',
2940
+ } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
2941
+ width: '100%',
2942
+ height: '100%',
2943
+ } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
2944
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2945
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
2946
+ strokeLinecap: 'square',
2947
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
2948
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2949
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
2950
+ strokeLinecap: 'square',
2951
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
2952
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2953
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
2954
+ strokeLinecap: 'square',
2955
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
2956
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2957
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
2958
+ strokeLinecap: 'square',
2959
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
2960
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
2961
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
2962
+ fill: 'transparent',
2963
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
2964
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
2965
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
2966
+ fill: 'transparent',
2967
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
2968
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
2969
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
2970
+ fill: 'transparent',
2971
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
2972
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
2973
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
2974
+ fill: 'transparent',
2975
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / this.store.state?.scale), style: {
2976
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2977
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,
2978
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleSize * object.scale) / this.store.state?.scale}`, style: {
2979
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
2980
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / this.store.state?.scale), r: `${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`, style: {
2981
+ fill: 'transparent',
2982
+ cursor: 'grab',
2983
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
2984
+ }), h("svg", { key: '0098f1b8233d45f49dc8bdcc13c08f20c04b65e1', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
2985
+ height: this.store.state.currentPath?.height.toString(),
2986
+ width: this.store.state.currentPath?.width.toString(),
3046
2987
  left: '0',
3047
2988
  top: '0',
3048
- zIndex: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.zIndex.toString(),
2989
+ zIndex: this.store.state.currentPath?.zIndex.toString(),
3049
2990
  position: 'absolute',
3050
- transform: (_2 = this.store.state.currentPath) === null || _2 === void 0 ? void 0 : _2.transformationMatrix,
2991
+ transform: this.store.state.currentPath?.transformationMatrix,
3051
2992
  transformOrigin: 'top left',
3052
2993
  overflow: 'visible',
3053
- }, viewBox: (_3 = this.store.state.currentPath) === null || _3 === void 0 ? void 0 : _3.viewBox }, h("path", { key: '66ebcf1791c993d62b34a2e4da1d4279428a17dd', d: (_4 = this.store.state.currentPath) === null || _4 === void 0 ? void 0 : _4.d, fill: (_5 = this.store.state.currentPath) === null || _5 === void 0 ? void 0 : _5.fill, stroke: (_6 = this.store.state.currentPath) === null || _6 === void 0 ? void 0 : _6.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: 'af91784e3afc84b71d5186237d287c31d472d80a', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: ((_7 = this.store.state.selectionGroup) === null || _7 === void 0 ? void 0 : _7.objects) || [], style: {
2994
+ }, viewBox: this.store.state.currentPath?.viewBox }, h("path", { key: '08310713fa8f2f1f695b1b61bb2b6e5a5f77f192', d: this.store.state.currentPath?.d, fill: this.store.state.currentPath?.fill, stroke: this.store.state.currentPath?.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '2529447e26ba02689303be39cc593dfafc25b96c', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: this.store.state.selectionGroup?.objects || [], style: {
3054
2995
  position: 'fixed',
3055
2996
  left: `${this.store.state.contextMenuX}px`,
3056
2997
  top: `${this.store.state.contextMenuY}px`,
3057
2998
  zIndex: '10000',
3058
2999
  }, onActionSelected: event => {
3059
- var _a;
3060
3000
  event.detail.action({
3061
3001
  x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,
3062
3002
  y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,
3063
- }, (_a = this.store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.objects);
3003
+ }, this.store.state.selectionGroup?.objects);
3064
3004
  this.hideContextMenu();
3065
- } })), ((_8 = this.store.state) === null || _8 === void 0 ? void 0 : _8.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '573a4422b742044df5f240b260bc66e83d004520', store: this.store })));
3005
+ } })), this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '7c10277160eb1bc51581e4dfbdd4d0cdf626ed8c', store: this.store })));
3066
3006
  }
3067
- get host() { return this; }
3068
3007
  static get watchers() { return {
3069
3008
  "workspace": ["onWorkspaceChange"],
3070
3009
  "scaleMax": ["validateScaleMax"],
@@ -3143,6 +3082,6 @@ function defineCustomElement() {
3143
3082
  }
3144
3083
 
3145
3084
  export { ABSOLUTE_SCALE_MAX as A, KritzelImage as K, KritzelEraserTool as a, KritzelImageTool as b, KritzelSelectionTool as c, KritzelEngine as d, defineCustomElement as e, ABSOLUTE_SCALE_MIN as f };
3146
- //# sourceMappingURL=p-D-zg05gA.js.map
3085
+ //# sourceMappingURL=p-BuewJQNl.js.map
3147
3086
 
3148
- //# sourceMappingURL=p-D-zg05gA.js.map
3087
+ //# sourceMappingURL=p-BuewJQNl.js.map