kritzel-stencil 0.4.30 → 0.4.31

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 (193) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/kritzel-active-users_46.cjs.entry.js +112 -112
  5. package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
  6. package/dist/cjs/{schema.constants-CcvqL5nJ.js → schema.constants-0ySX0cg3.js} +6 -6
  7. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  8. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  9. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  10. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  11. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  12. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -18
  13. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  14. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +21 -21
  15. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  16. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  17. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  18. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  19. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  20. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  21. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  22. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  23. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  24. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  25. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  26. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  27. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  28. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  29. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  30. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  31. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  32. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  33. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  34. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  35. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  36. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  37. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  38. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  39. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  40. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  41. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  42. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  43. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  44. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  45. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  46. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  47. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  48. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  49. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  50. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  51. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  52. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  53. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  54. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  55. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  56. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  57. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  58. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  59. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  60. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  61. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  62. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +18 -18
  63. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  64. package/dist/collection/components/ui/kritzel-active-users/kritzel-active-users.css +65 -65
  65. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.css +42 -42
  66. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  67. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +112 -112
  68. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +331 -331
  69. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  70. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.css +11 -11
  71. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  72. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +39 -39
  73. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  74. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +89 -89
  75. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  76. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +54 -54
  77. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  78. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.css +98 -98
  79. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  80. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +58 -58
  81. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +2 -2
  82. package/dist/collection/components/ui/kritzel-notification-card/kritzel-notification-card.css +101 -101
  83. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +137 -137
  84. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  85. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.css +150 -150
  86. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  87. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -38
  88. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +45 -45
  89. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  90. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +16 -16
  91. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.css +72 -72
  92. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  93. package/dist/collection/constants/version.js +1 -1
  94. package/dist/collection/helpers/cursor.helper.js +6 -6
  95. package/dist/collection/helpers/svg-export.helper.js +41 -41
  96. package/dist/components/index.js +2 -2
  97. package/dist/components/kritzel-active-users.js +1 -1
  98. package/dist/components/kritzel-avatar.js +1 -1
  99. package/dist/components/kritzel-awareness-cursors.js +1 -1
  100. package/dist/components/kritzel-back-to-content.js +1 -1
  101. package/dist/components/kritzel-brush-style.js +2 -2
  102. package/dist/components/kritzel-button.js +1 -1
  103. package/dist/components/kritzel-color-palette.js +1 -1
  104. package/dist/components/kritzel-color.js +1 -1
  105. package/dist/components/kritzel-controls.js +1 -1
  106. package/dist/components/kritzel-current-user-dialog.js +1 -1
  107. package/dist/components/kritzel-current-user.js +1 -1
  108. package/dist/components/kritzel-cursor-trail.js +1 -1
  109. package/dist/components/kritzel-dialog.js +1 -1
  110. package/dist/components/kritzel-dropdown.js +1 -1
  111. package/dist/components/kritzel-editor.js +51 -51
  112. package/dist/components/kritzel-engine.js +1 -1
  113. package/dist/components/kritzel-export.js +1 -1
  114. package/dist/components/kritzel-font-family.js +1 -1
  115. package/dist/components/kritzel-font-size.js +1 -1
  116. package/dist/components/kritzel-font.js +1 -1
  117. package/dist/components/kritzel-input.js +1 -1
  118. package/dist/components/kritzel-line-endings.js +1 -1
  119. package/dist/components/kritzel-loading-overlay.js +1 -1
  120. package/dist/components/kritzel-login-dialog.js +1 -1
  121. package/dist/components/kritzel-master-detail.js +1 -1
  122. package/dist/components/kritzel-menu-item.js +1 -1
  123. package/dist/components/kritzel-menu.js +1 -1
  124. package/dist/components/kritzel-more-menu.js +1 -1
  125. package/dist/components/kritzel-numeric-input.js +1 -1
  126. package/dist/components/kritzel-opacity-slider.js +1 -1
  127. package/dist/components/kritzel-pill-tabs.js +1 -1
  128. package/dist/components/kritzel-portal.js +1 -1
  129. package/dist/components/kritzel-settings.js +1 -1
  130. package/dist/components/kritzel-shape-fill.js +1 -1
  131. package/dist/components/kritzel-share-dialog.js +1 -1
  132. package/dist/components/kritzel-slide-toggle.js +1 -1
  133. package/dist/components/kritzel-split-button.js +1 -1
  134. package/dist/components/kritzel-stroke-size.js +1 -1
  135. package/dist/components/kritzel-tool-config.js +1 -1
  136. package/dist/components/kritzel-tooltip.js +1 -1
  137. package/dist/components/kritzel-utility-panel.js +1 -1
  138. package/dist/components/kritzel-watermark.js +1 -1
  139. package/dist/components/kritzel-workspace-manager.js +1 -1
  140. package/dist/components/kritzel-zoom-panel.js +1 -1
  141. package/dist/components/{p-DTB3ykgO.js → p-B65Z2K81.js} +1 -1
  142. package/dist/components/{p-4uoSa0Xl.js → p-B6cwfdo3.js} +2 -2
  143. package/dist/components/{p-ChPs27Fd.js → p-BBA9F6Bi.js} +4 -4
  144. package/dist/components/{p-Dvn6ad4a.js → p-BCrNNQKI.js} +1 -1
  145. package/dist/components/{p-CoXN583u.js → p-BGJ-1pXX.js} +3 -3
  146. package/dist/components/{p-CBrn5AIB.js → p-BTRiw0VC.js} +1 -1
  147. package/dist/components/{p-DoxFuOy1.js → p-Bu6TjCs0.js} +2 -2
  148. package/dist/components/{p-Ce1j1-Hg.js → p-BvpI1eL4.js} +3 -3
  149. package/dist/components/{p-CAXR5-S9.js → p-BwC3bHai.js} +4 -4
  150. package/dist/components/{p-DX2nriaq.js → p-C2NV0SgA.js} +1 -1
  151. package/dist/components/{p-BPzdPKWE.js → p-CAGey5Xt.js} +3 -3
  152. package/dist/components/{p-C0FEC_gS.js → p-C_4J10HD.js} +2 -2
  153. package/dist/components/{p-NOWtUeeQ.js → p-C_fBqaep.js} +1 -1
  154. package/dist/components/{p-Ba0c-tu2.js → p-CzibK3BJ.js} +2 -2
  155. package/dist/components/{p-Cm33td2O.js → p-D0SKmg_J.js} +1 -1
  156. package/dist/components/{p-OUl5CA4Y.js → p-D497dAd-.js} +1 -1
  157. package/dist/components/{p-BmBebQMI.js → p-DC7noKZD.js} +7 -7
  158. package/dist/components/{p-CXpv9Rxe.js → p-DGcug5rp.js} +2 -2
  159. package/dist/components/{p-DkHYY72B.js → p-DIE74Wkf.js} +2 -2
  160. package/dist/components/{p-DOTdJ3JQ.js → p-DKkQMbfN.js} +3 -3
  161. package/dist/components/{p-DnmVD1Mz.js → p-DKuxmP3T.js} +2 -2
  162. package/dist/components/{p-bAacqNHq.js → p-DQX5iqJB.js} +2 -2
  163. package/dist/components/{p-DUmLsjKb.js → p-DTzNzE9j.js} +1 -1
  164. package/dist/components/{p-Df3BwVGy.js → p-D_XWdMC3.js} +2 -2
  165. package/dist/components/{p-B38_9BJg.js → p-Da56LiC2.js} +1 -1
  166. package/dist/components/{p-CeffYwAK.js → p-DaE8xcJ8.js} +19 -19
  167. package/dist/components/{p-CYwoBiqy.js → p-DcG-UAoL.js} +50 -50
  168. package/dist/components/{p-BeSKOETx.js → p-Dm6TZsys.js} +2 -2
  169. package/dist/components/{p-DhabvHJM.js → p-DuyNKEne.js} +3 -3
  170. package/dist/components/{p-DFMZEarE.js → p-DyWg1f0y.js} +1 -1
  171. package/dist/components/{p-DN9p3G9K.js → p-FDwfHj3U.js} +3 -3
  172. package/dist/components/{p-DK0anxtL.js → p-P70dtHet.js} +1 -1
  173. package/dist/components/{p-CucCT7Qn.js → p-R6NeY_RA.js} +2 -2
  174. package/dist/components/{p-BFYtCsZu.js → p-XOXeNvvd.js} +2 -2
  175. package/dist/components/{p-jIKskj3S.js → p-ZwkkxMNZ.js} +1 -1
  176. package/dist/components/{p-BprEDRpA.js → p-auUCvUOc.js} +2 -2
  177. package/dist/components/{p-D0Ed8epW.js → p-b5XSApfh.js} +4 -4
  178. package/dist/components/{p-djJSnjAX.js → p-fp1y_eAN.js} +2 -2
  179. package/dist/components/{p-Dpm75DfV.js → p-mCRS0Vii.js} +5 -5
  180. package/dist/components/{p-DOl-95VY.js → p-ml3LLPFB.js} +10 -10
  181. package/dist/components/{p-D_cyY7Nd.js → p-xFCFDper.js} +1 -1
  182. package/dist/esm/index.js +2 -2
  183. package/dist/esm/kritzel-active-users_46.entry.js +112 -112
  184. package/dist/esm/kritzel-brush-style.entry.js +1 -1
  185. package/dist/esm/{schema.constants-De_S50eB.js → schema.constants-D3OqvrMh.js} +6 -6
  186. package/dist/stencil/index.esm.js +2 -2
  187. package/dist/stencil/{p-1a398b42.entry.js → p-307b09bd.entry.js} +112 -112
  188. package/dist/stencil/{p-fb32cd8f.entry.js → p-905f7ab4.entry.js} +1 -1
  189. package/dist/stencil/{p-De_S50eB.js → p-D3OqvrMh.js} +6 -6
  190. package/dist/stencil/stencil.esm.js +1 -1
  191. package/dist/types/constants/version.d.ts +1 -1
  192. package/package.json +2 -1
  193. package/readme.md +10 -10
@@ -1,11 +1,11 @@
1
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';
2
+ import { a as KritzelMouseButton, d as defineCustomElement$3 } from './p-D0SKmg_J.js';
3
+ import { K as KritzelBaseObject, e as KritzelMathHelper, f as KritzelGeometryHelper, a as KritzelPath, b as KritzelLine, d as defineCustomElement$4 } from './p-DQX5iqJB.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-DK0anxtL.js';
8
+ import { A as ABSOLUTE_SCALE_MAX, a as ABSOLUTE_SCALE_MIN, d as defineCustomElement$1 } from './p-P70dtHet.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';
@@ -19296,12 +19296,12 @@ class KritzelCursorHelper {
19296
19296
  // We rotate around the center of the SVG canvas
19297
19297
  const center = size / 2;
19298
19298
  // We use a group to apply the rotation
19299
- const svg = `
19300
- <svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}">
19301
- <g transform="rotate(${rotation} ${center} ${center})">
19302
- ${content}
19303
- </g>
19304
- </svg>
19299
+ const svg = `
19300
+ <svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}">
19301
+ <g transform="rotate(${rotation} ${center} ${center})">
19302
+ ${content}
19303
+ </g>
19304
+ </svg>
19305
19305
  `;
19306
19306
  // Encode the SVG for use in a data URI
19307
19307
  // We need to be careful with encoding to ensure it works across browsers
@@ -48125,8 +48125,8 @@ class KritzelSvgExportHelper {
48125
48125
  .join('\n ');
48126
48126
  const xmlDecl = includeXmlDeclaration ? '<?xml version="1.0" encoding="UTF-8"?>\n' : '';
48127
48127
  const defsContent = defs.length > 0 ? `\n <defs>\n ${defs.join('\n ')}\n </defs>` : '';
48128
- return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48129
- ${elements}
48128
+ return `${xmlDecl}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBoxX} ${viewBoxY} ${viewBoxWidth} ${viewBoxHeight}" width="${viewBoxWidth}" height="${viewBoxHeight}">${defsContent}
48129
+ ${elements}
48130
48130
  </svg>`;
48131
48131
  }
48132
48132
  /**
@@ -48278,8 +48278,8 @@ class KritzelSvgExportHelper {
48278
48278
  const orient = end === 'start' ? 'auto-start-reverse' : 'auto';
48279
48279
  const refX = 0;
48280
48280
  const refY = size / 2;
48281
- return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48282
- <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48281
+ return `<marker id="${markerId}" markerWidth="${size}" markerHeight="${size}" refX="${refX}" refY="${refY}" orient="${orient}" markerUnits="userSpaceOnUse">
48282
+ <path d="${path}" fill="${fill}" transform="scale(${size / 10})"/>
48283
48283
  </marker>`;
48284
48284
  }
48285
48285
  /**
@@ -48326,10 +48326,10 @@ class KritzelSvgExportHelper {
48326
48326
  const opacity = path.opacity !== 1 ? ` opacity="${path.opacity}"` : '';
48327
48327
  const scale = this.getObjectScale(path);
48328
48328
  // Path needs to be wrapped in a g with translation since path.d uses local coordinates
48329
- return `<g transform="${transform}"${opacity}>
48330
- <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48331
- <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48332
- </svg>
48329
+ return `<g transform="${transform}"${opacity}>
48330
+ <svg viewBox="${path.viewBox}" width="${path.totalWidth / scale}" height="${path.totalHeight / scale}" overflow="visible">
48331
+ <path d="${path.d}" fill="${fill || 'none'}" stroke="${stroke || 'none'}"${path.strokeWidth ? ` stroke-width="${path.strokeWidth}"` : ''}/>
48332
+ </svg>
48333
48333
  </g>`;
48334
48334
  }
48335
48335
  /**
@@ -48345,10 +48345,10 @@ class KritzelSvgExportHelper {
48345
48345
  const scale = this.getObjectScale(line);
48346
48346
  const markerStart = line.hasStartArrow ? ` marker-start="url(#${line.startMarkerId})"` : '';
48347
48347
  const markerEnd = line.hasEndArrow ? ` marker-end="url(#${line.endMarkerId})"` : '';
48348
- return `<g transform="${transform}"${opacity}>
48349
- <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48350
- <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48351
- </svg>
48348
+ return `<g transform="${transform}"${opacity}>
48349
+ <svg viewBox="${line.viewBox}" width="${line.totalWidth / scale}" height="${line.totalHeight / scale}" overflow="visible">
48350
+ <path d="${line.d}" fill="none" stroke="${stroke}" stroke-width="${line.strokeWidth}" stroke-linecap="round"${markerStart}${markerEnd}/>
48351
+ </svg>
48352
48352
  </g>`;
48353
48353
  }
48354
48354
  /**
@@ -48372,18 +48372,18 @@ class KritzelSvgExportHelper {
48372
48372
  const textHtml = this.prosemirrorToHtml(shape.content, shape, theme);
48373
48373
  if (textHtml) {
48374
48374
  const fontColor = KritzelColorHelper.resolveThemeColor(shape.fontColor, theme);
48375
- textContent = `
48376
- <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48377
- <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;">
48378
- ${textHtml}
48379
- </div>
48375
+ textContent = `
48376
+ <foreignObject x="${shape.x}" y="${shape.y}" width="${shape.width}" height="${shape.height}">
48377
+ <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;">
48378
+ ${textHtml}
48379
+ </div>
48380
48380
  </foreignObject>`;
48381
48381
  }
48382
48382
  }
48383
- return `<g transform="${transform}"${opacity}>
48384
- <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48385
- <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48386
- </svg>
48383
+ return `<g transform="${transform}"${opacity}>
48384
+ <svg viewBox="${shape.viewBox}" width="${shape.totalWidth / scale}" height="${shape.totalHeight / scale}" overflow="visible" preserveAspectRatio="none">
48385
+ <path d="${pathD}" fill="${fill || 'transparent'}" stroke="${stroke}" stroke-width="${shape.strokeWidth}"/>${textContent}
48386
+ </svg>
48387
48387
  </g>`;
48388
48388
  }
48389
48389
  /**
@@ -48414,10 +48414,10 @@ class KritzelSvgExportHelper {
48414
48414
  // adjusted font-size already accounts for it – keeping both would double-scale
48415
48415
  // the content and overflow the foreignObject.
48416
48416
  const svgFontSizePx = (text.fontSize * (4 / 3) * (text.scaleFactor || 1) / scale).toFixed(4);
48417
- return `<g transform="${transform}"${opacity}>
48418
- <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48419
- <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>
48420
- </foreignObject>
48417
+ return `<g transform="${transform}"${opacity}>
48418
+ <foreignObject x="0" y="0" width="${width}" height="${height}" overflow="visible">
48419
+ <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>
48420
+ </foreignObject>
48421
48421
  </g>`;
48422
48422
  }
48423
48423
  /**
@@ -48451,9 +48451,9 @@ class KritzelSvgExportHelper {
48451
48451
  return `<tspan x="0" y="${y}" xml:space="preserve">${this.escapeHtml(line)}</tspan>`;
48452
48452
  })
48453
48453
  .join('');
48454
- return `<g transform="${transform}"${opacity}>
48455
- ${bgRect}
48456
- <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48454
+ return `<g transform="${transform}"${opacity}>
48455
+ ${bgRect}
48456
+ <text font-family="${this.escapeHtml(text.fontFamily)}" font-size="${resolvedFontSizePx}" fill="${fontColor}">${tspans}</text>
48457
48457
  </g>`;
48458
48458
  }
48459
48459
  /**
@@ -48481,8 +48481,8 @@ class KritzelSvgExportHelper {
48481
48481
  const width = image.totalWidth / scale;
48482
48482
  const height = image.totalHeight / scale;
48483
48483
  const href = imageDataUrls?.get(image.id) || image.resolvedSrc || image.src || '';
48484
- return `<g transform="${transform}"${opacity}>
48485
- <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48484
+ return `<g transform="${transform}"${opacity}>
48485
+ <image href="${href}" x="0" y="0" width="${width}" height="${height}" preserveAspectRatio="xMidYMid meet"/>
48486
48486
  </g>`;
48487
48487
  }
48488
48488
  /**
@@ -48502,19 +48502,19 @@ class KritzelSvgExportHelper {
48502
48502
  if (rasterSafeForCanvas) {
48503
48503
  // PNG export: render placeholder rect (foreignObject doesn't rasterize to PNG well)
48504
48504
  console.warn('[KritzelCustomElement SVG Export] Custom elements do not serialize well to PNG. Use SVG export or screenshot instead.');
48505
- return `<g transform="${transform}"${opacity}>
48506
- <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48507
- <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48505
+ return `<g transform="${transform}"${opacity}>
48506
+ <rect x="0" y="0" width="${width}" height="${height}" fill="#f0f0f0" stroke="#999" stroke-width="1" />
48507
+ <text x="${width / 2}" y="${height / 2}" text-anchor="middle" dominant-baseline="middle" font-size="12" fill="#999">[Custom Element]</text>
48508
48508
  </g>`;
48509
48509
  }
48510
48510
  // SVG export: use foreignObject to embed HTML
48511
48511
  const html = obj.element?.outerHTML || '<div style="border:1px dashed #ccc">Empty</div>';
48512
- return `<g transform="${transform}"${opacity}>
48513
- <foreignObject x="0" y="0" width="${width}" height="${height}">
48514
- <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48515
- ${html}
48516
- </div>
48517
- </foreignObject>
48512
+ return `<g transform="${transform}"${opacity}>
48513
+ <foreignObject x="0" y="0" width="${width}" height="${height}">
48514
+ <div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;overflow:hidden;">
48515
+ ${html}
48516
+ </div>
48517
+ </foreignObject>
48518
48518
  </g>`;
48519
48519
  }
48520
48520
  /**
@@ -48534,8 +48534,8 @@ class KritzelSvgExportHelper {
48534
48534
  return '';
48535
48535
  }
48536
48536
  const opacity = group.opacity !== 1 ? ` opacity="${group.opacity}"` : '';
48537
- return `<g${opacity}>
48538
- ${children}
48537
+ return `<g${opacity}>
48538
+ ${children}
48539
48539
  </g>`;
48540
48540
  }
48541
48541
  /**
@@ -1,6 +1,6 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
  import { a as KritzelColorHelper } from './p-7I4Uzjrw.js';
3
- import { d as defineCustomElement$1 } from './p-DOTdJ3JQ.js';
3
+ import { d as defineCustomElement$1 } from './p-DKkQMbfN.js';
4
4
 
5
5
  const kritzelColorPaletteCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}`;
6
6
 
@@ -45,7 +45,7 @@ const KritzelColorPalette = /*@__PURE__*/ proxyCustomElement(class KritzelColorP
45
45
  render() {
46
46
  const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
47
47
  const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
48
- return (h(Host, { key: '5f25a2ead76106ba2ef9762b4d212d5a9d7ac2a8' }, h("div", { key: '764cc6a55cc1865aaf1c501ee89a161f74fefa1c', class: {
48
+ return (h(Host, { key: '285c0db424b154d1b4ebca2fd4447bb248bc50f5' }, h("div", { key: '703abc3074b886895e963992cbc3084357c06a15', class: {
49
49
  'color-grid': true,
50
50
  'expanded': this.isExpanded,
51
51
  }, style: {
@@ -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: 'fc187266604f9d48210096a1574bf86482498a40' }, h("div", { key: '2886b386c6e96df671ff4902b2c9f7084f0c3191', class: {
105
+ return (h(Host, { key: '12ed4886b6b4d8935823d1b80ad7acd29dfccb2a' }, h("div", { key: '1ff2d39a3773ffbd15f8988f3270e8062f546870', class: {
106
106
  'master-detail-container': true,
107
107
  'is-mobile-detail-visible': this.showMobileDetail,
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: {
108
+ } }, h("nav", { key: 'ffeabf0df0568914ad5c101439892daea3dfcedc', 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: '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' })))));
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: '8c35914271516f61dbd9e1da5109b7f289b752af', id: panelId, class: "detail-panel", role: "tabpanel", "aria-labelledby": selectedTabId }, h("button", { key: 'f2d1891a42abc163e8b16b879a65801d3a99aa0b', class: "mobile-back-button", onClick: this.handleBackClick, "aria-label": "Back to menu" }, h("kritzel-icon", { key: '8e59502816ec6051cbc4d1a462ead75502485ae9', name: "chevron-left", size: 20, class: "mobile-back-icon" }), "Back"), h("slot", { key: '00d1d2a225d14474a23eb597e98124b0a9c0a369' })))));
114
114
  }
115
115
  static get watchers() { return {
116
116
  "selectedItemId": [{
@@ -1,5 +1,5 @@
1
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-DN9p3G9K.js';
2
+ import { d as defineCustomElement$1 } from './p-FDwfHj3U.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
 
@@ -91,16 +91,16 @@ const KritzelAvatar = /*@__PURE__*/ proxyCustomElement(class KritzelAvatar exten
91
91
  height: `${this.size}px`,
92
92
  fontSize: `${Math.round(this.size * 0.4)}px`,
93
93
  };
94
- return (h(Host, { key: 'f199b56955b749b868ad8e7940ef3114f1109c37', style: containerStyles, class: {
94
+ return (h(Host, { key: '2aa6089fe51ec346fbd5446bad4190b0f9970f89', style: containerStyles, class: {
95
95
  'has-image': !!showImage,
96
96
  'has-initials': !!showInitials,
97
97
  'has-default': !!showDefaultIcon,
98
- }, role: "img", "aria-label": this.getDisplayName() || 'User avatar' }, showImage && (h("img", { key: '621a58cc965cf6d037f8515e1263bd5bf4098ab0', src: imageUrl, alt: "", class: "avatar-image", ref: (el) => {
98
+ }, role: "img", "aria-label": this.getDisplayName() || 'User avatar' }, showImage && (h("img", { key: 'c7c9670f6c3596c6a1e60fea1309da3306fb40f0', src: imageUrl, alt: "", class: "avatar-image", ref: (el) => {
99
99
  if (el) {
100
100
  el.referrerPolicy = 'no-referrer';
101
101
  el.crossOrigin = 'anonymous';
102
102
  }
103
- }, onError: this.handleImageError })), showInitials && (h("span", { key: '28ff2e8b191c2d476c0f40dd57a2c8ec330ba104', class: "avatar-initials", style: { backgroundColor: this.getBackgroundColor() } }, initials)), showDefaultIcon && (h("span", { key: 'd2ef56b2fca2a609b5b99bb8d7e8747308ab9699', class: "avatar-default" }, h("svg", { key: '1c1d6e6e306a9938f559016eeb77a67aae42f536', viewBox: "0 0 24 24", fill: "currentColor" }, h("path", { key: '2c6af53101c20e137756d1194a3bac04c931066d', d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }))))));
103
+ }, onError: this.handleImageError })), showInitials && (h("span", { key: 'e9899002b0e210d77c8eeb7f4e359bc518c82076', class: "avatar-initials", style: { backgroundColor: this.getBackgroundColor() } }, initials)), showDefaultIcon && (h("span", { key: '359b57ab41b24ce2f7163ff782cca167b3078133', class: "avatar-default" }, h("svg", { key: '26f60f955453804ef40fac4cb2982c650c15d236', viewBox: "0 0 24 24", fill: "currentColor" }, h("path", { key: '9d872cdf173250f36596eb76c45bdae437f801a7', d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }))))));
104
104
  }
105
105
  static get watchers() { return {
106
106
  "user": [{
@@ -25,7 +25,7 @@ const KritzelWatermark = /*@__PURE__*/ proxyCustomElement(class KritzelWatermark
25
25
  label;
26
26
  render() {
27
27
  const label = this.label ?? this.core.localizationManager.translate('watermark.poweredBy');
28
- return (h(Host, { key: '297a488f26fd8637da8d00b98af85cfeda5b0992' }, h("a", { key: '6e3be65773dfda06e9b7ae611cfbb5ff09ba1f91', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
28
+ return (h(Host, { key: 'ab2155c93a729cfe08f2f3a2ec1dc1547f4a98c4' }, h("a", { key: 'cd7b687b3e073a7e6582a62f8feb3ca0aab688c8', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
29
29
  }
30
30
  static get style() { return kritzelWatermarkCss(); }
31
31
  }, [513, "kritzel-watermark", {
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$1 } from './p-DN9p3G9K.js';
2
+ import { d as defineCustomElement$1 } from './p-FDwfHj3U.js';
3
3
 
4
4
  const kritzelCurrentUserCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}kritzel-avatar{cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:50%}`;
5
5
 
@@ -22,7 +22,7 @@ const KritzelCurrentUser = /*@__PURE__*/ proxyCustomElement(class KritzelCurrent
22
22
  /** Resolved localized strings keyed by term key, supplied by the editor. */
23
23
  terms = {};
24
24
  render() {
25
- return (h(Host, { key: '30f2cedeefdef5817fcced6b84e74b53beba76ec' }, h("kritzel-avatar", { key: '41dc69bfbc13471fc686bb52e269dc98d2bfa3a8', user: this.user, size: this.avatarSize })));
25
+ return (h(Host, { key: '5cd225e636bc44a9c2418a6e9cf03b4dc220bcd8' }, h("kritzel-avatar", { key: '783d399ad51f40805ed63e3c44a4634066a05666', user: this.user, size: this.avatarSize })));
26
26
  }
27
27
  static get style() { return kritzelCurrentUserCss(); }
28
28
  }, [513, "kritzel-current-user", {
@@ -27,10 +27,10 @@ const KritzelShapeFill = /*@__PURE__*/ proxyCustomElement(class KritzelShapeFill
27
27
  return (h("svg", { viewBox: "0 0 24 24", class: "fill-icon" }, h("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: strokeColor, stroke: strokeColor, "stroke-width": "2" })));
28
28
  }
29
29
  render() {
30
- return (h(Host, { key: '6d38a9af2e4c4c7f86ab994c63fc074007c86b48' }, h("div", { key: 'cf58f26cb0e56e274873d11024209c6908d317bb', class: "fill-row" }, h("button", { key: 'c75eed70fe0c2fcbf0fd136bb6fce75b2dbfb45d', class: {
30
+ return (h(Host, { key: 'ec214708dd4210e0c36734cb81fba76849114f9b' }, h("div", { key: 'd64bacdb7c50b31f3c460bdf2e939b4159d4d000', class: "fill-row" }, h("button", { key: '812735be08265145a13ab116e7153fd684f8b77f', class: {
31
31
  'fill-option': true,
32
32
  'selected': this.value === 'transparent',
33
- }, onClick: () => this.handleFillChange('transparent'), title: "Transparent background" }, this.renderFillIcon('transparent')), h("button", { key: '5d6ede439b5d5e55598cd8c20b5851fb9f210463', class: {
33
+ }, onClick: () => this.handleFillChange('transparent'), title: "Transparent background" }, this.renderFillIcon('transparent')), h("button", { key: 'cb5caf2db8aece4bef2eebca37e7ac36383bb450', class: {
34
34
  'fill-option': true,
35
35
  'selected': this.value === 'filled',
36
36
  }, onClick: () => this.handleFillChange('filled'), title: "Filled background" }, this.renderFillIcon('filled')))));
@@ -62,7 +62,7 @@ const KritzelPillTabs = /*@__PURE__*/ proxyCustomElement(class KritzelPillTabs e
62
62
  buttons?.[newIndex]?.focus();
63
63
  }
64
64
  render() {
65
- return (h(Host, { key: 'f02f93ada5ec002695b62f511c847de201a8cbe4' }, h("div", { key: 'bb08ae773f1b993cb330556a5778d71fc5e91ce1', class: "pill-tabs-container", role: "tablist" }, this.tabs.map((tab, index) => (h("button", { key: tab.id, class: {
65
+ return (h(Host, { key: '16fce447fb7db0539ba115ef19771ac78f30a302' }, h("div", { key: '95487da922621b18c1ec422eb0d464131dbc28d3', class: "pill-tabs-container", role: "tablist" }, this.tabs.map((tab, index) => (h("button", { key: tab.id, class: {
66
66
  'pill-tab': true,
67
67
  'selected': this.value === tab.id,
68
68
  }, role: "tab", "aria-selected": this.value === tab.id ? 'true' : 'false', tabIndex: this.value === tab.id ? 0 : -1, onClick: () => this.handleTabClick(tab.id), onKeyDown: (e) => this.handleKeyDown(e, index) }, tab.icon && h("kritzel-icon", { name: tab.icon, size: 16 }), h("span", { class: "pill-tab-label" }, tab.label)))))));
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$1 } from './p-OUl5CA4Y.js';
2
+ import { d as defineCustomElement$1 } from './p-D497dAd-.js';
3
3
 
4
4
  const kritzelFontSizeCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}`;
5
5
 
@@ -29,7 +29,7 @@ const KritzelFontSize = /*@__PURE__*/ proxyCustomElement(class KritzelFontSize e
29
29
  render() {
30
30
  const color = 'var(--kritzel-global-text-primary)';
31
31
  const sizes = this.sizes ?? [];
32
- return (h(Host, { key: 'c49be084faa8b5eb380ba9bc3382ba8404853e20' }, sizes.map(size => (h("div", { tabIndex: 0, class: {
32
+ return (h(Host, { key: 'fb1ccc9ae97e997b8d19fda3350913c54ae109b4' }, sizes.map(size => (h("div", { tabIndex: 0, class: {
33
33
  'size-container': true,
34
34
  'selected': this.selectedSize === size,
35
35
  }, onClick: () => this.handleSizeClick(size), onKeyDown: event => this.handleKeyDown(event, size) }, h("kritzel-font", { fontFamily: this.fontFamily, size: size, color: color }))))));
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$3 } from './p-DN9p3G9K.js';
3
- import { d as defineCustomElement$2 } from './p-Ba0c-tu2.js';
4
- import { d as defineCustomElement$1 } from './p-DX2nriaq.js';
2
+ import { d as defineCustomElement$3 } from './p-FDwfHj3U.js';
3
+ import { d as defineCustomElement$2 } from './p-CzibK3BJ.js';
4
+ import { d as defineCustomElement$1 } from './p-C2NV0SgA.js';
5
5
 
6
6
  const kritzelCurrentUserDialogCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.user-info{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.user-name{font-size:18px;font-weight:600;color:var(--kritzel-current-user-dialog-name-color, #333333);text-align:center;margin-top:8px}.user-email{font-size:14px;color:var(--kritzel-current-user-dialog-email-color, #666666);text-align:center}.logout-button{margin-top:16px;width:100%;--kritzel-button-width:100%;--kritzel-button-primary-background-color:var(--kritzel-current-user-dialog-logout-button-background-color, #007AFF);--kritzel-button-primary-hover-background-color:var(--kritzel-current-user-dialog-logout-button-hover-background-color, #006ae6);--kritzel-button-primary-active-background-color:var(--kritzel-current-user-dialog-logout-button-active-background-color, #005bbf);--kritzel-button-primary-color:var(--kritzel-current-user-dialog-logout-button-color, #ffffff)}`;
7
7
 
@@ -43,7 +43,7 @@ const KritzelCurrentUserDialog = /*@__PURE__*/ proxyCustomElement(class KritzelC
43
43
  }
44
44
  render() {
45
45
  const displayName = this.getDisplayName();
46
- return (h(Host, { key: '33baea01a828422f2bba5c2fba82dd82e5c5b32d' }, h("kritzel-dialog", { key: '5271e1eb5d36b74f8487c040e70424c26f7019f8', dialogTitle: this.terms['currentUser.dialogTitle'] ?? 'Account', isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: '901697b9439eb8449f2f5c8e044c194f176633b1', class: "user-info" }, h("kritzel-avatar", { key: '76a17b9a2e4442b36b89747a5f5f168d2c59e7a1', user: this.user, size: 80 }), displayName && h("div", { key: '6aaedb1d2d8ea65de2460c15017d13b4e096223d', class: "user-name" }, displayName), this.user?.email && h("div", { key: '3cb78d0007087a18f798849f244399e5d6137e3b', class: "user-email" }, this.user.email), h("kritzel-button", { key: '67d416a1ac1be41cd6b658f79901cea29a287eb7', class: "logout-button", variant: "primary", onButtonClick: this.handleLogout }, this.terms['menu.logout'] ?? 'Logout')))));
46
+ return (h(Host, { key: '5e7e3c553dde2d1d049ab0e2f15a60d8ccf41708' }, h("kritzel-dialog", { key: '24e27641ade633adfb76536c34f0bbc885b230f0', dialogTitle: this.terms['currentUser.dialogTitle'] ?? 'Account', isOpen: this.isDialogOpen, onDialogClose: this.closeDialog, size: "small", contained: true }, h("div", { key: 'c9898de33ff63db1d244fe3028fd3ced36ce4f32', class: "user-info" }, h("kritzel-avatar", { key: '09ea2593f5a83c46d1fced68665319467c81786f', user: this.user, size: 80 }), displayName && h("div", { key: '61a0357598bd5ee85084255fcd97cc9f61f48cbd', class: "user-name" }, displayName), this.user?.email && h("div", { key: '761eaf17029b5721dbda7d523918ec1932296f89', class: "user-email" }, this.user.email), h("kritzel-button", { key: '55e6930d2e0975425fc00e40b4150d3116318875', class: "logout-button", variant: "primary", onButtonClick: this.handleLogout }, this.terms['menu.logout'] ?? 'Logout')))));
47
47
  }
48
48
  static get style() { return kritzelCurrentUserDialogCss(); }
49
49
  }, [513, "kritzel-current-user-dialog", {
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$1 } from './p-Df3BwVGy.js';
2
+ import { d as defineCustomElement$1 } from './p-D_XWdMC3.js';
3
3
 
4
4
  const kritzelFontFamilyCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box;width:100%}.font-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}.font-style-button.italic-text{font-style:italic}`;
5
5
 
@@ -46,7 +46,7 @@ const KritzelFontFamily = /*@__PURE__*/ proxyCustomElement(class KritzelFontFami
46
46
  label: option.label,
47
47
  style: { fontFamily: option.cssFontFamily ?? option.value },
48
48
  }));
49
- return (h(Host, { key: '059350f34370f7a291f47a42721ca5d9bb82df49' }, h("kritzel-dropdown", { key: 'fbd8cf1ae463c7e9b76d0ac754a41de54397058e', options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: selectedFontFamily } })));
49
+ return (h(Host, { key: '42b2805b1d2df47a1b2336dffac32ee50740809e' }, h("kritzel-dropdown", { key: '3e1f019b2ecacea061f687c93f4fdd6a384b93b7', options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: selectedFontFamily } })));
50
50
  }
51
51
  static get watchers() { return {
52
52
  "fontOptions": [{
@@ -1,9 +1,9 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
- import { d as defineCustomElement$5 } from './p-DX2nriaq.js';
3
- import { d as defineCustomElement$4 } from './p-Df3BwVGy.js';
2
+ import { d as defineCustomElement$5 } from './p-C2NV0SgA.js';
3
+ import { d as defineCustomElement$4 } from './p-D_XWdMC3.js';
4
4
  import { d as defineCustomElement$3 } from './p-CSuU8frA.js';
5
- import { d as defineCustomElement$2 } from './p-NOWtUeeQ.js';
6
- import { d as defineCustomElement$1 } from './p-jIKskj3S.js';
5
+ import { d as defineCustomElement$2 } from './p-C_fBqaep.js';
6
+ import { d as defineCustomElement$1 } from './p-ZwkkxMNZ.js';
7
7
 
8
8
  const kritzelExportCss = () => `:host{display:flex;flex-direction:column;min-height:0}.export-content{display:flex;flex-direction:column;gap:16px;padding:0;flex:1}.export-content kritzel-pill-tabs{align-self:center}.export-tab-content{display:flex;flex-direction:column;gap:16px;min-height:330px}.format-selection{display:flex;flex-direction:column;gap:6px}.format-selection label{font-size:14px;font-weight:500;color:var(--kritzel-global-text-primary, #333)}.export-primary-button{width:100%;padding:12px 24px;background-color:var(--kritzel-global-primary-color, #007AFF);color:var(--kritzel-global-primary-text-color, #fff);border:none;border-radius:var(--kritzel-button-border-radius, 8px);font-size:14px;font-weight:600;cursor:pointer;transition:background-color 0.2s ease;-webkit-tap-highlight-color:transparent}.export-primary-button:hover{background-color:var(--kritzel-global-primary-hover-color, #0066d6)}.export-primary-button:focus-visible{outline:revert;outline-offset:revert}.preview-container{width:100%;display:flex;justify-content:center;align-items:center;box-sizing:border-box;margin-bottom:8px}.preview-container img{max-width:100%;max-height:250px;object-fit:contain;box-shadow:0 4px 8px rgba(0, 0, 0, 0.15);border-radius:4px;border:1px solid var(--kritzel-global-border-color, #dbdbdb)}.export-content p{margin:0;color:var(--kritzel-global-text-secondary, #666)}@media (max-width: 576px){.export-tab-content{flex:1;min-height:0}}`;
9
9
 
@@ -87,7 +87,7 @@ const KritzelExport = /*@__PURE__*/ proxyCustomElement(class KritzelExport exten
87
87
  return (h("div", { class: "export-tab-content" }, h("kritzel-input", { label: this.terms['export.filename.label'] ?? 'Filename', value: this.exportFilename, placeholder: this.terms['export.filename.placeholder'] ?? 'Enter filename', suffix: ".json", onValueChange: this.handleFilenameChange })));
88
88
  }
89
89
  render() {
90
- return (h(Host, { key: '61ce7589d0453a1bd9fde8f33a711e06225eacde' }, h("kritzel-dialog", { key: '48da046edabdb5659b6edefaca56adb7531f9862', isOpen: this.isDialogOpen, dialogTitle: this.terms['export.dialogTitle'] ?? 'Export', closable: true, contained: true, onDialogClose: this.closeDialog }, h("div", { key: 'b7afc64ad1f558a78aa68c07b4dec65e6ca21c67', class: "export-content" }, h("kritzel-pill-tabs", { key: '59f759ade5a590eda6ba87f89eb433ced62da0cd', tabs: this.tabs, value: this.activeTab, onValueChange: this.handleTabChange }), this.activeTab === 'viewport' && this.renderViewportExport(), this.activeTab === 'workspace' && this.renderWorkspaceExport()), h("div", { key: 'a38bf30c9c5256d417cd3b0baf743e245a8cf3e4', slot: "footer" }, h("button", { key: '3dc9c53416ff9c8ca47df003f41767a2143fa4ef', class: "export-primary-button", onClick: this.handleExport }, this.terms['export.exportButton'] ?? 'Export')))));
90
+ return (h(Host, { key: '495d4e2ab6dd72661a1046308867b4b8dd8cf0ea' }, h("kritzel-dialog", { key: '616ec1d660c7bdceb6bb4b4ab1190691708059a9', isOpen: this.isDialogOpen, dialogTitle: this.terms['export.dialogTitle'] ?? 'Export', closable: true, contained: true, onDialogClose: this.closeDialog }, h("div", { key: 'eca5698b79848cac0e9fc4f13858c8382dd9cae4', class: "export-content" }, h("kritzel-pill-tabs", { key: '3b1d63d270aa29ab08e8a3021b8c0ee23c9076e7', tabs: this.tabs, value: this.activeTab, onValueChange: this.handleTabChange }), this.activeTab === 'viewport' && this.renderViewportExport(), this.activeTab === 'workspace' && this.renderWorkspaceExport()), h("div", { key: 'e5473f00fd9481452426966b5e410afdf3ee8b5a', slot: "footer" }, h("button", { key: 'c799c614e17877fb608445728c547ce2ba6673ab', class: "export-primary-button", onClick: this.handleExport }, this.terms['export.exportButton'] ?? 'Export')))));
91
91
  }
92
92
  static get style() { return kritzelExportCss(); }
93
93
  }, [513, "kritzel-export", {
@@ -1,17 +1,17 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
2
  import { a as KritzelColorHelper } from './p-7I4Uzjrw.js';
3
3
  import { r as resolveTextToolAvailableFonts, K as KritzelFontRegistry } from './p-DJkKlUyZ.js';
4
- import { d as defineCustomElement$b } from './p-DOTdJ3JQ.js';
5
- import { d as defineCustomElement$a } from './p-BeSKOETx.js';
6
- import { d as defineCustomElement$9 } from './p-Df3BwVGy.js';
7
- import { d as defineCustomElement$8 } from './p-OUl5CA4Y.js';
8
- import { d as defineCustomElement$7 } from './p-djJSnjAX.js';
9
- import { d as defineCustomElement$6 } from './p-BprEDRpA.js';
4
+ import { d as defineCustomElement$b } from './p-DKkQMbfN.js';
5
+ import { d as defineCustomElement$a } from './p-Dm6TZsys.js';
6
+ import { d as defineCustomElement$9 } from './p-D_XWdMC3.js';
7
+ import { d as defineCustomElement$8 } from './p-D497dAd-.js';
8
+ import { d as defineCustomElement$7 } from './p-fp1y_eAN.js';
9
+ import { d as defineCustomElement$6 } from './p-auUCvUOc.js';
10
10
  import { d as defineCustomElement$5 } from './p-CSuU8frA.js';
11
- import { d as defineCustomElement$4 } from './p-CXpv9Rxe.js';
12
- import { d as defineCustomElement$3 } from './p-DnmVD1Mz.js';
13
- import { d as defineCustomElement$2 } from './p-BFYtCsZu.js';
14
- import { d as defineCustomElement$1 } from './p-DoxFuOy1.js';
11
+ import { d as defineCustomElement$4 } from './p-DGcug5rp.js';
12
+ import { d as defineCustomElement$3 } from './p-DKuxmP3T.js';
13
+ import { d as defineCustomElement$2 } from './p-XOXeNvvd.js';
14
+ import { d as defineCustomElement$1 } from './p-Bu6TjCs0.js';
15
15
 
16
16
  class KritzelToolConfigHelper {
17
17
  static getToolConfig(tool) {
@@ -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: '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" }))));
31
+ return (h(Host, { key: '4ce5b0f5458c6bf86537a13cdfe6018cc170ea75' }, h("button", { key: 'b5df62731d6cb4a0834e6962707d84a4ffc1556a', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: '32e02064526f17fe0f3b52078ee681e60f3cd7e5', name: "chevrons-left" }))));
32
32
  }
33
33
  static get style() { return kritzelBackToContentCss(); }
34
34
  }, [513, "kritzel-back-to-content", {
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { H as HocuspocusProvider, a as HocuspocusProviderWebsocket } from './schema.constants-De_S50eB.js';
2
- export { Q as APP_STATE_MIGRATIONS, A as AssetNotFoundError, T as CURRENT_APP_STATE_SCHEMA_VERSION, U as CURRENT_WORKSPACE_SCHEMA_VERSION, F as DEFAULT_ASSET_STORAGE_CONFIG, D as DEFAULT_BRUSH_CONFIG, E as DEFAULT_LINE_TOOL_CONFIG, C as DEFAULT_TEXT_CONFIG, M as DE_LOCALE, L as EN_LOCALE, N as FR_LOCALE, s as IndexedDBAssetProvider, I as IndexedDBSyncProvider, O as KritzelAlignment, u as KritzelAnchorManager, r as KritzelAssetResolver, K as KritzelBaseObject, i as KritzelBaseTool, j as KritzelBrushTool, p as KritzelCursorHelper, h as KritzelCustomElement, y as KritzelCustomElementRendererRegistry, l as KritzelEraserTool, z as KritzelFontRegistry, f as KritzelGroup, d as KritzelImage, m as KritzelImageTool, x as KritzelLicenseManager, e as KritzelLine, k as KritzelLineTool, w as KritzelLocalizationManager, c as KritzelPath, q as KritzelSelectionTool, g as KritzelShape, o as KritzelShapeTool, b as KritzelText, n as KritzelTextTool, v as KritzelThemeManager, t as KritzelWorkspace, S as ShapeType, W as WORKSPACE_EXPORT_VERSION, R as WORKSPACE_MIGRATIONS, J as darkTheme, B as hasRemoteSyncProvider, G as lightTheme, P as runMigrations } from './schema.constants-De_S50eB.js';
1
+ import { H as HocuspocusProvider, a as HocuspocusProviderWebsocket } from './schema.constants-D3OqvrMh.js';
2
+ export { Q as APP_STATE_MIGRATIONS, A as AssetNotFoundError, T as CURRENT_APP_STATE_SCHEMA_VERSION, U as CURRENT_WORKSPACE_SCHEMA_VERSION, F as DEFAULT_ASSET_STORAGE_CONFIG, D as DEFAULT_BRUSH_CONFIG, E as DEFAULT_LINE_TOOL_CONFIG, C as DEFAULT_TEXT_CONFIG, M as DE_LOCALE, L as EN_LOCALE, N as FR_LOCALE, s as IndexedDBAssetProvider, I as IndexedDBSyncProvider, O as KritzelAlignment, u as KritzelAnchorManager, r as KritzelAssetResolver, K as KritzelBaseObject, i as KritzelBaseTool, j as KritzelBrushTool, p as KritzelCursorHelper, h as KritzelCustomElement, y as KritzelCustomElementRendererRegistry, l as KritzelEraserTool, z as KritzelFontRegistry, f as KritzelGroup, d as KritzelImage, m as KritzelImageTool, x as KritzelLicenseManager, e as KritzelLine, k as KritzelLineTool, w as KritzelLocalizationManager, c as KritzelPath, q as KritzelSelectionTool, g as KritzelShape, o as KritzelShapeTool, b as KritzelText, n as KritzelTextTool, v as KritzelThemeManager, t as KritzelWorkspace, S as ShapeType, W as WORKSPACE_EXPORT_VERSION, R as WORKSPACE_MIGRATIONS, J as darkTheme, B as hasRemoteSyncProvider, G as lightTheme, P as runMigrations } from './schema.constants-D3OqvrMh.js';
3
3
  import * as Y from 'yjs';
4
4
  import { WebsocketProvider } from 'y-websocket';
5
5
  import 'y-indexeddb';