kritzel-stencil 0.1.72 → 0.1.74

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 (177) hide show
  1. package/dist/cjs/index-Dc7LOVhs.js +2 -2
  2. package/dist/cjs/index.cjs.js +58 -18
  3. package/dist/cjs/{kritzel-active-users_41.cjs.entry.js → kritzel-active-users_42.cjs.entry.js} +586 -172
  4. package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/stencil.cjs.js +1 -1
  7. package/dist/cjs/{workspace.migrations-DcwqsqPC.js → workspace.migrations-Dyt35LBC.js} +58 -5
  8. package/dist/collection/classes/core/core.class.js +9 -3
  9. package/dist/collection/classes/core/store.class.js +20 -6
  10. package/dist/collection/classes/handlers/selection.handler.js +15 -2
  11. package/dist/collection/classes/objects/base-object.class.js +2 -0
  12. package/dist/collection/classes/objects/custom-element.class.js +1 -0
  13. package/dist/collection/classes/objects/group.class.js +1 -0
  14. package/dist/collection/classes/objects/image.class.js +1 -0
  15. package/dist/collection/classes/objects/line.class.js +1 -0
  16. package/dist/collection/classes/objects/path.class.js +1 -0
  17. package/dist/collection/classes/objects/selection-box.class.js +1 -0
  18. package/dist/collection/classes/objects/selection-group.class.js +13 -1
  19. package/dist/collection/classes/objects/shape.class.js +1 -0
  20. package/dist/collection/classes/objects/text.class.js +1 -0
  21. package/dist/collection/classes/providers/hocuspocus-sync-provider.class.js +57 -17
  22. package/dist/collection/classes/structures/object-map.structure.js +102 -7
  23. package/dist/collection/classes/tools/brush-tool.class.js +4 -0
  24. package/dist/collection/classes/tools/line-tool.class.js +4 -0
  25. package/dist/collection/classes/tools/shape-tool.class.js +2 -0
  26. package/dist/collection/collection-manifest.json +3 -2
  27. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +110 -0
  28. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +347 -0
  29. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  30. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +3 -3
  31. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +150 -109
  32. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  33. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
  34. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  35. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  36. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  37. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -1
  38. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  39. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  40. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  41. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  42. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  43. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  44. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  45. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  46. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  47. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  48. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  49. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  50. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  51. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  52. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
  53. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +5 -5
  54. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  55. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  56. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  57. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  58. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +1 -1
  59. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  60. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  61. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  62. package/dist/collection/constants/schema.constants.js +1 -1
  63. package/dist/collection/constants/version.js +1 -1
  64. package/dist/collection/interfaces/remote-cursor.interface.js +1 -0
  65. package/dist/collection/migrations/workspace.migrations.js +10 -1
  66. package/dist/components/index.d.ts +2 -0
  67. package/dist/components/index.js +1 -1
  68. package/dist/components/kritzel-active-users.js +1 -1
  69. package/dist/components/kritzel-avatar.js +1 -1
  70. package/dist/components/kritzel-awareness-cursors.d.ts +11 -0
  71. package/dist/components/kritzel-awareness-cursors.js +1 -0
  72. package/dist/components/kritzel-back-to-content.js +1 -1
  73. package/dist/components/kritzel-brush-style.js +1 -1
  74. package/dist/components/kritzel-button.js +1 -1
  75. package/dist/components/kritzel-color-palette.js +1 -1
  76. package/dist/components/kritzel-color.js +1 -1
  77. package/dist/components/kritzel-context-menu.js +1 -1
  78. package/dist/components/kritzel-controls.js +1 -1
  79. package/dist/components/kritzel-current-user-dialog.js +1 -1
  80. package/dist/components/kritzel-current-user.js +1 -1
  81. package/dist/components/kritzel-cursor-trail.js +1 -1
  82. package/dist/components/kritzel-dropdown.js +1 -1
  83. package/dist/components/kritzel-editor.js +1 -1
  84. package/dist/components/kritzel-engine.js +1 -1
  85. package/dist/components/kritzel-export.js +1 -1
  86. package/dist/components/kritzel-font-family.js +1 -1
  87. package/dist/components/kritzel-font-size.js +1 -1
  88. package/dist/components/kritzel-font.js +1 -1
  89. package/dist/components/kritzel-input.js +1 -1
  90. package/dist/components/kritzel-login-dialog.js +1 -1
  91. package/dist/components/kritzel-master-detail.js +1 -1
  92. package/dist/components/kritzel-menu-item.js +1 -1
  93. package/dist/components/kritzel-menu.js +1 -1
  94. package/dist/components/kritzel-more-menu.js +1 -1
  95. package/dist/components/kritzel-numeric-input.js +1 -1
  96. package/dist/components/kritzel-opacity-slider.js +1 -1
  97. package/dist/components/kritzel-portal.js +1 -1
  98. package/dist/components/kritzel-settings.js +1 -1
  99. package/dist/components/kritzel-share-dialog.js +1 -1
  100. package/dist/components/kritzel-slide-toggle.js +1 -1
  101. package/dist/components/kritzel-split-button.js +1 -1
  102. package/dist/components/kritzel-stroke-size.js +1 -1
  103. package/dist/components/kritzel-tool-config.js +1 -1
  104. package/dist/components/kritzel-tooltip.js +1 -1
  105. package/dist/components/kritzel-utility-panel.js +1 -1
  106. package/dist/components/kritzel-workspace-manager.js +1 -1
  107. package/dist/components/{p-Dp8idtVD.js → p-0kShCfeb.js} +1 -1
  108. package/dist/components/{p-B47JuZiD.js → p-2OYw6GJ7.js} +1 -1
  109. package/dist/components/p-7o2FWtFx.js +1 -0
  110. package/dist/components/{p-dR_q96Q3.js → p-B4Oqnl55.js} +1 -1
  111. package/dist/components/{p-C5KuV1pK.js → p-BA0ayKqO.js} +1 -1
  112. package/dist/components/{p-NbNVTRk6.js → p-BEJQ2kP7.js} +1 -1
  113. package/dist/components/p-BSipRoFx.js +1 -0
  114. package/dist/components/{p-CDadAOMw.js → p-BeFUNGEI.js} +1 -1
  115. package/dist/components/{p-35nrk8s0.js → p-BiByyU2C.js} +1 -1
  116. package/dist/components/{p-CCAWSyDD.js → p-BiouZo1q.js} +1 -1
  117. package/dist/components/{p-CSExtYKI.js → p-ByR0VXeU.js} +1 -1
  118. package/dist/components/{p-1MGcXTLv.js → p-C1uR_ZNW.js} +1 -1
  119. package/dist/components/{p-x8PzaMuD.js → p-C69Stayh.js} +1 -1
  120. package/dist/components/{p-Ch0UlFwq.js → p-C7SBI_0T.js} +1 -1
  121. package/dist/components/{p-DEzfXrGX.js → p-CAIGuV2J.js} +1 -1
  122. package/dist/components/p-CJ2eHeoV.js +1 -0
  123. package/dist/components/p-CW-VyJgK.js +1 -0
  124. package/dist/components/{p-DW4ADV9w.js → p-CZhyKp-f.js} +1 -1
  125. package/dist/components/p-CsR4owzk.js +1 -0
  126. package/dist/components/{p-BG1IxseV.js → p-CsoDfhD5.js} +1 -1
  127. package/dist/components/{p-DpFu5yAt.js → p-D1O7DxL4.js} +1 -1
  128. package/dist/components/{p-B5ouV8EQ.js → p-DRbG92F9.js} +1 -1
  129. package/dist/components/{p-C3eaM9TB.js → p-DS0xx1eT.js} +1 -1
  130. package/dist/components/{p-jx8VOz7S.js → p-DSzQ6H2j.js} +1 -1
  131. package/dist/components/{p-DsIlDGDO.js → p-DXjuuVq9.js} +1 -1
  132. package/dist/components/p-DXpYcAnT.js +1 -0
  133. package/dist/components/{p-DiFVw6IQ.js → p-Da46jw3N.js} +1 -1
  134. package/dist/components/{p-C6kZf91d.js → p-Dj_Qjga5.js} +1 -1
  135. package/dist/components/{p-Do0Q5-iC.js → p-DvIEvoZu.js} +1 -1
  136. package/dist/components/{p-CnVzLD5e.js → p-GYI7sDxr.js} +1 -1
  137. package/dist/components/{p-CcBM_ClD.js → p-HLbqRJGs.js} +1 -1
  138. package/dist/components/{p-VHyNcODZ.js → p-KQzWumjB.js} +1 -1
  139. package/dist/components/p-RJWe82kG.js +9 -0
  140. package/dist/components/{p-VAkeZOZL.js → p-TyR-YTXm.js} +1 -1
  141. package/dist/components/{p-CHtn5xr6.js → p-b4gyXoju.js} +1 -1
  142. package/dist/components/p-iRL0wQHQ.js +1 -0
  143. package/dist/components/{p-CqLaHE27.js → p-kj9wbLY8.js} +1 -1
  144. package/dist/components/{p-DaHq4iG1.js → p-xM-_OeRO.js} +1 -1
  145. package/dist/esm/index-MV-81ybv.js +2 -2
  146. package/dist/esm/index.js +59 -19
  147. package/dist/esm/{kritzel-active-users_41.entry.js → kritzel-active-users_42.entry.js} +586 -173
  148. package/dist/esm/kritzel-brush-style.entry.js +1 -1
  149. package/dist/esm/loader.js +1 -1
  150. package/dist/esm/stencil.js +1 -1
  151. package/dist/esm/{workspace.migrations-BGixvB76.js → workspace.migrations-B99F1MdT.js} +58 -5
  152. package/dist/stencil/index.esm.js +1 -1
  153. package/dist/stencil/p-2a60e1bc.entry.js +9 -0
  154. package/dist/stencil/p-B99F1MdT.js +1 -0
  155. package/dist/stencil/{p-016ad76a.entry.js → p-fc21e29c.entry.js} +1 -1
  156. package/dist/stencil/stencil.esm.js +1 -1
  157. package/dist/types/classes/core/store.class.d.ts +10 -2
  158. package/dist/types/classes/objects/base-object.class.d.ts +1 -0
  159. package/dist/types/classes/objects/selection-group.class.d.ts +5 -0
  160. package/dist/types/classes/providers/hocuspocus-sync-provider.class.d.ts +3 -0
  161. package/dist/types/classes/structures/object-map.structure.d.ts +41 -0
  162. package/dist/types/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.d.ts +26 -0
  163. package/dist/types/components.d.ts +39 -4
  164. package/dist/types/constants/schema.constants.d.ts +1 -1
  165. package/dist/types/constants/version.d.ts +1 -1
  166. package/dist/types/interfaces/object.interface.d.ts +1 -0
  167. package/dist/types/interfaces/remote-cursor.interface.d.ts +17 -0
  168. package/dist/types/interfaces/theme.interface.d.ts +7 -0
  169. package/package.json +1 -1
  170. package/dist/components/p-B2vjbWy-.js +0 -9
  171. package/dist/components/p-BvToKcu1.js +0 -1
  172. package/dist/components/p-CNro30tB.js +0 -1
  173. package/dist/components/p-Duv3EM3w.js +0 -1
  174. package/dist/components/p-KFsLHwYm.js +0 -1
  175. package/dist/components/p-hCORwbZh.js +0 -1
  176. package/dist/stencil/p-BGixvB76.js +0 -1
  177. package/dist/stencil/p-a0f5c4ad.entry.js +0 -9
@@ -1 +1 @@
1
- import{p as e,H as t,c as s,h as i,d as o,t as n}from"./p-pebXO4LU.js";import{a,C as l}from"./p-Duv3EM3w.js";import{d as r}from"./p-Dt-J69xt.js";import{d as c}from"./p-CHmi1QWx.js";import{d as h}from"./p-DiFVw6IQ.js";import{d}from"./p-CSExtYKI.js";import{d as g}from"./p-DaHq4iG1.js";const p="kritzel-settings",u=-1/0,m=1/0,f=-1/0,b=1/0,k={showViewportInfo:!1,showObjectInfo:!1,showSyncProviderInfo:!0,showMigrationInfo:!0},v=[{id:"general",label:"General",icon:"settings"},{id:"viewport",label:"Viewport",icon:"viewport"},{id:"shortcuts",label:"Keyboard Shortcuts",icon:"command"},{id:"developer",label:"Developer Options",icon:"braces"},{id:"about",label:"About",icon:"info"}],w=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.settingsChange=s(this,"settingsChange")}get host(){return this}shortcuts=[];editorId;isDialogOpen=!1;selectedCategoryId=v[0].id;scaleMin=1e-4;scaleMax=1e3;lockDrawingScale=!0;currentTheme="light";viewportBoundaryLeft=u;viewportBoundaryRight=m;viewportBoundaryTop=f;viewportBoundaryBottom=b;debugInfo={...k};settingsChange;componentWillLoad(){this.loadSettings()}get storageKey(){return this.editorId?`${p}-${this.editorId}`:p}loadSettings(){const e=localStorage.getItem(this.storageKey);if(e)try{const t=JSON.parse(e);"number"==typeof t.scaleMin&&(this.scaleMin=t.scaleMin),"number"==typeof t.scaleMax&&(this.scaleMax=t.scaleMax),"boolean"==typeof t.lockDrawingScale&&(this.lockDrawingScale=t.lockDrawingScale),"light"!==t.theme&&"dark"!==t.theme||(this.currentTheme=t.theme),"number"==typeof t.viewportBoundaryLeft&&(this.viewportBoundaryLeft=t.viewportBoundaryLeft),"number"==typeof t.viewportBoundaryRight&&(this.viewportBoundaryRight=t.viewportBoundaryRight),"number"==typeof t.viewportBoundaryTop&&(this.viewportBoundaryTop=t.viewportBoundaryTop),"number"==typeof t.viewportBoundaryBottom&&(this.viewportBoundaryBottom=t.viewportBoundaryBottom),t.debugInfo&&(this.debugInfo={...k,...t.debugInfo})}catch{}}saveSettings(){const e={scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,theme:this.currentTheme,viewportBoundaryLeft:this.viewportBoundaryLeft,viewportBoundaryRight:this.viewportBoundaryRight,viewportBoundaryTop:this.viewportBoundaryTop,viewportBoundaryBottom:this.viewportBoundaryBottom,debugInfo:this.debugInfo};localStorage.setItem(this.storageKey,JSON.stringify(e)),this.settingsChange.emit(e)}handleScaleMinChange=e=>{this.scaleMin=e.detail,this.saveSettings()};handleScaleMaxChange=e=>{this.scaleMax=e.detail,this.saveSettings()};handleLockDrawingScaleChange=e=>{this.lockDrawingScale=e.detail,this.saveSettings()};handleThemeChange=e=>{this.currentTheme=e.detail?"dark":"light",this.saveSettings()};handleViewportBoundaryLeftChange=e=>{this.viewportBoundaryLeft=e.detail??u,this.saveSettings()};handleViewportBoundaryRightChange=e=>{this.viewportBoundaryRight=e.detail??m,this.saveSettings()};handleViewportBoundaryTopChange=e=>{this.viewportBoundaryTop=e.detail??f,this.saveSettings()};handleViewportBoundaryBottomChange=e=>{this.viewportBoundaryBottom=e.detail??b,this.saveSettings()};handleDebugInfoChange=e=>t=>{this.debugInfo={...this.debugInfo,[e]:t.detail},this.saveSettings()};async open(){this.isDialogOpen=!0}closeDialog=()=>{this.isDialogOpen=!1};handleCategorySelect=e=>{this.selectedCategoryId=e.detail.item.id};formatKeyCombo(e){const t=[];return e.ctrl&&t.push("Ctrl"),e.shift&&t.push("Shift"),t.push(this.formatKey(e.key)),t.join("+")}formatKey(e){return{Escape:"Esc",Delete:"Del"," ":"Space"}[e]??e.toUpperCase()}groupShortcutsByCategory(){const e=new Map;for(const t of this.shortcuts){const s=e.get(t.category)||[];s.push(t),e.set(t.category,s)}return e}renderCategoryContent(){switch(this.selectedCategoryId){case"general":return i("div",{class:"settings-content"},i("h3",null,"General Settings"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Dark Mode"),i("p",{class:"settings-description"},"Toggle between light and dark color themes for the editor interface."),i("kritzel-slide-toggle",{checked:"dark"===this.currentTheme,label:"Dark Mode",onCheckedChange:this.handleThemeChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Lock Drawing Scale"),i("p",{class:"settings-description"},"When enabled, drawn objects maintain a fixed visual size regardless of the current zoom level."),i("kritzel-slide-toggle",{checked:this.lockDrawingScale,label:"Lock Drawing Scale",onCheckedChange:this.handleLockDrawingScaleChange}))));case"viewport":return i("div",{class:"settings-content"},i("h3",null,"Viewport Settings"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Minimum Zoom Level"),i("p",{class:"settings-description"},"Sets the minimum zoom level. Lower values allow zooming out further to see more of the canvas."),i("kritzel-numeric-input",{value:this.scaleMin,min:1e-4,max:1,step:1e-4,onValueChange:this.handleScaleMinChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Maximum Zoom Level"),i("p",{class:"settings-description"},"Sets the maximum zoom level. Higher values allow zooming in closer for detailed work."),i("kritzel-numeric-input",{value:this.scaleMax,min:1,max:1e3,step:1,onValueChange:this.handleScaleMaxChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Left"),i("p",{class:"settings-description"},"Left boundary in world coordinates. Set to limit how far left the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryLeft,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryLeftChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Right"),i("p",{class:"settings-description"},"Right boundary in world coordinates. Set to limit how far right the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryRight,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryRightChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Top"),i("p",{class:"settings-description"},"Top boundary in world coordinates. Set to limit how far up the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryTop,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryTopChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Bottom"),i("p",{class:"settings-description"},"Bottom boundary in world coordinates. Set to limit how far down the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryBottom,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryBottomChange}))));case"shortcuts":return i("div",{class:"settings-content"},i("h3",null,"Keyboard Shortcuts"),i("div",{class:"shortcuts-list"},Array.from(this.groupShortcutsByCategory()).map((([e,t])=>i("div",{class:"shortcuts-category",key:e},i("h4",{class:"shortcuts-category-title"},e),i("div",{class:"shortcuts-group"},t.map((e=>i("div",{class:"shortcut-item",key:e.key+e.label},i("span",{class:"shortcut-label"},e.label),i("kbd",{class:"shortcut-key"},this.formatKeyCombo(e)))))))))));case"developer":return i("div",{class:"settings-content"},i("h3",null,"Developer Options"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Viewport Info"),i("p",{class:"settings-description"},"Display viewport debug information such as position, zoom level, and boundaries."),i("kritzel-slide-toggle",{checked:this.debugInfo.showViewportInfo,label:"Show Viewport Info",onCheckedChange:this.handleDebugInfoChange("showViewportInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Object Info"),i("p",{class:"settings-description"},"Display debug information about objects on the canvas."),i("kritzel-slide-toggle",{checked:this.debugInfo.showObjectInfo,label:"Show Object Info",onCheckedChange:this.handleDebugInfoChange("showObjectInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Sync Provider Info"),i("p",{class:"settings-description"},"Display debug information about the sync provider connection status."),i("kritzel-slide-toggle",{checked:this.debugInfo.showSyncProviderInfo,label:"Show Sync Provider Info",onCheckedChange:this.handleDebugInfoChange("showSyncProviderInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Migration Info"),i("p",{class:"settings-description"},"Display debug information about data migrations."),i("kritzel-slide-toggle",{checked:this.debugInfo.showMigrationInfo,label:"Show Migration Info",onCheckedChange:this.handleDebugInfoChange("showMigrationInfo")}))));case"about":return i("div",{class:"settings-content"},i("h3",null,"About"),i("p",null,"Kritzel - A drawing application"),i("p",{class:"version-info"},"Version ","0.1.72"),i("p",{class:"version-info"},"App-State Schema v",l),i("p",{class:"version-info"},"Workspace Schema v",a));default:return null}}render(){return i(o,{key:"fc940d4154b06378cf13f7cde5238f4a1ac1d2ba"},i("kritzel-dialog",{key:"0c50f5cb3570eba67ce4c04f9f453361e0c9626a",isOpen:this.isDialogOpen,dialogTitle:"Settings",size:"large",onDialogClose:this.closeDialog},i("kritzel-master-detail",{key:"974adda5868d1261784366b59e285a0c45d265ca",items:v,selectedItemId:this.selectedCategoryId,onItemSelect:this.handleCategorySelect},this.renderCategoryContent())))}static get style(){return":host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}.shortcuts-list{display:flex;flex-direction:column;gap:24px}.shortcuts-category{display:flex;flex-direction:column;gap:8px}.shortcuts-category-title{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.shortcuts-group{display:flex;flex-direction:column;gap:4px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-item-bg, rgba(0, 0, 0, 0.02))}.shortcut-label{font-size:14px;color:var(--kritzel-settings-content-text-color, #666666)}.shortcut-key{font-family:monospace;font-size:12px;padding:2px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-key-bg, #f0f0f0);color:var(--kritzel-settings-shortcut-key-color, #333333);border:1px solid var(--kritzel-settings-shortcut-key-border, #ddd)}"}},[513,"kritzel-settings",{shortcuts:[16],editorId:[1,"editor-id"],isDialogOpen:[32],selectedCategoryId:[32],scaleMin:[32],scaleMax:[32],lockDrawingScale:[32],currentTheme:[32],viewportBoundaryLeft:[32],viewportBoundaryRight:[32],viewportBoundaryTop:[32],viewportBoundaryBottom:[32],debugInfo:[32],open:[64]}]);function y(){"undefined"!=typeof customElements&&["kritzel-settings","kritzel-dialog","kritzel-icon","kritzel-master-detail","kritzel-numeric-input","kritzel-slide-toggle"].forEach((e=>{switch(e){case"kritzel-settings":customElements.get(n(e))||customElements.define(n(e),w);break;case"kritzel-dialog":customElements.get(n(e))||r();break;case"kritzel-icon":customElements.get(n(e))||c();break;case"kritzel-master-detail":customElements.get(n(e))||h();break;case"kritzel-numeric-input":customElements.get(n(e))||d();break;case"kritzel-slide-toggle":customElements.get(n(e))||g()}}))}export{w as K,y as d}
1
+ import{p as e,H as t,c as s,h as i,d as o,t as n}from"./p-pebXO4LU.js";import{a,C as l}from"./p-CW-VyJgK.js";import{d as r}from"./p-Dt-J69xt.js";import{d as c}from"./p-CHmi1QWx.js";import{d}from"./p-Da46jw3N.js";import{d as h}from"./p-ByR0VXeU.js";import{d as g}from"./p-xM-_OeRO.js";const p="kritzel-settings",u=-1/0,m=1/0,f=-1/0,b=1/0,k={showViewportInfo:!1,showObjectInfo:!1,showSyncProviderInfo:!0,showMigrationInfo:!0},v=[{id:"general",label:"General",icon:"settings"},{id:"viewport",label:"Viewport",icon:"viewport"},{id:"shortcuts",label:"Keyboard Shortcuts",icon:"command"},{id:"developer",label:"Developer Options",icon:"braces"},{id:"about",label:"About",icon:"info"}],y=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.settingsChange=s(this,"settingsChange")}get host(){return this}shortcuts=[];editorId;isDialogOpen=!1;selectedCategoryId=v[0].id;scaleMin=1e-4;scaleMax=1e3;lockDrawingScale=!0;currentTheme="light";viewportBoundaryLeft=u;viewportBoundaryRight=m;viewportBoundaryTop=f;viewportBoundaryBottom=b;debugInfo={...k};settingsChange;componentWillLoad(){this.loadSettings()}get storageKey(){return this.editorId?`${p}-${this.editorId}`:p}loadSettings(){const e=localStorage.getItem(this.storageKey);if(e)try{const t=JSON.parse(e);"number"==typeof t.scaleMin&&(this.scaleMin=t.scaleMin),"number"==typeof t.scaleMax&&(this.scaleMax=t.scaleMax),"boolean"==typeof t.lockDrawingScale&&(this.lockDrawingScale=t.lockDrawingScale),"light"!==t.theme&&"dark"!==t.theme||(this.currentTheme=t.theme),"number"==typeof t.viewportBoundaryLeft&&(this.viewportBoundaryLeft=t.viewportBoundaryLeft),"number"==typeof t.viewportBoundaryRight&&(this.viewportBoundaryRight=t.viewportBoundaryRight),"number"==typeof t.viewportBoundaryTop&&(this.viewportBoundaryTop=t.viewportBoundaryTop),"number"==typeof t.viewportBoundaryBottom&&(this.viewportBoundaryBottom=t.viewportBoundaryBottom),t.debugInfo&&(this.debugInfo={...k,...t.debugInfo})}catch{}}saveSettings(){const e={scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,theme:this.currentTheme,viewportBoundaryLeft:this.viewportBoundaryLeft,viewportBoundaryRight:this.viewportBoundaryRight,viewportBoundaryTop:this.viewportBoundaryTop,viewportBoundaryBottom:this.viewportBoundaryBottom,debugInfo:this.debugInfo};localStorage.setItem(this.storageKey,JSON.stringify(e)),this.settingsChange.emit(e)}handleScaleMinChange=e=>{this.scaleMin=e.detail,this.saveSettings()};handleScaleMaxChange=e=>{this.scaleMax=e.detail,this.saveSettings()};handleLockDrawingScaleChange=e=>{this.lockDrawingScale=e.detail,this.saveSettings()};handleThemeChange=e=>{this.currentTheme=e.detail?"dark":"light",this.saveSettings()};handleViewportBoundaryLeftChange=e=>{this.viewportBoundaryLeft=e.detail??u,this.saveSettings()};handleViewportBoundaryRightChange=e=>{this.viewportBoundaryRight=e.detail??m,this.saveSettings()};handleViewportBoundaryTopChange=e=>{this.viewportBoundaryTop=e.detail??f,this.saveSettings()};handleViewportBoundaryBottomChange=e=>{this.viewportBoundaryBottom=e.detail??b,this.saveSettings()};handleDebugInfoChange=e=>t=>{this.debugInfo={...this.debugInfo,[e]:t.detail},this.saveSettings()};async open(){this.isDialogOpen=!0}closeDialog=()=>{this.isDialogOpen=!1};handleCategorySelect=e=>{this.selectedCategoryId=e.detail.item.id};formatKeyCombo(e){const t=[];return e.ctrl&&t.push("Ctrl"),e.shift&&t.push("Shift"),t.push(this.formatKey(e.key)),t.join("+")}formatKey(e){return{Escape:"Esc",Delete:"Del"," ":"Space"}[e]??e.toUpperCase()}groupShortcutsByCategory(){const e=new Map;for(const t of this.shortcuts){const s=e.get(t.category)||[];s.push(t),e.set(t.category,s)}return e}renderCategoryContent(){switch(this.selectedCategoryId){case"general":return i("div",{class:"settings-content"},i("h3",null,"General Settings"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Dark Mode"),i("p",{class:"settings-description"},"Toggle between light and dark color themes for the editor interface."),i("kritzel-slide-toggle",{checked:"dark"===this.currentTheme,label:"Dark Mode",onCheckedChange:this.handleThemeChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Lock Drawing Scale"),i("p",{class:"settings-description"},"When enabled, drawn objects maintain a fixed visual size regardless of the current zoom level."),i("kritzel-slide-toggle",{checked:this.lockDrawingScale,label:"Lock Drawing Scale",onCheckedChange:this.handleLockDrawingScaleChange}))));case"viewport":return i("div",{class:"settings-content"},i("h3",null,"Viewport Settings"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Minimum Zoom Level"),i("p",{class:"settings-description"},"Sets the minimum zoom level. Lower values allow zooming out further to see more of the canvas."),i("kritzel-numeric-input",{value:this.scaleMin,min:1e-4,max:1,step:1e-4,onValueChange:this.handleScaleMinChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Maximum Zoom Level"),i("p",{class:"settings-description"},"Sets the maximum zoom level. Higher values allow zooming in closer for detailed work."),i("kritzel-numeric-input",{value:this.scaleMax,min:1,max:1e3,step:1,onValueChange:this.handleScaleMaxChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Left"),i("p",{class:"settings-description"},"Left boundary in world coordinates. Set to limit how far left the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryLeft,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryLeftChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Right"),i("p",{class:"settings-description"},"Right boundary in world coordinates. Set to limit how far right the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryRight,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryRightChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Top"),i("p",{class:"settings-description"},"Top boundary in world coordinates. Set to limit how far up the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryTop,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryTopChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Viewport Boundary Bottom"),i("p",{class:"settings-description"},"Bottom boundary in world coordinates. Set to limit how far down the viewport can pan."),i("kritzel-numeric-input",{value:this.viewportBoundaryBottom,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryBottomChange}))));case"shortcuts":return i("div",{class:"settings-content"},i("h3",null,"Keyboard Shortcuts"),i("div",{class:"shortcuts-list"},Array.from(this.groupShortcutsByCategory()).map((([e,t])=>i("div",{class:"shortcuts-category",key:e},i("h4",{class:"shortcuts-category-title"},e),i("div",{class:"shortcuts-group"},t.map((e=>i("div",{class:"shortcut-item",key:e.key+e.label},i("span",{class:"shortcut-label"},e.label),i("kbd",{class:"shortcut-key"},this.formatKeyCombo(e)))))))))));case"developer":return i("div",{class:"settings-content"},i("h3",null,"Developer Options"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Viewport Info"),i("p",{class:"settings-description"},"Display viewport debug information such as position, zoom level, and boundaries."),i("kritzel-slide-toggle",{checked:this.debugInfo.showViewportInfo,label:"Show Viewport Info",onCheckedChange:this.handleDebugInfoChange("showViewportInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Object Info"),i("p",{class:"settings-description"},"Display debug information about objects on the canvas."),i("kritzel-slide-toggle",{checked:this.debugInfo.showObjectInfo,label:"Show Object Info",onCheckedChange:this.handleDebugInfoChange("showObjectInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Sync Provider Info"),i("p",{class:"settings-description"},"Display debug information about the sync provider connection status."),i("kritzel-slide-toggle",{checked:this.debugInfo.showSyncProviderInfo,label:"Show Sync Provider Info",onCheckedChange:this.handleDebugInfoChange("showSyncProviderInfo")})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Show Migration Info"),i("p",{class:"settings-description"},"Display debug information about data migrations."),i("kritzel-slide-toggle",{checked:this.debugInfo.showMigrationInfo,label:"Show Migration Info",onCheckedChange:this.handleDebugInfoChange("showMigrationInfo")}))));case"about":return i("div",{class:"settings-content"},i("h3",null,"About"),i("p",null,"Kritzel - A drawing application"),i("p",{class:"version-info"},"Version ","0.1.74"),i("p",{class:"version-info"},"App-State Schema v",l),i("p",{class:"version-info"},"Workspace Schema v",a));default:return null}}render(){return i(o,{key:"0d4cd5ad565a1ff1140f308765ff887ba68ba6c8"},i("kritzel-dialog",{key:"170a15a41d18f56981a99aae266026625d7fe644",isOpen:this.isDialogOpen,dialogTitle:"Settings",size:"large",onDialogClose:this.closeDialog},i("kritzel-master-detail",{key:"6569f351fdef57dd189af63f7d6c4d98ce815c1b",items:v,selectedItemId:this.selectedCategoryId,onItemSelect:this.handleCategorySelect},this.renderCategoryContent())))}static get style(){return":host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}.shortcuts-list{display:flex;flex-direction:column;gap:24px}.shortcuts-category{display:flex;flex-direction:column;gap:8px}.shortcuts-category-title{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.shortcuts-group{display:flex;flex-direction:column;gap:4px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-item-bg, rgba(0, 0, 0, 0.02))}.shortcut-label{font-size:14px;color:var(--kritzel-settings-content-text-color, #666666)}.shortcut-key{font-family:monospace;font-size:12px;padding:2px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-key-bg, #f0f0f0);color:var(--kritzel-settings-shortcut-key-color, #333333);border:1px solid var(--kritzel-settings-shortcut-key-border, #ddd)}"}},[513,"kritzel-settings",{shortcuts:[16],editorId:[1,"editor-id"],isDialogOpen:[32],selectedCategoryId:[32],scaleMin:[32],scaleMax:[32],lockDrawingScale:[32],currentTheme:[32],viewportBoundaryLeft:[32],viewportBoundaryRight:[32],viewportBoundaryTop:[32],viewportBoundaryBottom:[32],debugInfo:[32],open:[64]}]);function w(){"undefined"!=typeof customElements&&["kritzel-settings","kritzel-dialog","kritzel-icon","kritzel-master-detail","kritzel-numeric-input","kritzel-slide-toggle"].forEach((e=>{switch(e){case"kritzel-settings":customElements.get(n(e))||customElements.define(n(e),y);break;case"kritzel-dialog":customElements.get(n(e))||r();break;case"kritzel-icon":customElements.get(n(e))||c();break;case"kritzel-master-detail":customElements.get(n(e))||d();break;case"kritzel-numeric-input":customElements.get(n(e))||h();break;case"kritzel-slide-toggle":customElements.get(n(e))||g()}}))}export{y as K,w as d}
@@ -1 +1 @@
1
- import{p as t,H as e,c as o,h as n,d as c,t as r}from"./p-pebXO4LU.js";import{d as a}from"./p-CHmi1QWx.js";const i=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.backToContent=o(this,"backToContent")}visible=!1;text="Back to content";backToContent;handleClick=()=>{this.backToContent.emit()};render(){return n(c,{key:"e42bfb365d1ae7fba820234ae0d59cd1e468a258"},n("button",{key:"b8c376989685c0aca4ee9c425944289ccc6e351a",class:{"back-to-content-button":!0,visible:this.visible},onClick:this.handleClick},n("kritzel-icon",{key:"7955fafe06de1d2f6827bbd933dffd575c9ba9ed",name:"chevrons-left"})))}static get style(){return":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%))}"}},[513,"kritzel-back-to-content",{visible:[4],text:[1]}]);function s(){"undefined"!=typeof customElements&&["kritzel-back-to-content","kritzel-icon"].forEach((t=>{switch(t){case"kritzel-back-to-content":customElements.get(r(t))||customElements.define(r(t),i);break;case"kritzel-icon":customElements.get(r(t))||a()}}))}export{i as K,s as d}
1
+ import{p as t,H as e,c as o,h as n,d as c,t as a}from"./p-pebXO4LU.js";import{d as r}from"./p-CHmi1QWx.js";const i=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.backToContent=o(this,"backToContent")}visible=!1;text="Back to content";backToContent;handleClick=()=>{this.backToContent.emit()};render(){return n(c,{key:"890501d05ecfadaedbf298590d43b5efd67f1d5f"},n("button",{key:"fae3acd5aed5d0a5322fe9e0da2186577d873c5c",class:{"back-to-content-button":!0,visible:this.visible},onClick:this.handleClick},n("kritzel-icon",{key:"eaa718ab29fad870464c6b67d5ad27c4300dfd54",name:"chevrons-left"})))}static get style(){return":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%))}"}},[513,"kritzel-back-to-content",{visible:[4],text:[1]}]);function s(){"undefined"!=typeof customElements&&["kritzel-back-to-content","kritzel-icon"].forEach((t=>{switch(t){case"kritzel-back-to-content":customElements.get(a(t))||customElements.define(a(t),i);break;case"kritzel-icon":customElements.get(a(t))||r()}}))}export{i as K,s as d}
@@ -1 +1 @@
1
- import{p as e,H as t,c as o,h as r,d as s,t as i}from"./p-pebXO4LU.js";import{a as l}from"./p-CjazGGq3.js";import{d as a}from"./p-1MGcXTLv.js";const c=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.colorChange=o(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;theme;colorChange;handleColorClick(e){this.selectedColor=e,this.colorChange.emit(e)}handleKeyDown(e,t){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),this.handleColorClick(t))}calculateHeight(){const e=Math.ceil(this.colors.length/6);return 32*e+8*(e-1)+"px"}areColorsEqual(e,t){return!!e&&e.light===t.light&&e.dark===t.dark}render(){const e=this.isExpanded?this.colors:this.colors.slice(0,6),t=this.isExpanded?this.calculateHeight():"32px";return r(s,{key:"8dd3fe8327b3d5ce4f420cbff752b523e66b8356"},r("div",{key:"554f867b63450fa0f423b71cdfa5b1d6de3e12a9",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:t}},e.map((e=>r("div",{tabIndex:0,class:{"color-container":!0,selected:this.areColorsEqual(this.selectedColor,e)},onClick:()=>this.handleColorClick(e),onKeyDown:t=>this.handleKeyDown(t,e)},r("kritzel-color",{value:l.applyOpacity(e,this.opacity,this.theme),theme:this.theme}))))))}static get style(){return":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)}"}},[513,"kritzel-color-palette",{colors:[16],selectedColor:[1040],isExpanded:[4,"is-expanded"],isOpaque:[4,"is-opaque"],opacity:[2],theme:[1]}]);function n(){"undefined"!=typeof customElements&&["kritzel-color-palette","kritzel-color"].forEach((e=>{switch(e){case"kritzel-color-palette":customElements.get(i(e))||customElements.define(i(e),c);break;case"kritzel-color":customElements.get(i(e))||a()}}))}export{c as K,n as d}
1
+ import{p as e,H as t,c as o,h as r,d as s,t as i}from"./p-pebXO4LU.js";import{a as l}from"./p-CjazGGq3.js";import{d as a}from"./p-C1uR_ZNW.js";const c=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.colorChange=o(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;theme;colorChange;handleColorClick(e){this.selectedColor=e,this.colorChange.emit(e)}handleKeyDown(e,t){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),this.handleColorClick(t))}calculateHeight(){const e=Math.ceil(this.colors.length/6);return 32*e+8*(e-1)+"px"}areColorsEqual(e,t){return!!e&&e.light===t.light&&e.dark===t.dark}render(){const e=this.isExpanded?this.colors:this.colors.slice(0,6),t=this.isExpanded?this.calculateHeight():"32px";return r(s,{key:"22b6f0362933848cd40ad44c73a48fd4d8330884"},r("div",{key:"38adb9abc39d78ae9528341212acf2de425b4eb8",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:t}},e.map((e=>r("div",{tabIndex:0,class:{"color-container":!0,selected:this.areColorsEqual(this.selectedColor,e)},onClick:()=>this.handleColorClick(e),onKeyDown:t=>this.handleKeyDown(t,e)},r("kritzel-color",{value:l.applyOpacity(e,this.opacity,this.theme),theme:this.theme}))))))}static get style(){return":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)}"}},[513,"kritzel-color-palette",{colors:[16],selectedColor:[1040],isExpanded:[4,"is-expanded"],isOpaque:[4,"is-opaque"],opacity:[2],theme:[1]}]);function n(){"undefined"!=typeof customElements&&["kritzel-color-palette","kritzel-color"].forEach((e=>{switch(e){case"kritzel-color-palette":customElements.get(i(e))||customElements.define(i(e),c);break;case"kritzel-color":customElements.get(i(e))||a()}}))}export{c as K,n as d}
@@ -0,0 +1 @@
1
+ import{p as t,H as e,h as s,d as r,t as o}from"./p-pebXO4LU.js";import{K as n,a}from"./p-DXpYcAnT.js";const i=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow()}core;showEdgeIndicators=!0;edgeIndicatorPadding=8;remoteCursors=new Map;objectVersion=0;cleanupIntervalId;objectChangeRafId=null;componentDidLoad(){this.core.store.state.objects?.onAwarenessChange((t=>{this.handleAwarenessChange(t)})),this.core.store.state.objects?.onObjectsChange((()=>{this.handleRemoteObjectChange()})),this.cleanupIntervalId=setInterval((()=>{this.cleanupStaleCursors()}),3e3)}disconnectedCallback(){this.cleanupIntervalId&&clearInterval(this.cleanupIntervalId),null!==this.objectChangeRafId&&cancelAnimationFrame(this.objectChangeRafId)}handleAwarenessChange(t){const e=this.core.store.state.objects?.localClientId,s=Date.now(),r=new Map(this.remoteCursors),o=new Set;t.forEach(((t,n)=>{n!==e&&t.user&&(o.add(n),r.set(n,{clientId:n,user:t.user,cursor:t.cursor,activeObjectId:t.activeObjectId||null,selectionBox:t.selectionBox||null,lastUpdated:s}))}));for(const t of r.keys())o.has(t)||r.delete(t);this.remoteCursors=r}cleanupStaleCursors(){const t=Date.now();let e=!1;const s=new Map(this.remoteCursors);for(const[r,o]of s)t-o.lastUpdated>3e4&&(s.delete(r),e=!0);e&&(this.remoteCursors=s)}isStale(t){return Date.now()-t.lastUpdated>1e4}hasActiveDrawingCursors(){for(const t of this.remoteCursors.values())if(t.activeObjectId)return!0;return!1}handleRemoteObjectChange(){this.hasActiveDrawingCursors()&&null===this.objectChangeRafId&&(this.objectChangeRafId=requestAnimationFrame((()=>{this.objectChangeRafId=null,this.objectVersion++})))}getActiveObjectTip(t){const e=this.core.store.state.objects?.findById(t);if(!e)return null;if(e instanceof n&&!e.isCompleted){const t=e.points[e.points.length-1];return t?{x:(t[0]-e.x)/e.scale+e.translateX,y:(t[1]-e.y)/e.scale+e.translateY}:null}return e instanceof a&&!e.isCompleted?{x:(e.endX-e.x)/e.scale+e.translateX,y:(e.endY-e.y)/e.scale+e.translateY}:null}worldToScreen(t,e){const{scale:s,translateX:r,translateY:o}=this.core.store.state;return{x:t*s+r,y:e*s+o}}isInViewport(t,e){const{viewportWidth:s,viewportHeight:r}=this.core.store.state;return t>=0&&t<=s&&e>=0&&e<=r}clampToEdge(t,e){const{viewportWidth:s,viewportHeight:r}=this.core.store.state,o=this.edgeIndicatorPadding,n=Math.max(o,Math.min(s-o,t)),a=Math.max(o,Math.min(r-o,e)),i=n-o,l=s-o-n,c=a-o;let d="top";const h=Math.min(i,l,c,r-o-a);return d=h===i?"left":h===l?"right":h===c?"top":"bottom",{x:n,y:a,angle:Math.atan2(e-a,t-n),edge:d}}getUserDisplayName(t){return t.displayName?t.displayName:t.firstName||t.lastName?[t.firstName,t.lastName].filter(Boolean).join(" "):"Unknown"}render(){const t=Array.from(this.remoteCursors.values());return s(r,{key:"b8676d9a7a3d4a79ea8ad9763355ecf4c2f90e17"},t.map((t=>{if(!t.cursor)return null;let e,s=!1;if(t.activeObjectId){const r=this.getActiveObjectTip(t.activeObjectId);r?(s=!0,e=this.worldToScreen(r.x,r.y)):e=this.worldToScreen(t.cursor.x,t.cursor.y)}else e=this.worldToScreen(t.cursor.x,t.cursor.y);const r=this.isInViewport(e.x,e.y),o=this.isStale(t),n=t.user.color||"#6B7280";return r?this.renderCursor(t,e.x,e.y,n,o,s):this.showEdgeIndicators?this.renderEdgeIndicator(t,e.x,e.y,n,o,s):null})),t.map((t=>{if(!t.selectionBox)return null;const e=t.user.color||"#6B7280",r=t.selectionBox,o=this.worldToScreen(r.x,r.y),{scale:n}=this.core.store.state;return s("div",{key:`selection-box-${t.clientId}`,class:"remote-selection-box",style:{transform:`translate(${o.x}px, ${o.y}px)`,width:r.width*n+"px",height:r.height*n+"px",backgroundColor:`color-mix(in srgb, ${e} 20%, transparent)`,borderColor:`color-mix(in srgb, ${e} 50%, transparent)`}})})))}renderCursor(t,e,r,o,n,a){return s("div",{key:`cursor-${t.clientId}`,class:{"awareness-cursor":!0,stale:n,"tracking-object":a},style:{transform:`translate(${e}px, ${r}px)`}},s("svg",{class:"cursor-arrow",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},s("path",{d:"M5 3L19 12L12 13L9 20L5 3Z",fill:o,stroke:"#ffffff","stroke-width":"1.5","stroke-linejoin":"round"})),s("span",{class:"cursor-label",style:{backgroundColor:o}},this.getUserDisplayName(t.user)))}renderEdgeIndicator(t,e,r,o,n,a){const i=this.clampToEdge(e,r),l=180*i.angle/Math.PI+90;let c=0,d=0;"left"===i.edge?c=20:"right"===i.edge?c=-20:"top"===i.edge?d=20:"bottom"===i.edge&&(d=-20);const h=this.getUserDisplayName(t.user);return s("div",{key:`edge-${t.clientId}`,class:{"edge-indicator":!0,stale:n,"tracking-object":a},style:{transform:`translate(${i.x}px, ${i.y}px)`}},s("svg",{class:"edge-arrow",width:"16",height:"16",viewBox:"0 0 16 16",style:{transform:`rotate(${l}deg)`}},s("path",{d:"M8 1L14 13H2L8 1Z",fill:o,stroke:"#ffffff","stroke-width":"1.5","stroke-linejoin":"round"})),s("span",{class:"edge-label",style:{backgroundColor:o,transform:`translate(${c}px, ${d}px)`}},h))}static get style(){return":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9500}.awareness-cursor{position:absolute;top:0;left:0;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform}.awareness-cursor.stale{opacity:0.3}.awareness-cursor.tracking-object{transition-duration:0ms}.cursor-arrow{filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.cursor-label{position:absolute;left:16px;top:16px;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;user-select:none}.edge-indicator{position:absolute;top:-12px;left:-12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform;pointer-events:auto;user-select:none;cursor:pointer}.edge-indicator.stale{opacity:0.3}.edge-indicator.tracking-object{transition-duration:0ms}.edge-arrow{position:absolute;filter:drop-shadow(0 1px 3px rgba(0, 0, 0, 0.3))}.edge-label{position:absolute;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;opacity:0;transform-origin:center;transition:opacity 150ms ease}.edge-indicator:hover .edge-label{opacity:1}.remote-selection-box{position:absolute;top:0;left:0;border-width:2px;border-style:solid;pointer-events:none;will-change:transform, width, height;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, width var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, height var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out}"}},[513,"kritzel-awareness-cursors",{core:[16],showEdgeIndicators:[4,"show-edge-indicators"],edgeIndicatorPadding:[2,"edge-indicator-padding"],remoteCursors:[32],objectVersion:[32]}]);function l(){"undefined"!=typeof customElements&&["kritzel-awareness-cursors"].forEach((t=>{"kritzel-awareness-cursors"===t&&(customElements.get(o(t))||customElements.define(o(t),i))}))}export{i as K,l as d}
@@ -1 +1 @@
1
- import{p as e,H as t,h as a,d as r,t as i}from"./p-pebXO4LU.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}user;name;size=32;color;imageError=!1;retryCount=0;maxRetries=3;retryTimer;userChanged(){this.resetImageState()}profileImageUrlChanged(){this.resetImageState()}resetImageState(){this.imageError=!1,this.retryCount=0,clearTimeout(this.retryTimer)}disconnectedCallback(){clearTimeout(this.retryTimer)}getImageUrl(){return this.user?.profileImageUrl}getDisplayName(){return this.user?this.user.displayName??([this.user.firstName,this.user.lastName].filter(Boolean).join(" ")||this.user.email):this.name}getInitials(){const e=this.getDisplayName();if(!e)return;const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():t[0][0]?.toUpperCase()}getBackgroundColor(){return this.user?.color??this.color??this.generateColorFromName()}generateColorFromName(){const e=this.getDisplayName()||"";let t=0;for(let a=0;a<e.length;a++)t=e.charCodeAt(a)+((t<<5)-t);return`hsl(${Math.abs(t%360)}, 45%, 55%)`}handleImageError=()=>{if(this.retryCount<this.maxRetries){this.retryCount++;const e=1e3*Math.pow(2,this.retryCount-1);this.retryTimer=setTimeout((()=>{this.imageError=!1}),e)}this.imageError=!0};render(){const e=this.getImageUrl(),t=this.getInitials(),i=e&&!this.imageError,s=!i&&t,o=!i&&!s,l={width:`${this.size}px`,height:`${this.size}px`,fontSize:`${Math.round(.4*this.size)}px`};return a(r,{key:"9f2756b21f5cf12c770ecae3917b889e651180fd",style:l,class:{"has-image":!!i,"has-initials":!!s,"has-default":!!o},role:"img","aria-label":this.getDisplayName()||"User avatar"},i&&a("img",{key:"4d73aed6c3cb4832a661163e780b4950beb33ff3",src:e,alt:"",class:"avatar-image",ref:e=>{e&&(e.referrerPolicy="no-referrer",e.crossOrigin="anonymous")},onError:this.handleImageError}),s&&a("span",{key:"9e71b25b721d18e213da38ceead31ed5cf861bd8",class:"avatar-initials",style:{backgroundColor:this.getBackgroundColor()}},t),o&&a("span",{key:"f330747bda5862d9e2d19d9dda331bced2bdc6de",class:"avatar-default"},a("svg",{key:"4eefdc2e502669c193fbe54a20c57701f0ecc0ae",viewBox:"0 0 24 24",fill:"currentColor"},a("path",{key:"1788425bba4559c34d9f16069cfa32bc84cf1b17",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"}))))}static get watchers(){return{user:[{userChanged:0}],profileImageUrl:[{profileImageUrlChanged:0}]}}static get style(){return":host{display:inline-flex;justify-content:center;align-items:center;border-radius:50%;overflow:hidden;user-select:none;flex-shrink:0}.avatar-image{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}.avatar-initials{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;color:var(--kritzel-avatar-initials-color, #ffffff);font-weight:var(--kritzel-avatar-initials-font-weight, 500);font-family:var(--kritzel-avatar-initials-font-family, sans-serif);line-height:1}.avatar-default{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;background-color:var(--kritzel-avatar-default-background, #e0e0e0);color:var(--kritzel-avatar-default-color, #9e9e9e)}.avatar-default svg{width:60%;height:60%}:host(.has-image){border:var(--kritzel-avatar-border, none)}:host(.has-initials){border:var(--kritzel-avatar-border, none)}:host(.has-default){border:var(--kritzel-avatar-border, none)}"}},[513,"kritzel-avatar",{user:[16],name:[1],size:[2],color:[1],imageError:[32]},void 0,{user:[{userChanged:0}],profileImageUrl:[{profileImageUrlChanged:0}]}]);function o(){"undefined"!=typeof customElements&&["kritzel-avatar"].forEach((e=>{"kritzel-avatar"===e&&(customElements.get(i(e))||customElements.define(i(e),s))}))}export{s as K,o as d}
1
+ import{p as e,H as t,h as a,d as r,t as i}from"./p-pebXO4LU.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}user;name;size=32;color;imageError=!1;retryCount=0;maxRetries=3;retryTimer;userChanged(){this.resetImageState()}profileImageUrlChanged(){this.resetImageState()}resetImageState(){this.imageError=!1,this.retryCount=0,clearTimeout(this.retryTimer)}disconnectedCallback(){clearTimeout(this.retryTimer)}getImageUrl(){return this.user?.profileImageUrl}getDisplayName(){return this.user?this.user.displayName??([this.user.firstName,this.user.lastName].filter(Boolean).join(" ")||this.user.email):this.name}getInitials(){const e=this.getDisplayName();if(!e)return;const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():t[0][0]?.toUpperCase()}getBackgroundColor(){return this.user?.color??this.color??this.generateColorFromName()}generateColorFromName(){const e=this.getDisplayName()||"";let t=0;for(let a=0;a<e.length;a++)t=e.charCodeAt(a)+((t<<5)-t);return`hsl(${Math.abs(t%360)}, 45%, 55%)`}handleImageError=()=>{if(this.retryCount<this.maxRetries){this.retryCount++;const e=1e3*Math.pow(2,this.retryCount-1);this.retryTimer=setTimeout((()=>{this.imageError=!1}),e)}this.imageError=!0};render(){const e=this.getImageUrl(),t=this.getInitials(),i=e&&!this.imageError,s=!i&&t,o=!i&&!s,l={width:`${this.size}px`,height:`${this.size}px`,fontSize:`${Math.round(.4*this.size)}px`};return a(r,{key:"67c0c1f944b9c835d1685d2b743114a1b5a1f061",style:l,class:{"has-image":!!i,"has-initials":!!s,"has-default":!!o},role:"img","aria-label":this.getDisplayName()||"User avatar"},i&&a("img",{key:"d71ccd7449a27133bcf8cc01f3cd654cc9b00142",src:e,alt:"",class:"avatar-image",ref:e=>{e&&(e.referrerPolicy="no-referrer",e.crossOrigin="anonymous")},onError:this.handleImageError}),s&&a("span",{key:"818ad4a24d6489565dffc8c64b3d4e76b701444c",class:"avatar-initials",style:{backgroundColor:this.getBackgroundColor()}},t),o&&a("span",{key:"87af93fd968f3bf5b1f86295de6bd4b71c94120c",class:"avatar-default"},a("svg",{key:"3267317fe99fb8d90432e207516bb48f603c08ed",viewBox:"0 0 24 24",fill:"currentColor"},a("path",{key:"9e4e225f9a058a24f63b508f36969c8c429fccd6",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"}))))}static get watchers(){return{user:[{userChanged:0}],profileImageUrl:[{profileImageUrlChanged:0}]}}static get style(){return":host{display:inline-flex;justify-content:center;align-items:center;border-radius:50%;overflow:hidden;user-select:none;flex-shrink:0}.avatar-image{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}.avatar-initials{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;color:var(--kritzel-avatar-initials-color, #ffffff);font-weight:var(--kritzel-avatar-initials-font-weight, 500);font-family:var(--kritzel-avatar-initials-font-family, sans-serif);line-height:1}.avatar-default{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;background-color:var(--kritzel-avatar-default-background, #e0e0e0);color:var(--kritzel-avatar-default-color, #9e9e9e)}.avatar-default svg{width:60%;height:60%}:host(.has-image){border:var(--kritzel-avatar-border, none)}:host(.has-initials){border:var(--kritzel-avatar-border, none)}:host(.has-default){border:var(--kritzel-avatar-border, none)}"}},[513,"kritzel-avatar",{user:[16],name:[1],size:[2],color:[1],imageError:[32]},void 0,{user:[{userChanged:0}],profileImageUrl:[{profileImageUrlChanged:0}]}]);function o(){"undefined"!=typeof customElements&&["kritzel-avatar"].forEach((e=>{"kritzel-avatar"===e&&(customElements.get(i(e))||customElements.define(i(e),s))}))}export{s as K,o as d}
@@ -1 +1 @@
1
- import{p as t,H as e,h as s,d as i,t as o}from"./p-pebXO4LU.js";import{K as r}from"./p-D8W6LE-c.js";const n=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow()}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===r.Left&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[]),"touch"===t.pointerType&&1===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[])}handlePointerMove(t){if(!this.isLeftButtonDown)return;const e=[{x:t.clientX,y:t.clientY,timestamp:Date.now()},...this.cursorTrailPoints];this.cursorTrailPoints=e.length>this.MAX_TRAIL_POINTS?e.slice(0,this.MAX_TRAIL_POINTS):e}handlePointerUp(t){"mouse"===t.pointerType&&t.button===r.Left&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[]),"touch"===t.pointerType&&0===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[])}trailCleanupIntervalId;TRAIL_DURATION_MS=100;MAX_TRAIL_POINTS=50;componentDidLoad(){this.trailCleanupIntervalId=window.setInterval((()=>{const t=Date.now(),e=this.cursorTrailPoints.filter((e=>t-e.timestamp<this.TRAIL_DURATION_MS));e.length!==this.cursorTrailPoints.length&&(this.cursorTrailPoints=e)}),50)}disconnectedCallback(){this.trailCleanupIntervalId&&window.clearInterval(this.trailCleanupIntervalId)}render(){return s(i,{key:"603a385702512357af1fbcc778b29feecf8cf208"},this.cursorTrailPoints.length>1&&s("svg",{key:"5f7e4478599d482e624b77a752f601088b343f4e",class:"cursor-trail-svg",xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",pointerEvents:"none",opacity:"var(--kritzel-cursor-trail-opacity, 0.6)",zIndex:"9000"}},this.cursorTrailPoints.slice(1).map(((t,e)=>{const i=this.cursorTrailPoints[e],o=Date.now(),r=Math.max(0,Math.min(1,(o-t.timestamp)/this.TRAIL_DURATION_MS));if(r>=1)return null;const n=Math.max(2,15*(1-r));return s("line",{key:`trail-segment-${t.timestamp}`,x1:i.x.toString(),y1:i.y.toString(),x2:t.x.toString(),y2:t.y.toString(),stroke:"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))","stroke-width":n.toString(),"stroke-linecap":"round"})}))))}static get style(){return":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}"}},[513,"kritzel-cursor-trail",{core:[16],cursorTrailPoints:[32],isLeftButtonDown:[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]]);function h(){"undefined"!=typeof customElements&&["kritzel-cursor-trail"].forEach((t=>{"kritzel-cursor-trail"===t&&(customElements.get(o(t))||customElements.define(o(t),n))}))}export{n as K,h as d}
1
+ import{p as t,H as e,h as s,d as i,t as o}from"./p-pebXO4LU.js";import{K as r}from"./p-D8W6LE-c.js";const n=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow()}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===r.Left&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[]),"touch"===t.pointerType&&1===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[])}handlePointerMove(t){if(!this.isLeftButtonDown)return;const e=[{x:t.clientX,y:t.clientY,timestamp:Date.now()},...this.cursorTrailPoints];this.cursorTrailPoints=e.length>this.MAX_TRAIL_POINTS?e.slice(0,this.MAX_TRAIL_POINTS):e}handlePointerUp(t){"mouse"===t.pointerType&&t.button===r.Left&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[]),"touch"===t.pointerType&&0===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[])}trailCleanupIntervalId;TRAIL_DURATION_MS=100;MAX_TRAIL_POINTS=50;componentDidLoad(){this.trailCleanupIntervalId=window.setInterval((()=>{const t=Date.now(),e=this.cursorTrailPoints.filter((e=>t-e.timestamp<this.TRAIL_DURATION_MS));e.length!==this.cursorTrailPoints.length&&(this.cursorTrailPoints=e)}),50)}disconnectedCallback(){this.trailCleanupIntervalId&&window.clearInterval(this.trailCleanupIntervalId)}render(){return s(i,{key:"b6a9e84ce49dd72f353e0b87ae0bc02b0e5aeb1e"},this.cursorTrailPoints.length>1&&s("svg",{key:"238ea314a937d556c75ae080495c2e6559340c6f",class:"cursor-trail-svg",xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",pointerEvents:"none",opacity:"var(--kritzel-cursor-trail-opacity, 0.6)",zIndex:"9000"}},this.cursorTrailPoints.slice(1).map(((t,e)=>{const i=this.cursorTrailPoints[e],o=Date.now(),r=Math.max(0,Math.min(1,(o-t.timestamp)/this.TRAIL_DURATION_MS));if(r>=1)return null;const n=Math.max(2,15*(1-r));return s("line",{key:`trail-segment-${t.timestamp}`,x1:i.x.toString(),y1:i.y.toString(),x2:t.x.toString(),y2:t.y.toString(),stroke:"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))","stroke-width":n.toString(),"stroke-linecap":"round"})}))))}static get style(){return":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}"}},[513,"kritzel-cursor-trail",{core:[16],cursorTrailPoints:[32],isLeftButtonDown:[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]]);function a(){"undefined"!=typeof customElements&&["kritzel-cursor-trail"].forEach((t=>{"kritzel-cursor-trail"===t&&(customElements.get(o(t))||customElements.define(o(t),n))}))}export{n as K,a as d}
@@ -1 +1 @@
1
- import{p as e,H as s,c as t,h as r,d as i,t as o}from"./p-pebXO4LU.js";import{d as a}from"./p-1MGcXTLv.js";const l=e(class extends s{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.sizeChange=t(this,"sizeChange")}sizes=[4,6,8,12,16,24];selectedSize=null;sizeChange;handleSizeClick(e){this.selectedSize=e,this.sizeChange.emit(e)}render(){return r(i,{key:"2095245a9a1ae7781cf1030baaa93e6462b3c09e"},r("div",{key:"b83777024ef29d90f072a0ab002cf17a766825be",class:"size-grid"},this.sizes.map((e=>r("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===e},onClick:()=>this.handleSizeClick(e)},r("kritzel-color",{value:"var(--kritzel-global-text-primary)",size:e}))))))}static get style(){return":host{display:flex;align-items:flex-start;gap:0;padding:0;width:100%;box-sizing:border-box}.size-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center}.size-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}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}"}},[513,"kritzel-stroke-size",{sizes:[16],selectedSize:[1026,"selected-size"]}]);function c(){"undefined"!=typeof customElements&&["kritzel-stroke-size","kritzel-color"].forEach((e=>{switch(e){case"kritzel-stroke-size":customElements.get(o(e))||customElements.define(o(e),l);break;case"kritzel-color":customElements.get(o(e))||a()}}))}export{l as K,c as d}
1
+ import{p as e,H as s,c as t,h as r,d as i,t as o}from"./p-pebXO4LU.js";import{d as c}from"./p-C1uR_ZNW.js";const l=e(class extends s{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.sizeChange=t(this,"sizeChange")}sizes=[4,6,8,12,16,24];selectedSize=null;sizeChange;handleSizeClick(e){this.selectedSize=e,this.sizeChange.emit(e)}render(){return r(i,{key:"d7b77c754e247879f94b05f9c7b282d2aec22035"},r("div",{key:"1f1c95ccb4b8f5500d73e4eafa775aa1dd93d83c",class:"size-grid"},this.sizes.map((e=>r("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===e},onClick:()=>this.handleSizeClick(e)},r("kritzel-color",{value:"var(--kritzel-global-text-primary)",size:e}))))))}static get style(){return":host{display:flex;align-items:flex-start;gap:0;padding:0;width:100%;box-sizing:border-box}.size-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center}.size-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}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}"}},[513,"kritzel-stroke-size",{sizes:[16],selectedSize:[1026,"selected-size"]}]);function a(){"undefined"!=typeof customElements&&["kritzel-stroke-size","kritzel-color"].forEach((e=>{switch(e){case"kritzel-stroke-size":customElements.get(o(e))||customElements.define(o(e),l);break;case"kritzel-color":customElements.get(o(e))||c()}}))}export{l as K,a as d}
@@ -1 +1 @@
1
- import{p as e,H as t,c as i,h as n,d as r,t as o}from"./p-pebXO4LU.js";const a=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value;min=Number.MIN_SAFE_INTEGER;max=Number.MAX_SAFE_INTEGER;step=1;label="";placeholder="";valueChange;inputValue="";onValueChange(e){this.inputValue=this.shouldShowEmpty(e)?"":String(e)}componentWillLoad(){this.inputValue=this.shouldShowEmpty(this.value)?"":String(this.value)}shouldShowEmpty(e){return void 0===e||e===1/0||e===-1/0}normalizeValue(e){return isNaN(e)?this.value??0:Math.min(this.max,Math.max(this.min,e))}getDecimalPlaces(){const e=String(this.step),t=e.indexOf(".");return-1===t?0:e.length-t-1}roundToStep(e){const t=this.getDecimalPlaces(),i=Math.pow(10,t);return Math.round(e*i)/i}handleInput=e=>{this.inputValue=e.target.value};handleBlur=()=>{this.commitValue()};handleKeyDown=e=>{"Enter"===e.key&&this.commitValue()};handleInvalid=e=>{e.preventDefault()};commitValue(){if(""===this.inputValue.trim())return this.value=void 0,void this.valueChange.emit(void 0);const e=parseFloat(this.inputValue),t=this.normalizeValue(e);this.value=t,this.inputValue=String(t),this.valueChange.emit(t)}handleIncrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t+this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};handleDecrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t-this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};render(){return n(r,{key:"8f8984a3b29bad180be48c0d0cfdb269cbfb4c68"},n("div",{key:"94e161c3dd1a8d05270f4611a5ba19323f8d9657",class:"input-container"},this.label&&n("label",{key:"53d8ba3d7fd0fcc888aaa167754854cc3ab9c98b",class:"input-label"},this.label),n("div",{key:"4b0d15134fbdacf2a64213e73265adfb1e468525",class:"input-wrapper"},n("input",{key:"59f62088b3a85aa8dfa3d9b1c04f50c289e4ab67",type:"number",class:"numeric-input",title:"",min:this.min===Number.MIN_SAFE_INTEGER?void 0:this.min,max:this.max===Number.MAX_SAFE_INTEGER?void 0:this.max,step:this.step,value:this.inputValue,placeholder:this.placeholder,onInput:this.handleInput,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onInvalid:this.handleInvalid}),n("div",{key:"2fe741f055b0a05e1605096287bda58a84760363",class:"spinner-buttons"},n("button",{key:"0777d4483dc2ec8835a232d5da3f8fb8ce7acce2",type:"button",class:"spinner-button spinner-up",onClick:this.handleIncrement,tabIndex:-1,"aria-label":"Increase value"},n("svg",{key:"37b962d0fcae37f6e8cf552e7a36d015b377f3ff",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"d2916bc1cc40476418b9ee2e8c5c16172be90c2b",d:"M1 5L5 1L9 5",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"}))),n("button",{key:"c3f8c27fef2f95787d3a6e1a1d46c92f4bf20a8e",type:"button",class:"spinner-button spinner-down",onClick:this.handleDecrement,tabIndex:-1,"aria-label":"Decrease value"},n("svg",{key:"35658bd8d44502509b3b6bda3490962e180fb692",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"67672b3a12f4973570698a8bd0a8cb856c0d0f82",d:"M1 1L5 5L9 1",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"})))))))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-numeric-input-label-color, #333333)}.input-wrapper{display:flex;position:relative}.numeric-input{flex:1;padding:8px 36px 8px 12px;border:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:6px;font-size:14px;color:var(--kritzel-numeric-input-text-color, #333333);background-color:var(--kritzel-numeric-input-input-background, #ffffff);outline:none;transition:border-color 150ms ease;box-sizing:border-box}.numeric-input::-webkit-outer-spin-button,.numeric-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.numeric-input[type='number']{-moz-appearance:textfield}.numeric-input::selection{background-color:var(--kritzel-numeric-input-selection-background, #007AFF);color:var(--kritzel-numeric-input-selection-color, #ffffff)}.numeric-input:hover{border-color:var(--kritzel-numeric-input-hover-border-color, #cccccc)}.numeric-input:focus{border-color:var(--kritzel-numeric-input-focus-border-color, #0066ff);border-width:2px;padding:7px 35px 7px 11px}.spinner-buttons{position:absolute;right:1px;top:1px;bottom:1px;display:flex;flex-direction:column;border-left:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:0 5px 5px 0;overflow:hidden}.spinner-button{flex:1;display:flex;align-items:center;justify-content:center;width:24px;padding:0;border:none;background-color:var(--kritzel-numeric-input-spinner-background, #f5f5f5);color:var(--kritzel-numeric-input-spinner-color, #666666);cursor:pointer;transition:background-color 150ms ease}.spinner-button:hover{background-color:var(--kritzel-numeric-input-spinner-hover-background, #ebebeb)}.spinner-button:active{background-color:var(--kritzel-numeric-input-spinner-active-background, #dddddd)}.spinner-up{border-bottom:1px solid var(--kritzel-numeric-input-border-color, #ebebeb)}.spinner-icon{width:10px;height:6px}"}},[513,"kritzel-numeric-input",{value:[1026],min:[2],max:[2],step:[2],label:[1],placeholder:[1],inputValue:[32]},void 0,{value:[{onValueChange:0}]}]);function s(){"undefined"!=typeof customElements&&["kritzel-numeric-input"].forEach((e=>{"kritzel-numeric-input"===e&&(customElements.get(o(e))||customElements.define(o(e),a))}))}export{a as K,s as d}
1
+ import{p as e,H as t,c as i,h as n,d as r,t as o}from"./p-pebXO4LU.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value;min=Number.MIN_SAFE_INTEGER;max=Number.MAX_SAFE_INTEGER;step=1;label="";placeholder="";valueChange;inputValue="";onValueChange(e){this.inputValue=this.shouldShowEmpty(e)?"":String(e)}componentWillLoad(){this.inputValue=this.shouldShowEmpty(this.value)?"":String(this.value)}shouldShowEmpty(e){return void 0===e||e===1/0||e===-1/0}normalizeValue(e){return isNaN(e)?this.value??0:Math.min(this.max,Math.max(this.min,e))}getDecimalPlaces(){const e=String(this.step),t=e.indexOf(".");return-1===t?0:e.length-t-1}roundToStep(e){const t=this.getDecimalPlaces(),i=Math.pow(10,t);return Math.round(e*i)/i}handleInput=e=>{this.inputValue=e.target.value};handleBlur=()=>{this.commitValue()};handleKeyDown=e=>{"Enter"===e.key&&this.commitValue()};handleInvalid=e=>{e.preventDefault()};commitValue(){if(""===this.inputValue.trim())return this.value=void 0,void this.valueChange.emit(void 0);const e=parseFloat(this.inputValue),t=this.normalizeValue(e);this.value=t,this.inputValue=String(t),this.valueChange.emit(t)}handleIncrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t+this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};handleDecrement=()=>{const e=parseFloat(this.inputValue),t=isNaN(e)?this.value??0:e,i=this.normalizeValue(this.roundToStep(t-this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};render(){return n(r,{key:"9f5b165e9c4db1cc6724020e12d18beb0a70ad11"},n("div",{key:"e5e3d790f9d9bd7bb2d25367bb7d7d86c731091f",class:"input-container"},this.label&&n("label",{key:"0ee62b45cbfe34405a888d0d61af472936b0a453",class:"input-label"},this.label),n("div",{key:"49bbdca156346c1e0dd7b08d6790ae5829fa6d1f",class:"input-wrapper"},n("input",{key:"986e05275c90bee119ff3c803d90ba16a0005f8d",type:"number",class:"numeric-input",title:"",min:this.min===Number.MIN_SAFE_INTEGER?void 0:this.min,max:this.max===Number.MAX_SAFE_INTEGER?void 0:this.max,step:this.step,value:this.inputValue,placeholder:this.placeholder,onInput:this.handleInput,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onInvalid:this.handleInvalid}),n("div",{key:"4c468fdca0018390bdc57f1b2fd7fa2e68b09f98",class:"spinner-buttons"},n("button",{key:"7b433424c6817049b6229e249d715ebd43dfe350",type:"button",class:"spinner-button spinner-up",onClick:this.handleIncrement,tabIndex:-1,"aria-label":"Increase value"},n("svg",{key:"666b0c184d00d000a1fa97d4bdda3a9a6b0d299d",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"223f829a0b808e9fdde656294729121e2c8ae0d3",d:"M1 5L5 1L9 5",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"}))),n("button",{key:"40f72b01e59b98c7bca4952c94eeb631fe3d17a1",type:"button",class:"spinner-button spinner-down",onClick:this.handleDecrement,tabIndex:-1,"aria-label":"Decrease value"},n("svg",{key:"5f304877010fc9fa1c7559270b5105659b2f4863",viewBox:"0 0 10 6",class:"spinner-icon"},n("path",{key:"e31b6f1edb583eebbf608fc5360c53d49d4d2d5c",d:"M1 1L5 5L9 1",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"})))))))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-numeric-input-label-color, #333333)}.input-wrapper{display:flex;position:relative}.numeric-input{flex:1;padding:8px 36px 8px 12px;border:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:6px;font-size:14px;color:var(--kritzel-numeric-input-text-color, #333333);background-color:var(--kritzel-numeric-input-input-background, #ffffff);outline:none;transition:border-color 150ms ease;box-sizing:border-box}.numeric-input::-webkit-outer-spin-button,.numeric-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.numeric-input[type='number']{-moz-appearance:textfield}.numeric-input::selection{background-color:var(--kritzel-numeric-input-selection-background, #007AFF);color:var(--kritzel-numeric-input-selection-color, #ffffff)}.numeric-input:hover{border-color:var(--kritzel-numeric-input-hover-border-color, #cccccc)}.numeric-input:focus{border-color:var(--kritzel-numeric-input-focus-border-color, #0066ff);border-width:2px;padding:7px 35px 7px 11px}.spinner-buttons{position:absolute;right:1px;top:1px;bottom:1px;display:flex;flex-direction:column;border-left:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:0 5px 5px 0;overflow:hidden}.spinner-button{flex:1;display:flex;align-items:center;justify-content:center;width:24px;padding:0;border:none;background-color:var(--kritzel-numeric-input-spinner-background, #f5f5f5);color:var(--kritzel-numeric-input-spinner-color, #666666);cursor:pointer;transition:background-color 150ms ease}.spinner-button:hover{background-color:var(--kritzel-numeric-input-spinner-hover-background, #ebebeb)}.spinner-button:active{background-color:var(--kritzel-numeric-input-spinner-active-background, #dddddd)}.spinner-up{border-bottom:1px solid var(--kritzel-numeric-input-border-color, #ebebeb)}.spinner-icon{width:10px;height:6px}"}},[513,"kritzel-numeric-input",{value:[1026],min:[2],max:[2],step:[2],label:[1],placeholder:[1],inputValue:[32]},void 0,{value:[{onValueChange:0}]}]);function a(){"undefined"!=typeof customElements&&["kritzel-numeric-input"].forEach((e=>{"kritzel-numeric-input"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as K,a as d}
@@ -1 +1 @@
1
- import{p as e,H as r,h as t,d as i,t as o}from"./p-pebXO4LU.js";import{a as s}from"./p-CjazGGq3.js";const c=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}value;theme;size=24;resolveColor(){return this.value?"string"==typeof this.value?this.value:s.resolveThemeColor(this.value,this.theme):""}isLightColor(e){if(!e)return!1;let r=0,t=0,i=0,o=e.startsWith("#")?e.slice(1):e;if(3===o.length)r=parseInt(o[0]+o[0],16),t=parseInt(o[1]+o[1],16),i=parseInt(o[2]+o[2],16);else{if(6!==o.length)return!1;r=parseInt(o.substring(0,2),16),t=parseInt(o.substring(2,4),16),i=parseInt(o.substring(4,6),16)}return!(isNaN(r)||isNaN(t)||isNaN(i))&&.299*r+.587*t+.114*i>220}render(){const e=this.resolveColor(),r=this.isLightColor(e);return t(i,{key:"a95e6bc89330b9a5baecf53b5fa3e54316ad153d"},t("div",{key:"e19d5fc8f59dce48f815a382c358a2068b05f8c3",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},t("div",{key:"61678e783b6ea5890fc0eb74f37592b94b09f59e",class:{"color-circle":!0,white:r},style:{backgroundColor:e,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}static get style(){return":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient( var(--kritzel-checkerboard-color-dark, #ccc) 0% 25%, var(--kritzel-checkerboard-color-light, #fff) 0% 50% ) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}"}},[513,"kritzel-color",{value:[1],theme:[1],size:[2]}]);function l(){"undefined"!=typeof customElements&&["kritzel-color"].forEach((e=>{"kritzel-color"===e&&(customElements.get(o(e))||customElements.define(o(e),c))}))}export{c as K,l as d}
1
+ import{p as e,H as r,h as t,d as i,t as o}from"./p-pebXO4LU.js";import{a as s}from"./p-CjazGGq3.js";const c=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}value;theme;size=24;resolveColor(){return this.value?"string"==typeof this.value?this.value:s.resolveThemeColor(this.value,this.theme):""}isLightColor(e){if(!e)return!1;let r=0,t=0,i=0,o=e.startsWith("#")?e.slice(1):e;if(3===o.length)r=parseInt(o[0]+o[0],16),t=parseInt(o[1]+o[1],16),i=parseInt(o[2]+o[2],16);else{if(6!==o.length)return!1;r=parseInt(o.substring(0,2),16),t=parseInt(o.substring(2,4),16),i=parseInt(o.substring(4,6),16)}return!(isNaN(r)||isNaN(t)||isNaN(i))&&.299*r+.587*t+.114*i>220}render(){const e=this.resolveColor(),r=this.isLightColor(e);return t(i,{key:"7e36e97c383cff73b3146279e971526dd5c7f0f7"},t("div",{key:"e8ad3ca5e9771c51a96a846627ea20c75212ceeb",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},t("div",{key:"9269087c7694604d70d50d846cedb6ce022373cd",class:{"color-circle":!0,white:r},style:{backgroundColor:e,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}static get style(){return":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient( var(--kritzel-checkerboard-color-dark, #ccc) 0% 25%, var(--kritzel-checkerboard-color-light, #fff) 0% 50% ) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}"}},[513,"kritzel-color",{value:[1],theme:[1],size:[2]}]);function l(){"undefined"!=typeof customElements&&["kritzel-color"].forEach((e=>{"kritzel-color"===e&&(customElements.get(o(e))||customElements.define(o(e),c))}))}export{c as K,l as d}
@@ -1 +1 @@
1
- import{p as e,H as t,c as i,h as r,d as o,t as a}from"./p-pebXO4LU.js";const l=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value="";label="";placeholder="";suffix="";type="text";disabled=!1;valueChange;inputValue="";onValueChange(e){this.inputValue=e??""}componentWillLoad(){this.inputValue=this.value??""}handleInput=e=>{const t=e.target;this.inputValue=t.value,this.value=t.value,this.valueChange.emit(t.value)};render(){return r(o,{key:"1b151bb26c9398c5c29e3d3367cb6ba21e6864fe"},r("div",{key:"d2ba0fa75ad80e357d6684928bd48aeaa102a706",class:"input-container"},this.label&&r("label",{key:"47ed17ec74d26b29fc7857780d070d6cfac157f1",class:"input-label"},this.label),r("div",{key:"bfcbe25bf4b876e7f5466a2f48dd63309fb310a5",class:{"input-wrapper":!0,"has-suffix":!!this.suffix}},r("input",{key:"ef58442a0bd2fee845a9d35ddc9d04b357d93940",type:this.type,class:"text-input",value:this.inputValue,placeholder:this.placeholder,disabled:this.disabled,onInput:this.handleInput}),this.suffix&&r("span",{key:"8b6f73557fa2c44cf0ba7720685306e29df44179",class:"input-suffix"},this.suffix))))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-text-input-label-color, #333333)}.input-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-text-input-border-color, #ebebeb);border-radius:6px;overflow:hidden;background:var(--kritzel-text-input-background, #ffffff);transition:border-color 150ms ease}.input-wrapper:hover:not(:focus-within){border-color:var(--kritzel-text-input-hover-border-color, #cccccc)}.input-wrapper:focus-within{border-color:var(--kritzel-text-input-focus-border-color, #007AFF);border-width:2px}.text-input{flex:1;padding:10px 12px;border:none;outline:none;font-size:14px;font-family:inherit;background:transparent;color:var(--kritzel-text-input-text-color, #333333);box-sizing:border-box}.text-input::placeholder{color:var(--kritzel-text-input-placeholder-color, #999999)}.text-input::selection{background-color:var(--kritzel-text-input-selection-background, #007AFF);color:var(--kritzel-text-input-selection-color, #ffffff)}.text-input:disabled{cursor:not-allowed;opacity:0.6}.input-suffix{padding:10px 12px;background:var(--kritzel-text-input-suffix-background, #f5f5f5);color:var(--kritzel-text-input-suffix-color, #666666);font-size:14px;border-left:1px solid var(--kritzel-text-input-border-color, #ebebeb);flex-shrink:0}"}},[513,"kritzel-input",{value:[1025],label:[1],placeholder:[1],suffix:[1],type:[1],disabled:[4],inputValue:[32]},void 0,{value:[{onValueChange:0}]}]);function n(){"undefined"!=typeof customElements&&["kritzel-input"].forEach((e=>{"kritzel-input"===e&&(customElements.get(a(e))||customElements.define(a(e),l))}))}export{l as K,n as d}
1
+ import{p as e,H as t,c as i,h as r,d as o,t as a}from"./p-pebXO4LU.js";const l=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value="";label="";placeholder="";suffix="";type="text";disabled=!1;valueChange;inputValue="";onValueChange(e){this.inputValue=e??""}componentWillLoad(){this.inputValue=this.value??""}handleInput=e=>{const t=e.target;this.inputValue=t.value,this.value=t.value,this.valueChange.emit(t.value)};render(){return r(o,{key:"5cfc93853afd27dd24ff9709dcd277571ae4d0a1"},r("div",{key:"fa0a43610b98ffbc30bf9485a4f8730b80f74ab7",class:"input-container"},this.label&&r("label",{key:"151346732ef4a00a1ea78bbc19ac56a94488dfc4",class:"input-label"},this.label),r("div",{key:"79b28f6f45cdacf7d122988bb4c844c929544cce",class:{"input-wrapper":!0,"has-suffix":!!this.suffix}},r("input",{key:"e22abd0e10ee231b2e66f50085693769584a1254",type:this.type,class:"text-input",value:this.inputValue,placeholder:this.placeholder,disabled:this.disabled,onInput:this.handleInput}),this.suffix&&r("span",{key:"5c96287d24dc28f4ac321f108a356527194f4e81",class:"input-suffix"},this.suffix))))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-text-input-label-color, #333333)}.input-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-text-input-border-color, #ebebeb);border-radius:6px;overflow:hidden;background:var(--kritzel-text-input-background, #ffffff);transition:border-color 150ms ease}.input-wrapper:hover:not(:focus-within){border-color:var(--kritzel-text-input-hover-border-color, #cccccc)}.input-wrapper:focus-within{border-color:var(--kritzel-text-input-focus-border-color, #007AFF);border-width:2px}.text-input{flex:1;padding:10px 12px;border:none;outline:none;font-size:14px;font-family:inherit;background:transparent;color:var(--kritzel-text-input-text-color, #333333);box-sizing:border-box}.text-input::placeholder{color:var(--kritzel-text-input-placeholder-color, #999999)}.text-input::selection{background-color:var(--kritzel-text-input-selection-background, #007AFF);color:var(--kritzel-text-input-selection-color, #ffffff)}.text-input:disabled{cursor:not-allowed;opacity:0.6}.input-suffix{padding:10px 12px;background:var(--kritzel-text-input-suffix-background, #f5f5f5);color:var(--kritzel-text-input-suffix-color, #666666);font-size:14px;border-left:1px solid var(--kritzel-text-input-border-color, #ebebeb);flex-shrink:0}"}},[513,"kritzel-input",{value:[1025],label:[1],placeholder:[1],suffix:[1],type:[1],disabled:[4],inputValue:[32]},void 0,{value:[{onValueChange:0}]}]);function n(){"undefined"!=typeof customElements&&["kritzel-input"].forEach((e=>{"kritzel-input"===e&&(customElements.get(a(e))||customElements.define(a(e),l))}))}export{l as K,n as d}
@@ -1 +1 @@
1
- import{p as e,H as r,c as i,h as t,d as a,t as o}from"./p-pebXO4LU.js";const s=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value=1;min=0;max=1;step=.01;previewColor="#000000";valueChange;handleInput(e){const r=parseFloat(e.target.value);this.value=r,this.valueChange.emit(r)}getPercentage(){return Math.round(100*this.value)}render(){const e=this.getPercentage();return t(a,{key:"01ab026ae319eaf7bebdd74f5d06e79be4871630"},t("div",{key:"67a5dec5570d7f16162fb5d43f18e020f642df68",class:"opacity-container"},t("div",{key:"87362a95645b164331c58c46add78e1497e27ba1",class:"slider-wrapper"},t("input",{key:"0ec74a8e864c7ac47a5ac4eea4d1c960d10214d4",type:"range",class:"opacity-slider",min:this.min,max:this.max,step:this.step,value:this.value,onInput:e=>this.handleInput(e),style:{"--slider-progress":`${e}%`}}))))}static get style(){return":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))}"}},[513,"kritzel-opacity-slider",{value:[1026],min:[2],max:[2],step:[2],previewColor:[1,"preview-color"]}]);function l(){"undefined"!=typeof customElements&&["kritzel-opacity-slider"].forEach((e=>{"kritzel-opacity-slider"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as K,l as d}
1
+ import{p as e,H as r,c as i,h as t,d as a,t as o}from"./p-pebXO4LU.js";const s=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange")}value=1;min=0;max=1;step=.01;previewColor="#000000";valueChange;handleInput(e){const r=parseFloat(e.target.value);this.value=r,this.valueChange.emit(r)}getPercentage(){return Math.round(100*this.value)}render(){const e=this.getPercentage();return t(a,{key:"a0307b2fc97221881f0e2a21035427fcf0c5fdb3"},t("div",{key:"a77c6e973f92671daa3a8299b51d70b2d2fd98db",class:"opacity-container"},t("div",{key:"c5df7c6fe6db3aa9a8430ea7580d6cc7a23666b8",class:"slider-wrapper"},t("input",{key:"6d3cae027e5a9b391f36ede911dedb201630d525",type:"range",class:"opacity-slider",min:this.min,max:this.max,step:this.step,value:this.value,onInput:e=>this.handleInput(e),style:{"--slider-progress":`${e}%`}}))))}static get style(){return":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))}"}},[513,"kritzel-opacity-slider",{value:[1026],min:[2],max:[2],step:[2],previewColor:[1,"preview-color"]}]);function l(){"undefined"!=typeof customElements&&["kritzel-opacity-slider"].forEach((e=>{"kritzel-opacity-slider"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as K,l as d}
@@ -1 +1 @@
1
- import{p as e,H as t,c as i,h as n,d as o,t as s}from"./p-pebXO4LU.js";import{d as r}from"./p-CHmi1QWx.js";const a=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.actionSelected=i(this,"actionSelected"),this.close=i(this,"close")}get host(){return this}items;onItemsChanged(){this.updateMenuItems()}objects;actionSelected;close;processedItems=[];openSubmenuIndex=null;submenuPosition="right";submenuTimer=null;submenuRefs=new Map;menuItemWrapperRefs=new Map;handleOutsideClick(e){e.composedPath().includes(this.host)||this.close.emit()}componentWillLoad(){this.updateMenuItems()}componentDidLoad(){this.adjustPositionToViewport()}componentDidUpdate(){this.adjustPositionToViewport(),this.adjustSubmenuPosition()}disconnectedCallback(){this.submenuTimer&&clearTimeout(this.submenuTimer)}adjustPositionToViewport(){const e=this.host.getBoundingClientRect(),t=window.innerWidth,i=window.innerHeight,n=parseFloat(this.host.style.left)||0,o=parseFloat(this.host.style.top)||0;let s=n,r=o;e.right>t-8&&(s=t-e.width-8),e.bottom>i-8&&(r=i-e.height-8),s<8&&(s=8),r<8&&(r=8),s===n&&r===o||(this.host.style.left=`${s}px`,this.host.style.top=`${r}px`)}adjustSubmenuPosition(){if(null===this.openSubmenuIndex)return;const e=this.submenuRefs.get(this.openSubmenuIndex);if(!e)return;const t=e.getBoundingClientRect(),i=window.innerHeight;e.style.top=t.bottom>i-8?-(t.bottom-(i-8))+"px":"0px"}handleItemClick(e,t,i){t||i||e.action&&this.actionSelected.emit(e)}handleItemMouseEnter(e,t){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null),this.submenuTimer=t?setTimeout((()=>{const t=this.menuItemWrapperRefs.get(e);if(t){const e=t.getBoundingClientRect(),i=window.innerWidth;this.submenuPosition=e.right+160>i-8?"left":"right"}else this.submenuPosition="right";this.openSubmenuIndex=e}),150):setTimeout((()=>{this.openSubmenuIndex=null}),150)}handleSubmenuMouseEnter(){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null)}handleSubmenuMouseLeave(){this.submenuTimer=setTimeout((()=>{this.openSubmenuIndex=null}),150)}async updateMenuItems(){this.processedItems=await this.processItems(this.items)}async processItems(e){const t=[];for(const i of e)if(await this.evaluateProperty(i.visible,!0)){const e=await this.evaluateProperty(i.disabled,!1);let n;i.children&&i.children.length>0&&(n=await this.processItems(i.children)),t.push({item:i,isDisabled:e,processedChildren:n})}return t}async evaluateProperty(e,t){return"boolean"==typeof e?e:"function"==typeof e?await Promise.resolve(e(null,this.objects)):t}renderSubmenu(e,t){return n("div",{class:{"submenu-container":!0,"position-left":"left"===this.submenuPosition},ref:e=>e&&this.submenuRefs.set(t,e),onMouseEnter:()=>this.handleSubmenuMouseEnter(),onMouseLeave:()=>this.handleSubmenuMouseLeave()},e.map((({item:t,isDisabled:i,processedChildren:o},s)=>{const r=s>0?e[s-1].item:null,a=o&&o.length>0;return[r&&r.group!==t.group&&n("div",{class:"menu-divider",key:`submenu-divider-${s}`}),n("button",{key:`submenu-${t.label}-${s}`,class:{"menu-item":!0,disabled:i,"has-children":a},onClick:()=>this.handleItemClick(t,i,a),disabled:i},t.icon&&n("kritzel-icon",{name:t.icon,size:16}),n("span",{class:"label"},t.label),a&&n("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"}))]})))}render(){return n(o,{key:"e1d2c078548eda801784424fb9ba77a8fc905a90"},n("div",{key:"39cba641f90e2ad6d30553974880cdedd7fe3877",class:"menu-container"},this.processedItems.map((({item:e,isDisabled:t,processedChildren:i},o)=>{const s=o>0?this.processedItems[o-1].item:null,r=i&&i.length>0,a=this.openSubmenuIndex===o;return[s&&s.group!==e.group&&n("div",{class:"menu-divider",key:`divider-${o}`}),n("div",{class:"menu-item-wrapper",ref:e=>e&&this.menuItemWrapperRefs.set(o,e),onMouseEnter:()=>this.handleItemMouseEnter(o,r)},n("button",{key:`${e.label}-${o}`,class:{"menu-item":!0,disabled:t,"has-children":r,"submenu-open":a},onClick:()=>this.handleItemClick(e,t,r),disabled:t&&!r},e.icon&&n("kritzel-icon",{name:e.icon,size:16}),n("span",{class:"label"},e.label),r&&n("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"})),r&&a&&this.renderSubmenu(i,o))]}))))}static get watchers(){return{items:[{onItemsChanged:0}]}}static get style(){return":host{display:block}.menu-container{display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:var(--kritzel-context-menu-min-width, 140px)}.menu-item-wrapper{position:relative}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent;width:100%}.menu-item:not(.disabled):hover,.menu-item.submenu-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item.has-children.disabled{cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-context-menu-item-color, #333333)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.has-children.disabled kritzel-icon{opacity:0.8}.label{flex-grow:1}.submenu-arrow{margin-left:auto;opacity:0.5}.menu-divider{height:1px;background-color:var(--kritzel-context-menu-divider-color, rgba(0, 0, 0, 0.1));margin:var(--kritzel-context-menu-divider-margin, 4px 8px)}.submenu-container{position:absolute;top:0;left:100%;margin-left:4px;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:120px}.submenu-container.position-left{left:auto;right:100%;margin-left:0;margin-right:4px}"}},[513,"kritzel-context-menu",{items:[16],objects:[16],processedItems:[32],openSubmenuIndex:[32],submenuPosition:[32]},[[9,"pointerdown","handleOutsideClick"]],{items:[{onItemsChanged:0}]}]);function l(){"undefined"!=typeof customElements&&["kritzel-context-menu","kritzel-icon"].forEach((e=>{switch(e){case"kritzel-context-menu":customElements.get(s(e))||customElements.define(s(e),a);break;case"kritzel-icon":customElements.get(s(e))||r()}}))}export{a as K,l as d}
1
+ import{p as e,H as t,c as i,h as n,d as o,t as s}from"./p-pebXO4LU.js";import{d as r}from"./p-CHmi1QWx.js";const a=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.actionSelected=i(this,"actionSelected"),this.close=i(this,"close")}get host(){return this}items;onItemsChanged(){this.updateMenuItems()}objects;actionSelected;close;processedItems=[];openSubmenuIndex=null;submenuPosition="right";submenuTimer=null;submenuRefs=new Map;menuItemWrapperRefs=new Map;handleOutsideClick(e){e.composedPath().includes(this.host)||this.close.emit()}componentWillLoad(){this.updateMenuItems()}componentDidLoad(){this.adjustPositionToViewport()}componentDidUpdate(){this.adjustPositionToViewport(),this.adjustSubmenuPosition()}disconnectedCallback(){this.submenuTimer&&clearTimeout(this.submenuTimer)}adjustPositionToViewport(){const e=this.host.getBoundingClientRect(),t=window.innerWidth,i=window.innerHeight,n=parseFloat(this.host.style.left)||0,o=parseFloat(this.host.style.top)||0;let s=n,r=o;e.right>t-8&&(s=t-e.width-8),e.bottom>i-8&&(r=i-e.height-8),s<8&&(s=8),r<8&&(r=8),s===n&&r===o||(this.host.style.left=`${s}px`,this.host.style.top=`${r}px`)}adjustSubmenuPosition(){if(null===this.openSubmenuIndex)return;const e=this.submenuRefs.get(this.openSubmenuIndex);if(!e)return;const t=e.getBoundingClientRect(),i=window.innerHeight;e.style.top=t.bottom>i-8?-(t.bottom-(i-8))+"px":"0px"}handleItemClick(e,t,i){t||i||e.action&&this.actionSelected.emit(e)}handleItemMouseEnter(e,t){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null),this.submenuTimer=t?setTimeout((()=>{const t=this.menuItemWrapperRefs.get(e);if(t){const e=t.getBoundingClientRect(),i=window.innerWidth;this.submenuPosition=e.right+160>i-8?"left":"right"}else this.submenuPosition="right";this.openSubmenuIndex=e}),150):setTimeout((()=>{this.openSubmenuIndex=null}),150)}handleSubmenuMouseEnter(){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null)}handleSubmenuMouseLeave(){this.submenuTimer=setTimeout((()=>{this.openSubmenuIndex=null}),150)}async updateMenuItems(){this.processedItems=await this.processItems(this.items)}async processItems(e){const t=[];for(const i of e)if(await this.evaluateProperty(i.visible,!0)){const e=await this.evaluateProperty(i.disabled,!1);let n;i.children&&i.children.length>0&&(n=await this.processItems(i.children)),t.push({item:i,isDisabled:e,processedChildren:n})}return t}async evaluateProperty(e,t){return"boolean"==typeof e?e:"function"==typeof e?await Promise.resolve(e(null,this.objects)):t}renderSubmenu(e,t){return n("div",{class:{"submenu-container":!0,"position-left":"left"===this.submenuPosition},ref:e=>e&&this.submenuRefs.set(t,e),onMouseEnter:()=>this.handleSubmenuMouseEnter(),onMouseLeave:()=>this.handleSubmenuMouseLeave()},e.map((({item:t,isDisabled:i,processedChildren:o},s)=>{const r=s>0?e[s-1].item:null,a=o&&o.length>0;return[r&&r.group!==t.group&&n("div",{class:"menu-divider",key:`submenu-divider-${s}`}),n("button",{key:`submenu-${t.label}-${s}`,class:{"menu-item":!0,disabled:i,"has-children":a},onClick:()=>this.handleItemClick(t,i,a),disabled:i},t.icon&&n("kritzel-icon",{name:t.icon,size:16}),n("span",{class:"label"},t.label),a&&n("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"}))]})))}render(){return n(o,{key:"11f279a1ef329569988b1c1ce6311a1f81695ebe"},n("div",{key:"e0aa8ab22df018ae0a2b1c22513575d67099d35d",class:"menu-container"},this.processedItems.map((({item:e,isDisabled:t,processedChildren:i},o)=>{const s=o>0?this.processedItems[o-1].item:null,r=i&&i.length>0,a=this.openSubmenuIndex===o;return[s&&s.group!==e.group&&n("div",{class:"menu-divider",key:`divider-${o}`}),n("div",{class:"menu-item-wrapper",ref:e=>e&&this.menuItemWrapperRefs.set(o,e),onMouseEnter:()=>this.handleItemMouseEnter(o,r)},n("button",{key:`${e.label}-${o}`,class:{"menu-item":!0,disabled:t,"has-children":r,"submenu-open":a},onClick:()=>this.handleItemClick(e,t,r),disabled:t&&!r},e.icon&&n("kritzel-icon",{name:e.icon,size:16}),n("span",{class:"label"},e.label),r&&n("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"})),r&&a&&this.renderSubmenu(i,o))]}))))}static get watchers(){return{items:[{onItemsChanged:0}]}}static get style(){return":host{display:block}.menu-container{display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:var(--kritzel-context-menu-min-width, 140px)}.menu-item-wrapper{position:relative}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent;width:100%}.menu-item:not(.disabled):hover,.menu-item.submenu-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item.has-children.disabled{cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-context-menu-item-color, #333333)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.has-children.disabled kritzel-icon{opacity:0.8}.label{flex-grow:1}.submenu-arrow{margin-left:auto;opacity:0.5}.menu-divider{height:1px;background-color:var(--kritzel-context-menu-divider-color, rgba(0, 0, 0, 0.1));margin:var(--kritzel-context-menu-divider-margin, 4px 8px)}.submenu-container{position:absolute;top:0;left:100%;margin-left:4px;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:120px}.submenu-container.position-left{left:auto;right:100%;margin-left:0;margin-right:4px}"}},[513,"kritzel-context-menu",{items:[16],objects:[16],processedItems:[32],openSubmenuIndex:[32],submenuPosition:[32]},[[9,"pointerdown","handleOutsideClick"]],{items:[{onItemsChanged:0}]}]);function l(){"undefined"!=typeof customElements&&["kritzel-context-menu","kritzel-icon"].forEach((e=>{switch(e){case"kritzel-context-menu":customElements.get(s(e))||customElements.define(s(e),a);break;case"kritzel-icon":customElements.get(s(e))||r()}}))}export{a as K,l as d}