@widgentic/designer 0.3.0 → 0.6.0
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/README.md +32 -0
- package/dist/action-editor.d.ts.map +1 -1
- package/dist/action-editor.js +3 -3
- package/dist/action-editor.js.map +1 -1
- package/dist/browser/widgentic-designer.js +5 -5
- package/dist/browser/widgentic-designer.js.map +2 -2
- package/dist/chrome-defaults.d.ts +14 -0
- package/dist/chrome-defaults.d.ts.map +1 -1
- package/dist/chrome-defaults.js +16 -0
- package/dist/chrome-defaults.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -184,7 +184,7 @@ ${Yt(e.dark,n," ")}
|
|
|
184
184
|
}`];return t.darkSelector!==void 0&&o.push(`${t.darkSelector} {
|
|
185
185
|
${Yt(e.dark,n," ")}
|
|
186
186
|
}`),o.join(`
|
|
187
|
-
`)}function
|
|
187
|
+
`)}function pe(e,t){let n=e.querySelector(t);if(n===null)throw new Error(`Designer chrome is missing a <${t}> element.`);return n}function s(e,t,n){let r=document.createElement(e);if(t)for(let[i,o]of Object.entries(t))r.setAttribute(i,o);if(n)for(let i of n)r.append(i);return r}function Ae(e,t,n){let r=s("input",{type:"text",class:"wgd-input"});return r.value=t,r.addEventListener("input",()=>n(r.value)),s("label",{class:"wgd-field"},[s("span",{class:"wgd-field-label"},[e]),r])}function xt(e,t,n,r=6){let i=s("textarea",{class:"wgd-textarea",rows:String(r),spellcheck:"false"});return i.value=t,i.addEventListener("input",()=>n(i.value)),s("label",{class:"wgd-field"},[...e===""?[]:[s("span",{class:"wgd-field-label"},[e])],i])}function Z(e,t,n=!0){let r={class:"wgd-section"};return n&&(r.open=""),s("details",r,[s("summary",{class:"wgd-section-title"},[e]),s("div",{class:"wgd-section-body"},t)])}function be(e){let t=()=>{let n=e.options[e.selectedIndex]?.text??e.value;e.style.width=`calc(${Math.max(n.length,1)}ch + 1.2em + 18px)`};t(),e.addEventListener("change",t)}function Zt(e,t,n,r){let i=s("span",{class:"wgd-menuwrap"}),o=s("button",{class:"wgd-icon wgd-menu-toggle",type:"button",title:t},[e]),a=s("div",{class:"wgd-menu"});a.hidden=!0;let g=()=>{a.hidden=!0,document.removeEventListener("pointerdown",c,!0),document.removeEventListener("keydown",l,!0)},c=u=>{i.contains(u.target)||g()},l=u=>{u.key==="Escape"&&g()};o.addEventListener("click",()=>{if(!a.hidden){g();return}a.hidden=!1,document.addEventListener("pointerdown",c,!0),document.addEventListener("keydown",l,!0)});for(let u of n){let p=s("button",{class:"wgd-menu-item",type:"button"},[u]);p.addEventListener("click",()=>{g(),r(u)}),a.append(p)}return i.append(o,a),i}function G(e){let t=s("div",{class:"wgd-diagnostic"},e===void 0?[]:[e]);return e===void 0&&t.setAttribute("hidden",""),t}var Fr=new Set(Xt),Kr=/^(inherit|initial|unset|revert|revert-layer)$/i;function De(e,t){if(t!==void 0)for(let[n,r]of Object.entries(t))Fr.has(n)&&(typeof r!="string"||Kr.test(r.trim())||e.style.setProperty(`--wgd-${n}`,r))}function Pn(e){if(e!==null)try{let t=JSON.parse(e);return typeof t!="object"||t===null||Array.isArray(t)?void 0:t}catch{return}}var Wn="data-widgentic-designer";function Oe(e){if(e.head.querySelector(`style[${Wn}]`))return;let t=e.createElement("style");t.setAttribute(Wn,"chrome"),t.textContent=`
|
|
188
188
|
/* Chrome tokens (CHROME_TOKENS), generated from CHROME_DEFAULTS so the
|
|
189
189
|
exported palette IS the applied one. A host overrides any of them through
|
|
190
190
|
options.chrome (inline on the root, which outranks these rules). Widget
|
|
@@ -409,9 +409,9 @@ textarea.wgd-hl-input {
|
|
|
409
409
|
`)),e.replaceChildren(...n)}function ae(e){let t=e.parentNode;if(t===null)return()=>{};let n=document.createElement("div");n.className="wgd-hlwrap";let r=document.createElement("pre");r.className="wgd-hl",r.setAttribute("aria-hidden","true"),t.insertBefore(n,e),n.append(r,e),e.classList.add("wgd-hl-input");let i=()=>{In(r,e.value),r.scrollTop=e.scrollTop,r.scrollLeft=e.scrollLeft},o=()=>{r.scrollTop=e.scrollTop,r.scrollLeft=e.scrollLeft},a=g=>{if(g.key!=="Tab"||g.shiftKey||e.readOnly)return;g.preventDefault();let{selectionStart:c,selectionEnd:l,value:u}=e;e.value=`${u.slice(0,c)} ${u.slice(l)}`,e.selectionStart=e.selectionEnd=c+2,e.dispatchEvent(new Event("input",{bubbles:!0}))};return e.addEventListener("input",i),e.addEventListener("scroll",o),e.addEventListener("keydown",a),i(),()=>{e.removeEventListener("input",i),e.removeEventListener("scroll",o),e.removeEventListener("keydown",a),e.classList.remove("wgd-hl-input"),n.replaceWith(e)}}function ce(e){let t=e.parentElement?.querySelector(".wgd-hl");t instanceof HTMLElement&&In(t,e.value)}function en(e){let t=[];if(!x(e))return["Definition must be an object."];(typeof e.kind!="string"||e.kind.trim()==="")&&t.push("'kind' must be a non-empty string.");let n=Te(e.template);if(n.ok||t.push(`template: ${n.error.code} \u2014 ${n.error.message}`),x(e.descriptor)?typeof e.descriptor.description!="string"&&t.push("'descriptor.description' must be a string."):t.push("'descriptor' must be an object."),e.load!==void 0){let r=Ge(e.load,"load",{isPath:i=>me(i)!==void 0});r&&t.push(`load: ${r.message} (at ${r.path})`)}return t}function Gr(e){let t={kind:e.kind,template:e.template,descriptor:e.descriptor,...e.load!==void 0?{load:e.load}:{}};return JSON.stringify(t,null,2)}function Yr(e){return JSON.stringify(e.theme??{},null,2)}function Xr(e){let t;try{t=JSON.parse(e)}catch(r){return{ok:!1,errors:[`Invalid JSON: ${se(r)}`]}}let n=en(t);return n.length>0?{ok:!1,errors:n}:{ok:!0,definition:t}}function tn(e,t){let n=e.get().theme;e.replace({kind:t.kind,template:t.template,descriptor:t.descriptor,...t.load!==void 0?{load:t.load}:{},...n!==void 0?{theme:n}:{}})}function Zr(e){return e.split(/[^a-zA-Z0-9]+/).filter(t=>t.length>0).map((t,n)=>n===0?t:t[0]?.toUpperCase()+t.slice(1)).join("")}function Qr(e){return`import type { CustomWidget } from "./index.js";
|
|
410
410
|
|
|
411
411
|
export const ${Zr(e.kind)||"custom"}Widget: CustomWidget = ${JSON.stringify({kind:e.kind,template:e.template,descriptor:e.descriptor,...e.load!==void 0?{load:e.load}:{}},null,2)};
|
|
412
|
-
`}function Mn(e){let t=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"});function n(u,p){let m=s("button",{class:"wgd-button wgd-add",type:"button"},[u]);return m.addEventListener("click",()=>{t.value=p(),ce(t)}),m}let r=G(void 0),i=xt("Import widget JSON","",()=>{},5),o=
|
|
413
|
-
`);return}r.hidden=!0,r.textContent="",tn(e,u.definition)});let g=Z("Import",[i,r,s("div",{class:"wgd-row"},[a])]),c=Z("Export",[s("div",{class:"wgd-row"},[n("Export widget JSON",()=>Gr(e.get())),n("Export theme JSON",()=>Yr(e.get())),n("Copy as TypeScript",()=>Qr(e.get()))]),t]);c.classList.add("wgd-view-only");let l=s("div",{class:"wgd-io"},[g,c]);return ae(t),{element:l,dispose:()=>l.remove()}}var ei=["string","number","boolean","null","object","array"];function nn(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function ti(e,t){switch(e){case"string":return typeof t=="number"||typeof t=="boolean"?String(t):"";case"number":{let n=Number(t);return Number.isFinite(n)?n:0}case"boolean":return t==="true"?!0:!!t&&t!=="false";case"null":return null;case"object":return{};case"array":return[]}}function ve(e,t,n,r=!1){if(t.length===0)return n;let[i,...o]=t;if(Array.isArray(e)){let a=[...e];return o.length===0&&r?a.splice(i,1):a[i]=ve(a[i],o,n,r),a}if(typeof e=="object"&&e!==null){let a={...e};return o.length===0&&r?delete a[i]:a[i]=ve(a[i],o,n,r),a}return e}function ni(e,t,n,r){let i=t.reduce((a,g)=>typeof a=="object"&&a!==null?a[g]:void 0,e);if(typeof i!="object"||i===null||Array.isArray(i))return e;let o=Object.entries(i).map(([a,g])=>a===n?[r,g]:[a,g]);return ve(e,t,Object.fromEntries(o))}function _n(e,t){let n=e,r=s("div",{class:"wgd-jsontree"});function i(p){n=p,u(),t(n)}function o(p,m,w){let f=m==="number"?Number.isFinite(Number(w))?Number(w):0:w;n=ve(n,p,f),t(n)}function a(p,m){let w=s("select",{class:"wgd-select wgd-jt-type"});for(let f of ei)w.append(s("option",{value:f},[f]));return w.value=nn(p),w.addEventListener("change",()=>i(ve(n,m,ti(w.value,p)))),w}function g(p,m){let w=nn(p);if(w==="boolean"){let f=s("input",{type:"checkbox"});return f.checked=p,f.addEventListener("change",()=>i(ve(n,m,f.checked))),f}if(w==="null")return s("code",void 0,["null"]);if(w==="string"||w==="number"){let f=s("input",{type:"text",class:"wgd-input"});return f.value=String(p),f.addEventListener("change",()=>o(m,w,f.value)),f}return s("span")}function c(p,m,w,f){let y=s("div",{class:"wgd-jt-row"},[p,a(m,w)]),v=nn(m);if(v!=="object"&&v!=="array"&&y.append(g(m,w)),f){let k=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);k.addEventListener("click",()=>i(ve(n,w,void 0,!0))),y.append(k)}let S=s("div",{class:"wgd-jt-entry"},[y]);return(v==="object"||v==="array")&&S.append(l(m,w)),S}function l(p,m){let w=s("div",{class:"wgd-jt-children"});if(Array.isArray(p)){p.forEach((v,S)=>{w.append(c(s("span",{class:"wgd-jt-key"},[String(S)]),v,[...m,S],!0))});let y=s("button",{class:"wgd-button wgd-add",type:"button"},["+ item"]);y.addEventListener("click",()=>i(ve(n,[...m,p.length],""))),w.append(s("div",{class:"wgd-toolbar"},[y]))}else if(typeof p=="object"&&p!==null){for(let[v,S]of Object.entries(p)){let k=s("input",{type:"text",class:"wgd-input wgd-jt-keyinput"});k.value=v,k.addEventListener("change",()=>i(ni(n,m,v,k.value))),w.append(c(k,S,[...m,v],!0))}let y=s("button",{class:"wgd-button wgd-add",type:"button"},["+ property"]);y.addEventListener("click",()=>{let v=p,S="key";for(let k=1;S in v;k++)S=`key${k}`;i(ve(n,[...m,S],""))}),w.append(s("div",{class:"wgd-toolbar"},[y]))}return s("details",{class:"wgd-jt-branch",open:""},[s("summary",{class:"wgd-jt-summary"},[Array.isArray(p)?`[ ${p.length} item${p.length===1?"":"s"} ]`:`{ ${Object.keys(p).length} propert${Object.keys(p).length===1?"y":"ies"} }`]),w])}function u(){r.replaceChildren(c(s("span",{class:"wgd-jt-key"},["value"]),n,[],!1))}return u(),{element:r,getValue:()=>n,setValue(p){r.contains(document.activeElement)||(n=p,u())}}}var Hn=["object","array","string","number","integer","boolean","null","any"],Bn=new Set(["string","number","integer","any"]);function Ve(e,t){let n=e,r=s("div",{class:"wgd-schemabuilder"});function i(c,l=!0){n=c,t(n),l&&g()}function o(c,l,u){let p={...c};return u===void 0?delete p[l]:p[l]=u,p}function a(c,l,u,p=[],m=[]){let w=[],f=s("select",{class:"wgd-select wgd-sb-type"});for(let T of Hn)f.append(s("option",{value:T},[T]));let y=c.type,v=Array.isArray(y)?y.filter(T=>typeof T=="string"):void 0,S=v?.includes("null")??!1,k=typeof y=="string"?y:v?.find(T=>T!=="null")??(S?"null":"any");f.value=Hn.some(T=>T===k)?k:"any",be(f);let N=s("input",{type:"checkbox",title:"Also allows null"});N.checked=S,N.disabled=f.value==="any"||f.value==="null";function R(T,_){if(T!=="any")return _&&T!=="null"?[T,"null"]:T}N.addEventListener("change",()=>{l(o(c,"type",R(f.value,N.checked)))}),f.addEventListener("change",()=>{let T=o(c,"type",R(f.value,N.checked));f.value!=="object"&&(T=o(o(T,"properties",void 0),"required",void 0)),f.value!=="array"&&(T=o(T,"items",void 0)),f.value!=="string"&&(T=o(T,"pattern",void 0)),Bn.has(f.value)||(T=o(T,"enum",void 0)),l(T)}),w.push(s("div",{class:"wgd-sb-row"},[...p,f,s("label",{class:"wgd-sb-req wgd-sb-null",title:"Also allows null"},[N,"null"]),...m]));let P=[];if(f.value==="string"){let T=s("input",{type:"text",class:"wgd-input wgd-sb-constraint",placeholder:"pattern (regex, optional)"});T.value=typeof c.pattern=="string"?c.pattern:"",T.addEventListener("change",()=>l(o(c,"pattern",T.value===""?void 0:T.value))),P.push(s("span",{class:"wgd-sb-label"},["pattern"]),T)}let z=G(void 0);if(Bn.has(f.value)){let T=s("input",{type:"text",class:"wgd-input wgd-sb-constraint",placeholder:'enum ["a","b"] (optional)'});T.value=Array.isArray(c.enum)?JSON.stringify(c.enum):"",T.addEventListener("change",()=>{if(T.value.trim()===""){z.hidden=!0,l(o(c,"enum",void 0));return}try{let _=JSON.parse(T.value);if(!Array.isArray(_))throw new Error("must be a JSON array");z.hidden=!0,l(o(c,"enum",_))}catch(_){z.hidden=!1,z.textContent=`enum ignored: ${se(_)}`}}),P.push(s("span",{class:"wgd-sb-label"},["enum"]),T)}if(P.length>0&&w.push(s("div",{class:"wgd-sb-row wgd-sb-constraints"},P),z),f.value==="object"){let T=x(c.properties)?c.properties:{},_=Array.isArray(c.required)?c.required.filter(M=>typeof M=="string"):[],F=s("div",{class:"wgd-jt-children"});for(let[M,E]of Object.entries(T)){let b=s("input",{type:"text",class:"wgd-input wgd-sb-prop",placeholder:"property name"});b.value=M,b.addEventListener("change",()=>{let C=Object.entries(T).map(([$,D])=>$===M?[b.value,D]:[$,D]),H=_.map($=>$===M?b.value:$);l(o(o(c,"properties",Object.fromEntries(C)),"required",H.length>0?H:void 0))});let j=s("input",{type:"checkbox",title:"required"});j.checked=_.includes(M),j.addEventListener("change",()=>{let C=j.checked?[..._,M]:_.filter(H=>H!==M);l(o(c,"required",C.length>0?C:void 0))});let W=s("button",{class:"wgd-icon",type:"button",title:"Remove property"},["\u2715"]);W.addEventListener("click",()=>{let{[M]:C,...H}=T;l(o(o(c,"properties",Object.keys(H).length>0?H:void 0),"required",_.filter($=>$!==M).length>0?_.filter($=>$!==M):void 0))}),F.append(a(x(E)?E:{},C=>l(o(c,"properties",{...T,[M]:C})),u+1,[b],[s("label",{class:"wgd-sb-req",title:"required"},[j,"req"]),W]))}let U=s("button",{class:"wgd-button wgd-add",type:"button"},["+ property"]);U.addEventListener("click",()=>{let M="field";for(let E=1;M in T;E++)M=`field${E}`;l(o(c,"properties",{...T,[M]:{type:"string"}}))}),F.append(s("div",{class:"wgd-toolbar"},[U])),w.push(F)}return f.value==="array"&&w.push(s("div",{class:"wgd-slot"},[a(x(c.items)?c.items:{},T=>l(o(c,"items",T)),u+1,[s("span",{class:"wgd-sb-label"},["items"])])])),s("div",{class:u===0?"wgd-sb-root":"wgd-sb-node"},w)}function g(){if(n===void 0){let l=s("button",{class:"wgd-button wgd-add",type:"button"},["+ add a data schema"]);l.addEventListener("click",()=>i({type:"object"})),r.replaceChildren(s("div",void 0,[s("span",{class:"wgd-sb-label"},["No schema \u2014 data is accepted leniently."]),s("div",{class:"wgd-toolbar"},[l])]));return}let c=s("button",{class:"wgd-button wgd-add wgd-remove",type:"button"},["remove schema"]);c.addEventListener("click",()=>i(void 0)),r.replaceChildren(a(n,l=>i(l),0),s("div",{class:"wgd-toolbar"},[c]))}return g(),{element:r,getValue:()=>n,setValue(c){r.contains(document.activeElement)||(n=c,g())}}}function kt(e,t,n){let r=e,i=s("div",{class:"wgd-record"});function o(c){r=Object.keys(c).length>0?c:void 0,n(r),g()}function a(c,l,u,p){let m=s("input",{type:"text",class:u,placeholder:l,spellcheck:"false"});return m.value=c,m.addEventListener("change",()=>p(m.value)),m}function g(){let c=r??{},l=Object.entries(c).map(([p,m])=>{let w=a(p,t.key,"wgd-input wgd-rec-key",v=>{let S=Object.entries(c).map(([k,N])=>k===p?[v,N]:[k,N]);o(Object.fromEntries(S))}),f=a(m,t.value,"wgd-input wgd-rec-value",v=>o({...c,[p]:v})),y=s("button",{class:"wgd-icon",type:"button",title:"Remove entry"},["\u2715"]);return y.addEventListener("click",()=>{let{[p]:v,...S}=c;o(S)}),s("div",{class:"wgd-rec-row"},[w,s("span",{class:"wgd-st-colon"},[":"]),f,y])}),u=s("button",{class:"wgd-button wgd-add wgd-st-add",type:"button"},[t.add]);u.addEventListener("click",()=>{let p="";for(let m=1;p in c;m++)p=`key${m}`;o({...c,[p]:""})}),i.replaceChildren(...l,s("div",{class:"wgd-toolbar"},[u]))}return g(),{element:i,getValue:()=>r,setValue(c){i.contains(document.activeElement)||(r=c,g())}}}function zn(e){let t=e.type;if(typeof t=="string")return t;if(Array.isArray(t)){let n=t.find(r=>typeof r=="string"&&r!=="null");if(typeof n=="string")return n;if(t.includes("null"))return"null"}}function Ze(e){if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum[0];switch(zn(e)){case"object":{let t={};if(x(e.properties)&&Array.isArray(e.required))for(let n of e.required)typeof n=="string"&&x(e.properties[n])&&(t[n]=Ze(e.properties[n]));return t}case"array":return[];case"number":case"integer":return 0;case"boolean":return!1;case"null":return null;default:return""}}function Et(e,t,n){let r=t??Ze(e),i=s("div",{class:"wgd-schemaform"});function o(u,p,m,w=!1){if(p.length===0)return m;let[f,...y]=p;if(Array.isArray(u)){let S=[...u];return y.length===0&&w?S.splice(f,1):S[f]=o(S[f],y,m,w),S}let v=x(u)?{...u}:{};return y.length===0&&w?delete v[f]:v[f]=o(v[f],y,m,w),v}function a(u,p,m=!1){r=o(r,u,p),n(r),m&&l()}function g(u,p,m,w){if(Array.isArray(u.enum)){let f=s("select",{class:"wgd-select"});for(let y of u.enum)f.append(s("option",{value:JSON.stringify(y)},[JSON.stringify(y)]));return f.value=JSON.stringify(p??u.enum[0]),f.addEventListener("change",()=>a(m,JSON.parse(f.value))),c(w,f)}switch(zn(u)){case"boolean":{let f=s("input",{type:"checkbox"});return f.checked=p===!0,f.addEventListener("change",()=>a(m,f.checked)),c(w,f)}case"number":case"integer":{let f=s("input",{type:"number",class:"wgd-input"});return f.value=typeof p=="number"?String(p):"0",f.addEventListener("change",()=>{let y=Number(f.value);a(m,Number.isFinite(y)?y:0)}),c(w,f)}case"object":{let f=s("div",{class:"wgd-jt-children"}),y=x(u.properties)?u.properties:{},v=Array.isArray(u.required)?u.required:[],S=x(p)?p:{};for(let[k,N]of Object.entries(y)){if(!x(N))continue;let R=v.includes(k);f.append(g(N,S[k]??(R?Ze(N):void 0),[...m,k],R?`${k} *`:k))}return s("fieldset",{class:"wgd-sf-object"},[s("legend",{class:"wgd-field-label"},[w]),f])}case"array":{let f=x(u.items)?u.items:{},y=Array.isArray(p)?p:[],v=s("div",{class:"wgd-jt-children"});y.forEach((k,N)=>{let R=s("div",{class:"wgd-jt-entry"},[g(f,k,[...m,N],`#${N}`)]),P=s("button",{class:"wgd-icon",type:"button",title:"Remove item"},["\u2715"]);P.addEventListener("click",()=>{r=o(r,[...m,N],void 0,!0),n(r),l()}),R.append(P),v.append(R)});let S=s("button",{class:"wgd-button wgd-add",type:"button"},["+ item"]);return S.addEventListener("click",()=>a([...m,y.length],Ze(f),!0)),v.append(s("div",{class:"wgd-toolbar"},[S])),s("fieldset",{class:"wgd-sf-object"},[s("legend",{class:"wgd-field-label"},[w]),v])}default:{let f=s("input",{type:"text",class:"wgd-input"});return typeof u.pattern=="string"&&(f.setAttribute("placeholder",`pattern: ${u.pattern}`),f.setAttribute("title",`Must match ${u.pattern}`)),f.value=typeof p=="string"?p:p===void 0?"":String(p),f.addEventListener("change",()=>a(m,f.value)),c(w,f)}}}function c(u,p){return s("label",{class:"wgd-field"},[s("span",{class:"wgd-field-label"},[u]),p])}function l(){i.replaceChildren(g(e,r,[],"data"))}return l(),{element:i,getValue:()=>r,setValue(u){i.contains(document.activeElement)||(r=u??Ze(e),l())}}}function Jn(e,t){let n=e,r=s("div",{class:"wgd-styles"});function i(c){n=Object.keys(c).length>0?c:void 0,t(n),g()}function o(c,l,u,p){let m=s("input",{type:"text",class:u,placeholder:l,spellcheck:"false"});return m.value=c,m.addEventListener("change",()=>p(m.value)),m}function a(c,l,u){let p=o(c,".wg-selector","wgd-input wgd-st-selector",y=>{let v=Object.entries(u).map(([S,k])=>S===c?[y,k]:[S,k]);i(Object.fromEntries(v))}),m=s("button",{class:"wgd-icon",type:"button",title:"Add declaration"},["+"]);m.addEventListener("click",()=>{i({...u,[c]:{...l,"":""}})});let w=s("button",{class:"wgd-icon",type:"button",title:"Remove selector"},["\u2715"]);w.addEventListener("click",()=>{let{[c]:y,...v}=u;i(v)});let f=Object.entries(l).map(([y,v])=>{let S=o(y,"property","wgd-input wgd-st-prop",R=>{let P=Object.entries(l).map(([z,T])=>z===y?[R,T]:[z,T]);i({...u,[c]:Object.fromEntries(P)})}),k=o(v,"value (no url(...), no ;)","wgd-input wgd-st-value",R=>{i({...u,[c]:{...l,[y]:R}})}),N=s("button",{class:"wgd-icon",type:"button",title:"Remove declaration"},["\u2715"]);return N.addEventListener("click",()=>{let{[y]:R,...P}=l;i({...u,[c]:P})}),s("div",{class:"wgd-st-decl"},[S,s("span",{class:"wgd-st-colon"},[":"]),k,N])});return s("div",{class:"wgd-st-rule"},[s("div",{class:"wgd-st-row"},[p,s("span",{class:"wgd-node-icons"},[m,w])]),s("div",{class:"wgd-st-decls"},f)])}function g(){let c=n??{},l=s("button",{class:"wgd-button wgd-add wgd-st-add",type:"button"},["+ selector"]);l.addEventListener("click",()=>{let u=".wg-";for(let p=1;u in c;p++)u=`.wg-${p}`;i({...c,[u]:{}})}),r.replaceChildren(...Object.entries(c).map(([u,p])=>a(u,x(p)?p:{},c)),s("div",{class:"wgd-toolbar"},[l]))}return g(),{element:r,getValue:()=>n,setValue(c){r.contains(document.activeElement)||(n=c,g())}}}function xe(e){if(!x(e))return;let t=e.type;if(typeof t=="string")return t;if(Array.isArray(t)){let n=t.find(r=>typeof r=="string"&&r!=="null");if(typeof n=="string")return n}}function St(e,t,n,r=0){if(!(!x(e)||r>3)&&!(xe(e)!=="object"||!x(e.properties)))for(let[i,o]of Object.entries(e.properties)){let a=t===""?i:`${t}.${i}`;n.push({path:a,schema:o}),St(o,a,n,r+1)}}function Tt(e,t){if(t===""||t===".")return e;let n=e;for(let r of t.split(".")){if(!x(n))return;if(xe(n)==="array"){if(n=x(n.items)?n.items:void 0,!/^\d+$/.test(r)){if(!x(n)||!x(n.properties))return;n=n.properties[r]}continue}if(!x(n.properties))return;n=n.properties[r]}return n}function Vn(e,t){if(e===void 0||t===void 0)return!1;let n=r=>r==="integer"?"number":r;return n(e)!==n(t)}function Qe(e){let t=[];return St(e,"",t),t.map(n=>n.path)}var Un="__custom__";function Fn(){return{kind:"prompt",text:["Tell me more about ",{bind:"title"}]}}function qn(){return{kind:"http",method:"GET",url:"https://api.example.com/resource",input:{type:"object",properties:{}},output:{type:"object"}}}function At(e){return"ref"in e&&typeof e.ref=="string"}function ke(e,t,n,r=""){let i=s("input",{type:"text",class:t,placeholder:r});return i.value=e,i.addEventListener("change",()=>n(i.value)),i}function he(e,t,n,r){let i=s("select",{class:n});for(let o of e)i.append(s("option",{value:o.value},[o.label??o.value]));return i.value=t,be(i),i.addEventListener("change",()=>r(i.value)),i}function pe(e){return s("span",{class:"wgd-field-label"},[e])}function et(e){let t=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);return t.addEventListener("click",e),t}function Dt(e,t,n,r,i="wgd-input wgd-rec-value"){if(t.length===0)return ke(e,i,n,r);let o=s("select",{class:"wgd-select wgd-path"}),a=t.includes(e),g=a||e===""?t:[e,...t];o.append(s("option",{value:""},[r]));for(let l of g)o.append(s("option",{value:l},[l===e&&!a?`${l} (off-schema)`:l]));o.append(s("option",{value:Un},["custom\u2026"])),o.value=e,be(o);let c=ke(e,i,n,r);return c.hidden=!0,o.addEventListener("change",()=>{if(o.value===Un){c.hidden=!1,c.focus();return}c.hidden=!0,n(o.value)}),s("span",{class:"wgd-pathwrap"},[o,c])}function Kn(e,t,n,r){let i=ie(e??{}),o=[],a=s("div",{class:"wgd-record wgd-headers"}),g=G(void 0);function c(m){i=m,r(Object.keys(i).length>0?i:void 0),p()}function l(m){g.hidden=!1,g.textContent=`'${m}' is already used; pick another ${n.name} name.`}function u(m,w){let f=x(m),y=he([{value:"literal"},{value:"secret"}],f?"secret":"literal","wgd-select wgd-attr-mode",v=>w(v==="secret"?{secret:t[0]??""}:""));if(f){let v=t.includes(m.secret)?t:[m.secret,...t],S=he(v.map(k=>({value:k,label:k===""?"(pick a secret)":k})),m.secret,"wgd-select wgd-secret",k=>w({secret:k}));return[y,S]}return[y,ke(m,"wgd-input wgd-rec-value",w,"value")]}function p(){a.replaceChildren(),g.hidden=!0;for(let[w,f]of Object.entries(i)){let y=ke(w,"wgd-input wgd-rec-key",k=>{if(k===w)return;if(k===""||Object.hasOwn(i,k)){l(k||"(empty)");return}let N=Object.entries(i).map(([R,P])=>R===w?[k,P]:[R,P]);c(Object.fromEntries(N))},n.name),v=u(f,k=>c({...i,[w]:k})),S=et(()=>{let{[w]:k,...N}=i;c(N)});a.append(s("div",{class:"wgd-rec-row"},[y,...v,S]))}o.forEach((w,f)=>{let y=ke("","wgd-input wgd-rec-key",k=>{if(k!==""){if(Object.hasOwn(i,k)){l(k);return}o.splice(f,1),c({...i,[k]:w.value})}},n.name),v=u(w.value,k=>{w.value=k,p()}),S=et(()=>{o.splice(f,1),p()});a.append(s("div",{class:"wgd-rec-row wgd-rec-pending"},[y,...v,S]))});let m=s("button",{class:"wgd-button wgd-add",type:"button"},[n.add]);m.addEventListener("click",()=>{o.push({value:""}),p()}),a.append(s("div",{class:"wgd-row"},[m]),g)}return p(),a}function ri(e,t){let n=ie(e),r=s("div",{class:"wgd-record wgd-segments"});function i(a){n=a,t(n),o()}function o(){r.replaceChildren(),n.forEach((c,l)=>{let u=typeof c!="string",p=he([{value:"text"},{value:"bind"}],u?"bind":"text","wgd-select wgd-attr-mode",f=>{let y=[...n];y[l]=f==="bind"?{bind:"."}:"",i(y)}),m=ke(u?c.bind:c,"wgd-input wgd-rec-value",f=>{let y=[...n];y[l]=u?{bind:f}:f,i(y)},u?"data path":"text"),w=et(()=>i(n.filter((f,y)=>y!==l)));r.append(s("div",{class:"wgd-rec-row"},[p,m,w]))});let a=s("button",{class:"wgd-button wgd-add",type:"button"},["+ text"]);a.addEventListener("click",()=>i([...n,""]));let g=s("button",{class:"wgd-button wgd-add",type:"button"},["+ bind"]);g.addEventListener("click",()=>i([...n,{bind:"."}])),r.append(s("div",{class:"wgd-row"},[a,g]))}return o(),r}function rn(e,t,n){let r=ie(e??Fn()),i=s("div",{class:"wgd-action-head"}),o=s("div",{class:"wgd-action-schemas"}),a=s("div",{class:"wgd-action-maps"}),g=s("div",{class:"wgd-action-definition"},[i,o,a]);function c(){return r}function l(y,v){r=y,n(ie(r)),v==="all"?f():v==="schemas"&&m()}function u(y,v){let S=Ve(c()[v],R=>{l({...c(),[v]:R??{type:"object"}},"none")}),k=[pe(y),S.element],N=t.schemas??[];if(N.length>0){let R=he([{value:"",label:"copy a shared schema into this action\u2026"},...N.map(P=>({value:P.name}))],"","wgd-select",P=>{let z=N.find(T=>T.name===P);z&&l({...c(),[v]:ie(z.schema)},"schemas")});k.push(s("div",{class:"wgd-row"},[R,pe("(a copy \u2014 later edits to the shared schema do not follow)")]))}return s("div",{class:"wgd-action-schema"},k)}function p(){i.replaceChildren();let y=he([{value:"prompt",label:"prompt \u2014 propose a message"},{value:"http",label:"http \u2014 call an API"}],r.kind,"wgd-select wgd-action-kind",k=>l(k==="http"?qn():Fn(),"all"));if(i.append(s("div",{class:"wgd-row"},[pe("Kind"),y])),r.kind==="prompt"){i.append(pe("Message (literals and bound values; the user reviews and sends it)"),ri(r.text,k=>l({kind:"prompt",text:k},"none")));return}let v=he(Ke.map(k=>({value:k})),r.method,"wgd-select",k=>l({...c(),method:k},"none")),S=ke(r.url,"wgd-input wgd-action-url",k=>l({...c(),url:k},"none"),"https://\u2026");i.append(s("div",{class:"wgd-row"},[pe("Method"),v]),s("label",{class:"wgd-field"},[pe("URL (https, fixed)"),S]))}function m(){o.replaceChildren(),r.kind==="http"&&o.append(u("Input schema (arguments; GET \u2192 query, POST \u2192 JSON body)","input"),u("Output schema (the response must satisfy it)","output"))}function w(){if(a.replaceChildren(),r.kind!=="http")return;let y=t.secretNames??[];a.append(pe("Headers"),Kn(r.headers,y,{add:"+ header",name:"header"},v=>{let{headers:S,...k}=c();l(v===void 0?k:{...k,headers:v},"none")}),pe("Fixed query parameters"),Kn(r.query,y,{add:"+ parameter",name:"parameter"},v=>{let{query:S,...k}=c();l(v===void 0?k:{...k,query:v},"none")}))}function f(){p(),m(),w()}return f(),{element:g,getValue:()=>ie(r),setValue(y){r=ie(y),f()}}}function Ot(e,t,n){let r=e===void 0?void 0:ie(e),i=s("div",{class:"wgd-binding-head"}),o=s("div",{class:"wgd-binding-input"}),a=s("div",{class:"wgd-binding-output"}),g=s("div",{class:"wgd-binding"},[i,o,a]);function c(N){if(N!==void 0)return At(N)?(t.actions??[]).find(R=>R.name===N.ref)?.definition:N.definition}let l=()=>ie(r?.input??{}),u=()=>ie(r?.output??{});function p(N,R){r=N,n(N===void 0?void 0:ie(N)),R==="all"?k():R==="io"?(y(),v()):R==="input"?y():R==="output"&&v()}function m(N,R,P){return{...At(N)?{ref:N.ref}:{definition:N.definition},...R!==void 0&&Object.keys(R).length>0?{input:R}:{},...P!==void 0&&Object.keys(P).length>0?{output:P}:{}}}function w(){return["$index","$parent","$root",...Qe(t.getDataSchema?.()).map(R=>`$root.${R}`)]}function f(){i.replaceChildren();let N=(t.actions??[]).filter(T=>!t.loadOnly||T.definition.kind==="http"&&T.definition.method==="GET"),R=r===void 0?"none":At(r)?"shared":"inline",P=he([{value:"none",label:t.loadOnly?"no load action":"no action"},{value:"shared",label:"shared action"},{value:"inline",label:"inline definition"}],R,"wgd-select wgd-binding-mode",T=>{p(T==="none"?void 0:T==="shared"?{ref:N[0]?.name??""}:{definition:qn()},"all")});if(i.append(s("div",{class:"wgd-row"},[P])),r===void 0)return;if(At(r)){let T=r.ref,_=N.map(M=>M.name),F=(_.includes(T)?_:[T,..._]).map(M=>({value:M,label:M===""?"(pick an action)":_.includes(M)?M:`${M} (unknown)`})),U=he(F,T,"wgd-select wgd-binding-ref",M=>p(m({ref:M},l(),u()),"io"));i.append(s("div",{class:"wgd-row"},[pe("Action"),U]));return}let z=rn(r.definition,t,T=>{p(m({definition:T},l(),u()),"io")});i.append(z.element)}function y(){o.replaceChildren();let N=c(r);if(r===void 0||N?.kind!=="http")return;let R=r,P=x(N.input.properties)?Object.keys(N.input.properties):[],z=t.scopePaths??Qe(t.getDataSchema?.()),T=[...new Set([...z,...w()])],_=l(),F=P.map(U=>{let M=_[U],E=x(M)&&"const"in M,b=he([{value:"path"},{value:"const"}],E?"const":"path","wgd-select wgd-attr-mode",C=>{p(m(R,{...l(),[U]:C==="const"?{const:""}:U},u()),"input")}),j=C=>{let H=l();if(E){let $;try{$=JSON.parse(C)}catch{$=C}H[U]={const:$}}else C===""?delete H[U]:H[U]=C;p(m(R,H,u()),"none")},W=E?ke(JSON.stringify(M.const),"wgd-input wgd-rec-value",j,"JSON literal"):Dt(typeof M=="string"?M:"",T,j,"data path");return s("div",{class:"wgd-rec-row"},[s("span",{class:"wgd-rec-key wgd-binding-field"},[U]),b,W])});o.append(pe("Input mapping (field \u2190 data path or constant)"),P.length>0?s("div",{class:"wgd-record"},F):s("div",{class:"wgd-diagnostic"},["The input schema declares no properties."]))}function v(){a.replaceChildren();let N=c(r);if(r===void 0||N?.kind!=="http")return;let R=r,P=u(),z=P.mode??"merge",T=he(Fe.map(F=>({value:F})),z,"wgd-select",F=>{let U={...u(),mode:F};F!=="patch"&&delete U.path,p(m(R,l(),U),"output")}),_=[pe("Output"),T];z==="patch"&&_.push(ke(P.path??"","wgd-input",F=>{p(m(R,l(),{...u(),path:F}),"output")},"data path to write at")),a.append(s("div",{class:"wgd-row"},_)),a.append(S(N,P,F=>{let U=u();F===void 0?delete U.map:U.map=F,p(m(R,l(),U),"none")}))}function S(N,R,P){let z=s("div",{class:"wgd-record wgd-output-map"}),T=ie(R.map??{}),_=[],F=t.getDataSchema?.(),U=(R.mode??"merge")==="patch"&&R.path?R.path:"",M=U===""?F:Tt(F,U),E=Qe(M),b=[".",...Qe(N.output)],j=G(void 0);j.classList.add("wgd-type-mismatch");function W(D){T=D,P(Object.keys(T).length>0?T:void 0),$()}function C(D){j.hidden=!1,j.textContent=D}function H(D,L){let d=Dt(D,E,L,"target data path","wgd-input wgd-rec-key");return d.classList.add("wgd-map-target"),d}function $(){z.replaceChildren();let D=[];for(let[d,h]of Object.entries(T)){let A=xe(Tt(M,d)),I=xe(Tt(N.output,h));Vn(I,A)&&D.push(`'${h}' is ${I} in the response but '${U?`${U}.`:""}${d}' is ${A} in the widget schema`);let B=H(d,X=>{if(X===d)return;if(X===""||Object.hasOwn(T,X)){C(`'${X||"(empty)"}' is already a projection target.`);return}let ee=Object.entries(T).map(([ne,le])=>ne===d?[X,le]:[ne,le]);W(Object.fromEntries(ee))}),V=Dt(h,b,X=>W({...T,[d]:X}),"response path");V.classList.add("wgd-map-source");let K=et(()=>{let{[d]:X,...ee}=T;W(ee)});z.append(s("div",{class:"wgd-rec-row"},[B,s("span",{class:"wgd-st-colon"},["\u2190"]),V,K]))}_.forEach((d,h)=>{let A=H("",V=>{if(V!==""){if(Object.hasOwn(T,V)){C(`'${V}' is already a projection target.`);return}_.splice(h,1),W({...T,[V]:d.source})}}),I=Dt(d.source,b,V=>{d.source=V,$()},"response path");I.classList.add("wgd-map-source");let B=et(()=>{_.splice(h,1),$()});z.append(s("div",{class:"wgd-rec-row wgd-rec-pending"},[A,s("span",{class:"wgd-st-colon"},["\u2190"]),I,B]))});let L=s("button",{class:"wgd-button wgd-add",type:"button"},["+ projection"]);L.addEventListener("click",()=>{_.push({source:""}),$()}),j.hidden=D.length===0,j.textContent=D.length===0?"":`Type mismatch: ${D.join("; ")}.`,z.append(s("div",{class:"wgd-row"},[L]),j)}return $(),z}function k(){f(),y(),v()}return k(),{element:g,setValue(N){r=N===void 0?void 0:ie(N),k()}}}function Ne(e,t=[]){let n=e.descriptor?.dataSchemaRef;if(typeof n=="string")return t.find(i=>i.name===n)?.schema;let r=e.descriptor?.dataSchema;return x(r)?r:void 0}var ii=new Set(ye().kinds());function oi(e){if(!x(e))return[];let t=[];for(let[n,r]of Object.entries(e)){if(Ce({[n]:{color:"red"}})===""){t.push({selector:n,message:"Selector would be skipped \u2014 every comma-separated part must target a .wg- class and avoid ;{}<>@\\."});continue}if(!x(r)){t.push({selector:n,message:"Declarations must be a property \u2192 value map."});continue}for(let[i,o]of Object.entries(r))(typeof o!="string"||Ce({".wg-probe":{[i]:o}})==="")&&t.push({selector:n,property:i,message:"Declaration would be skipped \u2014 unsafe property name or value (no url(), expression(), or ;{}<>@\\)."})}return t}function Nt(e,t={}){let n={styles:[],previewable:!1};typeof e.kind!="string"||e.kind.trim().length===0?n.kind="Kind must be a non-empty id.":ii.has(e.kind)&&(n.kind=`'${e.kind}' is a built-in kind \u2014 pick a distinct id.`);let r=Te(e.template);if(!r.ok){let a={code:r.error.code,message:r.error.message},g=r.error.path;typeof g=="string"&&(a.path=g),n.template=a}let i=e.descriptor?.dataSchemaRef;typeof i=="string"&&(e.descriptor?.dataSchema!==void 0?n.schemaRef="A descriptor carries 'dataSchema' OR 'dataSchemaRef', never both.":(t.schemas??[]).every(a=>a.name!==i)&&(n.schemaRef=`References unknown schema '${i}' \u2014 it is not among the supplied shared schemas.`));let o=Ne(e,t.schemas??[]);if(x(o)){if(e.descriptor.dataExample!==void 0){let a=Se(o,e.descriptor.dataExample);a&&(n.example=a)}if(e.sampleData!==void 0){let a=Se(o,e.sampleData);a&&(n.sample=a)}}if(n.styles=oi(e.descriptor?.styles),e.load!==void 0){let a=Ge(e.load,"load",{isPath:g=>me(g)!==void 0});a&&(n.load=`${a.message} (at ${a.path})`)}if(t.actions!==void 0){let a=new Set(t.actions.map(c=>c.name)),g=Ye(e.template,e.load).filter(c=>!a.has(c));g.length>0&&(n.actionRefs=`References unknown shared action${g.length===1?"":"s"} ${g.map(c=>`'${c}'`).join(", ")} \u2014 bound elements will render disabled.`)}if(e.theme!==void 0){let a=Pe(e.theme);a.ok||(n.theme=a.error)}return n.previewable=n.kind===void 0&&n.template===void 0,n}function Gn(e,t){let n=[];St(e,"",n);let r=new Set(["string","number","integer","boolean","null",void 0]),o=n.filter(({schema:a})=>{let g=xe(a);return t==="each"?g==="array":t==="bind"?r.has(g):!0}).map(a=>a.path);return t!=="each"&&r.has(xe(e))&&o.unshift("."),o}function si(e,t){if(!x(e)||t===".")return;let n=e;for(let r of t.split(".")){if(!x(n)||!x(n.properties))return;n=n.properties[r]}return x(n)&&xe(n)==="array"?n.items:void 0}var jt=Symbol("remove");function on(e){let t="";for(let n of e){let r=typeof n=="number"?`children.${n}`:n;t=t===""?r:`${t}.${r}`}return t}function Rt(e,t,n){if(t.length===0)return n===jt?void 0:n;let[r,...i]=t;if(typeof r=="number"){if(!x(e)||!Array.isArray(e.children))return e;let o=[...e.children];return i.length===0&&n===jt?o.splice(r,1):o[r]=Rt(o[r],i,n),{...e,children:o}}if(!x(e))return e;if(i.length===0&&n===jt){let{[r]:o,...a}=e;return a}return{...e,[r]:Rt(e[r],i,n)}}function Yn(e,t,n,r){let i=t.length===0?e:ai(e,t);if(!x(i)||!Array.isArray(i.children))return e;let o=[...i.children];if(n<0||r<0||n>=o.length||r>=o.length)return e;let[a,g]=[o[n],o[r]];o[n]=g,o[r]=a;let c={...i,children:o};return t.length===0?c:Rt(e,t,c)}function ai(e,t){let n=e;for(let r of t){if(!x(n))return;n=typeof r=="number"?Array.isArray(n.children)?n.children[r]:void 0:n[r]}return n}var Lt={text:()=>"text",bind:()=>({bind:"."}),element:()=>({tag:"div",children:[]}),each:()=>({each:".",template:"item"}),when:()=>({when:".",template:"shown"})};function Xn(e,t,n={}){let r=n.actionContext??{actions:[],secretNames:[],schemas:[]},i=new Set,o=s("div",{class:"wgd-tree"}),a=G(void 0),g=s("textarea",{class:"wgd-textarea wgd-template-json",rows:"14",spellcheck:"false"}),c=s("div",void 0,[g,a]);ae(g),c.hidden=!0;let l=s("button",{class:"wgd-button",type:"button"},["Tree"]),u=s("button",{class:"wgd-button",type:"button"},["JSON"]);l.addEventListener("click",()=>{o.hidden=!1,c.hidden=!0}),u.addEventListener("click",()=>{o.hidden=!0,c.hidden=!1});let p=G(void 0),m=s("details",{class:"wgd-section",open:""},[s("summary",{class:"wgd-section-title"},["Template"]),s("div",{class:"wgd-section-body"},[s("div",{class:"wgd-row"},[l,u]),p,o,c])]);function w(E){e.update(b=>({...b,template:E}))}function f(E,b){w(Rt(e.get().template,E,b))}g.addEventListener("input",()=>{try{let E=JSON.parse(g.value);a.hidden=!0,a.textContent="",w(E)}catch(E){a.hidden=!1,a.textContent=`Invalid JSON (template keeps the last valid value): ${String(se(E))}`}});function y(E,b,j="wgd-input wgd-node-value"){let W=s("input",{type:"text",class:j});return W.value=E,W.addEventListener("change",()=>b(W.value)),W}let v=new Set;function S(E,b,j,W,C,H,$,D){let L=on(b),d=W.length>0,h=d&&v.has(L),A;d?(A=s("button",{class:"wgd-chevron",type:"button",title:h?"Expand":"Collapse"},[h?"\u25B8":"\u25BE"]),A.addEventListener("click",()=>{h?v.delete(L):v.add(L),U()})):A=s("span",{class:"wgd-chevron wgd-chevron-none"});let I=E===void 0?[A,...j]:[A,s("span",{class:"wgd-node-badge"},[E]),...j];h&&D?.summary!==void 0&&I.push(s("span",{class:"wgd-node-summary"},[D.summary]));let B=[...D?.icons??[]];if($&&$.count>1){if($.index>0){let K=s("button",{class:"wgd-icon",type:"button",title:"Move up"},["\u2191"]);K.addEventListener("click",()=>w(Yn(e.get().template,$.parent,$.index,$.index-1))),B.push(K)}if($.index<$.count-1){let K=s("button",{class:"wgd-icon",type:"button",title:"Move down"},["\u2193"]);K.addEventListener("click",()=>w(Yn(e.get().template,$.parent,$.index,$.index+1))),B.push(K)}}if(H){let K=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);K.addEventListener("click",()=>b.length===0?w(""):f(b,jt)),B.push(K)}B.length>0&&I.push(s("span",{class:"wgd-node-icons"},B));let V=[s("div",{class:"wgd-node-row"},I)];return C!==void 0&&V.push(G(C)),h||V.push(...W),s("div",{class:"wgd-node","data-path":L},V)}let k=["div","span","p","section","article","header","footer","h1","h2","h3","h4","strong","em","small","code","pre","ul","ol","li","dl","dt","dd","table","thead","tbody","tr","th","td","img","a","figure","figcaption","hr","br","label"];function N(E,b,j,W,C="wgd-input wgd-node-value"){let H=x(b)?Gn(b,j):[];if(H.length===0)return y(E,W,C);let $=s("select",{class:"wgd-select wgd-path"}),D=H.includes(E);for(let h of D?H:[E,...H])$.append(s("option",{value:h},[h===E&&!D?`${h} (off-schema)`:h]));$.append(s("option",{value:"__custom__"},["custom\u2026"])),$.value=E,be($);let L=y(E,W,C);L.hidden=!0,$.addEventListener("change",()=>{if($.value==="__custom__"){L.hidden=!1,L.focus();return}L.hidden=!0,W($.value)});let d=C.includes("wgd-attr-value")?" wgd-attr-value":"";return s("span",{class:`wgd-pathwrap${d}`},[$,L])}function R(E,b){let j=s("select",{class:"wgd-select wgd-tag"}),W=k.includes(E)?k:[E,...k];for(let H of W)j.append(s("option",{value:H},[H]));j.append(s("option",{value:"__custom__"},["custom\u2026"])),j.value=E,be(j);let C=y(E,b,"wgd-input wgd-tag-custom");return C.hidden=!0,j.addEventListener("change",()=>{if(j.value==="__custom__"){C.hidden=!1,C.focus();return}C.hidden=!0,b(j.value)}),s("span",{class:"wgd-tagwrap"},[j,C])}function P(E,b,j,W,C,H,$){let D=[...b,j];if(W===void 0){let L=Zt(`+ ${E}`,`Set '${E}' to a node`,Object.keys(Lt),d=>{let h=Lt[d];h&&f(D,h())});return C?s("div",{class:"wgd-slot"},[G(`Missing required '${E}'.`),L]):s("div",{class:"wgd-slot wgd-slot-unset"},[L])}return s("div",{class:"wgd-slot"},[s("span",{class:"wgd-slot-label"},[E]),z(W,D,H,!C,void 0,$)])}function z(E,b,j,W=!0,C,H){let $=on(b),D=j!==void 0&&(j===$||(j.startsWith($===""?"attrs.":`${$}.attrs.`)||j.startsWith($===""?"action":`${$}.action`))&&x(E)&&typeof E.tag=="string")?T:void 0;if(typeof E=="string")return S("text",b,[y(E,L=>f(b,L))],[],D,W,C);if(!x(E))return S("invalid",b,[s("code",void 0,[JSON.stringify(E)])],[],D??"Not a template node.",W,C);if(typeof E.bind=="string")return S("bind",b,[N(E.bind,H,"bind",L=>f(b,{bind:L}))],[],D,W,C);if(typeof E.each=="string")return S("each",b,[N(E.each,H,"each",L=>f(b,{...E,each:L}))],[P("template",b,"template",E.template,!0,j,si(H,E.each)),P("empty",b,"empty",E.empty,!1,j,H)],D,W,C,{summary:E.empty!==void 0?"template \xB7 empty":"template"});if(typeof E.when=="string")return S("when",b,[N(E.when,H,"when",L=>f(b,{...E,when:L}))],[P("template",b,"template",E.template,!0,j,H),P("else",b,"else",E.else,!1,j,H)],D,W,C,{summary:E.else!==void 0?"template \xB7 else":"template"});if(typeof E.tag=="string"){let L=x(E.attrs)?E.attrs:{},d=x(E.action)?E.action:void 0,h=Object.entries(L).map(([K,X])=>{let ee=x(X)&&typeof X.bind=="string"?X:{bind:""},ne=x(X)&&typeof X.bind=="string",le=ne?ee:void 0,Ee=Y=>{let de={bind:Y.bind};return Y.map!==void 0?(de.map=Y.map,Y.default!==void 0&&Y.default!==""&&(de.default=Y.default)):Y.prefix!==void 0&&Y.prefix!==""&&(de.prefix=Y.prefix),de},we=Y=>{f(b,{...E,attrs:{...L,[K]:Y}})},pr=y(K,Y=>{let de=Object.entries(L).map(([je,pn])=>je===K?[Y,pn]:[je,pn]);f(b,{...E,attrs:Object.fromEntries(de)})},"wgd-input wgd-attr-name"),Le=s("select",{class:"wgd-select wgd-attr-mode"});Le.append(s("option",{value:"literal"},["literal"])),Le.append(s("option",{value:"bind"},["bind"])),Le.value=ne?"bind":"literal",be(Le);let ln=y(String(ne?"":X),Y=>we(Y),"wgd-input wgd-attr-value"),gr=ne?N(ee.bind,H,"bind",Y=>we(Ee({...ee,bind:Y})),"wgd-input wgd-attr-value"):ln;Le.addEventListener("change",()=>{let Y=ne?ee.bind:ln.value;we(Le.value==="bind"?{bind:Y||"."}:Y)});let Pt=s("button",{class:"wgd-icon",type:"button",title:"Remove attribute"},["\u2715"]);Pt.addEventListener("click",()=>{let{[K]:Y,...de}=L;f(b,{...E,attrs:de})});let it=[pr,Le,gr],It=le?.map!==void 0,fr=le?.prefix!==void 0&&le.prefix!=="";if(ne&&!It){let Y=y(le?.prefix??"",de=>we(Ee({...ee,map:void 0,prefix:de})),"wgd-input wgd-attr-prefix");Y.placeholder="prefix",Y.title="Literal prefix, e.g. mailto: \u2014 emitted only when the bound value is non-empty",it.push(Y)}if(ne&&!It&&!fr){let Y=s("button",{class:"wgd-icon",type:"button",title:"Map values to authored literals (e.g. status \u2192 class)"},["map"]);Y.addEventListener("click",()=>we(Ee({...ee,prefix:void 0,map:{}}))),it.push(s("span",{class:"wgd-node-icons"},[Y,Pt]))}else it.push(Pt);let un=s("div",{class:"wgd-attr-row"},it),Mt=[un];if(ne&&It){let Y=kt(ee.map,{key:"data value",value:"authored literal",add:"+ mapping"},je=>{we(je===void 0?{bind:ee.bind}:Ee({...ee,map:je}))}),de=y(ee.default??"",je=>we(Ee({...ee,default:je})),"wgd-input wgd-attr-map-default");de.placeholder="default (on miss)",Mt.push(s("div",{class:"wgd-attr-map"},[Y.element,s("div",{class:"wgd-rec-row"},[s("span",{class:"wgd-st-colon"},["\u21B3"]),de])]))}return Mt.length===1?un:s("div",{class:"wgd-attr"},Mt)}),A=Array.isArray(E.children)?E.children:[],I=Zt("+","Add attribute or child node",["attribute",...d===void 0&&(E.tag==="button"||E.tag==="a")?["action"]:[],...Object.keys(Lt)],K=>{v.delete(on(b));let X=Lt[K];if(K==="attribute")f(b,{...E,attrs:{...L,"":""}});else if(K==="action"){let ee=r.actions[0];f(b,{...E,action:ee!==void 0?{ref:ee.name}:{definition:{kind:"prompt",text:["Tell me more"]}}})}else X&&f([...b,A.length],X())}),B=[];if(h.length>0&&B.push(s("div",{class:"wgd-attrs"},h)),d!==void 0){let K=x(H)?Gn(H,"when"):[],X=Ot(d,{...r,scopePaths:K,getDataSchema:()=>Ne(e.get(),r.schemas)},le=>{if(le===void 0){let{action:Ee,...we}=E;f(b,we)}else f(b,{...E,action:le})}),ee=[s("span",{class:"wgd-slot-label"},["action"]),X.element],ne="ref"in d&&typeof d.ref=="string"?d.ref:void 0;ne!==void 0&&i.has(ne)&&ee.push(G(`Unknown shared action '${ne}' \u2014 this element renders disabled.`)),B.push(s("div",{class:"wgd-attrs wgd-node-action"},ee))}A.length>0&&B.push(s("div",{class:"wgd-children"},A.map((K,X)=>z(K,[...b,X],j,!0,{parent:b,index:X,count:A.length},H))));let V=[];return h.length>0&&V.push(`${h.length} attr${h.length===1?"":"s"}`),d!==void 0&&V.push("action"),A.length>0&&V.push(`${A.length} ${A.length===1?"child":"children"}`),S(void 0,b,[R(E.tag,K=>f(b,{...E,tag:K}))],B,D,W,C,{icons:[I],summary:V.join(" \xB7 ")})}return S("unknown",b,[s("code",void 0,[JSON.stringify(E)])],[],D??"Unknown template node form.",W,C)}let T,_,F;function U(){_!==void 0&&o.replaceChildren(z(_.template,[],F,!0,void 0,Ne(_,r.schemas)))}function M(E,b){T=b.template?`${b.template.code}: ${b.template.message}`:void 0,_=E,F=b.template?.path;let j=new Set(r.actions.map(C=>C.name));i=new Set(Ye(E.template,E.load).filter(C=>!j.has(C)));let W=b.template?`${b.template.code}: ${b.template.message}`+(b.template.path!==void 0&&b.template.path!==""?` (at ${b.template.path})`:""):b.actionRefs;p.hidden=W===void 0,p.textContent=W??"",(!o.hidden||o.childNodes.length===0)&&U(),document.activeElement!==g&&(g.value=JSON.stringify(E.template,null,2),ce(g))}return t.push(()=>{}),{element:m,refresh:M,dispose:()=>m.remove()}}function Zn(e,t,n=[]){let r=G(void 0),i=s("select",{class:"wgd-select wgd-theme-select"});i.append(s("option",{value:""},["(none \u2014 defaults)"]));for(let l of n)i.append(s("option",{value:l.name},[l.label??l.name]));i.addEventListener("change",()=>{let l=n.find(u=>u.name===i.value);e.update(u=>{if(l===void 0){let{theme:p,...m}=u;return m}return{...u,theme:l.tokens}})});let o=s("div",{class:"wgd-token-ref"});function a(l){o.replaceChildren();for(let[u,p]of Object.entries(ge)){let m=l?.[u]??p.default,w=s("div",{class:"wgd-token-ref-row",title:p.use},[p.type==="color"?s("span",{class:"wgd-token-ref-swatch",style:`background: ${m}`}):s("span",{class:"wgd-token-ref-swatch wgd-token-ref-noswatch"}),s("code",{class:"wgd-token-ref-name"},[`--wg-${u}`]),s("span",{class:"wgd-token-ref-value"},[m])]);o.append(w)}for(let[u,p]of Object.entries(l??{})){if(!u.startsWith("x-"))continue;let m=s("div",{class:"wgd-token-ref-row",title:"Custom variable"},[s("span",{class:"wgd-token-ref-swatch wgd-token-ref-noswatch"}),s("code",{class:"wgd-token-ref-name"},[`--wg-${u}`]),s("span",{class:"wgd-token-ref-value"},[p])]);o.append(m)}}a(e.get().theme),t.push(l=>{if(l.theme===void 0)i.value="";else{let u=n.find(p=>JSON.stringify(p.tokens)===JSON.stringify(l.theme));i.value=u?.name??""}a(l.theme)});let g=[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Preview theme"]),i]),s("span",{class:"wgd-field-label"},[n.length===0?"No themes supplied by the host \u2014 design themes in the theme designer.":"Themes come from the host; edit them in the theme designer."]),r,s("details",{class:"wgd-token-ref-details"},[s("summary",{class:"wgd-field-label"},["Theme tokens (reference for styles)"]),o])],c=Z("Preview",g);return{element:c,setDiagnostic(l){r.hidden=l===void 0,r.textContent=l??""},dispose:()=>c.remove()}}function tt(e){let t=e.map((n,r)=>{let i=s("button",{class:`wgd-button wgd-tab${r===0?" wgd-tab-active":""}`,type:"button"},[n.label]);return i.addEventListener("click",()=>{e.forEach((o,a)=>{o.element.hidden=a!==r,t[a]?.classList.toggle("wgd-tab-active",a===r)})}),n.element.hidden=r!==0,i});return s("div",{class:"wgd-tabs"},[s("div",{class:"wgd-row"},t),...e.map(n=>n.element)])}function nt(e,t,n,r,i,o,a=6){let g=G(void 0),c=t(i.get()),l=xt(e,c===void 0?"":JSON.stringify(c,null,2),p=>{if(p.trim()===""){g.hidden=!0,r&&i.update(m=>r(m));return}try{let m=JSON.parse(p);g.hidden=!0,g.textContent="",i.update(w=>n(w,m))}catch(m){g.hidden=!1,g.textContent=`Invalid JSON (draft keeps the last valid value): ${String(se(m))}`}},a),u=ue(l,"textarea");return ae(u),o.push(p=>{if(document.activeElement===u)return;let m=t(p);u.value=m===void 0?"":JSON.stringify(m,null,2),ce(u)}),s("div",void 0,[l,g])}function Qn(e,t,n=[],r=[],i={actions:[],secretNames:[],schemas:[]}){let o=[],a=[];function g(d,h,A){let I=Ae(d,h(e.get()),V=>e.update(K=>A(K,V))),B=ue(I,"input");return o.push(V=>{document.activeElement!==B&&(B.value=h(V))}),I}let c=G(void 0),l=kt(e.get().descriptor.hints,{key:"hint name",value:"what the hint does",add:"+ hint"},d=>e.update(h=>{if(d===void 0){let{hints:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,hints:d}}}));o.push(d=>l.setValue(d.descriptor.hints));let u=Z("General",[g("Kind (id)",d=>d.kind,(d,h)=>({...d,kind:h})),c,g("Description",d=>d.descriptor.description??"",(d,h)=>({...d,descriptor:{...d.descriptor,description:h}})),g("Data shape (prose)",d=>d.descriptor.dataShape??"",(d,h)=>({...d,descriptor:{...d.descriptor,dataShape:h}})),s("div",{class:"wgd-field"},[s("span",{class:"wgd-field-label"},["Hints"]),tt([{label:"Tree",element:l.element},{label:"JSON",element:nt("",d=>d.descriptor.hints,(d,h)=>{if(!x(h))return d;let A=Object.fromEntries(Object.entries(h).map(([I,B])=>[I,String(B)]));return{...d,descriptor:{...d.descriptor,hints:A}}},d=>{let{hints:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o,3)}])])]),p=Ve(e.get().descriptor.dataSchema,d=>e.update(h=>{if(d===void 0){let{dataSchema:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,dataSchema:d}}}));o.push(d=>p.setValue(d.descriptor.dataSchema));let m=tt([{label:"Builder",element:p.element},{label:"JSON",element:nt("dataSchema (JSON-Schema subset: type/properties/required/items/enum/pattern)",d=>d.descriptor.dataSchema,(d,h)=>x(h)?{...d,descriptor:{...d.descriptor,dataSchema:h}}:d,d=>{let{dataSchema:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),w=s("select",{class:"wgd-select wgd-schema-mode"});w.append(s("option",{value:"inline"},["define inline"]));let f=s("option",{value:"shared"},["use shared"]);r.length===0&&(f.disabled=!0),w.append(f);let y=s("select",{class:"wgd-select wgd-schema-ref"});for(let d of r)y.append(s("option",{value:d.name},[d.label??d.name]));y.addEventListener("change",()=>{e.update(d=>({...d,descriptor:{...d.descriptor,dataSchemaRef:y.value}}))});let v=s("textarea",{class:"wgd-textarea wgd-schema-shared",rows:"10",readonly:"",spellcheck:"false"}),S=G(void 0),k=s("div",void 0,[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Shared schema"]),y]),v,s("span",{class:"wgd-field-label"},["Read-only here \u2014 edit shared schemas in the Data schemas section."])]);w.addEventListener("change",()=>{if(w.value==="shared"){let d=e.get().descriptor.dataSchemaRef??r[0]?.name??"";e.update(h=>{let{dataSchema:A,...I}=h.descriptor;return{...h,descriptor:{...I,dataSchemaRef:d}}})}else{let d=Ne(e.get(),r);e.update(h=>{let{dataSchemaRef:A,...I}=h.descriptor;return{...h,descriptor:{...I,dataSchema:d??{type:"object"}}}})}});function N(d){let h=d.descriptor.dataSchemaRef,A=typeof h=="string";if(w.value=A?"shared":"inline",m.hidden=A,k.hidden=!A,A){y.value!==h&&(y.value=h);let I=r.find(B=>B.name===h)?.schema;v.value=I===void 0?"":JSON.stringify(I,null,2),ce(v)}}o.push(N),N(e.get());let R=Z("Data schema",[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Source"]),w]),S,m,k],!1);ae(v);function P(d,h){let A=s("div"),I="",B;function V(K){let X=Ne(K,r),ee=X===void 0?"":JSON.stringify(X);if(B!==void 0&&ee===I){B.setValue(d(K));return}I=ee;let ne=le=>e.update(Ee=>h(Ee,le));B=X!==void 0&&x(X)?Et(X,d(K),ne):_n(d(K),ne),A.replaceChildren(B.element)}return V(e.get()),o.push(V),A}let z=G(void 0),T=Z("Sample data",[s("span",{class:"wgd-field-label"},["dataExample \u2014 ships with the widget as the example agents imitate"]),tt([{label:"Edit",element:P(d=>d.descriptor.dataExample,(d,h)=>({...d,descriptor:{...d.descriptor,dataExample:h}}))},{label:"JSON",element:nt("dataExample (JSON)",d=>d.descriptor.dataExample,(d,h)=>({...d,descriptor:{...d.descriptor,dataExample:h}}),d=>{let{dataExample:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),z],!1),_=G(void 0),F=Z("Data for preview",[s("span",{class:"wgd-field-label"},["Overrides dataExample in the preview only (not exported)"]),tt([{label:"Edit",element:P(d=>d.sampleData,(d,h)=>({...d,sampleData:h}))},{label:"JSON",element:nt("Preview data (JSON)",d=>d.sampleData,(d,h)=>({...d,sampleData:h}),d=>{let{sampleData:h,...A}=d;return A},e,o,4)}]),_],!1),U=s("div"),M=Jn(e.get().descriptor.styles,d=>e.update(h=>{if(d===void 0){let{styles:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,styles:d}}}));o.push(d=>M.setValue(d.descriptor.styles));let E=Z("Styles (.wg- selectors, guarded like the server)",[tt([{label:"Tree",element:M.element},{label:"JSON",element:nt("",d=>d.descriptor.styles,(d,h)=>x(h)?{...d,descriptor:{...d.descriptor,styles:h}}:d,d=>{let{styles:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),U]),b=Xn(e,o,{actionContext:i}),j=Zn(e,o,n),W=G(void 0),C=Ot(e.get().load,{...i,loadOnly:!0,getDataSchema:()=>Ne(e.get(),r)},d=>e.update(h=>{if(d===void 0){let{load:A,...I}=h;return I}return{...h,load:d}}));o.push(d=>{C.element.contains(document.activeElement)||C.setValue(d.load)});let H=Z("Load action (http GET, runs once when the widget first renders in an Apps host)",[s("div",{class:"wgd-compact wgd-load"},[C.element]),W],!1),$=Mn(e);F.classList.add("wgd-edit-only"),E.classList.add("wgd-edit-only"),t.left.append(u,R,T,b.element,H,$.element),t.right.append(F,E,j.element),a.push(b.dispose,j.dispose,$.dispose);function D(d){let h=Nt(d,{schemas:r,actions:i.actions});c.hidden=h.kind===void 0,W.hidden=h.load===void 0,W.textContent=h.load??"",c.textContent=h.kind??"",z.hidden=h.example===void 0,z.textContent=h.example?`dataExample vs dataSchema: ${h.example.code} at ${h.example.path} \u2014 ${h.example.message}`:"",_.hidden=h.sample===void 0,_.textContent=h.sample?`sample vs dataSchema: ${h.sample.code} at ${h.sample.path} \u2014 ${h.sample.message}`:"",S.hidden=h.schemaRef===void 0,S.textContent=h.schemaRef??"",j.setDiagnostic(h.theme?`${h.theme.code}: ${h.theme.message}`:void 0),U.replaceChildren(...h.styles.map(A=>G(`${A.selector}${A.property?` \u2192 ${A.property}`:""}: ${A.message}`)));for(let A of o)A(d);b.refresh(d,h)}let L=e.subscribe(D);return a.push(L),D(e.get()),{dispose(){for(let d of a)d();t.left.replaceChildren(),t.right.replaceChildren()}}}var Ct="designer-preview";function $t(e={}){Jt(document);let t=s("div",{class:"wgd-banner"});t.hidden=!0;let n=s("style"),r=s("div",{class:"wgd-preview"}),i=s("div",{class:"wgd-preview-pane"},[t,n,r]),o=ye(),a=()=>({tag:"div",children:["\u2026"]});o.register(Ct,m=>a(m),{description:"Designer preview delegate.",dataShape:"Defined by the draft being designed."});let g=new Map;for(let m of e.widgets??[]){let w=Te(m.template);if(!w.ok||typeof m.kind!="string"||m.kind==="")continue;let f=vt(w.template),y=x(m.descriptor)?m.descriptor:{};try{o.register(m.kind,v=>f(v),{description:`Custom widget '${m.kind}' supplied for preview.`,dataShape:"Defined by the supplied definition.",...y.dataExample!==void 0?{dataExample:y.dataExample}:{}})}catch{continue}x(y.styles)&&g.set(m.kind,Ce(y.styles))}let c=o.kinds().filter(m=>m!==Ct),l;function u(m,w,f){let y=f===void 0||f===Ct;if(y&&!w.previewable){let S=w.kind??(w.template?`${w.template.code}: ${w.template.message}`+(w.template.path?` (at ${w.template.path})`:""):"Draft is not previewable.");if(t.hidden=!1,l===void 0){t.textContent=`Nothing to preview yet \u2014 ${S}`,r.replaceChildren(s("div",{class:"wgd-preview-empty"},["No preview: the draft has never been valid."]));return}t.textContent=`Preview frozen on the last valid draft \u2014 ${S}`;return}if(r.querySelector(".wgd-preview-empty")?.remove(),t.hidden=!0,t.textContent="",y){let S=Te(m.template);if(!S.ok)return;let k=e.actions??[];a=vt(S.template,{actions:N=>k.find(R=>R.name===N)?.definition})}n.textContent=y?m.descriptor.styles?Ce(m.descriptor.styles):"":g.get(f)??"",Ut(r,m.theme??{});let v={kind:y?Ct:f,data:y?m.sampleData??m.descriptor.dataExample??null:p(f)};l===void 0?l=Gt(v,r,{catalog:o}):l.update(v);for(let S of r.querySelectorAll("[data-wg-action]"))S.classList.add("wg-designer-action")}function p(m){return o.describe(m)?.dataExample??{value:"preview"}}return{pane:i,kinds:c,update:u,dispose(){l?.dispose(),l=void 0,i.replaceChildren()}}}function _e(e){return JSON.parse(JSON.stringify(e))}function rt(){return{kind:"my-widget",template:{tag:"div",attrs:{class:"wg-template"},children:[{tag:"h2",children:[{bind:"title"}]},{bind:"message"}]},descriptor:{description:"Describe what this widget is for.",dataShape:"{ title?, message }",dataExample:{title:"My widget",message:"Hello from the widgentic designer"},dataSchema:{type:"object",required:["message"],properties:{title:{type:"string"},message:{type:"string"}}}}}}function er(e){let t=_e(e??rt()),n=[],r=new Set;function i(){for(let o of[...r])o(t)}return{get:()=>t,update(o){n.push(t),n.length>50&&n.shift(),t=_e(o(_e(t))),i()},replace(o){n.length=0,t=_e(o),i()},undo(){let o=n.pop();return o===void 0?!1:(t=o,i(),!0)},subscribe(o){return r.add(o),()=>r.delete(o)}}}function tr(e,t={}){Oe(document);let n=t.initialWidget?_e({...t.initialWidget}):rt(),r=t.initialTheme!==void 0?{...n,theme:t.initialTheme}:n,i=er(r),o=new Set,a=$t({actions:t.actions??[]}),g=s("div",{class:"wgd-panels"}),c=s("div",{class:"wgd-preview-pane"}),l=s("div",{class:"wgd-side"},[a.pane,c]),u=s("div",{class:"wgd-root"},[g,l]);(t.appearance==="light"||t.appearance==="dark")&&u.setAttribute("data-wgd-theme",t.appearance),De(u,t.chrome),e.appendChild(u);let p={actions:t.actions??[],secretNames:t.secretNames??[],schemas:t.schemas??[]},m=Qn(i,{left:g,right:c},t.themes??[],t.schemas??[],p);function w(v){let S=Nt(v,{schemas:t.schemas??[],actions:t.actions??[]});a.update(v,S);for(let k of[...o])k(v,S)}let f=i.subscribe(w);w(i.get());function y(v){u.classList.toggle("wgd-readonly",v);let S=[...u.querySelectorAll(".wgd-panels .wgd-section-body, .wgd-edit-only > .wgd-section-body")].filter(k=>!k.parentElement?.classList.contains("wgd-view-only"));for(let k of S)v?k.setAttribute("inert",""):k.removeAttribute("inert")}return t.readOnly===!0&&y(!0),{getDraft:()=>_e(i.get()),setReadOnly:y,loadWidget(v){let S=en(v);return S.length>0?{ok:!1,errors:S}:(tn(i,v),{ok:!0})},loadTheme(v){let S=Pe(v);return S.ok?(i.update(k=>({...k,theme:S.theme})),{ok:!0}):{ok:!1,errors:[S.error.message]}},subscribe(v){return o.add(v),()=>o.delete(v)},dispose(){f(),m.dispose(),a.dispose(),o.clear(),u.remove()}}}var nr=/^[a-zA-Z0-9._-]+$/;function di(){return{name:"my-schema",label:"My schema",schema:{type:"object",properties:{}}}}function ci(e){let t=[];return x(e)?(typeof e.name!="string"||e.name.trim()===""?t.push("'name' must be a non-empty string."):nr.test(e.name)||t.push(`'${e.name}' is not a valid schema name \u2014 use letters, digits, '.', '_' or '-'.`),x(e.schema)||t.push("'schema' must be a plain object."),t):["Schema entry must be an object."]}function rr(e,t={}){Oe(document);let n=t.initialSchema?JSON.parse(JSON.stringify(t.initialSchema)):di(),r=new Set,i=s("div",{class:"wgd-panels"}),o=s("div",{class:"wgd-root wgd-schema-designer"},[i]);(t.appearance==="light"||t.appearance==="dark")&&o.setAttribute("data-wgd-theme",t.appearance),De(o,t.chrome),e.appendChild(o);function a(){return JSON.parse(JSON.stringify(n))}function g(){for(let b of[...r])b(a())}let c=[],l=G(void 0);function u(b,j,W){let C=Ae(b,j(),W),H=ue(C,"input");return c.push(()=>{document.activeElement!==H&&(H.value=j())}),C}let p=Z("Schema",[u("Name (id)",()=>n.name,b=>{n={...n,name:b};let j=b.trim()===""||!nr.test(b);l.hidden=!j,l.textContent=j?"Name must be non-empty using letters, digits, '.', '_' or '-'.":"",g()}),l,u("Label",()=>n.label??"",b=>{n={...n,label:b},g()}),u("Description",()=>n.description??"",b=>{n={...n,description:b},g()})]),m=Ve(n.schema,b=>{n={...n,schema:b??{}},v(),g()}),w=G(void 0),f=s("textarea",{class:"wgd-textarea",rows:"12",spellcheck:"false"}),y=s("div",void 0,[f,w]);f.value=JSON.stringify(n.schema,null,2),f.addEventListener("input",()=>{try{let b=JSON.parse(f.value);if(!x(b))throw new Error("schema must be an object");w.hidden=!0,w.textContent="",n={...n,schema:b},m.setValue(b),g()}catch(b){w.hidden=!1,w.textContent=`Invalid JSON (schema keeps the last valid value): ${String(se(b))}`}});function v(){document.activeElement!==f&&(f.value=JSON.stringify(n.schema,null,2),ce(f))}let S=s("button",{class:"wgd-button wgd-tab wgd-tab-active",type:"button"},["Builder"]),k=s("button",{class:"wgd-button wgd-tab",type:"button"},["JSON"]);y.hidden=!0,S.addEventListener("click",()=>{m.element.hidden=!1,y.hidden=!0,S.classList.add("wgd-tab-active"),k.classList.remove("wgd-tab-active")}),k.addEventListener("click",()=>{m.element.hidden=!0,y.hidden=!1,k.classList.add("wgd-tab-active"),S.classList.remove("wgd-tab-active"),v()});let N=Z("Definition",[s("div",{class:"wgd-row"},[S,k]),m.element,y]),R=G(void 0),P=s("textarea",{class:"wgd-textarea wgd-schema-import",rows:"6",spellcheck:"false"}),z=s("button",{class:"wgd-button",type:"button"},["Import"]);z.addEventListener("click",()=>{let b;try{b=JSON.parse(P.value)}catch(W){R.hidden=!1,R.textContent=`Invalid JSON: ${se(W)}`;return}let j=M(b);R.hidden=j.ok,R.textContent=j.ok?"":j.errors.join(`
|
|
414
|
-
`)});let T=Z("Import",[s("span",{class:"wgd-field-label"},["Import schema entry JSON ({ name, label?, description?, schema })"]),P,R,s("div",{class:"wgd-row"},[z])]),_=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"}),F=s("button",{class:"wgd-button wgd-add",type:"button"},["Export schema entry"]);F.addEventListener("click",()=>{_.value=JSON.stringify(a(),null,2),ce(_)});let U=Z("Export",[s("div",{class:"wgd-toolbar"},[F]),_]);U.classList.add("wgd-view-only"),i.append(p,N,T,U),ae(f),ae(P),ae(_);function M(b){let j=ci(b);if(j.length>0)return{ok:!1,errors:j};n=JSON.parse(JSON.stringify(b));for(let W of c)W();return l.hidden=!0,m.setValue(n.schema),v(),g(),{ok:!0}}function E(b){o.classList.toggle("wgd-readonly",b);let j=[...i.querySelectorAll(".wgd-section-body")].filter(W=>!W.parentElement?.classList.contains("wgd-view-only"));for(let W of j)b?W.setAttribute("inert",""):W.removeAttribute("inert")}return t.readOnly===!0&&E(!0),{getSchema:a,loadSchema:M,setReadOnly:E,subscribe(b){return r.add(b),()=>r.delete(b)},dispose(){r.clear(),o.remove()}}}var li=ye().kinds(),ui=/^#[0-9a-f]{3}([0-9a-f]{3})?$/i,ir=/^x-[a-z0-9][a-z0-9-]*$/;function pi(e){if(!ui.test(e))return;if(e.length===7)return e.toLowerCase();let[,t,n,r]=e.toLowerCase();return`#${t}${t}${n}${n}${r}${r}`}function gi(){return{name:"my-theme",label:"My theme",tokens:{}}}function fi(e){let t=[];if(typeof e!="object"||e===null||Array.isArray(e))return["Theme entry must be an object."];let n=e;(typeof n.name!="string"||n.name.trim()==="")&&t.push("'name' must be a non-empty string.");let r=Pe(n.tokens??{});return r.ok||t.push(`tokens: ${r.error.code} \u2014 ${r.error.message}`),t}function or(e,t={}){Oe(document);let n=t.initialTheme?JSON.parse(JSON.stringify(t.initialTheme)):gi(),r=new Set,i=$t(t.widgets?{widgets:t.widgets}:{}),o=i.kinds.length>0?i.kinds:li,a=o[0]??"card",g=s("div",{class:"wgd-panels"}),c=s("div",{class:"wgd-side"},[i.pane]),l=s("div",{class:"wgd-root wgd-theme-designer"},[g,c]);(t.appearance==="light"||t.appearance==="dark")&&l.setAttribute("data-wgd-theme",t.appearance),De(l,t.chrome),e.appendChild(l);function u(){return{...rt(),theme:n.tokens}}function p(){i.update(u(),{styles:[],previewable:!0},a);for(let D of[...r])D(m())}function m(){return JSON.parse(JSON.stringify(n))}function w(D,L){let d={...n.tokens};L===""?delete d[D]:d[D]=L,n={...n,tokens:d},p()}let f=[];function y(D,L,d){let h=Ae(D,L(),d),A=
|
|
415
|
-
`)});let W=Z("Import",[s("span",{class:"wgd-field-label"},["Import theme entry JSON"]),E,b,s("div",{class:"wgd-row"},[j])]),C=Z("Export",[s("div",{class:"wgd-toolbar"},[M]),U]);C.classList.add("wgd-view-only"),g.append(v,R,F,W,C);function H(D){let L=fi(D);if(L.length>0)return{ok:!1,errors:L};n=JSON.parse(JSON.stringify(D));for(let d of f)d();for(let d of k)d();return _(),p(),{ok:!0}}p();function $(D){l.classList.toggle("wgd-readonly",D);let L=[...g.querySelectorAll(".wgd-section-body")].filter(d=>!d.parentElement?.classList.contains("wgd-view-only"));for(let d of L)D?d.setAttribute("inert",""):d.removeAttribute("inert")}return t.readOnly===!0&&$(!0),{getTheme:m,loadTheme:H,setReadOnly:$,subscribe(D){return r.add(D),()=>r.delete(D)},dispose(){r.clear(),i.dispose(),l.remove()}}}function mi(){return{name:"my-action",label:"My action",definition:{kind:"prompt",text:["Tell me more about ",{bind:"title"}]}}}function hi(e){let t=[];if(!x(e))return["Action entry must be an object."];(typeof e.name!="string"||!mt.test(e.name))&&t.push("'name' must be lowercase letters, digits and dashes, starting with a letter (max 64).");for(let r of["label","description"])e[r]!==void 0&&typeof e[r]!="string"&&t.push(`'${r}' must be a string when present.`);let n=Be(e.definition,"definition");return n&&t.push(`${n.message} (at ${n.path})`),t}function wi(e){let t={name:e.name,definition:ie(e.definition)};return typeof e.label=="string"&&e.label!==""&&(t.label=e.label),typeof e.description=="string"&&e.description!==""&&(t.description=e.description),t}function sr(e,t,n){let{[t]:r,...i}=e;return n===""?i:{...i,[t]:n}}function ar(e,t={}){Oe(document);let n=t.initialAction?ie(t.initialAction):mi(),r=t.testCall,i=new Set,o=s("div",{class:"wgd-panels"}),a=s("div",{class:"wgd-root wgd-action-designer"},[o]);(t.appearance==="light"||t.appearance==="dark")&&a.setAttribute("data-wgd-theme",t.appearance),De(a,t.chrome),e.appendChild(a);let g=()=>ie(n);function c(){for(let d of[...i])d(g())}let l=[],u=G(void 0);function p(d,h,A){let I=Ae(d,h(),A),B=
|
|
412
|
+
`}function Mn(e){let t=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"});function n(u,p){let m=s("button",{class:"wgd-button wgd-add",type:"button"},[u]);return m.addEventListener("click",()=>{t.value=p(),ce(t)}),m}let r=G(void 0),i=xt("Import widget JSON","",()=>{},5),o=pe(i,"textarea");ae(o);let a=s("button",{class:"wgd-button",type:"button"},["Import"]);a.addEventListener("click",()=>{let u=Xr(o.value);if(!u.ok){r.hidden=!1,r.textContent=u.errors.join(`
|
|
413
|
+
`);return}r.hidden=!0,r.textContent="",tn(e,u.definition)});let g=Z("Import",[i,r,s("div",{class:"wgd-row"},[a])]),c=Z("Export",[s("div",{class:"wgd-row"},[n("Export widget JSON",()=>Gr(e.get())),n("Export theme JSON",()=>Yr(e.get())),n("Copy as TypeScript",()=>Qr(e.get()))]),t]);c.classList.add("wgd-view-only");let l=s("div",{class:"wgd-io"},[g,c]);return ae(t),{element:l,dispose:()=>l.remove()}}var ei=["string","number","boolean","null","object","array"];function nn(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function ti(e,t){switch(e){case"string":return typeof t=="number"||typeof t=="boolean"?String(t):"";case"number":{let n=Number(t);return Number.isFinite(n)?n:0}case"boolean":return t==="true"?!0:!!t&&t!=="false";case"null":return null;case"object":return{};case"array":return[]}}function ve(e,t,n,r=!1){if(t.length===0)return n;let[i,...o]=t;if(Array.isArray(e)){let a=[...e];return o.length===0&&r?a.splice(i,1):a[i]=ve(a[i],o,n,r),a}if(typeof e=="object"&&e!==null){let a={...e};return o.length===0&&r?delete a[i]:a[i]=ve(a[i],o,n,r),a}return e}function ni(e,t,n,r){let i=t.reduce((a,g)=>typeof a=="object"&&a!==null?a[g]:void 0,e);if(typeof i!="object"||i===null||Array.isArray(i))return e;let o=Object.entries(i).map(([a,g])=>a===n?[r,g]:[a,g]);return ve(e,t,Object.fromEntries(o))}function _n(e,t){let n=e,r=s("div",{class:"wgd-jsontree"});function i(p){n=p,u(),t(n)}function o(p,m,w){let f=m==="number"?Number.isFinite(Number(w))?Number(w):0:w;n=ve(n,p,f),t(n)}function a(p,m){let w=s("select",{class:"wgd-select wgd-jt-type"});for(let f of ei)w.append(s("option",{value:f},[f]));return w.value=nn(p),w.addEventListener("change",()=>i(ve(n,m,ti(w.value,p)))),w}function g(p,m){let w=nn(p);if(w==="boolean"){let f=s("input",{type:"checkbox"});return f.checked=p,f.addEventListener("change",()=>i(ve(n,m,f.checked))),f}if(w==="null")return s("code",void 0,["null"]);if(w==="string"||w==="number"){let f=s("input",{type:"text",class:"wgd-input"});return f.value=String(p),f.addEventListener("change",()=>o(m,w,f.value)),f}return s("span")}function c(p,m,w,f){let y=s("div",{class:"wgd-jt-row"},[p,a(m,w)]),v=nn(m);if(v!=="object"&&v!=="array"&&y.append(g(m,w)),f){let k=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);k.addEventListener("click",()=>i(ve(n,w,void 0,!0))),y.append(k)}let S=s("div",{class:"wgd-jt-entry"},[y]);return(v==="object"||v==="array")&&S.append(l(m,w)),S}function l(p,m){let w=s("div",{class:"wgd-jt-children"});if(Array.isArray(p)){p.forEach((v,S)=>{w.append(c(s("span",{class:"wgd-jt-key"},[String(S)]),v,[...m,S],!0))});let y=s("button",{class:"wgd-button wgd-add",type:"button"},["+ item"]);y.addEventListener("click",()=>i(ve(n,[...m,p.length],""))),w.append(s("div",{class:"wgd-toolbar"},[y]))}else if(typeof p=="object"&&p!==null){for(let[v,S]of Object.entries(p)){let k=s("input",{type:"text",class:"wgd-input wgd-jt-keyinput"});k.value=v,k.addEventListener("change",()=>i(ni(n,m,v,k.value))),w.append(c(k,S,[...m,v],!0))}let y=s("button",{class:"wgd-button wgd-add",type:"button"},["+ property"]);y.addEventListener("click",()=>{let v=p,S="key";for(let k=1;S in v;k++)S=`key${k}`;i(ve(n,[...m,S],""))}),w.append(s("div",{class:"wgd-toolbar"},[y]))}return s("details",{class:"wgd-jt-branch",open:""},[s("summary",{class:"wgd-jt-summary"},[Array.isArray(p)?`[ ${p.length} item${p.length===1?"":"s"} ]`:`{ ${Object.keys(p).length} propert${Object.keys(p).length===1?"y":"ies"} }`]),w])}function u(){r.replaceChildren(c(s("span",{class:"wgd-jt-key"},["value"]),n,[],!1))}return u(),{element:r,getValue:()=>n,setValue(p){r.contains(document.activeElement)||(n=p,u())}}}var Hn=["object","array","string","number","integer","boolean","null","any"],Bn=new Set(["string","number","integer","any"]);function Ve(e,t){let n=e,r=s("div",{class:"wgd-schemabuilder"});function i(c,l=!0){n=c,t(n),l&&g()}function o(c,l,u){let p={...c};return u===void 0?delete p[l]:p[l]=u,p}function a(c,l,u,p=[],m=[]){let w=[],f=s("select",{class:"wgd-select wgd-sb-type"});for(let T of Hn)f.append(s("option",{value:T},[T]));let y=c.type,v=Array.isArray(y)?y.filter(T=>typeof T=="string"):void 0,S=v?.includes("null")??!1,k=typeof y=="string"?y:v?.find(T=>T!=="null")??(S?"null":"any");f.value=Hn.some(T=>T===k)?k:"any",be(f);let N=s("input",{type:"checkbox",title:"Also allows null"});N.checked=S,N.disabled=f.value==="any"||f.value==="null";function R(T,_){if(T!=="any")return _&&T!=="null"?[T,"null"]:T}N.addEventListener("change",()=>{l(o(c,"type",R(f.value,N.checked)))}),f.addEventListener("change",()=>{let T=o(c,"type",R(f.value,N.checked));f.value!=="object"&&(T=o(o(T,"properties",void 0),"required",void 0)),f.value!=="array"&&(T=o(T,"items",void 0)),f.value!=="string"&&(T=o(T,"pattern",void 0)),Bn.has(f.value)||(T=o(T,"enum",void 0)),l(T)}),w.push(s("div",{class:"wgd-sb-row"},[...p,f,s("label",{class:"wgd-sb-req wgd-sb-null",title:"Also allows null"},[N,"null"]),...m]));let P=[];if(f.value==="string"){let T=s("input",{type:"text",class:"wgd-input wgd-sb-constraint",placeholder:"pattern (regex, optional)"});T.value=typeof c.pattern=="string"?c.pattern:"",T.addEventListener("change",()=>l(o(c,"pattern",T.value===""?void 0:T.value))),P.push(s("span",{class:"wgd-sb-label"},["pattern"]),T)}let z=G(void 0);if(Bn.has(f.value)){let T=s("input",{type:"text",class:"wgd-input wgd-sb-constraint",placeholder:'enum ["a","b"] (optional)'});T.value=Array.isArray(c.enum)?JSON.stringify(c.enum):"",T.addEventListener("change",()=>{if(T.value.trim()===""){z.hidden=!0,l(o(c,"enum",void 0));return}try{let _=JSON.parse(T.value);if(!Array.isArray(_))throw new Error("must be a JSON array");z.hidden=!0,l(o(c,"enum",_))}catch(_){z.hidden=!1,z.textContent=`enum ignored: ${se(_)}`}}),P.push(s("span",{class:"wgd-sb-label"},["enum"]),T)}if(P.length>0&&w.push(s("div",{class:"wgd-sb-row wgd-sb-constraints"},P),z),f.value==="object"){let T=x(c.properties)?c.properties:{},_=Array.isArray(c.required)?c.required.filter(M=>typeof M=="string"):[],F=s("div",{class:"wgd-jt-children"});for(let[M,E]of Object.entries(T)){let b=s("input",{type:"text",class:"wgd-input wgd-sb-prop",placeholder:"property name"});b.value=M,b.addEventListener("change",()=>{let C=Object.entries(T).map(([$,D])=>$===M?[b.value,D]:[$,D]),H=_.map($=>$===M?b.value:$);l(o(o(c,"properties",Object.fromEntries(C)),"required",H.length>0?H:void 0))});let j=s("input",{type:"checkbox",title:"required"});j.checked=_.includes(M),j.addEventListener("change",()=>{let C=j.checked?[..._,M]:_.filter(H=>H!==M);l(o(c,"required",C.length>0?C:void 0))});let W=s("button",{class:"wgd-icon",type:"button",title:"Remove property"},["\u2715"]);W.addEventListener("click",()=>{let{[M]:C,...H}=T;l(o(o(c,"properties",Object.keys(H).length>0?H:void 0),"required",_.filter($=>$!==M).length>0?_.filter($=>$!==M):void 0))}),F.append(a(x(E)?E:{},C=>l(o(c,"properties",{...T,[M]:C})),u+1,[b],[s("label",{class:"wgd-sb-req",title:"required"},[j,"req"]),W]))}let U=s("button",{class:"wgd-button wgd-add",type:"button"},["+ property"]);U.addEventListener("click",()=>{let M="field";for(let E=1;M in T;E++)M=`field${E}`;l(o(c,"properties",{...T,[M]:{type:"string"}}))}),F.append(s("div",{class:"wgd-toolbar"},[U])),w.push(F)}return f.value==="array"&&w.push(s("div",{class:"wgd-slot"},[a(x(c.items)?c.items:{},T=>l(o(c,"items",T)),u+1,[s("span",{class:"wgd-sb-label"},["items"])])])),s("div",{class:u===0?"wgd-sb-root":"wgd-sb-node"},w)}function g(){if(n===void 0){let l=s("button",{class:"wgd-button wgd-add",type:"button"},["+ add a data schema"]);l.addEventListener("click",()=>i({type:"object"})),r.replaceChildren(s("div",void 0,[s("span",{class:"wgd-sb-label"},["No schema \u2014 data is accepted leniently."]),s("div",{class:"wgd-toolbar"},[l])]));return}let c=s("button",{class:"wgd-button wgd-add wgd-remove",type:"button"},["remove schema"]);c.addEventListener("click",()=>i(void 0)),r.replaceChildren(a(n,l=>i(l),0),s("div",{class:"wgd-toolbar"},[c]))}return g(),{element:r,getValue:()=>n,setValue(c){r.contains(document.activeElement)||(n=c,g())}}}function kt(e,t,n){let r=e,i=s("div",{class:"wgd-record"});function o(c){r=Object.keys(c).length>0?c:void 0,n(r),g()}function a(c,l,u,p){let m=s("input",{type:"text",class:u,placeholder:l,spellcheck:"false"});return m.value=c,m.addEventListener("change",()=>p(m.value)),m}function g(){let c=r??{},l=Object.entries(c).map(([p,m])=>{let w=a(p,t.key,"wgd-input wgd-rec-key",v=>{let S=Object.entries(c).map(([k,N])=>k===p?[v,N]:[k,N]);o(Object.fromEntries(S))}),f=a(m,t.value,"wgd-input wgd-rec-value",v=>o({...c,[p]:v})),y=s("button",{class:"wgd-icon",type:"button",title:"Remove entry"},["\u2715"]);return y.addEventListener("click",()=>{let{[p]:v,...S}=c;o(S)}),s("div",{class:"wgd-rec-row"},[w,s("span",{class:"wgd-st-colon"},[":"]),f,y])}),u=s("button",{class:"wgd-button wgd-add wgd-st-add",type:"button"},[t.add]);u.addEventListener("click",()=>{let p="";for(let m=1;p in c;m++)p=`key${m}`;o({...c,[p]:""})}),i.replaceChildren(...l,s("div",{class:"wgd-toolbar"},[u]))}return g(),{element:i,getValue:()=>r,setValue(c){i.contains(document.activeElement)||(r=c,g())}}}function zn(e){let t=e.type;if(typeof t=="string")return t;if(Array.isArray(t)){let n=t.find(r=>typeof r=="string"&&r!=="null");if(typeof n=="string")return n;if(t.includes("null"))return"null"}}function Ze(e){if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum[0];switch(zn(e)){case"object":{let t={};if(x(e.properties)&&Array.isArray(e.required))for(let n of e.required)typeof n=="string"&&x(e.properties[n])&&(t[n]=Ze(e.properties[n]));return t}case"array":return[];case"number":case"integer":return 0;case"boolean":return!1;case"null":return null;default:return""}}function Et(e,t,n){let r=t??Ze(e),i=s("div",{class:"wgd-schemaform"});function o(u,p,m,w=!1){if(p.length===0)return m;let[f,...y]=p;if(Array.isArray(u)){let S=[...u];return y.length===0&&w?S.splice(f,1):S[f]=o(S[f],y,m,w),S}let v=x(u)?{...u}:{};return y.length===0&&w?delete v[f]:v[f]=o(v[f],y,m,w),v}function a(u,p,m=!1){r=o(r,u,p),n(r),m&&l()}function g(u,p,m,w){if(Array.isArray(u.enum)){let f=s("select",{class:"wgd-select"});for(let y of u.enum)f.append(s("option",{value:JSON.stringify(y)},[JSON.stringify(y)]));return f.value=JSON.stringify(p??u.enum[0]),f.addEventListener("change",()=>a(m,JSON.parse(f.value))),c(w,f)}switch(zn(u)){case"boolean":{let f=s("input",{type:"checkbox"});return f.checked=p===!0,f.addEventListener("change",()=>a(m,f.checked)),c(w,f)}case"number":case"integer":{let f=s("input",{type:"number",class:"wgd-input"});return f.value=typeof p=="number"?String(p):"0",f.addEventListener("change",()=>{let y=Number(f.value);a(m,Number.isFinite(y)?y:0)}),c(w,f)}case"object":{let f=s("div",{class:"wgd-jt-children"}),y=x(u.properties)?u.properties:{},v=Array.isArray(u.required)?u.required:[],S=x(p)?p:{};for(let[k,N]of Object.entries(y)){if(!x(N))continue;let R=v.includes(k);f.append(g(N,S[k]??(R?Ze(N):void 0),[...m,k],R?`${k} *`:k))}return s("fieldset",{class:"wgd-sf-object"},[s("legend",{class:"wgd-field-label"},[w]),f])}case"array":{let f=x(u.items)?u.items:{},y=Array.isArray(p)?p:[],v=s("div",{class:"wgd-jt-children"});y.forEach((k,N)=>{let R=s("div",{class:"wgd-jt-entry"},[g(f,k,[...m,N],`#${N}`)]),P=s("button",{class:"wgd-icon",type:"button",title:"Remove item"},["\u2715"]);P.addEventListener("click",()=>{r=o(r,[...m,N],void 0,!0),n(r),l()}),R.append(P),v.append(R)});let S=s("button",{class:"wgd-button wgd-add",type:"button"},["+ item"]);return S.addEventListener("click",()=>a([...m,y.length],Ze(f),!0)),v.append(s("div",{class:"wgd-toolbar"},[S])),s("fieldset",{class:"wgd-sf-object"},[s("legend",{class:"wgd-field-label"},[w]),v])}default:{let f=s("input",{type:"text",class:"wgd-input"});return typeof u.pattern=="string"&&(f.setAttribute("placeholder",`pattern: ${u.pattern}`),f.setAttribute("title",`Must match ${u.pattern}`)),f.value=typeof p=="string"?p:p===void 0?"":String(p),f.addEventListener("change",()=>a(m,f.value)),c(w,f)}}}function c(u,p){return s("label",{class:"wgd-field"},[s("span",{class:"wgd-field-label"},[u]),p])}function l(){i.replaceChildren(g(e,r,[],"data"))}return l(),{element:i,getValue:()=>r,setValue(u){i.contains(document.activeElement)||(r=u??Ze(e),l())}}}function Jn(e,t){let n=e,r=s("div",{class:"wgd-styles"});function i(c){n=Object.keys(c).length>0?c:void 0,t(n),g()}function o(c,l,u,p){let m=s("input",{type:"text",class:u,placeholder:l,spellcheck:"false"});return m.value=c,m.addEventListener("change",()=>p(m.value)),m}function a(c,l,u){let p=o(c,".wg-selector","wgd-input wgd-st-selector",y=>{let v=Object.entries(u).map(([S,k])=>S===c?[y,k]:[S,k]);i(Object.fromEntries(v))}),m=s("button",{class:"wgd-icon",type:"button",title:"Add declaration"},["+"]);m.addEventListener("click",()=>{i({...u,[c]:{...l,"":""}})});let w=s("button",{class:"wgd-icon",type:"button",title:"Remove selector"},["\u2715"]);w.addEventListener("click",()=>{let{[c]:y,...v}=u;i(v)});let f=Object.entries(l).map(([y,v])=>{let S=o(y,"property","wgd-input wgd-st-prop",R=>{let P=Object.entries(l).map(([z,T])=>z===y?[R,T]:[z,T]);i({...u,[c]:Object.fromEntries(P)})}),k=o(v,"value (no url(...), no ;)","wgd-input wgd-st-value",R=>{i({...u,[c]:{...l,[y]:R}})}),N=s("button",{class:"wgd-icon",type:"button",title:"Remove declaration"},["\u2715"]);return N.addEventListener("click",()=>{let{[y]:R,...P}=l;i({...u,[c]:P})}),s("div",{class:"wgd-st-decl"},[S,s("span",{class:"wgd-st-colon"},[":"]),k,N])});return s("div",{class:"wgd-st-rule"},[s("div",{class:"wgd-st-row"},[p,s("span",{class:"wgd-node-icons"},[m,w])]),s("div",{class:"wgd-st-decls"},f)])}function g(){let c=n??{},l=s("button",{class:"wgd-button wgd-add wgd-st-add",type:"button"},["+ selector"]);l.addEventListener("click",()=>{let u=".wg-";for(let p=1;u in c;p++)u=`.wg-${p}`;i({...c,[u]:{}})}),r.replaceChildren(...Object.entries(c).map(([u,p])=>a(u,x(p)?p:{},c)),s("div",{class:"wgd-toolbar"},[l]))}return g(),{element:r,getValue:()=>n,setValue(c){r.contains(document.activeElement)||(n=c,g())}}}function xe(e){if(!x(e))return;let t=e.type;if(typeof t=="string")return t;if(Array.isArray(t)){let n=t.find(r=>typeof r=="string"&&r!=="null");if(typeof n=="string")return n}}function St(e,t,n,r=0){if(!(!x(e)||r>3)&&!(xe(e)!=="object"||!x(e.properties)))for(let[i,o]of Object.entries(e.properties)){let a=t===""?i:`${t}.${i}`;n.push({path:a,schema:o}),St(o,a,n,r+1)}}function Tt(e,t){if(t===""||t===".")return e;let n=e;for(let r of t.split(".")){if(!x(n))return;if(xe(n)==="array"){if(n=x(n.items)?n.items:void 0,!/^\d+$/.test(r)){if(!x(n)||!x(n.properties))return;n=n.properties[r]}continue}if(!x(n.properties))return;n=n.properties[r]}return n}function Vn(e,t){if(e===void 0||t===void 0)return!1;let n=r=>r==="integer"?"number":r;return n(e)!==n(t)}function Qe(e){let t=[];return St(e,"",t),t.map(n=>n.path)}var Un="__custom__";function Fn(){return{kind:"prompt",text:["Tell me more about ",{bind:"title"}]}}function qn(){return{kind:"http",method:"GET",url:"https://api.example.com/resource",input:{type:"object",properties:{}},output:{type:"object"}}}function At(e){return"ref"in e&&typeof e.ref=="string"}function ke(e,t,n,r=""){let i=s("input",{type:"text",class:t,placeholder:r});return i.value=e,i.addEventListener("change",()=>n(i.value)),i}function he(e,t,n,r){let i=s("select",{class:n});for(let o of e)i.append(s("option",{value:o.value},[o.label??o.value]));return i.value=t,be(i),i.addEventListener("change",()=>r(i.value)),i}function ue(e){return s("span",{class:"wgd-field-label"},[e])}function et(e){let t=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);return t.addEventListener("click",e),t}function Dt(e,t,n,r,i="wgd-input wgd-rec-value"){if(t.length===0)return ke(e,i,n,r);let o=s("select",{class:"wgd-select wgd-path"}),a=t.includes(e),g=a||e===""?t:[e,...t];o.append(s("option",{value:""},[r]));for(let l of g)o.append(s("option",{value:l},[l===e&&!a?`${l} (off-schema)`:l]));o.append(s("option",{value:Un},["custom\u2026"])),o.value=e,be(o);let c=ke(e,i,n,r);return c.hidden=!0,o.addEventListener("change",()=>{if(o.value===Un){c.hidden=!1,c.focus();return}c.hidden=!0,n(o.value)}),s("span",{class:"wgd-pathwrap"},[o,c])}function Kn(e,t,n,r){let i=ie(e??{}),o=[],a=s("div",{class:"wgd-record wgd-headers"}),g=G(void 0);function c(m){i=m,r(Object.keys(i).length>0?i:void 0),p()}function l(m){g.hidden=!1,g.textContent=`'${m}' is already used; pick another ${n.name} name.`}function u(m,w){let f=x(m),y=he([{value:"literal"},{value:"secret"}],f?"secret":"literal","wgd-select wgd-attr-mode",v=>w(v==="secret"?{secret:t[0]??""}:""));if(f){let v=t.includes(m.secret)?t:[m.secret,...t],S=he(v.map(k=>({value:k,label:k===""?"(pick a secret)":k})),m.secret,"wgd-select wgd-secret",k=>w({secret:k}));return[y,S]}return[y,ke(m,"wgd-input wgd-rec-value",w,"value")]}function p(){a.replaceChildren(),g.hidden=!0;for(let[w,f]of Object.entries(i)){let y=ke(w,"wgd-input wgd-rec-key",k=>{if(k===w)return;if(k===""||Object.hasOwn(i,k)){l(k||"(empty)");return}let N=Object.entries(i).map(([R,P])=>R===w?[k,P]:[R,P]);c(Object.fromEntries(N))},n.name),v=u(f,k=>c({...i,[w]:k})),S=et(()=>{let{[w]:k,...N}=i;c(N)});a.append(s("div",{class:"wgd-rec-row"},[y,...v,S]))}o.forEach((w,f)=>{let y=ke("","wgd-input wgd-rec-key",k=>{if(k!==""){if(Object.hasOwn(i,k)){l(k);return}o.splice(f,1),c({...i,[k]:w.value})}},n.name),v=u(w.value,k=>{w.value=k,p()}),S=et(()=>{o.splice(f,1),p()});a.append(s("div",{class:"wgd-rec-row wgd-rec-pending"},[y,...v,S]))});let m=s("button",{class:"wgd-button wgd-add",type:"button"},[n.add]);m.addEventListener("click",()=>{o.push({value:""}),p()}),a.append(s("div",{class:"wgd-row"},[m]),g)}return p(),a}function ri(e,t){let n=ie(e),r=s("div",{class:"wgd-record wgd-segments"});function i(a){n=a,t(n),o()}function o(){r.replaceChildren(),n.forEach((c,l)=>{let u=typeof c!="string",p=he([{value:"text"},{value:"bind"}],u?"bind":"text","wgd-select wgd-attr-mode",f=>{let y=[...n];y[l]=f==="bind"?{bind:"."}:"",i(y)}),m=ke(u?c.bind:c,"wgd-input wgd-rec-value",f=>{let y=[...n];y[l]=u?{bind:f}:f,i(y)},u?"data path":"text"),w=et(()=>i(n.filter((f,y)=>y!==l)));r.append(s("div",{class:"wgd-rec-row"},[p,m,w]))});let a=s("button",{class:"wgd-button wgd-add",type:"button"},["+ text"]);a.addEventListener("click",()=>i([...n,""]));let g=s("button",{class:"wgd-button wgd-add",type:"button"},["+ bind"]);g.addEventListener("click",()=>i([...n,{bind:"."}])),r.append(s("div",{class:"wgd-row"},[a,g]))}return o(),r}function rn(e,t,n){let r=ie(e??Fn()),i=s("div",{class:"wgd-action-head"}),o=s("div",{class:"wgd-action-schemas"}),a=s("div",{class:"wgd-action-maps"}),g=s("div",{class:"wgd-action-definition"},[i,o,a]);function c(){return r}function l(y,v){r=y,n(ie(r)),v==="all"?f():v==="schemas"&&m()}function u(y,v){let S=Ve(c()[v],R=>{l({...c(),[v]:R??{type:"object"}},"none")}),k=[ue(y),S.element],N=t.schemas??[];if(N.length>0){let R=he([{value:"",label:"copy a shared schema into this action\u2026"},...N.map(P=>({value:P.name}))],"","wgd-select",P=>{let z=N.find(T=>T.name===P);z&&l({...c(),[v]:ie(z.schema)},"schemas")});k.push(s("div",{class:"wgd-row"},[R,ue("(a copy \u2014 later edits to the shared schema do not follow)")]))}return s("div",{class:"wgd-action-schema"},k)}function p(){i.replaceChildren();let y=he([{value:"prompt",label:"prompt \u2014 propose a message"},{value:"http",label:"http \u2014 call an API"}],r.kind,"wgd-select wgd-action-kind",k=>l(k==="http"?qn():Fn(),"all"));if(r.kind==="prompt"){i.append(s("div",{class:"wgd-row"},[ue("Kind"),y]),ue("Message (literals and bound values; the user reviews and sends it)"),ri(r.text,k=>l({kind:"prompt",text:k},"none")));return}let v=he(Ke.map(k=>({value:k})),r.method,"wgd-select",k=>l({...c(),method:k},"none")),S=ke(r.url,"wgd-input wgd-action-url",k=>l({...c(),url:k},"none"),"https://\u2026");i.append(s("div",{class:"wgd-row"},[ue("Kind"),y,ue("Method"),v]),s("label",{class:"wgd-field"},[ue("URL (https, fixed)"),S]))}function m(){o.replaceChildren(),r.kind==="http"&&o.append(u("Input schema (arguments; GET \u2192 query, POST \u2192 JSON body)","input"),u("Output schema (the response must satisfy it)","output"))}function w(){if(a.replaceChildren(),r.kind!=="http")return;let y=t.secretNames??[];a.append(ue("Headers"),Kn(r.headers,y,{add:"+ header",name:"header"},v=>{let{headers:S,...k}=c();l(v===void 0?k:{...k,headers:v},"none")}),ue("Fixed query parameters"),Kn(r.query,y,{add:"+ parameter",name:"parameter"},v=>{let{query:S,...k}=c();l(v===void 0?k:{...k,query:v},"none")}))}function f(){p(),m(),w()}return f(),{element:g,getValue:()=>ie(r),setValue(y){r=ie(y),f()}}}function Ot(e,t,n){let r=e===void 0?void 0:ie(e),i=s("div",{class:"wgd-binding-head"}),o=s("div",{class:"wgd-binding-input"}),a=s("div",{class:"wgd-binding-output"}),g=s("div",{class:"wgd-binding"},[i,o,a]);function c(N){if(N!==void 0)return At(N)?(t.actions??[]).find(R=>R.name===N.ref)?.definition:N.definition}let l=()=>ie(r?.input??{}),u=()=>ie(r?.output??{});function p(N,R){r=N,n(N===void 0?void 0:ie(N)),R==="all"?k():R==="io"?(y(),v()):R==="input"?y():R==="output"&&v()}function m(N,R,P){return{...At(N)?{ref:N.ref}:{definition:N.definition},...R!==void 0&&Object.keys(R).length>0?{input:R}:{},...P!==void 0&&Object.keys(P).length>0?{output:P}:{}}}function w(){return["$index","$parent","$root",...Qe(t.getDataSchema?.()).map(R=>`$root.${R}`)]}function f(){i.replaceChildren();let N=(t.actions??[]).filter(T=>!t.loadOnly||T.definition.kind==="http"&&T.definition.method==="GET"),R=r===void 0?"none":At(r)?"shared":"inline",P=he([{value:"none",label:t.loadOnly?"no load action":"no action"},{value:"shared",label:"shared action"},{value:"inline",label:"inline definition"}],R,"wgd-select wgd-binding-mode",T=>{p(T==="none"?void 0:T==="shared"?{ref:N[0]?.name??""}:{definition:qn()},"all")});if(i.append(s("div",{class:"wgd-row"},[P])),r===void 0)return;if(At(r)){let T=r.ref,_=N.map(M=>M.name),F=(_.includes(T)?_:[T,..._]).map(M=>({value:M,label:M===""?"(pick an action)":_.includes(M)?M:`${M} (unknown)`})),U=he(F,T,"wgd-select wgd-binding-ref",M=>p(m({ref:M},l(),u()),"io"));i.append(s("div",{class:"wgd-row"},[ue("Action"),U]));return}let z=rn(r.definition,t,T=>{p(m({definition:T},l(),u()),"io")});i.append(z.element)}function y(){o.replaceChildren();let N=c(r);if(r===void 0||N?.kind!=="http")return;let R=r,P=x(N.input.properties)?Object.keys(N.input.properties):[],z=t.scopePaths??Qe(t.getDataSchema?.()),T=[...new Set([...z,...w()])],_=l(),F=P.map(U=>{let M=_[U],E=x(M)&&"const"in M,b=he([{value:"path"},{value:"const"}],E?"const":"path","wgd-select wgd-attr-mode",C=>{p(m(R,{...l(),[U]:C==="const"?{const:""}:U},u()),"input")}),j=C=>{let H=l();if(E){let $;try{$=JSON.parse(C)}catch{$=C}H[U]={const:$}}else C===""?delete H[U]:H[U]=C;p(m(R,H,u()),"none")},W=E?ke(JSON.stringify(M.const),"wgd-input wgd-rec-value",j,"JSON literal"):Dt(typeof M=="string"?M:"",T,j,"data path");return s("div",{class:"wgd-rec-row"},[s("span",{class:"wgd-rec-key wgd-binding-field"},[U]),b,W])});o.append(ue("Input mapping (field \u2190 data path or constant)"),P.length>0?s("div",{class:"wgd-record"},F):s("div",{class:"wgd-diagnostic"},["The input schema declares no properties."]))}function v(){a.replaceChildren();let N=c(r);if(r===void 0||N?.kind!=="http")return;let R=r,P=u(),z=P.mode??"merge",T=he(Fe.map(F=>({value:F})),z,"wgd-select",F=>{let U={...u(),mode:F};F!=="patch"&&delete U.path,p(m(R,l(),U),"output")}),_=[ue("Output"),T];z==="patch"&&_.push(ke(P.path??"","wgd-input",F=>{p(m(R,l(),{...u(),path:F}),"output")},"data path to write at")),a.append(s("div",{class:"wgd-row"},_)),a.append(S(N,P,F=>{let U=u();F===void 0?delete U.map:U.map=F,p(m(R,l(),U),"none")}))}function S(N,R,P){let z=s("div",{class:"wgd-record wgd-output-map"}),T=ie(R.map??{}),_=[],F=t.getDataSchema?.(),U=(R.mode??"merge")==="patch"&&R.path?R.path:"",M=U===""?F:Tt(F,U),E=Qe(M),b=[".",...Qe(N.output)],j=G(void 0);j.classList.add("wgd-type-mismatch");function W(D){T=D,P(Object.keys(T).length>0?T:void 0),$()}function C(D){j.hidden=!1,j.textContent=D}function H(D,L){let d=Dt(D,E,L,"target data path","wgd-input wgd-rec-key");return d.classList.add("wgd-map-target"),d}function $(){z.replaceChildren();let D=[];for(let[d,h]of Object.entries(T)){let A=xe(Tt(M,d)),I=xe(Tt(N.output,h));Vn(I,A)&&D.push(`'${h}' is ${I} in the response but '${U?`${U}.`:""}${d}' is ${A} in the widget schema`);let B=H(d,X=>{if(X===d)return;if(X===""||Object.hasOwn(T,X)){C(`'${X||"(empty)"}' is already a projection target.`);return}let ee=Object.entries(T).map(([ne,le])=>ne===d?[X,le]:[ne,le]);W(Object.fromEntries(ee))}),V=Dt(h,b,X=>W({...T,[d]:X}),"response path");V.classList.add("wgd-map-source");let K=et(()=>{let{[d]:X,...ee}=T;W(ee)});z.append(s("div",{class:"wgd-rec-row"},[B,s("span",{class:"wgd-st-colon"},["\u2190"]),V,K]))}_.forEach((d,h)=>{let A=H("",V=>{if(V!==""){if(Object.hasOwn(T,V)){C(`'${V}' is already a projection target.`);return}_.splice(h,1),W({...T,[V]:d.source})}}),I=Dt(d.source,b,V=>{d.source=V,$()},"response path");I.classList.add("wgd-map-source");let B=et(()=>{_.splice(h,1),$()});z.append(s("div",{class:"wgd-rec-row wgd-rec-pending"},[A,s("span",{class:"wgd-st-colon"},["\u2190"]),I,B]))});let L=s("button",{class:"wgd-button wgd-add",type:"button"},["+ projection"]);L.addEventListener("click",()=>{_.push({source:""}),$()}),j.hidden=D.length===0,j.textContent=D.length===0?"":`Type mismatch: ${D.join("; ")}.`,z.append(s("div",{class:"wgd-row"},[L]),j)}return $(),z}function k(){f(),y(),v()}return k(),{element:g,setValue(N){r=N===void 0?void 0:ie(N),k()}}}function Ne(e,t=[]){let n=e.descriptor?.dataSchemaRef;if(typeof n=="string")return t.find(i=>i.name===n)?.schema;let r=e.descriptor?.dataSchema;return x(r)?r:void 0}var ii=new Set(ye().kinds());function oi(e){if(!x(e))return[];let t=[];for(let[n,r]of Object.entries(e)){if(Ce({[n]:{color:"red"}})===""){t.push({selector:n,message:"Selector would be skipped \u2014 every comma-separated part must target a .wg- class and avoid ;{}<>@\\."});continue}if(!x(r)){t.push({selector:n,message:"Declarations must be a property \u2192 value map."});continue}for(let[i,o]of Object.entries(r))(typeof o!="string"||Ce({".wg-probe":{[i]:o}})==="")&&t.push({selector:n,property:i,message:"Declaration would be skipped \u2014 unsafe property name or value (no url(), expression(), or ;{}<>@\\)."})}return t}function Nt(e,t={}){let n={styles:[],previewable:!1};typeof e.kind!="string"||e.kind.trim().length===0?n.kind="Kind must be a non-empty id.":ii.has(e.kind)&&(n.kind=`'${e.kind}' is a built-in kind \u2014 pick a distinct id.`);let r=Te(e.template);if(!r.ok){let a={code:r.error.code,message:r.error.message},g=r.error.path;typeof g=="string"&&(a.path=g),n.template=a}let i=e.descriptor?.dataSchemaRef;typeof i=="string"&&(e.descriptor?.dataSchema!==void 0?n.schemaRef="A descriptor carries 'dataSchema' OR 'dataSchemaRef', never both.":(t.schemas??[]).every(a=>a.name!==i)&&(n.schemaRef=`References unknown schema '${i}' \u2014 it is not among the supplied shared schemas.`));let o=Ne(e,t.schemas??[]);if(x(o)){if(e.descriptor.dataExample!==void 0){let a=Se(o,e.descriptor.dataExample);a&&(n.example=a)}if(e.sampleData!==void 0){let a=Se(o,e.sampleData);a&&(n.sample=a)}}if(n.styles=oi(e.descriptor?.styles),e.load!==void 0){let a=Ge(e.load,"load",{isPath:g=>me(g)!==void 0});a&&(n.load=`${a.message} (at ${a.path})`)}if(t.actions!==void 0){let a=new Set(t.actions.map(c=>c.name)),g=Ye(e.template,e.load).filter(c=>!a.has(c));g.length>0&&(n.actionRefs=`References unknown shared action${g.length===1?"":"s"} ${g.map(c=>`'${c}'`).join(", ")} \u2014 bound elements will render disabled.`)}if(e.theme!==void 0){let a=Pe(e.theme);a.ok||(n.theme=a.error)}return n.previewable=n.kind===void 0&&n.template===void 0,n}function Gn(e,t){let n=[];St(e,"",n);let r=new Set(["string","number","integer","boolean","null",void 0]),o=n.filter(({schema:a})=>{let g=xe(a);return t==="each"?g==="array":t==="bind"?r.has(g):!0}).map(a=>a.path);return t!=="each"&&r.has(xe(e))&&o.unshift("."),o}function si(e,t){if(!x(e)||t===".")return;let n=e;for(let r of t.split(".")){if(!x(n)||!x(n.properties))return;n=n.properties[r]}return x(n)&&xe(n)==="array"?n.items:void 0}var jt=Symbol("remove");function on(e){let t="";for(let n of e){let r=typeof n=="number"?`children.${n}`:n;t=t===""?r:`${t}.${r}`}return t}function Rt(e,t,n){if(t.length===0)return n===jt?void 0:n;let[r,...i]=t;if(typeof r=="number"){if(!x(e)||!Array.isArray(e.children))return e;let o=[...e.children];return i.length===0&&n===jt?o.splice(r,1):o[r]=Rt(o[r],i,n),{...e,children:o}}if(!x(e))return e;if(i.length===0&&n===jt){let{[r]:o,...a}=e;return a}return{...e,[r]:Rt(e[r],i,n)}}function Yn(e,t,n,r){let i=t.length===0?e:ai(e,t);if(!x(i)||!Array.isArray(i.children))return e;let o=[...i.children];if(n<0||r<0||n>=o.length||r>=o.length)return e;let[a,g]=[o[n],o[r]];o[n]=g,o[r]=a;let c={...i,children:o};return t.length===0?c:Rt(e,t,c)}function ai(e,t){let n=e;for(let r of t){if(!x(n))return;n=typeof r=="number"?Array.isArray(n.children)?n.children[r]:void 0:n[r]}return n}var Lt={text:()=>"text",bind:()=>({bind:"."}),element:()=>({tag:"div",children:[]}),each:()=>({each:".",template:"item"}),when:()=>({when:".",template:"shown"})};function Xn(e,t,n={}){let r=n.actionContext??{actions:[],secretNames:[],schemas:[]},i=new Set,o=s("div",{class:"wgd-tree"}),a=G(void 0),g=s("textarea",{class:"wgd-textarea wgd-template-json",rows:"14",spellcheck:"false"}),c=s("div",void 0,[g,a]);ae(g),c.hidden=!0;let l=s("button",{class:"wgd-button",type:"button"},["Tree"]),u=s("button",{class:"wgd-button",type:"button"},["JSON"]);l.addEventListener("click",()=>{o.hidden=!1,c.hidden=!0}),u.addEventListener("click",()=>{o.hidden=!0,c.hidden=!1});let p=G(void 0),m=s("details",{class:"wgd-section",open:""},[s("summary",{class:"wgd-section-title"},["Template"]),s("div",{class:"wgd-section-body"},[s("div",{class:"wgd-row"},[l,u]),p,o,c])]);function w(E){e.update(b=>({...b,template:E}))}function f(E,b){w(Rt(e.get().template,E,b))}g.addEventListener("input",()=>{try{let E=JSON.parse(g.value);a.hidden=!0,a.textContent="",w(E)}catch(E){a.hidden=!1,a.textContent=`Invalid JSON (template keeps the last valid value): ${String(se(E))}`}});function y(E,b,j="wgd-input wgd-node-value"){let W=s("input",{type:"text",class:j});return W.value=E,W.addEventListener("change",()=>b(W.value)),W}let v=new Set;function S(E,b,j,W,C,H,$,D){let L=on(b),d=W.length>0,h=d&&v.has(L),A;d?(A=s("button",{class:"wgd-chevron",type:"button",title:h?"Expand":"Collapse"},[h?"\u25B8":"\u25BE"]),A.addEventListener("click",()=>{h?v.delete(L):v.add(L),U()})):A=s("span",{class:"wgd-chevron wgd-chevron-none"});let I=E===void 0?[A,...j]:[A,s("span",{class:"wgd-node-badge"},[E]),...j];h&&D?.summary!==void 0&&I.push(s("span",{class:"wgd-node-summary"},[D.summary]));let B=[...D?.icons??[]];if($&&$.count>1){if($.index>0){let K=s("button",{class:"wgd-icon",type:"button",title:"Move up"},["\u2191"]);K.addEventListener("click",()=>w(Yn(e.get().template,$.parent,$.index,$.index-1))),B.push(K)}if($.index<$.count-1){let K=s("button",{class:"wgd-icon",type:"button",title:"Move down"},["\u2193"]);K.addEventListener("click",()=>w(Yn(e.get().template,$.parent,$.index,$.index+1))),B.push(K)}}if(H){let K=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);K.addEventListener("click",()=>b.length===0?w(""):f(b,jt)),B.push(K)}B.length>0&&I.push(s("span",{class:"wgd-node-icons"},B));let V=[s("div",{class:"wgd-node-row"},I)];return C!==void 0&&V.push(G(C)),h||V.push(...W),s("div",{class:"wgd-node","data-path":L},V)}let k=["div","span","p","section","article","header","footer","h1","h2","h3","h4","strong","em","small","code","pre","ul","ol","li","dl","dt","dd","table","thead","tbody","tr","th","td","img","a","figure","figcaption","hr","br","label"];function N(E,b,j,W,C="wgd-input wgd-node-value"){let H=x(b)?Gn(b,j):[];if(H.length===0)return y(E,W,C);let $=s("select",{class:"wgd-select wgd-path"}),D=H.includes(E);for(let h of D?H:[E,...H])$.append(s("option",{value:h},[h===E&&!D?`${h} (off-schema)`:h]));$.append(s("option",{value:"__custom__"},["custom\u2026"])),$.value=E,be($);let L=y(E,W,C);L.hidden=!0,$.addEventListener("change",()=>{if($.value==="__custom__"){L.hidden=!1,L.focus();return}L.hidden=!0,W($.value)});let d=C.includes("wgd-attr-value")?" wgd-attr-value":"";return s("span",{class:`wgd-pathwrap${d}`},[$,L])}function R(E,b){let j=s("select",{class:"wgd-select wgd-tag"}),W=k.includes(E)?k:[E,...k];for(let H of W)j.append(s("option",{value:H},[H]));j.append(s("option",{value:"__custom__"},["custom\u2026"])),j.value=E,be(j);let C=y(E,b,"wgd-input wgd-tag-custom");return C.hidden=!0,j.addEventListener("change",()=>{if(j.value==="__custom__"){C.hidden=!1,C.focus();return}C.hidden=!0,b(j.value)}),s("span",{class:"wgd-tagwrap"},[j,C])}function P(E,b,j,W,C,H,$){let D=[...b,j];if(W===void 0){let L=Zt(`+ ${E}`,`Set '${E}' to a node`,Object.keys(Lt),d=>{let h=Lt[d];h&&f(D,h())});return C?s("div",{class:"wgd-slot"},[G(`Missing required '${E}'.`),L]):s("div",{class:"wgd-slot wgd-slot-unset"},[L])}return s("div",{class:"wgd-slot"},[s("span",{class:"wgd-slot-label"},[E]),z(W,D,H,!C,void 0,$)])}function z(E,b,j,W=!0,C,H){let $=on(b),D=j!==void 0&&(j===$||(j.startsWith($===""?"attrs.":`${$}.attrs.`)||j.startsWith($===""?"action":`${$}.action`))&&x(E)&&typeof E.tag=="string")?T:void 0;if(typeof E=="string")return S("text",b,[y(E,L=>f(b,L))],[],D,W,C);if(!x(E))return S("invalid",b,[s("code",void 0,[JSON.stringify(E)])],[],D??"Not a template node.",W,C);if(typeof E.bind=="string")return S("bind",b,[N(E.bind,H,"bind",L=>f(b,{bind:L}))],[],D,W,C);if(typeof E.each=="string")return S("each",b,[N(E.each,H,"each",L=>f(b,{...E,each:L}))],[P("template",b,"template",E.template,!0,j,si(H,E.each)),P("empty",b,"empty",E.empty,!1,j,H)],D,W,C,{summary:E.empty!==void 0?"template \xB7 empty":"template"});if(typeof E.when=="string")return S("when",b,[N(E.when,H,"when",L=>f(b,{...E,when:L}))],[P("template",b,"template",E.template,!0,j,H),P("else",b,"else",E.else,!1,j,H)],D,W,C,{summary:E.else!==void 0?"template \xB7 else":"template"});if(typeof E.tag=="string"){let L=x(E.attrs)?E.attrs:{},d=x(E.action)?E.action:void 0,h=Object.entries(L).map(([K,X])=>{let ee=x(X)&&typeof X.bind=="string"?X:{bind:""},ne=x(X)&&typeof X.bind=="string",le=ne?ee:void 0,Ee=Y=>{let de={bind:Y.bind};return Y.map!==void 0?(de.map=Y.map,Y.default!==void 0&&Y.default!==""&&(de.default=Y.default)):Y.prefix!==void 0&&Y.prefix!==""&&(de.prefix=Y.prefix),de},we=Y=>{f(b,{...E,attrs:{...L,[K]:Y}})},pr=y(K,Y=>{let de=Object.entries(L).map(([je,pn])=>je===K?[Y,pn]:[je,pn]);f(b,{...E,attrs:Object.fromEntries(de)})},"wgd-input wgd-attr-name"),Le=s("select",{class:"wgd-select wgd-attr-mode"});Le.append(s("option",{value:"literal"},["literal"])),Le.append(s("option",{value:"bind"},["bind"])),Le.value=ne?"bind":"literal",be(Le);let ln=y(String(ne?"":X),Y=>we(Y),"wgd-input wgd-attr-value"),gr=ne?N(ee.bind,H,"bind",Y=>we(Ee({...ee,bind:Y})),"wgd-input wgd-attr-value"):ln;Le.addEventListener("change",()=>{let Y=ne?ee.bind:ln.value;we(Le.value==="bind"?{bind:Y||"."}:Y)});let Pt=s("button",{class:"wgd-icon",type:"button",title:"Remove attribute"},["\u2715"]);Pt.addEventListener("click",()=>{let{[K]:Y,...de}=L;f(b,{...E,attrs:de})});let it=[pr,Le,gr],It=le?.map!==void 0,fr=le?.prefix!==void 0&&le.prefix!=="";if(ne&&!It){let Y=y(le?.prefix??"",de=>we(Ee({...ee,map:void 0,prefix:de})),"wgd-input wgd-attr-prefix");Y.placeholder="prefix",Y.title="Literal prefix, e.g. mailto: \u2014 emitted only when the bound value is non-empty",it.push(Y)}if(ne&&!It&&!fr){let Y=s("button",{class:"wgd-icon",type:"button",title:"Map values to authored literals (e.g. status \u2192 class)"},["map"]);Y.addEventListener("click",()=>we(Ee({...ee,prefix:void 0,map:{}}))),it.push(s("span",{class:"wgd-node-icons"},[Y,Pt]))}else it.push(Pt);let un=s("div",{class:"wgd-attr-row"},it),Mt=[un];if(ne&&It){let Y=kt(ee.map,{key:"data value",value:"authored literal",add:"+ mapping"},je=>{we(je===void 0?{bind:ee.bind}:Ee({...ee,map:je}))}),de=y(ee.default??"",je=>we(Ee({...ee,default:je})),"wgd-input wgd-attr-map-default");de.placeholder="default (on miss)",Mt.push(s("div",{class:"wgd-attr-map"},[Y.element,s("div",{class:"wgd-rec-row"},[s("span",{class:"wgd-st-colon"},["\u21B3"]),de])]))}return Mt.length===1?un:s("div",{class:"wgd-attr"},Mt)}),A=Array.isArray(E.children)?E.children:[],I=Zt("+","Add attribute or child node",["attribute",...d===void 0&&(E.tag==="button"||E.tag==="a")?["action"]:[],...Object.keys(Lt)],K=>{v.delete(on(b));let X=Lt[K];if(K==="attribute")f(b,{...E,attrs:{...L,"":""}});else if(K==="action"){let ee=r.actions[0];f(b,{...E,action:ee!==void 0?{ref:ee.name}:{definition:{kind:"prompt",text:["Tell me more"]}}})}else X&&f([...b,A.length],X())}),B=[];if(h.length>0&&B.push(s("div",{class:"wgd-attrs"},h)),d!==void 0){let K=x(H)?Gn(H,"when"):[],X=Ot(d,{...r,scopePaths:K,getDataSchema:()=>Ne(e.get(),r.schemas)},le=>{if(le===void 0){let{action:Ee,...we}=E;f(b,we)}else f(b,{...E,action:le})}),ee=[s("span",{class:"wgd-slot-label"},["action"]),X.element],ne="ref"in d&&typeof d.ref=="string"?d.ref:void 0;ne!==void 0&&i.has(ne)&&ee.push(G(`Unknown shared action '${ne}' \u2014 this element renders disabled.`)),B.push(s("div",{class:"wgd-attrs wgd-node-action"},ee))}A.length>0&&B.push(s("div",{class:"wgd-children"},A.map((K,X)=>z(K,[...b,X],j,!0,{parent:b,index:X,count:A.length},H))));let V=[];return h.length>0&&V.push(`${h.length} attr${h.length===1?"":"s"}`),d!==void 0&&V.push("action"),A.length>0&&V.push(`${A.length} ${A.length===1?"child":"children"}`),S(void 0,b,[R(E.tag,K=>f(b,{...E,tag:K}))],B,D,W,C,{icons:[I],summary:V.join(" \xB7 ")})}return S("unknown",b,[s("code",void 0,[JSON.stringify(E)])],[],D??"Unknown template node form.",W,C)}let T,_,F;function U(){_!==void 0&&o.replaceChildren(z(_.template,[],F,!0,void 0,Ne(_,r.schemas)))}function M(E,b){T=b.template?`${b.template.code}: ${b.template.message}`:void 0,_=E,F=b.template?.path;let j=new Set(r.actions.map(C=>C.name));i=new Set(Ye(E.template,E.load).filter(C=>!j.has(C)));let W=b.template?`${b.template.code}: ${b.template.message}`+(b.template.path!==void 0&&b.template.path!==""?` (at ${b.template.path})`:""):b.actionRefs;p.hidden=W===void 0,p.textContent=W??"",(!o.hidden||o.childNodes.length===0)&&U(),document.activeElement!==g&&(g.value=JSON.stringify(E.template,null,2),ce(g))}return t.push(()=>{}),{element:m,refresh:M,dispose:()=>m.remove()}}function Zn(e,t,n=[]){let r=G(void 0),i=s("select",{class:"wgd-select wgd-theme-select"});i.append(s("option",{value:""},["(none \u2014 defaults)"]));for(let l of n)i.append(s("option",{value:l.name},[l.label??l.name]));i.addEventListener("change",()=>{let l=n.find(u=>u.name===i.value);e.update(u=>{if(l===void 0){let{theme:p,...m}=u;return m}return{...u,theme:l.tokens}})});let o=s("div",{class:"wgd-token-ref"});function a(l){o.replaceChildren();for(let[u,p]of Object.entries(ge)){let m=l?.[u]??p.default,w=s("div",{class:"wgd-token-ref-row",title:p.use},[p.type==="color"?s("span",{class:"wgd-token-ref-swatch",style:`background: ${m}`}):s("span",{class:"wgd-token-ref-swatch wgd-token-ref-noswatch"}),s("code",{class:"wgd-token-ref-name"},[`--wg-${u}`]),s("span",{class:"wgd-token-ref-value"},[m])]);o.append(w)}for(let[u,p]of Object.entries(l??{})){if(!u.startsWith("x-"))continue;let m=s("div",{class:"wgd-token-ref-row",title:"Custom variable"},[s("span",{class:"wgd-token-ref-swatch wgd-token-ref-noswatch"}),s("code",{class:"wgd-token-ref-name"},[`--wg-${u}`]),s("span",{class:"wgd-token-ref-value"},[p])]);o.append(m)}}a(e.get().theme),t.push(l=>{if(l.theme===void 0)i.value="";else{let u=n.find(p=>JSON.stringify(p.tokens)===JSON.stringify(l.theme));i.value=u?.name??""}a(l.theme)});let g=[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Preview theme"]),i]),s("span",{class:"wgd-field-label"},[n.length===0?"No themes supplied by the host \u2014 design themes in the theme designer.":"Themes come from the host; edit them in the theme designer."]),r,s("details",{class:"wgd-token-ref-details"},[s("summary",{class:"wgd-field-label"},["Theme tokens (reference for styles)"]),o])],c=Z("Preview",g);return{element:c,setDiagnostic(l){r.hidden=l===void 0,r.textContent=l??""},dispose:()=>c.remove()}}function tt(e){let t=e.map((n,r)=>{let i=s("button",{class:`wgd-button wgd-tab${r===0?" wgd-tab-active":""}`,type:"button"},[n.label]);return i.addEventListener("click",()=>{e.forEach((o,a)=>{o.element.hidden=a!==r,t[a]?.classList.toggle("wgd-tab-active",a===r)})}),n.element.hidden=r!==0,i});return s("div",{class:"wgd-tabs"},[s("div",{class:"wgd-row"},t),...e.map(n=>n.element)])}function nt(e,t,n,r,i,o,a=6){let g=G(void 0),c=t(i.get()),l=xt(e,c===void 0?"":JSON.stringify(c,null,2),p=>{if(p.trim()===""){g.hidden=!0,r&&i.update(m=>r(m));return}try{let m=JSON.parse(p);g.hidden=!0,g.textContent="",i.update(w=>n(w,m))}catch(m){g.hidden=!1,g.textContent=`Invalid JSON (draft keeps the last valid value): ${String(se(m))}`}},a),u=pe(l,"textarea");return ae(u),o.push(p=>{if(document.activeElement===u)return;let m=t(p);u.value=m===void 0?"":JSON.stringify(m,null,2),ce(u)}),s("div",void 0,[l,g])}function Qn(e,t,n=[],r=[],i={actions:[],secretNames:[],schemas:[]}){let o=[],a=[];function g(d,h,A){let I=Ae(d,h(e.get()),V=>e.update(K=>A(K,V))),B=pe(I,"input");return o.push(V=>{document.activeElement!==B&&(B.value=h(V))}),I}let c=G(void 0),l=kt(e.get().descriptor.hints,{key:"hint name",value:"what the hint does",add:"+ hint"},d=>e.update(h=>{if(d===void 0){let{hints:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,hints:d}}}));o.push(d=>l.setValue(d.descriptor.hints));let u=Z("General",[g("Kind (id)",d=>d.kind,(d,h)=>({...d,kind:h})),c,g("Description",d=>d.descriptor.description??"",(d,h)=>({...d,descriptor:{...d.descriptor,description:h}})),g("Data shape (prose)",d=>d.descriptor.dataShape??"",(d,h)=>({...d,descriptor:{...d.descriptor,dataShape:h}})),s("div",{class:"wgd-field"},[s("span",{class:"wgd-field-label"},["Hints"]),tt([{label:"Tree",element:l.element},{label:"JSON",element:nt("",d=>d.descriptor.hints,(d,h)=>{if(!x(h))return d;let A=Object.fromEntries(Object.entries(h).map(([I,B])=>[I,String(B)]));return{...d,descriptor:{...d.descriptor,hints:A}}},d=>{let{hints:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o,3)}])])]),p=Ve(e.get().descriptor.dataSchema,d=>e.update(h=>{if(d===void 0){let{dataSchema:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,dataSchema:d}}}));o.push(d=>p.setValue(d.descriptor.dataSchema));let m=tt([{label:"Builder",element:p.element},{label:"JSON",element:nt("dataSchema (JSON-Schema subset: type/properties/required/items/enum/pattern)",d=>d.descriptor.dataSchema,(d,h)=>x(h)?{...d,descriptor:{...d.descriptor,dataSchema:h}}:d,d=>{let{dataSchema:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),w=s("select",{class:"wgd-select wgd-schema-mode"});w.append(s("option",{value:"inline"},["define inline"]));let f=s("option",{value:"shared"},["use shared"]);r.length===0&&(f.disabled=!0),w.append(f);let y=s("select",{class:"wgd-select wgd-schema-ref"});for(let d of r)y.append(s("option",{value:d.name},[d.label??d.name]));y.addEventListener("change",()=>{e.update(d=>({...d,descriptor:{...d.descriptor,dataSchemaRef:y.value}}))});let v=s("textarea",{class:"wgd-textarea wgd-schema-shared",rows:"10",readonly:"",spellcheck:"false"}),S=G(void 0),k=s("div",void 0,[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Shared schema"]),y]),v,s("span",{class:"wgd-field-label"},["Read-only here \u2014 edit shared schemas in the Data schemas section."])]);w.addEventListener("change",()=>{if(w.value==="shared"){let d=e.get().descriptor.dataSchemaRef??r[0]?.name??"";e.update(h=>{let{dataSchema:A,...I}=h.descriptor;return{...h,descriptor:{...I,dataSchemaRef:d}}})}else{let d=Ne(e.get(),r);e.update(h=>{let{dataSchemaRef:A,...I}=h.descriptor;return{...h,descriptor:{...I,dataSchema:d??{type:"object"}}}})}});function N(d){let h=d.descriptor.dataSchemaRef,A=typeof h=="string";if(w.value=A?"shared":"inline",m.hidden=A,k.hidden=!A,A){y.value!==h&&(y.value=h);let I=r.find(B=>B.name===h)?.schema;v.value=I===void 0?"":JSON.stringify(I,null,2),ce(v)}}o.push(N),N(e.get());let R=Z("Data schema",[s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Source"]),w]),S,m,k],!1);ae(v);function P(d,h){let A=s("div"),I="",B;function V(K){let X=Ne(K,r),ee=X===void 0?"":JSON.stringify(X);if(B!==void 0&&ee===I){B.setValue(d(K));return}I=ee;let ne=le=>e.update(Ee=>h(Ee,le));B=X!==void 0&&x(X)?Et(X,d(K),ne):_n(d(K),ne),A.replaceChildren(B.element)}return V(e.get()),o.push(V),A}let z=G(void 0),T=Z("Sample data",[s("span",{class:"wgd-field-label"},["dataExample \u2014 ships with the widget as the example agents imitate"]),tt([{label:"Edit",element:P(d=>d.descriptor.dataExample,(d,h)=>({...d,descriptor:{...d.descriptor,dataExample:h}}))},{label:"JSON",element:nt("dataExample (JSON)",d=>d.descriptor.dataExample,(d,h)=>({...d,descriptor:{...d.descriptor,dataExample:h}}),d=>{let{dataExample:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),z],!1),_=G(void 0),F=Z("Data for preview",[s("span",{class:"wgd-field-label"},["Overrides dataExample in the preview only (not exported)"]),tt([{label:"Edit",element:P(d=>d.sampleData,(d,h)=>({...d,sampleData:h}))},{label:"JSON",element:nt("Preview data (JSON)",d=>d.sampleData,(d,h)=>({...d,sampleData:h}),d=>{let{sampleData:h,...A}=d;return A},e,o,4)}]),_],!1),U=s("div"),M=Jn(e.get().descriptor.styles,d=>e.update(h=>{if(d===void 0){let{styles:A,...I}=h.descriptor;return{...h,descriptor:I}}return{...h,descriptor:{...h.descriptor,styles:d}}}));o.push(d=>M.setValue(d.descriptor.styles));let E=Z("Styles (.wg- selectors, guarded like the server)",[tt([{label:"Tree",element:M.element},{label:"JSON",element:nt("",d=>d.descriptor.styles,(d,h)=>x(h)?{...d,descriptor:{...d.descriptor,styles:h}}:d,d=>{let{styles:h,...A}=d.descriptor;return{...d,descriptor:A}},e,o)}]),U]),b=Xn(e,o,{actionContext:i}),j=Zn(e,o,n),W=G(void 0),C=Ot(e.get().load,{...i,loadOnly:!0,getDataSchema:()=>Ne(e.get(),r)},d=>e.update(h=>{if(d===void 0){let{load:A,...I}=h;return I}return{...h,load:d}}));o.push(d=>{C.element.contains(document.activeElement)||C.setValue(d.load)});let H=Z("Load action (http GET, runs once when the widget first renders in an Apps host)",[s("div",{class:"wgd-compact wgd-load"},[C.element]),W],!1),$=Mn(e);F.classList.add("wgd-edit-only"),E.classList.add("wgd-edit-only"),t.left.append(u,R,T,b.element,H,$.element),t.right.append(F,E,j.element),a.push(b.dispose,j.dispose,$.dispose);function D(d){let h=Nt(d,{schemas:r,actions:i.actions});c.hidden=h.kind===void 0,W.hidden=h.load===void 0,W.textContent=h.load??"",c.textContent=h.kind??"",z.hidden=h.example===void 0,z.textContent=h.example?`dataExample vs dataSchema: ${h.example.code} at ${h.example.path} \u2014 ${h.example.message}`:"",_.hidden=h.sample===void 0,_.textContent=h.sample?`sample vs dataSchema: ${h.sample.code} at ${h.sample.path} \u2014 ${h.sample.message}`:"",S.hidden=h.schemaRef===void 0,S.textContent=h.schemaRef??"",j.setDiagnostic(h.theme?`${h.theme.code}: ${h.theme.message}`:void 0),U.replaceChildren(...h.styles.map(A=>G(`${A.selector}${A.property?` \u2192 ${A.property}`:""}: ${A.message}`)));for(let A of o)A(d);b.refresh(d,h)}let L=e.subscribe(D);return a.push(L),D(e.get()),{dispose(){for(let d of a)d();t.left.replaceChildren(),t.right.replaceChildren()}}}var Ct="designer-preview";function $t(e={}){Jt(document);let t=s("div",{class:"wgd-banner"});t.hidden=!0;let n=s("style"),r=s("div",{class:"wgd-preview"}),i=s("div",{class:"wgd-preview-pane"},[t,n,r]),o=ye(),a=()=>({tag:"div",children:["\u2026"]});o.register(Ct,m=>a(m),{description:"Designer preview delegate.",dataShape:"Defined by the draft being designed."});let g=new Map;for(let m of e.widgets??[]){let w=Te(m.template);if(!w.ok||typeof m.kind!="string"||m.kind==="")continue;let f=vt(w.template),y=x(m.descriptor)?m.descriptor:{};try{o.register(m.kind,v=>f(v),{description:`Custom widget '${m.kind}' supplied for preview.`,dataShape:"Defined by the supplied definition.",...y.dataExample!==void 0?{dataExample:y.dataExample}:{}})}catch{continue}x(y.styles)&&g.set(m.kind,Ce(y.styles))}let c=o.kinds().filter(m=>m!==Ct),l;function u(m,w,f){let y=f===void 0||f===Ct;if(y&&!w.previewable){let S=w.kind??(w.template?`${w.template.code}: ${w.template.message}`+(w.template.path?` (at ${w.template.path})`:""):"Draft is not previewable.");if(t.hidden=!1,l===void 0){t.textContent=`Nothing to preview yet \u2014 ${S}`,r.replaceChildren(s("div",{class:"wgd-preview-empty"},["No preview: the draft has never been valid."]));return}t.textContent=`Preview frozen on the last valid draft \u2014 ${S}`;return}if(r.querySelector(".wgd-preview-empty")?.remove(),t.hidden=!0,t.textContent="",y){let S=Te(m.template);if(!S.ok)return;let k=e.actions??[];a=vt(S.template,{actions:N=>k.find(R=>R.name===N)?.definition})}n.textContent=y?m.descriptor.styles?Ce(m.descriptor.styles):"":g.get(f)??"",Ut(r,m.theme??{});let v={kind:y?Ct:f,data:y?m.sampleData??m.descriptor.dataExample??null:p(f)};l===void 0?l=Gt(v,r,{catalog:o}):l.update(v);for(let S of r.querySelectorAll("[data-wg-action]"))S.classList.add("wg-designer-action")}function p(m){return o.describe(m)?.dataExample??{value:"preview"}}return{pane:i,kinds:c,update:u,dispose(){l?.dispose(),l=void 0,i.replaceChildren()}}}function _e(e){return JSON.parse(JSON.stringify(e))}function rt(){return{kind:"my-widget",template:{tag:"div",attrs:{class:"wg-template"},children:[{tag:"h2",children:[{bind:"title"}]},{bind:"message"}]},descriptor:{description:"Describe what this widget is for.",dataShape:"{ title?, message }",dataExample:{title:"My widget",message:"Hello from the widgentic designer"},dataSchema:{type:"object",required:["message"],properties:{title:{type:"string"},message:{type:"string"}}}}}}function er(e){let t=_e(e??rt()),n=[],r=new Set;function i(){for(let o of[...r])o(t)}return{get:()=>t,update(o){n.push(t),n.length>50&&n.shift(),t=_e(o(_e(t))),i()},replace(o){n.length=0,t=_e(o),i()},undo(){let o=n.pop();return o===void 0?!1:(t=o,i(),!0)},subscribe(o){return r.add(o),()=>r.delete(o)}}}function tr(e,t={}){Oe(document);let n=t.initialWidget?_e({...t.initialWidget}):rt(),r=t.initialTheme!==void 0?{...n,theme:t.initialTheme}:n,i=er(r),o=new Set,a=$t({actions:t.actions??[]}),g=s("div",{class:"wgd-panels"}),c=s("div",{class:"wgd-preview-pane"}),l=s("div",{class:"wgd-side"},[a.pane,c]),u=s("div",{class:"wgd-root"},[g,l]);(t.appearance==="light"||t.appearance==="dark")&&u.setAttribute("data-wgd-theme",t.appearance),De(u,t.chrome),e.appendChild(u);let p={actions:t.actions??[],secretNames:t.secretNames??[],schemas:t.schemas??[]},m=Qn(i,{left:g,right:c},t.themes??[],t.schemas??[],p);function w(v){let S=Nt(v,{schemas:t.schemas??[],actions:t.actions??[]});a.update(v,S);for(let k of[...o])k(v,S)}let f=i.subscribe(w);w(i.get());function y(v){u.classList.toggle("wgd-readonly",v);let S=[...u.querySelectorAll(".wgd-panels .wgd-section-body, .wgd-edit-only > .wgd-section-body")].filter(k=>!k.parentElement?.classList.contains("wgd-view-only"));for(let k of S)v?k.setAttribute("inert",""):k.removeAttribute("inert")}return t.readOnly===!0&&y(!0),{getDraft:()=>_e(i.get()),setReadOnly:y,loadWidget(v){let S=en(v);return S.length>0?{ok:!1,errors:S}:(tn(i,v),{ok:!0})},loadTheme(v){let S=Pe(v);return S.ok?(i.update(k=>({...k,theme:S.theme})),{ok:!0}):{ok:!1,errors:[S.error.message]}},subscribe(v){return o.add(v),()=>o.delete(v)},dispose(){f(),m.dispose(),a.dispose(),o.clear(),u.remove()}}}var nr=/^[a-zA-Z0-9._-]+$/;function di(){return{name:"my-schema",label:"My schema",schema:{type:"object",properties:{}}}}function ci(e){let t=[];return x(e)?(typeof e.name!="string"||e.name.trim()===""?t.push("'name' must be a non-empty string."):nr.test(e.name)||t.push(`'${e.name}' is not a valid schema name \u2014 use letters, digits, '.', '_' or '-'.`),x(e.schema)||t.push("'schema' must be a plain object."),t):["Schema entry must be an object."]}function rr(e,t={}){Oe(document);let n=t.initialSchema?JSON.parse(JSON.stringify(t.initialSchema)):di(),r=new Set,i=s("div",{class:"wgd-panels"}),o=s("div",{class:"wgd-root wgd-schema-designer"},[i]);(t.appearance==="light"||t.appearance==="dark")&&o.setAttribute("data-wgd-theme",t.appearance),De(o,t.chrome),e.appendChild(o);function a(){return JSON.parse(JSON.stringify(n))}function g(){for(let b of[...r])b(a())}let c=[],l=G(void 0);function u(b,j,W){let C=Ae(b,j(),W),H=pe(C,"input");return c.push(()=>{document.activeElement!==H&&(H.value=j())}),C}let p=Z("Schema",[u("Name (id)",()=>n.name,b=>{n={...n,name:b};let j=b.trim()===""||!nr.test(b);l.hidden=!j,l.textContent=j?"Name must be non-empty using letters, digits, '.', '_' or '-'.":"",g()}),l,u("Label",()=>n.label??"",b=>{n={...n,label:b},g()}),u("Description",()=>n.description??"",b=>{n={...n,description:b},g()})]),m=Ve(n.schema,b=>{n={...n,schema:b??{}},v(),g()}),w=G(void 0),f=s("textarea",{class:"wgd-textarea",rows:"12",spellcheck:"false"}),y=s("div",void 0,[f,w]);f.value=JSON.stringify(n.schema,null,2),f.addEventListener("input",()=>{try{let b=JSON.parse(f.value);if(!x(b))throw new Error("schema must be an object");w.hidden=!0,w.textContent="",n={...n,schema:b},m.setValue(b),g()}catch(b){w.hidden=!1,w.textContent=`Invalid JSON (schema keeps the last valid value): ${String(se(b))}`}});function v(){document.activeElement!==f&&(f.value=JSON.stringify(n.schema,null,2),ce(f))}let S=s("button",{class:"wgd-button wgd-tab wgd-tab-active",type:"button"},["Builder"]),k=s("button",{class:"wgd-button wgd-tab",type:"button"},["JSON"]);y.hidden=!0,S.addEventListener("click",()=>{m.element.hidden=!1,y.hidden=!0,S.classList.add("wgd-tab-active"),k.classList.remove("wgd-tab-active")}),k.addEventListener("click",()=>{m.element.hidden=!0,y.hidden=!1,k.classList.add("wgd-tab-active"),S.classList.remove("wgd-tab-active"),v()});let N=Z("Definition",[s("div",{class:"wgd-row"},[S,k]),m.element,y]),R=G(void 0),P=s("textarea",{class:"wgd-textarea wgd-schema-import",rows:"6",spellcheck:"false"}),z=s("button",{class:"wgd-button",type:"button"},["Import"]);z.addEventListener("click",()=>{let b;try{b=JSON.parse(P.value)}catch(W){R.hidden=!1,R.textContent=`Invalid JSON: ${se(W)}`;return}let j=M(b);R.hidden=j.ok,R.textContent=j.ok?"":j.errors.join(`
|
|
414
|
+
`)});let T=Z("Import",[s("span",{class:"wgd-field-label"},["Import schema entry JSON ({ name, label?, description?, schema })"]),P,R,s("div",{class:"wgd-row"},[z])]),_=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"}),F=s("button",{class:"wgd-button wgd-add",type:"button"},["Export schema entry"]);F.addEventListener("click",()=>{_.value=JSON.stringify(a(),null,2),ce(_)});let U=Z("Export",[s("div",{class:"wgd-toolbar"},[F]),_]);U.classList.add("wgd-view-only"),i.append(p,N,T,U),ae(f),ae(P),ae(_);function M(b){let j=ci(b);if(j.length>0)return{ok:!1,errors:j};n=JSON.parse(JSON.stringify(b));for(let W of c)W();return l.hidden=!0,m.setValue(n.schema),v(),g(),{ok:!0}}function E(b){o.classList.toggle("wgd-readonly",b);let j=[...i.querySelectorAll(".wgd-section-body")].filter(W=>!W.parentElement?.classList.contains("wgd-view-only"));for(let W of j)b?W.setAttribute("inert",""):W.removeAttribute("inert")}return t.readOnly===!0&&E(!0),{getSchema:a,loadSchema:M,setReadOnly:E,subscribe(b){return r.add(b),()=>r.delete(b)},dispose(){r.clear(),o.remove()}}}var li=ye().kinds(),ui=/^#[0-9a-f]{3}([0-9a-f]{3})?$/i,ir=/^x-[a-z0-9][a-z0-9-]*$/;function pi(e){if(!ui.test(e))return;if(e.length===7)return e.toLowerCase();let[,t,n,r]=e.toLowerCase();return`#${t}${t}${n}${n}${r}${r}`}function gi(){return{name:"my-theme",label:"My theme",tokens:{}}}function fi(e){let t=[];if(typeof e!="object"||e===null||Array.isArray(e))return["Theme entry must be an object."];let n=e;(typeof n.name!="string"||n.name.trim()==="")&&t.push("'name' must be a non-empty string.");let r=Pe(n.tokens??{});return r.ok||t.push(`tokens: ${r.error.code} \u2014 ${r.error.message}`),t}function or(e,t={}){Oe(document);let n=t.initialTheme?JSON.parse(JSON.stringify(t.initialTheme)):gi(),r=new Set,i=$t(t.widgets?{widgets:t.widgets}:{}),o=i.kinds.length>0?i.kinds:li,a=o[0]??"card",g=s("div",{class:"wgd-panels"}),c=s("div",{class:"wgd-side"},[i.pane]),l=s("div",{class:"wgd-root wgd-theme-designer"},[g,c]);(t.appearance==="light"||t.appearance==="dark")&&l.setAttribute("data-wgd-theme",t.appearance),De(l,t.chrome),e.appendChild(l);function u(){return{...rt(),theme:n.tokens}}function p(){i.update(u(),{styles:[],previewable:!0},a);for(let D of[...r])D(m())}function m(){return JSON.parse(JSON.stringify(n))}function w(D,L){let d={...n.tokens};L===""?delete d[D]:d[D]=L,n={...n,tokens:d},p()}let f=[];function y(D,L,d){let h=Ae(D,L(),d),A=pe(h,"input");return f.push(()=>{document.activeElement!==A&&(A.value=L())}),h}let v=Z("Theme",[y("Name (id)",()=>n.name,D=>{n={...n,name:D},p()}),y("Label",()=>n.label??"",D=>{n={...n,label:D},p()}),y("Description",()=>n.description??"",D=>{n={...n,description:D},p()})]),S=s("select",{class:"wgd-select wgd-preview-kind"});for(let D of o)S.append(s("option",{value:D},[D]));S.value=a,S.addEventListener("change",()=>{a=S.value,p()}),c.prepend(s("div",{class:"wgd-row"},[s("span",{class:"wgd-field-label"},["Preview kind"]),S]));let k=[],N=[];for(let D of fe){let L=s("input",{type:"text",class:"wgd-input",placeholder:$e[D]});L.value=n.tokens[D]??"";let d=G(void 0),h=ge[D].type==="color"?s("input",{type:"color",class:"wgd-swatch",title:`Pick --wg-${D}`}):void 0,A=I=>{let B=I===""?$e[D]:I;if(h!==void 0){let V=pi(B);V!==void 0&&(h.value=V),h.style.background=We(B)?B:"transparent"}};A(L.value),h?.addEventListener("input",()=>{L.value=h.value,L.dispatchEvent(new Event("input",{bubbles:!0}))}),L.addEventListener("input",()=>{let I=L.value!==""&&!We(L.value);d.hidden=!I,d.textContent=I?"INVALID_TOKEN_VALUE: unsafe value withheld from the preview (no ;{}<> url() expression()).":"",A(L.value),w(D,L.value)}),k.push(()=>{document.activeElement!==L&&(L.value=n.tokens[D]??"",A(L.value))}),N.push(s("div",void 0,[s("label",{class:"wgd-field",title:ge[D].use},[s("span",{class:"wgd-field-label"},[`--wg-${D}`]),s("div",{class:"wgd-token-row"},h===void 0?[L]:[L,h])]),d]))}let R=Z("Tokens",N),P=s("div",{class:"wgd-jt-children"}),z=G(void 0);function T(){return Object.entries(n.tokens).filter(([D])=>ir.test(D))}function _(){let D=T().map(([d,h])=>{let A=s("input",{type:"text",class:"wgd-input wgd-jt-keyinput"});A.value=d,A.addEventListener("change",()=>{let V=A.value;if(!ir.test(V)){z.hidden=!1,z.textContent=`'${V}' is not a valid custom name \u2014 use x-<lowercase-kebab>.`,A.value=d;return}z.hidden=!0;let K={...n.tokens};delete K[d],K[V]=h,n={...n,tokens:K},_(),p()});let I=s("input",{type:"text",class:"wgd-input"});I.value=h,I.addEventListener("input",()=>w(d,I.value));let B=s("button",{class:"wgd-icon",type:"button",title:"Remove"},["\u2715"]);return B.addEventListener("click",()=>{w(d,""),_()}),s("div",{class:"wgd-attr-row"},[A,I,B])}),L=s("button",{class:"wgd-button wgd-add",type:"button"},["+ variable"]);L.addEventListener("click",()=>{let d="x-custom";for(let h=1;d in n.tokens;h++)d=`x-custom${h}`;w(d,"0"),_()}),P.replaceChildren(...D,s("div",{class:"wgd-toolbar"},[L]))}_();let F=Z("Custom variables (--wg-x-*)",[P,z]),U=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"}),M=s("button",{class:"wgd-button wgd-add",type:"button"},["Export theme entry"]);M.addEventListener("click",()=>{U.value=JSON.stringify(m(),null,2)});let E=s("textarea",{class:"wgd-textarea",rows:"5",spellcheck:"false"}),b=G(void 0),j=s("button",{class:"wgd-button",type:"button"},["Import"]);j.addEventListener("click",()=>{let D;try{D=JSON.parse(E.value)}catch(d){b.hidden=!1,b.textContent=`Invalid JSON: ${se(d)}`;return}let L=H(D);b.hidden=L.ok,b.textContent=L.ok?"":L.errors.join(`
|
|
415
|
+
`)});let W=Z("Import",[s("span",{class:"wgd-field-label"},["Import theme entry JSON"]),E,b,s("div",{class:"wgd-row"},[j])]),C=Z("Export",[s("div",{class:"wgd-toolbar"},[M]),U]);C.classList.add("wgd-view-only"),g.append(v,R,F,W,C);function H(D){let L=fi(D);if(L.length>0)return{ok:!1,errors:L};n=JSON.parse(JSON.stringify(D));for(let d of f)d();for(let d of k)d();return _(),p(),{ok:!0}}p();function $(D){l.classList.toggle("wgd-readonly",D);let L=[...g.querySelectorAll(".wgd-section-body")].filter(d=>!d.parentElement?.classList.contains("wgd-view-only"));for(let d of L)D?d.setAttribute("inert",""):d.removeAttribute("inert")}return t.readOnly===!0&&$(!0),{getTheme:m,loadTheme:H,setReadOnly:$,subscribe(D){return r.add(D),()=>r.delete(D)},dispose(){r.clear(),i.dispose(),l.remove()}}}function mi(){return{name:"my-action",label:"My action",definition:{kind:"prompt",text:["Tell me more about ",{bind:"title"}]}}}function hi(e){let t=[];if(!x(e))return["Action entry must be an object."];(typeof e.name!="string"||!mt.test(e.name))&&t.push("'name' must be lowercase letters, digits and dashes, starting with a letter (max 64).");for(let r of["label","description"])e[r]!==void 0&&typeof e[r]!="string"&&t.push(`'${r}' must be a string when present.`);let n=Be(e.definition,"definition");return n&&t.push(`${n.message} (at ${n.path})`),t}function wi(e){let t={name:e.name,definition:ie(e.definition)};return typeof e.label=="string"&&e.label!==""&&(t.label=e.label),typeof e.description=="string"&&e.description!==""&&(t.description=e.description),t}function sr(e,t,n){let{[t]:r,...i}=e;return n===""?i:{...i,[t]:n}}function ar(e,t={}){Oe(document);let n=t.initialAction?ie(t.initialAction):mi(),r=t.testCall,i=new Set,o=s("div",{class:"wgd-panels"}),a=s("div",{class:"wgd-root wgd-action-designer"},[o]);(t.appearance==="light"||t.appearance==="dark")&&a.setAttribute("data-wgd-theme",t.appearance),De(a,t.chrome),e.appendChild(a);let g=()=>ie(n);function c(){for(let d of[...i])d(g())}let l=[],u=G(void 0);function p(d,h,A){let I=Ae(d,h(),A),B=pe(I,"input");return l.push(()=>{document.activeElement!==B&&(B.value=h())}),I}let m=Z("Action",[p("Name (id)",()=>n.name,d=>{n={...n,name:d};let h=!mt.test(d);u.hidden=!h,u.textContent=h?"Name must be lowercase letters, digits and dashes, starting with a letter.":"",c()}),u,p("Label",()=>n.label??"",d=>{n=sr(n,"label",d),c()}),p("Description",()=>n.description??"",d=>{n=sr(n,"description",d),c()})]),w=G(void 0),f=rn(n.definition,{...t.schemas?{schemas:t.schemas}:{},...t.secretNames?{secretNames:t.secretNames}:{}},d=>{n={...n,definition:d},k(),N(),M(),c()}),y=G(void 0),v=s("textarea",{class:"wgd-textarea",rows:"12",spellcheck:"false"}),S=s("div",void 0,[v,y]);v.value=JSON.stringify(n.definition,null,2),v.addEventListener("input",()=>{try{let d=JSON.parse(v.value),h=Be(d,"definition");if(h)throw new Error(`${h.message} (at ${h.path})`);y.hidden=!0,y.textContent="",n={...n,definition:d},f.setValue(n.definition),N(),M(),c()}catch(d){y.hidden=!1,y.textContent=`Invalid (definition keeps the last valid value): ${se(d)}`}});function k(){document.activeElement!==v&&(v.value=JSON.stringify(n.definition,null,2),ce(v))}function N(){let d=Be(n.definition,"definition");w.hidden=d===void 0,w.textContent=d?`${d.message} (at ${d.path})`:""}N();let R=s("button",{class:"wgd-button wgd-tab wgd-tab-active",type:"button"},["Editor"]),P=s("button",{class:"wgd-button wgd-tab",type:"button"},["JSON"]);S.hidden=!0,R.addEventListener("click",()=>{f.element.hidden=!1,S.hidden=!0,R.classList.add("wgd-tab-active"),P.classList.remove("wgd-tab-active")}),P.addEventListener("click",()=>{f.element.hidden=!0,S.hidden=!1,P.classList.add("wgd-tab-active"),R.classList.remove("wgd-tab-active"),k()});let z=Z("Definition",[s("div",{class:"wgd-row"},[R,P]),w,f.element,S]),T=s("div",{class:"wgd-action-test"}),_=Z("Test",[T]),F={},U;function M(){if(r===void 0)return;if(T.replaceChildren(),n.definition.kind!=="http"){U=void 0,F={},T.append(s("p",{class:"wgd-diagnostic"},["Prompt actions run in the host's composer; nothing to test."]));return}let d=n.definition,h=JSON.stringify(d.input);h!==U&&(F={}),U=h;let A=Et(d.input,F,V=>{F=x(V)?V:{}});F=x(A.getValue())?A.getValue():{};let I=s("pre",{class:"wgd-test-output"}),B=s("button",{class:"wgd-button wgd-add wgd-test-run",type:"button"},["Test call"]);B.addEventListener("click",()=>{B.disabled=!0,B.classList.add("wgd-busy"),B.setAttribute("aria-busy","true"),I.textContent="\u2026",r(d,F).then(V=>{I.textContent=typeof V=="string"?V:JSON.stringify(V,null,2)}).catch(V=>{I.textContent=`Test failed: ${V.message}`}).finally(()=>{B.disabled=!1,B.classList.remove("wgd-busy"),B.removeAttribute("aria-busy")})}),T.append(s("span",{class:"wgd-field-label"},["Arguments"]),A.element,s("div",{class:"wgd-row"},[B]),I)}M();let E=G(void 0),b=s("textarea",{class:"wgd-textarea wgd-action-import",rows:"6",spellcheck:"false"}),j=s("button",{class:"wgd-button",type:"button"},["Import"]);j.addEventListener("click",()=>{let d;try{d=JSON.parse(b.value)}catch(A){E.hidden=!1,E.textContent=`Invalid JSON: ${se(A)}`;return}let h=D(d);E.hidden=h.ok,E.textContent=h.ok?"":h.errors.join(`
|
|
416
416
|
`)});let W=Z("Import",[s("span",{class:"wgd-field-label"},["Import action entry JSON ({ name, label?, description?, definition })"]),b,E,s("div",{class:"wgd-row"},[j])]),C=s("textarea",{class:"wgd-textarea",rows:"8",readonly:"",spellcheck:"false"}),H=s("button",{class:"wgd-button wgd-add",type:"button"},["Export action entry"]);H.addEventListener("click",()=>{C.value=JSON.stringify(g(),null,2),ce(C)});let $=Z("Export",[s("div",{class:"wgd-toolbar"},[H]),C]);$.classList.add("wgd-view-only"),o.append(m,z,...r===void 0?[]:[_],W,$),ae(v),ae(b),ae(C);function D(d){let h=hi(d);if(h.length>0)return{ok:!1,errors:h};n=wi(d),F={};for(let A of l)A();return u.hidden=!0,f.setValue(n.definition),k(),N(),M(),c(),{ok:!0}}function L(d){a.classList.toggle("wgd-readonly",d);let h=[...o.querySelectorAll(".wgd-section-body")].filter(A=>!A.parentElement?.classList.contains("wgd-view-only"));for(let A of h)d?A.setAttribute("inert",""):A.removeAttribute("inert")}return t.readOnly===!0&&L(!0),{getAction:g,loadAction:D,setReadOnly:L,subscribe(d){return i.add(d),()=>i.delete(d)},dispose(){i.clear(),a.remove()}}}function Wt(e){let t=e.getAttribute("appearance"),n=Pn(e.getAttribute("chrome"));return{...t==="light"||t==="dark"?{appearance:t}:{},...n===void 0?{}:{chrome:n}}}var dr="widgentic-designer",cr="widgentic-theme-designer",lr="widgentic-schema-designer",ur="widgentic-action-designer";function sn(e=dr){if(customElements.get(e)!==void 0)return;class t extends HTMLElement{#e;#t;connectedCallback(){this.#e===void 0&&(this.#e=tr(this,Wt(this)),this.#t=this.#e.subscribe((r,i)=>{this.dispatchEvent(new CustomEvent("widgentic-change",{detail:{draft:r,diagnostics:i},bubbles:!0}))}))}disconnectedCallback(){this.#t?.(),this.#e?.dispose(),this.#e=void 0,this.#t=void 0}get designer(){return this.#e}}customElements.define(e,t)}function an(e=cr){if(customElements.get(e)!==void 0)return;class t extends HTMLElement{#e;#t;connectedCallback(){this.#e===void 0&&(this.#e=or(this,Wt(this)),this.#t=this.#e.subscribe(r=>{this.dispatchEvent(new CustomEvent("widgentic-change",{detail:{theme:r},bubbles:!0}))}))}disconnectedCallback(){this.#t?.(),this.#e?.dispose(),this.#e=void 0,this.#t=void 0}get designer(){return this.#e}}customElements.define(e,t)}function dn(e=lr){if(customElements.get(e)!==void 0)return;class t extends HTMLElement{#e;#t;connectedCallback(){this.#e===void 0&&(this.#e=rr(this,Wt(this)),this.#t=this.#e.subscribe(r=>{this.dispatchEvent(new CustomEvent("widgentic-change",{detail:{schema:r},bubbles:!0}))}))}disconnectedCallback(){this.#t?.(),this.#e?.dispose(),this.#e=void 0,this.#t=void 0}get designer(){return this.#e}}customElements.define(e,t)}function cn(e=ur){if(customElements.get(e)!==void 0)return;class t extends HTMLElement{#e;#t;connectedCallback(){this.#e===void 0&&(this.#e=ar(this,Wt(this)),this.#t=this.#e.subscribe(r=>{this.dispatchEvent(new CustomEvent("widgentic-change",{detail:{action:r},bubbles:!0}))}))}disconnectedCallback(){this.#t?.(),this.#e?.dispose(),this.#e=void 0,this.#t=void 0}get designer(){return this.#e}}customElements.define(e,t)}cn();sn();dn();an();
|
|
417
417
|
//# sourceMappingURL=widgentic-designer.js.map
|