kritzel-stencil 0.4.24 → 0.4.26

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 (225) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/{index-Dn19mGl-.js → index-Xav9JFHg.js} +13 -49
  4. package/dist/cjs/index.cjs.js +7 -1
  5. package/dist/cjs/{kritzel-active-users_47.cjs.entry.js → kritzel-active-users_46.cjs.entry.js} +112 -217
  6. package/dist/cjs/kritzel-brush-style.cjs.entry.js +2 -2
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/{schema.constants-CY0WWJYd.js → schema.constants-CjN-B633.js} +20 -44
  9. package/dist/cjs/stencil.cjs.js +3 -3
  10. package/dist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js +3 -0
  11. package/dist/collection/classes/providers/sync/websocket-sync-provider.class.js +3 -0
  12. package/dist/collection/collection-manifest.json +1 -2
  13. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  14. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  15. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  16. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  17. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  18. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -20
  19. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  20. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +22 -124
  21. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  22. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  23. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  24. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  25. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  26. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  27. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  28. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  29. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  30. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  31. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  32. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  33. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  34. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  35. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  36. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  37. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  38. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  39. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  40. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  41. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  42. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  43. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  44. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  45. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  46. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  47. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  48. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  49. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  50. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  51. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  52. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  53. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  54. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  55. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  56. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  57. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  58. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  59. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  60. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  61. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  62. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  63. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  64. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  65. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  66. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  67. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.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.d.ts +0 -2
  103. package/dist/components/index.js +9 -4
  104. package/dist/components/kritzel-active-users.js +1 -1
  105. package/dist/components/kritzel-avatar.js +1 -1
  106. package/dist/components/kritzel-awareness-cursors.js +1 -1
  107. package/dist/components/kritzel-back-to-content.js +1 -1
  108. package/dist/components/kritzel-brush-style.js +4 -4
  109. package/dist/components/kritzel-button.js +1 -1
  110. package/dist/components/kritzel-color-palette.js +1 -1
  111. package/dist/components/kritzel-color.js +1 -1
  112. package/dist/components/kritzel-context-menu.js +1 -1
  113. package/dist/components/kritzel-controls.js +1 -1
  114. package/dist/components/kritzel-current-user-dialog.js +1 -1
  115. package/dist/components/kritzel-current-user.js +1 -1
  116. package/dist/components/kritzel-cursor-trail.js +1 -1
  117. package/dist/components/kritzel-dialog.js +1 -1
  118. package/dist/components/kritzel-dropdown.js +1 -1
  119. package/dist/components/kritzel-editor.js +94 -102
  120. package/dist/components/kritzel-engine.js +1 -1
  121. package/dist/components/kritzel-export.js +1 -1
  122. package/dist/components/kritzel-font-family.js +1 -1
  123. package/dist/components/kritzel-font-size.js +1 -1
  124. package/dist/components/kritzel-font.js +1 -1
  125. package/dist/components/kritzel-icon.js +1 -1
  126. package/dist/components/kritzel-input.js +1 -1
  127. package/dist/components/kritzel-line-endings.js +1 -1
  128. package/dist/components/kritzel-loading-overlay.js +1 -1
  129. package/dist/components/kritzel-login-dialog.js +1 -1
  130. package/dist/components/kritzel-master-detail.js +1 -1
  131. package/dist/components/kritzel-menu-item.js +1 -1
  132. package/dist/components/kritzel-menu.js +1 -1
  133. package/dist/components/kritzel-more-menu.js +1 -1
  134. package/dist/components/kritzel-notification-card.js +1 -1
  135. package/dist/components/kritzel-numeric-input.js +1 -1
  136. package/dist/components/kritzel-opacity-slider.js +1 -1
  137. package/dist/components/kritzel-pill-tabs.js +1 -1
  138. package/dist/components/kritzel-portal.js +1 -1
  139. package/dist/components/kritzel-settings.js +1 -1
  140. package/dist/components/kritzel-shape-fill.js +1 -1
  141. package/dist/components/kritzel-share-dialog.js +1 -1
  142. package/dist/components/kritzel-slide-toggle.js +1 -1
  143. package/dist/components/kritzel-split-button.js +1 -1
  144. package/dist/components/kritzel-stroke-size.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-BFYT03fw.js → p-B38_9BJg.js} +3 -3
  152. package/dist/components/{p-C9_yBEoX.js → p-B43upypT.js} +10 -30
  153. package/dist/components/{p-Covorf4C.js → p-BFYtCsZu.js} +3 -3
  154. package/dist/components/{p-BppcoKoo.js → p-BPzdPKWE.js} +5 -5
  155. package/dist/components/{p-Cx-L_28S.js → p-Ba0c-tu2.js} +3 -3
  156. package/dist/components/{p-MhQxGUvY.js → p-BeSKOETx.js} +3 -3
  157. package/dist/components/{p-CLAz6RJc.js → p-BprEDRpA.js} +3 -3
  158. package/dist/components/{p-BXUx_C0N.js → p-BsLI_BWq.js} +2 -2
  159. package/dist/components/{p-CSKToqUl.js → p-C0FEC_gS.js} +4 -4
  160. package/dist/components/{p-D2VcPEtL.js → p-CAXR5-S9.js} +6 -6
  161. package/dist/components/{p-DYPA7jpg.js → p-CBrn5AIB.js} +2 -2
  162. package/dist/components/{p-D3BzgkIE.js → p-CSPYkLLH.js} +2 -2
  163. package/dist/components/{p-Ck-87E2G.js → p-CSuU8frA.js} +1 -1
  164. package/dist/components/{p-Di--2boB.js → p-CXpv9Rxe.js} +3 -3
  165. package/dist/components/{p-dAXnRkjA.js → p-Ce1j1-Hg.js} +5 -5
  166. package/dist/components/{p-BrA9NBEE.js → p-CeffYwAK.js} +21 -21
  167. package/dist/components/{p-DT_WBwsw.js → p-ChPs27Fd.js} +6 -6
  168. package/dist/components/{p-3tBE7SyG.js → p-Cm33td2O.js} +2 -2
  169. package/dist/components/{p-BkXQL5Dl.js → p-CoXN583u.js} +5 -5
  170. package/dist/components/{p-Ch-KG9To.js → p-CucCT7Qn.js} +3 -3
  171. package/dist/components/{p-DPsbNStn.js → p-Cva3jIIU.js} +2 -2
  172. package/dist/components/{p-D0Trc3IQ.js → p-D0Ed8epW.js} +5 -5
  173. package/dist/components/{p-DafP9PAA.js → p-DFMZEarE.js} +2 -2
  174. package/dist/components/{p-BShrnlam.js → p-DK0anxtL.js} +2 -2
  175. package/dist/components/{p-zG-WUBGF.js → p-DN9p3G9K.js} +4 -4
  176. package/dist/components/{p-DcUIO14-.js → p-DOTdJ3JQ.js} +4 -4
  177. package/dist/components/{p-CWAChRD5.js → p-DOl-95VY.js} +12 -12
  178. package/dist/components/{p-Dznwo6oc.js → p-DTB3ykgO.js} +2 -2
  179. package/dist/components/{p-BZZ3KRPk.js → p-DUmLsjKb.js} +3 -3
  180. package/dist/components/{p-DwEYMvIn.js → p-DUoQyGKc.js} +66 -178
  181. package/dist/components/{p-QSyeAy8R.js → p-DX2nriaq.js} +2 -2
  182. package/dist/components/{p-BrqSjRJN.js → p-D_cyY7Nd.js} +3 -3
  183. package/dist/components/{p-CHoOe3FD.js → p-Df3BwVGy.js} +3 -3
  184. package/dist/components/{p-CSWCmyzb.js → p-DhabvHJM.js} +5 -5
  185. package/dist/components/{p-o3NYKrVL.js → p-DkHYY72B.js} +3 -3
  186. package/dist/components/{p-vDCa_ZDm.js → p-DnmVD1Mz.js} +3 -3
  187. package/dist/components/{p-fSV6KVTC.js → p-DoxFuOy1.js} +3 -3
  188. package/dist/components/{p-b0J2ktAm.js → p-Dpm75DfV.js} +7 -7
  189. package/dist/components/{p-ME1sDz3f.js → p-Dvn6ad4a.js} +2 -2
  190. package/dist/components/{p-Qdo3E8dr.js → p-NOWtUeeQ.js} +2 -2
  191. package/dist/components/{p-Dp1CD4gK.js → p-OUl5CA4Y.js} +2 -2
  192. package/dist/components/{p-D6JycG-I.js → p-bAacqNHq.js} +3 -3
  193. package/dist/components/{p-DjXQxw9R.js → p-djJSnjAX.js} +3 -3
  194. package/dist/components/{p-1Q4VnThv.js → p-jIKskj3S.js} +3 -3
  195. package/dist/components/{p-DW1B118Q.js → p-m7SeNszM.js} +9 -9
  196. package/dist/esm/{index-2va1Pk9z.js → index-Dhio9uis.js} +13 -49
  197. package/dist/esm/index.js +8 -2
  198. package/dist/{stencil/p-ce6d432e.entry.js → esm/kritzel-active-users_46.entry.js} +113 -217
  199. package/dist/esm/kritzel-brush-style.entry.js +2 -2
  200. package/dist/esm/loader.js +3 -3
  201. package/dist/esm/{schema.constants-DBvUmuDH.js → schema.constants-DfvqHmxc.js} +20 -44
  202. package/dist/esm/stencil.js +4 -4
  203. package/dist/stencil/index.esm.js +8 -2
  204. package/dist/{esm/kritzel-active-users_47.entry.js → stencil/p-5c045d3e.entry.js} +113 -217
  205. package/dist/stencil/{p-DBvUmuDH.js → p-DfvqHmxc.js} +20 -44
  206. package/dist/stencil/{p-2va1Pk9z.js → p-Dhio9uis.js} +11 -47
  207. package/dist/stencil/{p-df06ca3a.entry.js → p-fb32cd8f.entry.js} +2 -2
  208. package/dist/stencil/stencil.esm.js +4 -4
  209. package/dist/types/classes/providers/sync/hocuspocus-sync-provider.class.d.ts +1 -0
  210. package/dist/types/classes/providers/sync/websocket-sync-provider.class.d.ts +1 -0
  211. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +0 -1
  212. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +0 -14
  213. package/dist/types/components.d.ts +0 -42
  214. package/dist/types/constants/version.d.ts +1 -1
  215. package/dist/types/interfaces/sync-provider.interface.d.ts +7 -0
  216. package/dist/types/stencil-public-runtime.d.ts +0 -12
  217. package/loader/index.d.ts +1 -1
  218. package/package.json +1 -1
  219. package/readme.md +10 -10
  220. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +0 -50
  221. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +0 -66
  222. package/dist/components/kritzel-sync-indicator.d.ts +0 -11
  223. package/dist/components/kritzel-sync-indicator.js +0 -6
  224. package/dist/components/p-Bxi-Bm49.js +0 -39
  225. package/dist/types/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.d.ts +0 -7
@@ -1,17 +1,17 @@
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';
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';
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-BShrnlam.js';
8
+ import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$1 } from './p-DK0anxtL.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-Ck-87E2G.js';
14
+ import { K as KritzelIconRegistry, d as defineCustomElement$2 } from './p-CSuU8frA.js';
15
15
 
16
16
  class KritzelKeyboardHelper {
17
17
  static forceHideKeyboard() {
@@ -5076,11 +5076,10 @@ class Fitter {
5076
5076
  }
5077
5077
  openMore() {
5078
5078
  let { content, openStart, openEnd } = this.unplaced;
5079
- if (maxOpen(content, -1) <= openStart)
5079
+ let inner = contentAt(content, openStart);
5080
+ if (!inner.childCount || inner.firstChild.isLeaf)
5080
5081
  return false;
5081
- if (this.unplaced.size > 1 && maxOpen(content, 1) > openEnd)
5082
- openEnd++;
5083
- this.unplaced = new Slice(content, openStart + 1, openEnd);
5082
+ this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));
5084
5083
  return true;
5085
5084
  }
5086
5085
  dropNode() {
@@ -5250,14 +5249,6 @@ function invalidMarks(type, fragment, start) {
5250
5249
  function definesContent(type) {
5251
5250
  return type.spec.defining || type.spec.definingForContent;
5252
5251
  }
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
- }
5261
5252
  function replaceRange(tr, from, to, slice) {
5262
5253
  if (!slice.size)
5263
5254
  return tr.deleteRange(from, to);
@@ -7962,8 +7953,7 @@ class WidgetViewDesc extends ViewDesc {
7962
7953
  wrap.appendChild(dom);
7963
7954
  dom = wrap;
7964
7955
  }
7965
- if (!dom.hasAttribute("contenteditable"))
7966
- dom.contentEditable = "false";
7956
+ dom.contentEditable = "false";
7967
7957
  dom.classList.add("ProseMirror-widget");
7968
7958
  }
7969
7959
  super(parent, [], dom, null);
@@ -9811,14 +9801,8 @@ function maybeWrapTrusted(html) {
9811
9801
  // With the require-trusted-types-for CSP, Chrome will block
9812
9802
  // innerHTML, even on a detached document. This wraps the string in
9813
9803
  // a way that makes the browser allow us to use its parser again.
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
- }
9804
+ if (!_policy)
9805
+ _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy("ProseMirrorClipboard", { createHTML: (s) => s });
9822
9806
  return _policy.createHTML(html);
9823
9807
  }
9824
9808
  function readHTML(html) {
@@ -9875,12 +9859,6 @@ function addContext(slice, context) {
9875
9859
  let type = schema.nodes[array[i]];
9876
9860
  if (!type || type.hasRequiredAttrs())
9877
9861
  break;
9878
- try {
9879
- type.checkAttrs(array[i + 1]);
9880
- }
9881
- catch (e) {
9882
- break;
9883
- }
9884
9862
  content = Fragment.from(type.create(array[i + 1], content));
9885
9863
  openStart++;
9886
9864
  openEnd++;
@@ -13539,20 +13517,16 @@ a custom function to determine the type of the newly split off block.
13539
13517
  */
13540
13518
  function splitBlockAs(splitNode) {
13541
13519
  return (state, dispatch) => {
13520
+ let { $from} = state.selection;
13542
13521
  if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {
13543
- let { $from } = state.selection;
13544
13522
  if (!$from.parentOffset || !canSplit(state.doc, $from.pos))
13545
13523
  return false;
13546
13524
  if (dispatch)
13547
13525
  dispatch(state.tr.split($from.pos).scrollIntoView());
13548
13526
  return true;
13549
13527
  }
13550
- if (!state.selection.$from.depth)
13528
+ if (!$from.depth)
13551
13529
  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;
13556
13530
  let types = [];
13557
13531
  let splitDepth, deflt, atEnd = false, atStart = false;
13558
13532
  for (let d = $from.depth;; d--) {
@@ -13571,7 +13545,10 @@ function splitBlockAs(splitNode) {
13571
13545
  types.unshift(null);
13572
13546
  }
13573
13547
  }
13574
- let splitPos = $from.pos;
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);
13575
13552
  let can = canSplit(tr.doc, splitPos, types.length, types);
13576
13553
  if (!can) {
13577
13554
  types[0] = deflt ? { type: deflt } : null;
@@ -13581,10 +13558,9 @@ function splitBlockAs(splitNode) {
13581
13558
  return false;
13582
13559
  tr.split(splitPos, types.length, types);
13583
13560
  if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {
13584
- let mapping = tr.mapping.slice(mapFrom);
13585
- let first = mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);
13561
+ let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);
13586
13562
  if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))
13587
- tr.setNodeMarkup(mapping.map($from.before(splitDepth)), deflt);
13563
+ tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);
13588
13564
  }
13589
13565
  if (dispatch)
13590
13566
  dispatch(tr.scrollIntoView());
@@ -19319,12 +19295,12 @@ class KritzelCursorHelper {
19319
19295
  // We rotate around the center of the SVG canvas
19320
19296
  const center = size / 2;
19321
19297
  // We use a group to apply the rotation
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>
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>
19328
19304
  `;
19329
19305
  // Encode the SVG for use in a data URI
19330
19306
  // We need to be careful with encoding to ensure it works across browsers
@@ -48109,8 +48085,8 @@ class KritzelSvgExportHelper {
48109
48085
  .join('\n ');
48110
48086
  const xmlDecl = includeXmlDeclaration ? '<?xml version="1.0" encoding="UTF-8"?>\n' : '';
48111
48087
  const defsContent = defs.length > 0 ? `\n <defs>\n ${defs.join('\n ')}\n </defs>` : '';
48112
- return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48113
- ${elements}
48088
+ return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48089
+ ${elements}
48114
48090
  </svg>`;
48115
48091
  }
48116
48092
  /**
@@ -48262,8 +48238,8 @@ class KritzelSvgExportHelper {
48262
48238
  const orient = end === 'start' ? 'auto-start-reverse' : 'auto';
48263
48239
  const refX = 0;
48264
48240
  const refY = size / 2;
48265
- return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48266
- <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48241
+ return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48242
+ <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48267
48243
  </marker>`;
48268
48244
  }
48269
48245
  /**
@@ -48310,10 +48286,10 @@ class KritzelSvgExportHelper {
48310
48286
  const opacity = path.opacity !== 1 ? ` opacity="${path.opacity}"` : '';
48311
48287
  const scale = this.getObjectScale(path);
48312
48288
  // Path needs to be wrapped in a g with translation since path.d uses local coordinates
48313
- return `<g transform="${transform}"${opacity}>
48314
- <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48315
- <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48316
- </svg>
48289
+ return `<g transform="${transform}"${opacity}>
48290
+ <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48291
+ <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48292
+ </svg>
48317
48293
  </g>`;
48318
48294
  }
48319
48295
  /**
@@ -48329,10 +48305,10 @@ class KritzelSvgExportHelper {
48329
48305
  const scale = this.getObjectScale(line);
48330
48306
  const markerStart = line.hasStartArrow ? ` marker-start="url(#${line.startMarkerId})"` : '';
48331
48307
  const markerEnd = line.hasEndArrow ? ` marker-end="url(#${line.endMarkerId})"` : '';
48332
- return `<g transform="${transform}"${opacity}>
48333
- <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48334
- <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48335
- </svg>
48308
+ return `<g transform="${transform}"${opacity}>
48309
+ <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48310
+ <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48311
+ </svg>
48336
48312
  </g>`;
48337
48313
  }
48338
48314
  /**
@@ -48356,18 +48332,18 @@ class KritzelSvgExportHelper {
48356
48332
  const textHtml = this.prosemirrorToHtml(shape.content, shape, theme);
48357
48333
  if (textHtml) {
48358
48334
  const fontColor = KritzelColorHelper.resolveThemeColor(shape.fontColor, theme);
48359
- textContent = `
48360
- <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48361
- <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;">
48362
- ${textHtml}
48363
- </div>
48335
+ textContent = `
48336
+ <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48337
+ <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;">
48338
+ ${textHtml}
48339
+ </div>
48364
48340
  </foreignObject>`;
48365
48341
  }
48366
48342
  }
48367
- return `<g transform="${transform}"${opacity}>
48368
- <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48369
- <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48370
- </svg>
48343
+ return `<g transform="${transform}"${opacity}>
48344
+ <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48345
+ <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48346
+ </svg>
48371
48347
  </g>`;
48372
48348
  }
48373
48349
  /**
@@ -48398,10 +48374,10 @@ class KritzelSvgExportHelper {
48398
48374
  // adjusted font-size already accounts for it – keeping both would double-scale
48399
48375
  // the content and overflow the foreignObject.
48400
48376
  const svgFontSizePx = (text.fontSize * (4 / 3) * (text.scaleFactor || 1) / scale).toFixed(4);
48401
- return `<g transform="${transform}"${opacity}>
48402
- <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48403
- <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>
48404
- </foreignObject>
48377
+ return `<g transform="${transform}"${opacity}>
48378
+ <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48379
+ <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>
48380
+ </foreignObject>
48405
48381
  </g>`;
48406
48382
  }
48407
48383
  /**
@@ -48435,9 +48411,9 @@ class KritzelSvgExportHelper {
48435
48411
  return `<tspan x="0" y="${y}" xml:space="preserve">${this.escapeHtml(line)}</tspan>`;
48436
48412
  })
48437
48413
  .join('');
48438
- return `<g transform="${transform}"${opacity}>
48439
- ${bgRect}
48440
- <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48414
+ return `<g transform="${transform}"${opacity}>
48415
+ ${bgRect}
48416
+ <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48441
48417
  </g>`;
48442
48418
  }
48443
48419
  /**
@@ -48465,8 +48441,8 @@ class KritzelSvgExportHelper {
48465
48441
  const width = image.totalWidth / scale;
48466
48442
  const height = image.totalHeight / scale;
48467
48443
  const href = imageDataUrls?.get(image.id) || image.resolvedSrc || image.src || '';
48468
- return `<g transform="${transform}"${opacity}>
48469
- <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48444
+ return `<g transform="${transform}"${opacity}>
48445
+ <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48470
48446
  </g>`;
48471
48447
  }
48472
48448
  /**
@@ -48486,19 +48462,19 @@ class KritzelSvgExportHelper {
48486
48462
  if (rasterSafeForCanvas) {
48487
48463
  // PNG export: render placeholder rect (foreignObject doesn't rasterize to PNG well)
48488
48464
  console.warn('[KritzelCustomElement SVG Export] Custom elements do not serialize well to PNG. Use SVG export or screenshot instead.');
48489
- return `<g transform="${transform}"${opacity}>
48490
- <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48491
- <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48465
+ return `<g transform="${transform}"${opacity}>
48466
+ <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48467
+ <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48492
48468
  </g>`;
48493
48469
  }
48494
48470
  // SVG export: use foreignObject to embed HTML
48495
48471
  const html = obj.element?.outerHTML || '<div style="border:1px dashed #ccc">Empty</div>';
48496
- return `<g transform="${transform}"${opacity}>
48497
- <foreignObject x="0" y="0" width="${width}" height="${height}">
48498
- <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48499
- ${html}
48500
- </div>
48501
- </foreignObject>
48472
+ return `<g transform="${transform}"${opacity}>
48473
+ <foreignObject x="0" y="0" width="${width}" height="${height}">
48474
+ <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48475
+ ${html}
48476
+ </div>
48477
+ </foreignObject>
48502
48478
  </g>`;
48503
48479
  }
48504
48480
  /**
@@ -48518,8 +48494,8 @@ class KritzelSvgExportHelper {
48518
48494
  return '';
48519
48495
  }
48520
48496
  const opacity = group.opacity !== 1 ? ` opacity="${group.opacity}"` : '';
48521
- return `<g${opacity}>
48522
- ${children}
48497
+ return `<g${opacity}>
48498
+ ${children}
48523
48499
  </g>`;
48524
48500
  }
48525
48501
  /**
@@ -48929,10 +48905,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
48929
48905
  contextMenuStateChange;
48930
48906
  /** Emitted when the combined loading state (external `isLoading` prop or internal workspace loading) changes. */
48931
48907
  loadingChange;
48932
- /** Emitted when remote workspace synchronization is in progress. */
48933
- syncingChange;
48934
48908
  forceUpdate = 0;
48935
- isSyncing = false;
48936
48909
  /** Manually triggers the `objectsSelectionChange` event. */
48937
48910
  async triggerSelectionChange() {
48938
48911
  this.objectsSelectionChange.emit();
@@ -50510,12 +50483,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50510
50483
  _syncConfigRevision = 0;
50511
50484
  _assetStorageConfigRevision = 0;
50512
50485
  _isWorkspaceLoading = false;
50513
- _syncingRequestId = 0;
50514
- _syncingShowTimeout = null;
50515
- _syncingHideTimeout = null;
50516
- _syncingVisibleSince = null;
50517
- _syncingShowDelayMs = 300;
50518
- _syncingMinimumVisibleMs = 500;
50519
50486
  _hasLoggedUnlicensedWelcomeBanner = false;
50520
50487
  _previousVisibleCustomElements = new Set();
50521
50488
  _revealedImageKeys = new Set();
@@ -50538,66 +50505,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50538
50505
  this.core.store.state.isLoading = this._isWorkspaceLoading || this.isLoading;
50539
50506
  this.loadingChange.emit(this.core.store.state.isLoading);
50540
50507
  }
50541
- beginSyncingRequest() {
50542
- this._syncingRequestId++;
50543
- this.clearSyncingShowTimeout();
50544
- this.clearSyncingHideTimeout();
50545
- return this._syncingRequestId;
50546
- }
50547
- syncSyncingState(isSyncing, requestId) {
50548
- if (requestId !== this._syncingRequestId) {
50549
- return;
50550
- }
50551
- if (isSyncing) {
50552
- this.clearSyncingHideTimeout();
50553
- if (this.isSyncing || this._syncingShowTimeout !== null) {
50554
- return;
50555
- }
50556
- this._syncingShowTimeout = setTimeout(() => {
50557
- this._syncingShowTimeout = null;
50558
- if (requestId !== this._syncingRequestId || this.isSyncing) {
50559
- return;
50560
- }
50561
- this.isSyncing = true;
50562
- this._syncingVisibleSince = Date.now();
50563
- this.syncingChange.emit(true);
50564
- }, this._syncingShowDelayMs);
50565
- return;
50566
- }
50567
- this.clearSyncingShowTimeout();
50568
- if (!this.isSyncing) {
50569
- return;
50570
- }
50571
- this.clearSyncingHideTimeout();
50572
- const elapsedMs = Date.now() - (this._syncingVisibleSince ?? Date.now());
50573
- const remainingVisibleMs = Math.max(0, this._syncingMinimumVisibleMs - elapsedMs);
50574
- if (remainingVisibleMs === 0) {
50575
- this.finishSyncingState(requestId);
50576
- return;
50577
- }
50578
- this._syncingHideTimeout = setTimeout(() => this.finishSyncingState(requestId), remainingVisibleMs);
50579
- }
50580
- finishSyncingState(requestId) {
50581
- this._syncingHideTimeout = null;
50582
- if (requestId !== this._syncingRequestId || !this.isSyncing) {
50583
- return;
50584
- }
50585
- this.isSyncing = false;
50586
- this._syncingVisibleSince = null;
50587
- this.syncingChange.emit(false);
50588
- }
50589
- clearSyncingShowTimeout() {
50590
- if (this._syncingShowTimeout !== null) {
50591
- clearTimeout(this._syncingShowTimeout);
50592
- this._syncingShowTimeout = null;
50593
- }
50594
- }
50595
- clearSyncingHideTimeout() {
50596
- if (this._syncingHideTimeout !== null) {
50597
- clearTimeout(this._syncingHideTimeout);
50598
- this._syncingHideTimeout = null;
50599
- }
50600
- }
50601
50508
  isNetworkAvailable() {
50602
50509
  return typeof navigator !== 'undefined' && navigator.onLine;
50603
50510
  }
@@ -50707,13 +50614,11 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50707
50614
  this.notificationsChange = createEvent(this, "notificationsChange");
50708
50615
  this.contextMenuStateChange = createEvent(this, "contextMenuStateChange");
50709
50616
  this.loadingChange = createEvent(this, "loadingChange");
50710
- this.syncingChange = createEvent(this, "syncingChange");
50711
50617
  this.core = new KritzelCore(this);
50712
50618
  }
50713
50619
  disconnectedCallback() {
50714
50620
  this.throttledPointerMoveMulti.cancel();
50715
50621
  this._revealedImageKeys.clear();
50716
- this.beginSyncingRequest();
50717
50622
  if (this._sceneBootstrapTransitionTimer !== null) {
50718
50623
  clearTimeout(this._sceneBootstrapTransitionTimer);
50719
50624
  this._sceneBootstrapTransitionTimer = null;
@@ -50963,27 +50868,11 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50963
50868
  }
50964
50869
  this._isWorkspaceLoading = true;
50965
50870
  this.syncLoadingState();
50966
- const syncingRequestId = this.beginSyncingRequest();
50967
50871
  const initializationPromise = this.core.initializeWorkspace(workspace, options);
50968
50872
  this._workspaceInitializationPromise = initializationPromise;
50969
50873
  this._workspaceInitializationTargetKey = targetKey;
50970
50874
  try {
50971
50875
  await initializationPromise;
50972
- // Track remote sync in the background without blocking the loading overlay.
50973
- const initializedObjects = this.core.store.objects;
50974
- const networkSyncPromise = initializedObjects?.whenNetworkSynced();
50975
- if (networkSyncPromise && this.isNetworkAvailable()) {
50976
- this.syncSyncingState(true, syncingRequestId);
50977
- void networkSyncPromise.finally(() => {
50978
- // Only clear syncing for the currently active object map.
50979
- if (this.core.store.objects === initializedObjects) {
50980
- this.syncSyncingState(false, syncingRequestId);
50981
- }
50982
- });
50983
- }
50984
- else {
50985
- this.syncSyncingState(false, syncingRequestId);
50986
- }
50987
50876
  }
50988
50877
  finally {
50989
50878
  // Only the most recent init clears loading state to prevent race conditions
@@ -51735,7 +51624,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
51735
51624
  "isZoomingEnabled": [4, "is-zooming-enabled"],
51736
51625
  "isLoading": [4, "is-loading"],
51737
51626
  "forceUpdate": [32],
51738
- "isSyncing": [32],
51739
51627
  "triggerSelectionChange": [64],
51740
51628
  "beginSceneBootstrap": [64],
51741
51629
  "endSceneBootstrap": [64],
@@ -1,7 +1,7 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
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 KritzelHTMLHelper } from './p-WUdQqYnu.js';
3
3
 
4
- const kritzelDialogCss = () => `:host{display:contents}.dialog-content{text-align:start;line-height:normal}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.backdrop.contained-fullscreen{background-color:transparent}.dialog-content.contained-fullscreen{border-radius:0}.dialog-content.contained-fullscreen .dialog-body{display:flex;flex-direction:column}.dialog-content.contained-fullscreen .dialog-body ::slotted(*){flex:1;min-height:0}@media (max-width: 576px), (max-height: 576px) and (orientation: landscape){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.dialog-content.fullscreen-on-mobile .dialog-body{display:flex;flex-direction:column}.dialog-content.fullscreen-on-mobile .dialog-body ::slotted(*){flex:1;min-height:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;min-height:0;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}`;
4
+ const kritzelDialogCss = () => `:host{display:contents}.dialog-content{text-align:start;line-height:normal}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.backdrop.contained-fullscreen{background-color:transparent}.dialog-content.contained-fullscreen{border-radius:0}.dialog-content.contained-fullscreen .dialog-body{display:flex;flex-direction:column}.dialog-content.contained-fullscreen .dialog-body ::slotted(*){flex:1;min-height:0}@media (max-width: 576px), (max-height: 576px) and (orientation: landscape){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.dialog-content.fullscreen-on-mobile .dialog-body{display:flex;flex-direction:column}.dialog-content.fullscreen-on-mobile .dialog-body ::slotted(*){flex:1;min-height:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;min-height:0;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}`;
5
5
 
6
6
  const KritzelDialog = /*@__PURE__*/ proxyCustomElement(class KritzelDialog extends H {
7
7
  constructor(registerHost) {
@@ -1,5 +1,5 @@
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';
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';
3
3
 
4
4
  const kritzelBackToContentCss = () => `:host{display:block;z-index:var(--kritzel-back-to-content-z-index, 1000)}.back-to-content-button{display:flex;align-items:center;justify-content:center;height:var(--kritzel-back-to-content-height, 50px);box-sizing:border-box;gap:var(--kritzel-back-to-content-gap, 6px);padding:var(--kritzel-back-to-content-padding, 0 16px);border:var(--kritzel-back-to-content-border, 1px solid #ebebeb);border-radius:var(--kritzel-back-to-content-border-radius, 12px);background-color:var(--kritzel-back-to-content-background-color, #ffffff);color:var(--kritzel-back-to-content-color, #000000);font-size:var(--kritzel-back-to-content-font-size, 14px);font-weight:var(--kritzel-back-to-content-font-weight, 500);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-back-to-content-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));opacity:0;pointer-events:none;transition:opacity 0.2s ease-out, transform 0.2s ease-out, background-color 0.15s ease-out;-webkit-tap-highlight-color:transparent;user-select:none}.back-to-content-button.visible{opacity:1;pointer-events:auto}@media (hover: hover){.back-to-content-button:hover{background-color:var(--kritzel-back-to-content-hover-background-color, hsl(0, 0%, 0%, 4.3%))}}.back-to-content-button:active{background-color:var(--kritzel-back-to-content-active-background-color, hsl(0, 0%, 0%, 8.6%))}`;
5
5
 
@@ -28,7 +28,7 @@ const KritzelBackToContent = /*@__PURE__*/ proxyCustomElement(class KritzelBackT
28
28
  this.backToContent.emit();
29
29
  };
30
30
  render() {
31
- return (h(Host, { key: '612164b48226601d863cb2acdab1d567e9652188' }, h("button", { key: '159a4f4f01934c03c7898f2803bf87d5f0d95aba', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: 'e7ec1308ab12ca233509a00fc76df17fce1f5700', name: "chevrons-left" }))));
31
+ return (h(Host, { key: '0a41ed93e39193416eebdaf786557bffd4653dd0' }, h("button", { key: '1f621de9699127a095e94d910d5c96328324b299', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: '8ff49df055a0472edbbc57d84044a2de09b543c8', name: "chevrons-left" }))));
32
32
  }
33
33
  static get style() { return kritzelBackToContentCss(); }
34
34
  }, [513, "kritzel-back-to-content", {
@@ -1,6 +1,6 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
 
3
- const kritzelDropdownCss = () => `:host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-dropdown-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-border-radius, 6px);overflow:visible;height:38px;width:100%;position:relative}.dropdown-wrapper:hover:not(:focus-within){border-color:var(--kritzel-dropdown-hover-border-color, #cccccc)}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-dropdown-border-radius, 6px);border:none;background-color:var(--kritzel-dropdown-background, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-dropdown-background, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-menu-border-radius, var(--kritzel-dropdown-border-radius, 6px));box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:inherit;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:var(--kritzel-controls-box-shadow, 0 -4px 12px rgba(0, 0, 0, 0.15))}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-background-color, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-background-color, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}`;
3
+ const kritzelDropdownCss = () => `:host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-dropdown-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-border-radius, 6px);overflow:visible;height:38px;width:100%;position:relative}.dropdown-wrapper:hover:not(:focus-within){border-color:var(--kritzel-dropdown-hover-border-color, #cccccc)}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-dropdown-border-radius, 6px);border:none;background-color:var(--kritzel-dropdown-background, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-dropdown-background, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-menu-border-radius, var(--kritzel-dropdown-border-radius, 6px));box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:inherit;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:var(--kritzel-controls-box-shadow, 0 -4px 12px rgba(0, 0, 0, 0.15))}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-background-color, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-background-color, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}`;
4
4
 
5
5
  const KritzelDropdown = /*@__PURE__*/ proxyCustomElement(class KritzelDropdown extends H {
6
6
  constructor(registerHost) {
@@ -242,7 +242,7 @@ const KritzelDropdown = /*@__PURE__*/ proxyCustomElement(class KritzelDropdown e
242
242
  'open-up': this.openDirection === 'up',
243
243
  'open-down': this.openDirection === 'down',
244
244
  };
245
- return (h(Host, { key: '66ec6cbffa9fd25a7bad62d6e3477c0fe7726861' }, h("div", { key: '6dc1f20070dde95ab54f44d158659e99bd81b834', class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) }, h("slot", { key: 'd9655fc7f5e6a0d74b4a1904a12cc0bf478ccf4e', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), h("div", { key: '325af053df9588e99b493c422a1f369f0af2243a', class: "dropdown-container", style: { width: this.width } }, h("button", { key: '626d54cd8e01221b1cd61e61b9d53b534e7603db', type: "button", class: triggerClasses, style: { ...this.selectStyles, ...this.getSelectedStyle() }, onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) }, h("span", { key: 'bbc3ec7297ee98c1903cfd547ca20daf3a5f1311', class: "dropdown-trigger-label" }, this.getSelectedLabel()), h("span", { key: '591b71aec72d2e6eaa96e8eb4c91b1f34eb2177a', class: "dropdown-trigger-arrow", "aria-hidden": "true" }, h("svg", { key: '317034d40ceab9ca72090f6a58fc0fa5b92f2db0', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '98867959ff1d7fd5515a3fe400bdc2378013dcb9', points: "6 9 12 15 18 9" }))))), h("slot", { key: 'f9d2f73f7b233a30f57ba4a9209e1a32a8ee5e70', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }), h("ul", { key: 'f15048910c0d24855fb1e940d2adc994dee83d06', class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index) => {
245
+ return (h(Host, { key: 'c606b338e55dc66396105fa7b4fbdf372f3866e6' }, h("div", { key: 'aa32b73cac337fa4142ecc124cf039a59e3b3118', class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) }, h("slot", { key: '2cd8e9ef246a24c49d58f76f227f36aed4786178', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), h("div", { key: '80df8155e1907017d508e92f155bab5ae12dffab', class: "dropdown-container", style: { width: this.width } }, h("button", { key: 'd86463de7ec58248f1611d6b5d46f0eafc117f36', type: "button", class: triggerClasses, style: { ...this.selectStyles, ...this.getSelectedStyle() }, onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) }, h("span", { key: '4ef6a997f7a781fb409e97ed5bd6843d0eaff0bb', class: "dropdown-trigger-label" }, this.getSelectedLabel()), h("span", { key: '6601efcd69d84af1f022d14ede628bac743cc1f1', class: "dropdown-trigger-arrow", "aria-hidden": "true" }, h("svg", { key: '6cb2efe7b4ca890562c10b0e24eb1dfdad90ec24', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: 'a340af5a61dccf5bc29c8a473726b58055c2e9db', points: "6 9 12 15 18 9" }))))), h("slot", { key: '5bd4e5ad4cc4642c7769ecac2106ba82bae626f2', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }), h("ul", { key: 'e7a2be8ac261bc5fa1450940e2a57090d6be3315', class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index) => {
246
246
  const isSelected = option.value === this.internalValue;
247
247
  const isFocused = index === this.focusedIndex;
248
248
  const optionClasses = {
@@ -1,5 +1,5 @@
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';
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';
3
3
 
4
4
  const kritzelMasterDetailCss = () => `:host{display:block;width:100%;height:100%}.master-detail-container{display:flex;width:100%;height:100%;min-height:var(--kritzel-master-detail-min-height, 300px);gap:var(--kritzel-master-detail-gap, 0);background-color:var(--kritzel-master-detail-background-color, transparent)}.master-menu{display:flex;flex-direction:column;width:var(--kritzel-master-detail-menu-width, 200px);min-width:var(--kritzel-master-detail-menu-min-width, 160px);padding:var(--kritzel-master-detail-menu-padding, 8px);background-color:var(--kritzel-master-detail-menu-background-color, #ffffff);border-right:var(--kritzel-master-detail-menu-border-right, 1px solid #ebebeb);gap:var(--kritzel-master-detail-menu-gap, 4px);overflow-y:auto}.menu-item{display:flex;align-items:center;gap:var(--kritzel-master-detail-menu-item-gap, 10px);padding:var(--kritzel-master-detail-menu-item-padding, 10px 12px);border:none;border-radius:var(--kritzel-master-detail-menu-item-border-radius, 6px);background-color:var(--kritzel-master-detail-menu-item-background-color, transparent);color:var(--kritzel-master-detail-menu-item-color, #333333);font-family:inherit;font-size:var(--kritzel-master-detail-menu-item-font-size, 14px);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400);text-align:left;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;-webkit-tap-highlight-color:transparent}.menu-item:hover:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item:active:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-active-background-color, #e0e0e0)}.menu-item.is-selected{background-color:var(--kritzel-master-detail-menu-item-selected-background-color, #0066cc);color:var(--kritzel-master-detail-menu-item-selected-color, #ffffff);font-weight:var(--kritzel-master-detail-menu-item-selected-font-weight, 500)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-selected-hover-background-color, #0052a3)}.menu-item.is-disabled{color:var(--kritzel-master-detail-menu-item-disabled-color, #999999);cursor:not-allowed;opacity:0.6}.menu-item:focus-visible{outline:var(--kritzel-master-detail-menu-item-focus-outline, revert);outline-offset:var(--kritzel-master-detail-menu-item-focus-outline-offset, revert)}.menu-item-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.menu-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-panel{flex:1;min-height:0;padding:var(--kritzel-master-detail-detail-padding, 16px);background-color:var(--kritzel-master-detail-detail-background-color, #ffffff);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.detail-panel:focus{outline:none}.detail-panel:focus-visible{outline:var(--kritzel-master-detail-detail-focus-outline, revert);outline-offset:var(--kritzel-master-detail-detail-focus-outline-offset, revert)}.mobile-back-button{display:none;align-items:center;gap:8px;background:none;border:none;padding:0 0 16px 0;cursor:pointer;-webkit-tap-highlight-color:transparent;color:var(--kritzel-master-detail-back-button-color, #333333);font-weight:500;font-size:14px;font-family:inherit}.mobile-back-icon{display:flex;align-items:center;flex-shrink:0}.menu-item-chevron{display:none;flex-shrink:0;margin-left:auto;color:var(--kritzel-master-detail-menu-item-chevron-color, #999999)}.menu-item-chevron svg{width:16px;height:16px;stroke:currentColor}@media (max-width: 768px){.master-menu{width:100%;border-right:none}.detail-panel{display:none;width:100%}.master-detail-container.is-mobile-detail-visible .master-menu{display:none}.master-detail-container.is-mobile-detail-visible .detail-panel{display:block}.mobile-back-button{display:flex}.menu-item.is-selected{background-color:transparent;color:var(--kritzel-master-detail-menu-item-color, #333333);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item-chevron{display:flex;align-items:center}}`;
5
5
 
@@ -102,15 +102,15 @@ const KritzelMasterDetail = /*@__PURE__*/ proxyCustomElement(class KritzelMaster
102
102
  const selectedItem = this.items.find(item => item.id === this.selectedItemId);
103
103
  const panelId = 'master-detail-panel';
104
104
  const selectedTabId = selectedItem ? `tab-${selectedItem.id}` : undefined;
105
- return (h(Host, { key: 'f54d66ffc0330fa9dc4294f6a21810e3dd5db495' }, h("div", { key: '8f786b099dd5d4b0efcc45cbfb38f37916f60126', class: {
105
+ return (h(Host, { key: 'fc187266604f9d48210096a1574bf86482498a40' }, h("div", { key: '2886b386c6e96df671ff4902b2c9f7084f0c3191', class: {
106
106
  'master-detail-container': true,
107
107
  'is-mobile-detail-visible': this.showMobileDetail,
108
- } }, h("nav", { key: '1a5db5ba8ba393ff7f29b9d438c59acbb6fbd849', class: "master-menu", role: "tablist", "aria-orientation": "vertical", "aria-label": "Settings categories" }, this.items.map((item, index) => (h("button", { key: item.id, id: `tab-${item.id}`, ref: el => this.setTabRef(el, index), class: {
108
+ } }, h("nav", { key: '94a35861b7c97d7f5f1505e4c25bc7f584c6351f', class: "master-menu", role: "tablist", "aria-orientation": "vertical", "aria-label": "Settings categories" }, this.items.map((item, index) => (h("button", { key: item.id, id: `tab-${item.id}`, ref: el => this.setTabRef(el, index), class: {
109
109
  'menu-item': true,
110
110
  'is-selected': item.id === this.selectedItemId,
111
111
  'is-disabled': !!item.disabled,
112
112
  'is-focused': index === this.focusedIndex,
113
- }, role: "tab", "aria-selected": item.id === this.selectedItemId ? 'true' : 'false', "aria-controls": panelId, "aria-disabled": item.disabled ? 'true' : undefined, tabIndex: this.getTabIndex(item, index), disabled: item.disabled, onClick: () => this.handleItemClick(item), onKeyDown: e => this.handleKeyDown(e, item, index), onFocus: () => this.handleFocus(index), onBlur: this.handleBlur }, item.icon && (h("kritzel-icon", { name: item.icon, size: 20, class: "menu-item-icon" })), h("span", { class: "menu-item-label" }, item.label), h("span", { class: "menu-item-chevron", "aria-hidden": "true" }, h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: "m9 18 6-6-6-6" }))))))), h("div", { key: '22943ef64af7b63780fc4a25d0009443b5e1b0ba', id: panelId, class: "detail-panel", role: "tabpanel", "aria-labelledby": selectedTabId }, h("button", { key: '777b26506f739290be2d2267c1bc1381d59475fa', class: "mobile-back-button", onClick: this.handleBackClick, "aria-label": "Back to menu" }, h("kritzel-icon", { key: '96fe6b08965d7c5c41673bae0a5c5cc12f575a8f', name: "chevron-left", size: 20, class: "mobile-back-icon" }), "Back"), h("slot", { key: '985869d89bb10860e4a4bf221523376b7111ec1d' })))));
113
+ }, role: "tab", "aria-selected": item.id === this.selectedItemId ? 'true' : 'false', "aria-controls": panelId, "aria-disabled": item.disabled ? 'true' : undefined, tabIndex: this.getTabIndex(item, index), disabled: item.disabled, onClick: () => this.handleItemClick(item), onKeyDown: e => this.handleKeyDown(e, item, index), onFocus: () => this.handleFocus(index), onBlur: this.handleBlur }, item.icon && (h("kritzel-icon", { name: item.icon, size: 20, class: "menu-item-icon" })), h("span", { class: "menu-item-label" }, item.label), h("span", { class: "menu-item-chevron", "aria-hidden": "true" }, h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: "m9 18 6-6-6-6" }))))))), h("div", { key: 'd55507c8e818314bd548506d1b568357062378db', id: panelId, class: "detail-panel", role: "tabpanel", "aria-labelledby": selectedTabId }, h("button", { key: 'f7bf50b2ecd7093110ee0fc91d49caf468ee9116', class: "mobile-back-button", onClick: this.handleBackClick, "aria-label": "Back to menu" }, h("kritzel-icon", { key: 'c809cea0d279439ced7a580ea2a4f44d5ec2b8b6', name: "chevron-left", size: 20, class: "mobile-back-icon" }), "Back"), h("slot", { key: '78babf63e193db45e26ea6602ab09dde045bf06e' })))));
114
114
  }
115
115
  static get watchers() { return {
116
116
  "selectedItemId": [{
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
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 KritzelHTMLHelper } from './p-WUdQqYnu.js';
3
3
 
4
4
  const kritzelTooltipCss = () => `:host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-tooltip-background-color, #ffffff);color:var(--kritzel-tooltip-color, #000000);padding:var(--kritzel-tooltip-padding, 12px);border:var(--kritzel-tooltip-border, 1px solid #ebebeb);border-radius:var(--kritzel-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}`;
@@ -140,14 +140,14 @@ const KritzelTooltip = /*@__PURE__*/ proxyCustomElement(class KritzelTooltip ext
140
140
  }
141
141
  }
142
142
  render() {
143
- return (h(Host, { key: '2fee8c1343888c34bbed7dd172b946ff732f6fc1', style: {
143
+ return (h(Host, { key: '407a2f458626f02808fc9d718046a635de71662b', style: {
144
144
  position: 'fixed',
145
145
  zIndex: '9999',
146
146
  transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
147
147
  visibility: this.isVisible ? 'visible' : 'hidden',
148
148
  left: `${this.positionX}px`,
149
149
  bottom: `${this.positionY}px`,
150
- } }, h("div", { key: 'fe72d28fb81f24309077f30193c84064afcd6ebe', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, h("slot", { key: 'ee95da259971a58b048780b21a0018fd6731bb03' }))));
150
+ } }, h("div", { key: '13c00678bd485f1f5bc2676e2c89fd0019f5e089', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, h("slot", { key: '67937f71c611f36a2c47ee2632a8657ced1d8cc7' }))));
151
151
  }
152
152
  static get watchers() { return {
153
153
  "triggerElement": [{