kritzel-stencil 0.4.8 → 0.4.10

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 (166) hide show
  1. package/dist/cjs/index.cjs.js +9 -1
  2. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +1427 -1289
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{schema.constants-gDeS7USU.js → schema.constants-C6PknABJ.js} +81 -6
  5. package/dist/cjs/stencil.cjs.js +1 -1
  6. package/dist/collection/classes/objects/image.class.js +9 -0
  7. package/dist/collection/classes/objects/path.class.js +9 -0
  8. package/dist/collection/classes/objects/shape.class.js +9 -0
  9. package/dist/collection/classes/providers/sync/broadcast-sync-provider.class.js +1 -0
  10. package/dist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js +2 -0
  11. package/dist/collection/classes/providers/sync/in-memory-sync-provider.class.js +1 -0
  12. package/dist/collection/classes/providers/sync/indexeddb-sync-provider.class.js +1 -0
  13. package/dist/collection/classes/providers/sync/websocket-sync-provider.class.js +2 -0
  14. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +201 -67
  15. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +137 -170
  16. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +1 -1
  17. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  18. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  19. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  20. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  21. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  22. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  23. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  24. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  25. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  26. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  27. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  28. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  29. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  30. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  31. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  32. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  33. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +5 -5
  34. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  35. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  36. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  37. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +7 -7
  38. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +2 -2
  39. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +2 -2
  40. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +2 -2
  41. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +6 -6
  42. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  43. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  44. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +91 -5
  45. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +2 -2
  46. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +3 -3
  47. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.js +1 -1
  48. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +2 -2
  49. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +1 -1
  50. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +2 -2
  51. package/dist/collection/constants/version.js +1 -1
  52. package/dist/collection/helpers/object.helper.js +11 -0
  53. package/dist/collection/index.js +1 -0
  54. package/dist/collection/interfaces/object-export.interface.js +1 -0
  55. package/dist/collection/interfaces/sync-config.interface.js +21 -1
  56. package/dist/collection/locales/de-locale.js +2 -2
  57. package/dist/collection/locales/en-locale.js +2 -2
  58. package/dist/collection/locales/fr-locale.js +2 -2
  59. package/dist/collection/themes/dark-theme.js +7 -0
  60. package/dist/collection/themes/light-theme.js +7 -0
  61. package/dist/components/index.js +11 -4
  62. package/dist/components/kritzel-active-users.js +1 -1
  63. package/dist/components/kritzel-avatar.js +1 -1
  64. package/dist/components/kritzel-awareness-cursors.js +1 -1
  65. package/dist/components/kritzel-back-to-content.js +1 -1
  66. package/dist/components/kritzel-button.js +1 -1
  67. package/dist/components/kritzel-color-palette.js +1 -1
  68. package/dist/components/kritzel-color.js +1 -1
  69. package/dist/components/kritzel-controls.js +1 -1
  70. package/dist/components/kritzel-current-user-dialog.js +1 -1
  71. package/dist/components/kritzel-current-user.js +1 -1
  72. package/dist/components/kritzel-editor.js +200 -99
  73. package/dist/components/kritzel-engine.js +1 -1
  74. package/dist/components/kritzel-export.js +1 -1
  75. package/dist/components/kritzel-font-size.js +1 -1
  76. package/dist/components/kritzel-font.js +1 -1
  77. package/dist/components/kritzel-input.js +1 -1
  78. package/dist/components/kritzel-loading-overlay.js +1 -1
  79. package/dist/components/kritzel-login-dialog.js +1 -1
  80. package/dist/components/kritzel-master-detail.js +1 -1
  81. package/dist/components/kritzel-menu-item.js +1 -1
  82. package/dist/components/kritzel-menu.js +1 -1
  83. package/dist/components/kritzel-more-menu.js +1 -1
  84. package/dist/components/kritzel-numeric-input.js +1 -1
  85. package/dist/components/kritzel-opacity-slider.js +1 -1
  86. package/dist/components/kritzel-portal.js +1 -1
  87. package/dist/components/kritzel-settings.js +1 -1
  88. package/dist/components/kritzel-share-dialog.js +1 -1
  89. package/dist/components/kritzel-slide-toggle.js +1 -1
  90. package/dist/components/kritzel-split-button.js +1 -1
  91. package/dist/components/kritzel-stroke-size.js +1 -1
  92. package/dist/components/kritzel-sync-indicator.js +1 -1
  93. package/dist/components/kritzel-tool-config.js +1 -1
  94. package/dist/components/kritzel-tooltip.js +1 -1
  95. package/dist/components/kritzel-utility-panel.js +1 -1
  96. package/dist/components/kritzel-watermark.js +1 -1
  97. package/dist/components/kritzel-workspace-manager.js +1 -1
  98. package/dist/components/kritzel-zoom-panel.js +1 -1
  99. package/dist/components/{p-8xkoVMfO.js → p-2WiGyky4.js} +2 -2
  100. package/dist/components/{p-D8TOEhPY.js → p-30g2W_Gx.js} +3 -3
  101. package/dist/components/{p-DXcjIb_a.js → p-4SPnZZkH.js} +3 -3
  102. package/dist/components/{p-CURiiQfq.js → p-7I4Uzjrw.js} +14 -0
  103. package/dist/components/{p-9m1cAVwG.js → p-B-585egz.js} +3 -3
  104. package/dist/components/{p-COjsYPir.js → p-BP6Fo3rt.js} +2 -2
  105. package/dist/components/{p-BLOPBDUF.js → p-BPsKYMH6.js} +2 -2
  106. package/dist/components/{p-DkY7pIg5.js → p-BX1aRLEi.js} +95 -6
  107. package/dist/components/{p-BMRln59F.js → p-B_lZQo3s.js} +3 -3
  108. package/dist/components/{p-oGAPPwAL.js → p-BoN700-O.js} +2 -2
  109. package/dist/components/{p-BzJEwFtn.js → p-BozrueXV.js} +1 -1
  110. package/dist/components/{p-DwY5pghH.js → p-Bvv1pGFD.js} +1 -1
  111. package/dist/components/{p-D8bHNNEm.js → p-C6e7eOEb.js} +1238 -1241
  112. package/dist/components/{p-CM1duewg.js → p-CAoN_STZ.js} +2 -2
  113. package/dist/components/{p-CVhcOiEA.js → p-CM65T33m.js} +3 -3
  114. package/dist/components/{p-BknTMcbz.js → p-COylwYw1.js} +16 -16
  115. package/dist/components/{p-BYO6pz8T.js → p-CZ99VWQc.js} +1 -1
  116. package/dist/components/{p-DrQRChp3.js → p-CaBbajU2.js} +2 -2
  117. package/dist/components/{p-BzrxIesp.js → p-CrHvaLRV.js} +1 -1
  118. package/dist/components/{p-BKOsmXB5.js → p-D-UkGru5.js} +4 -4
  119. package/dist/components/{p-BVEGQLBD.js → p-DB58Oa5V.js} +2 -2
  120. package/dist/components/{p-yD_3Z3K1.js → p-DBqoPgev.js} +1 -1
  121. package/dist/components/{p-DIMNEOTW.js → p-DKGg-76-.js} +1 -1
  122. package/dist/components/{p-Dd-pMvlr.js → p-DPONTran.js} +11 -0
  123. package/dist/components/{p-DgnK50xO.js → p-DVXTPI71.js} +1 -1
  124. package/dist/components/{p-DgA865Tp.js → p-DdabFzSa.js} +5 -5
  125. package/dist/components/{p-CMZ09rB1.js → p-Dt7-I2Xz.js} +3 -3
  126. package/dist/components/{p-CwuGA058.js → p-DtnMdWWB.js} +1 -1
  127. package/dist/components/{p-7Rt7ml3v.js → p-Dv4pZx8G.js} +1 -1
  128. package/dist/components/{p-BO9BvTtK.js → p-DwMqCX2P.js} +2 -2
  129. package/dist/components/{p-Cr2z2UBL.js → p-Dy3uucl_.js} +7 -7
  130. package/dist/components/{p-Ckm1Aq0V.js → p-GKmqCI8r.js} +2 -2
  131. package/dist/components/{p-DSOc0eIT.js → p-PjPPCHVL.js} +1 -1
  132. package/dist/components/{p-OLfoATNk.js → p-ShJrZeyt.js} +1 -1
  133. package/dist/components/{p-0H4HOJjy.js → p-bAacqNHq.js} +11 -2
  134. package/dist/components/{p-BU-FZuj0.js → p-vqEUQ-4Q.js} +3 -3
  135. package/dist/components/{p-DDbO5q-e.js → p-x3z0Cz1B.js} +4 -4
  136. package/dist/esm/index.js +9 -2
  137. package/dist/esm/kritzel-active-users_47.entry.js +1427 -1289
  138. package/dist/esm/loader.js +1 -1
  139. package/dist/esm/{schema.constants-Rpm1NA9u.js → schema.constants-C-oQbvCY.js} +81 -7
  140. package/dist/esm/stencil.js +1 -1
  141. package/dist/stencil/index.esm.js +9 -2
  142. package/dist/stencil/{p-Rpm1NA9u.js → p-C-oQbvCY.js} +81 -7
  143. package/dist/stencil/{p-8c1b7b08.entry.js → p-be87f9d3.entry.js} +1427 -1289
  144. package/dist/stencil/stencil.esm.js +1 -1
  145. package/dist/types/classes/objects/image.class.d.ts +3 -0
  146. package/dist/types/classes/objects/path.class.d.ts +3 -0
  147. package/dist/types/classes/objects/shape.class.d.ts +3 -0
  148. package/dist/types/classes/providers/sync/broadcast-sync-provider.class.d.ts +1 -0
  149. package/dist/types/classes/providers/sync/hocuspocus-sync-provider.class.d.ts +1 -0
  150. package/dist/types/classes/providers/sync/in-memory-sync-provider.class.d.ts +1 -0
  151. package/dist/types/classes/providers/sync/indexeddb-sync-provider.class.d.ts +1 -0
  152. package/dist/types/classes/providers/sync/websocket-sync-provider.class.d.ts +1 -0
  153. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +17 -3
  154. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +16 -34
  155. package/dist/types/components/ui/kritzel-more-menu/kritzel-more-menu.d.ts +10 -1
  156. package/dist/types/components.d.ts +27 -26
  157. package/dist/types/constants/version.d.ts +1 -1
  158. package/dist/types/helpers/object.helper.d.ts +4 -0
  159. package/dist/types/index.d.ts +1 -0
  160. package/dist/types/interfaces/localization.interface.d.ts +1 -1
  161. package/dist/types/interfaces/menu-item.interface.d.ts +1 -1
  162. package/dist/types/interfaces/object-export.interface.d.ts +20 -0
  163. package/dist/types/interfaces/sync-config.interface.d.ts +5 -0
  164. package/dist/types/interfaces/sync-provider.interface.d.ts +5 -0
  165. package/dist/types/interfaces/theme.interface.d.ts +11 -5
  166. package/package.json +1 -1
@@ -16,6 +16,7 @@ import { DEFAULT_SHAPE_CONFIG } from "../../../configs/default-shape-tool.config
16
16
  import { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from "../../../constants/engine.constants";
17
17
  import { KritzelKeyboardHelper } from "../../../helpers/keyboard.helper";
18
18
  import { KritzelDevicesHelper } from "../../../helpers/devices.helper";
19
+ import { hasRemoteSyncProvider } from "../../../interfaces/sync-config.interface";
19
20
  import { DEFAULT_ASSET_STORAGE_CONFIG } from "../../..";
20
21
  import { DEFAULT_SYNC_CONFIG } from "../../../configs/default-sync.config";
21
22
  import { ThemeHelper } from "../../../helpers/theme.helper";
@@ -123,6 +124,19 @@ export class KritzelEditor {
123
124
  group: 'clipboard',
124
125
  action: (menu, _) => this.engineRef.paste(menu.x, menu.y),
125
126
  },
127
+ {
128
+ label: 'menu.export',
129
+ icon: 'upload',
130
+ group: 'clipboard',
131
+ visible: (_, objects) => this.canExportObjects(objects),
132
+ action: (_, objects) => {
133
+ const format = this.getPreferredExportFormat(objects);
134
+ if (!format) {
135
+ return;
136
+ }
137
+ void this.engineRef.exportSelectedObject(format);
138
+ },
139
+ },
126
140
  {
127
141
  label: 'menu.order',
128
142
  icon: 'ordering',
@@ -164,16 +178,43 @@ export class KritzelEditor {
164
178
  },
165
179
  ],
166
180
  },
181
+ { label: 'menu.delete', icon: 'delete', group: 'edit', action: () => this.engineRef.delete() },
182
+ ];
183
+ moreMenuItems = [
184
+ {
185
+ id: 'share',
186
+ label: 'menu.share',
187
+ icon: 'share',
188
+ isVisible: async () => hasRemoteSyncProvider(this.syncConfig),
189
+ action: () => {
190
+ if (!this.isLoggedIn && this.loginConfig) {
191
+ this.openLoginDialog();
192
+ return;
193
+ }
194
+ this.shareDialogRef.open();
195
+ },
196
+ },
167
197
  {
198
+ id: 'export',
168
199
  label: 'menu.export',
200
+ icon: 'upload',
201
+ action: async () => {
202
+ const preview = await this.engineRef.getScreenshot('png');
203
+ this.exportRef.open(preview ?? undefined);
204
+ },
205
+ },
206
+ {
207
+ id: 'import',
208
+ label: 'menu.import',
169
209
  icon: 'download',
170
- group: 'export',
171
- children: [
172
- { label: 'menu.exportAsSvg', icon: 'download', action: () => this.engineRef.exportSelectedObjectsAsSvg() },
173
- { label: 'menu.exportAsPng', icon: 'download', action: () => this.engineRef.exportSelectedObjectsAsPng() },
174
- ],
210
+ action: () => this.engineRef.importFromFile(),
211
+ },
212
+ {
213
+ id: 'settings',
214
+ label: 'menu.settings',
215
+ icon: 'settings',
216
+ action: () => this.settingsRef.open(),
175
217
  },
176
- { label: 'menu.delete', icon: 'delete', group: 'edit', action: () => this.engineRef.delete() },
177
218
  ];
178
219
  themes;
179
220
  theme = 'light';
@@ -245,6 +286,9 @@ export class KritzelEditor {
245
286
  isNotificationDismissing = false;
246
287
  contextMenuState;
247
288
  normalizedControls = [];
289
+ resolvedMoreMenuItems = [];
290
+ isSyncing = false;
291
+ isLoadingOverlayVisible = false;
248
292
  notificationDismissTimeout;
249
293
  notificationDismissAnimationTimeout;
250
294
  notificationDisplayDurationMs = 5000;
@@ -287,6 +331,18 @@ export class KritzelEditor {
287
331
  onControlsChange(newValue) {
288
332
  this.normalizedControls = this.normalizeControls(newValue);
289
333
  }
334
+ onMoreMenuItemsChange() {
335
+ this.recomputeMoreMenuItems();
336
+ }
337
+ onSyncConfigChange() {
338
+ this.recomputeMoreMenuItems();
339
+ }
340
+ onLoginConfigChange() {
341
+ this.recomputeMoreMenuItems();
342
+ }
343
+ onUserChange() {
344
+ this.recomputeMoreMenuItems();
345
+ }
290
346
  onActiveWorkspaceIdChange(newId) {
291
347
  // If no ID is provided, do nothing (allows other logic to control activeWorkspace)
292
348
  if (!newId) {
@@ -336,6 +392,7 @@ export class KritzelEditor {
336
392
  }
337
393
  this.resolvedTerms = await this.engineRef.getResolvedTerms();
338
394
  this.availableLocaleOptions = await this.engineRef.getAvailableLocaleOptions();
395
+ this.recomputeMoreMenuItems();
339
396
  }
340
397
  onTouchStart(event) {
341
398
  if (event.cancelable) {
@@ -496,11 +553,14 @@ export class KritzelEditor {
496
553
  async exportViewportAsSvg(options) {
497
554
  return this.engineRef.exportViewportAsSvg(options);
498
555
  }
499
- async exportSelectedObjectsAsPng() {
500
- return this.engineRef.exportSelectedObjectsAsPng();
556
+ async getSelectedObjectSupportedExportFormats() {
557
+ return this.engineRef.getSelectedObjectSupportedExportFormats();
558
+ }
559
+ async canExportSelectedObjectAs(format) {
560
+ return this.engineRef.canExportSelectedObjectAs(format);
501
561
  }
502
- async exportSelectedObjectsAsSvg() {
503
- return this.engineRef.exportSelectedObjectsAsSvg();
562
+ async exportSelectedObject(format) {
563
+ return this.engineRef.exportSelectedObject(format);
504
564
  }
505
565
  async downloadAsJson(filename) {
506
566
  return this.engineRef.downloadAsJson(filename);
@@ -567,6 +627,7 @@ export class KritzelEditor {
567
627
  currentUserDialogRef;
568
628
  componentWillLoad() {
569
629
  this.normalizedControls = this.normalizeControls(this.controls);
630
+ this.recomputeMoreMenuItems();
570
631
  this.loadSettingsFromStorage();
571
632
  this.applyTheme();
572
633
  }
@@ -587,13 +648,18 @@ export class KritzelEditor {
587
648
  };
588
649
  });
589
650
  }
651
+ recomputeMoreMenuItems() {
652
+ if (this.moreMenuItems) {
653
+ this.resolvedMoreMenuItems = this.moreMenuItems;
654
+ return;
655
+ }
656
+ }
590
657
  applyTheme() {
591
658
  const themeObj = this.resolveThemeObject();
592
659
  ThemeHelper.applyThemeToElement(this.host, themeObj);
593
660
  }
594
661
  resolveThemeObject() {
595
- return this.themes?.find(t => t.name === this.theme)
596
- ?? (this.theme === 'dark' ? darkTheme : lightTheme);
662
+ return this.themes?.find(t => t.name === this.theme) ?? (this.theme === 'dark' ? darkTheme : lightTheme);
597
663
  }
598
664
  componentDidLoad() {
599
665
  this.registerCustomSvgIcons();
@@ -628,7 +694,7 @@ export class KritzelEditor {
628
694
  syncConfig: this.syncConfig,
629
695
  assetStorageConfig: this.assetStorageConfig,
630
696
  loginConfig: this.loginConfig,
631
- theme: this.theme
697
+ theme: this.theme,
632
698
  });
633
699
  }
634
700
  async onEngineReady(event) {
@@ -791,43 +857,6 @@ export class KritzelEditor {
791
857
  }
792
858
  this.themeChange.emit(event.detail.theme);
793
859
  }
794
- get moreMenuItems() {
795
- return [
796
- {
797
- id: 'share',
798
- label: this.resolvedTerms['menu.share'] ?? 'Share',
799
- icon: 'share',
800
- action: () => {
801
- if (!this.isLoggedIn && this.loginConfig) {
802
- this.openLoginDialog();
803
- return;
804
- }
805
- this.shareDialogRef.open();
806
- },
807
- },
808
- {
809
- id: 'export',
810
- label: this.resolvedTerms['menu.export'] ?? 'Export',
811
- icon: 'upload',
812
- action: async () => {
813
- const preview = await this.engineRef.getScreenshot('png');
814
- this.exportRef.open(preview ?? undefined);
815
- },
816
- },
817
- {
818
- id: 'import',
819
- label: this.resolvedTerms['menu.import'] ?? 'Import',
820
- icon: 'download',
821
- action: () => this.engineRef.importFromFile(),
822
- },
823
- {
824
- id: 'settings',
825
- label: this.resolvedTerms['menu.settings'] ?? 'Settings',
826
- icon: 'settings',
827
- action: () => this.settingsRef.open(),
828
- }
829
- ];
830
- }
831
860
  handleToggleIsPublic = async (event) => {
832
861
  const isPublic = event.detail;
833
862
  const activeWorkspace = await this.engineRef.getActiveWorkspace();
@@ -857,6 +886,28 @@ export class KritzelEditor {
857
886
  get isLoggedIn() {
858
887
  return !!this.user && !this.user.isGuest;
859
888
  }
889
+ canExportObjectsAs(objects, format) {
890
+ if (!objects || objects.length !== 1) {
891
+ return false;
892
+ }
893
+ const [selected] = objects;
894
+ if (!ObjectHelper.isKritzelExportable(selected)) {
895
+ return false;
896
+ }
897
+ return selected.getSupportedExportFormats().includes(format);
898
+ }
899
+ canExportObjects(objects) {
900
+ return this.canExportObjectsAs(objects, 'png') || this.canExportObjectsAs(objects, 'svg');
901
+ }
902
+ getPreferredExportFormat(objects) {
903
+ if (this.canExportObjectsAs(objects, 'png')) {
904
+ return 'png';
905
+ }
906
+ if (this.canExportObjectsAs(objects, 'svg')) {
907
+ return 'svg';
908
+ }
909
+ return null;
910
+ }
860
911
  async openLoginDialog() {
861
912
  this.loginDialogRef?.open();
862
913
  }
@@ -1033,41 +1084,41 @@ export class KritzelEditor {
1033
1084
  const isLoggedIn = this.isLoggedIn;
1034
1085
  const shouldShowCurrentUser = isLoggedIn;
1035
1086
  const shouldShowLoginButton = this.isReady && !!this.loginConfig && !isLoggedIn;
1036
- return (h(Host, { key: 'ab06876e3a07e97c3788113ffd0483bbb2819d5b' }, h("div", { key: 'e393eacfad2b224a720e5a97b047af8dd3ce97a5', class: "editor-content", style: {
1087
+ return (h(Host, { key: 'd9d87b5ca40972d7ab2c5986f340278347f78c6e' }, h("div", { key: 'd8da2ed24d19c550420689c6720dc491fe0d3a22', class: "editor-content", style: {
1037
1088
  opacity: this.isEditorVisible ? '1' : '0',
1038
1089
  visibility: this.isEditorVisible ? 'visible' : 'hidden',
1039
1090
  transition: 'opacity 0.2s ease-in-out, visibility 0.2s ease-in-out',
1040
- } }, h("div", { key: 'd9dcbd6859bea28d75c7f8b0cc26ea3ba58b2433', class: "top-left-buttons" }, h("kritzel-workspace-manager", { key: '945953a6c95520316c4e0f35503a824414bd3c7a', visible: this.isWorkspaceManagerVisible, workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, terms: this.resolvedTerms, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-back-to-content", { key: '8b345bf6ce0ec33ca35f1f630af2050b95bc6b74', visible: this.isBackToContentButtonVisible, text: this.resolvedTerms['backToContent.label'] ?? 'Back to content', onBackToContent: () => this.backToContent() })), this.activeNotification && (h("div", { key: '1b965de38a7f1f40d5d91431801e873289416924', class: "top-center-notification-layer", role: "presentation" }, h("div", { key: 'f165dc7acc5e1bc7923fec217ebc16fe4a3f2ece', class: { 'top-center-notification-container': true, 'is-dismissing': this.isNotificationDismissing }, role: "presentation" }, h("kritzel-notification-card", { key: 'c5cf7edc1f921e35310c89449f5a043dda171a04', notification: this.activeNotification, locale: this.locale, onDismiss: this.dismissNotification, onHoverChange: event => this.handleNotificationHoverChange(event) })))), this.contextMenuState && this.contextMenuState.items.length > 0 && (h("kritzel-context-menu", { key: 'fc3417276f0034e7fc7e8360d3f3ce57106146b2', class: "context-menu", items: this.contextMenuState.items, objects: this.contextMenuState.objects, style: {
1091
+ } }, h("div", { key: '82a5d216e7c95307b1bdbd1f06fdfe881c1c50d4', class: "top-left-buttons" }, h("kritzel-workspace-manager", { key: 'de13673384b44bb6bd309a927a2866a9b78b519e', visible: this.isWorkspaceManagerVisible, workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, terms: this.resolvedTerms, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-back-to-content", { key: 'f68610d7d91713f7a0ec5f0135d208769f7fab9c', visible: this.isBackToContentButtonVisible, text: this.resolvedTerms['backToContent.label'] ?? 'Back to content', onBackToContent: () => this.backToContent() })), this.activeNotification && (h("div", { key: '9d1f972fb67050b1f996e3088710713fa1219b9a', class: "top-center-notification-layer", role: "presentation" }, h("div", { key: '295eff0a02f7cc79ad8e80cda23baa3c576ce156', class: { 'top-center-notification-container': true, 'is-dismissing': this.isNotificationDismissing }, role: "presentation" }, h("kritzel-notification-card", { key: '1d1bf140ddfb7b927d30fb1d77e7b887240d7deb', notification: this.activeNotification, locale: this.locale, onDismiss: this.dismissNotification, onHoverChange: event => this.handleNotificationHoverChange(event) })))), this.contextMenuState && this.contextMenuState.items.length > 0 && (h("kritzel-context-menu", { key: '1062bc9554e5834ef2002fbfe953f7938866fb84', class: "context-menu", items: this.contextMenuState.items, objects: this.contextMenuState.objects, style: {
1041
1092
  position: 'absolute',
1042
1093
  left: `${this.contextMenuState.position.x}px`,
1043
1094
  top: `${this.contextMenuState.position.y}px`,
1044
1095
  zIndex: '10002',
1045
- }, onActionSelected: event => this.handleContextMenuActionSelected(event), onClose: () => this.hideContextMenu() })), h("kritzel-engine", { key: '0c9df0386d38a87f50d324cfc51307a1cb947a58', ref: el => {
1096
+ }, onActionSelected: event => this.handleContextMenuActionSelected(event), onClose: () => this.hideContextMenu() })), h("kritzel-sync-indicator", { key: '0094a026828473988f857d82cfccb811f36f049c', visible: this.isSyncing, text: "Syncing..." }), h("kritzel-loading-overlay", { key: '680096e20b6175104a866b9a92ca4c1d0087c93a', visible: this.isLoadingOverlayVisible, text: this.resolvedTerms['editor.loading'] ?? 'Loading...' }), h("kritzel-engine", { key: '0698a44fcbf2d6ea786d53502350ac0c9ffb9d66', ref: el => {
1046
1097
  if (el) {
1047
1098
  this.engineRef = el;
1048
1099
  }
1049
- }, workspace: this.activeWorkspace, activeWorkspaceId: this.activeWorkspaceId, editorId: this.editorId, syncConfig: this.syncConfig, assetStorageConfig: this.assetStorageConfig, user: this.user, scaleMax: this.scaleMax, lockDrawingScale: this.lockDrawingScale, isObjectDistanceFadingActive: this.isObjectDistanceFadingActive, scaleMin: this.scaleMin, cursorTarget: this.cursorTarget, isLoading: this.isLoading, viewportBoundaryLeft: this.viewportBoundaryLeft, viewportBoundaryRight: this.viewportBoundaryRight, viewportBoundaryTop: this.viewportBoundaryTop, viewportBoundaryBottom: this.viewportBoundaryBottom, isPanningEnabled: this.isPanningEnabled, isZoomingEnabled: this.isZoomingEnabled, theme: this.theme, themes: this.themes, licenseKey: this.licenseKey, locale: this.locale, locales: this.locales, fallbackLocale: this.fallbackLocale, debugInfo: this.debugInfo, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => this.handleWorkspacesChange(event), onActiveWorkspaceChange: event => this.handleActiveWorkspaceChange(event), onObjectsChange: event => this.handleObjectsChange(event), onObjectsAdded: event => this.handleObjectsAdded(event), onObjectsRemoved: event => this.handleObjectsRemoved(event), onObjectsUpdated: event => this.handleObjectsUpdated(event), onUndoStateChange: event => this.handleUndoStateChange(event), onObjectsInViewportChange: event => this.handleObjectsInViewportChange(event), onViewportChange: event => this.handleViewportChange(event), onAwarenessChange: event => this.handleAwarenessChange(event), onNotificationsChange: event => this.handleNotificationsChange(event), onContextMenuStateChange: event => this.handleContextMenuStateChange(event) }), h("kritzel-controls", { key: '46d8e9c45c7bed24fc02d17c8fef836d596088d7', visible: this.isControlsVisible, class: { 'keyboard-open': this.isVirtualKeyboardOpen }, ref: el => {
1100
+ }, workspace: this.activeWorkspace, activeWorkspaceId: this.activeWorkspaceId, editorId: this.editorId, syncConfig: this.syncConfig, assetStorageConfig: this.assetStorageConfig, user: this.user, scaleMax: this.scaleMax, lockDrawingScale: this.lockDrawingScale, isObjectDistanceFadingActive: this.isObjectDistanceFadingActive, scaleMin: this.scaleMin, cursorTarget: this.cursorTarget, isLoading: this.isLoading, viewportBoundaryLeft: this.viewportBoundaryLeft, viewportBoundaryRight: this.viewportBoundaryRight, viewportBoundaryTop: this.viewportBoundaryTop, viewportBoundaryBottom: this.viewportBoundaryBottom, isPanningEnabled: this.isPanningEnabled, isZoomingEnabled: this.isZoomingEnabled, theme: this.theme, themes: this.themes, licenseKey: this.licenseKey, locale: this.locale, locales: this.locales, fallbackLocale: this.fallbackLocale, debugInfo: this.debugInfo, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => this.handleWorkspacesChange(event), onActiveWorkspaceChange: event => this.handleActiveWorkspaceChange(event), onObjectsChange: event => this.handleObjectsChange(event), onObjectsAdded: event => this.handleObjectsAdded(event), onObjectsRemoved: event => this.handleObjectsRemoved(event), onObjectsUpdated: event => this.handleObjectsUpdated(event), onUndoStateChange: event => this.handleUndoStateChange(event), onObjectsInViewportChange: event => this.handleObjectsInViewportChange(event), onViewportChange: event => this.handleViewportChange(event), onAwarenessChange: event => this.handleAwarenessChange(event), onNotificationsChange: event => this.handleNotificationsChange(event), onContextMenuStateChange: event => this.handleContextMenuStateChange(event), onSyncingChange: event => (this.isSyncing = event.detail), onLoadingChange: event => (this.isLoadingOverlayVisible = event.detail) }), h("kritzel-controls", { key: '765a670807111ad68e9f8d14bdca2651a33704d4', visible: this.isControlsVisible, class: { 'keyboard-open': this.isVirtualKeyboardOpen }, ref: el => {
1050
1101
  if (el) {
1051
1102
  this.controlsRef = el;
1052
1103
  }
1053
- }, controls: this.normalizedControls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), h("div", { key: 'e3ef94509a82fe435f827b66cf1813969b7dec66', class: "bottom-left-buttons" }, h("kritzel-zoom-panel", { key: '4e6cbdf85f550e6e3037dce3b910c0582ea0320b', visible: this.isZoomPanelVisible, disabled: !this.isZoomingEnabled, zoomPercent: this.currentZoomPercent, terms: this.resolvedTerms, onZoomIn: () => this.zoomIn(), onZoomOut: () => this.zoomOut() })), h("div", { key: 'a62df7f8a68cbed728b701894a5284c2bff39e1e', class: "top-right-buttons" }, h("kritzel-settings", { key: '0b6daf9ff43551df9f86431d398a32913a845925', ref: el => {
1104
+ }, controls: this.normalizedControls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), h("div", { key: 'e7c5ebab4a40b7ab4fa5d19d203129326c0009ed', class: "bottom-left-buttons" }, h("kritzel-zoom-panel", { key: '0aa3891b553d2abcd06e635227fd6bb6656ed739', visible: this.isZoomPanelVisible, disabled: !this.isZoomingEnabled, zoomPercent: this.currentZoomPercent, terms: this.resolvedTerms, onZoomIn: () => this.zoomIn(), onZoomOut: () => this.zoomOut() })), h("div", { key: '824244bbd78784c1d78ab89cc12e206ca61d84cc', class: "top-right-buttons" }, h("kritzel-settings", { key: 'baf4830b6b9ccb6241b1a1baa5cc6ff9d0295fb9', ref: el => {
1054
1105
  if (el) {
1055
1106
  this.settingsRef = el;
1056
1107
  }
1057
- }, shortcuts: this.shortcuts, availableThemes: this.themes && this.themes.length > 0 ? this.themes.map(t => t.name) : ['light', 'dark'], availableLocales: this.availableLocaleOptions, settings: this.currentSettingsConfig, terms: this.resolvedTerms, onSettingsChange: event => this.handleSettingsChange(event) }), h("kritzel-export", { key: '29d02ffd3358fe91d27435cc3fdd5f8ac2ad7cf5', ref: el => {
1108
+ }, shortcuts: this.shortcuts, availableThemes: this.themes && this.themes.length > 0 ? this.themes.map(t => t.name) : ['light', 'dark'], availableLocales: this.availableLocaleOptions, settings: this.currentSettingsConfig, terms: this.resolvedTerms, onSettingsChange: event => this.handleSettingsChange(event) }), h("kritzel-export", { key: '57e2682450c71803cd49bfe65f16e02d9d3358bc', ref: el => {
1058
1109
  if (el) {
1059
1110
  this.exportRef = el;
1060
1111
  }
1061
- }, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), h("kritzel-active-users", { key: '729ca599e46654bc1429b5d91ff73f26d9b6e7bb', users: this.activeUsers }), shouldShowCurrentUser && h("kritzel-current-user", { key: '84c07268072418a82cf504f16803c59a1e37c0ae', user: this.user, terms: this.resolvedTerms, onClick: () => this.currentUserDialogRef?.open() }), shouldShowCurrentUser && (h("kritzel-current-user-dialog", { key: '55189e3da7899628b252e7995b20bc422fce2d5c', ref: el => {
1112
+ }, workspaceName: this.activeWorkspace?.name || 'workspace', terms: this.resolvedTerms, onExportPng: () => this.engineRef.exportViewportAsPng(), onExportSvg: () => this.engineRef.exportViewportAsSvg(), onExportJson: event => this.engineRef.downloadAsJson(event.detail) }), h("kritzel-active-users", { key: '955d2a61b98d937f8eec39ab19f1b73e702c9fd7', users: this.activeUsers }), shouldShowCurrentUser && h("kritzel-current-user", { key: 'c0885e0c8cab1a4cb50c8f6d4b17e03f32cc2b87', user: this.user, terms: this.resolvedTerms, onClick: () => this.currentUserDialogRef?.open() }), shouldShowCurrentUser && (h("kritzel-current-user-dialog", { key: '8209b2562ffb821036bb8e4dacf052cacbe99bee', ref: el => {
1062
1113
  if (el) {
1063
1114
  this.currentUserDialogRef = el;
1064
1115
  this.currentUserDialogRef.addEventListener('logoutRequest', this.handleCurrentUserLogout);
1065
1116
  }
1066
- }, user: this.user, terms: this.resolvedTerms })), shouldShowLoginButton && (h("kritzel-button", { key: 'a55d85769bad635fcc7934f584bf1bf74c1e7ea6', onButtonClick: () => this.loginDialogRef?.open() }, this.resolvedTerms['login.dialogTitle'] ?? 'Sign in')), h("kritzel-more-menu", { key: '67dd879ec3c55c98e32f6112ca53d925f47b56b4', items: this.moreMenuItems, visible: this.isMoreMenuVisible, terms: this.resolvedTerms }), h("kritzel-share-dialog", { key: '5f13130099110eb472022099219e15877ceceb57', ref: el => {
1117
+ }, user: this.user, terms: this.resolvedTerms })), shouldShowLoginButton && h("kritzel-button", { key: '9cec12de2207e8931a08c0a4f6bda39d039dfd1f', onButtonClick: () => this.loginDialogRef?.open() }, this.resolvedTerms['login.dialogTitle'] ?? 'Sign in'), h("kritzel-more-menu", { key: 'fe0e1413148b9ac64e5f058790ba96b856faef9e', items: this.resolvedMoreMenuItems, visible: this.isMoreMenuVisible, terms: this.resolvedTerms }), h("kritzel-share-dialog", { key: 'ea06c88b0cba0464144bea1e2247b37cc5c44646', ref: el => {
1067
1118
  if (el) {
1068
1119
  this.shareDialogRef = el;
1069
1120
  }
1070
- }, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: 'cda0fcdcad75de8730ce10bda425cc0fbe01429a', ref: el => {
1121
+ }, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: 'e9a523d5989284b7e30ac44f55882a17c82c643b', ref: el => {
1071
1122
  if (el) {
1072
1123
  this.loginDialogRef = el;
1073
1124
  }
@@ -1372,7 +1423,32 @@ export class KritzelEditor {
1372
1423
  },
1373
1424
  "getter": false,
1374
1425
  "setter": false,
1375
- "defaultValue": "[\n { label: 'menu.copy', icon: 'copy', group: 'clipboard', action: () => this.engineRef.copy() },\n { label: 'menu.cut', icon: 'cut', group: 'clipboard', action: () => this.engineRef.cut() },\n {\n label: 'menu.paste',\n icon: 'paste',\n group: 'clipboard',\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\n },\n {\n label: 'menu.order',\n icon: 'ordering',\n group: 'other',\n children: [\n { label: 'menu.bringToFront', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\n { label: 'menu.sendToBack', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\n { label: 'menu.moveUp', icon: 'arrow-up-from-dot', action: () => this.engineRef.bringForward() },\n { label: 'menu.moveDown', icon: 'arrow-down-from-dot', action: () => this.engineRef.sendBackward() },\n ],\n },\n {\n label: 'menu.align',\n icon: 'align',\n group: 'other',\n children: [\n { label: 'menu.alignLeft', icon: 'align-start-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.StartHorizontal) },\n { label: 'menu.alignCenterHorizontal', icon: 'align-center-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.CenterHorizontal) },\n { label: 'menu.alignRight', icon: 'align-end-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.EndHorizontal) },\n { label: 'menu.alignTop', icon: 'align-start-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.StartVertical) },\n { label: 'menu.alignCenterVertical', icon: 'align-center-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.CenterVertical) },\n { label: 'menu.alignBottom', icon: 'align-end-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.EndVertical) },\n ],\n },\n {\n label: 'menu.group',\n icon: 'group',\n group: 'other',\n children: [\n {\n label: 'menu.group',\n icon: 'group',\n action: () => this.engineRef.group(),\n },\n {\n label: 'menu.ungroup',\n icon: 'ungroup',\n action: () => this.engineRef.ungroup(),\n },\n ],\n },\n {\n label: 'menu.export',\n icon: 'download',\n group: 'export',\n children: [\n { label: 'menu.exportAsSvg', icon: 'download', action: () => this.engineRef.exportSelectedObjectsAsSvg() },\n { label: 'menu.exportAsPng', icon: 'download', action: () => this.engineRef.exportSelectedObjectsAsPng() },\n ],\n },\n { label: 'menu.delete', icon: 'delete', group: 'edit', action: () => this.engineRef.delete() },\n ]"
1426
+ "defaultValue": "[\n { label: 'menu.copy', icon: 'copy', group: 'clipboard', action: () => this.engineRef.copy() },\n { label: 'menu.cut', icon: 'cut', group: 'clipboard', action: () => this.engineRef.cut() },\n {\n label: 'menu.paste',\n icon: 'paste',\n group: 'clipboard',\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\n },\n {\n label: 'menu.export',\n icon: 'upload',\n group: 'clipboard',\n visible: (_, objects) => this.canExportObjects(objects),\n action: (_, objects) => {\n const format = this.getPreferredExportFormat(objects);\n if (!format) {\n return;\n }\n\n void this.engineRef.exportSelectedObject(format);\n },\n },\n {\n label: 'menu.order',\n icon: 'ordering',\n group: 'other',\n children: [\n { label: 'menu.bringToFront', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\n { label: 'menu.sendToBack', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\n { label: 'menu.moveUp', icon: 'arrow-up-from-dot', action: () => this.engineRef.bringForward() },\n { label: 'menu.moveDown', icon: 'arrow-down-from-dot', action: () => this.engineRef.sendBackward() },\n ],\n },\n {\n label: 'menu.align',\n icon: 'align',\n group: 'other',\n children: [\n { label: 'menu.alignLeft', icon: 'align-start-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.StartHorizontal) },\n { label: 'menu.alignCenterHorizontal', icon: 'align-center-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.CenterHorizontal) },\n { label: 'menu.alignRight', icon: 'align-end-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.EndHorizontal) },\n { label: 'menu.alignTop', icon: 'align-start-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.StartVertical) },\n { label: 'menu.alignCenterVertical', icon: 'align-center-vertical', action: () => this.engineRef.alignObjects(KritzelAlignment.CenterVertical) },\n { label: 'menu.alignBottom', icon: 'align-end-horizontal', action: () => this.engineRef.alignObjects(KritzelAlignment.EndVertical) },\n ],\n },\n {\n label: 'menu.group',\n icon: 'group',\n group: 'other',\n children: [\n {\n label: 'menu.group',\n icon: 'group',\n action: () => this.engineRef.group(),\n },\n {\n label: 'menu.ungroup',\n icon: 'ungroup',\n action: () => this.engineRef.ungroup(),\n },\n ],\n },\n { label: 'menu.delete', icon: 'delete', group: 'edit', action: () => this.engineRef.delete() },\n ]"
1427
+ },
1428
+ "moreMenuItems": {
1429
+ "type": "unknown",
1430
+ "mutable": false,
1431
+ "complexType": {
1432
+ "original": "IKritzelMenuItem[]",
1433
+ "resolved": "IKritzelMenuItem<any>[]",
1434
+ "references": {
1435
+ "IKritzelMenuItem": {
1436
+ "location": "import",
1437
+ "path": "../../../interfaces/menu-item.interface",
1438
+ "id": "src/interfaces/menu-item.interface.ts::IKritzelMenuItem",
1439
+ "referenceLocation": "IKritzelMenuItem"
1440
+ }
1441
+ }
1442
+ },
1443
+ "required": false,
1444
+ "optional": true,
1445
+ "docs": {
1446
+ "tags": [],
1447
+ "text": ""
1448
+ },
1449
+ "getter": false,
1450
+ "setter": false,
1451
+ "defaultValue": "[\n {\n id: 'share',\n label: 'menu.share',\n icon: 'share',\n isVisible: async () => hasRemoteSyncProvider(this.syncConfig),\n action: () => {\n if (!this.isLoggedIn && this.loginConfig) {\n this.openLoginDialog();\n return;\n }\n this.shareDialogRef.open();\n },\n },\n {\n id: 'export',\n label: 'menu.export',\n icon: 'upload',\n action: async () => {\n const preview = await this.engineRef.getScreenshot('png');\n this.exportRef.open(preview ?? undefined);\n },\n },\n {\n id: 'import',\n label: 'menu.import',\n icon: 'download',\n action: () => this.engineRef.importFromFile(),\n },\n {\n id: 'settings',\n label: 'menu.settings',\n icon: 'settings',\n action: () => this.settingsRef.open(),\n },\n ]"
1376
1452
  },
1377
1453
  "themes": {
1378
1454
  "type": "unknown",
@@ -1905,7 +1981,10 @@ export class KritzelEditor {
1905
1981
  "activeNotification": {},
1906
1982
  "isNotificationDismissing": {},
1907
1983
  "contextMenuState": {},
1908
- "normalizedControls": {}
1984
+ "normalizedControls": {},
1985
+ "resolvedMoreMenuItems": {},
1986
+ "isSyncing": {},
1987
+ "isLoadingOverlayVisible": {}
1909
1988
  };
1910
1989
  }
1911
1990
  static get events() {
@@ -3491,31 +3570,74 @@ export class KritzelEditor {
3491
3570
  "tags": []
3492
3571
  }
3493
3572
  },
3494
- "exportSelectedObjectsAsPng": {
3573
+ "getSelectedObjectSupportedExportFormats": {
3495
3574
  "complexType": {
3496
- "signature": "() => Promise<void>",
3575
+ "signature": "() => Promise<KritzelObjectExportFormat[]>",
3497
3576
  "parameters": [],
3498
3577
  "references": {
3499
3578
  "Promise": {
3500
3579
  "location": "global",
3501
3580
  "id": "global::Promise"
3581
+ },
3582
+ "KritzelObjectExportFormat": {
3583
+ "location": "import",
3584
+ "path": "../../../interfaces/object-export.interface",
3585
+ "id": "src/interfaces/object-export.interface.ts::KritzelObjectExportFormat",
3586
+ "referenceLocation": "KritzelObjectExportFormat"
3502
3587
  }
3503
3588
  },
3504
- "return": "Promise<void>"
3589
+ "return": "Promise<KritzelObjectExportFormat[]>"
3505
3590
  },
3506
3591
  "docs": {
3507
3592
  "text": "",
3508
3593
  "tags": []
3509
3594
  }
3510
3595
  },
3511
- "exportSelectedObjectsAsSvg": {
3596
+ "canExportSelectedObjectAs": {
3512
3597
  "complexType": {
3513
- "signature": "() => Promise<void>",
3514
- "parameters": [],
3598
+ "signature": "(format: KritzelObjectExportFormat) => Promise<boolean>",
3599
+ "parameters": [{
3600
+ "name": "format",
3601
+ "type": "\"svg\" | \"png\"",
3602
+ "docs": ""
3603
+ }],
3515
3604
  "references": {
3516
3605
  "Promise": {
3517
3606
  "location": "global",
3518
3607
  "id": "global::Promise"
3608
+ },
3609
+ "KritzelObjectExportFormat": {
3610
+ "location": "import",
3611
+ "path": "../../../interfaces/object-export.interface",
3612
+ "id": "src/interfaces/object-export.interface.ts::KritzelObjectExportFormat",
3613
+ "referenceLocation": "KritzelObjectExportFormat"
3614
+ }
3615
+ },
3616
+ "return": "Promise<boolean>"
3617
+ },
3618
+ "docs": {
3619
+ "text": "",
3620
+ "tags": []
3621
+ }
3622
+ },
3623
+ "exportSelectedObject": {
3624
+ "complexType": {
3625
+ "signature": "(format: KritzelObjectExportFormat) => Promise<void>",
3626
+ "parameters": [{
3627
+ "name": "format",
3628
+ "type": "\"svg\" | \"png\"",
3629
+ "docs": ""
3630
+ }],
3631
+ "references": {
3632
+ "Promise": {
3633
+ "location": "global",
3634
+ "id": "global::Promise"
3635
+ },
3636
+ "KritzelObjectExportFormat": {
3637
+ "location": "import",
3638
+ "path": "../../../interfaces/object-export.interface",
3639
+ "id": "src/interfaces/object-export.interface.ts::KritzelObjectExportFormat",
3640
+ "referenceLocation": "KritzelObjectExportFormat"
3519
3641
  }
3520
3642
  },
3521
3643
  "return": "Promise<void>"
@@ -4096,6 +4218,18 @@ export class KritzelEditor {
4096
4218
  }, {
4097
4219
  "propName": "controls",
4098
4220
  "methodName": "onControlsChange"
4221
+ }, {
4222
+ "propName": "moreMenuItems",
4223
+ "methodName": "onMoreMenuItemsChange"
4224
+ }, {
4225
+ "propName": "syncConfig",
4226
+ "methodName": "onSyncConfigChange"
4227
+ }, {
4228
+ "propName": "loginConfig",
4229
+ "methodName": "onLoginConfigChange"
4230
+ }, {
4231
+ "propName": "user",
4232
+ "methodName": "onUserChange"
4099
4233
  }, {
4100
4234
  "propName": "activeWorkspaceId",
4101
4235
  "methodName": "onActiveWorkspaceIdChange"