@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,119 @@
1
+ /**
2
+ * Built-in German locale.
3
+ */
4
+ export const DE_LOCALE = {
5
+ code: 'de',
6
+ label: 'Deutsch',
7
+ terms: {
8
+ // Context menu
9
+ 'menu.copy': 'Kopieren',
10
+ 'menu.cut': 'Ausschneiden',
11
+ 'menu.paste': 'Einfügen',
12
+ 'menu.selectAll': 'Alles auswählen',
13
+ 'menu.order': 'Anordnen',
14
+ 'menu.bringToFront': 'In den Vordergrund',
15
+ 'menu.sendToBack': 'In den Hintergrund',
16
+ 'menu.moveUp': 'Nach vorne',
17
+ 'menu.moveDown': 'Nach hinten',
18
+ 'menu.align': 'Ausrichten',
19
+ 'menu.alignLeft': 'Linksbündig ausrichten',
20
+ 'menu.alignCenterHorizontal': 'Horizontal zentrieren',
21
+ 'menu.alignRight': 'Rechtsbündig ausrichten',
22
+ 'menu.alignTop': 'Oben ausrichten',
23
+ 'menu.alignCenterVertical': 'Vertikal zentrieren',
24
+ 'menu.alignBottom': 'Unten ausrichten',
25
+ 'menu.group': 'Gruppieren',
26
+ 'menu.ungroup': 'Gruppierung aufheben',
27
+ 'menu.export': 'Exportieren',
28
+ 'menu.exportAsSvg': 'Als SVG exportieren',
29
+ 'menu.exportAsPng': 'Als PNG exportieren',
30
+ 'menu.delete': 'Löschen',
31
+ // More menu
32
+ 'menu.share': 'Teilen',
33
+ 'menu.import': 'Importieren',
34
+ 'menu.settings': 'Einstellungen',
35
+ 'menu.logout': 'Abmelden',
36
+ // Settings dialog
37
+ 'settings.dialogTitle': 'Einstellungen',
38
+ 'settings.categories.general': 'Allgemein',
39
+ 'settings.categories.viewport': 'Ansichtsfenster',
40
+ 'settings.categories.shortcuts': 'Tastenkürzel',
41
+ 'settings.categories.developer': 'Entwickleroptionen',
42
+ 'settings.categories.about': 'Über',
43
+ 'settings.general.title': 'Allgemeine Einstellungen',
44
+ 'settings.general.theme.label': 'Design',
45
+ 'settings.general.theme.description': 'Wählen Sie ein registriertes Farbdesign für die Editor-Oberfläche.',
46
+ 'settings.general.language.label': 'Sprache',
47
+ 'settings.general.language.description': 'Wählen Sie die Anzeigesprache für die Editor-Oberfläche.',
48
+ 'settings.general.lockDrawingScale.label': 'Zeichenskalierung sperren',
49
+ 'settings.general.lockDrawingScale.description': 'Wenn aktiviert, behalten gezeichnete Objekte unabhängig von der aktuellen Zoomstufe eine feste visuelle Größe.',
50
+ 'settings.viewport.title': 'Ansichtsfenster-Einstellungen',
51
+ 'settings.viewport.minZoom.label': 'Minimale Zoomstufe',
52
+ 'settings.viewport.minZoom.description': 'Legt die minimale Zoomstufe fest. Niedrigere Werte ermöglichen weiteres Herauszoomen, um mehr von der Zeichenfläche zu sehen.',
53
+ 'settings.viewport.maxZoom.label': 'Maximale Zoomstufe',
54
+ 'settings.viewport.maxZoom.description': 'Legt die maximale Zoomstufe fest. Höhere Werte ermöglichen näheres Heranzoomen für Detailarbeit.',
55
+ 'settings.viewport.boundaryLeft.label': 'Ansichtsfenster-Grenze links',
56
+ 'settings.viewport.boundaryLeft.description': 'Linke Grenze in Weltkoordinaten. Legen Sie fest, wie weit das Ansichtsfenster nach links verschoben werden kann.',
57
+ 'settings.viewport.boundaryRight.label': 'Ansichtsfenster-Grenze rechts',
58
+ 'settings.viewport.boundaryRight.description': 'Rechte Grenze in Weltkoordinaten. Legen Sie fest, wie weit das Ansichtsfenster nach rechts verschoben werden kann.',
59
+ 'settings.viewport.boundaryTop.label': 'Ansichtsfenster-Grenze oben',
60
+ 'settings.viewport.boundaryTop.description': 'Obere Grenze in Weltkoordinaten. Legen Sie fest, wie weit das Ansichtsfenster nach oben verschoben werden kann.',
61
+ 'settings.viewport.boundaryBottom.label': 'Ansichtsfenster-Grenze unten',
62
+ 'settings.viewport.boundaryBottom.description': 'Untere Grenze in Weltkoordinaten. Legen Sie fest, wie weit das Ansichtsfenster nach unten verschoben werden kann.',
63
+ 'settings.viewport.boundaryPlaceholder': 'Unendlich',
64
+ 'settings.shortcuts.title': 'Tastenkürzel',
65
+ 'settings.developer.title': 'Entwickleroptionen',
66
+ 'settings.developer.showViewportInfo.label': 'Ansichtsfenster-Infos anzeigen',
67
+ 'settings.developer.showViewportInfo.description': 'Zeigt Debug-Informationen zum Ansichtsfenster an, z. B. Position, Zoomstufe und Grenzen.',
68
+ 'settings.developer.showObjectInfo.label': 'Objekt-Infos anzeigen',
69
+ 'settings.developer.showObjectInfo.description': 'Zeigt Debug-Informationen zu Objekten auf der Zeichenfläche an.',
70
+ 'settings.developer.showSyncProviderInfo.label': 'Sync-Provider-Infos anzeigen',
71
+ 'settings.developer.showSyncProviderInfo.description': 'Zeigt Debug-Informationen zum Verbindungsstatus des Sync-Providers an.',
72
+ 'settings.developer.showMigrationInfo.label': 'Migrations-Infos anzeigen',
73
+ 'settings.developer.showMigrationInfo.description': 'Zeigt Debug-Informationen zu Datenmigrationen an.',
74
+ 'settings.about.title': 'Über',
75
+ 'settings.about.description': 'Kritzel – Eine Zeichenanwendung',
76
+ // Export dialog
77
+ 'export.dialogTitle': 'Exportieren',
78
+ 'export.tabs.viewport': 'Ansichtsfenster exportieren',
79
+ 'export.tabs.workspace': 'Arbeitsbereich exportieren',
80
+ 'export.format.label': 'Format',
81
+ 'export.filename.label': 'Dateiname',
82
+ 'export.filename.placeholder': 'Dateiname eingeben',
83
+ 'export.exportButton': 'Exportieren',
84
+ // Workspace manager
85
+ 'workspace.sharedTooltip': 'Geteilter Arbeitsbereich',
86
+ 'workspace.rename': 'Umbenennen',
87
+ 'workspace.delete': 'Löschen',
88
+ // Zoom panel
89
+ 'zoom.zoomIn': 'Vergrößern',
90
+ 'zoom.zoomOut': 'Verkleinern',
91
+ // Utility panel
92
+ 'utility.undo': 'Rückgängig',
93
+ 'utility.redo': 'Wiederholen',
94
+ 'utility.delete': 'Ausgewählte Elemente löschen',
95
+ // Share dialog
96
+ 'share.dialogTitle': 'Arbeitsbereich teilen',
97
+ 'share.linkSharing.label': 'Link-Freigabe',
98
+ 'share.linkSharing.enabledDescription': 'Jeder mit dem Link kann auf diesen Arbeitsbereich zugreifen.',
99
+ 'share.linkSharing.disabledDescription': 'Die Link-Freigabe ist deaktiviert. Nur Sie können auf diesen Arbeitsbereich zugreifen.',
100
+ 'share.linkSharing.toggleLabel': 'Link-Freigabe aktivieren',
101
+ 'share.copyLink.title': 'Link kopieren',
102
+ 'share.copyLink.copied': 'Kopiert!',
103
+ // Login dialog
104
+ 'login.dialogTitle': 'Anmelden',
105
+ // Current user dialog
106
+ 'currentUser.dialogTitle': 'Konto',
107
+ // Back to content
108
+ 'backToContent.label': 'Zurück zum Inhalt',
109
+ // Tool config
110
+ 'toolConfig.collapse': 'Einklappen',
111
+ 'toolConfig.expand': 'Ausklappen',
112
+ // More menu button
113
+ 'moreMenu.ariaLabel': 'Weitere Optionen',
114
+ // Editor
115
+ 'editor.loading': 'Wird geladen...',
116
+ // Watermark
117
+ 'watermark.poweredBy': 'Bereitgestellt von Kritzel',
118
+ },
119
+ };
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Built-in English locale (default). Provides a complete set of term values
3
+ * that act as the ultimate fallback when other locales omit a key.
4
+ */
5
+ export const EN_LOCALE = {
6
+ code: 'en',
7
+ label: 'English',
8
+ terms: {
9
+ // Context menu
10
+ 'menu.copy': 'Copy',
11
+ 'menu.cut': 'Cut',
12
+ 'menu.paste': 'Paste',
13
+ 'menu.selectAll': 'Select All',
14
+ 'menu.order': 'Order',
15
+ 'menu.bringToFront': 'Bring to Front',
16
+ 'menu.sendToBack': 'Send to Back',
17
+ 'menu.moveUp': 'Move Up',
18
+ 'menu.moveDown': 'Move Down',
19
+ 'menu.align': 'Align',
20
+ 'menu.alignLeft': 'Align Left',
21
+ 'menu.alignCenterHorizontal': 'Align Center Horizontally',
22
+ 'menu.alignRight': 'Align Right',
23
+ 'menu.alignTop': 'Align Top',
24
+ 'menu.alignCenterVertical': 'Align Center Vertically',
25
+ 'menu.alignBottom': 'Align Bottom',
26
+ 'menu.group': 'Group',
27
+ 'menu.ungroup': 'Ungroup',
28
+ 'menu.export': 'Export',
29
+ 'menu.exportAsSvg': 'Export as SVG',
30
+ 'menu.exportAsPng': 'Export as PNG',
31
+ 'menu.delete': 'Delete',
32
+ // More menu
33
+ 'menu.share': 'Share',
34
+ 'menu.import': 'Import',
35
+ 'menu.settings': 'Settings',
36
+ 'menu.logout': 'Logout',
37
+ // Settings dialog
38
+ 'settings.dialogTitle': 'Settings',
39
+ 'settings.categories.general': 'General',
40
+ 'settings.categories.viewport': 'Viewport',
41
+ 'settings.categories.shortcuts': 'Keyboard Shortcuts',
42
+ 'settings.categories.developer': 'Developer Options',
43
+ 'settings.categories.about': 'About',
44
+ 'settings.general.title': 'General Settings',
45
+ 'settings.general.theme.label': 'Theme',
46
+ 'settings.general.theme.description': 'Select a registered color theme for the editor interface.',
47
+ 'settings.general.language.label': 'Language',
48
+ 'settings.general.language.description': 'Select the display language for the editor interface.',
49
+ 'settings.general.lockDrawingScale.label': 'Lock Drawing Scale',
50
+ 'settings.general.lockDrawingScale.description': 'When enabled, drawn objects maintain a fixed visual size regardless of the current zoom level.',
51
+ 'settings.viewport.title': 'Viewport Settings',
52
+ 'settings.viewport.minZoom.label': 'Minimum Zoom Level',
53
+ 'settings.viewport.minZoom.description': 'Sets the minimum zoom level. Lower values allow zooming out further to see more of the canvas.',
54
+ 'settings.viewport.maxZoom.label': 'Maximum Zoom Level',
55
+ 'settings.viewport.maxZoom.description': 'Sets the maximum zoom level. Higher values allow zooming in closer for detailed work.',
56
+ 'settings.viewport.boundaryLeft.label': 'Viewport Boundary Left',
57
+ 'settings.viewport.boundaryLeft.description': 'Left boundary in world coordinates. Set to limit how far left the viewport can pan.',
58
+ 'settings.viewport.boundaryRight.label': 'Viewport Boundary Right',
59
+ 'settings.viewport.boundaryRight.description': 'Right boundary in world coordinates. Set to limit how far right the viewport can pan.',
60
+ 'settings.viewport.boundaryTop.label': 'Viewport Boundary Top',
61
+ 'settings.viewport.boundaryTop.description': 'Top boundary in world coordinates. Set to limit how far up the viewport can pan.',
62
+ 'settings.viewport.boundaryBottom.label': 'Viewport Boundary Bottom',
63
+ 'settings.viewport.boundaryBottom.description': 'Bottom boundary in world coordinates. Set to limit how far down the viewport can pan.',
64
+ 'settings.viewport.boundaryPlaceholder': 'Infinite',
65
+ 'settings.shortcuts.title': 'Keyboard Shortcuts',
66
+ 'settings.developer.title': 'Developer Options',
67
+ 'settings.developer.showViewportInfo.label': 'Show Viewport Info',
68
+ 'settings.developer.showViewportInfo.description': 'Display viewport debug information such as position, zoom level, and boundaries.',
69
+ 'settings.developer.showObjectInfo.label': 'Show Object Info',
70
+ 'settings.developer.showObjectInfo.description': 'Display debug information about objects on the canvas.',
71
+ 'settings.developer.showSyncProviderInfo.label': 'Show Sync Provider Info',
72
+ 'settings.developer.showSyncProviderInfo.description': 'Display debug information about the sync provider connection status.',
73
+ 'settings.developer.showMigrationInfo.label': 'Show Migration Info',
74
+ 'settings.developer.showMigrationInfo.description': 'Display debug information about data migrations.',
75
+ 'settings.about.title': 'About',
76
+ 'settings.about.description': 'Kritzel - A drawing application',
77
+ // Export dialog
78
+ 'export.dialogTitle': 'Export',
79
+ 'export.tabs.viewport': 'Export Viewport',
80
+ 'export.tabs.workspace': 'Export Workspace',
81
+ 'export.format.label': 'Format',
82
+ 'export.filename.label': 'Filename',
83
+ 'export.filename.placeholder': 'Enter filename',
84
+ 'export.exportButton': 'Export',
85
+ // Workspace manager
86
+ 'workspace.sharedTooltip': 'Shared workspace',
87
+ 'workspace.rename': 'Rename',
88
+ 'workspace.delete': 'Delete',
89
+ // Zoom panel
90
+ 'zoom.zoomIn': 'Zoom in',
91
+ 'zoom.zoomOut': 'Zoom out',
92
+ // Utility panel
93
+ 'utility.undo': 'Undo',
94
+ 'utility.redo': 'Redo',
95
+ 'utility.delete': 'Delete selected items',
96
+ // Share dialog
97
+ 'share.dialogTitle': 'Share Workspace',
98
+ 'share.linkSharing.label': 'Link sharing',
99
+ 'share.linkSharing.enabledDescription': 'Anyone with the link can access this workspace.',
100
+ 'share.linkSharing.disabledDescription': 'Link sharing is disabled. Only you can access this workspace.',
101
+ 'share.linkSharing.toggleLabel': 'Enable link sharing',
102
+ 'share.copyLink.title': 'Copy link',
103
+ 'share.copyLink.copied': 'Copied!',
104
+ // Login dialog
105
+ 'login.dialogTitle': 'Sign in',
106
+ // Current user dialog
107
+ 'currentUser.dialogTitle': 'Account',
108
+ // Back to content
109
+ 'backToContent.label': 'Back to content',
110
+ // Tool config
111
+ 'toolConfig.collapse': 'Collapse',
112
+ 'toolConfig.expand': 'Expand',
113
+ // More menu button
114
+ 'moreMenu.ariaLabel': 'More options',
115
+ // Editor
116
+ 'editor.loading': 'Loading...',
117
+ // Watermark
118
+ 'watermark.poweredBy': 'Powered by Kritzel',
119
+ },
120
+ };
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Built-in French locale.
3
+ */
4
+ export const FR_LOCALE = {
5
+ code: 'fr',
6
+ label: 'Français',
7
+ terms: {
8
+ // Context menu
9
+ 'menu.copy': 'Copier',
10
+ 'menu.cut': 'Couper',
11
+ 'menu.paste': 'Coller',
12
+ 'menu.selectAll': 'Tout sélectionner',
13
+ 'menu.order': 'Ordre',
14
+ 'menu.bringToFront': 'Mettre au premier plan',
15
+ 'menu.sendToBack': "Mettre à l'arrière-plan",
16
+ 'menu.moveUp': 'Avancer',
17
+ 'menu.moveDown': 'Reculer',
18
+ 'menu.align': 'Aligner',
19
+ 'menu.alignLeft': 'Aligner à gauche',
20
+ 'menu.alignCenterHorizontal': 'Centrer horizontalement',
21
+ 'menu.alignRight': 'Aligner à droite',
22
+ 'menu.alignTop': 'Aligner en haut',
23
+ 'menu.alignCenterVertical': 'Centrer verticalement',
24
+ 'menu.alignBottom': 'Aligner en bas',
25
+ 'menu.group': 'Grouper',
26
+ 'menu.ungroup': 'Dégrouper',
27
+ 'menu.export': 'Exporter',
28
+ 'menu.exportAsSvg': 'Exporter en SVG',
29
+ 'menu.exportAsPng': 'Exporter en PNG',
30
+ 'menu.delete': 'Supprimer',
31
+ // More menu
32
+ 'menu.share': 'Partager',
33
+ 'menu.import': 'Importer',
34
+ 'menu.settings': 'Paramètres',
35
+ 'menu.logout': 'Déconnexion',
36
+ // Settings dialog
37
+ 'settings.dialogTitle': 'Paramètres',
38
+ 'settings.categories.general': 'Général',
39
+ 'settings.categories.viewport': "Fenêtre d'affichage",
40
+ 'settings.categories.shortcuts': 'Raccourcis clavier',
41
+ 'settings.categories.developer': 'Options développeur',
42
+ 'settings.categories.about': 'À propos',
43
+ 'settings.general.title': 'Paramètres généraux',
44
+ 'settings.general.theme.label': 'Thème',
45
+ 'settings.general.theme.description': "Sélectionnez un thème de couleurs enregistré pour l'interface de l'éditeur.",
46
+ 'settings.general.language.label': 'Langue',
47
+ 'settings.general.language.description': "Sélectionnez la langue d'affichage de l'interface de l'éditeur.",
48
+ 'settings.general.lockDrawingScale.label': "Verrouiller l'échelle de dessin",
49
+ 'settings.general.lockDrawingScale.description': "Lorsque cette option est activée, les objets dessinés conservent une taille visuelle fixe quel que soit le niveau de zoom actuel.",
50
+ 'settings.viewport.title': "Paramètres de la fenêtre d'affichage",
51
+ 'settings.viewport.minZoom.label': 'Niveau de zoom minimal',
52
+ 'settings.viewport.minZoom.description': 'Définit le niveau de zoom minimal. Des valeurs plus faibles permettent de dézoomer davantage pour voir une plus grande partie du canevas.',
53
+ 'settings.viewport.maxZoom.label': 'Niveau de zoom maximal',
54
+ 'settings.viewport.maxZoom.description': 'Définit le niveau de zoom maximal. Des valeurs plus élevées permettent de zoomer davantage pour un travail détaillé.',
55
+ 'settings.viewport.boundaryLeft.label': "Limite gauche de la fenêtre d'affichage",
56
+ 'settings.viewport.boundaryLeft.description': "Limite gauche en coordonnées du monde. Définissez jusqu'où la fenêtre d'affichage peut se déplacer vers la gauche.",
57
+ 'settings.viewport.boundaryRight.label': "Limite droite de la fenêtre d'affichage",
58
+ 'settings.viewport.boundaryRight.description': "Limite droite en coordonnées du monde. Définissez jusqu'où la fenêtre d'affichage peut se déplacer vers la droite.",
59
+ 'settings.viewport.boundaryTop.label': "Limite supérieure de la fenêtre d'affichage",
60
+ 'settings.viewport.boundaryTop.description': "Limite supérieure en coordonnées du monde. Définissez jusqu'où la fenêtre d'affichage peut se déplacer vers le haut.",
61
+ 'settings.viewport.boundaryBottom.label': "Limite inférieure de la fenêtre d'affichage",
62
+ 'settings.viewport.boundaryBottom.description': "Limite inférieure en coordonnées du monde. Définissez jusqu'où la fenêtre d'affichage peut se déplacer vers le bas.",
63
+ 'settings.viewport.boundaryPlaceholder': 'Infini',
64
+ 'settings.shortcuts.title': 'Raccourcis clavier',
65
+ 'settings.developer.title': 'Options développeur',
66
+ 'settings.developer.showViewportInfo.label': "Afficher les infos de la fenêtre d'affichage",
67
+ 'settings.developer.showViewportInfo.description': "Affiche les informations de débogage de la fenêtre d'affichage telles que la position, le niveau de zoom et les limites.",
68
+ 'settings.developer.showObjectInfo.label': 'Afficher les infos des objets',
69
+ 'settings.developer.showObjectInfo.description': 'Affiche les informations de débogage des objets sur le canevas.',
70
+ 'settings.developer.showSyncProviderInfo.label': 'Afficher les infos du fournisseur de synchronisation',
71
+ 'settings.developer.showSyncProviderInfo.description': "Affiche les informations de débogage sur l'état de connexion du fournisseur de synchronisation.",
72
+ 'settings.developer.showMigrationInfo.label': 'Afficher les infos de migration',
73
+ 'settings.developer.showMigrationInfo.description': 'Affiche les informations de débogage sur les migrations de données.',
74
+ 'settings.about.title': 'À propos',
75
+ 'settings.about.description': 'Kritzel - Une application de dessin',
76
+ // Export dialog
77
+ 'export.dialogTitle': 'Exporter',
78
+ 'export.tabs.viewport': "Exporter la fenêtre d'affichage",
79
+ 'export.tabs.workspace': "Exporter l'espace de travail",
80
+ 'export.format.label': 'Format',
81
+ 'export.filename.label': 'Nom du fichier',
82
+ 'export.filename.placeholder': 'Saisir le nom du fichier',
83
+ 'export.exportButton': 'Exporter',
84
+ // Workspace manager
85
+ 'workspace.sharedTooltip': 'Espace de travail partagé',
86
+ 'workspace.rename': 'Renommer',
87
+ 'workspace.delete': 'Supprimer',
88
+ // Zoom panel
89
+ 'zoom.zoomIn': 'Zoom avant',
90
+ 'zoom.zoomOut': 'Zoom arrière',
91
+ // Utility panel
92
+ 'utility.undo': 'Annuler',
93
+ 'utility.redo': 'Rétablir',
94
+ 'utility.delete': 'Supprimer les éléments sélectionnés',
95
+ // Share dialog
96
+ 'share.dialogTitle': "Partager l'espace de travail",
97
+ 'share.linkSharing.label': 'Partage par lien',
98
+ 'share.linkSharing.enabledDescription': 'Toute personne disposant du lien peut accéder à cet espace de travail.',
99
+ 'share.linkSharing.disabledDescription': 'Le partage par lien est désactivé. Vous seul pouvez accéder à cet espace de travail.',
100
+ 'share.linkSharing.toggleLabel': 'Activer le partage par lien',
101
+ 'share.copyLink.title': 'Copier le lien',
102
+ 'share.copyLink.copied': 'Copié !',
103
+ // Login dialog
104
+ 'login.dialogTitle': 'Se connecter',
105
+ // Current user dialog
106
+ 'currentUser.dialogTitle': 'Compte',
107
+ // Back to content
108
+ 'backToContent.label': 'Retour au contenu',
109
+ // Tool config
110
+ 'toolConfig.collapse': 'Réduire',
111
+ 'toolConfig.expand': 'Développer',
112
+ // More menu button
113
+ 'moreMenu.ariaLabel': "Plus d'options",
114
+ // Editor
115
+ 'editor.loading': 'Chargement...',
116
+ // Watermark
117
+ 'watermark.poweredBy': 'Propulsé par Kritzel',
118
+ },
119
+ };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Ordered list of schema migrations for the app-state Y.Doc.
3
+ * Each migration transforms the document from one schema version to the next.
4
+ *
5
+ * To add a new migration:
6
+ * 1. Bump CURRENT_APP_STATE_SCHEMA_VERSION in constants/schema.constants.ts
7
+ * 2. Append a new entry with fromVersion = old version, toVersion = new version
8
+ * 3. Implement the migrate() function — it must be idempotent
9
+ */
10
+ export const APP_STATE_MIGRATIONS = [
11
+ {
12
+ fromVersion: 1,
13
+ toVersion: 2,
14
+ /**
15
+ * Converts workspace viewport from screen-space { translateX, translateY }
16
+ * to device-independent world-space { centerWorldX, centerWorldY }.
17
+ *
18
+ * Since viewport dimensions are not available during migration, uses the
19
+ * approximation: centerWorld = -translate / scale (world coordinate at screen origin).
20
+ */
21
+ migrate(_ydoc, maps) {
22
+ const workspacesMap = maps['workspaces'];
23
+ if (!workspacesMap)
24
+ return;
25
+ workspacesMap.forEach((serialized, key) => {
26
+ const viewport = serialized?.viewport;
27
+ if (!viewport)
28
+ return;
29
+ // Idempotency: skip if already migrated
30
+ if ('centerWorldX' in viewport)
31
+ return;
32
+ const scale = viewport.scale ?? 1;
33
+ const translateX = viewport.translateX ?? 0;
34
+ const translateY = viewport.translateY ?? 0;
35
+ const migrated = {
36
+ ...serialized,
37
+ viewport: {
38
+ centerWorldX: -translateX / scale || 0,
39
+ centerWorldY: -translateY / scale || 0,
40
+ scale,
41
+ },
42
+ };
43
+ workspacesMap.set(key, migrated);
44
+ });
45
+ },
46
+ },
47
+ ];
@@ -0,0 +1,67 @@
1
+ const LEGACY_CUSTOM_ELEMENT_CLASS = 'KritzelCustomElement';
2
+ const DYNAMIC_OBJECT_CLASS = 'KritzelDynamicObject';
3
+ /**
4
+ * Rewrites the `__class__` discriminator in-place, recursing into nested children of groups.
5
+ * @returns True if anything was renamed.
6
+ */
7
+ function renameCustomElementClass(value) {
8
+ if (Array.isArray(value)) {
9
+ return value.reduce((changed, entry) => renameCustomElementClass(entry) || changed, false);
10
+ }
11
+ if (!value || typeof value !== 'object') {
12
+ return false;
13
+ }
14
+ const record = value;
15
+ let changed = false;
16
+ if (record.__class__ === LEGACY_CUSTOM_ELEMENT_CLASS) {
17
+ record.__class__ = DYNAMIC_OBJECT_CLASS;
18
+ changed = true;
19
+ }
20
+ for (const key of Object.keys(record)) {
21
+ if (key === '__class__')
22
+ continue;
23
+ changed = renameCustomElementClass(record[key]) || changed;
24
+ }
25
+ return changed;
26
+ }
27
+ /**
28
+ * Ordered list of schema migrations for workspace Y.Docs.
29
+ * Each migration transforms the document from one schema version to the next.
30
+ *
31
+ * To add a new migration:
32
+ * 1. Bump CURRENT_WORKSPACE_SCHEMA_VERSION in constants/schema.constants.ts
33
+ * 2. Append a new entry with fromVersion = old version, toVersion = new version
34
+ * 3. Implement the migrate() function — it must be idempotent
35
+ */
36
+ export const WORKSPACE_MIGRATIONS = [
37
+ {
38
+ fromVersion: 1,
39
+ toVersion: 2,
40
+ migrate(_ydoc, _maps) {
41
+ // No-op: adds optional userId property to objects.
42
+ // Existing objects without userId are valid (field is optional).
43
+ },
44
+ },
45
+ {
46
+ fromVersion: 2,
47
+ toVersion: 3,
48
+ /**
49
+ * Renames the `KritzelCustomElement` type discriminator to `KritzelDynamicObject`,
50
+ * including objects nested inside serialized groups.
51
+ */
52
+ migrate(_ydoc, maps) {
53
+ const objectsMap = maps['objects'];
54
+ if (!objectsMap)
55
+ return;
56
+ objectsMap.forEach((serialized, key) => {
57
+ if (!serialized || typeof serialized !== 'object')
58
+ return;
59
+ // JSON round-trip instead of structuredClone: Yjs rejects cross-realm plain objects.
60
+ const clone = JSON.parse(JSON.stringify(serialized));
61
+ if (renameCustomElementClass(clone)) {
62
+ objectsMap.set(key, clone);
63
+ }
64
+ });
65
+ },
66
+ },
67
+ ];