@trimble-oss/moduswebcomponents
Version:
Modus Web Components is a modern, accessible UI library built with Stencil JS that provides reusable web components following Trimble's Modus design system. This updated version focuses on improved flexibility, enhanced theming options, comprehensive cust
1 lines • 2.52 kB
JavaScript
import{a as e,f as t}from"./p-D5XAQERj.js";const o=e=>!("isConnected"in e)||e.isConnected,s=(()=>{let e;return(...t)=>{e&&clearTimeout(e),e=setTimeout((()=>{e=0,(e=>{for(let t of e.keys())e.set(t,e.get(t).filter(o))})(...t)}),2e3)}})(),n=e=>"function"==typeof e?e():e,{state:r,onChange:c,reset:a,dispose:l}=(()=>{const o=((e,t=(e,t)=>e!==t)=>{const o=n(e);let s=new Map(Object.entries(o??{}));const r={dispose:[],get:[],set:[],reset:[]},c=()=>{s=new Map(Object.entries(n(e)??{})),r.reset.forEach((e=>e()))},a=e=>(r.get.forEach((t=>t(e))),s.get(e)),l=(e,o)=>{const n=s.get(e);t(o,n,e)&&(s.set(e,o),r.set.forEach((t=>t(e,o,n))))},d="undefined"==typeof Proxy?{}:new Proxy(o,{get:(e,t)=>a(t),ownKeys:()=>Array.from(s.keys()),getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0}),has:(e,t)=>s.has(t),set:(e,t,o)=>(l(t,o),!0)}),i=(e,t)=>(r[e].push(t),()=>{((e,t)=>{const o=e.indexOf(t);o>=0&&(e[o]=e[e.length-1],e.length--)})(r[e],t)});return{state:d,get:a,set:l,on:i,onChange:(t,o)=>{const s=i("set",((e,s)=>{e===t&&o(s)})),r=i("reset",(()=>o(n(e)[t])));return()=>{s(),r()}},use:(...e)=>{const t=e.reduce(((e,t)=>(t.set&&e.push(i("set",t.set)),t.get&&e.push(i("get",t.get)),t.reset&&e.push(i("reset",t.reset)),t.dispose&&e.push(i("dispose",t.dispose)),e)),[]);return()=>t.forEach((e=>e()))},dispose:()=>{r.dispose.forEach((e=>e())),c()},reset:c,forceUpdate:e=>{const t=s.get(e);r.set.forEach((o=>o(e,t,t)))}}})({mode:"light",theme:"modus-modern"},void 0);return o.use((()=>{if("function"!=typeof e)return{};const o=new Map;return{dispose:()=>o.clear(),get:t=>{const s=e();s&&((e,t,o)=>{const s=e.get(t);s?s.includes(o)||s.push(o):e.set(t,[o])})(o,t,s)},set:e=>{const n=o.get(e);n&&o.set(e,n.filter(t)),s(o)},reset:()=>{o.forEach((e=>e.forEach(t))),s(o)}}})()),o})(),d={state:r,onChange:c,setTheme:e=>r.theme=e,setMode:e=>r.mode=e,reset:a,dispose:l},i=e=>{var t,o,s;r.theme=null!==(t=null==e?void 0:e.theme)&&void 0!==t?t:"modus-modern",r.mode=null!==(s=null!==(o=null==e?void 0:e.mode)&&void 0!==o?o:(()=>{try{const e=localStorage.getItem("modus-theme-config");return e?JSON.parse(e).mode:null}catch(e){return console.warn("Failed to parse theme config from localStorage:",e),null}})())&&void 0!==s?s:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},u=()=>{const e=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{localStorage.getItem("preferred-mode")||(r.mode=e.matches?"dark":"light")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)};export{i,d as t,u as w}