@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,77 @@
1
+ export class ThemeHelper {
2
+ static appliedVariableNames = new WeakMap();
3
+ /**
4
+ * Converts a camelCase string to kebab-case.
5
+ * @example ThemeHelper.camelToKebab('controlHoverBackgroundColor') → 'control-hover-background-color'
6
+ * @example ThemeHelper.camelToKebab('backgroundColor') → 'background-color'
7
+ * @example ThemeHelper.camelToKebab('gap') → 'gap'
8
+ */
9
+ static camelToKebab(str) {
10
+ return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
11
+ }
12
+ /**
13
+ * Recursively flattens a theme object into a map of CSS variable names to values.
14
+ * Skips the 'name' property at the root level since it's the theme identifier, not a CSS value.
15
+ *
16
+ * @param theme - The theme object to flatten
17
+ * @param prefix - The CSS variable prefix (default: '--kritzel')
18
+ * @returns A Map of CSS variable names to their values
19
+ *
20
+ * @example
21
+ * ThemeHelper.flattenThemeToVariables(lightTheme)
22
+ * // Returns Map {
23
+ * // '--kritzel-global-pointer-cursor' => 'pointer',
24
+ * // '--kritzel-toolbar-gap' => '8px',
25
+ * // ...
26
+ * // }
27
+ */
28
+ static flattenThemeToVariables(theme, prefix = '--kritzel') {
29
+ const variables = new Map();
30
+ const recurse = (obj, currentPrefix, isRoot = false) => {
31
+ for (const [key, value] of Object.entries(obj)) {
32
+ // Skip the 'name' property at the root level
33
+ if (isRoot && key === 'name') {
34
+ continue;
35
+ }
36
+ const kebabKey = ThemeHelper.camelToKebab(key);
37
+ const variableName = `${currentPrefix}-${kebabKey}`;
38
+ if (typeof value === 'object' && value !== null) {
39
+ recurse(value, variableName);
40
+ }
41
+ else if (typeof value === 'string') {
42
+ variables.set(variableName, value);
43
+ }
44
+ }
45
+ };
46
+ recurse(theme, prefix, true);
47
+ return variables;
48
+ }
49
+ /**
50
+ * Applies a map of CSS variables to an HTML element.
51
+ *
52
+ * @param element - The target HTML element
53
+ * @param variables - A Map of CSS variable names to values
54
+ */
55
+ static applyVariablesToElement(element, variables) {
56
+ for (const [name, value] of variables) {
57
+ element.style.setProperty(name, value);
58
+ }
59
+ }
60
+ /**
61
+ * Convenience method that flattens a theme and applies it to an element in one call.
62
+ *
63
+ * @param element - The target HTML element
64
+ * @param theme - The theme object to apply
65
+ */
66
+ static applyThemeToElement(element, theme) {
67
+ const variables = ThemeHelper.flattenThemeToVariables(theme);
68
+ const previousVariableNames = ThemeHelper.appliedVariableNames.get(element);
69
+ for (const name of previousVariableNames ?? []) {
70
+ if (!variables.has(name)) {
71
+ element.style.removeProperty(name);
72
+ }
73
+ }
74
+ ThemeHelper.applyVariablesToElement(element, variables);
75
+ ThemeHelper.appliedVariableNames.set(element, new Set(variables.keys()));
76
+ }
77
+ }
@@ -0,0 +1,63 @@
1
+ export class KritzelToolConfigHelper {
2
+ static getToolConfig(tool) {
3
+ switch (tool?.toolType) {
4
+ case 'selection':
5
+ return 'getToolConfig' in tool && typeof tool.getToolConfig === 'function'
6
+ ? tool.getToolConfig()
7
+ : null;
8
+ case 'brush':
9
+ return {
10
+ type: 'brush',
11
+ colorProperty: 'color',
12
+ sizeProperty: 'size',
13
+ opacityProperty: 'opacity',
14
+ paletteSource: 'palette',
15
+ sizesSource: 'sizes',
16
+ controls: [
17
+ { type: 'stroke-size', propertyName: 'size' },
18
+ ],
19
+ };
20
+ case 'line':
21
+ return {
22
+ type: 'line',
23
+ colorProperty: 'color',
24
+ sizeProperty: 'size',
25
+ opacityProperty: 'opacity',
26
+ paletteSource: 'palette',
27
+ sizesSource: 'sizes',
28
+ controls: [
29
+ { type: 'stroke-size', propertyName: 'size' },
30
+ { type: 'line-endings', propertyName: 'arrows', additionalProps: {} },
31
+ ],
32
+ };
33
+ case 'shape':
34
+ return {
35
+ type: 'shape',
36
+ colorProperty: 'strokeColor',
37
+ sizeProperty: 'strokeWidth',
38
+ opacityProperty: 'opacity',
39
+ paletteSource: 'palette',
40
+ sizesSource: 'sizes',
41
+ controls: [
42
+ { type: 'stroke-size', propertyName: 'strokeWidth' },
43
+ { type: 'shape-fill', propertyName: 'fillColor', additionalProps: {} },
44
+ ],
45
+ };
46
+ case 'text':
47
+ return {
48
+ type: 'text',
49
+ colorProperty: 'fontColor',
50
+ sizeProperty: 'fontSize',
51
+ opacityProperty: 'opacity',
52
+ paletteSource: 'palette',
53
+ sizesSource: 'sizes',
54
+ controls: [
55
+ { type: 'font-size', propertyName: 'fontSize', additionalProps: {} },
56
+ { type: 'font-family', propertyName: 'fontFamily' },
57
+ ],
58
+ };
59
+ default:
60
+ return null;
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,113 @@
1
+ export class KritzelWheelHelper {
2
+ static shouldKeepWheelInDynamicObject(ev, dynamicObject) {
3
+ // Keep Ctrl+wheel available for viewport zoom gestures.
4
+ if (ev.ctrlKey || dynamicObject.isSelected !== true) {
5
+ return false;
6
+ }
7
+ const path = typeof ev.composedPath === 'function' ? ev.composedPath() : [];
8
+ const scrollContainer = this.getScrollableContainerFromEventPath(path, dynamicObject);
9
+ // No scroll container found inside the dynamic object: let the wheel
10
+ // event pass through so the viewport can continue handling it.
11
+ if (!scrollContainer) {
12
+ return false;
13
+ }
14
+ return this.canElementConsumeWheel(scrollContainer, ev.deltaX, ev.deltaY);
15
+ }
16
+ static getScrollableContainerFromEventPath(path, dynamicObject) {
17
+ const potentialRoots = [];
18
+ if (dynamicObject.element instanceof HTMLElement) {
19
+ potentialRoots.push(dynamicObject.element);
20
+ }
21
+ if (dynamicObject.elementRef instanceof HTMLElement) {
22
+ potentialRoots.push(dynamicObject.elementRef);
23
+ }
24
+ const legacyElementRef = dynamicObject.elmeentRef;
25
+ if (legacyElementRef instanceof HTMLElement) {
26
+ potentialRoots.push(legacyElementRef);
27
+ }
28
+ for (const root of potentialRoots) {
29
+ const rootIndex = path.findIndex(entry => entry === root);
30
+ if (rootIndex === -1) {
31
+ continue;
32
+ }
33
+ for (const entry of path.slice(0, rootIndex + 1)) {
34
+ if (!(entry instanceof HTMLElement)) {
35
+ continue;
36
+ }
37
+ if (this.isScrollableElement(entry)) {
38
+ return entry;
39
+ }
40
+ }
41
+ }
42
+ // Fallback for synthetic/custom wheel events where composedPath is absent
43
+ // or does not include the dynamic-object subtree.
44
+ for (const root of potentialRoots) {
45
+ if (this.isScrollableElement(root)) {
46
+ return root;
47
+ }
48
+ const firstChild = root.firstElementChild;
49
+ if (firstChild instanceof HTMLElement && this.isScrollableElement(firstChild)) {
50
+ return firstChild;
51
+ }
52
+ }
53
+ return null;
54
+ }
55
+ static isScrollableElement(element) {
56
+ const canScrollVertically = element.scrollHeight - element.clientHeight > 0;
57
+ const canScrollHorizontally = element.scrollWidth - element.clientWidth > 0;
58
+ if (!canScrollVertically && !canScrollHorizontally) {
59
+ return false;
60
+ }
61
+ const computedStyle = window.getComputedStyle(element);
62
+ const overflowX = computedStyle.overflowX;
63
+ const overflowY = computedStyle.overflowY;
64
+ const allowsVerticalScroll = overflowY !== 'visible' && overflowY !== 'clip';
65
+ const allowsHorizontalScroll = overflowX !== 'visible' && overflowX !== 'clip';
66
+ return (canScrollVertically && allowsVerticalScroll) || (canScrollHorizontally && allowsHorizontalScroll);
67
+ }
68
+ static canElementConsumeWheel(element, deltaX, deltaY) {
69
+ const canConsumeVertical = this.canElementConsumeVerticalWheel(element, deltaY);
70
+ const canConsumeHorizontal = this.canElementConsumeHorizontalWheel(element, deltaX);
71
+ // Keep wheel events inside the dynamic object whenever at least one
72
+ // requested axis can still be consumed by its scroll container.
73
+ return canConsumeVertical || canConsumeHorizontal;
74
+ }
75
+ static canElementConsumeVerticalWheel(element, deltaY) {
76
+ if (deltaY === 0) {
77
+ return false;
78
+ }
79
+ const maxScrollTop = Math.max(0, element.scrollHeight - element.clientHeight);
80
+ if (maxScrollTop === 0) {
81
+ return false;
82
+ }
83
+ const epsilon = 1;
84
+ const scrollingDown = deltaY > 0;
85
+ const scrollingUp = deltaY < 0;
86
+ if (scrollingDown) {
87
+ return element.scrollTop < maxScrollTop - epsilon;
88
+ }
89
+ if (scrollingUp) {
90
+ return element.scrollTop > epsilon;
91
+ }
92
+ return false;
93
+ }
94
+ static canElementConsumeHorizontalWheel(element, deltaX) {
95
+ if (deltaX === 0) {
96
+ return false;
97
+ }
98
+ const maxScrollLeft = Math.max(0, element.scrollWidth - element.clientWidth);
99
+ if (maxScrollLeft === 0) {
100
+ return false;
101
+ }
102
+ const epsilon = 1;
103
+ const scrollingRight = deltaX > 0;
104
+ const scrollingLeft = deltaX < 0;
105
+ if (scrollingRight) {
106
+ return element.scrollLeft < maxScrollLeft - epsilon;
107
+ }
108
+ if (scrollingLeft) {
109
+ return element.scrollLeft > epsilon;
110
+ }
111
+ return false;
112
+ }
113
+ }
@@ -0,0 +1,107 @@
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/base-object.class';
11
+ export * from './classes/objects/text.class';
12
+ export * from './classes/objects/path.class';
13
+ export * from './classes/objects/image.class';
14
+ export * from './classes/objects/line.class';
15
+ export * from './classes/objects/group.class';
16
+ export * from './classes/objects/shape.class';
17
+ export * from './classes/objects/dynamic-object.class';
18
+ export * from './classes/objects/selection-group.class';
19
+ export * from './classes/objects/selection-box.class';
20
+ export * from './classes/tools/base-tool.class';
21
+ export * from './classes/tools/brush-tool.class';
22
+ export * from './classes/tools/line-tool.class';
23
+ export * from './classes/tools/eraser-tool.class';
24
+ export * from './classes/tools/image-tool.class';
25
+ export * from './classes/tools/text-tool.class';
26
+ export * from './classes/tools/shape-tool.class';
27
+ export * from './helpers/cursor.helper';
28
+ export * from './helpers/keyboard.helper';
29
+ export * from './helpers/devices.helper';
30
+ export * from './helpers/theme.helper';
31
+ export * from './helpers/object.helper';
32
+ export * from './helpers/color.helper';
33
+ export * from './helpers/html.helper';
34
+ export * from './helpers/tool-config.helper';
35
+ export * from './classes/tools/selection-tool.class';
36
+ export * from './classes/providers/sync/broadcast-sync-provider.class';
37
+ export * from './classes/providers/sync/in-memory-sync-provider.class';
38
+ export * from './classes/providers/sync/indexeddb-sync-provider.class';
39
+ export * from './classes/providers/sync/websocket-sync-provider.class';
40
+ export * from './classes/providers/sync/hocuspocus-sync-provider.class';
41
+ export * from './classes/providers/assets/asset-resolver.class';
42
+ export * from './classes/providers/assets/indexeddb-asset-provider.class';
43
+ export * from './classes/providers/assets/http-asset-provider.class';
44
+ export * from './classes/providers/assets/presigned-asset-provider.class';
45
+ export * from './classes/core/workspace.class';
46
+ export * from './classes/managers/anchor.manager';
47
+ export * from './classes/managers/theme.manager';
48
+ export * from './classes/managers/localization.manager';
49
+ export * from './classes/managers/license.manager';
50
+ export * from './classes/registries/dynamic-object-renderer.registry';
51
+ export * from './classes/registries/font-registry.class';
52
+ export * from './classes/registries/icon-registry.class';
53
+ export * from './interfaces/toolbar-item.interface';
54
+ export * from './interfaces/menu-item.interface';
55
+ export * from './interfaces/object-export.interface';
56
+ export * from './interfaces/object-change-event.interface';
57
+ export * from './interfaces/dynamic-object-renderer.interface';
58
+ export * from './interfaces/sync-provider.interface';
59
+ export * from './interfaces/sync-config.interface';
60
+ export * from './interfaces/asset.interface';
61
+ export * from './interfaces/asset-provider.interface';
62
+ export * from './interfaces/asset-storage-config.interface';
63
+ export * from './interfaces/login-config.interface';
64
+ export * from './interfaces/document-metadata.interface';
65
+ export * from './interfaces/anchor.interface';
66
+ export * from './interfaces/viewport-state.interface';
67
+ export * from './interfaces/context-menu-state.interface';
68
+ export * from './interfaces/user.interface';
69
+ export * from './interfaces/theme.interface';
70
+ export * from './interfaces/localization.interface';
71
+ export * from './interfaces/shortcut.interface';
72
+ export * from './interfaces/share.interface';
73
+ export * from './interfaces/engine-state.interface';
74
+ export * from './interfaces/debug-info.interface';
75
+ export * from './interfaces/bounding-box.interface';
76
+ export * from './interfaces/polygon.interface';
77
+ export * from './interfaces/font.interface';
78
+ export * from './interfaces/settings.interface';
79
+ export * from './interfaces/dialog.interface';
80
+ export * from './interfaces/master-detail.interface';
81
+ export * from './interfaces/tool-config.interface';
82
+ export * from './interfaces/arrow-head.interface';
83
+ export * from './events/active-workspace-change.event';
84
+ export * from './events/editor-is-ready.event';
85
+ export * from './events/login.event';
86
+ export * from './configs/default-brush-tool.config';
87
+ export * from './configs/default-text-tool.config';
88
+ export * from './configs/default-line-tool.config';
89
+ export * from './configs/default-shape-tool.config';
90
+ export * from './configs/default-asset-storage.config';
91
+ export * from './configs/default-sync.config';
92
+ export * from './themes/light-theme';
93
+ export * from './themes/dark-theme';
94
+ export * from './locales/en-locale';
95
+ export * from './locales/de-locale';
96
+ export * from './locales/fr-locale';
97
+ export * from './enums/alignment.enum';
98
+ export * from './enums/shape-type.enum';
99
+ export * from './interfaces/migration.interface';
100
+ export * from './helpers/migration.helper';
101
+ export * from './migrations/app-state.migrations';
102
+ export * from './migrations/workspace.migrations';
103
+ export * from './constants/schema.constants';
104
+ export * from './constants/color-palette.constants';
105
+ export * from './constants/text-tool-fonts.constants';
106
+ export * from './constants/engine.constants';
107
+ export * from './constants/version';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Returns the provider type (`'local'` or `'network'`) for a given provider config entry.
3
+ * Works for both class constructors (via a static `type` property) and
4
+ * factory objects (via an optional `type` property on the factory).
5
+ */
6
+ function getProviderConfigType(config) {
7
+ if (typeof config === 'function') {
8
+ return config.type;
9
+ }
10
+ return config.type;
11
+ }
12
+ /**
13
+ * Returns `true` when the given sync configuration contains at least one remote
14
+ * (network) provider, meaning the share option should be available in the UI.
15
+ */
16
+ export function hasRemoteSyncProvider(syncConfig) {
17
+ if (!syncConfig?.providers?.length) {
18
+ return false;
19
+ }
20
+ return syncConfig.providers.some(p => getProviderConfigType(p) === 'network');
21
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};