@kritzel/engine 0.4.31

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 (373) hide show
  1. package/LICENSE.md +50 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  3. package/dist/cjs/engine.constants-CakmdKMW.js +28206 -0
  4. package/dist/cjs/index-BbbWU2aN.js +1742 -0
  5. package/dist/cjs/index.cjs.js +4232 -0
  6. package/dist/cjs/kritzel-awareness-cursors_5.cjs.entry.js +28004 -0
  7. package/dist/cjs/loader.cjs.js +13 -0
  8. package/dist/cjs/stencil.cjs.js +25 -0
  9. package/dist/collection/classes/core/core.class.js +1389 -0
  10. package/dist/collection/classes/core/reviver.class.js +124 -0
  11. package/dist/collection/classes/core/store.class.js +337 -0
  12. package/dist/collection/classes/core/viewport.class.js +794 -0
  13. package/dist/collection/classes/core/workspace.class.js +112 -0
  14. package/dist/collection/classes/handlers/base.handler.js +20 -0
  15. package/dist/collection/classes/handlers/context-menu.handler.js +170 -0
  16. package/dist/collection/classes/handlers/hover.handler.js +35 -0
  17. package/dist/collection/classes/handlers/key.handler.js +162 -0
  18. package/dist/collection/classes/handlers/line-handle.handler.js +475 -0
  19. package/dist/collection/classes/handlers/move.handler.js +295 -0
  20. package/dist/collection/classes/handlers/resize.handler.js +327 -0
  21. package/dist/collection/classes/handlers/rotation.handler.js +174 -0
  22. package/dist/collection/classes/handlers/selection.handler.js +526 -0
  23. package/dist/collection/classes/managers/anchor.manager.js +1476 -0
  24. package/dist/collection/classes/managers/browser-permission.manager.js +64 -0
  25. package/dist/collection/classes/managers/clipboard.manager.js +346 -0
  26. package/dist/collection/classes/managers/clipboard.types.js +1 -0
  27. package/dist/collection/classes/managers/cursor.manager.js +139 -0
  28. package/dist/collection/classes/managers/license.manager.js +341 -0
  29. package/dist/collection/classes/managers/localization.manager.js +227 -0
  30. package/dist/collection/classes/managers/theme.manager.js +206 -0
  31. package/dist/collection/classes/objects/base-object.class.js +462 -0
  32. package/dist/collection/classes/objects/dynamic-object.class.js +437 -0
  33. package/dist/collection/classes/objects/group.class.js +590 -0
  34. package/dist/collection/classes/objects/image.class.js +500 -0
  35. package/dist/collection/classes/objects/line.class.js +789 -0
  36. package/dist/collection/classes/objects/path.class.js +578 -0
  37. package/dist/collection/classes/objects/selection-box.class.js +32 -0
  38. package/dist/collection/classes/objects/selection-group.class.js +752 -0
  39. package/dist/collection/classes/objects/shape.class.js +628 -0
  40. package/dist/collection/classes/objects/text.class.js +461 -0
  41. package/dist/collection/classes/providers/assets/asset-resolver.class.js +536 -0
  42. package/dist/collection/classes/providers/assets/http-asset-provider.class.js +111 -0
  43. package/dist/collection/classes/providers/assets/indexeddb-asset-provider.class.js +241 -0
  44. package/dist/collection/classes/providers/assets/presigned-asset-provider.class.js +86 -0
  45. package/dist/collection/classes/providers/paste-intent/event-paste-intent.provider.js +48 -0
  46. package/dist/collection/classes/providers/paste-intent/ios-paste-intent.provider.js +16 -0
  47. package/dist/collection/classes/providers/paste-intent/navigator-paste-intent.provider.js +86 -0
  48. package/dist/collection/classes/providers/sync/broadcast-sync-provider.class.js +100 -0
  49. package/dist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js +333 -0
  50. package/dist/collection/classes/providers/sync/in-memory-sync-provider.class.js +69 -0
  51. package/dist/collection/classes/providers/sync/indexeddb-sync-provider.class.js +39 -0
  52. package/dist/collection/classes/providers/sync/websocket-sync-provider.class.js +110 -0
  53. package/dist/collection/classes/registries/dynamic-object-renderer.registry.js +52 -0
  54. package/dist/collection/classes/registries/font-registry.class.js +161 -0
  55. package/dist/collection/classes/registries/icon-registry.class.js +118 -0
  56. package/dist/collection/classes/registries/paste-intent-provider.registry.js +26 -0
  57. package/dist/collection/classes/registries/tool.registry.js +69 -0
  58. package/dist/collection/classes/structures/app-state-map.structure.js +461 -0
  59. package/dist/collection/classes/structures/object-map.structure.js +1103 -0
  60. package/dist/collection/classes/structures/quadtree.structure.js +251 -0
  61. package/dist/collection/classes/tools/base-tool.class.js +88 -0
  62. package/dist/collection/classes/tools/brush-tool.class.js +236 -0
  63. package/dist/collection/classes/tools/eraser-tool.class.js +133 -0
  64. package/dist/collection/classes/tools/image-tool.class.js +152 -0
  65. package/dist/collection/classes/tools/line-tool.class.js +249 -0
  66. package/dist/collection/classes/tools/selection-tool.class.js +611 -0
  67. package/dist/collection/classes/tools/shape-tool.class.js +251 -0
  68. package/dist/collection/classes/tools/text-tool.class.js +179 -0
  69. package/dist/collection/collection-manifest.json +17 -0
  70. package/dist/collection/components/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -0
  71. package/dist/collection/components/kritzel-awareness-cursors/kritzel-awareness-cursors.js +380 -0
  72. package/dist/collection/components/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -0
  73. package/dist/collection/components/kritzel-cursor-trail/kritzel-cursor-trail.js +153 -0
  74. package/dist/collection/components/kritzel-engine/kritzel-engine.css +81 -0
  75. package/dist/collection/components/kritzel-engine/kritzel-engine.js +6345 -0
  76. package/dist/collection/components/kritzel-icon/kritzel-icon.css +18 -0
  77. package/dist/collection/components/kritzel-icon/kritzel-icon.js +93 -0
  78. package/dist/collection/components/kritzel-watermark/kritzel-watermark.css +29 -0
  79. package/dist/collection/components/kritzel-watermark/kritzel-watermark.js +83 -0
  80. package/dist/collection/configs/default-asset-storage.config.js +9 -0
  81. package/dist/collection/configs/default-brush-tool.config.js +9 -0
  82. package/dist/collection/configs/default-engine-config.js +73 -0
  83. package/dist/collection/configs/default-line-tool.config.js +12 -0
  84. package/dist/collection/configs/default-shape-tool.config.js +15 -0
  85. package/dist/collection/configs/default-sync.config.js +6 -0
  86. package/dist/collection/configs/default-text-tool.config.js +12 -0
  87. package/dist/collection/constants/color-palette.constants.js +40 -0
  88. package/dist/collection/constants/core.constants.js +1 -0
  89. package/dist/collection/constants/engine.constants.js +4 -0
  90. package/dist/collection/constants/license.constants.js +25 -0
  91. package/dist/collection/constants/schema.constants.js +4 -0
  92. package/dist/collection/constants/storage.constants.js +1 -0
  93. package/dist/collection/constants/stroke-size.constants.js +2 -0
  94. package/dist/collection/constants/text-tool-fonts.constants.js +18 -0
  95. package/dist/collection/constants/version.js +6 -0
  96. package/dist/collection/enums/alignment.enum.js +9 -0
  97. package/dist/collection/enums/event-button.enum.js +6 -0
  98. package/dist/collection/enums/handle-type.enum.js +7 -0
  99. package/dist/collection/enums/shape-type.enum.js +6 -0
  100. package/dist/collection/events/active-workspace-change.event.js +1 -0
  101. package/dist/collection/events/editor-is-ready.event.js +1 -0
  102. package/dist/collection/events/login.event.js +1 -0
  103. package/dist/collection/helpers/alignment.helper.js +73 -0
  104. package/dist/collection/helpers/class.helper.js +5 -0
  105. package/dist/collection/helpers/color.helper.js +106 -0
  106. package/dist/collection/helpers/cursor.helper.js +57 -0
  107. package/dist/collection/helpers/devices.helper.js +28 -0
  108. package/dist/collection/helpers/event.helper.js +58 -0
  109. package/dist/collection/helpers/geometry.helper.js +149 -0
  110. package/dist/collection/helpers/html.helper.js +116 -0
  111. package/dist/collection/helpers/image-file.helper.js +6 -0
  112. package/dist/collection/helpers/keyboard.helper.js +55 -0
  113. package/dist/collection/helpers/localization.helper.js +25 -0
  114. package/dist/collection/helpers/math.helper.js +8 -0
  115. package/dist/collection/helpers/migration.helper.js +45 -0
  116. package/dist/collection/helpers/object.helper.js +29 -0
  117. package/dist/collection/helpers/svg-export.helper.js +655 -0
  118. package/dist/collection/helpers/theme.helper.js +77 -0
  119. package/dist/collection/helpers/tool-config.helper.js +63 -0
  120. package/dist/collection/helpers/wheel.helper.js +113 -0
  121. package/dist/collection/index.js +107 -0
  122. package/dist/collection/interfaces/anchor.interface.js +1 -0
  123. package/dist/collection/interfaces/arrow-head.interface.js +1 -0
  124. package/dist/collection/interfaces/asset-provider.interface.js +1 -0
  125. package/dist/collection/interfaces/asset-storage-config.interface.js +1 -0
  126. package/dist/collection/interfaces/asset.interface.js +1 -0
  127. package/dist/collection/interfaces/bounding-box.interface.js +1 -0
  128. package/dist/collection/interfaces/clonable.interface.js +1 -0
  129. package/dist/collection/interfaces/context-menu-item.interface.js +1 -0
  130. package/dist/collection/interfaces/context-menu-state.interface.js +1 -0
  131. package/dist/collection/interfaces/debug-info.interface.js +1 -0
  132. package/dist/collection/interfaces/dialog.interface.js +1 -0
  133. package/dist/collection/interfaces/document-metadata.interface.js +1 -0
  134. package/dist/collection/interfaces/dynamic-object-renderer.interface.js +1 -0
  135. package/dist/collection/interfaces/engine-state.interface.js +1 -0
  136. package/dist/collection/interfaces/font.interface.js +1 -0
  137. package/dist/collection/interfaces/localization.interface.js +1 -0
  138. package/dist/collection/interfaces/login-config.interface.js +1 -0
  139. package/dist/collection/interfaces/master-detail.interface.js +1 -0
  140. package/dist/collection/interfaces/menu-item.interface.js +1 -0
  141. package/dist/collection/interfaces/migration.interface.js +1 -0
  142. package/dist/collection/interfaces/notification.interface.js +1 -0
  143. package/dist/collection/interfaces/object-change-event.interface.js +1 -0
  144. package/dist/collection/interfaces/object-export.interface.js +1 -0
  145. package/dist/collection/interfaces/object.interface.js +1 -0
  146. package/dist/collection/interfaces/paste-intent-provider.interface.js +1 -0
  147. package/dist/collection/interfaces/point.interface.js +1 -0
  148. package/dist/collection/interfaces/polygon.interface.js +1 -0
  149. package/dist/collection/interfaces/remote-cursor.interface.js +1 -0
  150. package/dist/collection/interfaces/selection-state.interface.js +1 -0
  151. package/dist/collection/interfaces/serializable.interface.js +1 -0
  152. package/dist/collection/interfaces/settings.interface.js +1 -0
  153. package/dist/collection/interfaces/share.interface.js +1 -0
  154. package/dist/collection/interfaces/shortcut.interface.js +1 -0
  155. package/dist/collection/interfaces/sync-config.interface.js +21 -0
  156. package/dist/collection/interfaces/sync-provider.interface.js +1 -0
  157. package/dist/collection/interfaces/theme.interface.js +1 -0
  158. package/dist/collection/interfaces/tool-config.interface.js +1 -0
  159. package/dist/collection/interfaces/tool-type.interface.js +1 -0
  160. package/dist/collection/interfaces/tool.interface.js +1 -0
  161. package/dist/collection/interfaces/toolbar-item.interface.js +1 -0
  162. package/dist/collection/interfaces/undo-state.interface.js +1 -0
  163. package/dist/collection/interfaces/user.interface.js +1 -0
  164. package/dist/collection/interfaces/viewport-state.interface.js +1 -0
  165. package/dist/collection/locales/de-locale.js +119 -0
  166. package/dist/collection/locales/en-locale.js +120 -0
  167. package/dist/collection/locales/fr-locale.js +119 -0
  168. package/dist/collection/migrations/app-state.migrations.js +47 -0
  169. package/dist/collection/migrations/workspace.migrations.js +67 -0
  170. package/dist/collection/themes/dark-theme.js +340 -0
  171. package/dist/collection/themes/light-theme.js +346 -0
  172. package/dist/collection/types/deep-readonly.type.js +1 -0
  173. package/dist/collection/types/state.types.js +1 -0
  174. package/dist/components/index.d.ts +47 -0
  175. package/dist/components/index.js +4143 -0
  176. package/dist/components/kritzel-awareness-cursors.d.ts +11 -0
  177. package/dist/components/kritzel-awareness-cursors.js +6 -0
  178. package/dist/components/kritzel-cursor-trail.d.ts +11 -0
  179. package/dist/components/kritzel-cursor-trail.js +6 -0
  180. package/dist/components/kritzel-engine.d.ts +11 -0
  181. package/dist/components/kritzel-engine.js +52641 -0
  182. package/dist/components/kritzel-icon.d.ts +11 -0
  183. package/dist/components/kritzel-icon.js +6 -0
  184. package/dist/components/kritzel-watermark.d.ts +11 -0
  185. package/dist/components/kritzel-watermark.js +6 -0
  186. package/dist/components/p-B2Htv9ou.js +49 -0
  187. package/dist/components/p-BvRGQvVI.js +3456 -0
  188. package/dist/components/p-CfSx6HU_.js +1469 -0
  189. package/dist/components/p-YP8wAcF4.js +122 -0
  190. package/dist/components/p-fx6msYHJ.js +167 -0
  191. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  192. package/dist/esm/engine.constants-Bl5-pbq-.js +28143 -0
  193. package/dist/esm/index-BU9Mv7y0.js +1715 -0
  194. package/dist/esm/index.js +4134 -0
  195. package/dist/esm/kritzel-awareness-cursors_5.entry.js +27978 -0
  196. package/dist/esm/loader.js +11 -0
  197. package/dist/esm/stencil.js +21 -0
  198. package/dist/index.cjs.js +1 -0
  199. package/dist/index.js +1 -0
  200. package/dist/stencil/index.esm.js +4134 -0
  201. package/dist/stencil/p-BU9Mv7y0.js +1702 -0
  202. package/dist/stencil/p-Bl5-pbq-.js +28143 -0
  203. package/dist/stencil/p-DQuL1Twl.js +3 -0
  204. package/dist/stencil/p-f0a8b7af.entry.js +27978 -0
  205. package/dist/stencil/stencil.esm.js +21 -0
  206. package/dist/types/classes/core/core.class.d.ts +532 -0
  207. package/dist/types/classes/core/reviver.class.d.ts +32 -0
  208. package/dist/types/classes/core/store.class.d.ts +198 -0
  209. package/dist/types/classes/core/viewport.class.d.ts +256 -0
  210. package/dist/types/classes/core/workspace.class.d.ts +95 -0
  211. package/dist/types/classes/handlers/base.handler.d.ts +18 -0
  212. package/dist/types/classes/handlers/context-menu.handler.d.ts +67 -0
  213. package/dist/types/classes/handlers/hover.handler.d.ts +23 -0
  214. package/dist/types/classes/handlers/key.handler.d.ts +44 -0
  215. package/dist/types/classes/handlers/line-handle.handler.d.ts +115 -0
  216. package/dist/types/classes/handlers/move.handler.d.ts +94 -0
  217. package/dist/types/classes/handlers/resize.handler.d.ts +95 -0
  218. package/dist/types/classes/handlers/rotation.handler.d.ts +50 -0
  219. package/dist/types/classes/handlers/selection.handler.d.ts +153 -0
  220. package/dist/types/classes/managers/anchor.manager.d.ts +513 -0
  221. package/dist/types/classes/managers/browser-permission.manager.d.ts +41 -0
  222. package/dist/types/classes/managers/clipboard.manager.d.ts +71 -0
  223. package/dist/types/classes/managers/clipboard.types.d.ts +23 -0
  224. package/dist/types/classes/managers/cursor.manager.d.ts +66 -0
  225. package/dist/types/classes/managers/license.manager.d.ts +147 -0
  226. package/dist/types/classes/managers/localization.manager.d.ts +145 -0
  227. package/dist/types/classes/managers/theme.manager.d.ts +112 -0
  228. package/dist/types/classes/objects/base-object.class.d.ts +266 -0
  229. package/dist/types/classes/objects/dynamic-object.class.d.ts +148 -0
  230. package/dist/types/classes/objects/group.class.d.ts +231 -0
  231. package/dist/types/classes/objects/image.class.d.ts +246 -0
  232. package/dist/types/classes/objects/line.class.d.ts +285 -0
  233. package/dist/types/classes/objects/path.class.d.ts +220 -0
  234. package/dist/types/classes/objects/selection-box.class.d.ts +19 -0
  235. package/dist/types/classes/objects/selection-group.class.d.ts +267 -0
  236. package/dist/types/classes/objects/shape.class.d.ts +322 -0
  237. package/dist/types/classes/objects/text.class.d.ts +197 -0
  238. package/dist/types/classes/providers/assets/asset-resolver.class.d.ts +141 -0
  239. package/dist/types/classes/providers/assets/http-asset-provider.class.d.ts +79 -0
  240. package/dist/types/classes/providers/assets/indexeddb-asset-provider.class.d.ts +69 -0
  241. package/dist/types/classes/providers/assets/presigned-asset-provider.class.d.ts +69 -0
  242. package/dist/types/classes/providers/paste-intent/event-paste-intent.provider.d.ts +8 -0
  243. package/dist/types/classes/providers/paste-intent/ios-paste-intent.provider.d.ts +6 -0
  244. package/dist/types/classes/providers/paste-intent/navigator-paste-intent.provider.d.ts +9 -0
  245. package/dist/types/classes/providers/sync/broadcast-sync-provider.class.d.ts +23 -0
  246. package/dist/types/classes/providers/sync/hocuspocus-sync-provider.class.d.ts +163 -0
  247. package/dist/types/classes/providers/sync/in-memory-sync-provider.class.d.ts +39 -0
  248. package/dist/types/classes/providers/sync/indexeddb-sync-provider.class.d.ts +25 -0
  249. package/dist/types/classes/providers/sync/websocket-sync-provider.class.d.ts +63 -0
  250. package/dist/types/classes/registries/dynamic-object-renderer.registry.d.ts +32 -0
  251. package/dist/types/classes/registries/font-registry.class.d.ts +19 -0
  252. package/dist/types/classes/registries/icon-registry.class.d.ts +39 -0
  253. package/dist/types/classes/registries/paste-intent-provider.registry.d.ts +10 -0
  254. package/dist/types/classes/registries/tool.registry.d.ts +53 -0
  255. package/dist/types/classes/structures/app-state-map.structure.d.ts +171 -0
  256. package/dist/types/classes/structures/object-map.structure.d.ts +403 -0
  257. package/dist/types/classes/structures/quadtree.structure.d.ts +128 -0
  258. package/dist/types/classes/tools/base-tool.class.d.ts +72 -0
  259. package/dist/types/classes/tools/brush-tool.class.d.ts +68 -0
  260. package/dist/types/classes/tools/eraser-tool.class.d.ts +38 -0
  261. package/dist/types/classes/tools/image-tool.class.d.ts +74 -0
  262. package/dist/types/classes/tools/line-tool.class.d.ts +63 -0
  263. package/dist/types/classes/tools/selection-tool.class.d.ts +188 -0
  264. package/dist/types/classes/tools/shape-tool.class.d.ts +90 -0
  265. package/dist/types/classes/tools/text-tool.class.d.ts +66 -0
  266. package/dist/types/components/kritzel-awareness-cursors/kritzel-awareness-cursors.d.ts +29 -0
  267. package/dist/types/components/kritzel-cursor-trail/kritzel-cursor-trail.d.ts +19 -0
  268. package/dist/types/components/kritzel-engine/kritzel-engine.d.ts +695 -0
  269. package/dist/types/components/kritzel-icon/kritzel-icon.d.ts +6 -0
  270. package/dist/types/components/kritzel-watermark/kritzel-watermark.d.ts +20 -0
  271. package/dist/types/components.d.ts +981 -0
  272. package/dist/types/configs/default-asset-storage.config.d.ts +8 -0
  273. package/dist/types/configs/default-brush-tool.config.d.ts +2 -0
  274. package/dist/types/configs/default-engine-config.d.ts +2 -0
  275. package/dist/types/configs/default-line-tool.config.d.ts +2 -0
  276. package/dist/types/configs/default-shape-tool.config.d.ts +2 -0
  277. package/dist/types/configs/default-sync.config.d.ts +5 -0
  278. package/dist/types/configs/default-text-tool.config.d.ts +2 -0
  279. package/dist/types/constants/color-palette.constants.d.ts +31 -0
  280. package/dist/types/constants/core.constants.d.ts +0 -0
  281. package/dist/types/constants/engine.constants.d.ts +4 -0
  282. package/dist/types/constants/license.constants.d.ts +25 -0
  283. package/dist/types/constants/schema.constants.d.ts +4 -0
  284. package/dist/types/constants/storage.constants.d.ts +1 -0
  285. package/dist/types/constants/stroke-size.constants.d.ts +2 -0
  286. package/dist/types/constants/text-tool-fonts.constants.d.ts +3 -0
  287. package/dist/types/constants/version.d.ts +6 -0
  288. package/dist/types/enums/alignment.enum.d.ts +8 -0
  289. package/dist/types/enums/event-button.enum.d.ts +5 -0
  290. package/dist/types/enums/handle-type.enum.d.ts +6 -0
  291. package/dist/types/enums/shape-type.enum.d.ts +5 -0
  292. package/dist/types/events/active-workspace-change.event.d.ts +7 -0
  293. package/dist/types/events/editor-is-ready.event.d.ts +18 -0
  294. package/dist/types/events/login.event.d.ts +3 -0
  295. package/dist/types/helpers/alignment.helper.d.ts +21 -0
  296. package/dist/types/helpers/class.helper.d.ts +3 -0
  297. package/dist/types/helpers/color.helper.d.ts +34 -0
  298. package/dist/types/helpers/cursor.helper.d.ts +22 -0
  299. package/dist/types/helpers/devices.helper.d.ts +8 -0
  300. package/dist/types/helpers/event.helper.d.ts +6 -0
  301. package/dist/types/helpers/geometry.helper.d.ts +38 -0
  302. package/dist/types/helpers/html.helper.d.ts +8 -0
  303. package/dist/types/helpers/image-file.helper.d.ts +3 -0
  304. package/dist/types/helpers/keyboard.helper.d.ts +6 -0
  305. package/dist/types/helpers/localization.helper.d.ts +18 -0
  306. package/dist/types/helpers/math.helper.d.ts +4 -0
  307. package/dist/types/helpers/migration.helper.d.ts +30 -0
  308. package/dist/types/helpers/object.helper.d.ts +9 -0
  309. package/dist/types/helpers/svg-export.helper.d.ts +231 -0
  310. package/dist/types/helpers/theme.helper.d.ts +42 -0
  311. package/dist/types/helpers/tool-config.helper.d.ts +4 -0
  312. package/dist/types/helpers/wheel.helper.d.ts +9 -0
  313. package/dist/types/index.d.ts +109 -0
  314. package/dist/types/interfaces/anchor.interface.d.ts +147 -0
  315. package/dist/types/interfaces/arrow-head.interface.d.ts +27 -0
  316. package/dist/types/interfaces/asset-provider.interface.d.ts +88 -0
  317. package/dist/types/interfaces/asset-storage-config.interface.d.ts +40 -0
  318. package/dist/types/interfaces/asset.interface.d.ts +43 -0
  319. package/dist/types/interfaces/bounding-box.interface.d.ts +8 -0
  320. package/dist/types/interfaces/clonable.interface.d.ts +3 -0
  321. package/dist/types/interfaces/context-menu-item.interface.d.ts +25 -0
  322. package/dist/types/interfaces/context-menu-state.interface.d.ts +16 -0
  323. package/dist/types/interfaces/debug-info.interface.d.ts +7 -0
  324. package/dist/types/interfaces/dialog.interface.d.ts +4 -0
  325. package/dist/types/interfaces/document-metadata.interface.d.ts +6 -0
  326. package/dist/types/interfaces/dynamic-object-renderer.interface.d.ts +40 -0
  327. package/dist/types/interfaces/engine-state.interface.d.ts +82 -0
  328. package/dist/types/interfaces/font.interface.d.ts +15 -0
  329. package/dist/types/interfaces/localization.interface.d.ts +143 -0
  330. package/dist/types/interfaces/login-config.interface.d.ts +24 -0
  331. package/dist/types/interfaces/master-detail.interface.d.ts +14 -0
  332. package/dist/types/interfaces/menu-item.interface.d.ts +27 -0
  333. package/dist/types/interfaces/migration.interface.d.ts +16 -0
  334. package/dist/types/interfaces/notification.interface.d.ts +10 -0
  335. package/dist/types/interfaces/object-change-event.interface.d.ts +31 -0
  336. package/dist/types/interfaces/object-export.interface.d.ts +20 -0
  337. package/dist/types/interfaces/object.interface.d.ts +53 -0
  338. package/dist/types/interfaces/paste-intent-provider.interface.d.ts +10 -0
  339. package/dist/types/interfaces/point.interface.d.ts +4 -0
  340. package/dist/types/interfaces/polygon.interface.d.ts +7 -0
  341. package/dist/types/interfaces/remote-cursor.interface.d.ts +18 -0
  342. package/dist/types/interfaces/selection-state.interface.d.ts +7 -0
  343. package/dist/types/interfaces/serializable.interface.d.ts +5 -0
  344. package/dist/types/interfaces/settings.interface.d.ts +25 -0
  345. package/dist/types/interfaces/share.interface.d.ts +9 -0
  346. package/dist/types/interfaces/shortcut.interface.d.ts +10 -0
  347. package/dist/types/interfaces/sync-config.interface.d.ts +41 -0
  348. package/dist/types/interfaces/sync-provider.interface.d.ts +66 -0
  349. package/dist/types/interfaces/theme.interface.d.ts +553 -0
  350. package/dist/types/interfaces/tool-config.interface.d.ts +24 -0
  351. package/dist/types/interfaces/tool-type.interface.d.ts +1 -0
  352. package/dist/types/interfaces/tool.interface.d.ts +8 -0
  353. package/dist/types/interfaces/toolbar-item.interface.d.ts +66 -0
  354. package/dist/types/interfaces/undo-state.interface.d.ts +6 -0
  355. package/dist/types/interfaces/user.interface.d.ts +22 -0
  356. package/dist/types/interfaces/viewport-state.interface.d.ts +7 -0
  357. package/dist/types/locales/de-locale.d.ts +5 -0
  358. package/dist/types/locales/en-locale.d.ts +6 -0
  359. package/dist/types/locales/fr-locale.d.ts +5 -0
  360. package/dist/types/migrations/app-state.migrations.d.ts +11 -0
  361. package/dist/types/migrations/workspace.migrations.d.ts +11 -0
  362. package/dist/types/stencil-public-runtime.d.ts +1873 -0
  363. package/dist/types/themes/dark-theme.d.ts +5 -0
  364. package/dist/types/themes/light-theme.d.ts +5 -0
  365. package/dist/types/types/deep-readonly.type.d.ts +7 -0
  366. package/dist/types/types/state.types.d.ts +3 -0
  367. package/loader/cdn.js +1 -0
  368. package/loader/index.cjs.js +1 -0
  369. package/loader/index.d.ts +24 -0
  370. package/loader/index.es2017.js +1 -0
  371. package/loader/index.js +2 -0
  372. package/package.json +101 -0
  373. package/readme.md +11 -0
@@ -0,0 +1,18 @@
1
+ :host {
2
+ display: inline-flex; /* Changed from block to inline-flex for better alignment */
3
+ justify-content: center; /* Center content horizontally */
4
+ align-items: center; /* Center content vertically */
5
+ color: var(--kritzel-icon-color, inherited);
6
+ }
7
+
8
+ span {
9
+ display: flex;
10
+ align-items: center;
11
+ width: 100%; /* Make span fill host width */
12
+ height: 100%; /* Make span fill host height */
13
+ }
14
+
15
+ span > svg { /* Ensure SVG scales within the span */
16
+ width: 100%;
17
+ height: 100%;
18
+ }
@@ -0,0 +1,93 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { KritzelIconRegistry } from "../../classes/registries/icon-registry.class";
3
+ export class KritzelIcon {
4
+ name;
5
+ label;
6
+ size = 24;
7
+ render() {
8
+ const svgContent = KritzelIconRegistry.get(this.name);
9
+ if (!svgContent) {
10
+ console.error(`[kritzel-icon] Icon "${this.name}" not found in registry.`);
11
+ return h("span", { class: "error-icon", "aria-label": `Error: Icon ${this.name} not found` }, "?");
12
+ }
13
+ const styles = {
14
+ width: `${this.size}px`,
15
+ height: `${this.size}px`,
16
+ };
17
+ return (h(Host, { style: styles }, h("span", { "aria-hidden": !this.label, role: this.label ? 'img' : undefined, "aria-label": this.label, innerHTML: svgContent })));
18
+ }
19
+ static get is() { return "kritzel-icon"; }
20
+ static get encapsulation() { return "shadow"; }
21
+ static get originalStyleUrls() {
22
+ return {
23
+ "$": ["kritzel-icon.css"]
24
+ };
25
+ }
26
+ static get styleUrls() {
27
+ return {
28
+ "$": ["kritzel-icon.css"]
29
+ };
30
+ }
31
+ static get properties() {
32
+ return {
33
+ "name": {
34
+ "type": "string",
35
+ "mutable": false,
36
+ "complexType": {
37
+ "original": "string",
38
+ "resolved": "string",
39
+ "references": {}
40
+ },
41
+ "required": false,
42
+ "optional": false,
43
+ "docs": {
44
+ "tags": [],
45
+ "text": ""
46
+ },
47
+ "getter": false,
48
+ "setter": false,
49
+ "reflect": false,
50
+ "attribute": "name"
51
+ },
52
+ "label": {
53
+ "type": "string",
54
+ "mutable": false,
55
+ "complexType": {
56
+ "original": "string",
57
+ "resolved": "string",
58
+ "references": {}
59
+ },
60
+ "required": false,
61
+ "optional": true,
62
+ "docs": {
63
+ "tags": [],
64
+ "text": ""
65
+ },
66
+ "getter": false,
67
+ "setter": false,
68
+ "reflect": false,
69
+ "attribute": "label"
70
+ },
71
+ "size": {
72
+ "type": "number",
73
+ "mutable": false,
74
+ "complexType": {
75
+ "original": "number",
76
+ "resolved": "number",
77
+ "references": {}
78
+ },
79
+ "required": false,
80
+ "optional": false,
81
+ "docs": {
82
+ "tags": [],
83
+ "text": ""
84
+ },
85
+ "getter": false,
86
+ "setter": false,
87
+ "reflect": false,
88
+ "attribute": "size",
89
+ "defaultValue": "24"
90
+ }
91
+ };
92
+ }
93
+ }
@@ -0,0 +1,29 @@
1
+ :host {
2
+ position: absolute;
3
+ bottom: var(--kritzel-watermark-offset-bottom, 12px);
4
+ right: var(--kritzel-watermark-offset-right, 12px);
5
+ z-index: 10000;
6
+ pointer-events: none;
7
+ }
8
+
9
+ .watermark-link {
10
+ pointer-events: auto;
11
+ display: inline-flex;
12
+ align-items: center;
13
+ padding: 4px 8px;
14
+ border-radius: var(--kritzel-watermark-border-radius, 6px);
15
+ font-family: var(--kritzel-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
16
+ font-size: var(--kritzel-watermark-font-size, 11px);
17
+ line-height: 1;
18
+ text-decoration: none;
19
+ color: var(--kritzel-watermark-color, rgba(60, 60, 60, 0.75));
20
+ background-color: var(--kritzel-watermark-background, rgba(255, 255, 255, 0.6));
21
+ box-shadow: var(--kritzel-watermark-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.12));
22
+ opacity: var(--kritzel-watermark-opacity, 0.85);
23
+ transition: opacity 150ms ease;
24
+ user-select: none;
25
+ }
26
+
27
+ .watermark-link:hover {
28
+ opacity: 1;
29
+ }
@@ -0,0 +1,83 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { KRITZEL_WEBSITE_URL } from "../../constants/engine.constants";
3
+ /**
4
+ * "Powered by Kritzel" watermark shown in the bottom-right corner of the engine
5
+ * when the editor is not licensed.
6
+ *
7
+ * Rendered inside the engine's Shadow DOM and gated by the license manager on
8
+ * the engine's reactive render path, so removing the node simply causes it to
9
+ * reappear on the next render. The badge links to the Kritzel website.
10
+ */
11
+ export class KritzelWatermark {
12
+ /** The core instance used to resolve localized terms. */
13
+ core;
14
+ /**
15
+ * Resolved "Powered by Kritzel" label. Passed in by the engine so the badge
16
+ * re-renders when the active locale changes. Falls back to resolving the term
17
+ * from the core when not provided.
18
+ */
19
+ label;
20
+ render() {
21
+ const label = this.label ?? this.core.localizationManager.translate('watermark.poweredBy');
22
+ return (h(Host, { key: '2bacbc19d9469c7fcaf5d6b1b3133ec14d3ff864' }, h("a", { key: '2de44e340afd092ed388b7575350af1ee9155d58', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
23
+ }
24
+ static get is() { return "kritzel-watermark"; }
25
+ static get encapsulation() { return "shadow"; }
26
+ static get originalStyleUrls() {
27
+ return {
28
+ "$": ["kritzel-watermark.css"]
29
+ };
30
+ }
31
+ static get styleUrls() {
32
+ return {
33
+ "$": ["kritzel-watermark.css"]
34
+ };
35
+ }
36
+ static get properties() {
37
+ return {
38
+ "core": {
39
+ "type": "unknown",
40
+ "mutable": false,
41
+ "complexType": {
42
+ "original": "KritzelCore",
43
+ "resolved": "KritzelCore",
44
+ "references": {
45
+ "KritzelCore": {
46
+ "location": "import",
47
+ "path": "../../classes/core/core.class",
48
+ "id": "src/classes/core/core.class.ts::KritzelCore",
49
+ "referenceLocation": "KritzelCore"
50
+ }
51
+ }
52
+ },
53
+ "required": true,
54
+ "optional": false,
55
+ "docs": {
56
+ "tags": [],
57
+ "text": "The core instance used to resolve localized terms."
58
+ },
59
+ "getter": false,
60
+ "setter": false
61
+ },
62
+ "label": {
63
+ "type": "string",
64
+ "mutable": false,
65
+ "complexType": {
66
+ "original": "string",
67
+ "resolved": "string",
68
+ "references": {}
69
+ },
70
+ "required": false,
71
+ "optional": true,
72
+ "docs": {
73
+ "tags": [],
74
+ "text": "Resolved \"Powered by Kritzel\" label. Passed in by the engine so the badge\r\nre-renders when the active locale changes. Falls back to resolving the term\r\nfrom the core when not provided."
75
+ },
76
+ "getter": false,
77
+ "setter": false,
78
+ "reflect": false,
79
+ "attribute": "label"
80
+ }
81
+ };
82
+ }
83
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Default asset storage configuration. Stores bytes in IndexedDB only,
3
+ * which provides offline-friendly behavior out of the box. Applications
4
+ * that sync Yjs over the network should also configure a remote provider
5
+ * (e.g. HttpAssetProvider) so images are available across devices.
6
+ */
7
+ export const DEFAULT_ASSET_STORAGE_CONFIG = {
8
+ providers: [],
9
+ };
@@ -0,0 +1,9 @@
1
+ import { DEFAULT_COLOR_PALETTE } from "../constants/color-palette.constants";
2
+ import { DEFAULT_STROKE_SIZES } from "../constants/stroke-size.constants";
3
+ export const DEFAULT_BRUSH_CONFIG = {
4
+ color: DEFAULT_COLOR_PALETTE[0],
5
+ size: 16,
6
+ opacity: 1,
7
+ palette: [...DEFAULT_COLOR_PALETTE],
8
+ sizes: [...DEFAULT_STROKE_SIZES],
9
+ };
@@ -0,0 +1,73 @@
1
+ export const DEFAULT_ENGINE_CONFIG = {
2
+ activeWorkspace: undefined,
3
+ activeTool: null,
4
+ objects: null,
5
+ snapCandidate: null,
6
+ snapPreviewCandidate: null,
7
+ resizeHandleType: null,
8
+ lineHandleType: null,
9
+ hasViewportChanged: false,
10
+ hasObjectsChanged: false,
11
+ isReady: false,
12
+ isEnabled: true,
13
+ isScaling: false,
14
+ isPanning: false,
15
+ isSelecting: false,
16
+ isResizing: false,
17
+ isResizeHandleHovered: false,
18
+ isResizeHandleSelected: false,
19
+ isRotating: false,
20
+ isRotationHandleHovered: false,
21
+ isRotationHandleSelected: false,
22
+ isLineHandleSelected: false,
23
+ isLineHandleDragging: false,
24
+ isDragging: false,
25
+ isDrawing: false,
26
+ isErasing: false,
27
+ isWriting: false,
28
+ isLoading: false,
29
+ isCtrlKeyPressed: false,
30
+ isContextMenuVisible: false,
31
+ contextMenuItems: [],
32
+ contextMenuX: 0,
33
+ contextMenuY: 0,
34
+ contextMenuWorldX: 0,
35
+ contextMenuWorldY: 0,
36
+ skipContextMenu: false,
37
+ debugInfo: {
38
+ showObjectInfo: false,
39
+ showViewportInfo: false,
40
+ showSyncProviderInfo: false,
41
+ showAssetResolverInfo: false,
42
+ showMigrationInfo: false,
43
+ },
44
+ host: null,
45
+ pointerX: 0,
46
+ pointerY: 0,
47
+ scale: 1,
48
+ scaleMax: 1,
49
+ scaleMin: 1,
50
+ startX: 0,
51
+ startY: 0,
52
+ translateX: 0,
53
+ translateXMax: 400,
54
+ translateXMin: 0,
55
+ translateY: 0,
56
+ translateYMax: 400,
57
+ translateYMin: 0,
58
+ viewportWidth: 0,
59
+ viewportHeight: 0,
60
+ longTouchTimeout: null,
61
+ longTouchDelay: 300,
62
+ pointers: new Map(),
63
+ workspaces: [],
64
+ cursor: {
65
+ icon: 'default',
66
+ iconActive: 'default'
67
+ },
68
+ lockDrawingScale: true,
69
+ viewportBoundaryLeft: -Infinity,
70
+ viewportBoundaryRight: Infinity,
71
+ viewportBoundaryTop: -Infinity,
72
+ viewportBoundaryBottom: Infinity
73
+ };
@@ -0,0 +1,12 @@
1
+ import { DEFAULT_COLOR_PALETTE } from "../constants/color-palette.constants";
2
+ import { DEFAULT_STROKE_SIZES } from "../constants/stroke-size.constants";
3
+ export const DEFAULT_LINE_TOOL_CONFIG = {
4
+ color: DEFAULT_COLOR_PALETTE[0],
5
+ size: 4,
6
+ opacity: 1,
7
+ palette: [...DEFAULT_COLOR_PALETTE],
8
+ sizes: [...DEFAULT_STROKE_SIZES],
9
+ arrows: {
10
+ end: { enabled: true, style: 'triangle' },
11
+ },
12
+ };
@@ -0,0 +1,15 @@
1
+ import { ShapeType } from "../enums/shape-type.enum";
2
+ import { DEFAULT_COLOR_PALETTE } from "../constants/color-palette.constants";
3
+ import { DEFAULT_STROKE_SIZES } from "../constants/stroke-size.constants";
4
+ export const DEFAULT_SHAPE_CONFIG = {
5
+ shapeType: ShapeType.Rectangle,
6
+ fillColor: { light: 'transparent', dark: 'transparent' },
7
+ strokeColor: DEFAULT_COLOR_PALETTE[0],
8
+ strokeWidth: 4,
9
+ opacity: 1,
10
+ fontColor: DEFAULT_COLOR_PALETTE[0],
11
+ fontSize: 16,
12
+ fontFamily: 'Arial',
13
+ palette: [...DEFAULT_COLOR_PALETTE],
14
+ sizes: [...DEFAULT_STROKE_SIZES],
15
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Default sync configuration - None
3
+ */
4
+ export const DEFAULT_SYNC_CONFIG = {
5
+ providers: [],
6
+ };
@@ -0,0 +1,12 @@
1
+ import { DEFAULT_COLOR_PALETTE } from "../constants/color-palette.constants";
2
+ import { DEFAULT_FONT_SIZES } from "../constants/stroke-size.constants";
3
+ import { DEFAULT_TEXT_TOOL_AVAILABLE_FONTS } from "../constants/text-tool-fonts.constants";
4
+ export const DEFAULT_TEXT_CONFIG = {
5
+ color: DEFAULT_COLOR_PALETTE[0],
6
+ size: 8,
7
+ opacity: 1,
8
+ fontFamily: 'Arial',
9
+ availableFonts: [...DEFAULT_TEXT_TOOL_AVAILABLE_FONTS],
10
+ palette: [...DEFAULT_COLOR_PALETTE],
11
+ sizes: [...DEFAULT_FONT_SIZES],
12
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Helper function to resolve a color value for a specific theme
3
+ */
4
+ export function resolveColor(color, theme) {
5
+ if (theme in color && color[theme]) {
6
+ return color[theme];
7
+ }
8
+ return color[theme === 'dark' ? 'dark' : 'light'];
9
+ }
10
+ /**
11
+ * Default color palette shared across all tool configurations.
12
+ * This ensures consistency in color options throughout the application.
13
+ * All colors support theme-specific variations.
14
+ */
15
+ export const DEFAULT_COLOR_PALETTE = [
16
+ { light: '#000000', dark: '#ffffff', label: 'Primary' },
17
+ { light: '#ff5252', dark: '#ff5252' },
18
+ { light: '#ffbc00', dark: '#ffbc00' },
19
+ { light: '#00c853', dark: '#00c853' },
20
+ { light: '#0000FF', dark: '#0000FF' },
21
+ { light: '#d500f9', dark: '#d500f9' },
22
+ { light: '#fafafa', dark: '#212121', label: 'Background' },
23
+ { light: '#a52714', dark: '#a52714' },
24
+ { light: '#ee8100', dark: '#ee8100' },
25
+ { light: '#558b2f', dark: '#558b2f' },
26
+ { light: '#01579b', dark: '#01579b' },
27
+ { light: '#8e24aa', dark: '#8e24aa' },
28
+ { light: '#90a4ae', dark: '#607d8b', label: 'Neutral' },
29
+ { light: '#ff4081', dark: '#ff4081' },
30
+ { light: '#ff6e40', dark: '#ff6e40' },
31
+ { light: '#aeea00', dark: '#aeea00' },
32
+ { light: '#304ffe', dark: '#304ffe' },
33
+ { light: '#7c4dff', dark: '#7c4dff' },
34
+ { light: '#cfd8dc', dark: '#455a64' },
35
+ { light: '#f8bbd0', dark: '#ec407a' },
36
+ { light: '#ffccbc', dark: '#ff7043' },
37
+ { light: '#f0f4c3', dark: '#c0ca33' },
38
+ { light: '#9fa8da', dark: '#5c6bc0' },
39
+ { light: '#d1c4e9', dark: '#9575cd' },
40
+ ];
@@ -0,0 +1 @@
1
+ // YJS_DOCUMENT_NAME removed - now each workspace has its own Y.Doc with naming: 'kritzel-workspace-${workspaceId}'
@@ -0,0 +1,4 @@
1
+ export const ABSOLUTE_SCALE_MAX = 1000;
2
+ export const ABSOLUTE_SCALE_MIN = 0.0001;
3
+ /** Destination opened when the "Powered by Kritzel" watermark is clicked. */
4
+ export const KRITZEL_WEBSITE_URL = 'https://kritzel.io';
@@ -0,0 +1,25 @@
1
+ /**
2
+ * License verification constants.
3
+ *
4
+ * Kritzel licenses are offline Ed25519 signed tokens. The owner signs each
5
+ * customer's token with a private key that never leaves their machine
6
+ * (see scripts/license/); the library verifies tokens against the public key
7
+ * below. The public key is safe to ship — it can only *verify* signatures,
8
+ * never forge them.
9
+ */
10
+ /**
11
+ * Token format version prefix. A valid license key looks like:
12
+ *
13
+ * KRTZL1.<base64url(payload JSON)>.<base64url(ed25519 signature)>
14
+ *
15
+ * Bump the version (and this prefix) if the token scheme ever changes.
16
+ */
17
+ export const KRITZEL_LICENSE_TOKEN_PREFIX = 'KRTZL1.';
18
+ /**
19
+ * Raw 32-byte Ed25519 public key (base64url) used to verify license tokens.
20
+ *
21
+ * Generate the matching key pair with `npm run license:keygen` and paste the
22
+ * printed public key here. Replacing this value invalidates every license
23
+ * signed with the previous key.
24
+ */
25
+ export const KRITZEL_LICENSE_PUBLIC_KEY = '2IwZDin-qV3kOt8SEQCqdaJsGT9S7tAGapUYJVnVGQo';
@@ -0,0 +1,4 @@
1
+ /** Current schema version for the app-state Y.Doc (workspace list & settings). */
2
+ export const CURRENT_APP_STATE_SCHEMA_VERSION = 2;
3
+ /** Current schema version for workspace Y.Docs (drawable objects). */
4
+ export const CURRENT_WORKSPACE_SCHEMA_VERSION = 3;
@@ -0,0 +1 @@
1
+ export const APP_STATE_INSTANCE_ID_STORAGE_KEY = 'kritzel-app-state-instance-id';
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_STROKE_SIZES = [4, 6, 8, 12, 16, 24];
2
+ export const DEFAULT_FONT_SIZES = [8, 10, 12, 16, 20, 24];
@@ -0,0 +1,18 @@
1
+ export const DEFAULT_TEXT_TOOL_AVAILABLE_FONTS = [
2
+ 'Arial',
3
+ 'Verdana',
4
+ 'Helvetica',
5
+ 'Tahoma',
6
+ 'Trebuchet MS',
7
+ 'Times New Roman',
8
+ 'Georgia',
9
+ 'Garamond',
10
+ 'Courier New',
11
+ 'Brush Script MT',
12
+ ];
13
+ export const resolveTextToolAvailableFonts = (availableFonts) => {
14
+ if (!availableFonts || availableFonts.length === 0) {
15
+ return [...DEFAULT_TEXT_TOOL_AVAILABLE_FONTS];
16
+ }
17
+ return [...availableFonts];
18
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The current version of the Kritzel library.
3
+ * This file is auto-generated by the version bump scripts.
4
+ * Do not modify manually.
5
+ */
6
+ export const KRITZEL_VERSION = '0.4.31';
@@ -0,0 +1,9 @@
1
+ export var KritzelAlignment;
2
+ (function (KritzelAlignment) {
3
+ KritzelAlignment["StartHorizontal"] = "start-horizontal";
4
+ KritzelAlignment["CenterHorizontal"] = "center-horizontal";
5
+ KritzelAlignment["EndHorizontal"] = "end-horizontal";
6
+ KritzelAlignment["StartVertical"] = "start-vertical";
7
+ KritzelAlignment["CenterVertical"] = "center-vertical";
8
+ KritzelAlignment["EndVertical"] = "end-vertical";
9
+ })(KritzelAlignment || (KritzelAlignment = {}));
@@ -0,0 +1,6 @@
1
+ export var KritzelMouseButton;
2
+ (function (KritzelMouseButton) {
3
+ KritzelMouseButton[KritzelMouseButton["Left"] = 0] = "Left";
4
+ KritzelMouseButton[KritzelMouseButton["Middle"] = 1] = "Middle";
5
+ KritzelMouseButton[KritzelMouseButton["Right"] = 2] = "Right";
6
+ })(KritzelMouseButton || (KritzelMouseButton = {}));
@@ -0,0 +1,7 @@
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 = {}));
@@ -0,0 +1,6 @@
1
+ export var ShapeType;
2
+ (function (ShapeType) {
3
+ ShapeType["Rectangle"] = "rectangle";
4
+ ShapeType["Ellipse"] = "ellipse";
5
+ ShapeType["Triangle"] = "triangle";
6
+ })(ShapeType || (ShapeType = {}));
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ import { KritzelAlignment } from "../enums/alignment.enum";
2
+ /**
3
+ * Helper class for aligning objects within a selection group.
4
+ */
5
+ export class AlignmentHelper {
6
+ /**
7
+ * Calculates the selection bounds from all objects' rotated bounding boxes.
8
+ */
9
+ static calculateSelectionBounds(objects) {
10
+ const bounds = objects.map(obj => obj.rotatedBoundingBox);
11
+ return {
12
+ minX: Math.min(...bounds.map(b => b.x)),
13
+ minY: Math.min(...bounds.map(b => b.y)),
14
+ maxX: Math.max(...bounds.map(b => b.x + b.width)),
15
+ maxY: Math.max(...bounds.map(b => b.y + b.height)),
16
+ };
17
+ }
18
+ /**
19
+ * Calculates the new translate positions for each object based on the alignment type.
20
+ * @param objects The objects to align
21
+ * @param alignment The alignment type
22
+ * @returns A map of object IDs to their new translateX and translateY values
23
+ */
24
+ static calculateAlignedPositions(objects, alignment) {
25
+ const result = new Map();
26
+ if (objects.length < 2) {
27
+ return result;
28
+ }
29
+ const selectionBounds = this.calculateSelectionBounds(objects);
30
+ for (const obj of objects) {
31
+ const objBounds = obj.rotatedBoundingBox;
32
+ let newTranslateX = obj.translateX;
33
+ let newTranslateY = obj.translateY;
34
+ // Calculate the offset between the object's translateX/Y and its rotated bounding box position
35
+ const offsetX = objBounds.x - obj.translateX;
36
+ const offsetY = objBounds.y - obj.translateY;
37
+ switch (alignment) {
38
+ case KritzelAlignment.StartHorizontal:
39
+ // Align left edges to selection's left edge
40
+ newTranslateX = selectionBounds.minX - offsetX;
41
+ break;
42
+ case KritzelAlignment.CenterHorizontal:
43
+ // Align centers horizontally
44
+ const selectionCenterX = (selectionBounds.minX + selectionBounds.maxX) / 2;
45
+ const objCenterX = objBounds.x + objBounds.width / 2;
46
+ newTranslateX = obj.translateX + (selectionCenterX - objCenterX);
47
+ break;
48
+ case KritzelAlignment.EndHorizontal:
49
+ // Align right edges to selection's right edge
50
+ const objRightEdge = objBounds.x + objBounds.width;
51
+ newTranslateX = obj.translateX + (selectionBounds.maxX - objRightEdge);
52
+ break;
53
+ case KritzelAlignment.StartVertical:
54
+ // Align top edges to selection's top edge
55
+ newTranslateY = selectionBounds.minY - offsetY;
56
+ break;
57
+ case KritzelAlignment.CenterVertical:
58
+ // Align centers vertically
59
+ const selectionCenterY = (selectionBounds.minY + selectionBounds.maxY) / 2;
60
+ const objCenterY = objBounds.y + objBounds.height / 2;
61
+ newTranslateY = obj.translateY + (selectionCenterY - objCenterY);
62
+ break;
63
+ case KritzelAlignment.EndVertical:
64
+ // Align bottom edges to selection's bottom edge
65
+ const objBottomEdge = objBounds.y + objBounds.height;
66
+ newTranslateY = obj.translateY + (selectionBounds.maxY - objBottomEdge);
67
+ break;
68
+ }
69
+ result.set(obj.id, { translateX: newTranslateX, translateY: newTranslateY });
70
+ }
71
+ return result;
72
+ }
73
+ }
@@ -0,0 +1,5 @@
1
+ export class KritzelClassHelper {
2
+ static isInstanceOf(object, className) {
3
+ return !!object && object.__class__ === className;
4
+ }
5
+ }