@luzmo/lucero 1.0.1-alpha.32 → 1.0.1-alpha.34
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.
- package/components/index.cjs +1 -1
- package/components/index.js +1 -1
- package/components/menu/index.cjs +1 -1
- package/components/menu/index.js +1 -1
- package/components/overlay/index.cjs +1 -1
- package/components/overlay/index.js +2 -2
- package/components/overlay-BhrVS5h7.cjs +47 -0
- package/components/{overlay-DpWon1Rp.js → overlay-C-No3oJQ.js} +19 -19
- package/package.json +2 -2
- package/components/overlay-nUwFClQq.cjs +0 -47
package/components/index.cjs
CHANGED
|
@@ -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
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./accordion/index.cjs"),d=require("./action-bar/index.cjs"),q=require("./action-button/index.cjs");require("./action-group/index.cjs");const p=require("./action-menu/index.cjs"),x=require("./avatar/index.cjs"),_=require("./button/index.cjs"),S=require("./button-group/index.cjs"),C=require("./calendar/index.cjs"),T=require("./checkbox/index.cjs"),b=require("./color-area/index.cjs"),v=require("./color-field/index.cjs"),I=require("./color-handle/index.cjs");require("./color-loupe/index.cjs");const g=require("./color-menu/index.cjs"),A=require("./color-palette/index.cjs"),P=require("./color-palette-group/index.cjs"),O=require("./color-picker/index.cjs"),M=require("./color-slider/index.cjs"),F=require("./date-time-picker/index.cjs"),y=require("./divider/index.cjs");require("./field-group/index.cjs");require("./field-label/index.cjs");const R=require("./icon/index.cjs"),B=require("./infield-button/index.cjs"),G=require("./label/index.cjs"),i=require("./menu/index.cjs"),k=require("./multi-language-field/index.cjs"),h=require("./number-field/index.cjs"),u=require("./options/index.cjs"),r=require("./overlay/index.cjs");require("./picker/index.cjs");const D=require("./picker-button/index.cjs");require("./popover/index.cjs");require("./progress-circle/index.cjs");const m=require("./radio/index.cjs"),E=require("./search/index.cjs"),f=require("./select/index.cjs"),N=require("./slider/index.cjs"),c=require("./swatch/index.cjs"),U=require("./switch/index.cjs"),t=require("./tabs/index.cjs"),L=require("./tags/index.cjs"),w=require("./text-field/index.cjs"),H=require("./toast/index.cjs"),V=require("./tooltip/index.cjs"),K=require("./unit-input/index.cjs"),s=require("./base-5nDSSNeT.cjs"),W=require("./focus-visible-D4BXb5RB.cjs"),Z=require("./focusable-CbVKgGfS.cjs"),o=require("./platform-BJnOJJag.cjs"),a=require("./sized-mixin-DcvJLFeo.cjs"),j=require("./streaming-listener-D9Wc7skA.cjs"),J=require("./action-group-D917z7XF.cjs"),Q=require("./clear-button-C39c3PH0.cjs"),X=require("./close-button-rjMQFibf.cjs"),Y=require("./color-loupe-CIEFp7ln.cjs"),$=require("./field-group-BYHNJmv0.cjs"),ee=require("./field-label-DZoeqJJX.cjs"),e=require("./overlay-
|
|
18
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./accordion/index.cjs"),d=require("./action-bar/index.cjs"),q=require("./action-button/index.cjs");require("./action-group/index.cjs");const p=require("./action-menu/index.cjs"),x=require("./avatar/index.cjs"),_=require("./button/index.cjs"),S=require("./button-group/index.cjs"),C=require("./calendar/index.cjs"),T=require("./checkbox/index.cjs"),b=require("./color-area/index.cjs"),v=require("./color-field/index.cjs"),I=require("./color-handle/index.cjs");require("./color-loupe/index.cjs");const g=require("./color-menu/index.cjs"),A=require("./color-palette/index.cjs"),P=require("./color-palette-group/index.cjs"),O=require("./color-picker/index.cjs"),M=require("./color-slider/index.cjs"),F=require("./date-time-picker/index.cjs"),y=require("./divider/index.cjs");require("./field-group/index.cjs");require("./field-label/index.cjs");const R=require("./icon/index.cjs"),B=require("./infield-button/index.cjs"),G=require("./label/index.cjs"),i=require("./menu/index.cjs"),k=require("./multi-language-field/index.cjs"),h=require("./number-field/index.cjs"),u=require("./options/index.cjs"),r=require("./overlay/index.cjs");require("./picker/index.cjs");const D=require("./picker-button/index.cjs");require("./popover/index.cjs");require("./progress-circle/index.cjs");const m=require("./radio/index.cjs"),E=require("./search/index.cjs"),f=require("./select/index.cjs"),N=require("./slider/index.cjs"),c=require("./swatch/index.cjs"),U=require("./switch/index.cjs"),t=require("./tabs/index.cjs"),L=require("./tags/index.cjs"),w=require("./text-field/index.cjs"),H=require("./toast/index.cjs"),V=require("./tooltip/index.cjs"),K=require("./unit-input/index.cjs"),s=require("./base-5nDSSNeT.cjs"),W=require("./focus-visible-D4BXb5RB.cjs"),Z=require("./focusable-CbVKgGfS.cjs"),o=require("./platform-BJnOJJag.cjs"),a=require("./sized-mixin-DcvJLFeo.cjs"),j=require("./streaming-listener-D9Wc7skA.cjs"),J=require("./action-group-D917z7XF.cjs"),Q=require("./clear-button-C39c3PH0.cjs"),X=require("./close-button-rjMQFibf.cjs"),Y=require("./color-loupe-CIEFp7ln.cjs"),$=require("./field-group-BYHNJmv0.cjs"),ee=require("./field-label-DZoeqJJX.cjs"),e=require("./overlay-BhrVS5h7.cjs"),z=require("./slottable-request-event-BfUUt1Mh.cjs"),n=require("./picker-DxYgh4LR.cjs"),oe=require("./popover-lcZnODPK.cjs"),re=require("./progress-circle-DgMbqrzG.cjs"),ie=require("./text-field-JMrsh-zo.cjs");exports.LuzmoAccordion=l.LuzmoAccordion;exports.LuzmoAccordionItem=l.LuzmoAccordionItem;exports.LuzmoActionBar=d.LuzmoActionBar;exports.LuzmoActionButton=q.LuzmoActionButton;exports.LuzmoActionMenu=p.LuzmoActionMenu;exports.LuzmoAvatar=x.LuzmoAvatar;exports.LuzmoButton=_.LuzmoButton;exports.LuzmoButtonGroup=S.LuzmoButtonGroup;exports.LuzmoCalendar=C.LuzmoCalendar;exports.LuzmoCheckbox=T.LuzmoCheckbox;exports.LuzmoColorArea=b.LuzmoColorArea;exports.LuzmoColorField=v.LuzmoColorField;exports.LuzmoColorHandle=I.LuzmoColorHandle;exports.LuzmoColorMenu=g.LuzmoColorMenu;exports.LuzmoColorPalette=A.LuzmoColorPalette;exports.LuzmoColorPaletteGroup=P.LuzmoColorPaletteGroup;exports.LuzmoColorPicker=O.LuzmoColorPicker;exports.LuzmoColorSlider=M.LuzmoColorSlider;exports.LuzmoDateTimePicker=F.LuzmoDateTimePicker;exports.LuzmoDivider=y.LuzmoDivider;exports.LuzmoIcon=R.LuzmoIcon;exports.LuzmoInfieldButton=B.LuzmoInfieldButton;exports.LuzmoLabel=G.LuzmoLabel;exports.LuzmoMenu=i.LuzmoMenu;exports.LuzmoMenuDivider=i.LuzmoMenuDivider;exports.LuzmoMenuGroup=i.LuzmoMenuGroup;exports.LuzmoMenuItem=i.LuzmoMenuItem;exports.MenuItemAddedOrUpdatedEvent=i.MenuItemAddedOrUpdatedEvent;exports.LuzmoMultiLangField=k.LuzmoMultiLangField;exports.LuzmoNumberField=h.LuzmoNumberField;exports.LuzmoOption=u.LuzmoOption;exports.LuzmoOptions=u.LuzmoOptions;exports.LuzmoOptionsDivider=u.LuzmoOptionsDivider;exports.VIRTUALIZE_AS_OF_NUM_ITEMS=u.VIRTUALIZE_AS_OF_NUM_ITEMS;exports.LuzmoOverlayTrigger=r.LuzmoOverlayTrigger;exports.OverlayTriggerDirective=r.OverlayTriggerDirective;exports.SlottableRequestDirective=r.SlottableRequestDirective;exports.openOverlay=r.openOverlay;exports.slottableRequest=r.slottableRequest;exports.trigger=r.trigger;exports.LuzmoPickerButton=D.LuzmoPickerButton;exports.LuzmoRadio=m.LuzmoRadio;exports.LuzmoRadioGroup=m.LuzmoRadioGroup;exports.LuzmoSearch=E.LuzmoSearch;exports.LuzmoSelect=f.LuzmoSelect;exports.LuzmoSlider=N.LuzmoSlider;exports.LuzmoSwatch=c.LuzmoSwatch;exports.LuzmoSwatchGroup=c.LuzmoSwatchGroup;exports.LuzmoSwitch=U.LuzmoSwitch;exports.LuzmoTab=t.LuzmoTab;exports.LuzmoTabPanel=t.LuzmoTabPanel;exports.LuzmoTabs=t.LuzmoTabs;exports.LuzmoTabsOverflow=t.LuzmoTabsOverflow;exports.LuzmoTag=L.LuzmoTag;exports.LuzmoTags=L.LuzmoTags;exports.LuzmoHelpText=w.LuzmoHelpText;exports.LuzmoToast=H.LuzmoToast;exports.LuzmoTooltip=V.LuzmoTooltip;exports.LuzmoUnitInput=K.LuzmoUnitInput;exports.LuzmoElement=s.LuzmoElement;exports.LuzmoMixin=s.LuzmoMixin;exports.FocusVisiblePolyfillMixin=W.FocusVisiblePolyfillMixin;exports.Focusable=Z.Focusable;exports.isAndroid=o.isAndroid;exports.isAppleDevice=o.isAppleDevice;exports.isChrome=o.isChrome;exports.isFirefox=o.isFirefox;exports.isIOS=o.isIOS;exports.isIPad=o.isIPad;exports.isIPhone=o.isIPhone;exports.isMac=o.isMac;exports.isSeamonkey=o.isSeamonkey;exports.isWebKit=o.isWebKit;exports.ElementSizes=a.ElementSizes;exports.SizedMixin=a.SizedMixin;exports.streamingListener=j.streamingListener;exports.LuzmoActionGroup=J.LuzmoActionGroup;exports.LuzmoClearButton=Q.LuzmoClearButton;exports.LuzmoCloseButton=X.LuzmoCloseButton;exports.LuzmoColorLoupe=Y.LuzmoColorLoupe;exports.LuzmoFieldGroup=$.LuzmoFieldGroup;exports.LuzmoFieldLabel=ee.LuzmoFieldLabel;exports.ClickController=e.ClickController;exports.HoverController=e.HoverController;exports.InteractionController=e.InteractionController;exports.InteractionTypes=e.InteractionTypes;exports.LONGPRESS_INSTRUCTIONS=e.LONGPRESS_INSTRUCTIONS;exports.LongpressController=e.LongpressController;exports.LuzmoAbstractOverlay=e.LuzmoAbstractOverlay;exports.LuzmoOverlay=e.LuzmoOverlay;exports.PlacementController=e.PlacementController;exports.SAFARI_FOCUS_RING_CLASS=e.SAFARI_FOCUS_RING_CLASS;exports.VirtualTrigger=e.VirtualTrigger;exports.guaranteedAllTransitionend=e.guaranteedAllTransitionend;exports.lastInteractionType=e.lastInteractionType;exports.nextFrame=e.nextFrame;exports.noop=e.noop;exports.overlayTimer=e.overlayTimer;exports.placementUpdatedSymbol=e.placementUpdatedSymbol;exports.SlottableRequestEvent=z.SlottableRequestEvent;exports.removeSlottableRequest=z.removeSlottableRequest;exports.DESCRIPTION_ID=n.DESCRIPTION_ID;exports.LuzmoPicker=n.LuzmoPicker;exports.LuzmoPickerBase=n.LuzmoPickerBase;exports.LuzmoPopover=oe.LuzmoPopover;exports.LuzmoProgressCircle=re.LuzmoProgressCircle;exports.LuzmoTextField=ie.LuzmoTextField;
|
package/components/index.js
CHANGED
|
@@ -74,7 +74,7 @@ import { L as Or } from "./close-button-CqlkCakI.js";
|
|
|
74
74
|
import { L as Fr } from "./color-loupe-CLPX6xVb.js";
|
|
75
75
|
import { L as Rr } from "./field-group-CHmw159R.js";
|
|
76
76
|
import { L as Br } from "./field-label-Cy3xMWZ-.js";
|
|
77
|
-
import { C as Gr, H as Ur, b as _r, I as Nr, c as Hr, d as qr, L as Vr, e as jr, P as Kr, S as Wr, V as Zr, g as Jr, l as Qr, a as Xr, n as Yr, o as $r, p as oe } from "./overlay-
|
|
77
|
+
import { C as Gr, H as Ur, b as _r, I as Nr, c as Hr, d as qr, L as Vr, e as jr, P as Kr, S as Wr, V as Zr, g as Jr, l as Qr, a as Xr, n as Yr, o as $r, p as oe } from "./overlay-C-No3oJQ.js";
|
|
78
78
|
import { S as ee, r as le } from "./slottable-request-event-DggLA4Rx.js";
|
|
79
79
|
import { D as te, a as ue, L as ae } from "./picker-Cm6_didQ.js";
|
|
80
80
|
import { LuzmoPopover as ze } from "./popover-ucIgjbQs.js";
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
@luzmo-menu-item-added-or-updated=${{handleEvent:t=>{t.clear(t.item)},capture:!0}}
|
|
72
72
|
@focusin=${t=>t.stopPropagation()}
|
|
73
73
|
></slot>
|
|
74
|
-
`;return this.hasSubmenu?(this.dependencyManager.add("luzmo-overlay"),this.dependencyManager.add("luzmo-popover"),Promise.resolve().then(()=>require("../overlay-
|
|
74
|
+
`;return this.hasSubmenu?(this.dependencyManager.add("luzmo-overlay"),this.dependencyManager.add("luzmo-popover"),Promise.resolve().then(()=>require("../overlay-BhrVS5h7.cjs")).then(t=>t.overlay),Promise.resolve().then(()=>require("../popover-lcZnODPK.cjs")),s.html`
|
|
75
75
|
<luzmo-overlay
|
|
76
76
|
.triggerElement=${this}
|
|
77
77
|
?disabled=${!this.hasSubmenu}
|
package/components/menu/index.js
CHANGED
|
@@ -714,7 +714,7 @@ class s extends R(
|
|
|
714
714
|
@focusin=${(t) => t.stopPropagation()}
|
|
715
715
|
></slot>
|
|
716
716
|
`;
|
|
717
|
-
return this.hasSubmenu ? (this.dependencyManager.add("luzmo-overlay"), this.dependencyManager.add("luzmo-popover"), import("../overlay-
|
|
717
|
+
return this.hasSubmenu ? (this.dependencyManager.add("luzmo-overlay"), this.dependencyManager.add("luzmo-popover"), import("../overlay-C-No3oJQ.js").then((t) => t.f), import("../popover-ucIgjbQs.js"), u`
|
|
718
718
|
<luzmo-overlay
|
|
719
719
|
.triggerElement=${this}
|
|
720
720
|
?disabled=${!this.hasSubmenu}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
16
|
* SOFTWARE.
|
|
17
17
|
* */
|
|
18
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../overlay-
|
|
18
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../overlay-BhrVS5h7.cjs"),h=require("lit"),i=require("lit/decorators.js"),b=require("../base-5nDSSNeT.cjs"),d=require("lit/async-directive.js"),u=require("../slottable-request-event-BfUUt1Mh.cjs"),O=":host([disabled]) ::slotted([slot=trigger]){pointer-events:none}slot[name=longpress-describedby-descriptor]{display:none}";var S=Object.defineProperty,l=(g,e,r,t)=>{for(var n=void 0,a=g.length-1,c;a>=0;a--)(c=g[a])&&(n=c(e,r,n)||n);return n&&S(e,r,n),n};class s extends b.LuzmoElement{constructor(){super(...arguments),this.content="click hover longpress",this.offset=6,this.disabled=!1,this.receivesFocus="auto",this.clickContent=[],this.longpressContent=[],this.hoverContent=[],this.targetContent=[]}static get styles(){return[h.unsafeCSS(O)]}getAssignedElementsFromSlot(e){return e.assignedElements({flatten:!0})}handleTriggerContent(e){this.targetContent=this.getAssignedElementsFromSlot(e.target)}handleSlotContent(e){switch(e.target.name){case"click-content":{this.clickContent=this.getAssignedElementsFromSlot(e.target);break}case"longpress-content":{this.longpressContent=this.getAssignedElementsFromSlot(e.target);break}case"hover-content":{this.hoverContent=this.getAssignedElementsFromSlot(e.target);break}}}handleBeforetoggle(e){const{target:r}=e;let t;if(r===this.clickOverlayElement)t="click";else if(r===this.longpressOverlayElement)t="longpress";else if(r===this.hoverOverlayElement)t="hover";else return;e.newState==="open"?this.open=t:this.open===t&&(this.open=void 0)}update(e){var r,t,n,a,c,p;e.has("clickContent")&&(this.clickPlacement=((r=this.clickContent[0])==null?void 0:r.getAttribute("placement"))||((t=this.clickContent[0])==null?void 0:t.getAttribute("direction"))||void 0),e.has("hoverContent")&&(this.hoverPlacement=((n=this.hoverContent[0])==null?void 0:n.getAttribute("placement"))||((a=this.hoverContent[0])==null?void 0:a.getAttribute("direction"))||void 0),e.has("longpressContent")&&(this.longpressPlacement=((c=this.longpressContent[0])==null?void 0:c.getAttribute("placement"))||((p=this.longpressContent[0])==null?void 0:p.getAttribute("direction"))||void 0),super.update(e)}renderSlot(e){return h.html`
|
|
19
19
|
<slot name=${e} @slotchange=${this.handleSlotContent}></slot>
|
|
20
20
|
`}renderClickOverlay(){var t;const e=this.renderSlot("click-content"),r=h.html`
|
|
21
21
|
<luzmo-overlay
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
16
|
* SOFTWARE.
|
|
17
17
|
* */
|
|
18
|
-
import { e as f, I as O, s as S, L as $ } from "../overlay-
|
|
19
|
-
import { C as V, H as j, b as M, c as J, d as K, P as Q, S as W, V as X, g as Y, l as Z, a as ee, n as te, o as oe, p as re } from "../overlay-
|
|
18
|
+
import { e as f, I as O, s as S, L as $ } from "../overlay-C-No3oJQ.js";
|
|
19
|
+
import { C as V, H as j, b as M, c as J, d as K, P as Q, S as W, V as X, g as Y, l as Z, a as ee, n as te, o as oe, p as re } from "../overlay-C-No3oJQ.js";
|
|
20
20
|
import { unsafeCSS as E, html as m, nothing as z, render as v } from "lit";
|
|
21
21
|
import { property as c, state as g, query as h } from "lit/decorators.js";
|
|
22
22
|
import { a as w } from "../base-CdYjmV_8.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*! * Lucero - The design system for Luzmo.
|
|
2
|
+
*
|
|
3
|
+
* Copyright © 2025 Luzmo
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
* Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
|
|
6
|
+
* This license allows users with a current active Luzmo account to use Lucero.
|
|
7
|
+
* This license terminates automatically if a user no longer has an active Luzmo account.
|
|
8
|
+
* Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
|
|
9
|
+
*
|
|
10
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
12
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
13
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
14
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
15
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
|
+
* SOFTWARE.
|
|
17
|
+
* */
|
|
18
|
+
"use strict";const O=require("lit"),u=require("lit/decorators.js"),$=require("lit/directives/if-defined.js"),G=require("lit/directives/style-map.js"),M=require("./random-id-CqvckpWe.cjs"),Y=require("./element-resolution-BvRLGqIU.cjs"),le=require("./base-5nDSSNeT.cjs"),S=require("./focusable-selectors-BgFlyFcY.cjs"),b=require("@floating-ui/dom"),J=require("./slottable-request-event-BfUUt1Mh.cjs"),H=require("./condition-attribute-with-id-DrQYZzFS.cjs"),k=require("./platform-BJnOJJag.cjs");function he(a,e,t=[]){for(const[i,s]of e.entries()){const n=a[i],r=n.parentElement||n.getRootNode();t[i]&&t[i](s),r&&r!==n&&n.replaceWith(s),delete a[i]}return e}const ce=(a,e,{position:t,prepareCallback:i}={position:"beforeend"})=>{let{length:s}=a;if(s===0)return()=>a;let n=1,r=0;(t==="afterbegin"||t==="afterend")&&(n=-1,r=s-1);const o=new Array(s),h=new Array(s),p=typeof document<"u"?document.createComment("placeholder for reparented element"):null;do{const l=a[r];i&&(h[r]=i(l)),o[r]=p.cloneNode();const c=l.parentElement||l.getRootNode();c&&c!==l&&c.replaceChild(o[r],l),e.insertAdjacentElement(t,l),r+=n}while(--s>0);return function(){return he(o,a,h)}},pe=1e3,de=1e3;class ue{constructor(e={}){this.warmUpDelay=pe,this.coolDownDelay=de,this.isWarm=!1,this.timeout=0,Object.assign(this,e)}openTimer(e){if(this.cancelCooldownTimer(),!this.component||e!==this.component)return this.component&&(this.close(this.component),this.cancelCooldownTimer()),this.component=e,this.isWarm?Promise.resolve(!1):(this.promise=new Promise(t=>{this.resolve=t,this.timeout=typeof window<"u"?window.setTimeout(()=>{this.resolve&&(this.resolve(!1),this.isWarm=!0)},this.warmUpDelay):0}),this.promise);if(this.promise)return this.promise;throw new Error("Inconsistent state")}close(e){this.component&&this.component===e&&(this.resetCooldownTimer(),this.timeout>0&&(clearTimeout(this.timeout),this.timeout=0),this.resolve&&(this.resolve(!0),delete this.resolve),delete this.promise,delete this.component)}resetCooldownTimer(){this.isWarm&&(this.cooldownTimeout&&typeof window<"u"&&window.clearTimeout(this.cooldownTimeout),this.cooldownTimeout=typeof window<"u"?window.setTimeout(()=>{this.isWarm=!1,delete this.cooldownTimeout},this.coolDownDelay):void 0)}cancelCooldownTimer(){this.cooldownTimeout&&typeof window<"u"&&window.clearTimeout(this.cooldownTimeout),delete this.cooldownTimeout}}const D=new ue,E=()=>{},q=(a,e,t)=>{const i=new AbortController,s=new Map,n=()=>{i.abort(),t()};let r,o;const h=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{o=requestAnimationFrame(()=>{n()})})}),p=c=>{c.target===a&&(s.set(c.propertyName,s.get(c.propertyName)-1),s.get(c.propertyName)||s.delete(c.propertyName),s.size===0&&n())},l=c=>{c.target===a&&(s.has(c.propertyName)||s.set(c.propertyName,0),s.set(c.propertyName,s.get(c.propertyName)+1),cancelAnimationFrame(h),cancelAnimationFrame(r),cancelAnimationFrame(o))};a.addEventListener("transitionrun",l,{signal:i.signal}),a.addEventListener("transitionend",p,{signal:i.signal}),a.addEventListener("transitioncancel",p,{signal:i.signal}),e()};function f(){return new Promise(a=>requestAnimationFrame(()=>a()))}class C extends le.LuzmoElement{constructor(){super(...arguments),this.dispose=E,this.offset=0,this.willPreventClose=!1}applyFocus(e,t){}get delayed(){return!1}set delayed(e){}get disabled(){return!1}set disabled(e){}get elementResolver(){return this._elementResolver}set elementResolver(e){this._elementResolver=e}ensureOnDOM(e){}makeTransition(e){return null}manageDelay(e){}manageDialogOpen(){}managePopoverOpen(){}managePosition(){}get open(){return!1}set open(e){}get placementController(){return this._placementController}set placementController(e){this._placementController=e}requestSlottable(){}returnFocus(){}get state(){return"closed"}set state(e){}manuallyKeepOpen(){}static update(){const e=new CustomEvent("luzmo-update-overlays",{bubbles:!0,composed:!0,cancelable:!0});document.dispatchEvent(e)}static async open(e,t,i,s){await Promise.resolve().then(()=>N);const n=arguments.length===2,r=i||e,o=new this;let h=!1;const p=ce([r],o,{position:"beforeend",prepareCallback:v=>{const P=v.slot;return v.removeAttribute("slot"),()=>{v.slot=P}}});if(o.dispose=()=>{o.addEventListener("luzmo-closed",()=>{h||(p(),h=!0),requestAnimationFrame(()=>{o.remove()})}),o.open=!1,o.dispose=E},!n&&r&&s){const v=e,P=t,g=s;return C.applyOptions(o,{...g,delayed:g.delayed||r.hasAttribute("delayed"),trigger:g.virtualTrigger||v,type:P==="modal"?"modal":P==="hover"?"hint":"auto"}),v.after(o),await o.updateComplete,o.open=!0,o.dispose}const c=t;return o.append(r),C.applyOptions(o,{...c,delayed:c.delayed||r.hasAttribute("delayed")}),o.updateComplete.then(()=>{o.open=!0}),o}static applyOptions(e,t){e.delayed=!!t.delayed,e.receivesFocus=t.receivesFocus??"auto",e.triggerElement=t.trigger||null,e.type=t.type||"modal",e.offset=t.offset??0,e.placement=t.placement,e.willPreventClose=!!t.notImmediatelyClosable}}const W=a=>a.querySelector(S.userFocusableSelector),B=a=>a.assignedElements().find(t=>t.matches(S.userFocusableSelector));class K extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1}),this.currentState="open",this.newState="closed"}}class j extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1}),this.currentState="closed",this.newState="open"}}class y extends Event{constructor(e,t,{publish:i,interaction:s,reason:n}){super(e,{bubbles:i,composed:i}),this.overlay=t,this.detail={interaction:s,reason:n}}}class x{constructor(e,t){this.x=0,this.y=0,this.x=e,this.y=t}updateBoundingClientRect(e,t){this.x=e,this.y=t,C.update()}getBoundingClientRect(){return{width:0,height:0,top:this.y,right:this.x,y:this.y,x:this.x,bottom:this.y,left:this.x,toJSON(){}}}}function me(a){class e extends a{async manageDialogOpen(){const i=this.open;if(await f(),await this.managePosition(),this.open!==i)return;const s=await this.dialogMakeTransition(i);this.open===i&&await this.dialogApplyFocus(i,s)}dialogMakeTransition(i){let s=null;const n=(o,h)=>()=>{if(o.open=i,!i){const l=()=>{o.removeEventListener("close",l)};o.addEventListener("close",l)}if(h>0)return;const p=i?j:K;this.dispatchEvent(new p),i&&(o.matches(S.userFocusableSelector)&&(s=o),s=s||W(o),s||o.querySelectorAll("slot").forEach(c=>{s||(s=B(c))}),!(!this.isConnected||this.dialogEl.open)&&this.dialogEl.showModal())},r=(o,h)=>()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(h>0){o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1}));return}if(!this.isConnected||i!==this.open)return;const l=async()=>{const c=this.triggerElement instanceof x;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:c})),o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1})),this.triggerElement&&!c&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};!i&&this.dialogEl.open?(this.dialogEl.addEventListener("close",()=>{l()},{once:!0}),this.dialogEl.close()):l()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}dialogApplyFocus(i,s){this.applyFocus(i,s)}}return e}function ge(a){class e extends a{async managePopoverOpen(){await this.managePosition()}async manageDelay(i){if(i===!1||i!==this.open){D.close(this);return}this.delayed&&await D.openTimer(this)&&(this.open=!i)}ensureOnDOM(i){document.body.offsetHeight}makeTransition(i){if(this.open!==i)return null;let s=null;const n=(o,h)=>()=>{if(i!==this.open)return;if(o.open=i,h===0){const l=i?j:K;this.dispatchEvent(new l)}if(i!==!0||(o.matches(S.userFocusableSelector)&&(s=o),s=s||W(o),s))return;o.querySelectorAll("slot").forEach(l=>{s||(s=B(l))})},r=(o,h)=>async()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(o.dispatchEvent(new y(p,this,{interaction:this.type})),h>0)return;const l=this.triggerElement instanceof x;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:l})),this.triggerElement&&!l&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}}return e}const fe=typeof CSS<"u"&&CSS.supports("(overlay: auto)");function Q(a){let e=!1;try{e=a.matches(":popover-open")}catch{}let t=!1;try{t=a.matches(":open")}catch{}return e||t}function ve(a){class e extends a{async manageDelay(i){if(i===!1||i!==this.open){D.close(this);return}this.delayed&&await D.openTimer(this)&&(this.open=!i)}shouldHidePopover(i){if(i&&this.open!==i)return;const s=async({newState:n}={})=>{n!=="open"&&await this.placementController.resetOverlayPosition()};if(!Q(this.dialogEl)){s();return}this.dialogEl.addEventListener("toggle",s,{once:!0})}shouldShowPopover(i){let s=!1;try{s=this.dialogEl.matches(":popover-open")}catch{}let n=!1;try{n=this.dialogEl.matches(":open")}catch{}i&&this.open===i&&!s&&!n&&this.isConnected&&(this.dialogEl.showPopover(),this.managePosition())}async ensureOnDOM(i){fe||await this.shouldHidePopover(i),this.shouldShowPopover(i),await f()}makeTransition(i){if(this.open!==i)return null;let s=null;const n=(o,h)=>()=>{if(o.open=i,h===0){const l=i?j:K;this.dispatchEvent(new l)}if(!i||(o.matches(S.userFocusableSelector)&&(s=o),s=s||W(o),s))return;o.querySelectorAll("slot").forEach(l=>{s||(s=B(l))})},r=(o,h)=>()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(h>0){o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1}));return}const l=async()=>{if(this.open!==i)return;await f();const v=this.triggerElement instanceof x;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:v})),o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1})),this.triggerElement&&!v&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};if(this.open!==i)return;const c=Q(this.dialogEl);i!==!0&&c&&this.isConnected?(this.dialogEl.addEventListener("beforetoggle",()=>{l()},{once:!0}),this.dialogEl.hidePopover()):l()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}}return e}const ye=typeof document<"u"&&"showPopover"in document.createElement("div");class be{constructor(){this.root=typeof document>"u"?null:document.body,this.stack=[],this.handleScroll=e=>{typeof document<"u"&&e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||this.stack.forEach(t=>{t.open&&(t.type==="auto"&&t.triggerElement instanceof HTMLElement&&t.triggerElement.closest("luzmo-picker, luzmo-select, luzmo-action-menu")&&e.stopPropagation(),typeof document<"u"&&document.dispatchEvent(new CustomEvent("luzmo-update-overlays",{bubbles:!0,composed:!0,cancelable:!0})))})},this.handlePointerdown=e=>{this.pointerdownPath=e.composedPath(),this.lastOverlay=this.stack.at(-1)},this.handlePointerup=()=>{const e=this.pointerdownPath;if(this.pointerdownPath=void 0,this.stack.length===0||!(e!=null&&e.length))return;const t=this.lastOverlay;this.lastOverlay=void 0;const i=this.stack.length-1,s=this.stack.filter((n,r)=>!e.find(h=>h===n||h===(n==null?void 0:n.triggerElement)&&(n==null?void 0:n.type)==="hint"||r===i&&n!==t&&n.triggerInteraction==="longpress")&&!n.shouldPreventClose()&&n.type!=="manual"&&!(n.type==="modal"&&t!==n));s.reverse(),s.forEach(n=>{this.closeOverlay(n);let r=n.parentOverlayToForceClose;for(;r;)this.closeOverlay(r),r=r.parentOverlayToForceClose})},this.handleBeforetoggle=e=>{const{target:t,newState:i}=e;i!=="open"&&this.closeOverlay(t)},this.handleKeydown=e=>{if(e.code!=="Escape"||this.stack.length===0)return;const t=this.stack.at(-1);if((t==null?void 0:t.type)==="page"){e.preventDefault();return}if((t==null?void 0:t.type)==="manual"){this.closeOverlay(t);return}ye||t&&this.closeOverlay(t)},typeof document<"u"&&this.bindEvents()}get document(){return this.root.ownerDocument||document}bindEvents(){typeof document<"u"&&(this.document.addEventListener("pointerdown",this.handlePointerdown),this.document.addEventListener("pointerup",this.handlePointerup),this.document.addEventListener("keydown",this.handleKeydown),this.document.addEventListener("scroll",this.handleScroll,{capture:!0}))}closeOverlay(e){const t=this.stack.indexOf(e);t!==-1&&this.stack.splice(t,1),e.open=!1}overlaysByTriggerElement(e){return this.stack.filter(t=>t.triggerElement===e)}add(e){if(this.stack.includes(e)){const t=this.stack.indexOf(e);t!==-1&&(this.stack.splice(t,1),this.stack.push(e));return}if(e.type==="auto"||e.type==="modal"||e.type==="page"){const t="luzmo-overlay-query-path",i=new Event(t,{composed:!0,bubbles:!0});e.addEventListener(t,s=>{const n=s.composedPath();this.stack.forEach(r=>{!n.find(h=>h===r)&&r.type!=="manual"&&r.type!=="modal"&&this.closeOverlay(r)})},{once:!0}),e.dispatchEvent(i)}else if(e.type==="hint"){if(this.stack.some(i=>i.type!=="manual"&&i.triggerElement&&i.triggerElement===e.triggerElement)){e.open=!1;return}this.stack.forEach(i=>{i.type==="hint"&&this.closeOverlay(i)})}requestAnimationFrame(()=>{this.stack.push(e),e.addEventListener("beforetoggle",this.handleBeforetoggle,{once:!0})})}remove(e){this.closeOverlay(e)}}const X=new be,we=':host{display:contents;pointer-events:none;--luzmo-overlay-animation-distance: .5rem}:host(:has(> luzmo-tooltip)){--luzmo-overlay-animation-distance: var( --luzmo-tooltip-animation-distance, 4px )}.dialog{margin:0;border:0;background:none;padding:0;position:fixed;overflow:visible;opacity:1!important;box-sizing:border-box;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);max-width:calc(100vw - 16px);height:auto;inset:auto;top:0;left:0;display:flex;--luzmo-overlay-open: true}.dialog:not([is-visible]){display:none}.dialog:focus{outline:none}dialog:modal{--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}:host(:not([open])) .dialog{--luzmo-overlay-open: false}.dialog::backdrop{display:none}.dialog:before{position:absolute;top:-999em;right:-999em;bottom:-999em;left:-999em;content:"";pointer-events:auto!important}.dialog:not(.not-immediately-closable):before{display:none}.dialog>div{width:100%}::slotted(*){pointer-events:auto;visibility:visible!important}::slotted(luzmo-popover){position:static}.dialog:not([actual-placement])[placement*=top]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:var(--luzmo-overlay-animation-distance)}.dialog:not([actual-placement])[placement*=right]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=bottom]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=left]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:var(--luzmo-overlay-animation-distance)}.dialog[actual-placement*=top]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:var(--luzmo-overlay-animation-distance)}.dialog[actual-placement*=right]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog[actual-placement*=bottom]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog[actual-placement*=left]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:var(--luzmo-overlay-animation-distance)}slot[name=longpress-describedby-descriptor]{display:none}@supports selector(:open){.dialog{opacity:0}.dialog:open{opacity:1;--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}}@supports selector(:popover-open){.dialog{opacity:0}.dialog:popover-open{opacity:1;--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}}@supports (overlay: auto){.dialog{display:none;transition:all var(--luzmo-overlay-animation-duration, .13s),translate 0s,display var(--luzmo-overlay-animation-duration, .13s);transition-behavior:allow-discrete}.dialog:popover-open,.dialog:modal{display:flex}}@supports (not selector(:open)) and (not selector(:popover-open)){:host:not([open]) .dialog{pointer-events:none}.dialog[actual-placement]{z-index:calc(var(--luzmo-overlay-z-index-base, 1000) + var(--luzmo-overlay-open-count))}}';function A(a){if(a===void 0)return 0;const e=window.devicePixelRatio||1;return Math.round(a*e)/e}const R=8,Ee=100,Pe=a=>({left:["right","bottom","top"],"left-start":["right-start","bottom","top"],"left-end":["right-end","bottom","top"],right:["left","bottom","top"],"right-start":["left-start","bottom","top"],"right-end":["left-end","bottom","top"],top:["bottom","left","right"],"top-start":["bottom-start","left","right"],"top-end":["bottom-end","left","right"],bottom:["top","left","right"],"bottom-start":["top-start","left","right"],"bottom-end":["top-end","left","right"]})[a]??[a],Ce=Symbol("placement updated");class Z{constructor(e){this.originalPlacements=new WeakMap,this.allowPlacementUpdate=!1,this.closeForAncestorUpdate=()=>{!this.allowPlacementUpdate&&this.options.type!=="modal"&&this.cleanup&&this.target.dispatchEvent(new Event("close",{bubbles:!0})),this.allowPlacementUpdate=!1},this.updatePlacement=()=>{this.computePlacement()},this.resetOverlayPosition=()=>{!this.target||!this.options||(this.clearOverlayPosition(),this.host.offsetHeight,this.computePlacement())},this.host=e,this.host.addController(this)}placeOverlay(e=this.target,t=this.options){if(this.target=e,this.options=t,!e||!t)return;const i=b.autoUpdate(t.trigger,e,this.closeForAncestorUpdate,{ancestorResize:!1,elementResize:!1,layoutShift:!1}),s=b.autoUpdate(t.trigger,e,this.updatePlacement,{ancestorScroll:!1});this.cleanup=()=>{var n;(n=this.host.elements)==null||n.forEach(r=>{r.addEventListener("luzmo-closed",()=>{const o=this.originalPlacements.get(r);o&&r.setAttribute("placement",o),this.originalPlacements.delete(r)},{once:!0})}),i(),s()}}async computePlacement(){var v,P;const{options:e,target:t}=this;await(document.fonts?document.fonts.ready:Promise.resolve());const i=e.trigger instanceof HTMLElement?b.flip():b.flip({padding:R,fallbackPlacements:Pe(e.placement)}),[s=0,n=0]=Array.isArray(e==null?void 0:e.offset)?e.offset:[e.offset,0],r=(v=this.host.elements.find(g=>g.tipElement))==null?void 0:v.tipElement,o=[b.offset({mainAxis:s,crossAxis:n}),b.shift({padding:R}),i,b.size({padding:R,apply:({availableWidth:g,availableHeight:U,rects:{floating:re}})=>{const V=Math.max(Ee,Math.floor(U)),L=re.height;this.initialHeight=this.isConstrained&&this.initialHeight||L,this.isConstrained=L<this.initialHeight||V<=L;const ae=this.isConstrained?`${V}px`:"";Object.assign(t.style,{maxWidth:`${Math.floor(g)}px`,maxHeight:ae})}}),...r?[b.arrow({element:r,padding:e.tipPadding||R})]:[]],{x:h,y:p,placement:l,middlewareData:c}=await b.computePosition(e.trigger,t,{placement:e.placement,middleware:o,strategy:"fixed"});if(Object.assign(t.style,{top:"0px",left:"0px",translate:`${A(h)}px ${A(p)}px`}),t.setAttribute("actual-placement",l),(P=this.host.elements)==null||P.forEach(g=>{this.originalPlacements.has(g)||this.originalPlacements.set(g,g.getAttribute("placement")),g.setAttribute("placement",l)}),r&&c.arrow){const{x:g,y:U}=c.arrow;Object.assign(r.style,{top:l.startsWith("right")||l.startsWith("left")?"0px":"",left:l.startsWith("bottom")||l.startsWith("top")?"0px":"",translate:`${A(g)}px ${A(U)}px`})}}clearOverlayPosition(){this.target&&(this.target.style.removeProperty("max-height"),this.target.style.removeProperty("max-width"),this.initialHeight=void 0,this.isConstrained=!1)}hostConnected(){document.addEventListener("luzmo-update-overlays",this.resetOverlayPosition)}hostUpdated(){var e;this.host.open||((e=this.cleanup)==null||e.call(this),this.cleanup=void 0)}hostDisconnected(){var e;(e=this.cleanup)==null||e.call(this),this.cleanup=void 0,document.removeEventListener("luzmo-update-overlays",this.resetOverlayPosition)}}var T=(a=>(a.click="click",a.hover="hover",a.longpress="longpress",a))(T||{});const _=Symbol("lastInteractionType"),z="remove-focus-ring-safari-hack";class I{constructor(e,{overlay:t,isPersistent:i,handleOverlayReady:s}){this.target=e,this.isLazilyOpen=!1,this.isPersistent=!1,this.isPersistent=!!i,this.handleOverlayReady=s,this.isPersistent&&this.init(),this.overlay=t}get activelyOpening(){return!1}get open(){var e;return((e=this.overlay)==null?void 0:e.open)??this.isLazilyOpen}set open(e){if(e!==this.open){if(this.isLazilyOpen=e,this.overlay){this.overlay.open=e,this.target[_]=this.type;return}e&&(customElements.whenDefined("luzmo-overlay").then(async()=>{const{LuzmoOverlay:t}=await Promise.resolve().then(()=>N);this.overlay=new t,this.overlay.open=!0,this.target[_]=this.type}),Promise.resolve().then(()=>N))}}get overlay(){return this._overlay}set overlay(e){var t;e&&this.overlay!==e&&(this.overlay&&this.overlay.removeController(this),this._overlay=e,this.overlay.addController(this),this.initOverlay(),this.prepareDescription(this.target),(t=this.handleOverlayReady)==null||t.call(this,this.overlay))}prepareDescription(e){}releaseDescription(){}shouldCompleteOpen(){}init(){}initOverlay(){}abort(){var e;this.releaseDescription(),(e=this.abortController)==null||e.abort()}hostConnected(){this.init()}hostDisconnected(){this.isPersistent||this.abort()}}class ee extends I{constructor(){super(...arguments),this.type=T.click,this.preventNextToggle=!1}handleClick(){this.preventNextToggle||(this.open=!this.open),this.preventNextToggle=!1}handlePointerdown(){this.preventNextToggle=this.open}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("click",()=>this.handleClick(),{signal:e}),this.target.addEventListener("pointerdown",()=>this.handlePointerdown(),{signal:e})}}const Te=300;class te extends I{constructor(){super(...arguments),this.type=T.hover,this.elementIds=[],this.focusedin=!1,this.pointerentered=!1}handleKeyup(e){(e.code==="Tab"||e.code==="Escape")&&(this.open=!0,this.removeSafariFocusRingClass())}handleTargetFocusin(){if(this.target.matches(":focus-visible")){if(k.isWebKit()&&this.target[_]===T.click){this.target.classList.add(z);return}this.open=!0,this.focusedin=!0,this.removeSafariFocusRingClass()}}handleTargetFocusout(){this.removeSafariFocusRingClass(),this.focusedin=!1,!this.pointerentered&&(this.open=!1)}handleTargetPointerenter(){var e;this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=void 0),!((e=this.overlay)!=null&&e.disabled)&&(this.open=!0,this.pointerentered=!0)}handleTargetPointerleave(){this.doPointerleave()}handleHostPointerenter(){this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=void 0)}handleHostPointerleave(){this.doPointerleave()}prepareDescription(){if(this.overlay.elements.length===0)return;const e=this.target.getRootNode(),t=this.overlay.elements[0].getRootNode(),i=this.overlay.getRootNode();e===i?this.prepareOverlayRelativeDescription():e===t&&this.prepareContentRelativeDescription()}prepareOverlayRelativeDescription(){const e=H.conditionAttributeWithId(this.target,"aria-describedby",[this.overlay.id]);this.releaseDescription=()=>{e(),this.releaseDescription=E}}prepareContentRelativeDescription(){const e=[],t=this.overlay.elements.map(s=>(e.push(s.id),s.id||(s.id=`${this.overlay.tagName.toLowerCase()}-helper-${M.randomID()}`),s.id));this.elementIds=e;const i=H.conditionAttributeWithId(this.target,"aria-describedby",t);this.releaseDescription=()=>{i(),this.overlay.elements.map((s,n)=>{s.id=this.elementIds[n]}),this.releaseDescription=E}}doPointerleave(){this.pointerentered=!1;const e=this.target;this.focusedin&&e.matches(":focus-visible")||(this.hoverTimeout=setTimeout(()=>{this.open=!1},Te))}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("keyup",i=>this.handleKeyup(i),{signal:e}),this.target.addEventListener("focusin",()=>this.handleTargetFocusin(),{signal:e}),this.target.addEventListener("focusout",()=>this.handleTargetFocusout(),{signal:e}),this.target.addEventListener("pointerenter",()=>this.handleTargetPointerenter(),{signal:e}),this.target.addEventListener("pointerleave",()=>this.handleTargetPointerleave(),{signal:e}),this.overlay&&this.initOverlay()}initOverlay(){if(!this.abortController)return;const{signal:e}=this.abortController;this.overlay.addEventListener("pointerenter",()=>this.handleHostPointerenter(),{signal:e}),this.overlay.addEventListener("pointerleave",()=>this.handleHostPointerleave(),{signal:e})}removeSafariFocusRingClass(){k.isWebKit()&&this.target.classList.contains(z)&&this.target.classList.remove(z)}}const Oe=300,ie={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};class se extends I{constructor(){super(...arguments),this.type=T.longpress,this.longpressState=null,this.releaseDescription=E,this.handlePointerup=()=>{var e;clearTimeout(this.timeout),this.target&&(this.longpressState=((e=this.overlay)==null?void 0:e.state)==="opening"?"pressed":null,document.removeEventListener("pointerup",this.handlePointerup),document.removeEventListener("pointercancel",this.handlePointerup))}}get activelyOpening(){return this.longpressState==="opening"||this.longpressState==="pressed"}handleLongpress(){this.open=!0,this.longpressState=this.longpressState==="potential"?"opening":"pressed"}handlePointerdown(e){!this.target||e.button!==0||(this.longpressState="potential",document.addEventListener("pointerup",this.handlePointerup),document.addEventListener("pointercancel",this.handlePointerup),"holdAffordance"in this.target)||(this.timeout=setTimeout(()=>{this.target&&this.target.dispatchEvent(new CustomEvent("longpress",{bubbles:!0,composed:!0,detail:{source:"pointer"}}))},Oe))}handleKeydown(e){const{code:t,altKey:i}=e;i&&t==="ArrowDown"&&(e.stopPropagation(),e.stopImmediatePropagation())}handleKeyup(e){const{code:t,altKey:i}=e;if(t==="Space"||i&&t==="ArrowDown"){if(!this.target)return;e.stopPropagation(),this.target.dispatchEvent(new CustomEvent("longpress",{bubbles:!0,composed:!0,detail:{source:"keyboard"}})),setTimeout(()=>{this.longpressState=null})}}prepareDescription(e){if(this.releaseDescription!==E||this.overlay.elements.length===0)return;const t=document.createElement("div");t.id=`longpress-describedby-descriptor-${M.randomID()}`;const i=k.isIOS()||k.isAndroid()?"touch":"keyboard";t.textContent=ie[i],t.slot="longpress-describedby-descriptor";const s=e.getRootNode(),n=this.overlay.getRootNode();s===n?this.overlay.append(t):(t.hidden=!("host"in s),e.after(t));const r=H.conditionAttributeWithId(e,"aria-describedby",[t.id]);this.releaseDescription=()=>{r(),t.remove(),this.releaseDescription=E}}shouldCompleteOpen(){this.longpressState=this.longpressState==="pressed"?null:this.longpressState}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("longpress",()=>this.handleLongpress(),{signal:e}),this.target.addEventListener("pointerdown",i=>this.handlePointerdown(i),{signal:e}),this.prepareDescription(this.target),!this.target.holdAffordance&&(this.target.addEventListener("keydown",i=>this.handleKeydown(i),{signal:e}),this.target.addEventListener("keyup",i=>this.handleKeyup(i),{signal:e}))}}const oe={click:ee,longpress:se,hover:te};var De=Object.defineProperty,Se=Object.getOwnPropertyDescriptor,m=(a,e,t,i)=>{for(var s=i>1?void 0:i?Se(e,t):e,n=a.length-1,r;n>=0;n--)(r=a[n])&&(s=(i?r(e,t,s):r(s))||s);return i&&s&&De(e,t,s),s};const xe=typeof document<"u"&&"showPopover"in document.createElement("div");let F=me(C);F=xe?ve(F):ge(F);var w;const d=(w=class extends F{constructor(){super(...arguments),this._delayed=!1,this._disabled=!1,this.offset=0,this._open=!1,this.lastRequestSlottableState=!1,this.receivesFocus="auto",this._state="closed",this.triggerElement=null,this.type="auto",this.wasOpen=!1,this.closeOnFocusOut=e=>{if(!e.relatedTarget)return;const t=new Event("overlay-relation-query",{bubbles:!0,composed:!0});e.relatedTarget.addEventListener(t.type,i=>{i.composedPath().includes(this)||(this.open=!1)}),e.relatedTarget.dispatchEvent(t)}}get delayed(){var e;return((e=this.elements.at(-1))==null?void 0:e.hasAttribute("delayed"))||this._delayed}set delayed(e){this._delayed=e}get disabled(){return this._disabled}set disabled(e){var t;this._disabled=e,e?((t=this.strategy)==null||t.abort(),this.wasOpen=this.open,this.open=!1):(this.bindEvents(),this.open=this.open||this.wasOpen,this.wasOpen=!1)}get hasNonVirtualTrigger(){return!!this.triggerElement&&!(this.triggerElement instanceof x)}get placementController(){return this._placementController||(this._placementController=new Z(this)),this._placementController}get open(){return this._open}set open(e){var t;e&&this.disabled||e!==this.open&&((t=this.strategy)!=null&&t.activelyOpening&&!e||(this._open=e,this.open&&(w.openCount+=1),this.requestUpdate("open",!this.open),this.open&&this.requestSlottable()))}get state(){return this._state}set state(e){var i;if(e===this.state)return;const t=this.state;this._state=e,(this.state==="opened"||this.state==="closed")&&((i=this.strategy)==null||i.shouldCompleteOpen()),this.requestUpdate("state",t)}get elementResolver(){return this._elementResolver||(this._elementResolver=new Y.ElementResolutionController(this)),this._elementResolver}get usesDialog(){return this.type==="modal"||this.type==="page"}get popoverValue(){if("popover"in this)switch(this.type){case"modal":case"page":return;case"hint":return"manual";default:return this.type}}get requiresPositioning(){return!(this.type==="page"||!this.open||!this.triggerElement||!this.placement&&this.type!=="hint")}managePosition(){if(!this.requiresPositioning||!this.open)return;const e=this.offset||0,t=this.triggerElement,i=this.placement||"right",s=this.tipPadding;this.placementController.placeOverlay(this.dialogEl,{offset:e,placement:i,tipPadding:s,trigger:t,type:this.type})}async managePopoverOpen(){super.managePopoverOpen();const e=this.open;if(this.open!==e||(await this.manageDelay(e),this.open!==e)||(this.triggerInteraction==="longpress"&&await f(),await this.ensureOnDOM(e),this.open!==e))return;const t=await this.makeTransition(e);this.open===e&&await this.applyFocus(e,t)}async applyFocus(e,t){if(!(this.receivesFocus==="false"||this.type==="hint")){if(await f(),await f(),e===this.open&&!this.open){this.hasNonVirtualTrigger&&this.contains(this.getRootNode().activeElement)&&this.triggerElement.focus();return}t==null||t.focus()}}returnFocus(){var t;if(this.open||this.type==="hint")return;const e=()=>{var n,r;const i=[];let s=typeof document<"u"?document.activeElement:null;for(;(n=s==null?void 0:s.shadowRoot)!=null&&n.activeElement;)s=s.shadowRoot.activeElement;for(;s;){const o=s.assignedSlot||s.parentElement||((r=s.getRootNode())==null?void 0:r.host);o&&i.push(o),s=o}return i};this.receivesFocus!=="false"&&((t=this.triggerElement)!=null&&t.focus)&&(this.contains(this.getRootNode().activeElement)||e().includes(this)||typeof document<"u"&&document.activeElement===document.body)&&this.triggerElement.focus()}async manageOpen(e){if(!(!this.isConnected&&this.open)&&(this.hasUpdated||await this.updateComplete,this.open?(X.add(this),this.willPreventClose&&(document.addEventListener("pointerup",()=>{this.dialogEl.classList.toggle("not-immediately-closable",!1),this.willPreventClose=!1},{once:!0}),this.dialogEl.classList.toggle("not-immediately-closable",!0))):(e&&this.dispose(),X.remove(this)),this.open&&this.state!=="opened"?this.state="opening":!this.open&&this.state!=="closed"&&(this.state="closing"),this.usesDialog?this.manageDialogOpen():this.managePopoverOpen(),this.type==="auto")){const t=this.getRootNode();this.open?t.addEventListener("focusout",this.closeOnFocusOut,{capture:!0}):t.removeEventListener("focusout",this.closeOnFocusOut,{capture:!0})}}bindEvents(){var e;(e=this.strategy)==null||e.abort(),this.strategy=void 0,this.hasNonVirtualTrigger&&this.triggerInteraction&&(this.strategy=new oe[this.triggerInteraction](this.triggerElement,{overlay:this}))}handleBeforetoggle(e){e.newState!=="open"&&this.handleBrowserClose(e)}handleBrowserClose(e){var t;if(e.stopPropagation(),!((t=this.strategy)!=null&&t.activelyOpening)){this.open=!1;return}this.manuallyKeepOpen()}manuallyKeepOpen(){this.open=!0,this.placementController.allowPlacementUpdate=!0,this.manageOpen(!1)}handleSlotchange(){var e,t;this.elements.length===0?(e=this.strategy)==null||e.releaseDescription():this.hasNonVirtualTrigger&&((t=this.strategy)==null||t.prepareDescription(this.triggerElement))}shouldPreventClose(){const e=this.willPreventClose;return this.willPreventClose=!1,e}requestSlottable(){this.lastRequestSlottableState!==this.open&&(this.open||document.body.offsetHeight,this.dispatchEvent(new J.SlottableRequestEvent("overlay-content",this.open?{}:J.removeSlottableRequest)),this.lastRequestSlottableState=this.open)}willUpdate(e){var i;if(this.hasAttribute("id")||this.setAttribute("id",`${this.tagName.toLowerCase()}-${M.randomID()}`),e.has("open")&&(this.hasUpdated||this.open)&&this.manageOpen(e.get("open")),e.has("trigger")){const[s,n]=((i=this.trigger)==null?void 0:i.split("@"))||[];this.elementResolver.selector=s?`#${s}`:"",this.triggerInteraction=n}let t=!1;e.has(Y.elementResolverUpdatedSymbol)&&(t=this.triggerElement,this.triggerElement=this.elementResolver.element),e.has("triggerElement")&&(t=e.get("triggerElement")),t!==!1&&this.bindEvents()}updated(e){super.updated(e),e.has("placement")&&(this.placement?this.dialogEl.setAttribute("actual-placement",this.placement):this.dialogEl.removeAttribute("actual-placement"),this.open&&e.get("placement")!==void 0&&this.placementController.resetOverlayPosition()),e.has("state")&&this.state==="closed"&&e.get("state")!==void 0&&this.placementController.clearOverlayPosition()}renderContent(){return O.html` <slot @slotchange=${this.handleSlotchange}></slot> `}get dialogStyleMap(){return{"--luzmo-overlay-open-count":w.openCount.toString()}}renderDialog(){return O.html`
|
|
19
|
+
<dialog
|
|
20
|
+
class="dialog"
|
|
21
|
+
part="dialog"
|
|
22
|
+
placement=${$.ifDefined(this.requiresPositioning?this.placement||"right":void 0)}
|
|
23
|
+
style=${G.styleMap(this.dialogStyleMap)}
|
|
24
|
+
@close=${this.handleBrowserClose}
|
|
25
|
+
@cancel=${this.handleBrowserClose}
|
|
26
|
+
@beforetoggle=${this.handleBeforetoggle}
|
|
27
|
+
?is-visible=${this.state!=="closed"}
|
|
28
|
+
>
|
|
29
|
+
${this.renderContent()}
|
|
30
|
+
</dialog>
|
|
31
|
+
`}renderPopover(){return O.html`
|
|
32
|
+
<div
|
|
33
|
+
class="dialog"
|
|
34
|
+
part="dialog"
|
|
35
|
+
placement=${$.ifDefined(this.requiresPositioning?this.placement||"right":void 0)}
|
|
36
|
+
popover=${$.ifDefined(this.popoverValue)}
|
|
37
|
+
style=${G.styleMap(this.dialogStyleMap)}
|
|
38
|
+
@beforetoggle=${this.handleBeforetoggle}
|
|
39
|
+
@close=${this.handleBrowserClose}
|
|
40
|
+
?is-visible=${this.state!=="closed"}
|
|
41
|
+
>
|
|
42
|
+
${this.renderContent()}
|
|
43
|
+
</div>
|
|
44
|
+
`}render(){const e=this.type==="modal"||this.type==="page";return O.html`
|
|
45
|
+
${e?this.renderDialog():this.renderPopover()}
|
|
46
|
+
<slot name="longpress-describedby-descriptor"></slot>
|
|
47
|
+
`}connectedCallback(){super.connectedCallback(),this.addEventListener("close",()=>{this.open=!1}),this.hasUpdated&&this.bindEvents()}disconnectedCallback(){var e;(e=this.strategy)==null||e.releaseDescription(),this.open=!1,super.disconnectedCallback()}},w.styles=[O.unsafeCSS(we)],w.openCount=1,w);m([u.property({type:Boolean})],d.prototype,"delayed",1);m([u.query(".dialog")],d.prototype,"dialogEl",2);m([u.property({type:Boolean})],d.prototype,"disabled",1);m([u.queryAssignedElements({flatten:!0,selector:':not([slot="longpress-describedby-descriptor"], slot)'})],d.prototype,"elements",2);m([u.property({type:Number})],d.prototype,"offset",2);m([u.property({type:Boolean,reflect:!0})],d.prototype,"open",1);m([u.property()],d.prototype,"placement",2);m([u.property({attribute:"receives-focus"})],d.prototype,"receivesFocus",2);m([u.query("slot")],d.prototype,"slotEl",2);m([u.state()],d.prototype,"state",1);m([u.property({type:Number,attribute:"tip-padding"})],d.prototype,"tipPadding",2);m([u.property()],d.prototype,"trigger",2);m([u.property({attribute:!1})],d.prototype,"triggerElement",2);m([u.property({attribute:!1})],d.prototype,"triggerInteraction",2);m([u.property()],d.prototype,"type",2);let ne=d;const N=Object.freeze(Object.defineProperty({__proto__:null,LuzmoOverlay:ne},Symbol.toStringTag,{value:"Module"}));exports.ClickController=ee;exports.HoverController=te;exports.InteractionController=I;exports.InteractionTypes=T;exports.LONGPRESS_INSTRUCTIONS=ie;exports.LongpressController=se;exports.LuzmoAbstractOverlay=C;exports.LuzmoOverlay=ne;exports.PlacementController=Z;exports.SAFARI_FOCUS_RING_CLASS=z;exports.VirtualTrigger=x;exports.guaranteedAllTransitionend=q;exports.lastInteractionType=_;exports.nextFrame=f;exports.noop=E;exports.overlay=N;exports.overlayTimer=D;exports.placementUpdatedSymbol=Ce;exports.strategies=oe;
|
|
@@ -81,7 +81,7 @@ class we {
|
|
|
81
81
|
this.cooldownTimeout && typeof window < "u" && window.clearTimeout(this.cooldownTimeout), delete this.cooldownTimeout;
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
const
|
|
84
|
+
const S = new we(), E = () => {
|
|
85
85
|
}, $ = (a, e, t) => {
|
|
86
86
|
const i = new AbortController(), s = /* @__PURE__ */ new Map(), n = () => {
|
|
87
87
|
i.abort(), t();
|
|
@@ -264,7 +264,7 @@ class v extends Event {
|
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
|
-
class
|
|
267
|
+
class A {
|
|
268
268
|
constructor(e, t) {
|
|
269
269
|
this.x = 0, this.y = 0, this.x = e, this.y = t;
|
|
270
270
|
}
|
|
@@ -327,7 +327,7 @@ function Ee(a) {
|
|
|
327
327
|
if (!this.isConnected || i !== this.open)
|
|
328
328
|
return;
|
|
329
329
|
const l = async () => {
|
|
330
|
-
const c = this.triggerElement instanceof
|
|
330
|
+
const c = this.triggerElement instanceof A;
|
|
331
331
|
this.dispatchEvent(
|
|
332
332
|
new v(p, this, {
|
|
333
333
|
interaction: this.type,
|
|
@@ -370,10 +370,10 @@ function Pe(a) {
|
|
|
370
370
|
}
|
|
371
371
|
async manageDelay(i) {
|
|
372
372
|
if (i === !1 || i !== this.open) {
|
|
373
|
-
|
|
373
|
+
S.close(this);
|
|
374
374
|
return;
|
|
375
375
|
}
|
|
376
|
-
this.delayed && await
|
|
376
|
+
this.delayed && await S.openTimer(this) && (this.open = !i);
|
|
377
377
|
}
|
|
378
378
|
ensureOnDOM(i) {
|
|
379
379
|
document.body.offsetHeight;
|
|
@@ -404,7 +404,7 @@ function Pe(a) {
|
|
|
404
404
|
})
|
|
405
405
|
), h > 0)
|
|
406
406
|
return;
|
|
407
|
-
const l = this.triggerElement instanceof
|
|
407
|
+
const l = this.triggerElement instanceof A;
|
|
408
408
|
this.dispatchEvent(
|
|
409
409
|
new v(p, this, {
|
|
410
410
|
interaction: this.type,
|
|
@@ -424,7 +424,7 @@ function Pe(a) {
|
|
|
424
424
|
}
|
|
425
425
|
return e;
|
|
426
426
|
}
|
|
427
|
-
const Ce = CSS.supports("(overlay: auto)");
|
|
427
|
+
const Ce = typeof CSS < "u" && CSS.supports("(overlay: auto)");
|
|
428
428
|
function J(a) {
|
|
429
429
|
let e = !1;
|
|
430
430
|
try {
|
|
@@ -442,10 +442,10 @@ function Oe(a) {
|
|
|
442
442
|
class e extends a {
|
|
443
443
|
async manageDelay(i) {
|
|
444
444
|
if (i === !1 || i !== this.open) {
|
|
445
|
-
|
|
445
|
+
S.close(this);
|
|
446
446
|
return;
|
|
447
447
|
}
|
|
448
|
-
this.delayed && await
|
|
448
|
+
this.delayed && await S.openTimer(this) && (this.open = !i);
|
|
449
449
|
}
|
|
450
450
|
/**
|
|
451
451
|
* A popover should be hidden _after_ it is no longer on top-layer because
|
|
@@ -514,7 +514,7 @@ function Oe(a) {
|
|
|
514
514
|
if (this.open !== i)
|
|
515
515
|
return;
|
|
516
516
|
await f();
|
|
517
|
-
const g = this.triggerElement instanceof
|
|
517
|
+
const g = this.triggerElement instanceof A;
|
|
518
518
|
this.dispatchEvent(
|
|
519
519
|
new v(p, this, {
|
|
520
520
|
interaction: this.type,
|
|
@@ -701,7 +701,7 @@ const L = 8, Le = 100, ze = (a) => ({
|
|
|
701
701
|
"bottom-start": ["top-start", "left", "right"],
|
|
702
702
|
"bottom-end": ["top-end", "left", "right"]
|
|
703
703
|
})[a] ?? [a], et = Symbol("placement updated");
|
|
704
|
-
class
|
|
704
|
+
class Se {
|
|
705
705
|
/**
|
|
706
706
|
* Creates an instance of the PlacementController.
|
|
707
707
|
*
|
|
@@ -933,7 +933,7 @@ class B {
|
|
|
933
933
|
this.isPersistent || this.abort();
|
|
934
934
|
}
|
|
935
935
|
}
|
|
936
|
-
class
|
|
936
|
+
class Ae extends B {
|
|
937
937
|
constructor() {
|
|
938
938
|
super(...arguments), this.type = C.click, this.preventNextToggle = !1;
|
|
939
939
|
}
|
|
@@ -1168,7 +1168,7 @@ class Ne extends B {
|
|
|
1168
1168
|
}
|
|
1169
1169
|
}
|
|
1170
1170
|
const qe = {
|
|
1171
|
-
click:
|
|
1171
|
+
click: Ae,
|
|
1172
1172
|
longpress: Ne,
|
|
1173
1173
|
hover: ke
|
|
1174
1174
|
};
|
|
@@ -1215,7 +1215,7 @@ const d = (b = class extends z {
|
|
|
1215
1215
|
* @returns `true` if the trigger element is not a virtual trigger, otherwise `false`.
|
|
1216
1216
|
*/
|
|
1217
1217
|
get hasNonVirtualTrigger() {
|
|
1218
|
-
return !!this.triggerElement && !(this.triggerElement instanceof
|
|
1218
|
+
return !!this.triggerElement && !(this.triggerElement instanceof A);
|
|
1219
1219
|
}
|
|
1220
1220
|
/**
|
|
1221
1221
|
* Provides an instance of the `PlacementController` for managing the positioning
|
|
@@ -1228,7 +1228,7 @@ const d = (b = class extends z {
|
|
|
1228
1228
|
* @returns The `PlacementController` instance.
|
|
1229
1229
|
*/
|
|
1230
1230
|
get placementController() {
|
|
1231
|
-
return this._placementController || (this._placementController = new
|
|
1231
|
+
return this._placementController || (this._placementController = new Se(this)), this._placementController;
|
|
1232
1232
|
}
|
|
1233
1233
|
get open() {
|
|
1234
1234
|
return this._open;
|
|
@@ -1714,13 +1714,13 @@ const q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1714
1714
|
LuzmoOverlay: Ue
|
|
1715
1715
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1716
1716
|
export {
|
|
1717
|
-
|
|
1717
|
+
Ae as C,
|
|
1718
1718
|
ke as H,
|
|
1719
1719
|
C as I,
|
|
1720
1720
|
P as L,
|
|
1721
|
-
|
|
1721
|
+
Se as P,
|
|
1722
1722
|
F as S,
|
|
1723
|
-
|
|
1723
|
+
A as V,
|
|
1724
1724
|
f as a,
|
|
1725
1725
|
B as b,
|
|
1726
1726
|
_e as c,
|
|
@@ -1730,7 +1730,7 @@ export {
|
|
|
1730
1730
|
$ as g,
|
|
1731
1731
|
N as l,
|
|
1732
1732
|
E as n,
|
|
1733
|
-
|
|
1733
|
+
S as o,
|
|
1734
1734
|
et as p,
|
|
1735
1735
|
qe as s
|
|
1736
1736
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luzmo/lucero",
|
|
3
|
-
"version": "1.0.1-alpha.
|
|
3
|
+
"version": "1.0.1-alpha.34",
|
|
4
4
|
"homepage": "https://luzmo.com",
|
|
5
5
|
"description": "Lucero - The design system for Luzmo",
|
|
6
6
|
"type": "module",
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"@internationalized/number": "^3.6.1",
|
|
324
324
|
"@lit-labs/observers": "^2.0.4",
|
|
325
325
|
"@lit-labs/virtualizer": "^2.1.0",
|
|
326
|
-
"@luzmo/icons": "^1.0.1-alpha.
|
|
326
|
+
"@luzmo/icons": "^1.0.1-alpha.20",
|
|
327
327
|
"colorjs.io": "^0.5.2",
|
|
328
328
|
"lit": "^3.3.1",
|
|
329
329
|
"nouislider": "^15.8.1"
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/*! * Lucero - The design system for Luzmo.
|
|
2
|
-
*
|
|
3
|
-
* Copyright © 2025 Luzmo
|
|
4
|
-
* All rights reserved.
|
|
5
|
-
* Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
|
|
6
|
-
* This license allows users with a current active Luzmo account to use Lucero.
|
|
7
|
-
* This license terminates automatically if a user no longer has an active Luzmo account.
|
|
8
|
-
* Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
|
|
9
|
-
*
|
|
10
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
12
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
13
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
14
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
15
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
|
-
* SOFTWARE.
|
|
17
|
-
* */
|
|
18
|
-
"use strict";const O=require("lit"),u=require("lit/decorators.js"),$=require("lit/directives/if-defined.js"),G=require("lit/directives/style-map.js"),M=require("./random-id-CqvckpWe.cjs"),Y=require("./element-resolution-BvRLGqIU.cjs"),le=require("./base-5nDSSNeT.cjs"),x=require("./focusable-selectors-BgFlyFcY.cjs"),b=require("@floating-ui/dom"),J=require("./slottable-request-event-BfUUt1Mh.cjs"),H=require("./condition-attribute-with-id-DrQYZzFS.cjs"),k=require("./platform-BJnOJJag.cjs");function he(a,e,t=[]){for(const[i,s]of e.entries()){const n=a[i],r=n.parentElement||n.getRootNode();t[i]&&t[i](s),r&&r!==n&&n.replaceWith(s),delete a[i]}return e}const ce=(a,e,{position:t,prepareCallback:i}={position:"beforeend"})=>{let{length:s}=a;if(s===0)return()=>a;let n=1,r=0;(t==="afterbegin"||t==="afterend")&&(n=-1,r=s-1);const o=new Array(s),h=new Array(s),p=typeof document<"u"?document.createComment("placeholder for reparented element"):null;do{const l=a[r];i&&(h[r]=i(l)),o[r]=p.cloneNode();const c=l.parentElement||l.getRootNode();c&&c!==l&&c.replaceChild(o[r],l),e.insertAdjacentElement(t,l),r+=n}while(--s>0);return function(){return he(o,a,h)}},pe=1e3,de=1e3;class ue{constructor(e={}){this.warmUpDelay=pe,this.coolDownDelay=de,this.isWarm=!1,this.timeout=0,Object.assign(this,e)}openTimer(e){if(this.cancelCooldownTimer(),!this.component||e!==this.component)return this.component&&(this.close(this.component),this.cancelCooldownTimer()),this.component=e,this.isWarm?Promise.resolve(!1):(this.promise=new Promise(t=>{this.resolve=t,this.timeout=typeof window<"u"?window.setTimeout(()=>{this.resolve&&(this.resolve(!1),this.isWarm=!0)},this.warmUpDelay):0}),this.promise);if(this.promise)return this.promise;throw new Error("Inconsistent state")}close(e){this.component&&this.component===e&&(this.resetCooldownTimer(),this.timeout>0&&(clearTimeout(this.timeout),this.timeout=0),this.resolve&&(this.resolve(!0),delete this.resolve),delete this.promise,delete this.component)}resetCooldownTimer(){this.isWarm&&(this.cooldownTimeout&&typeof window<"u"&&window.clearTimeout(this.cooldownTimeout),this.cooldownTimeout=typeof window<"u"?window.setTimeout(()=>{this.isWarm=!1,delete this.cooldownTimeout},this.coolDownDelay):void 0)}cancelCooldownTimer(){this.cooldownTimeout&&typeof window<"u"&&window.clearTimeout(this.cooldownTimeout),delete this.cooldownTimeout}}const D=new ue,E=()=>{},q=(a,e,t)=>{const i=new AbortController,s=new Map,n=()=>{i.abort(),t()};let r,o;const h=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{o=requestAnimationFrame(()=>{n()})})}),p=c=>{c.target===a&&(s.set(c.propertyName,s.get(c.propertyName)-1),s.get(c.propertyName)||s.delete(c.propertyName),s.size===0&&n())},l=c=>{c.target===a&&(s.has(c.propertyName)||s.set(c.propertyName,0),s.set(c.propertyName,s.get(c.propertyName)+1),cancelAnimationFrame(h),cancelAnimationFrame(r),cancelAnimationFrame(o))};a.addEventListener("transitionrun",l,{signal:i.signal}),a.addEventListener("transitionend",p,{signal:i.signal}),a.addEventListener("transitioncancel",p,{signal:i.signal}),e()};function f(){return new Promise(a=>requestAnimationFrame(()=>a()))}class C extends le.LuzmoElement{constructor(){super(...arguments),this.dispose=E,this.offset=0,this.willPreventClose=!1}applyFocus(e,t){}get delayed(){return!1}set delayed(e){}get disabled(){return!1}set disabled(e){}get elementResolver(){return this._elementResolver}set elementResolver(e){this._elementResolver=e}ensureOnDOM(e){}makeTransition(e){return null}manageDelay(e){}manageDialogOpen(){}managePopoverOpen(){}managePosition(){}get open(){return!1}set open(e){}get placementController(){return this._placementController}set placementController(e){this._placementController=e}requestSlottable(){}returnFocus(){}get state(){return"closed"}set state(e){}manuallyKeepOpen(){}static update(){const e=new CustomEvent("luzmo-update-overlays",{bubbles:!0,composed:!0,cancelable:!0});document.dispatchEvent(e)}static async open(e,t,i,s){await Promise.resolve().then(()=>N);const n=arguments.length===2,r=i||e,o=new this;let h=!1;const p=ce([r],o,{position:"beforeend",prepareCallback:v=>{const P=v.slot;return v.removeAttribute("slot"),()=>{v.slot=P}}});if(o.dispose=()=>{o.addEventListener("luzmo-closed",()=>{h||(p(),h=!0),requestAnimationFrame(()=>{o.remove()})}),o.open=!1,o.dispose=E},!n&&r&&s){const v=e,P=t,g=s;return C.applyOptions(o,{...g,delayed:g.delayed||r.hasAttribute("delayed"),trigger:g.virtualTrigger||v,type:P==="modal"?"modal":P==="hover"?"hint":"auto"}),v.after(o),await o.updateComplete,o.open=!0,o.dispose}const c=t;return o.append(r),C.applyOptions(o,{...c,delayed:c.delayed||r.hasAttribute("delayed")}),o.updateComplete.then(()=>{o.open=!0}),o}static applyOptions(e,t){e.delayed=!!t.delayed,e.receivesFocus=t.receivesFocus??"auto",e.triggerElement=t.trigger||null,e.type=t.type||"modal",e.offset=t.offset??0,e.placement=t.placement,e.willPreventClose=!!t.notImmediatelyClosable}}const W=a=>a.querySelector(x.userFocusableSelector),B=a=>a.assignedElements().find(t=>t.matches(x.userFocusableSelector));class K extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1}),this.currentState="open",this.newState="closed"}}class j extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1}),this.currentState="closed",this.newState="open"}}class y extends Event{constructor(e,t,{publish:i,interaction:s,reason:n}){super(e,{bubbles:i,composed:i}),this.overlay=t,this.detail={interaction:s,reason:n}}}class S{constructor(e,t){this.x=0,this.y=0,this.x=e,this.y=t}updateBoundingClientRect(e,t){this.x=e,this.y=t,C.update()}getBoundingClientRect(){return{width:0,height:0,top:this.y,right:this.x,y:this.y,x:this.x,bottom:this.y,left:this.x,toJSON(){}}}}function me(a){class e extends a{async manageDialogOpen(){const i=this.open;if(await f(),await this.managePosition(),this.open!==i)return;const s=await this.dialogMakeTransition(i);this.open===i&&await this.dialogApplyFocus(i,s)}dialogMakeTransition(i){let s=null;const n=(o,h)=>()=>{if(o.open=i,!i){const l=()=>{o.removeEventListener("close",l)};o.addEventListener("close",l)}if(h>0)return;const p=i?j:K;this.dispatchEvent(new p),i&&(o.matches(x.userFocusableSelector)&&(s=o),s=s||W(o),s||o.querySelectorAll("slot").forEach(c=>{s||(s=B(c))}),!(!this.isConnected||this.dialogEl.open)&&this.dialogEl.showModal())},r=(o,h)=>()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(h>0){o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1}));return}if(!this.isConnected||i!==this.open)return;const l=async()=>{const c=this.triggerElement instanceof S;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:c})),o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1})),this.triggerElement&&!c&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};!i&&this.dialogEl.open?(this.dialogEl.addEventListener("close",()=>{l()},{once:!0}),this.dialogEl.close()):l()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}dialogApplyFocus(i,s){this.applyFocus(i,s)}}return e}function ge(a){class e extends a{async managePopoverOpen(){await this.managePosition()}async manageDelay(i){if(i===!1||i!==this.open){D.close(this);return}this.delayed&&await D.openTimer(this)&&(this.open=!i)}ensureOnDOM(i){document.body.offsetHeight}makeTransition(i){if(this.open!==i)return null;let s=null;const n=(o,h)=>()=>{if(i!==this.open)return;if(o.open=i,h===0){const l=i?j:K;this.dispatchEvent(new l)}if(i!==!0||(o.matches(x.userFocusableSelector)&&(s=o),s=s||W(o),s))return;o.querySelectorAll("slot").forEach(l=>{s||(s=B(l))})},r=(o,h)=>async()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(o.dispatchEvent(new y(p,this,{interaction:this.type})),h>0)return;const l=this.triggerElement instanceof S;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:l})),this.triggerElement&&!l&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}}return e}const fe=CSS.supports("(overlay: auto)");function Q(a){let e=!1;try{e=a.matches(":popover-open")}catch{}let t=!1;try{t=a.matches(":open")}catch{}return e||t}function ve(a){class e extends a{async manageDelay(i){if(i===!1||i!==this.open){D.close(this);return}this.delayed&&await D.openTimer(this)&&(this.open=!i)}shouldHidePopover(i){if(i&&this.open!==i)return;const s=async({newState:n}={})=>{n!=="open"&&await this.placementController.resetOverlayPosition()};if(!Q(this.dialogEl)){s();return}this.dialogEl.addEventListener("toggle",s,{once:!0})}shouldShowPopover(i){let s=!1;try{s=this.dialogEl.matches(":popover-open")}catch{}let n=!1;try{n=this.dialogEl.matches(":open")}catch{}i&&this.open===i&&!s&&!n&&this.isConnected&&(this.dialogEl.showPopover(),this.managePosition())}async ensureOnDOM(i){fe||await this.shouldHidePopover(i),this.shouldShowPopover(i),await f()}makeTransition(i){if(this.open!==i)return null;let s=null;const n=(o,h)=>()=>{if(o.open=i,h===0){const l=i?j:K;this.dispatchEvent(new l)}if(!i||(o.matches(x.userFocusableSelector)&&(s=o),s=s||W(o),s))return;o.querySelectorAll("slot").forEach(l=>{s||(s=B(l))})},r=(o,h)=>()=>{if(this.open!==i)return;const p=i?"luzmo-opened":"luzmo-closed";if(h>0){o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1}));return}const l=async()=>{if(this.open!==i)return;await f();const v=this.triggerElement instanceof S;this.dispatchEvent(new y(p,this,{interaction:this.type,publish:v})),o.dispatchEvent(new y(p,this,{interaction:this.type,publish:!1})),this.triggerElement&&!v&&this.triggerElement.dispatchEvent(new y(p,this,{interaction:this.type,publish:!0})),this.state=i?"opened":"closed",this.returnFocus(),await f(),await f(),i===this.open&&i===!1&&this.requestSlottable()};if(this.open!==i)return;const c=Q(this.dialogEl);i!==!0&&c&&this.isConnected?(this.dialogEl.addEventListener("beforetoggle",()=>{l()},{once:!0}),this.dialogEl.hidePopover()):l()};return this.elements.forEach((o,h)=>{q(o,n(o,h),r(o,h))}),s}}return e}const ye=typeof document<"u"&&"showPopover"in document.createElement("div");class be{constructor(){this.root=typeof document>"u"?null:document.body,this.stack=[],this.handleScroll=e=>{typeof document<"u"&&e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||this.stack.forEach(t=>{t.open&&(t.type==="auto"&&t.triggerElement instanceof HTMLElement&&t.triggerElement.closest("luzmo-picker, luzmo-select, luzmo-action-menu")&&e.stopPropagation(),typeof document<"u"&&document.dispatchEvent(new CustomEvent("luzmo-update-overlays",{bubbles:!0,composed:!0,cancelable:!0})))})},this.handlePointerdown=e=>{this.pointerdownPath=e.composedPath(),this.lastOverlay=this.stack.at(-1)},this.handlePointerup=()=>{const e=this.pointerdownPath;if(this.pointerdownPath=void 0,this.stack.length===0||!(e!=null&&e.length))return;const t=this.lastOverlay;this.lastOverlay=void 0;const i=this.stack.length-1,s=this.stack.filter((n,r)=>!e.find(h=>h===n||h===(n==null?void 0:n.triggerElement)&&(n==null?void 0:n.type)==="hint"||r===i&&n!==t&&n.triggerInteraction==="longpress")&&!n.shouldPreventClose()&&n.type!=="manual"&&!(n.type==="modal"&&t!==n));s.reverse(),s.forEach(n=>{this.closeOverlay(n);let r=n.parentOverlayToForceClose;for(;r;)this.closeOverlay(r),r=r.parentOverlayToForceClose})},this.handleBeforetoggle=e=>{const{target:t,newState:i}=e;i!=="open"&&this.closeOverlay(t)},this.handleKeydown=e=>{if(e.code!=="Escape"||this.stack.length===0)return;const t=this.stack.at(-1);if((t==null?void 0:t.type)==="page"){e.preventDefault();return}if((t==null?void 0:t.type)==="manual"){this.closeOverlay(t);return}ye||t&&this.closeOverlay(t)},typeof document<"u"&&this.bindEvents()}get document(){return this.root.ownerDocument||document}bindEvents(){typeof document<"u"&&(this.document.addEventListener("pointerdown",this.handlePointerdown),this.document.addEventListener("pointerup",this.handlePointerup),this.document.addEventListener("keydown",this.handleKeydown),this.document.addEventListener("scroll",this.handleScroll,{capture:!0}))}closeOverlay(e){const t=this.stack.indexOf(e);t!==-1&&this.stack.splice(t,1),e.open=!1}overlaysByTriggerElement(e){return this.stack.filter(t=>t.triggerElement===e)}add(e){if(this.stack.includes(e)){const t=this.stack.indexOf(e);t!==-1&&(this.stack.splice(t,1),this.stack.push(e));return}if(e.type==="auto"||e.type==="modal"||e.type==="page"){const t="luzmo-overlay-query-path",i=new Event(t,{composed:!0,bubbles:!0});e.addEventListener(t,s=>{const n=s.composedPath();this.stack.forEach(r=>{!n.find(h=>h===r)&&r.type!=="manual"&&r.type!=="modal"&&this.closeOverlay(r)})},{once:!0}),e.dispatchEvent(i)}else if(e.type==="hint"){if(this.stack.some(i=>i.type!=="manual"&&i.triggerElement&&i.triggerElement===e.triggerElement)){e.open=!1;return}this.stack.forEach(i=>{i.type==="hint"&&this.closeOverlay(i)})}requestAnimationFrame(()=>{this.stack.push(e),e.addEventListener("beforetoggle",this.handleBeforetoggle,{once:!0})})}remove(e){this.closeOverlay(e)}}const X=new be,we=':host{display:contents;pointer-events:none;--luzmo-overlay-animation-distance: .5rem}:host(:has(> luzmo-tooltip)){--luzmo-overlay-animation-distance: var( --luzmo-tooltip-animation-distance, 4px )}.dialog{margin:0;border:0;background:none;padding:0;position:fixed;overflow:visible;opacity:1!important;box-sizing:border-box;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);max-width:calc(100vw - 16px);height:auto;inset:auto;top:0;left:0;display:flex;--luzmo-overlay-open: true}.dialog:not([is-visible]){display:none}.dialog:focus{outline:none}dialog:modal{--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}:host(:not([open])) .dialog{--luzmo-overlay-open: false}.dialog::backdrop{display:none}.dialog:before{position:absolute;top:-999em;right:-999em;bottom:-999em;left:-999em;content:"";pointer-events:auto!important}.dialog:not(.not-immediately-closable):before{display:none}.dialog>div{width:100%}::slotted(*){pointer-events:auto;visibility:visible!important}::slotted(luzmo-popover){position:static}.dialog:not([actual-placement])[placement*=top]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:var(--luzmo-overlay-animation-distance)}.dialog:not([actual-placement])[placement*=right]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=bottom]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=left]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:var(--luzmo-overlay-animation-distance)}.dialog[actual-placement*=top]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:var(--luzmo-overlay-animation-distance)}.dialog[actual-placement*=right]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog[actual-placement*=bottom]{padding-block:var(--luzmo-overlay-animation-distance);margin-top:calc(-1 * var(--luzmo-overlay-animation-distance))}.dialog[actual-placement*=left]{padding-inline:var(--luzmo-overlay-animation-distance);margin-left:var(--luzmo-overlay-animation-distance)}slot[name=longpress-describedby-descriptor]{display:none}@supports selector(:open){.dialog{opacity:0}.dialog:open{opacity:1;--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}}@supports selector(:popover-open){.dialog{opacity:0}.dialog:popover-open{opacity:1;--luzmo-popover-filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, .15))}}@supports (overlay: auto){.dialog{display:none;transition:all var(--luzmo-overlay-animation-duration, .13s),translate 0s,display var(--luzmo-overlay-animation-duration, .13s);transition-behavior:allow-discrete}.dialog:popover-open,.dialog:modal{display:flex}}@supports (not selector(:open)) and (not selector(:popover-open)){:host:not([open]) .dialog{pointer-events:none}.dialog[actual-placement]{z-index:calc(var(--luzmo-overlay-z-index-base, 1000) + var(--luzmo-overlay-open-count))}}';function A(a){if(a===void 0)return 0;const e=window.devicePixelRatio||1;return Math.round(a*e)/e}const R=8,Ee=100,Pe=a=>({left:["right","bottom","top"],"left-start":["right-start","bottom","top"],"left-end":["right-end","bottom","top"],right:["left","bottom","top"],"right-start":["left-start","bottom","top"],"right-end":["left-end","bottom","top"],top:["bottom","left","right"],"top-start":["bottom-start","left","right"],"top-end":["bottom-end","left","right"],bottom:["top","left","right"],"bottom-start":["top-start","left","right"],"bottom-end":["top-end","left","right"]})[a]??[a],Ce=Symbol("placement updated");class Z{constructor(e){this.originalPlacements=new WeakMap,this.allowPlacementUpdate=!1,this.closeForAncestorUpdate=()=>{!this.allowPlacementUpdate&&this.options.type!=="modal"&&this.cleanup&&this.target.dispatchEvent(new Event("close",{bubbles:!0})),this.allowPlacementUpdate=!1},this.updatePlacement=()=>{this.computePlacement()},this.resetOverlayPosition=()=>{!this.target||!this.options||(this.clearOverlayPosition(),this.host.offsetHeight,this.computePlacement())},this.host=e,this.host.addController(this)}placeOverlay(e=this.target,t=this.options){if(this.target=e,this.options=t,!e||!t)return;const i=b.autoUpdate(t.trigger,e,this.closeForAncestorUpdate,{ancestorResize:!1,elementResize:!1,layoutShift:!1}),s=b.autoUpdate(t.trigger,e,this.updatePlacement,{ancestorScroll:!1});this.cleanup=()=>{var n;(n=this.host.elements)==null||n.forEach(r=>{r.addEventListener("luzmo-closed",()=>{const o=this.originalPlacements.get(r);o&&r.setAttribute("placement",o),this.originalPlacements.delete(r)},{once:!0})}),i(),s()}}async computePlacement(){var v,P;const{options:e,target:t}=this;await(document.fonts?document.fonts.ready:Promise.resolve());const i=e.trigger instanceof HTMLElement?b.flip():b.flip({padding:R,fallbackPlacements:Pe(e.placement)}),[s=0,n=0]=Array.isArray(e==null?void 0:e.offset)?e.offset:[e.offset,0],r=(v=this.host.elements.find(g=>g.tipElement))==null?void 0:v.tipElement,o=[b.offset({mainAxis:s,crossAxis:n}),b.shift({padding:R}),i,b.size({padding:R,apply:({availableWidth:g,availableHeight:U,rects:{floating:re}})=>{const V=Math.max(Ee,Math.floor(U)),L=re.height;this.initialHeight=this.isConstrained&&this.initialHeight||L,this.isConstrained=L<this.initialHeight||V<=L;const ae=this.isConstrained?`${V}px`:"";Object.assign(t.style,{maxWidth:`${Math.floor(g)}px`,maxHeight:ae})}}),...r?[b.arrow({element:r,padding:e.tipPadding||R})]:[]],{x:h,y:p,placement:l,middlewareData:c}=await b.computePosition(e.trigger,t,{placement:e.placement,middleware:o,strategy:"fixed"});if(Object.assign(t.style,{top:"0px",left:"0px",translate:`${A(h)}px ${A(p)}px`}),t.setAttribute("actual-placement",l),(P=this.host.elements)==null||P.forEach(g=>{this.originalPlacements.has(g)||this.originalPlacements.set(g,g.getAttribute("placement")),g.setAttribute("placement",l)}),r&&c.arrow){const{x:g,y:U}=c.arrow;Object.assign(r.style,{top:l.startsWith("right")||l.startsWith("left")?"0px":"",left:l.startsWith("bottom")||l.startsWith("top")?"0px":"",translate:`${A(g)}px ${A(U)}px`})}}clearOverlayPosition(){this.target&&(this.target.style.removeProperty("max-height"),this.target.style.removeProperty("max-width"),this.initialHeight=void 0,this.isConstrained=!1)}hostConnected(){document.addEventListener("luzmo-update-overlays",this.resetOverlayPosition)}hostUpdated(){var e;this.host.open||((e=this.cleanup)==null||e.call(this),this.cleanup=void 0)}hostDisconnected(){var e;(e=this.cleanup)==null||e.call(this),this.cleanup=void 0,document.removeEventListener("luzmo-update-overlays",this.resetOverlayPosition)}}var T=(a=>(a.click="click",a.hover="hover",a.longpress="longpress",a))(T||{});const _=Symbol("lastInteractionType"),z="remove-focus-ring-safari-hack";class I{constructor(e,{overlay:t,isPersistent:i,handleOverlayReady:s}){this.target=e,this.isLazilyOpen=!1,this.isPersistent=!1,this.isPersistent=!!i,this.handleOverlayReady=s,this.isPersistent&&this.init(),this.overlay=t}get activelyOpening(){return!1}get open(){var e;return((e=this.overlay)==null?void 0:e.open)??this.isLazilyOpen}set open(e){if(e!==this.open){if(this.isLazilyOpen=e,this.overlay){this.overlay.open=e,this.target[_]=this.type;return}e&&(customElements.whenDefined("luzmo-overlay").then(async()=>{const{LuzmoOverlay:t}=await Promise.resolve().then(()=>N);this.overlay=new t,this.overlay.open=!0,this.target[_]=this.type}),Promise.resolve().then(()=>N))}}get overlay(){return this._overlay}set overlay(e){var t;e&&this.overlay!==e&&(this.overlay&&this.overlay.removeController(this),this._overlay=e,this.overlay.addController(this),this.initOverlay(),this.prepareDescription(this.target),(t=this.handleOverlayReady)==null||t.call(this,this.overlay))}prepareDescription(e){}releaseDescription(){}shouldCompleteOpen(){}init(){}initOverlay(){}abort(){var e;this.releaseDescription(),(e=this.abortController)==null||e.abort()}hostConnected(){this.init()}hostDisconnected(){this.isPersistent||this.abort()}}class ee extends I{constructor(){super(...arguments),this.type=T.click,this.preventNextToggle=!1}handleClick(){this.preventNextToggle||(this.open=!this.open),this.preventNextToggle=!1}handlePointerdown(){this.preventNextToggle=this.open}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("click",()=>this.handleClick(),{signal:e}),this.target.addEventListener("pointerdown",()=>this.handlePointerdown(),{signal:e})}}const Te=300;class te extends I{constructor(){super(...arguments),this.type=T.hover,this.elementIds=[],this.focusedin=!1,this.pointerentered=!1}handleKeyup(e){(e.code==="Tab"||e.code==="Escape")&&(this.open=!0,this.removeSafariFocusRingClass())}handleTargetFocusin(){if(this.target.matches(":focus-visible")){if(k.isWebKit()&&this.target[_]===T.click){this.target.classList.add(z);return}this.open=!0,this.focusedin=!0,this.removeSafariFocusRingClass()}}handleTargetFocusout(){this.removeSafariFocusRingClass(),this.focusedin=!1,!this.pointerentered&&(this.open=!1)}handleTargetPointerenter(){var e;this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=void 0),!((e=this.overlay)!=null&&e.disabled)&&(this.open=!0,this.pointerentered=!0)}handleTargetPointerleave(){this.doPointerleave()}handleHostPointerenter(){this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=void 0)}handleHostPointerleave(){this.doPointerleave()}prepareDescription(){if(this.overlay.elements.length===0)return;const e=this.target.getRootNode(),t=this.overlay.elements[0].getRootNode(),i=this.overlay.getRootNode();e===i?this.prepareOverlayRelativeDescription():e===t&&this.prepareContentRelativeDescription()}prepareOverlayRelativeDescription(){const e=H.conditionAttributeWithId(this.target,"aria-describedby",[this.overlay.id]);this.releaseDescription=()=>{e(),this.releaseDescription=E}}prepareContentRelativeDescription(){const e=[],t=this.overlay.elements.map(s=>(e.push(s.id),s.id||(s.id=`${this.overlay.tagName.toLowerCase()}-helper-${M.randomID()}`),s.id));this.elementIds=e;const i=H.conditionAttributeWithId(this.target,"aria-describedby",t);this.releaseDescription=()=>{i(),this.overlay.elements.map((s,n)=>{s.id=this.elementIds[n]}),this.releaseDescription=E}}doPointerleave(){this.pointerentered=!1;const e=this.target;this.focusedin&&e.matches(":focus-visible")||(this.hoverTimeout=setTimeout(()=>{this.open=!1},Te))}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("keyup",i=>this.handleKeyup(i),{signal:e}),this.target.addEventListener("focusin",()=>this.handleTargetFocusin(),{signal:e}),this.target.addEventListener("focusout",()=>this.handleTargetFocusout(),{signal:e}),this.target.addEventListener("pointerenter",()=>this.handleTargetPointerenter(),{signal:e}),this.target.addEventListener("pointerleave",()=>this.handleTargetPointerleave(),{signal:e}),this.overlay&&this.initOverlay()}initOverlay(){if(!this.abortController)return;const{signal:e}=this.abortController;this.overlay.addEventListener("pointerenter",()=>this.handleHostPointerenter(),{signal:e}),this.overlay.addEventListener("pointerleave",()=>this.handleHostPointerleave(),{signal:e})}removeSafariFocusRingClass(){k.isWebKit()&&this.target.classList.contains(z)&&this.target.classList.remove(z)}}const Oe=300,ie={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};class se extends I{constructor(){super(...arguments),this.type=T.longpress,this.longpressState=null,this.releaseDescription=E,this.handlePointerup=()=>{var e;clearTimeout(this.timeout),this.target&&(this.longpressState=((e=this.overlay)==null?void 0:e.state)==="opening"?"pressed":null,document.removeEventListener("pointerup",this.handlePointerup),document.removeEventListener("pointercancel",this.handlePointerup))}}get activelyOpening(){return this.longpressState==="opening"||this.longpressState==="pressed"}handleLongpress(){this.open=!0,this.longpressState=this.longpressState==="potential"?"opening":"pressed"}handlePointerdown(e){!this.target||e.button!==0||(this.longpressState="potential",document.addEventListener("pointerup",this.handlePointerup),document.addEventListener("pointercancel",this.handlePointerup),"holdAffordance"in this.target)||(this.timeout=setTimeout(()=>{this.target&&this.target.dispatchEvent(new CustomEvent("longpress",{bubbles:!0,composed:!0,detail:{source:"pointer"}}))},Oe))}handleKeydown(e){const{code:t,altKey:i}=e;i&&t==="ArrowDown"&&(e.stopPropagation(),e.stopImmediatePropagation())}handleKeyup(e){const{code:t,altKey:i}=e;if(t==="Space"||i&&t==="ArrowDown"){if(!this.target)return;e.stopPropagation(),this.target.dispatchEvent(new CustomEvent("longpress",{bubbles:!0,composed:!0,detail:{source:"keyboard"}})),setTimeout(()=>{this.longpressState=null})}}prepareDescription(e){if(this.releaseDescription!==E||this.overlay.elements.length===0)return;const t=document.createElement("div");t.id=`longpress-describedby-descriptor-${M.randomID()}`;const i=k.isIOS()||k.isAndroid()?"touch":"keyboard";t.textContent=ie[i],t.slot="longpress-describedby-descriptor";const s=e.getRootNode(),n=this.overlay.getRootNode();s===n?this.overlay.append(t):(t.hidden=!("host"in s),e.after(t));const r=H.conditionAttributeWithId(e,"aria-describedby",[t.id]);this.releaseDescription=()=>{r(),t.remove(),this.releaseDescription=E}}shouldCompleteOpen(){this.longpressState=this.longpressState==="pressed"?null:this.longpressState}init(){var t;(t=this.abortController)==null||t.abort(),this.abortController=new AbortController;const{signal:e}=this.abortController;this.target.addEventListener("longpress",()=>this.handleLongpress(),{signal:e}),this.target.addEventListener("pointerdown",i=>this.handlePointerdown(i),{signal:e}),this.prepareDescription(this.target),!this.target.holdAffordance&&(this.target.addEventListener("keydown",i=>this.handleKeydown(i),{signal:e}),this.target.addEventListener("keyup",i=>this.handleKeyup(i),{signal:e}))}}const oe={click:ee,longpress:se,hover:te};var De=Object.defineProperty,xe=Object.getOwnPropertyDescriptor,m=(a,e,t,i)=>{for(var s=i>1?void 0:i?xe(e,t):e,n=a.length-1,r;n>=0;n--)(r=a[n])&&(s=(i?r(e,t,s):r(s))||s);return i&&s&&De(e,t,s),s};const Se=typeof document<"u"&&"showPopover"in document.createElement("div");let F=me(C);F=Se?ve(F):ge(F);var w;const d=(w=class extends F{constructor(){super(...arguments),this._delayed=!1,this._disabled=!1,this.offset=0,this._open=!1,this.lastRequestSlottableState=!1,this.receivesFocus="auto",this._state="closed",this.triggerElement=null,this.type="auto",this.wasOpen=!1,this.closeOnFocusOut=e=>{if(!e.relatedTarget)return;const t=new Event("overlay-relation-query",{bubbles:!0,composed:!0});e.relatedTarget.addEventListener(t.type,i=>{i.composedPath().includes(this)||(this.open=!1)}),e.relatedTarget.dispatchEvent(t)}}get delayed(){var e;return((e=this.elements.at(-1))==null?void 0:e.hasAttribute("delayed"))||this._delayed}set delayed(e){this._delayed=e}get disabled(){return this._disabled}set disabled(e){var t;this._disabled=e,e?((t=this.strategy)==null||t.abort(),this.wasOpen=this.open,this.open=!1):(this.bindEvents(),this.open=this.open||this.wasOpen,this.wasOpen=!1)}get hasNonVirtualTrigger(){return!!this.triggerElement&&!(this.triggerElement instanceof S)}get placementController(){return this._placementController||(this._placementController=new Z(this)),this._placementController}get open(){return this._open}set open(e){var t;e&&this.disabled||e!==this.open&&((t=this.strategy)!=null&&t.activelyOpening&&!e||(this._open=e,this.open&&(w.openCount+=1),this.requestUpdate("open",!this.open),this.open&&this.requestSlottable()))}get state(){return this._state}set state(e){var i;if(e===this.state)return;const t=this.state;this._state=e,(this.state==="opened"||this.state==="closed")&&((i=this.strategy)==null||i.shouldCompleteOpen()),this.requestUpdate("state",t)}get elementResolver(){return this._elementResolver||(this._elementResolver=new Y.ElementResolutionController(this)),this._elementResolver}get usesDialog(){return this.type==="modal"||this.type==="page"}get popoverValue(){if("popover"in this)switch(this.type){case"modal":case"page":return;case"hint":return"manual";default:return this.type}}get requiresPositioning(){return!(this.type==="page"||!this.open||!this.triggerElement||!this.placement&&this.type!=="hint")}managePosition(){if(!this.requiresPositioning||!this.open)return;const e=this.offset||0,t=this.triggerElement,i=this.placement||"right",s=this.tipPadding;this.placementController.placeOverlay(this.dialogEl,{offset:e,placement:i,tipPadding:s,trigger:t,type:this.type})}async managePopoverOpen(){super.managePopoverOpen();const e=this.open;if(this.open!==e||(await this.manageDelay(e),this.open!==e)||(this.triggerInteraction==="longpress"&&await f(),await this.ensureOnDOM(e),this.open!==e))return;const t=await this.makeTransition(e);this.open===e&&await this.applyFocus(e,t)}async applyFocus(e,t){if(!(this.receivesFocus==="false"||this.type==="hint")){if(await f(),await f(),e===this.open&&!this.open){this.hasNonVirtualTrigger&&this.contains(this.getRootNode().activeElement)&&this.triggerElement.focus();return}t==null||t.focus()}}returnFocus(){var t;if(this.open||this.type==="hint")return;const e=()=>{var n,r;const i=[];let s=typeof document<"u"?document.activeElement:null;for(;(n=s==null?void 0:s.shadowRoot)!=null&&n.activeElement;)s=s.shadowRoot.activeElement;for(;s;){const o=s.assignedSlot||s.parentElement||((r=s.getRootNode())==null?void 0:r.host);o&&i.push(o),s=o}return i};this.receivesFocus!=="false"&&((t=this.triggerElement)!=null&&t.focus)&&(this.contains(this.getRootNode().activeElement)||e().includes(this)||typeof document<"u"&&document.activeElement===document.body)&&this.triggerElement.focus()}async manageOpen(e){if(!(!this.isConnected&&this.open)&&(this.hasUpdated||await this.updateComplete,this.open?(X.add(this),this.willPreventClose&&(document.addEventListener("pointerup",()=>{this.dialogEl.classList.toggle("not-immediately-closable",!1),this.willPreventClose=!1},{once:!0}),this.dialogEl.classList.toggle("not-immediately-closable",!0))):(e&&this.dispose(),X.remove(this)),this.open&&this.state!=="opened"?this.state="opening":!this.open&&this.state!=="closed"&&(this.state="closing"),this.usesDialog?this.manageDialogOpen():this.managePopoverOpen(),this.type==="auto")){const t=this.getRootNode();this.open?t.addEventListener("focusout",this.closeOnFocusOut,{capture:!0}):t.removeEventListener("focusout",this.closeOnFocusOut,{capture:!0})}}bindEvents(){var e;(e=this.strategy)==null||e.abort(),this.strategy=void 0,this.hasNonVirtualTrigger&&this.triggerInteraction&&(this.strategy=new oe[this.triggerInteraction](this.triggerElement,{overlay:this}))}handleBeforetoggle(e){e.newState!=="open"&&this.handleBrowserClose(e)}handleBrowserClose(e){var t;if(e.stopPropagation(),!((t=this.strategy)!=null&&t.activelyOpening)){this.open=!1;return}this.manuallyKeepOpen()}manuallyKeepOpen(){this.open=!0,this.placementController.allowPlacementUpdate=!0,this.manageOpen(!1)}handleSlotchange(){var e,t;this.elements.length===0?(e=this.strategy)==null||e.releaseDescription():this.hasNonVirtualTrigger&&((t=this.strategy)==null||t.prepareDescription(this.triggerElement))}shouldPreventClose(){const e=this.willPreventClose;return this.willPreventClose=!1,e}requestSlottable(){this.lastRequestSlottableState!==this.open&&(this.open||document.body.offsetHeight,this.dispatchEvent(new J.SlottableRequestEvent("overlay-content",this.open?{}:J.removeSlottableRequest)),this.lastRequestSlottableState=this.open)}willUpdate(e){var i;if(this.hasAttribute("id")||this.setAttribute("id",`${this.tagName.toLowerCase()}-${M.randomID()}`),e.has("open")&&(this.hasUpdated||this.open)&&this.manageOpen(e.get("open")),e.has("trigger")){const[s,n]=((i=this.trigger)==null?void 0:i.split("@"))||[];this.elementResolver.selector=s?`#${s}`:"",this.triggerInteraction=n}let t=!1;e.has(Y.elementResolverUpdatedSymbol)&&(t=this.triggerElement,this.triggerElement=this.elementResolver.element),e.has("triggerElement")&&(t=e.get("triggerElement")),t!==!1&&this.bindEvents()}updated(e){super.updated(e),e.has("placement")&&(this.placement?this.dialogEl.setAttribute("actual-placement",this.placement):this.dialogEl.removeAttribute("actual-placement"),this.open&&e.get("placement")!==void 0&&this.placementController.resetOverlayPosition()),e.has("state")&&this.state==="closed"&&e.get("state")!==void 0&&this.placementController.clearOverlayPosition()}renderContent(){return O.html` <slot @slotchange=${this.handleSlotchange}></slot> `}get dialogStyleMap(){return{"--luzmo-overlay-open-count":w.openCount.toString()}}renderDialog(){return O.html`
|
|
19
|
-
<dialog
|
|
20
|
-
class="dialog"
|
|
21
|
-
part="dialog"
|
|
22
|
-
placement=${$.ifDefined(this.requiresPositioning?this.placement||"right":void 0)}
|
|
23
|
-
style=${G.styleMap(this.dialogStyleMap)}
|
|
24
|
-
@close=${this.handleBrowserClose}
|
|
25
|
-
@cancel=${this.handleBrowserClose}
|
|
26
|
-
@beforetoggle=${this.handleBeforetoggle}
|
|
27
|
-
?is-visible=${this.state!=="closed"}
|
|
28
|
-
>
|
|
29
|
-
${this.renderContent()}
|
|
30
|
-
</dialog>
|
|
31
|
-
`}renderPopover(){return O.html`
|
|
32
|
-
<div
|
|
33
|
-
class="dialog"
|
|
34
|
-
part="dialog"
|
|
35
|
-
placement=${$.ifDefined(this.requiresPositioning?this.placement||"right":void 0)}
|
|
36
|
-
popover=${$.ifDefined(this.popoverValue)}
|
|
37
|
-
style=${G.styleMap(this.dialogStyleMap)}
|
|
38
|
-
@beforetoggle=${this.handleBeforetoggle}
|
|
39
|
-
@close=${this.handleBrowserClose}
|
|
40
|
-
?is-visible=${this.state!=="closed"}
|
|
41
|
-
>
|
|
42
|
-
${this.renderContent()}
|
|
43
|
-
</div>
|
|
44
|
-
`}render(){const e=this.type==="modal"||this.type==="page";return O.html`
|
|
45
|
-
${e?this.renderDialog():this.renderPopover()}
|
|
46
|
-
<slot name="longpress-describedby-descriptor"></slot>
|
|
47
|
-
`}connectedCallback(){super.connectedCallback(),this.addEventListener("close",()=>{this.open=!1}),this.hasUpdated&&this.bindEvents()}disconnectedCallback(){var e;(e=this.strategy)==null||e.releaseDescription(),this.open=!1,super.disconnectedCallback()}},w.styles=[O.unsafeCSS(we)],w.openCount=1,w);m([u.property({type:Boolean})],d.prototype,"delayed",1);m([u.query(".dialog")],d.prototype,"dialogEl",2);m([u.property({type:Boolean})],d.prototype,"disabled",1);m([u.queryAssignedElements({flatten:!0,selector:':not([slot="longpress-describedby-descriptor"], slot)'})],d.prototype,"elements",2);m([u.property({type:Number})],d.prototype,"offset",2);m([u.property({type:Boolean,reflect:!0})],d.prototype,"open",1);m([u.property()],d.prototype,"placement",2);m([u.property({attribute:"receives-focus"})],d.prototype,"receivesFocus",2);m([u.query("slot")],d.prototype,"slotEl",2);m([u.state()],d.prototype,"state",1);m([u.property({type:Number,attribute:"tip-padding"})],d.prototype,"tipPadding",2);m([u.property()],d.prototype,"trigger",2);m([u.property({attribute:!1})],d.prototype,"triggerElement",2);m([u.property({attribute:!1})],d.prototype,"triggerInteraction",2);m([u.property()],d.prototype,"type",2);let ne=d;const N=Object.freeze(Object.defineProperty({__proto__:null,LuzmoOverlay:ne},Symbol.toStringTag,{value:"Module"}));exports.ClickController=ee;exports.HoverController=te;exports.InteractionController=I;exports.InteractionTypes=T;exports.LONGPRESS_INSTRUCTIONS=ie;exports.LongpressController=se;exports.LuzmoAbstractOverlay=C;exports.LuzmoOverlay=ne;exports.PlacementController=Z;exports.SAFARI_FOCUS_RING_CLASS=z;exports.VirtualTrigger=S;exports.guaranteedAllTransitionend=q;exports.lastInteractionType=_;exports.nextFrame=f;exports.noop=E;exports.overlay=N;exports.overlayTimer=D;exports.placementUpdatedSymbol=Ce;exports.strategies=oe;
|