@pure-ds/core 0.7.61 → 0.7.62
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/LOCALIZATION.md +18 -0
- package/dist/types/pds.d.ts +1 -0
- package/dist/types/src/js/common/localization-resource-provider.d.ts +2 -0
- package/dist/types/src/js/common/localization-resource-provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/public/assets/js/app.js +1 -1
- package/public/assets/js/pds-localization.js +1 -1
- package/public/assets/pds/core/pds-localization.js +1 -1
- package/src/js/common/localization-resource-provider.js +3 -1
- package/src/js/common/localization-resource-provider.test.mjs +91 -0
- package/src/js/pds.d.ts +1 -0
package/LOCALIZATION.md
CHANGED
|
@@ -81,6 +81,23 @@ document.body.innerHTML = `
|
|
|
81
81
|
|
|
82
82
|
Both calls are identical. Translation is decided by nearest `lang` scope.
|
|
83
83
|
|
|
84
|
+
If you use message codes instead of source strings, provide a source-locale bundle too and opt into loading it:
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
const localization = PDS.createJSONLocalization({
|
|
88
|
+
locale: "en",
|
|
89
|
+
locales: ["en", "nl"],
|
|
90
|
+
loadDefaultLocale: true,
|
|
91
|
+
aliases: {
|
|
92
|
+
en: ["en-US", "en"],
|
|
93
|
+
nl: ["nl-NL", "nl"],
|
|
94
|
+
},
|
|
95
|
+
basePath: "/assets/locales",
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
With `loadDefaultLocale: true`, PDS will also fetch the default/source bundle, so `msg("my-long-string-code")` can resolve in English as well as translated locales.
|
|
100
|
+
|
|
84
101
|
## How Context Resolution Works
|
|
85
102
|
|
|
86
103
|
When `msg()` resolves a key, PDS chooses locale in this order:
|
|
@@ -187,6 +204,7 @@ From `#pds` root:
|
|
|
187
204
|
|
|
188
205
|
- `msg()` is synchronous by design.
|
|
189
206
|
- On first encounter of a new locale, text may briefly render fallback content, then update once the locale bundle loads.
|
|
207
|
+
- If you use code keys for the source locale, preload that locale with `await loadLocale("en-US")` or `await loadLocale("en")` before first render when you need immediate source-copy output.
|
|
190
208
|
- For immediate guarantees, preload with `loadLocale("xx")` before rendering that locale scope.
|
|
191
209
|
|
|
192
210
|
## Missing Translation Warnings
|
package/dist/types/pds.d.ts
CHANGED
|
@@ -164,6 +164,7 @@ export interface PDSJSONLocalizationOptions {
|
|
|
164
164
|
locale?: string;
|
|
165
165
|
locales?: string[];
|
|
166
166
|
basePath?: string;
|
|
167
|
+
loadDefaultLocale?: boolean;
|
|
167
168
|
aliases?: Record<string, string[]>;
|
|
168
169
|
requestInit?: RequestInit;
|
|
169
170
|
cache?: Map<string, PDSLocalizationMessages>;
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* locale?: string,
|
|
13
13
|
* locales?: string[],
|
|
14
14
|
* basePath?: string,
|
|
15
|
+
* loadDefaultLocale?: boolean,
|
|
15
16
|
* aliases?: Record<string, string[]>,
|
|
16
17
|
* requestInit?: RequestInit,
|
|
17
18
|
* cache?: Map<string, Record<string, string | { content?: string }>>,
|
|
@@ -30,6 +31,7 @@ export function createJSONLocalization(options?: {
|
|
|
30
31
|
locale?: string;
|
|
31
32
|
locales?: string[];
|
|
32
33
|
basePath?: string;
|
|
34
|
+
loadDefaultLocale?: boolean;
|
|
33
35
|
aliases?: Record<string, string[]>;
|
|
34
36
|
requestInit?: RequestInit;
|
|
35
37
|
cache?: Map<string, Record<string, string | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization-resource-provider.d.ts","sourceRoot":"","sources":["../../../../../src/js/common/localization-resource-provider.js"],"names":[],"mappings":"AAiNA
|
|
1
|
+
{"version":3,"file":"localization-resource-provider.d.ts","sourceRoot":"","sources":["../../../../../src/js/common/localization-resource-provider.js"],"names":[],"mappings":"AAiNA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,iDAnBW;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpE,GACS;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;QAC1C,UAAU,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;KACrG,CAAC;CACH,CAoFH"}
|
package/package.json
CHANGED
package/public/assets/js/app.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var mt=Object.defineProperty;var ht=(e,t)=>()=>(e&&(t=e(e=0)),t);var De=(e,t)=>{for(var n in t)mt(e,n,{get:t[n],enumerable:!0})};var Ie={};De(Ie,{AutoDefiner:()=>he});async function Pt(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let n=e,{baseURL:o,mapper:i=p=>`${p}.js`,onError:r=(p,c)=>console.error(`[defineWebComponents] ${p}:`,c)}=t,d=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),S=p=>p.toLowerCase().replace(/(^|-)([a-z])/g,(c,f,A)=>A.toUpperCase()),L=async p=>{try{if(customElements.get(p))return{tag:p,status:"already-defined"};let c=i(p),A=await import(c instanceof URL?c.href:new URL(c,d).href),m=A?.default??A?.[S(p)];if(!m){if(customElements.get(p))return{tag:p,status:"self-defined"};throw new Error(`No export found for ${p}. Expected default export or named export "${S(p)}".`)}return customElements.get(p)?{tag:p,status:"race-already-defined"}:(customElements.define(p,m),{tag:p,status:"defined"})}catch(c){throw r(p,c),c}};return Promise.all(n.map(L))}var he,Fe=ht(()=>{he=class{constructor(t={}){let{baseURL:n,mapper:o,onError:i,predicate:r=()=>!0,attributeModule:d="data-module",root:S=document,scanExisting:L=!0,debounceMs:p=16,observeShadows:c=!0,enhancers:f=[],patchAttachShadow:A=!0}=t,m=new Set,E=new Set,j=new Set,a=new Map,l=new WeakMap,h=new WeakMap,u=0,y=!1,_=null,R=g=>{if(!g||!f.length)return;let w=h.get(g);w||(w=new Set,h.set(g,w));for(let b of f)if(!(!b.selector||!b.run)&&!w.has(b.selector))try{g.matches&&g.matches(b.selector)&&(b.run(g),w.add(b.selector))}catch(k){console.warn(`[AutoDefiner] Error applying enhancer for selector "${b.selector}":`,k)}},x=(g,w)=>{if(!y&&!(!g||!g.includes("-"))&&!customElements.get(g)&&!E.has(g)&&!j.has(g)){if(w&&w.getAttribute){let b=w.getAttribute(d);b&&!a.has(g)&&a.set(g,b)}m.add(g),P()}},P=()=>{u||(u=setTimeout(Pe,p))},T=g=>{if(g){if(g.nodeType===1){let w=g,b=w.tagName?.toLowerCase();b&&b.includes("-")&&!customElements.get(b)&&r(b,w)&&x(b,w),R(w),c&&w.shadowRoot&&ae(w.shadowRoot)}g.querySelectorAll&&g.querySelectorAll("*").forEach(w=>{let b=w.tagName?.toLowerCase();b&&b.includes("-")&&!customElements.get(b)&&r(b,w)&&x(b,w),R(w),c&&w.shadowRoot&&ae(w.shadowRoot)})}},ae=g=>{if(!g||l.has(g))return;T(g);let w=new MutationObserver(b=>{for(let k of b)k.addedNodes?.forEach(z=>{T(z)}),k.type==="attributes"&&k.target&&T(k.target)});w.observe(g,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[d,...f.map(b=>b.selector).filter(b=>b.startsWith("data-"))]}),l.set(g,w)};async function Pe(){if(clearTimeout(u),u=0,!m.size)return;let g=Array.from(m);m.clear(),g.forEach(w=>E.add(w));try{let w=b=>a.get(b)??(o?o(b):`${b}.js`);await Pt(...g,{baseURL:n,mapper:w,onError:(b,k)=>{j.add(b),i?.(b,k)}})}catch{}finally{g.forEach(w=>E.delete(w))}}let ke=S===document?document.documentElement:S,Re=new MutationObserver(g=>{for(let w of g)w.addedNodes?.forEach(b=>{T(b)}),w.type==="attributes"&&w.target&&T(w.target)});if(Re.observe(ke,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[d,...f.map(g=>g.selector).filter(g=>g.startsWith("data-"))]}),c&&A&&Element.prototype.attachShadow){let g=Element.prototype.attachShadow;Element.prototype.attachShadow=function(b){let k=g.call(this,b);if(b&&b.mode==="open"){ae(k);let z=this.tagName?.toLowerCase();z&&z.includes("-")&&!customElements.get(z)&&x(z,this)}return k},_=()=>Element.prototype.attachShadow=g}return L&&T(ke),{stop(){y=!0,Re.disconnect(),_&&_(),u&&(clearTimeout(u),u=0),l.forEach(g=>g.disconnect())},flush:Pe}}static async define(...t){let n={};t.length&&typeof t[t.length-1]=="object"&&(n=t.pop()||{});let o=t,{baseURL:i,mapper:r=c=>`${c}.js`,onError:d=(c,f)=>console.error(`[defineWebComponents] ${c}:`,f)}=n,S=i?new URL(i,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),L=c=>c.toLowerCase().replace(/(^|-)([a-z])/g,(f,A,m)=>m.toUpperCase()),p=async c=>{try{if(customElements.get(c))return{tag:c,status:"already-defined"};let f=r(c),m=await import(f instanceof URL?f.href:new URL(f,S).href),E=m?.default??m?.[L(c)];if(!E){if(customElements.get(c))return{tag:c,status:"self-defined"};throw new Error(`No export found for ${c}. Expected default export or named export "${L(c)}".`)}return customElements.get(c)?{tag:c,status:"race-already-defined"}:(customElements.define(c,E),{tag:c,status:"defined"})}catch(f){throw d(c,f),f}};return Promise.all(o.map(p))}}});var le=class extends EventTarget{constructor(){super(),this.mode=null,this.compiled=null,this.log=()=>{},this.logHandler=null}},Ce="__PURE_DS_PDS_SINGLETON__",de=typeof globalThis<"u"?globalThis:window,ce=de?.[Ce],s=ce&&typeof ce.addEventListener=="function"?ce:new le;de&&(de[Ce]=s);typeof s.log!="function"&&(s.log=(e="log",t,...n)=>{if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))});typeof s.logHandler!="function"&&(s.logHandler=null);var ue=class{constructor(){this._mode="static",this._staticPaths={tokens:"/assets/pds/styles/pds-tokens.css.js",primitives:"/assets/pds/styles/pds-primitives.css.js",components:"/assets/pds/styles/pds-components.css.js",utilities:"/assets/pds/styles/pds-utilities.css.js",styles:"/assets/pds/styles/pds-styles.css.js"}}setLiveMode(){this._mode="live"}setStaticMode(t={}){this._mode="static",this._staticPaths={...this._staticPaths,...t}}async getStylesheet(t){if(this._mode==="live")return null;try{return(await import(this._staticPaths[t]))[t]}catch(n){s.log("error",`Registry: failed to load static ${t}:`,n),s.log("error",`Registry: looking for ${this._staticPaths[t]}`),s.log("error","Registry: make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let o=new CSSStyleSheet;return o.replaceSync("/* Failed to load "+t+" */"),o}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},$=new ue;async function Te(e,t=[],n=null){try{let o=n?.primitivesStylesheet?n.primitivesStylesheet:await $.getStylesheet("primitives");e.adoptedStyleSheets=[o,...t]}catch(o){let i=e.host?.tagName?.toLowerCase()||"unknown";s.log("error",`Adopter: <${i}> failed to adopt primitives:`,o),e.adoptedStyleSheets=t}}async function ze(e,t=["primitives"],n=[],o=null){let i=Array.isArray(n)?n.filter(Boolean):[];if(i.length){let d=(Array.isArray(e.adoptedStyleSheets)?e.adoptedStyleSheets:[]).filter(S=>!i.includes(S));e.adoptedStyleSheets=[...d,...i]}try{let d=(await Promise.all(t.map(async S=>{if(o)switch(S){case"tokens":return o.tokensStylesheet;case"primitives":return o.primitivesStylesheet;case"components":return o.componentsStylesheet;case"utilities":return o.utilitiesStylesheet;default:break}return $.getStylesheet(S)}))).filter(S=>S!==null);e.adoptedStyleSheets=[...d,...i]}catch(r){let d=e.host?.tagName?.toLowerCase()||"unknown";s.log("error",`Adopter: <${d}> failed to adopt layers:`,r),e.adoptedStyleSheets=i}}function $e(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var Ue={FontWeights:{light:300,normal:400,medium:500,semibold:600,bold:700},LineHeights:{tight:1.25,normal:1.5,relaxed:1.75},BorderWidths:{hairline:.5,thin:1,medium:2,thick:3},RadiusSizes:{none:0,small:4,medium:8,large:16,xlarge:24,xxlarge:32},ShadowDepths:{none:"none",light:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",medium:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",deep:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",extreme:"0 25px 50px -12px rgba(0, 0, 0, 0.25)"},TransitionSpeeds:{fast:150,normal:250,slow:350},AnimationEasings:{linear:"linear",ease:"ease","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out",bounce:"cubic-bezier(0.68, -0.55, 0.265, 1.55)"},TouchTargetSizes:{compact:36,standard:44,comfortable:48,spacious:56},LinkStyles:{inline:"inline",block:"block",button:"button"},FocusStyles:{ring:"ring",outline:"outline",border:"border",glow:"glow"},TabSizes:{compact:2,standard:4,wide:8},SelectIcons:{chevron:"chevron",arrow:"arrow",caret:"caret",none:"none"},IconSizes:{xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64,"3xl":96}};var me={};De(me,{deepMerge:()=>Me,enQueue:()=>gt,escapeForRegExp:()=>St,fragmentFromTemplateLike:()=>pe,humanizeIdentifier:()=>Et,isObject:()=>K,isUrl:()=>bt,openCenteredWindow:()=>Lt,parseFragment:()=>G,parseHTML:()=>fe,throttle:()=>yt,withTimeout:()=>wt});function K(e){return e&&typeof e=="object"&&!Array.isArray(e)}function Me(e,t){let n={...e};return K(e)&&K(t)&&Object.keys(t).forEach(o=>{K(t[o])?o in e?n[o]=Me(e[o],t[o]):Object.assign(n,{[o]:t[o]}):Object.assign(n,{[o]:t[o]})}),n}function pe(e){let t=Array.isArray(e?.strings)?e.strings:[],n=Array.isArray(e?.values)?e.values:[],o=new Set,i=[],r=/(\s)(\.[\w-]+)=["']?\s*$/,d=/(\s)(@[\w-]+)=["']?\s*$/,S=/(\s)(\?[\w-]+)=["']?\s*$/,L=/(\s)([\w:-]+)=["']?\s*$/,p=/=["']\s*$/,c=!1;for(let a=0;a<t.length;a+=1){let l=t[a]??"";if(c&&(l=l.replace(/^["']/,""),c=!1),a<n.length){let h=`pds-val-${a}`,u=l.match(r),y=l.match(d),_=l.match(S),R=l.match(L);if(u){let x=u[2].slice(1);c=p.test(t[a]??""),l=l.replace(r,`$1data-pds-bind-${a}="prop:${x}:${h}"`),o.add(a)}else if(y){let x=y[2].slice(1);c=p.test(t[a]??""),l=l.replace(d,`$1data-pds-bind-${a}="event:${x}:${h}"`),o.add(a)}else if(_){let x=_[2].slice(1);c=p.test(t[a]??""),l=l.replace(S,`$1data-pds-bind-${a}="boolean:${x}:${h}"`),o.add(a)}else if(R){let x=R[2];c=p.test(t[a]??""),l=l.replace(L,`$1data-pds-bind-${a}="attr:${x}:${h}"`),o.add(a)}}i.push(l),a<n.length&&!o.has(a)&&i.push(`<!--pds-val-${a}-->`)}let f=document.createElement("template");f.innerHTML=i.join("");let A=(a,l)=>{let h=a.parentNode;if(!h)return;if(l==null){h.removeChild(a);return}let u=y=>{if(y!=null){if(y instanceof Node){h.insertBefore(y,a);return}if(Array.isArray(y)){y.forEach(_=>u(_));return}h.insertBefore(document.createTextNode(String(y)),a)}};u(l),h.removeChild(a)},m=document.createTreeWalker(f.content,NodeFilter.SHOW_COMMENT),E=[];for(;m.nextNode();){let a=m.currentNode;a?.nodeValue?.startsWith("pds-val-")&&E.push(a)}return E.forEach(a=>{let l=Number(a.nodeValue.replace("pds-val-",""));A(a,n[l])}),f.content.querySelectorAll("*").forEach(a=>{[...a.attributes].forEach(l=>{if(!l.name.startsWith("data-pds-bind-"))return;let h=l.value.indexOf(":"),u=l.value.lastIndexOf(":");if(h<=0||u<=h){a.removeAttribute(l.name);return}let y=l.value.slice(0,h),_=l.value.slice(h+1,u),R=l.value.slice(u+1),x=Number(String(R).replace("pds-val-","")),P=n[x];if(!_||!Number.isInteger(x)){a.removeAttribute(l.name);return}y==="prop"?a[_]=P:y==="event"?(typeof P=="function"||P&&typeof P.handleEvent=="function")&&a.addEventListener(_,P):y==="boolean"?P?a.setAttribute(_,""):a.removeAttribute(_):y==="attr"&&(P==null||P===!1?a.removeAttribute(_):a.setAttribute(_,String(P))),a.removeAttribute(l.name)})}),f.content}function G(e,...t){if(Array.isArray(e)&&Object.prototype.hasOwnProperty.call(e,"raw"))return pe({strings:Array.from(e),values:t});if(Array.isArray(e?.strings)&&Array.isArray(e?.values))return pe({strings:e.strings,values:e.values});let o=document.createElement("template");return o.innerHTML=String(e??""),o.content}function fe(e,...t){return G(e,...t).childNodes}function yt(e,t=100){let n;return function(...i){let r=()=>{clearTimeout(n),e(...i)};clearTimeout(n),n=setTimeout(r,t)}}function gt(e){setTimeout(e,0)}function bt(e){try{if(typeof e!="string"||e.indexOf(`
|
|
2
2
|
`)!==-1||e.indexOf(" ")!==-1||e.startsWith("#/"))return!1;let t=new URL(e,window.location.origin);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}function wt(e,t,n="Operation"){return!t||t<=0?e:new Promise((o,i)=>{let r=setTimeout(()=>{i(new Error(`${n} timed out after ${t}ms`))},t);Promise.resolve(e).then(d=>{clearTimeout(r),o(d)}).catch(d=>{clearTimeout(r),i(d)})})}function St(e){return String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Lt(e,t,n){let o=window.screen.width/2-t/2,i=window.screen.height/2-n/2;return window.open(e,"",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${t}, height=${n}, top=${i}, left=${o}`)}function Et(e){if(e==null)return"";let t=String(e).trim();return t?t.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim():""}var Ne="pds",_t=/^([a-z][a-z0-9+\-.]*:)?\/\//i,Oe=/^[a-z]:/i;function N(e=""){return e.endsWith("/")?e:`${e}/`}function vt(e="",t=Ne){let n=e.replace(/\/+$/,"");return new RegExp(`(?:^|/)${t}$`,"i").test(n)?n:`${n}/${t}`}function At(e){return e.replace(/^\.\/+/,"")}function xt(e){return Oe.test(e)?e.replace(Oe,"").replace(/^\/+/,""):e}function jt(e){return e.startsWith("public/")?e.substring(7):e}function q(e,t={}){let n=t.segment||Ne,o=t.defaultRoot||`/assets/${n}/`,i=e?.public&&e.public?.root||e?.static&&e.static?.root||null;if(!i||typeof i!="string")return N(o);let r=i.trim();return r?(r=r.replace(/\\/g,"/"),r=vt(r,n),r=N(r),_t.test(r)?r:(r=At(r),r=xt(r),r.startsWith("/")||(r=jt(r),r.startsWith("/")||(r=`/${r}`),r=r.replace(/\/+/g,(d,S)=>S===0?d:"/")),N(r))):N(o)}var ye=null;async function kt(){return ye||(ye=Promise.resolve().then(()=>(Fe(),Ie)).then(e=>e?.AutoDefiner||e?.default?.AutoDefiner||e?.default).then(e=>{if(typeof e!="function")throw new Error("AutoDefiner constructor not found in pure-web/auto-definer");return e})),ye}var Rt=/^[a-z][a-z0-9+\-.]*:\/\//i,I=(()=>{try{return import.meta.url}catch{return}})(),J=e=>typeof e=="string"&&e.length&&!e.endsWith("/")?`${e}/`:e;function V(e,t={}){if(!e||Rt.test(e))return e;let{preferModule:n=!0}=t,o=()=>{if(!I)return null;try{return new URL(e,I).href}catch{return null}},i=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(e,window.location.origin).href}catch{return null}};return(n?o()||i():i()||o())||e}var We=(()=>{if(I)try{let e=new URL(I);if(/\/public\/assets\/js\//.test(e.pathname))return new URL("../pds/",I).href}catch{return}})(),Be=!1;function He(e){Be||typeof document>"u"||(Be=!0,e.addEventListener("pds:ready",t=>{let n=t.detail?.mode;n&&document.documentElement.classList.add(`pds-${n}`,"pds-ready")}))}function Ke({manageTheme:e,themeStorageKey:t,applyResolvedTheme:n,setupSystemListenerIfNeeded:o}){let i="light",r=null;if(e&&typeof window<"u"){try{r=localStorage.getItem(t)||null}catch{r=null}try{n?.(r),o?.(r)}catch{}r?r==="system"?i=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":i=r:i=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:i,storedTheme:r}}function Q(e,{resolvePublicAssetURL:t}){let n=!!(e?.public?.root||e?.static?.root),o=t(e);return!n&&We&&(o=We),J(V(o))}async function Ge(e,{baseEnhancers:t=[]}={}){let{autoDefineBaseURL:n="/auto-define/",autoDefinePreload:o=[],autoDefineMapper:i=null,enhancers:r=[],autoDefineOverrides:d=null,autoDefinePreferModule:S=!0}=e,L=(()=>{let c=new Map;return(t||[]).forEach(f=>c.set(f.selector,f)),(r||[]).forEach(f=>c.set(f.selector,f)),Array.from(c.values())})(),p=null;if(typeof window<"u"&&typeof document<"u"){let c=await kt(),f=u=>{switch(u){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${u}.js`}},{mapper:A,enhancers:m,...E}=d&&typeof d=="object"?d:{},j=m?Array.isArray(m)?m:typeof m=="object"?Object.values(m):[]:[],a=(()=>{let u=new Map;return(L||[]).forEach(y=>{y?.selector&&u.set(y.selector,y)}),(j||[]).forEach(y=>{if(!y?.selector)return;let _=u.get(y.selector)||null;u.set(y.selector,{..._||{},...y,run:typeof y?.run=="function"?y.run:_?.run})}),Array.from(u.values())})(),h={baseURL:n&&J(V(n,{preferModule:S})),predefine:o,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:a,onError:(u,y)=>{if(typeof u=="string"&&u.startsWith("pds-")){let R=["pds-form","pds-drawer"].includes(u),x=y?.message?.includes("#pds/lit")||y?.message?.includes("Failed to resolve module specifier");R&&x?s.log("error",`\u274C PDS component <${u}> requires Lit but #pds/lit is not in import map.
|
|
3
|
-
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):s.log("warn",`\u26A0\uFE0F PDS component <${u}> not found. Assets may not be installed.`)}else s.log("error",`\u274C Auto-define error for <${u}>:`,y)},...E,mapper:u=>{if(customElements.get(u))return null;if(typeof i=="function")try{let y=i(u);return y===void 0?f(u):y}catch(y){return s.log("warn","Custom autoDefine.mapper error; falling back to default:",y?.message||y),f(u)}return f(u)}};p=new c(h),o.length>0&&typeof c.define=="function"&&await c.define(...o,{baseURL:n,mapper:h.mapper,onError:h.onError})}return{autoDefiner:p,mergedEnhancers:L}}var ge=["light","dark"],be=new Set(ge);function Dt(e){let n=(Array.isArray(e?.themes)?e.themes.map(o=>String(o).toLowerCase()):ge).filter(o=>be.has(o));return n.length?n:ge}function we(e,{preferDocument:t=!0}={}){let n=String(e||"").toLowerCase();if(be.has(n))return n;if(t&&typeof document<"u"){let o=document.documentElement?.getAttribute("data-theme");if(be.has(o))return o}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function qe(e,t){let n=we(t);return Dt(e).includes(n)}var Ct=new Set(["log","warn","error","debug","info"]),Tt="__PURE_DS_PDS_SINGLETON__",Se=null,Le=null;function Ve(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[Tt];if(t&&typeof t=="object")return t}catch{return null}return null}function zt(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function $t(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return Ct.has(t)?t:"log"}function Ut(){if(typeof Le=="function")try{let t=zt(Le());if(t)return t}catch{}let e=Ve();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function Mt(){if(typeof Se=="function")try{let t=Se();if(typeof t=="function")return t}catch{}let e=Ve();return typeof e?.logHandler=="function"?e.logHandler:null}function Je(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Ot(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function Qe({getLogger:e,getContext:t}={}){Se=typeof e=="function"?e:null,Le=typeof t=="function"?t:null}function Ye(e="log",t,...n){let o=$t(e),i=Ut(),r=Mt();if(r)try{r.call(i?.thisArg,o,t,...n);return}catch(d){Je("error","Custom log handler failed:",d)}Ot(o,i)&&Je(o,t,...n)}var Y=class{constructor(t={},n=null){let o=t&&typeof t=="object"?t:{},i=n||(typeof document<"u"?document:new EventTarget),r=new WeakMap,d=m=>m.map(E=>String(E)).join("."),S,L=(m,E,j,a)=>{let l=d(m),h={property:E,path:l,value:j,oldValue:a};i.dispatchEvent(new CustomEvent(`change:${l}`,{detail:h,bubbles:!0,composed:!0})),i.dispatchEvent(new CustomEvent("change",{detail:{...h,state:S},bubbles:!0,composed:!0}))},p=(m,E)=>(typeof E=="function"&&i.addEventListener(m,E),S),c=(m,E)=>(typeof E=="function"&&i.removeEventListener(m,E),S),f=(m,E)=>{if(typeof E=="function"){let j=a=>{E(a),i.removeEventListener(m,j)};i.addEventListener(m,j)}return S},A=(m,E)=>{if(!m||typeof m!="object")return m;if(r.has(m))return r.get(m);let j=new Proxy(m,{get(a,l,h){if(l==="on")return p;if(l==="off")return c;if(l==="once")return f;let u=Reflect.get(a,l,h);return u&&typeof u=="object"?A(u,[...E,l]):u},set(a,l,h,u){let y=Reflect.get(a,l,u);return Object.is(y,h)?!0:Reflect.set(a,l,h,u)?(L([...E,l],l,h,y),!0):!1},deleteProperty(a,l){if(!Reflect.has(a,l))return!0;let h=a[l];return Reflect.deleteProperty(a,l)?(L([...E,l],l,void 0,h),!0):!1}});return r.set(m,j),j};return S=A(o,[]),S}};function Ze(e,t,n){if(!e||!t||typeof n!="object")return()=>{};let o={};return Object.entries(n).forEach(([i,r])=>{o[i]=d=>{typeof r=="function"&&r(e,d.detail.value,d.detail.oldValue)},t.on(`change:${i}`,o[i])}),()=>{Object.entries(o).forEach(([i,r])=>{t.off(`change:${i}`,r)})}}typeof s.initializing!="boolean"&&(s.initializing=!1);"currentPreset"in s||(s.currentPreset=null);typeof s.debug!="boolean"&&(s.debug=!1);"currentConfig"in s||(s.currentConfig=null);"compiled"in s||(s.compiled=null);typeof s.logHandler!="function"&&(s.logHandler=null);"mode"in s||(s.mode=null);var Z=null,X=null,ee=null,te=null,ne=null,oe=null,et="__pdsLocalizationRuntime";function U(){if(oe)return oe;let e=s?.[et];return e&&typeof e=="object"?(oe=e,e):null}function Nt(e){let t=e&&typeof e=="object"?e:null;oe=t,s[et]=t}Qe({getLogger:()=>typeof s.logHandler=="function"?s.logHandler:null,getContext:()=>{let e=s?.mode||s?.compiled?.mode||(s?.registry?.isLive?"live":"static"),t=(s?.debug||s?.currentConfig?.debug||s?.currentConfig?.design?.debug||s?.compiled?.debug||s?.compiled?.design?.debug||!1)===!0;return{mode:e,debug:t,thisArg:s}}});s.log=(e="log",t,...n)=>{Ye(e,t,...n)};var v={locale:"en",messages:{},hasProvider:!1},se=new Set;function tt(e){return!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e}function nt(e=[]){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function It(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function Ft(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function Wt(e,...t){return{strTag:!0,strings:Array.from(e||[]),values:t,raw:Array.from(e?.raw||[])}}function Bt(e){if(!e)return"";if(tt(e)){let n=nt(e.strings||[]),o=v.messages[n]||n;return It(o,i=>e.values?.[i])}let t=String(e);return v.messages[t]||t}function Ht(e){if(!e)return;let t=tt(e)?nt(e.strings||[]):String(e);typeof t=="string"&&t.length>0&&se.add(t)}function ot(e){if(!e||typeof e.msg!="function"||se.size===0)return;let t=Array.from(se);se.clear();for(let n of t)try{e.msg(n)}catch{}}async function W(){let e=U();return e||(ne||(ne=import(B("pds-localization.js")).then(n=>{if(typeof n?.msg!="function"||typeof n?.str!="function"||typeof n?.configureLocalization!="function"||typeof n?.loadLocale!="function"||typeof n?.setLocale!="function"||typeof n?.getLocalizationState!="function")throw new Error("Failed to load localization runtime exports");return Nt(n),ot(n),n}).catch(n=>{throw ne=null,n})),ne)}var M=(e,t={})=>{let n=U();return typeof n?.msg=="function"?n.msg(e,t):(Ht(e),Bt(e,t))},ie=(e,...t)=>{let n=U();return typeof n?.str=="function"?n.str(e,...t):Wt(e,...t)},re=(e=null)=>{let t=U();if(typeof t?.configureLocalization=="function")return t.configureLocalization(e);if(!e||typeof e!="object")return v.locale="en",v.messages={},v.hasProvider=!1,{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider};typeof e.locale=="string"&&e.locale.trim()&&(v.locale=e.locale.trim()),Object.prototype.hasOwnProperty.call(e,"messages")&&(v.messages=Ft(e.messages));let n=!!(e.provider||e.translate||e.loadLocale||e.setLocale);return v.hasProvider=n,n&&W().then(o=>{o.configureLocalization(e),ot(o)}).catch(()=>{}),{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider}},st=async e=>(await W()).loadLocale(e),rt=async(e,t={})=>(await W()).setLocale(e,t),it=()=>{let e=U();return typeof e?.getLocalizationState=="function"?e.getLocalizationState():{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider}},at=(e={})=>{let t=U();if(typeof t?.createJSONLocalization=="function")return t.createJSONLocalization(e);let n=typeof e?.locale=="string"&&e.locale.trim()?e.locale.trim().toLowerCase():"en",o=Array.isArray(e?.locales)?e.locales.map(L=>String(L||"").trim().toLowerCase()).filter(Boolean):[],i=Array.from(new Set([n,...o])),r=null,d=async()=>(r||(r=W().then(L=>typeof L?.createJSONLocalization=="function"?L.createJSONLocalization(e):null).catch(()=>null)),r),S=async(L="loadLocale")=>{let p=await d();if(!p||typeof p!="object")return null;let c=p.provider;if(!c||typeof c!="object")return null;let f=c[L];return typeof f=="function"?f:L==="setLocale"&&typeof c.loadLocale=="function"?c.loadLocale:null};return{locale:n,locales:[...i],provider:{locales:[...i],async loadLocale(L={}){let p=await S("loadLocale");return typeof p!="function"?{}:p(L)},async setLocale(L={}){let p=await S("setLocale");return typeof p!="function"?{}:p(L)}}}};function B(e,t){return t&&typeof t=="string"?t:`${Q(s.currentConfig||{},{resolvePublicAssetURL:q})}core/${e}`}async function Kt(){return Array.isArray(s.defaultEnhancers)&&s.defaultEnhancers.length>0?s.defaultEnhancers:(te||(te=import(B("pds-enhancers.js",s.currentConfig?.enhancersURL)).then(t=>{let n=Array.isArray(t?.defaultPDSEnhancers)?t.defaultPDSEnhancers:[];return s.defaultEnhancers=n,n}).catch(t=>{throw te=null,t})),te)}async function Gt(){return typeof s.ask=="function"&&s.ask!==ct?s.ask:(X||(X=import(B("pds-ask.js",s.currentConfig?.askURL)).then(t=>{let n=t?.ask;if(typeof n!="function")throw new Error("Failed to load ask helper");return s.ask=n,n}).catch(t=>{throw X=null,t})),X)}async function H(){return typeof s.toast=="function"&&s.toast!==O?s.toast:(ee||(ee=import(B("pds-toast.js",s.currentConfig?.toastURL)).then(t=>{let n=t?.toast;if(typeof n!="function")throw new Error("Failed to load toast helper");return s.toast=n,n}).catch(t=>{throw ee=null,t})),ee)}async function ct(...e){return(await Gt())(...e)}async function O(...e){return(await H())(...e)}O.success=async(...e)=>(await H()).success(...e);O.error=async(...e)=>(await H()).error(...e);O.warning=async(...e)=>(await H()).warning(...e);O.info=async(...e)=>(await H()).info(...e);var Xe=function(e="log",t,...n){s.log(e,t,...n)};function _e(e){if(e==null)return e;if(typeof e=="function")return;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>_e(n)).filter(n=>n!==void 0);let t={};for(let[n,o]of Object.entries(e)){let i=_e(o);i!==void 0&&(t[n]=i)}return t}function lt(e,t=new WeakSet){if(!e||typeof e!="object"||t.has(e))return e;t.add(e),Object.freeze(e);for(let n of Object.keys(e))lt(e[n],t);return e}function ve(e){return e==null||typeof e!="object"?e:lt(structuredClone(_e(e)))}async function qt(e,t={}){if(t?.runtimeConfig===!1||typeof fetch!="function")return null;let n=t?.runtimeConfigURL||`${e}pds-runtime-config.json`;try{let o=await fetch(n,{cache:"no-store"});return o.ok?await o.json():null}catch{return null}}s.registry=$;s.enums=Ue;s.adoptLayers=ze;s.adoptPrimitives=Te;var Jt=fe;s.parse=Jt;var Ae=G;s.html=Ae;s.State=Y;s.bindState=Ze;s.createStylesheet=$e;s.isLiveMode=()=>$.isLive;s.ask=ct;s.toast=O;s.common=me;s.msg=M;s.str=ie;s.configureLocalization=re;s.loadLocale=st;s.setLocale=rt;s.getLocalizationState=it;s.createJSONLocalization=at;s.i18n={msg:M,str:ie,configure:re,loadLocale:st,setLocale:rt,getState:it,createJSONLocalization:at};s.AutoComplete=null;s.loadAutoComplete=async()=>{if(s.AutoComplete&&typeof s.AutoComplete.connect=="function")return s.AutoComplete;let e=B("pds-autocomplete.js",s.currentConfig?.autoCompleteURL);return Z||(Z=import(e).then(t=>{let n=t?.AutoComplete||t?.default?.AutoComplete||t?.default||null;if(!n)throw new Error("AutoComplete export not found in module");return s.AutoComplete=n,n}).catch(t=>{throw Z=null,t})),Z};function dt(e){let t=typeof CustomEvent=="function";try{let n=t?new CustomEvent("pds:ready",{detail:e}):new Event("pds:ready");s.dispatchEvent(n)}catch{}if(typeof document<"u")if(t){let n={detail:e,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",n))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",n))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function ut(e={}){let t=typeof CustomEvent=="function",n={at:Date.now(),...e};try{let o=t?new CustomEvent("pds:config-changed",{detail:n}):new Event("pds:config-changed");s.dispatchEvent(o)}catch{}if(typeof document<"u")if(t){let o={detail:n,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",o))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var Ee="pure-ds-theme",C=null,F=null;function xe(e){try{if(typeof document>"u")return;let t="light";e?e==="system"?t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e:t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",t)}catch{}}function je(e){try{if(C&&F){try{typeof C.removeEventListener=="function"?C.removeEventListener("change",F):typeof C.removeListener=="function"&&C.removeListener(F)}catch{}C=null,F=null}if(e==="system"&&typeof window<"u"&&window.matchMedia){let t=window.matchMedia("(prefers-color-scheme: dark)"),n=o=>{let i=o?.matches===void 0?t.matches:o.matches;try{let r=i?"dark":"light";document.documentElement.setAttribute("data-theme",r),s.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"system"}}))}catch{}};C=t,F=n,typeof t.addEventListener=="function"?t.addEventListener("change",n):typeof t.addListener=="function"&&t.addListener(n)}}catch{}}var Vt=Object.getOwnPropertyDescriptor(s,"theme");Vt||Object.defineProperty(s,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(Ee)||null}catch{return null}},set(e){try{if(typeof window>"u")return;let t=s.currentConfig?.design||null,n=we(e);if(t&&!qe(t,n)){let o=t?.name||s.currentPreset?.name||s.currentConfig?.preset||"current preset";s.log("warn",`PDS theme "${n}" not supported by preset "${o}".`),s.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:e,resolvedTheme:n,preset:o}}));return}e==null?localStorage.removeItem(Ee):localStorage.setItem(Ee,e),xe(e),je(e),s.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:e,source:"api"}}))}catch{}}});s.defaultEnhancers=[];async function Qt(e){s.initializing=!0;try{let t=e&&e.mode||"live",{mode:n,...o}=e||{};s.mode=t,s.logHandler=typeof o?.log=="function"?o.log:null,s.currentConfig=ve(o);let i=o&&typeof o.localization=="object"&&o.localization?o.localization:null;i?(await W(),re(i)):re(null);let r;if(t==="static")r=await Yt(o);else{let{localization:S,...L}=o||{},p=Q(L,{resolvePublicAssetURL:q}),c=L?.managerURL||L?.public?.managerURL||L?.manager?.url||new URL("core/pds-manager.js",p).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:f}=await import(c);r=await f(s,L,{emitReady:dt,emitConfigChanged:ut,applyResolvedTheme:xe,setupSystemListenerIfNeeded:je})}s.compiled=ve(r?.config||null);let d=s?.compiled?.design?.icons?.externalPath||"/assets/img/icons/";return s.log("info",`startup ready; external icon path: ${d}`),r}finally{s.initializing=!1}}s.start=Qt;async function Yt(e){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let t=e.applyGlobalStyles??!0,n=e.manageTheme??!0,o=e.themeStorageKey??"pure-ds-theme",i=e.staticPaths??{},r=Q(e,{resolvePublicAssetURL:q}),d=e&&e.autoDefine||null,S;d&&d.baseURL?S=J(V(d.baseURL,{preferModule:!1})):S=`${r}components/`;let L=d&&Array.isArray(d.predefine)&&d.predefine||[],p=d&&typeof d.mapper=="function"&&d.mapper||null;try{He(s);let{resolvedTheme:c}=Ke({manageTheme:n,themeStorageKey:o,applyResolvedTheme:xe,setupSystemListenerIfNeeded:je}),f=await qt(r,e),A=Array.isArray(e?.enhancers)?e.enhancers:e?.enhancers&&typeof e.enhancers=="object"?Object.values(e.enhancers):[],m=f?.config?{...f.config,...e,design:e?.design||f.config.design,preset:e?.preset||f.config.preset}:{...e},E={tokens:`${r}styles/pds-tokens.css.js`,primitives:`${r}styles/pds-primitives.css.js`,components:`${r}styles/pds-components.css.js`,utilities:`${r}styles/pds-utilities.css.js`,styles:`${r}styles/pds-styles.css.js`},j=f?.paths||{};if(i={...E,...j,...i},s.registry.setStaticMode(i),t&&typeof document<"u")try{let h=await s.registry.getStylesheet("styles");if(h){h._pds=!0;let u=(document.adoptedStyleSheets||[]).filter(y=>y._pds!==!0);document.adoptedStyleSheets=[...u,h],ut({mode:"static",source:"static:styles-applied"})}}catch(h){Xe.call(s,"warn","Failed to apply static styles:",h)}let a=null,l=[];try{let h=await Kt(),u=await Ge({autoDefineBaseURL:S,autoDefinePreload:L,autoDefineMapper:p,enhancers:A,autoDefineOverrides:d||null,autoDefinePreferModule:!(d&&d.baseURL)},{baseEnhancers:h});a=u.autoDefiner,l=u.mergedEnhancers||[]}catch(h){Xe.call(s,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",h)}return s.compiled=ve({mode:"static",...m,theme:c,enhancers:l}),dt({mode:"static",config:m,theme:c,autoDefiner:a}),{config:m,theme:c,autoDefiner:a}}catch(c){throw s.dispatchEvent(new CustomEvent("pds:error",{detail:{error:c}})),c}}var Zt=s.createJSONLocalization({locale:"en-US",locales:["en-US","nl-NL"],aliases:{en:["en-US"],nl:["nl-NL"]},basePath:"/assets/locales"}),pt={mode:"live",liveEdit:!0,preset:"default",localization:Zt,autoDefine:{predefine:["pds-icon","pds-drawer","pds-toaster"]},log(e,t,...n){(this?.mode||this?.compiled?.mode||"live")!=="static"&&(typeof console[e]=="function"?console[e]:console.log)(`[PDS] ${t}`,...n)}};var D={name:"@pure-ds/core",shortname:"pds",version:"0.7.61",description:"Why develop a Design System when you can generate one?",repository:{type:"git",url:"git+https://github.com/Pure-Web-Foundation/pure-ds.git"},bugs:{url:"https://github.com/Pure-Web-Foundation/pure-ds/issues"},homepage:"https://puredesignsystem.z6.web.core.windows.net/",keywords:["design-system","css","web-components","lit","constructable-stylesheets","tokens","utilities","a11y"],type:"module",main:"./public/assets/pds/core.js",module:"./public/assets/pds/core.js",types:"./dist/types/pds.d.ts",bin:{"pds-build":"packages/pds-cli/bin/pds-static.js","pds-sync-assets":"packages/pds-cli/bin/sync-assets.js","pds-build-icons":"packages/pds-cli/bin/pds-build-icons.js","pds-import":"packages/pds-cli/bin/pds-import.js","pds-setup-copilot":"packages/pds-cli/bin/pds-setup-copilot.js","pds-setup-mcp":"packages/pds-cli/bin/pds-setup-mcp.js","pds-init-config":"packages/pds-cli/bin/pds-init-config.js","pds-bootstrap":"packages/pds-cli/bin/pds-bootstrap.js","pds-mcp-server":"packages/pds-cli/bin/pds-mcp-server.js","pds-mcp-health":"packages/pds-cli/bin/pds-mcp-health.js","pds-mcp-eval":"packages/pds-cli/bin/pds-mcp-eval.js"},exports:{".":{types:"./src/js/pds.d.ts",import:"./public/assets/pds/core.js"},"./localization":{types:"./dist/types/src/js/pds-localization.d.ts",import:"./public/assets/pds/core/pds-localization.js"},"./lit":{types:"./dist/types/src/js/lit.d.ts",import:"./public/assets/pds/external/lit.js"},"./pds-core":"./src/js/pds.js","./auto-define/*":"./public/auto-define/*"},files:[".github/copilot-instructions.md",".cursorrules","dist/types/","public/assets/js/","public/assets/pds/components/","public/assets/pds/templates/","public/assets/pds/core.js","public/assets/pds/core/","public/assets/pds/external/","public/assets/pds/vscode-custom-data.json","public/assets/pds/pds.css-data.json","public/assets/pds/pds-css-complete.json","public/auto-define/","public/pds/components/","public/assets/pds/icons/pds-icons.svg","packages/pds-cli/bin/","packages/pds-cli/lib/","src/js/pds.d.ts","src/js/pds.js","src/js/pds-singleton.js","src/js/common/","src/js/pds-live-manager/","src/js/pds-core/","custom-elements.json","custom-elements-manifest.config.js","pds.html-data.json","pds.css-data.json","LOCALIZATION.md","readme.md","INTELLISENSE.md","CSS-INTELLISENSE-LIMITATION.md","CSS-INTELLISENSE-QUICK-REF.md"],scripts:{dev:"node esbuild-dev.js",prebuild:"npm run types",build:"node esbuild-build.js",types:"tsc -p tsconfig.json && node scripts/sync-types.mjs",postinstall:"node packages/pds-cli/bin/postinstall.mjs","prepds:build":"npm run types","pds:build":"node packages/pds-cli/bin/pds-static.js","pds:build-icons":"node packages/pds-cli/bin/pds-build-icons.js","pds:bootstrap":"node packages/pds-cli/bin/pds-bootstrap.js","pds:manifest":"node packages/pds-cli/bin/generate-manifest.js","pds:css-data":"node packages/pds-cli/bin/generate-css-data.js","pds:import":"node packages/pds-cli/bin/pds-import.js","pds:dx":"node packages/pds-cli/bin/pds-dx.js","pds:mcp:server":"node packages/pds-cli/bin/pds-mcp-server.js","pds:mcp:health":"node packages/pds-cli/bin/pds-mcp-health.js","pds:mcp:eval":"node packages/pds-cli/bin/pds-mcp-eval.js","storybook:generate":"cd packages/pds-storybook && npm run generate-stories","storybook:dev":"cd packages/pds-storybook && npm run storybook:dev","storybook:build":"cd packages/pds-storybook && npm run storybook:build"},author:"Marc van Neerven",license:"ISC",engines:{node:">=18"},publishConfig:{access:"public"},devDependencies:{"@custom-elements-manifest/analyzer":"^0.9.9","@types/node":"^22.10.2",esbuild:"^0.19.0","fs-extra":"^11.1.1",typescript:"^5.6.3"},dependencies:{lit:"^3.3.2","pure-web":"1.1.32"},customElements:"custom-elements.json"};await s.start(pt);document.documentElement.lang="en";var ft=typeof D.repository=="string"?D.repository:D.repository?.url,en=ft?ft.replace(/^git\+/,"").replace(/\.git$/,""):"",Tn=D.homepage||en,zn=D.bugs?.url||"";document.body.appendChild(Ae`
|
|
3
|
+
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):s.log("warn",`\u26A0\uFE0F PDS component <${u}> not found. Assets may not be installed.`)}else s.log("error",`\u274C Auto-define error for <${u}>:`,y)},...E,mapper:u=>{if(customElements.get(u))return null;if(typeof i=="function")try{let y=i(u);return y===void 0?f(u):y}catch(y){return s.log("warn","Custom autoDefine.mapper error; falling back to default:",y?.message||y),f(u)}return f(u)}};p=new c(h),o.length>0&&typeof c.define=="function"&&await c.define(...o,{baseURL:n,mapper:h.mapper,onError:h.onError})}return{autoDefiner:p,mergedEnhancers:L}}var ge=["light","dark"],be=new Set(ge);function Dt(e){let n=(Array.isArray(e?.themes)?e.themes.map(o=>String(o).toLowerCase()):ge).filter(o=>be.has(o));return n.length?n:ge}function we(e,{preferDocument:t=!0}={}){let n=String(e||"").toLowerCase();if(be.has(n))return n;if(t&&typeof document<"u"){let o=document.documentElement?.getAttribute("data-theme");if(be.has(o))return o}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function qe(e,t){let n=we(t);return Dt(e).includes(n)}var Ct=new Set(["log","warn","error","debug","info"]),Tt="__PURE_DS_PDS_SINGLETON__",Se=null,Le=null;function Ve(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[Tt];if(t&&typeof t=="object")return t}catch{return null}return null}function zt(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function $t(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return Ct.has(t)?t:"log"}function Ut(){if(typeof Le=="function")try{let t=zt(Le());if(t)return t}catch{}let e=Ve();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function Mt(){if(typeof Se=="function")try{let t=Se();if(typeof t=="function")return t}catch{}let e=Ve();return typeof e?.logHandler=="function"?e.logHandler:null}function Je(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Ot(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function Qe({getLogger:e,getContext:t}={}){Se=typeof e=="function"?e:null,Le=typeof t=="function"?t:null}function Ye(e="log",t,...n){let o=$t(e),i=Ut(),r=Mt();if(r)try{r.call(i?.thisArg,o,t,...n);return}catch(d){Je("error","Custom log handler failed:",d)}Ot(o,i)&&Je(o,t,...n)}var Y=class{constructor(t={},n=null){let o=t&&typeof t=="object"?t:{},i=n||(typeof document<"u"?document:new EventTarget),r=new WeakMap,d=m=>m.map(E=>String(E)).join("."),S,L=(m,E,j,a)=>{let l=d(m),h={property:E,path:l,value:j,oldValue:a};i.dispatchEvent(new CustomEvent(`change:${l}`,{detail:h,bubbles:!0,composed:!0})),i.dispatchEvent(new CustomEvent("change",{detail:{...h,state:S},bubbles:!0,composed:!0}))},p=(m,E)=>(typeof E=="function"&&i.addEventListener(m,E),S),c=(m,E)=>(typeof E=="function"&&i.removeEventListener(m,E),S),f=(m,E)=>{if(typeof E=="function"){let j=a=>{E(a),i.removeEventListener(m,j)};i.addEventListener(m,j)}return S},A=(m,E)=>{if(!m||typeof m!="object")return m;if(r.has(m))return r.get(m);let j=new Proxy(m,{get(a,l,h){if(l==="on")return p;if(l==="off")return c;if(l==="once")return f;let u=Reflect.get(a,l,h);return u&&typeof u=="object"?A(u,[...E,l]):u},set(a,l,h,u){let y=Reflect.get(a,l,u);return Object.is(y,h)?!0:Reflect.set(a,l,h,u)?(L([...E,l],l,h,y),!0):!1},deleteProperty(a,l){if(!Reflect.has(a,l))return!0;let h=a[l];return Reflect.deleteProperty(a,l)?(L([...E,l],l,void 0,h),!0):!1}});return r.set(m,j),j};return S=A(o,[]),S}};function Ze(e,t,n){if(!e||!t||typeof n!="object")return()=>{};let o={};return Object.entries(n).forEach(([i,r])=>{o[i]=d=>{typeof r=="function"&&r(e,d.detail.value,d.detail.oldValue)},t.on(`change:${i}`,o[i])}),()=>{Object.entries(o).forEach(([i,r])=>{t.off(`change:${i}`,r)})}}typeof s.initializing!="boolean"&&(s.initializing=!1);"currentPreset"in s||(s.currentPreset=null);typeof s.debug!="boolean"&&(s.debug=!1);"currentConfig"in s||(s.currentConfig=null);"compiled"in s||(s.compiled=null);typeof s.logHandler!="function"&&(s.logHandler=null);"mode"in s||(s.mode=null);var Z=null,X=null,ee=null,te=null,ne=null,oe=null,et="__pdsLocalizationRuntime";function U(){if(oe)return oe;let e=s?.[et];return e&&typeof e=="object"?(oe=e,e):null}function Nt(e){let t=e&&typeof e=="object"?e:null;oe=t,s[et]=t}Qe({getLogger:()=>typeof s.logHandler=="function"?s.logHandler:null,getContext:()=>{let e=s?.mode||s?.compiled?.mode||(s?.registry?.isLive?"live":"static"),t=(s?.debug||s?.currentConfig?.debug||s?.currentConfig?.design?.debug||s?.compiled?.debug||s?.compiled?.design?.debug||!1)===!0;return{mode:e,debug:t,thisArg:s}}});s.log=(e="log",t,...n)=>{Ye(e,t,...n)};var v={locale:"en",messages:{},hasProvider:!1},se=new Set;function tt(e){return!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e}function nt(e=[]){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function It(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function Ft(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function Wt(e,...t){return{strTag:!0,strings:Array.from(e||[]),values:t,raw:Array.from(e?.raw||[])}}function Bt(e){if(!e)return"";if(tt(e)){let n=nt(e.strings||[]),o=v.messages[n]||n;return It(o,i=>e.values?.[i])}let t=String(e);return v.messages[t]||t}function Ht(e){if(!e)return;let t=tt(e)?nt(e.strings||[]):String(e);typeof t=="string"&&t.length>0&&se.add(t)}function ot(e){if(!e||typeof e.msg!="function"||se.size===0)return;let t=Array.from(se);se.clear();for(let n of t)try{e.msg(n)}catch{}}async function W(){let e=U();return e||(ne||(ne=import(B("pds-localization.js")).then(n=>{if(typeof n?.msg!="function"||typeof n?.str!="function"||typeof n?.configureLocalization!="function"||typeof n?.loadLocale!="function"||typeof n?.setLocale!="function"||typeof n?.getLocalizationState!="function")throw new Error("Failed to load localization runtime exports");return Nt(n),ot(n),n}).catch(n=>{throw ne=null,n})),ne)}var M=(e,t={})=>{let n=U();return typeof n?.msg=="function"?n.msg(e,t):(Ht(e),Bt(e,t))},ie=(e,...t)=>{let n=U();return typeof n?.str=="function"?n.str(e,...t):Wt(e,...t)},re=(e=null)=>{let t=U();if(typeof t?.configureLocalization=="function")return t.configureLocalization(e);if(!e||typeof e!="object")return v.locale="en",v.messages={},v.hasProvider=!1,{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider};typeof e.locale=="string"&&e.locale.trim()&&(v.locale=e.locale.trim()),Object.prototype.hasOwnProperty.call(e,"messages")&&(v.messages=Ft(e.messages));let n=!!(e.provider||e.translate||e.loadLocale||e.setLocale);return v.hasProvider=n,n&&W().then(o=>{o.configureLocalization(e),ot(o)}).catch(()=>{}),{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider}},st=async e=>(await W()).loadLocale(e),rt=async(e,t={})=>(await W()).setLocale(e,t),it=()=>{let e=U();return typeof e?.getLocalizationState=="function"?e.getLocalizationState():{locale:v.locale,messages:{...v.messages},hasProvider:v.hasProvider}},at=(e={})=>{let t=U();if(typeof t?.createJSONLocalization=="function")return t.createJSONLocalization(e);let n=typeof e?.locale=="string"&&e.locale.trim()?e.locale.trim().toLowerCase():"en",o=Array.isArray(e?.locales)?e.locales.map(L=>String(L||"").trim().toLowerCase()).filter(Boolean):[],i=Array.from(new Set([n,...o])),r=null,d=async()=>(r||(r=W().then(L=>typeof L?.createJSONLocalization=="function"?L.createJSONLocalization(e):null).catch(()=>null)),r),S=async(L="loadLocale")=>{let p=await d();if(!p||typeof p!="object")return null;let c=p.provider;if(!c||typeof c!="object")return null;let f=c[L];return typeof f=="function"?f:L==="setLocale"&&typeof c.loadLocale=="function"?c.loadLocale:null};return{locale:n,locales:[...i],provider:{locales:[...i],async loadLocale(L={}){let p=await S("loadLocale");return typeof p!="function"?{}:p(L)},async setLocale(L={}){let p=await S("setLocale");return typeof p!="function"?{}:p(L)}}}};function B(e,t){return t&&typeof t=="string"?t:`${Q(s.currentConfig||{},{resolvePublicAssetURL:q})}core/${e}`}async function Kt(){return Array.isArray(s.defaultEnhancers)&&s.defaultEnhancers.length>0?s.defaultEnhancers:(te||(te=import(B("pds-enhancers.js",s.currentConfig?.enhancersURL)).then(t=>{let n=Array.isArray(t?.defaultPDSEnhancers)?t.defaultPDSEnhancers:[];return s.defaultEnhancers=n,n}).catch(t=>{throw te=null,t})),te)}async function Gt(){return typeof s.ask=="function"&&s.ask!==ct?s.ask:(X||(X=import(B("pds-ask.js",s.currentConfig?.askURL)).then(t=>{let n=t?.ask;if(typeof n!="function")throw new Error("Failed to load ask helper");return s.ask=n,n}).catch(t=>{throw X=null,t})),X)}async function H(){return typeof s.toast=="function"&&s.toast!==O?s.toast:(ee||(ee=import(B("pds-toast.js",s.currentConfig?.toastURL)).then(t=>{let n=t?.toast;if(typeof n!="function")throw new Error("Failed to load toast helper");return s.toast=n,n}).catch(t=>{throw ee=null,t})),ee)}async function ct(...e){return(await Gt())(...e)}async function O(...e){return(await H())(...e)}O.success=async(...e)=>(await H()).success(...e);O.error=async(...e)=>(await H()).error(...e);O.warning=async(...e)=>(await H()).warning(...e);O.info=async(...e)=>(await H()).info(...e);var Xe=function(e="log",t,...n){s.log(e,t,...n)};function _e(e){if(e==null)return e;if(typeof e=="function")return;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>_e(n)).filter(n=>n!==void 0);let t={};for(let[n,o]of Object.entries(e)){let i=_e(o);i!==void 0&&(t[n]=i)}return t}function lt(e,t=new WeakSet){if(!e||typeof e!="object"||t.has(e))return e;t.add(e),Object.freeze(e);for(let n of Object.keys(e))lt(e[n],t);return e}function ve(e){return e==null||typeof e!="object"?e:lt(structuredClone(_e(e)))}async function qt(e,t={}){if(t?.runtimeConfig===!1||typeof fetch!="function")return null;let n=t?.runtimeConfigURL||`${e}pds-runtime-config.json`;try{let o=await fetch(n,{cache:"no-store"});return o.ok?await o.json():null}catch{return null}}s.registry=$;s.enums=Ue;s.adoptLayers=ze;s.adoptPrimitives=Te;var Jt=fe;s.parse=Jt;var Ae=G;s.html=Ae;s.State=Y;s.bindState=Ze;s.createStylesheet=$e;s.isLiveMode=()=>$.isLive;s.ask=ct;s.toast=O;s.common=me;s.msg=M;s.str=ie;s.configureLocalization=re;s.loadLocale=st;s.setLocale=rt;s.getLocalizationState=it;s.createJSONLocalization=at;s.i18n={msg:M,str:ie,configure:re,loadLocale:st,setLocale:rt,getState:it,createJSONLocalization:at};s.AutoComplete=null;s.loadAutoComplete=async()=>{if(s.AutoComplete&&typeof s.AutoComplete.connect=="function")return s.AutoComplete;let e=B("pds-autocomplete.js",s.currentConfig?.autoCompleteURL);return Z||(Z=import(e).then(t=>{let n=t?.AutoComplete||t?.default?.AutoComplete||t?.default||null;if(!n)throw new Error("AutoComplete export not found in module");return s.AutoComplete=n,n}).catch(t=>{throw Z=null,t})),Z};function dt(e){let t=typeof CustomEvent=="function";try{let n=t?new CustomEvent("pds:ready",{detail:e}):new Event("pds:ready");s.dispatchEvent(n)}catch{}if(typeof document<"u")if(t){let n={detail:e,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",n))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",n))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function ut(e={}){let t=typeof CustomEvent=="function",n={at:Date.now(),...e};try{let o=t?new CustomEvent("pds:config-changed",{detail:n}):new Event("pds:config-changed");s.dispatchEvent(o)}catch{}if(typeof document<"u")if(t){let o={detail:n,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",o))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var Ee="pure-ds-theme",C=null,F=null;function xe(e){try{if(typeof document>"u")return;let t="light";e?e==="system"?t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e:t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",t)}catch{}}function je(e){try{if(C&&F){try{typeof C.removeEventListener=="function"?C.removeEventListener("change",F):typeof C.removeListener=="function"&&C.removeListener(F)}catch{}C=null,F=null}if(e==="system"&&typeof window<"u"&&window.matchMedia){let t=window.matchMedia("(prefers-color-scheme: dark)"),n=o=>{let i=o?.matches===void 0?t.matches:o.matches;try{let r=i?"dark":"light";document.documentElement.setAttribute("data-theme",r),s.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"system"}}))}catch{}};C=t,F=n,typeof t.addEventListener=="function"?t.addEventListener("change",n):typeof t.addListener=="function"&&t.addListener(n)}}catch{}}var Vt=Object.getOwnPropertyDescriptor(s,"theme");Vt||Object.defineProperty(s,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(Ee)||null}catch{return null}},set(e){try{if(typeof window>"u")return;let t=s.currentConfig?.design||null,n=we(e);if(t&&!qe(t,n)){let o=t?.name||s.currentPreset?.name||s.currentConfig?.preset||"current preset";s.log("warn",`PDS theme "${n}" not supported by preset "${o}".`),s.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:e,resolvedTheme:n,preset:o}}));return}e==null?localStorage.removeItem(Ee):localStorage.setItem(Ee,e),xe(e),je(e),s.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:e,source:"api"}}))}catch{}}});s.defaultEnhancers=[];async function Qt(e){s.initializing=!0;try{let t=e&&e.mode||"live",{mode:n,...o}=e||{};s.mode=t,s.logHandler=typeof o?.log=="function"?o.log:null,s.currentConfig=ve(o);let i=o&&typeof o.localization=="object"&&o.localization?o.localization:null;i?(await W(),re(i)):re(null);let r;if(t==="static")r=await Yt(o);else{let{localization:S,...L}=o||{},p=Q(L,{resolvePublicAssetURL:q}),c=L?.managerURL||L?.public?.managerURL||L?.manager?.url||new URL("core/pds-manager.js",p).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:f}=await import(c);r=await f(s,L,{emitReady:dt,emitConfigChanged:ut,applyResolvedTheme:xe,setupSystemListenerIfNeeded:je})}s.compiled=ve(r?.config||null);let d=s?.compiled?.design?.icons?.externalPath||"/assets/img/icons/";return s.log("info",`startup ready; external icon path: ${d}`),r}finally{s.initializing=!1}}s.start=Qt;async function Yt(e){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let t=e.applyGlobalStyles??!0,n=e.manageTheme??!0,o=e.themeStorageKey??"pure-ds-theme",i=e.staticPaths??{},r=Q(e,{resolvePublicAssetURL:q}),d=e&&e.autoDefine||null,S;d&&d.baseURL?S=J(V(d.baseURL,{preferModule:!1})):S=`${r}components/`;let L=d&&Array.isArray(d.predefine)&&d.predefine||[],p=d&&typeof d.mapper=="function"&&d.mapper||null;try{He(s);let{resolvedTheme:c}=Ke({manageTheme:n,themeStorageKey:o,applyResolvedTheme:xe,setupSystemListenerIfNeeded:je}),f=await qt(r,e),A=Array.isArray(e?.enhancers)?e.enhancers:e?.enhancers&&typeof e.enhancers=="object"?Object.values(e.enhancers):[],m=f?.config?{...f.config,...e,design:e?.design||f.config.design,preset:e?.preset||f.config.preset}:{...e},E={tokens:`${r}styles/pds-tokens.css.js`,primitives:`${r}styles/pds-primitives.css.js`,components:`${r}styles/pds-components.css.js`,utilities:`${r}styles/pds-utilities.css.js`,styles:`${r}styles/pds-styles.css.js`},j=f?.paths||{};if(i={...E,...j,...i},s.registry.setStaticMode(i),t&&typeof document<"u")try{let h=await s.registry.getStylesheet("styles");if(h){h._pds=!0;let u=(document.adoptedStyleSheets||[]).filter(y=>y._pds!==!0);document.adoptedStyleSheets=[...u,h],ut({mode:"static",source:"static:styles-applied"})}}catch(h){Xe.call(s,"warn","Failed to apply static styles:",h)}let a=null,l=[];try{let h=await Kt(),u=await Ge({autoDefineBaseURL:S,autoDefinePreload:L,autoDefineMapper:p,enhancers:A,autoDefineOverrides:d||null,autoDefinePreferModule:!(d&&d.baseURL)},{baseEnhancers:h});a=u.autoDefiner,l=u.mergedEnhancers||[]}catch(h){Xe.call(s,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",h)}return s.compiled=ve({mode:"static",...m,theme:c,enhancers:l}),dt({mode:"static",config:m,theme:c,autoDefiner:a}),{config:m,theme:c,autoDefiner:a}}catch(c){throw s.dispatchEvent(new CustomEvent("pds:error",{detail:{error:c}})),c}}var Zt=s.createJSONLocalization({locale:"en-US",locales:["en-US","nl-NL"],aliases:{en:["en-US"],nl:["nl-NL"]},basePath:"/assets/locales"}),pt={mode:"live",liveEdit:!0,preset:"default",localization:Zt,autoDefine:{predefine:["pds-icon","pds-drawer","pds-toaster"]},log(e,t,...n){(this?.mode||this?.compiled?.mode||"live")!=="static"&&(typeof console[e]=="function"?console[e]:console.log)(`[PDS] ${t}`,...n)}};var D={name:"@pure-ds/core",shortname:"pds",version:"0.7.62",description:"Why develop a Design System when you can generate one?",repository:{type:"git",url:"git+https://github.com/Pure-Web-Foundation/pure-ds.git"},bugs:{url:"https://github.com/Pure-Web-Foundation/pure-ds/issues"},homepage:"https://puredesignsystem.z6.web.core.windows.net/",keywords:["design-system","css","web-components","lit","constructable-stylesheets","tokens","utilities","a11y"],type:"module",main:"./public/assets/pds/core.js",module:"./public/assets/pds/core.js",types:"./dist/types/pds.d.ts",bin:{"pds-build":"packages/pds-cli/bin/pds-static.js","pds-sync-assets":"packages/pds-cli/bin/sync-assets.js","pds-build-icons":"packages/pds-cli/bin/pds-build-icons.js","pds-import":"packages/pds-cli/bin/pds-import.js","pds-setup-copilot":"packages/pds-cli/bin/pds-setup-copilot.js","pds-setup-mcp":"packages/pds-cli/bin/pds-setup-mcp.js","pds-init-config":"packages/pds-cli/bin/pds-init-config.js","pds-bootstrap":"packages/pds-cli/bin/pds-bootstrap.js","pds-mcp-server":"packages/pds-cli/bin/pds-mcp-server.js","pds-mcp-health":"packages/pds-cli/bin/pds-mcp-health.js","pds-mcp-eval":"packages/pds-cli/bin/pds-mcp-eval.js"},exports:{".":{types:"./src/js/pds.d.ts",import:"./public/assets/pds/core.js"},"./localization":{types:"./dist/types/src/js/pds-localization.d.ts",import:"./public/assets/pds/core/pds-localization.js"},"./lit":{types:"./dist/types/src/js/lit.d.ts",import:"./public/assets/pds/external/lit.js"},"./pds-core":"./src/js/pds.js","./auto-define/*":"./public/auto-define/*"},files:[".github/copilot-instructions.md",".cursorrules","dist/types/","public/assets/js/","public/assets/pds/components/","public/assets/pds/templates/","public/assets/pds/core.js","public/assets/pds/core/","public/assets/pds/external/","public/assets/pds/vscode-custom-data.json","public/assets/pds/pds.css-data.json","public/assets/pds/pds-css-complete.json","public/auto-define/","public/pds/components/","public/assets/pds/icons/pds-icons.svg","packages/pds-cli/bin/","packages/pds-cli/lib/","src/js/pds.d.ts","src/js/pds.js","src/js/pds-singleton.js","src/js/common/","src/js/pds-live-manager/","src/js/pds-core/","custom-elements.json","custom-elements-manifest.config.js","pds.html-data.json","pds.css-data.json","LOCALIZATION.md","readme.md","INTELLISENSE.md","CSS-INTELLISENSE-LIMITATION.md","CSS-INTELLISENSE-QUICK-REF.md"],scripts:{dev:"node esbuild-dev.js",prebuild:"npm run types",build:"node esbuild-build.js",types:"tsc -p tsconfig.json && node scripts/sync-types.mjs",postinstall:"node packages/pds-cli/bin/postinstall.mjs","prepds:build":"npm run types","pds:build":"node packages/pds-cli/bin/pds-static.js","pds:build-icons":"node packages/pds-cli/bin/pds-build-icons.js","pds:bootstrap":"node packages/pds-cli/bin/pds-bootstrap.js","pds:manifest":"node packages/pds-cli/bin/generate-manifest.js","pds:css-data":"node packages/pds-cli/bin/generate-css-data.js","pds:import":"node packages/pds-cli/bin/pds-import.js","pds:dx":"node packages/pds-cli/bin/pds-dx.js","pds:mcp:server":"node packages/pds-cli/bin/pds-mcp-server.js","pds:mcp:health":"node packages/pds-cli/bin/pds-mcp-health.js","pds:mcp:eval":"node packages/pds-cli/bin/pds-mcp-eval.js","storybook:generate":"cd packages/pds-storybook && npm run generate-stories","storybook:dev":"cd packages/pds-storybook && npm run storybook:dev","storybook:build":"cd packages/pds-storybook && npm run storybook:build"},author:"Marc van Neerven",license:"ISC",engines:{node:">=18"},publishConfig:{access:"public"},devDependencies:{"@custom-elements-manifest/analyzer":"^0.9.9","@types/node":"^22.10.2",esbuild:"^0.19.0","fs-extra":"^11.1.1",typescript:"^5.6.3"},dependencies:{lit:"^3.3.2","pure-web":"1.1.32"},customElements:"custom-elements.json"};await s.start(pt);document.documentElement.lang="en";var ft=typeof D.repository=="string"?D.repository:D.repository?.url,en=ft?ft.replace(/^git\+/,"").replace(/\.git$/,""):"",Tn=D.homepage||en,zn=D.bugs?.url||"";document.body.appendChild(Ae`
|
|
4
4
|
<div class="container text-center">
|
|
5
5
|
<img src="/assets/img/pds-logo.svg" alt="PDS Logo" title="${M("PDS Logo")}" width="64" height="64" />
|
|
6
6
|
<header class="container section">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var U=new Set(["log","warn","error","debug","info"]),G="__PURE_DS_PDS_SINGLETON__",j=null,P=null;function C(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[G];if(t&&typeof t=="object")return t}catch{return null}return null}function N(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function H(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return U.has(t)?t:"log"}function J(){if(typeof P=="function")try{let t=N(P());if(t)return t}catch{}let e=C();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function X(){if(typeof j=="function")try{let t=j();if(typeof t=="function")return t}catch{}let e=C();return typeof e?.logHandler=="function"?e.logHandler:null}function $(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Y(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function k(e="log",t,...n){let o=H(e),r=J(),l=X();if(l)try{l.call(r?.thisArg,o,t,...n);return}catch(c){$("error","Custom log handler failed:",c)}Y(o,r)&&$(o,t,...n)}var D="en",s={defaultLocale:D,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},Z=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],Q=e=>!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e;function h(e){return String(e||"").trim().toLowerCase()}function ee(e){let t=h(e);return t?t.split("-")[0]||t:""}function L(e){let t=h(e);if(!t)return s.defaultLocale;let n=s.provider?.resolveLocale;if(typeof n=="function"){let o=h(n(e));if(o)return o}return t}function te(e){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function S(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function E(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function ne(e){let t=e&&typeof e.provider=="object"&&e.provider?e.provider:null,n=typeof e?.translate=="function"?e.translate:typeof t?.translate=="function"?t.translate:null,o=typeof e?.loadLocale=="function"?e.loadLocale:typeof t?.loadLocale=="function"?t.loadLocale:null,r=typeof e?.setLocale=="function"?e.setLocale:typeof t?.setLocale=="function"?t.setLocale:null,l=typeof e?.resolveLocale=="function"?e.resolveLocale:typeof t?.resolveLocale=="function"?t.resolveLocale:null;return!n&&!o&&!r&&!l?null:{translate:n,loadLocale:o,setLocale:r,resolveLocale:l}}function oe(e){let t=h(e);if(!t)return[s.defaultLocale];let n=ee(t);return!n||n===t?[t]:[t,n]}function K(e,t){let n=L(e);s.messagesByLocale.set(n,E(t))}function I(e){typeof e=="string"&&e.length>0&&s.requestedKeys.add(e)}function R(e,t){if(typeof e!="string"||!e.length)return;let n=typeof t=="string"?t:String(t||"");n.length&&(s.valueToKeys.has(n)||s.valueToKeys.set(n,new Set),s.valueToKeys.get(n).add(e))}function w(e){let t=oe(e);for(let n of t)if(s.messagesByLocale.has(n))return{locale:n,messages:s.messagesByLocale.get(n)};return null}async function b(e,t="explicit"){let n=L(e),o=w(n);if(o)return o.messages;let r=n;if(s.loadingByLocale.has(r))return s.loadingByLocale.get(r);if(!s.provider)return{};let l=s.provider.loadLocale||s.provider.setLocale||null;if(typeof l!="function")return{};let c={locale:n,defaultLocale:s.defaultLocale,reason:t,loadedLocales:Array.from(s.messagesByLocale.keys()),messages:{...w(n)?.messages||{}},load:t==="set-default"||t==="explicit-load"},i;try{i=l(c)}catch{return{}}if(i&&typeof i.then=="function"){let a=i.then(p=>{let u=E(p);return K(n,u),u}).catch(()=>({})).finally(()=>{s.loadingByLocale.delete(r)});return s.loadingByLocale.set(r,a),a}let d=E(i);return K(n,d),d}function re(e){if(!e||typeof e!="object")return"";let n=typeof Element<"u"&&e instanceof Element||e?.nodeType===1?e:null;if(!n)return"";if(n.hasAttribute?.("lang"))return h(n.getAttribute("lang"));let o=n.closest?.("[lang]");return o&&o.getAttribute?h(o.getAttribute("lang")):""}function x(e={}){if(typeof e?.lang=="string"&&e.lang.trim())return L(e.lang);let t=e?.element||e?.scope||e?.host||e?.contextElement||null,n=re(t);if(n)return L(n);if(typeof document<"u"&&document.documentElement){let o=h(document.documentElement.getAttribute("lang"));if(o)return L(o)}return s.defaultLocale}function se(){let e=new Set([s.defaultLocale]);if(typeof document>"u")return e;let t=h(document.documentElement?.getAttribute?.("lang"));t&&e.add(L(t));let n=document.querySelectorAll?.("[lang]")||[];for(let o of n){let r=h(o.getAttribute("lang"));r&&e.add(L(r))}return e}async function le(e){for(let t of e)await b(t,"lang-detected")}function ce(e){for(let t of Array.from(s.messagesByLocale.keys()))e.has(t)||s.messagesByLocale.delete(t)}function ae(e){let t=String(e||""),n=(t.match(/^\s*/)||[""])[0],o=(t.match(/\s*$/)||[""])[0],r=n.length,l=t.length-o.length,c=l>=r?t.slice(r,l):"";return{leading:n,core:c,trailing:o}}function V(e){return String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ie(e,t){let n=typeof e=="string"?e:String(e||""),o=typeof t=="string"?t:String(t||""),r=/\{(\d+)\}/g,l=Array.from(n.matchAll(r));if(!l.length)return n===o?[]:null;let c=[],i="^",d=0;for(let u of l){let f=u.index??0;i+=V(n.slice(d,f)),i+="([\\s\\S]*?)",c.push(Number(u[1])),d=f+u[0].length}i+=V(n.slice(d)),i+="$";let a=new RegExp(i).exec(o);if(!a)return null;let p=[];for(let u=1;u<a.length;u+=1){let f=c[u-1],g=a[u];if(Object.prototype.hasOwnProperty.call(p,f)&&p[f]!==g)return null;p[f]=g}return p}function B(e,t){if(typeof e!="string"||!e.length)return[];let n=[e];for(let[,o]of s.messagesByLocale.entries()){let r=o?.[e];typeof r=="string"&&r.length&&n.push(r)}for(let o of n){let r=ie(o,t);if(r)return r}return[]}function W(e){if(!e)return null;let t=s.valueToKeys.get(e);if(t&&t.size>0){for(let o of t)if(s.requestedKeys.has(o))return o}if(s.requestedKeys.has(e))return e;let n=Array.from(s.messagesByLocale.entries());for(let o of s.requestedKeys)for(let[,r]of n)if(r&&r[o]===e)return o;return null}function F(e){if(!e)return null;let t=null;for(let[n,o]of s.valueToKeys.entries()){if(typeof n!="string"||!n.length||n===e)continue;let r=e.indexOf(n);if(r!==-1)for(let l of o){if(!s.requestedKeys.has(l))continue;let c=B(l,n),i={key:l,matchedText:n,start:r,end:r+n.length,values:c};(!t||i.matchedText.length>t.matchedText.length)&&(t=i);break}}return t}async function ue(e){if(!e||e.nodeType!==3)return;let t=e.parentElement||null;if(!t)return;let{leading:n,core:o,trailing:r}=ae(e.nodeValue);if(!o)return;let l=s.textNodeKeyMap.get(e)||null;if((!l||!s.requestedKeys.has(l))&&(l=W(o)),!l){let u=F(o);if(!u)return;let f=x({element:t});await b(f,"text-node");let g=T(u.key,u.values,{element:t},null),y=u.values.length?S(g,A=>u.values[A]):g,m=o.slice(0,u.start)+y+o.slice(u.end),_=`${n}${m}${r}`;_!==e.nodeValue&&(e.nodeValue=_);return}s.textNodeKeyMap.set(e,l);let c=x({element:t});await b(c,"text-node");let i=B(l,o),d=T(l,i,{element:t},null),a=i.length?S(d,u=>i[u]):d,p=`${n}${a}${r}`;p!==e.nodeValue&&(e.nodeValue=p)}async function fe(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e||typeof document.createTreeWalker!="function")return;let t=[],n=new Set,o=l=>{!l||n.has(l)||(n.add(l),t.push(l))};o(e);for(let l=0;l<t.length;l+=1){let c=t[l];if(!c||typeof c.querySelectorAll!="function")continue;let i=c.querySelectorAll("*");for(let d of i){let a=d?.shadowRoot;a&&o(a)}}let r=[];for(let l of t){let c=document.createTreeWalker(l,NodeFilter.SHOW_TEXT);for(;c.nextNode();)r.push(c.currentNode)}for(let l of r)await ue(l)}function de(e){let t=s.attributeKeyMap.get(e);return t||(t=new Map,s.attributeKeyMap.set(e,t)),t}async function ge(e,t){if(!e||typeof e.getAttribute!="function")return;let n=e.getAttribute(t);if(typeof n!="string"||!n.length)return;let o=de(e),r=o.get(t)||null;if((!r||!s.requestedKeys.has(r))&&(r=W(n)),!r){let a=F(n);if(!a)return;let p=x({element:e});await b(p,"attribute");let u=T(a.key,a.values,{element:e},null),f=a.values.length?S(u,y=>a.values[y]):u,g=n.slice(0,a.start)+f+n.slice(a.end);g!==n&&e.setAttribute(t,g),o.set(t,a.key);return}o.set(t,r);let l=x({element:e});await b(l,"attribute");let c=B(r,n),i=T(r,c,{element:e},null),d=c.length?S(i,a=>c[a]):i;d!==n&&e.setAttribute(t,d)}async function pe(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e)return;let t=[],n=new Set,o=r=>{!r||n.has(r)||(n.add(r),t.push(r))};o(e);for(let r=0;r<t.length;r+=1){let l=t[r];if(!l||typeof l.querySelectorAll!="function")continue;let c=l.querySelectorAll("*");for(let i of c){let d=i?.shadowRoot;d&&o(d)}}for(let r of t){if(!r||typeof r.querySelectorAll!="function")continue;let l=r.querySelectorAll("*");for(let c of l)for(let i of Z)c.hasAttribute(i)&&await ge(c,i)}}async function ye(){let e=se();await le(e),await fe(),await pe(),ce(e)}function z(){typeof window>"u"||(s.reconcileTimer&&clearTimeout(s.reconcileTimer),s.reconcileTimer=setTimeout(()=>{s.reconcileTimer=null,ye()},16))}function me(){if(typeof window>"u"||typeof document>"u"||(s.observer&&(s.observer.disconnect(),s.observer=null),typeof MutationObserver!="function"))return;let e=new MutationObserver(()=>{z()});e.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],childList:!0,characterData:!0,subtree:!0}),s.observer=e}function T(e,t=[],n={},o=null){let r=x(n),l=w(r);l||b(r,"msg");let c=w(r)?.messages||{},i=w(s.defaultLocale)?.messages||{},d={key:e,values:t,options:n,locale:r,defaultLocale:s.defaultLocale,messages:c,messagesByLocale:Object.fromEntries(Array.from(s.messagesByLocale.entries())),template:o},a,p=!!l,u=r===s.defaultLocale;typeof s.provider?.translate=="function"&&(a=s.provider.translate(d));let f=null;if(a==null&&(a=c[e]),a==null&&(a=i[e],f=a==null?null:"default"),a==null&&(a=e,f="key"),p&&!u&&f){let y=`${r}::${e}`;s.missingWarnings.has(y)||(s.missingWarnings.add(y),k("warn",`[i18n] Missing translation for locale "${r}" and key "${e}"; using ${f} fallback.`))}let g=typeof a=="string"?a:String(a);if(R(e,g),Array.isArray(t)&&t.length>0){let y=S(g,m=>t[m]);y!==g&&R(e,y)}return g}function M(){let e=w(s.defaultLocale);return{locale:s.defaultLocale,messages:{...e?.messages||{}},loadedLocales:Array.from(s.messagesByLocale.keys()),hasProvider:!!s.provider}}function Le(e=null){return s.observer&&(s.observer.disconnect(),s.observer=null),s.reconcileTimer&&(clearTimeout(s.reconcileTimer),s.reconcileTimer=null),s.defaultLocale=D,s.provider=null,s.messagesByLocale.clear(),s.loadingByLocale.clear(),s.requestedKeys.clear(),s.textNodeKeyMap=new WeakMap,s.attributeKeyMap=new WeakMap,s.valueToKeys.clear(),s.missingWarnings.clear(),!e||typeof e!="object"||(typeof e.locale=="string"&&e.locale.trim()&&(s.defaultLocale=L(e.locale)),Object.prototype.hasOwnProperty.call(e,"messages")&&K(s.defaultLocale,e.messages),(Object.prototype.hasOwnProperty.call(e,"provider")||Object.prototype.hasOwnProperty.call(e,"translate")||Object.prototype.hasOwnProperty.call(e,"loadLocale")||Object.prototype.hasOwnProperty.call(e,"setLocale")||Object.prototype.hasOwnProperty.call(e,"resolveLocale"))&&(s.provider=ne(e)),s.provider?.resolveLocale&&(s.defaultLocale=L(s.defaultLocale)),me(),z()),M()}async function he(e){let t=L(e);return await b(t,"explicit-load"),{...w(t)?.messages||{}}}async function _e(e,{load:t=!0}={}){return s.defaultLocale=L(e),t&&await b(s.defaultLocale,"set-default"),z(),s.defaultLocale}var be=(e,t,n={})=>{let o=te(e);I(o);let r=T(o,t,n,{strings:e,values:t});return S(r,l=>t[l])},we=(e,...t)=>({strTag:!0,strings:Array.from(e),values:t,raw:Array.from(e?.raw||[])}),ve=(e,t={})=>{if(!e)return"";if(Q(e))return be(e.strings,e.values,t);let n=String(e);I(n);let o=T(n,[],t,null);return!t?.element&&!t?.scope&&!t?.host&&!t?.contextElement&&!t?.lang&&z(),o};function v(e){return String(e||"").trim().toLowerCase()}function O(e){return v(e).split("-")[0]||""}function Ae(e,t){let n=[],o=new Set,r=l=>{let c=v(l);!c||o.has(c)||(o.add(c),n.push(c))};return Array.isArray(e)&&e.forEach(r),r(t),n}function Se(e={}){let t={};return!e||typeof e!="object"||Object.entries(e).forEach(([n,o])=>{let r=v(n);if(!r)return;let l=[],c=new Set;Array.isArray(o)&&o.forEach(i=>{if(typeof i!="string")return;let d=i.trim();if(!d)return;let a=d.toLowerCase();c.has(a)||(c.add(a),l.push(d))}),t[r]=l}),t}function Te(e,t,n){let o=Array.isArray(t?.[e])?t[e]:[];for(let r of o){let l=v(r);if(n.has(l))return l}return""}function xe({aliases:e,localeSet:t}){let n=new Map;for(let o of t)n.set(o,o);for(let o of Object.keys(e||{})){let r=Te(o,e,t);if(!r)throw new Error(`[i18n] Locale alias "${o}" does not map to any configured locale.`);n.set(o,r)}return n}function ze(e,{defaultLocale:t,aliasLookup:n}){let o=v(e);if(!o)return t;let r=n.get(o);if(r)return r;let l=O(o),c=l?n.get(l):"";if(c)return c;throw new Error(`[i18n] Locale alias "${e}" is not configured. Add an alias entry for "${l||o}".`)}function Ee(e){return!e||typeof e!="object"||Array.isArray(e)?{}:e}function Ke(e){let t=typeof e=="string"?e.trim():"";return t?t==="/"?"":t.replace(/\/+$/,""):"/assets/locales"}function Me({locale:e,effectiveLocale:t,defaultLocale:n,aliases:o}){let r=[],l=new Set,c=u=>{if(typeof u!="string")return;let f=u.trim();if(!f)return;let g=f.toLowerCase();l.has(g)||(l.add(g),r.push(f))},i=u=>{let f=Array.isArray(o?.[u])?o[u]:[];if(!f.length)return;[...f].sort((y,m)=>{let _=String(y||"").includes("-"),A=String(m||"").includes("-");return _===A?0:_?-1:1}).forEach(c)},d=v(e),a=O(d),p=O(t);return i(d),i(a),i(t),i(p),c(e),c(d),c(a),c(t),c(p),t!==n&&(i(n),c(n)),r}function Be(e={}){let t=v(e?.locale||"en")||"en",n=Ae(e?.locales,t),o=new Set(n),r=Se(e?.aliases||{}),l=xe({aliases:r,localeSet:o}),c=e?.cache instanceof Map?e.cache:new Map,i=Ke(e?.basePath),d=e?.requestInit&&typeof e.requestInit=="object"?e.requestInit:{},a=u=>ze(u,{defaultLocale:t,aliasLookup:l}),p=async({locale:u})=>{let f=a(u);if(c.has(f))return c.get(f)||{};if(f===t){let m={};return c.set(f,m),m}if(typeof fetch!="function"){let m={};return c.set(f,m),m}let g=Me({locale:u,effectiveLocale:f,defaultLocale:t,aliases:r});for(let m of g)try{let _=i?`${i}/${m}.json`:`/${m}.json`,A=await fetch(_,{headers:{Accept:"application/json"},...d});if(!A.ok)continue;let q=Ee(await A.json());return c.set(f,q),q}catch{}let y={};return c.set(f,y),y};return{locale:t,locales:[...n],provider:{locales:[...n],resolveLocale:a,loadLocale:p}}}export{Le as configureLocalization,Be as createJSONLocalization,M as getLocalizationState,he as loadLocale,ve as msg,_e as setLocale,we as str};
|
|
1
|
+
var G=new Set(["log","warn","error","debug","info"]),N="__PURE_DS_PDS_SINGLETON__",P=null,$=null;function k(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[N];if(t&&typeof t=="object")return t}catch{return null}return null}function H(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function J(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return G.has(t)?t:"log"}function X(){if(typeof $=="function")try{let t=H($());if(t)return t}catch{}let e=k();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function Y(){if(typeof P=="function")try{let t=P();if(typeof t=="function")return t}catch{}let e=k();return typeof e?.logHandler=="function"?e.logHandler:null}function C(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Z(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function R(e="log",t,...n){let o=J(e),r=X(),l=Y();if(l)try{l.call(r?.thisArg,o,t,...n);return}catch(a){C("error","Custom log handler failed:",a)}Z(o,r)&&C(o,t,...n)}var I="en",s={defaultLocale:I,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},Q=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],ee=e=>!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e;function h(e){return String(e||"").trim().toLowerCase()}function te(e){let t=h(e);return t?t.split("-")[0]||t:""}function L(e){let t=h(e);if(!t)return s.defaultLocale;let n=s.provider?.resolveLocale;if(typeof n=="function"){let o=h(n(e));if(o)return o}return t}function ne(e){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function S(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function E(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function oe(e){let t=e&&typeof e.provider=="object"&&e.provider?e.provider:null,n=typeof e?.translate=="function"?e.translate:typeof t?.translate=="function"?t.translate:null,o=typeof e?.loadLocale=="function"?e.loadLocale:typeof t?.loadLocale=="function"?t.loadLocale:null,r=typeof e?.setLocale=="function"?e.setLocale:typeof t?.setLocale=="function"?t.setLocale:null,l=typeof e?.resolveLocale=="function"?e.resolveLocale:typeof t?.resolveLocale=="function"?t.resolveLocale:null;return!n&&!o&&!r&&!l?null:{translate:n,loadLocale:o,setLocale:r,resolveLocale:l}}function re(e){let t=h(e);if(!t)return[s.defaultLocale];let n=te(t);return!n||n===t?[t]:[t,n]}function K(e,t){let n=L(e);s.messagesByLocale.set(n,E(t))}function W(e){typeof e=="string"&&e.length>0&&s.requestedKeys.add(e)}function V(e,t){if(typeof e!="string"||!e.length)return;let n=typeof t=="string"?t:String(t||"");n.length&&(s.valueToKeys.has(n)||s.valueToKeys.set(n,new Set),s.valueToKeys.get(n).add(e))}function w(e){let t=re(e);for(let n of t)if(s.messagesByLocale.has(n))return{locale:n,messages:s.messagesByLocale.get(n)};return null}async function b(e,t="explicit"){let n=L(e),o=w(n);if(o)return o.messages;let r=n;if(s.loadingByLocale.has(r))return s.loadingByLocale.get(r);if(!s.provider)return{};let l=s.provider.loadLocale||s.provider.setLocale||null;if(typeof l!="function")return{};let a={locale:n,defaultLocale:s.defaultLocale,reason:t,loadedLocales:Array.from(s.messagesByLocale.keys()),messages:{...w(n)?.messages||{}},load:t==="set-default"||t==="explicit-load"},c;try{c=l(a)}catch{return{}}if(c&&typeof c.then=="function"){let i=c.then(p=>{let u=E(p);return K(n,u),u}).catch(()=>({})).finally(()=>{s.loadingByLocale.delete(r)});return s.loadingByLocale.set(r,i),i}let f=E(c);return K(n,f),f}function se(e){if(!e||typeof e!="object")return"";let n=typeof Element<"u"&&e instanceof Element||e?.nodeType===1?e:null;if(!n)return"";if(n.hasAttribute?.("lang"))return h(n.getAttribute("lang"));let o=n.closest?.("[lang]");return o&&o.getAttribute?h(o.getAttribute("lang")):""}function x(e={}){if(typeof e?.lang=="string"&&e.lang.trim())return L(e.lang);let t=e?.element||e?.scope||e?.host||e?.contextElement||null,n=se(t);if(n)return L(n);if(typeof document<"u"&&document.documentElement){let o=h(document.documentElement.getAttribute("lang"));if(o)return L(o)}return s.defaultLocale}function le(){let e=new Set([s.defaultLocale]);if(typeof document>"u")return e;let t=h(document.documentElement?.getAttribute?.("lang"));t&&e.add(L(t));let n=document.querySelectorAll?.("[lang]")||[];for(let o of n){let r=h(o.getAttribute("lang"));r&&e.add(L(r))}return e}async function ae(e){for(let t of e)await b(t,"lang-detected")}function ce(e){for(let t of Array.from(s.messagesByLocale.keys()))e.has(t)||s.messagesByLocale.delete(t)}function ie(e){let t=String(e||""),n=(t.match(/^\s*/)||[""])[0],o=(t.match(/\s*$/)||[""])[0],r=n.length,l=t.length-o.length,a=l>=r?t.slice(r,l):"";return{leading:n,core:a,trailing:o}}function D(e){return String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ue(e,t){let n=typeof e=="string"?e:String(e||""),o=typeof t=="string"?t:String(t||""),r=/\{(\d+)\}/g,l=Array.from(n.matchAll(r));if(!l.length)return n===o?[]:null;let a=[],c="^",f=0;for(let u of l){let d=u.index??0;c+=D(n.slice(f,d)),c+="([\\s\\S]*?)",a.push(Number(u[1])),f=d+u[0].length}c+=D(n.slice(f)),c+="$";let i=new RegExp(c).exec(o);if(!i)return null;let p=[];for(let u=1;u<i.length;u+=1){let d=a[u-1],g=i[u];if(Object.prototype.hasOwnProperty.call(p,d)&&p[d]!==g)return null;p[d]=g}return p}function B(e,t){if(typeof e!="string"||!e.length)return[];let n=[e];for(let[,o]of s.messagesByLocale.entries()){let r=o?.[e];typeof r=="string"&&r.length&&n.push(r)}for(let o of n){let r=ue(o,t);if(r)return r}return[]}function F(e){if(!e)return null;let t=s.valueToKeys.get(e);if(t&&t.size>0){for(let o of t)if(s.requestedKeys.has(o))return o}if(s.requestedKeys.has(e))return e;let n=Array.from(s.messagesByLocale.entries());for(let o of s.requestedKeys)for(let[,r]of n)if(r&&r[o]===e)return o;return null}function U(e){if(!e)return null;let t=null;for(let[n,o]of s.valueToKeys.entries()){if(typeof n!="string"||!n.length||n===e)continue;let r=e.indexOf(n);if(r!==-1)for(let l of o){if(!s.requestedKeys.has(l))continue;let a=B(l,n),c={key:l,matchedText:n,start:r,end:r+n.length,values:a};(!t||c.matchedText.length>t.matchedText.length)&&(t=c);break}}return t}async function fe(e){if(!e||e.nodeType!==3)return;let t=e.parentElement||null;if(!t)return;let{leading:n,core:o,trailing:r}=ie(e.nodeValue);if(!o)return;let l=s.textNodeKeyMap.get(e)||null;if((!l||!s.requestedKeys.has(l))&&(l=F(o)),!l){let u=U(o);if(!u)return;let d=x({element:t});await b(d,"text-node");let g=T(u.key,u.values,{element:t},null),m=u.values.length?S(g,A=>u.values[A]):g,_=o.slice(0,u.start)+m+o.slice(u.end),y=`${n}${_}${r}`;y!==e.nodeValue&&(e.nodeValue=y);return}s.textNodeKeyMap.set(e,l);let a=x({element:t});await b(a,"text-node");let c=B(l,o),f=T(l,c,{element:t},null),i=c.length?S(f,u=>c[u]):f,p=`${n}${i}${r}`;p!==e.nodeValue&&(e.nodeValue=p)}async function de(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e||typeof document.createTreeWalker!="function")return;let t=[],n=new Set,o=l=>{!l||n.has(l)||(n.add(l),t.push(l))};o(e);for(let l=0;l<t.length;l+=1){let a=t[l];if(!a||typeof a.querySelectorAll!="function")continue;let c=a.querySelectorAll("*");for(let f of c){let i=f?.shadowRoot;i&&o(i)}}let r=[];for(let l of t){let a=document.createTreeWalker(l,NodeFilter.SHOW_TEXT);for(;a.nextNode();)r.push(a.currentNode)}for(let l of r)await fe(l)}function ge(e){let t=s.attributeKeyMap.get(e);return t||(t=new Map,s.attributeKeyMap.set(e,t)),t}async function pe(e,t){if(!e||typeof e.getAttribute!="function")return;let n=e.getAttribute(t);if(typeof n!="string"||!n.length)return;let o=ge(e),r=o.get(t)||null;if((!r||!s.requestedKeys.has(r))&&(r=F(n)),!r){let i=U(n);if(!i)return;let p=x({element:e});await b(p,"attribute");let u=T(i.key,i.values,{element:e},null),d=i.values.length?S(u,m=>i.values[m]):u,g=n.slice(0,i.start)+d+n.slice(i.end);g!==n&&e.setAttribute(t,g),o.set(t,i.key);return}o.set(t,r);let l=x({element:e});await b(l,"attribute");let a=B(r,n),c=T(r,a,{element:e},null),f=a.length?S(c,i=>a[i]):c;f!==n&&e.setAttribute(t,f)}async function ye(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e)return;let t=[],n=new Set,o=r=>{!r||n.has(r)||(n.add(r),t.push(r))};o(e);for(let r=0;r<t.length;r+=1){let l=t[r];if(!l||typeof l.querySelectorAll!="function")continue;let a=l.querySelectorAll("*");for(let c of a){let f=c?.shadowRoot;f&&o(f)}}for(let r of t){if(!r||typeof r.querySelectorAll!="function")continue;let l=r.querySelectorAll("*");for(let a of l)for(let c of Q)a.hasAttribute(c)&&await pe(a,c)}}async function me(){let e=le();await ae(e),await de(),await ye(),ce(e)}function z(){typeof window>"u"||(s.reconcileTimer&&clearTimeout(s.reconcileTimer),s.reconcileTimer=setTimeout(()=>{s.reconcileTimer=null,me()},16))}function Le(){if(typeof window>"u"||typeof document>"u"||(s.observer&&(s.observer.disconnect(),s.observer=null),typeof MutationObserver!="function"))return;let e=new MutationObserver(()=>{z()});e.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],childList:!0,characterData:!0,subtree:!0}),s.observer=e}function T(e,t=[],n={},o=null){let r=x(n),l=w(r);l||b(r,"msg");let a=w(r)?.messages||{},c=w(s.defaultLocale)?.messages||{},f={key:e,values:t,options:n,locale:r,defaultLocale:s.defaultLocale,messages:a,messagesByLocale:Object.fromEntries(Array.from(s.messagesByLocale.entries())),template:o},i,p=!!l,u=r===s.defaultLocale;typeof s.provider?.translate=="function"&&(i=s.provider.translate(f));let d=null;if(i==null&&(i=a[e]),i==null&&(i=c[e],d=i==null?null:"default"),i==null&&(i=e,d="key"),p&&!u&&d){let m=`${r}::${e}`;s.missingWarnings.has(m)||(s.missingWarnings.add(m),R("warn",`[i18n] Missing translation for locale "${r}" and key "${e}"; using ${d} fallback.`))}let g=typeof i=="string"?i:String(i);if(V(e,g),Array.isArray(t)&&t.length>0){let m=S(g,_=>t[_]);m!==g&&V(e,m)}return g}function M(){let e=w(s.defaultLocale);return{locale:s.defaultLocale,messages:{...e?.messages||{}},loadedLocales:Array.from(s.messagesByLocale.keys()),hasProvider:!!s.provider}}function he(e=null){return s.observer&&(s.observer.disconnect(),s.observer=null),s.reconcileTimer&&(clearTimeout(s.reconcileTimer),s.reconcileTimer=null),s.defaultLocale=I,s.provider=null,s.messagesByLocale.clear(),s.loadingByLocale.clear(),s.requestedKeys.clear(),s.textNodeKeyMap=new WeakMap,s.attributeKeyMap=new WeakMap,s.valueToKeys.clear(),s.missingWarnings.clear(),!e||typeof e!="object"||(typeof e.locale=="string"&&e.locale.trim()&&(s.defaultLocale=L(e.locale)),Object.prototype.hasOwnProperty.call(e,"messages")&&K(s.defaultLocale,e.messages),(Object.prototype.hasOwnProperty.call(e,"provider")||Object.prototype.hasOwnProperty.call(e,"translate")||Object.prototype.hasOwnProperty.call(e,"loadLocale")||Object.prototype.hasOwnProperty.call(e,"setLocale")||Object.prototype.hasOwnProperty.call(e,"resolveLocale"))&&(s.provider=oe(e)),s.provider?.resolveLocale&&(s.defaultLocale=L(s.defaultLocale)),Le(),z()),M()}async function _e(e){let t=L(e);return await b(t,"explicit-load"),{...w(t)?.messages||{}}}async function be(e,{load:t=!0}={}){return s.defaultLocale=L(e),t&&await b(s.defaultLocale,"set-default"),z(),s.defaultLocale}var we=(e,t,n={})=>{let o=ne(e);W(o);let r=T(o,t,n,{strings:e,values:t});return S(r,l=>t[l])},ve=(e,...t)=>({strTag:!0,strings:Array.from(e),values:t,raw:Array.from(e?.raw||[])}),Ae=(e,t={})=>{if(!e)return"";if(ee(e))return we(e.strings,e.values,t);let n=String(e);W(n);let o=T(n,[],t,null);return!t?.element&&!t?.scope&&!t?.host&&!t?.contextElement&&!t?.lang&&z(),o};function v(e){return String(e||"").trim().toLowerCase()}function O(e){return v(e).split("-")[0]||""}function Se(e,t){let n=[],o=new Set,r=l=>{let a=v(l);!a||o.has(a)||(o.add(a),n.push(a))};return Array.isArray(e)&&e.forEach(r),r(t),n}function Te(e={}){let t={};return!e||typeof e!="object"||Object.entries(e).forEach(([n,o])=>{let r=v(n);if(!r)return;let l=[],a=new Set;Array.isArray(o)&&o.forEach(c=>{if(typeof c!="string")return;let f=c.trim();if(!f)return;let i=f.toLowerCase();a.has(i)||(a.add(i),l.push(f))}),t[r]=l}),t}function xe(e,t,n){let o=Array.isArray(t?.[e])?t[e]:[];for(let r of o){let l=v(r);if(n.has(l))return l}return""}function ze({aliases:e,localeSet:t}){let n=new Map;for(let o of t)n.set(o,o);for(let o of Object.keys(e||{})){let r=xe(o,e,t);if(!r)throw new Error(`[i18n] Locale alias "${o}" does not map to any configured locale.`);n.set(o,r)}return n}function Ee(e,{defaultLocale:t,aliasLookup:n}){let o=v(e);if(!o)return t;let r=n.get(o);if(r)return r;let l=O(o),a=l?n.get(l):"";if(a)return a;throw new Error(`[i18n] Locale alias "${e}" is not configured. Add an alias entry for "${l||o}".`)}function Ke(e){return!e||typeof e!="object"||Array.isArray(e)?{}:e}function Me(e){let t=typeof e=="string"?e.trim():"";return t?t==="/"?"":t.replace(/\/+$/,""):"/assets/locales"}function Be({locale:e,effectiveLocale:t,defaultLocale:n,aliases:o}){let r=[],l=new Set,a=u=>{if(typeof u!="string")return;let d=u.trim();if(!d)return;let g=d.toLowerCase();l.has(g)||(l.add(g),r.push(d))},c=u=>{let d=Array.isArray(o?.[u])?o[u]:[];if(!d.length)return;[...d].sort((m,_)=>{let y=String(m||"").includes("-"),A=String(_||"").includes("-");return y===A?0:y?-1:1}).forEach(a)},f=v(e),i=O(f),p=O(t);return c(f),c(i),c(t),c(p),a(e),a(f),a(i),a(t),a(p),t!==n&&(c(n),a(n)),r}function Oe(e={}){let t=v(e?.locale||"en")||"en",n=Se(e?.locales,t),o=new Set(n),r=e?.loadDefaultLocale===!0,l=Te(e?.aliases||{}),a=ze({aliases:l,localeSet:o}),c=e?.cache instanceof Map?e.cache:new Map,f=Me(e?.basePath),i=e?.requestInit&&typeof e.requestInit=="object"?e.requestInit:{},p=d=>Ee(d,{defaultLocale:t,aliasLookup:a}),u=async({locale:d})=>{let g=p(d);if(c.has(g))return c.get(g)||{};if(g===t&&!r){let y={};return c.set(g,y),y}if(typeof fetch!="function"){let y={};return c.set(g,y),y}let m=Be({locale:d,effectiveLocale:g,defaultLocale:t,aliases:l});for(let y of m)try{let A=f?`${f}/${y}.json`:`/${y}.json`,q=await fetch(A,{headers:{Accept:"application/json"},...i});if(!q.ok)continue;let j=Ke(await q.json());return c.set(g,j),j}catch{}let _={};return c.set(g,_),_};return{locale:t,locales:[...n],provider:{locales:[...n],resolveLocale:p,loadLocale:u}}}export{he as configureLocalization,Oe as createJSONLocalization,M as getLocalizationState,_e as loadLocale,Ae as msg,be as setLocale,ve as str};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var U=new Set(["log","warn","error","debug","info"]),G="__PURE_DS_PDS_SINGLETON__",j=null,P=null;function C(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[G];if(t&&typeof t=="object")return t}catch{return null}return null}function N(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function H(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return U.has(t)?t:"log"}function J(){if(typeof P=="function")try{let t=N(P());if(t)return t}catch{}let e=C();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function X(){if(typeof j=="function")try{let t=j();if(typeof t=="function")return t}catch{}let e=C();return typeof e?.logHandler=="function"?e.logHandler:null}function $(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Y(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function k(e="log",t,...n){let o=H(e),r=J(),l=X();if(l)try{l.call(r?.thisArg,o,t,...n);return}catch(c){$("error","Custom log handler failed:",c)}Y(o,r)&&$(o,t,...n)}var D="en",s={defaultLocale:D,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},Z=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],Q=e=>!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e;function h(e){return String(e||"").trim().toLowerCase()}function ee(e){let t=h(e);return t?t.split("-")[0]||t:""}function L(e){let t=h(e);if(!t)return s.defaultLocale;let n=s.provider?.resolveLocale;if(typeof n=="function"){let o=h(n(e));if(o)return o}return t}function te(e){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function S(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function E(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function ne(e){let t=e&&typeof e.provider=="object"&&e.provider?e.provider:null,n=typeof e?.translate=="function"?e.translate:typeof t?.translate=="function"?t.translate:null,o=typeof e?.loadLocale=="function"?e.loadLocale:typeof t?.loadLocale=="function"?t.loadLocale:null,r=typeof e?.setLocale=="function"?e.setLocale:typeof t?.setLocale=="function"?t.setLocale:null,l=typeof e?.resolveLocale=="function"?e.resolveLocale:typeof t?.resolveLocale=="function"?t.resolveLocale:null;return!n&&!o&&!r&&!l?null:{translate:n,loadLocale:o,setLocale:r,resolveLocale:l}}function oe(e){let t=h(e);if(!t)return[s.defaultLocale];let n=ee(t);return!n||n===t?[t]:[t,n]}function K(e,t){let n=L(e);s.messagesByLocale.set(n,E(t))}function I(e){typeof e=="string"&&e.length>0&&s.requestedKeys.add(e)}function R(e,t){if(typeof e!="string"||!e.length)return;let n=typeof t=="string"?t:String(t||"");n.length&&(s.valueToKeys.has(n)||s.valueToKeys.set(n,new Set),s.valueToKeys.get(n).add(e))}function w(e){let t=oe(e);for(let n of t)if(s.messagesByLocale.has(n))return{locale:n,messages:s.messagesByLocale.get(n)};return null}async function b(e,t="explicit"){let n=L(e),o=w(n);if(o)return o.messages;let r=n;if(s.loadingByLocale.has(r))return s.loadingByLocale.get(r);if(!s.provider)return{};let l=s.provider.loadLocale||s.provider.setLocale||null;if(typeof l!="function")return{};let c={locale:n,defaultLocale:s.defaultLocale,reason:t,loadedLocales:Array.from(s.messagesByLocale.keys()),messages:{...w(n)?.messages||{}},load:t==="set-default"||t==="explicit-load"},i;try{i=l(c)}catch{return{}}if(i&&typeof i.then=="function"){let a=i.then(p=>{let u=E(p);return K(n,u),u}).catch(()=>({})).finally(()=>{s.loadingByLocale.delete(r)});return s.loadingByLocale.set(r,a),a}let d=E(i);return K(n,d),d}function re(e){if(!e||typeof e!="object")return"";let n=typeof Element<"u"&&e instanceof Element||e?.nodeType===1?e:null;if(!n)return"";if(n.hasAttribute?.("lang"))return h(n.getAttribute("lang"));let o=n.closest?.("[lang]");return o&&o.getAttribute?h(o.getAttribute("lang")):""}function x(e={}){if(typeof e?.lang=="string"&&e.lang.trim())return L(e.lang);let t=e?.element||e?.scope||e?.host||e?.contextElement||null,n=re(t);if(n)return L(n);if(typeof document<"u"&&document.documentElement){let o=h(document.documentElement.getAttribute("lang"));if(o)return L(o)}return s.defaultLocale}function se(){let e=new Set([s.defaultLocale]);if(typeof document>"u")return e;let t=h(document.documentElement?.getAttribute?.("lang"));t&&e.add(L(t));let n=document.querySelectorAll?.("[lang]")||[];for(let o of n){let r=h(o.getAttribute("lang"));r&&e.add(L(r))}return e}async function le(e){for(let t of e)await b(t,"lang-detected")}function ce(e){for(let t of Array.from(s.messagesByLocale.keys()))e.has(t)||s.messagesByLocale.delete(t)}function ae(e){let t=String(e||""),n=(t.match(/^\s*/)||[""])[0],o=(t.match(/\s*$/)||[""])[0],r=n.length,l=t.length-o.length,c=l>=r?t.slice(r,l):"";return{leading:n,core:c,trailing:o}}function V(e){return String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ie(e,t){let n=typeof e=="string"?e:String(e||""),o=typeof t=="string"?t:String(t||""),r=/\{(\d+)\}/g,l=Array.from(n.matchAll(r));if(!l.length)return n===o?[]:null;let c=[],i="^",d=0;for(let u of l){let f=u.index??0;i+=V(n.slice(d,f)),i+="([\\s\\S]*?)",c.push(Number(u[1])),d=f+u[0].length}i+=V(n.slice(d)),i+="$";let a=new RegExp(i).exec(o);if(!a)return null;let p=[];for(let u=1;u<a.length;u+=1){let f=c[u-1],g=a[u];if(Object.prototype.hasOwnProperty.call(p,f)&&p[f]!==g)return null;p[f]=g}return p}function B(e,t){if(typeof e!="string"||!e.length)return[];let n=[e];for(let[,o]of s.messagesByLocale.entries()){let r=o?.[e];typeof r=="string"&&r.length&&n.push(r)}for(let o of n){let r=ie(o,t);if(r)return r}return[]}function W(e){if(!e)return null;let t=s.valueToKeys.get(e);if(t&&t.size>0){for(let o of t)if(s.requestedKeys.has(o))return o}if(s.requestedKeys.has(e))return e;let n=Array.from(s.messagesByLocale.entries());for(let o of s.requestedKeys)for(let[,r]of n)if(r&&r[o]===e)return o;return null}function F(e){if(!e)return null;let t=null;for(let[n,o]of s.valueToKeys.entries()){if(typeof n!="string"||!n.length||n===e)continue;let r=e.indexOf(n);if(r!==-1)for(let l of o){if(!s.requestedKeys.has(l))continue;let c=B(l,n),i={key:l,matchedText:n,start:r,end:r+n.length,values:c};(!t||i.matchedText.length>t.matchedText.length)&&(t=i);break}}return t}async function ue(e){if(!e||e.nodeType!==3)return;let t=e.parentElement||null;if(!t)return;let{leading:n,core:o,trailing:r}=ae(e.nodeValue);if(!o)return;let l=s.textNodeKeyMap.get(e)||null;if((!l||!s.requestedKeys.has(l))&&(l=W(o)),!l){let u=F(o);if(!u)return;let f=x({element:t});await b(f,"text-node");let g=T(u.key,u.values,{element:t},null),y=u.values.length?S(g,A=>u.values[A]):g,m=o.slice(0,u.start)+y+o.slice(u.end),_=`${n}${m}${r}`;_!==e.nodeValue&&(e.nodeValue=_);return}s.textNodeKeyMap.set(e,l);let c=x({element:t});await b(c,"text-node");let i=B(l,o),d=T(l,i,{element:t},null),a=i.length?S(d,u=>i[u]):d,p=`${n}${a}${r}`;p!==e.nodeValue&&(e.nodeValue=p)}async function fe(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e||typeof document.createTreeWalker!="function")return;let t=[],n=new Set,o=l=>{!l||n.has(l)||(n.add(l),t.push(l))};o(e);for(let l=0;l<t.length;l+=1){let c=t[l];if(!c||typeof c.querySelectorAll!="function")continue;let i=c.querySelectorAll("*");for(let d of i){let a=d?.shadowRoot;a&&o(a)}}let r=[];for(let l of t){let c=document.createTreeWalker(l,NodeFilter.SHOW_TEXT);for(;c.nextNode();)r.push(c.currentNode)}for(let l of r)await ue(l)}function de(e){let t=s.attributeKeyMap.get(e);return t||(t=new Map,s.attributeKeyMap.set(e,t)),t}async function ge(e,t){if(!e||typeof e.getAttribute!="function")return;let n=e.getAttribute(t);if(typeof n!="string"||!n.length)return;let o=de(e),r=o.get(t)||null;if((!r||!s.requestedKeys.has(r))&&(r=W(n)),!r){let a=F(n);if(!a)return;let p=x({element:e});await b(p,"attribute");let u=T(a.key,a.values,{element:e},null),f=a.values.length?S(u,y=>a.values[y]):u,g=n.slice(0,a.start)+f+n.slice(a.end);g!==n&&e.setAttribute(t,g),o.set(t,a.key);return}o.set(t,r);let l=x({element:e});await b(l,"attribute");let c=B(r,n),i=T(r,c,{element:e},null),d=c.length?S(i,a=>c[a]):i;d!==n&&e.setAttribute(t,d)}async function pe(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e)return;let t=[],n=new Set,o=r=>{!r||n.has(r)||(n.add(r),t.push(r))};o(e);for(let r=0;r<t.length;r+=1){let l=t[r];if(!l||typeof l.querySelectorAll!="function")continue;let c=l.querySelectorAll("*");for(let i of c){let d=i?.shadowRoot;d&&o(d)}}for(let r of t){if(!r||typeof r.querySelectorAll!="function")continue;let l=r.querySelectorAll("*");for(let c of l)for(let i of Z)c.hasAttribute(i)&&await ge(c,i)}}async function ye(){let e=se();await le(e),await fe(),await pe(),ce(e)}function z(){typeof window>"u"||(s.reconcileTimer&&clearTimeout(s.reconcileTimer),s.reconcileTimer=setTimeout(()=>{s.reconcileTimer=null,ye()},16))}function me(){if(typeof window>"u"||typeof document>"u"||(s.observer&&(s.observer.disconnect(),s.observer=null),typeof MutationObserver!="function"))return;let e=new MutationObserver(()=>{z()});e.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],childList:!0,characterData:!0,subtree:!0}),s.observer=e}function T(e,t=[],n={},o=null){let r=x(n),l=w(r);l||b(r,"msg");let c=w(r)?.messages||{},i=w(s.defaultLocale)?.messages||{},d={key:e,values:t,options:n,locale:r,defaultLocale:s.defaultLocale,messages:c,messagesByLocale:Object.fromEntries(Array.from(s.messagesByLocale.entries())),template:o},a,p=!!l,u=r===s.defaultLocale;typeof s.provider?.translate=="function"&&(a=s.provider.translate(d));let f=null;if(a==null&&(a=c[e]),a==null&&(a=i[e],f=a==null?null:"default"),a==null&&(a=e,f="key"),p&&!u&&f){let y=`${r}::${e}`;s.missingWarnings.has(y)||(s.missingWarnings.add(y),k("warn",`[i18n] Missing translation for locale "${r}" and key "${e}"; using ${f} fallback.`))}let g=typeof a=="string"?a:String(a);if(R(e,g),Array.isArray(t)&&t.length>0){let y=S(g,m=>t[m]);y!==g&&R(e,y)}return g}function M(){let e=w(s.defaultLocale);return{locale:s.defaultLocale,messages:{...e?.messages||{}},loadedLocales:Array.from(s.messagesByLocale.keys()),hasProvider:!!s.provider}}function Le(e=null){return s.observer&&(s.observer.disconnect(),s.observer=null),s.reconcileTimer&&(clearTimeout(s.reconcileTimer),s.reconcileTimer=null),s.defaultLocale=D,s.provider=null,s.messagesByLocale.clear(),s.loadingByLocale.clear(),s.requestedKeys.clear(),s.textNodeKeyMap=new WeakMap,s.attributeKeyMap=new WeakMap,s.valueToKeys.clear(),s.missingWarnings.clear(),!e||typeof e!="object"||(typeof e.locale=="string"&&e.locale.trim()&&(s.defaultLocale=L(e.locale)),Object.prototype.hasOwnProperty.call(e,"messages")&&K(s.defaultLocale,e.messages),(Object.prototype.hasOwnProperty.call(e,"provider")||Object.prototype.hasOwnProperty.call(e,"translate")||Object.prototype.hasOwnProperty.call(e,"loadLocale")||Object.prototype.hasOwnProperty.call(e,"setLocale")||Object.prototype.hasOwnProperty.call(e,"resolveLocale"))&&(s.provider=ne(e)),s.provider?.resolveLocale&&(s.defaultLocale=L(s.defaultLocale)),me(),z()),M()}async function he(e){let t=L(e);return await b(t,"explicit-load"),{...w(t)?.messages||{}}}async function _e(e,{load:t=!0}={}){return s.defaultLocale=L(e),t&&await b(s.defaultLocale,"set-default"),z(),s.defaultLocale}var be=(e,t,n={})=>{let o=te(e);I(o);let r=T(o,t,n,{strings:e,values:t});return S(r,l=>t[l])},we=(e,...t)=>({strTag:!0,strings:Array.from(e),values:t,raw:Array.from(e?.raw||[])}),ve=(e,t={})=>{if(!e)return"";if(Q(e))return be(e.strings,e.values,t);let n=String(e);I(n);let o=T(n,[],t,null);return!t?.element&&!t?.scope&&!t?.host&&!t?.contextElement&&!t?.lang&&z(),o};function v(e){return String(e||"").trim().toLowerCase()}function O(e){return v(e).split("-")[0]||""}function Ae(e,t){let n=[],o=new Set,r=l=>{let c=v(l);!c||o.has(c)||(o.add(c),n.push(c))};return Array.isArray(e)&&e.forEach(r),r(t),n}function Se(e={}){let t={};return!e||typeof e!="object"||Object.entries(e).forEach(([n,o])=>{let r=v(n);if(!r)return;let l=[],c=new Set;Array.isArray(o)&&o.forEach(i=>{if(typeof i!="string")return;let d=i.trim();if(!d)return;let a=d.toLowerCase();c.has(a)||(c.add(a),l.push(d))}),t[r]=l}),t}function Te(e,t,n){let o=Array.isArray(t?.[e])?t[e]:[];for(let r of o){let l=v(r);if(n.has(l))return l}return""}function xe({aliases:e,localeSet:t}){let n=new Map;for(let o of t)n.set(o,o);for(let o of Object.keys(e||{})){let r=Te(o,e,t);if(!r)throw new Error(`[i18n] Locale alias "${o}" does not map to any configured locale.`);n.set(o,r)}return n}function ze(e,{defaultLocale:t,aliasLookup:n}){let o=v(e);if(!o)return t;let r=n.get(o);if(r)return r;let l=O(o),c=l?n.get(l):"";if(c)return c;throw new Error(`[i18n] Locale alias "${e}" is not configured. Add an alias entry for "${l||o}".`)}function Ee(e){return!e||typeof e!="object"||Array.isArray(e)?{}:e}function Ke(e){let t=typeof e=="string"?e.trim():"";return t?t==="/"?"":t.replace(/\/+$/,""):"/assets/locales"}function Me({locale:e,effectiveLocale:t,defaultLocale:n,aliases:o}){let r=[],l=new Set,c=u=>{if(typeof u!="string")return;let f=u.trim();if(!f)return;let g=f.toLowerCase();l.has(g)||(l.add(g),r.push(f))},i=u=>{let f=Array.isArray(o?.[u])?o[u]:[];if(!f.length)return;[...f].sort((y,m)=>{let _=String(y||"").includes("-"),A=String(m||"").includes("-");return _===A?0:_?-1:1}).forEach(c)},d=v(e),a=O(d),p=O(t);return i(d),i(a),i(t),i(p),c(e),c(d),c(a),c(t),c(p),t!==n&&(i(n),c(n)),r}function Be(e={}){let t=v(e?.locale||"en")||"en",n=Ae(e?.locales,t),o=new Set(n),r=Se(e?.aliases||{}),l=xe({aliases:r,localeSet:o}),c=e?.cache instanceof Map?e.cache:new Map,i=Ke(e?.basePath),d=e?.requestInit&&typeof e.requestInit=="object"?e.requestInit:{},a=u=>ze(u,{defaultLocale:t,aliasLookup:l}),p=async({locale:u})=>{let f=a(u);if(c.has(f))return c.get(f)||{};if(f===t){let m={};return c.set(f,m),m}if(typeof fetch!="function"){let m={};return c.set(f,m),m}let g=Me({locale:u,effectiveLocale:f,defaultLocale:t,aliases:r});for(let m of g)try{let _=i?`${i}/${m}.json`:`/${m}.json`,A=await fetch(_,{headers:{Accept:"application/json"},...d});if(!A.ok)continue;let q=Ee(await A.json());return c.set(f,q),q}catch{}let y={};return c.set(f,y),y};return{locale:t,locales:[...n],provider:{locales:[...n],resolveLocale:a,loadLocale:p}}}export{Le as configureLocalization,Be as createJSONLocalization,M as getLocalizationState,he as loadLocale,ve as msg,_e as setLocale,we as str};
|
|
1
|
+
var G=new Set(["log","warn","error","debug","info"]),N="__PURE_DS_PDS_SINGLETON__",P=null,$=null;function k(){try{let t=(typeof globalThis<"u"?globalThis:window)?.[N];if(t&&typeof t=="object")return t}catch{return null}return null}function H(e){return!e||typeof e!="object"?null:{mode:e.mode==="live"||e.mode==="static"?e.mode:null,debug:e.debug===!0,thisArg:e.thisArg}}function J(e){if(typeof e!="string")return"log";let t=e.toLowerCase();return G.has(t)?t:"log"}function X(){if(typeof $=="function")try{let t=H($());if(t)return t}catch{}let e=k();if(e){let t=e?.mode||e?.compiled?.mode||(e?.registry?.isLive?"live":"static"),n=(e?.debug||e?.currentConfig?.debug||e?.currentConfig?.design?.debug||e?.compiled?.debug||e?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:n,thisArg:e}}return{mode:null,debug:!1}}function Y(){if(typeof P=="function")try{let t=P();if(typeof t=="function")return t}catch{}let e=k();return typeof e?.logHandler=="function"?e.logHandler:null}function C(e,t,...n){if(typeof console>"u")return;let o=typeof console[e]=="function"?console[e].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(n.length>0?o(t,...n):o(t))}function Z(e,t){let n=t?.debug===!0;return!(t?.mode==="static"&&!n||!n&&e!=="error"&&e!=="warn")}function R(e="log",t,...n){let o=J(e),r=X(),l=Y();if(l)try{l.call(r?.thisArg,o,t,...n);return}catch(a){C("error","Custom log handler failed:",a)}Z(o,r)&&C(o,t,...n)}var I="en",s={defaultLocale:I,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},Q=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],ee=e=>!!e&&typeof e!="string"&&typeof e=="object"&&"strTag"in e;function h(e){return String(e||"").trim().toLowerCase()}function te(e){let t=h(e);return t?t.split("-")[0]||t:""}function L(e){let t=h(e);if(!t)return s.defaultLocale;let n=s.provider?.resolveLocale;if(typeof n=="function"){let o=h(n(e));if(o)return o}return t}function ne(e){let t="";for(let n=0;n<=e.length-1;n+=1)t+=e[n],n<e.length-1&&(t+=`{${n}}`);return t}function S(e,t){return String(e).replace(/\{(\d+)\}/g,(n,o)=>t(Number(o)))}function E(e){if(!e||typeof e!="object")return{};let t={};for(let[n,o]of Object.entries(e)){if(typeof o=="string"){t[n]=o;continue}o&&typeof o=="object"&&typeof o.content=="string"&&(t[n]=o.content)}return t}function oe(e){let t=e&&typeof e.provider=="object"&&e.provider?e.provider:null,n=typeof e?.translate=="function"?e.translate:typeof t?.translate=="function"?t.translate:null,o=typeof e?.loadLocale=="function"?e.loadLocale:typeof t?.loadLocale=="function"?t.loadLocale:null,r=typeof e?.setLocale=="function"?e.setLocale:typeof t?.setLocale=="function"?t.setLocale:null,l=typeof e?.resolveLocale=="function"?e.resolveLocale:typeof t?.resolveLocale=="function"?t.resolveLocale:null;return!n&&!o&&!r&&!l?null:{translate:n,loadLocale:o,setLocale:r,resolveLocale:l}}function re(e){let t=h(e);if(!t)return[s.defaultLocale];let n=te(t);return!n||n===t?[t]:[t,n]}function K(e,t){let n=L(e);s.messagesByLocale.set(n,E(t))}function W(e){typeof e=="string"&&e.length>0&&s.requestedKeys.add(e)}function V(e,t){if(typeof e!="string"||!e.length)return;let n=typeof t=="string"?t:String(t||"");n.length&&(s.valueToKeys.has(n)||s.valueToKeys.set(n,new Set),s.valueToKeys.get(n).add(e))}function w(e){let t=re(e);for(let n of t)if(s.messagesByLocale.has(n))return{locale:n,messages:s.messagesByLocale.get(n)};return null}async function b(e,t="explicit"){let n=L(e),o=w(n);if(o)return o.messages;let r=n;if(s.loadingByLocale.has(r))return s.loadingByLocale.get(r);if(!s.provider)return{};let l=s.provider.loadLocale||s.provider.setLocale||null;if(typeof l!="function")return{};let a={locale:n,defaultLocale:s.defaultLocale,reason:t,loadedLocales:Array.from(s.messagesByLocale.keys()),messages:{...w(n)?.messages||{}},load:t==="set-default"||t==="explicit-load"},c;try{c=l(a)}catch{return{}}if(c&&typeof c.then=="function"){let i=c.then(p=>{let u=E(p);return K(n,u),u}).catch(()=>({})).finally(()=>{s.loadingByLocale.delete(r)});return s.loadingByLocale.set(r,i),i}let f=E(c);return K(n,f),f}function se(e){if(!e||typeof e!="object")return"";let n=typeof Element<"u"&&e instanceof Element||e?.nodeType===1?e:null;if(!n)return"";if(n.hasAttribute?.("lang"))return h(n.getAttribute("lang"));let o=n.closest?.("[lang]");return o&&o.getAttribute?h(o.getAttribute("lang")):""}function x(e={}){if(typeof e?.lang=="string"&&e.lang.trim())return L(e.lang);let t=e?.element||e?.scope||e?.host||e?.contextElement||null,n=se(t);if(n)return L(n);if(typeof document<"u"&&document.documentElement){let o=h(document.documentElement.getAttribute("lang"));if(o)return L(o)}return s.defaultLocale}function le(){let e=new Set([s.defaultLocale]);if(typeof document>"u")return e;let t=h(document.documentElement?.getAttribute?.("lang"));t&&e.add(L(t));let n=document.querySelectorAll?.("[lang]")||[];for(let o of n){let r=h(o.getAttribute("lang"));r&&e.add(L(r))}return e}async function ae(e){for(let t of e)await b(t,"lang-detected")}function ce(e){for(let t of Array.from(s.messagesByLocale.keys()))e.has(t)||s.messagesByLocale.delete(t)}function ie(e){let t=String(e||""),n=(t.match(/^\s*/)||[""])[0],o=(t.match(/\s*$/)||[""])[0],r=n.length,l=t.length-o.length,a=l>=r?t.slice(r,l):"";return{leading:n,core:a,trailing:o}}function D(e){return String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ue(e,t){let n=typeof e=="string"?e:String(e||""),o=typeof t=="string"?t:String(t||""),r=/\{(\d+)\}/g,l=Array.from(n.matchAll(r));if(!l.length)return n===o?[]:null;let a=[],c="^",f=0;for(let u of l){let d=u.index??0;c+=D(n.slice(f,d)),c+="([\\s\\S]*?)",a.push(Number(u[1])),f=d+u[0].length}c+=D(n.slice(f)),c+="$";let i=new RegExp(c).exec(o);if(!i)return null;let p=[];for(let u=1;u<i.length;u+=1){let d=a[u-1],g=i[u];if(Object.prototype.hasOwnProperty.call(p,d)&&p[d]!==g)return null;p[d]=g}return p}function B(e,t){if(typeof e!="string"||!e.length)return[];let n=[e];for(let[,o]of s.messagesByLocale.entries()){let r=o?.[e];typeof r=="string"&&r.length&&n.push(r)}for(let o of n){let r=ue(o,t);if(r)return r}return[]}function F(e){if(!e)return null;let t=s.valueToKeys.get(e);if(t&&t.size>0){for(let o of t)if(s.requestedKeys.has(o))return o}if(s.requestedKeys.has(e))return e;let n=Array.from(s.messagesByLocale.entries());for(let o of s.requestedKeys)for(let[,r]of n)if(r&&r[o]===e)return o;return null}function U(e){if(!e)return null;let t=null;for(let[n,o]of s.valueToKeys.entries()){if(typeof n!="string"||!n.length||n===e)continue;let r=e.indexOf(n);if(r!==-1)for(let l of o){if(!s.requestedKeys.has(l))continue;let a=B(l,n),c={key:l,matchedText:n,start:r,end:r+n.length,values:a};(!t||c.matchedText.length>t.matchedText.length)&&(t=c);break}}return t}async function fe(e){if(!e||e.nodeType!==3)return;let t=e.parentElement||null;if(!t)return;let{leading:n,core:o,trailing:r}=ie(e.nodeValue);if(!o)return;let l=s.textNodeKeyMap.get(e)||null;if((!l||!s.requestedKeys.has(l))&&(l=F(o)),!l){let u=U(o);if(!u)return;let d=x({element:t});await b(d,"text-node");let g=T(u.key,u.values,{element:t},null),m=u.values.length?S(g,A=>u.values[A]):g,_=o.slice(0,u.start)+m+o.slice(u.end),y=`${n}${_}${r}`;y!==e.nodeValue&&(e.nodeValue=y);return}s.textNodeKeyMap.set(e,l);let a=x({element:t});await b(a,"text-node");let c=B(l,o),f=T(l,c,{element:t},null),i=c.length?S(f,u=>c[u]):f,p=`${n}${i}${r}`;p!==e.nodeValue&&(e.nodeValue=p)}async function de(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e||typeof document.createTreeWalker!="function")return;let t=[],n=new Set,o=l=>{!l||n.has(l)||(n.add(l),t.push(l))};o(e);for(let l=0;l<t.length;l+=1){let a=t[l];if(!a||typeof a.querySelectorAll!="function")continue;let c=a.querySelectorAll("*");for(let f of c){let i=f?.shadowRoot;i&&o(i)}}let r=[];for(let l of t){let a=document.createTreeWalker(l,NodeFilter.SHOW_TEXT);for(;a.nextNode();)r.push(a.currentNode)}for(let l of r)await fe(l)}function ge(e){let t=s.attributeKeyMap.get(e);return t||(t=new Map,s.attributeKeyMap.set(e,t)),t}async function pe(e,t){if(!e||typeof e.getAttribute!="function")return;let n=e.getAttribute(t);if(typeof n!="string"||!n.length)return;let o=ge(e),r=o.get(t)||null;if((!r||!s.requestedKeys.has(r))&&(r=F(n)),!r){let i=U(n);if(!i)return;let p=x({element:e});await b(p,"attribute");let u=T(i.key,i.values,{element:e},null),d=i.values.length?S(u,m=>i.values[m]):u,g=n.slice(0,i.start)+d+n.slice(i.end);g!==n&&e.setAttribute(t,g),o.set(t,i.key);return}o.set(t,r);let l=x({element:e});await b(l,"attribute");let a=B(r,n),c=T(r,a,{element:e},null),f=a.length?S(c,i=>a[i]):c;f!==n&&e.setAttribute(t,f)}async function ye(){if(typeof document>"u"||s.requestedKeys.size===0)return;let e=document.body||document.documentElement;if(!e)return;let t=[],n=new Set,o=r=>{!r||n.has(r)||(n.add(r),t.push(r))};o(e);for(let r=0;r<t.length;r+=1){let l=t[r];if(!l||typeof l.querySelectorAll!="function")continue;let a=l.querySelectorAll("*");for(let c of a){let f=c?.shadowRoot;f&&o(f)}}for(let r of t){if(!r||typeof r.querySelectorAll!="function")continue;let l=r.querySelectorAll("*");for(let a of l)for(let c of Q)a.hasAttribute(c)&&await pe(a,c)}}async function me(){let e=le();await ae(e),await de(),await ye(),ce(e)}function z(){typeof window>"u"||(s.reconcileTimer&&clearTimeout(s.reconcileTimer),s.reconcileTimer=setTimeout(()=>{s.reconcileTimer=null,me()},16))}function Le(){if(typeof window>"u"||typeof document>"u"||(s.observer&&(s.observer.disconnect(),s.observer=null),typeof MutationObserver!="function"))return;let e=new MutationObserver(()=>{z()});e.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],childList:!0,characterData:!0,subtree:!0}),s.observer=e}function T(e,t=[],n={},o=null){let r=x(n),l=w(r);l||b(r,"msg");let a=w(r)?.messages||{},c=w(s.defaultLocale)?.messages||{},f={key:e,values:t,options:n,locale:r,defaultLocale:s.defaultLocale,messages:a,messagesByLocale:Object.fromEntries(Array.from(s.messagesByLocale.entries())),template:o},i,p=!!l,u=r===s.defaultLocale;typeof s.provider?.translate=="function"&&(i=s.provider.translate(f));let d=null;if(i==null&&(i=a[e]),i==null&&(i=c[e],d=i==null?null:"default"),i==null&&(i=e,d="key"),p&&!u&&d){let m=`${r}::${e}`;s.missingWarnings.has(m)||(s.missingWarnings.add(m),R("warn",`[i18n] Missing translation for locale "${r}" and key "${e}"; using ${d} fallback.`))}let g=typeof i=="string"?i:String(i);if(V(e,g),Array.isArray(t)&&t.length>0){let m=S(g,_=>t[_]);m!==g&&V(e,m)}return g}function M(){let e=w(s.defaultLocale);return{locale:s.defaultLocale,messages:{...e?.messages||{}},loadedLocales:Array.from(s.messagesByLocale.keys()),hasProvider:!!s.provider}}function he(e=null){return s.observer&&(s.observer.disconnect(),s.observer=null),s.reconcileTimer&&(clearTimeout(s.reconcileTimer),s.reconcileTimer=null),s.defaultLocale=I,s.provider=null,s.messagesByLocale.clear(),s.loadingByLocale.clear(),s.requestedKeys.clear(),s.textNodeKeyMap=new WeakMap,s.attributeKeyMap=new WeakMap,s.valueToKeys.clear(),s.missingWarnings.clear(),!e||typeof e!="object"||(typeof e.locale=="string"&&e.locale.trim()&&(s.defaultLocale=L(e.locale)),Object.prototype.hasOwnProperty.call(e,"messages")&&K(s.defaultLocale,e.messages),(Object.prototype.hasOwnProperty.call(e,"provider")||Object.prototype.hasOwnProperty.call(e,"translate")||Object.prototype.hasOwnProperty.call(e,"loadLocale")||Object.prototype.hasOwnProperty.call(e,"setLocale")||Object.prototype.hasOwnProperty.call(e,"resolveLocale"))&&(s.provider=oe(e)),s.provider?.resolveLocale&&(s.defaultLocale=L(s.defaultLocale)),Le(),z()),M()}async function _e(e){let t=L(e);return await b(t,"explicit-load"),{...w(t)?.messages||{}}}async function be(e,{load:t=!0}={}){return s.defaultLocale=L(e),t&&await b(s.defaultLocale,"set-default"),z(),s.defaultLocale}var we=(e,t,n={})=>{let o=ne(e);W(o);let r=T(o,t,n,{strings:e,values:t});return S(r,l=>t[l])},ve=(e,...t)=>({strTag:!0,strings:Array.from(e),values:t,raw:Array.from(e?.raw||[])}),Ae=(e,t={})=>{if(!e)return"";if(ee(e))return we(e.strings,e.values,t);let n=String(e);W(n);let o=T(n,[],t,null);return!t?.element&&!t?.scope&&!t?.host&&!t?.contextElement&&!t?.lang&&z(),o};function v(e){return String(e||"").trim().toLowerCase()}function O(e){return v(e).split("-")[0]||""}function Se(e,t){let n=[],o=new Set,r=l=>{let a=v(l);!a||o.has(a)||(o.add(a),n.push(a))};return Array.isArray(e)&&e.forEach(r),r(t),n}function Te(e={}){let t={};return!e||typeof e!="object"||Object.entries(e).forEach(([n,o])=>{let r=v(n);if(!r)return;let l=[],a=new Set;Array.isArray(o)&&o.forEach(c=>{if(typeof c!="string")return;let f=c.trim();if(!f)return;let i=f.toLowerCase();a.has(i)||(a.add(i),l.push(f))}),t[r]=l}),t}function xe(e,t,n){let o=Array.isArray(t?.[e])?t[e]:[];for(let r of o){let l=v(r);if(n.has(l))return l}return""}function ze({aliases:e,localeSet:t}){let n=new Map;for(let o of t)n.set(o,o);for(let o of Object.keys(e||{})){let r=xe(o,e,t);if(!r)throw new Error(`[i18n] Locale alias "${o}" does not map to any configured locale.`);n.set(o,r)}return n}function Ee(e,{defaultLocale:t,aliasLookup:n}){let o=v(e);if(!o)return t;let r=n.get(o);if(r)return r;let l=O(o),a=l?n.get(l):"";if(a)return a;throw new Error(`[i18n] Locale alias "${e}" is not configured. Add an alias entry for "${l||o}".`)}function Ke(e){return!e||typeof e!="object"||Array.isArray(e)?{}:e}function Me(e){let t=typeof e=="string"?e.trim():"";return t?t==="/"?"":t.replace(/\/+$/,""):"/assets/locales"}function Be({locale:e,effectiveLocale:t,defaultLocale:n,aliases:o}){let r=[],l=new Set,a=u=>{if(typeof u!="string")return;let d=u.trim();if(!d)return;let g=d.toLowerCase();l.has(g)||(l.add(g),r.push(d))},c=u=>{let d=Array.isArray(o?.[u])?o[u]:[];if(!d.length)return;[...d].sort((m,_)=>{let y=String(m||"").includes("-"),A=String(_||"").includes("-");return y===A?0:y?-1:1}).forEach(a)},f=v(e),i=O(f),p=O(t);return c(f),c(i),c(t),c(p),a(e),a(f),a(i),a(t),a(p),t!==n&&(c(n),a(n)),r}function Oe(e={}){let t=v(e?.locale||"en")||"en",n=Se(e?.locales,t),o=new Set(n),r=e?.loadDefaultLocale===!0,l=Te(e?.aliases||{}),a=ze({aliases:l,localeSet:o}),c=e?.cache instanceof Map?e.cache:new Map,f=Me(e?.basePath),i=e?.requestInit&&typeof e.requestInit=="object"?e.requestInit:{},p=d=>Ee(d,{defaultLocale:t,aliasLookup:a}),u=async({locale:d})=>{let g=p(d);if(c.has(g))return c.get(g)||{};if(g===t&&!r){let y={};return c.set(g,y),y}if(typeof fetch!="function"){let y={};return c.set(g,y),y}let m=Be({locale:d,effectiveLocale:g,defaultLocale:t,aliases:l});for(let y of m)try{let A=f?`${f}/${y}.json`:`/${y}.json`,q=await fetch(A,{headers:{Accept:"application/json"},...i});if(!q.ok)continue;let j=Ke(await q.json());return c.set(g,j),j}catch{}let _={};return c.set(g,_),_};return{locale:t,locales:[...n],provider:{locales:[...n],resolveLocale:p,loadLocale:u}}}export{he as configureLocalization,Oe as createJSONLocalization,M as getLocalizationState,_e as loadLocale,Ae as msg,be as setLocale,ve as str};
|
|
@@ -221,6 +221,7 @@ function buildCandidateLocales({ locale, effectiveLocale, defaultLocale, aliases
|
|
|
221
221
|
* locale?: string,
|
|
222
222
|
* locales?: string[],
|
|
223
223
|
* basePath?: string,
|
|
224
|
+
* loadDefaultLocale?: boolean,
|
|
224
225
|
* aliases?: Record<string, string[]>,
|
|
225
226
|
* requestInit?: RequestInit,
|
|
226
227
|
* cache?: Map<string, Record<string, string | { content?: string }>>,
|
|
@@ -239,6 +240,7 @@ export function createJSONLocalization(options = {}) {
|
|
|
239
240
|
const defaultLocale = normalizeLocaleTag(options?.locale || "en") || "en";
|
|
240
241
|
const locales = toLocaleList(options?.locales, defaultLocale);
|
|
241
242
|
const localeSet = new Set(locales);
|
|
243
|
+
const loadDefaultLocale = options?.loadDefaultLocale === true;
|
|
242
244
|
const aliases = normalizeAliasMap(options?.aliases || {});
|
|
243
245
|
const aliasLookup = createAliasLookup({ aliases, localeSet });
|
|
244
246
|
const cache = options?.cache instanceof Map ? options.cache : new Map();
|
|
@@ -261,7 +263,7 @@ export function createJSONLocalization(options = {}) {
|
|
|
261
263
|
return cache.get(effectiveLocale) || {};
|
|
262
264
|
}
|
|
263
265
|
|
|
264
|
-
if (effectiveLocale === defaultLocale) {
|
|
266
|
+
if (effectiveLocale === defaultLocale && !loadDefaultLocale) {
|
|
265
267
|
const defaultBundle = {};
|
|
266
268
|
cache.set(effectiveLocale, defaultBundle);
|
|
267
269
|
return defaultBundle;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
|
|
4
|
+
import { createJSONLocalization } from "./localization-resource-provider.js";
|
|
5
|
+
|
|
6
|
+
test("createJSONLocalization skips default locale fetch by default", async () => {
|
|
7
|
+
let fetchCalls = 0;
|
|
8
|
+
const originalFetch = globalThis.fetch;
|
|
9
|
+
|
|
10
|
+
globalThis.fetch = async () => {
|
|
11
|
+
fetchCalls += 1;
|
|
12
|
+
return {
|
|
13
|
+
ok: true,
|
|
14
|
+
async json() {
|
|
15
|
+
return { greeting: "Hello" };
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const localization = createJSONLocalization({
|
|
22
|
+
locale: "en",
|
|
23
|
+
locales: ["en", "nl"],
|
|
24
|
+
aliases: {
|
|
25
|
+
en: ["en", "en-US"],
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const bundle = await localization.provider.loadLocale({ locale: "en-US" });
|
|
30
|
+
|
|
31
|
+
assert.deepEqual(bundle, {});
|
|
32
|
+
assert.equal(fetchCalls, 0);
|
|
33
|
+
} finally {
|
|
34
|
+
globalThis.fetch = originalFetch;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test("createJSONLocalization can load the default locale bundle for code keys", async () => {
|
|
39
|
+
const requestedPaths = [];
|
|
40
|
+
const originalFetch = globalThis.fetch;
|
|
41
|
+
|
|
42
|
+
globalThis.fetch = async (resourcePath) => {
|
|
43
|
+
requestedPaths.push(resourcePath);
|
|
44
|
+
|
|
45
|
+
if (resourcePath === "/assets/locales/en-US.json") {
|
|
46
|
+
return {
|
|
47
|
+
ok: true,
|
|
48
|
+
async json() {
|
|
49
|
+
return {
|
|
50
|
+
"my-long-string-code": {
|
|
51
|
+
content: "English source copy",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
ok: false,
|
|
60
|
+
async json() {
|
|
61
|
+
return {};
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
const localization = createJSONLocalization({
|
|
68
|
+
locale: "en",
|
|
69
|
+
locales: ["en", "nl"],
|
|
70
|
+
loadDefaultLocale: true,
|
|
71
|
+
aliases: {
|
|
72
|
+
en: ["en", "en-US"],
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const bundle = await localization.provider.loadLocale({ locale: "en-US" });
|
|
77
|
+
|
|
78
|
+
assert.deepEqual(bundle, {
|
|
79
|
+
"my-long-string-code": {
|
|
80
|
+
content: "English source copy",
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
assert.deepEqual(requestedPaths, ["/assets/locales/en-US.json"]);
|
|
84
|
+
|
|
85
|
+
const cachedBundle = await localization.provider.loadLocale({ locale: "en" });
|
|
86
|
+
assert.deepEqual(cachedBundle, bundle);
|
|
87
|
+
assert.deepEqual(requestedPaths, ["/assets/locales/en-US.json"]);
|
|
88
|
+
} finally {
|
|
89
|
+
globalThis.fetch = originalFetch;
|
|
90
|
+
}
|
|
91
|
+
});
|
package/src/js/pds.d.ts
CHANGED
|
@@ -164,6 +164,7 @@ export interface PDSJSONLocalizationOptions {
|
|
|
164
164
|
locale?: string;
|
|
165
165
|
locales?: string[];
|
|
166
166
|
basePath?: string;
|
|
167
|
+
loadDefaultLocale?: boolean;
|
|
167
168
|
aliases?: Record<string, string[]>;
|
|
168
169
|
requestInit?: RequestInit;
|
|
169
170
|
cache?: Map<string, PDSLocalizationMessages>;
|