kritzel-stencil 0.4.6 → 0.4.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 (127) hide show
  1. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +110 -88
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/stencil.cjs.js +1 -1
  4. package/dist/collection/classes/core/core.class.js +4 -5
  5. package/dist/collection/collection-manifest.json +1 -1
  6. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +31 -8
  7. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +49 -15
  8. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +1 -1
  9. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  10. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  11. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  12. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  13. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  14. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  15. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  16. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  17. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  18. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  19. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  20. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  21. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  22. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  23. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  24. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  25. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  26. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  27. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  28. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  29. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  30. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  31. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  32. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  33. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  34. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +1 -1
  35. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +8 -0
  36. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +2 -15
  37. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  38. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  39. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  40. package/dist/collection/constants/version.js +1 -1
  41. package/dist/collection/index.js +1 -0
  42. package/dist/collection/interfaces/context-menu-state.interface.js +1 -0
  43. package/dist/components/index.js +1 -1
  44. package/dist/components/kritzel-active-users.js +1 -1
  45. package/dist/components/kritzel-avatar.js +1 -1
  46. package/dist/components/kritzel-back-to-content.js +1 -1
  47. package/dist/components/kritzel-button.js +1 -1
  48. package/dist/components/kritzel-color-palette.js +1 -1
  49. package/dist/components/kritzel-color.js +1 -1
  50. package/dist/components/kritzel-controls.js +1 -1
  51. package/dist/components/kritzel-current-user-dialog.js +1 -1
  52. package/dist/components/kritzel-current-user.js +1 -1
  53. package/dist/components/kritzel-editor.js +65 -42
  54. package/dist/components/kritzel-engine.js +1 -1
  55. package/dist/components/kritzel-export.js +1 -1
  56. package/dist/components/kritzel-font-size.js +1 -1
  57. package/dist/components/kritzel-font.js +1 -1
  58. package/dist/components/kritzel-input.js +1 -1
  59. package/dist/components/kritzel-loading-overlay.js +1 -1
  60. package/dist/components/kritzel-login-dialog.js +1 -1
  61. package/dist/components/kritzel-master-detail.js +1 -1
  62. package/dist/components/kritzel-menu-item.js +1 -1
  63. package/dist/components/kritzel-menu.js +1 -1
  64. package/dist/components/kritzel-more-menu.js +1 -1
  65. package/dist/components/kritzel-numeric-input.js +1 -1
  66. package/dist/components/kritzel-opacity-slider.js +1 -1
  67. package/dist/components/kritzel-portal.js +1 -1
  68. package/dist/components/kritzel-settings.js +1 -1
  69. package/dist/components/kritzel-share-dialog.js +1 -1
  70. package/dist/components/kritzel-slide-toggle.js +1 -1
  71. package/dist/components/kritzel-split-button.js +1 -1
  72. package/dist/components/kritzel-stroke-size.js +1 -1
  73. package/dist/components/kritzel-sync-indicator.js +1 -1
  74. package/dist/components/kritzel-tool-config.js +1 -1
  75. package/dist/components/kritzel-tooltip.js +1 -1
  76. package/dist/components/kritzel-utility-panel.js +1 -1
  77. package/dist/components/kritzel-watermark.js +1 -1
  78. package/dist/components/kritzel-workspace-manager.js +1 -1
  79. package/dist/components/kritzel-zoom-panel.js +1 -1
  80. package/dist/components/{p-Cymum41a.js → p-1nG2hxfJ.js} +2 -2
  81. package/dist/components/{p-B5oHmPJb.js → p-7Rt7ml3v.js} +1 -1
  82. package/dist/components/{p-BI2ng9I_.js → p-8xkoVMfO.js} +2 -2
  83. package/dist/components/{p-CwJwsRR3.js → p-BKOsmXB5.js} +4 -4
  84. package/dist/components/{p-Ca-igU1f.js → p-BLOPBDUF.js} +1 -1
  85. package/dist/components/{p-DUYmwrWV.js → p-BMRln59F.js} +3 -3
  86. package/dist/components/{p-DIazmg6w.js → p-BO9BvTtK.js} +2 -2
  87. package/dist/components/{p-D3y_Hauo.js → p-BU-FZuj0.js} +3 -3
  88. package/dist/components/{p-DgJ0ufzr.js → p-BVEGQLBD.js} +1 -1
  89. package/dist/components/{p-Dlp84thc.js → p-BYO6pz8T.js} +1 -1
  90. package/dist/components/{p-C38P-Vd0.js → p-BZxOukfY.js} +6 -6
  91. package/dist/components/{p-D82VaHce.js → p-Bm_BWQa4.js} +2 -2
  92. package/dist/components/{p-CWRSGYOE.js → p-BzJEwFtn.js} +1 -1
  93. package/dist/components/{p-B6t5q-V4.js → p-BzrxIesp.js} +1 -1
  94. package/dist/components/{p-BBmP8lVY.js → p-C2yi85nc.js} +37 -30
  95. package/dist/components/{p-894OnDQV.js → p-CM1duewg.js} +1 -1
  96. package/dist/components/{p-e6Zpc9Vp.js → p-COjsYPir.js} +2 -2
  97. package/dist/components/{p-BsANVili.js → p-CVhcOiEA.js} +3 -3
  98. package/dist/components/{p-PSFAfAyd.js → p-CwuGA058.js} +1 -1
  99. package/dist/components/{p-Ch42cOeY.js → p-D0oplzU-.js} +8 -21
  100. package/dist/components/{p-Cr682JI_.js → p-D8TOEhPY.js} +3 -3
  101. package/dist/components/{p-ClFprFvz.js → p-DDbO5q-e.js} +3 -3
  102. package/dist/components/{p-BDzlx2hB.js → p-DIMNEOTW.js} +1 -1
  103. package/dist/components/{p-C4NrrUfN.js → p-DSOc0eIT.js} +1 -1
  104. package/dist/components/{p-D5jf8wAu.js → p-DXcjIb_a.js} +3 -3
  105. package/dist/components/{p-B8Xi4Clg.js → p-DgnK50xO.js} +1 -1
  106. package/dist/components/{p-JYj3Facr.js → p-DkH3hoLz.js} +15 -15
  107. package/dist/components/{p-D30zs0kA.js → p-DkY7pIg5.js} +3 -3
  108. package/dist/components/{p-BTzlrIxe.js → p-DrQRChp3.js} +2 -2
  109. package/dist/components/{p-CsvMgk_f.js → p-DwY5pghH.js} +1 -1
  110. package/dist/components/{p-DkUb2czk.js → p-OLfoATNk.js} +1 -1
  111. package/dist/components/{p-DEBwmRTC.js → p-oGAPPwAL.js} +2 -2
  112. package/dist/components/{p-DJ88BrIW.js → p-yD_3Z3K1.js} +1 -1
  113. package/dist/components/{p-CqLgB8JK.js → p-zd7zXld8.js} +2 -2
  114. package/dist/esm/kritzel-active-users_47.entry.js +110 -88
  115. package/dist/esm/loader.js +1 -1
  116. package/dist/esm/stencil.js +1 -1
  117. package/dist/stencil/{p-5b969a42.entry.js → p-472f2e90.entry.js} +110 -88
  118. package/dist/stencil/stencil.esm.js +1 -1
  119. package/dist/types/classes/core/core.class.d.ts +2 -2
  120. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +4 -0
  121. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +4 -1
  122. package/dist/types/components.d.ts +7 -0
  123. package/dist/types/constants/version.d.ts +1 -1
  124. package/dist/types/index.d.ts +1 -0
  125. package/dist/types/interfaces/context-menu-state.interface.d.ts +16 -0
  126. package/package.json +1 -1
  127. package/readme.md +3 -3
@@ -1,4 +1,4 @@
1
- import { K as KritzelColorComponent, d as defineCustomElement$1 } from './p-CqLgB8JK.js';
1
+ import { K as KritzelColorComponent, d as defineCustomElement$1 } from './p-zd7zXld8.js';
2
2
 
3
3
  const KritzelColor = KritzelColorComponent;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-JYj3Facr.js';
1
+ import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-DkH3hoLz.js';
2
2
 
3
3
  const KritzelControls = KritzelControls$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelCurrentUserDialog$1, d as defineCustomElement$1 } from './p-D3y_Hauo.js';
1
+ import { K as KritzelCurrentUserDialog$1, d as defineCustomElement$1 } from './p-BU-FZuj0.js';
2
2
 
3
3
  const KritzelCurrentUserDialog = KritzelCurrentUserDialog$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelCurrentUser$1, d as defineCustomElement$1 } from './p-DIazmg6w.js';
1
+ import { K as KritzelCurrentUser$1, d as defineCustomElement$1 } from './p-BO9BvTtK.js';
2
2
 
3
3
  const KritzelCurrentUser = KritzelCurrentUser$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,56 +1,56 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
  import { K as KritzelIconRegistry, d as defineCustomElement$s } from './p-CdR76C4L.js';
3
- import { v as DEFAULT_STROKE_SIZES, w as DEFAULT_FONT_SIZES, S as ShapeType, m as KritzelSelectionTool, f as KritzelBrushTool, h as KritzelEraserTool, g as KritzelLineTool, k as KritzelShapeTool, j as KritzelTextTool, i as KritzelImageTool, s as KritzelAlignment, x as DEFAULT_SYNC_CONFIG, y as KritzelSelectionGroup, z as KritzelSelectionBox, B as KritzelKeyboardHelper, C as defineCustomElement$x } from './p-BBmP8lVY.js';
3
+ import { v as DEFAULT_STROKE_SIZES, w as DEFAULT_FONT_SIZES, S as ShapeType, m as KritzelSelectionTool, f as KritzelBrushTool, h as KritzelEraserTool, g as KritzelLineTool, k as KritzelShapeTool, j as KritzelTextTool, i as KritzelImageTool, s as KritzelAlignment, x as DEFAULT_SYNC_CONFIG, y as KritzelSelectionGroup, z as KritzelSelectionBox, B as KritzelKeyboardHelper, C as defineCustomElement$x } from './p-C2yi85nc.js';
4
4
  import { D as DEFAULT_COLOR_PALETTE, T as ThemeHelper, d as darkTheme, l as lightTheme } from './p-BmyTdQGy.js';
5
5
  import { D as DEFAULT_TEXT_TOOL_AVAILABLE_FONTS, r as resolveTextToolAvailableFonts, K as KritzelFontRegistry } from './p-DJkKlUyZ.js';
6
- import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$4 } from './p-PSFAfAyd.js';
6
+ import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$4 } from './p-CwuGA058.js';
7
7
  import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
8
8
  import { O as ObjectHelper } from './p-Dd-pMvlr.js';
9
9
  import { d as defineCustomElement$J } from './p-Ka7OWbnk.js';
10
10
  import * as Y from 'yjs';
11
11
  import 'y-indexeddb';
12
12
  import 'y-websocket';
13
- import { d as defineCustomElement$L } from './p-DJ88BrIW.js';
14
- import { d as defineCustomElement$K } from './p-D5jf8wAu.js';
15
- import { d as defineCustomElement$I } from './p-Dlp84thc.js';
16
- import { d as defineCustomElement$H } from './p-DEBwmRTC.js';
17
- import { d as defineCustomElement$G } from './p-CqLgB8JK.js';
18
- import { d as defineCustomElement$F } from './p-Cymum41a.js';
13
+ import { d as defineCustomElement$L } from './p-yD_3Z3K1.js';
14
+ import { d as defineCustomElement$K } from './p-DXcjIb_a.js';
15
+ import { d as defineCustomElement$I } from './p-BYO6pz8T.js';
16
+ import { d as defineCustomElement$H } from './p-oGAPPwAL.js';
17
+ import { d as defineCustomElement$G } from './p-zd7zXld8.js';
18
+ import { d as defineCustomElement$F } from './p-1nG2hxfJ.js';
19
19
  import { d as defineCustomElement$E } from './p-BxpKq94F.js';
20
- import { d as defineCustomElement$D } from './p-JYj3Facr.js';
21
- import { d as defineCustomElement$C } from './p-DIazmg6w.js';
22
- import { d as defineCustomElement$B } from './p-D3y_Hauo.js';
20
+ import { d as defineCustomElement$D } from './p-DkH3hoLz.js';
21
+ import { d as defineCustomElement$C } from './p-BO9BvTtK.js';
22
+ import { d as defineCustomElement$B } from './p-BU-FZuj0.js';
23
23
  import { d as defineCustomElement$A } from './p-Cm33td2O.js';
24
24
  import { d as defineCustomElement$z } from './p-DX2nriaq.js';
25
25
  import { d as defineCustomElement$y } from './p-Df3BwVGy.js';
26
- import { d as defineCustomElement$w } from './p-e6Zpc9Vp.js';
27
- import { d as defineCustomElement$v } from './p-B8Xi4Clg.js';
26
+ import { d as defineCustomElement$w } from './p-COjsYPir.js';
27
+ import { d as defineCustomElement$v } from './p-DgnK50xO.js';
28
28
  import { d as defineCustomElement$u } from './p-djJSnjAX.js';
29
- import { d as defineCustomElement$t } from './p-BI2ng9I_.js';
30
- import { d as defineCustomElement$r } from './p-C4NrrUfN.js';
29
+ import { d as defineCustomElement$t } from './p-8xkoVMfO.js';
30
+ import { d as defineCustomElement$r } from './p-DSOc0eIT.js';
31
31
  import { d as defineCustomElement$q } from './p-CXpv9Rxe.js';
32
- import { d as defineCustomElement$p } from './p-DgJ0ufzr.js';
33
- import { d as defineCustomElement$o } from './p-B5oHmPJb.js';
34
- import { d as defineCustomElement$n } from './p-BsANVili.js';
35
- import { d as defineCustomElement$l, a as defineCustomElement$m } from './p-CwJwsRR3.js';
36
- import { d as defineCustomElement$k } from './p-D30zs0kA.js';
32
+ import { d as defineCustomElement$p } from './p-BVEGQLBD.js';
33
+ import { d as defineCustomElement$o } from './p-7Rt7ml3v.js';
34
+ import { d as defineCustomElement$n } from './p-CVhcOiEA.js';
35
+ import { d as defineCustomElement$l, a as defineCustomElement$m } from './p-BKOsmXB5.js';
36
+ import { d as defineCustomElement$k } from './p-DkY7pIg5.js';
37
37
  import { d as defineCustomElement$j } from './p-pagW8YF7.js';
38
- import { d as defineCustomElement$i } from './p-BDzlx2hB.js';
39
- import { d as defineCustomElement$h } from './p-B6t5q-V4.js';
38
+ import { d as defineCustomElement$i } from './p-DIMNEOTW.js';
39
+ import { d as defineCustomElement$h } from './p-BzrxIesp.js';
40
40
  import { d as defineCustomElement$g } from './p-D09kgc5Q.js';
41
- import { d as defineCustomElement$f } from './p-Ca-igU1f.js';
42
- import { d as defineCustomElement$e } from './p-Ch42cOeY.js';
41
+ import { d as defineCustomElement$f } from './p-BLOPBDUF.js';
42
+ import { d as defineCustomElement$e } from './p-D0oplzU-.js';
43
43
  import { d as defineCustomElement$d } from './p-BFYtCsZu.js';
44
- import { d as defineCustomElement$c } from './p-DUYmwrWV.js';
45
- import { d as defineCustomElement$b } from './p-CWRSGYOE.js';
46
- import { d as defineCustomElement$a } from './p-Cr682JI_.js';
47
- import { d as defineCustomElement$9 } from './p-D82VaHce.js';
48
- import { d as defineCustomElement$8 } from './p-894OnDQV.js';
49
- import { d as defineCustomElement$7 } from './p-C38P-Vd0.js';
50
- import { d as defineCustomElement$6 } from './p-BTzlrIxe.js';
51
- import { d as defineCustomElement$5 } from './p-CsvMgk_f.js';
52
- import { d as defineCustomElement$3 } from './p-ClFprFvz.js';
53
- import { d as defineCustomElement$2 } from './p-DkUb2czk.js';
44
+ import { d as defineCustomElement$c } from './p-BMRln59F.js';
45
+ import { d as defineCustomElement$b } from './p-BzJEwFtn.js';
46
+ import { d as defineCustomElement$a } from './p-D8TOEhPY.js';
47
+ import { d as defineCustomElement$9 } from './p-Bm_BWQa4.js';
48
+ import { d as defineCustomElement$8 } from './p-CM1duewg.js';
49
+ import { d as defineCustomElement$7 } from './p-BZxOukfY.js';
50
+ import { d as defineCustomElement$6 } from './p-DrQRChp3.js';
51
+ import { d as defineCustomElement$5 } from './p-DwY5pghH.js';
52
+ import { d as defineCustomElement$3 } from './p-DDbO5q-e.js';
53
+ import { d as defineCustomElement$2 } from './p-OLfoATNk.js';
54
54
 
55
55
  /**
56
56
  * Common Math expressions.
@@ -3152,6 +3152,7 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
3152
3152
  isEditorVisible = false;
3153
3153
  activeNotification;
3154
3154
  isNotificationDismissing = false;
3155
+ contextMenuState;
3155
3156
  normalizedControls = [];
3156
3157
  notificationDismissTimeout;
3157
3158
  notificationDismissAnimationTimeout;
@@ -3621,6 +3622,22 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
3621
3622
  this.activeNotification = event.detail;
3622
3623
  this.scheduleNotificationDismiss();
3623
3624
  }
3625
+ handleContextMenuStateChange(event) {
3626
+ event.stopPropagation();
3627
+ this.contextMenuState = event.detail.isVisible ? event.detail : undefined;
3628
+ }
3629
+ handleContextMenuActionSelected(event) {
3630
+ const contextMenuState = this.contextMenuState;
3631
+ if (!contextMenuState || !event.detail.action) {
3632
+ void this.hideContextMenu();
3633
+ return;
3634
+ }
3635
+ event.detail.action({
3636
+ x: contextMenuState.worldPosition.x,
3637
+ y: contextMenuState.worldPosition.y,
3638
+ }, contextMenuState.objects);
3639
+ void this.hideContextMenu();
3640
+ }
3624
3641
  handleNotificationHoverChange(event) {
3625
3642
  event.stopPropagation();
3626
3643
  this.isNotificationHovered = event.detail;
@@ -3925,36 +3942,41 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
3925
3942
  const isLoggedIn = this.isLoggedIn;
3926
3943
  const shouldShowCurrentUser = isLoggedIn;
3927
3944
  const shouldShowLoginButton = this.isReady && !!this.loginConfig && !isLoggedIn;
3928
- return (h(Host, { key: '0fea11ea16e8baca0a7ecbd22c8025b47d451ac0' }, h("div", { key: 'd2ed05c8a6ecbe5b3cc4fc8bc12affefc1c15976', class: "editor-content", style: {
3945
+ return (h(Host, { key: 'ab06876e3a07e97c3788113ffd0483bbb2819d5b' }, h("div", { key: 'e393eacfad2b224a720e5a97b047af8dd3ce97a5', class: "editor-content", style: {
3929
3946
  opacity: this.isEditorVisible ? '1' : '0',
3930
3947
  visibility: this.isEditorVisible ? 'visible' : 'hidden',
3931
3948
  transition: 'opacity 0.2s ease-in-out, visibility 0.2s ease-in-out',
3932
- } }, h("div", { key: '3dfab068157d0091834c80d901262228b4f63546', class: "top-left-buttons" }, h("kritzel-workspace-manager", { key: 'e70f2a26a371a13c771d2b45f12fbd7f41fa7f9a', 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: 'f0e4851612bac461d97d16c0f23aeefbd1a220e4', visible: this.isBackToContentButtonVisible, text: this.resolvedTerms['backToContent.label'] ?? 'Back to content', onBackToContent: () => this.backToContent() })), this.activeNotification && (h("div", { key: '633dcabf1875a0af0399807f111d19e8e1d2781e', class: "top-center-notification-layer", role: "presentation" }, h("div", { key: '67336263f6de75f03116d751157b78b8f42649c8', class: { 'top-center-notification-container': true, 'is-dismissing': this.isNotificationDismissing }, role: "presentation" }, h("kritzel-notification-card", { key: 'b0316aa4e37283d1de8a969c07523c28408ce474', notification: this.activeNotification, locale: this.locale, onDismiss: this.dismissNotification, onHoverChange: event => this.handleNotificationHoverChange(event) })))), h("kritzel-engine", { key: '6e9c047b04221332ffb5a50970d8f37592db4b5d', ref: el => {
3949
+ } }, 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: {
3950
+ position: 'absolute',
3951
+ left: `${this.contextMenuState.position.x}px`,
3952
+ top: `${this.contextMenuState.position.y}px`,
3953
+ zIndex: '10002',
3954
+ }, onActionSelected: event => this.handleContextMenuActionSelected(event), onClose: () => this.hideContextMenu() })), h("kritzel-engine", { key: '0c9df0386d38a87f50d324cfc51307a1cb947a58', ref: el => {
3933
3955
  if (el) {
3934
3956
  this.engineRef = el;
3935
3957
  }
3936
- }, 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) }), h("kritzel-controls", { key: 'a664a3b51842238e092835ba6e68b63409829dba', visible: this.isControlsVisible, class: { 'keyboard-open': this.isVirtualKeyboardOpen }, ref: el => {
3958
+ }, 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 => {
3937
3959
  if (el) {
3938
3960
  this.controlsRef = el;
3939
3961
  }
3940
- }, controls: this.normalizedControls, isUtilityPanelVisible: this.isUtilityPanelVisible, undoState: this.undoState ?? undefined, theme: this.theme, terms: this.resolvedTerms, onIsControlsReady: () => (this.isControlsReady = true) }), h("div", { key: '7da601af2f3e5be020b2dacac9ed377660488005', class: "bottom-left-buttons" }, h("kritzel-zoom-panel", { key: 'e764e09ab790810620527618e40c298495c56b72', visible: this.isZoomPanelVisible, disabled: !this.isZoomingEnabled, zoomPercent: this.currentZoomPercent, terms: this.resolvedTerms, onZoomIn: () => this.zoomIn(), onZoomOut: () => this.zoomOut() })), h("div", { key: 'c846bd187a9c3d4e4c9034a605ea77500a815cd2', class: "top-right-buttons" }, h("kritzel-settings", { key: '1b0d3c6acda30f6222dcf13f131d4cad87ced86b', ref: el => {
3962
+ }, 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 => {
3941
3963
  if (el) {
3942
3964
  this.settingsRef = el;
3943
3965
  }
3944
- }, 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: '7a81c4ff0c57159e892f393649fff5a0199b9875', ref: el => {
3966
+ }, 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 => {
3945
3967
  if (el) {
3946
3968
  this.exportRef = el;
3947
3969
  }
3948
- }, 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: '4bde72a3369f8bc1b61a8c765c7a9f95204316d6', users: this.activeUsers }), shouldShowCurrentUser && h("kritzel-current-user", { key: 'f03fd82e0adbd13746197e2f850cd378657aa2de', user: this.user, terms: this.resolvedTerms, onClick: () => this.currentUserDialogRef?.open() }), shouldShowCurrentUser && (h("kritzel-current-user-dialog", { key: '6b9e5ad046b65f874b0dc11e65264f998f8ce97c', ref: el => {
3970
+ }, 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 => {
3949
3971
  if (el) {
3950
3972
  this.currentUserDialogRef = el;
3951
3973
  this.currentUserDialogRef.addEventListener('logoutRequest', this.handleCurrentUserLogout);
3952
3974
  }
3953
- }, user: this.user, terms: this.resolvedTerms })), shouldShowLoginButton && (h("kritzel-button", { key: '41adb50a6e861c57621d0ac65cbf5c8c152c096d', onButtonClick: () => this.loginDialogRef?.open() }, this.resolvedTerms['login.dialogTitle'] ?? 'Sign in')), h("kritzel-more-menu", { key: 'cc62a0b8a6af7d54637783f4138b7f5283e0ff58', items: this.moreMenuItems, visible: this.isMoreMenuVisible, terms: this.resolvedTerms }), h("kritzel-share-dialog", { key: '4239378411242077f1c44500e17cf9118842f44e', ref: el => {
3975
+ }, 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 => {
3954
3976
  if (el) {
3955
3977
  this.shareDialogRef = el;
3956
3978
  }
3957
- }, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: 'c68ce90d2cc0dc96eeafd36355b91e19f921d8f7', ref: el => {
3979
+ }, isPublic: this.currentIsPublic, workspaceId: this.activeWorkspace?.id, terms: this.resolvedTerms, onToggleIsPublic: this.handleToggleIsPublic }), this.loginConfig && (h("kritzel-login-dialog", { key: 'cda0fcdcad75de8730ce10bda425cc0fbe01429a', ref: el => {
3958
3980
  if (el) {
3959
3981
  this.loginDialogRef = el;
3960
3982
  }
@@ -4046,6 +4068,7 @@ const KritzelEditor$1 = /*@__PURE__*/ proxyCustomElement(class KritzelEditor ext
4046
4068
  "isEditorVisible": [32],
4047
4069
  "activeNotification": [32],
4048
4070
  "isNotificationDismissing": [32],
4071
+ "contextMenuState": [32],
4049
4072
  "normalizedControls": [32],
4050
4073
  "getObjectById": [64],
4051
4074
  "addObject": [64],
@@ -1,4 +1,4 @@
1
- import { G as KritzelEngine$1, C as defineCustomElement$1 } from './p-BBmP8lVY.js';
1
+ import { G as KritzelEngine$1, C as defineCustomElement$1 } from './p-C2yi85nc.js';
2
2
 
3
3
  const KritzelEngine = KritzelEngine$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelExport$1, d as defineCustomElement$1 } from './p-e6Zpc9Vp.js';
1
+ import { K as KritzelExport$1, d as defineCustomElement$1 } from './p-COjsYPir.js';
2
2
 
3
3
  const KritzelExport = KritzelExport$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelFontSize$1, d as defineCustomElement$1 } from './p-BI2ng9I_.js';
1
+ import { K as KritzelFontSize$1, d as defineCustomElement$1 } from './p-8xkoVMfO.js';
2
2
 
3
3
  const KritzelFontSize = KritzelFontSize$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelFont$1, d as defineCustomElement$1 } from './p-B8Xi4Clg.js';
1
+ import { K as KritzelFont$1, d as defineCustomElement$1 } from './p-DgnK50xO.js';
2
2
 
3
3
  const KritzelFont = KritzelFont$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelInput$1, d as defineCustomElement$1 } from './p-C4NrrUfN.js';
1
+ import { K as KritzelInput$1, d as defineCustomElement$1 } from './p-DSOc0eIT.js';
2
2
 
3
3
  const KritzelInput = KritzelInput$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelLoadingOverlay$1, d as defineCustomElement$1 } from './p-DgJ0ufzr.js';
1
+ import { K as KritzelLoadingOverlay$1, d as defineCustomElement$1 } from './p-BVEGQLBD.js';
2
2
 
3
3
  const KritzelLoadingOverlay = KritzelLoadingOverlay$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelLoginDialog$1, d as defineCustomElement$1 } from './p-B5oHmPJb.js';
1
+ import { K as KritzelLoginDialog$1, d as defineCustomElement$1 } from './p-7Rt7ml3v.js';
2
2
 
3
3
  const KritzelLoginDialog = KritzelLoginDialog$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelMasterDetail$1, d as defineCustomElement$1 } from './p-BsANVili.js';
1
+ import { K as KritzelMasterDetail$1, d as defineCustomElement$1 } from './p-CVhcOiEA.js';
2
2
 
3
3
  const KritzelMasterDetail = KritzelMasterDetail$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { b as KritzelMenuItem$1, d as defineCustomElement$1 } from './p-CwJwsRR3.js';
1
+ import { b as KritzelMenuItem$1, d as defineCustomElement$1 } from './p-BKOsmXB5.js';
2
2
 
3
3
  const KritzelMenuItem = KritzelMenuItem$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelMenu$1, a as defineCustomElement$1 } from './p-CwJwsRR3.js';
1
+ import { K as KritzelMenu$1, a as defineCustomElement$1 } from './p-BKOsmXB5.js';
2
2
 
3
3
  const KritzelMenu = KritzelMenu$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelMoreMenu$1, d as defineCustomElement$1 } from './p-D30zs0kA.js';
1
+ import { K as KritzelMoreMenu$1, d as defineCustomElement$1 } from './p-DkY7pIg5.js';
2
2
 
3
3
  const KritzelMoreMenu = KritzelMoreMenu$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelNumericInput$1, d as defineCustomElement$1 } from './p-BDzlx2hB.js';
1
+ import { K as KritzelNumericInput$1, d as defineCustomElement$1 } from './p-DIMNEOTW.js';
2
2
 
3
3
  const KritzelNumericInput = KritzelNumericInput$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelOpacitySlider$1, d as defineCustomElement$1 } from './p-B6t5q-V4.js';
1
+ import { K as KritzelOpacitySlider$1, d as defineCustomElement$1 } from './p-BzrxIesp.js';
2
2
 
3
3
  const KritzelOpacitySlider = KritzelOpacitySlider$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelPortal$1, d as defineCustomElement$1 } from './p-Ca-igU1f.js';
1
+ import { K as KritzelPortal$1, d as defineCustomElement$1 } from './p-BLOPBDUF.js';
2
2
 
3
3
  const KritzelPortal = KritzelPortal$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelSettings$1, d as defineCustomElement$1 } from './p-Ch42cOeY.js';
1
+ import { K as KritzelSettings$1, d as defineCustomElement$1 } from './p-D0oplzU-.js';
2
2
 
3
3
  const KritzelSettings = KritzelSettings$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelShareDialog$1, d as defineCustomElement$1 } from './p-DUYmwrWV.js';
1
+ import { K as KritzelShareDialog$1, d as defineCustomElement$1 } from './p-BMRln59F.js';
2
2
 
3
3
  const KritzelShareDialog = KritzelShareDialog$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelSlideToggle$1, d as defineCustomElement$1 } from './p-CWRSGYOE.js';
1
+ import { K as KritzelSlideToggle$1, d as defineCustomElement$1 } from './p-BzJEwFtn.js';
2
2
 
3
3
  const KritzelSlideToggle = KritzelSlideToggle$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelSplitButton$1, d as defineCustomElement$1 } from './p-Cr682JI_.js';
1
+ import { K as KritzelSplitButton$1, d as defineCustomElement$1 } from './p-D8TOEhPY.js';
2
2
 
3
3
  const KritzelSplitButton = KritzelSplitButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelStrokeSize$1, d as defineCustomElement$1 } from './p-D82VaHce.js';
1
+ import { K as KritzelStrokeSize$1, d as defineCustomElement$1 } from './p-Bm_BWQa4.js';
2
2
 
3
3
  const KritzelStrokeSize = KritzelStrokeSize$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelSyncIndicator$1, d as defineCustomElement$1 } from './p-894OnDQV.js';
1
+ import { K as KritzelSyncIndicator$1, d as defineCustomElement$1 } from './p-CM1duewg.js';
2
2
 
3
3
  const KritzelSyncIndicator = KritzelSyncIndicator$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { a as KritzelToolConfig$1, d as defineCustomElement$1 } from './p-C38P-Vd0.js';
1
+ import { a as KritzelToolConfig$1, d as defineCustomElement$1 } from './p-BZxOukfY.js';
2
2
 
3
3
  const KritzelToolConfig = KritzelToolConfig$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelTooltip$1, d as defineCustomElement$1 } from './p-BTzlrIxe.js';
1
+ import { K as KritzelTooltip$1, d as defineCustomElement$1 } from './p-DrQRChp3.js';
2
2
 
3
3
  const KritzelTooltip = KritzelTooltip$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelUtilityPanel$1, d as defineCustomElement$1 } from './p-CsvMgk_f.js';
1
+ import { K as KritzelUtilityPanel$1, d as defineCustomElement$1 } from './p-DwY5pghH.js';
2
2
 
3
3
  const KritzelUtilityPanel = KritzelUtilityPanel$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelWatermark$1, d as defineCustomElement$1 } from './p-PSFAfAyd.js';
1
+ import { K as KritzelWatermark$1, d as defineCustomElement$1 } from './p-CwuGA058.js';
2
2
 
3
3
  const KritzelWatermark = KritzelWatermark$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelWorkspaceManager$1, d as defineCustomElement$1 } from './p-ClFprFvz.js';
1
+ import { K as KritzelWorkspaceManager$1, d as defineCustomElement$1 } from './p-DDbO5q-e.js';
2
2
 
3
3
  const KritzelWorkspaceManager = KritzelWorkspaceManager$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { K as KritzelZoomPanel$1, d as defineCustomElement$1 } from './p-DkUb2czk.js';
1
+ import { K as KritzelZoomPanel$1, d as defineCustomElement$1 } from './p-OLfoATNk.js';
2
2
 
3
3
  const KritzelZoomPanel = KritzelZoomPanel$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,6 +1,6 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
  import { a as KritzelColorHelper } from './p-BmyTdQGy.js';
3
- import { d as defineCustomElement$1 } from './p-CqLgB8JK.js';
3
+ import { d as defineCustomElement$1 } from './p-zd7zXld8.js';
4
4
 
5
5
  const kritzelColorPaletteCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}`;
6
6
 
@@ -45,7 +45,7 @@ const KritzelColorPalette = /*@__PURE__*/ proxyCustomElement(class KritzelColorP
45
45
  render() {
46
46
  const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
47
47
  const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
48
- return (h(Host, { key: '6e16fdd13c09ab2bcffb83df7ed861560f486518' }, h("div", { key: '48cc257315e13822dcc8bea314d26f1137d9b3cc', class: {
48
+ return (h(Host, { key: '16aa405a43b3943473e577c5a6ab86adf4ae1ba9' }, h("div", { key: 'f65bb286889700dc1f0e8d84ff59721071b7b73a', class: {
49
49
  'color-grid': true,
50
50
  'expanded': this.isExpanded,
51
51
  }, style: {
@@ -53,7 +53,7 @@ const KritzelLoginDialog = /*@__PURE__*/ proxyCustomElement(class KritzelLoginDi
53
53
  this.dialogClosed.emit();
54
54
  };
55
55
  render() {
56
- return (h(Host, { key: 'd2b393ac37292a0cf88d0e18e9768ca666b238b2' }, h("kritzel-dialog", { key: '6e302e9030b5da0baf307fe261285e484b3c1f08', dialogTitle: this.dialogTitle, isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: 'f32b073d70acb3874dc3ab4c3905543067a543d8', class: "login-content" }, this.subtitle && (h("p", { key: '42a6ec7d6c9ca0a14700bd13cbe8ee9edbbcc18b', class: "login-subtitle" }, this.subtitle)), h("div", { key: 'cbb5497abd1c88fc364ac8bb7c3d356df6df0dad', class: "login-providers" }, this.providers.map(provider => (h("button", { key: provider.name, class: {
56
+ return (h(Host, { key: 'bcd7f30bbfeb07bbca732c5f1034bcabbd5e4f80' }, h("kritzel-dialog", { key: '61b5c5054d43433894747f37c571e68ecf08fc4c', dialogTitle: this.dialogTitle, isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: '3ddcb858b6148e8be4bd121b2bd8ca38c66e0505', class: "login-content" }, this.subtitle && (h("p", { key: '6f10f890af9f6025a3aa2d69f8f4d916821fd653', class: "login-subtitle" }, this.subtitle)), h("div", { key: '0d043ac1ac751dc3d0a561bc16e52a2cfaffc578', class: "login-providers" }, this.providers.map(provider => (h("button", { key: provider.name, class: {
57
57
  'provider-button': true,
58
58
  'is-loading': this.loadingProvider === provider.name,
59
59
  'is-disabled': this.loadingProvider !== null && this.loadingProvider !== provider.name,
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$1 } from './p-B8Xi4Clg.js';
2
+ import { d as defineCustomElement$1 } from './p-DgnK50xO.js';
3
3
 
4
4
  const kritzelFontSizeCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}`;
5
5
 
@@ -29,7 +29,7 @@ const KritzelFontSize = /*@__PURE__*/ proxyCustomElement(class KritzelFontSize e
29
29
  render() {
30
30
  const color = 'var(--kritzel-global-text-primary)';
31
31
  const sizes = this.sizes ?? [];
32
- return (h(Host, { key: '298b8c232c4d96583f4899efea86482ae8ebd319' }, sizes.map(size => (h("div", { tabIndex: 0, class: {
32
+ return (h(Host, { key: '56eb19367abe312bac3b626cfcae3b1ff6e90d21' }, sizes.map(size => (h("div", { tabIndex: 0, class: {
33
33
  'size-container': true,
34
34
  'selected': this.selectedSize === size,
35
35
  }, onClick: () => this.handleSizeClick(size), onKeyDown: event => this.handleKeyDown(event, size) }, h("kritzel-font", { fontFamily: this.fontFamily, size: size, color: color }))))));
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
  import { d as defineCustomElement$3 } from './p-CdR76C4L.js';
3
3
  import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
4
- import { d as defineCustomElement$2 } from './p-Ca-igU1f.js';
4
+ import { d as defineCustomElement$2 } from './p-BLOPBDUF.js';
5
5
 
6
6
  const kritzelMenuItemCss = () => `:host{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--kritzel-menu-item-padding, 8px);box-sizing:border-box;gap:16px;height:var(--kritzel-menu-item-height, 40px);min-height:var(--kritzel-menu-item-min-height, 40px);font-family:sans-serif;font-size:var(--kritzel-menu-item-font-size, 14px);color:var(--kritzel-menu-item-color, #333333);border-radius:var(--kritzel-menu-item-border-radius, 12px);-webkit-tap-highlight-color:transparent}:host:focus:not(:focus-visible){outline:none}:host(:hover) .menu-item-overlay,:host(:focus-within) .menu-item-overlay{background-color:var(--kritzel-menu-item-overlay-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff);caret-color:var(--kritzel-menu-item-input-caret-color-on-selected, #ffffff);border-color:var(--kritzel-menu-item-input-border-color-on-selected, #ffffff)}:host(.selected) .action-button kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-color, #333333)}:host(.selected) kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color-on-selected, rgba(255, 255, 255, 0.3));color:var(--kritzel-menu-item-input-selection-text-color-on-selected, #ffffff)}:host(.editing){background-color:var(--kritzel-menu-item-editing-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.disabled){opacity:0.5;pointer-events:none !important}:host(.child-open){background-color:var(--kritzel-menu-item-child-open-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.child-open.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.menu-item-content span{display:flex;align-items:center;line-height:0}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:var(--kritzel-menu-item-input-border, 1px solid #ccc);font-size:var(--kritzel-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none;color:inherit}.edit-input{caret-color:var(--kritzel-menu-item-input-caret-color, currentColor)}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}`;
7
7
 
@@ -107,12 +107,12 @@ const KritzelMenuItem = /*@__PURE__*/ proxyCustomElement(class KritzelMenuItem e
107
107
  ];
108
108
  }
109
109
  render() {
110
- return (h(Host, { key: '89e05e4ec01b4de48019a2459f625e34669b8429', tabIndex: this.item.isDisabled ? -1 : 0, class: {
110
+ return (h(Host, { key: '9d6653a630da5a3da38291d89d6d7d59d6994e02', tabIndex: this.item.isDisabled ? -1 : 0, class: {
111
111
  'selected': this.item.isSelected,
112
112
  'editing': this.item.isEditing,
113
113
  'disabled': this.item.isDisabled,
114
114
  'child-open': this.item.isChildMenuOpen,
115
- }, onClick: this.handleItemSelect }, h("div", { key: '5de01524315482194c26e4bd4969f2ead4d852ec', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
115
+ }, onClick: this.handleItemSelect }, h("div", { key: '48a1678296e672c6c03fb3e1473c42d3a246d481', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
116
116
  }
117
117
  static get watchers() { return {
118
118
  "item": [{
@@ -230,7 +230,7 @@ const KritzelMenu = /*@__PURE__*/ proxyCustomElement(class KritzelMenu extends H
230
230
  this.itemCloseChildMenu.emit(event.detail);
231
231
  };
232
232
  render() {
233
- return (h(Host, { key: '9edadb795e13a5242a0a086bd78c21f0f420e88c', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: '4925a8698c1ac61787ba8c44beeed46461c62625', class: "has-open-child-overlay", onClick: this.onOverlayClick }), this.items.map(item => (h("kritzel-menu-item", { key: item.id, "data-testid": `menu-item-${item.id}`, item: item, parent: this.parent, style: { pointerEvents: this.editingMenuItem && !item.isEditing ? 'none' : 'auto' }, onItemSelect: this.handleItemSelect, onItemSave: this.handleSave, onItemCancel: this.handleCancel, onItemToggleChildMenu: this.handleToggleChildMenu, onItemCloseChildMenu: this.handleCloseChildMenu })))));
233
+ return (h(Host, { key: '27a90a3a8549517a2d6e341a5da13496bf714970', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: 'c0c2351fac389f6676b38481eaacee553ca6867a', class: "has-open-child-overlay", onClick: this.onOverlayClick }), this.items.map(item => (h("kritzel-menu-item", { key: item.id, "data-testid": `menu-item-${item.id}`, item: item, parent: this.parent, style: { pointerEvents: this.editingMenuItem && !item.isEditing ? 'none' : 'auto' }, onItemSelect: this.handleItemSelect, onItemSave: this.handleSave, onItemCancel: this.handleCancel, onItemToggleChildMenu: this.handleToggleChildMenu, onItemCloseChildMenu: this.handleCloseChildMenu })))));
234
234
  }
235
235
  static get style() { return kritzelMenuCss(); }
236
236
  }, [513, "kritzel-menu", {
@@ -286,7 +286,7 @@ const KritzelPortal = /*@__PURE__*/ proxyCustomElement(class KritzelPortal exten
286
286
  this.portal.style.visibility = 'visible';
287
287
  }
288
288
  render() {
289
- return (h(Host, { key: 'f919789973cd7828b393028171594d481113fb45', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: '21b837fe7162c0a0a8d01bb5c41d3736a265714c' })));
289
+ return (h(Host, { key: '72273b4c7811473072ee27668836a5ddddcfd618', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: 'b4f37ca27c47ab950a4639162fa31a3c2362d6f7' })));
290
290
  }
291
291
  static get watchers() { return {
292
292
  "anchor": [{
@@ -2,7 +2,7 @@ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transf
2
2
  import { g as getDefaultExportFromCjs } from './p-BFTU3MAI.js';
3
3
  import { d as defineCustomElement$3 } from './p-DX2nriaq.js';
4
4
  import { d as defineCustomElement$2 } from './p-CdR76C4L.js';
5
- import { d as defineCustomElement$1 } from './p-CWRSGYOE.js';
5
+ import { d as defineCustomElement$1 } from './p-BzJEwFtn.js';
6
6
 
7
7
  var browser = {};
8
8
 
@@ -3204,9 +3204,9 @@ const KritzelShareDialog = /*@__PURE__*/ proxyCustomElement(class KritzelShareDi
3204
3204
  this.dialogClosed.emit();
3205
3205
  };
3206
3206
  render() {
3207
- return (h(Host, { key: '3125a157e71a0f5e5e4762cb4069c457bd7d44f6' }, h("kritzel-dialog", { key: '948007c3f631ac8c6d2b163d8c41e5d85d17990e', dialogTitle: this.terms['share.dialogTitle'] ?? 'Share Workspace', size: "small", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, contained: true }, h("div", { key: '6eda07bd40162baba728648e266d819705608990', class: "share-content" }, h("div", { key: 'f693904e3541b2b248ac9a965c4c65d407c63d42', class: "share-section" }, h("div", { key: '5d76c4944fe5e40469de2c92fdbe939936cfede7', class: "share-row" }, h("div", { key: '84d4cbeacaa4b83f1570ed36de8311f9c20225ed', class: "share-label-group" }, h("label", { key: '0b666d1b26bd7a7ec05705be97c6c01b98f3bcab', class: "share-label" }, this.terms['share.linkSharing.label'] ?? 'Link sharing'), h("p", { key: '41b0df856dd7cf80f40ba8e485816a2ca794c23e', class: "share-description" }, this.internalIsPublic
3207
+ return (h(Host, { key: 'd30a468b9443f76731b207cb5caec1911f378c15' }, h("kritzel-dialog", { key: '4a4ec0a2becba58a49a87fc411a82e26557d8232', dialogTitle: this.terms['share.dialogTitle'] ?? 'Share Workspace', size: "small", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, contained: true }, h("div", { key: '0b2fec3db6c039752429768fb4bd6a2150a4345e', class: "share-content" }, h("div", { key: 'bd0b85f8418d0c46d14b718024ed62b9f72e4f52', class: "share-section" }, h("div", { key: 'bf62503a593454ffacd30d532fcd79dcbf938659', class: "share-row" }, h("div", { key: 'dfd9e83166b886d00fb5b097d0ccd77169c011bd', class: "share-label-group" }, h("label", { key: '67dba950ded47a08eb006c1628d14038b18171b5', class: "share-label" }, this.terms['share.linkSharing.label'] ?? 'Link sharing'), h("p", { key: '926f8670b35dab1e3e2a6496f44b5d6e0ee46417', class: "share-description" }, this.internalIsPublic
3208
3208
  ? (this.terms['share.linkSharing.enabledDescription'] ?? 'Anyone with the link can access this workspace.')
3209
- : (this.terms['share.linkSharing.disabledDescription'] ?? 'Link sharing is disabled. Only you can access this workspace.'))), h("kritzel-slide-toggle", { key: '1e2a9437714bcf3d85e40f4f7a69e027f4c05e9c', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: this.terms['share.linkSharing.toggleLabel'] ?? 'Enable link sharing' }))), this.internalIsPublic && (h("div", { key: 'b64439cced536c440afb93eb4d674221299101ae', class: "share-section" }, h("div", { key: '905ddd55dfef9bb4e2388228237c49d59b633658', class: "share-url-container" }, h("input", { key: '62797e8efa4a918302198c8dbd6fb04bbb13d032', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), h("button", { key: '7a018f0ec803644fefa16a3678cd32503704a3b8', class: { 'copy-button': true, 'copy-success': this.copySuccess }, onClick: this.handleCopyUrl, title: this.copySuccess ? (this.terms['share.copyLink.copied'] ?? 'Copied!') : (this.terms['share.copyLink.title'] ?? 'Copy link') }, h("kritzel-icon", { key: '6321962e43123c7798685821051fd33f702b9156', name: this.copySuccess ? 'check' : 'copy', size: 18 }))), this.qrCodeDataUrl && (h("div", { key: 'db4e5c19d2ece15523a4746a84b62bb3b55177ab', class: "share-qr-container" }, h("img", { key: '403477b5cd526beefabc3576050d399a2520d51b', class: "share-qr-image", src: this.qrCodeDataUrl, alt: "QR code for share link" })))))))));
3209
+ : (this.terms['share.linkSharing.disabledDescription'] ?? 'Link sharing is disabled. Only you can access this workspace.'))), h("kritzel-slide-toggle", { key: 'e42fabecb37fd21cc4907b966e2f50113b945eda', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: this.terms['share.linkSharing.toggleLabel'] ?? 'Enable link sharing' }))), this.internalIsPublic && (h("div", { key: '40afacc81e0bbcf4c404ae32491e5142a32bca66', class: "share-section" }, h("div", { key: '57b6952670b1cbc789770362b573623035b50cf3', class: "share-url-container" }, h("input", { key: '0ee836655ca26c1e073d5d86014322939527c74b', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), h("button", { key: '2d4661c1718bd8390dbe1146e8f9afe035934635', class: { 'copy-button': true, 'copy-success': this.copySuccess }, onClick: this.handleCopyUrl, title: this.copySuccess ? (this.terms['share.copyLink.copied'] ?? 'Copied!') : (this.terms['share.copyLink.title'] ?? 'Copy link') }, h("kritzel-icon", { key: 'b43bde94601c352b6065c89c026807d7efb3bcc3', name: this.copySuccess ? 'check' : 'copy', size: 18 }))), this.qrCodeDataUrl && (h("div", { key: 'f4d657aa918abbb3cf3ed039332d8c67247b83e8', class: "share-qr-container" }, h("img", { key: 'b165a446df3fba87918a19928734d39af1e6bfcf', class: "share-qr-image", src: this.qrCodeDataUrl, alt: "QR code for share link" })))))))));
3210
3210
  }
3211
3211
  static get watchers() { return {
3212
3212
  "isPublic": [{
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$1 } from './p-D5jf8wAu.js';
2
+ import { d as defineCustomElement$1 } from './p-DXcjIb_a.js';
3
3
 
4
4
  const kritzelCurrentUserCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}kritzel-avatar{cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:50%}`;
5
5
 
@@ -22,7 +22,7 @@ const KritzelCurrentUser = /*@__PURE__*/ proxyCustomElement(class KritzelCurrent
22
22
  /** Resolved localized strings keyed by term key, supplied by the editor. */
23
23
  terms = {};
24
24
  render() {
25
- return (h(Host, { key: '606ff4d621467d24c30d06a2cf9191a883497f1b' }, h("kritzel-avatar", { key: 'a215f36bcfa55e2d649e79ef2e4ae4503ebb325d', user: this.user, size: this.avatarSize })));
25
+ return (h(Host, { key: '3c23677e98ba459144fafde994dc66a14068c5b1' }, h("kritzel-avatar", { key: 'e5c04bf871f7808ab0e380770a2a94ddab8eac83', user: this.user, size: this.avatarSize })));
26
26
  }
27
27
  static get style() { return kritzelCurrentUserCss(); }
28
28
  }, [513, "kritzel-current-user", {