kritzel-stencil 0.4.19 → 0.4.21

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 (217) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/{index-Dn19mGl-.js → index-Xav9JFHg.js} +11 -47
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +151 -119
  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-CY0WWJYd.js → schema.constants-CjN-B633.js} +20 -44
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/collection/classes/structures/app-state-map.structure.js +16 -6
  11. package/dist/collection/collection-manifest.json +1 -1
  12. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  13. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  14. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  15. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  16. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  17. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -18
  18. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  19. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +43 -21
  20. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  21. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  22. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  23. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  24. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  25. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  26. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  27. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  28. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  29. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  30. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  31. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  32. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  33. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  34. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  35. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  36. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  37. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  38. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  39. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  40. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  41. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  42. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  43. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  44. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  45. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  46. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  47. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  48. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  49. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  50. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  51. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  52. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  53. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  54. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  55. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  56. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  57. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  58. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  59. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  60. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  61. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  62. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  63. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  64. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  65. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  66. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  67. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +50 -50
  68. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  69. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +18 -18
  70. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  71. package/dist/collection/components/ui/kritzel-active-users/kritzel-active-users.css +65 -65
  72. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.css +42 -42
  73. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  74. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +112 -112
  75. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +331 -331
  76. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  77. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.css +11 -11
  78. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  79. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +39 -39
  80. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  81. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +89 -89
  82. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  83. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +50 -50
  84. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  85. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.css +98 -98
  86. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  87. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +58 -58
  88. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +2 -2
  89. package/dist/collection/components/ui/kritzel-notification-card/kritzel-notification-card.css +101 -101
  90. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +137 -137
  91. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  92. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.css +150 -150
  93. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  94. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -38
  95. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +45 -45
  96. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  97. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +16 -16
  98. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.css +72 -72
  99. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  100. package/dist/collection/constants/version.js +1 -1
  101. package/dist/collection/helpers/cursor.helper.js +6 -6
  102. package/dist/collection/helpers/svg-export.helper.js +41 -41
  103. package/dist/components/index.js +3 -3
  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 +56 -56
  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-sync-indicator.js +1 -1
  146. package/dist/components/kritzel-tool-config.js +1 -1
  147. package/dist/components/kritzel-tooltip.js +1 -1
  148. package/dist/components/kritzel-utility-panel.js +1 -1
  149. package/dist/components/kritzel-watermark.js +1 -1
  150. package/dist/components/kritzel-workspace-manager.js +1 -1
  151. package/dist/components/kritzel-zoom-panel.js +1 -1
  152. package/dist/components/{p-CLAz6RJc.js → p-2WiGyky4.js} +3 -3
  153. package/dist/components/{p-zG-WUBGF.js → p-4SPnZZkH.js} +4 -4
  154. package/dist/components/{p-MhQxGUvY.js → p-B-585egz.js} +3 -3
  155. package/dist/components/{p-C9_yBEoX.js → p-B43upypT.js} +10 -30
  156. package/dist/components/{p-CSKToqUl.js → p-B5SWPDuq.js} +4 -4
  157. package/dist/components/{p-Covorf4C.js → p-BFYtCsZu.js} +3 -3
  158. package/dist/components/{p-DYPA7jpg.js → p-BPsKYMH6.js} +2 -2
  159. package/dist/components/{p-BL0aCu3R.js → p-BdCrcQ0_.js} +9 -9
  160. package/dist/components/{p-Cx-L_28S.js → p-BoN700-O.js} +3 -3
  161. package/dist/components/{p-ME1sDz3f.js → p-BozrueXV.js} +2 -2
  162. package/dist/components/{p-D2VcPEtL.js → p-BrNsOp2v.js} +6 -6
  163. package/dist/components/{p-BXUx_C0N.js → p-BsLI_BWq.js} +2 -2
  164. package/dist/components/{p-dAXnRkjA.js → p-C98Eb3_R.js} +5 -5
  165. package/dist/components/{p-Bxi-Bm49.js → p-CAoN_STZ.js} +2 -2
  166. package/dist/components/{p-CSWCmyzb.js → p-CF8pLc07.js} +5 -5
  167. package/dist/components/{p-D3BzgkIE.js → p-CSPYkLLH.js} +2 -2
  168. package/dist/components/{p-Ck-87E2G.js → p-CSuU8frA.js} +1 -1
  169. package/dist/components/{p-Di--2boB.js → p-CXpv9Rxe.js} +3 -3
  170. package/dist/components/{p-Csxx9TbU.js → p-C_f_QElb.js} +104 -96
  171. package/dist/components/{p-o3NYKrVL.js → p-CaBbajU2.js} +3 -3
  172. package/dist/components/{p-3tBE7SyG.js → p-Cm33td2O.js} +2 -2
  173. package/dist/components/{p-vDCa_ZDm.js → p-CrHvaLRV.js} +3 -3
  174. package/dist/components/{p-DT_WBwsw.js → p-CwZ3KKFq.js} +6 -6
  175. package/dist/components/{p-BZZ3KRPk.js → p-CzW58DHM.js} +3 -3
  176. package/dist/components/{p-BrqSjRJN.js → p-Czhdc844.js} +3 -3
  177. package/dist/components/{p-BkXQL5Dl.js → p-D1rjfWgJ.js} +5 -5
  178. package/dist/components/{p-DPsbNStn.js → p-DB58Oa5V.js} +2 -2
  179. package/dist/components/{p-DafP9PAA.js → p-DBqoPgev.js} +2 -2
  180. package/dist/components/{p-BrA9NBEE.js → p-DDTMGbtA.js} +21 -21
  181. package/dist/components/{p-Dznwo6oc.js → p-DKGg-76-.js} +2 -2
  182. package/dist/components/{p-Dp1CD4gK.js → p-DVXTPI71.js} +2 -2
  183. package/dist/components/{p-QSyeAy8R.js → p-DX2nriaq.js} +2 -2
  184. package/dist/components/{p-CHoOe3FD.js → p-Df3BwVGy.js} +3 -3
  185. package/dist/components/{p-DcUIO14-.js → p-Dt7-I2Xz.js} +4 -4
  186. package/dist/components/{p-BShrnlam.js → p-DtnMdWWB.js} +2 -2
  187. package/dist/components/{p-Ch-KG9To.js → p-DwMqCX2P.js} +3 -3
  188. package/dist/components/{p-fSV6KVTC.js → p-GKmqCI8r.js} +3 -3
  189. package/dist/components/{p-CWAChRD5.js → p-HoO86l1o.js} +12 -12
  190. package/dist/components/{p-Qdo3E8dr.js → p-PjPPCHVL.js} +2 -2
  191. package/dist/components/{p-D6JycG-I.js → p-bAacqNHq.js} +3 -3
  192. package/dist/components/{p-DjXQxw9R.js → p-djJSnjAX.js} +3 -3
  193. package/dist/components/{p-b0J2ktAm.js → p-dsxHDlQ3.js} +7 -7
  194. package/dist/components/{p-BppcoKoo.js → p-eZXIu4yK.js} +5 -5
  195. package/dist/components/{p-BFYT03fw.js → p-fL9rl200.js} +3 -3
  196. package/dist/components/{p-1Q4VnThv.js → p-jIKskj3S.js} +3 -3
  197. package/dist/components/{p-D0Trc3IQ.js → p-vqEUQ-4Q.js} +5 -5
  198. package/dist/esm/{index-2va1Pk9z.js → index-Dhio9uis.js} +11 -47
  199. package/dist/esm/index.js +2 -2
  200. package/dist/esm/kritzel-active-users_47.entry.js +151 -119
  201. package/dist/esm/kritzel-brush-style.entry.js +2 -2
  202. package/dist/esm/loader.js +2 -2
  203. package/dist/esm/{schema.constants-DBvUmuDH.js → schema.constants-DfvqHmxc.js} +20 -44
  204. package/dist/esm/stencil.js +3 -3
  205. package/dist/stencil/index.esm.js +2 -2
  206. package/dist/stencil/{p-0250005e.entry.js → p-832b80e9.entry.js} +151 -119
  207. package/dist/stencil/{p-DBvUmuDH.js → p-DfvqHmxc.js} +20 -44
  208. package/dist/stencil/{p-2va1Pk9z.js → p-Dhio9uis.js} +11 -47
  209. package/dist/stencil/{p-df06ca3a.entry.js → p-fb32cd8f.entry.js} +2 -2
  210. package/dist/stencil/stencil.esm.js +4 -4
  211. package/dist/types/classes/structures/app-state-map.structure.d.ts +6 -0
  212. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +5 -0
  213. package/dist/types/constants/version.d.ts +1 -1
  214. package/dist/types/stencil-public-runtime.d.ts +0 -12
  215. package/loader/index.d.ts +1 -1
  216. package/package.json +1 -1
  217. 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-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-DtnMdWWB.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
@@ -44726,6 +44702,7 @@ class KritzelAppStateMap {
44726
44702
  _isReady = false;
44727
44703
  _onRemoteChangeCallback = null;
44728
44704
  _workspacesObserver = null;
44705
+ _networkSyncPromise = null;
44729
44706
  /**
44730
44707
  * Indicates whether the app state map has been initialized and is ready for use.
44731
44708
  * @returns True if initialized and all providers are connected, false otherwise.
@@ -44733,6 +44710,13 @@ class KritzelAppStateMap {
44733
44710
  get isReady() {
44734
44711
  return this._isReady;
44735
44712
  }
44713
+ /**
44714
+ * Settles when network providers finish their initial sync (or fail/time out).
44715
+ * Resolves immediately when no network providers are configured.
44716
+ */
44717
+ whenNetworkSynced() {
44718
+ return this._networkSyncPromise ?? Promise.resolve();
44719
+ }
44736
44720
  /**
44737
44721
  * Indicates whether any configured sync provider replicates over the network.
44738
44722
  * Used by the engine to warn when a matching remote asset storage
@@ -44817,12 +44801,13 @@ class KritzelAppStateMap {
44817
44801
  if (showSyncProviderInfo && networkProviders.length > 0) {
44818
44802
  console.info(`[Kritzel] App-state network providers connecting in background: ${networkProviders.length}`);
44819
44803
  }
44820
- for (const provider of networkProviders) {
44821
- provider.connect().catch(err => {
44822
- if (showSyncProviderInfo) {
44823
- console.error(`[Kritzel] Network sync provider "${provider.constructor.name}" failed to connect:`, err);
44824
- }
44825
- });
44804
+ const networkConnectPromises = networkProviders.map(provider => provider.connect().catch(err => {
44805
+ if (showSyncProviderInfo) {
44806
+ console.error(`[Kritzel] Network sync provider "${provider.constructor.name}" failed to connect:`, err);
44807
+ }
44808
+ }));
44809
+ if (networkConnectPromises.length > 0) {
44810
+ this._networkSyncPromise = Promise.allSettled(networkConnectPromises).then(() => undefined);
44826
44811
  }
44827
44812
  this._isReady = true;
44828
44813
  // Run any pending schema migrations before loading data
@@ -45147,6 +45132,7 @@ class KritzelAppStateMap {
45147
45132
  // Clear remaining references
45148
45133
  this._core = null;
45149
45134
  this._onRemoteChangeCallback = null;
45135
+ this._networkSyncPromise = null;
45150
45136
  this._isReady = false;
45151
45137
  }
45152
45138
  }
@@ -48099,8 +48085,8 @@ class KritzelSvgExportHelper {
48099
48085
  .join('\n ');
48100
48086
  const xmlDecl = includeXmlDeclaration ? '<?xml version="1.0" encoding="UTF-8"?>\n' : '';
48101
48087
  const defsContent = defs.length > 0 ? `\n <defs>\n ${defs.join('\n ')}\n </defs>` : '';
48102
- return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48103
- ${elements}
48088
+ return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48089
+ ${elements}
48104
48090
  </svg>`;
48105
48091
  }
48106
48092
  /**
@@ -48252,8 +48238,8 @@ class KritzelSvgExportHelper {
48252
48238
  const orient = end === 'start' ? 'auto-start-reverse' : 'auto';
48253
48239
  const refX = 0;
48254
48240
  const refY = size / 2;
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})"/>
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})"/>
48257
48243
  </marker>`;
48258
48244
  }
48259
48245
  /**
@@ -48300,10 +48286,10 @@ class KritzelSvgExportHelper {
48300
48286
  const opacity = path.opacity !== 1 ? ` opacity="${path.opacity}"` : '';
48301
48287
  const scale = this.getObjectScale(path);
48302
48288
  // Path needs to be wrapped in a g with translation since path.d uses local coordinates
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>
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>
48307
48293
  </g>`;
48308
48294
  }
48309
48295
  /**
@@ -48319,10 +48305,10 @@ class KritzelSvgExportHelper {
48319
48305
  const scale = this.getObjectScale(line);
48320
48306
  const markerStart = line.hasStartArrow ? ` marker-start="url(#${line.startMarkerId})"` : '';
48321
48307
  const markerEnd = line.hasEndArrow ? ` marker-end="url(#${line.endMarkerId})"` : '';
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>
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>
48326
48312
  </g>`;
48327
48313
  }
48328
48314
  /**
@@ -48346,18 +48332,18 @@ class KritzelSvgExportHelper {
48346
48332
  const textHtml = this.prosemirrorToHtml(shape.content, shape, theme);
48347
48333
  if (textHtml) {
48348
48334
  const fontColor = KritzelColorHelper.resolveThemeColor(shape.fontColor, theme);
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>
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>
48354
48340
  </foreignObject>`;
48355
48341
  }
48356
48342
  }
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>
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>
48361
48347
  </g>`;
48362
48348
  }
48363
48349
  /**
@@ -48388,10 +48374,10 @@ class KritzelSvgExportHelper {
48388
48374
  // adjusted font-size already accounts for it – keeping both would double-scale
48389
48375
  // the content and overflow the foreignObject.
48390
48376
  const svgFontSizePx = (text.fontSize * (4 / 3) * (text.scaleFactor || 1) / scale).toFixed(4);
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>
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>
48395
48381
  </g>`;
48396
48382
  }
48397
48383
  /**
@@ -48425,9 +48411,9 @@ class KritzelSvgExportHelper {
48425
48411
  return `<tspan x="0" y="${y}" xml:space="preserve">${this.escapeHtml(line)}</tspan>`;
48426
48412
  })
48427
48413
  .join('');
48428
- return `<g transform="${transform}"${opacity}>
48429
- ${bgRect}
48430
- <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>
48431
48417
  </g>`;
48432
48418
  }
48433
48419
  /**
@@ -48455,8 +48441,8 @@ class KritzelSvgExportHelper {
48455
48441
  const width = image.totalWidth / scale;
48456
48442
  const height = image.totalHeight / scale;
48457
48443
  const href = imageDataUrls?.get(image.id) || image.resolvedSrc || image.src || '';
48458
- return `<g transform="${transform}"${opacity}>
48459
- <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"/>
48460
48446
  </g>`;
48461
48447
  }
48462
48448
  /**
@@ -48476,19 +48462,19 @@ class KritzelSvgExportHelper {
48476
48462
  if (rasterSafeForCanvas) {
48477
48463
  // PNG export: render placeholder rect (foreignObject doesn't rasterize to PNG well)
48478
48464
  console.warn('[KritzelCustomElement SVG Export] Custom elements do not serialize well to PNG. Use SVG export or screenshot instead.');
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>
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>
48482
48468
  </g>`;
48483
48469
  }
48484
48470
  // SVG export: use foreignObject to embed HTML
48485
48471
  const html = obj.element?.outerHTML || '<div style="border:1px dashed #ccc">Empty</div>';
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>
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>
48492
48478
  </g>`;
48493
48479
  }
48494
48480
  /**
@@ -48508,8 +48494,8 @@ class KritzelSvgExportHelper {
48508
48494
  return '';
48509
48495
  }
48510
48496
  const opacity = group.opacity !== 1 ? ` opacity="${group.opacity}"` : '';
48511
- return `<g${opacity}>
48512
- ${children}
48497
+ return `<g${opacity}>
48498
+ ${children}
48513
48499
  </g>`;
48514
48500
  }
48515
48501
  /**
@@ -50787,6 +50773,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50787
50773
  if (!this._isAssetStorageInitialized && this.assetStorageConfig) {
50788
50774
  await this.initializeAssetStorage();
50789
50775
  }
50776
+ await this.waitForRemoteAppStateIfEmpty();
50790
50777
  if (this.activeWorkspaceId) {
50791
50778
  const startupWorkspace = this.core.getWorkspaces().find(ws => ws.id === this.activeWorkspaceId);
50792
50779
  if (startupWorkspace) {
@@ -50819,6 +50806,27 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
50819
50806
  }
50820
50807
  this.tryResolveActiveWorkspaceFromId();
50821
50808
  }
50809
+ /**
50810
+ * On a cold start the remote workspace list may still be in flight; creating a
50811
+ * fallback workspace before it arrives would pollute the synced app state.
50812
+ */
50813
+ async waitForRemoteAppStateIfEmpty() {
50814
+ if (this.core.getWorkspaces().length > 0) {
50815
+ return;
50816
+ }
50817
+ if (!this.core.appStateMap.hasNetworkSyncProvider || !this.isNetworkAvailable()) {
50818
+ return;
50819
+ }
50820
+ this._isWorkspaceLoading = true;
50821
+ this.syncLoadingState();
50822
+ try {
50823
+ await this.core.appStateMap.whenNetworkSynced();
50824
+ }
50825
+ finally {
50826
+ this._isWorkspaceLoading = false;
50827
+ this.syncLoadingState();
50828
+ }
50829
+ }
50822
50830
  resolveStartupWorkspace() {
50823
50831
  if (this.activeWorkspaceId) {
50824
50832
  const workspaceById = this.core.getWorkspaces().find(ws => ws.id === this.activeWorkspaceId);
@@ -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: '93486d37c5dcaaf9a3d0d1c53d6308ddd5712560', 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: '4b5cf451f75d09459145b874eb3c7faffafa87e0', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, h("slot", { key: '6c7fda100473a7d4fc533edc52d67bf6909bdc0e' }))));
151
151
  }
152
152
  static get watchers() { return {
153
153
  "triggerElement": [{
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
 
3
3
  var KritzelMouseButton;
4
4
  (function (KritzelMouseButton) {
@@ -79,7 +79,7 @@ const KritzelCursorTrail = /*@__PURE__*/ proxyCustomElement(class KritzelCursorT
79
79
  }
80
80
  }
81
81
  render() {
82
- return (h(Host, { key: 'cf2cf1c689bdc8ea393a7ea8f32698cfcdb0e375' }, this.cursorTrailPoints.length > 1 && (h("svg", { key: 'df38c45537217982f7fb9513b954f3b0fa27acea', class: "cursor-trail-svg", xmlns: "http://www.w3.org/2000/svg", style: {
82
+ return (h(Host, { key: 'b427550b19a3e172cb25d05e34635121b82a61c5' }, this.cursorTrailPoints.length > 1 && (h("svg", { key: '9685b563497e110f36c0feffbfde04ebeb38024b', class: "cursor-trail-svg", xmlns: "http://www.w3.org/2000/svg", style: {
83
83
  position: 'absolute',
84
84
  left: '0',
85
85
  top: '0',
@@ -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 kritzelOpacitySliderCss = () => `:host{display:flex;flex-direction:column;padding:0;box-sizing:border-box}.opacity-container{display:flex;align-items:center;width:232px}.slider-wrapper{flex:1;display:flex;align-items:center}.opacity-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient( to right, var(--kritzel-opacity-slider-active-color, #007AFF) 0%, var(--kritzel-opacity-slider-active-color, #007AFF) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) 100% );outline:none;cursor:var(--kritzel-global-pointer-cursor, pointer)}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-moz-range-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-track{height:6px;border-radius:3px;background:transparent}.opacity-slider:focus{outline:none}.opacity-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.opacity-slider:focus::-moz-range-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}`;
3
+ const kritzelOpacitySliderCss = () => `:host{display:flex;flex-direction:column;padding:0;box-sizing:border-box}.opacity-container{display:flex;align-items:center;width:232px}.slider-wrapper{flex:1;display:flex;align-items:center}.opacity-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient( to right, var(--kritzel-opacity-slider-active-color, #007AFF) 0%, var(--kritzel-opacity-slider-active-color, #007AFF) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) 100% );outline:none;cursor:var(--kritzel-global-pointer-cursor, pointer)}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-moz-range-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-track{height:6px;border-radius:3px;background:transparent}.opacity-slider:focus{outline:none}.opacity-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.opacity-slider:focus::-moz-range-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}`;
4
4
 
5
5
  const KritzelOpacitySlider = /*@__PURE__*/ proxyCustomElement(class KritzelOpacitySlider extends H {
6
6
  constructor(registerHost) {
@@ -33,7 +33,7 @@ const KritzelOpacitySlider = /*@__PURE__*/ proxyCustomElement(class KritzelOpaci
33
33
  }
34
34
  render() {
35
35
  const percentage = this.getPercentage();
36
- return (h(Host, { key: 'f1f0dad662e93506ddfc99e648a3cedc841de730' }, h("div", { key: '7b495a97a92f8fa8b28c33323d60b790781c7271', class: "opacity-container" }, h("div", { key: 'c41d3b0543a3bf78dc15602e0439f56aef21ddbe', class: "slider-wrapper" }, h("input", { key: 'd9ba313d84b91a0f9312ef1ad9fe67cc231073c9', type: "range", class: "opacity-slider", min: this.min, max: this.max, step: this.step, value: this.value, onInput: (e) => this.handleInput(e), style: {
36
+ return (h(Host, { key: '895ae10ad71e846a1bc62b794751332816650727' }, h("div", { key: '22ea167ce0d6eb17c733d789cde10477c48a2a0e', class: "opacity-container" }, h("div", { key: '2be4fbf8c1f8ddb1fde8f9da727ed0947d21646c', class: "slider-wrapper" }, h("input", { key: 'ed3621baf0adc54aa513a0296ede2f413378a06f', type: "range", class: "opacity-slider", min: this.min, max: this.max, step: this.step, value: this.value, onInput: (e) => this.handleInput(e), style: {
37
37
  '--slider-progress': `${percentage}%`,
38
38
  '--kritzel-opacity-slider-thumb-border-color': this.previewColor,
39
39
  } })))));
@@ -1,8 +1,8 @@
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 { g as getDefaultExportFromCjs } from './p-BFTU3MAI.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';
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';
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: '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
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
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: '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" })))))))));
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" })))))))));
3210
3210
  }
3211
3211
  static get watchers() { return {
3212
3212
  "isPublic": [{
@@ -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 kritzelUtilityPanelCss = () => `:host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:var(--kritzel-utility-panel-background-color, #e2e2e2);width:fit-content;user-select:none;z-index:1}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-utility-panel-button-color, #333333);--kritzel-icon-color:var(--kritzel-utility-panel-button-color, #333333);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-utility-panel-button-border-radius, 8px)}.utility-button:hover,.utility-button:focus-visible{background-color:var(--kritzel-utility-panel-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.utility-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.utility-separator{width:1px;height:16px;background-color:var(--kritzel-utility-panel-separator-color, hsl(0, 0%, 0%, 8%))}`;
5
5
 
@@ -33,7 +33,7 @@ const KritzelUtilityPanel = /*@__PURE__*/ proxyCustomElement(class KritzelUtilit
33
33
  this.redo.emit();
34
34
  }
35
35
  render() {
36
- return (h(Host, { key: 'bc0322b40c4ff4fba997f1dc1901edbb934e4a0a' }, h("button", { key: 'ff48698d2757b0d99cacfd4fbaa5a7b0ae8f1604', class: "utility-button", "data-testid": "utility-undo", disabled: !this.undoState?.canUndo, onClick: event => this.handleUndo(event), "aria-label": this.terms['utility.undo'] ?? 'Undo' }, h("kritzel-icon", { key: 'bc6756df10c7979e06cd9ebdb172b5ef54c7bb67', name: "undo" })), h("button", { key: '07afd176ae1b5cb5a65cd097ce4a99a131aee7aa', class: "utility-button", "data-testid": "utility-redo", disabled: !this.undoState?.canRedo, onClick: event => this.handleRedo(event), "aria-label": this.terms['utility.redo'] ?? 'Redo' }, h("kritzel-icon", { key: '4573d7ab91f0cbfa0aafb607050f0b09048d60e1', name: "redo" })), h("div", { key: 'b663c43ef9181f61b12614245a65d063f6d94eaf', class: "utility-separator" }), h("button", { key: '248f7ae7cabbd83585674dcb16124a3f9fa2449b', class: "utility-button", "data-testid": "utility-delete", onClick: () => this.delete.emit(), "aria-label": this.terms['utility.delete'] ?? 'Delete selected items' }, h("kritzel-icon", { key: '6cbc48e118c96770333ed3e5947e54e497e93716', name: "delete" }))));
36
+ return (h(Host, { key: '57c1a6746e4d5b319bb368c9d0bfc52a31d8c8de' }, h("button", { key: '5fb00d62b68de41feda9fafb3eec46cc0b85ba0e', class: "utility-button", "data-testid": "utility-undo", disabled: !this.undoState?.canUndo, onClick: event => this.handleUndo(event), "aria-label": this.terms['utility.undo'] ?? 'Undo' }, h("kritzel-icon", { key: '5ed2c36405ac7113ac697de9102aaf7067127e2a', name: "undo" })), h("button", { key: '0d58c8cbbb8e9547b9416dbf81a2c8011208dc6c', class: "utility-button", "data-testid": "utility-redo", disabled: !this.undoState?.canRedo, onClick: event => this.handleRedo(event), "aria-label": this.terms['utility.redo'] ?? 'Redo' }, h("kritzel-icon", { key: '70264118cbe0f54335a02941fdc868f63476cd1c', name: "redo" })), h("div", { key: '6eed6a603b8bc62e55b1f6fe82e7d035d1f5833c', class: "utility-separator" }), h("button", { key: 'd11195da7a86496afcca26105a6a0f066b1b2340', class: "utility-button", "data-testid": "utility-delete", onClick: () => this.delete.emit(), "aria-label": this.terms['utility.delete'] ?? 'Delete selected items' }, h("kritzel-icon", { key: '5e4c731f90863b4db917c67ac7e87c2945c7bcaa', name: "delete" }))));
37
37
  }
38
38
  static get style() { return kritzelUtilityPanelCss(); }
39
39
  }, [513, "kritzel-utility-panel", {
@@ -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: '2576489b9f97c77d1931e7c8496bae968d998f9d' }, h("button", { key: 'da891543ce8a9b5ccd2f4a461bdcdc7f3f9ad266', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: '4559cc932918707d5961c6237f3c5e23c9e4cc9d', name: "chevrons-left" }))));
32
32
  }
33
33
  static get style() { return kritzelBackToContentCss(); }
34
34
  }, [513, "kritzel-back-to-content", {
@@ -1,10 +1,10 @@
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 KritzelWorkspace } from './p-DAwPPDMS.js';
3
3
  import { O as ObjectHelper } from './p-DPONTran.js';
4
- import { d as defineCustomElement$5 } from './p-Ck-87E2G.js';
5
- import { d as defineCustomElement$3, a as defineCustomElement$4 } from './p-D2VcPEtL.js';
6
- import { d as defineCustomElement$2 } from './p-DYPA7jpg.js';
7
- import { d as defineCustomElement$1 } from './p-dAXnRkjA.js';
4
+ import { d as defineCustomElement$5 } from './p-CSuU8frA.js';
5
+ import { d as defineCustomElement$3, a as defineCustomElement$4 } from './p-BrNsOp2v.js';
6
+ import { d as defineCustomElement$2 } from './p-BPsKYMH6.js';
7
+ import { d as defineCustomElement$1 } from './p-C98Eb3_R.js';
8
8
 
9
9
  const kritzelWorkspaceManagerCss = () => `:host{display:flex;flex-direction:column;z-index:1}.manager{opacity:0;pointer-events:none;transition:opacity 0.2s ease-out}.manager.visible{opacity:1;pointer-events:auto}`;
10
10
 
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-C9_yBEoX.js';
1
+ import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.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: '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)));
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)));
23
23
  }
24
24
  static get style() { return kritzelLoadingOverlayCss(); }
25
25
  }, [513, "kritzel-loading-overlay", {
@@ -1,5 +1,5 @@
1
- import { p as proxyCustomElement, t as transformTag, H, h, d as Host } from './p-C9_yBEoX.js';
2
- import { d as defineCustomElement$1 } from './p-zG-WUBGF.js';
1
+ import { p as proxyCustomElement, t as transformTag, H, h, d as Host } from './p-B43upypT.js';
2
+ import { d as defineCustomElement$1 } from './p-4SPnZZkH.js';
3
3
 
4
4
  const kritzelActiveUsersCss = () => `:host{display:inline-flex;align-items:center}.avatars{display:flex;align-items:center}.avatar-wrapper{position:relative;transition:margin-left 200ms ease}.avatar-wrapper kritzel-avatar{border-radius:50%;box-shadow:0 0 0 2px var(--kritzel-active-users-avatar-border-color, #ffffff)}.avatars:hover .avatar-wrapper{margin-left:-6px !important}.avatar-tooltip{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:12px;padding:4px 8px;background-color:var(--kritzel-active-users-tooltip-background, #333333);color:var(--kritzel-active-users-tooltip-color, #ffffff);font-family:sans-serif;font-size:12px;font-weight:500;border-radius:4px;white-space:nowrap;width:max-content;pointer-events:none;opacity:0;transition:opacity 150ms ease}.avatar-wrapper:hover .avatar-tooltip,.overflow-count:hover .avatar-tooltip{opacity:1}.overflow-count{position:relative;margin-left:8px;font-family:sans-serif;font-size:var(--kritzel-active-users-overflow-font-size, 14px);font-weight:500;color:var(--kritzel-active-users-overflow-color, #666666);white-space:nowrap;cursor:default}.overflow-count .avatar-tooltip{white-space:nowrap;text-align:left;margin-top:20px}`;
5
5