UNPKG

@ui-machines/toggle

Version:

Core logic for the toggle widget implemented as a state machine

3 lines (2 loc) 1.68 kB
var l=e=>e?"":void 0;var m=(()=>{let e=0;return()=>(e++,e.toString(36))})();var h=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","embed","iframe","object","a[href]","area[href]","[tabindex]","audio[controls]","video[controls]","*[tabindex]:not([aria-disabled])","[contenteditable]:not([contenteditable=false])","details > summary:first-of-type"].join(",");var n=(e,t)=>({variable:e,reference:t?`var(${e}, ${t})`:`var(${e})`}),g={arrowShadowColor:n("--arrow-shadow-color"),arrowSize:n("--arrow-size"),arrowSizeHalf:n("--arrow-size-half"),arrowBg:n("--arrow-background"),transformOrigin:n("--transform-origin"),arrowOffset:n("--arrow-offset"),boxShadow:n("--arrow-box-shadow")};function c(e){return{button:e,label:e,input:e,output:e,element:e}}var a=c(e=>e);var o={getDoc:e=>{var t;return(t=e.doc)!=null?t:document},getRootId:e=>`toggle-${e.uid}`,getButtonId:e=>`toggle-${e.uid}--button`,getButtonEl:e=>o.getDoc(e).getElementById(o.getButtonId(e))};function s(e,t,u=a){let{context:i}=e,r=e.matches("pressed");return{isPressed:r,buttonProps:u.button({id:o.getButtonId(i),type:"button","aria-pressed":r,"data-disabled":l(i.disabled),"data-pressed":l(r),onClick(){i.disabled||t({type:"CLICK",pressed:r})}})}}import{createMachine as f,ref as d}from"@ui-machines/core";var p=f({id:"toggle-machine",initial:"unknown",context:{uid:"",disabled:!1},states:{unknown:{on:{SETUP:{target:"unpressed",actions:"setupDocument"}}},pressed:{on:{CLICK:"unpressed"}},unpressed:{on:{CLICK:"pressed"}}}},{actions:{setupDocument(e,t){e.uid=t.id,e.doc=d(t.doc)}}});export{s as connect,p as machine}; //# sourceMappingURL=index.mjs.map