@luzmo/lucero 1.0.1-alpha.75 → 1.0.1-alpha.76

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.
@@ -15,4 +15,4 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./decorate-B2wePfNm.cjs`),t=require(`./sized-mixin-StFA4y0J.cjs`),n=require(`./accordion-BHBIfsLU.cjs`),r=require(`./focus-visible-B0NNezGc.cjs`),ee=require(`./focusable-CupEoHmn.cjs`),te=require(`./action-group-_q2IXCTA.cjs`),ne=require(`./icon-B7hKwn_q.cjs`),re=require(`./close-button-BBS0yPPn.cjs`),i=require(`./field-label-BCl6R1uO.cjs`),a=require(`./popover-dgL04x6P.cjs`),o=require(`./action-bar-CbKZF_2G.cjs`),s=require(`./action-button-tCbNcYUx.cjs`);require(`./action-group/index.cjs`);const c=require(`./slottable-request-event-gAcEQan2.cjs`),l=require(`./progress-circle-DuzwUiGN.cjs`),u=require(`./menu-Dq2NNHd_.cjs`),d=require(`./overlay-CHtwBXLh.cjs`),f=require(`./platform-B7Sk7Qon.cjs`),p=require(`./overlay-C3P3Gdy9.cjs`);require(`./progress-circle/index.cjs`);const m=require(`./tooltip-DY1trLtg.cjs`),h=require(`./picker-C22kQvKB.cjs`);require(`./popover/index.cjs`);const g=require(`./action-menu-DkVAAiRp.cjs`),_=require(`./avatar-PulwjkMI.cjs`),v=require(`./badge-D2EdIUaF.cjs`),y=require(`./button-BoviDKKy.cjs`),b=require(`./button-group-rEK_YaF3.cjs`),x=require(`./calendar-CGn8TDAY.cjs`),S=require(`./chat-message-BckksFOC.cjs`),C=require(`./chat-message-group-CfHUx2fe.cjs`),w=require(`./checkbox-DFwDrIdY.cjs`),T=require(`./color-loupe-DMk8uWZW.cjs`),E=require(`./color-handle-Cka48yPY.cjs`),D=require(`./streaming-listener-BnDW38lt.cjs`),O=require(`./color-area-DA3ps2-c.cjs`),k=require(`./text-field-FJr8ZUhI.cjs`),A=require(`./color-field-D7_7z2A2.cjs`);require(`./color-loupe/index.cjs`);const j=require(`./color-slider-BZXG0kff.cjs`),M=require(`./divider-Dn8XqbB6.cjs`),N=require(`./swatch-G70JUe6I.cjs`),P=require(`./color-menu-Di1En8ui.cjs`),F=require(`./color-palette-349EkPMg.cjs`),I=require(`./color-palette-group-CU0D1BZd.cjs`),L=require(`./color-picker-DxkRfA-z.cjs`),ie=require(`./picker-button-CMMx_5FG.cjs`),R=require(`./date-range-picker-BHStnZCd.cjs`),z=require(`./date-time-picker-CbU_JpB3.cjs`),B=require(`./field-group-OcI5Lgu7.cjs`);require(`./field-group/index.cjs`),require(`./field-label/index.cjs`);const V=require(`./infield-button-D0yBjCc5.cjs`),H=require(`./label-CqolZbJo.cjs`),U=require(`./text-field-A4Obzs4l.cjs`),W=require(`./multi-language-field-DmoMyCBH.cjs`),G=require(`./number-field-D70tCHtt.cjs`),K=require(`./options-GJRfOs9D.cjs`);require(`./picker/index.cjs`);const q=require(`./progress-bar-BYy5bZF_.cjs`),J=require(`./progress-steps-qejAq9Oo.cjs`),Y=require(`./tags-B2LW39FR.cjs`),X=require(`./prompt-box-rYH_i-0U.cjs`),ae=require(`./voice-recorder-BUtmSvPO.cjs`),Z=require(`./radio-CA62SM4D.cjs`),oe=require(`./search-B5HTJF_L.cjs`),se=require(`./select-nyqRzkv7.cjs`),ce=require(`./slider-D8w2ipBg.cjs`),le=require(`./status-light-BG_kopZQ.cjs`),ue=require(`./switch-nuCOB2P3.cjs`),Q=require(`./tabs-BYgwazEx.cjs`),$=require(`./top-nav-DZO8yZs6.cjs`),de=require(`./toast-CWsP0DZB.cjs`);require(`./utils.cjs`),exports.ClickController=d.s,exports.DESCRIPTION_ID=h.t,exports.ELEMENT_MIME_TYPE=X.n,exports.ElementSizes=t.t,exports.FocusVisiblePolyfillMixin=r.t,exports.Focusable=ee.t,exports.HoverController=d.o,exports.InteractionController=d.c,exports.InteractionTypes=d.l,exports.LONGPRESS_INSTRUCTIONS=d.i,exports.LongpressController=d.a,exports.LuzmoAbstractOverlay=d.h,exports.LuzmoAccordion=n.n,exports.LuzmoAccordionItem=n.t,exports.LuzmoActionBar=o.t,exports.LuzmoActionButton=s.t,exports.LuzmoActionGroup=te.t,exports.LuzmoActionMenu=g.t,exports.LuzmoAvatar=_.t,exports.LuzmoBadge=v.t,exports.LuzmoButton=y.n,exports.LuzmoButtonGroup=b.t,exports.LuzmoCalendar=x.t,exports.LuzmoChatMessage=S.t,exports.LuzmoChatMessageGroup=C.t,exports.LuzmoCheckbox=w.t,exports.LuzmoClearButton=y.t,exports.LuzmoCloseButton=re.t,exports.LuzmoColorArea=O.t,exports.LuzmoColorField=A.t,exports.LuzmoColorHandle=E.t,exports.LuzmoColorLoupe=T.t,exports.LuzmoColorMenu=P.t,exports.LuzmoColorPalette=F.t,exports.LuzmoColorPaletteGroup=I.t,exports.LuzmoColorPicker=L.t,exports.LuzmoColorSlider=j.t,exports.LuzmoDateRangePicker=R.t,exports.LuzmoDateTimePicker=z.t,exports.LuzmoDivider=M.t,exports.LuzmoElement=e.n,exports.LuzmoFieldGroup=B.t,exports.LuzmoFieldLabel=i.t,exports.LuzmoHelpText=U.t,exports.LuzmoIcon=ne.t,exports.LuzmoInfieldButton=V.t,exports.LuzmoLabel=H.t,exports.LuzmoMenu=u.a,exports.LuzmoMenuDivider=u.i,exports.LuzmoMenuGroup=u.r,exports.LuzmoMenuItem=u.t,exports.LuzmoMixin=e.r,exports.LuzmoMultiLangField=W.t,exports.LuzmoNumberField=G.t,exports.LuzmoOption=K.i,exports.LuzmoOptions=K.t,exports.LuzmoOptionsDivider=K.r,exports.LuzmoOverlay=d.t,exports.LuzmoOverlayTrigger=p.o,exports.LuzmoPicker=h.n,exports.LuzmoPickerBase=h.r,exports.LuzmoPickerButton=ie.t,exports.LuzmoPopover=a.t,exports.LuzmoProgressBar=q.t,exports.LuzmoProgressCircle=l.t,exports.LuzmoProgressSteps=J.t,exports.LuzmoPromptBox=X.t,exports.LuzmoRadio=Z.n,exports.LuzmoRadioGroup=Z.t,exports.LuzmoSearch=oe.t,exports.LuzmoSelect=se.t,exports.LuzmoSlider=ce.t,exports.LuzmoStatusLight=le.t,exports.LuzmoSwatch=N.n,exports.LuzmoSwatchGroup=N.t,exports.LuzmoSwitch=ue.t,exports.LuzmoTab=Q.i,exports.LuzmoTabPanel=Q.r,exports.LuzmoTabs=Q.n,exports.LuzmoTabsOverflow=Q.t,exports.LuzmoTag=Y.n,exports.LuzmoTags=Y.t,exports.LuzmoTextField=k.t,exports.LuzmoToast=de.t,exports.LuzmoTooltip=m.t,exports.LuzmoTopNav=$.n,exports.LuzmoTopNavItem=$.t,exports.MenuItemAddedOrUpdatedEvent=u.n,exports.OverlayTriggerDirective=p.t,exports.PlacementController=d.f,exports.SAFARI_FOCUS_RING_CLASS=d.u,exports.SizedMixin=t.n,exports.SlottableRequestDirective=p.r,exports.SlottableRequestEvent=c.t,exports.VIRTUALIZE_AS_OF_NUM_ITEMS=K.n,exports.VirtualTrigger=d.m,exports.VoiceRecorder=ae.t,exports.guaranteedAllTransitionend=d.g,exports.isAndroid=f.t,exports.isAppleDevice=f.n,exports.isChrome=f.r,exports.isFirefox=f.i,exports.isIOS=f.a,exports.isIPad=f.o,exports.isIPhone=f.s,exports.isMac=f.c,exports.isSeamonkey=f.l,exports.isWebKit=f.u,exports.lastInteractionType=d.d,exports.nextFrame=d._,exports.noop=d.v,exports.openOverlay=p.a,exports.overlayTimer=d.y,exports.placementUpdatedSymbol=d.p,exports.removeSlottableRequest=c.n,exports.slottableRequest=p.i,exports.streamingListener=D.t,exports.trigger=p.n;
18
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./decorate-B2wePfNm.cjs`),t=require(`./sized-mixin-StFA4y0J.cjs`),n=require(`./accordion-BHBIfsLU.cjs`),r=require(`./focus-visible-B0NNezGc.cjs`),ee=require(`./focusable-CupEoHmn.cjs`),te=require(`./action-group-_q2IXCTA.cjs`),ne=require(`./icon-B7hKwn_q.cjs`),re=require(`./close-button-BBS0yPPn.cjs`),i=require(`./field-label-BCl6R1uO.cjs`),a=require(`./popover-dgL04x6P.cjs`),o=require(`./action-bar-CbKZF_2G.cjs`),s=require(`./action-button-tCbNcYUx.cjs`);require(`./action-group/index.cjs`);const c=require(`./slottable-request-event-gAcEQan2.cjs`),l=require(`./progress-circle-DuzwUiGN.cjs`),u=require(`./menu-Dq2NNHd_.cjs`),d=require(`./overlay-CHtwBXLh.cjs`),f=require(`./platform-B7Sk7Qon.cjs`),p=require(`./overlay-C3P3Gdy9.cjs`);require(`./progress-circle/index.cjs`);const m=require(`./tooltip-DY1trLtg.cjs`),h=require(`./picker-C22kQvKB.cjs`);require(`./popover/index.cjs`);const g=require(`./action-menu-DkVAAiRp.cjs`),_=require(`./avatar-PulwjkMI.cjs`),v=require(`./badge-D2EdIUaF.cjs`),y=require(`./button-BoviDKKy.cjs`),b=require(`./button-group-rEK_YaF3.cjs`),x=require(`./calendar-CGn8TDAY.cjs`),S=require(`./chat-message-BckksFOC.cjs`),C=require(`./chat-message-group-CfHUx2fe.cjs`),w=require(`./checkbox-DFwDrIdY.cjs`),T=require(`./color-loupe-DMk8uWZW.cjs`),E=require(`./color-handle-Cka48yPY.cjs`),D=require(`./streaming-listener-BnDW38lt.cjs`),O=require(`./color-area-DA3ps2-c.cjs`),k=require(`./text-field-FJr8ZUhI.cjs`),A=require(`./color-field-D7_7z2A2.cjs`);require(`./color-loupe/index.cjs`);const j=require(`./color-slider-BZXG0kff.cjs`),M=require(`./divider-Dn8XqbB6.cjs`),N=require(`./swatch-G70JUe6I.cjs`),P=require(`./color-menu-Di1En8ui.cjs`),F=require(`./color-palette-349EkPMg.cjs`),I=require(`./color-palette-group-CU0D1BZd.cjs`),L=require(`./color-picker-DxkRfA-z.cjs`),ie=require(`./picker-button-CMMx_5FG.cjs`),R=require(`./date-range-picker-BHStnZCd.cjs`),z=require(`./date-time-picker-CbU_JpB3.cjs`),B=require(`./field-group-OcI5Lgu7.cjs`);require(`./field-group/index.cjs`),require(`./field-label/index.cjs`);const V=require(`./infield-button-D0yBjCc5.cjs`),H=require(`./label-CqolZbJo.cjs`),U=require(`./text-field-A4Obzs4l.cjs`),W=require(`./multi-language-field-DmoMyCBH.cjs`),G=require(`./number-field-D70tCHtt.cjs`),K=require(`./options-GJRfOs9D.cjs`);require(`./picker/index.cjs`);const q=require(`./progress-bar-BYy5bZF_.cjs`),J=require(`./progress-steps-qejAq9Oo.cjs`),Y=require(`./tags-B2LW39FR.cjs`),X=require(`./prompt-box-CtHVTfLx.cjs`),ae=require(`./voice-recorder-BUtmSvPO.cjs`),Z=require(`./radio-CA62SM4D.cjs`),oe=require(`./search-B5HTJF_L.cjs`),se=require(`./select-nyqRzkv7.cjs`),ce=require(`./slider-D8w2ipBg.cjs`),le=require(`./status-light-BG_kopZQ.cjs`),ue=require(`./switch-nuCOB2P3.cjs`),Q=require(`./tabs-BYgwazEx.cjs`),$=require(`./top-nav-DZO8yZs6.cjs`),de=require(`./toast-CWsP0DZB.cjs`);require(`./utils.cjs`),exports.ClickController=d.s,exports.DESCRIPTION_ID=h.t,exports.ELEMENT_MIME_TYPE=X.n,exports.ElementSizes=t.t,exports.FocusVisiblePolyfillMixin=r.t,exports.Focusable=ee.t,exports.HoverController=d.o,exports.InteractionController=d.c,exports.InteractionTypes=d.l,exports.LONGPRESS_INSTRUCTIONS=d.i,exports.LongpressController=d.a,exports.LuzmoAbstractOverlay=d.h,exports.LuzmoAccordion=n.n,exports.LuzmoAccordionItem=n.t,exports.LuzmoActionBar=o.t,exports.LuzmoActionButton=s.t,exports.LuzmoActionGroup=te.t,exports.LuzmoActionMenu=g.t,exports.LuzmoAvatar=_.t,exports.LuzmoBadge=v.t,exports.LuzmoButton=y.n,exports.LuzmoButtonGroup=b.t,exports.LuzmoCalendar=x.t,exports.LuzmoChatMessage=S.t,exports.LuzmoChatMessageGroup=C.t,exports.LuzmoCheckbox=w.t,exports.LuzmoClearButton=y.t,exports.LuzmoCloseButton=re.t,exports.LuzmoColorArea=O.t,exports.LuzmoColorField=A.t,exports.LuzmoColorHandle=E.t,exports.LuzmoColorLoupe=T.t,exports.LuzmoColorMenu=P.t,exports.LuzmoColorPalette=F.t,exports.LuzmoColorPaletteGroup=I.t,exports.LuzmoColorPicker=L.t,exports.LuzmoColorSlider=j.t,exports.LuzmoDateRangePicker=R.t,exports.LuzmoDateTimePicker=z.t,exports.LuzmoDivider=M.t,exports.LuzmoElement=e.n,exports.LuzmoFieldGroup=B.t,exports.LuzmoFieldLabel=i.t,exports.LuzmoHelpText=U.t,exports.LuzmoIcon=ne.t,exports.LuzmoInfieldButton=V.t,exports.LuzmoLabel=H.t,exports.LuzmoMenu=u.a,exports.LuzmoMenuDivider=u.i,exports.LuzmoMenuGroup=u.r,exports.LuzmoMenuItem=u.t,exports.LuzmoMixin=e.r,exports.LuzmoMultiLangField=W.t,exports.LuzmoNumberField=G.t,exports.LuzmoOption=K.i,exports.LuzmoOptions=K.t,exports.LuzmoOptionsDivider=K.r,exports.LuzmoOverlay=d.t,exports.LuzmoOverlayTrigger=p.o,exports.LuzmoPicker=h.n,exports.LuzmoPickerBase=h.r,exports.LuzmoPickerButton=ie.t,exports.LuzmoPopover=a.t,exports.LuzmoProgressBar=q.t,exports.LuzmoProgressCircle=l.t,exports.LuzmoProgressSteps=J.t,exports.LuzmoPromptBox=X.t,exports.LuzmoRadio=Z.n,exports.LuzmoRadioGroup=Z.t,exports.LuzmoSearch=oe.t,exports.LuzmoSelect=se.t,exports.LuzmoSlider=ce.t,exports.LuzmoStatusLight=le.t,exports.LuzmoSwatch=N.n,exports.LuzmoSwatchGroup=N.t,exports.LuzmoSwitch=ue.t,exports.LuzmoTab=Q.i,exports.LuzmoTabPanel=Q.r,exports.LuzmoTabs=Q.n,exports.LuzmoTabsOverflow=Q.t,exports.LuzmoTag=Y.n,exports.LuzmoTags=Y.t,exports.LuzmoTextField=k.t,exports.LuzmoToast=de.t,exports.LuzmoTooltip=m.t,exports.LuzmoTopNav=$.n,exports.LuzmoTopNavItem=$.t,exports.MenuItemAddedOrUpdatedEvent=u.n,exports.OverlayTriggerDirective=p.t,exports.PlacementController=d.f,exports.SAFARI_FOCUS_RING_CLASS=d.u,exports.SizedMixin=t.n,exports.SlottableRequestDirective=p.r,exports.SlottableRequestEvent=c.t,exports.VIRTUALIZE_AS_OF_NUM_ITEMS=K.n,exports.VirtualTrigger=d.m,exports.VoiceRecorder=ae.t,exports.guaranteedAllTransitionend=d.g,exports.isAndroid=f.t,exports.isAppleDevice=f.n,exports.isChrome=f.r,exports.isFirefox=f.i,exports.isIOS=f.a,exports.isIPad=f.o,exports.isIPhone=f.s,exports.isMac=f.c,exports.isSeamonkey=f.l,exports.isWebKit=f.u,exports.lastInteractionType=d.d,exports.nextFrame=d._,exports.noop=d.v,exports.openOverlay=p.a,exports.overlayTimer=d.y,exports.placementUpdatedSymbol=d.p,exports.removeSlottableRequest=c.n,exports.slottableRequest=p.i,exports.streamingListener=D.t,exports.trigger=p.n;
@@ -83,7 +83,7 @@ import "./picker/index.js";
83
83
  import { t as Ue } from "./progress-bar-DJ298mpy.js";
84
84
  import { t as We } from "./progress-steps-D2-kfdZ8.js";
85
85
  import { n as Ge, t as Ke } from "./tags-ih8tgE5v.js";
86
- import { n as qe, t as Je } from "./prompt-box-BVZNd5e6.js";
86
+ import { n as qe, t as Je } from "./prompt-box-CPBWEbXr.js";
87
87
  import { t as Ye } from "./voice-recorder-477xPHRU.js";
88
88
  import { n as Xe, t as Ze } from "./radio-BCtSDn6V.js";
89
89
  import { t as Qe } from "./search-B9bSRHug.js";
@@ -61,6 +61,12 @@ export declare class RichInputController implements ReactiveController {
61
61
  /** Plain text + inline labels, in segment order (used for `value` / textarea parity). */
62
62
  private _segmentsToPlainText;
63
63
  private _cannotEditRichContent;
64
+ /**
65
+ * When there are no badges and no visible text, contenteditable still often
66
+ * leaves `<br>` or zero-width-only nodes. That prevents `:empty` from matching,
67
+ * so the CSS placeholder pseudo-element stays hidden. Clear the DOM in that case.
68
+ */
69
+ private _cleanupSemanticallyEmptyRichInput;
64
70
  syncValue(): void;
65
71
  private _parseSegments;
66
72
  private _createBadgeNode;
@@ -15,4 +15,4 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../prompt-box-rYH_i-0U.cjs`);exports.ELEMENT_MIME_TYPE=e.n,exports.LuzmoPromptBox=e.t;
18
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../prompt-box-CtHVTfLx.cjs`);exports.ELEMENT_MIME_TYPE=e.n,exports.LuzmoPromptBox=e.t;
@@ -21,5 +21,5 @@
21
21
  e.setAttribute("data-luzmo-vars", ""), e.textContent = "html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-full-down: color-mix(in oklch, var(--luzmo-border-color-full), black 45%);--luzmo-border-color-full-focus: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-highlight-down: color-mix(in oklch, var(--luzmo-background-color-highlight), black 45%);--luzmo-background-color-highlight-focus: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-down: color-mix(in oklch, var(--luzmo-primary), black 20%);--luzmo-primary-focus: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #d000d0;--luzmo-secondary-hover: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-down: color-mix(in oklch, var(--luzmo-secondary), black 20%);--luzmo-secondary-focus: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 208, 0, 208;--luzmo-scrollbar-size: 6px;--luzmo-scrollbar-thumb-background: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-scrollbar-thumb-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-hover-background: rgba( var(--luzmo-border-color-rgb), 0.4 );--luzmo-scrollbar-track-background: transparent;--luzmo-scrollbar-track-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-width: thin;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-down: color-mix(in oklch, var(--luzmo-negative-color), black 20%);--luzmo-negative-color-focus: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-negative-inverse-color: #ffffff;--luzmo-positive-color: rgb(18, 133, 90);--luzmo-positive-color-hover: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-down: color-mix(in oklch, var(--luzmo-positive-color), black 20%);--luzmo-positive-color-focus: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-rgb: 18, 133, 90;--luzmo-positive-inverse-color: #ffffff;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-down: color-mix(in oklch, var(--luzmo-selected-color), black 45%);--luzmo-selected-color-focus: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-selected-color-hard-down: color-mix(in oklch, var(--luzmo-selected-color-hard), black 45%);--luzmo-selected-color-hard-focus: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-informative-color: #1670dd;--luzmo-informative-color-rgb: 22, 112, 221;--luzmo-notice-color: rgb(229, 127, 0);--luzmo-seafoam-color: rgb(0, 140, 140);--luzmo-indigo-color: rgb(68, 52, 255);--luzmo-purple-color: rgb(112, 48, 210);--luzmo-fuchsia-color: rgb(205, 30, 170);--luzmo-magenta-color: rgb(203, 36, 98);--luzmo-yellow-color: rgb(228, 208, 0);--luzmo-gray-color: rgb(110, 110, 110);--luzmo-red-color: rgb(202, 34, 28);--luzmo-orange-color: rgb(218, 123, 17);--luzmo-chartreuse-color: rgb(85, 135, 0);--luzmo-celery-color: rgb(48, 134, 22);--luzmo-green-color: rgb(18, 133, 90);--luzmo-cyan-color: rgb(0, 134, 180);--luzmo-blue-color: rgb(22, 112, 221);--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 10px;--luzmo-icon-size-xs: 12px;--luzmo-icon-size-s: 14px;--luzmo-icon-size-m: 16px;--luzmo-icon-size-l: 18px;--luzmo-icon-size-xl: 20px;--luzmo-icon-size-xxl: 32px}", document.head.appendChild(e);
22
22
  }
23
23
  })();
24
- import { n as e, t } from "../prompt-box-BVZNd5e6.js";
24
+ import { n as e, t } from "../prompt-box-CPBWEbXr.js";
25
25
  export { e as ELEMENT_MIME_TYPE, t as LuzmoPromptBox };
@@ -90,6 +90,7 @@ export declare class LuzmoPromptBox extends LuzmoPromptBox_base {
90
90
  * { key: '@', options: assetOptions, slotName: 'assets-menu' },
91
91
  * { key: '/', options: skillOptions, lazy: true }
92
92
  * ];
93
+ *
93
94
  * ```
94
95
  */
95
96
  get triggers(): TriggerConfig[];
@@ -573,10 +573,16 @@ var D = "application/x-luzmo-element", O = class {
573
573
  _cannotEditRichContent() {
574
574
  return !this._host.allowElements || this._host.disabled || this._host.readonly || this._host.pending;
575
575
  }
576
+ _cleanupSemanticallyEmptyRichInput(e) {
577
+ let t = this.richInputElement;
578
+ if (!t) return;
579
+ let n = this._elements.size === 0 && e.trim().length === 0, r = this._dragCaret?.parentNode === t;
580
+ !n || r || t.innerHTML === "" || (t.innerHTML = "", this._host.value = "");
581
+ }
576
582
  syncValue() {
577
583
  if (!this.richInputElement) return;
578
- let e = this._parseSegments();
579
- this._host.value = this._segmentsToPlainText(e), this._host.requestUpdate();
584
+ let e = this._parseSegments(), t = this._segmentsToPlainText(e);
585
+ this._host.value = t, this._cleanupSemanticallyEmptyRichInput(t), this._host.requestUpdate();
580
586
  }
581
587
  _parseSegments() {
582
588
  if (!this.richInputElement) return [];
@@ -16,7 +16,7 @@
16
16
  * SOFTWARE.
17
17
  * */
18
18
  require(`./chunk-D-qHiVGv.cjs`);const e=require(`./decorate-B2wePfNm.cjs`),t=require(`./sized-mixin-StFA4y0J.cjs`);require(`./icon-B7hKwn_q.cjs`),require(`./action-button-tCbNcYUx.cjs`);const n=require(`./overlay-CHtwBXLh.cjs`);require(`./overlay-C3P3Gdy9.cjs`),require(`./button-BoviDKKy.cjs`),require(`./text-field-A4Obzs4l.cjs`),require(`./tags-B2LW39FR.cjs`);const r=require(`./voice-recorder-BUtmSvPO.cjs`);let i=require(`lit`),a=require(`lit/decorators.js`),o=require(`@luzmo/icons`);var s=class{constructor(e){this._attachments=[],this._idCounter=0,this._host=e,e.addController(this)}hostConnected(){}hostDisconnected(){this._revokeAllPreviewUrls()}get attachments(){return this._attachments}get hasAttachments(){return this._attachments.length>0}get imageAttachments(){return this._attachments.filter(e=>this._isImageFile(e.file))}get fileAttachments(){return this._attachments.filter(e=>!this._isImageFile(e.file))}addFiles(e){if(this._host.disabled||this._host.readonly||this._host.pending)return[];let t=[];for(let n of e){if(this._isImageFile(n)&&!this._host.allowImages||!this._isImageFile(n)&&!this._host.allowFiles||!this._isFileTypeAccepted(n))continue;let e=this._generateId(),r={file:n,id:e};this._isImageFile(n)&&(r.previewUrl=URL.createObjectURL(n)),this._attachments=[...this._attachments,r],t.push(e)}return t.length>0&&(this._dispatchChange(),this._host.requestUpdate()),t}removeAttachment(e){let t=this._attachments.find(t=>t.id===e);t&&(t.previewUrl&&URL.revokeObjectURL(t.previewUrl),this._attachments=this._attachments.filter(t=>t.id!==e),this._dispatchChange(),this._host.requestUpdate())}clearAttachments(){this._revokeAllPreviewUrls(),this._attachments=[],this._dispatchChange(),this._host.requestUpdate()}getAttachments(){return[...this._attachments]}handlePastedImages(e){if(!this._host.allowImages||this._host.disabled||this._host.readonly||this._host.pending||!e)return!1;let t=[];for(let n of e.items)if(n.type.startsWith(`image/`)){let e=n.getAsFile();e&&t.push(e)}return t.length>0?(this.addFiles(t),!0):!1}getAcceptAttribute(){if(this._host.acceptedFileTypes.length>0)return this._host.acceptedFileTypes.join(`,`);let e=[];return this._host.allowImages&&e.push(`image/*`),this._host.allowFiles&&e.push(`*/*`),e.join(`,`)}isImageFile(e){return this._isImageFile(e)}_isImageFile(e){return e.type.startsWith(`image/`)}_isFileTypeAccepted(e){if(this._host.acceptedFileTypes.length===0)return!0;let t=e.name.toLowerCase(),n=e.type.toLowerCase();for(let e of this._host.acceptedFileTypes){let r=e.toLowerCase();if(r.endsWith(`/*`)){let e=r.slice(0,-2);if(n.startsWith(e+`/`))return!0}else if(n===r)return!0;else if(r.startsWith(`.`)&&t.endsWith(r))return!0}return!1}_generateId(){return`attachment-${++this._idCounter}-${Date.now()}`}_revokeAllPreviewUrls(){for(let e of this._attachments)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)}_dispatchChange(){this._host.dispatchEvent(new CustomEvent(`luzmo-attachments-change`,{bubbles:!0,composed:!0,detail:{attachments:this._attachments}}))}},c=class{constructor(e){this._voiceRecorder=null,this.isRecording=!1,this.duration=0,this.audioLevel=0,this.shouldFocusFinishButton=!1,this._host=e,e.addController(this)}hostConnected(){}hostDisconnected(){this._destroy()}async start(e){if(!r.t.isSupported()){this._host.dispatchEvent(new CustomEvent(`luzmo-record-error`,{bubbles:!0,composed:!0,detail:{error:`Voice recording is not supported in this browser`}}));return}if(this.isRecording){this.stop();return}this.shouldFocusFinishButton=e,this._init(),this._voiceRecorder&&(await this._voiceRecorder.startRecording()&&(this.isRecording=!0,this.duration=0,this.audioLevel=0,this._host.requestUpdate()),this._host.dispatchEvent(new CustomEvent(`luzmo-record`,{bubbles:!0,composed:!0,detail:{isRecording:this.isRecording}})))}stop(){this._voiceRecorder?.stopRecording()}cancel(){this._voiceRecorder?.cancelRecording(),this.isRecording=!1,this.duration=0,this.audioLevel=0,this._host.requestUpdate(),this._host.dispatchEvent(new CustomEvent(`luzmo-record-cancel`,{bubbles:!0,composed:!0}))}formatDuration(){return r.t.formatDuration(this.duration)}static isSupported(){return r.t.isSupported()}_init(){this._voiceRecorder||(this._voiceRecorder=new r.t({maxDuration:3e5}),this._voiceRecorder.onStart(()=>{this.isRecording=!0,this._host.requestUpdate()}).onStop(e=>{this.isRecording=!1,this.duration=0,this.audioLevel=0,this._host.requestUpdate(),this._host.dispatchEvent(new CustomEvent(`luzmo-recording-complete`,{bubbles:!0,composed:!0,detail:{audioBlob:e.audioBlob,duration:e.duration,mimeType:e.mimeType}}))}).onError(e=>{this.isRecording=!1,this.duration=0,this.audioLevel=0,this._host.requestUpdate(),this._host.dispatchEvent(new CustomEvent(`luzmo-record-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}).onAudioLevel(e=>{this.audioLevel=e,this._host.requestUpdate()}).onDurationUpdate(e=>{this.duration=e,this._host.requestUpdate()}))}_destroy(){this._voiceRecorder&&=(this._voiceRecorder.destroy(),null),this.isRecording=!1,this.duration=0,this.audioLevel=0}};function l(e,t){let n=document.createRange();return n.setStart(e,t),n.collapse(!0),n}function u(e,t,n){let r=e.getBoundingClientRect(),i=t-r.left,a=n-r.top;return i*i+a*a}function d(e,t,n,r){let i=0,a=t;for(;a-i>1;){let t=i+a>>>1,r=document.createRange();r.setStart(e,t),r.collapse(!0),r.getBoundingClientRect().left<n?i=t:a=t}let o=l(e,i),s=u(o,n,r),c=l(e,a),d=u(c,n,r);return d<s&&(o=c,s=d),{range:o,distSq:s}}function f(e,t,n,r){let i=null,a=1/0;for(let[o,s]of e.childNodes.entries())if(s!==r){if(s.nodeType===Node.TEXT_NODE){let e=(s.textContent??``).length;if(e===0)continue;let r=d(s,e,t,n);r.distSq<a&&(a=r.distSq,i=r.range)}else if(s.nodeType===Node.ELEMENT_NODE){let r=s.getBoundingClientRect();if(r.width===0&&r.height===0)continue;let c=r.left+r.width/2,u=l(e,o),d=l(e,o+1),f=t<c?u:d,p=n-(r.top+r.height/2),m=t<c?t-r.left:t-r.right,h=m*m+p*p;h<a&&(a=h,i=f)}}if(!i){let t=document.createRange();return t.selectNodeContents(e),t.collapse(!1),t}return i}function p(e,t,n,r,i){if(Number.isNaN(n)||Number.isNaN(r))return null;let a=null,o=e;if(o?.caretPositionFromPoint){let e=o.caretPositionFromPoint(n,r);e&&(a=l(e.offsetNode,e.offset))}else o?.caretRangeFromPoint&&(a=o.caretRangeFromPoint(n,r));if(!a)if(`caretPositionFromPoint`in document){let e=document.caretPositionFromPoint(n,r);e&&(a=l(e.offsetNode,e.offset))}else `caretRangeFromPoint`in document&&(a=document.caretRangeFromPoint(n,r));return(!a||!t.contains(a.startContainer))&&(a=f(t,n,r,i)),a}function m(e){if(e){let t=e.getSelection?.();if(t&&t.rangeCount>0)return t.getRangeAt(0)}let t=document.getSelection();if(!t||t.rangeCount===0)return null;let n=t.getRangeAt(0);if(!e||e.contains(n.startContainer))return n;let r=t;if(e&&r.getComposedRanges)try{let t=r.getComposedRanges(e);if(t.length>0){let e=t[0],n=document.createRange();return n.setStart(e.startContainer,e.startOffset),n.setEnd(e.endContainer,e.endOffset),n}}catch{}return null}function h(e,t){let n=document.getSelection();if(n)try{n.setBaseAndExtent(e,t,e,t)}catch{let r=document.createRange();r.setStart(e,t),r.collapse(!0),n.removeAllRanges(),n.addRange(r)}}function g(e){return e===` `||e===`
19
- `||e===`\xA0`}function ee(e){let t=m(e);if(!t||!t.collapsed)return!1;let n=t.startContainer,r=t.startOffset;if(n.nodeType===Node.TEXT_NODE){if(r>=2)return g(n.textContent?.charAt(r-2)??``);let e=n.previousSibling;if(!e||e.nodeType===Node.ELEMENT_NODE&&e.classList?.contains(`element-badge`))return!0;let t=e.textContent??``;return t.length===0?!0:g(t.at(-1)??``)}if(n.nodeType===Node.ELEMENT_NODE){if(r===0)return!0;let e=n.childNodes[r-1];if(!e||e.nodeType===Node.ELEMENT_NODE&&e.classList?.contains(`element-badge`))return!0;if(e.nodeType===Node.TEXT_NODE){let t=e.textContent??``;return t.length===0?!0:g(t.at(-1)??``)}}return!1}function _(e,t){let n=m(e);if(!n){if(!t)return null;let e=t.getBoundingClientRect();return{x:e.left,y:e.bottom}}let r=n.cloneRange();r.collapse(!0);let i=r.startContainer,a=r.startOffset;if(i.nodeType===Node.TEXT_NODE&&a>0){let e=document.createRange();e.setStart(i,a-1),e.setEnd(i,a);let t=e.getBoundingClientRect();if(t.width>0||t.height>0)return{x:t.left,y:t.bottom}}let o=r.getBoundingClientRect();if(o.width===0&&o.height===0&&o.x===0){if(t){let e=t.getBoundingClientRect();return{x:e.left,y:e.bottom}}return null}return{x:o.left,y:o.bottom}}function v(e,t){let n=m(e);if(!n||!n.collapsed)return null;let r=n.startContainer,i=n.startOffset;if(r.nodeType!==Node.TEXT_NODE)return null;let a=(r.textContent??``).slice(0,Math.max(0,i)),o=a.lastIndexOf(t);return o===-1?null:a.slice(Math.max(0,o+1))}function y(e,t){if(e.focus(),!t)return;let n=e.querySelector(`[data-element-id="${t}"]`);if(!n)return;let r=n.nextSibling;if(r&&r.nodeType===Node.TEXT_NODE){let e=r.textContent??``,t=e.indexOf(` `);h(r,t===-1?e.length:t+1);return}let i=document.getSelection();if(!i)return;let a=document.createRange();a.setStartAfter(n),a.collapse(!0),i.removeAllRanges(),i.addRange(a)}function b(e,t,n,r){let i=m(e);if(i){let e=i.startContainer,r=i.startOffset;if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){let t=e.textContent??``,i=t.slice(0,Math.max(0,r)).lastIndexOf(n);if(i!==-1){e.textContent=t.slice(0,Math.max(0,i))+t.slice(Math.max(0,r)),h(e,i);return}}}let a=n+(r??``),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),s;for(;s=o.nextNode();){let e=s.textContent??``,n=e.lastIndexOf(a);if(n!==-1){s.textContent=e.slice(0,Math.max(0,n))+e.slice(Math.max(0,n+a.length)),t.focus(),h(s,n);return}}}var x=`application/x-luzmo-element`,S=class{constructor(e){this._elements=new Map,this._idCounter=0,this._dragCaret=null,this.isDragOver=!1,this.richInputElement=null,this.handleRichInput=()=>{this.syncValue(),this._host.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0}))},this.handleRichPaste=e=>{if(e.preventDefault(),this._cannotEditRichContent())return;if(this._host.allowImages&&e.clipboardData&&this._host.handlePastedImages(e.clipboardData)){e.stopPropagation();return}let t=e.clipboardData?.getData(`text/plain`)??``;if(t){let e=m(this._host.shadowRoot);if(e){e.deleteContents(),e.insertNode(document.createTextNode(t)),e.collapse(!1);let n=document.getSelection();n&&(n.removeAllRanges(),n.addRange(e))}this.syncValue(),this._host.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0}))}},this.handleRichDragOver=e=>{this._cannotEditRichContent()||e.dataTransfer?.types.includes(`application/x-luzmo-element`)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),this.isDragOver=!0,this._host.requestUpdate(),this._positionCaretAtPoint(e.clientX,e.clientY),this._showDragCaret(e.clientX,e.clientY))},this.handleRichDragLeave=e=>{let t=e.relatedTarget;(!t||!this.richInputElement?.contains(t))&&(this.isDragOver=!1,this._hideDragCaret(),this._host.requestUpdate())},this.handleRichDrop=e=>{if(e.preventDefault(),this.isDragOver=!1,this._hideDragCaret(),this._cannotEditRichContent()){this._host.requestUpdate();return}let t=e.dataTransfer?.getData(x);if(!t){this._host.requestUpdate();return}try{let n=JSON.parse(t);if(n.elementType&&n.label){this.richInputElement?.focus();let t=this.richInputElement?p(this._host.shadowRoot,this.richInputElement,e.clientX,e.clientY,this._dragCaret):null;this._insertElementAtRange(n.elementType,n.label,n.data??null,void 0,t)}this._host.requestUpdate()}catch{this._host.requestUpdate()}},this._host=e,e.addController(this)}hostConnected(){}hostDisconnected(){}get elements(){return this._elements}get elementCount(){return this._elements.size}getSegments(){return!this._host.allowElements||!this.richInputElement?[{type:`text`,value:this._host.value}]:this._parseSegments()}setSegments(e){if(!this._host.allowElements){this._host.value=this._segmentsToPlainText(e);return}this._elements.clear(),this._host.updateComplete.then(()=>{if(this.richInputElement){this.richInputElement.innerHTML=``;for(let t of e)if(t.type===`text`&&t.value)this.richInputElement.append(document.createTextNode(t.value));else if(t.type===`element`&&t.value){let e={...t.value};e.id||=this._generateId(),this._elements.set(e.id,e),this.richInputElement.append(this._createBadgeNode(e))}this.syncValue()}})}insertElement(e,t,n,r){return this._insertElementAtRange(e,t,n,r,null)}_insertElementAtRange(e,t,n,r,i){if(this._cannotEditRichContent()||this._host.acceptedElementTypes.length>0&&!this._host.acceptedElementTypes.includes(e)||!this.richInputElement)return``;let a=this._generateId(),o={id:a,elementType:e,label:t,data:n,icon:r};this._elements.set(a,o);let s=this._createBadgeNode(o),c=this.richInputElement,l=!1,u=i===null?this._getSelectionRange():i;if(u&&c.contains(u.commonAncestorContainer)){u.deleteContents(),u.insertNode(s);let e=s.previousSibling;if(e?.nodeType===Node.TEXT_NODE){let t=e.previousSibling;t?.classList?.contains(`element-badge`)&&this._ensureSpaceAfter(t)}this._ensureSpaceAfter(s),y(c,a),l=!0}return l||(c.append(s),this._ensureSpaceAfter(s),y(c,a)),this.syncValue(),this._host.dispatchEvent(new CustomEvent(`luzmo-element-inserted`,{bubbles:!0,composed:!0,detail:{element:o}})),a}_getSelectionRange(){return m(this._host.shadowRoot)}removeElement(e){let t=this._elements.get(e);if(!t)return;this._elements.delete(e);let n=this.richInputElement?.querySelector(`[data-element-id="${e}"]`);if(n){let e=n.nextSibling;if(n.remove(),e&&e.nodeType===Node.TEXT_NODE){let t=(e.textContent??``).replaceAll(`​`,``);t?e.textContent=t:e.remove()}this.syncValue()}this._host.dispatchEvent(new CustomEvent(`luzmo-element-removed`,{bubbles:!0,composed:!0,detail:{element:t}}))}getElements(){return[...this._elements.values()]}clearElements(){this._elements.clear(),this.richInputElement&&(this.richInputElement.innerHTML=``)}handleBadgeDelete(e){let t=m(this._host.shadowRoot);if(!t||!t.collapsed)return!1;let n=e===`Backspace`?this._findBadgeBefore(t.startContainer,t.startOffset):e===`Delete`?this._findBadgeAfter(t.startContainer,t.startOffset):null;return n?.dataset.elementId?(this.removeElement(n.dataset.elementId),!0):!1}_findBadgeBefore(e,t){if(e.nodeType===Node.ELEMENT_NODE){let n=e.childNodes[t-1];if(n?.classList?.contains(`element-badge`))return n}else if(e.nodeType===Node.TEXT_NODE)if(t===0){let t=e.previousSibling;if(t?.classList?.contains(`element-badge`))return t}else{let n=(e.textContent??``).slice(0,t);if(/^[\u200B\uFEFF]*$/.test(n)){let t=e.previousSibling;if(t?.classList?.contains(`element-badge`))return t}}return null}_findBadgeAfter(e,t){if(e.nodeType===Node.ELEMENT_NODE){let n=e.childNodes[t];if(n?.classList?.contains(`element-badge`))return n}else if(e.nodeType===Node.TEXT_NODE){let n=e.textContent??``;if(t===n.length){let t=e.nextSibling;if(t?.classList?.contains(`element-badge`))return t}else{let r=n.slice(t);if(/^[\u200B\uFEFF]*$/.test(r)){let t=e.nextSibling;if(t?.classList?.contains(`element-badge`))return t}}}return null}_segmentsToPlainText(e){return e.map(e=>e.type===`text`?e.value??``:e.value?.label??``).join(``)}_cannotEditRichContent(){return!this._host.allowElements||this._host.disabled||this._host.readonly||this._host.pending}syncValue(){if(!this.richInputElement)return;let e=this._parseSegments();this._host.value=this._segmentsToPlainText(e),this._host.requestUpdate()}_parseSegments(){if(!this.richInputElement)return[];let e=[];for(let t of this.richInputElement.childNodes)if(t.nodeType===Node.TEXT_NODE){let n=(t.textContent??``).replaceAll(`​`,``);n&&e.push({type:`text`,value:n})}else if(t.nodeType===Node.ELEMENT_NODE){let n=t;if(n.classList.contains(`drag-caret`))continue;if(n.classList.contains(`element-badge`)){let t=n.dataset.elementId??``,r=this._elements.get(t);r&&e.push({type:`element`,value:{...r}})}else if(n.tagName===`BR`)e.push({type:`text`,value:`
19
+ `||e===`\xA0`}function ee(e){let t=m(e);if(!t||!t.collapsed)return!1;let n=t.startContainer,r=t.startOffset;if(n.nodeType===Node.TEXT_NODE){if(r>=2)return g(n.textContent?.charAt(r-2)??``);let e=n.previousSibling;if(!e||e.nodeType===Node.ELEMENT_NODE&&e.classList?.contains(`element-badge`))return!0;let t=e.textContent??``;return t.length===0?!0:g(t.at(-1)??``)}if(n.nodeType===Node.ELEMENT_NODE){if(r===0)return!0;let e=n.childNodes[r-1];if(!e||e.nodeType===Node.ELEMENT_NODE&&e.classList?.contains(`element-badge`))return!0;if(e.nodeType===Node.TEXT_NODE){let t=e.textContent??``;return t.length===0?!0:g(t.at(-1)??``)}}return!1}function _(e,t){let n=m(e);if(!n){if(!t)return null;let e=t.getBoundingClientRect();return{x:e.left,y:e.bottom}}let r=n.cloneRange();r.collapse(!0);let i=r.startContainer,a=r.startOffset;if(i.nodeType===Node.TEXT_NODE&&a>0){let e=document.createRange();e.setStart(i,a-1),e.setEnd(i,a);let t=e.getBoundingClientRect();if(t.width>0||t.height>0)return{x:t.left,y:t.bottom}}let o=r.getBoundingClientRect();if(o.width===0&&o.height===0&&o.x===0){if(t){let e=t.getBoundingClientRect();return{x:e.left,y:e.bottom}}return null}return{x:o.left,y:o.bottom}}function v(e,t){let n=m(e);if(!n||!n.collapsed)return null;let r=n.startContainer,i=n.startOffset;if(r.nodeType!==Node.TEXT_NODE)return null;let a=(r.textContent??``).slice(0,Math.max(0,i)),o=a.lastIndexOf(t);return o===-1?null:a.slice(Math.max(0,o+1))}function y(e,t){if(e.focus(),!t)return;let n=e.querySelector(`[data-element-id="${t}"]`);if(!n)return;let r=n.nextSibling;if(r&&r.nodeType===Node.TEXT_NODE){let e=r.textContent??``,t=e.indexOf(` `);h(r,t===-1?e.length:t+1);return}let i=document.getSelection();if(!i)return;let a=document.createRange();a.setStartAfter(n),a.collapse(!0),i.removeAllRanges(),i.addRange(a)}function b(e,t,n,r){let i=m(e);if(i){let e=i.startContainer,r=i.startOffset;if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){let t=e.textContent??``,i=t.slice(0,Math.max(0,r)).lastIndexOf(n);if(i!==-1){e.textContent=t.slice(0,Math.max(0,i))+t.slice(Math.max(0,r)),h(e,i);return}}}let a=n+(r??``),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),s;for(;s=o.nextNode();){let e=s.textContent??``,n=e.lastIndexOf(a);if(n!==-1){s.textContent=e.slice(0,Math.max(0,n))+e.slice(Math.max(0,n+a.length)),t.focus(),h(s,n);return}}}var x=`application/x-luzmo-element`,S=class{constructor(e){this._elements=new Map,this._idCounter=0,this._dragCaret=null,this.isDragOver=!1,this.richInputElement=null,this.handleRichInput=()=>{this.syncValue(),this._host.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0}))},this.handleRichPaste=e=>{if(e.preventDefault(),this._cannotEditRichContent())return;if(this._host.allowImages&&e.clipboardData&&this._host.handlePastedImages(e.clipboardData)){e.stopPropagation();return}let t=e.clipboardData?.getData(`text/plain`)??``;if(t){let e=m(this._host.shadowRoot);if(e){e.deleteContents(),e.insertNode(document.createTextNode(t)),e.collapse(!1);let n=document.getSelection();n&&(n.removeAllRanges(),n.addRange(e))}this.syncValue(),this._host.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0}))}},this.handleRichDragOver=e=>{this._cannotEditRichContent()||e.dataTransfer?.types.includes(`application/x-luzmo-element`)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),this.isDragOver=!0,this._host.requestUpdate(),this._positionCaretAtPoint(e.clientX,e.clientY),this._showDragCaret(e.clientX,e.clientY))},this.handleRichDragLeave=e=>{let t=e.relatedTarget;(!t||!this.richInputElement?.contains(t))&&(this.isDragOver=!1,this._hideDragCaret(),this._host.requestUpdate())},this.handleRichDrop=e=>{if(e.preventDefault(),this.isDragOver=!1,this._hideDragCaret(),this._cannotEditRichContent()){this._host.requestUpdate();return}let t=e.dataTransfer?.getData(x);if(!t){this._host.requestUpdate();return}try{let n=JSON.parse(t);if(n.elementType&&n.label){this.richInputElement?.focus();let t=this.richInputElement?p(this._host.shadowRoot,this.richInputElement,e.clientX,e.clientY,this._dragCaret):null;this._insertElementAtRange(n.elementType,n.label,n.data??null,void 0,t)}this._host.requestUpdate()}catch{this._host.requestUpdate()}},this._host=e,e.addController(this)}hostConnected(){}hostDisconnected(){}get elements(){return this._elements}get elementCount(){return this._elements.size}getSegments(){return!this._host.allowElements||!this.richInputElement?[{type:`text`,value:this._host.value}]:this._parseSegments()}setSegments(e){if(!this._host.allowElements){this._host.value=this._segmentsToPlainText(e);return}this._elements.clear(),this._host.updateComplete.then(()=>{if(this.richInputElement){this.richInputElement.innerHTML=``;for(let t of e)if(t.type===`text`&&t.value)this.richInputElement.append(document.createTextNode(t.value));else if(t.type===`element`&&t.value){let e={...t.value};e.id||=this._generateId(),this._elements.set(e.id,e),this.richInputElement.append(this._createBadgeNode(e))}this.syncValue()}})}insertElement(e,t,n,r){return this._insertElementAtRange(e,t,n,r,null)}_insertElementAtRange(e,t,n,r,i){if(this._cannotEditRichContent()||this._host.acceptedElementTypes.length>0&&!this._host.acceptedElementTypes.includes(e)||!this.richInputElement)return``;let a=this._generateId(),o={id:a,elementType:e,label:t,data:n,icon:r};this._elements.set(a,o);let s=this._createBadgeNode(o),c=this.richInputElement,l=!1,u=i===null?this._getSelectionRange():i;if(u&&c.contains(u.commonAncestorContainer)){u.deleteContents(),u.insertNode(s);let e=s.previousSibling;if(e?.nodeType===Node.TEXT_NODE){let t=e.previousSibling;t?.classList?.contains(`element-badge`)&&this._ensureSpaceAfter(t)}this._ensureSpaceAfter(s),y(c,a),l=!0}return l||(c.append(s),this._ensureSpaceAfter(s),y(c,a)),this.syncValue(),this._host.dispatchEvent(new CustomEvent(`luzmo-element-inserted`,{bubbles:!0,composed:!0,detail:{element:o}})),a}_getSelectionRange(){return m(this._host.shadowRoot)}removeElement(e){let t=this._elements.get(e);if(!t)return;this._elements.delete(e);let n=this.richInputElement?.querySelector(`[data-element-id="${e}"]`);if(n){let e=n.nextSibling;if(n.remove(),e&&e.nodeType===Node.TEXT_NODE){let t=(e.textContent??``).replaceAll(`​`,``);t?e.textContent=t:e.remove()}this.syncValue()}this._host.dispatchEvent(new CustomEvent(`luzmo-element-removed`,{bubbles:!0,composed:!0,detail:{element:t}}))}getElements(){return[...this._elements.values()]}clearElements(){this._elements.clear(),this.richInputElement&&(this.richInputElement.innerHTML=``)}handleBadgeDelete(e){let t=m(this._host.shadowRoot);if(!t||!t.collapsed)return!1;let n=e===`Backspace`?this._findBadgeBefore(t.startContainer,t.startOffset):e===`Delete`?this._findBadgeAfter(t.startContainer,t.startOffset):null;return n?.dataset.elementId?(this.removeElement(n.dataset.elementId),!0):!1}_findBadgeBefore(e,t){if(e.nodeType===Node.ELEMENT_NODE){let n=e.childNodes[t-1];if(n?.classList?.contains(`element-badge`))return n}else if(e.nodeType===Node.TEXT_NODE)if(t===0){let t=e.previousSibling;if(t?.classList?.contains(`element-badge`))return t}else{let n=(e.textContent??``).slice(0,t);if(/^[\u200B\uFEFF]*$/.test(n)){let t=e.previousSibling;if(t?.classList?.contains(`element-badge`))return t}}return null}_findBadgeAfter(e,t){if(e.nodeType===Node.ELEMENT_NODE){let n=e.childNodes[t];if(n?.classList?.contains(`element-badge`))return n}else if(e.nodeType===Node.TEXT_NODE){let n=e.textContent??``;if(t===n.length){let t=e.nextSibling;if(t?.classList?.contains(`element-badge`))return t}else{let r=n.slice(t);if(/^[\u200B\uFEFF]*$/.test(r)){let t=e.nextSibling;if(t?.classList?.contains(`element-badge`))return t}}}return null}_segmentsToPlainText(e){return e.map(e=>e.type===`text`?e.value??``:e.value?.label??``).join(``)}_cannotEditRichContent(){return!this._host.allowElements||this._host.disabled||this._host.readonly||this._host.pending}_cleanupSemanticallyEmptyRichInput(e){let t=this.richInputElement;if(!t)return;let n=this._elements.size===0&&e.trim().length===0,r=this._dragCaret?.parentNode===t;!n||r||t.innerHTML===``||(t.innerHTML=``,this._host.value=``)}syncValue(){if(!this.richInputElement)return;let e=this._parseSegments(),t=this._segmentsToPlainText(e);this._host.value=t,this._cleanupSemanticallyEmptyRichInput(t),this._host.requestUpdate()}_parseSegments(){if(!this.richInputElement)return[];let e=[];for(let t of this.richInputElement.childNodes)if(t.nodeType===Node.TEXT_NODE){let n=(t.textContent??``).replaceAll(`​`,``);n&&e.push({type:`text`,value:n})}else if(t.nodeType===Node.ELEMENT_NODE){let n=t;if(n.classList.contains(`drag-caret`))continue;if(n.classList.contains(`element-badge`)){let t=n.dataset.elementId??``,r=this._elements.get(t);r&&e.push({type:`element`,value:{...r}})}else if(n.tagName===`BR`)e.push({type:`text`,value:`
20
20
  `});else{let t=n.textContent??``;t&&e.push({type:`text`,value:t})}}return e}_createBadgeNode(e){let t=document.createElement(`span`);if(t.className=`element-badge`,t.setAttribute(`contenteditable`,`false`),t.dataset.elementId=e.id,t.dataset.elementType=e.elementType,e.icon){let n=document.createElement(`luzmo-icon`);n.icon=e.icon,n.setAttribute(`size`,`xxs`),n.className=`element-badge-icon`,t.append(n)}let n=document.createElement(`span`);n.className=`element-badge-label`,n.textContent=e.label,t.append(n);let r=document.createElement(`button`);return r.type=`button`,r.setAttribute(`role`,`button`),r.tabIndex=-1,r.className=`element-badge-remove`,r.setAttribute(`contenteditable`,`false`),r.setAttribute(`aria-label`,`Remove ${e.label}`),r.textContent=`×`,r.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),this.removeElement(e.id)}),t.append(r),t}_ensureSpaceAfter(e){let t=e.nextSibling;if(t&&t.nodeType===Node.TEXT_NODE&&t.textContent){let e=t.textContent;if(e.startsWith(`​`)&&e.length>1)return;if(e.startsWith(` `)){t.textContent=`​`+e;return}if(/^\u200B+$/.test(e)){t.textContent=e+` `;return}}e.parentNode?.insertBefore(document.createTextNode(`​ `),t??null)}_showDragCaret(e,t){if(!this.richInputElement){this._hideDragCaret();return}let n=p(this._host.shadowRoot,this.richInputElement,e,t,this._dragCaret);if(!n){this._hideDragCaret();return}let r=n.getBoundingClientRect(),i=this.richInputElement.getBoundingClientRect(),a=r.left-i.left+this.richInputElement.scrollLeft,o=r.top-i.top+this.richInputElement.scrollTop,s=r.height;if(s===0){let e=getComputedStyle(this.richInputElement);s=Number.parseFloat(e.lineHeight)||Number.parseFloat(e.fontSize)||16,o=t-i.top+this.richInputElement.scrollTop-s/2}this._dragCaret||(this._dragCaret=document.createElement(`div`),this._dragCaret.className=`drag-caret`);let c=this._dragCaret;c.style.position=`absolute`,c.style.top=`${o}px`,c.style.left=`${a}px`,c.style.height=`${s}px`,c.parentNode||(this.richInputElement.style.position=`relative`,this.richInputElement.append(c))}_hideDragCaret(){this._dragCaret?.remove()}_generateId(){return`el-${++this._idCounter}-${Date.now()}`}_positionCaretAtPoint(e,t){if(!this.richInputElement)return;let n=p(this._host.shadowRoot,this.richInputElement,e,t,this._dragCaret);if(n){let e=document.getSelection();e&&(e.removeAllRanges(),e.addRange(n))}}},C=class{constructor(e){this._triggers=[],this.activeTrigger=null,this.searchString=``,this.virtualElement=null,this.highlightedIndex=0,this.pointerMovedSinceKeyNav=!0,this.hoveredIndex=-1,this.filteredOptions=[],this.richInputElement=null,this.handleOverlayClosed=()=>{this.close()},this.handleOverlayKeydown=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.close(),this.richInputElement?.focus())},this.handlePointerMove=()=>{this.pointerMovedSinceKeyNav=!0},this._handleTriggerSelect=e=>{if(!this.activeTrigger)return;let{elementType:t,label:n,data:r,icon:i}=e.detail;this.selectOption({label:n,value:n,data:r,icon:i,elementType:t})},this._handleDocumentPointerDown=e=>{let t=e.composedPath(),n=this._host.shadowRoot?.querySelector(`luzmo-overlay[part="trigger-menu-overlay"]`);n&&t.includes(n)||this.richInputElement&&t.includes(this.richInputElement)||(this.close(),this.richInputElement?.focus())},this._host=e,e.addController(this)}hostConnected(){this._host.addEventListener(`luzmo-trigger-select`,this._handleTriggerSelect)}hostDisconnected(){document.removeEventListener(`pointerdown`,this._handleDocumentPointerDown,!0),this._host.removeEventListener(`luzmo-trigger-select`,this._handleTriggerSelect)}get triggers(){return this._triggers}set triggers(e){this._triggers=e,this.activeTrigger&&this._updateFilteredOptions()}get activeConfig(){if(this.activeTrigger)return this._triggers.find(e=>e.key===this.activeTrigger)}get hasTriggers(){return this._triggers.length>0}getSlotName(e){return this._triggers.find(t=>t.key===e)?.slotName}get allSlotNames(){return this._triggers.map(e=>e.slotName).filter(e=>!!e)}handleInput(e){if(this.activeTrigger){let e=v(this._host.shadowRoot,this.activeTrigger)??this._extractTriggerSearchFromContent(this.activeTrigger);e===null?this.close():(this.searchString=e,this._updateFilteredOptions(),this.highlightedIndex=this._findSelectableIndex(0,1),this._dispatchChange(!0),this._host.requestUpdate())}else this._detectTrigger(e)}open(e){if(!this._triggers.find(t=>t.key===e))return;let t=_(this._host.shadowRoot,this.richInputElement);t&&(this.activeTrigger=e,this.searchString=``,this._updateFilteredOptions(),this.highlightedIndex=this._findSelectableIndex(0,1),this.virtualElement?this.virtualElement.updateBoundingClientRect(t.x,t.y):this.virtualElement=new n.m(t.x,t.y),this._dispatchChange(!0),this._host.requestUpdate(),requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,this._handleDocumentPointerDown,!0)}))}close(){if(this.activeTrigger===null)return;document.removeEventListener(`pointerdown`,this._handleDocumentPointerDown,!0);let e=this.activeTrigger;this.activeTrigger=null,this.searchString=``,this.filteredOptions=[],this.highlightedIndex=0,this.hoveredIndex=-1,this._host.dispatchEvent(new CustomEvent(`luzmo-trigger-change`,{bubbles:!0,composed:!0,detail:{trigger:e,open:!1,searchString:``}})),this._host.requestUpdate()}handleKeydown(e){return this.activeTrigger?e.key===`Escape`?(e.preventDefault(),this.close(),this.richInputElement?.focus(),!0):e.key===`Tab`?(this.close(),!1):e.key===`ArrowDown`?(e.preventDefault(),this._moveHighlight(1),!0):e.key===`ArrowUp`?(e.preventDefault(),this._moveHighlight(-1),!0):e.key===`Enter`&&!e.shiftKey?(e.preventDefault(),this._selectHighlighted(),!0):!1:!1}_detectTrigger(e){if(this._host.disabled||this._host.readonly||this._host.pending)return;let t=e?.data??``;t.length!==1||!this._isTriggerKey(t)||ee(this._host.shadowRoot)&&this.open(t)}_extractTriggerSearchFromContent(e){let t=this.richInputElement?.textContent??``;if(!t)return null;let n=t.lastIndexOf(e);if(n===-1)return null;let r=t.slice(n+1);return r.includes(` `)||r.includes(`
21
21
  `)?null:r}_isTriggerKey(e){return this._triggers.some(t=>t.key===e)}_updateFilteredOptions(){let e=this.activeConfig;if(!e?.options){this.filteredOptions=[];return}if(e.lazy){this.filteredOptions=e.options;return}if(!this.searchString){this.filteredOptions=e.options;return}let t=this.searchString.toLowerCase(),n=[],r=null;for(let i of e.options){if(i.header){r=i;continue}(i.label.toLowerCase().includes(t)||(i.description?.toLowerCase().includes(t)??!1))&&(r&&=(n.push(r),null),n.push(i))}this.filteredOptions=n}_findSelectableIndex(e,t){let n=this.filteredOptions.length;if(n===0)return-1;let r=(e%n+n)%n;for(let e=0;e<n;e++){if(!this.filteredOptions[r].header)return r;r=((r+t)%n+n)%n}return-1}_moveHighlight(e){let t=this.filteredOptions.length;if(t===0)return;let n=(this.highlightedIndex+e+t)%t;n=this._findSelectableIndex(n,e),n!==-1&&(this.pointerMovedSinceKeyNav=!1,this.hoveredIndex=-1,this.highlightedIndex=n,this._host.requestUpdate(),requestAnimationFrame(()=>{this._host.shadowRoot?.querySelector(`.trigger-option.highlighted`)?.scrollIntoView({block:`nearest`})}))}_selectHighlighted(){let e=this.filteredOptions[this.highlightedIndex];if(!e){this.close();return}this.selectOption(e)}selectOption(e){if(!this.activeTrigger||!this.richInputElement)return;let t=this.activeTrigger,n=this.richInputElement,r=this._host.shadowRoot;b(r,n,t,this.searchString);let i=e.elementType??t,a=this._host.insertElement(i,e.label,e.data??null,e.icon);y(n,a),this.close(),this._host.updateComplete.then(()=>{requestAnimationFrame(()=>{y(n,a)})})}_dispatchChange(e){this.activeTrigger&&this._host.dispatchEvent(new CustomEvent(`luzmo-trigger-change`,{bubbles:!0,composed:!0,detail:{trigger:this.activeTrigger,open:e,searchString:this.searchString}}))}},w=!1,T=0;function E(){w=!0}function D(){w=!1}function O(){document.addEventListener(`keydown`,E,!0),document.addEventListener(`mousedown`,D,!0),document.addEventListener(`pointerdown`,D,!0)}function k(){document.removeEventListener(`keydown`,E,!0),document.removeEventListener(`mousedown`,D,!0),document.removeEventListener(`pointerdown`,D,!0)}function A(){T===0&&typeof window<`u`&&O(),T++}function j(){T--,T<=0&&(T=0,k())}function M(){return w}function N(e,t,n){return i.html`
22
22
  <div class="top-actions ${t?``:`empty`}" part="top-actions">