UNPKG

@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 3.3 kB
import{S as e}from"./p-C1-Dpkp7.js";const t=(()=>{let e;return(...t)=>{e&&clearTimeout(e),e=setTimeout((()=>{e=0,(e=>{for(let t of e.keys()){const o=e.get(t).filter((e=>{const t=e.deref();return t&&(!("isConnected"in(o=t))||o.isConnected);var o}));e.set(t,o)}})(...t)}),2e3)}})(),o=e.forceUpdate,n=e.getRenderingRef,r=(e,t)=>{const o=e.indexOf(t);o>=0&&(e[o]=e[e.length-1],e.length--)},{state:s,onChange:c,reset:a,dispose:l}=(()=>{const e=((e,t=(e,t)=>e!==t)=>{const o=()=>{return("function"==typeof(t=e)?t():t)??{};var t},n=o();let s=new Map(Object.entries(n));const c="undefined"!=typeof Proxy,a=c?null:{},l={dispose:[],get:[],set:[],reset:[]},i=new Map,u=()=>{s=new Map(Object.entries(o())),c||h(),l.reset.forEach((e=>e()))},d=e=>(l.get.forEach((t=>t(e))),s.get(e)),f=(e,o)=>{const n=s.get(e);t(o,n,e)&&(s.set(e,o),c||m(e),l.set.forEach((t=>t(e,o,n))))},p=c?new Proxy(n,{get:(e,t)=>d(t),ownKeys:()=>Array.from(s.keys()),getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0}),has:(e,t)=>s.has(t),set:(e,t,o)=>(f(t,o),!0)}):(h(),a),g=(e,t)=>(l[e].push(t),()=>{r(l[e],t)});function m(e){!c&&a&&(Object.prototype.hasOwnProperty.call(a,e)||Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get:()=>d(e),set(t){f(e,t)}}))}function h(){if(c||!a)return;const e=new Set(s.keys());for(const t of Object.keys(a))e.has(t)||delete a[t];for(const t of e)m(t)}return{state:p,get:d,set:f,on:g,onChange:(e,t)=>{const n=(o,n)=>{o===e&&t(n)},r=()=>{const n=o();t(n[e])},s=g("set",n),c=g("reset",r);return i.set(t,{setHandler:n,resetHandler:r,propName:e}),()=>{s(),c(),i.delete(t)}},use:(...e)=>{const t=e.reduce(((e,t)=>(t.set&&e.push(g("set",t.set)),t.get&&e.push(g("get",t.get)),t.reset&&e.push(g("reset",t.reset)),t.dispose&&e.push(g("dispose",t.dispose)),e)),[]);return()=>t.forEach((e=>e()))},dispose:()=>{l.dispose.forEach((e=>e())),u()},reset:u,forceUpdate:e=>{const t=s.get(e);l.set.forEach((o=>o(e,t,t)))},removeListener:(e,t)=>{const o=i.get(t);o&&o.propName===e&&(r(l.set,o.setHandler),r(l.reset,o.resetHandler),i.delete(t))}}})({mode:"light",theme:"modus-modern"},void 0);return e.use((()=>{if("function"!=typeof n||"function"!=typeof o)return{};const e=o,r=n,s=new Map;return{dispose:()=>s.clear(),get:e=>{const t=r();t&&((e,t,o)=>{let n=e.get(t);n||(n=[],e.set(t,n)),n.some((e=>e.deref()===o))||n.push(new WeakRef(o))})(s,e,t)},set:o=>{const n=s.get(o);if(n){const t=n.filter((t=>{const o=t.deref();return!!o&&e(o)}));s.set(o,t)}t(s)},reset:()=>{s.forEach((t=>{t.forEach((t=>{const o=t.deref();o&&e(o)}))})),t(s)}}})()),e})(),i={state:s,onChange:c,setTheme:e=>s.theme=e,setMode:e=>s.mode=e,reset:a,dispose:l},u=e=>{var t,o,n;s.theme=null!==(t=null==e?void 0:e.theme)&&void 0!==t?t:"modus-modern",s.mode=null!==(n=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!==n?n:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},d=()=>{const e=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{localStorage.getItem("preferred-mode")||(s.mode=e.matches?"dark":"light")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)};export{u as i,i as t,d as w}