kritzel-stencil 0.4.17 → 0.4.18

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 (214) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/{index-Xav9JFHg.js → index-Dn19mGl-.js} +47 -11
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +113 -113
  6. package/dist/cjs/kritzel-brush-style.cjs.entry.js +2 -2
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/{schema.constants-CjN-B633.js → schema.constants-CY0WWJYd.js} +44 -20
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/collection/collection-manifest.json +1 -1
  11. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  12. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  13. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  14. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  15. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  16. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -18
  17. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  18. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +21 -21
  19. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  20. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  21. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  22. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  23. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  24. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  25. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  26. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  27. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  28. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  29. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  30. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  31. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  32. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  33. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  34. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  35. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  36. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  37. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  38. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  39. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  40. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  41. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  42. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  43. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  44. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  45. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  46. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  47. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  48. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  49. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  50. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  51. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  52. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  53. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  54. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  55. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  56. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  57. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  58. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  59. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  60. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  61. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  62. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  63. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  64. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  65. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  66. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +50 -50
  67. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  68. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +18 -18
  69. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  70. package/dist/collection/components/ui/kritzel-active-users/kritzel-active-users.css +65 -65
  71. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.css +42 -42
  72. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  73. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +112 -112
  74. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +331 -331
  75. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  76. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.css +11 -11
  77. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  78. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +39 -39
  79. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  80. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +89 -89
  81. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  82. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +50 -50
  83. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  84. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.css +98 -98
  85. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  86. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +58 -58
  87. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +2 -2
  88. package/dist/collection/components/ui/kritzel-notification-card/kritzel-notification-card.css +101 -101
  89. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +137 -137
  90. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  91. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.css +150 -150
  92. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  93. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -38
  94. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +45 -45
  95. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  96. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +16 -16
  97. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.css +72 -72
  98. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  99. package/dist/collection/constants/version.js +1 -1
  100. package/dist/collection/helpers/cursor.helper.js +6 -6
  101. package/dist/collection/helpers/svg-export.helper.js +41 -41
  102. package/dist/components/index.js +3 -3
  103. package/dist/components/kritzel-active-users.js +1 -1
  104. package/dist/components/kritzel-avatar.js +1 -1
  105. package/dist/components/kritzel-awareness-cursors.js +1 -1
  106. package/dist/components/kritzel-back-to-content.js +1 -1
  107. package/dist/components/kritzel-brush-style.js +4 -4
  108. package/dist/components/kritzel-button.js +1 -1
  109. package/dist/components/kritzel-color-palette.js +1 -1
  110. package/dist/components/kritzel-color.js +1 -1
  111. package/dist/components/kritzel-context-menu.js +1 -1
  112. package/dist/components/kritzel-controls.js +1 -1
  113. package/dist/components/kritzel-current-user-dialog.js +1 -1
  114. package/dist/components/kritzel-current-user.js +1 -1
  115. package/dist/components/kritzel-cursor-trail.js +1 -1
  116. package/dist/components/kritzel-dialog.js +1 -1
  117. package/dist/components/kritzel-dropdown.js +1 -1
  118. package/dist/components/kritzel-editor.js +56 -56
  119. package/dist/components/kritzel-engine.js +1 -1
  120. package/dist/components/kritzel-export.js +1 -1
  121. package/dist/components/kritzel-font-family.js +1 -1
  122. package/dist/components/kritzel-font-size.js +1 -1
  123. package/dist/components/kritzel-font.js +1 -1
  124. package/dist/components/kritzel-icon.js +1 -1
  125. package/dist/components/kritzel-input.js +1 -1
  126. package/dist/components/kritzel-line-endings.js +1 -1
  127. package/dist/components/kritzel-loading-overlay.js +1 -1
  128. package/dist/components/kritzel-login-dialog.js +1 -1
  129. package/dist/components/kritzel-master-detail.js +1 -1
  130. package/dist/components/kritzel-menu-item.js +1 -1
  131. package/dist/components/kritzel-menu.js +1 -1
  132. package/dist/components/kritzel-more-menu.js +1 -1
  133. package/dist/components/kritzel-notification-card.js +1 -1
  134. package/dist/components/kritzel-numeric-input.js +1 -1
  135. package/dist/components/kritzel-opacity-slider.js +1 -1
  136. package/dist/components/kritzel-pill-tabs.js +1 -1
  137. package/dist/components/kritzel-portal.js +1 -1
  138. package/dist/components/kritzel-settings.js +1 -1
  139. package/dist/components/kritzel-shape-fill.js +1 -1
  140. package/dist/components/kritzel-share-dialog.js +1 -1
  141. package/dist/components/kritzel-slide-toggle.js +1 -1
  142. package/dist/components/kritzel-split-button.js +1 -1
  143. package/dist/components/kritzel-stroke-size.js +1 -1
  144. package/dist/components/kritzel-sync-indicator.js +1 -1
  145. package/dist/components/kritzel-tool-config.js +1 -1
  146. package/dist/components/kritzel-tooltip.js +1 -1
  147. package/dist/components/kritzel-utility-panel.js +1 -1
  148. package/dist/components/kritzel-watermark.js +1 -1
  149. package/dist/components/kritzel-workspace-manager.js +1 -1
  150. package/dist/components/kritzel-zoom-panel.js +1 -1
  151. package/dist/components/{p-jIKskj3S.js → p-1Q4VnThv.js} +3 -3
  152. package/dist/components/{p-Cm33td2O.js → p-3tBE7SyG.js} +2 -2
  153. package/dist/components/{p-fL9rl200.js → p-BFYT03fw.js} +3 -3
  154. package/dist/components/{p-D9WOTj4k.js → p-BL0aCu3R.js} +9 -9
  155. package/dist/components/{p-DtnMdWWB.js → p-BShrnlam.js} +2 -2
  156. package/dist/components/{p-BsLI_BWq.js → p-BXUx_C0N.js} +2 -2
  157. package/dist/components/{p-CzW58DHM.js → p-BZZ3KRPk.js} +3 -3
  158. package/dist/components/{p-D1rjfWgJ.js → p-BkXQL5Dl.js} +5 -5
  159. package/dist/components/{p-eZXIu4yK.js → p-BppcoKoo.js} +5 -5
  160. package/dist/components/{p-DDTMGbtA.js → p-BrA9NBEE.js} +21 -21
  161. package/dist/components/{p-Czhdc844.js → p-BrqSjRJN.js} +3 -3
  162. package/dist/components/{p-CAoN_STZ.js → p-Bxi-Bm49.js} +2 -2
  163. package/dist/components/{p-B43upypT.js → p-C9_yBEoX.js} +30 -10
  164. package/dist/components/{p-Df3BwVGy.js → p-CHoOe3FD.js} +3 -3
  165. package/dist/components/{p-2WiGyky4.js → p-CLAz6RJc.js} +3 -3
  166. package/dist/components/{p-B5SWPDuq.js → p-CSKToqUl.js} +4 -4
  167. package/dist/components/{p-CF8pLc07.js → p-CSWCmyzb.js} +5 -5
  168. package/dist/components/{p-HoO86l1o.js → p-CWAChRD5.js} +12 -12
  169. package/dist/components/{p-DwMqCX2P.js → p-Ch-KG9To.js} +3 -3
  170. package/dist/components/{p-CSuU8frA.js → p-Ck-87E2G.js} +1 -1
  171. package/dist/components/{p-BFYtCsZu.js → p-Covorf4C.js} +3 -3
  172. package/dist/components/{p-BZAIIz5-.js → p-Csxx9TbU.js} +90 -66
  173. package/dist/components/{p-BoN700-O.js → p-Cx-L_28S.js} +3 -3
  174. package/dist/components/{p-vqEUQ-4Q.js → p-D0Trc3IQ.js} +5 -5
  175. package/dist/components/{p-BrNsOp2v.js → p-D2VcPEtL.js} +6 -6
  176. package/dist/components/{p-CSPYkLLH.js → p-D3BzgkIE.js} +2 -2
  177. package/dist/components/{p-bAacqNHq.js → p-D6JycG-I.js} +3 -3
  178. package/dist/components/{p-DB58Oa5V.js → p-DPsbNStn.js} +2 -2
  179. package/dist/components/{p-CwZ3KKFq.js → p-DT_WBwsw.js} +6 -6
  180. package/dist/components/{p-BPsKYMH6.js → p-DYPA7jpg.js} +2 -2
  181. package/dist/components/{p-DBqoPgev.js → p-DafP9PAA.js} +2 -2
  182. package/dist/components/{p-Dt7-I2Xz.js → p-DcUIO14-.js} +4 -4
  183. package/dist/components/{p-CXpv9Rxe.js → p-Di--2boB.js} +3 -3
  184. package/dist/components/{p-djJSnjAX.js → p-DjXQxw9R.js} +3 -3
  185. package/dist/components/{p-DVXTPI71.js → p-Dp1CD4gK.js} +2 -2
  186. package/dist/components/{p-DKGg-76-.js → p-Dznwo6oc.js} +2 -2
  187. package/dist/components/{p-BozrueXV.js → p-ME1sDz3f.js} +2 -2
  188. package/dist/components/{p-B-585egz.js → p-MhQxGUvY.js} +3 -3
  189. package/dist/components/{p-DX2nriaq.js → p-QSyeAy8R.js} +2 -2
  190. package/dist/components/{p-PjPPCHVL.js → p-Qdo3E8dr.js} +2 -2
  191. package/dist/components/{p-dsxHDlQ3.js → p-b0J2ktAm.js} +7 -7
  192. package/dist/components/{p-C98Eb3_R.js → p-dAXnRkjA.js} +5 -5
  193. package/dist/components/{p-GKmqCI8r.js → p-fSV6KVTC.js} +3 -3
  194. package/dist/components/{p-CaBbajU2.js → p-o3NYKrVL.js} +3 -3
  195. package/dist/components/{p-CrHvaLRV.js → p-vDCa_ZDm.js} +3 -3
  196. package/dist/components/{p-4SPnZZkH.js → p-zG-WUBGF.js} +4 -4
  197. package/dist/esm/{index-Dhio9uis.js → index-2va1Pk9z.js} +47 -11
  198. package/dist/esm/index.js +2 -2
  199. package/dist/esm/kritzel-active-users_47.entry.js +113 -113
  200. package/dist/esm/kritzel-brush-style.entry.js +2 -2
  201. package/dist/esm/loader.js +2 -2
  202. package/dist/esm/{schema.constants-DfvqHmxc.js → schema.constants-DBvUmuDH.js} +44 -20
  203. package/dist/esm/stencil.js +3 -3
  204. package/dist/stencil/index.esm.js +2 -2
  205. package/dist/stencil/{p-2ba5e7ef.entry.js → p-0250005e.entry.js} +113 -113
  206. package/dist/stencil/{p-Dhio9uis.js → p-2va1Pk9z.js} +47 -11
  207. package/dist/stencil/{p-DfvqHmxc.js → p-DBvUmuDH.js} +44 -20
  208. package/dist/stencil/{p-fb32cd8f.entry.js → p-df06ca3a.entry.js} +2 -2
  209. package/dist/stencil/stencil.esm.js +4 -4
  210. package/dist/types/constants/version.d.ts +1 -1
  211. package/dist/types/stencil-public-runtime.d.ts +12 -0
  212. package/loader/index.d.ts +1 -1
  213. package/package.json +1 -1
  214. package/readme.md +10 -10
@@ -1,17 +1,17 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
  import { a as KritzelColorHelper } from './p-7I4Uzjrw.js';
3
3
  import { r as resolveTextToolAvailableFonts, K as KritzelFontRegistry } from './p-DJkKlUyZ.js';
4
- import { d as defineCustomElement$b } from './p-Dt7-I2Xz.js';
5
- import { d as defineCustomElement$a } from './p-B-585egz.js';
6
- import { d as defineCustomElement$9 } from './p-Df3BwVGy.js';
7
- import { d as defineCustomElement$8 } from './p-DVXTPI71.js';
8
- import { d as defineCustomElement$7 } from './p-djJSnjAX.js';
9
- import { d as defineCustomElement$6 } from './p-2WiGyky4.js';
10
- import { d as defineCustomElement$5 } from './p-CSuU8frA.js';
11
- import { d as defineCustomElement$4 } from './p-CXpv9Rxe.js';
12
- import { d as defineCustomElement$3 } from './p-CrHvaLRV.js';
13
- import { d as defineCustomElement$2 } from './p-BFYtCsZu.js';
14
- import { d as defineCustomElement$1 } from './p-GKmqCI8r.js';
4
+ import { d as defineCustomElement$b } from './p-DcUIO14-.js';
5
+ import { d as defineCustomElement$a } from './p-MhQxGUvY.js';
6
+ import { d as defineCustomElement$9 } from './p-CHoOe3FD.js';
7
+ import { d as defineCustomElement$8 } from './p-Dp1CD4gK.js';
8
+ import { d as defineCustomElement$7 } from './p-DjXQxw9R.js';
9
+ import { d as defineCustomElement$6 } from './p-CLAz6RJc.js';
10
+ import { d as defineCustomElement$5 } from './p-Ck-87E2G.js';
11
+ import { d as defineCustomElement$4 } from './p-Di--2boB.js';
12
+ import { d as defineCustomElement$3 } from './p-vDCa_ZDm.js';
13
+ import { d as defineCustomElement$2 } from './p-Covorf4C.js';
14
+ import { d as defineCustomElement$1 } from './p-fSV6KVTC.js';
15
15
 
16
16
  class KritzelToolConfigHelper {
17
17
  static getToolConfig(tool) {
@@ -1,5 +1,5 @@
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-4SPnZZkH.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
+ import { d as defineCustomElement$1 } from './p-zG-WUBGF.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: '19551eb12507f1384aedf3ca4ce5212eca509c24' }, h("kritzel-avatar", { key: 'e39405e8e6c2e77a8acf5f286fa3890e28e8ab17', user: this.user, size: this.avatarSize })));
25
+ return (h(Host, { key: '05ff7ea13b5a4850ae49672dfab15280b97e50a1' }, h("kritzel-avatar", { key: '4c33f853508509337033afd7015d7367c5c81d49', user: this.user, size: this.avatarSize })));
26
26
  }
27
27
  static get style() { return kritzelCurrentUserCss(); }
28
28
  }, [513, "kritzel-current-user", {
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
 
3
3
  /**
4
4
  * A static registry for managing SVG icons throughout the Kritzel library.
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
 
3
3
  const kritzelShapeFillCss = () => `:host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.fill-row{display:flex;align-items:center;gap:4px}.fill-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-shape-fill-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.fill-option:hover{background-color:var(--kritzel-shape-fill-hover-background-color, #ebebeb)}.fill-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-shape-fill-selected-background-color, #ebebeb)}.fill-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.fill-icon{width:100%;height:100%}`;
4
4
 
@@ -27,10 +27,10 @@ const KritzelShapeFill = /*@__PURE__*/ proxyCustomElement(class KritzelShapeFill
27
27
  return (h("svg", { viewBox: "0 0 24 24", class: "fill-icon" }, h("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: strokeColor, stroke: strokeColor, "stroke-width": "2" })));
28
28
  }
29
29
  render() {
30
- return (h(Host, { key: '6d38a9af2e4c4c7f86ab994c63fc074007c86b48' }, h("div", { key: 'cf58f26cb0e56e274873d11024209c6908d317bb', class: "fill-row" }, h("button", { key: 'c75eed70fe0c2fcbf0fd136bb6fce75b2dbfb45d', class: {
30
+ return (h(Host, { key: 'ec214708dd4210e0c36734cb81fba76849114f9b' }, h("div", { key: 'd64bacdb7c50b31f3c460bdf2e939b4159d4d000', class: "fill-row" }, h("button", { key: '812735be08265145a13ab116e7153fd684f8b77f', class: {
31
31
  'fill-option': true,
32
32
  'selected': this.value === 'transparent',
33
- }, onClick: () => this.handleFillChange('transparent'), title: "Transparent background" }, this.renderFillIcon('transparent')), h("button", { key: '5d6ede439b5d5e55598cd8c20b5851fb9f210463', class: {
33
+ }, onClick: () => this.handleFillChange('transparent'), title: "Transparent background" }, this.renderFillIcon('transparent')), h("button", { key: 'cb5caf2db8aece4bef2eebca37e7ac36383bb450', class: {
34
34
  'fill-option': true,
35
35
  'selected': this.value === 'filled',
36
36
  }, onClick: () => this.handleFillChange('filled'), title: "Filled background" }, this.renderFillIcon('filled')))));
@@ -1,17 +1,17 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { a as KritzelMouseButton, d as defineCustomElement$3 } from './p-Cm33td2O.js';
3
- import { K as KritzelBaseObject, e as KritzelMathHelper, f as KritzelGeometryHelper, a as KritzelPath, b as KritzelLine, d as defineCustomElement$4 } from './p-bAacqNHq.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
+ import { a as KritzelMouseButton, d as defineCustomElement$3 } from './p-3tBE7SyG.js';
3
+ import { K as KritzelBaseObject, e as KritzelMathHelper, f as KritzelGeometryHelper, a as KritzelPath, b as KritzelLine, d as defineCustomElement$4 } from './p-D6JycG-I.js';
4
4
  import { c as commonjsGlobal } from './p-BFTU3MAI.js';
5
5
  import { a as KritzelColorHelper, D as DEFAULT_COLOR_PALETTE, K as KritzelThemeManager } from './p-7I4Uzjrw.js';
6
6
  import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
7
7
  import { K as KritzelFontRegistry, r as resolveTextToolAvailableFonts } from './p-DJkKlUyZ.js';
8
- import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$1 } from './p-DtnMdWWB.js';
8
+ import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$1 } from './p-BShrnlam.js';
9
9
  import { K as KritzelWorkspace, W as WORKSPACE_EXPORT_VERSION } from './p-DAwPPDMS.js';
10
10
  import { K as KritzelHTMLHelper } from './p-WUdQqYnu.js';
11
11
  import { O as ObjectHelper } from './p-DPONTran.js';
12
12
  import * as Y from 'yjs';
13
13
  import { a as CURRENT_WORKSPACE_SCHEMA_VERSION, C as CURRENT_APP_STATE_SCHEMA_VERSION } from './p-CW-VyJgK.js';
14
- import { K as KritzelIconRegistry, d as defineCustomElement$2 } from './p-CSuU8frA.js';
14
+ import { K as KritzelIconRegistry, d as defineCustomElement$2 } from './p-Ck-87E2G.js';
15
15
 
16
16
  class KritzelKeyboardHelper {
17
17
  static forceHideKeyboard() {
@@ -5076,10 +5076,11 @@ class Fitter {
5076
5076
  }
5077
5077
  openMore() {
5078
5078
  let { content, openStart, openEnd } = this.unplaced;
5079
- let inner = contentAt(content, openStart);
5080
- if (!inner.childCount || inner.firstChild.isLeaf)
5079
+ if (maxOpen(content, -1) <= openStart)
5081
5080
  return false;
5082
- this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));
5081
+ if (this.unplaced.size > 1 && maxOpen(content, 1) > openEnd)
5082
+ openEnd++;
5083
+ this.unplaced = new Slice(content, openStart + 1, openEnd);
5083
5084
  return true;
5084
5085
  }
5085
5086
  dropNode() {
@@ -5249,6 +5250,14 @@ function invalidMarks(type, fragment, start) {
5249
5250
  function definesContent(type) {
5250
5251
  return type.spec.defining || type.spec.definingForContent;
5251
5252
  }
5253
+ function maxOpen(frag, side) {
5254
+ for (let count = 0;; count++) {
5255
+ let ch = side < 0 ? frag.firstChild : frag.lastChild;
5256
+ if (!ch || ch.isAtom)
5257
+ return count;
5258
+ frag = ch.content;
5259
+ }
5260
+ }
5252
5261
  function replaceRange(tr, from, to, slice) {
5253
5262
  if (!slice.size)
5254
5263
  return tr.deleteRange(from, to);
@@ -7953,7 +7962,8 @@ class WidgetViewDesc extends ViewDesc {
7953
7962
  wrap.appendChild(dom);
7954
7963
  dom = wrap;
7955
7964
  }
7956
- dom.contentEditable = "false";
7965
+ if (!dom.hasAttribute("contenteditable"))
7966
+ dom.contentEditable = "false";
7957
7967
  dom.classList.add("ProseMirror-widget");
7958
7968
  }
7959
7969
  super(parent, [], dom, null);
@@ -9801,8 +9811,14 @@ function maybeWrapTrusted(html) {
9801
9811
  // With the require-trusted-types-for CSP, Chrome will block
9802
9812
  // innerHTML, even on a detached document. This wraps the string in
9803
9813
  // a way that makes the browser allow us to use its parser again.
9804
- if (!_policy)
9805
- _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy("ProseMirrorClipboard", { createHTML: (s) => s });
9814
+ if (!_policy) {
9815
+ if (_policy = trustedTypes.defaultPolicy)
9816
+ try {
9817
+ return _policy.createHTML(html);
9818
+ }
9819
+ catch (_a) { }
9820
+ _policy = trustedTypes.createPolicy("ProseMirrorClipboard", { createHTML: (s) => s });
9821
+ }
9806
9822
  return _policy.createHTML(html);
9807
9823
  }
9808
9824
  function readHTML(html) {
@@ -9859,6 +9875,12 @@ function addContext(slice, context) {
9859
9875
  let type = schema.nodes[array[i]];
9860
9876
  if (!type || type.hasRequiredAttrs())
9861
9877
  break;
9878
+ try {
9879
+ type.checkAttrs(array[i + 1]);
9880
+ }
9881
+ catch (e) {
9882
+ break;
9883
+ }
9862
9884
  content = Fragment.from(type.create(array[i + 1], content));
9863
9885
  openStart++;
9864
9886
  openEnd++;
@@ -13517,16 +13539,20 @@ a custom function to determine the type of the newly split off block.
13517
13539
  */
13518
13540
  function splitBlockAs(splitNode) {
13519
13541
  return (state, dispatch) => {
13520
- let { $from} = state.selection;
13521
13542
  if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {
13543
+ let { $from } = state.selection;
13522
13544
  if (!$from.parentOffset || !canSplit(state.doc, $from.pos))
13523
13545
  return false;
13524
13546
  if (dispatch)
13525
13547
  dispatch(state.tr.split($from.pos).scrollIntoView());
13526
13548
  return true;
13527
13549
  }
13528
- if (!$from.depth)
13550
+ if (!state.selection.$from.depth)
13529
13551
  return false;
13552
+ let tr = state.tr;
13553
+ if (!state.selection.empty && (state.selection instanceof TextSelection || state.selection instanceof AllSelection))
13554
+ tr.deleteSelection();
13555
+ let { $from } = tr.selection, mapFrom = tr.steps.length;
13530
13556
  let types = [];
13531
13557
  let splitDepth, deflt, atEnd = false, atStart = false;
13532
13558
  for (let d = $from.depth;; d--) {
@@ -13545,10 +13571,7 @@ function splitBlockAs(splitNode) {
13545
13571
  types.unshift(null);
13546
13572
  }
13547
13573
  }
13548
- let tr = state.tr;
13549
- if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)
13550
- tr.deleteSelection();
13551
- let splitPos = tr.mapping.map($from.pos);
13574
+ let splitPos = $from.pos;
13552
13575
  let can = canSplit(tr.doc, splitPos, types.length, types);
13553
13576
  if (!can) {
13554
13577
  types[0] = deflt ? { type: deflt } : null;
@@ -13558,9 +13581,10 @@ function splitBlockAs(splitNode) {
13558
13581
  return false;
13559
13582
  tr.split(splitPos, types.length, types);
13560
13583
  if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {
13561
- let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);
13584
+ let mapping = tr.mapping.slice(mapFrom);
13585
+ let first = mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);
13562
13586
  if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))
13563
- tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);
13587
+ tr.setNodeMarkup(mapping.map($from.before(splitDepth)), deflt);
13564
13588
  }
13565
13589
  if (dispatch)
13566
13590
  dispatch(tr.scrollIntoView());
@@ -19295,12 +19319,12 @@ class KritzelCursorHelper {
19295
19319
  // We rotate around the center of the SVG canvas
19296
19320
  const center = size / 2;
19297
19321
  // We use a group to apply the rotation
19298
- const svg = `
19299
- <svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}">
19300
- <g transform="rotate(${rotation} ${center} ${center})">
19301
- ${content}
19302
- </g>
19303
- </svg>
19322
+ const svg = `
19323
+ <svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}">
19324
+ <g transform="rotate(${rotation} ${center} ${center})">
19325
+ ${content}
19326
+ </g>
19327
+ </svg>
19304
19328
  `;
19305
19329
  // Encode the SVG for use in a data URI
19306
19330
  // We need to be careful with encoding to ensure it works across browsers
@@ -48075,8 +48099,8 @@ class KritzelSvgExportHelper {
48075
48099
  .join('\n ');
48076
48100
  const xmlDecl = includeXmlDeclaration ? '<?xml version="1.0" encoding="UTF-8"?>\n' : '';
48077
48101
  const defsContent = defs.length > 0 ? `\n <defs>\n ${defs.join('\n ')}\n </defs>` : '';
48078
- return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48079
- ${elements}
48102
+ return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48103
+ ${elements}
48080
48104
  </svg>`;
48081
48105
  }
48082
48106
  /**
@@ -48228,8 +48252,8 @@ class KritzelSvgExportHelper {
48228
48252
  const orient = end === 'start' ? 'auto-start-reverse' : 'auto';
48229
48253
  const refX = 0;
48230
48254
  const refY = size / 2;
48231
- return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48232
- <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48255
+ return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48256
+ <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48233
48257
  </marker>`;
48234
48258
  }
48235
48259
  /**
@@ -48276,10 +48300,10 @@ class KritzelSvgExportHelper {
48276
48300
  const opacity = path.opacity !== 1 ? ` opacity="${path.opacity}"` : '';
48277
48301
  const scale = this.getObjectScale(path);
48278
48302
  // Path needs to be wrapped in a g with translation since path.d uses local coordinates
48279
- return `<g transform="${transform}"${opacity}>
48280
- <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48281
- <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48282
- </svg>
48303
+ return `<g transform="${transform}"${opacity}>
48304
+ <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48305
+ <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48306
+ </svg>
48283
48307
  </g>`;
48284
48308
  }
48285
48309
  /**
@@ -48295,10 +48319,10 @@ class KritzelSvgExportHelper {
48295
48319
  const scale = this.getObjectScale(line);
48296
48320
  const markerStart = line.hasStartArrow ? ` marker-start="url(#${line.startMarkerId})"` : '';
48297
48321
  const markerEnd = line.hasEndArrow ? ` marker-end="url(#${line.endMarkerId})"` : '';
48298
- return `<g transform="${transform}"${opacity}>
48299
- <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48300
- <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48301
- </svg>
48322
+ return `<g transform="${transform}"${opacity}>
48323
+ <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48324
+ <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48325
+ </svg>
48302
48326
  </g>`;
48303
48327
  }
48304
48328
  /**
@@ -48322,18 +48346,18 @@ class KritzelSvgExportHelper {
48322
48346
  const textHtml = this.prosemirrorToHtml(shape.content, shape, theme);
48323
48347
  if (textHtml) {
48324
48348
  const fontColor = KritzelColorHelper.resolveThemeColor(shape.fontColor, theme);
48325
- textContent = `
48326
- <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48327
- <div xmlns="http://www.w3.org/1999/xhtml" style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; font-family: ${shape.fontFamily}; font-size: ${shape.fontSize}px; color: ${fontColor}; overflow: hidden;">
48328
- ${textHtml}
48329
- </div>
48349
+ textContent = `
48350
+ <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48351
+ <div xmlns="http://www.w3.org/1999/xhtml" style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; font-family: ${shape.fontFamily}; font-size: ${shape.fontSize}px; color: ${fontColor}; overflow: hidden;">
48352
+ ${textHtml}
48353
+ </div>
48330
48354
  </foreignObject>`;
48331
48355
  }
48332
48356
  }
48333
- return `<g transform="${transform}"${opacity}>
48334
- <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48335
- <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48336
- </svg>
48357
+ return `<g transform="${transform}"${opacity}>
48358
+ <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48359
+ <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48360
+ </svg>
48337
48361
  </g>`;
48338
48362
  }
48339
48363
  /**
@@ -48364,10 +48388,10 @@ class KritzelSvgExportHelper {
48364
48388
  // adjusted font-size already accounts for it – keeping both would double-scale
48365
48389
  // the content and overflow the foreignObject.
48366
48390
  const svgFontSizePx = (text.fontSize * (4 / 3) * (text.scaleFactor || 1) / scale).toFixed(4);
48367
- return `<g transform="${transform}"${opacity}>
48368
- <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48369
- <div xmlns="http://www.w3.org/1999/xhtml" style="font-family: ${text.fontFamily}; font-size: ${svgFontSizePx}px; color: ${fontColor}; background-color: ${bgColor || 'transparent'}; white-space: pre-wrap; word-wrap: break-word; width: 100%; margin: 0; padding: 0; box-sizing: border-box;">${htmlContent.trim()}</div>
48370
- </foreignObject>
48391
+ return `<g transform="${transform}"${opacity}>
48392
+ <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48393
+ <div xmlns="http://www.w3.org/1999/xhtml" style="font-family: ${text.fontFamily}; font-size: ${svgFontSizePx}px; color: ${fontColor}; background-color: ${bgColor || 'transparent'}; white-space: pre-wrap; word-wrap: break-word; width: 100%; margin: 0; padding: 0; box-sizing: border-box;">${htmlContent.trim()}</div>
48394
+ </foreignObject>
48371
48395
  </g>`;
48372
48396
  }
48373
48397
  /**
@@ -48401,9 +48425,9 @@ class KritzelSvgExportHelper {
48401
48425
  return `<tspan x="0" y="${y}" xml:space="preserve">${this.escapeHtml(line)}</tspan>`;
48402
48426
  })
48403
48427
  .join('');
48404
- return `<g transform="${transform}"${opacity}>
48405
- ${bgRect}
48406
- <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48428
+ return `<g transform="${transform}"${opacity}>
48429
+ ${bgRect}
48430
+ <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48407
48431
  </g>`;
48408
48432
  }
48409
48433
  /**
@@ -48431,8 +48455,8 @@ class KritzelSvgExportHelper {
48431
48455
  const width = image.totalWidth / scale;
48432
48456
  const height = image.totalHeight / scale;
48433
48457
  const href = imageDataUrls?.get(image.id) || image.resolvedSrc || image.src || '';
48434
- return `<g transform="${transform}"${opacity}>
48435
- <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48458
+ return `<g transform="${transform}"${opacity}>
48459
+ <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48436
48460
  </g>`;
48437
48461
  }
48438
48462
  /**
@@ -48452,19 +48476,19 @@ class KritzelSvgExportHelper {
48452
48476
  if (rasterSafeForCanvas) {
48453
48477
  // PNG export: render placeholder rect (foreignObject doesn't rasterize to PNG well)
48454
48478
  console.warn('[KritzelCustomElement SVG Export] Custom elements do not serialize well to PNG. Use SVG export or screenshot instead.');
48455
- return `<g transform="${transform}"${opacity}>
48456
- <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48457
- <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48479
+ return `<g transform="${transform}"${opacity}>
48480
+ <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48481
+ <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48458
48482
  </g>`;
48459
48483
  }
48460
48484
  // SVG export: use foreignObject to embed HTML
48461
48485
  const html = obj.element?.outerHTML || '<div style="border:1px dashed #ccc">Empty</div>';
48462
- return `<g transform="${transform}"${opacity}>
48463
- <foreignObject x="0" y="0" width="${width}" height="${height}">
48464
- <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48465
- ${html}
48466
- </div>
48467
- </foreignObject>
48486
+ return `<g transform="${transform}"${opacity}>
48487
+ <foreignObject x="0" y="0" width="${width}" height="${height}">
48488
+ <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48489
+ ${html}
48490
+ </div>
48491
+ </foreignObject>
48468
48492
  </g>`;
48469
48493
  }
48470
48494
  /**
@@ -48484,8 +48508,8 @@ class KritzelSvgExportHelper {
48484
48508
  return '';
48485
48509
  }
48486
48510
  const opacity = group.opacity !== 1 ? ` opacity="${group.opacity}"` : '';
48487
- return `<g${opacity}>
48488
- ${children}
48511
+ return `<g${opacity}>
48512
+ ${children}
48489
48513
  </g>`;
48490
48514
  }
48491
48515
  /**
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
 
3
3
  const kritzelButtonCss = () => `:host{display:inline-block;font-family:sans-serif}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:inline-flex;width:var(--kritzel-button-width, auto);align-items:center;justify-content:center;gap:6px;border-radius:var(--kritzel-button-border-radius, 8px);padding:var(--kritzel-button-padding, 12px 20px);font-size:var(--kritzel-button-font-size, 14px);font-weight:var(--kritzel-button-font-weight, 500);transition:background-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}button.primary{background-color:var(--kritzel-button-primary-background-color, #007AFF);color:var(--kritzel-button-primary-color, #ffffff)}button.primary:hover{background-color:var(--kritzel-button-primary-hover-background-color, #006ae6)}button.primary:active{background-color:var(--kritzel-button-primary-active-background-color, #005bbf)}button.secondary{background-color:var(--kritzel-button-secondary-background-color, #f0f0f0);color:var(--kritzel-button-secondary-color, #333333)}button.secondary:hover{background-color:var(--kritzel-button-secondary-hover-background-color, #e0e0e0)}button.secondary:active{background-color:var(--kritzel-button-secondary-active-background-color, #d0d0d0)}button.text{background-color:transparent;color:var(--kritzel-button-text-color, #007AFF)}button.text:hover{background-color:var(--kritzel-button-text-hover-background-color, rgba(0, 122, 255, 0.08))}button.text:active{background-color:var(--kritzel-button-text-active-background-color, rgba(0, 122, 255, 0.15))}button.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}`;
4
4
 
@@ -26,11 +26,11 @@ const KritzelButton = /*@__PURE__*/ proxyCustomElement(class KritzelButton exten
26
26
  this.buttonClick.emit();
27
27
  };
28
28
  render() {
29
- return (h(Host, { key: '51621006f6b085db2b43accf52192f0674d2c50c' }, h("button", { key: '01ab2d96abe5ad34285e59f6fec66f6b21e91849', type: this.type, class: {
29
+ return (h(Host, { key: 'ef407708a606dab1ac691b6c6f1c319ba5529e3b' }, h("button", { key: '5b26e220334c3ee20e0af433792496568067ca8c', type: this.type, class: {
30
30
  'kritzel-button': true,
31
31
  [this.variant]: true,
32
32
  'disabled': this.disabled,
33
- }, disabled: this.disabled, onClick: this.handleClick }, h("slot", { key: '4b085139ea85ad9f836059f4cf2dde15b948e0e2' }))));
33
+ }, disabled: this.disabled, onClick: this.handleClick }, h("slot", { key: '5272679ba3b67e3d7c0ec1b2ef0b3829ef4204ba' }))));
34
34
  }
35
35
  static get style() { return kritzelButtonCss(); }
36
36
  }, [769, "kritzel-button", {
@@ -1,7 +1,7 @@
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$3 } from './p-4SPnZZkH.js';
3
- import { d as defineCustomElement$2 } from './p-BoN700-O.js';
4
- import { d as defineCustomElement$1 } from './p-DX2nriaq.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
+ import { d as defineCustomElement$3 } from './p-zG-WUBGF.js';
3
+ import { d as defineCustomElement$2 } from './p-Cx-L_28S.js';
4
+ import { d as defineCustomElement$1 } from './p-QSyeAy8R.js';
5
5
 
6
6
  const kritzelCurrentUserDialogCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.user-info{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.user-name{font-size:18px;font-weight:600;color:var(--kritzel-current-user-dialog-name-color, #333333);text-align:center;margin-top:8px}.user-email{font-size:14px;color:var(--kritzel-current-user-dialog-email-color, #666666);text-align:center}.logout-button{margin-top:16px;width:100%;--kritzel-button-width:100%;--kritzel-button-primary-background-color:var(--kritzel-current-user-dialog-logout-button-background-color, #007AFF);--kritzel-button-primary-hover-background-color:var(--kritzel-current-user-dialog-logout-button-hover-background-color, #006ae6);--kritzel-button-primary-active-background-color:var(--kritzel-current-user-dialog-logout-button-active-background-color, #005bbf);--kritzel-button-primary-color:var(--kritzel-current-user-dialog-logout-button-color, #ffffff)}`;
7
7
 
@@ -43,7 +43,7 @@ const KritzelCurrentUserDialog = /*@__PURE__*/ proxyCustomElement(class KritzelC
43
43
  }
44
44
  render() {
45
45
  const displayName = this.getDisplayName();
46
- return (h(Host, { key: '8f8e63ac6f789f2d0ee43b8b7439634411a91ac9' }, h("kritzel-dialog", { key: '4022a7251881f669f290e0a8beb9a39ef6242b19', dialogTitle: this.terms['currentUser.dialogTitle'] ?? 'Account', isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: '4671f884c121cfaefdd8a47bd52b30acc2d7b345', class: "user-info" }, h("kritzel-avatar", { key: 'a1847b4b67302f3b7179e4e2b751f7f2106b76d4', user: this.user, size: 80 }), displayName && h("div", { key: 'b3d09b4c99d76014a2e36260edce52c39f1081e1', class: "user-name" }, displayName), this.user?.email && h("div", { key: 'a76ce19cbd24ad536b022264dab6a83f4d1b36c2', class: "user-email" }, this.user.email), h("kritzel-button", { key: 'f125164a9d9362eedfbfff4fc2629f7ec055fc14', class: "logout-button", variant: "primary", onButtonClick: this.handleLogout }, this.terms['menu.logout'] ?? 'Logout')))));
46
+ return (h(Host, { key: 'bb0e0c4181b562bcf6f930508d0799dd24dceb70' }, h("kritzel-dialog", { key: '94b668b6d4c773b30bae2dfad437a0043048dbf3', dialogTitle: this.terms['currentUser.dialogTitle'] ?? 'Account', isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: '7023664c08e42668e44d5e1f57fa0d020b65d452', class: "user-info" }, h("kritzel-avatar", { key: '461af0f69cb606ad37f779fc5971296f82e2ff34', user: this.user, size: 80 }), displayName && h("div", { key: '60c6e416942465a9afb872ed12cfec4788c580c9', class: "user-name" }, displayName), this.user?.email && h("div", { key: '74a78e08f1aae64ee7e6ba84ca0eeb2efa1650bc', class: "user-email" }, this.user.email), h("kritzel-button", { key: '2b0bc8ded74baeee7a59b958e1529cd1b8862cd1', class: "logout-button", variant: "primary", onButtonClick: this.handleLogout }, this.terms['menu.logout'] ?? 'Logout')))));
47
47
  }
48
48
  static get style() { return kritzelCurrentUserDialogCss(); }
49
49
  }, [513, "kritzel-current-user-dialog", {
@@ -1,7 +1,7 @@
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$3 } from './p-CSuU8frA.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
+ import { d as defineCustomElement$3 } from './p-Ck-87E2G.js';
3
3
  import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
4
- import { d as defineCustomElement$2 } from './p-BPsKYMH6.js';
4
+ import { d as defineCustomElement$2 } from './p-DYPA7jpg.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: '9b35e5631cfa14aca391636f06598ef6f2f26550', tabIndex: this.item.isDisabled ? -1 : 0, class: {
110
+ return (h(Host, { key: '9fd327cadf3c28f51a28d174a1c888c3891cbcbd', 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: '175258699f76fdad5dcf3c7481e7882c6765bf33', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
115
+ }, onClick: this.handleItemSelect }, h("div", { key: '080c4fb6e04d6c88d7fa1410a5b86caa4952ed07', 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: '804ed34eb5340ecc1611ada01f608f7a0cf2f619', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: '6de5954a05b7f28961fa33cf8d34df3a81aae5f8', 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: '9ab5256e8888aa48ab6018ffc1109f9614075772', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: '05415b8e7559af7bee51a2dcc62e8ed016fbfc42', 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", {
@@ -1,5 +1,5 @@
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-CSuU8frA.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
+ import { d as defineCustomElement$1 } from './p-Ck-87E2G.js';
3
3
 
4
4
  const kritzelContextMenuCss = () => `:host{display:block}.menu-container{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:var(--kritzel-context-menu-min-width, 140px)}.menu-item-wrapper{position:relative}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent;width:100%;min-width:0}.menu-item:not(.disabled):hover,.menu-item.submenu-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item.has-children.disabled{cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-context-menu-item-color, #333333)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.has-children.disabled kritzel-icon{opacity:0.8}.label{flex-grow:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.submenu-arrow{margin-left:auto;opacity:0.5}.menu-divider{height:1px;background-color:var(--kritzel-context-menu-divider-color, rgba(0, 0, 0, 0.1));margin:var(--kritzel-context-menu-divider-margin, 4px 8px)}.submenu-container{position:absolute;top:0;left:100%;z-index:2;margin-left:4px;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:120px}.submenu-container.position-left{left:auto;right:100%;margin-left:0;margin-right:4px}`;
5
5
 
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
  import { O as ObjectHelper } from './p-DPONTran.js';
3
3
  import { a as KritzelColorHelper } from './p-7I4Uzjrw.js';
4
4
 
@@ -1998,7 +1998,7 @@ class KritzelLine extends KritzelBaseObject {
1998
1998
  }
1999
1999
  }
2000
2000
 
2001
- const kritzelAwarenessCursorsCss = () => `:host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:1}.awareness-cursor{position:absolute;top:0;left:0;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform}.awareness-cursor.stale{opacity:0}.awareness-cursor.tracking-object{transition-duration:0ms}.cursor-arrow{filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.cursor-label{position:absolute;left:16px;top:16px;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;user-select:none}.edge-indicator{position:absolute;top:-12px;left:-12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform;pointer-events:auto;user-select:none;cursor:pointer}.edge-indicator.stale{opacity:0}.edge-indicator.tracking-object{transition-duration:0ms}.edge-arrow{position:absolute;filter:drop-shadow(0 1px 3px rgba(0, 0, 0, 0.3));transition:opacity 300ms ease}.edge-arrow.stale{opacity:0}.edge-label{position:absolute;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;opacity:0;transform-origin:center;transition:opacity 150ms ease}.edge-indicator:hover .edge-label{opacity:1}.remote-selection-box{position:absolute;top:0;left:0;border-width:2px;border-style:solid;pointer-events:none;will-change:transform, width, height;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, width var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, height var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out}`;
2001
+ const kritzelAwarenessCursorsCss = () => `:host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:1}.awareness-cursor{position:absolute;top:0;left:0;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform}.awareness-cursor.stale{opacity:0}.awareness-cursor.tracking-object{transition-duration:0ms}.cursor-arrow{filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.cursor-label{position:absolute;left:16px;top:16px;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;user-select:none}.edge-indicator{position:absolute;top:-12px;left:-12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform;pointer-events:auto;user-select:none;cursor:pointer}.edge-indicator.stale{opacity:0}.edge-indicator.tracking-object{transition-duration:0ms}.edge-arrow{position:absolute;filter:drop-shadow(0 1px 3px rgba(0, 0, 0, 0.3));transition:opacity 300ms ease}.edge-arrow.stale{opacity:0}.edge-label{position:absolute;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;opacity:0;transform-origin:center;transition:opacity 150ms ease}.edge-indicator:hover .edge-label{opacity:1}.remote-selection-box{position:absolute;top:0;left:0;border-width:2px;border-style:solid;pointer-events:none;will-change:transform, width, height;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, width var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, height var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out}`;
2002
2002
 
2003
2003
  const STALE_THRESHOLD_MS = 10_000;
2004
2004
  const REMOVE_THRESHOLD_MS = 30_000;
@@ -2207,7 +2207,7 @@ const KritzelAwarenessCursors = /*@__PURE__*/ proxyCustomElement(class KritzelAw
2207
2207
  }
2208
2208
  render() {
2209
2209
  const cursors = Array.from(this.remoteCursors.values());
2210
- return (h(Host, { key: '9be6694250bafe011be27301d1c7a53fc7957657' }, cursors.map(remoteCursor => {
2210
+ return (h(Host, { key: 'b157f337127f7e5852acc0d6a246fa42e944a501' }, cursors.map(remoteCursor => {
2211
2211
  if (!remoteCursor.cursor)
2212
2212
  return null;
2213
2213
  // When a remote user is actively drawing, derive cursor position from
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
 
3
3
  const kritzelLoadingOverlayCss = () => `:host{display:contents}.loading-overlay{position:absolute;inset:0;z-index:var(--kritzel-editor-loading-overlay-z-index, 9999);display:flex;align-items:center;justify-content:center;gap:10px;background-color:var(--kritzel-editor-loading-overlay-background, rgba(255, 255, 255, 0.6));color:var(--kritzel-editor-loading-overlay-color, #333);font-family:var(--kritzel-font-family, sans-serif);font-size:1.25rem;opacity:0;pointer-events:none;visibility:hidden}.loading-overlay.visible{pointer-events:all;visibility:visible;animation:kritzel-loading-fade-in 200ms ease-out var(--kritzel-editor-loading-overlay-delay, 300ms) forwards}.loading-spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-editor-loading-overlay-spinner-color, #cccccc);border-top-color:var(--kritzel-editor-loading-overlay-spinner-active-color, #333333);border-radius:50%;animation:kritzel-loading-spin 0.6s linear infinite}@keyframes kritzel-loading-spin{to{transform:rotate(360deg)}}@keyframes kritzel-loading-fade-in{to{opacity:1}}`;
4
4
 
@@ -19,7 +19,7 @@ const KritzelLoadingOverlay = /*@__PURE__*/ proxyCustomElement(class KritzelLoad
19
19
  */
20
20
  text = 'Loading...';
21
21
  render() {
22
- return (h(Host, { key: '6fc1886217516966fa3599473989748151d93efd' }, h("div", { key: 'c6f2aa1c7f81bbab65411292934d185b4bf69e5a', class: { 'loading-overlay': true, visible: this.visible }, "aria-hidden": this.visible ? 'false' : 'true' }, h("span", { key: '21bae0b6f9b9a08f814aec7e6635a904018ab839', class: "loading-spinner" }), this.text)));
22
+ return (h(Host, { key: 'bba8ce825e41dff170d9552c28ac996249639ff3' }, h("div", { key: 'af98ab01de836fb6c718f5ceda4a490d91231e66', class: { 'loading-overlay': true, visible: this.visible }, "aria-hidden": this.visible ? 'false' : 'true' }, h("span", { key: '7c04c6abcb445c34f9a036e1797605ef7d575031', class: "loading-spinner" }), this.text)));
23
23
  }
24
24
  static get style() { return kritzelLoadingOverlayCss(); }
25
25
  }, [513, "kritzel-loading-overlay", {
@@ -1,8 +1,8 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
  import { g as getDefaultExportFromCjs } from './p-BFTU3MAI.js';
3
- import { d as defineCustomElement$3 } from './p-DX2nriaq.js';
4
- import { d as defineCustomElement$2 } from './p-CSuU8frA.js';
5
- import { d as defineCustomElement$1 } from './p-BozrueXV.js';
3
+ import { d as defineCustomElement$3 } from './p-QSyeAy8R.js';
4
+ import { d as defineCustomElement$2 } from './p-Ck-87E2G.js';
5
+ import { d as defineCustomElement$1 } from './p-ME1sDz3f.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: 'f6028ad618f04e3be65c816f4b53c4ccaa93fc71' }, h("kritzel-dialog", { key: '7dabab65955f287650de4ba484e37f4ccdd7c57e', dialogTitle: this.terms['share.dialogTitle'] ?? 'Share Workspace', size: "small", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, contained: true }, h("div", { key: '321e2b17048dea20528c0f34f39a462548c64689', class: "share-content" }, h("div", { key: 'b31bbe2f686f5fe2fdc03189ffb98082683fff63', class: "share-section" }, h("div", { key: '2c864e00aa4c2da0a7f8ee6c83f149e6e93610a5', class: "share-row" }, h("div", { key: 'cbee03ac7ec9ee82f22c77d3681d4a540a0780a3', class: "share-label-group" }, h("label", { key: '3be7c8dc2ac2f7dbfe6458a902b14a887895fdc3', class: "share-label" }, this.terms['share.linkSharing.label'] ?? 'Link sharing'), h("p", { key: 'c7401bc76fdccbafc6c7c4e37380fc75f35b3a99', class: "share-description" }, this.internalIsPublic
3207
+ return (h(Host, { key: '0e6a5c0b25595499bc676008b22a6b27752666f3' }, h("kritzel-dialog", { key: '1770c3cf05e2ff488872da0db990d119f6903f26', dialogTitle: this.terms['share.dialogTitle'] ?? 'Share Workspace', size: "small", isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, contained: true }, h("div", { key: 'ac629b3c4078c121009d64d7ba29ca8cc0fd7d64', class: "share-content" }, h("div", { key: 'c31fd9bcec831b9105a9784c0764b7d4773fc571', class: "share-section" }, h("div", { key: '1e1177dc959ca3e8e4447e6eda4ed4bf7f2faaff', class: "share-row" }, h("div", { key: 'b82c3a22f22291f2a79b0ebc98825fbc35e849fe', class: "share-label-group" }, h("label", { key: 'f4551050cb0434896f29524b540a7222f48085f2', class: "share-label" }, this.terms['share.linkSharing.label'] ?? 'Link sharing'), h("p", { key: '13ae0f33238041ea949bdd55ac5ba271c58fbdc5', 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: '52ae14da0d79797e9ad73f1ffbac003fd1395f47', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: this.terms['share.linkSharing.toggleLabel'] ?? 'Enable link sharing' }))), this.internalIsPublic && (h("div", { key: 'bd44618680db14d7d95f0c1bbc4441a103e9f15a', class: "share-section" }, h("div", { key: '659cd6b2e2e719d76f692a8dc5a8c0855e5d246d', class: "share-url-container" }, h("input", { key: '76be432ecaad753cb7043aad912d8aa1770afb61', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), h("button", { key: 'ef75a04964fb481fae2f6e924497eb2adedc100d', 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: '06bbdc32d4348ca6d75dbbe11ba74d94e1c86882', name: this.copySuccess ? 'check' : 'copy', size: 18 }))), this.qrCodeDataUrl && (h("div", { key: '9246e86b26a9794738a29e6a6bfe6c4812339449', class: "share-qr-container" }, h("img", { key: '90e18eee230c23e0bfd773c9b8a6967803ae10dc', 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: '9e7b75fe3ae7994fae8a498f1654636481365768', checked: this.internalIsPublic, onCheckedChange: this.handleToggleChange, label: this.terms['share.linkSharing.toggleLabel'] ?? 'Enable link sharing' }))), this.internalIsPublic && (h("div", { key: '1fb6f344bc897284c7d942aeddc77968f7af0509', class: "share-section" }, h("div", { key: '23b4889472eeb7c36c5ebf3655883346cb32bf6c', class: "share-url-container" }, h("input", { key: 'ed5b25430b5013c453ea829ce328a5b4adafd2d9', type: "text", class: "share-url-input", value: this.getShareUrl(), readOnly: true, onClick: (e) => e.target.select() }), h("button", { key: 'ba5b067993e0fab26b149057a4e70f394525cc90', 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: '3f684e493506b62d5c5b32f991c2855f64302e29', name: this.copySuccess ? 'check' : 'copy', size: 18 }))), this.qrCodeDataUrl && (h("div", { key: 'a6314296e3301a1d487d34573fcf581a307cebf4', class: "share-qr-container" }, h("img", { key: '7521ce575728d0418564dc2c407381a536053394', 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,4 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
2
2
  import { O as ObjectHelper } from './p-DPONTran.js';
3
3
  import { K as KritzelHTMLHelper } from './p-WUdQqYnu.js';
4
4
 
@@ -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: '489a752e48d96c2607defa40a39477675685b60a', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: '13c6b7567039b8c8c78de27e3d9aeda30a798de1' })));
289
+ return (h(Host, { key: '3cdb321c2292fc7927a89efef4f3e4e37d68ac8f', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: '54a41f7983405f23e305791bc42513f59c027733' })));
290
290
  }
291
291
  static get watchers() { return {
292
292
  "anchor": [{