kritzel-stencil 0.3.1 → 0.3.7

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 (67) hide show
  1. package/dist/cjs/index.cjs.js +70 -1
  2. package/dist/cjs/kritzel-active-users_42.cjs.entry.js +200 -41
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/stencil.cjs.js +1 -1
  5. package/dist/cjs/{workspace.migrations-D5sPPbQN.js → workspace.migrations-BlC8KRoQ.js} +12 -63
  6. package/dist/collection/classes/core/core.class.js +16 -5
  7. package/dist/collection/classes/core/store.class.js +8 -1
  8. package/dist/collection/classes/handlers/context-menu.handler.js +2 -2
  9. package/dist/collection/classes/handlers/key.handler.js +1 -2
  10. package/dist/collection/classes/objects/shape.class.js +2 -3
  11. package/dist/collection/classes/objects/text.class.js +2 -3
  12. package/dist/collection/classes/providers/sync/in-memory-sync-provider.class.js +68 -0
  13. package/dist/collection/classes/registries/tool.registry.js +29 -8
  14. package/dist/collection/classes/tools/image-tool.class.js +2 -3
  15. package/dist/collection/classes/tools/line-tool.class.js +1 -2
  16. package/dist/collection/classes/tools/shape-tool.class.js +3 -4
  17. package/dist/collection/classes/tools/text-tool.class.js +2 -3
  18. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +0 -2
  19. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +16 -7
  20. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +2 -1
  21. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +56 -32
  22. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +1 -0
  23. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.js +43 -9
  24. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +1 -1
  25. package/dist/collection/constants/version.js +1 -1
  26. package/dist/collection/helpers/tool-config.helper.js +6 -5
  27. package/dist/collection/index.js +1 -0
  28. package/dist/components/index.js +1 -1
  29. package/dist/components/kritzel-controls.js +1 -1
  30. package/dist/components/kritzel-editor.js +1 -1
  31. package/dist/components/kritzel-engine.js +1 -1
  32. package/dist/components/kritzel-more-menu.js +1 -1
  33. package/dist/components/kritzel-settings.js +1 -1
  34. package/dist/components/kritzel-tool-config.js +1 -1
  35. package/dist/components/kritzel-utility-panel.js +1 -1
  36. package/dist/components/p-8b9zAWnS.js +1 -0
  37. package/dist/components/{p-Cx6YyDdF.js → p-BV3EJRtU.js} +1 -1
  38. package/dist/components/p-CSODtZrV.js +1 -0
  39. package/dist/components/p-CoJdbj3f.js +1 -0
  40. package/dist/components/p-Ctd1w9-z.js +1 -0
  41. package/dist/components/{p-C9jegh9w.js → p-D0ctIEh_.js} +1 -1
  42. package/dist/components/p-P0p4WBpa.js +9 -0
  43. package/dist/esm/index.js +71 -3
  44. package/dist/esm/kritzel-active-users_42.entry.js +200 -41
  45. package/dist/esm/loader.js +1 -1
  46. package/dist/esm/stencil.js +1 -1
  47. package/dist/esm/{workspace.migrations-BnTvdnKU.js → workspace.migrations-BLXBI--a.js} +13 -62
  48. package/dist/stencil/index.esm.js +1 -1
  49. package/dist/stencil/p-3058e485.entry.js +9 -0
  50. package/dist/stencil/p-BLXBI--a.js +1 -0
  51. package/dist/stencil/stencil.esm.js +1 -1
  52. package/dist/types/classes/core/core.class.d.ts +8 -0
  53. package/dist/types/classes/providers/sync/in-memory-sync-provider.class.d.ts +38 -0
  54. package/dist/types/classes/registries/tool.registry.d.ts +24 -7
  55. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +5 -0
  56. package/dist/types/components/ui/kritzel-tool-config/kritzel-tool-config.d.ts +4 -0
  57. package/dist/types/components.d.ts +2 -0
  58. package/dist/types/constants/version.d.ts +1 -1
  59. package/dist/types/index.d.ts +1 -0
  60. package/package.json +1 -1
  61. package/dist/components/p-BWB2UGxj.js +0 -9
  62. package/dist/components/p-BWJGv9ZO.js +0 -1
  63. package/dist/components/p-BWRjTm0J.js +0 -1
  64. package/dist/components/p-Clo5Ydi1.js +0 -1
  65. package/dist/components/p-D9-C4GfD.js +0 -1
  66. package/dist/stencil/p-BnTvdnKU.js +0 -1
  67. package/dist/stencil/p-bfd1fca8.entry.js +0 -9
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var workspace_migrations = require('./workspace.migrations-D5sPPbQN.js');
3
+ var workspace_migrations = require('./workspace.migrations-BlC8KRoQ.js');
4
4
  var Y = require('yjs');
5
5
  var yWebsocket = require('y-websocket');
6
6
  require('y-indexeddb');
@@ -452,6 +452,74 @@ class BroadcastSyncProvider {
452
452
  }
453
453
  }
454
454
 
455
+ /**
456
+ * Module-scoped cache that survives component removal and remounting
457
+ * within the same JS runtime. Cleared on page reload.
458
+ */
459
+ const sessionCache = new Map();
460
+ /**
461
+ * In-memory sync provider for session-scoped persistence.
462
+ *
463
+ * State survives the component being removed from the DOM and later
464
+ * re-added within the same page session, but is lost on page reload.
465
+ * Intended for documentation demos where durable IndexedDB persistence
466
+ * is not desired.
467
+ */
468
+ class InMemorySyncProvider {
469
+ type = 'local';
470
+ doc;
471
+ cacheKey;
472
+ isConnected = false;
473
+ constructor(docName, doc, options) {
474
+ this.doc = doc;
475
+ this.cacheKey = options?.name ?? docName;
476
+ }
477
+ handleUpdate = (_update, origin) => {
478
+ // Skip updates that originated from connect() rehydration to avoid a
479
+ // redundant re-encode of the state we just applied.
480
+ if (origin === this) {
481
+ return;
482
+ }
483
+ sessionCache.set(this.cacheKey, Y__namespace.encodeStateAsUpdate(this.doc));
484
+ };
485
+ async connect() {
486
+ if (this.isConnected) {
487
+ return;
488
+ }
489
+ const cached = sessionCache.get(this.cacheKey);
490
+ if (cached) {
491
+ Y__namespace.applyUpdate(this.doc, cached, this);
492
+ }
493
+ this.doc.on('update', this.handleUpdate);
494
+ this.isConnected = true;
495
+ }
496
+ disconnect() {
497
+ this.isConnected = false;
498
+ }
499
+ async reconnect() {
500
+ this.disconnect();
501
+ return this.connect();
502
+ }
503
+ destroy() {
504
+ this.doc.off('update', this.handleUpdate);
505
+ this.isConnected = false;
506
+ }
507
+ /**
508
+ * Clears the in-memory cache.
509
+ *
510
+ * @param name - If provided, only the entry with this cache key is removed.
511
+ * If omitted, all entries are cleared.
512
+ */
513
+ static clear(name) {
514
+ if (name !== undefined) {
515
+ sessionCache.delete(name);
516
+ }
517
+ else {
518
+ sessionCache.clear();
519
+ }
520
+ }
521
+ }
522
+
455
523
  /**
456
524
  * WebSocket sync provider for real-time collaboration
457
525
  */
@@ -1128,5 +1196,6 @@ exports.runMigrations = workspace_migrations.runMigrations;
1128
1196
  exports.BroadcastSyncProvider = BroadcastSyncProvider;
1129
1197
  exports.HocuspocusSyncProvider = HocuspocusSyncProvider;
1130
1198
  exports.HttpAssetProvider = HttpAssetProvider;
1199
+ exports.InMemorySyncProvider = InMemorySyncProvider;
1131
1200
  exports.PresignedAssetProvider = PresignedAssetProvider;
1132
1201
  exports.WebSocketSyncProvider = WebSocketSyncProvider;