kritzel-stencil 0.1.80 → 0.1.82

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 (47) hide show
  1. package/dist/cjs/index.cjs.js +1 -1
  2. package/dist/cjs/kritzel-active-users_42.cjs.entry.js +30 -37
  3. package/dist/cjs/{workspace.migrations-DUXtSb7C.js → workspace.migrations-4HATwIMK.js} +46 -58
  4. package/dist/collection/classes/core/core.class.js +6 -6
  5. package/dist/collection/classes/core/store.class.js +0 -12
  6. package/dist/collection/classes/objects/base-object.class.js +1 -1
  7. package/dist/collection/classes/objects/custom-element.class.js +1 -1
  8. package/dist/collection/classes/objects/group.class.js +1 -1
  9. package/dist/collection/classes/objects/image.class.js +1 -1
  10. package/dist/collection/classes/objects/line.class.js +1 -1
  11. package/dist/collection/classes/objects/path.class.js +1 -1
  12. package/dist/collection/classes/objects/selection-box.class.js +1 -1
  13. package/dist/collection/classes/objects/selection-group.class.js +1 -1
  14. package/dist/collection/classes/objects/shape.class.js +15 -21
  15. package/dist/collection/classes/objects/text.class.js +24 -30
  16. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +21 -16
  17. package/dist/collection/constants/version.js +1 -1
  18. package/dist/components/index.js +1 -1
  19. package/dist/components/kritzel-awareness-cursors.js +1 -1
  20. package/dist/components/kritzel-controls.js +1 -1
  21. package/dist/components/kritzel-editor.js +1 -1
  22. package/dist/components/kritzel-engine.js +1 -1
  23. package/dist/components/kritzel-settings.js +1 -1
  24. package/dist/components/kritzel-tool-config.js +1 -1
  25. package/dist/components/{p-xYCbKFih.js → p-B4h_tGG1.js} +1 -1
  26. package/dist/components/{p-BcwZ36sO.js → p-BPQOTise.js} +1 -1
  27. package/dist/components/{p-B-Gej_Ak.js → p-C35iuSnC.js} +1 -1
  28. package/dist/components/{p-BzQmBVwr.js → p-CgtykATT.js} +2 -2
  29. package/dist/components/{p-C_fSm7T4.js → p-DK_d3fKa.js} +1 -1
  30. package/dist/components/p-DQK_4lkI.js +1 -0
  31. package/dist/components/{p-CvyE2Wg-.js → p-DsfD4pGR.js} +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/kritzel-active-users_42.entry.js +30 -37
  34. package/dist/esm/{workspace.migrations-OzSSw5kt.js → workspace.migrations-Be65cOkQ.js} +46 -58
  35. package/dist/stencil/index.esm.js +1 -1
  36. package/dist/stencil/p-Be65cOkQ.js +1 -0
  37. package/dist/stencil/p-f318b7d5.entry.js +9 -0
  38. package/dist/stencil/stencil.esm.js +1 -1
  39. package/dist/types/classes/core/store.class.d.ts +0 -8
  40. package/dist/types/classes/objects/shape.class.d.ts +0 -1
  41. package/dist/types/classes/objects/text.class.d.ts +0 -1
  42. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +1 -0
  43. package/dist/types/constants/version.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/dist/components/p-C8WnYSHi.js +0 -1
  46. package/dist/stencil/p-OzSSw5kt.js +0 -1
  47. package/dist/stencil/p-f7be06a8.entry.js +0 -9
@@ -39,7 +39,7 @@ export class KritzelImage extends KritzelBaseObject {
39
39
  const object = new KritzelImage();
40
40
  object._core = core;
41
41
  object.id = object.generateId();
42
- object.workspaceId = core.store.activeWorkspace.id;
42
+ object.workspaceId = core.store.state.activeWorkspace.id;
43
43
  object.userId = core.user?.id;
44
44
  object.x = 0;
45
45
  object.y = 0;
@@ -79,7 +79,7 @@ export class KritzelLine extends KritzelBaseObject {
79
79
  const object = new KritzelLine();
80
80
  object._core = core;
81
81
  object.id = object.generateId();
82
- object.workspaceId = core.store.activeWorkspace.id;
82
+ object.workspaceId = core.store.state.activeWorkspace.id;
83
83
  object.userId = core.user?.id;
84
84
  object.options = options;
85
85
  object.startX = options?.startX ?? 0;
@@ -61,7 +61,7 @@ export class KritzelPath extends KritzelBaseObject {
61
61
  const object = new KritzelPath();
62
62
  object._core = core;
63
63
  object.id = object.generateId();
64
- object.workspaceId = core.store.activeWorkspace.id;
64
+ object.workspaceId = core.store.state.activeWorkspace.id;
65
65
  object.userId = core.user?.id;
66
66
  object.options = options;
67
67
  object.points = options?.points ?? [];
@@ -18,7 +18,7 @@ export class KritzelSelectionBox extends KritzelBaseObject {
18
18
  const object = new KritzelSelectionBox();
19
19
  object._core = core;
20
20
  object.id = object.generateId();
21
- object.workspaceId = core.store.activeWorkspace.id;
21
+ object.workspaceId = core.store.state.activeWorkspace.id;
22
22
  object.userId = core.user?.id;
23
23
  object.scale = core.store.state.scale;
24
24
  object.zIndex = 99999;
@@ -91,7 +91,7 @@ export class KritzelSelectionGroup extends KritzelBaseObject {
91
91
  const object = new KritzelSelectionGroup();
92
92
  object._core = core;
93
93
  object.id = object.generateId();
94
- object.workspaceId = core.store.activeWorkspace.id;
94
+ object.workspaceId = core.store.state.activeWorkspace.id;
95
95
  object.userId = core.user?.id;
96
96
  object.clientId = core.store.objects?.localClientId ?? undefined;
97
97
  object.scale = core.store.state.scale;
@@ -44,12 +44,6 @@ export class KritzelShape extends KritzelBaseObject {
44
44
  get viewBox() {
45
45
  return `${this.x} ${this.y} ${this.width} ${this.height}`;
46
46
  }
47
- get _editor() {
48
- if (!this.editor) {
49
- throw new Error('KritzelShape: editor is not initialized');
50
- }
51
- return this.editor;
52
- }
53
47
  /**
54
48
  * Creates a new KritzelShape instance with optional configuration.
55
49
  * This constructor initializes the shape with default values that can be
@@ -105,7 +99,7 @@ export class KritzelShape extends KritzelBaseObject {
105
99
  const object = new KritzelShape();
106
100
  object._core = core;
107
101
  object.id = object.generateId();
108
- object.workspaceId = core.store.activeWorkspace.id;
102
+ object.workspaceId = core.store.state.activeWorkspace.id;
109
103
  object.userId = core.user?.id;
110
104
  object.x = config?.x ?? 0;
111
105
  object.y = config?.y ?? 0;
@@ -157,7 +151,7 @@ export class KritzelShape extends KritzelBaseObject {
157
151
  if (element === null || this.isInViewport() === false) {
158
152
  return;
159
153
  }
160
- if (this.isMounted && this.elementRef === element && this._editor.dom.parentElement === element) {
154
+ if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {
161
155
  return;
162
156
  }
163
157
  this.elementRef = element;
@@ -173,7 +167,7 @@ export class KritzelShape extends KritzelBaseObject {
173
167
  * @returns void
174
168
  */
175
169
  mountTextEditor(element) {
176
- if (element === null || !this.editor) {
170
+ if (element === null) {
177
171
  return;
178
172
  }
179
173
  element.style.fontFamily = this.fontFamily;
@@ -204,8 +198,8 @@ export class KritzelShape extends KritzelBaseObject {
204
198
  }),
205
199
  editable: () => false,
206
200
  dispatchTransaction: transaction => {
207
- const newState = this._editor.state.apply(transaction);
208
- this._editor.updateState(newState);
201
+ const newState = this.editor.state.apply(transaction);
202
+ this.editor.updateState(newState);
209
203
  if (transaction.docChanged) {
210
204
  this.content = newState.doc.toJSON();
211
205
  if (!transaction.getMeta('fromRemote')) {
@@ -267,12 +261,12 @@ export class KritzelShape extends KritzelBaseObject {
267
261
  * @returns void
268
262
  */
269
263
  focus(coords) {
270
- const doc = this._editor.state.doc;
264
+ const doc = this.editor.state.doc;
271
265
  if (coords?.x && coords?.y) {
272
- const pos = this._editor.posAtCoords({ left: coords.x, top: coords.y });
266
+ const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });
273
267
  if (pos) {
274
- this._editor.dispatch(this._editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));
275
- this._editor.focus();
268
+ this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));
269
+ this.editor.focus();
276
270
  if (KritzelDevicesHelper.isIOS()) {
277
271
  this.scrollIntoViewOnIOS();
278
272
  }
@@ -280,8 +274,8 @@ export class KritzelShape extends KritzelBaseObject {
280
274
  }
281
275
  }
282
276
  const end = Math.max(1, doc.content.size - 1);
283
- this._editor.dispatch(this._editor.state.tr.setSelection(TextSelection.create(doc, end)));
284
- this._editor.focus();
277
+ this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));
278
+ this.editor.focus();
285
279
  if (KritzelDevicesHelper.isIOS()) {
286
280
  this.scrollIntoViewOnIOS();
287
281
  }
@@ -319,7 +313,7 @@ export class KritzelShape extends KritzelBaseObject {
319
313
  KritzelKeyboardHelper.disableInteractiveWidget();
320
314
  this.uneditedObject = this.clone();
321
315
  this._core.store.setState('activeTool', KritzelToolRegistry.getTool('shape'));
322
- this._editor.setProps({ editable: () => true });
316
+ this.editor.setProps({ editable: () => true });
323
317
  this.isEditing = true;
324
318
  this._core.rerender();
325
319
  if (event?.clientX && event?.clientY) {
@@ -336,9 +330,9 @@ export class KritzelShape extends KritzelBaseObject {
336
330
  * @returns void
337
331
  */
338
332
  save() {
339
- this.content = this._editor.state.doc.toJSON();
340
- this._editor.setProps({ editable: () => false });
341
- this._editor.dom.blur();
333
+ this.content = this.editor.state.doc.toJSON();
334
+ this.editor.setProps({ editable: () => false });
335
+ this.editor.dom.blur();
342
336
  this.isEditing = false;
343
337
  this._core.store.objects.consolidateTemporaryItems();
344
338
  this._core.store.objects.update(this);
@@ -28,12 +28,6 @@ export class KritzelText extends KritzelBaseObject {
28
28
  isEditing = false;
29
29
  editor = null;
30
30
  content = null;
31
- get _editor() {
32
- if (!this._editor) {
33
- throw new Error('KritzelShape: editor is not initialized');
34
- }
35
- return this._editor;
36
- }
37
31
  _schema = new Schema({
38
32
  nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),
39
33
  marks: schema.spec.marks,
@@ -45,10 +39,10 @@ export class KritzelText extends KritzelBaseObject {
45
39
  * @returns `true` if the editor is empty or contains only whitespace, `false` otherwise.
46
40
  */
47
41
  get isEmpty() {
48
- if (!this._editor) {
42
+ if (!this.editor) {
49
43
  return true;
50
44
  }
51
- const doc = this._editor.state.doc;
45
+ const doc = this.editor.state.doc;
52
46
  if (doc.content.size === 0) {
53
47
  return true;
54
48
  }
@@ -121,7 +115,7 @@ export class KritzelText extends KritzelBaseObject {
121
115
  const object = new KritzelText();
122
116
  object._core = core;
123
117
  object.id = object.generateId();
124
- object.workspaceId = core.store.activeWorkspace.id;
118
+ object.workspaceId = core.store.state.activeWorkspace.id;
125
119
  object.userId = core.user?.id;
126
120
  object.fontSize = fontSize || 8;
127
121
  object.fontFamily = fontFamily || 'Arial';
@@ -152,7 +146,7 @@ export class KritzelText extends KritzelBaseObject {
152
146
  element.style.fontFamily = this.fontFamily;
153
147
  element.style.fontSize = `${this.fontSize}pt`;
154
148
  element.style.color = KritzelColorHelper.resolveThemeColor(this.fontColor);
155
- if (this.isMounted && this.elementRef === element && this._editor.dom.parentElement === element) {
149
+ if (this.isMounted && this.elementRef === element && this.editor.dom.parentElement === element) {
156
150
  if (!this._core.store.state.isScaling && !this._core.store.state.isPanning) {
157
151
  requestAnimationFrame(() => this.adjustSizeOnInput());
158
152
  }
@@ -162,7 +156,7 @@ export class KritzelText extends KritzelBaseObject {
162
156
  this.elementRef.style.whiteSpace = 'pre-wrap';
163
157
  this.elementRef.style.wordWrap = 'break-word';
164
158
  this.elementRef.innerHTML = '';
165
- this.elementRef.appendChild(this._editor.dom);
159
+ this.elementRef.appendChild(this.editor.dom);
166
160
  this.isMounted = true;
167
161
  requestAnimationFrame(() => this.adjustSizeOnInput());
168
162
  }
@@ -180,8 +174,8 @@ export class KritzelText extends KritzelBaseObject {
180
174
  }),
181
175
  editable: () => false,
182
176
  dispatchTransaction: transaction => {
183
- const newState = this._editor.state.apply(transaction);
184
- this._editor.updateState(newState);
177
+ const newState = this.editor.state.apply(transaction);
178
+ this.editor.updateState(newState);
185
179
  if (transaction.docChanged) {
186
180
  this.content = newState.doc.toJSON();
187
181
  this.adjustSizeOnInput();
@@ -199,11 +193,11 @@ export class KritzelText extends KritzelBaseObject {
199
193
  */
200
194
  setContent(content) {
201
195
  this.content = content;
202
- if (this._editor && content) {
203
- const newDoc = this._editor.state.schema.nodeFromJSON(content);
204
- const tr = this._editor.state.tr.replaceWith(0, this._editor.state.doc.content.size, newDoc.content);
196
+ if (this.editor && content) {
197
+ const newDoc = this.editor.state.schema.nodeFromJSON(content);
198
+ const tr = this.editor.state.tr.replaceWith(0, this.editor.state.doc.content.size, newDoc.content);
205
199
  tr.setMeta('fromRemote', true);
206
- this._editor.dispatch(tr);
200
+ this.editor.dispatch(tr);
207
201
  }
208
202
  }
209
203
  /**
@@ -268,13 +262,13 @@ export class KritzelText extends KritzelBaseObject {
268
262
  * @param coords.y - Y coordinate for cursor placement.
269
263
  */
270
264
  focus(coords) {
271
- if (this._editor) {
272
- const doc = this._editor.state.doc;
265
+ if (this.editor) {
266
+ const doc = this.editor.state.doc;
273
267
  if (coords.x && coords.y && !this.isEmpty) {
274
- const pos = this._editor.posAtCoords({ left: coords.x, top: coords.y });
268
+ const pos = this.editor.posAtCoords({ left: coords.x, top: coords.y });
275
269
  if (pos) {
276
- this._editor.dispatch(this._editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));
277
- this._editor.focus();
270
+ this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, pos.pos)));
271
+ this.editor.focus();
278
272
  if (KritzelDevicesHelper.isIOS()) {
279
273
  this.scrollIntoViewOnIOS();
280
274
  }
@@ -282,8 +276,8 @@ export class KritzelText extends KritzelBaseObject {
282
276
  }
283
277
  }
284
278
  const end = Math.max(1, doc.content.size - 1);
285
- this._editor.dispatch(this._editor.state.tr.setSelection(TextSelection.create(doc, end)));
286
- this._editor.focus();
279
+ this.editor.dispatch(this.editor.state.tr.setSelection(TextSelection.create(doc, end)));
280
+ this.editor.focus();
287
281
  if (KritzelDevicesHelper.isIOS()) {
288
282
  this.scrollIntoViewOnIOS();
289
283
  }
@@ -295,8 +289,8 @@ export class KritzelText extends KritzelBaseObject {
295
289
  */
296
290
  scrollIntoViewOnIOS() {
297
291
  setTimeout(() => {
298
- if (this._editor && this._editor.dom) {
299
- this._editor.dom.scrollIntoView({
292
+ if (this.editor && this.editor.dom) {
293
+ this.editor.dom.scrollIntoView({
300
294
  behavior: 'smooth',
301
295
  block: 'center',
302
296
  inline: 'nearest',
@@ -314,7 +308,7 @@ export class KritzelText extends KritzelBaseObject {
314
308
  KritzelKeyboardHelper.disableInteractiveWidget();
315
309
  this.uneditedObject = this.clone();
316
310
  this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));
317
- this._editor.setProps({ editable: () => true });
311
+ this.editor.setProps({ editable: () => true });
318
312
  this.isEditing = true;
319
313
  this._core.rerender();
320
314
  this.adjustSizeOnInput();
@@ -330,9 +324,9 @@ export class KritzelText extends KritzelBaseObject {
330
324
  */
331
325
  save() {
332
326
  requestAnimationFrame(() => this.adjustSizeOnInput());
333
- this.content = this._editor.state.doc.toJSON();
334
- this._editor.setProps({ editable: () => false });
335
- this._editor.dom.blur();
327
+ this.content = this.editor.state.doc.toJSON();
328
+ this.editor.setProps({ editable: () => false });
329
+ this.editor.dom.blur();
336
330
  this.isEditing = false;
337
331
  this._core.store.objects.consolidateTemporaryItems();
338
332
  this._core.store.objects.update(this);
@@ -31,13 +31,13 @@ export class KritzelEngine {
31
31
  }
32
32
  // Let batched prop updates settle, then perform an idempotent re-check.
33
33
  await Promise.resolve();
34
- const currentWorkspaceId = this.core.store.activeWorkspace?.id;
34
+ const currentWorkspaceId = this.core.store.state.activeWorkspace?.id;
35
35
  if (currentWorkspaceId === newWorkspaceId) {
36
36
  return;
37
37
  }
38
38
  this.core.beforeWorkspaceChange();
39
39
  await this.initializeWorkspaceIfNeeded(newWorkspace);
40
- this.activeWorkspaceChange.emit(this.core.store.activeWorkspace);
40
+ this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace);
41
41
  }
42
42
  /** Optional unique identifier for namespacing storage keys across multiple editor instances. */
43
43
  editorId;
@@ -55,8 +55,11 @@ export class KritzelEngine {
55
55
  this._syncConfigRevision++;
56
56
  // Keep core config in sync immediately so late prop updates are not lost.
57
57
  this.core.setSyncConfig(newValue);
58
- // If syncConfig arrives after componentDidLoad, initialize Yjs now
59
- if (newValue && !this._isYjsInitialized) {
58
+ // If syncConfig arrives after componentDidLoad, initialize Yjs now.
59
+ // Guard on _isViewportReady to avoid restoring viewport state before
60
+ // viewportWidth/viewportHeight are set (they default to 0 until the
61
+ // KritzelViewport constructor runs inside componentDidLoad's timeout).
62
+ if (newValue && !this._isYjsInitialized && this._isViewportReady) {
60
63
  await this.initializeSyncAndWorkspace();
61
64
  }
62
65
  }
@@ -489,7 +492,7 @@ export class KritzelEngine {
489
492
  object._core = this.core;
490
493
  object.scale = this.core.store.state.scale;
491
494
  object.zIndex = this.core.store.currentZIndex;
492
- object.workspaceId = this.core.store.activeWorkspace.id;
495
+ object.workspaceId = this.core.store.state.activeWorkspace.id;
493
496
  // Handle KritzelText: recreate the editor now that _core is available
494
497
  // The editor's dispatchTransaction callback needs _core for persisting changes
495
498
  if (KritzelClassHelper.isInstanceOf(object, 'KritzelText')) {
@@ -510,7 +513,7 @@ export class KritzelEngine {
510
513
  child._core = this.core;
511
514
  child.scale = this.core.store.state.scale;
512
515
  child.zIndex = this.core.store.currentZIndex;
513
- child.workspaceId = this.core.store.activeWorkspace.id;
516
+ child.workspaceId = this.core.store.state.activeWorkspace.id;
514
517
  idRemapping.set(oldId, child.id);
515
518
  object.childIds.push(child.id);
516
519
  });
@@ -711,7 +714,7 @@ export class KritzelEngine {
711
714
  // Save critical state before screenshot to restore after
712
715
  const savedState = {
713
716
  objects: this.core.store.objects,
714
- activeWorkspace: this.core.store.activeWorkspace,
717
+ activeWorkspace: this.core.store.state.activeWorkspace,
715
718
  workspaces: this.core.store.state.workspaces,
716
719
  activeTool: this.core.store.state.activeTool,
717
720
  isReady: this.core.store.state.isReady,
@@ -909,7 +912,7 @@ export class KritzelEngine {
909
912
  * @returns A JSON string representing the complete workspace state.
910
913
  */
911
914
  async exportAsJson() {
912
- const workspace = this.core.store.activeWorkspace;
915
+ const workspace = this.core.store.state.activeWorkspace;
913
916
  if (!workspace) {
914
917
  throw new Error('Cannot export workspace: no active workspace is loaded');
915
918
  }
@@ -985,7 +988,7 @@ export class KritzelEngine {
985
988
  if (data.version && data.version !== WORKSPACE_EXPORT_VERSION) {
986
989
  console.warn(`Workspace version mismatch: expected ${WORKSPACE_EXPORT_VERSION}, got ${data.version}`);
987
990
  }
988
- const activeWorkspace = this.core.store.activeWorkspace;
991
+ const activeWorkspace = this.core.store.state.activeWorkspace;
989
992
  if (!activeWorkspace) {
990
993
  throw new Error('Cannot load objects: no active workspace is loaded');
991
994
  }
@@ -1125,7 +1128,7 @@ export class KritzelEngine {
1125
1128
  }
1126
1129
  /** Returns the currently active workspace. */
1127
1130
  async getActiveWorkspace() {
1128
- const activeWorkspace = this.core.store.activeWorkspace;
1131
+ const activeWorkspace = this.core.store.state.activeWorkspace;
1129
1132
  if (!activeWorkspace) {
1130
1133
  throw new Error('No active workspace is loaded');
1131
1134
  }
@@ -1158,7 +1161,7 @@ export class KritzelEngine {
1158
1161
  this.workspacesChange.emit(this.core.store.state.workspaces);
1159
1162
  this.core.beforeWorkspaceChange();
1160
1163
  await this.initializeWorkspaceIfNeeded(workspace);
1161
- this.activeWorkspaceChange.emit(this.core.store.activeWorkspace);
1164
+ this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace);
1162
1165
  }
1163
1166
  /**
1164
1167
  * Reinitializes sync by performing a full teardown and re-initialization.
@@ -1180,6 +1183,7 @@ export class KritzelEngine {
1180
1183
  keyHandler;
1181
1184
  contextMenuElement = null;
1182
1185
  _lastHadSelectionGroup = false;
1186
+ _isViewportReady = false;
1183
1187
  _isYjsInitialized = false;
1184
1188
  _isResolvingActiveWorkspaceId = false;
1185
1189
  _stateChangeListenersRegistered = false;
@@ -1238,6 +1242,7 @@ export class KritzelEngine {
1238
1242
  this.contextMenuHandler = new KritzelContextMenuHandler(this.core, this.globalContextMenuItems, this.objectContextMenuItems);
1239
1243
  this.keyHandler = new KritzelKeyHandler(this.core);
1240
1244
  this.viewport = new KritzelViewport(this.core, this.host);
1245
+ this._isViewportReady = true;
1241
1246
  // Initialize cursor manager with target element and shadow root
1242
1247
  this.core.cursorManager.setTargetElement(this.cursorTarget || document.body);
1243
1248
  if (this.host.shadowRoot) {
@@ -1303,7 +1308,7 @@ export class KritzelEngine {
1303
1308
  await this.initializeWorkspaceIfNeeded(startupWorkspace);
1304
1309
  }
1305
1310
  // Emit initial active workspace once startup initialization has completed
1306
- const initialActiveWorkspace = this.core.store.activeWorkspace;
1311
+ const initialActiveWorkspace = this.core.store.state.activeWorkspace;
1307
1312
  if (initialActiveWorkspace) {
1308
1313
  this.activeWorkspaceChange.emit(initialActiveWorkspace);
1309
1314
  }
@@ -1332,7 +1337,7 @@ export class KritzelEngine {
1332
1337
  if (!this.activeWorkspaceId || this._isResolvingActiveWorkspaceId) {
1333
1338
  return;
1334
1339
  }
1335
- if (this.core.store.activeWorkspace?.id === this.activeWorkspaceId) {
1340
+ if (this.core.store.state.activeWorkspace?.id === this.activeWorkspaceId) {
1336
1341
  return;
1337
1342
  }
1338
1343
  this._isResolvingActiveWorkspaceId = true;
@@ -1348,17 +1353,17 @@ export class KritzelEngine {
1348
1353
  }
1349
1354
  return;
1350
1355
  }
1351
- if (this.core.store.activeWorkspace?.id === workspace.id) {
1356
+ if (this.core.store.state.activeWorkspace?.id === workspace.id) {
1352
1357
  return;
1353
1358
  }
1354
1359
  this.core.beforeWorkspaceChange();
1355
1360
  await this.initializeWorkspaceIfNeeded(workspace);
1356
- this.activeWorkspaceChange.emit(this.core.store.activeWorkspace);
1361
+ this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace);
1357
1362
  }
1358
1363
  async initializeWorkspaceIfNeeded(workspace, options) {
1359
1364
  const targetWorkspaceId = workspace?.id ?? null;
1360
1365
  const targetKey = targetWorkspaceId ?? (options?.skipFallbackCreation ? '__NO_FALLBACK__' : '__AUTO__');
1361
- if (targetWorkspaceId && this.core.store.activeWorkspace?.id === targetWorkspaceId) {
1366
+ if (targetWorkspaceId && this.core.store.state.activeWorkspace?.id === targetWorkspaceId) {
1362
1367
  return;
1363
1368
  }
1364
1369
  if (this._workspaceInitializationPromise && this._workspaceInitializationTargetKey === targetKey) {
@@ -3,4 +3,4 @@
3
3
  * This file is auto-generated by the version bump scripts.
4
4
  * Do not modify manually.
5
5
  */
6
- export const KRITZEL_VERSION = '0.1.80';
6
+ export const KRITZEL_VERSION = '0.1.82';
@@ -1 +1 @@
1
- export{g as getAssetPath,r as render,s as setAssetPath,a as setNonce,b as setPlatformOptions}from"./p-BWj1eE2b.js";export{d as KritzelBrushTool,b as KritzelGroup,a as KritzelImage,e as KritzelLineTool,h as KritzelSelectionTool,c as KritzelShape,g as KritzelShapeTool,K as KritzelText,f as KritzelTextTool,S as ShapeType}from"./p-BcwZ36sO.js";export{a as KritzelLine,K as KritzelPath}from"./p-C8WnYSHi.js";export{A as APP_STATE_MIGRATIONS,I as IndexedDBSyncProvider,d as KritzelAlignment,c as KritzelAnchorManager,b as KritzelCursorHelper,K as KritzelEraserTool,a as KritzelImageTool,W as WORKSPACE_MIGRATIONS,r as runMigrations}from"./p-BzQmBVwr.js";import*as t from"yjs";import{WebsocketProvider as i}from"y-websocket";export{D as DEFAULT_BRUSH_CONFIG,b as DEFAULT_LINE_TOOL_CONFIG,a as DEFAULT_TEXT_CONFIG,H as HocuspocusSyncProvider,KritzelEditor,defineCustomElement as defineCustomElementKritzelEditor}from"./kritzel-editor.js";export{K as KritzelWorkspace,W as WORKSPACE_EXPORT_VERSION}from"./p-DhMlShij.js";export{K as KritzelThemeManager,d as darkTheme,l as lightTheme}from"./p-CjazGGq3.js";export{C as CURRENT_APP_STATE_SCHEMA_VERSION,a as CURRENT_WORKSPACE_SCHEMA_VERSION}from"./p-CW-VyJgK.js";export{KritzelActiveUsers,defineCustomElement as defineCustomElementKritzelActiveUsers}from"./kritzel-active-users.js";export{KritzelAvatar,defineCustomElement as defineCustomElementKritzelAvatar}from"./kritzel-avatar.js";export{KritzelAwarenessCursors,defineCustomElement as defineCustomElementKritzelAwarenessCursors}from"./kritzel-awareness-cursors.js";export{KritzelBackToContent,defineCustomElement as defineCustomElementKritzelBackToContent}from"./kritzel-back-to-content.js";export{KritzelBrushStyle,defineCustomElement as defineCustomElementKritzelBrushStyle}from"./kritzel-brush-style.js";export{KritzelButton,defineCustomElement as defineCustomElementKritzelButton}from"./kritzel-button.js";export{KritzelColor,defineCustomElement as defineCustomElementKritzelColor}from"./kritzel-color.js";export{KritzelColorPalette,defineCustomElement as defineCustomElementKritzelColorPalette}from"./kritzel-color-palette.js";export{KritzelContextMenu,defineCustomElement as defineCustomElementKritzelContextMenu}from"./kritzel-context-menu.js";export{KritzelControls,defineCustomElement as defineCustomElementKritzelControls}from"./kritzel-controls.js";export{KritzelCurrentUser,defineCustomElement as defineCustomElementKritzelCurrentUser}from"./kritzel-current-user.js";export{KritzelCurrentUserDialog,defineCustomElement as defineCustomElementKritzelCurrentUserDialog}from"./kritzel-current-user-dialog.js";export{KritzelCursorTrail,defineCustomElement as defineCustomElementKritzelCursorTrail}from"./kritzel-cursor-trail.js";export{KritzelDialog,defineCustomElement as defineCustomElementKritzelDialog}from"./kritzel-dialog.js";export{KritzelDropdown,defineCustomElement as defineCustomElementKritzelDropdown}from"./kritzel-dropdown.js";export{KritzelEngine,defineCustomElement as defineCustomElementKritzelEngine}from"./kritzel-engine.js";export{KritzelExport,defineCustomElement as defineCustomElementKritzelExport}from"./kritzel-export.js";export{KritzelFont,defineCustomElement as defineCustomElementKritzelFont}from"./kritzel-font.js";export{KritzelFontFamily,defineCustomElement as defineCustomElementKritzelFontFamily}from"./kritzel-font-family.js";export{KritzelFontSize,defineCustomElement as defineCustomElementKritzelFontSize}from"./kritzel-font-size.js";export{KritzelIcon,defineCustomElement as defineCustomElementKritzelIcon}from"./kritzel-icon.js";export{KritzelInput,defineCustomElement as defineCustomElementKritzelInput}from"./kritzel-input.js";export{KritzelLineEndings,defineCustomElement as defineCustomElementKritzelLineEndings}from"./kritzel-line-endings.js";export{KritzelLoginDialog,defineCustomElement as defineCustomElementKritzelLoginDialog}from"./kritzel-login-dialog.js";export{KritzelMasterDetail,defineCustomElement as defineCustomElementKritzelMasterDetail}from"./kritzel-master-detail.js";export{KritzelMenu,defineCustomElement as defineCustomElementKritzelMenu}from"./kritzel-menu.js";export{KritzelMenuItem,defineCustomElement as defineCustomElementKritzelMenuItem}from"./kritzel-menu-item.js";export{KritzelMoreMenu,defineCustomElement as defineCustomElementKritzelMoreMenu}from"./kritzel-more-menu.js";export{KritzelNumericInput,defineCustomElement as defineCustomElementKritzelNumericInput}from"./kritzel-numeric-input.js";export{KritzelOpacitySlider,defineCustomElement as defineCustomElementKritzelOpacitySlider}from"./kritzel-opacity-slider.js";export{KritzelPillTabs,defineCustomElement as defineCustomElementKritzelPillTabs}from"./kritzel-pill-tabs.js";export{KritzelPortal,defineCustomElement as defineCustomElementKritzelPortal}from"./kritzel-portal.js";export{KritzelSettings,defineCustomElement as defineCustomElementKritzelSettings}from"./kritzel-settings.js";export{KritzelShapeFill,defineCustomElement as defineCustomElementKritzelShapeFill}from"./kritzel-shape-fill.js";export{KritzelShareDialog,defineCustomElement as defineCustomElementKritzelShareDialog}from"./kritzel-share-dialog.js";export{KritzelSlideToggle,defineCustomElement as defineCustomElementKritzelSlideToggle}from"./kritzel-slide-toggle.js";export{KritzelSplitButton,defineCustomElement as defineCustomElementKritzelSplitButton}from"./kritzel-split-button.js";export{KritzelStrokeSize,defineCustomElement as defineCustomElementKritzelStrokeSize}from"./kritzel-stroke-size.js";export{KritzelToolConfig,defineCustomElement as defineCustomElementKritzelToolConfig}from"./kritzel-tool-config.js";export{KritzelTooltip,defineCustomElement as defineCustomElementKritzelTooltip}from"./kritzel-tooltip.js";export{KritzelUtilityPanel,defineCustomElement as defineCustomElementKritzelUtilityPanel}from"./kritzel-utility-panel.js";export{KritzelWorkspaceManager,defineCustomElement as defineCustomElementKritzelWorkspaceManager}from"./kritzel-workspace-manager.js";const o=Math.floor,n=127,m=Number.MAX_SAFE_INTEGER;class u{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const z=()=>new u,E=e=>{const t=new Uint8Array((e=>{let t=e.cpos;for(let r=0;r<e.bufs.length;r++)t+=e.bufs[r].length;return t})(e));let r=0;for(let s=0;s<e.bufs.length;s++){const i=e.bufs[s];t.set(i,r),r+=i.length}return t.set(new Uint8Array(e.cbuf.buffer,0,e.cpos),r),t},p=(e,t)=>{const r=e.cbuf.length;e.cpos===r&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(2*r),e.cpos=0),e.cbuf[e.cpos++]=t},k=(e,t)=>{for(;t>n;)p(e,128|n&t),t=o(t/128);p(e,n&t)},x=(e,t)=>{k(e,t.byteLength),((e,t)=>{const r=e.cbuf.length,s=e.cpos,i=((e,t)=>e<t?e:t)(r-s,t.length),o=t.length-i;e.cbuf.set(t.subarray(0,i),s),e.cpos+=i,o>0&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(((e,t)=>e>t?e:t)(2*r,o)),e.cbuf.set(t.subarray(i)),e.cpos=o)})(e,t)},j=e=>Error(e),T=j("Unexpected end of array"),y=j("Integer out of Range");class w{constructor(e){this.arr=e,this.pos=0}}const P=e=>((e,t)=>{const r=new Uint8Array(e.arr.buffer,e.pos+e.arr.byteOffset,t);return e.pos+=t,r})(e,M(e)),M=e=>{let t=0,r=1;const s=e.arr.length;for(;e.pos<s;){const s=e.arr[e.pos++];if(t+=(s&n)*r,r*=128,s<128)return t;if(t>m)throw y}throw T};class U{type="local";doc;channel;_synced=!1;constructor(e,t,r){this.doc=t,this.channel=new BroadcastChannel(e),this.channel.onmessage=e=>{this.handleMessage(e.data)},this.doc.on("update",this.handleDocUpdate),this.broadcastSync(),setTimeout((()=>{this._synced=!0}),100),r?.quiet||console.info("BroadcastChannel Provider initialized: "+e)}handleDocUpdate=(e,t)=>{if(t!==this){const t=z();k(t,0),x(t,e),this.channel.postMessage(E(t))}};handleMessage(e){const r=(e=>new w(e))(new Uint8Array(e));switch(M(r)){case 0:const e=P(r);t.applyUpdate(this.doc,e,this);break;case 1:this.broadcastSync();break;case 2:const s=P(r),i=t.encodeStateAsUpdate(this.doc,s);if(i.length>0){const e=z();k(e,0),x(e,i),this.channel.postMessage(E(e))}}}broadcastSync(){const e=z();k(e,2),x(e,t.encodeStateVector(this.doc)),this.channel.postMessage(E(e))}async connect(){if(!this._synced)return new Promise((e=>{const t=()=>{this._synced?e():setTimeout(t,50)};t()}))}disconnect(){}async reconnect(){return this.disconnect(),this.connect()}destroy(){this.doc.off("update",this.handleDocUpdate),this.channel.close()}}class _{type="network";provider;isConnected=!1;_quiet=!1;get awareness(){return this.provider.awareness}constructor(e,t,r){const s=r?.url||"ws://localhost:1234",o=r?.roomName||e;this.provider=new i(s,o,t,{params:r?.params,protocols:r?.protocols,WebSocketPolyfill:r?.WebSocketPolyfill,awareness:r?.awareness,maxBackoffTime:r?.maxBackoffTime,disableBc:!0}),this._quiet=r?.quiet??!1,this.setupEventListeners(),this._quiet||console.info(`WebSocket Provider initialized: ${s}/${o}`)}static with(e){return{create:(t,r,s)=>{const i=s?{...e,...s}:e;return new _(t,r,i)}}}setupEventListeners(){this.provider.on("status",(({status:e})=>{"connected"===e?(this.isConnected=!0,this._quiet||console.info("WebSocket connected")):"disconnected"===e&&(this.isConnected=!1,this._quiet||console.info("WebSocket disconnected"))})),this.provider.on("sync",(e=>{e&&!this._quiet&&console.info("WebSocket synced")}))}async connect(){if(!this.isConnected)return new Promise(((e,t)=>{const r=setTimeout((()=>{t(Error("WebSocket connection timeout"))}),1e4),s=({status:t})=>{"connected"===t&&(clearTimeout(r),this.provider.off("status",s),this.isConnected=!0,e())};this.provider.on("status",s),this.provider.wsconnected&&(clearTimeout(r),this.provider.off("status",s),this.isConnected=!0,e())}))}disconnect(){this.provider&&this.provider.disconnect(),this.isConnected=!1}async reconnect(){return this.disconnect(),this.connect()}destroy(){this.provider&&this.provider.destroy(),this.isConnected=!1}}export{U as BroadcastSyncProvider,_ as WebSocketSyncProvider}
1
+ export{g as getAssetPath,r as render,s as setAssetPath,a as setNonce,b as setPlatformOptions}from"./p-BWj1eE2b.js";export{d as KritzelBrushTool,b as KritzelGroup,a as KritzelImage,e as KritzelLineTool,h as KritzelSelectionTool,c as KritzelShape,g as KritzelShapeTool,K as KritzelText,f as KritzelTextTool,S as ShapeType}from"./p-BPQOTise.js";export{a as KritzelLine,K as KritzelPath}from"./p-DQK_4lkI.js";export{A as APP_STATE_MIGRATIONS,I as IndexedDBSyncProvider,d as KritzelAlignment,c as KritzelAnchorManager,b as KritzelCursorHelper,K as KritzelEraserTool,a as KritzelImageTool,W as WORKSPACE_MIGRATIONS,r as runMigrations}from"./p-CgtykATT.js";import*as t from"yjs";import{WebsocketProvider as i}from"y-websocket";export{D as DEFAULT_BRUSH_CONFIG,b as DEFAULT_LINE_TOOL_CONFIG,a as DEFAULT_TEXT_CONFIG,H as HocuspocusSyncProvider,KritzelEditor,defineCustomElement as defineCustomElementKritzelEditor}from"./kritzel-editor.js";export{K as KritzelWorkspace,W as WORKSPACE_EXPORT_VERSION}from"./p-DhMlShij.js";export{K as KritzelThemeManager,d as darkTheme,l as lightTheme}from"./p-CjazGGq3.js";export{C as CURRENT_APP_STATE_SCHEMA_VERSION,a as CURRENT_WORKSPACE_SCHEMA_VERSION}from"./p-CW-VyJgK.js";export{KritzelActiveUsers,defineCustomElement as defineCustomElementKritzelActiveUsers}from"./kritzel-active-users.js";export{KritzelAvatar,defineCustomElement as defineCustomElementKritzelAvatar}from"./kritzel-avatar.js";export{KritzelAwarenessCursors,defineCustomElement as defineCustomElementKritzelAwarenessCursors}from"./kritzel-awareness-cursors.js";export{KritzelBackToContent,defineCustomElement as defineCustomElementKritzelBackToContent}from"./kritzel-back-to-content.js";export{KritzelBrushStyle,defineCustomElement as defineCustomElementKritzelBrushStyle}from"./kritzel-brush-style.js";export{KritzelButton,defineCustomElement as defineCustomElementKritzelButton}from"./kritzel-button.js";export{KritzelColor,defineCustomElement as defineCustomElementKritzelColor}from"./kritzel-color.js";export{KritzelColorPalette,defineCustomElement as defineCustomElementKritzelColorPalette}from"./kritzel-color-palette.js";export{KritzelContextMenu,defineCustomElement as defineCustomElementKritzelContextMenu}from"./kritzel-context-menu.js";export{KritzelControls,defineCustomElement as defineCustomElementKritzelControls}from"./kritzel-controls.js";export{KritzelCurrentUser,defineCustomElement as defineCustomElementKritzelCurrentUser}from"./kritzel-current-user.js";export{KritzelCurrentUserDialog,defineCustomElement as defineCustomElementKritzelCurrentUserDialog}from"./kritzel-current-user-dialog.js";export{KritzelCursorTrail,defineCustomElement as defineCustomElementKritzelCursorTrail}from"./kritzel-cursor-trail.js";export{KritzelDialog,defineCustomElement as defineCustomElementKritzelDialog}from"./kritzel-dialog.js";export{KritzelDropdown,defineCustomElement as defineCustomElementKritzelDropdown}from"./kritzel-dropdown.js";export{KritzelEngine,defineCustomElement as defineCustomElementKritzelEngine}from"./kritzel-engine.js";export{KritzelExport,defineCustomElement as defineCustomElementKritzelExport}from"./kritzel-export.js";export{KritzelFont,defineCustomElement as defineCustomElementKritzelFont}from"./kritzel-font.js";export{KritzelFontFamily,defineCustomElement as defineCustomElementKritzelFontFamily}from"./kritzel-font-family.js";export{KritzelFontSize,defineCustomElement as defineCustomElementKritzelFontSize}from"./kritzel-font-size.js";export{KritzelIcon,defineCustomElement as defineCustomElementKritzelIcon}from"./kritzel-icon.js";export{KritzelInput,defineCustomElement as defineCustomElementKritzelInput}from"./kritzel-input.js";export{KritzelLineEndings,defineCustomElement as defineCustomElementKritzelLineEndings}from"./kritzel-line-endings.js";export{KritzelLoginDialog,defineCustomElement as defineCustomElementKritzelLoginDialog}from"./kritzel-login-dialog.js";export{KritzelMasterDetail,defineCustomElement as defineCustomElementKritzelMasterDetail}from"./kritzel-master-detail.js";export{KritzelMenu,defineCustomElement as defineCustomElementKritzelMenu}from"./kritzel-menu.js";export{KritzelMenuItem,defineCustomElement as defineCustomElementKritzelMenuItem}from"./kritzel-menu-item.js";export{KritzelMoreMenu,defineCustomElement as defineCustomElementKritzelMoreMenu}from"./kritzel-more-menu.js";export{KritzelNumericInput,defineCustomElement as defineCustomElementKritzelNumericInput}from"./kritzel-numeric-input.js";export{KritzelOpacitySlider,defineCustomElement as defineCustomElementKritzelOpacitySlider}from"./kritzel-opacity-slider.js";export{KritzelPillTabs,defineCustomElement as defineCustomElementKritzelPillTabs}from"./kritzel-pill-tabs.js";export{KritzelPortal,defineCustomElement as defineCustomElementKritzelPortal}from"./kritzel-portal.js";export{KritzelSettings,defineCustomElement as defineCustomElementKritzelSettings}from"./kritzel-settings.js";export{KritzelShapeFill,defineCustomElement as defineCustomElementKritzelShapeFill}from"./kritzel-shape-fill.js";export{KritzelShareDialog,defineCustomElement as defineCustomElementKritzelShareDialog}from"./kritzel-share-dialog.js";export{KritzelSlideToggle,defineCustomElement as defineCustomElementKritzelSlideToggle}from"./kritzel-slide-toggle.js";export{KritzelSplitButton,defineCustomElement as defineCustomElementKritzelSplitButton}from"./kritzel-split-button.js";export{KritzelStrokeSize,defineCustomElement as defineCustomElementKritzelStrokeSize}from"./kritzel-stroke-size.js";export{KritzelToolConfig,defineCustomElement as defineCustomElementKritzelToolConfig}from"./kritzel-tool-config.js";export{KritzelTooltip,defineCustomElement as defineCustomElementKritzelTooltip}from"./kritzel-tooltip.js";export{KritzelUtilityPanel,defineCustomElement as defineCustomElementKritzelUtilityPanel}from"./kritzel-utility-panel.js";export{KritzelWorkspaceManager,defineCustomElement as defineCustomElementKritzelWorkspaceManager}from"./kritzel-workspace-manager.js";const o=Math.floor,n=127,m=Number.MAX_SAFE_INTEGER;class u{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const z=()=>new u,E=e=>{const t=new Uint8Array((e=>{let t=e.cpos;for(let r=0;r<e.bufs.length;r++)t+=e.bufs[r].length;return t})(e));let r=0;for(let s=0;s<e.bufs.length;s++){const i=e.bufs[s];t.set(i,r),r+=i.length}return t.set(new Uint8Array(e.cbuf.buffer,0,e.cpos),r),t},p=(e,t)=>{const r=e.cbuf.length;e.cpos===r&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(2*r),e.cpos=0),e.cbuf[e.cpos++]=t},k=(e,t)=>{for(;t>n;)p(e,128|n&t),t=o(t/128);p(e,n&t)},x=(e,t)=>{k(e,t.byteLength),((e,t)=>{const r=e.cbuf.length,s=e.cpos,i=((e,t)=>e<t?e:t)(r-s,t.length),o=t.length-i;e.cbuf.set(t.subarray(0,i),s),e.cpos+=i,o>0&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(((e,t)=>e>t?e:t)(2*r,o)),e.cbuf.set(t.subarray(i)),e.cpos=o)})(e,t)},j=e=>Error(e),T=j("Unexpected end of array"),y=j("Integer out of Range");class w{constructor(e){this.arr=e,this.pos=0}}const P=e=>((e,t)=>{const r=new Uint8Array(e.arr.buffer,e.pos+e.arr.byteOffset,t);return e.pos+=t,r})(e,M(e)),M=e=>{let t=0,r=1;const s=e.arr.length;for(;e.pos<s;){const s=e.arr[e.pos++];if(t+=(s&n)*r,r*=128,s<128)return t;if(t>m)throw y}throw T};class U{type="local";doc;channel;_synced=!1;constructor(e,t,r){this.doc=t,this.channel=new BroadcastChannel(e),this.channel.onmessage=e=>{this.handleMessage(e.data)},this.doc.on("update",this.handleDocUpdate),this.broadcastSync(),setTimeout((()=>{this._synced=!0}),100),r?.quiet||console.info("BroadcastChannel Provider initialized: "+e)}handleDocUpdate=(e,t)=>{if(t!==this){const t=z();k(t,0),x(t,e),this.channel.postMessage(E(t))}};handleMessage(e){const r=(e=>new w(e))(new Uint8Array(e));switch(M(r)){case 0:const e=P(r);t.applyUpdate(this.doc,e,this);break;case 1:this.broadcastSync();break;case 2:const s=P(r),i=t.encodeStateAsUpdate(this.doc,s);if(i.length>0){const e=z();k(e,0),x(e,i),this.channel.postMessage(E(e))}}}broadcastSync(){const e=z();k(e,2),x(e,t.encodeStateVector(this.doc)),this.channel.postMessage(E(e))}async connect(){if(!this._synced)return new Promise((e=>{const t=()=>{this._synced?e():setTimeout(t,50)};t()}))}disconnect(){}async reconnect(){return this.disconnect(),this.connect()}destroy(){this.doc.off("update",this.handleDocUpdate),this.channel.close()}}class _{type="network";provider;isConnected=!1;_quiet=!1;get awareness(){return this.provider.awareness}constructor(e,t,r){const s=r?.url||"ws://localhost:1234",o=r?.roomName||e;this.provider=new i(s,o,t,{params:r?.params,protocols:r?.protocols,WebSocketPolyfill:r?.WebSocketPolyfill,awareness:r?.awareness,maxBackoffTime:r?.maxBackoffTime,disableBc:!0}),this._quiet=r?.quiet??!1,this.setupEventListeners(),this._quiet||console.info(`WebSocket Provider initialized: ${s}/${o}`)}static with(e){return{create:(t,r,s)=>{const i=s?{...e,...s}:e;return new _(t,r,i)}}}setupEventListeners(){this.provider.on("status",(({status:e})=>{"connected"===e?(this.isConnected=!0,this._quiet||console.info("WebSocket connected")):"disconnected"===e&&(this.isConnected=!1,this._quiet||console.info("WebSocket disconnected"))})),this.provider.on("sync",(e=>{e&&!this._quiet&&console.info("WebSocket synced")}))}async connect(){if(!this.isConnected)return new Promise(((e,t)=>{const r=setTimeout((()=>{t(Error("WebSocket connection timeout"))}),1e4),s=({status:t})=>{"connected"===t&&(clearTimeout(r),this.provider.off("status",s),this.isConnected=!0,e())};this.provider.on("status",s),this.provider.wsconnected&&(clearTimeout(r),this.provider.off("status",s),this.isConnected=!0,e())}))}disconnect(){this.provider&&this.provider.disconnect(),this.isConnected=!1}async reconnect(){return this.disconnect(),this.connect()}destroy(){this.provider&&this.provider.destroy(),this.isConnected=!1}}export{U as BroadcastSyncProvider,_ as WebSocketSyncProvider}
@@ -1 +1 @@
1
- import{K as o,d as s}from"./p-xYCbKFih.js";const p=o,r=s;export{p as KritzelAwarenessCursors,r as defineCustomElement}
1
+ import{K as o,d as s}from"./p-B4h_tGG1.js";const t=o,p=s;export{t as KritzelAwarenessCursors,p as defineCustomElement}
@@ -1 +1 @@
1
- import{K as o,d as s}from"./p-B-Gej_Ak.js";const p=o,r=s;export{p as KritzelControls,r as defineCustomElement}
1
+ import{K as o,d as s}from"./p-C35iuSnC.js";const p=o,r=s;export{p as KritzelControls,r as defineCustomElement}