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,10 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  class KritzelBaseCommand {
4
+ _store;
5
+ initiator;
6
+ skipHistory;
4
7
  constructor(store, initiator, skipHistory = false) {
5
- var _a, _b;
6
8
  this._store = store;
7
- this.initiator = (_b = (_a = initiator === null || initiator === void 0 ? void 0 : initiator.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Unknown';
9
+ this.initiator = initiator?.constructor?.name ?? 'Unknown';
8
10
  this.skipHistory = skipHistory;
9
11
  }
10
12
  execute() {
@@ -15,25 +17,13 @@ class KritzelBaseCommand {
15
17
  }
16
18
  }
17
19
 
18
- var __rest = (undefined && undefined.__rest) || function (s, e) {
19
- var t = {};
20
- for (var p in s)
21
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
22
- t[p] = s[p];
23
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
24
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
25
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
26
- t[p[i]] = s[p[i]];
27
- }
28
- return t;
29
- };
30
20
  class ObjectHelper {
31
21
  static generateUUID() {
32
22
  return Math.random().toString(36).substr(2, 9);
33
23
  }
34
24
  static clone(objOrObjs) {
35
25
  const cloneObject = (obj) => {
36
- const _a = obj, { element } = _a, remainingProps = __rest(_a, ["_store", "_elementRef", "totalWidth", "totalHeight", "element"]);
26
+ const { _store, _elementRef, totalWidth, totalHeight, element, ...remainingProps } = obj;
37
27
  const clonedProps = structuredClone(remainingProps);
38
28
  if (element && typeof element === 'object' && 'nodeType' in element && element.nodeType === 1) {
39
29
  clonedProps.element = element.cloneNode(true);
@@ -49,11 +39,14 @@ class ObjectHelper {
49
39
  if (obj === null || obj === undefined) {
50
40
  return true;
51
41
  }
52
- return (Object === null || Object === void 0 ? void 0 : Object.keys(obj).length) === 0 && (obj === null || obj === void 0 ? void 0 : obj.constructor) === Object;
42
+ return Object?.keys(obj).length === 0 && obj?.constructor === Object;
53
43
  }
54
44
  }
55
45
 
56
46
  class UpdateObjectCommand extends KritzelBaseCommand {
47
+ object;
48
+ updatedProperties;
49
+ previousProperties;
57
50
  constructor(store, initiator, object, updatedProperties, skipHistory = false) {
58
51
  super(store, initiator, skipHistory);
59
52
  this.object = object;
@@ -84,6 +77,7 @@ class UpdateObjectCommand extends KritzelBaseCommand {
84
77
  }
85
78
 
86
79
  class KritzelToolRegistry {
80
+ static registry = {};
87
81
  static registerTool(toolName, constructor, store) {
88
82
  const toolInstance = new constructor(store);
89
83
  toolInstance.name = toolName;
@@ -99,12 +93,12 @@ class KritzelToolRegistry {
99
93
  return toolInstance;
100
94
  }
101
95
  }
102
- KritzelToolRegistry.registry = {};
103
96
 
104
97
  class KritzelBaseTool {
98
+ __class__ = this.constructor.name;
99
+ name = 'base-tool';
100
+ _store;
105
101
  constructor(store) {
106
- this.__class__ = this.constructor.name;
107
- this.name = 'base-tool';
108
102
  this._store = store;
109
103
  }
110
104
  onActivate() {
@@ -132,16 +126,17 @@ class KritzelBaseTool {
132
126
  }
133
127
 
134
128
  class AddObjectCommand extends KritzelBaseCommand {
129
+ object;
135
130
  constructor(store, initiator, object, skipHistory = false) {
136
131
  super(store, initiator, skipHistory);
137
132
  this.object = object;
138
133
  }
139
134
  execute() {
140
- this._store.state.objectsOctree.insert(this.object);
135
+ this._store.state.objectsMap.insert(this.object);
141
136
  this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
142
137
  }
143
138
  undo() {
144
- this._store.state.objectsOctree.remove(object => object.id === this.object.id);
139
+ this._store.state.objectsMap.remove(object => object.id === this.object.id);
145
140
  this._store.deleteObjectFromDatabase(this.object.id);
146
141
  }
147
142
  }
@@ -170,7 +165,7 @@ class KritzelEventHelper {
170
165
  }
171
166
  static onLongTouchPress(event, onSuccess, onCancel) {
172
167
  if (event.pointerType !== 'touch') {
173
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
168
+ onCancel?.();
174
169
  return () => { };
175
170
  }
176
171
  const longPressTimeout = 400;
@@ -185,7 +180,7 @@ class KritzelEventHelper {
185
180
  const cancel = () => {
186
181
  clearTimeout(timer);
187
182
  removeListeners();
188
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
183
+ onCancel?.();
189
184
  };
190
185
  const onPointerMove = (e) => {
191
186
  if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {
@@ -239,31 +234,49 @@ class KritzelKeyboardHelper {
239
234
  meta.setAttribute('content', newContent);
240
235
  }
241
236
  }
237
+ static onKeyboardVisibleChanged(callback) {
238
+ if ('visualViewport' in window) {
239
+ const VIEWPORT_VS_CLIENT_HEIGHT_RATIO = 0.75;
240
+ const onResize = (event) => {
241
+ const target = event.target;
242
+ const isOpen = (target.height * target.scale) / window.screen.height < VIEWPORT_VS_CLIENT_HEIGHT_RATIO;
243
+ callback(isOpen);
244
+ };
245
+ window.visualViewport.addEventListener('resize', onResize);
246
+ return () => window.visualViewport.removeEventListener('resize', onResize);
247
+ }
248
+ else {
249
+ // Fallback for older browsers does not provide a reliable event-based mechanism.
250
+ console.warn('Listening for keyboard visibility changes is not reliably supported in this browser.');
251
+ // Return a no-op cleanup function.
252
+ return () => { };
253
+ }
254
+ }
242
255
  }
243
256
 
244
257
  class KritzelTextTool extends KritzelBaseTool {
258
+ fontFamily = 'Arial';
259
+ fontSize = 16;
260
+ fontColor = '#000000';
261
+ palette = [
262
+ '#000000',
263
+ '#FFFFFF',
264
+ '#FF0000',
265
+ '#00FF00',
266
+ '#0000FF',
267
+ '#FFFF00',
268
+ '#FF00FF',
269
+ '#00FFFF',
270
+ '#808080',
271
+ '#C0C0C0',
272
+ '#800000',
273
+ '#008000',
274
+ '#000080',
275
+ '#808000',
276
+ '#800080',
277
+ ];
245
278
  constructor(store) {
246
279
  super(store);
247
- this.fontFamily = 'Arial';
248
- this.fontSize = 16;
249
- this.fontColor = '#000000';
250
- this.palette = [
251
- '#000000',
252
- '#FFFFFF',
253
- '#FF0000',
254
- '#00FF00',
255
- '#0000FF',
256
- '#FFFF00',
257
- '#FF00FF',
258
- '#00FFFF',
259
- '#808080',
260
- '#C0C0C0',
261
- '#800000',
262
- '#008000',
263
- '#000080',
264
- '#808000',
265
- '#800080',
266
- ];
267
280
  }
268
281
  handlePointerDown(event) {
269
282
  if (event.cancelable) {
@@ -272,7 +285,7 @@ class KritzelTextTool extends KritzelBaseTool {
272
285
  if (event.pointerType === 'mouse') {
273
286
  const path = event.composedPath().slice(1);
274
287
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
275
- const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
288
+ const object = this._store.findObjectById(objectElement?.id);
276
289
  if (this._store.state.activeText === null && object && object instanceof KritzelText) {
277
290
  this._store.state.activeText = object;
278
291
  object.focus();
@@ -304,7 +317,7 @@ class KritzelTextTool extends KritzelBaseTool {
304
317
  const activePointers = Array.from(this._store.state.pointers.values());
305
318
  const path = event.composedPath().slice(1);
306
319
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
307
- const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
320
+ const object = this._store.findObjectById(objectElement?.id);
308
321
  if (this._store.state.activeText === null && object && object instanceof KritzelText) {
309
322
  this._store.state.activeText = object;
310
323
  object.focus();
@@ -335,17 +348,16 @@ class KritzelTextTool extends KritzelBaseTool {
335
348
  }
336
349
  }
337
350
  handlePointerUp(event) {
338
- var _a, _b, _c, _d;
339
351
  if (event.cancelable) {
340
352
  event.preventDefault();
341
353
  }
342
354
  if (event.pointerType === 'mouse') {
343
- (_a = this._store.state.activeText) === null || _a === void 0 ? void 0 : _a.updateTextareaDimensions();
344
- (_b = this._store.state.activeText) === null || _b === void 0 ? void 0 : _b.focus();
355
+ this._store.state.activeText?.updateTextareaDimensions();
356
+ this._store.state.activeText?.focus();
345
357
  }
346
358
  if (event.pointerType === 'touch') {
347
- (_c = this._store.state.activeText) === null || _c === void 0 ? void 0 : _c.updateTextareaDimensions();
348
- (_d = this._store.state.activeText) === null || _d === void 0 ? void 0 : _d.focus();
359
+ this._store.state.activeText?.updateTextareaDimensions();
360
+ this._store.state.activeText?.focus();
349
361
  KritzelKeyboardHelper.enableInteractiveWidget();
350
362
  }
351
363
  }
@@ -405,6 +417,34 @@ class KritzelGeometryHelper {
405
417
  }
406
418
 
407
419
  class KritzelBaseObject {
420
+ __class__ = 'KritzelBaseObject';
421
+ _store;
422
+ _elementRef;
423
+ id;
424
+ workspaceId;
425
+ x;
426
+ y;
427
+ translateX;
428
+ translateY;
429
+ height;
430
+ width;
431
+ backgroundColor;
432
+ borderColor;
433
+ borderWidth = 0;
434
+ opacity = 1;
435
+ padding = 0;
436
+ scale;
437
+ resizing = false;
438
+ rotation = 0;
439
+ markedForRemoval = false;
440
+ zIndex = 0;
441
+ isVisible = true;
442
+ isSelected = false;
443
+ isHovered = false;
444
+ isMounted = false;
445
+ isEditable = false;
446
+ isInteractive = false;
447
+ isDebugInfoVisible = false;
408
448
  get totalWidth() {
409
449
  return this.width + this.padding * 2;
410
450
  }
@@ -490,21 +530,6 @@ class KritzelBaseObject {
490
530
  return this.translateY + this.totalHeight / 2;
491
531
  }
492
532
  constructor() {
493
- this.__class__ = 'KritzelBaseObject';
494
- this.borderWidth = 0;
495
- this.opacity = 1;
496
- this.padding = 0;
497
- this.resizing = false;
498
- this.rotation = 0;
499
- this.markedForRemoval = false;
500
- this.zIndex = 0;
501
- this.isVisible = true;
502
- this.isSelected = false;
503
- this.isHovered = false;
504
- this.isMounted = false;
505
- this.isEditable = false;
506
- this.isInteractive = false;
507
- this.isDebugInfoVisible = false;
508
533
  this.id = this.generateId();
509
534
  }
510
535
  static create(store) {
@@ -600,26 +625,26 @@ class KritzelBaseObject {
600
625
  updatePosition(x, y) {
601
626
  this.translateX = x;
602
627
  this.translateY = y;
603
- this._store.state.objectsOctree.update(this);
628
+ this._store.state.objectsMap.update(this);
604
629
  }
605
630
  }
606
631
 
607
632
  class KritzelText extends KritzelBaseObject {
633
+ __class__ = 'KritzelText';
634
+ value = '';
635
+ fontFamily = 'Arial';
636
+ fontSize = 8;
637
+ fontColor = '#000000';
638
+ initialWidth = 3;
639
+ isNew = true;
640
+ isDebugInfoVisible = true;
641
+ isEditable = true;
642
+ rows = 1;
608
643
  get isReadonly() {
609
644
  return !(this._store.state.activeTool instanceof KritzelTextTool);
610
645
  }
611
646
  constructor(config) {
612
647
  super();
613
- this.__class__ = 'KritzelText';
614
- this.value = '';
615
- this.fontFamily = 'Arial';
616
- this.fontSize = 8;
617
- this.fontColor = '#000000';
618
- this.initialWidth = 3;
619
- this.isNew = true;
620
- this.isDebugInfoVisible = true;
621
- this.isEditable = true;
622
- this.rows = 1;
623
648
  if (config) {
624
649
  this.value = config.value || ' ';
625
650
  this.translateX = config.translateX || 0;
@@ -701,7 +726,7 @@ class KritzelText extends KritzelBaseObject {
701
726
  document.body.removeChild(span);
702
727
  this.width = textWidth;
703
728
  this.height = textHeight;
704
- this._store.history.executeCommand(new UpdateObjectCommand(this._store, this, this, Object.assign({}, this)));
729
+ this._store.history.executeCommand(new UpdateObjectCommand(this._store, this, this, { ...this }));
705
730
  }
706
731
  }
707
732
  focus() {
@@ -766,46 +791,49 @@ class KritzelMathHelper {
766
791
  }
767
792
 
768
793
  class KritzelPath extends KritzelBaseObject {
794
+ __class__ = 'KritzelPath';
795
+ points;
796
+ d;
797
+ stroke = 'none';
798
+ strokeWidth;
799
+ lineSlack = 0.5;
800
+ fill;
801
+ x = 0;
802
+ y = 0;
803
+ height = 0;
804
+ width = 0;
805
+ scale = 1;
806
+ options;
807
+ isVisible = true;
808
+ isDebugInfoVisible = true;
809
+ _adjustedPoints = null;
769
810
  get viewBox() {
770
811
  return `${this.x} ${this.y} ${this.width} ${this.height}`;
771
812
  }
772
813
  constructor(config) {
773
- var _a, _b, _c, _d, _e, _f;
774
814
  super();
775
- this.__class__ = 'KritzelPath';
776
- this.stroke = 'none';
777
- this.lineSlack = 0.5;
778
- this.x = 0;
779
- this.y = 0;
780
- this.height = 0;
781
- this.width = 0;
782
- this.scale = 1;
783
- this.isVisible = true;
784
- this.isDebugInfoVisible = true;
785
- this._adjustedPoints = null;
786
815
  this.options = config;
787
- this.points = (_a = config === null || config === void 0 ? void 0 : config.points) !== null && _a !== void 0 ? _a : [];
788
- this.translateX = (_b = config === null || config === void 0 ? void 0 : config.translateX) !== null && _b !== void 0 ? _b : 0;
789
- this.translateY = (_c = config === null || config === void 0 ? void 0 : config.translateY) !== null && _c !== void 0 ? _c : 0;
790
- this.scale = (_d = config === null || config === void 0 ? void 0 : config.scale) !== null && _d !== void 0 ? _d : 1;
791
- this.strokeWidth = (_e = config === null || config === void 0 ? void 0 : config.strokeWidth) !== null && _e !== void 0 ? _e : 8;
792
- this.fill = (_f = config === null || config === void 0 ? void 0 : config.fill) !== null && _f !== void 0 ? _f : '#000000';
816
+ this.points = config?.points ?? [];
817
+ this.translateX = config?.translateX ?? 0;
818
+ this.translateY = config?.translateY ?? 0;
819
+ this.scale = config?.scale ?? 1;
820
+ this.strokeWidth = config?.strokeWidth ?? 8;
821
+ this.fill = config?.fill ?? '#000000';
793
822
  this.d = this.generateSvgPath();
794
823
  this.updateDimensions();
795
824
  }
796
825
  static create(store, options) {
797
- var _a, _b, _c, _d, _e, _f;
798
826
  const object = new KritzelPath();
799
827
  object._store = store;
800
828
  object.id = object.generateId();
801
829
  object.workspaceId = store.state.activeWorkspace.id;
802
830
  object.options = options;
803
- object.points = (_a = options === null || options === void 0 ? void 0 : options.points) !== null && _a !== void 0 ? _a : [];
804
- object.translateX = (_b = options === null || options === void 0 ? void 0 : options.translateX) !== null && _b !== void 0 ? _b : 0;
805
- object.translateY = (_c = options === null || options === void 0 ? void 0 : options.translateY) !== null && _c !== void 0 ? _c : 0;
806
- object.scale = (_d = options === null || options === void 0 ? void 0 : options.scale) !== null && _d !== void 0 ? _d : 1;
807
- object.strokeWidth = (_e = options === null || options === void 0 ? void 0 : options.strokeWidth) !== null && _e !== void 0 ? _e : 8;
808
- object.fill = (_f = options === null || options === void 0 ? void 0 : options.fill) !== null && _f !== void 0 ? _f : '#000000';
831
+ object.points = options?.points ?? [];
832
+ object.translateX = options?.translateX ?? 0;
833
+ object.translateY = options?.translateY ?? 0;
834
+ object.scale = options?.scale ?? 1;
835
+ object.strokeWidth = options?.strokeWidth ?? 8;
836
+ object.fill = options?.fill ?? '#000000';
809
837
  object.zIndex = store.currentZIndex;
810
838
  object.d = object.generateSvgPath();
811
839
  object.updateDimensions();
@@ -914,11 +942,10 @@ class KritzelPath extends KritzelBaseObject {
914
942
  this.translateX = x;
915
943
  this.translateY = y;
916
944
  this._adjustedPoints = null;
917
- this._store.state.objectsOctree.update(this);
945
+ this._store.state.objectsMap.update(this);
918
946
  }
919
947
  computeAdjustedPoints() {
920
- var _a;
921
- if (!((_a = this.points) === null || _a === void 0 ? void 0 : _a.length)) {
948
+ if (!this.points?.length) {
922
949
  return [];
923
950
  }
924
951
  const angle = this.rotation;
@@ -1031,20 +1058,20 @@ class KritzelPath extends KritzelBaseObject {
1031
1058
  }
1032
1059
 
1033
1060
  class KritzelImage extends KritzelBaseObject {
1061
+ __class__ = 'KritzelImage';
1062
+ src = '';
1063
+ maxWidth = 300;
1064
+ maxHeight = 300;
1065
+ maxCompressionSize = 300;
1066
+ isDebugInfoVisible = true;
1034
1067
  constructor(config) {
1035
1068
  super();
1036
- this.__class__ = 'KritzelImage';
1037
- this.src = '';
1038
- this.maxWidth = 300;
1039
- this.maxHeight = 300;
1040
- this.maxCompressionSize = 300;
1041
- this.isDebugInfoVisible = true;
1042
- this.src = (config === null || config === void 0 ? void 0 : config.src) || '';
1043
- this.x = (config === null || config === void 0 ? void 0 : config.x) || 0;
1044
- this.y = (config === null || config === void 0 ? void 0 : config.y) || 0;
1045
- this.translateX = (config === null || config === void 0 ? void 0 : config.translateX) || 0;
1046
- this.translateY = (config === null || config === void 0 ? void 0 : config.translateY) || 0;
1047
- this.scale = (config === null || config === void 0 ? void 0 : config.scale) || 1;
1069
+ this.src = config?.src || '';
1070
+ this.x = config?.x || 0;
1071
+ this.y = config?.y || 0;
1072
+ this.translateX = config?.translateX || 0;
1073
+ this.translateY = config?.translateY || 0;
1074
+ this.scale = config?.scale || 1;
1048
1075
  }
1049
1076
  static create(store) {
1050
1077
  const object = new KritzelImage();
@@ -1084,15 +1111,15 @@ class KritzelImage extends KritzelBaseObject {
1084
1111
  }
1085
1112
 
1086
1113
  class KritzelBrushTool extends KritzelBaseTool {
1114
+ type = 'pen';
1115
+ color = '#000000';
1116
+ size = 6;
1117
+ palettes = {
1118
+ pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],
1119
+ highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],
1120
+ };
1087
1121
  constructor(store) {
1088
1122
  super(store);
1089
- this.type = 'pen';
1090
- this.color = '#000000';
1091
- this.size = 6;
1092
- this.palettes = {
1093
- pen: ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#808080', '#C0C0C0', '#800000', '#008000', '#000080', '#808000', '#800080'],
1094
- highlighter: ['#ffff00', '#ffb347', '#b4ffb4'],
1095
- };
1096
1123
  }
1097
1124
  handlePointerDown(event) {
1098
1125
  if (event.cancelable) {
@@ -1196,6 +1223,7 @@ class KritzelBrushTool extends KritzelBaseTool {
1196
1223
  }
1197
1224
 
1198
1225
  class BatchCommand extends KritzelBaseCommand {
1226
+ commands;
1199
1227
  constructor(store, initiator, commands, skipHistory = false) {
1200
1228
  super(store, initiator, skipHistory);
1201
1229
  this.commands = commands;
@@ -1209,10 +1237,11 @@ class BatchCommand extends KritzelBaseCommand {
1209
1237
  }
1210
1238
 
1211
1239
  class KritzelCustomElement extends KritzelBaseObject {
1240
+ __class__ = 'KritzelCustomElement';
1241
+ element;
1242
+ isInteractive = true;
1212
1243
  constructor(config) {
1213
1244
  super();
1214
- this.__class__ = 'KritzelCustomElement';
1215
- this.isInteractive = true;
1216
1245
  if (config) {
1217
1246
  this.translateX = config.translateX || 0;
1218
1247
  this.translateY = config.translateY || 0;
@@ -1261,26 +1290,27 @@ class KritzelCustomElement extends KritzelBaseObject {
1261
1290
  }
1262
1291
 
1263
1292
  class RemoveObjectCommand extends KritzelBaseCommand {
1293
+ object;
1264
1294
  constructor(store, initiator, object, skipHistory = false) {
1265
1295
  super(store, initiator, skipHistory);
1266
1296
  this.object = object;
1267
1297
  }
1268
1298
  execute() {
1269
- this._store.state.objectsOctree.remove(object => object.id === this.object.id);
1270
- this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
1299
+ this._store.state.objectsMap.remove(object => object.id === this.object.id);
1300
+ this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
1271
1301
  this._store.deleteObjectFromDatabase(this.object.id);
1272
1302
  }
1273
1303
  undo() {
1274
- this._store.state.objectsOctree.insert(this.object);
1275
- this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
1304
+ this._store.state.objectsMap.insert(this.object);
1305
+ this._store.state.objectsMap.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
1276
1306
  this._store.addObjectToDatabase(ObjectHelper.clone(this.object));
1277
1307
  }
1278
1308
  }
1279
1309
 
1280
1310
  class KritzelEraserTool extends KritzelBaseTool {
1311
+ touchStartTimeout = null;
1281
1312
  constructor(store) {
1282
1313
  super(store);
1283
- this.touchStartTimeout = null;
1284
1314
  }
1285
1315
  handlePointerDown(event) {
1286
1316
  if (event.pointerType === 'mouse') {
@@ -1297,7 +1327,6 @@ class KritzelEraserTool extends KritzelBaseTool {
1297
1327
  }
1298
1328
  }
1299
1329
  handlePointerMove(event) {
1300
- var _a;
1301
1330
  if (event.pointerType === 'mouse') {
1302
1331
  if (this._store.state.isErasing) {
1303
1332
  const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
@@ -1313,7 +1342,7 @@ class KritzelEraserTool extends KritzelBaseTool {
1313
1342
  }
1314
1343
  if (event.pointerType === 'touch') {
1315
1344
  if (this._store.state.pointers.size === 1 && this._store.state.isErasing) {
1316
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
1345
+ const shadowRoot = this._store.state.host?.shadowRoot;
1317
1346
  if (!shadowRoot)
1318
1347
  return;
1319
1348
  const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
@@ -1360,23 +1389,30 @@ class KritzelEraserTool extends KritzelBaseTool {
1360
1389
  }
1361
1390
 
1362
1391
  class RemoveSelectionGroupCommand extends KritzelBaseCommand {
1392
+ previousSelectionGroup;
1363
1393
  constructor(store, initiator, skipHistory = false) {
1364
1394
  super(store, initiator, skipHistory);
1365
1395
  this.previousSelectionGroup = this._store.state.selectionGroup;
1366
1396
  }
1367
1397
  execute() {
1368
- this._store.state.objectsOctree.remove(object => { var _a; return object.id === ((_a = this.previousSelectionGroup) === null || _a === void 0 ? void 0 : _a.id); });
1398
+ this._store.state.objectsMap.remove(object => object.id === this.previousSelectionGroup?.id);
1369
1399
  this._store.state.selectionGroup = null;
1370
1400
  }
1371
1401
  undo() {
1372
1402
  if (this.previousSelectionGroup) {
1373
- this._store.state.objectsOctree.insert(this.previousSelectionGroup);
1403
+ this._store.state.objectsMap.insert(this.previousSelectionGroup);
1374
1404
  this._store.state.selectionGroup = this.previousSelectionGroup;
1375
1405
  }
1376
1406
  }
1377
1407
  }
1378
1408
 
1379
1409
  class MoveSelectionGroupCommand extends KritzelBaseCommand {
1410
+ selectionGroup;
1411
+ startX;
1412
+ startY;
1413
+ endX;
1414
+ endY;
1415
+ skipExecution;
1380
1416
  constructor(store, initiator, startX, startY, endX, endY, skipFirstExecution = false, skipHistory = false) {
1381
1417
  super(store, initiator, skipHistory);
1382
1418
  this.startX = startX;
@@ -1401,20 +1437,26 @@ class MoveSelectionGroupCommand extends KritzelBaseCommand {
1401
1437
  }
1402
1438
 
1403
1439
  class KritzelBaseHandler {
1440
+ _store;
1404
1441
  constructor(store) {
1405
1442
  this._store = store;
1406
1443
  }
1407
1444
  }
1408
1445
 
1409
1446
  class KritzelMoveHandler extends KritzelBaseHandler {
1447
+ dragStartX;
1448
+ dragStartY;
1449
+ startX;
1450
+ startY;
1451
+ endX;
1452
+ endY;
1410
1453
  constructor(store) {
1411
1454
  super(store);
1412
1455
  }
1413
1456
  handlePointerDown(event) {
1414
- var _a, _b;
1415
1457
  if (event.pointerType === 'mouse') {
1416
1458
  if (KritzelEventHelper.isLeftClick(event)) {
1417
- if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
1459
+ if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
1418
1460
  const clientX = event.clientX - this._store.offsetX;
1419
1461
  const clientY = event.clientY - this._store.offsetY;
1420
1462
  this._store.state.isDragging = true;
@@ -1428,7 +1470,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
1428
1470
  if (event.pointerType === 'touch') {
1429
1471
  const activePointers = Array.from(this._store.state.pointers.values());
1430
1472
  if (this._store.state.pointers.size === 1) {
1431
- if (((_b = this._store.state.selectionGroup) === null || _b === void 0 ? void 0 : _b.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
1473
+ if (this._store.state.selectionGroup?.isSelected && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
1432
1474
  const x = Math.round(activePointers[0].clientX - this._store.offsetX);
1433
1475
  const y = Math.round(activePointers[0].clientY - this._store.offsetY);
1434
1476
  this.dragStartX = x;
@@ -1510,6 +1552,9 @@ var KritzelHandleType;
1510
1552
  })(KritzelHandleType || (KritzelHandleType = {}));
1511
1553
 
1512
1554
  class ResizeSelectionGroupCommand extends KritzelBaseCommand {
1555
+ newSize;
1556
+ previousSize;
1557
+ selectionGroup;
1513
1558
  constructor(store, initiator, previousSize, newSize, skipHistory = false) {
1514
1559
  super(store, initiator, skipHistory);
1515
1560
  this.previousSize = previousSize;
@@ -1527,12 +1572,12 @@ class ResizeSelectionGroupCommand extends KritzelBaseCommand {
1527
1572
  }
1528
1573
 
1529
1574
  class KritzelResizeHandler extends KritzelBaseHandler {
1575
+ initialMouseX = 0;
1576
+ initialMouseY = 0;
1577
+ initialSize = { x: 0, y: 0, width: 0, height: 0 };
1578
+ newSize = { x: 0, y: 0, width: 0, height: 0 };
1530
1579
  constructor(store) {
1531
1580
  super(store);
1532
- this.initialMouseX = 0;
1533
- this.initialMouseY = 0;
1534
- this.initialSize = { x: 0, y: 0, width: 0, height: 0 };
1535
- this.newSize = { x: 0, y: 0, width: 0, height: 0 };
1536
1581
  }
1537
1582
  handlePointerDown(event) {
1538
1583
  if (event.pointerType === 'mouse') {
@@ -1656,7 +1701,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
1656
1701
  if (this._store.state.isResizing) {
1657
1702
  const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
1658
1703
  const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
1659
- return new UpdateObjectCommand(this._store, this, object, Object.assign({}, object));
1704
+ return new UpdateObjectCommand(this._store, this, object, { ...object });
1660
1705
  });
1661
1706
  this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
1662
1707
  this._store.state.isResizing = false;
@@ -1667,7 +1712,7 @@ class KritzelResizeHandler extends KritzelBaseHandler {
1667
1712
  if (this._store.state.isResizing) {
1668
1713
  const resizeSelectionGroupCommand = new ResizeSelectionGroupCommand(this._store, this, structuredClone(this.initialSize), structuredClone(this.newSize));
1669
1714
  const updateObjectsCommand = this._store.state.selectionGroup.objects.map(object => {
1670
- return new UpdateObjectCommand(this._store, this, object, Object.assign({}, object));
1715
+ return new UpdateObjectCommand(this._store, this, object, { ...object });
1671
1716
  });
1672
1717
  this._store.history.executeCommand(new BatchCommand(this._store, this, [resizeSelectionGroupCommand, ...updateObjectsCommand]));
1673
1718
  this._store.state.isResizing = false;
@@ -1679,6 +1724,9 @@ class KritzelResizeHandler extends KritzelBaseHandler {
1679
1724
  }
1680
1725
 
1681
1726
  class RotateSelectionGroupCommand extends KritzelBaseCommand {
1727
+ rotation;
1728
+ initialRotation;
1729
+ selectionGroup;
1682
1730
  constructor(store, initiator, rotation, skipHistory = false) {
1683
1731
  super(store, initiator, skipHistory);
1684
1732
  this.rotation = rotation;
@@ -1689,23 +1737,23 @@ class RotateSelectionGroupCommand extends KritzelBaseCommand {
1689
1737
  this._store.state.selectionGroup = this.selectionGroup;
1690
1738
  this._store.state.selectionGroup.rotate(this.rotation);
1691
1739
  this._store.state.selectionGroup.objects.forEach(object => {
1692
- this._store.state.objectsOctree.update(object);
1740
+ this._store.state.objectsMap.update(object);
1693
1741
  });
1694
1742
  }
1695
1743
  undo() {
1696
1744
  this._store.state.selectionGroup = this.selectionGroup;
1697
1745
  this._store.state.selectionGroup.rotate(this.rotation - this.initialRotation);
1698
1746
  this._store.state.selectionGroup.objects.forEach(object => {
1699
- this._store.state.objectsOctree.update(object);
1747
+ this._store.state.objectsMap.update(object);
1700
1748
  });
1701
1749
  }
1702
1750
  }
1703
1751
 
1704
1752
  class KritzelRotationHandler extends KritzelBaseHandler {
1753
+ initialRotation = 0;
1754
+ rotation = 0;
1705
1755
  constructor(store) {
1706
1756
  super(store);
1707
- this.initialRotation = 0;
1708
- this.rotation = 0;
1709
1757
  }
1710
1758
  handlePointerDown(event) {
1711
1759
  if (event.pointerType === 'mouse') {
@@ -1815,11 +1863,8 @@ class KritzelRotationHandler extends KritzelBaseHandler {
1815
1863
  }
1816
1864
 
1817
1865
  class KrtizelSelectionBox extends KritzelBaseObject {
1818
- constructor() {
1819
- super(...arguments);
1820
- this.__class__ = 'KrtizelSelectionBox';
1821
- this.objects = [];
1822
- }
1866
+ __class__ = 'KrtizelSelectionBox';
1867
+ objects = [];
1823
1868
  static create(store) {
1824
1869
  const object = new KrtizelSelectionBox();
1825
1870
  object._store = store;
@@ -1837,24 +1882,30 @@ class KrtizelSelectionBox extends KritzelBaseObject {
1837
1882
  }
1838
1883
 
1839
1884
  class AddSelectionGroupCommand extends KritzelBaseCommand {
1885
+ selectionGroup;
1840
1886
  constructor(store, initiator, selectionGroup, skipHistory = false) {
1841
1887
  super(store, initiator, skipHistory);
1842
1888
  this.selectionGroup = selectionGroup;
1843
1889
  }
1844
1890
  execute() {
1845
- this._store.state.objectsOctree.remove(object => object instanceof KrtizelSelectionBox);
1846
- this._store.state.objectsOctree.insert(this.selectionGroup);
1891
+ this._store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
1892
+ this._store.state.objectsMap.insert(this.selectionGroup);
1847
1893
  this._store.state.selectionGroup = this.selectionGroup;
1848
1894
  this._store.state.selectionBox = null;
1849
1895
  }
1850
1896
  undo() {
1851
- this._store.state.objectsOctree.remove(object => object.id === this.selectionGroup.id);
1897
+ this._store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);
1852
1898
  this._store.state.selectionGroup = null;
1853
1899
  this._store.state.selectionBox = null;
1854
1900
  }
1855
1901
  }
1856
1902
 
1857
1903
  class KritzelSelectionHandler extends KritzelBaseHandler {
1904
+ startX;
1905
+ startY;
1906
+ touchStartX = 0;
1907
+ touchStartY = 0;
1908
+ touchStartTimeout = null;
1858
1909
  get isSelectionClick() {
1859
1910
  return this._store.state.selectionBox && this._store.state.selectionBox.width === 0 && this._store.state.selectionBox.height === 0;
1860
1911
  }
@@ -1863,9 +1914,6 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
1863
1914
  }
1864
1915
  constructor(store) {
1865
1916
  super(store);
1866
- this.touchStartX = 0;
1867
- this.touchStartY = 0;
1868
- this.touchStartTimeout = null;
1869
1917
  }
1870
1918
  handlePointerDown(event) {
1871
1919
  if (event.pointerType === 'mouse') {
@@ -1940,7 +1988,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
1940
1988
  removeSelectionBox() {
1941
1989
  this._store.state.selectionBox = null;
1942
1990
  this._store.state.isSelecting = false;
1943
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox);
1991
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);
1944
1992
  this._store.rerender();
1945
1993
  }
1946
1994
  startMouseSelection(event) {
@@ -1955,8 +2003,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
1955
2003
  this._store.state.selectionGroup = null;
1956
2004
  this._store.state.selectionBox = selectionBox;
1957
2005
  this._store.state.isSelecting = true;
1958
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
1959
- this._store.state.objectsOctree.insert(selectionBox);
2006
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
2007
+ this._store.state.objectsMap.insert(selectionBox);
1960
2008
  }
1961
2009
  startTouchSelection() {
1962
2010
  const activePointers = Array.from(this._store.state.pointers.values());
@@ -1977,8 +2025,8 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
1977
2025
  this._store.state.selectionGroup = null;
1978
2026
  this._store.state.selectionBox = selectionBox;
1979
2027
  this._store.state.isSelecting = true;
1980
- this._store.state.objectsOctree.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
1981
- this._store.state.objectsOctree.insert(selectionBox);
2028
+ this._store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);
2029
+ this._store.state.objectsMap.insert(selectionBox);
1982
2030
  }
1983
2031
  updateMouseSelection(event) {
1984
2032
  let clientX, clientY;
@@ -2066,6 +2114,11 @@ class KritzelHoverHandler extends KritzelBaseHandler {
2066
2114
  }
2067
2115
 
2068
2116
  class KritzelSelectionTool extends KritzelBaseTool {
2117
+ selectionHandler;
2118
+ moveHandler;
2119
+ hoverHandler;
2120
+ resizeHandler;
2121
+ rotationHandler;
2069
2122
  constructor(store) {
2070
2123
  super(store);
2071
2124
  this.selectionHandler = new KritzelSelectionHandler(this._store);
@@ -2091,7 +2144,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
2091
2144
  !this._store.state.isRotationHandleSelected) {
2092
2145
  this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));
2093
2146
  }
2094
- if (selectedObject && selectedObject.isSelected === false && (selectedObject === null || selectedObject === void 0 ? void 0 : selectedObject.objects.length) === 1 && selectedObject.objects[0].isInteractive) {
2147
+ if (selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {
2095
2148
  return;
2096
2149
  }
2097
2150
  }
@@ -2174,7 +2227,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
2174
2227
  getSelectedObject(event) {
2175
2228
  const path = event.composedPath().slice(1);
2176
2229
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
2177
- const object = this._store.findObjectById(objectElement === null || objectElement === void 0 ? void 0 : objectElement.id);
2230
+ const object = this._store.findObjectById(objectElement?.id);
2178
2231
  if (!object) {
2179
2232
  return null;
2180
2233
  }
@@ -2190,21 +2243,19 @@ class KritzelSelectionTool extends KritzelBaseTool {
2190
2243
  }
2191
2244
  }
2192
2245
  getHandleType(event) {
2193
- var _a;
2194
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
2246
+ const shadowRoot = this._store.state.host?.shadowRoot;
2195
2247
  if (!shadowRoot)
2196
2248
  return;
2197
2249
  const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
2198
- const handle = elementAtPoint === null || elementAtPoint === void 0 ? void 0 : elementAtPoint.closest('.resize-handle-overlay');
2199
- return handle === null || handle === void 0 ? void 0 : handle.classList[1];
2250
+ const handle = elementAtPoint?.closest('.resize-handle-overlay');
2251
+ return handle?.classList[1];
2200
2252
  }
2201
2253
  isHandleSelected(event) {
2202
- var _a;
2203
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
2254
+ const shadowRoot = this._store.state.host?.shadowRoot;
2204
2255
  if (!shadowRoot)
2205
2256
  return false;
2206
2257
  const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);
2207
- return !!(elementAtPoint === null || elementAtPoint === void 0 ? void 0 : elementAtPoint.classList.contains('resize-handle-overlay'));
2258
+ return !!elementAtPoint?.classList.contains('resize-handle-overlay');
2208
2259
  }
2209
2260
  isRotationHandleSelected(event) {
2210
2261
  const path = event.composedPath();
@@ -2213,6 +2264,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
2213
2264
  }
2214
2265
 
2215
2266
  class KritzelReviver {
2267
+ _store;
2216
2268
  constructor(store) {
2217
2269
  this._store = store;
2218
2270
  }
@@ -2269,12 +2321,13 @@ class KritzelReviver {
2269
2321
  }
2270
2322
 
2271
2323
  class KritzelSelectionGroup extends KritzelBaseObject {
2272
- constructor() {
2273
- super(...arguments);
2274
- this.__class__ = 'KritzelSelectionGroup';
2275
- this.objects = [];
2276
- this.unchangedObjects = [];
2277
- }
2324
+ __class__ = 'KritzelSelectionGroup';
2325
+ objects = [];
2326
+ unchangedObjects = [];
2327
+ minX;
2328
+ maxX;
2329
+ minY;
2330
+ maxY;
2278
2331
  get length() {
2279
2332
  return this.objects.length;
2280
2333
  }
@@ -2315,17 +2368,17 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2315
2368
  });
2316
2369
  this.translateX = x;
2317
2370
  this.translateY = y;
2318
- this._store.state.objectsOctree.update(this);
2371
+ this._store.state.objectsMap.update(this);
2319
2372
  }
2320
2373
  move(startX, startY, endX, endY) {
2321
2374
  const deltaX = (startX - endX) / this._store.state.scale;
2322
2375
  const deltaY = (startY - endY) / this._store.state.scale;
2323
2376
  this.translateX += deltaX;
2324
2377
  this.translateY += deltaY;
2325
- this._store.state.objectsOctree.update(this);
2378
+ this._store.state.objectsMap.update(this);
2326
2379
  this.objects.forEach(obj => {
2327
2380
  obj.move(startX, startY, endX, endY);
2328
- this._store.state.objectsOctree.update(obj);
2381
+ this._store.state.objectsMap.update(obj);
2329
2382
  });
2330
2383
  this.unchangedObjects.forEach(obj => {
2331
2384
  obj.translateX += deltaX;
@@ -2343,7 +2396,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2343
2396
  const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
2344
2397
  const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
2345
2398
  child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
2346
- this._store.state.objectsOctree.update(child);
2399
+ this._store.state.objectsMap.update(child);
2347
2400
  });
2348
2401
  this.refreshObjectDimensions();
2349
2402
  this.unchangedObjects = ObjectHelper.clone(this.objects);
@@ -2364,7 +2417,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2364
2417
  child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
2365
2418
  child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
2366
2419
  child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
2367
- this._store.state.objectsOctree.update(child);
2420
+ this._store.state.objectsMap.update(child);
2368
2421
  });
2369
2422
  }
2370
2423
  copy() {
@@ -2404,7 +2457,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2404
2457
  this.width = (this.maxX - this.minX - this.padding) * this.scale;
2405
2458
  this.height = (this.maxY - this.minY - this.padding) * this.scale;
2406
2459
  }
2407
- this._store.state.objectsOctree.update(this);
2460
+ this._store.state.objectsMap.update(this);
2408
2461
  }
2409
2462
  getOffsetXToCenter(obj) {
2410
2463
  const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;
@@ -2433,10 +2486,10 @@ class KritzelSelectionGroup extends KritzelBaseObject {
2433
2486
  function _mergeNamespaces$1(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$1({__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";
2434
2487
 
2435
2488
  class KritzelImageTool extends KritzelBaseTool {
2489
+ fileInput = null;
2490
+ maxCompressionSize = 300;
2436
2491
  constructor(store) {
2437
2492
  super(store);
2438
- this.fileInput = null;
2439
- this.maxCompressionSize = 300;
2440
2493
  this.setupFileInput();
2441
2494
  }
2442
2495
  onActivate() {
@@ -2483,9 +2536,8 @@ class KritzelImageTool extends KritzelBaseTool {
2483
2536
  readFile(file) {
2484
2537
  const reader = new FileReader();
2485
2538
  reader.onload = e => {
2486
- var _a;
2487
2539
  const img = new Image();
2488
- img.src = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
2540
+ img.src = e.target?.result;
2489
2541
  img.onload = () => this.createKritzelImage(img);
2490
2542
  };
2491
2543
  reader.readAsDataURL(file);
@@ -2607,6 +2659,21 @@ const DEFAULT_TEXT_CONFIG = {
2607
2659
  ],
2608
2660
  };
2609
2661
 
2662
+ class KritzelWorkspace {
2663
+ id;
2664
+ name;
2665
+ createdAt;
2666
+ updatedAt;
2667
+ viewport;
2668
+ constructor(id, name, viewport = { translateX: 0, translateY: 0, scale: 1 }) {
2669
+ this.id = id;
2670
+ this.name = name;
2671
+ this.createdAt = new Date();
2672
+ this.updatedAt = new Date();
2673
+ this.viewport = viewport;
2674
+ }
2675
+ }
2676
+
2610
2677
  exports.AddObjectCommand = AddObjectCommand;
2611
2678
  exports.AddSelectionGroupCommand = AddSelectionGroupCommand;
2612
2679
  exports.BatchCommand = BatchCommand;
@@ -2628,11 +2695,12 @@ exports.KritzelSelectionTool = KritzelSelectionTool;
2628
2695
  exports.KritzelText = KritzelText;
2629
2696
  exports.KritzelTextTool = KritzelTextTool;
2630
2697
  exports.KritzelToolRegistry = KritzelToolRegistry;
2698
+ exports.KritzelWorkspace = KritzelWorkspace;
2631
2699
  exports.KrtizelSelectionBox = KrtizelSelectionBox;
2632
2700
  exports.ObjectHelper = ObjectHelper;
2633
2701
  exports.RemoveObjectCommand = RemoveObjectCommand;
2634
2702
  exports.RemoveSelectionGroupCommand = RemoveSelectionGroupCommand;
2635
2703
  exports.UpdateObjectCommand = UpdateObjectCommand;
2636
- //# sourceMappingURL=index-C7Read21.js.map
2704
+ //# sourceMappingURL=index-BwINBV6L.js.map
2637
2705
 
2638
- //# sourceMappingURL=index-C7Read21.js.map
2706
+ //# sourceMappingURL=index-BwINBV6L.js.map