kritzel-stencil 0.4.4 → 0.4.6

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 (128) hide show
  1. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +79 -13
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/stencil.cjs.js +1 -1
  4. package/dist/collection/classes/core/viewport.class.js +14 -1
  5. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +48 -8
  6. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +84 -3
  7. package/dist/collection/constants/version.js +1 -1
  8. package/dist/components/index.js +1226 -1
  9. package/dist/components/kritzel-active-users.js +6 -1
  10. package/dist/components/kritzel-avatar.js +6 -1
  11. package/dist/components/kritzel-awareness-cursors.js +6 -1
  12. package/dist/components/kritzel-back-to-content.js +6 -1
  13. package/dist/components/kritzel-brush-style.js +64 -1
  14. package/dist/components/kritzel-button.js +6 -1
  15. package/dist/components/kritzel-color-palette.js +6 -1
  16. package/dist/components/kritzel-color.js +6 -1
  17. package/dist/components/kritzel-context-menu.js +6 -1
  18. package/dist/components/kritzel-controls.js +6 -1
  19. package/dist/components/kritzel-current-user-dialog.js +6 -1
  20. package/dist/components/kritzel-current-user.js +6 -1
  21. package/dist/components/kritzel-cursor-trail.js +6 -1
  22. package/dist/components/kritzel-dialog.js +6 -1
  23. package/dist/components/kritzel-dropdown.js +6 -1
  24. package/dist/components/kritzel-editor.js +4404 -1
  25. package/dist/components/kritzel-engine.js +6 -1
  26. package/dist/components/kritzel-export.js +6 -1
  27. package/dist/components/kritzel-font-family.js +6 -1
  28. package/dist/components/kritzel-font-size.js +6 -1
  29. package/dist/components/kritzel-font.js +6 -1
  30. package/dist/components/kritzel-icon.js +6 -1
  31. package/dist/components/kritzel-input.js +6 -1
  32. package/dist/components/kritzel-line-endings.js +6 -1
  33. package/dist/components/kritzel-loading-overlay.js +6 -1
  34. package/dist/components/kritzel-login-dialog.js +6 -1
  35. package/dist/components/kritzel-master-detail.js +6 -1
  36. package/dist/components/kritzel-menu-item.js +6 -1
  37. package/dist/components/kritzel-menu.js +6 -1
  38. package/dist/components/kritzel-more-menu.js +6 -1
  39. package/dist/components/kritzel-notification-card.js +6 -1
  40. package/dist/components/kritzel-numeric-input.js +6 -1
  41. package/dist/components/kritzel-opacity-slider.js +6 -1
  42. package/dist/components/kritzel-pill-tabs.js +6 -1
  43. package/dist/components/kritzel-portal.js +6 -1
  44. package/dist/components/kritzel-settings.js +6 -1
  45. package/dist/components/kritzel-shape-fill.js +6 -1
  46. package/dist/components/kritzel-share-dialog.js +6 -1
  47. package/dist/components/kritzel-slide-toggle.js +6 -1
  48. package/dist/components/kritzel-split-button.js +6 -1
  49. package/dist/components/kritzel-stroke-size.js +6 -1
  50. package/dist/components/kritzel-sync-indicator.js +6 -1
  51. package/dist/components/kritzel-tool-config.js +6 -1
  52. package/dist/components/kritzel-tooltip.js +6 -1
  53. package/dist/components/kritzel-utility-panel.js +6 -1
  54. package/dist/components/kritzel-watermark.js +6 -1
  55. package/dist/components/kritzel-workspace-manager.js +6 -1
  56. package/dist/components/kritzel-zoom-panel.js +6 -1
  57. package/dist/components/p-894OnDQV.js +39 -1
  58. package/dist/components/p-B43upypT.js +1500 -1
  59. package/dist/components/p-B5oHmPJb.js +97 -1
  60. package/dist/components/p-B6t5q-V4.js +63 -1
  61. package/dist/components/p-B8Xi4Clg.js +43 -1
  62. package/dist/components/p-BBmP8lVY.js +51726 -0
  63. package/dist/components/p-BDzlx2hB.js +135 -1
  64. package/dist/components/p-BFTU3MAI.js +7 -1
  65. package/dist/components/p-BFYtCsZu.js +56 -1
  66. package/dist/components/p-BI2ng9I_.js +62 -1
  67. package/dist/components/p-BTzlrIxe.js +194 -1
  68. package/dist/components/p-BmyTdQGy.js +1090 -1
  69. package/dist/components/p-BsANVili.js +150 -1
  70. package/dist/components/p-BxpKq94F.js +290 -1
  71. package/dist/components/p-C38P-Vd0.js +446 -1
  72. package/dist/components/p-C4NrrUfN.js +77 -1
  73. package/dist/components/p-CW-VyJgK.js +6 -1
  74. package/dist/components/p-CWRSGYOE.js +57 -1
  75. package/dist/components/p-CXpv9Rxe.js +106 -1
  76. package/dist/components/p-Ca-igU1f.js +320 -1
  77. package/dist/components/p-CdR76C4L.js +165 -1
  78. package/dist/components/p-Ch42cOeY.js +320 -0
  79. package/dist/components/p-ClFprFvz.js +209 -1
  80. package/dist/components/p-Cm33td2O.js +122 -1
  81. package/dist/components/p-CqLgB8JK.js +91 -1
  82. package/dist/components/p-Cr682JI_.js +156 -1
  83. package/dist/components/p-CsvMgk_f.js +62 -1
  84. package/dist/components/p-CwJwsRR3.js +277 -1
  85. package/dist/components/p-Cymum41a.js +88 -1
  86. package/dist/components/p-D09kgc5Q.js +94 -1
  87. package/dist/components/p-D30zs0kA.js +121 -1
  88. package/dist/components/p-D3y_Hauo.js +85 -1
  89. package/dist/components/p-D5jf8wAu.js +142 -1
  90. package/dist/components/p-D82VaHce.js +53 -1
  91. package/dist/components/p-DAwPPDMS.js +101 -1
  92. package/dist/components/p-DEBwmRTC.js +55 -1
  93. package/dist/components/p-DIazmg6w.js +52 -1
  94. package/dist/components/p-DJ88BrIW.js +70 -1
  95. package/dist/components/p-DJkKlUyZ.js +182 -1
  96. package/dist/components/p-DUYmwrWV.js +3267 -1
  97. package/dist/components/p-DX2nriaq.js +486 -1
  98. package/dist/components/p-Dd-pMvlr.js +20 -1
  99. package/dist/components/p-Df3BwVGy.js +299 -1
  100. package/dist/components/p-DgJ0ufzr.js +43 -1
  101. package/dist/components/p-DkUb2czk.js +70 -1
  102. package/dist/components/p-Dlp84thc.js +57 -1
  103. package/dist/components/p-JYj3Facr.js +431 -1
  104. package/dist/components/p-Ka7OWbnk.js +2304 -1
  105. package/dist/components/p-PSFAfAyd.js +49 -1
  106. package/dist/components/p-WUdQqYnu.js +118 -1
  107. package/dist/components/p-djJSnjAX.js +84 -1
  108. package/dist/components/p-e6Zpc9Vp.js +143 -1
  109. package/dist/components/p-jGOpkGDl.js +30 -1
  110. package/dist/components/p-pagW8YF7.js +99 -1
  111. package/dist/esm/kritzel-active-users_47.entry.js +79 -13
  112. package/dist/esm/loader.js +1 -1
  113. package/dist/esm/stencil.js +1 -1
  114. package/dist/stencil/index.esm.js +1172 -1
  115. package/dist/stencil/p-5b969a42.entry.js +36109 -0
  116. package/dist/stencil/p-DQuL1Twl.js +3 -1
  117. package/dist/stencil/p-Dhio9uis.js +1717 -2
  118. package/dist/stencil/p-fb32cd8f.entry.js +29 -1
  119. package/dist/stencil/p-uC7_X6yr.js +30737 -1
  120. package/dist/stencil/stencil.esm.js +21 -1
  121. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +2 -0
  122. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +7 -0
  123. package/dist/types/components.d.ts +10 -0
  124. package/dist/types/constants/version.d.ts +1 -1
  125. package/package.json +1 -1
  126. package/dist/components/p--Oazz-BP.js +0 -9
  127. package/dist/components/p-Xsiz1D5Q.js +0 -1
  128. package/dist/stencil/p-9abc21b9.entry.js +0 -9
@@ -1 +1,277 @@
1
- import{p as e,H as t,c as i,h as o,d as n,t as r}from"./p-B43upypT.js";import{d as s}from"./p-CdR76C4L.js";import{K as l}from"./p-jGOpkGDl.js";import{d as a}from"./p-Ca-igU1f.js";const c=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.itemSelect=i(this,"itemSelect"),this.itemSave=i(this,"itemSave"),this.itemCancel=i(this,"itemCancel"),this.itemToggleChildMenu=i(this,"itemToggleChildMenu"),this.itemCloseChildMenu=i(this,"itemCloseChildMenu")}get host(){return this}item;onItemChange(e,t){e!==t&&(this.isDirty=!1)}parent=null;itemSelect;itemSave;itemCancel;itemToggleChildMenu;itemCloseChildMenu;isDirty=!1;inputRef;focusInput(){this.item.isEditing&&!this.isDirty&&requestAnimationFrame((()=>{if(this.inputRef)if(this.inputRef.focus(),l.isIOS()){const e=this.inputRef.value.length;this.inputRef.setSelectionRange(e,e)}else this.inputRef.select()}))}componentDidLoad(){this.setDeviceSpecificStyles(),this.focusInput()}componentDidUpdate(){this.focusInput()}setDeviceSpecificStyles=()=>{l.isTouchDevice()&&(this.host.style.setProperty("--kritzel-menu-item-overlay-background-color","transparent"),this.host.style.setProperty("--kritzel-menu-item-button-hover-background-color","transparent"))};handleItemSelect=e=>{e.stopPropagation(),this.itemSelect.emit({item:this.item,parent:this.parent})};handleInputChange=e=>{e.stopPropagation(),this.item.label=e.target.value,this.isDirty=!0};handleSave=e=>{e.stopPropagation(),this.host.focus(),this.itemSave.emit(this.item)};handleCancel=e=>{e.stopPropagation(),this.host.focus(),this.itemCancel.emit(this.item)};handleMenuToggle=e=>{e.stopPropagation(),this.itemToggleChildMenu.emit({item:this.item,childMenuAnchor:e.target})};handleMenuClose=()=>{this.itemCloseChildMenu.emit(this.item)};renderViewMode(){return[o("div",{class:"menu-item-content left"},this.item.icon&&o("span",{title:this.item.iconTooltip},o("kritzel-icon",{name:this.item.icon,size:16,style:this.item.color?{"--kritzel-icon-color":this.item.color}:void 0})),o("div",{style:this.item.color?{color:this.item.color}:void 0},this.item.label)),o("div",{class:"menu-item-content right"},this.item.children&&this.item.children.length>0&&[o("button",{id:"child-menu-toggle",class:"action-button",onClick:this.handleMenuToggle,disabled:this.item.isDisabled},o("kritzel-icon",{name:"ellipsis-vertical",size:16})),o("kritzel-portal",{anchor:this.item.childMenuAnchor,offsetY:4,onClose:this.handleMenuClose},o("kritzel-menu",{items:this.item.children,parent:this.item,onItemSelect:e=>this.itemSelect.emit(e.detail),onItemSave:e=>this.itemSave.emit(e.detail),onItemCancel:e=>this.itemCancel.emit(e.detail),onClose:this.handleMenuClose}))])]}renderEditMode(){return[o("div",{class:"menu-item-content left"},o("input",{ref:e=>this.inputRef=e,type:"text",class:"edit-input",value:this.item.label,onInput:this.handleInputChange})),o("div",{class:"menu-item-content right"},o("div",{tabIndex:0,class:"action-button",onClick:this.handleCancel},o("kritzel-icon",{name:"x",size:16})),o("div",{tabIndex:this.isDirty||this.item.isNewItem?0:-1,class:{"action-button":!0,disabled:!this.isDirty&&!this.item.isNewItem},onClick:this.handleSave},o("kritzel-icon",{name:"check",size:16})))]}render(){return o(n,{key:"89e05e4ec01b4de48019a2459f625e34669b8429",tabIndex:this.item.isDisabled?-1:0,class:{selected:this.item.isSelected,editing:this.item.isEditing,disabled:this.item.isDisabled,"child-open":this.item.isChildMenuOpen},onClick:this.handleItemSelect},o("div",{key:"5de01524315482194c26e4bd4969f2ead4d852ec",class:"menu-item-overlay"}),this.item.isEditing?this.renderEditMode():this.renderViewMode())}static get watchers(){return{item:[{onItemChange:0}]}}static get style(){return":host{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--kritzel-menu-item-padding, 8px);box-sizing:border-box;gap:16px;height:var(--kritzel-menu-item-height, 40px);min-height:var(--kritzel-menu-item-min-height, 40px);font-family:sans-serif;font-size:var(--kritzel-menu-item-font-size, 14px);color:var(--kritzel-menu-item-color, #333333);border-radius:var(--kritzel-menu-item-border-radius, 12px);-webkit-tap-highlight-color:transparent}:host:focus:not(:focus-visible){outline:none}:host(:hover) .menu-item-overlay,:host(:focus-within) .menu-item-overlay{background-color:var(--kritzel-menu-item-overlay-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff);caret-color:var(--kritzel-menu-item-input-caret-color-on-selected, #ffffff);border-color:var(--kritzel-menu-item-input-border-color-on-selected, #ffffff)}:host(.selected) .action-button kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-color, #333333)}:host(.selected) kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color-on-selected, rgba(255, 255, 255, 0.3));color:var(--kritzel-menu-item-input-selection-text-color-on-selected, #ffffff)}:host(.editing){background-color:var(--kritzel-menu-item-editing-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.disabled){opacity:0.5;pointer-events:none !important}:host(.child-open){background-color:var(--kritzel-menu-item-child-open-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.child-open.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.menu-item-content span{display:flex;align-items:center;line-height:0}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:var(--kritzel-menu-item-input-border, 1px solid #ccc);font-size:var(--kritzel-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none;color:inherit}.edit-input{caret-color:var(--kritzel-menu-item-input-caret-color, currentColor)}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}"}},[513,"kritzel-menu-item",{item:[16],parent:[16],isDirty:[32]},void 0,{item:[{onItemChange:0}]}]);function h(){"undefined"!=typeof customElements&&["kritzel-menu-item","kritzel-icon","kritzel-menu","kritzel-menu-item","kritzel-portal"].forEach((e=>{switch(e){case"kritzel-menu-item":customElements.get(r(e))||customElements.define(r(e),c);break;case"kritzel-icon":customElements.get(r(e))||s();break;case"kritzel-menu":customElements.get(r(e))||d();break;case"kritzel-menu-item":customElements.get(r(e))||h();break;case"kritzel-portal":customElements.get(r(e))||a()}}))}const m=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.itemSelect=i(this,"itemSelect"),this.itemSave=i(this,"itemSave"),this.itemCancel=i(this,"itemCancel"),this.itemToggleChildMenu=i(this,"itemToggleChildMenu"),this.itemCloseChildMenu=i(this,"itemCloseChildMenu"),this.close=i(this,"close")}get host(){return this}items;parent=null;itemSelect;itemSave;itemCancel;itemToggleChildMenu;itemCloseChildMenu;close;selectedIndex=null;async setScrollTop(e){this.host.scrollTop=e,this.host.scrollTo({top:e,behavior:"auto"})}async setFocus(){const e=this.host.shadowRoot.querySelector("kritzel-menu-item");e&&e.focus()}get openChildMenuItem(){return this.items.find((e=>e.isChildMenuOpen))}get editingMenuItem(){return this.items.find((e=>e.isEditing))}onOverlayClick=e=>{e.stopPropagation(),this.itemCloseChildMenu.emit(this.openChildMenuItem)};handleItemSelect=e=>{e.stopPropagation(),this.itemSelect.emit(e.detail)};handleSave=e=>{e.stopPropagation(),this.itemSave.emit(e.detail)};handleCancel=e=>{e.stopPropagation(),this.itemCancel.emit(e.detail)};handleToggleChildMenu=e=>{e.stopPropagation(),this.itemToggleChildMenu.emit(e.detail)};handleCloseChildMenu=e=>{e.stopPropagation(),this.itemCloseChildMenu.emit(e.detail)};render(){return o(n,{key:"9edadb795e13a5242a0a086bd78c21f0f420e88c",tabIndex:0,onClick:e=>e.stopPropagation()},this.openChildMenuItem&&o("div",{key:"4925a8698c1ac61787ba8c44beeed46461c62625",class:"has-open-child-overlay",onClick:this.onOverlayClick}),this.items.map((e=>o("kritzel-menu-item",{key:e.id,"data-testid":`menu-item-${e.id}`,item:e,parent:this.parent,style:{pointerEvents:this.editingMenuItem&&!e.isEditing?"none":"auto"},onItemSelect:this.handleItemSelect,onItemSave:this.handleSave,onItemCancel:this.handleCancel,onItemToggleChildMenu:this.handleToggleChildMenu,onItemCloseChildMenu:this.handleCloseChildMenu}))))}static get style(){return":host{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-menu-background-color, #ffffff);width:var(--kritzel-menu-width, 200px);padding:var(--kritzel-menu-padding, 8px);border-radius:var(--kritzel-menu-border-radius, 12px);box-shadow:var(--kritzel-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-menu-border, 1px solid #ebebeb);z-index:2;gap:var(--kritzel-menu-gap, 4px);overflow-y:auto;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin;max-height:var(--kritzel-portal-max-height, 300px);box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline:none;clip-path:inset(0 round var(--kritzel-menu-border-radius, 12px))}:host:focus-visible{outline:auto}.has-open-child-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:3}"}},[513,"kritzel-menu",{items:[16],parent:[16],selectedIndex:[32],setScrollTop:[64],setFocus:[64]}]);function d(){"undefined"!=typeof customElements&&["kritzel-menu","kritzel-icon","kritzel-menu","kritzel-menu-item","kritzel-portal"].forEach((e=>{switch(e){case"kritzel-menu":customElements.get(r(e))||customElements.define(r(e),m);break;case"kritzel-icon":customElements.get(r(e))||s();break;case"kritzel-menu":customElements.get(r(e))||d();break;case"kritzel-menu-item":customElements.get(r(e))||h();break;case"kritzel-portal":customElements.get(r(e))||a()}}))}export{m as K,d as a,c as b,h as d}
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
+ import { d as defineCustomElement$3 } from './p-CdR76C4L.js';
3
+ import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
4
+ import { d as defineCustomElement$2 } from './p-Ca-igU1f.js';
5
+
6
+ const kritzelMenuItemCss = () => `:host{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--kritzel-menu-item-padding, 8px);box-sizing:border-box;gap:16px;height:var(--kritzel-menu-item-height, 40px);min-height:var(--kritzel-menu-item-min-height, 40px);font-family:sans-serif;font-size:var(--kritzel-menu-item-font-size, 14px);color:var(--kritzel-menu-item-color, #333333);border-radius:var(--kritzel-menu-item-border-radius, 12px);-webkit-tap-highlight-color:transparent}:host:focus:not(:focus-visible){outline:none}:host(:hover) .menu-item-overlay,:host(:focus-within) .menu-item-overlay{background-color:var(--kritzel-menu-item-overlay-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff);caret-color:var(--kritzel-menu-item-input-caret-color-on-selected, #ffffff);border-color:var(--kritzel-menu-item-input-border-color-on-selected, #ffffff)}:host(.selected) .action-button kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-color, #333333)}:host(.selected) kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color-on-selected, rgba(255, 255, 255, 0.3));color:var(--kritzel-menu-item-input-selection-text-color-on-selected, #ffffff)}:host(.editing){background-color:var(--kritzel-menu-item-editing-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.disabled){opacity:0.5;pointer-events:none !important}:host(.child-open){background-color:var(--kritzel-menu-item-child-open-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.child-open.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.menu-item-content span{display:flex;align-items:center;line-height:0}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:var(--kritzel-menu-item-input-border, 1px solid #ccc);font-size:var(--kritzel-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none;color:inherit}.edit-input{caret-color:var(--kritzel-menu-item-input-caret-color, currentColor)}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}`;
7
+
8
+ const KritzelMenuItem = /*@__PURE__*/ proxyCustomElement(class KritzelMenuItem extends H {
9
+ constructor(registerHost) {
10
+ super();
11
+ if (registerHost !== false) {
12
+ this.__registerHost();
13
+ }
14
+ this.__attachShadow();
15
+ this.itemSelect = createEvent(this, "itemSelect");
16
+ this.itemSave = createEvent(this, "itemSave");
17
+ this.itemCancel = createEvent(this, "itemCancel");
18
+ this.itemToggleChildMenu = createEvent(this, "itemToggleChildMenu");
19
+ this.itemCloseChildMenu = createEvent(this, "itemCloseChildMenu");
20
+ }
21
+ get host() { return this; }
22
+ item;
23
+ onItemChange(newValue, oldValue) {
24
+ if (newValue !== oldValue) {
25
+ this.isDirty = false;
26
+ }
27
+ }
28
+ parent = null;
29
+ itemSelect;
30
+ itemSave;
31
+ itemCancel;
32
+ itemToggleChildMenu;
33
+ itemCloseChildMenu;
34
+ isDirty = false;
35
+ inputRef;
36
+ focusInput() {
37
+ if (this.item.isEditing && !this.isDirty) {
38
+ requestAnimationFrame(() => {
39
+ if (this.inputRef) {
40
+ this.inputRef.focus();
41
+ if (KritzelDevicesHelper.isIOS()) {
42
+ const length = this.inputRef.value.length;
43
+ this.inputRef.setSelectionRange(length, length);
44
+ }
45
+ else {
46
+ this.inputRef.select();
47
+ }
48
+ }
49
+ });
50
+ }
51
+ }
52
+ componentDidLoad() {
53
+ this.setDeviceSpecificStyles();
54
+ this.focusInput();
55
+ }
56
+ componentDidUpdate() {
57
+ this.focusInput();
58
+ }
59
+ setDeviceSpecificStyles = () => {
60
+ const isTouchDevice = KritzelDevicesHelper.isTouchDevice();
61
+ if (isTouchDevice) {
62
+ this.host.style.setProperty('--kritzel-menu-item-overlay-background-color', 'transparent');
63
+ this.host.style.setProperty('--kritzel-menu-item-button-hover-background-color', 'transparent');
64
+ }
65
+ };
66
+ handleItemSelect = (event) => {
67
+ event.stopPropagation();
68
+ this.itemSelect.emit({ item: this.item, parent: this.parent });
69
+ };
70
+ handleInputChange = (event) => {
71
+ event.stopPropagation();
72
+ const target = event.target;
73
+ this.item.label = target.value;
74
+ this.isDirty = true;
75
+ };
76
+ handleSave = (event) => {
77
+ event.stopPropagation();
78
+ this.host.focus();
79
+ this.itemSave.emit(this.item);
80
+ };
81
+ handleCancel = (event) => {
82
+ event.stopPropagation();
83
+ this.host.focus();
84
+ this.itemCancel.emit(this.item);
85
+ };
86
+ handleMenuToggle = (event) => {
87
+ event.stopPropagation();
88
+ this.itemToggleChildMenu.emit({ item: this.item, childMenuAnchor: event.target });
89
+ };
90
+ handleMenuClose = () => {
91
+ this.itemCloseChildMenu.emit(this.item);
92
+ };
93
+ renderViewMode() {
94
+ return [
95
+ h("div", { class: "menu-item-content left" }, this.item.icon && (h("span", { title: this.item.iconTooltip }, h("kritzel-icon", { name: this.item.icon, size: 16, style: this.item.color ? { '--kritzel-icon-color': this.item.color } : undefined }))), h("div", { style: this.item.color ? { color: this.item.color } : undefined }, this.item.label)),
96
+ h("div", { class: "menu-item-content right" }, this.item.children &&
97
+ this.item.children.length > 0 && [
98
+ h("button", { id: "child-menu-toggle", class: "action-button", onClick: this.handleMenuToggle, disabled: this.item.isDisabled }, h("kritzel-icon", { name: "ellipsis-vertical", size: 16 })),
99
+ h("kritzel-portal", { anchor: this.item.childMenuAnchor, offsetY: 4, onClose: this.handleMenuClose }, h("kritzel-menu", { items: this.item.children, parent: this.item, onItemSelect: event => this.itemSelect.emit(event.detail), onItemSave: event => this.itemSave.emit(event.detail), onItemCancel: event => this.itemCancel.emit(event.detail), onClose: this.handleMenuClose })),
100
+ ]),
101
+ ];
102
+ }
103
+ renderEditMode() {
104
+ return [
105
+ h("div", { class: "menu-item-content left" }, h("input", { ref: el => (this.inputRef = el), type: "text", class: "edit-input", value: this.item.label, onInput: this.handleInputChange })),
106
+ h("div", { class: "menu-item-content right" }, h("div", { tabIndex: 0, class: "action-button", onClick: this.handleCancel }, h("kritzel-icon", { name: "x", size: 16 })), h("div", { tabIndex: !this.isDirty && !this.item.isNewItem ? -1 : 0, class: { 'action-button': true, 'disabled': !this.isDirty && !this.item.isNewItem }, onClick: this.handleSave }, h("kritzel-icon", { name: "check", size: 16 }))),
107
+ ];
108
+ }
109
+ render() {
110
+ return (h(Host, { key: '89e05e4ec01b4de48019a2459f625e34669b8429', tabIndex: this.item.isDisabled ? -1 : 0, class: {
111
+ 'selected': this.item.isSelected,
112
+ 'editing': this.item.isEditing,
113
+ 'disabled': this.item.isDisabled,
114
+ 'child-open': this.item.isChildMenuOpen,
115
+ }, onClick: this.handleItemSelect }, h("div", { key: '5de01524315482194c26e4bd4969f2ead4d852ec', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
116
+ }
117
+ static get watchers() { return {
118
+ "item": [{
119
+ "onItemChange": 0
120
+ }]
121
+ }; }
122
+ static get style() { return kritzelMenuItemCss(); }
123
+ }, [513, "kritzel-menu-item", {
124
+ "item": [16],
125
+ "parent": [16],
126
+ "isDirty": [32]
127
+ }, undefined, {
128
+ "item": [{
129
+ "onItemChange": 0
130
+ }]
131
+ }]);
132
+ function defineCustomElement$1() {
133
+ if (typeof customElements === "undefined") {
134
+ return;
135
+ }
136
+ const components = ["kritzel-menu-item", "kritzel-icon", "kritzel-menu", "kritzel-menu-item", "kritzel-portal"];
137
+ components.forEach(tagName => { switch (tagName) {
138
+ case "kritzel-menu-item":
139
+ if (!customElements.get(transformTag(tagName))) {
140
+ customElements.define(transformTag(tagName), KritzelMenuItem);
141
+ }
142
+ break;
143
+ case "kritzel-icon":
144
+ if (!customElements.get(transformTag(tagName))) {
145
+ defineCustomElement$3();
146
+ }
147
+ break;
148
+ case "kritzel-menu":
149
+ if (!customElements.get(transformTag(tagName))) {
150
+ defineCustomElement();
151
+ }
152
+ break;
153
+ case "kritzel-menu-item":
154
+ if (!customElements.get(transformTag(tagName))) {
155
+ defineCustomElement$1();
156
+ }
157
+ break;
158
+ case "kritzel-portal":
159
+ if (!customElements.get(transformTag(tagName))) {
160
+ defineCustomElement$2();
161
+ }
162
+ break;
163
+ } });
164
+ }
165
+
166
+ const kritzelMenuCss = () => `:host{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-menu-background-color, #ffffff);width:var(--kritzel-menu-width, 200px);padding:var(--kritzel-menu-padding, 8px);border-radius:var(--kritzel-menu-border-radius, 12px);box-shadow:var(--kritzel-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-menu-border, 1px solid #ebebeb);z-index:2;gap:var(--kritzel-menu-gap, 4px);overflow-y:auto;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin;max-height:var(--kritzel-portal-max-height, 300px);box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline:none;clip-path:inset(0 round var(--kritzel-menu-border-radius, 12px))}:host:focus-visible{outline:auto}.has-open-child-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:3}`;
167
+
168
+ const KritzelMenu = /*@__PURE__*/ proxyCustomElement(class KritzelMenu extends H {
169
+ constructor(registerHost) {
170
+ super();
171
+ if (registerHost !== false) {
172
+ this.__registerHost();
173
+ }
174
+ this.__attachShadow();
175
+ this.itemSelect = createEvent(this, "itemSelect");
176
+ this.itemSave = createEvent(this, "itemSave");
177
+ this.itemCancel = createEvent(this, "itemCancel");
178
+ this.itemToggleChildMenu = createEvent(this, "itemToggleChildMenu");
179
+ this.itemCloseChildMenu = createEvent(this, "itemCloseChildMenu");
180
+ this.close = createEvent(this, "close");
181
+ }
182
+ get host() { return this; }
183
+ items;
184
+ parent = null;
185
+ itemSelect;
186
+ itemSave;
187
+ itemCancel;
188
+ itemToggleChildMenu;
189
+ itemCloseChildMenu;
190
+ close;
191
+ selectedIndex = null;
192
+ async setScrollTop(scrollTop) {
193
+ this.host.scrollTop = scrollTop;
194
+ this.host.scrollTo({ top: scrollTop, behavior: 'auto' });
195
+ }
196
+ async setFocus() {
197
+ const firstItem = this.host.shadowRoot.querySelector('kritzel-menu-item');
198
+ if (firstItem) {
199
+ firstItem.focus();
200
+ }
201
+ }
202
+ get openChildMenuItem() {
203
+ return this.items.find(item => item.isChildMenuOpen);
204
+ }
205
+ get editingMenuItem() {
206
+ return this.items.find(item => item.isEditing);
207
+ }
208
+ onOverlayClick = (event) => {
209
+ event.stopPropagation();
210
+ this.itemCloseChildMenu.emit(this.openChildMenuItem);
211
+ };
212
+ handleItemSelect = (event) => {
213
+ event.stopPropagation();
214
+ this.itemSelect.emit(event.detail);
215
+ };
216
+ handleSave = (event) => {
217
+ event.stopPropagation();
218
+ this.itemSave.emit(event.detail);
219
+ };
220
+ handleCancel = (event) => {
221
+ event.stopPropagation();
222
+ this.itemCancel.emit(event.detail);
223
+ };
224
+ handleToggleChildMenu = (event) => {
225
+ event.stopPropagation();
226
+ this.itemToggleChildMenu.emit(event.detail);
227
+ };
228
+ handleCloseChildMenu = (event) => {
229
+ event.stopPropagation();
230
+ this.itemCloseChildMenu.emit(event.detail);
231
+ };
232
+ render() {
233
+ return (h(Host, { key: '9edadb795e13a5242a0a086bd78c21f0f420e88c', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: '4925a8698c1ac61787ba8c44beeed46461c62625', class: "has-open-child-overlay", onClick: this.onOverlayClick }), this.items.map(item => (h("kritzel-menu-item", { key: item.id, "data-testid": `menu-item-${item.id}`, item: item, parent: this.parent, style: { pointerEvents: this.editingMenuItem && !item.isEditing ? 'none' : 'auto' }, onItemSelect: this.handleItemSelect, onItemSave: this.handleSave, onItemCancel: this.handleCancel, onItemToggleChildMenu: this.handleToggleChildMenu, onItemCloseChildMenu: this.handleCloseChildMenu })))));
234
+ }
235
+ static get style() { return kritzelMenuCss(); }
236
+ }, [513, "kritzel-menu", {
237
+ "items": [16],
238
+ "parent": [16],
239
+ "selectedIndex": [32],
240
+ "setScrollTop": [64],
241
+ "setFocus": [64]
242
+ }]);
243
+ function defineCustomElement() {
244
+ if (typeof customElements === "undefined") {
245
+ return;
246
+ }
247
+ const components = ["kritzel-menu", "kritzel-icon", "kritzel-menu", "kritzel-menu-item", "kritzel-portal"];
248
+ components.forEach(tagName => { switch (tagName) {
249
+ case "kritzel-menu":
250
+ if (!customElements.get(transformTag(tagName))) {
251
+ customElements.define(transformTag(tagName), KritzelMenu);
252
+ }
253
+ break;
254
+ case "kritzel-icon":
255
+ if (!customElements.get(transformTag(tagName))) {
256
+ defineCustomElement$3();
257
+ }
258
+ break;
259
+ case "kritzel-menu":
260
+ if (!customElements.get(transformTag(tagName))) {
261
+ defineCustomElement();
262
+ }
263
+ break;
264
+ case "kritzel-menu-item":
265
+ if (!customElements.get(transformTag(tagName))) {
266
+ defineCustomElement$1();
267
+ }
268
+ break;
269
+ case "kritzel-portal":
270
+ if (!customElements.get(transformTag(tagName))) {
271
+ defineCustomElement$2();
272
+ }
273
+ break;
274
+ } });
275
+ }
276
+
277
+ export { KritzelMenu as K, defineCustomElement as a, KritzelMenuItem as b, defineCustomElement$1 as d };
@@ -1 +1,88 @@
1
- import{p as e,H as t,c as o,h as r,d as s,t as i}from"./p-B43upypT.js";import{a as l}from"./p-BmyTdQGy.js";import{d as c}from"./p-CqLgB8JK.js";const a=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:"6e16fdd13c09ab2bcffb83df7ed861560f486518"},r("div",{key:"48cc257315e13822dcc8bea314d26f1137d9b3cc",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),a);break;case"kritzel-color":customElements.get(i(e))||c()}}))}export{a as K,n as d}
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
+ import { a as KritzelColorHelper } from './p-BmyTdQGy.js';
3
+ import { d as defineCustomElement$1 } from './p-CqLgB8JK.js';
4
+
5
+ const kritzelColorPaletteCss = () => `:host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}`;
6
+
7
+ const KritzelColorPalette = /*@__PURE__*/ proxyCustomElement(class KritzelColorPalette extends H {
8
+ constructor(registerHost) {
9
+ super();
10
+ if (registerHost !== false) {
11
+ this.__registerHost();
12
+ }
13
+ this.__attachShadow();
14
+ this.colorChange = createEvent(this, "colorChange");
15
+ }
16
+ colors = [];
17
+ selectedColor = null;
18
+ isExpanded = false;
19
+ isOpaque = false;
20
+ opacity = 1;
21
+ theme;
22
+ colorChange;
23
+ handleColorClick(color) {
24
+ this.selectedColor = color;
25
+ this.colorChange.emit(color);
26
+ }
27
+ handleKeyDown(event, color) {
28
+ if (event.key === 'Enter' || event.key === ' ') {
29
+ event.preventDefault();
30
+ this.handleColorClick(color);
31
+ }
32
+ }
33
+ calculateHeight() {
34
+ const colorsPerRow = 6;
35
+ const rowHeight = 32;
36
+ const gap = 8;
37
+ const rowCount = Math.ceil(this.colors.length / colorsPerRow);
38
+ return `${rowCount * rowHeight + (rowCount - 1) * gap}px`;
39
+ }
40
+ areColorsEqual(color1, color2) {
41
+ if (!color1)
42
+ return false;
43
+ return color1.light === color2.light && color1.dark === color2.dark;
44
+ }
45
+ render() {
46
+ const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
47
+ const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
48
+ return (h(Host, { key: '6e16fdd13c09ab2bcffb83df7ed861560f486518' }, h("div", { key: '48cc257315e13822dcc8bea314d26f1137d9b3cc', class: {
49
+ 'color-grid': true,
50
+ 'expanded': this.isExpanded,
51
+ }, style: {
52
+ height: expandedHeight,
53
+ } }, displayedColors.map(color => {
54
+ return (h("div", { tabIndex: 0, class: {
55
+ 'color-container': true,
56
+ 'selected': this.areColorsEqual(this.selectedColor, color),
57
+ }, onClick: () => this.handleColorClick(color), onKeyDown: event => this.handleKeyDown(event, color) }, h("kritzel-color", { value: KritzelColorHelper.applyOpacity(color, this.opacity, this.theme), theme: this.theme })));
58
+ }))));
59
+ }
60
+ static get style() { return kritzelColorPaletteCss(); }
61
+ }, [513, "kritzel-color-palette", {
62
+ "colors": [16],
63
+ "selectedColor": [1040],
64
+ "isExpanded": [4, "is-expanded"],
65
+ "isOpaque": [4, "is-opaque"],
66
+ "opacity": [2],
67
+ "theme": [1]
68
+ }]);
69
+ function defineCustomElement() {
70
+ if (typeof customElements === "undefined") {
71
+ return;
72
+ }
73
+ const components = ["kritzel-color-palette", "kritzel-color"];
74
+ components.forEach(tagName => { switch (tagName) {
75
+ case "kritzel-color-palette":
76
+ if (!customElements.get(transformTag(tagName))) {
77
+ customElements.define(transformTag(tagName), KritzelColorPalette);
78
+ }
79
+ break;
80
+ case "kritzel-color":
81
+ if (!customElements.get(transformTag(tagName))) {
82
+ defineCustomElement$1();
83
+ }
84
+ break;
85
+ } });
86
+ }
87
+
88
+ export { KritzelColorPalette as K, defineCustomElement as d };
@@ -1 +1,94 @@
1
- import{p as e,H as t,c as a,h as l,d as i,t as s}from"./p-B43upypT.js";import{d as r}from"./p-CdR76C4L.js";const o=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.valueChange=a(this,"valueChange")}tabs=[];value;valueChange;handleTabClick(e){this.value!==e&&(this.value=e,this.valueChange.emit(e))}handleKeyDown(e,t){const a=this.tabs;let l=t;switch(e.key){case"ArrowLeft":e.preventDefault(),l=t>0?t-1:a.length-1;break;case"ArrowRight":e.preventDefault(),l=t<a.length-1?t+1:0;break;case"Home":e.preventDefault(),l=0;break;case"End":e.preventDefault(),l=a.length-1;break;default:return}this.handleTabClick(a[l].id);const i=e.currentTarget.parentElement,s=i?.querySelectorAll("button");s?.[l]?.focus()}render(){return l(i,{key:"f02f93ada5ec002695b62f511c847de201a8cbe4"},l("div",{key:"bb08ae773f1b993cb330556a5778d71fc5e91ce1",class:"pill-tabs-container",role:"tablist"},this.tabs.map(((e,t)=>l("button",{key:e.id,class:{"pill-tab":!0,selected:this.value===e.id},role:"tab","aria-selected":this.value===e.id?"true":"false",tabIndex:this.value===e.id?0:-1,onClick:()=>this.handleTabClick(e.id),onKeyDown:e=>this.handleKeyDown(e,t)},e.icon&&l("kritzel-icon",{name:e.icon,size:16}),l("span",{class:"pill-tab-label"},e.label))))))}static get style(){return":host{display:block;max-width:100%}.pill-tabs-container{display:inline-flex;align-items:center;gap:4px;padding:4px;max-width:100%;border-radius:var(--kritzel-pill-tabs-border-radius, 10px);background:var(--kritzel-pill-tabs-background, #f0f0f0);box-sizing:border-box}.pill-tab{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;max-width:100%;padding:8px 16px;border:none;border-radius:var(--kritzel-pill-tabs-tab-border-radius, 8px);background:var(--kritzel-pill-tabs-tab-background, transparent);color:var(--kritzel-pill-tabs-tab-text-color, #666666);font-family:inherit;font-size:14px;font-weight:500;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;white-space:nowrap}.pill-tab:hover:not(.selected){background:var(--kritzel-pill-tabs-tab-background-hover, rgba(0, 0, 0, 0.05))}.pill-tab.selected{background:var(--kritzel-pill-tabs-tab-background-selected, #ffffff);color:var(--kritzel-pill-tabs-tab-text-color-selected, #000000);box-shadow:var(--kritzel-pill-tabs-tab-shadow-selected, 0 1px 3px rgba(0, 0, 0, 0.1))}.pill-tab:focus{outline:none}.pill-tab:focus-visible{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.pill-tab-label{display:block;min-width:0;max-width:var(--kritzel-pill-tabs-tab-label-max-width, 10rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1}.pill-tab kritzel-icon{flex-shrink:0}"}},[513,"kritzel-pill-tabs",{tabs:[16],value:[1025]}]);function n(){"undefined"!=typeof customElements&&["kritzel-pill-tabs","kritzel-icon"].forEach((e=>{switch(e){case"kritzel-pill-tabs":customElements.get(s(e))||customElements.define(s(e),o);break;case"kritzel-icon":customElements.get(s(e))||r()}}))}export{o as K,n as d}
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
+ import { d as defineCustomElement$1 } from './p-CdR76C4L.js';
3
+
4
+ const kritzelPillTabsCss = () => `:host{display:block;max-width:100%}.pill-tabs-container{display:inline-flex;align-items:center;gap:4px;padding:4px;max-width:100%;border-radius:var(--kritzel-pill-tabs-border-radius, 10px);background:var(--kritzel-pill-tabs-background, #f0f0f0);box-sizing:border-box}.pill-tab{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;max-width:100%;padding:8px 16px;border:none;border-radius:var(--kritzel-pill-tabs-tab-border-radius, 8px);background:var(--kritzel-pill-tabs-tab-background, transparent);color:var(--kritzel-pill-tabs-tab-text-color, #666666);font-family:inherit;font-size:14px;font-weight:500;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;white-space:nowrap}.pill-tab:hover:not(.selected){background:var(--kritzel-pill-tabs-tab-background-hover, rgba(0, 0, 0, 0.05))}.pill-tab.selected{background:var(--kritzel-pill-tabs-tab-background-selected, #ffffff);color:var(--kritzel-pill-tabs-tab-text-color-selected, #000000);box-shadow:var(--kritzel-pill-tabs-tab-shadow-selected, 0 1px 3px rgba(0, 0, 0, 0.1))}.pill-tab:focus{outline:none}.pill-tab:focus-visible{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.pill-tab-label{display:block;min-width:0;max-width:var(--kritzel-pill-tabs-tab-label-max-width, 10rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1}.pill-tab kritzel-icon{flex-shrink:0}`;
5
+
6
+ const KritzelPillTabs = /*@__PURE__*/ proxyCustomElement(class KritzelPillTabs extends H {
7
+ constructor(registerHost) {
8
+ super();
9
+ if (registerHost !== false) {
10
+ this.__registerHost();
11
+ }
12
+ this.__attachShadow();
13
+ this.valueChange = createEvent(this, "valueChange");
14
+ }
15
+ /**
16
+ * Array of tab definitions to render
17
+ */
18
+ tabs = [];
19
+ /**
20
+ * Currently selected tab ID
21
+ */
22
+ value;
23
+ /**
24
+ * Emitted when the selected tab changes
25
+ */
26
+ valueChange;
27
+ handleTabClick(tabId) {
28
+ if (this.value !== tabId) {
29
+ this.value = tabId;
30
+ this.valueChange.emit(tabId);
31
+ }
32
+ }
33
+ handleKeyDown(event, index) {
34
+ const tabButtons = this.tabs;
35
+ let newIndex = index;
36
+ switch (event.key) {
37
+ case 'ArrowLeft':
38
+ event.preventDefault();
39
+ newIndex = index > 0 ? index - 1 : tabButtons.length - 1;
40
+ break;
41
+ case 'ArrowRight':
42
+ event.preventDefault();
43
+ newIndex = index < tabButtons.length - 1 ? index + 1 : 0;
44
+ break;
45
+ case 'Home':
46
+ event.preventDefault();
47
+ newIndex = 0;
48
+ break;
49
+ case 'End':
50
+ event.preventDefault();
51
+ newIndex = tabButtons.length - 1;
52
+ break;
53
+ default:
54
+ return;
55
+ }
56
+ const newTab = tabButtons[newIndex];
57
+ this.handleTabClick(newTab.id);
58
+ // Focus the new tab button
59
+ const container = event.currentTarget;
60
+ const parent = container.parentElement;
61
+ const buttons = parent?.querySelectorAll('button');
62
+ buttons?.[newIndex]?.focus();
63
+ }
64
+ render() {
65
+ return (h(Host, { key: 'f02f93ada5ec002695b62f511c847de201a8cbe4' }, h("div", { key: 'bb08ae773f1b993cb330556a5778d71fc5e91ce1', class: "pill-tabs-container", role: "tablist" }, this.tabs.map((tab, index) => (h("button", { key: tab.id, class: {
66
+ 'pill-tab': true,
67
+ 'selected': this.value === tab.id,
68
+ }, role: "tab", "aria-selected": this.value === tab.id ? 'true' : 'false', tabIndex: this.value === tab.id ? 0 : -1, onClick: () => this.handleTabClick(tab.id), onKeyDown: (e) => this.handleKeyDown(e, index) }, tab.icon && h("kritzel-icon", { name: tab.icon, size: 16 }), h("span", { class: "pill-tab-label" }, tab.label)))))));
69
+ }
70
+ static get style() { return kritzelPillTabsCss(); }
71
+ }, [513, "kritzel-pill-tabs", {
72
+ "tabs": [16],
73
+ "value": [1025]
74
+ }]);
75
+ function defineCustomElement() {
76
+ if (typeof customElements === "undefined") {
77
+ return;
78
+ }
79
+ const components = ["kritzel-pill-tabs", "kritzel-icon"];
80
+ components.forEach(tagName => { switch (tagName) {
81
+ case "kritzel-pill-tabs":
82
+ if (!customElements.get(transformTag(tagName))) {
83
+ customElements.define(transformTag(tagName), KritzelPillTabs);
84
+ }
85
+ break;
86
+ case "kritzel-icon":
87
+ if (!customElements.get(transformTag(tagName))) {
88
+ defineCustomElement$1();
89
+ }
90
+ break;
91
+ } });
92
+ }
93
+
94
+ export { KritzelPillTabs as K, defineCustomElement as d };
@@ -1 +1,121 @@
1
- import{p as e,H as t,c as r,h as o,d as n,t as i}from"./p-B43upypT.js";import{K as s}from"./p-jGOpkGDl.js";import{d as a}from"./p-CdR76C4L.js";import{d as l,a as m}from"./p-CwJwsRR3.js";import{d as c}from"./p-Ca-igU1f.js";const u=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.itemSelect=r(this,"itemSelect")}get host(){return this}visible=!1;items=[];icon="ellipsis-vertical";iconSize=24;offsetY=4;terms={};itemSelect;menuAnchor=null;isTouchDevice=s.isTouchDevice();toggleMenu=e=>{e.stopPropagation(),this.menuAnchor?this.closeMenu():(window.dispatchEvent(new CustomEvent("kritzel-dismiss-menus")),this.menuAnchor=this.host)};closeMenu=()=>{this.menuAnchor=null};get visibleItems(){return this.items.filter((e=>!1!==e.isVisible))}handleMenuItemSelect=e=>{const{item:t,parent:r}=e.detail;t.action&&t.action(t,r),this.itemSelect.emit(e.detail),this.closeMenu()};render(){return o(n,{key:"4ebbcbdf3464aeeb0585b571b424375e0493c7e9",class:{mobile:this.isTouchDevice},style:{display:this.visible?"":"none"}},o("div",{key:"080b74a0e4e4d4a2e9dee3d23cce22ea5bed7423",class:{"more-menu-wrapper":!0,visible:this.visible}},o("button",{key:"b8bfb586ca544a1c6711ba76fe55246c844f7425",class:"more-menu-button","data-testid":"more-menu-button",onClick:this.toggleMenu,"aria-label":this.terms["moreMenu.ariaLabel"]??"More options"},o("kritzel-icon",{key:"c76314d63048ef91d24e09aab646098c15ec7edf",name:this.icon,size:this.iconSize})),o("kritzel-portal",{key:"07c10d2bdb2b0ded07206efe82bd5e1edc49d736",anchor:this.menuAnchor,offsetY:this.offsetY,onClose:this.closeMenu},o("kritzel-menu",{key:"b5a6d63d6f8a0ffb9fae4dcab6bae276b45c46b6",items:this.visibleItems,onItemSelect:this.handleMenuItemSelect}))))}static get style(){return":host{display:inline-flex;z-index:1}.more-menu-wrapper{display:inline-flex;padding:var(--kritzel-more-menu-padding, 4px);background-color:var(--kritzel-more-menu-background-color, #ffffff);border-radius:var(--kritzel-more-menu-border-radius, 12px);box-shadow:var(--kritzel-more-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-more-menu-border, 1px solid #ebebeb);opacity:0;pointer-events:none;transition:opacity 0.2s ease-out}.more-menu-wrapper.visible{opacity:1;pointer-events:auto}:host(.mobile){--kritzel-more-menu-button-hover-background-color:transparent;--kritzel-more-menu-button-active-background-color:transparent}.more-menu-button{display:flex;align-items:center;justify-content:center;width:var(--kritzel-more-menu-button-width, 40px);height:var(--kritzel-more-menu-button-height, 40px);padding:0;border:none;border-radius:var(--kritzel-more-menu-inner-border-radius, 12px);background-color:transparent;cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:none;transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--kritzel-more-menu-button-color, currentColor)}.more-menu-button:hover{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:focus-visible{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:active{background-color:var(--kritzel-more-menu-button-active-background-color, hsl(0, 0%, 0%, 4.3%))}"}},[513,"kritzel-more-menu",{visible:[4],items:[16],icon:[1],iconSize:[2,"icon-size"],offsetY:[2,"offset-y"],terms:[16],menuAnchor:[32],isTouchDevice:[32]}]);function b(){"undefined"!=typeof customElements&&["kritzel-more-menu","kritzel-icon","kritzel-menu","kritzel-menu-item","kritzel-portal"].forEach((e=>{switch(e){case"kritzel-more-menu":customElements.get(i(e))||customElements.define(i(e),u);break;case"kritzel-icon":customElements.get(i(e))||a();break;case"kritzel-menu":customElements.get(i(e))||m();break;case"kritzel-menu-item":customElements.get(i(e))||l();break;case"kritzel-portal":customElements.get(i(e))||c()}}))}export{u as K,b as d}
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host, t as transformTag } from './p-B43upypT.js';
2
+ import { K as KritzelDevicesHelper } from './p-jGOpkGDl.js';
3
+ import { d as defineCustomElement$4 } from './p-CdR76C4L.js';
4
+ import { d as defineCustomElement$2, a as defineCustomElement$3 } from './p-CwJwsRR3.js';
5
+ import { d as defineCustomElement$1 } from './p-Ca-igU1f.js';
6
+
7
+ const kritzelMoreMenuCss = () => `:host{display:inline-flex;z-index:1}.more-menu-wrapper{display:inline-flex;padding:var(--kritzel-more-menu-padding, 4px);background-color:var(--kritzel-more-menu-background-color, #ffffff);border-radius:var(--kritzel-more-menu-border-radius, 12px);box-shadow:var(--kritzel-more-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-more-menu-border, 1px solid #ebebeb);opacity:0;pointer-events:none;transition:opacity 0.2s ease-out}.more-menu-wrapper.visible{opacity:1;pointer-events:auto}:host(.mobile){--kritzel-more-menu-button-hover-background-color:transparent;--kritzel-more-menu-button-active-background-color:transparent}.more-menu-button{display:flex;align-items:center;justify-content:center;width:var(--kritzel-more-menu-button-width, 40px);height:var(--kritzel-more-menu-button-height, 40px);padding:0;border:none;border-radius:var(--kritzel-more-menu-inner-border-radius, 12px);background-color:transparent;cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:none;transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--kritzel-more-menu-button-color, currentColor)}.more-menu-button:hover{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:focus-visible{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:active{background-color:var(--kritzel-more-menu-button-active-background-color, hsl(0, 0%, 0%, 4.3%))}`;
8
+
9
+ const KritzelMoreMenu = /*@__PURE__*/ proxyCustomElement(class KritzelMoreMenu extends H {
10
+ constructor(registerHost) {
11
+ super();
12
+ if (registerHost !== false) {
13
+ this.__registerHost();
14
+ }
15
+ this.__attachShadow();
16
+ this.itemSelect = createEvent(this, "itemSelect");
17
+ }
18
+ get host() { return this; }
19
+ /**
20
+ * Whether the menu button is visible
21
+ */
22
+ visible = false;
23
+ /**
24
+ * The menu items to display in the dropdown.
25
+ * Items with `isVisible` set to `false` will be filtered out.
26
+ * Items with an `action` will have that action invoked on selection.
27
+ */
28
+ items = [];
29
+ /**
30
+ * The icon to display on the button
31
+ */
32
+ icon = 'ellipsis-vertical';
33
+ /**
34
+ * The size of the icon
35
+ */
36
+ iconSize = 24;
37
+ /**
38
+ * Offset Y for the portal positioning
39
+ */
40
+ offsetY = 4;
41
+ /** Resolved localized strings keyed by term key, supplied by the editor. */
42
+ terms = {};
43
+ /**
44
+ * Emitted when a menu item is selected
45
+ */
46
+ itemSelect;
47
+ menuAnchor = null;
48
+ isTouchDevice = KritzelDevicesHelper.isTouchDevice();
49
+ toggleMenu = (event) => {
50
+ event.stopPropagation();
51
+ if (this.menuAnchor) {
52
+ this.closeMenu();
53
+ }
54
+ else {
55
+ window.dispatchEvent(new CustomEvent('kritzel-dismiss-menus'));
56
+ this.menuAnchor = this.host;
57
+ }
58
+ };
59
+ closeMenu = () => {
60
+ this.menuAnchor = null;
61
+ };
62
+ get visibleItems() {
63
+ return this.items.filter(item => item.isVisible !== false);
64
+ }
65
+ handleMenuItemSelect = (event) => {
66
+ const { item, parent } = event.detail;
67
+ if (item.action) {
68
+ item.action(item, parent);
69
+ }
70
+ this.itemSelect.emit(event.detail);
71
+ this.closeMenu();
72
+ };
73
+ render() {
74
+ return (h(Host, { key: '4ebbcbdf3464aeeb0585b571b424375e0493c7e9', class: { mobile: this.isTouchDevice }, style: { display: this.visible ? '' : 'none' } }, h("div", { key: '080b74a0e4e4d4a2e9dee3d23cce22ea5bed7423', class: { 'more-menu-wrapper': true, visible: this.visible } }, h("button", { key: 'b8bfb586ca544a1c6711ba76fe55246c844f7425', class: "more-menu-button", "data-testid": "more-menu-button", onClick: this.toggleMenu, "aria-label": this.terms['moreMenu.ariaLabel'] ?? 'More options' }, h("kritzel-icon", { key: 'c76314d63048ef91d24e09aab646098c15ec7edf', name: this.icon, size: this.iconSize })), h("kritzel-portal", { key: '07c10d2bdb2b0ded07206efe82bd5e1edc49d736', anchor: this.menuAnchor, offsetY: this.offsetY, onClose: this.closeMenu }, h("kritzel-menu", { key: 'b5a6d63d6f8a0ffb9fae4dcab6bae276b45c46b6', items: this.visibleItems, onItemSelect: this.handleMenuItemSelect })))));
75
+ }
76
+ static get style() { return kritzelMoreMenuCss(); }
77
+ }, [513, "kritzel-more-menu", {
78
+ "visible": [4],
79
+ "items": [16],
80
+ "icon": [1],
81
+ "iconSize": [2, "icon-size"],
82
+ "offsetY": [2, "offset-y"],
83
+ "terms": [16],
84
+ "menuAnchor": [32],
85
+ "isTouchDevice": [32]
86
+ }]);
87
+ function defineCustomElement() {
88
+ if (typeof customElements === "undefined") {
89
+ return;
90
+ }
91
+ const components = ["kritzel-more-menu", "kritzel-icon", "kritzel-menu", "kritzel-menu-item", "kritzel-portal"];
92
+ components.forEach(tagName => { switch (tagName) {
93
+ case "kritzel-more-menu":
94
+ if (!customElements.get(transformTag(tagName))) {
95
+ customElements.define(transformTag(tagName), KritzelMoreMenu);
96
+ }
97
+ break;
98
+ case "kritzel-icon":
99
+ if (!customElements.get(transformTag(tagName))) {
100
+ defineCustomElement$4();
101
+ }
102
+ break;
103
+ case "kritzel-menu":
104
+ if (!customElements.get(transformTag(tagName))) {
105
+ defineCustomElement$3();
106
+ }
107
+ break;
108
+ case "kritzel-menu-item":
109
+ if (!customElements.get(transformTag(tagName))) {
110
+ defineCustomElement$2();
111
+ }
112
+ break;
113
+ case "kritzel-portal":
114
+ if (!customElements.get(transformTag(tagName))) {
115
+ defineCustomElement$1();
116
+ }
117
+ break;
118
+ } });
119
+ }
120
+
121
+ export { KritzelMoreMenu as K, defineCustomElement as d };