@pure-ds/core 0.6.10 → 0.7.1
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/.github/copilot-instructions.md +6 -1
- package/custom-elements.json +803 -16
- package/dist/types/pds.d.ts +1 -0
- package/dist/types/public/assets/js/pds-ask.d.ts +2 -0
- package/dist/types/public/assets/js/pds-ask.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds-auto-definer.d.ts +14 -0
- package/dist/types/public/assets/js/pds-auto-definer.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds-autocomplete.d.ts +79 -0
- package/dist/types/public/assets/js/pds-autocomplete.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds-enhancers.d.ts +7 -0
- package/dist/types/public/assets/js/pds-enhancers.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds-manager.d.ts +98 -1
- package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds-toast.d.ts +8 -0
- package/dist/types/public/assets/js/pds-toast.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-drawer.d.ts +1 -143
- package/dist/types/public/assets/pds/components/pds-drawer.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-form.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-icon.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-live-converter.d.ts +8 -0
- package/dist/types/public/assets/pds/components/pds-live-converter.d.ts.map +1 -0
- package/dist/types/public/assets/pds/components/pds-live-importer.d.ts +2 -0
- package/dist/types/public/assets/pds/components/pds-live-importer.d.ts.map +1 -0
- package/dist/types/public/assets/pds/components/pds-live-template-canvas.d.ts +2 -0
- package/dist/types/public/assets/pds/components/pds-live-template-canvas.d.ts.map +1 -0
- package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-richtext.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts +1 -63
- package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts +1 -89
- package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-theme.d.ts +1 -22
- package/dist/types/public/assets/pds/components/pds-theme.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-toaster.d.ts +1 -1
- package/dist/types/public/assets/pds/components/pds-toaster.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-treeview.d.ts +37 -0
- package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -0
- package/dist/types/public/assets/pds/components/pds-upload.d.ts.map +1 -1
- package/dist/types/src/js/common/ask.d.ts.map +1 -1
- package/dist/types/src/js/common/toast.d.ts +8 -0
- package/dist/types/src/js/common/toast.d.ts.map +1 -1
- package/dist/types/src/js/pds-ask.d.ts +2 -0
- package/dist/types/src/js/pds-ask.d.ts.map +1 -0
- package/dist/types/src/js/pds-auto-definer.d.ts +2 -0
- package/dist/types/src/js/pds-auto-definer.d.ts.map +1 -0
- package/dist/types/src/js/pds-autocomplete.d.ts +2 -0
- package/dist/types/src/js/pds-autocomplete.d.ts.map +1 -0
- package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-live.d.ts +2 -1
- package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/dist/types/src/js/pds-enhancers.d.ts +2 -0
- package/dist/types/src/js/pds-enhancers.d.ts.map +1 -0
- package/dist/types/src/js/pds-live-manager/conversion-service.d.ts +66 -0
- package/dist/types/src/js/pds-live-manager/conversion-service.d.ts.map +1 -0
- package/dist/types/src/js/pds-live-manager/import-contract.d.ts +15 -0
- package/dist/types/src/js/pds-live-manager/import-contract.d.ts.map +1 -0
- package/dist/types/src/js/pds-live-manager/import-history-service.d.ts +32 -0
- package/dist/types/src/js/pds-live-manager/import-history-service.d.ts.map +1 -0
- package/dist/types/src/js/pds-live-manager/import-service.d.ts +21 -0
- package/dist/types/src/js/pds-live-manager/import-service.d.ts.map +1 -0
- package/dist/types/src/js/pds-live-manager/template-service.d.ts +17 -0
- package/dist/types/src/js/pds-live-manager/template-service.d.ts.map +1 -0
- package/dist/types/src/js/pds-manager.d.ts +4 -0
- package/dist/types/src/js/pds-toast.d.ts +2 -0
- package/dist/types/src/js/pds-toast.d.ts.map +1 -0
- package/dist/types/src/js/pds.d.ts.map +1 -1
- package/package.json +11 -5
- package/packages/pds-cli/README.md +60 -0
- package/packages/pds-cli/bin/pds-import.js +176 -0
- package/packages/pds-cli/bin/pds-static.js +27 -1
- package/packages/pds-cli/bin/postinstall.mjs +17 -8
- package/packages/pds-cli/bin/templates/bootstrap/pds.config.js +1 -5
- package/packages/pds-cli/bin/templates/bootstrap/public/index.html +2 -1
- package/packages/pds-cli/bin/templates/starter-templates.js +1 -3
- package/public/assets/js/app.js +9 -163
- package/public/assets/js/pds-ask.js +25 -0
- package/public/assets/js/pds-auto-definer.js +1 -0
- package/public/assets/js/pds-autocomplete.js +7 -0
- package/public/assets/js/pds-enhancers.js +1 -0
- package/public/assets/js/pds-manager.js +370 -267
- package/public/assets/js/pds-toast.js +1 -0
- package/public/assets/js/pds.js +2 -32
- package/public/assets/pds/components/pds-calendar.js +2 -2
- package/public/assets/pds/components/pds-drawer.js +1 -1
- package/public/assets/pds/components/pds-form.js +7 -6
- package/public/assets/pds/components/pds-icon.js +12 -9
- package/public/assets/pds/components/pds-live-converter.js +47 -0
- package/public/assets/pds/components/pds-live-edit.js +758 -44
- package/public/assets/pds/components/pds-live-importer.js +773 -0
- package/public/assets/pds/components/pds-live-template-canvas.js +172 -0
- package/public/assets/pds/components/pds-omnibox.js +147 -3
- package/public/assets/pds/components/pds-richtext.js +2 -0
- package/public/assets/pds/components/pds-scrollrow.js +61 -2
- package/public/assets/pds/components/pds-splitpanel.js +3 -1
- package/public/assets/pds/components/pds-theme.js +2 -0
- package/public/assets/pds/components/pds-toaster.js +52 -5
- package/public/assets/pds/components/pds-treeview.js +974 -0
- package/public/assets/pds/components/pds-upload.js +2 -0
- package/public/assets/pds/core/pds-ask.js +25 -0
- package/public/assets/pds/core/pds-auto-definer.js +1 -0
- package/public/assets/pds/core/pds-autocomplete.js +7 -0
- package/public/assets/pds/core/pds-enhancers.js +1 -0
- package/public/assets/pds/core/pds-manager.js +3646 -0
- package/public/assets/pds/core/pds-toast.js +1 -0
- package/public/assets/pds/core.js +2 -0
- package/public/assets/pds/custom-elements.json +803 -16
- package/public/assets/pds/pds-css-complete.json +7 -2
- package/public/assets/pds/templates/commerce-scroll-explorer.html +115 -0
- package/public/assets/pds/templates/content-brand-showcase.html +110 -0
- package/public/assets/pds/templates/feedback-ops-dashboard.html +91 -0
- package/public/assets/pds/templates/release-readiness-radar.html +69 -0
- package/public/assets/pds/templates/support-command-center.html +92 -0
- package/public/assets/pds/templates/templates.json +53 -0
- package/public/assets/pds/templates/workspace-settings-lab.html +131 -0
- package/public/assets/pds/vscode-custom-data.json +54 -4
- package/readme.md +38 -1
- package/src/js/pds-core/pds-config.js +9 -9
- package/src/js/pds-core/pds-enhancers.js +146 -0
- package/src/js/pds-core/pds-generator.js +170 -29
- package/src/js/pds-core/pds-live.js +456 -13
- package/src/js/pds-core/pds-start-helpers.js +5 -1
- package/src/js/pds-live-manager/conversion-service.js +3135 -0
- package/src/js/pds-live-manager/import-contract.js +57 -0
- package/src/js/pds-live-manager/import-history-service.js +145 -0
- package/src/js/pds-live-manager/import-service.js +255 -0
- package/src/js/pds-live-manager/tailwind-conversion-rules.json +383 -0
- package/src/js/pds-live-manager/template-service.js +170 -0
- package/src/js/pds.d.ts +1 -0
- package/src/js/pds.js +192 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
async function r(){let t=document.querySelector("pds-toaster");return t||(t=document.createElement("pds-toaster"),document.body.appendChild(t),await customElements.whenDefined("pds-toaster")),t}async function n(t,e={}){return(await r()).toast(t,e)}n.success=async function(t,e={}){return n(t,{...e,type:"success"})};n.error=async function(t,e={}){return n(t,{...e,type:"error"})};n.warning=async function(t,e={}){return n(t,{...e,type:"warning"})};n.info=async function(t,e={}){return n(t,{...e,type:"information"})};export{n as toast};
|
package/public/assets/js/pds.js
CHANGED
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
var
|
|
2
|
-
`)
|
|
3
|
-
<div title="${i.tooltip||""}" data-index="${r}" class="${`${B.item} cat-${i.category} ${i.class??""}`.trim()}"${i.style?` style="${i.style}"`:""}>
|
|
4
|
-
${this.handleImageOrIcon(i)}
|
|
5
|
-
<span class="text">${this.formatResultItem(i,n,o)}</span>
|
|
6
|
-
${this.settings.hideCategory?"":`<span class="category">${i.category||""}</span>`}
|
|
7
|
-
</div>`;e.forEach(o=>{let i=n.categories[o.category]||{};o.element?this.resultsDiv.appendChild(o.element):(o=typeof o=="string"?{text:o}:o,this.resultsDiv.appendChild(ue(s(i,o))[0])),r++}),e.length?(this.acItems=this.resultsDiv.querySelectorAll(".ac-itm"),this.controller().show()):n.search.length&&this.controller().empty()}handleImageOrIcon(e){return e.image?`<img src="${e.image}"/>`:typeof this.settings.iconHandler=="function"?this.settings.iconHandler(e):`<svg-icon icon="${e.icon}"></svg-icon>`}formatResultItem(e,n,r){let s=typeof e=="string"?{text:e}:e,o=s.text;return n.search&&(o=o.replace("%search%",n.search),s.description=s.description?.replace("%search%",n.search)),o=this.highlight(o,n.search),s.description&&(o=`<div>${o}</div><small>${s.description}</small>`),r.format&&(o=r.format({item:s,result:o,options:n})),o}highlight(e,n){var r=new RegExp("("+n+")","gi");return e.replace(r,'<span class="txt-hl">$1</span>')}async getItems(e,n){this.aborter&&this.aborter.abort();let r=this.caches.get(e.search);if(r)return r;let s=this.settings.map,o=u=>(typeof u=="string"&&(u={text:u}),u),i=u=>s?u.map(d=>({text:d[s]})):u.map(d=>o(d)),c=u=>(this.settings.max&&this.settings.max>0&&(u.length=this.settings.max),u);return this.aborter=new AbortController,this.aborterSignal=this.aborter.signal,new Promise(u=>{let d=l=>{l=this.sort(l,e),this.settings.cache!==!1&&this.caches.set(e.search,l),u(l)};if(he(this.items)){if(this.settings.minlength>0&&(!e.search||e.search.length<this.settings.minlength)){d([]);return}let l=this.formatSearch(this.items,e);fetch(l).then(a=>{if(a.status===200){a.json().then(p=>{p=i(p),d(c(p.filter(h=>this.isMatch(e,h))))});return}throw Error(`HTTP error ${a.status} - ${l}`)})}else if(Array.isArray(this.items)){let l=!0;this.items=this.items.map(a=>typeof a=="string"?{text:a}:(l=!1,a)),l&&this.container.classList.add("simple"),d(c(i(this.items)))}else if(typeof this.items=="function")e.control=this.container,Promise.resolve(this.items(e,n)).then(a=>{a=a.map(p=>o(p)),a=i(a),d(a)});else return d(Promise.resolve(this.items.apply(this,e)))})}async items(e){let n=[];e.results=[],e.signal=this.aborterSignal;for(var r in e.categories){let s=e.categories[r];if(s.trigger=s.trigger??(()=>!0),e.results=n,s.trigger(e)){let o=[];try{o=await s.getItems(e)}catch(i){console.warn(`Error loading items for omniBox category '${r}'.`,i)}n=n.concat(o.map(i=>(i.category=r,i)))}}return n}formatSearch(e,n){return e.indexOf("%search%")?e.replace("%search%",n.search||""):e+"?"+this.createQueryParam(n)}createQueryParam(e){let n=e.suggest?"&suggest=true":"";return`q=${e.text}${n}`}isMatch(e,n){return n.text?.indexOf("%search%")>=0?!0:e.search?n.text?.toLowerCase().indexOf(e.search.toLowerCase())>=0:e.suggest}static textFilter(e,n){return function(r){if(!e.search)return!0;if(r.hidden)return!1;let o=(n?r[n]:r).match(new RegExp(e.search,"gi"));if(o)return o;if(r.config?.tags)return r.config.tags.some(i=>i.match(new RegExp(e.search,"gi")))}}};var z=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(e={}){this._mode="static",this._staticPaths={...this._staticPaths,...e}}async getStylesheet(e){if(this._mode==="live")return null;try{return(await import(this._staticPaths[e]))[e]}catch(n){console.error(`[PDS Registry] Failed to load static ${e}:`,n),console.error(`[PDS Registry] Looking for: ${this._staticPaths[e]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let r=new CSSStyleSheet;return r.replaceSync("/* Failed to load "+e+" */"),r}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},T=new z;async function me(t,e=[],n=null){try{let r=n?.primitivesStylesheet?n.primitivesStylesheet:await T.getStylesheet("primitives");t.adoptedStyleSheets=[r,...e]}catch(r){let s=t.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${s}> failed to adopt primitives:`,r),t.adoptedStyleSheets=e}}async function ye(t,e=["primitives"],n=[],r=null){try{let o=(await Promise.all(e.map(async i=>{if(r)switch(i){case"tokens":return r.tokensStylesheet;case"primitives":return r.primitivesStylesheet;case"components":return r.componentsStylesheet;case"utilities":return r.utilitiesStylesheet;default:break}return T.getStylesheet(i)}))).filter(i=>i!==null);t.adoptedStyleSheets=[...o,...n]}catch(s){let o=t.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${o}> failed to adopt layers:`,s),t.adoptedStyleSheets=n}}function ge(t){let e=new CSSStyleSheet;return e.replaceSync(t),e}var be={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 we={mode:"live",liveEdit:!0,preset:"default",autoDefine:{predefine:["pds-icon","pds-drawer","pds-toaster","pds-form"]},log(t,e,...n){console[t](e,...n)}};var K={};de(K,{deepMerge:()=>ve,fragmentFromTemplateLike:()=>V,isObject:()=>U,parseHTML:()=>G});function U(t){return t&&typeof t=="object"&&!Array.isArray(t)}function ve(t,e){let n={...t};return U(t)&&U(e)&&Object.keys(e).forEach(r=>{U(e[r])?r in t?n[r]=ve(t[r],e[r]):Object.assign(n,{[r]:e[r]}):Object.assign(n,{[r]:e[r]})}),n}function V(t){let e=Array.isArray(t?.strings)?t.strings:[],n=Array.isArray(t?.values)?t.values:[],r=new Set,s=[],o=/(\s)(\.[\w-]+)=\s*$/;for(let a=0;a<e.length;a+=1){let p=e[a]??"",h=p.match(o);if(h&&a<n.length){let v=h[2].slice(1),f=`pds-val-${a}`;p=p.replace(o,`$1data-pds-prop="${v}:${f}"`),r.add(a)}s.push(p),a<n.length&&!r.has(a)&&s.push(`<!--pds-val-${a}-->`)}let i=document.createElement("template");i.innerHTML=s.join("");let c=(a,p)=>{let h=a.parentNode;if(!h)return;if(p==null){h.removeChild(a);return}let w=v=>{if(v!=null){if(v instanceof Node){h.insertBefore(v,a);return}if(Array.isArray(v)){v.forEach(f=>w(f));return}h.insertBefore(document.createTextNode(String(v)),a)}};w(p),h.removeChild(a)},u=document.createTreeWalker(i.content,NodeFilter.SHOW_COMMENT),d=[];for(;u.nextNode();){let a=u.currentNode;a?.nodeValue?.startsWith("pds-val-")&&d.push(a)}return d.forEach(a=>{let p=Number(a.nodeValue.replace("pds-val-",""));c(a,n[p])}),i.content.querySelectorAll("*").forEach(a=>{let p=a.getAttribute("data-pds-prop");if(!p)return;let[h,w]=p.split(":"),v=Number(String(w).replace("pds-val-",""));h&&Number.isInteger(v)&&(a[h]=n[v]),a.removeAttribute("data-pds-prop")}),i.content}function G(t){return new DOMParser().parseFromString(t,"text/html").body.childNodes}function Q(t,e){if(e==null)return;if(typeof e=="object"&&Array.isArray(e.strings)&&Array.isArray(e.values)){t.appendChild(V(e));return}if(e instanceof Node){t.appendChild(e);return}if(Array.isArray(e)){e.forEach(r=>Q(t,r));return}let n=typeof e=="string"?e:String(e);t.appendChild(document.createTextNode(n))}function Ue(){let t=navigator.userAgent,e=/Safari/i.test(t),n=/(Chrome|Chromium|CriOS|FxiOS|EdgiOS|OPiOS|Opera)/i.test(t);return e&&!n}function qe(t){if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let e=window.matchMedia?.("(max-width: 639px)").matches,n=t.classList.contains("dialog-no-scale-animation")?"pds-dialog-fade-enter":e?"pds-dialog-enter-mobile":"pds-dialog-enter";t.style.animation="none",t.offsetWidth,t.style.animation=`${n} var(--transition-normal) ease`,t.addEventListener("animationend",()=>{t.style.animation=""},{once:!0})}async function xe(t,e={}){return e={...{title:"Confirm",type:"confirm",buttons:{ok:{name:"OK",primary:!0},cancel:{name:"Cancel",cancel:!0}}},...e},new Promise(r=>{let s=document.createElement("dialog");Ue()&&s.classList.add("dialog-no-scale-animation"),we.options?.liquidGlassEffects&&s.classList.add("liquid-glass"),e.size&&s.classList.add(`dialog-${e.size}`),e.type&&s.classList.add(`dialog-${e.type}`),e.class&&(Array.isArray(e.class)?s.classList.add(...e.class):s.classList.add(e.class)),e.maxHeight&&s.style.setProperty("--dialog-max-height",e.maxHeight);let o=Object.entries(e.buttons).map(([c,u])=>{let d=u.primary?"btn-primary btn-sm":"btn-outline btn-sm";return`<button type="${u.cancel?"button":"submit"}" class="${d}" value="${c}">${u.name}</button>`});if(e.useForm){let c=document.createElement("div");Q(c,t);let u=c.querySelector("form");if(u){s.innerHTML=`
|
|
8
|
-
<header>
|
|
9
|
-
<h2>${e.title}</h2>
|
|
10
|
-
</header>
|
|
11
|
-
`;let d=document.createElement("article");for(d.className="dialog-body";u.firstChild;)d.appendChild(u.firstChild);u.appendChild(d);let l=document.createElement("footer");l.innerHTML=o.join(""),u.appendChild(l),s.appendChild(u)}else s.innerHTML=`
|
|
12
|
-
<header>
|
|
13
|
-
<h2>${e.title}</h2>
|
|
14
|
-
</header>
|
|
15
|
-
<article id="msg-container"></article>
|
|
16
|
-
<footer>
|
|
17
|
-
${o.join("")}
|
|
18
|
-
</footer>
|
|
19
|
-
`,s.querySelector("#msg-container").appendChild(c)}else{s.innerHTML=`
|
|
20
|
-
<form method="dialog">
|
|
21
|
-
<header>
|
|
22
|
-
<h2>${e.title}</h2>
|
|
23
|
-
</header>
|
|
24
|
-
|
|
25
|
-
<article id="msg-container"></article>
|
|
26
|
-
|
|
27
|
-
<footer>
|
|
28
|
-
${o.join("")}
|
|
29
|
-
</footer>
|
|
30
|
-
</form>
|
|
31
|
-
`;let c=s.querySelector("#msg-container");Q(c,t)}s.addEventListener("click",c=>{c.target.closest('button[value="cancel"]')&&(s.close(),r(!1))});let i=()=>{let c=s.querySelector("form");c?c.addEventListener("submit",u=>{u.preventDefault();let d;e.useForm&&u.submitter.value==="ok"?(console.log("Found form:",c),console.log("Form elements:",c?Array.from(c.elements):"no form"),d=new FormData(c),console.log("FormData entries:",Array.from(d.entries()))):d=u.submitter.value==="ok",s.close(),r(d)}):requestAnimationFrame(i)};i(),s.addEventListener("close",()=>{setTimeout(()=>s.remove(),200)}),document.body.appendChild(s),typeof e.rendered=="function"&&e.rendered(s),s.showModal(),requestAnimationFrame(()=>qe(s))})}async function Ne(){let t=document.querySelector("pds-toaster");return t||(t=document.createElement("pds-toaster"),document.body.appendChild(t),await customElements.whenDefined("pds-toaster")),t}async function A(t,e={}){return(await Ne()).toast(t,e)}A.success=async function(t,e={}){return A(t,{...e,type:"success"})};A.error=async function(t,e={}){return A(t,{...e,type:"error"})};A.warning=async function(t,e={}){return A(t,{...e,type:"warning"})};A.info=async function(t,e={}){return A(t,{...e,type:"information"})};var je=[{selector:".accordion"},{selector:"nav[data-dropdown]"},{selector:"label[data-toggle]"},{selector:"label[data-color]"},{selector:'input[type="range"]'},{selector:"form[data-required]"},{selector:"fieldset[role=group][data-open]"},{selector:"[data-clip]"},{selector:"button, a[class*='btn-']"}];function Fe(t){t.dataset.enhancedAccordion||(t.dataset.enhancedAccordion="true",t.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===t&&t.querySelectorAll(":scope > details[open]").forEach(n=>{n!==e.target&&(n.open=!1)})},!0))}function He(t){if(t.dataset.enhancedDropdown)return;t.dataset.enhancedDropdown="true";let e=t.lastElementChild;if(!e)return;let n=t.querySelector("[data-dropdown-toggle]")||t.querySelector("button");n&&!n.hasAttribute("type")&&n.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`),e.tagName?.toLowerCase()==="menu"&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),n&&(n.setAttribute("aria-haspopup","true"),n.setAttribute("aria-controls",e.id),n.setAttribute("aria-expanded","false"));let s=()=>{let a=e.getAttribute("style");e.style.visibility="hidden",e.style.display="inline-block",e.style.pointerEvents="none";let p=e.getBoundingClientRect(),h=Math.max(e.offsetWidth||0,e.scrollWidth||0,p.width||0,1),w=Math.max(e.offsetHeight||0,e.scrollHeight||0,p.height||0,1);return a===null?e.removeAttribute("style"):e.setAttribute("style",a),{width:h,height:w}},o=()=>{let a=(t.getAttribute("data-direction")||t.getAttribute("data-dropdown-direction")||t.getAttribute("data-mode")||"auto").toLowerCase();if(a==="up"||a==="down")return a;let p=(n||t).getBoundingClientRect(),{height:h}=s(),w=Math.max(0,window.innerHeight-p.bottom),v=Math.max(0,p.top),f=w>=h,x=v>=h;return f&&!x?"down":x&&!f?"up":f&&x?"down":v>w?"up":"down"},i=()=>{let a=(t.getAttribute("data-align")||t.getAttribute("data-dropdown-align")||"auto").toLowerCase();if(a==="left"||a==="right"||a==="start"||a==="end")return a==="start"?"left":a==="end"?"right":a;let p=(n||t).getBoundingClientRect(),{width:h}=s(),w=Math.max(0,window.innerWidth-p.left),v=Math.max(0,p.right),f=w>=h,x=v>=h;return f&&!x?"left":x&&!f?"right":f&&x?"left":v>w?"right":"left"},c=null,u=()=>{t.dataset.dropdownDirection=o(),t.dataset.dropdownAlign=i(),e.setAttribute("aria-hidden","false"),n?.setAttribute("aria-expanded","true"),c||(c=a=>{(a.composedPath?a.composedPath():[a.target]).some(w=>w===t)||d()},setTimeout(()=>{document.addEventListener("click",c)},0))},d=()=>{e.setAttribute("aria-hidden","true"),n?.setAttribute("aria-expanded","false"),c&&(document.removeEventListener("click",c),c=null)},l=()=>{e.getAttribute("aria-hidden")==="false"?d():u()};n?.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),l()}),t.addEventListener("keydown",a=>{a.key==="Escape"&&(d(),n?.focus())}),t.addEventListener("focusout",a=>{a.relatedTarget&&((a.composedPath?a.composedPath():[a.relatedTarget]).some(w=>w===t)||d())})}function We(t){if(t.dataset.enhancedToggle)return;t.dataset.enhancedToggle="true";let e=t.querySelector('input[type="checkbox"]');if(!e)return;t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","switch"),t.setAttribute("aria-checked",e.checked?"true":"false");let n=document.createElement("span");n.className="toggle-switch",n.setAttribute("role","presentation"),n.setAttribute("aria-hidden","true");let r=document.createElement("span");r.className="toggle-knob",n.appendChild(r),t.insertBefore(n,e.nextSibling);let s=()=>{t.setAttribute("aria-checked",e.checked?"true":"false")},o=()=>{e.disabled||(e.checked=!e.checked,s(),e.dispatchEvent(new Event("change",{bubbles:!0})))};t.addEventListener("click",i=>{i.preventDefault(),o()}),t.addEventListener("keydown",i=>{(i.key===" "||i.key==="Enter")&&(i.preventDefault(),o())}),e.addEventListener("change",s)}function Be(t){if(t.dataset.enhancedColorInput)return;let e=t.querySelector('input[type="color"]');if(!e)return;t.dataset.enhancedColorInput="true";let n=t.querySelector(":scope > .color-control"),r=t.querySelector(":scope > .color-control > .color-swatch"),s=t.querySelector(":scope > .color-control > output");n||(n=document.createElement("span"),n.className="color-control",e.before(n)),r||(r=document.createElement("span"),r.className="color-swatch",n.appendChild(r)),e.parentElement!==r&&r.appendChild(e),s||(s=document.createElement("output"),n.appendChild(s));let o=()=>{if(e.dataset.colorUnset==="1"){s.value="",s.textContent="not set",n.dataset.value="",n.dataset.unset="1",r.dataset.unset="1";return}s.value=e.value,s.textContent=e.value,n.dataset.value=e.value,delete n.dataset.unset,delete r.dataset.unset};o();let i=()=>{e.dataset.colorUnset==="1"&&(e.dataset.colorUnset="0"),o()};e.addEventListener("input",i,{passive:!0}),e.addEventListener("change",i,{passive:!0})}function ze(t){if(t.dataset.enhancedRange)return;let e=i=>{if(t.dataset.enhancedRangeProgrammatic)return;t.dataset.enhancedRangeProgrammatic="1";let c=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),"value")||Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");c?.get&&c?.set&&Object.defineProperty(t,"value",{configurable:!0,enumerable:c.enumerable,get(){return c.get.call(this)},set(d){c.set.call(this,d),i()}}),new MutationObserver(d=>{d.some(a=>{let p=a.attributeName;return p==="value"||p==="min"||p==="max"})&&i()}).observe(t,{attributes:!0,attributeFilter:["value","min","max"]})},n=t.closest("label"),r=n?.classList.contains("range-output"),s=t.id||`range-${Math.random().toString(36).substring(2,11)}`,o=`${s}-output`;if(t.id=s,r){let i=n.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let c=document.createElement("span");c.className="range-output-wrapper",c.style.display="flex",c.style.justifyContent="space-between",c.style.alignItems="center";let u=document.createElement("span");u.textContent=i.textContent,c.appendChild(u);let d=document.createElement("output");d.id=o,d.setAttribute("for",s),d.style.color="var(--surface-text-secondary, var(--color-text-secondary))",d.style.fontSize="0.875rem",d.textContent=t.value,c.appendChild(d),i.textContent="",i.appendChild(c);let l=()=>{d.textContent=t.value};t.addEventListener("input",l),t.addEventListener("change",l),e(l),l()}}else{let i=t.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",t.parentNode?.insertBefore(i,t),i.appendChild(t)),i.style.position="relative";let c=document.createElement("output");c.id=o,c.setAttribute("for",s),c.className="range-bubble",c.setAttribute("aria-live","polite"),i.appendChild(c);let u=()=>{let a=parseFloat(t.min)||0,p=parseFloat(t.max)||100,h=parseFloat(t.value),w=(h-a)/(p-a);c.style.left=`calc(${w*100}% )`,c.textContent=String(h)},d=()=>c.classList.add("visible"),l=()=>c.classList.remove("visible");t.addEventListener("input",u),t.addEventListener("pointerdown",d),t.addEventListener("pointerup",l),t.addEventListener("pointerleave",l),t.addEventListener("focus",d),t.addEventListener("blur",l),t.addEventListener("change",u),e(u),u()}t.dataset.enhancedRange="1"}function Ve(t){if(t.dataset.enhancedRequired)return;t.dataset.enhancedRequired="true";let e=n=>{let r;if(n.closest("[role$=group]")?r=n.closest("[role$=group]").querySelector("legend"):r=n.closest("label"),!r||r.querySelector(".required-asterisk"))return;let s=document.createElement("span");s.classList.add("required-asterisk"),s.textContent="*",s.style.marginLeft="4px";let o=r.querySelector("span, [data-label]");if(o)o.appendChild(s);else{let c=r.querySelector("input, select, textarea");c?r.insertBefore(s,c):r.appendChild(s)}let i=n.closest("form");if(i&&!i.querySelector(".required-legend")){let c=document.createElement("small");c.classList.add("required-legend"),c.textContent="* Required fields",i.insertBefore(c,i.querySelector(".form-actions")||i.lastElementChild)}};t.querySelectorAll("[required]").forEach(n=>{e(n)})}function Ge(t){if(t.dataset.enhancedOpenGroup)return;t.dataset.enhancedOpenGroup="true",t.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder="Add item...",e.classList.add("input-text","input-sm"),e.style.width="auto";let n=()=>t.querySelector('input[type="radio"], input[type="checkbox"]');t.appendChild(e),e.addEventListener("keydown",r=>{if(r.key==="Enter"||r.key==="Tab"){let s=e.value.trim();if(s){r.preventDefault();let o=n(),i=o?.type==="radio"?"radio":"checkbox",c=`open-group-${Math.random().toString(36).substring(2,11)}`,u=document.createElement("label"),d=document.createElement("span");d.setAttribute("data-label",""),d.textContent=s;let l=document.createElement("input");l.type=i,l.name=o?.name||t.getAttribute("data-name")||"open-group",l.value=s,l.id=c,u.appendChild(d),u.appendChild(l),t.insertBefore(u,e),e.value=""}}else if(r.key==="Backspace"&&e.value===""){r.preventDefault();let s=t.querySelectorAll("label");s.length>0&&s[s.length-1].remove()}})}function Ke(t){if(t.dataset.enhancedClip)return;t.dataset.enhancedClip="true",t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.hasAttribute("role")||t.setAttribute("role","button");let e=()=>{let r=t.getAttribute("data-clip-open")==="true";t.setAttribute("aria-expanded",r?"true":"false")},n=()=>{let r=t.getAttribute("data-clip-open")==="true";t.setAttribute("data-clip-open",r?"false":"true"),e()};t.addEventListener("click",r=>{r.defaultPrevented||n()}),t.addEventListener("keydown",r=>{(r.key===" "||r.key==="Enter")&&(r.preventDefault(),n())}),e()}function Qe(t){if(t.dataset.enhancedBtnWorking)return;t.dataset.enhancedBtnWorking="true";let e=null,n=!1;new MutationObserver(s=>{s.forEach(o=>{if(o.attributeName==="class"){let i=t.classList.contains("btn-working"),c=t.querySelector("pds-icon");if(i)if(c)e||(e=c.getAttribute("icon")),c.setAttribute("icon","circle-notch");else{let u=document.createElement("pds-icon");u.setAttribute("icon","circle-notch"),u.setAttribute("size","sm"),t.insertBefore(u,t.firstChild),n=!0}else o.oldValue?.includes("btn-working")&&c&&(n?(c.remove(),n=!1):e&&(c.setAttribute("icon",e),e=null))}})}).observe(t,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var Ze=new Map([[".accordion",Fe],["nav[data-dropdown]",He],["label[data-toggle]",We],["label[data-color]",Be],['input[type="range"]',ze],["form[data-required]",Ve],["fieldset[role=group][data-open]",Ge],["[data-clip]",Ke],["button, a[class*='btn-']",Qe]]),Z=je.map(t=>({...t,run:Ze.get(t.selector)||(()=>{})}));var Se="pds",Je=/^([a-z][a-z0-9+\-.]*:)?\/\//i,Ee=/^[a-z]:/i;function M(t=""){return t.endsWith("/")?t:`${t}/`}function Xe(t="",e=Se){let n=t.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(n)?n:`${n}/${e}`}function Ye(t){return t.replace(/^\.\/+/,"")}function et(t){return Ee.test(t)?t.replace(Ee,"").replace(/^\/+/,""):t}function tt(t){return t.startsWith("public/")?t.substring(7):t}function J(t,e={}){let n=e.segment||Se,r=e.defaultRoot||`/assets/${n}/`,s=t?.public&&t.public?.root||t?.static&&t.static?.root||null;if(!s||typeof s!="string")return M(r);let o=s.trim();return o?(o=o.replace(/\\/g,"/"),o=Xe(o,n),o=M(o),Je.test(o)?o:(o=Ye(o),o=et(o),o.startsWith("/")||(o=tt(o),o.startsWith("/")||(o=`/${o}`),o=o.replace(/\/+/g,(i,c)=>c===0?i:"/")),M(o))):M(r)}var rt=/^[a-z][a-z0-9+\-.]*:\/\//i,P=(()=>{try{return import.meta.url}catch{return}})(),q=t=>typeof t=="string"&&t.length&&!t.endsWith("/")?`${t}/`:t;function N(t,e={}){if(!t||rt.test(t))return t;let{preferModule:n=!0}=e,r=()=>{if(!P)return null;try{return new URL(t,P).href}catch{return null}},s=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(t,window.location.origin).href}catch{return null}};return(n?r()||s():s()||r())||t}var Ce=(()=>{if(P)try{let t=new URL(P);if(/\/public\/assets\/js\//.test(t.pathname))return new URL("../pds/",P).href}catch{return}})(),De=!1;function ke(t){De||typeof document>"u"||(De=!0,t.addEventListener("pds:ready",e=>{let n=e.detail?.mode;n&&document.documentElement.classList.add(`pds-${n}`,"pds-ready")}))}function Te({manageTheme:t,themeStorageKey:e,applyResolvedTheme:n,setupSystemListenerIfNeeded:r}){let s="light",o=null;if(t&&typeof window<"u"){try{o=localStorage.getItem(e)||null}catch{o=null}try{n?.(o),r?.(o)}catch{}o?o==="system"?s=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":s=o:s=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:s,storedTheme:o}}function Y(t,{resolvePublicAssetURL:e}){let n=!!(t?.public?.root||t?.static?.root),r=e(t);return!n&&Ce&&(r=Ce),q(N(r))}async function Re(t,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:n="/auto-define/",autoDefinePreload:r=[],autoDefineMapper:s=null,enhancers:o=[],autoDefineOverrides:i=null,autoDefinePreferModule:c=!0}=t,u=(()=>{let l=new Map;return(e||[]).forEach(a=>l.set(a.selector,a)),(o||[]).forEach(a=>l.set(a.selector,a)),Array.from(l.values())})(),d=null;if(typeof window<"u"&&typeof document<"u"){let l=null;try{let f=await Promise.resolve().then(()=>(Le(),Ae));l=f?.AutoDefiner||f?.default?.AutoDefiner||f?.default||null}catch(f){console.warn("AutoDefiner not available:",f?.message||f)}let a=f=>{switch(f){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${f}.js`}},{mapper:p,...h}=i&&typeof i=="object"?i:{},v={baseURL:n&&q(N(n,{preferModule:c})),predefine:r,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:u,onError:(f,x)=>{if(typeof f=="string"&&f.startsWith("pds-")){let E=["pds-form","pds-drawer"].includes(f),C=x?.message?.includes("#pds/lit")||x?.message?.includes("Failed to resolve module specifier");E&&C?console.error(`\u274C PDS component <${f}> requires Lit but #pds/lit is not in import map.
|
|
32
|
-
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${f}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${f}>:`,x)},...h,mapper:f=>{if(customElements.get(f))return null;if(typeof s=="function")try{let x=s(f);return x===void 0?a(f):x}catch(x){return console.warn("Custom autoDefine.mapper error; falling back to default:",x?.message||x),a(f)}return a(f)}};l&&(d=new l(v),r.length>0&&typeof l.define=="function"&&await l.define(...r,{baseURL:n,mapper:v.mapper,onError:v.onError}))}return{autoDefiner:d,mergedEnhancers:u}}var ee=["light","dark"],te=new Set(ee);function st(t){let n=(Array.isArray(t?.themes)?t.themes.map(r=>String(r).toLowerCase()):ee).filter(r=>te.has(r));return n.length?n:ee}function ne(t,{preferDocument:e=!0}={}){let n=String(t||"").toLowerCase();if(te.has(n))return n;if(e&&typeof document<"u"){let r=document.documentElement?.getAttribute("data-theme");if(te.has(r))return r}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function $e(t,e){let n=ne(e);return st(t).includes(n)}var se=class extends EventTarget{},b=new se;b.initializing=!1;b.currentPreset=null;b.debug=!1;var Me=function(t="log",e,...n){let r=!!(b.registry&&!b.registry.isLive),s=(this?.debug||this?.design?.debug||b.debug||!1)===!0;if(r){if(!b.debug)return}else if(!s&&t!=="error"&&t!=="warn")return;let o=console[t]||console.log;n.length>0?o(e,...n):o(e)};function oe(t){if(t==null)return t;if(typeof t=="function")return;if(typeof t!="object")return t;if(Array.isArray(t))return t.map(n=>oe(n)).filter(n=>n!==void 0);let e={};for(let[n,r]of Object.entries(t)){let s=oe(r);s!==void 0&&(e[n]=s)}return e}async function ot(t,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let n=e?.runtimeConfigURL||`${t}pds-runtime-config.json`;try{let r=await fetch(n,{cache:"no-store"});return r.ok?await r.json():null}catch{return null}}b.registry=T;b.enums=be;b.adoptLayers=ye;b.adoptPrimitives=me;b.parse=G;b.createStylesheet=ge;b.isLiveMode=()=>T.isLive;b.ask=xe;b.toast=A;b.common=K;b.AutoComplete=O;function Pe(t){let e=typeof CustomEvent=="function";try{let n=e?new CustomEvent("pds:ready",{detail:t}):new Event("pds:ready");b.dispatchEvent(n)}catch{}if(typeof document<"u")if(e){let n={detail:t,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{}}}typeof window<"u"&&(window.PDS=b);var re="pure-ds-theme",L=null,I=null;function j(t){try{if(typeof document>"u")return;let e="light";t?t==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=t:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function F(t){try{if(L&&I){try{typeof L.removeEventListener=="function"?L.removeEventListener("change",I):typeof L.removeListener=="function"&&L.removeListener(I)}catch{}L=null,I=null}if(t==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),n=r=>{let s=r?.matches===void 0?e.matches:r.matches;try{let o=s?"dark":"light";document.documentElement.setAttribute("data-theme",o),b.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:o,source:"system"}}))}catch{}};L=e,I=n,typeof e.addEventListener=="function"?e.addEventListener("change",n):typeof e.addListener=="function"&&e.addListener(n)}}catch{}}Object.defineProperty(b,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(re)||null}catch{return null}},set(t){try{if(typeof window>"u")return;let e=b.currentConfig?.design||null,n=ne(t);if(e&&!$e(e,n)){let r=e?.name||b.currentPreset?.name||b.currentConfig?.preset||"current preset";console.warn(`PDS theme "${n}" not supported by preset "${r}".`),b.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:t,resolvedTheme:n,preset:r}}));return}t==null?localStorage.removeItem(re):localStorage.setItem(re,t),j(t),F(t),b.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:t,source:"api"}}))}catch{}}});b.defaultEnhancers=Z;async function it(t){let e=t&&t.mode||"live",{mode:n,...r}=t||{};if(e==="static")return at(r);let s=Y(r,{resolvePublicAssetURL:J}),o=r?.managerURL||r?.public?.managerURL||r?.manager?.url||new URL("core/pds-manager.js",s).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:i}=await import(o);return i(b,r,{emitReady:Pe,applyResolvedTheme:j,setupSystemListenerIfNeeded:F})}b.start=it;async function at(t){if(!t||typeof t!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=t.applyGlobalStyles??!0,n=t.manageTheme??!0,r=t.themeStorageKey??"pure-ds-theme",s=t.staticPaths??{},o=Y(t,{resolvePublicAssetURL:J}),i=t&&t.autoDefine||null,c;i&&i.baseURL?c=q(N(i.baseURL,{preferModule:!1})):c=`${o}components/`;let u=i&&Array.isArray(i.predefine)&&i.predefine||[],d=i&&typeof i.mapper=="function"&&i.mapper||null;try{ke(b);let{resolvedTheme:l}=Te({manageTheme:n,themeStorageKey:r,applyResolvedTheme:j,setupSystemListenerIfNeeded:F}),a=await ot(o,t),p=Array.isArray(t?.enhancers)?t.enhancers:t?.enhancers&&typeof t.enhancers=="object"?Object.values(t.enhancers):[],h=a?.config?{...a.config,...t,design:t?.design||a.config.design,preset:t?.preset||a.config.preset}:{...t},w={tokens:`${o}styles/pds-tokens.css.js`,primitives:`${o}styles/pds-primitives.css.js`,components:`${o}styles/pds-components.css.js`,utilities:`${o}styles/pds-utilities.css.js`,styles:`${o}styles/pds-styles.css.js`},v=a?.paths||{};if(s={...w,...v,...s},b.registry.setStaticMode(s),e&&typeof document<"u")try{let E=await b.registry.getStylesheet("styles");if(E){E._pds=!0;let C=(document.adoptedStyleSheets||[]).filter($=>$._pds!==!0);document.adoptedStyleSheets=[...C,E]}}catch(E){Me.call(b,"warn","Failed to apply static styles:",E)}let f=null,x=[];try{let E=await Re({autoDefineBaseURL:c,autoDefinePreload:u,autoDefineMapper:d,enhancers:p,autoDefineOverrides:i||null,autoDefinePreferModule:!(i&&i.baseURL)},{baseEnhancers:Z});f=E.autoDefiner,x=E.mergedEnhancers||[]}catch(E){Me.call(b,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",E)}let R=oe(t);return b.currentConfig=Object.freeze({mode:"static",...structuredClone(R),design:structuredClone(h.design||{}),preset:h.preset,theme:l,enhancers:x}),Pe({mode:"static",config:h,theme:l,autoDefiner:f}),{config:h,theme:l,autoDefiner:f}}catch(l){throw b.dispatchEvent(new CustomEvent("pds:error",{detail:{error:l}})),l}}var _t=j,Ot=F;export{b as PDS,_t as applyResolvedTheme,Ot as setupSystemListenerIfNeeded};
|
|
1
|
+
var me=Object.defineProperty;var he=(e,t)=>{for(var n in t)me(e,n,{get:t[n],enumerable:!0})};var W=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){console.error(`[PDS Registry] Failed to load static ${t}:`,n),console.error(`[PDS Registry] Looking for: ${this._staticPaths[t]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let r=new CSSStyleSheet;return r.replaceSync("/* Failed to load "+t+" */"),r}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},_=new W;async function X(e,t=[],n=null){try{let r=n?.primitivesStylesheet?n.primitivesStylesheet:await _.getStylesheet("primitives");e.adoptedStyleSheets=[r,...t]}catch(r){let a=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${a}> failed to adopt primitives:`,r),e.adoptedStyleSheets=t}}async function Y(e,t=["primitives"],n=[],r=null){try{let s=(await Promise.all(t.map(async c=>{if(r)switch(c){case"tokens":return r.tokensStylesheet;case"primitives":return r.primitivesStylesheet;case"components":return r.componentsStylesheet;case"utilities":return r.utilitiesStylesheet;default:break}return _.getStylesheet(c)}))).filter(c=>c!==null);e.adoptedStyleSheets=[...s,...n]}catch(a){let s=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${s}> failed to adopt layers:`,a),e.adoptedStyleSheets=n}}function Z(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var ee={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 V={};he(V,{deepMerge:()=>te,fragmentFromTemplateLike:()=>ye,isObject:()=>k,parseHTML:()=>B});function k(e){return e&&typeof e=="object"&&!Array.isArray(e)}function te(e,t){let n={...e};return k(e)&&k(t)&&Object.keys(t).forEach(r=>{k(t[r])?r in e?n[r]=te(e[r],t[r]):Object.assign(n,{[r]:t[r]}):Object.assign(n,{[r]:t[r]})}),n}function ye(e){let t=Array.isArray(e?.strings)?e.strings:[],n=Array.isArray(e?.values)?e.values:[],r=new Set,a=[],s=/(\s)(\.[\w-]+)=\s*$/;for(let i=0;i<t.length;i+=1){let d=t[i]??"",u=d.match(s);if(u&&i<n.length){let p=u[2].slice(1),m=`pds-val-${i}`;d=d.replace(s,`$1data-pds-prop="${p}:${m}"`),r.add(i)}a.push(d),i<n.length&&!r.has(i)&&a.push(`<!--pds-val-${i}-->`)}let c=document.createElement("template");c.innerHTML=a.join("");let f=(i,d)=>{let u=i.parentNode;if(!u)return;if(d==null){u.removeChild(i);return}let w=p=>{if(p!=null){if(p instanceof Node){u.insertBefore(p,i);return}if(Array.isArray(p)){p.forEach(m=>w(m));return}u.insertBefore(document.createTextNode(String(p)),i)}};w(d),u.removeChild(i)},E=document.createTreeWalker(c.content,NodeFilter.SHOW_COMMENT),S=[];for(;E.nextNode();){let i=E.currentNode;i?.nodeValue?.startsWith("pds-val-")&&S.push(i)}return S.forEach(i=>{let d=Number(i.nodeValue.replace("pds-val-",""));f(i,n[d])}),c.content.querySelectorAll("*").forEach(i=>{let d=i.getAttribute("data-pds-prop");if(!d)return;let[u,w]=d.split(":"),p=Number(String(w).replace("pds-val-",""));u&&Number.isInteger(p)&&(i[u]=n[p]),i.removeAttribute("data-pds-prop")}),c.content}function B(e){return new DOMParser().parseFromString(e,"text/html").body.childNodes}var re="pds",ge=/^([a-z][a-z0-9+\-.]*:)?\/\//i,ne=/^[a-z]:/i;function v(e=""){return e.endsWith("/")?e:`${e}/`}function we(e="",t=re){let n=e.replace(/\/+$/,"");return new RegExp(`(?:^|/)${t}$`,"i").test(n)?n:`${n}/${t}`}function Se(e){return e.replace(/^\.\/+/,"")}function be(e){return ne.test(e)?e.replace(ne,"").replace(/^\/+/,""):e}function Ee(e){return e.startsWith("public/")?e.substring(7):e}function M(e,t={}){let n=t.segment||re,r=t.defaultRoot||`/assets/${n}/`,a=e?.public&&e.public?.root||e?.static&&e.static?.root||null;if(!a||typeof a!="string")return v(r);let s=a.trim();return s?(s=s.replace(/\\/g,"/"),s=we(s,n),s=v(s),ge.test(s)?s:(s=Se(s),s=be(s),s.startsWith("/")||(s=Ee(s),s.startsWith("/")||(s=`/${s}`),s=s.replace(/\/+/g,(c,f)=>f===0?c:"/")),v(s))):v(r)}var Le=/^[a-z][a-z0-9+\-.]*:\/\//i,D=(()=>{try{return import.meta.url}catch{return}})(),T=e=>typeof e=="string"&&e.length&&!e.endsWith("/")?`${e}/`:e;function U(e,t={}){if(!e||Le.test(e))return e;let{preferModule:n=!0}=t,r=()=>{if(!D)return null;try{return new URL(e,D).href}catch{return null}},a=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(e,window.location.origin).href}catch{return null}};return(n?r()||a():a()||r())||e}var se=(()=>{if(D)try{let e=new URL(D);if(/\/public\/assets\/js\//.test(e.pathname))return new URL("../pds/",D).href}catch{return}})(),oe=!1;function ie(e){oe||typeof document>"u"||(oe=!0,e.addEventListener("pds:ready",t=>{let n=t.detail?.mode;n&&document.documentElement.classList.add(`pds-${n}`,"pds-ready")}))}function ae({manageTheme:e,themeStorageKey:t,applyResolvedTheme:n,setupSystemListenerIfNeeded:r}){let a="light",s=null;if(e&&typeof window<"u"){try{s=localStorage.getItem(t)||null}catch{s=null}try{n?.(s),r?.(s)}catch{}s?s==="system"?a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a=s:a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:a,storedTheme:s}}function C(e,{resolvePublicAssetURL:t}){let n=!!(e?.public?.root||e?.static?.root),r=t(e);return!n&&se&&(r=se),T(U(r))}async function ce(e,{baseEnhancers:t=[]}={}){let{autoDefineBaseURL:n="/auto-define/",autoDefinePreload:r=[],autoDefineMapper:a=null,autoDefinerModuleURL:s=null,enhancers:c=[],autoDefineOverrides:f=null,autoDefinePreferModule:E=!0}=e,S=(()=>{let i=new Map;return(t||[]).forEach(d=>i.set(d.selector,d)),(c||[]).forEach(d=>i.set(d.selector,d)),Array.from(i.values())})(),y=null;if(typeof window<"u"&&typeof document<"u"){let i=null;try{if(!s||typeof s!="string")throw new Error("AutoDefiner module URL is not configured");let l=await import(s);i=l?.AutoDefiner||l?.default?.AutoDefiner||l?.default||null}catch(l){console.warn("AutoDefiner not available:",l?.message||l)}let d=l=>{switch(l){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${l}.js`}},{mapper:u,...w}=f&&typeof f=="object"?f:{},m={baseURL:n&&T(U(n,{preferModule:E})),predefine:r,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:S,onError:(l,h)=>{if(typeof l=="string"&&l.startsWith("pds-")){let L=["pds-form","pds-drawer"].includes(l),F=h?.message?.includes("#pds/lit")||h?.message?.includes("Failed to resolve module specifier");L&&F?console.error(`\u274C PDS component <${l}> requires Lit but #pds/lit is not in import map.
|
|
2
|
+
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${l}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${l}>:`,h)},...w,mapper:l=>{if(customElements.get(l))return null;if(typeof a=="function")try{let h=a(l);return h===void 0?d(l):h}catch(h){return console.warn("Custom autoDefine.mapper error; falling back to default:",h?.message||h),d(l)}return d(l)}};i&&(y=new i(m),r.length>0&&typeof i.define=="function"&&await i.define(...r,{baseURL:n,mapper:m.mapper,onError:m.onError}))}return{autoDefiner:y,mergedEnhancers:S}}var H=["light","dark"],q=new Set(H);function _e(e){let n=(Array.isArray(e?.themes)?e.themes.map(r=>String(r).toLowerCase()):H).filter(r=>q.has(r));return n.length?n:H}function K(e,{preferDocument:t=!0}={}){let n=String(e||"").toLowerCase();if(q.has(n))return n;if(t&&typeof document<"u"){let r=document.documentElement?.getAttribute("data-theme");if(q.has(r))return r}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function le(e,t){let n=K(t);return _e(e).includes(n)}var Q=class extends EventTarget{},o=new Q;o.initializing=!1;o.currentPreset=null;o.debug=!1;var j=null,$=null,I=null,O=null;function x(e,t){return t&&typeof t=="string"?t:`${C(o.currentConfig||{},{resolvePublicAssetURL:M})}core/${e}`}async function Ae(){return Array.isArray(o.defaultEnhancers)&&o.defaultEnhancers.length>0?o.defaultEnhancers:(O||(O=import(x("pds-enhancers.js",o.currentConfig?.enhancersURL)).then(t=>{let n=Array.isArray(t?.defaultPDSEnhancers)?t.defaultPDSEnhancers:[];return o.defaultEnhancers=n,n}).catch(t=>{throw O=null,t})),O)}async function ve(){return typeof o.ask=="function"&&o.ask!==ue?o.ask:($||($=import(x("pds-ask.js",o.currentConfig?.askURL)).then(t=>{let n=t?.ask;if(typeof n!="function")throw new Error("Failed to load ask helper");return o.ask=n,n}).catch(t=>{throw $=null,t})),$)}async function P(){return typeof o.toast=="function"&&o.toast!==A?o.toast:(I||(I=import(x("pds-toast.js",o.currentConfig?.toastURL)).then(t=>{let n=t?.toast;if(typeof n!="function")throw new Error("Failed to load toast helper");return o.toast=n,n}).catch(t=>{throw I=null,t})),I)}async function ue(...e){return(await ve())(...e)}async function A(...e){return(await P())(...e)}A.success=async(...e)=>(await P()).success(...e);A.error=async(...e)=>(await P()).error(...e);A.warning=async(...e)=>(await P()).warning(...e);A.info=async(...e)=>(await P()).info(...e);var de=function(e="log",t,...n){let r=!!(o.registry&&!o.registry.isLive),a=(this?.debug||this?.design?.debug||o.debug||!1)===!0;if(r){if(!o.debug)return}else if(!a&&e!=="error"&&e!=="warn")return;let s=console[e]||console.log;n.length>0?s(t,...n):s(t)};function J(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=>J(n)).filter(n=>n!==void 0);let t={};for(let[n,r]of Object.entries(e)){let a=J(r);a!==void 0&&(t[n]=a)}return t}async function De(e,t={}){if(t?.runtimeConfig===!1||typeof fetch!="function")return null;let n=t?.runtimeConfigURL||`${e}pds-runtime-config.json`;try{let r=await fetch(n,{cache:"no-store"});return r.ok?await r.json():null}catch{return null}}o.registry=_;o.enums=ee;o.adoptLayers=Y;o.adoptPrimitives=X;o.parse=B;o.createStylesheet=Z;o.isLiveMode=()=>_.isLive;o.ask=ue;o.toast=A;o.common=V;o.AutoComplete=null;o.loadAutoComplete=async()=>{if(o.AutoComplete&&typeof o.AutoComplete.connect=="function")return o.AutoComplete;let e=x("pds-autocomplete.js",o.currentConfig?.autoCompleteURL);return j||(j=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 o.AutoComplete=n,n}).catch(t=>{throw j=null,t})),j};function pe(e){let t=typeof CustomEvent=="function";try{let n=t?new CustomEvent("pds:ready",{detail:e}):new Event("pds:ready");o.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 fe(e={}){let t=typeof CustomEvent=="function",n={at:Date.now(),...e};try{let r=t?new CustomEvent("pds:config-changed",{detail:n}):new Event("pds:config-changed");o.dispatchEvent(r)}catch{}if(typeof document<"u")if(t){let r={detail:n,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",r))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var G="pure-ds-theme",b=null,R=null;function N(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 z(e){try{if(b&&R){try{typeof b.removeEventListener=="function"?b.removeEventListener("change",R):typeof b.removeListener=="function"&&b.removeListener(R)}catch{}b=null,R=null}if(e==="system"&&typeof window<"u"&&window.matchMedia){let t=window.matchMedia("(prefers-color-scheme: dark)"),n=r=>{let a=r?.matches===void 0?t.matches:r.matches;try{let s=a?"dark":"light";document.documentElement.setAttribute("data-theme",s),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:s,source:"system"}}))}catch{}};b=t,R=n,typeof t.addEventListener=="function"?t.addEventListener("change",n):typeof t.addListener=="function"&&t.addListener(n)}}catch{}}Object.defineProperty(o,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(G)||null}catch{return null}},set(e){try{if(typeof window>"u")return;let t=o.currentConfig?.design||null,n=K(e);if(t&&!le(t,n)){let r=t?.name||o.currentPreset?.name||o.currentConfig?.preset||"current preset";console.warn(`PDS theme "${n}" not supported by preset "${r}".`),o.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:e,resolvedTheme:n,preset:r}}));return}e==null?localStorage.removeItem(G):localStorage.setItem(G,e),N(e),z(e),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:e,source:"api"}}))}catch{}}});o.defaultEnhancers=[];async function Re(e){let t=e&&e.mode||"live",{mode:n,...r}=e||{};if(t==="static")return xe(r);let a=C(r,{resolvePublicAssetURL:M}),s=r?.managerURL||r?.public?.managerURL||r?.manager?.url||new URL("core/pds-manager.js",a).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:c}=await import(s);return c(o,r,{emitReady:pe,emitConfigChanged:fe,applyResolvedTheme:N,setupSystemListenerIfNeeded:z})}o.start=Re;async function xe(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,r=e.themeStorageKey??"pure-ds-theme",a=e.staticPaths??{},s=C(e,{resolvePublicAssetURL:M}),c=e&&e.autoDefine||null,f;c&&c.baseURL?f=T(U(c.baseURL,{preferModule:!1})):f=`${s}components/`;let E=c&&Array.isArray(c.predefine)&&c.predefine||[],S=c&&typeof c.mapper=="function"&&c.mapper||null;try{ie(o);let{resolvedTheme:y}=ae({manageTheme:n,themeStorageKey:r,applyResolvedTheme:N,setupSystemListenerIfNeeded:z}),i=await De(s,e),d=Array.isArray(e?.enhancers)?e.enhancers:e?.enhancers&&typeof e.enhancers=="object"?Object.values(e.enhancers):[],u=i?.config?{...i.config,...e,design:e?.design||i.config.design,preset:e?.preset||i.config.preset}:{...e},w={tokens:`${s}styles/pds-tokens.css.js`,primitives:`${s}styles/pds-primitives.css.js`,components:`${s}styles/pds-components.css.js`,utilities:`${s}styles/pds-utilities.css.js`,styles:`${s}styles/pds-styles.css.js`},p=i?.paths||{};if(a={...w,...p,...a},o.registry.setStaticMode(a),t&&typeof document<"u")try{let g=await o.registry.getStylesheet("styles");if(g){g._pds=!0;let L=(document.adoptedStyleSheets||[]).filter(F=>F._pds!==!0);document.adoptedStyleSheets=[...L,g],fe({mode:"static",source:"static:styles-applied"})}}catch(g){de.call(o,"warn","Failed to apply static styles:",g)}let m=null,l=[];try{let g=await Ae(),L=await ce({autoDefineBaseURL:f,autoDefinePreload:E,autoDefineMapper:S,autoDefinerModuleURL:x("pds-auto-definer.js",c?.moduleURL||o.currentConfig?.autoDefinerURL),enhancers:d,autoDefineOverrides:c||null,autoDefinePreferModule:!(c&&c.baseURL)},{baseEnhancers:g});m=L.autoDefiner,l=L.mergedEnhancers||[]}catch(g){de.call(o,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",g)}let h=J(e);return o.currentConfig=Object.freeze({mode:"static",...structuredClone(h),design:structuredClone(u.design||{}),preset:u.preset,theme:y,enhancers:l}),pe({mode:"static",config:u,theme:y,autoDefiner:m}),{config:u,theme:y,autoDefiner:m}}catch(y){throw o.dispatchEvent(new CustomEvent("pds:error",{detail:{error:y}})),y}}var Be=N,Ve=z;export{o as PDS,Be as applyResolvedTheme,Ve as setupSystemListenerIfNeeded};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LitElement, html, nothing, ifDefined, ref, keyed } from "#pds/lit";
|
|
2
|
+
import { PDS } from "#pds";
|
|
2
3
|
|
|
3
4
|
function getStep(value) {
|
|
4
5
|
if (typeof value === "number") {
|
|
@@ -214,17 +215,17 @@ export class SchemaForm extends LitElement {
|
|
|
214
215
|
// Start with default options
|
|
215
216
|
let merged = { ...DEFAULT_OPTIONS };
|
|
216
217
|
|
|
217
|
-
// Try to get preset options from
|
|
218
|
-
if (
|
|
219
|
-
merged =
|
|
218
|
+
// Try to get preset options from PDS if available
|
|
219
|
+
if (PDS?.config?.form?.options) {
|
|
220
|
+
merged = PDS.common.deepMerge(
|
|
220
221
|
merged,
|
|
221
|
-
|
|
222
|
+
PDS.config.form.options
|
|
222
223
|
);
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
// Merge instance options
|
|
226
227
|
if (this.options) {
|
|
227
|
-
merged =
|
|
228
|
+
merged = PDS.common.deepMerge(merged, this.options);
|
|
228
229
|
}
|
|
229
230
|
|
|
230
231
|
this.#mergedOptions = merged;
|
|
@@ -946,7 +947,7 @@ export class SchemaForm extends LitElement {
|
|
|
946
947
|
|
|
947
948
|
try {
|
|
948
949
|
// Use PDS.ask to show dialog with form - it returns FormData when useForm: true
|
|
949
|
-
const formData = await
|
|
950
|
+
const formData = await PDS.ask(
|
|
950
951
|
html`<pds-form
|
|
951
952
|
.jsonSchema=${dialogSchema}
|
|
952
953
|
.values=${currentValue}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { PDS } from "#pds";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* SVG Icon Web Component
|
|
3
5
|
*
|
|
@@ -71,9 +73,10 @@ export class SvgIcon extends HTMLElement {
|
|
|
71
73
|
|
|
72
74
|
const docEl = document.documentElement;
|
|
73
75
|
const hasNoSpriteFlag = Boolean(docEl && docEl.dataset && Object.prototype.hasOwnProperty.call(docEl.dataset, 'pdsNoSprite'));
|
|
76
|
+
const globalScope = typeof globalThis !== 'undefined' ? globalThis : null;
|
|
74
77
|
const globalDisable = Boolean(
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
globalScope?.__PDS_DISABLE_SVG_SPRITES === true ||
|
|
79
|
+
globalScope?.PDS_DISABLE_SVG_SPRITES === true ||
|
|
77
80
|
hasNoSpriteFlag
|
|
78
81
|
);
|
|
79
82
|
|
|
@@ -161,7 +164,7 @@ export class SvgIcon extends HTMLElement {
|
|
|
161
164
|
const rotate = this.getAttribute('rotate') || '0';
|
|
162
165
|
|
|
163
166
|
// Parse size - can be number (px) or named size (xs, sm, md, lg, xl, 2xl, 3xl)
|
|
164
|
-
const pdsEnums =
|
|
167
|
+
const pdsEnums = PDS?.enums || null;
|
|
165
168
|
const pdsIconSizes = pdsEnums?.IconSizes || {};
|
|
166
169
|
const numericSize = Number(sizeAttr);
|
|
167
170
|
const hasNumericSize = Number.isFinite(numericSize) && sizeAttr !== '';
|
|
@@ -580,16 +583,16 @@ export class SvgIcon extends HTMLElement {
|
|
|
580
583
|
static getExternalIconPath() {
|
|
581
584
|
try {
|
|
582
585
|
// Try to get from PDS.compiled.tokens.icons.externalPath (live mode)
|
|
583
|
-
if (
|
|
584
|
-
return
|
|
586
|
+
if (PDS?.compiled?.tokens?.icons?.externalPath) {
|
|
587
|
+
return PDS.compiled.tokens.icons.externalPath;
|
|
585
588
|
}
|
|
586
589
|
// Fallback: check compiled.config.design.icons.externalPath
|
|
587
|
-
if (
|
|
588
|
-
return
|
|
590
|
+
if (PDS?.compiled?.config?.design?.icons?.externalPath) {
|
|
591
|
+
return PDS.compiled.config.design.icons.externalPath;
|
|
589
592
|
}
|
|
590
593
|
// Fallback: check currentConfig
|
|
591
|
-
if (
|
|
592
|
-
return
|
|
594
|
+
if (PDS?.currentConfig?.design?.icons?.externalPath) {
|
|
595
|
+
return PDS.currentConfig.design.icons.externalPath;
|
|
593
596
|
}
|
|
594
597
|
} catch (e) {
|
|
595
598
|
// Ignore errors accessing config
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const COMPONENT_TAG = "pds-live-converter";
|
|
2
|
+
|
|
3
|
+
class PdsLiveConverter extends HTMLElement {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
this.result = null;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
connectedCallback() {
|
|
10
|
+
this._render();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
setResult(result) {
|
|
14
|
+
this.result = result || null;
|
|
15
|
+
this._render();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
_render() {
|
|
19
|
+
const confidence = this.result?.confidence;
|
|
20
|
+
const issues = Array.isArray(this.result?.issues) ? this.result.issues : [];
|
|
21
|
+
const confidenceLabel = typeof confidence === "number" ? `${Math.round(confidence * 100)}%` : "-";
|
|
22
|
+
const issueLabel = issues.length ? `${issues.length}` : "0";
|
|
23
|
+
|
|
24
|
+
this.className = "card surface-base stack-sm";
|
|
25
|
+
this.innerHTML = `
|
|
26
|
+
<div class="flex items-center justify-between">
|
|
27
|
+
<strong>Conversion Report</strong>
|
|
28
|
+
<span class="badge ${issues.length ? "badge-warning" : "badge-success"}">${issues.length ? "Needs review" : "Ready"}</span>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="grid grid-cols-2 gap-sm">
|
|
31
|
+
<div class="card surface-subtle stack-xs">
|
|
32
|
+
<small class="text-muted">Confidence</small>
|
|
33
|
+
<strong>${confidenceLabel}</strong>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="card surface-subtle stack-xs">
|
|
36
|
+
<small class="text-muted">Issues</small>
|
|
37
|
+
<strong>${issueLabel}</strong>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="stack-xs">
|
|
41
|
+
${issues.length ? `<p class="text-muted">${issues[0]?.message || ""}</p>` : "<p class=\"text-muted\">No issues reported.</p>"}
|
|
42
|
+
</div>
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
customElements.define(COMPONENT_TAG, PdsLiveConverter);
|