kritzel-stencil 0.0.157 → 0.0.159

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 (411) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  3. package/dist/cjs/default-text-tool.config-BySzvIox.js +31267 -0
  4. package/dist/cjs/default-text-tool.config-BySzvIox.js.map +1 -0
  5. package/dist/cjs/index-Cj__YTlG.js +1650 -0
  6. package/dist/cjs/index-Cj__YTlG.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +1465 -0
  8. package/dist/cjs/index.cjs.js.map +1 -0
  9. package/dist/cjs/kritzel-brush-style.cjs.entry.js +32 -0
  10. package/dist/cjs/kritzel-brush-style.entry.cjs.js.map +1 -0
  11. package/dist/cjs/kritzel-color_22.cjs.entry.js +20957 -0
  12. package/dist/cjs/loader.cjs.js +14 -0
  13. package/dist/cjs/loader.cjs.js.map +1 -0
  14. package/dist/cjs/stencil.cjs.js +26 -0
  15. package/dist/cjs/stencil.cjs.js.map +1 -0
  16. package/dist/collection/classes/core/core.class.js +470 -0
  17. package/dist/collection/classes/core/core.class.js.map +1 -0
  18. package/dist/collection/classes/core/reviver.class.js +71 -0
  19. package/dist/collection/classes/core/reviver.class.js.map +1 -0
  20. package/dist/collection/classes/core/store.class.js +72 -0
  21. package/dist/collection/classes/core/store.class.js.map +1 -0
  22. package/dist/collection/classes/core/viewport.class.js +190 -0
  23. package/dist/collection/classes/core/viewport.class.js.map +1 -0
  24. package/dist/collection/classes/core/workspace.class.js +41 -0
  25. package/dist/collection/classes/core/workspace.class.js.map +1 -0
  26. package/dist/collection/classes/handlers/base.handler.js +8 -0
  27. package/dist/collection/classes/handlers/base.handler.js.map +1 -0
  28. package/dist/collection/classes/handlers/context-menu.handler.js +62 -0
  29. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -0
  30. package/dist/collection/classes/handlers/hover.handler.js +19 -0
  31. package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
  32. package/dist/collection/classes/handlers/key.handler.js +58 -0
  33. package/dist/collection/classes/handlers/key.handler.js.map +1 -0
  34. package/dist/collection/classes/handlers/move.handler.js +149 -0
  35. package/dist/collection/classes/handlers/move.handler.js.map +1 -0
  36. package/dist/collection/classes/handlers/resize.handler.js +184 -0
  37. package/dist/collection/classes/handlers/resize.handler.js.map +1 -0
  38. package/dist/collection/classes/handlers/rotation.handler.js +116 -0
  39. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -0
  40. package/dist/collection/classes/handlers/selection.handler.js +246 -0
  41. package/dist/collection/classes/handlers/selection.handler.js.map +1 -0
  42. package/dist/collection/classes/objects/base-object.class.js +232 -0
  43. package/dist/collection/classes/objects/base-object.class.js.map +1 -0
  44. package/dist/collection/classes/objects/custom-element.class.js +62 -0
  45. package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
  46. package/dist/collection/classes/objects/image.class.js +56 -0
  47. package/dist/collection/classes/objects/image.class.js.map +1 -0
  48. package/dist/collection/classes/objects/path.class.js +284 -0
  49. package/dist/collection/classes/objects/path.class.js.map +1 -0
  50. package/dist/collection/classes/objects/selection-box.class.js +19 -0
  51. package/dist/collection/classes/objects/selection-box.class.js.map +1 -0
  52. package/dist/collection/classes/objects/selection-group.class.js +226 -0
  53. package/dist/collection/classes/objects/selection-group.class.js.map +1 -0
  54. package/dist/collection/classes/objects/text.class.js +261 -0
  55. package/dist/collection/classes/objects/text.class.js.map +1 -0
  56. package/dist/collection/classes/providers/broadcast-sync-provider.class.js +93 -0
  57. package/dist/collection/classes/providers/broadcast-sync-provider.class.js.map +1 -0
  58. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +232 -0
  59. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js.map +1 -0
  60. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +35 -0
  61. package/dist/collection/classes/providers/indexeddb-sync-provider.class.js.map +1 -0
  62. package/dist/collection/classes/providers/websocket-sync-provider.class.js +89 -0
  63. package/dist/collection/classes/providers/websocket-sync-provider.class.js.map +1 -0
  64. package/dist/{stencil/icon-registry.class-BtT8riKh.js → collection/classes/registries/icon-registry.class.js} +2 -6
  65. package/dist/collection/classes/registries/icon-registry.class.js.map +1 -0
  66. package/dist/collection/classes/registries/tool.registry.js +18 -0
  67. package/dist/collection/classes/registries/tool.registry.js.map +1 -0
  68. package/dist/collection/classes/structures/app-state-map.structure.js +189 -0
  69. package/dist/collection/classes/structures/app-state-map.structure.js.map +1 -0
  70. package/dist/collection/classes/structures/object-map.structure.js +328 -0
  71. package/dist/collection/classes/structures/object-map.structure.js.map +1 -0
  72. package/dist/collection/classes/structures/quadtree.structure.js +113 -0
  73. package/dist/collection/classes/structures/quadtree.structure.js.map +1 -0
  74. package/dist/collection/classes/tools/base-tool.class.js +38 -0
  75. package/dist/collection/classes/tools/base-tool.class.js.map +1 -0
  76. package/dist/collection/classes/tools/brush-tool.class.js +133 -0
  77. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -0
  78. package/dist/collection/classes/tools/eraser-tool.class.js +85 -0
  79. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -0
  80. package/dist/collection/classes/tools/image-tool.class.js +83 -0
  81. package/dist/collection/classes/tools/image-tool.class.js.map +1 -0
  82. package/dist/collection/classes/tools/selection-tool.class.js +164 -0
  83. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -0
  84. package/dist/collection/classes/tools/text-tool.class.js +108 -0
  85. package/dist/collection/classes/tools/text-tool.class.js.map +1 -0
  86. package/dist/collection/collection-manifest.json +34 -0
  87. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -0
  88. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +153 -0
  89. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -0
  90. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +34 -0
  91. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +928 -0
  92. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -0
  93. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +73 -0
  94. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +1613 -0
  95. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -0
  96. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +44 -0
  97. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +98 -0
  98. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -0
  99. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +21 -0
  100. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +107 -0
  101. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -0
  102. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -0
  103. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +145 -0
  104. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -0
  105. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -0
  106. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +218 -0
  107. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -0
  108. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -0
  109. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +90 -0
  110. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -0
  111. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -0
  112. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +114 -0
  113. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -0
  114. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -0
  115. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +110 -0
  116. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -0
  117. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -0
  118. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +94 -0
  119. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +1 -0
  120. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +27 -0
  121. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +291 -0
  122. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -0
  123. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +145 -0
  124. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +280 -0
  125. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -0
  126. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +310 -0
  127. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -0
  128. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -0
  129. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +406 -0
  130. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -0
  131. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +28 -0
  132. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +89 -0
  133. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -0
  134. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -0
  135. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +251 -0
  136. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -0
  137. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +55 -0
  138. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +172 -0
  139. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -0
  140. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +19 -0
  141. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +135 -0
  142. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -0
  143. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +19 -0
  144. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +115 -0
  145. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -0
  146. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +127 -0
  147. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +312 -0
  148. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -0
  149. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +44 -0
  150. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +111 -0
  151. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +1 -0
  152. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +5 -0
  153. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +255 -0
  154. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -0
  155. package/dist/collection/configs/default-brush-tool.config.js +60 -0
  156. package/dist/collection/configs/default-brush-tool.config.js.map +1 -0
  157. package/dist/collection/configs/default-engine-config.js +53 -0
  158. package/dist/collection/configs/default-engine-config.js.map +1 -0
  159. package/dist/collection/configs/default-sync.config.js +10 -0
  160. package/dist/collection/configs/default-sync.config.js.map +1 -0
  161. package/dist/collection/configs/default-text-tool.config.js +32 -0
  162. package/dist/collection/configs/default-text-tool.config.js.map +1 -0
  163. package/dist/collection/constants/core.constants.js +2 -0
  164. package/dist/collection/constants/core.constants.js.map +1 -0
  165. package/dist/collection/constants/engine.constants.js +3 -0
  166. package/dist/collection/constants/engine.constants.js.map +1 -0
  167. package/dist/collection/enums/event-button.enum.js +7 -0
  168. package/dist/collection/enums/event-button.enum.js.map +1 -0
  169. package/dist/collection/enums/handle-type.enum.js +8 -0
  170. package/dist/collection/enums/handle-type.enum.js.map +1 -0
  171. package/dist/collection/helpers/class.helper.js +6 -0
  172. package/dist/collection/helpers/class.helper.js.map +1 -0
  173. package/dist/collection/helpers/devices.helper.js +26 -0
  174. package/dist/collection/helpers/devices.helper.js.map +1 -0
  175. package/dist/collection/helpers/event.helper.js +51 -0
  176. package/dist/collection/helpers/event.helper.js.map +1 -0
  177. package/dist/collection/helpers/geometry.helper.js +53 -0
  178. package/dist/collection/helpers/geometry.helper.js.map +1 -0
  179. package/dist/collection/helpers/html.helper.js +64 -0
  180. package/dist/{stencil/html.helper-C6qB08BS.js.map → collection/helpers/html.helper.js.map} +1 -1
  181. package/dist/collection/helpers/keyboard.helper.js +49 -0
  182. package/dist/collection/helpers/keyboard.helper.js.map +1 -0
  183. package/dist/collection/helpers/math.helper.js +6 -0
  184. package/dist/collection/helpers/math.helper.js.map +1 -0
  185. package/dist/collection/helpers/object.helper.js +12 -0
  186. package/dist/collection/helpers/object.helper.js.map +1 -0
  187. package/dist/collection/index.js +30 -0
  188. package/dist/collection/index.js.map +1 -0
  189. package/dist/collection/interfaces/bounding-box.interface.js +2 -0
  190. package/dist/collection/interfaces/bounding-box.interface.js.map +1 -0
  191. package/dist/collection/interfaces/clonable.interface.js +2 -0
  192. package/dist/collection/interfaces/clonable.interface.js.map +1 -0
  193. package/dist/collection/interfaces/context-menu-item.interface.js +2 -0
  194. package/dist/collection/interfaces/context-menu-item.interface.js.map +1 -0
  195. package/dist/collection/interfaces/debug-info.interface.js +2 -0
  196. package/dist/collection/interfaces/debug-info.interface.js.map +1 -0
  197. package/dist/collection/interfaces/engine-state.interface.js +2 -0
  198. package/dist/collection/interfaces/engine-state.interface.js.map +1 -0
  199. package/dist/collection/interfaces/menu-item.interface.js +2 -0
  200. package/dist/collection/interfaces/menu-item.interface.js.map +1 -0
  201. package/dist/collection/interfaces/object.interface.js +2 -0
  202. package/dist/collection/interfaces/object.interface.js.map +1 -0
  203. package/dist/collection/interfaces/path-options.interface.js +2 -0
  204. package/dist/collection/interfaces/path-options.interface.js.map +1 -0
  205. package/dist/collection/interfaces/point.interface.js +2 -0
  206. package/dist/collection/interfaces/point.interface.js.map +1 -0
  207. package/dist/collection/interfaces/polygon.interface.js +2 -0
  208. package/dist/collection/interfaces/polygon.interface.js.map +1 -0
  209. package/dist/collection/interfaces/selection-state.interface.js +2 -0
  210. package/dist/collection/interfaces/selection-state.interface.js.map +1 -0
  211. package/dist/collection/interfaces/serializable.interface.js +2 -0
  212. package/dist/collection/interfaces/serializable.interface.js.map +1 -0
  213. package/dist/collection/interfaces/shortcut.interface.js +2 -0
  214. package/dist/collection/interfaces/shortcut.interface.js.map +1 -0
  215. package/dist/collection/interfaces/sync-config.interface.js +2 -0
  216. package/dist/collection/interfaces/sync-config.interface.js.map +1 -0
  217. package/dist/collection/interfaces/sync-provider.interface.js +2 -0
  218. package/dist/collection/interfaces/sync-provider.interface.js.map +1 -0
  219. package/dist/collection/interfaces/tool.interface.js +2 -0
  220. package/dist/collection/interfaces/tool.interface.js.map +1 -0
  221. package/dist/collection/interfaces/toolbar-control.interface.js +2 -0
  222. package/dist/collection/interfaces/toolbar-control.interface.js.map +1 -0
  223. package/dist/collection/interfaces/undo-state.interface.js +2 -0
  224. package/dist/collection/interfaces/undo-state.interface.js.map +1 -0
  225. package/dist/collection/types/deep-readonly.type.js +2 -0
  226. package/dist/collection/types/deep-readonly.type.js.map +1 -0
  227. package/dist/collection/types/state.types.js +2 -0
  228. package/dist/collection/types/state.types.js.map +1 -0
  229. package/dist/components/index.js +1477 -0
  230. package/dist/components/index.js.map +1 -0
  231. package/dist/components/kritzel-brush-style.js +67 -0
  232. package/dist/components/kritzel-brush-style.js.map +1 -0
  233. package/dist/components/kritzel-color-palette.js +9 -0
  234. package/dist/components/kritzel-color-palette.js.map +1 -0
  235. package/dist/components/kritzel-color.js +9 -0
  236. package/dist/components/kritzel-color.js.map +1 -0
  237. package/dist/components/kritzel-context-menu.js +9 -0
  238. package/dist/components/kritzel-context-menu.js.map +1 -0
  239. package/dist/components/kritzel-control-brush-config.js +9 -0
  240. package/dist/components/kritzel-control-brush-config.js.map +1 -0
  241. package/dist/components/kritzel-control-text-config.js +9 -0
  242. package/dist/components/kritzel-control-text-config.js.map +1 -0
  243. package/dist/components/kritzel-controls.js +9 -0
  244. package/dist/components/kritzel-controls.js.map +1 -0
  245. package/dist/components/kritzel-cursor-trail.js +9 -0
  246. package/dist/components/kritzel-cursor-trail.js.map +1 -0
  247. package/dist/components/kritzel-dropdown.js +9 -0
  248. package/dist/components/kritzel-dropdown.js.map +1 -0
  249. package/dist/components/kritzel-editor.js +516 -0
  250. package/dist/components/kritzel-editor.js.map +1 -0
  251. package/dist/components/kritzel-engine.js +9 -0
  252. package/dist/components/kritzel-engine.js.map +1 -0
  253. package/dist/components/kritzel-font-family.js +9 -0
  254. package/dist/components/kritzel-font-family.js.map +1 -0
  255. package/dist/components/kritzel-font-size.js +9 -0
  256. package/dist/components/kritzel-font-size.js.map +1 -0
  257. package/dist/components/kritzel-font.js +9 -0
  258. package/dist/components/kritzel-font.js.map +1 -0
  259. package/dist/components/kritzel-icon.js +9 -0
  260. package/dist/components/kritzel-icon.js.map +1 -0
  261. package/dist/components/kritzel-menu-item.js +9 -0
  262. package/dist/components/kritzel-menu-item.js.map +1 -0
  263. package/dist/components/kritzel-menu.js +9 -0
  264. package/dist/components/kritzel-menu.js.map +1 -0
  265. package/dist/components/kritzel-portal.js +9 -0
  266. package/dist/components/kritzel-portal.js.map +1 -0
  267. package/dist/components/kritzel-split-button.js +9 -0
  268. package/dist/components/kritzel-split-button.js.map +1 -0
  269. package/dist/components/kritzel-stroke-size.js +9 -0
  270. package/dist/components/kritzel-stroke-size.js.map +1 -0
  271. package/dist/components/kritzel-tooltip.js +9 -0
  272. package/dist/components/kritzel-tooltip.js.map +1 -0
  273. package/dist/components/kritzel-utility-panel.js +9 -0
  274. package/dist/components/kritzel-utility-panel.js.map +1 -0
  275. package/dist/components/kritzel-workspace-manager.js +9 -0
  276. package/dist/components/kritzel-workspace-manager.js.map +1 -0
  277. package/dist/{stencil/kritzel-controls.entry.js → components/p-1lIHoOlH.js} +115 -17
  278. package/dist/components/p-1lIHoOlH.js.map +1 -0
  279. package/dist/{stencil/object.helper-B0kd2rUI.js → components/p-B0kd2rUI.js} +2 -2
  280. package/dist/components/p-B0kd2rUI.js.map +1 -0
  281. package/dist/components/p-B4kxkVe-.js +55 -0
  282. package/dist/components/p-B4kxkVe-.js.map +1 -0
  283. package/dist/components/p-BAplhrRJ.js +35593 -0
  284. package/dist/components/p-BAplhrRJ.js.map +1 -0
  285. package/dist/components/p-BQg4YML7.js +106 -0
  286. package/dist/components/p-BQg4YML7.js.map +1 -0
  287. package/dist/{stencil/kritzel-font-family.entry.js → components/p-BgznZoBH.js} +37 -9
  288. package/dist/components/p-BgznZoBH.js.map +1 -0
  289. package/dist/components/p-Bhtn9qay.js +98 -0
  290. package/dist/components/p-Bhtn9qay.js.map +1 -0
  291. package/dist/{stencil/kritzel-context-menu-GdU9xEKC.js → components/p-C2sWlNsJ.js} +41 -12
  292. package/dist/components/p-C2sWlNsJ.js.map +1 -0
  293. package/dist/{stencil/html.helper-C6qB08BS.js → components/p-C6qB08BS.js} +2 -2
  294. package/dist/components/p-C6qB08BS.js.map +1 -0
  295. package/dist/{stencil/text-tool.class-C0GbC5zQ.js → components/p-CBYBurdY.js} +25 -729
  296. package/dist/components/p-CBYBurdY.js.map +1 -0
  297. package/dist/{stencil/kritzel-dropdown.entry.js → components/p-CIXPLjCu.js} +39 -9
  298. package/dist/components/p-CIXPLjCu.js.map +1 -0
  299. package/dist/{stencil/kritzel-workspace-manager.entry.js → components/p-CK6no3mi.js} +68 -13
  300. package/dist/components/p-CK6no3mi.js.map +1 -0
  301. package/dist/{stencil/kritzel-cursor-trail.entry.js → components/p-CLt3HMl6.js} +33 -10
  302. package/dist/components/p-CLt3HMl6.js.map +1 -0
  303. package/dist/{stencil/kritzel-tooltip.entry.js → components/p-CTP479Lf.js} +39 -11
  304. package/dist/components/p-CTP479Lf.js.map +1 -0
  305. package/dist/{stencil/kritzel-menu-item.entry.js → components/p-CsA9M6me.js} +174 -16
  306. package/dist/components/p-CsA9M6me.js.map +1 -0
  307. package/dist/components/p-CwkUrTy1.js +1367 -0
  308. package/dist/components/p-CwkUrTy1.js.map +1 -0
  309. package/dist/{stencil/kritzel-color-palette.entry.js → components/p-D1uj4A4F.js} +39 -9
  310. package/dist/components/p-D1uj4A4F.js.map +1 -0
  311. package/dist/{stencil/kritzel-color.entry.js → components/p-D4yvhd1d.js} +30 -8
  312. package/dist/components/p-D4yvhd1d.js.map +1 -0
  313. package/dist/{stencil/kritzel-portal.entry.js → components/p-D5Wq4x4r.js} +37 -11
  314. package/dist/components/p-D5Wq4x4r.js.map +1 -0
  315. package/dist/{stencil/event-button.enum-D8W6LE-c.js → components/p-D8W6LE-c.js} +2 -2
  316. package/dist/components/p-D8W6LE-c.js.map +1 -0
  317. package/dist/{stencil/kritzel-utility-panel.entry.js → components/p-DAfkuR8U.js} +38 -11
  318. package/dist/components/p-DAfkuR8U.js.map +1 -0
  319. package/dist/components/p-DDmSxM5f.js +57 -0
  320. package/dist/{stencil/kritzel-font-size.entry.esm.js.map → components/p-DDmSxM5f.js.map} +1 -1
  321. package/dist/components/p-Ddh40W3x.js +103 -0
  322. package/dist/components/p-Ddh40W3x.js.map +1 -0
  323. package/dist/{stencil/kritzel-split-button.entry.js → components/p-TdCTkEu0.js} +72 -18
  324. package/dist/components/p-TdCTkEu0.js.map +1 -0
  325. package/dist/{stencil/devices.helper-l10It7Nm.js → components/p-l10It7Nm.js} +2 -2
  326. package/dist/components/p-l10It7Nm.js.map +1 -0
  327. package/dist/{stencil/workspace.class-n789Y3S-.js → components/p-n789Y3S-.js} +2 -2
  328. package/dist/components/p-n789Y3S-.js.map +1 -0
  329. package/dist/components/p-uuRJU2R1.js +46 -0
  330. package/dist/components/p-uuRJU2R1.js.map +1 -0
  331. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  332. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  333. package/dist/esm/default-text-tool.config-2YFQA3SF.js +31208 -0
  334. package/dist/esm/default-text-tool.config-2YFQA3SF.js.map +1 -0
  335. package/dist/esm/index-SGde3HXB.js +1623 -0
  336. package/dist/esm/index-SGde3HXB.js.map +1 -0
  337. package/dist/esm/index.js +1449 -0
  338. package/dist/esm/index.js.map +1 -0
  339. package/dist/{stencil → esm}/kritzel-brush-style.entry.js +3 -3
  340. package/dist/esm/kritzel-brush-style.entry.js.map +1 -0
  341. package/dist/{stencil/kritzel-engine.entry.js → esm/kritzel-color_22.entry.js} +1806 -90
  342. package/dist/esm/loader.js +12 -0
  343. package/dist/esm/loader.js.map +1 -0
  344. package/dist/esm/stencil.js +22 -0
  345. package/dist/esm/stencil.js.map +1 -0
  346. package/dist/index.cjs.js +1 -0
  347. package/dist/index.js +1 -0
  348. package/dist/stencil/index.esm.js +2 -18
  349. package/dist/stencil/index.esm.js.map +1 -1
  350. package/dist/stencil/loader.esm.js.map +1 -1
  351. package/dist/stencil/p-2YFQA3SF.js +2 -0
  352. package/dist/stencil/p-2YFQA3SF.js.map +1 -0
  353. package/dist/stencil/p-2e85a4af.entry.js +10 -0
  354. package/dist/stencil/p-2e85a4af.entry.js.map +1 -0
  355. package/dist/stencil/p-DQuL1Twl.js +2 -0
  356. package/dist/stencil/p-DQuL1Twl.js.map +1 -0
  357. package/dist/stencil/p-SGde3HXB.js +3 -0
  358. package/dist/stencil/p-SGde3HXB.js.map +1 -0
  359. package/dist/stencil/p-d702c5af.entry.js +2 -0
  360. package/dist/stencil/p-d702c5af.entry.js.map +1 -0
  361. package/dist/stencil/stencil.esm.js +2 -48
  362. package/dist/stencil/stencil.esm.js.map +1 -1
  363. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +0 -1
  364. package/package.json +1 -1
  365. package/dist/stencil/default-text-tool.config-DKpRP4XR.js +0 -1441
  366. package/dist/stencil/default-text-tool.config-DKpRP4XR.js.map +0 -1
  367. package/dist/stencil/devices.helper-l10It7Nm.js.map +0 -1
  368. package/dist/stencil/engine.constants-DsjjAmnl.js +0 -7
  369. package/dist/stencil/engine.constants-DsjjAmnl.js.map +0 -1
  370. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +0 -1
  371. package/dist/stencil/icon-registry.class-BtT8riKh.js.map +0 -1
  372. package/dist/stencil/index-DniO_INI.js +0 -4395
  373. package/dist/stencil/index-DniO_INI.js.map +0 -1
  374. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +0 -1
  375. package/dist/stencil/kritzel-color.entry.esm.js.map +0 -1
  376. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js +0 -66
  377. package/dist/stencil/kritzel-context-menu-BYgOEy-i.js.map +0 -1
  378. package/dist/stencil/kritzel-context-menu-GdU9xEKC.js.map +0 -1
  379. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +0 -1
  380. package/dist/stencil/kritzel-context-menu.entry.js +0 -3
  381. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +0 -1
  382. package/dist/stencil/kritzel-control-brush-config.entry.js +0 -54
  383. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +0 -1
  384. package/dist/stencil/kritzel-control-text-config.entry.js +0 -42
  385. package/dist/stencil/kritzel-controls.entry.esm.js.map +0 -1
  386. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +0 -1
  387. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +0 -1
  388. package/dist/stencil/kritzel-editor.entry.esm.js.map +0 -1
  389. package/dist/stencil/kritzel-editor.entry.js +0 -248
  390. package/dist/stencil/kritzel-engine.entry.esm.js.map +0 -1
  391. package/dist/stencil/kritzel-font-family.entry.esm.js.map +0 -1
  392. package/dist/stencil/kritzel-font-size.entry.js +0 -28
  393. package/dist/stencil/kritzel-font.entry.esm.js.map +0 -1
  394. package/dist/stencil/kritzel-font.entry.js +0 -23
  395. package/dist/stencil/kritzel-icon.entry.esm.js.map +0 -1
  396. package/dist/stencil/kritzel-icon.entry.js +0 -29
  397. package/dist/stencil/kritzel-menu-item.entry.esm.js.map +0 -1
  398. package/dist/stencil/kritzel-menu.entry.esm.js.map +0 -1
  399. package/dist/stencil/kritzel-menu.entry.js +0 -72
  400. package/dist/stencil/kritzel-portal.entry.esm.js.map +0 -1
  401. package/dist/stencil/kritzel-split-button.entry.esm.js.map +0 -1
  402. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +0 -1
  403. package/dist/stencil/kritzel-stroke-size.entry.js +0 -27
  404. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +0 -1
  405. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +0 -1
  406. package/dist/stencil/kritzel-workspace-manager.entry.esm.js.map +0 -1
  407. package/dist/stencil/object.helper-B0kd2rUI.js.map +0 -1
  408. package/dist/stencil/sync-config.interface-lKfyG1EN.js +0 -19839
  409. package/dist/stencil/sync-config.interface-lKfyG1EN.js.map +0 -1
  410. package/dist/stencil/text-tool.class-C0GbC5zQ.js.map +0 -1
  411. package/dist/stencil/workspace.class-n789Y3S-.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-button.enum.js","sourceRoot":"","sources":["../../src/enums/event-button.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,2DAAQ,CAAA;IACR,+DAAU,CAAA;IACV,6DAAS,CAAA;AACX,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B","sourcesContent":["export enum KritzelMouseButton {\r\n Left = 0,\r\n Middle = 1,\r\n Right = 2\r\n}\r\n"]}
@@ -0,0 +1,8 @@
1
+ export var KritzelHandleType;
2
+ (function (KritzelHandleType) {
3
+ KritzelHandleType["TopLeft"] = "top-left";
4
+ KritzelHandleType["TopRight"] = "top-right";
5
+ KritzelHandleType["BottomLeft"] = "bottom-left";
6
+ KritzelHandleType["BottomRight"] = "bottom-right";
7
+ })(KritzelHandleType || (KritzelHandleType = {}));
8
+ //# sourceMappingURL=handle-type.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-type.enum.js","sourceRoot":"","sources":["../../src/enums/handle-type.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,yCAAoB,CAAA;IACpB,2CAAsB,CAAA;IACtB,+CAA0B,CAAA;IAC1B,iDAA4B,CAAA;AAChC,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B","sourcesContent":["export enum KritzelHandleType {\r\n TopLeft = \"top-left\",\r\n TopRight = \"top-right\",\r\n BottomLeft = \"bottom-left\",\r\n BottomRight = \"bottom-right\"\r\n}"]}
@@ -0,0 +1,6 @@
1
+ export class KritzelClassHelper {
2
+ static isInstanceOf(object, className) {
3
+ return !!object && object.__class__ === className;
4
+ }
5
+ }
6
+ //# sourceMappingURL=class.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.helper.js","sourceRoot":"","sources":["../../src/helpers/class.helper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IAC7B,MAAM,CAAC,YAAY,CAAI,MAAW,EAAE,SAAiB;QACnD,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;IACpD,CAAC;CACF","sourcesContent":["export class KritzelClassHelper {\r\n static isInstanceOf<T>(object: any, className: string): object is T {\r\n return !!object && object.__class__ === className;\r\n }\r\n}"]}
@@ -0,0 +1,26 @@
1
+ export class KritzelDevicesHelper {
2
+ static isTouchDevice() {
3
+ return window.matchMedia('(any-pointer: coarse)').matches;
4
+ }
5
+ static isAndroid() {
6
+ return /android/i.test(navigator.userAgent);
7
+ }
8
+ static isIOS() {
9
+ return /iPad|iPhone|iPod/.test(navigator.userAgent);
10
+ }
11
+ static detectOS() {
12
+ if (this.isIOS()) {
13
+ return 'iOS';
14
+ }
15
+ else if (this.isAndroid()) {
16
+ return 'Android';
17
+ }
18
+ else {
19
+ return 'Other';
20
+ }
21
+ }
22
+ static isFirefox() {
23
+ return /firefox/i.test(navigator.userAgent);
24
+ }
25
+ }
26
+ //# sourceMappingURL=devices.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.helper.js","sourceRoot":"","sources":["../../src/helpers/devices.helper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAC,aAAa;QAClB,OAAO,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,QAAQ;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;CACF","sourcesContent":["export class KritzelDevicesHelper {\r\n static isTouchDevice(): boolean {\r\n return window.matchMedia('(any-pointer: coarse)').matches;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n return /android/i.test(navigator.userAgent);\r\n }\r\n\r\n static isIOS(): boolean {\r\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n }\r\n\r\n static detectOS(): 'iOS' | 'Android' | 'Other' {\r\n if (this.isIOS()) {\r\n return 'iOS';\r\n } else if (this.isAndroid()) {\r\n return 'Android';\r\n } else {\r\n return 'Other';\r\n }\r\n }\r\n\r\n static isFirefox(): boolean {\r\n return /firefox/i.test(navigator.userAgent);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,51 @@
1
+ import { KritzelMouseButton } from "../enums/event-button.enum";
2
+ export class KritzelEventHelper {
3
+ static isRightClick(ev) {
4
+ return ev.button === KritzelMouseButton.Right;
5
+ }
6
+ static isLeftClick(ev) {
7
+ return ev.button === KritzelMouseButton.Left;
8
+ }
9
+ static isPointerEventOnContextMenu(event) {
10
+ const path = event.composedPath();
11
+ const contextMenu = path.find(element => element.classList && element.classList.contains('context-menu'));
12
+ return !!contextMenu;
13
+ }
14
+ static onLongPress(event, onSuccess, onCancel) {
15
+ const longPressTimeout = 400;
16
+ const moveThreshold = 10;
17
+ const startX = event.clientX;
18
+ const startY = event.clientY;
19
+ const target = event.target;
20
+ const timer = setTimeout(() => {
21
+ removeListeners();
22
+ onSuccess(event);
23
+ }, longPressTimeout);
24
+ const cancel = () => {
25
+ clearTimeout(timer);
26
+ removeListeners();
27
+ onCancel?.();
28
+ };
29
+ const onPointerMove = (e) => {
30
+ if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {
31
+ cancel();
32
+ }
33
+ };
34
+ const onPointerUp = () => {
35
+ cancel();
36
+ };
37
+ const onPointerCancel = () => {
38
+ cancel();
39
+ };
40
+ const removeListeners = () => {
41
+ target.removeEventListener('pointermove', onPointerMove);
42
+ target.removeEventListener('pointerup', onPointerUp);
43
+ target.removeEventListener('pointercancel', onPointerCancel);
44
+ };
45
+ target.addEventListener('pointermove', onPointerMove, { passive: true });
46
+ target.addEventListener('pointerup', onPointerUp, { once: true });
47
+ target.addEventListener('pointercancel', onPointerCancel, { once: true });
48
+ return cancel;
49
+ }
50
+ }
51
+ //# sourceMappingURL=event.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.helper.js","sourceRoot":"","sources":["../../src/helpers/event.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,OAAO,kBAAkB;IACtB,MAAM,CAAC,YAAY,CAAC,EAAc;QACvC,OAAO,EAAE,CAAC,MAAM,KAAK,kBAAkB,CAAC,KAAK,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,EAAc;QACtC,OAAO,EAAE,CAAC,MAAM,KAAK,kBAAkB,CAAC,IAAI,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,KAAmB;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAmB,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1G,OAAO,CAAC,CAAC,WAAW,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,WAAW,CACvB,KAAmB,EACnB,SAAwC,EACxC,QAAqB;QAErB,MAAM,gBAAgB,GAAG,GAAG,CAAC;QAC7B,MAAM,aAAa,GAAG,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAE3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,eAAe,EAAE,CAAC;YAClB,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAErB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,CAAe,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;gBACjG,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,MAAM,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,MAAM,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1E,OAAO,MAAM,CAAC;IAChB,CAAC;CAEF","sourcesContent":["import { KritzelMouseButton } from '../enums/event-button.enum';\r\n\r\nexport class KritzelEventHelper {\r\n public static isRightClick(ev: MouseEvent): boolean {\r\n return ev.button === KritzelMouseButton.Right;\r\n }\r\n\r\n public static isLeftClick(ev: MouseEvent): boolean {\r\n return ev.button === KritzelMouseButton.Left;\r\n }\r\n\r\n public static isPointerEventOnContextMenu(event: PointerEvent): boolean {\r\n const path = event.composedPath() as HTMLElement[];\r\n const contextMenu = path.find(element => element.classList && element.classList.contains('context-menu'));\r\n return !!contextMenu;\r\n }\r\n\r\n public static onLongPress(\r\n event: PointerEvent,\r\n onSuccess: (event: PointerEvent) => void,\r\n onCancel?: () => void\r\n ): () => void {\r\n const longPressTimeout = 400;\r\n const moveThreshold = 10;\r\n\r\n const startX = event.clientX;\r\n const startY = event.clientY;\r\n const target = event.target as HTMLElement;\r\n\r\n const timer = setTimeout(() => {\r\n removeListeners();\r\n onSuccess(event);\r\n }, longPressTimeout);\r\n\r\n const cancel = () => {\r\n clearTimeout(timer);\r\n removeListeners();\r\n onCancel?.();\r\n };\r\n\r\n const onPointerMove = (e: PointerEvent) => {\r\n if (Math.abs(e.clientX - startX) > moveThreshold || Math.abs(e.clientY - startY) > moveThreshold) {\r\n cancel();\r\n }\r\n };\r\n\r\n const onPointerUp = () => {\r\n cancel();\r\n };\r\n\r\n const onPointerCancel = () => {\r\n cancel();\r\n };\r\n\r\n const removeListeners = () => {\r\n target.removeEventListener('pointermove', onPointerMove);\r\n target.removeEventListener('pointerup', onPointerUp);\r\n target.removeEventListener('pointercancel', onPointerCancel);\r\n };\r\n\r\n target.addEventListener('pointermove', onPointerMove, { passive: true });\r\n target.addEventListener('pointerup', onPointerUp, { once: true });\r\n target.addEventListener('pointercancel', onPointerCancel, { once: true });\r\n\r\n return cancel;\r\n }\r\n\r\n}\r\n"]}
@@ -0,0 +1,53 @@
1
+ export class KritzelGeometryHelper {
2
+ static doPolygonsIntersect(polygon1, polygon2) {
3
+ // 1. Convert polygons to array of points for easier processing
4
+ const points1 = [polygon1.bottomLeft, polygon1.bottomRight, polygon1.topRight, polygon1.topLeft];
5
+ const points2 = [polygon2.bottomLeft, polygon2.bottomRight, polygon2.topRight, polygon2.topLeft];
6
+ // 2. Check if any point of polygon1 is inside polygon2
7
+ for (const point of points1) {
8
+ if (this.isPointInPolygon(point, points2)) {
9
+ return true;
10
+ }
11
+ }
12
+ // 3. Check if any point of polygon2 is inside polygon1
13
+ for (const point of points2) {
14
+ if (this.isPointInPolygon(point, points1)) {
15
+ return true;
16
+ }
17
+ }
18
+ // 4. Check for edge intersections (more complex)
19
+ for (let i = 0; i < points1.length; i++) {
20
+ const p1a = points1[i];
21
+ const p1b = points1[(i + 1) % points1.length]; // Wrap around to the first point
22
+ for (let j = 0; j < points2.length; j++) {
23
+ const p2a = points2[j];
24
+ const p2b = points2[(j + 1) % points2.length];
25
+ if (this.intersectLines(p1a, p1b, p2a, p2b)) {
26
+ return true;
27
+ }
28
+ }
29
+ }
30
+ return false; // No intersection found
31
+ }
32
+ static isPointInPolygon(point, polygon) {
33
+ let inside = false;
34
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
35
+ const xi = polygon[i].x, yi = polygon[i].y;
36
+ const xj = polygon[j].x, yj = polygon[j].y;
37
+ const intersect = yi > point.y !== yj > point.y && point.x < ((xj - xi) * (point.y - yi)) / (yj - yi) + xi;
38
+ if (intersect)
39
+ inside = !inside;
40
+ }
41
+ return inside;
42
+ }
43
+ static intersectLines(p1a, p1b, p2a, p2b) {
44
+ const det = (p1b.x - p1a.x) * (p2b.y - p2a.y) - (p1b.y - p1a.y) * (p2b.x - p2a.x);
45
+ if (det === 0) {
46
+ return false; // Lines are parallel
47
+ }
48
+ const t = ((p2a.x - p1a.x) * (p2b.y - p2a.y) - (p2a.y - p1a.y) * (p2b.x - p2a.x)) / det;
49
+ const u = -((p1a.x - p2a.x) * (p1b.y - p1a.y) - (p1a.y - p2a.y) * (p1b.x - p1a.x)) / det;
50
+ return t >= 0 && t <= 1 && u >= 0 && u <= 1;
51
+ }
52
+ }
53
+ //# sourceMappingURL=geometry.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.helper.js","sourceRoot":"","sources":["../../src/helpers/geometry.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelPoint } from \"../interfaces/point.interface\";\r\nimport { KritzelPolygon } from \"../interfaces/polygon.interface\";\r\n\r\nexport class KritzelGeometryHelper {\r\n\t static doPolygonsIntersect(polygon1: KritzelPolygon, polygon2: KritzelPolygon): boolean {\r\n\t\t// 1. Convert polygons to array of points for easier processing\r\n\t\tconst points1 = [polygon1.bottomLeft, polygon1.bottomRight, polygon1.topRight, polygon1.topLeft];\r\n\t\tconst points2 = [polygon2.bottomLeft, polygon2.bottomRight, polygon2.topRight, polygon2.topLeft];\r\n\t\r\n\t\t// 2. Check if any point of polygon1 is inside polygon2\r\n\t\tfor (const point of points1) {\r\n\t\t if (this.isPointInPolygon(point, points2)) {\r\n\t\t\treturn true;\r\n\t\t }\r\n\t\t}\r\n\t\r\n\t\t// 3. Check if any point of polygon2 is inside polygon1\r\n\t\tfor (const point of points2) {\r\n\t\t if (this.isPointInPolygon(point, points1)) {\r\n\t\t\treturn true;\r\n\t\t }\r\n\t\t}\r\n\t\r\n\t\t// 4. Check for edge intersections (more complex)\r\n\t\tfor (let i = 0; i < points1.length; i++) {\r\n\t\t const p1a = points1[i];\r\n\t\t const p1b = points1[(i + 1) % points1.length]; // Wrap around to the first point\r\n\t\r\n\t\t for (let j = 0; j < points2.length; j++) {\r\n\t\t\tconst p2a = points2[j];\r\n\t\t\tconst p2b = points2[(j + 1) % points2.length];\r\n\t\r\n\t\t\tif (this.intersectLines(p1a, p1b, p2a, p2b)) {\r\n\t\t\t return true;\r\n\t\t\t}\r\n\t\t }\r\n\t\t}\r\n\t\r\n\t\treturn false; // No intersection found\r\n\t }\r\n\t\r\n\t static isPointInPolygon(point: KritzelPoint, polygon: KritzelPoint[]): boolean {\r\n\t\tlet inside = false;\r\n\t\tfor (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n\t\t const xi = polygon[i].x,\r\n\t\t\tyi = polygon[i].y;\r\n\t\t const xj = polygon[j].x,\r\n\t\t\tyj = polygon[j].y;\r\n\t\r\n\t\t const intersect = yi > point.y !== yj > point.y && point.x < ((xj - xi) * (point.y - yi)) / (yj - yi) + xi;\r\n\t\t if (intersect) inside = !inside;\r\n\t\t}\r\n\t\treturn inside;\r\n\t }\r\n\t\r\n\t static intersectLines(p1a: KritzelPoint, p1b: KritzelPoint, p2a: KritzelPoint, p2b: KritzelPoint): boolean {\r\n\t\tconst det = (p1b.x - p1a.x) * (p2b.y - p2a.y) - (p1b.y - p1a.y) * (p2b.x - p2a.x);\r\n\t\tif (det === 0) {\r\n\t\t return false; // Lines are parallel\r\n\t\t}\r\n\t\r\n\t\tconst t = ((p2a.x - p1a.x) * (p2b.y - p2a.y) - (p2a.y - p1a.y) * (p2b.x - p2a.x)) / det;\r\n\t\tconst u = -((p1a.x - p2a.x) * (p1b.y - p1a.y) - (p1a.y - p2a.y) * (p1b.x - p1a.x)) / det;\r\n\t\r\n\t\treturn t >= 0 && t <= 1 && u >= 0 && u <= 1;\r\n\t }\r\n}\r\n"]}
@@ -0,0 +1,64 @@
1
+ export class KritzelHTMLHelper {
2
+ static getNumericValueFromStyle(element, property) {
3
+ const value = window.getComputedStyle(element).getPropertyValue(property);
4
+ return parseFloat(value) || 0;
5
+ }
6
+ static getScrollableParent(element) {
7
+ if (!element) {
8
+ return window;
9
+ }
10
+ const parent = element.parentNode?.host ?? element.parentElement;
11
+ if (!parent || parent.tagName === 'BODY') {
12
+ return window;
13
+ }
14
+ const style = window.getComputedStyle(parent);
15
+ if (style.overflow === 'auto' || style.overflowY === 'auto' || style.overflow === 'scroll' || style.overflowY === 'scroll') {
16
+ return parent;
17
+ }
18
+ return this.getScrollableParent(parent);
19
+ }
20
+ static isElementInViewport(element) {
21
+ if (!element) {
22
+ return false;
23
+ }
24
+ const scrollableParent = this.getScrollableParent(element);
25
+ const rect = element.getBoundingClientRect();
26
+ if (scrollableParent === window) {
27
+ const viewportHeight = window.innerHeight || document.documentElement.clientHeight;
28
+ const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
29
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= viewportHeight && rect.right <= viewportWidth;
30
+ }
31
+ const parentRect = scrollableParent.getBoundingClientRect();
32
+ return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;
33
+ }
34
+ static getFocusableElements(root) {
35
+ if (!root)
36
+ return [];
37
+ const focusableElements = [];
38
+ const focusableSelector = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex="-1"])';
39
+ const isVisible = (el) => {
40
+ return el.offsetParent !== null;
41
+ };
42
+ const find = (element) => {
43
+ // Check if the element itself is focusable
44
+ if (element instanceof HTMLElement && element.matches(focusableSelector) && !element.hasAttribute('disabled') && isVisible(element)) {
45
+ focusableElements.push(element);
46
+ }
47
+ // Traverse shadow DOM
48
+ if (element.shadowRoot) {
49
+ Array.from(element.shadowRoot.children).forEach(find);
50
+ }
51
+ // Traverse slotted content
52
+ if (element.tagName === 'SLOT') {
53
+ element.assignedElements({ flatten: true }).forEach(find);
54
+ }
55
+ // Traverse light DOM children if there is no shadow root
56
+ if (!element.shadowRoot) {
57
+ Array.from(element.children).forEach(find);
58
+ }
59
+ };
60
+ find(root);
61
+ return focusableElements;
62
+ }
63
+ }
64
+ //# sourceMappingURL=html.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html.helper-C6qB08BS.js","sources":["src/helpers/html.helper.ts"],"sourcesContent":["export class KritzelHTMLHelper {\r\n static getNumericValueFromStyle(element: HTMLElement, property: string): number {\r\n const value = window.getComputedStyle(element).getPropertyValue(property);\r\n return parseFloat(value) || 0;\r\n }\r\n\r\n static getScrollableParent(element: HTMLElement): HTMLElement | Window {\r\n if (!element) {\r\n return window;\r\n }\r\n\r\n const parent = ((element.parentNode as ShadowRoot)?.host as HTMLElement) ?? element.parentElement;\r\n\r\n if (!parent || parent.tagName === 'BODY') {\r\n return window;\r\n }\r\n\r\n const style = window.getComputedStyle(parent);\r\n if (style.overflow === 'auto' || style.overflowY === 'auto' || style.overflow === 'scroll' || style.overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n return this.getScrollableParent(parent);\r\n }\r\n\r\n static isElementInViewport(element: HTMLElement): boolean {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n const scrollableParent = this.getScrollableParent(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (scrollableParent === window) {\r\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\r\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\r\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= viewportHeight && rect.right <= viewportWidth;\r\n }\r\n\r\n const parentRect = (scrollableParent as HTMLElement).getBoundingClientRect();\r\n\r\n return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;\r\n }\r\n\r\n static getFocusableElements(root: HTMLElement): HTMLElement[] {\r\n if (!root) return [];\r\n \r\n const focusableElements: HTMLElement[] = [];\r\n const focusableSelector = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex=\"-1\"])';\r\n \r\n const isVisible = (el: HTMLElement) => {\r\n return el.offsetParent !== null;\r\n };\r\n \r\n const find = (element: Element) => {\r\n // Check if the element itself is focusable\r\n if (element instanceof HTMLElement && element.matches(focusableSelector) && !element.hasAttribute('disabled') && isVisible(element)) {\r\n focusableElements.push(element);\r\n }\r\n \r\n // Traverse shadow DOM\r\n if (element.shadowRoot) {\r\n Array.from(element.shadowRoot.children).forEach(find);\r\n }\r\n \r\n // Traverse slotted content\r\n if (element.tagName === 'SLOT') {\r\n (element as HTMLSlotElement).assignedElements({ flatten: true }).forEach(find);\r\n }\r\n \r\n // Traverse light DOM children if there is no shadow root\r\n if (!element.shadowRoot) {\r\n Array.from(element.children).forEach(find);\r\n }\r\n };\r\n \r\n find(root);\r\n \r\n return focusableElements;\r\n }\r\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.helper.js","sourceRoot":"","sources":["../../src/helpers/html.helper.ts"],"names":[],"mappings":"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","sourcesContent":["export class KritzelHTMLHelper {\r\n static getNumericValueFromStyle(element: HTMLElement, property: string): number {\r\n const value = window.getComputedStyle(element).getPropertyValue(property);\r\n return parseFloat(value) || 0;\r\n }\r\n\r\n static getScrollableParent(element: HTMLElement): HTMLElement | Window {\r\n if (!element) {\r\n return window;\r\n }\r\n\r\n const parent = ((element.parentNode as ShadowRoot)?.host as HTMLElement) ?? element.parentElement;\r\n\r\n if (!parent || parent.tagName === 'BODY') {\r\n return window;\r\n }\r\n\r\n const style = window.getComputedStyle(parent);\r\n if (style.overflow === 'auto' || style.overflowY === 'auto' || style.overflow === 'scroll' || style.overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n return this.getScrollableParent(parent);\r\n }\r\n\r\n static isElementInViewport(element: HTMLElement): boolean {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n const scrollableParent = this.getScrollableParent(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (scrollableParent === window) {\r\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\r\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\r\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= viewportHeight && rect.right <= viewportWidth;\r\n }\r\n\r\n const parentRect = (scrollableParent as HTMLElement).getBoundingClientRect();\r\n\r\n return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;\r\n }\r\n\r\n static getFocusableElements(root: HTMLElement): HTMLElement[] {\r\n if (!root) return [];\r\n \r\n const focusableElements: HTMLElement[] = [];\r\n const focusableSelector = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex=\"-1\"])';\r\n \r\n const isVisible = (el: HTMLElement) => {\r\n return el.offsetParent !== null;\r\n };\r\n \r\n const find = (element: Element) => {\r\n // Check if the element itself is focusable\r\n if (element instanceof HTMLElement && element.matches(focusableSelector) && !element.hasAttribute('disabled') && isVisible(element)) {\r\n focusableElements.push(element);\r\n }\r\n \r\n // Traverse shadow DOM\r\n if (element.shadowRoot) {\r\n Array.from(element.shadowRoot.children).forEach(find);\r\n }\r\n \r\n // Traverse slotted content\r\n if (element.tagName === 'SLOT') {\r\n (element as HTMLSlotElement).assignedElements({ flatten: true }).forEach(find);\r\n }\r\n \r\n // Traverse light DOM children if there is no shadow root\r\n if (!element.shadowRoot) {\r\n Array.from(element.children).forEach(find);\r\n }\r\n };\r\n \r\n find(root);\r\n \r\n return focusableElements;\r\n }\r\n}"]}
@@ -0,0 +1,49 @@
1
+ export class KritzelKeyboardHelper {
2
+ static forceHideKeyboard() {
3
+ if (document.activeElement instanceof HTMLElement) {
4
+ document.activeElement.blur();
5
+ }
6
+ }
7
+ static enableInteractiveWidget() {
8
+ const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
9
+ if (meta) {
10
+ let currentContent = meta.getAttribute('content');
11
+ if (!currentContent.includes('interactive-widget=resizes-content')) {
12
+ currentContent += ', interactive-widget=resizes-content';
13
+ }
14
+ meta.setAttribute('content', currentContent);
15
+ }
16
+ }
17
+ static disableInteractiveWidget() {
18
+ const meta = document.querySelector('meta[name="viewport"][content*="interactive-widget=resizes-content"]');
19
+ if (meta) {
20
+ let currentContent = meta.getAttribute('content');
21
+ let newContent = currentContent.replace(/\s*interactive-widget=resizes-content\s*[,;]?/g, '');
22
+ newContent = newContent
23
+ .replace(/,(\s*,)+/g, ',')
24
+ .replace(/^,/, '')
25
+ .replace(/,$/, '')
26
+ .trim();
27
+ meta.setAttribute('content', newContent);
28
+ }
29
+ }
30
+ static onKeyboardVisibleChanged(callback) {
31
+ if ('visualViewport' in window) {
32
+ const VIEWPORT_VS_CLIENT_HEIGHT_RATIO = 0.75;
33
+ const onResize = (event) => {
34
+ const target = event.target;
35
+ const isOpen = (target.height * target.scale) / window.screen.height < VIEWPORT_VS_CLIENT_HEIGHT_RATIO;
36
+ callback(isOpen);
37
+ };
38
+ window.visualViewport.addEventListener('resize', onResize);
39
+ return () => window.visualViewport.removeEventListener('resize', onResize);
40
+ }
41
+ else {
42
+ // Fallback for older browsers does not provide a reliable event-based mechanism.
43
+ console.warn('Listening for keyboard visibility changes is not reliably supported in this browser.');
44
+ // Return a no-op cleanup function.
45
+ return () => { };
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=keyboard.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.helper.js","sourceRoot":"","sources":["../../src/helpers/keyboard.helper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAChC,MAAM,CAAC,iBAAiB;QACtB,IAAI,QAAQ,CAAC,aAAa,YAAY,WAAW,EAAE,CAAC;YAClD,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,uBAAuB;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,sEAAsE,CAAC,CAAC;QAC5G,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;gBACnE,cAAc,IAAI,sCAAsC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,wBAAwB;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,sEAAsE,CAAC,CAAC;QAC5G,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;YAC9F,UAAU,GAAG,UAAU;iBACpB,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;iBACzB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;iBACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;iBACjB,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,QAAmC;QACjE,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,+BAA+B,GAAG,IAAI,CAAC;YAC7C,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAwB,CAAC;gBAC9C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,+BAA+B,CAAC;gBACvG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,iFAAiF;YACjF,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;YACrG,mCAAmC;YACnC,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF","sourcesContent":["export class KritzelKeyboardHelper {\r\n static forceHideKeyboard(): void {\r\n if (document.activeElement instanceof HTMLElement) {\r\n document.activeElement.blur();\r\n }\r\n }\r\n\r\n static enableInteractiveWidget(): void {\r\n const meta = document.querySelector('meta[name=\"viewport\"][content*=\"interactive-widget=resizes-content\"]');\r\n if (meta) {\r\n let currentContent = meta.getAttribute('content');\r\n if (!currentContent.includes('interactive-widget=resizes-content')) {\r\n currentContent += ', interactive-widget=resizes-content';\r\n }\r\n meta.setAttribute('content', currentContent);\r\n }\r\n }\r\n\r\n static disableInteractiveWidget(): void {\r\n const meta = document.querySelector('meta[name=\"viewport\"][content*=\"interactive-widget=resizes-content\"]');\r\n if (meta) {\r\n let currentContent = meta.getAttribute('content');\r\n let newContent = currentContent.replace(/\\s*interactive-widget=resizes-content\\s*[,;]?/g, '');\r\n newContent = newContent\r\n .replace(/,(\\s*,)+/g, ',')\r\n .replace(/^,/, '')\r\n .replace(/,$/, '')\r\n .trim();\r\n meta.setAttribute('content', newContent);\r\n }\r\n }\r\n\r\n static onKeyboardVisibleChanged(callback: (isOpen: boolean) => void): () => void {\r\n if ('visualViewport' in window) {\r\n const VIEWPORT_VS_CLIENT_HEIGHT_RATIO = 0.75;\r\n const onResize = (event: Event) => {\r\n const target = event.target as VisualViewport;\r\n const isOpen = (target.height * target.scale) / window.screen.height < VIEWPORT_VS_CLIENT_HEIGHT_RATIO;\r\n callback(isOpen);\r\n };\r\n\r\n window.visualViewport.addEventListener('resize', onResize);\r\n return () => window.visualViewport.removeEventListener('resize', onResize);\r\n } else {\r\n // Fallback for older browsers does not provide a reliable event-based mechanism.\r\n console.warn('Listening for keyboard visibility changes is not reliably supported in this browser.');\r\n // Return a no-op cleanup function.\r\n return () => {};\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,6 @@
1
+ export class KritzelMathHelper {
2
+ static average(a, b) {
3
+ return (a + b) / 2;
4
+ }
5
+ }
6
+ //# sourceMappingURL=math.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.helper.js","sourceRoot":"","sources":["../../src/helpers/math.helper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAC,OAAO,CAAC,CAAS,EAAE,CAAS;QACxC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;CACF","sourcesContent":["export class KritzelMathHelper {\r\n public static average(a: number, b: number): number {\r\n return (a + b) / 2;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,12 @@
1
+ export class ObjectHelper {
2
+ static generateUUID() {
3
+ return Math.random().toString(36).substr(2, 9);
4
+ }
5
+ static isEmpty(obj) {
6
+ if (obj === null || obj === undefined) {
7
+ return true;
8
+ }
9
+ return Object?.keys(obj).length === 0 && obj?.constructor === Object;
10
+ }
11
+ }
12
+ //# sourceMappingURL=object.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.helper.js","sourceRoot":"","sources":["../../src/helpers/object.helper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAQ;QACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACvE,CAAC;CACF","sourcesContent":["export class ObjectHelper {\r\n static generateUUID(): string {\r\n return Math.random().toString(36).substr(2, 9);\r\n }\r\n\r\n static isEmpty(obj: any): boolean {\r\n if (obj === null || obj === undefined) {\r\n return true;\r\n }\r\n return Object?.keys(obj).length === 0 && obj?.constructor === Object;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview entry point for your component library
3
+ *
4
+ * This is the entry point for your component library. Use this file to export utilities,
5
+ * constants or data structure that accompany your components.
6
+ *
7
+ * DO NOT use this file to export your components. Instead, use the recommended approaches
8
+ * to consume components of this package as outlined in the `README.md`.
9
+ */
10
+ export * from './classes/objects/text.class';
11
+ export * from './classes/objects/path.class';
12
+ export * from './classes/objects/image.class';
13
+ export * from './classes/tools/brush-tool.class';
14
+ export * from './classes/tools/eraser-tool.class';
15
+ export * from './classes/tools/image-tool.class';
16
+ export * from './classes/tools/text-tool.class';
17
+ export * from './classes/tools/selection-tool.class';
18
+ export * from './classes/providers/broadcast-sync-provider.class';
19
+ export * from './classes/providers/indexeddb-sync-provider.class';
20
+ export * from './classes/providers/websocket-sync-provider.class';
21
+ export * from './classes/providers/hocuspocus-sync-provider.class';
22
+ export * from './classes/structures/app-state-map.structure';
23
+ export * from './classes/core/workspace.class';
24
+ export * from './interfaces/toolbar-control.interface';
25
+ export * from './interfaces/menu-item.interface';
26
+ export * from './interfaces/sync-provider.interface';
27
+ export * from './interfaces/sync-config.interface';
28
+ export * from './configs/default-brush-tool.config';
29
+ export * from './configs/default-text-tool.config';
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AAErD,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,8CAA8C,CAAC;AAE7D,cAAc,gCAAgC,CAAC;AAE/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC","sourcesContent":["/**\r\n * @fileoverview entry point for your component library\r\n *\r\n * This is the entry point for your component library. Use this file to export utilities,\r\n * constants or data structure that accompany your components.\r\n *\r\n * DO NOT use this file to export your components. Instead, use the recommended approaches\r\n * to consume components of this package as outlined in the `README.md`.\r\n */\r\n\r\nexport type * from './components';\r\n\r\nexport * from './classes/objects/text.class';\r\nexport * from './classes/objects/path.class';\r\nexport * from './classes/objects/image.class';\r\n\r\nexport * from './classes/tools/brush-tool.class';\r\nexport * from './classes/tools/eraser-tool.class';\r\nexport * from './classes/tools/image-tool.class';\r\nexport * from './classes/tools/text-tool.class';\r\nexport * from './classes/tools/selection-tool.class';\r\n\r\nexport * from './classes/providers/broadcast-sync-provider.class';\r\nexport * from './classes/providers/indexeddb-sync-provider.class';\r\nexport * from './classes/providers/websocket-sync-provider.class';\r\nexport * from './classes/providers/hocuspocus-sync-provider.class';\r\n\r\nexport * from './classes/structures/app-state-map.structure';\r\n\r\nexport * from './classes/core/workspace.class';\r\n\r\nexport * from './interfaces/toolbar-control.interface';\r\nexport * from './interfaces/menu-item.interface';\r\nexport * from './interfaces/sync-provider.interface';\r\nexport * from './interfaces/sync-config.interface';\r\n\r\nexport * from './configs/default-brush-tool.config';\r\nexport * from './configs/default-text-tool.config';\r\n\r\n\r\n\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bounding-box.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-box.interface.js","sourceRoot":"","sources":["../../src/interfaces/bounding-box.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelBoundingBox {\r\n x: number;\r\n y: number;\r\n z: number;\r\n width: number;\r\n height: number;\r\n depth?: number;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clonable.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clonable.interface.js","sourceRoot":"","sources":["../../src/interfaces/clonable.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelClonable<T> {\r\n clone(): T;\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context-menu-item.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu-item.interface.js","sourceRoot":"","sources":["../../src/interfaces/context-menu-item.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelBaseObject } from \"../classes/objects/base-object.class\";\r\n\r\nexport interface ContextMenuItem {\r\n label: string;\r\n action: (menu: { x: number; y: number }, objects: KritzelBaseObject[]) => void;\r\n icon?: string;\r\n visible?: boolean | ((menu: { x: number; y: number }, objects: KritzelBaseObject[]) => boolean | Promise<boolean>);\r\n disabled?: boolean | ((menu: { x: number; y: number }, objects: KritzelBaseObject[]) => boolean | Promise<boolean>);\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug-info.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-info.interface.js","sourceRoot":"","sources":["../../src/interfaces/debug-info.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelDebugInfo {\r\n showViewportInfo: boolean;\r\n showObjectInfo: boolean;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=engine-state.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-state.interface.js","sourceRoot":"","sources":["../../src/interfaces/engine-state.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelBaseObject } from \"../classes/objects/base-object.class\";\r\nimport { KritzelObjectMap } from \"../classes/structures/object-map.structure\";\r\nimport { KritzelBaseTool } from \"../classes/tools/base-tool.class\";\r\nimport { KritzelWorkspace } from \"../classes/core/workspace.class\";\r\nimport { KritzelHandleType } from \"../enums/handle-type.enum\";\r\nimport { ContextMenuItem } from \"./context-menu-item.interface\";\r\nimport { KritzelDebugInfo } from \"./debug-info.interface\";\r\n\r\nexport interface KritzelEngineState {\r\n activeWorkspace: KritzelWorkspace;\r\n activeTool: KritzelBaseTool;\r\n copiedObjects?: KritzelBaseObject<any>[];\r\n objects: KritzelObjectMap<KritzelBaseObject<Element>>;\r\n resizeHandleType: KritzelHandleType;\r\n hasViewportChanged: boolean;\r\n hasObjectsChanged: boolean;\r\n isReady: boolean;\r\n isEnabled: boolean;\r\n isScaling: boolean;\r\n isPanning: boolean;\r\n isSelecting: boolean;\r\n isResizing: boolean;\r\n isResizeHandleSelected: boolean;\r\n isRotating: boolean;\r\n isRotationHandleSelected: boolean;\r\n isDragging: boolean;\r\n isDrawing: boolean;\r\n isErasing: boolean;\r\n isWriting: boolean;\r\n isCtrlKeyPressed: boolean;\r\n isContextMenuVisible: boolean;\r\n contextMenuItems: ContextMenuItem[];\r\n contextMenuX: number;\r\n contextMenuY: number;\r\n skipContextMenu: boolean;\r\n debugInfo: KritzelDebugInfo;\r\n host: HTMLElement;\r\n pointerX: number;\r\n pointerY: number;\r\n scale: number;\r\n scaleMax: number;\r\n scaleMin: number;\r\n startX: number;\r\n startY: number;\r\n translateX: number;\r\n translateXMax: number;\r\n translateXMin: number;\r\n translateY: number;\r\n translateYMax: number;\r\n translateYMin: number;\r\n viewportWidth: number;\r\n viewportHeight: number;\r\n longTouchTimeout: number;\r\n longTouchDelay: number;\r\n pointers: Map<number, PointerEvent>;\r\n workspaces: KritzelWorkspace[];\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=menu-item.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-item.interface.js","sourceRoot":"","sources":["../../src/interfaces/menu-item.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface IKritzelMenuItem<T = any> {\r\n id: string;\r\n label: string;\r\n value?: T;\r\n children?: IKritzelMenuItem[];\r\n isSelectable?: boolean;\r\n isSelected?: boolean;\r\n isEditing?: boolean;\r\n isDisabled?: boolean;\r\n isChildMenuOpen?: boolean;\r\n isNewItem?: boolean;\r\n childMenuAnchor?: HTMLElement;\r\n unchangedState?: Partial<IKritzelMenuItem>;\r\n action?: (item: IKritzelMenuItem, parent: IKritzelMenuItem) => void;\r\n}\r\n\r\nexport interface IKritzelMenuItemSelectEvent {\r\n item: IKritzelMenuItem;\r\n parent: IKritzelMenuItem;\r\n}\r\n\r\nexport interface IKritzelMenuItemToggleChildMenuEvent {\r\n item: IKritzelMenuItem;\r\n childMenuAnchor: HTMLElement;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=object.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.interface.js","sourceRoot":"","sources":["../../src/interfaces/object.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelBaseObject } from '../classes/objects/base-object.class';\r\nimport { KritzelBoundingBox } from './bounding-box.interface';\r\nimport { KritzelPolygon } from './polygon.interface';\r\n\r\nexport interface KritzelObject<T = Element> {\r\n _elementRef: T;\r\n\r\n id: string;\r\n workspaceId: string;\r\n x: number;\r\n y: number;\r\n translateX: number;\r\n translateY: number;\r\n height: number;\r\n width: number;\r\n backgroundColor: string;\r\n borderColor: string;\r\n borderWidth: number;\r\n opacity: number;\r\n scale: number;\r\n resizing: boolean;\r\n rotation: number;\r\n markedForRemoval: boolean;\r\n zIndex: number;\r\n\r\n isVisible: boolean;\r\n isSelected: boolean;\r\n isHovered: boolean;\r\n isMounted: boolean;\r\n isEditable: boolean;\r\n isInteractive: boolean;\r\n isDebugInfoVisible: boolean;\r\n\r\n set elementRef(element: T);\r\n get elementRef(): T;\r\n get boundingBox(): KritzelBoundingBox;\r\n get totalWidth(): number;\r\n get totalHeight(): number;\r\n get rotationDegrees(): number;\r\n get centerX(): number;\r\n get centerY(): number;\r\n\r\n mount(element: T): void;\r\n generateId(): string;\r\n isInViewport(viewport: KritzelBoundingBox, scale: number): boolean;\r\n centerInViewport(): void;\r\n update(): void;\r\n move(startX: number, startY: number, endX: number, endY: number): void;\r\n resize(x: number, y: number, width: number, height: number): void;\r\n rotate(value: number): void;\r\n copy(): KritzelBaseObject<Element>;\r\n isClass<T extends KritzelBaseObject>(this: T, type: string): this is T;\r\n edit(event?: PointerEvent): void;\r\n hitTest(x: number, y: number): boolean;\r\n hitTestPolygon(polygon: KritzelPolygon): boolean;\r\n updatePosition(x: number, y: number): void;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=path-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/path-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelPathOptions {\r\n points: number[][];\r\n translateX?: number;\r\n translateY?: number;\r\n scale?: number;\r\n stroke?: string;\r\n strokeWidth?: number;\r\n fill?: string;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=point.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point.interface.js","sourceRoot":"","sources":["../../src/interfaces/point.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelPoint {\r\n\tx: number;\r\n\ty: number;\r\n }\r\n "]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=polygon.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon.interface.js","sourceRoot":"","sources":["../../src/interfaces/polygon.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelPoint } from \"./point.interface\";\r\n\r\nexport interface KritzelPolygon {\r\n bottomLeft: KritzelPoint;\r\n bottomRight: KritzelPoint;\r\n topLeft: KritzelPoint;\r\n topRight: KritzelPoint;\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=selection-state.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-state.interface.js","sourceRoot":"","sources":["../../src/interfaces/selection-state.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelSelectionState {\r\n \tisSelecting: boolean;\r\n\tisResizing: boolean;\r\n\tisRotating: boolean;\r\n\tisDragging: boolean;\r\n\tisCtrlKeyPressed: boolean;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializable.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable.interface.js","sourceRoot":"","sources":["../../src/interfaces/serializable.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelSerializable {\r\n __class__: string;\r\n serialize(): any;\r\n deserialize(object: any): KritzelSerializable;\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shortcut.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcut.interface.js","sourceRoot":"","sources":["../../src/interfaces/shortcut.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelCore } from '..';\r\n\r\nexport interface KritzelShortcut {\r\n key: string;\r\n ctrl?: boolean;\r\n shift?: boolean;\r\n condition?: (core: KritzelCore) => boolean;\r\n action: (core: KritzelCore) => void;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-config.interface.js","sourceRoot":"","sources":["../../src/interfaces/sync-config.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ProviderConfig } from './sync-provider.interface';\r\n\r\n/**\r\n * Configuration for workspace synchronization providers\r\n */\r\nexport interface KritzelSyncConfig {\r\n /**\r\n * Array of provider configurations to enable for synchronization.\r\n * Can include provider classes directly or factory functions with options.\r\n * \r\n * @example\r\n * // Simple providers\r\n * providers: [IndexedDBSyncProvider, BroadcastSyncProvider]\r\n * \r\n * @example\r\n * // Provider with options using factory\r\n * providers: [\r\n * IndexedDBSyncProvider,\r\n * WebSocketSyncProvider.with({ url: 'wss://example.com' })\r\n * ]\r\n */\r\n providers: ProviderConfig[];\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync-provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-provider.interface.js","sourceRoot":"","sources":["../../src/interfaces/sync-provider.interface.ts"],"names":[],"mappings":"","sourcesContent":["import * as Y from 'yjs';\r\n\r\n/**\r\n * Interface for sync providers that handle data synchronization across different mediums\r\n * (IndexedDB, BroadcastChannel, WebSocket, etc.)\r\n */\r\nexport interface ISyncProvider {\r\n /**\r\n * Initialize and connect the provider\r\n */\r\n connect(): Promise<void>;\r\n\r\n /**\r\n * Disconnect the provider (can be reconnected later)\r\n */\r\n disconnect(): void;\r\n\r\n /**\r\n * Destroy the provider and clean up all resources\r\n */\r\n destroy(): void;\r\n}\r\n\r\n/**\r\n * Factory function type for creating provider instances\r\n */\r\nexport interface ProviderFactory {\r\n create(docName: string, doc: Y.Doc): ISyncProvider;\r\n}\r\n\r\n/**\r\n * Type for provider configuration - either a class constructor or a factory\r\n */\r\nexport type ProviderConfig = (new (docName: string, doc: Y.Doc, options?: any) => ISyncProvider) | ProviderFactory;\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.interface.js","sourceRoot":"","sources":["../../src/interfaces/tool.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelTool {\r\n name: string;\r\n handlePointerDown(event: PointerEvent): void;\r\n handlePointerMove(event: PointerEvent): void;\r\n handlePointerUp(event: PointerEvent): void;\r\n handleWheel(event: WheelEvent): void;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toolbar-control.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar-control.interface.js","sourceRoot":"","sources":["../../src/interfaces/toolbar-control.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelBaseTool } from '../classes/tools/base-tool.class';\r\n\r\nexport interface KritzelToolbarControl {\r\n type: 'tool' | 'divider' | 'config';\r\n tool?: (new (...args: any[]) => KritzelBaseTool) | KritzelBaseTool;\r\n icon?: string;\r\n isDefault?: boolean;\r\n name: string;\r\n config?: KritzelTextToolConfig | KritzelBrushToolConfig;\r\n}\r\n\r\nexport interface KritzelTextToolConfig {\r\n color: string;\r\n size: number;\r\n fontFamily: string;\r\n palette: string[];\r\n}\r\n\r\nexport interface KritzelBrushToolConfig {\r\n type: 'pen' | 'highlighter';\r\n color: string;\r\n size: number;\r\n palettes: {\r\n [brushType: string]: string[]; \r\n }\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=undo-state.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-state.interface.js","sourceRoot":"","sources":["../../src/interfaces/undo-state.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface KritzelUndoState {\r\n canUndo: boolean;\r\n canRedo: boolean;\r\n undoStackSize: number;\r\n redoStackSize: number;\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deep-readonly.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-readonly.type.js","sourceRoot":"","sources":["../../src/types/deep-readonly.type.ts"],"names":[],"mappings":"","sourcesContent":["export type DeepReadonly<T> =\r\n T extends (infer R)[] ? DeepReadonlyArray<R> :\r\n T extends Function ? T :\r\n T extends object ? DeepReadonlyObject<T> :\r\n T;\r\n\r\ninterface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {}\r\n\r\ntype DeepReadonlyObject<T> = {\r\n readonly [P in keyof T]: DeepReadonly<T[P]>;\r\n};"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=state.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.types.js","sourceRoot":"","sources":["../../src/types/state.types.ts"],"names":[],"mappings":"","sourcesContent":["import { KritzelEngineState } from \"../interfaces/engine-state.interface\";\r\n\r\nexport type StatePropertyKey = keyof KritzelEngineState;\r\nexport type StateChangeListener<T = any> = (newValue: T, oldValue: T, propertyName: string) => void;"]}