@solumflow-app/product-configurator 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -76,7 +76,11 @@ export function Configurator({ product }: { product: { id: string; fields: Recor
|
|
|
76
76
|
|
|
77
77
|
Pass `labels` for another language, `locale` and `currency` for amounts, and
|
|
78
78
|
style it through the CSS variables `--pc-bg`, `--pc-surface`, `--pc-fg`,
|
|
79
|
-
`--pc-accent` and their neighbours.
|
|
79
|
+
`--pc-accent` and their neighbours. All of them are optional: without them the
|
|
80
|
+
configurator takes your page's own text colour and mixes its greys from it, so
|
|
81
|
+
it reads on a light page and on a dark one. It never follows the visitor's
|
|
82
|
+
system preference on its own -- a page that stays white while the system is
|
|
83
|
+
dark would otherwise get white text.
|
|
80
84
|
|
|
81
85
|
The scene itself is not yours to tune, on purpose: the lighting (one of three
|
|
82
86
|
presets), the materials with their relief and gloss maps, and the 3D models of
|
|
@@ -55,4 +55,4 @@ ${c}
|
|
|
55
55
|
}`,f;try{f=new l(...a,d)(...u);}catch(h){throw new Z(`this schema (generated code failed to evaluate: ${h.message})`)}return r?.debug&&(f.code=s),f}function O(e,r){for(let[o,t]of e.constants)if(t===r)return o;let i=`c${e.constantCounter++}`;return e.constants.set(i,r),i}function j(e){return `v${e.varCounter++}`}function Jv(e,r){let i=e._zod.run({value:r,issues:[]},{});if(i&&typeof i.then=="function")return se;let o=i;return o.issues.length===0?o.value:se}function Q(e,r,i,o,t=true){let n=e.content.length,a=r.constants.size,u=r.constantCounter,c=r.varCounter;try{return K(e,r,i,o,t)}catch(s){if(!(s instanceof Z)||!s.islandable)throw s;if(e.content.length=n,r.constants.size>a){let l=Array.from(r.constants.keys()).slice(a);for(let d of l)r.constants.delete(d);}return r.constantCounter=u,r.varCounter=c,Gv(e,r,i,o)}}function Gv(e,r,i,o){let t=O(r,i),n=O(r,Jv),a=j(r);return e.write(`const ${a} = ${n}(${t}, ${o});`),e.write(`if (${a} === INVALID) return INVALID;`),a}var Kv=new Set(["max_size","min_size","size_equals","max_length","min_length","length_equals"]);function Bv(e,r,i,o){let t=i._zod.def.checks;if(!t||t.length===0)return o;let n=o;for(let a of t){let u=a._zod.def;if(u.when&&!Kv.has(u.check))throw new Z('check with a custom "when" condition');switch(u.check){case "greater_than":Wv(e,r,u,n);break;case "less_than":qv(e,r,u,n);break;case "multiple_of":Xv(e,r,u,n);break;case "number_format":um(e,u,n);break;case "min_length":{let c=Ke(u.minimum,"min_length"),s=ku(e,r,n,`${n}.length >= ${c} && ${n}.length < ${u.minimum*2}`);e.write(`if (${s} < ${c}) return INVALID;`);break}case "max_length":{let c=Ke(u.maximum,"max_length"),s=ku(e,r,n,`${n}.length > ${c}`);e.write(`if (${s} > ${c}) return INVALID;`);break}case "length_equals":{let c=Ke(u.length,"length_equals"),s=ku(e,r,n,`${n}.length >= ${c} && ${n}.length <= ${u.length*2}`);e.write(`if (${s} !== ${c}) return INVALID;`);break}case "min_size":e.write(`if (${n}.size < ${Ke(u.minimum,"min_size")}) return INVALID;`);break;case "max_size":e.write(`if (${n}.size > ${Ke(u.maximum,"max_size")}) return INVALID;`);break;case "size_equals":e.write(`if (${n}.size !== ${Ke(u.size,"size_equals")}) return INVALID;`);break;case "string_format":n=cm(e,r,u,n);break;case "custom":n=th(e,r,a,n);break;case "bigint_format":Yv(e,u,n);break;case "mime_type":Hv(e,r,u,n);break;case "property":Qv(e,r,u,n);break;case "overwrite":{let c=j(r);eh(e,r,a,n,c),n=c;break}default:throw new Z(`check type ${u.check}`)}}return n}function ku(e,r,i,o){let t=O(r,Fe),n=j(r);return e.write(`const ${n} = typeof ${i} === "string" && ${o} ? ${t}(${i}) : ${i}.length;`),n}function Ke(e,r){if(typeof e!="number"||!Number.isFinite(e))throw new Z(`${r} bound of type ${typeof e}`);return `${e}`}function am(e,r){if(typeof r=="bigint")return `${r}n`;if(typeof r=="number"){if(Number.isNaN(r))throw new Z("comparison check with NaN bound");return `${r}`}if(r instanceof Date){if(Number.isNaN(r.getTime()))throw new Z("comparison check with Invalid Date bound");return O(e,r)}throw new Z(`comparison check bound of type ${typeof r}`)}function Wv(e,r,i,o){let t=i.inclusive?"<":"<=";e.write(`if (${o} ${t} ${am(r,i.value)}) return INVALID;`);}function qv(e,r,i,o){let t=i.inclusive?">":">=";e.write(`if (${o} ${t} ${am(r,i.value)}) return INVALID;`);}function Xv(e,r,i,o){if(typeof i.value=="bigint"){if(i.value===BigInt(0))throw new Z("multiple_of check with a zero divisor");e.write(`if (${o} % ${i.value}n !== 0n) return INVALID;`);}else {let t=O(r,Ft);e.write(`if (${t}(${o}, ${Ke(i.value,"multiple_of")}) !== 0) return INVALID;`);}}function um(e,r,i){let o=r.format;switch(o){case "safeint":e.write(`if (!Number.isSafeInteger(${i})) return INVALID;`);break;case "int32":e.write(`if (!Number.isInteger(${i}) || ${i} < -2147483648 || ${i} > 2147483647) return INVALID;`);break;case "uint32":e.write(`if (!Number.isInteger(${i}) || ${i} < 0 || ${i} > 4294967295) return INVALID;`);break;case "float32":e.write(`if (!Number.isFinite(${i}) || ${i} < -3.4028234663852886e38 || ${i} > 3.4028234663852886e38) return INVALID;`);break;case "float64":e.write(`if (!Number.isFinite(${i})) return INVALID;`);break;default:throw new Z(`number format ${o}`)}}function Yv(e,r,i){let o=r.format;if(o)switch(o){case "int64":e.write(`if (${i} < -9223372036854775808n || ${i} > 9223372036854775807n) return INVALID;`);break;case "uint64":e.write(`if (${i} < 0n || ${i} > 18446744073709551615n) return INVALID;`);break;default:throw new Z(`bigint format ${o}`)}}function Hv(e,r,i,o){let t=i.mime;if(t&&t.length>0){let n=O(r,new Set(t));e.write(`if (!${n}.has(${o}.type)) return INVALID;`);}}function Qv(e,r,i,o){let t=`${o}[${JSON.stringify(i.property)}]`;K(e,r,i.schema,t);}function eh(e,r,i,o,t){let n=i._zod.def.tx;if(!n)throw new Z("overwrite check without a transform function");if(qe(n))throw new ve("z.compile: async overwrite transforms are not supported");let a=O(r,n);e.write(`const ${t} = ${a}(${o});`);}function xu(){throw new ie}function zu(e){this.issues.push(e);}function th(e,r,i,o){let t=i._zod.def;if(t.fn){if(qe(t.fn))throw new ve("z.compile: async .refine() predicates are not supported");let n=O(r,t.fn),a=O(r,xu),u=j(r);return e.write(`const ${u} = ${n}(${o});`),e.write(`if (${u} instanceof Promise) ${a}();`),e.write(`if (!${u}) return INVALID;`),o}if(i._zod.check){if(qe(i._zod.check))throw new ve("z.compile: async .superRefine() / check functions are not supported");let n=i._zod.check,u=O(r,s=>{let l={value:s,issues:[],addIssue:zu};return n(l)instanceof Promise&&xu(),l.issues.length===0?l.value:se}),c=j(r);return e.write(`const ${c} = ${u}(${o});`),e.write(`if (${c} === INVALID) return INVALID;`),c}throw new Z("custom check without a predicate or check function")}var rh=new Set(["cidrv4","cuid","cuid2","date","datetime","duration","e164","email","emoji","ends_with","guid","includes","ipv4","ksuid","lowercase","mac","nanoid","regex","starts_with","time","ulid","uppercase","uuid","xid"]);function cm(e,r,i,o){let t=i.format;if(t==="base64"){let c=O(r,er);return e.write(`if (!${c}(${o})) return INVALID;`),o}if(t==="base64url"){let c=O(r,sn);return e.write(`if (!${c}(${o})) return INVALID;`),o}if(t==="jwt"){let c=O(r,dn),s=O(r,i.alg??null);return e.write(`if (!${c}(${o}, ${s})) return INVALID;`),o}if(t==="ipv6"){let c=O(r,Qt);return e.write(`if (!${c}(${o})) return INVALID;`),o}if(t==="cidrv6"){let c=O(r,cn);return e.write(`if (!${c}(${o})) return INVALID;`),o}if(t==="credit_card"){let c=O(r,ln);return e.write(`if (!${c}(${o})) return INVALID;`),o}let n=i;if(t==="url"||t==="httpurl"||n.normalize||n.hostname!==void 0||n.protocol!==void 0){let c=O(r,nn),s=O(r,i),l=j(r),d=j(r);if(e.write(`const ${l} = ${o}.trim();`),e.write(`const ${d} = ${c}(${l}, ${s});`),e.write(`if (typeof ${d} === "number") return INVALID;`),n.hostname!==void 0){let m=O(r,an);e.write(`if (!${m}(${d}, ${s}.hostname)) return INVALID;`);}if(n.protocol!==void 0){let m=O(r,un);e.write(`if (!${m}(${d}, ${s}.protocol)) return INVALID;`);}let f=j(r),h=n.normalize?`${d}.href`:`${O(r,on)}(${l})`;return e.write(`const ${f} = ${h};`),f}let a=i.fn;if(a){if(qe(a))throw new Z(`async string format ${t}`);let c=O(r,a);return e.write(`if (!${c}(${o})) return INVALID;`),o}if(rh.has(t)&&i.pattern){let c=O(r,i.pattern);return e.write(`${c}.lastIndex = 0;`),e.write(`if (!${c}.test(${o})) return INVALID;`),o}let u=i.format;switch(u){case "regex":throw new Z("regex format without a pattern");case "lowercase":e.write(`if (${o} !== ${o}.toLowerCase()) return INVALID;`);break;case "uppercase":e.write(`if (${o} !== ${o}.toUpperCase()) return INVALID;`);break;case "includes":e.write(`if (!${o}.includes(${te(i.includes)})) return INVALID;`);break;case "starts_with":{let c=i.prefix;e.write(`if (${o}.slice(0, ${c.length}) !== ${te(c)}) return INVALID;`);break}case "ends_with":{let c=i.suffix;e.write(`if (${o}.slice(-${c.length}) !== ${te(c)}) return INVALID;`);break}default:throw new Z(`string format ${u}`)}return o}function K(e,r,i,o,t=true){let n=i._zod.def,a=n.type;if(n.coerce)throw new Z(`coercion (z.coerce.${a}())`);let u=t||!!n.checks?.length,c;switch(a){case "string":c=nh(e,r,i,o);break;case "number":c=ih(e,i,o);break;case "boolean":c=oh(e,o);break;case "bigint":c=ah(e,i,o);break;case "symbol":c=uh(e,o);break;case "undefined":c=ch(e,o);break;case "null":c=sh(e,o);break;case "any":case "unknown":c=o;break;case "never":e.write("return INVALID;"),c=o;break;case "void":c=lh(e,o);break;case "nan":c=dh(e,o);break;case "date":c=mh(e,o);break;case "object":c=fh(e,r,i,o,u);break;case "optional":c=ph(e,r,i,o,u);break;case "nullable":c=hh(e,r,i,o,u);break;case "array":c=$h(e,r,i,o,u);break;case "literal":c=yh(e,r,i,o);break;case "enum":c=_h(e,r,i,o);break;case "readonly":{let s=im(e,r,i,o),l=j(r);e.write(`const ${l} = Object.freeze(${s});`),c=l;break}case "success":im(e,r,i,o),c="true";break;case "default":case "prefault":c=bh(e,r,i,o);break;case "nonoptional":c=kh(e,r,i,o);break;case "tuple":c=xh(e,r,i,o);break;case "union":c=Ih(e,r,i,o);break;case "intersection":c=Sh(e,r,i,o);break;case "record":c=Ph(e,r,i,o);break;case "map":c=jh(e,r,i,o);break;case "set":c=Nh(e,r,i,o);break;case "file":c=Dh(e,o);break;case "template_literal":c=Uh(e,r,i,o);break;case "lazy":c=Th(e,r,i,o);break;case "pipe":c=Ah(e,r,i,o);break;case "custom":c=Zh(e,r,i,o);break;case "transform":c=Lh(e,r,i,o);break;case "catch":c=Ch(e,r,i,o);break;default:throw new Z(`schema type ${a}`)}return c===null?null:Bv(e,r,i,c)}function nh(e,r,i,o){e.write(`if (typeof ${o} !== "string") return INVALID;`);let t=i._zod.def;return t.format===void 0?o:cm(e,r,t,o)}function ih(e,r,i){e.write(`if (typeof ${i} !== "number" || !Number.isFinite(${i})) return INVALID;`);let o=r._zod.def;return o.check==="number_format"&&o.format&&um(e,{format:o.format},i),i}function oh(e,r){return e.write(`if (typeof ${r} !== "boolean") return INVALID;`),r}function ah(e,r,i){e.write(`if (typeof ${i} !== "bigint") return INVALID;`);let o=r._zod.def;if(o.format)switch(o.format){case "int64":e.write(`if (${i} < -9223372036854775808n || ${i} > 9223372036854775807n) return INVALID;`);break;case "uint64":e.write(`if (${i} < 0n || ${i} > 18446744073709551615n) return INVALID;`);break}return i}function uh(e,r){return e.write(`if (typeof ${r} !== "symbol") return INVALID;`),r}function ch(e,r){return e.write(`if (${r} !== undefined) return INVALID;`),r}function sh(e,r){return e.write(`if (${r} !== null) return INVALID;`),r}function lh(e,r){return e.write(`if (${r} !== undefined) return INVALID;`),r}function dh(e,r){return e.write(`if (typeof ${r} !== "number" || !Number.isNaN(${r})) return INVALID;`),r}function mh(e,r){return e.write(`if (!(${r} instanceof Date) || Number.isNaN(${r}.getTime())) return INVALID;`),r}function fh(e,r,i,o,t=true){let n=i._zod.def;e.write(`if (typeof ${o} !== "object" || ${o} === null || Array.isArray(${o})) return INVALID;`);let a=n.shape,u=Object.keys(a),c=Object.getOwnPropertySymbols(a),s=c.length?[...u,...c]:u,l=k=>typeof k=="symbol"?O(r,k):te(k),d=k=>typeof k=="symbol"?`[${l(k)}]`:te(k),f=a;if(u.includes("__proto__"))throw new Z('object shape key "__proto__"');let h=new Map;for(let k of s){let z=f[k],A=l(k),C=j(r);if(e.write(`const ${C} = ${o}[${A}];`),z._zod.optin!==void 0){let P=j(r);e.write(`let ${P} = (() => {`),e.indented(J=>{let Se=Q(J,r,z,C);J.write(`return ${Se};`);}),e.write("})();"),z._zod.optout==="optional"?(e.write(`if (${P} === INVALID) {`),e.indented(J=>{J.write(`if (${A} in ${o}) return INVALID;`),J.write(`${P} = undefined;`);}),e.write("}")):e.write(`if (${P} === INVALID) return INVALID;`),h.set(k,P);}else {vh(z)&&e.write(`if (!(${A} in ${o})) return INVALID;`);let P=Q(e,r,z,C,t);P!==null&&h.set(k,P);}}let m=n.catchall,x="none";if(m){let k=m._zod.def.type;if(k==="never"){let z=u.map(A=>`k !== ${te(A)}`).join(" && ")||"true";e.write(`for (const k in ${o}) {`),e.indented(A=>{A.write(`if (${z}) return INVALID;`);}),e.write("}");}else (k==="unknown"||k==="any")&&!m._zod.def.checks?.length?x="passthrough":x="schema";}let v=j(r),S=s.some(k=>We(f[k])||Iu(f[k]));if(!t){if(x==="schema"){let k=u.length>0?O(r,new Set(u)):null;e.write(`for (const k in ${o}) {`),e.indented(z=>{z.write('if (k === "__proto__") continue;'),k&&z.write(`if (${k}.has(k)) continue;`);let A=j(r);z.write(`const ${A} = ${o}[k];`),Q(z,r,m,A,false);}),e.write("}");}return null}if(S){e.write(`const ${v} = {};`);for(let k of s){let z=l(k),A=h.get(k);Iu(f[k])?e.write(`if (${z} in ${o}) ${v}[${z}] = ${A};`):We(f[k])?e.write(`if (${A} !== undefined || ${z} in ${o}) ${v}[${z}] = ${A};`):e.write(`${v}[${z}] = ${A};`);}}else {let k=s.map(z=>`${d(z)}: ${h.get(z)}`).join(", ");e.write(`const ${v} = { ${k} };`);}if(x!=="none"){let k=u.length>0?O(r,new Set(u)):null;e.write(`for (const k in ${o}) {`),e.indented(z=>{if(z.write('if (k === "__proto__") continue;'),k&&z.write(`if (${k}.has(k)) continue;`),x==="passthrough")z.write(`${v}[k] = ${o}[k];`);else {let A=j(r);z.write(`const ${A} = ${o}[k];`);let C=Q(z,r,m,A);z.write(`${v}[k] = ${C};`);}}),e.write("}");}return v}function ph(e,r,i,o,t=true){let n=i._zod.def;if(gh(i))return K(e,r,n.innerType,o,t);if(n.innerType._zod.optin==="defaulted"){let u=j(r),c=j(r);return e.write(`let ${u};`),e.write(`if (${o} === undefined) {`),e.indented(s=>{s.write(`const ${c} = (() => {`),s.indented(l=>{let d=K(l,r,n.innerType,o);l.write(`return ${d};`);}),s.write("})();"),s.write(`if (${c} !== INVALID) ${u} = ${c};`);}),e.write("} else {"),e.indented(s=>{let l=K(s,r,n.innerType,o);s.write(`${u} = ${l};`);}),e.write("}"),u}let a=t?j(r):null;return a&&e.write(`let ${a};`),e.write(`if (${o} !== undefined) {`),e.indented(u=>{let c=K(u,r,n.innerType,o,t);a&&c!==null&&u.write(`${a} = ${c};`);}),e.write("}"),a}function gh(e){return e._zod.traits?.has("$ZodExactOptional")===true}function vh(e){return e._zod.optin===void 0&&Be(e)}function Be(e){if(e._zod.def.coerce)return true;let r=e._zod.def;switch(r.type){case "any":case "unknown":case "undefined":case "void":case "default":case "prefault":case "transform":case "custom":case "lazy":return true;case "string":case "number":case "boolean":case "bigint":case "symbol":case "null":case "never":case "nan":case "date":case "object":case "array":case "tuple":case "record":case "map":case "set":case "file":case "template_literal":return false;case "nonoptional":return r.innerType?Be(r.innerType):false;case "literal":return !!r.values?.includes(void 0);case "enum":return !!e._zod.values?.has(void 0);case "optional":case "nullable":case "readonly":case "success":return r.innerType?Be(r.innerType):true;case "catch":return true;case "union":return r.options?r.options.some(Be):true;case "intersection":return !r.left||!r.right?true:Be(r.left)&&Be(r.right);case "pipe":return r.in?Be(r.in):true;default:return true}}function Iu(e){return e._zod.optin==="optional"&&e._zod.optout==="optional"}function We(e){let r=e._zod.def;switch(r.type){case "string":case "number":case "boolean":case "bigint":case "symbol":case "null":case "nan":case "date":case "object":case "array":case "tuple":case "record":case "map":case "set":case "file":case "template_literal":case "never":case "success":return false;case "literal":return !!r.values?.includes(void 0);case "enum":return !!e._zod.values?.has(void 0);case "optional":return true;case "nullable":case "readonly":case "nonoptional":return r.innerType?We(r.innerType):true;case "union":return r.options?r.options.some(We):true;case "intersection":return !r.left||!r.right||We(r.left)||We(r.right);case "pipe":return r.out?We(r.out):true;default:return true}}function hh(e,r,i,o,t=true){let n=i._zod.def,a=t?j(r):null;return a&&e.write(`let ${a} = null;`),e.write(`if (${o} !== null) {`),e.indented(u=>{let c=K(u,r,n.innerType,o,t);a&&c!==null&&u.write(`${a} = ${c};`);}),e.write("}"),a}function $h(e,r,i,o,t=true){let n=i._zod.def;e.write(`if (!Array.isArray(${o})) return INVALID;`);let a=t?j(r):null,u=j(r),c=j(r);return a&&e.write(`const ${a} = new Array(${o}.length);`),e.write(`for (let ${u} = 0; ${u} < ${o}.length; ${u}++) {`),e.indented(s=>{s.write(`const ${c} = ${o}[${u}];`);let l=Q(s,r,n.element,c,t);a&&l!==null&&s.write(`${a}[${u}] = ${l};`);}),e.write("}"),a}function yh(e,r,i,o){let n=i._zod.def.values;if(n.length!==1){let u=O(r,new Set(n));return e.write(`if (!${u}.has(${o})) return INVALID;`),o}let a=n[0];if(typeof a=="number"&&Number.isNaN(a)){let u=O(r,new Set(n));return e.write(`if (!${u}.has(${o})) return INVALID;`),o}if(typeof a=="string")e.write(`if (${o} !== ${te(a)}) return INVALID;`);else if(typeof a=="number"||typeof a=="boolean")e.write(`if (${o} !== ${a}) return INVALID;`);else if(a===null)e.write(`if (${o} !== null) return INVALID;`);else if(a===void 0)e.write(`if (${o} !== undefined) return INVALID;`);else if(typeof a=="bigint")e.write(`if (${o} !== ${a}n) return INVALID;`);else throw new Z(`literal type ${typeof a}`);return o}function _h(e,r,i,o){let t=i._zod.values;if(!t)throw new Z("enum schema without enumerated values");let n=O(r,t);return e.write(`if (!${n}.has(${o})) return INVALID;`),o}function im(e,r,i,o){let t=i._zod.def;return K(e,r,t.innerType,o)}function bh(e,r,i,o){let t=i._zod.def,a=Object.getOwnPropertyDescriptor(i._zod.def,"defaultValue")?()=>i._zod.def.defaultValue:void 0;if(i._zod.def.type==="prefault"){if(!a)return K(e,r,t.innerType,o);let c=O(r,a),s=j(r);return e.write(`let ${s} = ${o};`),e.write(`if (${o} === undefined) ${s} = ${c}();`),K(e,r,t.innerType,s)}let u=j(r);if(a){let c=O(r,a),s=O(r,Mt);e.write(`let ${u};`),e.write(`if (${o} === undefined) {`),e.indented(l=>{l.write(`${u} = ${s}(${c}());`);}),e.write("} else {"),e.indented(l=>{let d=K(l,r,t.innerType,o);l.write(`${u} = ${d} === undefined ? ${s}(${c}()) : ${d};`);}),e.write("}");}else e.write(`let ${u};`),e.write(`if (${o} !== undefined) {`),e.indented(c=>{let s=K(c,r,t.innerType,o);c.write(`${u} = ${s};`);}),e.write("}");return u}function kh(e,r,i,o){let t=i._zod.def,n=K(e,r,t.innerType,o),a=j(r);return e.write(`const ${a} = ${n};`),e.write(`if (${a} === undefined) return INVALID;`),a}function xh(e,r,i,o){let t=i._zod.def,n=t.items,a=t.rest;e.write(`if (!Array.isArray(${o})) return INVALID;`);let u=om(n,"optin"),c=om(n,"optout");a?e.write(`if (${o}.length < ${u}) return INVALID;`):e.write(`if (${o}.length < ${u} || ${o}.length > ${n.length}) return INVALID;`);let s=j(r);e.write(`const ${s} = [];`);for(let l=0;l<n.length;l++){let d=n[l];if(l>=c)e.write(`if (${s}.length === ${l}) {`),e.indented(f=>{f.write(`if (${l} < ${o}.length) {`),f.indented(h=>{let m=j(r);h.write(`const ${m} = ${o}[${l}];`);let x=Q(h,r,d,m);h.write(`${s}[${l}] = ${x};`);}),f.write("} else {"),f.indented(h=>{if(Iu(d)){h.write(`${s}.length = ${l};`);return}let m=j(r),x=j(r);h.write(`const ${m} = undefined;`),h.write(`const ${x} = (() => {`),h.indented(v=>{let S=Q(v,r,d,m);v.write(`return ${S};`);}),h.write("})();"),h.write(`if (${x} === INVALID || ${x} === undefined) ${s}.length = ${l};`),h.write(`else ${s}[${l}] = ${x};`);}),f.write("}");}),e.write("}");else {let f=j(r);e.write(`const ${f} = ${o}[${l}];`);let h=Q(e,r,d,f);e.write(`${s}[${l}] = ${h};`);}}if(a){let l=j(r),d=j(r);e.write(`for (let ${l} = ${n.length}; ${l} < ${o}.length; ${l}++) {`),e.indented(f=>{f.write(`const ${d} = ${o}[${l}];`);let h=Q(f,r,a,d);f.write(`${s}[${l}] = ${h};`);}),e.write("}");}return s}function om(e,r){for(let i=e.length-1;i>=0;i--)if(!(r==="optin"?e[i]._zod.optin!==void 0:e[i]._zod.optout==="optional"))return i+1;return 0}function Ih(e,r,i,o){let t=i._zod.def,n=t.options;if(t.discriminator)return wh(e,r,t,o);if(t.inclusive===false)throw new Z("exclusive unions (z.xor)");if(n.length===0)return e.write("return INVALID;"),o;if(n.length===1)return K(e,r,n[0],o);if(n.every(c=>c._zod.def.type==="literal"&&!c._zod.def.checks?.length)){let c=new Set(n.flatMap(l=>l._zod.def.values)),s=O(r,c);return e.write(`if (!${s}.has(${o})) return INVALID;`),o}let u=j(r);e.write(`let ${u};`);for(let c=0;c<n.length;c++){let s=n[c];c===0?e.write(`${u} = (() => {`):e.write(`if (${u} === INVALID) ${u} = (() => {`),e.indented(l=>{let d=K(l,r,s,o);l.write(`return ${d};`);}),e.write("})();");}return e.write(`if (${u} === INVALID) return INVALID;`),u}function wh(e,r,i,o){if(i.unionFallback)throw new Z("discriminated union with unionFallback");if(i.options.length===0)return e.write("return INVALID;"),o;let t=j(r),n=j(r);e.write(`const ${t} = ${o}?.[${te(i.discriminator)}];`),e.write(`let ${n};`);let a=true,u=new Set;for(let c of i.options){let s=c._zod.propValues?.[i.discriminator];if(!s||s.size===0)throw new Z("discriminated union option without static discriminator values");for(let f of s){if(u.has(f))throw new Z(`duplicate discriminator value ${String(f)}`);u.add(f);}let l=Array.from(s,f=>zh(r,t,f)),d=a?"if":"else if";e.write(`${d} (${l.join(" || ")}) {`),e.indented(f=>{let h=K(f,r,c,o);f.write(`${n} = ${h};`);}),e.write("}"),a=false;}return e.write("else { return INVALID; }"),n}function zh(e,r,i){if(typeof i=="string")return `${r} === ${te(i)}`;if(typeof i=="number")return Number.isNaN(i)?`Number.isNaN(${r})`:`${r} === ${i}`;if(typeof i=="boolean")return `${r} === ${i}`;if(i===null)return `${r} === null`;if(i===void 0)return `${r} === undefined`;if(typeof i=="bigint")return `${r} === ${i}n`;if(typeof i=="symbol"){let o=O(e,i);return `${r} === ${o}`}throw new Z(`literal discriminator value ${String(i)}`)}function Sh(e,r,i,o){let t=i._zod.def,n=Q(e,r,t.left,o),a=Q(e,r,t.right,o),u=O(r,pt),c=j(r);return e.write(`const ${c} = ${u}(${n}, ${a});`),e.write(`if (!${c}.valid) return INVALID;`),`${c}.data`}function Ph(e,r,i,o){let t=i._zod.def,n=O(r,me);e.write(`if (!${n}(${o})) return INVALID;`);let a=j(r),u=j(r),c=j(r);e.write(`const ${a} = {};`);let s=t,l=s.partial?void 0:t.keyType._zod.values;if(l){let m=[];for(let v of l){if(!(typeof v=="string"||typeof v=="number"||typeof v=="symbol"))throw new Z(`record key value ${String(v)}`);let S=typeof v=="number"?v.toString():v;if(S==="__proto__")throw new Z('record key "__proto__"');m.push(S);let k=O(r,v),z=K(e,r,t.keyType,k),A=j(r);e.write(`const ${A} = ${o}[${Oh(r,S)}];`);let C=Q(e,r,t.valueType,A);e.write(`${a}[${z}] = ${C};`);}let x=O(r,new Set(m));return e.write(`for (const ${u} in ${o}) {`),e.indented(v=>{v.write(`if (${x}.has(${u})) continue;`),s.mode==="loose"?v.write(`if (${u} !== "__proto__") ${a}[${u}] = ${o}[${u}];`):v.write("return INVALID;");}),e.write("}"),a}let d=t.keyType._zod.def;if(!(d.type==="string"&&d.format===void 0&&!d.coerce&&(d.checks?.length??0)===0)){let m=t.mode==="loose",x=O(r,zn(t.keyType)),v=O(r,Ne),S=O(r,Object.prototype.propertyIsEnumerable),k=j(r);return e.write(`for (const ${u} of Reflect.ownKeys(${o})) {`),e.indented(z=>{z.write(`if (${u} === "__proto__") continue;`),z.write(`if (!${S}.call(${o}, ${u})) continue;`),z.write(`let ${k} = ${x}(${u});`),z.write(`if (${k} === INVALID && typeof ${u} === "string" && ${v}.test(${u})) ${k} = ${x}(Number(${u}));`),m?z.write(`if (${k} === INVALID) { ${a}[${u}] = ${o}[${u}]; continue; }`):z.write(`if (${k} === INVALID) return INVALID;`),z.write(`if (${k} === "__proto__") continue;`);let A=j(r);z.write(`const ${A} = ${o}[${u}];`);let C=Q(z,r,t.valueType,A);z.write(`${a}[${k}] = ${C};`);}),e.write("}"),a}let h=O(r,Object.prototype.propertyIsEnumerable);return e.write(`for (const ${u} of Reflect.ownKeys(${o})) {`),e.indented(m=>{m.write(`if (${u} === "__proto__") continue;`),m.write(`if (!${h}.call(${o}, ${u})) continue;`),m.write(`if (typeof ${u} !== "string") return INVALID;`),m.write(`const ${c} = ${o}[${u}];`);let x=Q(m,r,t.valueType,c);m.write(`${a}[${u}] = ${x};`);}),e.write("}"),a}function Oh(e,r){return typeof r=="string"?te(r):O(e,r)}function jh(e,r,i,o){let t=i._zod.def;e.write(`if (!(${o} instanceof Map)) return INVALID;`);let n=j(r),a=j(r),u=j(r);return e.write(`const ${n} = new Map();`),e.write(`for (const [${a}, ${u}] of ${o}) {`),e.indented(c=>{let s=K(c,r,t.keyType,a),l=K(c,r,t.valueType,u);c.write(`${n}.set(${s}, ${l});`);}),e.write("}"),n}function Nh(e,r,i,o){let t=i._zod.def;e.write(`if (!(${o} instanceof Set)) return INVALID;`);let n=j(r),a=j(r);return e.write(`const ${n} = new Set();`),e.write(`for (const ${a} of ${o}) {`),e.indented(u=>{let c=K(u,r,t.valueType,a);u.write(`${n}.add(${c});`);}),e.write("}"),n}function Dh(e,r){return e.write(`if (!(${r} instanceof File)) return INVALID;`),r}function Uh(e,r,i,o){e.write(`if (typeof ${o} !== "string") return INVALID;`);let t=i._zod.pattern;if(t){let n=O(r,t);e.write(`${n}.lastIndex = 0;`),e.write(`if (!${n}.test(${o})) return INVALID;`);}return o}function Th(e,r,i,o){let t=i._zod.def,n=O(r,t.getter),a=O(r,{parser:null});e.write(`if (!${a}.parser) {`),e.indented(c=>{c.write(`const inner = ${n}();`),c.write(`${a}.parser = function(input) {`),c.indented(s=>{s.write("const result = inner._zod.run({ value: input, issues: [] }, {});"),s.write("return result.issues.length === 0 ? result.value : INVALID;");}),c.write("};");}),e.write("}");let u=j(r);return e.write(`const ${u} = ${a}.parser(${o});`),e.write(`if (${u} === INVALID) return INVALID;`),u}function Ah(e,r,i,o){let t=i._zod.def,n=K(e,r,t.in,o);if(t.transform){if(qe(t.transform))throw new ve("z.compile: async transforms in pipes are not supported");let a=t.transform,c=O(r,l=>{let d={value:l,issues:[],addIssue:zu},f=a(l,d);return f instanceof Promise?se:d.issues.length===0?f:se}),s=j(r);return e.write(`const ${s} = ${c}(${n});`),e.write(`if (${s} === INVALID) return INVALID;`),K(e,r,t.out,s)}else return K(e,r,t.out,n)}function qe(e){return typeof e=="function"&&(e.constructor.name==="AsyncFunction"||e[Symbol.toStringTag]==="AsyncFunction")}function Zh(e,r,i,o){let t=i._zod.def;if(t.fn){if(qe(t.fn))throw new ve("z.compile: async custom predicates are not supported");let n=O(r,t.fn),a=O(r,xu),u=j(r);e.write(`const ${u} = ${n}(${o});`),e.write(`if (${u} instanceof Promise) ${a}();`),e.write(`if (!${u}) return INVALID;`);}else throw new Z("custom schema without a predicate function");return o}function Eh(e,r,i){let o=e._zod.run({value:i,issues:[]},{});if(o&&typeof o.then=="function")return se;let t=o;return t.issues.length===0?t.value:r()}function Ch(e,r,i,o){let t=i._zod.def;if(!t.catchValue[Tr])throw new Z("catch with a callback (only a constant catch value compiles)",false);let n=j(r);e.write(`let ${n} = (() => {`),e.indented(s=>{let l=Q(s,r,t.innerType,o);s.write(`return ${l};`);}),e.write("})();");let a=O(r,t.innerType),u=O(r,t.catchValue),c=O(r,Eh);return e.write(`if (${n} === INVALID) {`),e.indented(s=>{s.write(`${n} = ${c}(${a}, ${u}, ${o});`),s.write(`if (${n} === INVALID) return INVALID;`);}),e.write("}"),n}function Lh(e,r,i,o){let t=i._zod.def;if(t.transform){if(qe(t.transform))throw new ve("z.compile: async transforms are not supported");let n=t.transform,u=O(r,s=>{let l={value:s,issues:[],addIssue:zu},d=n(s,l);return d instanceof Promise?se:l.issues.length===0?d:se}),c=j(r);return e.write(`const ${c} = ${u}(${o});`),e.write(`if (${c} === INVALID) return INVALID;`),c}return o}function Su(e,r){return new e({type:"string",...I(r)})}function Pu(e,r){return new e({type:"string",coerce:true,...I(r)})}function Sn(e,r){return new e({type:"string",format:"email",check:"string_format",abort:false,...I(r)})}function Pn(e,r){return new e({type:"string",format:"guid",check:"string_format",abort:false,...I(r)})}function On(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:false,...I(r)})}function jn(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:false,version:"v4",...I(r)})}function Nn(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:false,version:"v6",...I(r)})}function Dn(e,r){return new e({type:"string",format:"uuid",check:"string_format",abort:false,version:"v7",...I(r)})}function cr(e,r){return new e({type:"string",format:"url",check:"string_format",abort:false,...I(r)})}function Un(e,r){return new e({type:"string",format:"emoji",check:"string_format",abort:false,...I(r)})}function Tn(e,r){return new e({type:"string",format:"nanoid",check:"string_format",abort:false,...I(r)})}function An(e,r){return new e({type:"string",format:"cuid",check:"string_format",abort:false,...I(r)})}function Zn(e,r){return new e({type:"string",format:"cuid2",check:"string_format",abort:false,...I(r)})}function En(e,r){return new e({type:"string",format:"ulid",check:"string_format",abort:false,...I(r)})}function Cn(e,r){return new e({type:"string",format:"xid",check:"string_format",abort:false,...I(r)})}function Ln(e,r){return new e({type:"string",format:"ksuid",check:"string_format",abort:false,...I(r)})}function Rn(e,r){return new e({type:"string",format:"ipv4",check:"string_format",abort:false,...I(r)})}function Vn(e,r){return new e({type:"string",format:"ipv6",check:"string_format",abort:false,...I(r)})}function Ou(e,r){return new e({type:"string",format:"mac",check:"string_format",abort:false,...I(r)})}function Fn(e,r){return new e({type:"string",format:"cidrv4",check:"string_format",abort:false,...I(r)})}function Mn(e,r){return new e({type:"string",format:"cidrv6",check:"string_format",abort:false,...I(r)})}function Jn(e,r){return new e({type:"string",format:"base64",check:"string_format",abort:false,...I(r)})}function Gn(e,r){return new e({type:"string",format:"base64url",check:"string_format",abort:false,...I(r)})}function Kn(e,r){return new e({type:"string",format:"e164",check:"string_format",abort:false,...I(r)})}function ju(e,r){return new e({type:"string",format:"credit_card",check:"string_format",abort:false,...I(r)})}function Bn(e,r){return new e({type:"string",format:"jwt",check:"string_format",abort:false,...I(r)})}var Nu={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function sr(e,r){return new e({type:"string",format:"datetime",check:"string_format",offset:false,local:false,precision:null,...I(r)})}function lr(e,r){return new e({type:"string",format:"date",check:"string_format",...I(r)})}function dr(e,r){return new e({type:"string",format:"time",check:"string_format",precision:null,...I(r)})}function mr(e,r){return new e({type:"string",format:"duration",check:"string_format",...I(r)})}function Du(e,r){return new e({type:"number",checks:[],...I(r)})}function Uu(e,r){return new e({type:"number",coerce:true,checks:[],...I(r)})}function Tu(e,r){return new e({type:"number",check:"number_format",abort:false,format:"safeint",...I(r)})}function Au(e,r){return new e({type:"number",check:"number_format",abort:false,format:"float32",...I(r)})}function Zu(e,r){return new e({type:"number",check:"number_format",abort:false,format:"float64",...I(r)})}function Eu(e,r){return new e({type:"number",check:"number_format",abort:false,format:"int32",...I(r)})}function Cu(e,r){return new e({type:"number",check:"number_format",abort:false,format:"uint32",...I(r)})}function Lu(e,r){return new e({type:"boolean",...I(r)})}function Ru(e,r){return new e({type:"boolean",coerce:true,...I(r)})}function Vu(e,r){return new e({type:"bigint",...I(r)})}function Fu(e,r){return new e({type:"bigint",coerce:true,...I(r)})}function Mu(e,r){return new e({type:"bigint",check:"bigint_format",abort:false,format:"int64",...I(r)})}function Ju(e,r){return new e({type:"bigint",check:"bigint_format",abort:false,format:"uint64",...I(r)})}function Gu(e,r){return new e({type:"symbol",...I(r)})}function Ku(e,r){return new e({type:"undefined",...I(r)})}function Bu(e,r){return new e({type:"null",...I(r)})}function Wu(e){return new e({type:"any"})}function qu(e){return new e({type:"unknown"})}function Xu(e,r){return new e({type:"never",...I(r)})}function Yu(e,r){return new e({type:"void",...I(r)})}function Hu(e,r){return new e({type:"date",...I(r)})}function Qu(e,r){return new e({type:"date",coerce:true,...I(r)})}function ec(e,r){return new e({type:"nan",...I(r)})}function ye(e,r){return new qr({check:"less_than",...I(r),value:e,inclusive:false})}function le(e,r){return new qr({check:"less_than",...I(r),value:e,inclusive:true})}function _e(e,r){return new Xr({check:"greater_than",...I(r),value:e,inclusive:false})}function de(e,r){return new Xr({check:"greater_than",...I(r),value:e,inclusive:true})}function Wn(e){return _e(0,e)}function qn(e){return ye(0,e)}function Xn(e){return le(0,e)}function Yn(e){return de(0,e)}function De(e,r){return new Ro({check:"multiple_of",...I(r),value:e})}function Ue(e,r){return new Mo({check:"max_size",...I(r),maximum:e})}function be(e,r){return new Jo({check:"min_size",...I(r),minimum:e})}function Xe(e,r){return new Go({check:"size_equals",...I(r),size:e})}function Ye(e,r){return new Ko({check:"max_length",...I(r),maximum:e})}function we(e,r){return new Bo({check:"min_length",...I(r),minimum:e})}function He(e,r){return new Wo({check:"length_equals",...I(r),length:e})}function vt(e,r){return new qo({check:"string_format",format:"regex",...I(r),pattern:e})}function ht(e){return new Xo({check:"string_format",format:"lowercase",...I(e)})}function $t(e){return new Yo({check:"string_format",format:"uppercase",...I(e)})}function yt(e,r){return new Ho({check:"string_format",format:"includes",...I(r),includes:e})}function _t(e,r){return new Qo({check:"string_format",format:"starts_with",...I(r),prefix:e})}function bt(e,r){return new ea({check:"string_format",format:"ends_with",...I(r),suffix:e})}function Hn(e,r,i){return new Yr({check:"property",property:e,schema:r,...I(i)})}function Qn(e){return Object.entries(e).map(([r,i])=>new Yr({check:"property",property:r,schema:i}))}function kt(e,r){return new ta({check:"mime_type",mime:e,...I(r)})}function he(e){return new ra({check:"overwrite",tx:e})}function xt(e){return he(r=>r.normalize(e))}function It(){return he(e=>e.trim())}function wt(){return he(e=>e.toLowerCase())}function zt(){return he(e=>e.toUpperCase())}function St(){return he(e=>Li(e))}function tc(e,r,i){return new e({type:"array",element:r,...I(i)})}function Rh(e,r,i){return new e({type:"union",options:r,...I(i)})}function Vh(e,r,i){return new e({type:"union",options:r,inclusive:false,...I(i)})}function Fh(e,r,i,o){return new e({type:"union",options:i,discriminator:r,...I(o)})}function Mh(e,r,i){return new e({type:"intersection",left:r,right:i})}function Jh(e,r,i,o){let t=i instanceof N,n=t?o:i,a=t?i:null;return new e({type:"tuple",items:r,rest:a,...I(n)})}function Gh(e,r,i,o){return new e({type:"record",keyType:r,valueType:i,...I(o)})}function Kh(e,r,i,o){return new e({type:"map",keyType:r,valueType:i,...I(o)})}function Bh(e,r,i){return new e({type:"set",valueType:r,...I(i)})}function Wh(e,r,i){let o=Array.isArray(r)?Object.fromEntries(r.map(t=>[t,t])):r;return new e({type:"enum",entries:o,...I(i)})}function qh(e,r,i){return new e({type:"enum",entries:r,...I(i)})}function Xh(e,r,i){return new e({type:"literal",values:Array.isArray(r)?r:[r],...I(i)})}function rc(e,r){return new e({type:"file",...I(r)})}function Yh(e,r){return new e({type:"transform",transform:r})}function Hh(e,r){return new e({type:"optional",innerType:r})}function Qh(e,r){return new e({type:"nullable",innerType:r})}function e$(e,r,i){return new e({type:"default",innerType:r,get defaultValue(){return typeof i=="function"?i():Mt(i)}})}function t$(e,r,i){return new e({type:"nonoptional",innerType:r,...I(i)})}function r$(e,r){return new e({type:"success",innerType:r})}function n$(e,r,i){return new e({type:"catch",innerType:r,catchValue:typeof i=="function"?i:Wi(i)})}function i$(e,r,i){return new e({type:"pipe",in:r,out:i})}function o$(e,r){return new e({type:"readonly",innerType:r})}function a$(e,r,i){return new e({type:"template_literal",parts:r,...I(i)})}function u$(e,r){return new e({type:"lazy",getter:r})}function c$(e,r){return new e({type:"promise",innerType:r})}function nc(e,r,i){let o=I(i);return o.abort??(o.abort=true),new e({type:"custom",check:"custom",fn:r,...o})}function ic(e,r,i){return new e({type:"custom",check:"custom",fn:r,...I(i)})}function oc(e,r){let i=sm(o=>(o.addIssue=t=>{if(typeof t=="string")o.issues.push(ct(t,o.value,i._zod.def));else {let n=t;n.fatal&&(n.continue=false),n.code??(n.code="custom"),"input"in n||(n.input=o.value),n.inst??(n.inst=i),n.continue??(n.continue=!i._zod.def.abort),o.issues.push(ct(n));}},e(o.value,o)),r);return i}function sm(e,r){let i=new G({check:"custom",...I(r)});return i._zod.check=e,i}function ac(e){let r=new G({check:"describe"});return r._zod.onattach=[i=>{let o=Y.get(i)??{};Y.add(i,{...o,description:e});}],r._zod.check=()=>{},r}function uc(e){let r=new G({check:"meta"});return r._zod.onattach=[i=>{let o=Y.get(i)??{};Y.add(i,{...o,...e});}],r._zod.check=()=>{},r}function cc(e,r){let i=I(r),o=i.truthy??["true","1","yes","on","y","enabled"],t=i.falsy??["false","0","no","off","n","disabled"];i.case!=="sensitive"&&(o=o.map(h=>typeof h=="string"?h.toLowerCase():h),t=t.map(h=>typeof h=="string"?h.toLowerCase():h));let n=new Set(o),a=new Set(t),u=e.Codec??nr,c=e.Boolean??tr,s=e.String??Ge,l=new s({type:"string",error:i.error}),d=new c({type:"boolean",error:i.error}),f=new u({type:"pipe",in:l,out:d,transform:((h,m)=>{let x=h;return i.case!=="sensitive"&&(x=x.toLowerCase()),n.has(x)?true:a.has(x)?false:(m.issues.push({code:"invalid_value",expected:"stringbool",values:[...n,...a],input:m.value,inst:f,continue:false}),{})}),reverseTransform:((h,m)=>h===true?o[0]||"true":t[0]||"false"),error:i.error});return f._zod.bag.truthy=o,f._zod.bag.falsy=t,f._zod.bag.case=i.case??"insensitive",f}function Pt(e,r,i,o={}){let t=I(o),n={check:"string_format",type:"string",format:r,fn:typeof i=="function"?i:u=>i.test(u),...t};return i instanceof RegExp&&(n.pattern=i),new e(n)}function fr(e,...r){for(let i of r)for(let o of Reflect.ownKeys(i))Object.prototype.propertyIsEnumerable.call(i,o)&&B(e,o,i[o]);return e}function Te(e){let r=e?.target??"draft-2020-12";return r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Y,target:r,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function q(e,r,i,o,t){let n=typeof r.unrepresentable=="function"?r.unrepresentable({zodSchema:e,path:o.path,message:t}):r.unrepresentable;if(n==="any")return false;if(n===void 0||n==="throw")throw new Error(t);return Object.assign(i,n),true}function R(e,r,i={path:[],schemaPath:[]}){var o;let t=e._zod.def,n=r.seen.get(e);if(n)return n.count++,i.schemaPath.includes(e)&&(n.cycle=i.path),n.schema;let a={schema:{},count:1,cycle:void 0,path:i.path};r.seen.set(e,a),r.sharedDefsExtractedFor=void 0,r.sharedEmitDoneFor=void 0;let u=e._zod.toJSONSchema?.();if(u)a.schema=u;else {let l={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(r,a.schema,l);else {let f=a.schema,h=r.processors[t.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${t.type}`);h(e,r,f,l);}let d=e._zod.parent;d&&(a.ref||(a.ref=d),R(d,r,l),r.seen.get(d).isParent=true);}let c=r.metadataRegistry.get(e);return c&&fr(a.schema,c),r.io==="input"&&ee(e)&&(delete a.schema.examples,delete a.schema.default),r.io==="input"&&"_prefault"in a.schema&&((o=a.schema).default??(o.default=a.schema._prefault)),delete a.schema._prefault,r.seen.get(e).schema}function lm(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ae(e,r){let i=e.seen.get(r);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let o=new Map;for(let a of e.seen.entries()){let u=e.metadataRegistry.get(a[0])?.id;if(u){let c=o.get(u);if(c&&c!==a[0])throw new Error(`Duplicate schema id "${u}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(u,a[0]);}}let t=a=>{let u=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,f=e.external.uri??(m=>m);if(d)return {ref:f(d)};let h=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=h,{defId:h,ref:`${f("__shared")}#/${u}/${lm(h)}`}}let c="#",s=`${c}/${u}/`;if(a[1]===i&&!a[1].schema.id)return {ref:c};let l=a[1].schema.id??`__schema${e.counter++}`;return {defId:l,ref:s+lm(l)}},n=a=>{if(a[1].schema.$ref)return;let u=a[1],{ref:c,defId:s}=t(a);u.def={...u.schema},s&&(u.defId=s);let l=u.schema;for(let d in l)delete l[d];l.$ref=c;};if(e.cycles==="throw")for(let a of e.seen.entries()){let u=a[1];if(u.cycle)throw new Error(`Cycle detected: #/${u.cycle?.join("/")}/<root>
|
|
56
56
|
|
|
57
57
|
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let u=a[1];if(r===a[0]){n(a);continue}if(e.external){let s=e.external.registry.get(a[0])?.id;if(r!==a[0]&&s){n(a);continue}}if(e.metadataRegistry.get(a[0])?.id){n(a);continue}if(u.cycle){n(a);continue}if(u.count>1&&e.reused==="ref"){n(a);continue}}e.external&&(e.sharedDefsExtractedFor=e.external);}function fm(e){let r=e.anyOf;if(!Array.isArray(r)||r.length===0||e.type!==void 0)return;let i=[];for(let o of r){if(!o||typeof o!="object")return;fm(o);let t=Object.keys(o);if(t.length!==1||t[0]!=="type")return;let n=o.type;for(let a of Array.isArray(n)?n:[n]){if(typeof a!="string")return;i.includes(a)||i.push(a);}}delete e.anyOf,e.type=i.length===1?i[0]:i;}var pm=new Set(["type","properties","required","additionalProperties"]),dm=["oneOf","anyOf"];function mm(e){let r=e.additionalProperties;return r===void 0||r===false||typeof r!="object"||r===null?null:Object.keys(r).length?r:null}function sc(e){let r=[];for(let n of e){if(typeof n!="object"||n.type!=="object")return null;for(let a in n)if(!pm.has(a))return null;r.push(n);}let i={},o=new Set;for(let n of r){for(let a in n.properties){if(Object.prototype.hasOwnProperty.call(i,a))continue;let u=[];for(let s of r){let l=s.properties?.[a]??mm(s);l!=null&&(u.some(d=>JSON.stringify(d)===JSON.stringify(l))||u.push(l));}let c=u.length===1?u[0]:sc(u)??{allOf:u};B(i,a,c);}for(let a of n.required??[])o.add(a);}let t={type:"object",properties:i};if(o.size&&(t.required=[...o]),r.every(n=>n.additionalProperties===false))t.additionalProperties=false;else {let n=[];for(let a of r){let u=mm(a);u&&!n.some(c=>JSON.stringify(c)===JSON.stringify(u))&&n.push(u);}n.length===1?t.additionalProperties=n[0]:n.length>1&&(t.additionalProperties={allOf:n});}return t}function s$(e){let r=e.allOf;if(!Array.isArray(r)||r.length<2)return;for(let t of pm)if(t in e)return;let i=r.filter(t=>dm.some(n=>Array.isArray(t[n]))),o=null;if(!i.length)o=sc(r);else {let t=i[0],n=dm.find(c=>Array.isArray(t[c]));if(Object.keys(t).length!==1)return;let a=r.filter(c=>c!==t),u=t[n].map(c=>sc([...a,c]));if(u.some(c=>!c))return;o={[n]:u};}o&&(delete e.allOf,fr(e,o));}function Ze(e,r){let i=e.seen.get(r);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");let o=u=>{let c=e.seen.get(u);if(c.ref===null)return;let s=c.def??c.schema,l={...s},d=c.ref;if(c.ref=null,d){o(d);let h=e.seen.get(d),m=h.schema;if(m.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(s.allOf=s.allOf??[],s.allOf.push(m)):fr(s,m),fr(s,l),u._zod.parent===d)for(let v in s)v==="$ref"||v==="allOf"||v in l||delete s[v];if(m.$ref&&h.def)for(let v in s)v==="$ref"||v==="allOf"||v in h.def&&JSON.stringify(s[v])===JSON.stringify(h.def[v])&&delete s[v];}let f=u._zod.parent;if(f&&f!==d){o(f);let h=e.seen.get(f);if(h?.schema.$ref&&(s.$ref=h.schema.$ref,h.def))for(let m in s)m==="$ref"||m==="allOf"||m in h.def&&JSON.stringify(s[m])===JSON.stringify(h.def[m])&&delete s[m];}e.override({zodSchema:u,jsonSchema:s,path:c.path??[]});};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let u of [...e.seen.entries()].reverse())o(u[0]);if(e.target!=="openapi-3.0")for(let u of e.seen.entries())fm(u[1].def??u[1].schema);for(let u of e.deferred)u();if(e.intersections.length){let u=new Map;for(let c of e.seen.values())for(let s of [c.schema,c.def]){let l=s?.allOf;if(!Array.isArray(l))continue;let d=u.get(l);d?d.push(s):u.set(l,[s]);}for(let c of e.intersections)for(let s of u.get(c)??[])s$(s);}}let t={};if(e.target==="draft-2020-12"?t.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?t.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?t.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let u=e.external.registry.get(r)?.id;if(!u)throw new Error("Schema is missing an `id` property");t.$id=e.external.uri(u);}fr(t,i.defId?i.schema:i.def??i.schema);let n=e.metadataRegistry.get(r)?.id;n!==void 0&&t.id===n&&delete t.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let u of e.seen.entries()){let c=u[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,B(a,c.defId,c.def));}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?t.$defs=a:t.definitions=a);try{let u=JSON.parse(JSON.stringify(t));return Object.defineProperty(u,"~standard",{value:{...r["~standard"],jsonSchema:{input:Ot(r,"input",e.processors),output:Ot(r,"output",e.processors)}},enumerable:!1,writable:!1}),u}catch{throw new Error("Error converting schema to JSON.")}}function ee(e,r){let i=r??{seen:new Set};if(i.seen.has(e))return false;i.seen.add(e);let o=e._zod.def;if(o.type==="transform")return true;if(o.type==="array")return ee(o.element,i);if(o.type==="set")return ee(o.valueType,i);if(o.type==="lazy")return ee(o.getter(),i);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault"||o.type==="catch")return ee(o.innerType,i);if(o.type==="intersection")return ee(o.left,i)||ee(o.right,i);if(o.type==="record"||o.type==="map")return ee(o.keyType,i)||ee(o.valueType,i);if(o.type==="pipe")return e._zod.traits.has("$ZodCodec")?true:ee(o.in,i)||ee(o.out,i);if(o.type==="object"){for(let t in o.shape)if(ee(o.shape[t],i))return true;return false}if(o.type==="union"){for(let t of o.options)if(ee(t,i))return true;return false}if(o.type==="tuple"){for(let t of o.items)if(ee(t,i))return true;return !!(o.rest&&ee(o.rest,i))}return false}var lc=(e,r={})=>i=>{let o=Te({...i,processors:r});return R(e,o),Ae(o,e),Ze(o,e)},Ot=(e,r,i={})=>o=>{let{libraryOptions:t,target:n}=o??{},a=Te({...t??{},target:n,io:r,processors:i});return R(e,a),Ae(a,e),Ze(a,e)};var l$={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},fc=(e,r,i,o)=>{let t=i;t.type="string";let{minimum:n,maximum:a,format:u,patterns:c,contentEncoding:s,laxFormat:l}=e._zod.bag;if(typeof n=="number"&&(t.minLength=n),typeof a=="number"&&(t.maxLength=a),u&&(t.format=l$[u]??u,t.format===""&&delete t.format,(u==="time"||l)&&delete t.format),s&&(t.contentEncoding=s),c&&c.size>0){let d=[...c];d.length===1?t.pattern=d[0].source:d.length>1&&(t.allOf=[...d.map(f=>({...r.target==="draft-07"||r.target==="draft-04"||r.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))]);}},pc=(e,r,i,o)=>{let t=i,{minimum:n,maximum:a,format:u,multipleOf:c,exclusiveMaximum:s,exclusiveMinimum:l}=e._zod.bag;typeof u=="string"&&u.includes("int")?t.type="integer":t.type="number";let d=typeof l=="number"&&l>=(n??Number.NEGATIVE_INFINITY),f=typeof s=="number"&&s<=(a??Number.POSITIVE_INFINITY),h=r.target==="draft-04"||r.target==="openapi-3.0";d?h?(t.minimum=l,t.exclusiveMinimum=true):t.exclusiveMinimum=l:typeof n=="number"&&(t.minimum=n),f?h?(t.maximum=s,t.exclusiveMaximum=true):t.exclusiveMaximum=s:typeof a=="number"&&(t.maximum=a),typeof c=="number"&&(Number.isFinite(c)&&c!==0?t.multipleOf=Math.abs(c):q(e,r,t,o,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`));},gc=(e,r,i,o)=>{i.type="boolean";},vc=(e,r,i,o)=>{q(e,r,i,o,"BigInt cannot be represented in JSON Schema");},hc=(e,r,i,o)=>{q(e,r,i,o,"Symbols cannot be represented in JSON Schema");},$c=(e,r,i,o)=>{r.target==="openapi-3.0"?(i.type="string",i.nullable=true,i.enum=[null]):i.type="null";},yc=(e,r,i,o)=>{q(e,r,i,o,"Undefined cannot be represented in JSON Schema");},_c=(e,r,i,o)=>{q(e,r,i,o,"Void cannot be represented in JSON Schema");},bc=(e,r,i,o)=>{i.not={};},kc=(e,r,i,o)=>{},xc=(e,r,i,o)=>{},Ic=(e,r,i,o)=>{q(e,r,i,o,"Date cannot be represented in JSON Schema");},wc=(e,r,i,o)=>{let t=e._zod.def,n=Rt(t.entries);if(n.length===0){i.not={};return}n.every(a=>typeof a=="number")&&(i.type="number"),n.every(a=>typeof a=="string")&&(i.type="string"),i.enum=n;},zc=(e,r,i,o)=>{let t=e._zod.def;if(t.values.length===0){i.not={};return}let n=[];for(let a of t.values)if(a===void 0){if(q(e,r,i,o,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(q(e,r,i,o,"BigInt literals cannot be represented in JSON Schema"))return;n.push(Number(a));}else n.push(a);if(n.length!==0)if(n.length===1){let a=n[0];i.type=a===null?"null":typeof a,r.target==="draft-04"||r.target==="openapi-3.0"?i.enum=[a]:i.const=a;}else n.every(a=>typeof a=="number")&&(i.type="number"),n.every(a=>typeof a=="string")&&(i.type="string"),n.every(a=>typeof a=="boolean")&&(i.type="boolean"),n.every(a=>a===null)&&(i.type="null"),i.enum=n;},Sc=(e,r,i,o)=>{q(e,r,i,o,"NaN cannot be represented in JSON Schema");},Pc=(e,r,i,o)=>{let t=i,n=e._zod.pattern;if(!n)throw new Error("Pattern not found in template literal");t.type="string",t.pattern=n.source;},Oc=(e,r,i,o)=>{let t=i,n={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:u,mime:c}=e._zod.bag;a!==void 0&&(n.minLength=a),u!==void 0&&(n.maxLength=u),c?c.length===1?(n.contentMediaType=c[0],Object.assign(t,n)):(Object.assign(t,n),t.anyOf=c.map(s=>({contentMediaType:s}))):Object.assign(t,n);},jc=(e,r,i,o)=>{i.type="boolean";},Nc=(e,r,i,o)=>{q(e,r,i,o,"Custom types cannot be represented in JSON Schema");},Dc=(e,r,i,o)=>{q(e,r,i,o,"Function types cannot be represented in JSON Schema");},Uc=(e,r,i,o)=>{q(e,r,i,o,"Transforms cannot be represented in JSON Schema");},Tc=(e,r,i,o)=>{q(e,r,i,o,"Map cannot be represented in JSON Schema");},Ac=(e,r,i,o)=>{q(e,r,i,o,"Set cannot be represented in JSON Schema");},Zc=(e,r,i,o)=>{let t=i,n=e._zod.def,{minimum:a,maximum:u}=e._zod.bag;typeof a=="number"&&(t.minItems=a),typeof u=="number"&&(t.maxItems=u),t.type="array",t.items=R(n.element,r,{...o,path:[...o.path,"items"]});};function pr(e){let r=e._zod.def;return r.type==="pipe"&&r.in._zod.traits.has("$ZodTransform")?pr(r.out):r.type==="catch"?pr(r.innerType):e._zod.optin}var Ec=(e,r,i,o)=>{let t=i,n=e._zod.def,a=n.shape;if(Object.getOwnPropertySymbols(a).length&&q(e,r,t,o,"Symbol keys cannot be represented in JSON Schema"))return;t.type="object",t.properties={};for(let l in a)B(t.properties,l,R(a[l],r,{...o,path:[...o.path,"properties",l]}));let c=new Set(Object.keys(a)),s=new Set([...c].filter(l=>{let d=n.shape[l];return r.io==="input"?pr(d)===void 0:d._zod.optout===void 0}));s.size>0&&(t.required=Array.from(s)),n.catchall?._zod.def.type==="never"?t.additionalProperties=false:n.catchall?n.catchall&&(t.additionalProperties=R(n.catchall,r,{...o,path:[...o.path,"additionalProperties"]})):r.io==="output"&&(t.additionalProperties=false);},ti=(e,r,i,o)=>{let t=e._zod.def,n=t.inclusive===false,a=t.options.map((u,c)=>R(u,r,{...o,path:[...o.path,n?"oneOf":"anyOf",c]}));n?i.oneOf=a:i.anyOf=a;},Cc=(e,r,i,o)=>{let t=e._zod.def,n=R(t.left,r,{...o,path:[...o.path,"allOf",0]}),a=R(t.right,r,{...o,path:[...o.path,"allOf",1]}),u=s=>"allOf"in s&&Object.keys(s).length===1,c=[...u(n)?n.allOf:[n],...u(a)?a.allOf:[a]];i.allOf=c,r.intersections.push(c);},Lc=(e,r,i,o)=>{let t=i,n=e._zod.def;t.type="array";let a=r.target==="draft-2020-12"?"prefixItems":"items",u=r.target==="draft-2020-12"||r.target==="openapi-3.0"?"items":"additionalItems",c=n.items.map((x,v)=>R(x,r,{...o,path:[...o.path,a,v]})),s=n.rest?R(n.rest,r,{...o,path:[...o.path,u,...r.target==="openapi-3.0"?[n.items.length]:[]]}):null,l=n.items.length;for(;l>0;){let x=n.items[l-1];if(!(r.io==="input"?pr(x)!==void 0:x._zod.optout==="optional"))break;l--;}let d=n.items.length,f=!n.rest;r.target==="draft-2020-12"?(t.prefixItems=c,f?t.items=false:s&&(t.items=s),l>0&&(t.minItems=l),f&&(t.maxItems=d)):r.target==="openapi-3.0"?(t.items={anyOf:c},s&&t.items.anyOf.push(s),l>0&&(t.minItems=l),f&&(t.maxItems=d)):(t.items=c,f?t.additionalItems=false:s&&(t.additionalItems=s),l>0&&(t.minItems=l),f&&(t.maxItems=d));let{minimum:h,maximum:m}=e._zod.bag;typeof h=="number"&&(t.minItems=h),typeof m=="number"&&(t.maxItems=m);};function dc(e,r,i){if(r.$ref){if(i.has(r))return r;i.add(r);let m=e.get(r)?.def;if(!m)return r;let x=dc(e,m,i);return x===m?r:x}for(let m of ["anyOf","oneOf"]){let x=r[m];if(!Array.isArray(x))continue;let v=x.map(S=>dc(e,S,i));v.some((S,k)=>S!==x[k])&&(r={...r,[m]:v});}let o=Array.isArray(r.type)?r.type:[r.type],t=!o.includes("string")&&o.some(m=>m==="number"||m==="integer"),n=r.enum??(r.const!==void 0?[r.const]:void 0);if(!t&&!n?.some(m=>typeof m=="number"))return r;let{minimum:a,maximum:u,exclusiveMinimum:c,exclusiveMaximum:s,multipleOf:l,format:d,id:f,...h}=r;return h.enum?h.enum=h.enum.map(m=>typeof m=="number"?String(m):m):typeof h.const=="number"&&(h.const=String(h.const)),t&&(h.type="string",n||(h.pattern=(o.includes("number")?Ne:Xt).source)),h}var mc=new WeakMap;function d$(e){let r=new Map;for(let o of e.seen.values())o.def&&!r.has(o.schema)&&r.set(o.schema,o);let i=new Map;for(let o of mc.get(e)??[]){let t=e.seen.get(o),n=(t?.def??t?.schema)?.propertyNames;if(!n||n===true||i.has(n))continue;let a=dc(r,n,new Set);a!==n&&i.set(n,a);}if(i.size)for(let o of e.seen.values())for(let t of [o.schema,o.def]){let n=t&&i.get(t.propertyNames);n&&(t.propertyNames=n);}}var Rc=(e,r,i,o)=>{let t=i,n=e._zod.def;t.type="object";let a=n.keyType,c=a._zod.bag?.patterns;if(n.mode==="loose"&&c&&c.size>0){let d=R(n.valueType,r,{...o,path:[...o.path,"patternProperties","*"]});t.patternProperties={};for(let f of c)B(t.patternProperties,f.source,d);}else {if(r.target==="draft-07"||r.target==="draft-2020-12"){t.propertyNames=R(n.keyType,r,{...o,path:[...o.path,"propertyNames"]});let d=mc.get(r);d||(d=[],mc.set(r,d),r.deferred.push(()=>d$(r))),d.push(e);}t.additionalProperties=R(n.valueType,r,{...o,path:[...o.path,"additionalProperties"]});}let s=a._zod.values,l=r.io==="input"&&pr(n.valueType)!==void 0;if(s&&!n.partial&&!l){let d=[...s].filter(f=>typeof f=="string"||typeof f=="number");d.length>0&&(t.required=d.map(String));}},Vc=(e,r,i,o)=>{let t=e._zod.def,n=R(t.innerType,r,o),a=r.seen.get(e);r.target==="openapi-3.0"?(a.ref=t.innerType,i.nullable=true):i.anyOf=[n,{type:"null"}];},Fc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType;},Mc=Symbol();function gm(e,r,i,o,t){let n=false,a=JSON.stringify(e,(u,c)=>typeof c!="bigint"?c:(n=true,null));return n?(q(r,i,o,t,"BigInt defaults cannot be represented in JSON Schema"),Mc):JSON.parse(a)}var Jc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType;let a=gm(t.defaultValue,e,r,i,o);a!==Mc&&(i.default=a);},Gc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);if(n.ref=t.innerType,r.io!=="input")return;let a=gm(t.defaultValue,e,r,i,o);a!==Mc&&(i._prefault=a);},Kc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType;let a;try{a=t.catchValue(void 0);}catch{q(e,r,i,o,"Dynamic catch values are not supported in JSON Schema");return}i.default=a;},Bc=(e,r,i,o)=>{let t=e._zod.def,n=t.in._zod.traits.has("$ZodTransform"),a=r.io==="input"?n?t.out:t.in:t.out;R(a,r,o);let u=r.seen.get(e);u.ref=a;},Wc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType,i.readOnly=true;},qc=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType;},ri=(e,r,i,o)=>{let t=e._zod.def;R(t.innerType,r,o);let n=r.seen.get(e);n.ref=t.innerType;},Xc=(e,r,i,o)=>{let t=e._zod.innerType;R(t,r,o);let n=r.seen.get(e);n.ref=t;},ei={string:fc,number:pc,boolean:gc,bigint:vc,symbol:hc,null:$c,undefined:yc,void:_c,never:bc,any:kc,unknown:xc,date:Ic,enum:wc,literal:zc,nan:Sc,template_literal:Pc,file:Oc,success:jc,custom:Nc,function:Dc,transform:Uc,map:Tc,set:Ac,array:Zc,object:Ec,union:ti,intersection:Cc,tuple:Lc,record:Rc,nullable:Vc,nonoptional:Fc,default:Jc,prefault:Gc,catch:Kc,pipe:Bc,readonly:Wc,promise:qc,optional:ri,lazy:Xc};function ni(e,r){if("_idmap"in e){let o=e,t=Te({...r,processors:ei}),n={};for(let c of o._idmap.entries()){let[s,l]=c;R(l,t);}let a={},u={registry:o,uri:r?.uri,defs:n};t.external=u;for(let c of o._idmap.entries()){let[s,l]=c;Ae(t,l),B(a,s,Ze(t,l));}if(Object.keys(n).length>0){let c=t.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[c]:n};}return {schemas:a}}let i=Te({...r,processors:ei});return R(e,i),Ae(i,e),Ze(i,e)}var ii=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(r){this.ctx.counter=r;}get seen(){return this.ctx.seen}constructor(r){let i=r?.target??"draft-2020-12";i==="draft-4"&&(i="draft-04"),i==="draft-7"&&(i="draft-07"),this.ctx=Te({processors:ei,target:i,...r?.metadata&&{metadata:r.metadata},...r?.unrepresentable&&{unrepresentable:r.unrepresentable},...r?.override&&{override:r.override},...r?.io&&{io:r.io}});}process(r,i={path:[],schemaPath:[]}){return R(r,this.ctx,i)}emit(r,i){i&&(i.cycles&&(this.ctx.cycles=i.cycles),i.reused&&(this.ctx.reused=i.reused),i.external&&(this.ctx.external=i.external)),this.ctx.sharedDefsExtractedFor=void 0,this.ctx.sharedEmitDoneFor=void 0,Ae(this.ctx,r);let o=Ze(this.ctx,r),{"~standard":t,...n}=o;return n}};var vm={};var Ct={};a(Ct,{ZodAny:()=>hs,ZodArray:()=>bs,ZodBase64:()=>xi,ZodBase64URL:()=>Ii,ZodBigInt:()=>Zt,ZodBigIntFormat:()=>Si,ZodBoolean:()=>At,ZodCIDRv4:()=>bi,ZodCIDRv6:()=>ki,ZodCUID:()=>pi,ZodCUID2:()=>gi,ZodCatch:()=>Fs,ZodCodec:()=>Ir,ZodCreditCard:()=>ls,ZodCustom:()=>wr,ZodCustomStringFormat:()=>Ut,ZodDate:()=>$r,ZodDefault:()=>Zs,ZodDiscriminatedUnion:()=>xs,ZodE164:()=>wi,ZodEmail:()=>li,ZodEmoji:()=>mi,ZodEnum:()=>Nt,ZodExactOptional:()=>Ni,ZodFile:()=>Ds,ZodFunction:()=>Hs,ZodGUID:()=>di,ZodIPv4:()=>yi,ZodIPv6:()=>_i,ZodISODate:()=>Ce,ZodISODateTime:()=>Ee,ZodISODuration:()=>Re,ZodISOTime:()=>Le,ZodIntersection:()=>Is,ZodJWT:()=>zi,ZodKSUID:()=>$i,ZodLazy:()=>qs,ZodLiteral:()=>Ns,ZodMAC:()=>ss,ZodMap:()=>Os,ZodNaN:()=>Js,ZodNanoID:()=>fi,ZodNever:()=>ys,ZodNonOptional:()=>Di,ZodNull:()=>gs,ZodNullable:()=>As,ZodNumber:()=>Tt,ZodNumberFormat:()=>rt,ZodObject:()=>_r,ZodOptional:()=>kr,ZodPipe:()=>xr,ZodPrefault:()=>Cs,ZodPreprocess:()=>Gs,ZodPromise:()=>Ys,ZodReadonly:()=>Ks,ZodRecord:()=>jt,ZodSet:()=>js,ZodString:()=>Dt,ZodStringFormat:()=>M,ZodSuccess:()=>Vs,ZodSymbol:()=>fs,ZodTemplateLiteral:()=>Ws,ZodTransform:()=>Us,ZodTuple:()=>zs,ZodType:()=>U,ZodULID:()=>vi,ZodURL:()=>hr,ZodUUID:()=>ke,ZodUndefined:()=>ps,ZodUnion:()=>br,ZodUnknown:()=>$s,ZodVoid:()=>_s,ZodXID:()=>hi,ZodXor:()=>ks,_ZodString:()=>si,_default:()=>Es,_function:()=>Sf,any:()=>nf,array:()=>yr,base64:()=>Lm,base64url:()=>Rm,bigint:()=>Hm,boolean:()=>ms,catch:()=>Ms,check:()=>Pf,cidrv4:()=>Em,cidrv6:()=>Cm,codec:()=>xf,creditCard:()=>Fm,cuid:()=>Om,cuid2:()=>jm,custom:()=>Of,date:()=>af,describe:()=>jf,discriminatedUnion:()=>mf,e164:()=>Vm,email:()=>ym,emoji:()=>Sm,enum:()=>Oi,exactOptional:()=>Ts,file:()=>yf,float32:()=>Wm,float64:()=>qm,function:()=>Sf,guid:()=>_m,hash:()=>Bm,hex:()=>Km,hostname:()=>Gm,httpUrl:()=>zm,instanceof:()=>Df,int:()=>ui,int32:()=>Xm,int64:()=>Qm,intersection:()=>ws,invertCodec:()=>If,ipv4:()=>Tm,ipv6:()=>Zm,json:()=>Tf,jwt:()=>Mm,keyof:()=>uf,ksuid:()=>Um,lazy:()=>Xs,literal:()=>$f,looseObject:()=>lf,looseRecord:()=>pf,mac:()=>Am,map:()=>gf,meta:()=>Nf,nan:()=>kf,nanoid:()=>Pm,nativeEnum:()=>hf,never:()=>Pi,nonoptional:()=>Rs,null:()=>vs,nullable:()=>vr,nullish:()=>_f,number:()=>ds,object:()=>cf,optional:()=>et,partialRecord:()=>ff,pipe:()=>ci,prefault:()=>Ls,preprocess:()=>Af,promise:()=>zf,readonly:()=>Bs,record:()=>Ps,refine:()=>Qs,set:()=>vf,strictObject:()=>sf,string:()=>gr,stringFormat:()=>Jm,stringbool:()=>Uf,success:()=>bf,superRefine:()=>el,symbol:()=>tf,templateLiteral:()=>wf,transform:()=>ji,tuple:()=>Ss,uint32:()=>Ym,uint64:()=>ef,ulid:()=>Nm,undefined:()=>rf,union:()=>Et,unknown:()=>Qe,url:()=>wm,uuid:()=>bm,uuidv4:()=>km,uuidv6:()=>xm,uuidv7:()=>Im,void:()=>of,xid:()=>Dm,xor:()=>df});var oi={};a(oi,{endsWith:()=>bt,gt:()=>_e,gte:()=>de,includes:()=>yt,length:()=>He,lowercase:()=>ht,lt:()=>ye,lte:()=>le,maxLength:()=>Ye,maxSize:()=>Ue,mime:()=>kt,minLength:()=>we,minSize:()=>be,multipleOf:()=>De,negative:()=>qn,nonnegative:()=>Yn,nonpositive:()=>Xn,normalize:()=>xt,overwrite:()=>he,positive:()=>Wn,properties:()=>Qn,property:()=>Hn,regex:()=>vt,size:()=>Xe,slugify:()=>St,startsWith:()=>_t,toLowerCase:()=>wt,toUpperCase:()=>zt,trim:()=>It,uppercase:()=>$t});var hm=new WeakSet([Object.prototype,Error.prototype]);function ai(e,r,i){Object.defineProperty(e,r,{configurable:true,enumerable:false,get(){let o=i(this);return Object.defineProperty(this,r,{value:o,configurable:true,writable:true}),o},set(o){Object.defineProperty(this,r,{value:o,configurable:true,writable:true});}});}var $m=(e,r)=>{Bt.init(e,r),e.name="ZodError";let i=Object.getPrototypeOf(e);hm.has(i)||(hm.add(i),ai(i,"format",o=>t=>qt(o,t)),ai(i,"flatten",o=>t=>Wt(o,t)),ai(i,"addIssue",o=>t=>{o.issues.push(t),o.message=JSON.stringify(o.issues,at,2);}),ai(i,"addIssues",o=>t=>{o.issues.push(...t),o.message=JSON.stringify(o.issues,at,2);}),Object.defineProperty(i,"isEmpty",{configurable:true,enumerable:false,get(){return this.issues.length===0}}));},f$=p("ZodError",$m),ae=p("ZodError",$m,void 0,{Parent:Error});var Yc=st(ae),Hc=lt(ae),Qc=dt(ae),es=mt(ae),ts=Cr(ae),rs=Lr(ae),ns=Rr(ae),is=Vr(ae),os=Fr(ae),as=Mr(ae),us=Jr(ae),cs=Gr(ae);function g$(){X.localeError||W(bn());}function tt(){X.memoizer||W({memoizer:or()});}var U=p("ZodType",(e,r)=>(g$(),N.init(e,r),e.def=r,e.type=r.type,e),{check(...e){let r=this.def;return this.clone(b.mergeDefs(r,{checks:[...r.checks??[],...e.map(i=>typeof i=="function"?{_zod:{check:i,def:{check:"custom"},onattach:[]}}:i)]}),{parent:true})},with(...e){return this.check(...e)},clone(e,r){return L(this,e,r)},brand(){return this},register(e,r){return e.add(this,r),this},refine(e,r){return this.check(Qs(e,r))},superRefine(e,r){return this.check(el(e,r))},overwrite(e){return this.check(he(e))},optional(){return et(this)},exactOptional(){return Ts(this)},nullable(){return vr(this)},nullish(){return et(vr(this))},nonoptional(e){return Rs(this,e)},array(){return yr(this)},or(e){return Et([this,e])},and(e){return ws(this,e)},transform(e){return ci(this,ji(e))},default(e){return Es(this,e)},prefault(e){return Ls(this,e)},catch(e){return Ms(this,e)},pipe(e){return ci(this,e)},readonly(){return Bs(this)},describe(e){let r=this.clone();return Y.add(r,{description:e}),r},meta(...e){if(e.length===0)return Y.get(this);let r=this.clone();return Y.add(r,e[0]),r},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...r){return r.length===0?e(this):e(this,...r)},get"~standard"(){return b.hide(this,"~standard",{...rn(this),jsonSchema:{input:Ot(this,"input"),output:Ot(this,"output")}})},set"~standard"(e){b.own(this,"~standard",e);},parse:function e(r,i){return Yc(this,r,i,{callee:e})},parseAsync:async function e(r,i){return await Hc(this,r,i,{callee:e})},safeParse(e,r){return Qc(this,e,r)},async safeParseAsync(e,r){return es(this,e,r)},get spa(){return this?.safeParseAsync},set spa(e){b.own(this,"spa",e);},encode:function e(r,i){return ts(this,r,i,{callee:e})},decode:function e(r,i){return rs(this,r,i,{callee:e})},encodeAsync:async function e(r,i){return await ns(this,r,i,{callee:e})},decodeAsync:async function e(r,i){return await is(this,r,i,{callee:e})},safeEncode(e,r){return os(this,e,r)},safeDecode(e,r){return as(this,e,r)},async safeEncodeAsync(e,r){return us(this,e,r)},async safeDecodeAsync(e,r){return cs(this,e,r)},toJSONSchema(e){return lc(this,{})(e)},get description(){return Y.get(this)?.description},get _def(){return this._zod.def}}),si=p("_ZodString",(e,r)=>{Ge.init(e,r),U.init(e,r),e._zod.processJSONSchema=(o,t,n)=>fc(e,o,t);let i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null;},{regex(...e){return this.check(vt(...e))},includes(...e){return this.check(yt(...e))},startsWith(...e){return this.check(_t(...e))},endsWith(...e){return this.check(bt(...e))},min(...e){return this.check(we(...e))},max(...e){return this.check(Ye(...e))},length(...e){return this.check(He(...e))},nonempty(...e){return this.check(we(1,...e))},lowercase(e){return this.check(ht(e))},uppercase(e){return this.check($t(e))},trim(){return this.check(It())},normalize(...e){return this.check(xt(...e))},toLowerCase(){return this.check(wt())},toUpperCase(){return this.check(zt())},slugify(){return this.check(St())}}),Dt=p("ZodString",(e,r)=>{Ge.init(e,r),si.init(e,r);},{email(e){return this.check(Sn(li,e))},url(e){return this.check(cr(hr,e))},jwt(e){return this.check(Bn(zi,e))},emoji(e){return this.check(Un(mi,e))},guid(e){return this.check(Pn(di,e))},uuid(e){return this.check(On(ke,e))},uuidv4(e){return this.check(jn(ke,e))},uuidv6(e){return this.check(Nn(ke,e))},uuidv7(e){return this.check(Dn(ke,e))},nanoid(e){return this.check(Tn(fi,e))},cuid(e){return this.check(An(pi,e))},cuid2(e){return this.check(Zn(gi,e))},ulid(e){return this.check(En(vi,e))},base64(e){return this.check(Jn(xi,e))},base64url(e){return this.check(Gn(Ii,e))},xid(e){return this.check(Cn(hi,e))},ksuid(e){return this.check(Ln($i,e))},ipv4(e){return this.check(Rn(yi,e))},ipv6(e){return this.check(Vn(_i,e))},cidrv4(e){return this.check(Fn(bi,e))},cidrv6(e){return this.check(Mn(ki,e))},e164(e){return this.check(Kn(wi,e))},datetime(e){return this.check(sr(Ee,e))},date(e){return this.check(lr(Ce,e))},time(e){return this.check(dr(Le,e))},duration(e){return this.check(mr(Re,e))}});function gr(e){return Su(Dt,e)}var M=p("ZodStringFormat",(e,r)=>{F.init(e,r),si.init(e,r);}),Ee=p("ZodISODateTime",(e,r)=>{$a.init(e,r),M.init(e,r);}),Ce=p("ZodISODate",(e,r)=>{ya.init(e,r),M.init(e,r);}),Le=p("ZodISOTime",(e,r)=>{_a.init(e,r),M.init(e,r);}),Re=p("ZodISODuration",(e,r)=>{ba.init(e,r),M.init(e,r);}),li=p("ZodEmail",(e,r)=>{ua.init(e,r),M.init(e,r);});function ym(e){return Sn(li,e)}var di=p("ZodGUID",(e,r)=>{oa.init(e,r),M.init(e,r);});function _m(e){return Pn(di,e)}var ke=p("ZodUUID",(e,r)=>{aa.init(e,r),M.init(e,r);});function bm(e){return On(ke,e)}function km(e){return jn(ke,e)}function xm(e){return Nn(ke,e)}function Im(e){return Dn(ke,e)}var hr=p("ZodURL",(e,r)=>{la.init(e,r),M.init(e,r);});function wm(e){return cr(hr,e)}function zm(e){return cr(hr,{protocol:H.httpProtocol,hostname:H.domain,...b.normalizeParams(e)})}var mi=p("ZodEmoji",(e,r)=>{da.init(e,r),M.init(e,r);});function Sm(e){return Un(mi,e)}var fi=p("ZodNanoID",(e,r)=>{ma.init(e,r),M.init(e,r);});function Pm(e){return Tn(fi,e)}var pi=p("ZodCUID",(e,r)=>{fa.init(e,r),M.init(e,r);});function Om(e){return An(pi,e)}var gi=p("ZodCUID2",(e,r)=>{pa.init(e,r),M.init(e,r);});function jm(e){return Zn(gi,e)}var vi=p("ZodULID",(e,r)=>{ga.init(e,r),M.init(e,r);});function Nm(e){return En(vi,e)}var hi=p("ZodXID",(e,r)=>{va.init(e,r),M.init(e,r);});function Dm(e){return Cn(hi,e)}var $i=p("ZodKSUID",(e,r)=>{ha.init(e,r),M.init(e,r);});function Um(e){return Ln($i,e)}var yi=p("ZodIPv4",(e,r)=>{ka.init(e,r),M.init(e,r);});function Tm(e){return Rn(yi,e)}var ss=p("ZodMAC",(e,r)=>{Ia.init(e,r),M.init(e,r);});function Am(e){return Ou(ss,e)}var _i=p("ZodIPv6",(e,r)=>{xa.init(e,r),M.init(e,r);});function Zm(e){return Vn(_i,e)}var bi=p("ZodCIDRv4",(e,r)=>{wa.init(e,r),M.init(e,r);});function Em(e){return Fn(bi,e)}var ki=p("ZodCIDRv6",(e,r)=>{za.init(e,r),M.init(e,r);});function Cm(e){return Mn(ki,e)}var xi=p("ZodBase64",(e,r)=>{Sa.init(e,r),M.init(e,r);});function Lm(e){return Jn(xi,e)}var Ii=p("ZodBase64URL",(e,r)=>{Pa.init(e,r),M.init(e,r);});function Rm(e){return Gn(Ii,e)}var wi=p("ZodE164",(e,r)=>{Oa.init(e,r),M.init(e,r);});function Vm(e){return Kn(wi,e)}var ls=p("ZodCreditCard",(e,r)=>{ja.init(e,r),M.init(e,r);});function Fm(e){return ju(ls,e)}var zi=p("ZodJWT",(e,r)=>{Na.init(e,r),M.init(e,r);});function Mm(e){return Bn(zi,e)}var Ut=p("ZodCustomStringFormat",(e,r)=>{Da.init(e,r),M.init(e,r);});function Jm(e,r,i={}){return Pt(Ut,e,r,i)}function Gm(e){return Pt(Ut,"hostname",H.hostname,e)}function Km(e){return Pt(Ut,"hex",H.hex,e)}function Bm(e,r){let i=r?.enc??"hex",o=`${e}_${i}`,t=H[o];if(!t)throw new Error(`Unrecognized hash format: ${o}`);return Pt(Ut,o,t,r)}var Tt=p("ZodNumber",(e,r)=>{mn.init(e,r),U.init(e,r),e._zod.processJSONSchema=(o,t,n)=>pc(e,o,t,n);let i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=true,e.format=i.format??null;},{gt(e,r){return this.check(_e(e,r))},gte(e,r){return this.check(de(e,r))},min(e,r){return this.check(de(e,r))},lt(e,r){return this.check(ye(e,r))},lte(e,r){return this.check(le(e,r))},max(e,r){return this.check(le(e,r))},int(e){return this.check(ui(e))},safe(e){return this.check(ui(e))},positive(e){return this.check(_e(0,e))},nonnegative(e){return this.check(de(0,e))},negative(e){return this.check(ye(0,e))},nonpositive(e){return this.check(le(0,e))},multipleOf(e,r){return this.check(De(e,r))},step(e,r){return this.check(De(e,r))},finite(){return this}});function ds(e){return Du(Tt,e)}var rt=p("ZodNumberFormat",(e,r)=>{Ua.init(e,r),Tt.init(e,r);});function ui(e){return Tu(rt,e)}function Wm(e){return Au(rt,e)}function qm(e){return Zu(rt,e)}function Xm(e){return Eu(rt,e)}function Ym(e){return Cu(rt,e)}var At=p("ZodBoolean",(e,r)=>{tr.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>gc(e,i,o);});function ms(e){return Lu(At,e)}var Zt=p("ZodBigInt",(e,r)=>{fn.init(e,r),U.init(e,r),e._zod.processJSONSchema=(o,t,n)=>vc(e,o,t,n);let i=e._zod.bag;e.minValue=i.minimum??null,e.maxValue=i.maximum??null,e.format=i.format??null;},{gte(e,r){return this.check(de(e,r))},min(e,r){return this.check(de(e,r))},gt(e,r){return this.check(_e(e,r))},lt(e,r){return this.check(ye(e,r))},lte(e,r){return this.check(le(e,r))},max(e,r){return this.check(le(e,r))},positive(e){return this.check(_e(BigInt(0),e))},negative(e){return this.check(ye(BigInt(0),e))},nonpositive(e){return this.check(le(BigInt(0),e))},nonnegative(e){return this.check(de(BigInt(0),e))},multipleOf(e,r){return this.check(De(e,r))}});function Hm(e){return Vu(Zt,e)}var Si=p("ZodBigIntFormat",(e,r)=>{Ta.init(e,r),Zt.init(e,r);});function Qm(e){return Mu(Si,e)}function ef(e){return Ju(Si,e)}var fs=p("ZodSymbol",(e,r)=>{Aa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>hc(e,i,o,t);});function tf(e){return Gu(fs,e)}var ps=p("ZodUndefined",(e,r)=>{Za.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>yc(e,i,o,t);});function rf(e){return Ku(ps,e)}var gs=p("ZodNull",(e,r)=>{Ea.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>$c(e,i,o);});function vs(e){return Bu(gs,e)}var hs=p("ZodAny",(e,r)=>{Ca.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>kc();});function nf(){return Wu(hs)}var $s=p("ZodUnknown",(e,r)=>{La.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>xc();});function Qe(){return qu($s)}var ys=p("ZodNever",(e,r)=>{Ra.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>bc(e,i,o);});function Pi(e){return Xu(ys,e)}var _s=p("ZodVoid",(e,r)=>{Va.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>_c(e,i,o,t);});function of(e){return Yu(_s,e)}var $r=p("ZodDate",(e,r)=>{Fa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(o,t,n)=>Ic(e,o,t,n),e.min=(o,t)=>e.check(de(o,t)),e.max=(o,t)=>e.check(le(o,t));let i=e._zod.bag;e.minDate=i.minimum?new Date(i.minimum):null,e.maxDate=i.maximum?new Date(i.maximum):null;});function af(e){return Hu($r,e)}var bs=p("ZodArray",(e,r)=>{tt(),Ma.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Zc(e,i,o,t),e.element=r.element;},{min(e,r){return this.check(we(e,r))},nonempty(e){return this.check(we(1,e))},max(e,r){return this.check(Ye(e,r))},length(e,r){return this.check(He(e,r))},unwrap(){return this.element}});function yr(e,r){return tc(bs,e,r)}function uf(e){let r=e._zod.def.shape;return Oi(Object.keys(r))}var _r=p("ZodObject",(e,r)=>{tt(),Ja.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Ec(e,i,o,t),b.installLazyProp(e,"shape",i=>i._zod.def.shape,false);},{keyof(){return Oi(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Qe()})},loose(){return this.clone({...this._zod.def,catchall:Qe()})},strict(){return this.clone({...this._zod.def,catchall:Pi()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return b.extend(this,e)},safeExtend(e){return b.safeExtend(this,e)},merge(e){return b.merge(this,e)},pick(e){return b.pick(this,e)},omit(e){return b.omit(this,e)},partial(...e){return b.partial(kr,this,e[0])},exactPartial(...e){return b.partial(Ni,this,e[0],"exactPartial")},required(...e){return b.required(Di,this,e[0])}});function cf(e,r){let i={type:"object",shape:e??{},...b.normalizeParams(r)};return new _r(i)}function sf(e,r){return new _r({type:"object",shape:e,catchall:Pi(),...b.normalizeParams(r)})}function lf(e,r){return new _r({type:"object",shape:e,catchall:Qe(),...b.normalizeParams(r)})}var br=p("ZodUnion",(e,r)=>{rr.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>ti(e,i,o,t),e.options=r.options;});function Et(e,r){return new br({type:"union",options:e,...b.normalizeParams(r)})}var ks=p("ZodXor",(e,r)=>{br.init(e,r),Ga.init(e,r),e._zod.processJSONSchema=(i,o,t)=>ti(e,i,o,t),e.options=r.options;});function df(e,r){return new ks({type:"union",options:e,inclusive:false,...b.normalizeParams(r)})}var xs=p("ZodDiscriminatedUnion",(e,r)=>{br.init(e,r),Ba.init(e,r);});function mf(e,r,i){return new xs({type:"union",options:r,discriminator:e,...b.normalizeParams(i)})}var Is=p("ZodIntersection",(e,r)=>{Wa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Cc(e,i,o,t);});function ws(e,r){return new Is({type:"intersection",left:e,right:r})}var zs=p("ZodTuple",(e,r)=>{tt(),pn.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Lc(e,i,o,t);},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw new Error(".partial() cannot be used on tuple schemas containing refinements");return this.clone({...e,items:e.items.map(r=>new kr({type:"optional",innerType:r}))})}});function Ss(e,r,i){let o=r instanceof N,t=o?i:r,n=o?r:null;return new zs({type:"tuple",items:e,rest:n,...b.normalizeParams(t)})}var jt=p("ZodRecord",(e,r)=>{tt(),qa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Rc(e,i,o,t),e.keyType=r.keyType,e.valueType=r.valueType;});function Ps(e,r,i){return !r||!r._zod?new jt({type:"record",keyType:gr(),valueType:e,...b.normalizeParams(r)}):new jt({type:"record",keyType:e,valueType:r,...b.normalizeParams(i)})}function ff(e,r,i){return new jt({type:"record",keyType:e,valueType:r,...b.normalizeParams(i),partial:true})}function pf(e,r,i){return new jt({type:"record",keyType:e,valueType:r,mode:"loose",...b.normalizeParams(i)})}var Os=p("ZodMap",(e,r)=>{tt(),Xa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Tc(e,i,o,t),e.keyType=r.keyType,e.valueType=r.valueType,e.min=(...i)=>e.check(be(...i)),e.nonempty=i=>e.check(be(1,i)),e.max=(...i)=>e.check(Ue(...i)),e.size=(...i)=>e.check(Xe(...i));});function gf(e,r,i){return new Os({type:"map",keyType:e,valueType:r,...b.normalizeParams(i)})}var js=p("ZodSet",(e,r)=>{tt(),Ya.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Ac(e,i,o,t),e.min=(...i)=>e.check(be(...i)),e.nonempty=i=>e.check(be(1,i)),e.max=(...i)=>e.check(Ue(...i)),e.size=(...i)=>e.check(Xe(...i));});function vf(e,r){return new js({type:"set",valueType:e,...b.normalizeParams(r)})}var Nt=p("ZodEnum",(e,r)=>{Ha.init(e,r),U.init(e,r),e._zod.processJSONSchema=(o,t,n)=>wc(e,o,t),e.enum=r.entries,e.options=Object.values(r.entries);let i=new Set(Object.keys(r.entries));e.extract=(o,t)=>{let n={};for(let a of o)if(i.has(a))n[a]=r.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Nt({...r,checks:[],...b.normalizeParams(t),entries:n})},e.exclude=(o,t)=>{let n={...r.entries};for(let a of o)if(i.has(a))delete n[a];else throw new Error(`Key ${a} not found in enum`);return new Nt({...r,checks:[],...b.normalizeParams(t),entries:n})};});function Oi(e,r){let i=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Nt({type:"enum",entries:i,...b.normalizeParams(r)})}function hf(e,r){return new Nt({type:"enum",entries:e,...b.normalizeParams(r)})}var Ns=p("ZodLiteral",(e,r)=>{Qa.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>zc(e,i,o,t),e.values=new Set(r.values),Object.defineProperty(e,"value",{get(){if(r.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return r.values[0]}});});function $f(e,r){return new Ns({type:"literal",values:Array.isArray(e)?e:[e],...b.normalizeParams(r)})}var Ds=p("ZodFile",(e,r)=>{eu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Oc(e,i,o),e.min=(i,o)=>e.check(be(i,o)),e.max=(i,o)=>e.check(Ue(i,o)),e.mime=(i,o)=>e.check(kt(Array.isArray(i)?i:[i],o));});function yf(e){return rc(Ds,e)}var Us=p("ZodTransform",(e,r)=>{tt(),tu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Uc(e,i,o,t),e._zod.parse=(i,o)=>{if(o.direction==="backward")throw new je(e.constructor.name);i.addIssue=n=>{if(typeof n=="string")i.issues.push(b.issue(n,i.value,r));else {let a=n;a.fatal&&(a.continue=false),a.code??(a.code="custom"),"input"in a||(a.input=i.value),a.inst??(a.inst=e),i.issues.push(b.issue(a));}};let t=r.transform(i.value,i);return t instanceof Promise?t.then(n=>(i.value=n,i)):(i.value=t,i)};});function ji(e){return new Us({type:"transform",transform:e})}var kr=p("ZodOptional",(e,r)=>{gn.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>ri(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function et(e){return new kr({type:"optional",innerType:e})}var Ni=p("ZodExactOptional",(e,r)=>{ru.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>ri(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function Ts(e){return new Ni({type:"optional",innerType:e})}var As=p("ZodNullable",(e,r)=>{nu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Vc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function vr(e){return new As({type:"nullable",innerType:e})}function _f(e){return et(vr(e))}var Zs=p("ZodDefault",(e,r)=>{iu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Jc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap;});function Es(e,r){return new Zs({type:"default",innerType:e,get defaultValue(){return typeof r=="function"?r():b.shallowClone(r)}})}var Cs=p("ZodPrefault",(e,r)=>{ou.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Gc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function Ls(e,r){return new Cs({type:"prefault",innerType:e,get defaultValue(){return typeof r=="function"?r():b.shallowClone(r)}})}var Di=p("ZodNonOptional",(e,r)=>{au.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Fc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function Rs(e,r){return new Di({type:"nonoptional",innerType:e,...b.normalizeParams(r)})}var Vs=p("ZodSuccess",(e,r)=>{uu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>jc(e,i,o),e.unwrap=()=>e._zod.def.innerType;});function bf(e){return new Vs({type:"success",innerType:e})}var Fs=p("ZodCatch",(e,r)=>{cu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Kc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap;});function Ms(e,r){return new Fs({type:"catch",innerType:e,catchValue:typeof r=="function"?r:b.constantCatch(r)})}var Js=p("ZodNaN",(e,r)=>{su.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Sc(e,i,o,t);});function kf(e){return ec(Js,e)}var xr=p("ZodPipe",(e,r)=>{vn.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Bc(e,i,o,t),e.in=r.in,e.out=r.out;});function ci(e,r){return new xr({type:"pipe",in:e,out:r})}var Ir=p("ZodCodec",(e,r)=>{xr.init(e,r),nr.init(e,r);});function xf(e,r,i){return new Ir({type:"pipe",in:e,out:r,transform:i.decode,reverseTransform:i.encode})}function If(e){let r=e._zod.def;return new Ir({type:"pipe",in:r.out,out:r.in,transform:r.reverseTransform,reverseTransform:r.transform})}var Gs=p("ZodPreprocess",(e,r)=>{xr.init(e,r),lu.init(e,r);}),Ks=p("ZodReadonly",(e,r)=>{du.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Wc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function Bs(e){return new Ks({type:"readonly",innerType:e})}var Ws=p("ZodTemplateLiteral",(e,r)=>{mu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Pc(e,i,o);});function wf(e,r){return new Ws({type:"template_literal",parts:e,...b.normalizeParams(r)})}var qs=p("ZodLazy",(e,r)=>{ir.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Xc(e,i,o,t),e.unwrap=()=>e._zod.def.getter();});function Xs(e){return new qs({type:"lazy",getter:e})}var Ys=p("ZodPromise",(e,r)=>{pu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>qc(e,i,o,t),e.unwrap=()=>e._zod.def.innerType;});function zf(e){return new Ys({type:"promise",innerType:e})}var Hs=p("ZodFunction",(e,r)=>{fu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Dc(e,i,o,t);});function Sf(e){return new Hs({type:"function",input:Array.isArray(e?.input)?Ss(e?.input):e?.input??yr(Qe()),output:e?.output??Qe()})}var wr=p("ZodCustom",(e,r)=>{gu.init(e,r),U.init(e,r),e._zod.processJSONSchema=(i,o,t)=>Nc(e,i,o,t);});function Pf(e){let r=new G({check:"custom"});return r._zod.check=e,r}function Of(e,r){return nc(wr,e??(()=>true),r)}function Qs(e,r={}){return ic(wr,e,r)}function el(e,r){return oc(e,r)}var jf=ac,Nf=uc;function Df(e,r={}){let i=new wr({type:"custom",check:"custom",fn:o=>o instanceof e,abort:true,...b.normalizeParams(r)});return i._zod.bag.Class=e,i._zod.check=o=>{o.value instanceof e||o.issues.push({code:"invalid_type",expected:e.name,input:o.value,inst:i,path:[...i._zod.def.path??[]]});},i}var Uf=(...e)=>cc({Codec:Ir,Boolean:At,String:Dt},...e);function Tf(e){let r=Xs(()=>Et([gr(e),ds(),ms(),vs(),yr(r),Ps(gr(),r)]));return r}function Af(e,r){return new Gs({type:"pipe",in:ji(e),out:r})}var v$={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function h$(e){W({customError:e});}function $$(){return W().customError}var tl;tl||(tl={});var zr={};a(zr,{ZodISODate:()=>Ce,ZodISODateTime:()=>Ee,ZodISODuration:()=>Re,ZodISOTime:()=>Le,date:()=>_$,datetime:()=>y$,duration:()=>k$,time:()=>b$});function y$(e){return sr(Ee,e)}function _$(e){return lr(Ce,e)}function b$(e){return dr(Le,e)}function k$(e){return mr(Re,e)}var w={...Ct,...oi,iso:zr},x$=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function I$(e,r){let i=e.$schema;return i==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":i==="http://json-schema.org/draft-07/schema#"?"draft-7":i==="http://json-schema.org/draft-04/schema#"?"draft-4":r??"draft-2020-12"}function Zf(e,r){return e.map((i,o)=>o<r?i:i.optional())}function w$(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function z$(e,r){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let i=e.slice(1).split("/").filter(Boolean);if(i.length===0)return r.rootSchema;let o=r.version==="draft-2020-12"?"$defs":"definitions";if(i[0]===o){let t=i[1]===void 0?void 0:w$(i[1]);if(!t||!r.defs[t])throw new Error(`Reference not found: ${e}`);return r.defs[t]}throw new Error(`Reference not found: ${e}`)}function S$(e,r){return w.transform(o=>o).check(o=>{let t=o.value;if(!(typeof t!="object"||t===null||Array.isArray(t)))for(let n of Object.getOwnPropertyNames(t)){let a=r.safeParse(n);a.success||o.issues.push({code:"invalid_key",origin:"record",issues:a.error.issues,input:n,path:[n],continue:true});}}).pipe(e)}function Ef(e,r){if(e!==false)return e===void 0||e===true?w.any():ue(e,r)}var P$=/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;function Cf(e,r){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return w.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let t=e.$ref;if(r.refs.has(t))return r.refs.get(t);if(r.processing.has(t))return w.lazy(()=>{if(!r.refs.has(t))throw new Error(`Circular reference not resolved: ${t}`);return r.refs.get(t)});r.processing.add(t);let n=z$(t,r),a=ue(n,r);return r.refs.set(t,a),r.processing.delete(t),a}if(e.enum!==void 0){let t=e.enum;if(r.version==="openapi-3.0"&&e.nullable===true&&t.length===1&&t[0]===null)return w.null();if(t.length===0)return w.never();if(t.length===1)return w.literal(t[0]);if(t.every(a=>typeof a=="string"))return w.enum(t);let n=t.map(a=>w.literal(a));return n.length<2?n[0]:w.union([n[0],n[1],...n.slice(2)])}if(e.const!==void 0)return w.literal(e.const);let i=e.type;if(Array.isArray(i)){let t=i.map(n=>{let a={...e,type:n};return Cf(a,r)});return t.length===0?w.never():t.length===1?t[0]:w.union(t)}if(!i)return w.any();let o;switch(i){case "string":{let t=w.string();if(e.format){let n=e.format;n==="email"?t=t.check(w.email()):n==="uri"||n==="uri-reference"?t=t.check(w.url()):n==="uuid"||n==="guid"?t=t.check(w.uuid()):n==="date-time"?t=t.check(w.iso.datetime({offset:true})):n==="date"?t=t.check(w.iso.date()):n==="time"?t=t.check(w.regex(P$)):n==="duration"?t=t.check(w.iso.duration()):n==="hostname"?t=t.check(w.hostname()):n==="ipv4"?t=t.check(w.ipv4()):n==="ipv6"?t=t.check(w.ipv6()):n==="mac"?t=t.check(w.mac()):n==="cidr"?t=t.check(w.cidrv4()):n==="cidr-v6"?t=t.check(w.cidrv6()):n==="base64"?t=t.check(w.base64()):n==="base64url"?t=t.check(w.base64url()):n==="e164"?t=t.check(w.e164()):n==="credit_card"?t=t.check(w.creditCard()):n==="jwt"?t=t.check(w.jwt()):n==="emoji"?t=t.check(w.emoji()):n==="nanoid"?t=t.check(w.nanoid()):n==="cuid"?t=t.check(w.cuid()):n==="cuid2"?t=t.check(w.cuid2()):n==="ulid"?t=t.check(w.ulid()):n==="xid"?t=t.check(w.xid()):n==="ksuid"&&(t=t.check(w.ksuid()));}typeof e.minLength=="number"&&(t=t.min(e.minLength)),typeof e.maxLength=="number"&&(t=t.max(e.maxLength)),e.pattern&&(t=t.regex(new RegExp(e.pattern))),o=t;break}case "number":case "integer":{let t=i==="integer"?w.number().int():w.number();typeof e.minimum=="number"&&e.exclusiveMinimum!==true&&(t=t.min(e.minimum)),typeof e.maximum=="number"&&e.exclusiveMaximum!==true&&(t=t.max(e.maximum)),typeof e.exclusiveMinimum=="number"?t=t.gt(e.exclusiveMinimum):e.exclusiveMinimum===true&&typeof e.minimum=="number"&&(t=t.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?t=t.lt(e.exclusiveMaximum):e.exclusiveMaximum===true&&typeof e.maximum=="number"&&(t=t.lt(e.maximum)),typeof e.multipleOf=="number"&&(t=t.multipleOf(e.multipleOf)),o=t;break}case "boolean":{o=w.boolean();break}case "null":{o=w.null();break}case "object":{let t={},n=e.properties||{},a=new Set(e.required||[]),u=typeof e.additionalProperties=="object"?ue(e.additionalProperties,r):void 0;for(let[c,s]of Object.entries(n)){let l=ue(s,r);B(t,c,a.has(c)?l:l.optional());}if(e.patternProperties){let c=e.patternProperties,s=Object.keys(c),l=[];for(let f of s){let h=ue(c[f],r),m=w.string().regex(new RegExp(f));l.push(w.looseRecord(m,h));}let d=[];if(Object.keys(t).length>0&&d.push(w.object(t).passthrough()),d.push(...l),d.length===0)o=w.object({}).passthrough();else if(d.length===1)o=d[0];else {let f=w.intersection(d[0],d[1]);for(let h=2;h<d.length;h++)f=w.intersection(f,d[h]);o=f;}if(e.additionalProperties===false){let f=Object.keys(t),h=s.map(x=>new RegExp(x)),m=o;o=o.check(x=>{if(!me(x.value))return;let v=[];for(let S of Object.keys(x.value))f.includes(S)||h.some(k=>k.test(S))||v.push(S);v.length&&x.issues.push({code:"unrecognized_keys",keys:v,input:x.value,inst:m});});}}else {let c=w.object(t);e.additionalProperties===false?o=c.strict():u?o=c.catchall(u):o=c.passthrough();}if(e.propertyNames!==void 0&&e.propertyNames!==true){let c=typeof e.propertyNames=="object"&&e.propertyNames.type===void 0?{type:"string",...e.propertyNames}:e.propertyNames;o=S$(o,ue(c,r));}break}case "array":{let t=e.prefixItems,n=e.items;if(t&&Array.isArray(t)){let a=typeof e.minItems=="number"?e.minItems:0,u=t.map(d=>ue(d,r)),c=Zf(u,a),s=Array.isArray(n)?void 0:Ef(n,r),l=w.tuple(c);o=s?l.rest(s):l,typeof e.minItems=="number"&&(o=o.check(w.minLength(e.minItems))),typeof e.maxItems=="number"&&(o=o.check(w.maxLength(e.maxItems)));}else if(Array.isArray(n)){let a=typeof e.minItems=="number"?e.minItems:0,u=n.map(d=>ue(d,r)),c=Zf(u,a),s=Ef(e.additionalItems,r),l=w.tuple(c);o=s?l.rest(s):l,typeof e.minItems=="number"&&(o=o.check(w.minLength(e.minItems))),typeof e.maxItems=="number"&&(o=o.check(w.maxLength(e.maxItems)));}else if(n!==void 0){let a=ue(n,r),u=w.array(a);typeof e.minItems=="number"&&(u=u.min(e.minItems)),typeof e.maxItems=="number"&&(u=u.max(e.maxItems)),o=u;}else o=w.array(w.any());break}default:throw new Error(`Unsupported type: ${i}`)}return o}function ue(e,r){if(typeof e=="boolean")return e?w.any():w.never();let i=Cf(e,r),o=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let u=e.anyOf.map(s=>ue(s,r)),c=w.union(u);i=o?w.intersection(i,c):c;}if(e.oneOf&&Array.isArray(e.oneOf)){let u=e.oneOf.map(s=>ue(s,r)),c=w.xor(u);i=o?w.intersection(i,c):c;}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)i=o?i:w.any();else {let u=o?i:ue(e.allOf[0],r),c=o?0:1;for(let s=c;s<e.allOf.length;s++)u=w.intersection(u,ue(e.allOf[s],r));i=u;}e.nullable===true&&r.version==="openapi-3.0"&&(i=w.nullable(i)),e.readOnly===true&&(i=w.readonly(i)),e.default!==void 0&&(i=i.default(e.default));let t={},n=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let u of n)u in e&&(t[u]=e[u]);let a=["contentEncoding","contentMediaType","contentSchema"];for(let u of a)u in e&&(t[u]=e[u]);e.propertyNames!==void 0&&e.type==="object"&&e.$ref===void 0&&(t.propertyNames=e.propertyNames);for(let u of Object.keys(e))x$.has(u)||B(t,u,e[u]);return Object.keys(t).length>0&&r.registry.add(i,t),e.description&&(i=i.describe(e.description)),i}function Lf(e,r){if(typeof e=="boolean")return e?w.any():w.never();let i;try{i=JSON.parse(JSON.stringify(e));}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let o=I$(i,r?.defaultTarget),t=i.$defs||i.definitions||{},n={version:o,defs:t,refs:new Map,processing:new Set,rootSchema:i,registry:r?.registry??Y};return ue(i,n)}var Rf=Symbol("z.visit/resolving");function Sr(e,r){let i=typeof r=="function"?r:(a,u)=>{let c=r[a._zod.def.type];return c?c(a,u):a},o=new Map;function t(a){let u=o.get(a);if(u===Rf)return new ir({type:"lazy",getter:()=>o.get(a)});if(u!==void 0)return u;o.set(a,Rf);let c=n(a),s=i(c,c!==a);return o.set(a,s),s}function n(a){let u=a._zod.def,c=u.type;switch(c){case "object":{let s=u.shape,l=Object.keys(s),d=false,f={};for(let m of l){let x=t(s[m]);x!==s[m]&&(d=true),f[m]=x;}let h=u.catchall;return u.catchall&&(h=t(u.catchall),h!==u.catchall&&(d=true)),d?L(a,{...u,shape:f,catchall:h}):a}case "array":{let s=t(u.element);return s===u.element?a:L(a,{...u,element:s})}case "tuple":{let s=u.items,l=false,d=[];for(let h of s){let m=t(h);m!==h&&(l=true),d.push(m);}let f=u.rest;return u.rest&&(f=t(u.rest),f!==u.rest&&(l=true)),l?L(a,{...u,items:d,rest:f}):a}case "record":case "map":{let s=t(u.keyType),l=t(u.valueType);return s===u.keyType&&l===u.valueType?a:L(a,{...u,keyType:s,valueType:l})}case "set":{let s=t(u.valueType);return s===u.valueType?a:L(a,{...u,valueType:s})}case "union":{let s=u.options,l=false,d=[];for(let f of s){let h=t(f);h!==f&&(l=true),d.push(h);}return l?L(a,{...u,options:d}):a}case "intersection":{let s=t(u.left),l=t(u.right);return s===u.left&&l===u.right?a:L(a,{...u,left:s,right:l})}case "optional":case "nullable":case "default":case "prefault":case "catch":case "readonly":case "nonoptional":case "promise":case "success":{let s=t(u.innerType);return s===u.innerType?a:L(a,{...u,innerType:s})}case "pipe":{let s=t(u.in),l=t(u.out);return s===u.in&&l===u.out?a:L(a,{...u,in:s,out:l})}case "function":{let s=t(u.input),l=t(u.output);return s===u.input&&l===u.output?a:L(a,{...u,input:s,output:l})}case "lazy":{let s=u.getter,{_cachedInner:l,...d}=u;return L(a,{...d,getter:()=>t(s())})}case "template_literal":case "string":case "number":case "int":case "boolean":case "bigint":case "symbol":case "undefined":case "null":case "void":case "never":case "any":case "unknown":case "date":case "nan":case "enum":case "literal":case "file":case "transform":case "custom":return a;default:return a}}return t(e)}function Vf(e){return Sr(e,{object:r=>r.partial(),union:r=>{let i=r._zod.def;return i.discriminator===void 0?r:Et(i.options)}})}function O$(e,r){if(!r?.length)return e;let i=e._zod.def;return L(e,ge(i,{checks:[...i.checks??[],...r]}),{parent:true})}function Ff(e){return O$(e.out,e.checks)}function j$(e){return e.in._zod.traits.has("$ZodTransform")?Ff(e):e.in}function Mf(e){return Sr(e,{pipe:r=>j$(r._zod.def),default:(r,i)=>i?et(r._zod.def.innerType):r,catch:(r,i)=>i?r._zod.def.innerType:r})}function Jf(e){return Sr(e,{pipe:r=>Ff(r._zod.def),prefault:(r,i)=>i?r._zod.def.innerType:r})}var rl={};a(rl,{bigint:()=>T$,boolean:()=>U$,date:()=>A$,number:()=>D$,string:()=>N$});function N$(e){return Pu(Dt,e)}function D$(e){return Uu(Tt,e)}function U$(e){return Ru(At,e)}function T$(e){return Fu(Zt,e)}function A$(e){return Qu($r,e)}function D(e,r,i){return i?{path:e,code:r,params:i}:{path:e,code:r}}var E={structureBytes:65536,valueBytes:32768,parameters:60,tabs:12,choiceLists:40,optionsPerList:60,materials:120,priceGroups:20,amounts:20,rules:80,priceRules:20,presets:60,formulaChars:200,formulaNodes:64,formulaDepth:8,geometryInputs:60,geometryConstants:60,geometrySlots:20,geometryNodes:200,expandedParts:200,repeatCount:12,repeatDepth:2,annotations:30};function Gf(e){return new TextEncoder().encode(JSON.stringify(e)).length+nl(e)}function nl(e){if(Array.isArray(e))return Math.max(0,e.length-1)+e.reduce((r,i)=>r+nl(i),0);if(e!==null&&typeof e=="object"){let r=Object.values(e).filter(i=>i!==void 0);return r.length+Math.max(0,r.length-1)+r.reduce((i,o)=>i+nl(o),0)}return 0}var Z$=["min","max","floor","ceil","round","abs"],E$=/[a-z_]/,C$=/[a-z0-9_]/;function L$(e){let r=[],i=0;for(;i<e.length;){let o=e.charAt(i);if(o===" "||o===" "||o===`
|
|
58
|
-
`){i+=1;continue}if(/[0-9.]/.test(o)){let n=i;for(;n<e.length&&/[0-9.]/.test(e.charAt(n));)n+=1;let a=e.slice(i,n);if(!/^(\d+(\.\d+)?|\.\d+)$/.test(a))return null;r.push({type:"number",value:Number(a)}),i=n;continue}if(E$.test(o)){let n=i;for(;n<e.length&&C$.test(e.charAt(n));)n+=1;r.push({type:"name",value:e.slice(i,n)}),i=n;continue}let t=o==="\xD7"?"*":o==="\xF7"?"/":o==="\u2212"?"-":o;if(t==="+"||t==="-"||t==="*"||t==="/"||t==="("||t===")"||t===","){r.push({type:"op",value:t}),i+=1;continue}return null}return r}var il=class{constructor(r){this.tokens=r;this.position=0;this.nodes=0;this.depth=0;this.names=[];}parse(){let r=this.expression();if(this.position!==this.tokens.length)throw new pe("formula_syntax");return r}count(r){if(this.nodes+=1,this.nodes>E.formulaNodes)throw new pe("formula_too_many_nodes");return r}peek(){return this.tokens[this.position]}takeOperator(r){let i=this.peek();return i?.type==="op"&&i.value===r?(this.position+=1,true):false}expression(){let r=this.term();for(;;)if(this.takeOperator("+"))r=this.count({kind:"binary",operator:"+",left:r,right:this.term()});else if(this.takeOperator("-"))r=this.count({kind:"binary",operator:"-",left:r,right:this.term()});else return r}term(){let r=this.unary();for(;;)if(this.takeOperator("*"))r=this.count({kind:"binary",operator:"*",left:r,right:this.unary()});else if(this.takeOperator("/"))r=this.count({kind:"binary",operator:"/",left:r,right:this.unary()});else return r}unary(){return this.takeOperator("-")?this.count({kind:"negate",operand:this.unary()}):this.takeOperator("+")?this.unary():this.primary()}nested(r){if(this.depth+=1,this.depth>E.formulaDepth)throw new pe("formula_too_deep");let i=r();return this.depth-=1,i}primary(){let r=this.peek();if(!r)throw new pe("formula_syntax");if(r.type==="number")return this.position+=1,this.count({kind:"number",value:r.value});if(r.type==="name"){if(this.position+=1,this.takeOperator("(")){if(!Z$.includes(r.value))throw new pe("formula_unknown_function",r.value);let i=r.value;return this.nested(()=>{let o=[this.expression()];for(;this.takeOperator(",");)o.push(this.expression());if(!this.takeOperator(")"))throw new pe("formula_syntax");if(!(i==="min"||i==="max")&&o.length!==1)throw new pe("formula_syntax",i);return this.count({kind:"call",fn:i,args:o})})}return this.names.includes(r.value)||this.names.push(r.value),this.count({kind:"name",name:r.value})}if(r.value==="(")return this.position+=1,this.nested(()=>{let i=this.expression();if(!this.takeOperator(")"))throw new pe("formula_syntax");return i});throw new pe("formula_syntax")}},pe=class extends Error{constructor(i,o){super(i);this.code=i;this.detail=o;}},Ui=new Map;function Kf(e){if(typeof e=="number")return Number.isFinite(e)?{ok:true,formula:{source:e,root:{kind:"number",value:e},names:[]}}:{ok:false,code:"formula_syntax"};let r=Ui.get(e);if(r)return r;let i=R$(e);return Ui.size>2e3&&Ui.clear(),Ui.set(e,i),i}function R$(e){if(e.length>E.formulaChars)return {ok:false,code:"formula_too_long"};let r=L$(e);if(!r||r.length===0)return {ok:false,code:"formula_syntax"};let i=new il(r);try{let o=i.parse();return {ok:!0,formula:{source:e,root:o,names:i.names}}}catch(o){if(o instanceof pe)return {ok:false,code:o.code,detail:o.detail};throw o}}function V$(e,r){for(let o of e.names)if(!Object.prototype.hasOwnProperty.call(r,o))return {ok:false,code:"formula_unknown_name",name:o};let i=Pr(e.root,r);return Number.isFinite(i)?{ok:true,value:i}:{ok:false,code:"formula_not_finite"}}function Pr(e,r){switch(e.kind){case "number":return e.value;case "name":return r[e.name]??Number.NaN;case "negate":return -Pr(e.operand,r);case "binary":return F$(e.operator,Pr(e.left,r),Pr(e.right,r));case "call":return M$(e.fn,e.args.map(i=>Pr(i,r)))}}function F$(e,r,i){switch(e){case "+":return r+i;case "-":return r-i;case "*":return r*i;case "/":return r/i}}function M$(e,r){let i=r[0]??Number.NaN;switch(e){case "min":return Math.min(...r);case "max":return Math.max(...r);case "floor":return Math.floor(i);case "ceil":return Math.ceil(i);case "round":return Math.round(i);case "abs":return Math.abs(i)}}function Or(e){let r=Kf(e);return r.ok?{ok:true,names:r.formula.names}:r}function ex(e,r){let i=Kf(e);return i.ok?V$(i.formula,r):i}var J$=/^[a-z][a-z0-9_]{0,39}$/,G$=/^[a-z0-9][a-z0-9_-]{0,39}$/,V=_.string().regex(J$,"configurator.invalidName"),$e=_.string().regex(G$,"configurator.invalidCode"),ce=_.union([_.number().finite(),_.string().trim().min(1).max(E.formulaChars,"configurator.formulaTooLong")]),Bf=_.tuple([ce,ce,ce]),K$=["box","rounded_top_box","stadium_prism","arc_panel","led_strip","niche_panel","model"],Wf={box:{required:[],optional:[]},rounded_top_box:{required:["radius"],optional:[]},stadium_prism:{required:[],optional:[]},arc_panel:{required:["thickness"],optional:["mirror"]},led_strip:{required:[],optional:[]},niche_panel:{required:["niche_x","niche_y","niche_width","niche_height"],optional:[]},model:{required:[],optional:["fit","paint"]}},B$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.glb$/,qf="preset",ol={id:V,slot:V,size:Bf,at:Bf,visible:ce.optional(),params:_.record(V,ce).optional()},W$=_.strictObject({...ol,type:_.enum(K$).exclude(["model"])}),Ti=_.string().regex(B$,"configurator.invalidModelPath"),al=_.url({protocol:/^https?$/});function Xf(e){let r=_.strictObject({...ol,type:_.literal("model"),model:e}),i=_.strictObject({...ol,type:_.literal("model"),follows:V,models:_.record($e,e).refine(t=>Object.keys(t).length<=E.presets,{message:"configurator.tooMany"})}),o=_.lazy(()=>_.union([W$,r,i,_.strictObject({id:V,type:_.literal("repeat"),count:ce,index:_.enum(["i","j"]).optional(),visible:ce.optional(),children:_.array(o).min(1)})]));return o}Xf(Ti);var q$=_.strictObject({param:V,map:_.record($e,_.number().finite()).optional()}),X$=_.strictObject({name:V,binding:q$}),Y$=_.strictObject({name:V,param:V.optional(),material:$e.optional(),color:_.string().regex(/^#[0-9a-f]{6}$/i,"configurator.invalidColor").optional()}),H$=_.strictObject({id:V,axis:_.enum(["x","y"]),from:ce,to:ce,at:ce,label:_.string().trim().min(1).max(80).optional()});function ul(e){return _.strictObject({version:_.number().int().min(1),startedFrom:_.string().trim().max(80).optional(),inputs:_.array(X$).max(E.geometryInputs),constants:_.record(V,_.number().finite()),slots:_.array(Y$).min(1).max(E.geometrySlots),root:_.array(Xf(e)).min(1),camera:_.strictObject({azimuth:_.number().min(-90).max(90),elevation:_.number().min(-10).max(80)}).optional(),annotations:_.array(H$).max(E.annotations)})}ul(Ti);function Yf(e){let r=[],i=o=>{for(let t of o)t.type==="repeat"?i(t.children):t.type==="model"&&t.follows!==void 0&&r.push({name:`${t.id}_shown`,node:t});};return i(e),r}function Hf(e,r={}){let i=r.path??[],o=[],t=Object.keys(e.constants);t.length>E.geometryConstants&&o.push(D([...i,"constants"],"configurator.tooMany",{max:E.geometryConstants}));let n=new Set;e.inputs.forEach((m,x)=>{let v=[...i,"inputs",x];if((n.has(m.name)||t.includes(m.name))&&o.push(D([...v,"name"],"configurator.duplicateName",{name:m.name})),(m.name==="i"||m.name==="j")&&o.push(D([...v,"name"],"configurator.reservedName",{name:m.name})),n.add(m.name),!r.parameters)return;let S=r.parameters.get(m.binding.param);if(!S){o.push(D([...v,"binding","param"],"configurator.inputUnbound",{name:m.name,param:m.binding.param}));return}if(S.kind==="material"&&o.push(D([...v,"binding","param"],"configurator.inputCannotBindMaterial",{name:m.name})),S.kind==="choice"){let k=(S.codes??[]).filter(z=>m.binding.map?.[z]===void 0);k.length>0&&o.push(D([...v,"binding","map"],"configurator.choiceMapIncomplete",{name:m.name,codes:k.join(", ")}));}else m.binding.map&&o.push(D([...v,"binding","map"],"configurator.mapOnlyForChoice",{name:m.name}));});let a=new Set;e.slots.forEach((m,x)=>{let v=[...i,"slots",x];a.has(m.name)&&o.push(D([...v,"name"],"configurator.duplicateName",{name:m.name})),a.add(m.name),[m.param,m.material,m.color].filter(k=>k!==void 0).length!==1&&o.push(D(v,"configurator.slotNeedsOneSource",{name:m.name})),m.param&&r.parameters&&r.parameters.get(m.param)?.kind!=="material"&&o.push(D([...v,"param"],"configurator.slotParamNotMaterial",{param:m.param})),m.material&&r.materialCodes&&!r.materialCodes.has(m.material)&&o.push(D([...v,"material"],"configurator.unknownMaterial",{code:m.material}));});let u=Yf(e.root).map(m=>m.name);for(let m of u)(n.has(m)||t.includes(m))&&o.push(D([...i,"root"],"configurator.duplicateName",{name:m}));let c=new Set([...n,...t,...u]),s=new Set,l=0,d=(m,x,v)=>{let S=Or(m);if(!S.ok){o.push(D(x,`configurator.${S.code}`));return}for(let k of S.names)v.has(k)||o.push(D(x,"configurator.unknownName",{name:k}));},f=(m,x,v,S)=>{for(let k of m){let z=[...x,k.id];if(l+=1,s.has(k.id)&&o.push(D([...z,"id"],"configurator.duplicateId",{id:k.id})),s.add(k.id),k.visible!==void 0&&d(k.visible,[...z,"visible"],v),k.type==="repeat"){if(d(k.count,[...z,"count"],v),S+1>E.repeatDepth){o.push(D(z,"configurator.repeatTooDeep",{max:E.repeatDepth}));continue}let P=k.index??"i";v.has(P)&&o.push(D([...z,"index"],"configurator.indexInUse",{index:P})),f(k.children,z,new Set([...v,P]),S+1);continue}a.has(k.slot)||o.push(D([...z,"slot"],"configurator.unknownSlot",{slot:k.slot})),k.size.forEach((P,J)=>d(P,[...z,"size",J],v)),k.at.forEach((P,J)=>d(P,[...z,"at",J],v));let A=Wf[k.type],C=k.params??{};for(let P of A.required)C[P]===void 0&&o.push(D([...z,"params",P],"configurator.missingBlockParam",{type:k.type,param:P}));for(let[P,J]of Object.entries(C)){if(!A.required.includes(P)&&!A.optional.includes(P)){o.push(D([...z,"params",P],"configurator.unknownBlockParam",{type:k.type,param:P}));continue}d(J,[...z,"params",P],v);}k.follows!==void 0&&r.parameters&&o.push(...Q$(k.follows,z,{parameters:r.parameters,hasPresets:r.hasPresets??false}));}};f(e.root,[...i,"root"],c,0),l>E.geometryNodes&&o.push(D([...i,"root"],"configurator.tooMany",{max:E.geometryNodes}));let h=new Set;return e.annotations.forEach((m,x)=>{let v=[...i,"annotations",x];h.has(m.id)&&o.push(D([...v,"id"],"configurator.duplicateId",{id:m.id})),h.add(m.id),d(m.from,[...v,"from"],c),d(m.to,[...v,"to"],c),d(m.at,[...v,"at"],c);}),o}function Q$(e,r,i){return e===qf?i.hasPresets?[]:[D([...r,"follows"],"configurator.followsNoPresets")]:i.parameters.get(e)?.kind==="choice"?[]:[D([...r,"follows"],"configurator.followsNotAChoice",{param:e})]}var xe=_.string().trim().min(1).max(80),ey=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.(webp|jpg|jpeg)$/,ll=_.string().regex(ey,"configurator.invalidTexturePath");var Ai={key:V,label:xe,tab:V},ty=_.discriminatedUnion("kind",[_.strictObject({...Ai,kind:_.literal("number"),unit:_.enum(["mm","count"]),step:_.number().positive().finite(),min:_.number().finite(),max:_.number().finite()}),_.strictObject({...Ai,kind:_.literal("choice"),list:V}),_.strictObject({...Ai,kind:_.literal("material")}),_.strictObject({...Ai,kind:_.literal("toggle")})]),ep=e=>_.strictObject({key:V,label:xe,options:_.array(_.strictObject({code:$e,label:xe,image:e.optional()})).min(1).max(E.optionsPerList)}),tp=e=>_.strictObject({code:$e,label:xe,color:_.string().regex(/^#[0-9a-f]{6}$/i,"configurator.invalidColor"),texture:e.optional(),textureSize:_.number().positive().max(1e4).optional(),normalMap:e.optional(),normalScale:_.number().min(0).max(3).optional(),roughnessMap:e.optional(),roughness:_.number().min(0).max(1).optional(),metalness:_.number().min(0).max(1).optional(),opacity:_.number().min(.05).max(1).optional(),emissive:_.boolean().optional(),priceGroup:$e.optional()});ep(ll);tp(ll);var ry=_.union([_.number().finite(),_.boolean(),$e,_.array($e).min(1).max(E.optionsPerList)]),Qf=_.strictObject({param:V,op:_.enum(["eq","neq","in","gte","lte"]),value:ry}),ny=_.discriminatedUnion("kind",[_.strictObject({kind:_.literal("visible"),param:V,when:Qf}),_.strictObject({kind:_.literal("limit"),param:V,bound:_.enum(["min","max"]),formula:ce}),_.strictObject({kind:_.literal("exclude"),param:V,codes:_.array($e).min(1).max(E.optionsPerList),when:Qf})]),cl={key:V,label:xe,multiplier:ce.optional()},iy=_.discriminatedUnion("kind",[_.strictObject({...cl,kind:_.literal("choice"),param:V}),_.strictObject({...cl,kind:_.literal("material"),param:V}),_.strictObject({...cl,kind:_.literal("toggle"),param:V,amount:V}),_.strictObject({key:V,label:xe,kind:_.literal("formula"),formula:ce})]),oy=["studio","warm","daylight"],ay=["soft","sharp"],uy=_.strictObject({lighting:_.enum(oy).optional(),edges:_.enum(ay).optional()}),rp=e=>_.strictObject({schemaVersion:_.literal(1),geometry:ul(e.model),scene:uy.optional(),tabs:_.array(_.strictObject({key:V,label:xe})).min(1).max(E.tabs),parameters:_.array(ty).max(E.parameters),choiceLists:_.array(ep(e.picture)).max(E.choiceLists),materials:_.array(tp(e.picture)).max(E.materials),priceGroups:_.array(_.strictObject({code:$e,label:xe})).max(E.priceGroups),amounts:_.array(_.strictObject({key:V,label:xe})).max(E.amounts),presets:_.strictObject({label:xe,tab:V,sets:_.array(V).min(1).max(E.parameters),required:_.boolean()}).optional(),rules:_.array(ny).max(E.rules),priceRules:_.array(iy).max(E.priceRules)}),cy=rp({picture:ll,model:Ti}),_x=rp({picture:al,model:al});cy.superRefine((e,r)=>{for(let i of sy(e))r.addIssue({code:"custom",path:i.path,message:i.code,params:i.params});});function sy(e){let r=[];Gf(e)>E.structureBytes&&r.push(D([],"configurator.structureTooLarge",{max:E.structureBytes}));let i=nt(e.tabs,v=>v.key,["tabs"],"key",r),o=new Map(e.choiceLists.map(v=>[v.key,v.options.map(S=>S.code)]));nt(e.choiceLists,v=>v.key,["choiceLists"],"key",r),e.choiceLists.forEach((v,S)=>nt(v.options,k=>k.code,["choiceLists",S,"options"],"code",r));let t=nt(e.materials,v=>v.code,["materials"],"code",r),n=nt(e.priceGroups,v=>v.code,["priceGroups"],"code",r),a=nt(e.amounts,v=>v.key,["amounts"],"key",r);e.materials.forEach((v,S)=>{v.priceGroup&&!n.has(v.priceGroup)&&r.push(D(["materials",S,"priceGroup"],"configurator.unknownPriceGroup",{code:v.priceGroup}));});let u=new Map(e.parameters.map(v=>[v.key,v]));nt(e.parameters,v=>v.key,["parameters"],"key",r),e.parameters.forEach((v,S)=>{let k=["parameters",S];i.has(v.tab)||r.push(D([...k,"tab"],"configurator.unknownTab",{tab:v.tab})),v.kind==="number"&&v.min>v.max&&r.push(D([...k,"min"],"configurator.minAboveMax",{key:v.key})),v.kind==="choice"&&!o.has(v.list)&&r.push(D([...k,"list"],"configurator.unknownList",{list:v.list}));});let c=new Set(e.parameters.filter(v=>v.kind==="number").map(v=>v.key)),s=new Set(e.parameters.filter(v=>v.kind==="toggle").map(v=>v.key)),l=new Set([...c,...s]);e.presets&&(i.has(e.presets.tab)||r.push(D(["presets","tab"],"configurator.unknownTab",{tab:e.presets.tab})),e.presets.sets.forEach((v,S)=>{c.has(v)||r.push(D(["presets","sets",S],"configurator.notANumberParam",{key:v}));}));let d=new Map,f=(v,S)=>{let k=d.get(v)??new Set;k.add(S),d.set(v,k);};e.rules.forEach((v,S)=>{let k=["rules",S],z=u.get(v.param);if(!z){r.push(D([...k,"param"],"configurator.unknownParam",{key:v.param}));return}if(v.kind==="limit"){z.kind!=="number"&&r.push(D([...k,"param"],"configurator.notANumberParam",{key:v.param}));for(let J of sl(v.formula,[...k,"formula"],l,r))f(v.param,J);return}if(v.kind==="exclude"){let J=np(z,o,t);J?v.codes.forEach((Se,jr)=>{J.has(Se)||r.push(D([...k,"codes",jr],"configurator.unknownCode",{code:Se}));}):r.push(D([...k,"param"],"configurator.notAChoiceParam",{key:v.param}));}let A=v.when,C=u.get(A.param);if(!C){r.push(D([...k,"when","param"],"configurator.unknownParam",{key:A.param}));return}f(v.param,A.param);let P=ly(A.op,A.value,C,o,t);P&&r.push(D([...k,"when","value"],P,{key:A.param}));});let h=dy(d);h&&r.push(D(["rules"],"configurator.ruleCycle",{cycle:h.join(" \u2192 ")}));let m=new Set;e.priceRules.forEach((v,S)=>{let k=["priceRules",S];if(m.has(v.key)&&r.push(D([...k,"key"],"configurator.duplicateName",{name:v.key})),m.add(v.key),v.kind==="formula"){sl(v.formula,[...k,"formula"],new Set([...l,...a]),r);return}v.multiplier!==void 0&&sl(v.multiplier,[...k,"multiplier"],l,r);let z=u.get(v.param);(!z||z.kind!==v.kind)&&r.push(D([...k,"param"],"configurator.priceRuleParamKind",{key:v.param,kind:v.kind})),v.kind==="toggle"&&!a.has(v.amount)&&r.push(D([...k,"amount"],"configurator.unknownAmount",{key:v.amount}));});let x=new Map(e.parameters.map(v=>[v.key,v.kind==="choice"?{kind:"choice",codes:o.get(v.list)??[]}:{kind:v.kind}]));return r.push(...Hf(e.geometry,{parameters:x,materialCodes:t,hasPresets:e.presets!==void 0,path:["geometry"]})),r}function nt(e,r,i,o,t){let n=new Set;return e.forEach((a,u)=>{let c=r(a);n.has(c)&&t.push(D([...i,u,o],"configurator.duplicateName",{name:c})),n.add(c);}),n}function sl(e,r,i,o){let t=Or(e);if(!t.ok)return o.push(D(r,`configurator.${t.code}`)),[];for(let n of t.names)i.has(n)||o.push(D(r,"configurator.unknownName",{name:n}));return t.names}function np(e,r,i){return e.kind==="choice"?new Set(r.get(e.list)??[]):e.kind==="material"?i:null}function ly(e,r,i,o,t){if(i.kind==="number")return typeof r=="number"&&e!=="in"?null:"configurator.conditionNeedsNumber";if(i.kind==="toggle")return typeof r=="boolean"&&(e==="eq"||e==="neq")?null:"configurator.conditionNeedsBoolean";let n=np(i,o,t)??new Set;return e==="in"?Array.isArray(r)&&r.every(a=>n.has(a))?null:"configurator.conditionUnknownCode":(e==="eq"||e==="neq")&&typeof r=="string"&&n.has(r)?null:"configurator.conditionUnknownCode"}function dy(e){let r=new Map,i=[],o=t=>{let n=r.get(t);if(n==="done")return null;if(n==="visiting")return [...i.slice(i.indexOf(t)),t];r.set(t,"visiting"),i.push(t);for(let a of e.get(t)??[]){let u=o(a);if(u)return u}return i.pop(),r.set(t,"done"),null};for(let t of e.keys()){let n=o(t);if(n)return n}return null}function kx(e){let r=new Map;for(let n of e.rules){let a=r.get(n.param)??new Set;if(n.kind==="limit"){let u=Or(n.formula);for(let c of u.ok?u.names:[])a.add(c);}else a.add(n.when.param);r.set(n.param,a);}let i=[],o=new Set,t=(n,a)=>{if(!(o.has(n)||a.has(n))){a.add(n);for(let u of r.get(n)??[])t(u,a);o.add(n),i.push(n);}};for(let n of e.parameters)t(n.key,new Set);return i.filter(n=>e.parameters.some(a=>a.key===n))}var ip=class extends Component{constructor(){super(...arguments);this.state={failed:false};}static getDerivedStateFromError(){return {failed:true}}render(){return this.state.failed?this.props.fallback:this.props.children}};function zx(e){let r=e.material,i=r?.roughnessMap??null,o=r?.roughness??(i?1:.7),t=r?.metalness??0,n=r?.emissive===true,a=r?.opacity??1;return {color:e.color,roughness:o,metalness:t,emissive:n,transparent:a<1,opacity:a,texture:r?.texture??null,textureSize:r?.textureSize??1e3,normalMap:r?.normalMap??null,normalScale:r?.normalScale??1,roughnessMap:i}}export{D as a,E as b,Or as c,ex as d,_ as e,V as f,$e as g,qf as h,Yf as i,oy as j,_x as k,kx as l,zx as m,ip as n};
|
|
58
|
+
`){i+=1;continue}if(/[0-9.]/.test(o)){let n=i;for(;n<e.length&&/[0-9.]/.test(e.charAt(n));)n+=1;let a=e.slice(i,n);if(!/^(\d+(\.\d+)?|\.\d+)$/.test(a))return null;r.push({type:"number",value:Number(a)}),i=n;continue}if(E$.test(o)){let n=i;for(;n<e.length&&C$.test(e.charAt(n));)n+=1;r.push({type:"name",value:e.slice(i,n)}),i=n;continue}let t=o==="\xD7"?"*":o==="\xF7"?"/":o==="\u2212"?"-":o;if(t==="+"||t==="-"||t==="*"||t==="/"||t==="("||t===")"||t===","){r.push({type:"op",value:t}),i+=1;continue}return null}return r}var il=class{constructor(r){this.tokens=r;this.position=0;this.nodes=0;this.depth=0;this.names=[];}parse(){let r=this.expression();if(this.position!==this.tokens.length)throw new pe("formula_syntax");return r}count(r){if(this.nodes+=1,this.nodes>E.formulaNodes)throw new pe("formula_too_many_nodes");return r}peek(){return this.tokens[this.position]}takeOperator(r){let i=this.peek();return i?.type==="op"&&i.value===r?(this.position+=1,true):false}expression(){let r=this.term();for(;;)if(this.takeOperator("+"))r=this.count({kind:"binary",operator:"+",left:r,right:this.term()});else if(this.takeOperator("-"))r=this.count({kind:"binary",operator:"-",left:r,right:this.term()});else return r}term(){let r=this.unary();for(;;)if(this.takeOperator("*"))r=this.count({kind:"binary",operator:"*",left:r,right:this.unary()});else if(this.takeOperator("/"))r=this.count({kind:"binary",operator:"/",left:r,right:this.unary()});else return r}unary(){return this.takeOperator("-")?this.count({kind:"negate",operand:this.unary()}):this.takeOperator("+")?this.unary():this.primary()}nested(r){if(this.depth+=1,this.depth>E.formulaDepth)throw new pe("formula_too_deep");let i=r();return this.depth-=1,i}primary(){let r=this.peek();if(!r)throw new pe("formula_syntax");if(r.type==="number")return this.position+=1,this.count({kind:"number",value:r.value});if(r.type==="name"){if(this.position+=1,this.takeOperator("(")){if(!Z$.includes(r.value))throw new pe("formula_unknown_function",r.value);let i=r.value;return this.nested(()=>{let o=[this.expression()];for(;this.takeOperator(",");)o.push(this.expression());if(!this.takeOperator(")"))throw new pe("formula_syntax");if(!(i==="min"||i==="max")&&o.length!==1)throw new pe("formula_syntax",i);return this.count({kind:"call",fn:i,args:o})})}return this.names.includes(r.value)||this.names.push(r.value),this.count({kind:"name",name:r.value})}if(r.value==="(")return this.position+=1,this.nested(()=>{let i=this.expression();if(!this.takeOperator(")"))throw new pe("formula_syntax");return i});throw new pe("formula_syntax")}},pe=class extends Error{constructor(i,o){super(i);this.code=i;this.detail=o;}},Ui=new Map;function Kf(e){if(typeof e=="number")return Number.isFinite(e)?{ok:true,formula:{source:e,root:{kind:"number",value:e},names:[]}}:{ok:false,code:"formula_syntax"};let r=Ui.get(e);if(r)return r;let i=R$(e);return Ui.size>2e3&&Ui.clear(),Ui.set(e,i),i}function R$(e){if(e.length>E.formulaChars)return {ok:false,code:"formula_too_long"};let r=L$(e);if(!r||r.length===0)return {ok:false,code:"formula_syntax"};let i=new il(r);try{let o=i.parse();return {ok:!0,formula:{source:e,root:o,names:i.names}}}catch(o){if(o instanceof pe)return {ok:false,code:o.code,detail:o.detail};throw o}}function V$(e,r){for(let o of e.names)if(!Object.prototype.hasOwnProperty.call(r,o))return {ok:false,code:"formula_unknown_name",name:o};let i=Pr(e.root,r);return Number.isFinite(i)?{ok:true,value:i}:{ok:false,code:"formula_not_finite"}}function Pr(e,r){switch(e.kind){case "number":return e.value;case "name":return r[e.name]??Number.NaN;case "negate":return -Pr(e.operand,r);case "binary":return F$(e.operator,Pr(e.left,r),Pr(e.right,r));case "call":return M$(e.fn,e.args.map(i=>Pr(i,r)))}}function F$(e,r,i){switch(e){case "+":return r+i;case "-":return r-i;case "*":return r*i;case "/":return r/i}}function M$(e,r){let i=r[0]??Number.NaN;switch(e){case "min":return Math.min(...r);case "max":return Math.max(...r);case "floor":return Math.floor(i);case "ceil":return Math.ceil(i);case "round":return Math.round(i);case "abs":return Math.abs(i)}}function Or(e){let r=Kf(e);return r.ok?{ok:true,names:r.formula.names}:r}function rx(e,r){let i=Kf(e);return i.ok?V$(i.formula,r):i}var J$=/^[a-z][a-z0-9_]{0,39}$/,G$=/^[a-z0-9][a-z0-9_-]{0,39}$/,V=_.string().regex(J$,"configurator.invalidName"),$e=_.string().regex(G$,"configurator.invalidCode"),ce=_.union([_.number().finite(),_.string().trim().min(1).max(E.formulaChars,"configurator.formulaTooLong")]),Bf=_.tuple([ce,ce,ce]),K$=["box","rounded_top_box","stadium_prism","arc_panel","led_strip","niche_panel","model"],Wf={box:{required:[],optional:[]},rounded_top_box:{required:["radius"],optional:[]},stadium_prism:{required:[],optional:[]},arc_panel:{required:["thickness"],optional:["mirror"]},led_strip:{required:[],optional:[]},niche_panel:{required:["niche_x","niche_y","niche_width","niche_height"],optional:[]},model:{required:[],optional:["fit","paint"]}},B$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.glb$/,qf="preset",ol={id:V,slot:V,size:Bf,at:Bf,visible:ce.optional(),params:_.record(V,ce).optional()},W$=_.strictObject({...ol,type:_.enum(K$).exclude(["model"])}),Ti=_.string().regex(B$,"configurator.invalidModelPath"),al=_.url({protocol:/^https?$/});function Xf(e){let r=_.strictObject({...ol,type:_.literal("model"),model:e}),i=_.strictObject({...ol,type:_.literal("model"),follows:V,models:_.record($e,e).refine(t=>Object.keys(t).length<=E.presets,{message:"configurator.tooMany"})}),o=_.lazy(()=>_.union([W$,r,i,_.strictObject({id:V,type:_.literal("repeat"),count:ce,index:_.enum(["i","j"]).optional(),visible:ce.optional(),children:_.array(o).min(1)})]));return o}Xf(Ti);var q$=_.strictObject({param:V,map:_.record($e,_.number().finite()).optional()}),X$=_.strictObject({name:V,binding:q$}),Y$=_.strictObject({name:V,param:V.optional(),material:$e.optional(),color:_.string().regex(/^#[0-9a-f]{6}$/i,"configurator.invalidColor").optional(),grain:_.enum(["horizontal","vertical"]).optional()}),H$=_.strictObject({id:V,axis:_.enum(["x","y"]),from:ce,to:ce,at:ce,label:_.string().trim().min(1).max(80).optional()});function ul(e){return _.strictObject({version:_.number().int().min(1),startedFrom:_.string().trim().max(80).optional(),inputs:_.array(X$).max(E.geometryInputs),constants:_.record(V,_.number().finite()),slots:_.array(Y$).min(1).max(E.geometrySlots),root:_.array(Xf(e)).min(1),camera:_.strictObject({azimuth:_.number().min(-90).max(90),elevation:_.number().min(-10).max(80)}).optional(),annotations:_.array(H$).max(E.annotations)})}ul(Ti);function Yf(e){let r=[],i=o=>{for(let t of o)t.type==="repeat"?i(t.children):t.type==="model"&&t.follows!==void 0&&r.push({name:`${t.id}_shown`,node:t});};return i(e),r}function Hf(e,r={}){let i=r.path??[],o=[],t=Object.keys(e.constants);t.length>E.geometryConstants&&o.push(D([...i,"constants"],"configurator.tooMany",{max:E.geometryConstants}));let n=new Set;e.inputs.forEach((m,x)=>{let v=[...i,"inputs",x];if((n.has(m.name)||t.includes(m.name))&&o.push(D([...v,"name"],"configurator.duplicateName",{name:m.name})),(m.name==="i"||m.name==="j")&&o.push(D([...v,"name"],"configurator.reservedName",{name:m.name})),n.add(m.name),!r.parameters)return;let S=r.parameters.get(m.binding.param);if(!S){o.push(D([...v,"binding","param"],"configurator.inputUnbound",{name:m.name,param:m.binding.param}));return}if(S.kind==="material"&&o.push(D([...v,"binding","param"],"configurator.inputCannotBindMaterial",{name:m.name})),S.kind==="choice"){let k=(S.codes??[]).filter(z=>m.binding.map?.[z]===void 0);k.length>0&&o.push(D([...v,"binding","map"],"configurator.choiceMapIncomplete",{name:m.name,codes:k.join(", ")}));}else m.binding.map&&o.push(D([...v,"binding","map"],"configurator.mapOnlyForChoice",{name:m.name}));});let a=new Set;e.slots.forEach((m,x)=>{let v=[...i,"slots",x];a.has(m.name)&&o.push(D([...v,"name"],"configurator.duplicateName",{name:m.name})),a.add(m.name),[m.param,m.material,m.color].filter(k=>k!==void 0).length!==1&&o.push(D(v,"configurator.slotNeedsOneSource",{name:m.name})),m.param&&r.parameters&&r.parameters.get(m.param)?.kind!=="material"&&o.push(D([...v,"param"],"configurator.slotParamNotMaterial",{param:m.param})),m.material&&r.materialCodes&&!r.materialCodes.has(m.material)&&o.push(D([...v,"material"],"configurator.unknownMaterial",{code:m.material}));});let u=Yf(e.root).map(m=>m.name);for(let m of u)(n.has(m)||t.includes(m))&&o.push(D([...i,"root"],"configurator.duplicateName",{name:m}));let c=new Set([...n,...t,...u]),s=new Set,l=0,d=(m,x,v)=>{let S=Or(m);if(!S.ok){o.push(D(x,`configurator.${S.code}`));return}for(let k of S.names)v.has(k)||o.push(D(x,"configurator.unknownName",{name:k}));},f=(m,x,v,S)=>{for(let k of m){let z=[...x,k.id];if(l+=1,s.has(k.id)&&o.push(D([...z,"id"],"configurator.duplicateId",{id:k.id})),s.add(k.id),k.visible!==void 0&&d(k.visible,[...z,"visible"],v),k.type==="repeat"){if(d(k.count,[...z,"count"],v),S+1>E.repeatDepth){o.push(D(z,"configurator.repeatTooDeep",{max:E.repeatDepth}));continue}let P=k.index??"i";v.has(P)&&o.push(D([...z,"index"],"configurator.indexInUse",{index:P})),f(k.children,z,new Set([...v,P]),S+1);continue}a.has(k.slot)||o.push(D([...z,"slot"],"configurator.unknownSlot",{slot:k.slot})),k.size.forEach((P,J)=>d(P,[...z,"size",J],v)),k.at.forEach((P,J)=>d(P,[...z,"at",J],v));let A=Wf[k.type],C=k.params??{};for(let P of A.required)C[P]===void 0&&o.push(D([...z,"params",P],"configurator.missingBlockParam",{type:k.type,param:P}));for(let[P,J]of Object.entries(C)){if(!A.required.includes(P)&&!A.optional.includes(P)){o.push(D([...z,"params",P],"configurator.unknownBlockParam",{type:k.type,param:P}));continue}d(J,[...z,"params",P],v);}k.follows!==void 0&&r.parameters&&o.push(...Q$(k.follows,z,{parameters:r.parameters,hasPresets:r.hasPresets??false}));}};f(e.root,[...i,"root"],c,0),l>E.geometryNodes&&o.push(D([...i,"root"],"configurator.tooMany",{max:E.geometryNodes}));let h=new Set;return e.annotations.forEach((m,x)=>{let v=[...i,"annotations",x];h.has(m.id)&&o.push(D([...v,"id"],"configurator.duplicateId",{id:m.id})),h.add(m.id),d(m.from,[...v,"from"],c),d(m.to,[...v,"to"],c),d(m.at,[...v,"at"],c);}),o}function Q$(e,r,i){return e===qf?i.hasPresets?[]:[D([...r,"follows"],"configurator.followsNoPresets")]:i.parameters.get(e)?.kind==="choice"?[]:[D([...r,"follows"],"configurator.followsNotAChoice",{param:e})]}var xe=_.string().trim().min(1).max(80),ey=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.(webp|jpg|jpeg)$/,ll=_.string().regex(ey,"configurator.invalidTexturePath");var Ai={key:V,label:xe,tab:V},ty=_.discriminatedUnion("kind",[_.strictObject({...Ai,kind:_.literal("number"),unit:_.enum(["mm","count"]),step:_.number().positive().finite(),min:_.number().finite(),max:_.number().finite()}),_.strictObject({...Ai,kind:_.literal("choice"),list:V}),_.strictObject({...Ai,kind:_.literal("material")}),_.strictObject({...Ai,kind:_.literal("toggle")})]),ep=e=>_.strictObject({key:V,label:xe,options:_.array(_.strictObject({code:$e,label:xe,image:e.optional()})).min(1).max(E.optionsPerList)}),tp=e=>_.strictObject({code:$e,label:xe,color:_.string().regex(/^#[0-9a-f]{6}$/i,"configurator.invalidColor"),texture:e.optional(),textureSize:_.number().positive().max(1e4).optional(),normalMap:e.optional(),normalScale:_.number().min(0).max(3).optional(),roughnessMap:e.optional(),roughness:_.number().min(0).max(1).optional(),metalness:_.number().min(0).max(1).optional(),opacity:_.number().min(.05).max(1).optional(),emissive:_.boolean().optional(),priceGroup:$e.optional()});ep(ll);tp(ll);var ry=_.union([_.number().finite(),_.boolean(),$e,_.array($e).min(1).max(E.optionsPerList)]),Qf=_.strictObject({param:V,op:_.enum(["eq","neq","in","gte","lte"]),value:ry}),ny=_.discriminatedUnion("kind",[_.strictObject({kind:_.literal("visible"),param:V,when:Qf}),_.strictObject({kind:_.literal("limit"),param:V,bound:_.enum(["min","max"]),formula:ce}),_.strictObject({kind:_.literal("exclude"),param:V,codes:_.array($e).min(1).max(E.optionsPerList),when:Qf})]),cl={key:V,label:xe,multiplier:ce.optional()},iy=_.discriminatedUnion("kind",[_.strictObject({...cl,kind:_.literal("choice"),param:V}),_.strictObject({...cl,kind:_.literal("material"),param:V}),_.strictObject({...cl,kind:_.literal("toggle"),param:V,amount:V}),_.strictObject({key:V,label:xe,kind:_.literal("formula"),formula:ce})]),oy=["studio","warm","daylight"],ay=["soft","sharp"],uy=_.strictObject({lighting:_.enum(oy).optional(),edges:_.enum(ay).optional()}),rp=e=>_.strictObject({schemaVersion:_.literal(1),geometry:ul(e.model),scene:uy.optional(),tabs:_.array(_.strictObject({key:V,label:xe})).min(1).max(E.tabs),parameters:_.array(ty).max(E.parameters),choiceLists:_.array(ep(e.picture)).max(E.choiceLists),materials:_.array(tp(e.picture)).max(E.materials),priceGroups:_.array(_.strictObject({code:$e,label:xe})).max(E.priceGroups),amounts:_.array(_.strictObject({key:V,label:xe})).max(E.amounts),presets:_.strictObject({label:xe,tab:V,sets:_.array(V).min(1).max(E.parameters),required:_.boolean()}).optional(),rules:_.array(ny).max(E.rules),priceRules:_.array(iy).max(E.priceRules)}),cy=rp({picture:ll,model:Ti}),kx=rp({picture:al,model:al});cy.superRefine((e,r)=>{for(let i of sy(e))r.addIssue({code:"custom",path:i.path,message:i.code,params:i.params});});function sy(e){let r=[];Gf(e)>E.structureBytes&&r.push(D([],"configurator.structureTooLarge",{max:E.structureBytes}));let i=nt(e.tabs,v=>v.key,["tabs"],"key",r),o=new Map(e.choiceLists.map(v=>[v.key,v.options.map(S=>S.code)]));nt(e.choiceLists,v=>v.key,["choiceLists"],"key",r),e.choiceLists.forEach((v,S)=>nt(v.options,k=>k.code,["choiceLists",S,"options"],"code",r));let t=nt(e.materials,v=>v.code,["materials"],"code",r),n=nt(e.priceGroups,v=>v.code,["priceGroups"],"code",r),a=nt(e.amounts,v=>v.key,["amounts"],"key",r);e.materials.forEach((v,S)=>{v.priceGroup&&!n.has(v.priceGroup)&&r.push(D(["materials",S,"priceGroup"],"configurator.unknownPriceGroup",{code:v.priceGroup}));});let u=new Map(e.parameters.map(v=>[v.key,v]));nt(e.parameters,v=>v.key,["parameters"],"key",r),e.parameters.forEach((v,S)=>{let k=["parameters",S];i.has(v.tab)||r.push(D([...k,"tab"],"configurator.unknownTab",{tab:v.tab})),v.kind==="number"&&v.min>v.max&&r.push(D([...k,"min"],"configurator.minAboveMax",{key:v.key})),v.kind==="choice"&&!o.has(v.list)&&r.push(D([...k,"list"],"configurator.unknownList",{list:v.list}));});let c=new Set(e.parameters.filter(v=>v.kind==="number").map(v=>v.key)),s=new Set(e.parameters.filter(v=>v.kind==="toggle").map(v=>v.key)),l=new Set([...c,...s]);e.presets&&(i.has(e.presets.tab)||r.push(D(["presets","tab"],"configurator.unknownTab",{tab:e.presets.tab})),e.presets.sets.forEach((v,S)=>{c.has(v)||r.push(D(["presets","sets",S],"configurator.notANumberParam",{key:v}));}));let d=new Map,f=(v,S)=>{let k=d.get(v)??new Set;k.add(S),d.set(v,k);};e.rules.forEach((v,S)=>{let k=["rules",S],z=u.get(v.param);if(!z){r.push(D([...k,"param"],"configurator.unknownParam",{key:v.param}));return}if(v.kind==="limit"){z.kind!=="number"&&r.push(D([...k,"param"],"configurator.notANumberParam",{key:v.param}));for(let J of sl(v.formula,[...k,"formula"],l,r))f(v.param,J);return}if(v.kind==="exclude"){let J=np(z,o,t);J?v.codes.forEach((Se,jr)=>{J.has(Se)||r.push(D([...k,"codes",jr],"configurator.unknownCode",{code:Se}));}):r.push(D([...k,"param"],"configurator.notAChoiceParam",{key:v.param}));}let A=v.when,C=u.get(A.param);if(!C){r.push(D([...k,"when","param"],"configurator.unknownParam",{key:A.param}));return}f(v.param,A.param);let P=ly(A.op,A.value,C,o,t);P&&r.push(D([...k,"when","value"],P,{key:A.param}));});let h=dy(d);h&&r.push(D(["rules"],"configurator.ruleCycle",{cycle:h.join(" \u2192 ")}));let m=new Set;e.priceRules.forEach((v,S)=>{let k=["priceRules",S];if(m.has(v.key)&&r.push(D([...k,"key"],"configurator.duplicateName",{name:v.key})),m.add(v.key),v.kind==="formula"){sl(v.formula,[...k,"formula"],new Set([...l,...a]),r);return}v.multiplier!==void 0&&sl(v.multiplier,[...k,"multiplier"],l,r);let z=u.get(v.param);(!z||z.kind!==v.kind)&&r.push(D([...k,"param"],"configurator.priceRuleParamKind",{key:v.param,kind:v.kind})),v.kind==="toggle"&&!a.has(v.amount)&&r.push(D([...k,"amount"],"configurator.unknownAmount",{key:v.amount}));});let x=new Map(e.parameters.map(v=>[v.key,v.kind==="choice"?{kind:"choice",codes:o.get(v.list)??[]}:{kind:v.kind}]));return r.push(...Hf(e.geometry,{parameters:x,materialCodes:t,hasPresets:e.presets!==void 0,path:["geometry"]})),r}function nt(e,r,i,o,t){let n=new Set;return e.forEach((a,u)=>{let c=r(a);n.has(c)&&t.push(D([...i,u,o],"configurator.duplicateName",{name:c})),n.add(c);}),n}function sl(e,r,i,o){let t=Or(e);if(!t.ok)return o.push(D(r,`configurator.${t.code}`)),[];for(let n of t.names)i.has(n)||o.push(D(r,"configurator.unknownName",{name:n}));return t.names}function np(e,r,i){return e.kind==="choice"?new Set(r.get(e.list)??[]):e.kind==="material"?i:null}function ly(e,r,i,o,t){if(i.kind==="number")return typeof r=="number"&&e!=="in"?null:"configurator.conditionNeedsNumber";if(i.kind==="toggle")return typeof r=="boolean"&&(e==="eq"||e==="neq")?null:"configurator.conditionNeedsBoolean";let n=np(i,o,t)??new Set;return e==="in"?Array.isArray(r)&&r.every(a=>n.has(a))?null:"configurator.conditionUnknownCode":(e==="eq"||e==="neq")&&typeof r=="string"&&n.has(r)?null:"configurator.conditionUnknownCode"}function dy(e){let r=new Map,i=[],o=t=>{let n=r.get(t);if(n==="done")return null;if(n==="visiting")return [...i.slice(i.indexOf(t)),t];r.set(t,"visiting"),i.push(t);for(let a of e.get(t)??[]){let u=o(a);if(u)return u}return i.pop(),r.set(t,"done"),null};for(let t of e.keys()){let n=o(t);if(n)return n}return null}function Ix(e){let r=new Map;for(let n of e.rules){let a=r.get(n.param)??new Set;if(n.kind==="limit"){let u=Or(n.formula);for(let c of u.ok?u.names:[])a.add(c);}else a.add(n.when.param);r.set(n.param,a);}let i=[],o=new Set,t=(n,a)=>{if(!(o.has(n)||a.has(n))){a.add(n);for(let u of r.get(n)??[])t(u,a);o.add(n),i.push(n);}};for(let n of e.parameters)t(n.key,new Set);return i.filter(n=>e.parameters.some(a=>a.key===n))}var ip=class extends Component{constructor(){super(...arguments);this.state={failed:false};}static getDerivedStateFromError(){return {failed:true}}render(){return this.state.failed?this.props.fallback:this.props.children}};function Px(e){return {repeat:1e3/e.textureSize,rotation:e.grain==="vertical"?Math.PI/2:0}}var fy=.7,py=1e3;function Ox(e){let r=e.material,i=r?.roughnessMap??null,o=r?.roughness??(i?1:fy),t=r?.metalness??0,n=r?.emissive===true,a=r?.opacity??1;return {color:e.color,roughness:o,metalness:t,emissive:n,transparent:a<1,opacity:a,texture:r?.texture??null,textureSize:r?.textureSize??py,normalMap:r?.normalMap??null,normalScale:r?.normalScale??1,roughnessMap:i,grain:e.grain}}export{D as a,E as b,Or as c,rx as d,_ as e,V as f,$e as g,qf as h,Yf as i,oy as j,kx as k,Ix as l,Px as m,Ox as n,ip as o};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {o,j,n,m}from'./chunk-ATEH2U7F.js';import {f,e,c,a}from'./chunk-QLPSL2DY.js';import'./chunk-RNTBO6KY.js';import {lazy,useState,useRef,useLayoutEffect,Suspense,useMemo,useEffect}from'react';import {ContactShadows,OrbitControls}from'@react-three/drei';import {Canvas,useThree,useFrame}from'@react-three/fiber';import*as v from'three';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {RoomEnvironment}from'three/examples/jsm/environments/RoomEnvironment.js';function B(r){let{handle:e,labels:t}=r,o=(n,a,i,c)=>jsx("button",{type:"button",className:"pc-camera-button",style:{gridArea:c},"aria-label":n,title:n,"data-test":`configurator-camera-${c}`,onClick:()=>{e.current&&i(e.current);},children:jsx("span",{"aria-hidden":"true",children:a})});return jsxs("div",{className:"pc-camera",role:"group","aria-label":t.cameraControls,children:[jsxs("div",{className:"pc-camera-pad",children:[o(t.cameraUp,"\u2191",n=>n.pan(0,1),"up"),o(t.cameraLeft,"\u2190",n=>n.pan(-1,0),"left"),o(t.cameraReset,"\u27F2",n=>n.reset(),"reset"),o(t.cameraRight,"\u2192",n=>n.pan(1,0),"right"),o(t.cameraDown,"\u2193",n=>n.pan(0,-1),"down")]}),jsxs("div",{className:"pc-camera-zoom",children:[o(t.cameraZoomIn,"+",n=>n.zoom(1),"in"),o(t.cameraZoomOut,"\u2212",n=>n.zoom(-1),"out")]})]})}function U(r,e){let o={ArrowLeft:()=>e.pan(-1,0),ArrowRight:()=>e.pan(1,0),ArrowUp:()=>e.pan(0,1),ArrowDown:()=>e.pan(0,-1),"+":()=>e.zoom(1),"=":()=>e.zoom(1),"-":()=>e.zoom(-1),0:()=>e.reset()}[r];return o?.(),o!==void 0}var O=35,se=1.5,R=Math.PI/180;function x(r){let{bounds:e,azimuth:t=0,elevation:o=10,aspect:n=se}=r,a$1=g=>(e.min[g]+e.max[g])/2*a,i=g=>(e.max[g]-e.min[g])*a,c=[a$1(0),a$1(1),a$1(2)],s=Math.max(Math.hypot(i(0),i(1),i(2))/2,.1),f=O*R/2,l=Math.atan(Math.tan(f)*n),m=s/Math.sin(Math.min(f,l)),h=[c[0]+m*Math.sin(t*R)*Math.cos(o*R),c[1]+m*Math.sin(o*R),c[2]+m*Math.cos(t*R)*Math.cos(o*R)];return {target:c,position:h,radius:s,distance:m}}function z(r,e){return [0,1,2].map(t=>{let o=e.min[t]*a,n=e.max[t]*a,a$1=(n-o)/4;return Math.min(Math.max(r[t],o-a$1),n+a$1)})}function W(r){let{before:e,turning:t,camera:o,middle:n,radius:a,bounds:i}=r,c=a/e.radius,s=z(n.map((l,m)=>l+(t[m]-e.middle[m])*c),i),f=s.map((l,m)=>l+(o[m]-t[m])*c);return {target:s,position:f}}function Z(r){let{geometry:e,camera:t,interactive:o,handle:n}=r,{camera:a,invalidate:i,size:c}=useThree(),s=useRef(null),f=useRef(null),l=x({bounds:e.bounds,azimuth:t?.azimuth,elevation:t?.elevation}),[m,h,g]=l.target,{radius:E}=l;useLayoutEffect(()=>{let p=[m,h,g],u=f.current,d=s.current;if(u){let S=W({before:u,turning:d?d.target.toArray():u.middle,camera:a.position.toArray(),middle:p,radius:E,bounds:e.bounds});a.position.set(...S.position),d?.target.set(...S.target);}else d?.target.set(...p);d?.update(),a.lookAt(d?.target??new v.Vector3(...p)),f.current={middle:p,radius:E},i();},[m,h,g,E,a,i]);let b=p=>{let u=s.current;if(!u)return;let d=new v.Vector3(...z(p.toArray(),e.bounds));a.position.add(d.clone().sub(u.target)),u.target.copy(d),u.update(),i();};return useLayoutEffect(()=>(n.current={pan:(p,u)=>{let d=s.current;if(!d)return;a.updateMatrixWorld();let S=E*.15,ie=new v.Vector3().setFromMatrixColumn(a.matrixWorld,0).multiplyScalar(p*S).add(new v.Vector3().setFromMatrixColumn(a.matrixWorld,1).multiplyScalar(u*S));b(d.target.clone().add(ie));},zoom:p=>{let u=s.current;if(!u)return;let d=a.position.clone().sub(u.target),S=Math.min(Math.max(d.length()*(p>0?.8:1.25),E*.8),E*8);a.position.copy(u.target).add(d.setLength(S)),u.update(),i();},reset:()=>{let p=s.current,u=x({bounds:e.bounds,azimuth:t?.azimuth,elevation:t?.elevation,aspect:c.height>0?c.width/c.height:void 0});a.position.set(...u.position),p?.target.set(...u.target),p?.update(),i();}},()=>{n.current=null;})),jsx(OrbitControls,{ref:s,makeDefault:true,enabled:o,enablePan:true,screenSpacePanning:true,minDistance:E*.8,maxDistance:E*8,maxPolarAngle:Math.PI/2+.05,onChange:()=>{let p=s.current;if(!p)return;z(p.target.toArray(),e.bounds).some((d,S)=>d!==p.target.getComponent(S))&&b(p.target.clone());}})}var J={studio:{exposure:1.3,environmentIntensity:.6,key:{color:"#ffffff",intensity:2.6,position:[3,5,4]},shadowOpacity:.5},warm:{exposure:1.4,environmentIntensity:.75,key:{color:"#ffd8b0",intensity:1.7,position:[2.5,4,4]},shadowOpacity:.55},daylight:{exposure:1.6,environmentIntensity:1.15,key:{color:"#eef3ff",intensity:1.8,position:[4,6,3]},shadowOpacity:.4}};function $(r){return j.includes(r)?J[r]:J.studio}function Q(r){let e=useThree(a=>a.invalidate),t=JSON.stringify(Object.entries(r).map(([a,i])=>[a,n(i)])),o=useMemo(()=>JSON.parse(t),[t]),n$1=useMemo(()=>Object.fromEntries(o.map(([a,i])=>[a,pe(i)])),[o]);return useEffect(()=>{let a=new v.TextureLoader;a.setCrossOrigin("anonymous");let i=false,c=[];for(let[s,f]of o){let l=n$1[s];if(l)for(let m$1 of de(f))a.load(m$1.url,h=>{if(i){h.dispose();return}h.colorSpace=m$1.colorSpace,h.wrapS=v.RepeatWrapping,h.wrapT=v.RepeatWrapping;let g=m(f);h.repeat.set(g.repeat,g.repeat),h.rotation=g.rotation,m$1.apply(l,h),l.needsUpdate=true,c.push(h),e();},void 0,()=>{});}return ()=>{i=true;for(let s of c)s.dispose();}},[o,n$1,e]),useEffect(()=>()=>{for(let a of Object.values(n$1))a.dispose();},[n$1]),n$1}function pe(r){let e=new v.MeshStandardMaterial({color:r.color,roughness:r.roughness,metalness:r.metalness});return r.emissive&&(e.emissive.set(r.color),e.emissiveIntensity=1,e.toneMapped=false),r.transparent&&(e.transparent=true,e.opacity=r.opacity,e.depthWrite=false),e}function de(r){let e=[];return r.texture&&e.push({url:r.texture,colorSpace:v.SRGBColorSpace,apply:(t,o)=>{t.map=o,t.color.set("#ffffff");}}),r.normalMap&&e.push({url:r.normalMap,colorSpace:v.NoColorSpace,apply:(t,o)=>{t.normalMap=o,t.normalScale.set(r.normalScale,r.normalScale);}}),r.roughnessMap&&e.push({url:r.roughnessMap,colorSpace:v.NoColorSpace,apply:(t,o)=>{t.roughnessMap=o;}}),e}function ee(r){let{intensity:e}=r,t=useThree(o=>o.get);return useEffect(()=>{let{gl:o,scene:n,invalidate:a}=t(),i=new v.PMREMGenerator(o),c=new RoomEnvironment,s=i.fromScene(c,.04);return c.dispose(),i.dispose(),n.environment=s.texture,a(),()=>{n.environment===s.texture&&(n.environment=null),s.dispose();}},[t]),useEffect(()=>{let{scene:o,invalidate:n}=t();o.environmentIntensity=e,n();},[t,e]),null}function te(r){let{exposure:e}=r,t=useThree(o=>o.get);return useEffect(()=>{let{gl:o,invalidate:n}=t();o.toneMapping=v.AgXToneMapping,o.toneMappingExposure=e,o.outputColorSpace=v.SRGBColorSpace,n();},[t,e]),null}var Ce=lazy(()=>import('./model-part-CGYO323N.js')),Me=.05,xe=1e-4;function st(r){let{geometry:e,slots:t,camera:o,interactive:n=true,className:a}=r,i=$(r.lighting),c=useState(()=>x({bounds:e.bounds,azimuth:o?.azimuth,elevation:o?.elevation}))[0],s=e.bounds.min[1]/1e3-.001,f=useRef(null),l=n&&r.cameraLabels;return jsxs("div",{className:a,style:{position:"relative",width:"100%",height:"100%"},onContextMenu:m=>m.preventDefault(),tabIndex:l?0:void 0,onKeyDown:m=>{l&&f.current&&U(m.key,f.current)&&m.preventDefault();},children:[jsxs(Canvas,{frameloop:"demand",dpr:[1,2],camera:{fov:O,position:c.position,near:.05,far:100},gl:{antialias:true,alpha:true},shadows:"soft",children:[jsx(te,{exposure:i.exposure}),jsx(ee,{intensity:i.environmentIntensity}),jsx(Te,{position:i.key.position,color:i.key.color,intensity:i.key.intensity,target:c.target,radius:c.radius}),jsx(we,{parts:e.parts,slots:t,edges:r.edges}),jsx(ContactShadows,{position:[c.target[0],s,c.target[2]],opacity:i.shadowOpacity,scale:Math.max(c.radius*4,2),resolution:1024,blur:2,far:1.5}),jsx(Z,{geometry:e,camera:o,interactive:n,handle:f})]}),l?jsx(B,{handle:f,labels:l}):null]})}function Te(r){let{target:e,radius:t}=r,o=useRef(null),n=useThree(i=>i.invalidate),a=Math.max(t*1.5,1);return useLayoutEffect(()=>{let i=o.current;if(!i)return;let c=new v.Vector3(...r.position).normalize();i.position.set(...e).add(c.multiplyScalar(a*2)),i.target.position.set(...e),i.target.updateMatrixWorld();let s=i.shadow.camera;s.left=-a,s.right=a,s.top=a,s.bottom=-a,s.near=.1,s.far=a*4,s.updateProjectionMatrix(),i.shadow.needsUpdate=true,n();},[r.position,e,a,n]),jsx("directionalLight",{ref:o,color:r.color,intensity:r.intensity,castShadow:true,"shadow-mapSize":[2048,2048],"shadow-bias":-8e-4,"shadow-normalBias":.04,"shadow-radius":4})}function we(r){let e=Q(r.slots);return jsx(Fragment,{children:r.parts.map(t=>{let o$1=e[t.slot];if(!o$1)return null;if(t.type!=="model"||!t.model)return jsx(oe,{part:t,material:o$1,edges:r.edges},t.key);let n=jsx(oe,{part:t,material:o$1});return jsx(o,{fallback:n,children:jsx(Suspense,{fallback:n,children:jsx(Ce,{part:{...t,model:t.model},material:o$1})})},`${t.key}:${t.model}`)})})}function oe(r){let{part:e$1,material:t,edges:o}=r,n=useRef(null),a=useRef(false),i=useRef(e$1.size),c$1=useThree(g=>g.invalidate),[s,f$1,l]=f(e$1),m=JSON.stringify(e$1.params),h=useMemo(()=>e(e$1,o),[e$1.type,e$1.size[0],e$1.size[1],e$1.size[2],m,o]);return useEffect(()=>()=>h.dispose(),[h]),useLayoutEffect(()=>{let g=n.current;if(g){if(!a.current)g.position.set(s,f$1,l),a.current=true;else {let E=i.current,b=g.scale;b.set(b.x*k(E[0],e$1.size[0]),b.y*k(E[1],e$1.size[1]),b.z*k(E[2],e$1.size[2]));}i.current=e$1.size,c$1();}},[h,e$1.size,s,f$1,l,c$1]),useFrame((g,E)=>{let b=n.current;if(!b)return;let p=1-Math.exp(-E/Me),u=new v.Vector3(s,f$1,l),d=new v.Vector3(1,1,1),S=Math.max(b.position.distanceTo(u),b.scale.distanceTo(d));if(S<xe){S>0&&(b.position.copy(u),b.scale.copy(d));return}b.position.lerp(u,p),b.scale.lerp(d,p),c$1();}),jsx("mesh",{ref:n,geometry:h,material:t,castShadow:c(t),receiveShadow:true})}function k(r,e){return r>0&&e>0?r/e:1}export{st as ConfiguratorScene};
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import {e,g,f,b,k,c,d,a,
|
|
1
|
+
import {e,g,f,b,k,c,d,a,o,l,i,h,n}from'./chunk-ATEH2U7F.js';import {b as b$1}from'./chunk-RNTBO6KY.js';import {lazy,useMemo,useState,useSyncExternalStore,Suspense,useRef,useEffect,useId}from'react';import {jsxs,jsx}from'react/jsx-runtime';var X="#b8b4ad",_e=1e-6;function W(n){let{structure:e,value:t,selection:o}=n,r=[],l$1=new Map(e.parameters.map(a=>[a.key,a])),m=new Map(e.materials.map(a=>[a.code,a]));for(let a$1 of Object.keys(o.values))l$1.has(a$1)||r.push(a(["values",a$1],"configurator.unknownParam",{key:a$1}));let s=e.presets?t.presets.map(a=>({code:a.code,label:a.label,productId:a.productId})):[],u=null;o.preset!==void 0&&(u=s.find(a=>a.code===o.preset)??null,u||r.push(a(["preset"],"configurator.presetNotOffered",{code:o.preset}))),!u&&e.presets?.required&&(u=s[0]??null);let c=u?t.presets.find(a=>a.code===u?.code)?.values??{}:{},p=new Set(e.presets?.sets??[]),f=new Map,v={},d$1=a=>{let g=f.get(a.param),N=g?.visible?g.value:null;switch(a.op){case "eq":return N===a.value;case "neq":return N!==a.value;case "in":return Array.isArray(a.value)&&a.value.includes(N);case "gte":return typeof N=="number"&&N>=a.value;case "lte":return typeof N=="number"&&N<=a.value}};for(let a$1 of l(e)){let g=l$1.get(a$1);if(!g)continue;let N=e.rules.filter(R=>R.param===a$1),i=N.filter(R=>R.kind==="visible").every(R=>d$1(R.when)),b=o.values[a$1],h=["values",a$1],I={key:a$1,kind:g.kind,label:g.label,tab:g.tab};if(g.kind==="number"){let R=t.numbers[a$1]??{min:g.min,max:g.max,default:g.min},C=R.min,P=R.max;for(let H of N){if(H.kind!=="limit")continue;let K=d(H.formula,v);if(!K.ok){r.push(a(["rules",e.rules.indexOf(H)],`configurator.${K.code}`));continue}H.bound==="min"?C=Math.max(C,K.value):P=Math.min(P,K.value);}C>P&&(r.push(a(h,"configurator.emptyRange",{key:a$1,min:C,max:P})),P=C);let j=p.has(a$1)?c[a$1]:void 0,B=pe(R.default,C,P);j!==void 0?B=j:i&&b!==void 0&&(typeof b!="number"?r.push(a(h,"configurator.expectedNumber",{key:a$1})):b<C||b>P?(r.push(a(h,"configurator.outOfRange",{key:a$1,min:C,max:P})),B=pe(b,C,P)):Me(b,g.step)?B=b:r.push(a(h,"configurator.offStep",{key:a$1,step:g.step}))),v[a$1]=B,f.set(a$1,{...I,visible:i,value:B,min:C,max:P,step:g.step,unit:g.unit,fixed:j!==void 0,settled:j===void 0&&C===P});continue}if(g.kind==="toggle"){let R=t.toggles[a$1]??{offered:true,default:false};i=i&&R.offered;let C=R.default;i&&b!==void 0&&(typeof b!="boolean"?r.push(a(h,"configurator.expectedBoolean",{key:a$1})):C=b);let P=i&&C;v[a$1]=P?1:0,f.set(a$1,{...I,visible:i,value:P});continue}let A=new Set(N.filter(R=>R.kind==="exclude"&&d$1(R.when)).flatMap(R=>R.kind==="exclude"?R.codes:[])),L,J;if(g.kind==="choice"){let R=e.choiceLists.find(P=>P.key===g.list),C=t.choices[g.list];L=(R?.options??[]).filter(P=>C?.options[P.code]!==void 0&&!A.has(P.code)).map(P=>({code:P.code,label:P.label,priceCents:C?.options[P.code]?.priceCents??null})),J=C?.default;}else {let R=t.materials[a$1];L=(R?.offered??[]).map(C=>m.get(C)).filter(C=>C!==void 0).filter(C=>!A.has(C.code)).map(C=>({code:C.code,label:C.label,priceCents:C.priceGroup?t.priceGroups[C.priceGroup]??null:0,material:C})),J=R?.default;}i=i&&L.length>0;let ne=L.find(R=>R.code===J)?.code??L[0]?.code??null;i&&b!==void 0&&(typeof b!="string"||!L.some(R=>R.code===b)?r.push(a(h,"configurator.optionNotOffered",{key:a$1,code:String(b)})):ne=b),f.set(a$1,{...I,visible:i,value:i?ne:null,options:L,settled:L.length===1});}let y=e.parameters.map(a=>f.get(a.key)).filter(a=>a!==void 0),x={};for(let a of e.geometry.inputs){let g=f.get(a.binding.param);g&&(g.kind==="number"?x[a.name]=g.value:g.kind==="toggle"?x[a.name]=g.value===true?1:0:g.kind==="choice"&&(x[a.name]=typeof g.value=="string"?a.binding.map?.[g.value]??0:0));}let S={};for(let a of e.geometry.slots){let g=null;if(a.param){let N=f.get(a.param);g=N?.options?.find(i=>i.code===N.value)?.material??null;}else a.material&&(g=m.get(a.material)??null);S[a.name]={color:g?.color??a.color??X,material:g,grain:a.grain==="vertical"?"vertical":"horizontal"};}let M={values:{}};for(let a of y)a.visible&&!a.fixed&&a.value!==null&&(M.values[a.key]=a.value);return u&&(M.preset=u.code),{configuration:{parameters:y,byKey:Object.fromEntries(f),presets:s,preset:u,inputs:x,slots:S,selection:M},issues:r}}function me(n){let e={};for(let t of n.parameters)t.kind==="choice"&&t.visible&&typeof t.value=="string"&&(e[t.key]=t.value);return {choices:e,preset:n.preset?.code}}function pe(n,e,t){return Math.min(t,Math.max(e,n))}function Me(n,e){let t=n/e;return Math.abs(t-Math.round(t))<_e}var Ie=1;function V(n){let{structure:e,value:t,tax:o}=n,{configuration:r,issues:l}=W(n);if(l.length>0)return {ok:false,issues:l,configuration:r};let m=[],s={};for(let d of r.parameters)d.kind==="number"?s[d.key]=d.value:d.kind==="toggle"&&(s[d.key]=d.value===true?1:0);let u=[{key:"base",label:"base",amountCents:t.basePriceCents}],c$1=(d$1,y)=>{if(d$1===void 0)return 1;let x=d(d$1,s);return x.ok?x.value<0?(m.push(a(y,"configurator.negativeMultiplier")),null):x.value:(m.push(a(y,`configurator.${x.code}`)),null)};if(e.priceRules.forEach((d$1,y)=>{let x=["priceRules",y];if(d$1.kind==="formula"){let g=Object.fromEntries(e.amounts.map(I=>[I.key,t.amounts[I.key]])),N=c(d$1.formula);if(N.ok&&N.names.some(I=>I in g&&g[I]==null)){u.push({key:d$1.key,label:d$1.label,amountCents:null});return}let b={...s};for(let[I,A]of Object.entries(g))typeof A=="number"&&(b[I]=A);let h=d(d$1.formula,b);if(!h.ok){m.push(a([...x,"formula"],`configurator.${h.code}`));return}if(h.value<0){m.push(a([...x,"formula"],"configurator.negativeAmount"));return}de(u,d$1.key,d$1.label,Math.round(h.value));return}let S=r.byKey[d$1.param];if(!S?.visible)return;let M;if(d$1.kind==="toggle"){if(S.value!==true)return;M=t.amounts[d$1.amount]??null;}else {let g=S.options?.find(N=>N.code===S.value);if(!g)return;M=g.priceCents;}if(M===null){u.push({key:d$1.key,label:d$1.label,amountCents:null});return}let a$1=c$1(d$1.multiplier,[...x,"multiplier"]);a$1!==null&&de(u,d$1.key,d$1.label,Math.round(M*a$1));}),m.length>0)return {ok:false,issues:m,configuration:r};let p=t.basePriceCents===null?"open":u.some(d=>d.amountCents===null)?"partial":"priced",f=u.reduce((d,y)=>d+(y.amountCents??0),0),v=p==="open"?null:Le(f,o);return {ok:true,configuration:r,quote:{engineVersion:Ie,state:p,lines:u,netCents:v?.netCents??null,taxCents:v?.taxCents??null,totalCents:v?.totalCents??null,taxPercentage:o.taxPercentage,pricesIncludeTax:o.pricesIncludeTax}}}function de(n,e,t,o){o!==0&&n.push({key:e,label:t,amountCents:o});}function Le(n,e){let t=e.taxPercentage>0?e.taxPercentage:0;if(e.pricesIncludeTax){let r=Math.round(n*t/(100+t));return {netCents:n-r,taxCents:r,totalCents:n}}let o=Math.round(n*t/100);return {netCents:n,taxCents:o,totalCents:n+o}}function ge(n,e,t={choices:{}}){let o=[],r=[],l={...n.constants};for(let c of n.inputs){let p=e[c.name];if(p===void 0||!Number.isFinite(p)){o.push(a(["inputs",c.name],"configurator.inputMissing",{name:c.name}));continue}l[c.name]=p;}if(o.length>0)return {ok:false,issues:o};for(let c of i(n.root))l[c.name]=fe(c.node,t)===void 0?0:1;let m=(c,p,f)=>{let v=d(c,p);return v.ok?v.value:(o.push(v.code==="formula_unknown_name"?a(f,"configurator.unknownName",{name:v.name}):a(f,`configurator.${v.code}`)),null)},s=(c,p,f,v,d)=>{for(let y of c){if(o.length>0)return;let x=[...f,y.id];if(y.visible!==void 0){let i=m(y.visible,p,[...x,"visible"]);if(i===null||i<=0)continue}if(y.type==="repeat"){if(d+1>b.repeatDepth){o.push(a(x,"configurator.repeatTooDeep",{max:b.repeatDepth}));return}let i=m(y.count,p,[...x,"count"]);if(i===null)return;if(!Number.isInteger(i)||i<0||i>b.repeatCount){o.push(a([...x,"count"],"configurator.repeatCountInvalid",{count:i,max:b.repeatCount}));return}let b$1=y.index??"i";for(let h=0;h<i;h+=1)s(y.children,{...p,[b$1]:h},[...x,h],`${v}[${h}]`,d+1);continue}let S=y.size.map((i,b)=>m(i,p,[...x,"size",b])),M=y.at.map((i,b)=>m(i,p,[...x,"at",b]));if(S.includes(null)||M.includes(null))return;let a$1=S.findIndex(i=>i<0);if(a$1>=0){o.push(a([...x,"size",a$1],"configurator.negativeMeasure",{value:S[a$1]}));return}let g=fe(y,t);if(y.type==="model"&&g===void 0)continue;let N={};for(let[i,b]of Object.entries(y.params??{})){let h=m(b,p,[...x,"params",i]);if(h===null)return;N[i]=h;}if(r.push({key:`${y.id}${v}`,id:y.id,type:y.type,slot:y.slot,size:S,at:M,params:N,...g===void 0?{}:{model:g}}),r.length>b.expandedParts){o.push(a(["root"],"configurator.tooManyParts",{max:b.expandedParts}));return}}};s(n.root,l,["root"],"",0);let u=[];for(let c of n.annotations){let p=["annotations",c.id],f=m(c.from,l,[...p,"from"]),v=m(c.to,l,[...p,"to"]),d=m(c.at,l,[...p,"at"]);f===null||v===null||d===null||u.push({id:c.id,axis:c.axis,from:f,to:v,at:d,label:c.label??null,length:Math.abs(v-f)});}return o.length>0?{ok:false,issues:o}:{ok:true,geometry:{parts:r,dimensions:u,bounds:$e(r)}}}function $e(n){if(n.length===0)return {min:[0,0,0],max:[0,0,0]};let e=[1/0,1/0,1/0],t=[-1/0,-1/0,-1/0];for(let o of n)for(let r=0;r<3;r+=1)e[r]=Math.min(e[r],o.at[r]),t[r]=Math.max(t[r],o.at[r]+o.size[r]);return {min:e,max:t}}function fe(n,e){if(n.follows===void 0)return n.model;let t=n.follows===h?e.preset:e.choices[n.follows];return t===void 0?void 0:n.models?.[t]}var G={tabsLabel:"Onderdelen van de configurator",presetNone:"Geen keuze",switchOn:"Aan",switchOff:"Uit",unitMm:"mm",unitCount:"stuks",surchargePrefix:"+",optionOnRequest:"op aanvraag",priceHeading:"Prijs",priceIncludingTax:"incl. btw",priceFrom:"vanaf",priceInPartOnRequest:"deels op aanvraag",priceOnRequest:"prijs op aanvraag",priceUnavailable:"Prijs nog niet te berekenen",sketchTitle:"Maatschets",sketchUnavailable:"Deze combinatie kan niet getekend worden.",sceneLoading:"3D-weergave laden\u2026",sceneLabel:"3D-weergave van de configuratie",cameraControls:"Beeld verschuiven en zoomen",cameraLeft:"Beeld naar links",cameraRight:"Beeld naar rechts",cameraUp:"Beeld omhoog",cameraDown:"Beeld omlaag",cameraZoomIn:"Inzoomen",cameraZoomOut:"Uitzoomen",cameraReset:"Beeld herstellen"};var Te=`
|
|
2
2
|
.pc-scope{
|
|
3
|
-
--
|
|
4
|
-
--
|
|
5
|
-
--
|
|
3
|
+
--_fg:var(--pc-fg,currentColor);--_bg:var(--pc-bg,transparent);
|
|
4
|
+
--_surface:var(--pc-surface,color-mix(in srgb,currentColor 6%,transparent));
|
|
5
|
+
--_muted:var(--pc-muted,color-mix(in srgb,currentColor 62%,transparent));
|
|
6
|
+
--_border:var(--pc-border,color-mix(in srgb,currentColor 22%,transparent));
|
|
7
|
+
--_accent:var(--pc-accent,currentColor);--_radius:var(--pc-radius,8px);
|
|
6
8
|
--_font:var(--pc-font,inherit);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@media (prefers-color-scheme:dark){
|
|
10
|
-
.pc-scope{
|
|
11
|
-
--_bg:var(--pc-bg,#16171a);--_surface:var(--pc-surface,#202226);--_fg:var(--pc-fg,#f2f2f3);
|
|
12
|
-
--_muted:var(--pc-muted,#a0a0a8);--_border:var(--pc-border,#3a3d44);--_accent:var(--pc-accent,#f2f2f3);
|
|
13
|
-
--_accent-fg:var(--pc-accent-fg,#16171a);
|
|
14
|
-
}
|
|
9
|
+
--_camera-bg:var(--pc-camera-bg,#1d1d1f);--_camera-fg:var(--pc-camera-fg,#ffffff);
|
|
10
|
+
color:var(--pc-fg,inherit);font-family:var(--_font);font-size:15px;line-height:1.4;
|
|
15
11
|
}
|
|
16
12
|
.pc-root{display:grid;gap:24px;grid-template-columns:minmax(0,1fr);align-items:start}
|
|
17
13
|
@media (min-width:900px){.pc-root{grid-template-columns:minmax(0,3fr) minmax(300px,2fr)}}
|
|
@@ -21,7 +17,7 @@ import {e,g,f,b,k,c,d,a,n,l,i,h,m}from'./chunk-36VGJWE6.js';import {b as b$1}fro
|
|
|
21
17
|
.pc-camera{position:absolute;right:10px;bottom:10px;display:flex;align-items:flex-end;gap:8px;pointer-events:none}
|
|
22
18
|
.pc-camera-pad{display:grid;grid-template-areas:". up ." "left reset right" ". down .";grid-template-columns:repeat(3,30px);grid-auto-rows:30px;gap:2px}
|
|
23
19
|
.pc-camera-zoom{display:grid;grid-template-areas:"in" "out";grid-template-rows:repeat(2,30px);gap:2px}
|
|
24
|
-
.pc-camera-button{pointer-events:auto;display:grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid var(--
|
|
20
|
+
.pc-camera-button{pointer-events:auto;display:grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid color-mix(in srgb,var(--_camera-fg) 25%,transparent);border-radius:calc(var(--_radius) / 2);background:var(--_camera-bg);color:var(--_camera-fg);font:inherit;font-size:14px;line-height:1;cursor:pointer;opacity:.85}
|
|
25
21
|
.pc-camera-button:hover{opacity:1}
|
|
26
22
|
.pc-camera-button:focus-visible{outline:2px solid var(--_accent);outline-offset:1px;opacity:1}
|
|
27
23
|
@media (max-width:400px){.pc-camera-pad{display:none}}
|
|
@@ -59,4 +55,4 @@ import {e,g,f,b,k,c,d,a,n,l,i,h,m}from'./chunk-36VGJWE6.js';import {b as b$1}fro
|
|
|
59
55
|
.pc-price-total{font-size:26px;font-weight:700}
|
|
60
56
|
.pc-price-note{color:var(--_muted);font-size:13px}
|
|
61
57
|
.pc-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
|
|
62
|
-
`;function U(){return jsx("style",{href:"product-configurator",precedence:"default",children:Ie})}function be(n,e,t){let o=n%100===0;return new Intl.NumberFormat(e,{style:"currency",currency:t,minimumFractionDigits:o?0:2,maximumFractionDigits:o?0:2}).format(n/100)}function he(n,e){let{min:t,max:o,step:a}=e,l=s=>Math.round(s*1e6)/1e6,m=Math.round(n/a)*a;return m<t&&(m=Math.ceil(t/a)*a),m>o&&(m=Math.floor(o/a)*a),l(Math.min(o,Math.max(t,m)))}function ye(n){let{structure:e,configuration:t,quote:o,onSelectionChange:a,locale:l="nl-NL",currency:m="EUR",disabled:s=false,className:u}=n,c={...G,...n.labels},p=useId(),f=useRef({}),v=e.presets&&t.presets.length>0?e.presets.tab:null,d=e.tabs.filter(i=>i.key===v||t.parameters.some(b=>b.tab===i.key&&b.visible)),[y,x]=useState(d[0]?.key),k=d.find(i=>i.key===y)??d[0],M=i=>be(i,l,m),r=(i,b)=>{a?.({...t.selection,values:{...t.selection.values,[i]:b}});},g=i=>{let{preset:b,...h}=t.selection;a?.(i===""?h:{...h,preset:i});},w=(i,b)=>{let h=i.key==="ArrowRight"?1:i.key==="ArrowLeft"?-1:0,I=d.length-1,A=i.key==="Home"?0:i.key==="End"?I:(b+h+d.length)%d.length;if(h===0&&i.key!=="Home"&&i.key!=="End")return;i.preventDefault();let $=d[A];$&&(x($.key),f.current[$.key]?.focus());};return jsxs("div",{className:["pc-panel","pc-scope",u].filter(Boolean).join(" "),children:[jsx(U,{}),d.length>1?jsx("div",{role:"tablist","aria-label":c.tabsLabel,className:"pc-tabs",children:d.map((i,b)=>jsx("button",{ref:h=>{f.current[i.key]=h;},type:"button",role:"tab",id:`${p}-tab-${i.key}`,"aria-selected":i.key===k?.key,"aria-controls":`${p}-panel-${i.key}`,tabIndex:i.key===k?.key?0:-1,className:"pc-tab",onClick:()=>x(i.key),onKeyDown:h=>w(h,b),children:i.label},i.key))}):null,k?jsxs("fieldset",{role:d.length>1?"tabpanel":void 0,id:`${p}-panel-${k.key}`,"aria-labelledby":d.length>1?`${p}-tab-${k.key}`:void 0,className:"pc-fields",disabled:s,children:[e.presets&&v===k.key?jsxs("div",{className:"pc-field",children:[jsx("label",{className:"pc-label",htmlFor:`${p}-preset`,children:e.presets.label}),jsxs("select",{id:`${p}-preset`,className:"pc-control",value:t.preset?.code??"",onChange:i=>g(i.target.value),children:[e.presets.required?null:jsx("option",{value:"",children:c.presetNone}),t.presets.map(i=>jsx("option",{value:i.code,children:i.label},i.code))]})]}):null,t.parameters.filter(i=>i.visible&&i.tab===k.key).map(i=>jsx(Ge,{id:`${p}-${i.key}`,parameter:i,labels:c,money:M,onChange:b=>r(i.key,b)},i.key))]}):null,jsx(De,{quote:o,labels:c,money:M})]})}function Ge(n){let{id:e,parameter:t,labels:o,money:a,onChange:l}=n;if(t.kind==="number"){let s={min:t.min??0,max:t.max??0,step:t.step??1},u=t.value,c=t.unit==="count"?o.unitCount:o.unitMm,p=f=>{Number.isFinite(f)&&l(he(f,s));};return jsxs("div",{className:"pc-field",children:[jsxs("label",{className:"pc-label",htmlFor:`${e}-range`,children:[t.label,jsxs("small",{children:[u," ",c]})]}),jsxs("div",{className:"pc-number",children:[jsx("input",{id:`${e}-range`,className:"pc-control",type:"range",min:s.min,max:s.max,step:s.step,value:u,disabled:t.fixed,onChange:f=>p(f.target.valueAsNumber)}),jsxs("span",{children:[jsx("label",{className:"pc-hidden",htmlFor:`${e}-number`,children:`${t.label} (${c})`}),jsx("input",{id:`${e}-number`,className:"pc-control",type:"number",inputMode:"numeric",min:s.min,max:s.max,step:s.step,defaultValue:u,readOnly:t.fixed,onBlur:f=>p(f.target.valueAsNumber),onKeyDown:f=>{f.key==="Enter"&&p(f.currentTarget.valueAsNumber);}},u)]})]})]})}if(t.kind==="toggle")return jsx("div",{className:"pc-field",children:jsxs("label",{className:"pc-switch",htmlFor:e,children:[jsx("input",{id:e,type:"checkbox",checked:t.value===true,onChange:s=>l(s.target.checked)}),jsx("span",{className:"pc-label",children:t.label})]})});let m=t.options??[];if(t.kind==="material"){let s=m.find(u=>u.code===t.value);return jsxs("fieldset",{className:"pc-field",children:[jsxs("legend",{className:"pc-label",children:[t.label,s?jsx("small",{children:s.label}):null]}),jsx("div",{className:"pc-swatches",children:m.map(u=>jsxs("label",{className:"pc-choice",title:u.label,children:[jsx("input",{type:"radio",name:e,value:u.code,checked:u.code===t.value,onChange:()=>l(u.code)}),jsx("span",{className:"pc-swatch",style:{backgroundColor:u.material?.color,backgroundImage:u.material?.texture?`url("${u.material.texture}")`:void 0},children:jsx("span",{className:"pc-hidden",children:u.label})})]},u.code))})]})}return jsxs("fieldset",{className:"pc-field",children:[jsx("legend",{className:"pc-label",children:t.label}),jsx("div",{className:"pc-choices",children:m.map(s=>jsxs("label",{className:"pc-choice",children:[jsx("input",{type:"radio",name:e,value:s.code,checked:s.code===t.value,onChange:()=>l(s.code)}),jsxs("span",{children:[s.label,jsx("small",{children:Ae(s,o,a)})]})]},s.code))})]})}function Ae(n,e,t){return n.priceCents===null?e.optionOnRequest:n.priceCents>0?`${e.surchargePrefix} ${t(n.priceCents)}`:""}function De(n){let{quote:e,labels:t,money:o}=n,a,l=null;return e?e.state==="open"||e.totalCents===null?a=t.priceOnRequest:e.state==="partial"?(a=`${t.priceFrom} ${o(e.totalCents)}`,l=`${t.priceInPartOnRequest}, ${t.priceIncludingTax}`):(a=o(e.totalCents),l=t.priceIncludingTax):a=t.priceUnavailable,jsxs("div",{className:"pc-price","aria-live":"polite","data-quote-state":e?.state??"none",children:[jsx("span",{className:"pc-price-heading",children:t.priceHeading}),jsx("span",{className:"pc-price-total",children:a}),l?jsx("span",{className:"pc-price-note",children:l}):null]})}function ve(n){let{geometry:e,slots:t={},labels:o=G,className:a}=n,l=Be(e),m=Math.max(l.width,l.height)/42,s=[...e.parts].sort((c,p)=>c.at[2]+c.size[2]-(p.at[2]+p.size[2])),u=c=>l.top-c;return jsxs("div",{className:["pc-sketch","pc-scope",a].filter(Boolean).join(" "),children:[jsx(U,{}),jsxs("svg",{role:"img","aria-label":o.sketchTitle,viewBox:`${l.left} 0 ${l.width} ${l.height}`,preserveAspectRatio:"xMidYMid meet",children:[jsx("title",{children:o.sketchTitle}),s.map(c=>jsx(Fe,{part:c,slot:t[c.slot],y:u},c.key)),e.dimensions.map(c=>jsx(ze,{dimension:c,unit:o.unitMm,fontSize:m,y:u},c.id))]})]})}function Fe(n){let{part:e,slot:t,y:o}=n,[a,l]=e.size,m$1=e.at[0],s=o(e.at[1]+l),u=t?m(t):null,c={className:"pc-sketch-part",fill:t?.color??X,fillOpacity:u?.transparent?.35:1,"data-part":e.key};if(e.type==="niche_panel"){let f=b$1(e),v=o(e.at[1]+f.y+f.height),d=`M${m$1} ${s}h${a}v${l}h${-a}Z`,y=f.width>0&&f.height>0?`M${m$1+f.x} ${v}h${f.width}v${f.height}h${-f.width}Z`:"";return jsx("path",{...c,d:d+y,fillRule:"evenodd"})}let p=e.type==="stadium_prism"?Math.min(a,l)/2:0;return jsx("rect",{...c,x:m$1,y:s,width:a,height:l,rx:p,ry:p})}function ze(n){let{dimension:e,unit:t,fontSize:o,y:a}=n,l=o*.5,m=`${e.label?`${e.label} `:""}${Ue(e.length)} ${t}`,s=Math.min(e.from,e.to),u=Math.max(e.from,e.to);if(e.axis==="x"){let f=a(e.at);return jsxs("g",{"data-dimension":e.id,children:[jsx("path",{className:"pc-sketch-line",d:`M${s} ${f}H${u}M${s} ${f-l}v${l*2}M${u} ${f-l}v${l*2}`}),jsx("text",{className:"pc-sketch-text",x:(s+u)/2,y:f-l*1.4,fontSize:o,children:m})]})}let c=e.at,p=a((s+u)/2);return jsxs("g",{"data-dimension":e.id,children:[jsx("path",{className:"pc-sketch-line",d:`M${c} ${a(s)}V${a(u)}M${c-l} ${a(s)}h${l*2}M${c-l} ${a(u)}h${l*2}`}),jsx("text",{className:"pc-sketch-text",x:c-l*1.4,y:p,fontSize:o,transform:`rotate(-90 ${c-l*1.4} ${p})`,children:m})]})}function Ue(n){return String(Math.round(n*10)/10)}function Be(n){let e=1/0,t=-1/0,o=1/0,a=-1/0,l=(s,u,c,p)=>{e=Math.min(e,s),t=Math.max(t,u),o=Math.min(o,c),a=Math.max(a,p);};for(let s of n.parts)l(s.at[0],s.at[0]+s.size[0],s.at[1],s.at[1]+s.size[1]);for(let s of n.dimensions){let u=Math.min(s.from,s.to),c=Math.max(s.from,s.to);s.axis==="x"?l(u,c,s.at,s.at):l(s.at,s.at,u,c);}if(!Number.isFinite(e))return {left:0,top:1e3,width:1e3,height:1e3};let m=Math.max(t-e,a-o)*.08;return {left:e-m,top:a+m,width:t-e+m*2,height:a-o+m*2}}var Q;function xe(){if(Q!==void 0)return Q;try{let n=document.createElement("canvas");Q=!!(n.getContext("webgl2")??n.getContext("webgl"));}catch{Q=false;}return Q}function Ce(n){let{children:e,placeholder:t=null,minHeight:o=280,rootMargin:a="200px",className:l}=n,m=useRef(null),[s,u]=useState(false);return useEffect(()=>{let c=m.current;if(s||!c)return;if(typeof IntersectionObserver>"u"){u(true);return}let p=new IntersectionObserver(f=>{f.some(v=>v.isIntersecting)&&(u(true),p.disconnect());},{rootMargin:a});return p.observe(c),()=>p.disconnect()},[s,a]),jsx("div",{ref:m,className:l,style:s?void 0:{minHeight:o},children:s?e:t})}var Ye=lazy(()=>import('./configurator-scene-7YLXPMUZ.js').then(n=>({default:n.ConfiguratorScene}))),Je=()=>()=>{},Xe={values:{}};function te(n$1){let{structure:e,value:t,tax:o,initialSelection:a,onChange:l,locale:m,currency:s,interactive:u=true,className:c}=n$1,p=useMemo(()=>({...G,...n$1.labels}),[n$1.labels]),f=i=>K({structure:e,value:t,selection:i}).configuration.selection,[v,d]=useState(()=>f(a??Xe)),y=useSyncExternalStore(Je,xe,()=>null),x=useMemo(()=>V({structure:e,value:t,selection:v,tax:o}),[e,t,v,o]),{configuration:k}=x,M=x.ok?x.quote:null,r=useMemo(()=>ge(e.geometry,k.inputs,me(k)),[e.geometry,k]),g=i=>{let b=f(i),h=V({structure:e,value:t,selection:b,tax:o});d(b),l?.(b,h.ok?h.quote:null);},w=r.ok?jsx(ve,{geometry:r.geometry,slots:k.slots,labels:p}):jsx("p",{className:"pc-scene-note",children:p.sketchUnavailable});return jsxs("div",{className:["pc-root","pc-scope",c].filter(Boolean).join(" "),children:[jsx(U,{}),jsxs("div",{className:"pc-visual",children:[y&&r.ok?jsx(Ce,{className:"pc-scene",placeholder:jsx("p",{className:"pc-scene-note",children:p.sceneLoading}),children:jsx(n,{fallback:null,children:jsx(Suspense,{fallback:jsx("p",{className:"pc-scene-note",children:p.sceneLoading}),children:jsx("div",{role:"region","aria-label":p.sceneLabel,style:{position:"absolute",inset:0},children:jsx(Ye,{geometry:r.geometry,slots:k.slots,camera:e.geometry.camera,lighting:e.scene?.lighting,edges:e.scene?.edges,cameraLabels:p,interactive:u})})})})}):null,w]}),jsx(ye,{structure:e,configuration:k,quote:M,onSelectionChange:g,labels:p,locale:m,currency:s,disabled:!u})]})}var et=e.number().int().min(0).max(1e8),Z=et.nullable(),Se=e.strictObject({basePriceCents:Z,numbers:e.record(f,e.strictObject({min:e.number().finite(),max:e.number().finite(),default:e.number().finite()})).default({}),choices:e.record(f,e.strictObject({options:e.record(g,e.strictObject({priceCents:Z})),default:g.optional()})).default({}),materials:e.record(f,e.strictObject({offered:e.array(g).max(b.materials),default:g.optional()})).default({}),toggles:e.record(f,e.strictObject({offered:e.boolean(),default:e.boolean()})).default({}),priceGroups:e.record(g,Z).default({}),amounts:e.record(f,Z).default({}),presets:e.array(e.strictObject({code:g,label:e.string().trim().min(1).max(80),productId:e.string().uuid().nullable(),values:e.record(f,e.number().finite())})).max(b.presets).default([])});var q=class extends Error{constructor(t,o){super(o);this.reason=t;this.name="ConfiguratorFieldError";}};function rt(n,e){let t=n.fields[e];if(t==null)throw new q("missing",`The product has no public configurator under "${e}". Make the field public in the object builder.`);if(typeof t=="object"&&"configurator"in t&&!("structure"in t))throw new q("listing",`"${e}" is the listing's flag. Fetch the product itself (getProduct) to draw its configurator.`);let o=t,a=k.safeParse(o.structure),l=Se.safeParse(o.value),m=o.tax;if(!a.success||!l.success||typeof o.structureHash!="string"||typeof o.valueHash!="string"||typeof m?.taxPercentage!="number"||typeof m.pricesIncludeTax!="boolean")throw new q("invalid",`"${e}" does not read as a configurator. Update @solumflow-app/product-configurator.`);return {structure:a.data,value:l.data,tax:{taxPercentage:m.taxPercentage,pricesIncludeTax:m.pricesIncludeTax},structureHash:o.structureHash,valueHash:o.valueHash}}function Re(n,e,t,o){return {attribute:n,selection:t,structureHash:e,expected:{state:o.state,totalCents:o.totalCents}}}var ot="Aanvragen";function dn(n){let{product:e,attribute:t,onChange:o,onSubmit:a}=n,l=useMemo(()=>rt(e,t),[e,t]),[m,s]=useState(()=>{let c=n.initialSelection??{values:{}},p=V({structure:l.structure,value:l.value,selection:c,tax:l.tax});return {selection:p.configuration.selection,quote:p.ok?p.quote:null}}),u=m.quote?Re(t,l.structureHash,m.selection,m.quote):null;return jsxs("div",{className:n.className,children:[jsx(te,{structure:l.structure,value:l.value,tax:l.tax,initialSelection:n.initialSelection,labels:n.labels,locale:n.locale,currency:n.currency,onChange:(c,p)=>{s({selection:c,quote:p}),o?.({selection:c,quote:p,payload:p?Re(t,l.structureHash,c,p):null});}}),a?jsx("button",{type:"button",className:"pc-submit",disabled:u===null,onClick:()=>{u&&a(u);},children:n.submitLabel??ot}):null]})}export{q as ConfiguratorFieldError,G as DEFAULT_CONFIGURATOR_LABELS,dn as ProductConfigurator,rt as readConfigurator,Re as toConfigurationPayload};
|
|
58
|
+
`;function U(){return jsx("style",{href:"product-configurator",precedence:"default",children:Te})}function be(n,e,t){let o=n%100===0;return new Intl.NumberFormat(e,{style:"currency",currency:t,minimumFractionDigits:o?0:2,maximumFractionDigits:o?0:2}).format(n/100)}function he(n,e){let{min:t,max:o,step:r}=e,l=s=>Math.round(s*1e6)/1e6,m=Math.round(n/r)*r;return m<t&&(m=Math.ceil(t/r)*r),m>o&&(m=Math.floor(o/r)*r),l(Math.min(o,Math.max(t,m)))}function ve(n){let{structure:e,configuration:t,quote:o,onSelectionChange:r,locale:l="nl-NL",currency:m="EUR",disabled:s=false,className:u}=n,c={...G,...n.labels},p=useId(),f=useRef({}),v=e.presets&&t.presets.length>0?e.presets.tab:null,d=e.tabs.filter(i=>i.key===v||t.parameters.some(b=>b.tab===i.key&&ye(b))),[y,x]=useState(d[0]?.key),S=d.find(i=>i.key===y)??d[0],M=i=>be(i,l,m),a=(i,b)=>{r?.({...t.selection,values:{...t.selection.values,[i]:b}});},g=i=>{let{preset:b,...h}=t.selection;r?.(i===""?h:{...h,preset:i});},N=(i,b)=>{let h=i.key==="ArrowRight"?1:i.key==="ArrowLeft"?-1:0,I=d.length-1,A=i.key==="Home"?0:i.key==="End"?I:(b+h+d.length)%d.length;if(h===0&&i.key!=="Home"&&i.key!=="End")return;i.preventDefault();let L=d[A];L&&(x(L.key),f.current[L.key]?.focus());};return jsxs("div",{className:["pc-panel","pc-scope",u].filter(Boolean).join(" "),children:[jsx(U,{}),d.length>1?jsx("div",{role:"tablist","aria-label":c.tabsLabel,className:"pc-tabs",children:d.map((i,b)=>jsx("button",{ref:h=>{f.current[i.key]=h;},type:"button",role:"tab",id:`${p}-tab-${i.key}`,"aria-selected":i.key===S?.key,"aria-controls":`${p}-panel-${i.key}`,tabIndex:i.key===S?.key?0:-1,className:"pc-tab",onClick:()=>x(i.key),onKeyDown:h=>N(h,b),children:i.label},i.key))}):null,S?jsxs("fieldset",{role:d.length>1?"tabpanel":void 0,id:`${p}-panel-${S.key}`,"aria-labelledby":d.length>1?`${p}-tab-${S.key}`:void 0,className:"pc-fields",disabled:s,children:[e.presets&&v===S.key?jsxs("div",{className:"pc-field",children:[jsx("label",{className:"pc-label",htmlFor:`${p}-preset`,children:e.presets.label}),jsxs("select",{id:`${p}-preset`,className:"pc-control",value:t.preset?.code??"",onChange:i=>g(i.target.value),children:[e.presets.required?null:jsx("option",{value:"",children:c.presetNone}),t.presets.map(i=>jsx("option",{value:i.code,children:i.label},i.code))]})]}):null,t.parameters.filter(i=>ye(i)&&i.tab===S.key).map(i=>Ce(i)?jsx(ze,{id:`${p}-${i.key}`,parameter:i,labels:c,money:M,onChange:b=>a(i.key,b)},i.key):jsx(Fe,{parameter:i,labels:c,money:M},i.key))]}):null,jsx(Ue,{quote:o,labels:c,money:M})]})}function ze(n){let{id:e,parameter:t,labels:o,money:r,onChange:l}=n;if(t.kind==="number"){let s={min:t.min??0,max:t.max??0,step:t.step??1},u=t.value,c=t.unit==="count"?o.unitCount:o.unitMm,p=f=>{Number.isFinite(f)&&l(he(f,s));};return jsxs("div",{className:"pc-field",children:[jsxs("label",{className:"pc-label",htmlFor:`${e}-range`,children:[t.label,jsxs("small",{children:[u," ",c]})]}),jsxs("div",{className:"pc-number",children:[jsx("input",{id:`${e}-range`,className:"pc-control",type:"range",min:s.min,max:s.max,step:s.step,value:u,disabled:t.fixed,onChange:f=>p(f.target.valueAsNumber)}),jsxs("span",{children:[jsx("label",{className:"pc-hidden",htmlFor:`${e}-number`,children:`${t.label} (${c})`}),jsx("input",{id:`${e}-number`,className:"pc-control",type:"number",inputMode:"numeric",min:s.min,max:s.max,step:s.step,defaultValue:u,readOnly:t.fixed,onBlur:f=>p(f.target.valueAsNumber),onKeyDown:f=>{f.key==="Enter"&&p(f.currentTarget.valueAsNumber);}},u)]})]})]})}if(t.kind==="toggle")return jsx("div",{className:"pc-field",children:jsxs("label",{className:"pc-switch",htmlFor:e,children:[jsx("input",{id:e,type:"checkbox",checked:t.value===true,onChange:s=>l(s.target.checked)}),jsx("span",{className:"pc-label",children:t.label})]})});let m=t.options??[];if(t.kind==="material"){let s=m.find(u=>u.code===t.value);return jsxs("fieldset",{className:"pc-field",children:[jsxs("legend",{className:"pc-label",children:[t.label,s?jsx("small",{children:s.label}):null]}),jsx("div",{className:"pc-swatches",children:m.map(u=>jsxs("label",{className:"pc-choice",title:u.label,children:[jsx("input",{type:"radio",name:e,value:u.code,checked:u.code===t.value,onChange:()=>l(u.code)}),jsx("span",{className:"pc-swatch",style:{backgroundColor:u.material?.color,backgroundImage:u.material?.texture?`url("${u.material.texture}")`:void 0},children:jsx("span",{className:"pc-hidden",children:u.label})})]},u.code))})]})}return jsxs("fieldset",{className:"pc-field",children:[jsx("legend",{className:"pc-label",children:t.label}),jsx("div",{className:"pc-choices",children:m.map(s=>jsxs("label",{className:"pc-choice",children:[jsx("input",{type:"radio",name:e,value:s.code,checked:s.code===t.value,onChange:()=>l(s.code)}),jsxs("span",{children:[s.label,jsx("small",{children:xe(s,o,r)})]})]},s.code))})]})}function Fe(n){let{parameter:e,labels:t,money:o}=n,r=e.options?.[0];return r?jsx("div",{className:"pc-field","data-pinned":e.key,children:jsxs("span",{className:"pc-label",children:[e.label,jsxs("small",{children:[r.label," \xB7 ",xe(r,t,o)]})]})}):null}function xe(n,e,t){return n.priceCents===null?e.optionOnRequest:n.priceCents>0?`${e.surchargePrefix} ${t(n.priceCents)}`:""}function Ue(n){let{quote:e,labels:t,money:o}=n,r,l=null;return e?e.state==="open"||e.totalCents===null?r=t.priceOnRequest:e.state==="partial"?(r=`${t.priceFrom} ${o(e.totalCents)}`,l=`${t.priceInPartOnRequest}, ${t.priceIncludingTax}`):(r=o(e.totalCents),l=t.priceIncludingTax):r=t.priceUnavailable,jsxs("div",{className:"pc-price","aria-live":"polite","data-quote-state":e?.state??"none",children:[jsx("span",{className:"pc-price-heading",children:t.priceHeading}),jsx("span",{className:"pc-price-total",children:r}),l?jsx("span",{className:"pc-price-note",children:l}):null]})}function Ce(n){return n.visible&&!n.settled}function ye(n){if(Ce(n))return true;let e=n.options??[],t=e.length===1?e[0]:void 0;return n.visible&&t!==void 0&&(t.priceCents===null||t.priceCents>0)}function ke(n){let{geometry:e,slots:t={},labels:o=G,className:r}=n,l=qe(e),m=Math.max(l.width,l.height)/42,s=[...e.parts].sort((c,p)=>c.at[2]+c.size[2]-(p.at[2]+p.size[2])),u=c=>l.top-c;return jsxs("div",{className:["pc-sketch","pc-scope",r].filter(Boolean).join(" "),children:[jsx(U,{}),jsxs("svg",{role:"img","aria-label":o.sketchTitle,viewBox:`${l.left} 0 ${l.width} ${l.height}`,preserveAspectRatio:"xMidYMid meet",children:[jsx("title",{children:o.sketchTitle}),s.map(c=>jsx(Be,{part:c,slot:t[c.slot],y:u},c.key)),e.dimensions.map(c=>jsx(Ve,{dimension:c,unit:o.unitMm,fontSize:m,y:u},c.id))]})]})}function Be(n$1){let{part:e,slot:t,y:o}=n$1,[r,l]=e.size,m=e.at[0],s=o(e.at[1]+l),u=t?n(t):null,c={className:"pc-sketch-part",fill:t?.color??X,fillOpacity:u?.transparent?.35:1,"data-part":e.key};if(e.type==="niche_panel"){let f=b$1(e),v=o(e.at[1]+f.y+f.height),d=`M${m} ${s}h${r}v${l}h${-r}Z`,y=f.width>0&&f.height>0?`M${m+f.x} ${v}h${f.width}v${f.height}h${-f.width}Z`:"";return jsx("path",{...c,d:d+y,fillRule:"evenodd"})}let p=e.type==="stadium_prism"?Math.min(r,l)/2:0;return jsx("rect",{...c,x:m,y:s,width:r,height:l,rx:p,ry:p})}function Ve(n){let{dimension:e,unit:t,fontSize:o,y:r}=n,l=o*.5,m=`${e.label?`${e.label} `:""}${Qe(e.length)} ${t}`,s=Math.min(e.from,e.to),u=Math.max(e.from,e.to);if(e.axis==="x"){let f=r(e.at);return jsxs("g",{"data-dimension":e.id,children:[jsx("path",{className:"pc-sketch-line",d:`M${s} ${f}H${u}M${s} ${f-l}v${l*2}M${u} ${f-l}v${l*2}`}),jsx("text",{className:"pc-sketch-text",x:(s+u)/2,y:f-l*1.4,fontSize:o,children:m})]})}let c=e.at,p=r((s+u)/2);return jsxs("g",{"data-dimension":e.id,children:[jsx("path",{className:"pc-sketch-line",d:`M${c} ${r(s)}V${r(u)}M${c-l} ${r(s)}h${l*2}M${c-l} ${r(u)}h${l*2}`}),jsx("text",{className:"pc-sketch-text",x:c-l*1.4,y:p,fontSize:o,transform:`rotate(-90 ${c-l*1.4} ${p})`,children:m})]})}function Qe(n){return String(Math.round(n*10)/10)}function qe(n){let e=1/0,t=-1/0,o=1/0,r=-1/0,l=(s,u,c,p)=>{e=Math.min(e,s),t=Math.max(t,u),o=Math.min(o,c),r=Math.max(r,p);};for(let s of n.parts)l(s.at[0],s.at[0]+s.size[0],s.at[1],s.at[1]+s.size[1]);for(let s of n.dimensions){let u=Math.min(s.from,s.to),c=Math.max(s.from,s.to);s.axis==="x"?l(u,c,s.at,s.at):l(s.at,s.at,u,c);}if(!Number.isFinite(e))return {left:0,top:1e3,width:1e3,height:1e3};let m=Math.max(t-e,r-o)*.08;return {left:e-m,top:r+m,width:t-e+m*2,height:r-o+m*2}}var Q;function Se(){if(Q!==void 0)return Q;try{let n=document.createElement("canvas");Q=!!(n.getContext("webgl2")??n.getContext("webgl"));}catch{Q=false;}return Q}function Re(n){let{children:e,placeholder:t=null,minHeight:o=280,rootMargin:r="200px",className:l}=n,m=useRef(null),[s,u]=useState(false);return useEffect(()=>{let c=m.current;if(s||!c)return;if(typeof IntersectionObserver>"u"){u(true);return}let p=new IntersectionObserver(f=>{f.some(v=>v.isIntersecting)&&(u(true),p.disconnect());},{rootMargin:r});return p.observe(c),()=>p.disconnect()},[s,r]),jsx("div",{ref:m,className:l,style:s?void 0:{minHeight:o},children:s?e:t})}var et=lazy(()=>import('./configurator-scene-3ABIR55G.js').then(n=>({default:n.ConfiguratorScene}))),tt=()=>()=>{},nt={values:{}};function te(n){let{structure:e,value:t,tax:o$1,initialSelection:r,onChange:l,locale:m,currency:s,interactive:u=true,className:c}=n,p=useMemo(()=>({...G,...n.labels}),[n.labels]),f=i=>W({structure:e,value:t,selection:i}).configuration.selection,[v,d]=useState(()=>f(r??nt)),y=useSyncExternalStore(tt,Se,()=>null),x=useMemo(()=>V({structure:e,value:t,selection:v,tax:o$1}),[e,t,v,o$1]),{configuration:S}=x,M=x.ok?x.quote:null,a=useMemo(()=>ge(e.geometry,S.inputs,me(S)),[e.geometry,S]),g=i=>{let b=f(i),h=V({structure:e,value:t,selection:b,tax:o$1});d(b),l?.(b,h.ok?h.quote:null);},N=a.ok?jsx(ke,{geometry:a.geometry,slots:S.slots,labels:p}):jsx("p",{className:"pc-scene-note",children:p.sketchUnavailable});return jsxs("div",{className:["pc-root","pc-scope",c].filter(Boolean).join(" "),children:[jsx(U,{}),jsxs("div",{className:"pc-visual",children:[y&&a.ok?jsx(Re,{className:"pc-scene",placeholder:jsx("p",{className:"pc-scene-note",children:p.sceneLoading}),children:jsx(o,{fallback:null,children:jsx(Suspense,{fallback:jsx("p",{className:"pc-scene-note",children:p.sceneLoading}),children:jsx("div",{role:"region","aria-label":p.sceneLabel,style:{position:"absolute",inset:0},children:jsx(et,{geometry:a.geometry,slots:S.slots,camera:e.geometry.camera,lighting:e.scene?.lighting,edges:e.scene?.edges,cameraLabels:p,interactive:u})})})})}):null,N]}),jsx(ve,{structure:e,configuration:S,quote:M,onSelectionChange:g,labels:p,locale:m,currency:s,disabled:!u})]})}var rt=e.number().int().min(0).max(1e8),Y=rt.nullable(),Ne=e.strictObject({basePriceCents:Y,numbers:e.record(f,e.strictObject({min:e.number().finite(),max:e.number().finite(),default:e.number().finite()})).default({}),choices:e.record(f,e.strictObject({options:e.record(g,e.strictObject({priceCents:Y})),default:g.optional()})).default({}),materials:e.record(f,e.strictObject({offered:e.array(g).max(b.materials),default:g.optional()})).default({}),toggles:e.record(f,e.strictObject({offered:e.boolean(),default:e.boolean()})).default({}),priceGroups:e.record(g,Y).default({}),amounts:e.record(f,Y).default({}),presets:e.array(e.strictObject({code:g,label:e.string().trim().min(1).max(80),productId:e.string().uuid().nullable(),values:e.record(f,e.number().finite())})).max(b.presets).default([])});var q=class extends Error{constructor(t,o){super(o);this.reason=t;this.name="ConfiguratorFieldError";}};function it(n,e){let t=n.fields[e];if(t==null)throw new q("missing",`The product has no public configurator under "${e}". Make the field public in the object builder.`);if(typeof t=="object"&&"configurator"in t&&!("structure"in t))throw new q("listing",`"${e}" is the listing's flag. Fetch the product itself (getProduct) to draw its configurator.`);let o=t,r=k.safeParse(o.structure),l=Ne.safeParse(o.value),m=o.tax;if(!r.success||!l.success||typeof o.structureHash!="string"||typeof o.valueHash!="string"||typeof m?.taxPercentage!="number"||typeof m.pricesIncludeTax!="boolean")throw new q("invalid",`"${e}" does not read as a configurator. Update @solumflow-app/product-configurator.`);return {structure:r.data,value:l.data,tax:{taxPercentage:m.taxPercentage,pricesIncludeTax:m.pricesIncludeTax},structureHash:o.structureHash,valueHash:o.valueHash}}function Pe(n,e,t,o){return {attribute:n,selection:t,structureHash:e,expected:{state:o.state,totalCents:o.totalCents}}}var st="Aanvragen";function bn(n){let{product:e,attribute:t,onChange:o,onSubmit:r}=n,l=useMemo(()=>it(e,t),[e,t]),[m,s]=useState(()=>{let c=n.initialSelection??{values:{}},p=V({structure:l.structure,value:l.value,selection:c,tax:l.tax});return {selection:p.configuration.selection,quote:p.ok?p.quote:null}}),u=m.quote?Pe(t,l.structureHash,m.selection,m.quote):null;return jsxs("div",{className:n.className,children:[jsx(te,{structure:l.structure,value:l.value,tax:l.tax,initialSelection:n.initialSelection,labels:n.labels,locale:n.locale,currency:n.currency,onChange:(c,p)=>{s({selection:c,quote:p}),o?.({selection:c,quote:p,payload:p?Pe(t,l.structureHash,c,p):null});}}),r?jsx("button",{type:"button",className:"pc-submit",disabled:u===null,onClick:()=>{u&&r(u);},children:n.submitLabel??st}):null]})}export{q as ConfiguratorFieldError,G as DEFAULT_CONFIGURATOR_LABELS,bn as ProductConfigurator,it as readConfigurator,Pe as toConfigurationPayload};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solumflow-app/product-configurator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Show a product's 3D configurator on your own website and send what a visitor put together back as a request or an order.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {n,j as j$1,m}from'./chunk-36VGJWE6.js';import {f,e,c,a}from'./chunk-QLPSL2DY.js';import'./chunk-RNTBO6KY.js';import {lazy,useState,useRef,useLayoutEffect,Suspense,useMemo,useEffect}from'react';import {ContactShadows,OrbitControls}from'@react-three/drei';import {Canvas,useThree,useFrame}from'@react-three/fiber';import*as v from'three';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {RoomEnvironment}from'three/examples/jsm/environments/RoomEnvironment.js';function j(r){let{handle:e,labels:t}=r,o=(n,a,i,c)=>jsx("button",{type:"button",className:"pc-camera-button",style:{gridArea:c},"aria-label":n,title:n,"data-test":`configurator-camera-${c}`,onClick:()=>{e.current&&i(e.current);},children:jsx("span",{"aria-hidden":"true",children:a})});return jsxs("div",{className:"pc-camera",role:"group","aria-label":t.cameraControls,children:[jsxs("div",{className:"pc-camera-pad",children:[o(t.cameraUp,"\u2191",n=>n.pan(0,1),"up"),o(t.cameraLeft,"\u2190",n=>n.pan(-1,0),"left"),o(t.cameraReset,"\u27F2",n=>n.reset(),"reset"),o(t.cameraRight,"\u2192",n=>n.pan(1,0),"right"),o(t.cameraDown,"\u2193",n=>n.pan(0,-1),"down")]}),jsxs("div",{className:"pc-camera-zoom",children:[o(t.cameraZoomIn,"+",n=>n.zoom(1),"in"),o(t.cameraZoomOut,"\u2212",n=>n.zoom(-1),"out")]})]})}function B(r,e){let o={ArrowLeft:()=>e.pan(-1,0),ArrowRight:()=>e.pan(1,0),ArrowUp:()=>e.pan(0,1),ArrowDown:()=>e.pan(0,-1),"+":()=>e.zoom(1),"=":()=>e.zoom(1),"-":()=>e.zoom(-1),0:()=>e.reset()}[r];return o?.(),o!==void 0}var O=35,ie=1.5,R=Math.PI/180;function x(r){let{bounds:e,azimuth:t=0,elevation:o=10,aspect:n=ie}=r,a$1=g=>(e.min[g]+e.max[g])/2*a,i=g=>(e.max[g]-e.min[g])*a,c=[a$1(0),a$1(1),a$1(2)],s=Math.max(Math.hypot(i(0),i(1),i(2))/2,.1),f=O*R/2,l=Math.atan(Math.tan(f)*n),m=s/Math.sin(Math.min(f,l)),h=[c[0]+m*Math.sin(t*R)*Math.cos(o*R),c[1]+m*Math.sin(o*R),c[2]+m*Math.cos(t*R)*Math.cos(o*R)];return {target:c,position:h,radius:s,distance:m}}function z(r,e){return [0,1,2].map(t=>{let o=e.min[t]*a,n=e.max[t]*a,a$1=(n-o)/4;return Math.min(Math.max(r[t],o-a$1),n+a$1)})}function U(r){let{before:e,turning:t,camera:o,middle:n,radius:a,bounds:i}=r,c=a/e.radius,s=z(n.map((l,m)=>l+(t[m]-e.middle[m])*c),i),f=s.map((l,m)=>l+(o[m]-t[m])*c);return {target:s,position:f}}function K(r){let{geometry:e,camera:t,interactive:o,handle:n}=r,{camera:a,invalidate:i,size:c}=useThree(),s=useRef(null),f=useRef(null),l=x({bounds:e.bounds,azimuth:t?.azimuth,elevation:t?.elevation}),[m,h,g]=l.target,{radius:E}=l;useLayoutEffect(()=>{let d=[m,h,g],u=f.current,p=s.current;if(u){let S=U({before:u,turning:p?p.target.toArray():u.middle,camera:a.position.toArray(),middle:d,radius:E,bounds:e.bounds});a.position.set(...S.position),p?.target.set(...S.target);}else p?.target.set(...d);p?.update(),a.lookAt(p?.target??new v.Vector3(...d)),f.current={middle:d,radius:E},i();},[m,h,g,E,a,i]);let b=d=>{let u=s.current;if(!u)return;let p=new v.Vector3(...z(d.toArray(),e.bounds));a.position.add(p.clone().sub(u.target)),u.target.copy(p),u.update(),i();};return useLayoutEffect(()=>(n.current={pan:(d,u)=>{let p=s.current;if(!p)return;a.updateMatrixWorld();let S=E*.15,ae=new v.Vector3().setFromMatrixColumn(a.matrixWorld,0).multiplyScalar(d*S).add(new v.Vector3().setFromMatrixColumn(a.matrixWorld,1).multiplyScalar(u*S));b(p.target.clone().add(ae));},zoom:d=>{let u=s.current;if(!u)return;let p=a.position.clone().sub(u.target),S=Math.min(Math.max(p.length()*(d>0?.8:1.25),E*.8),E*8);a.position.copy(u.target).add(p.setLength(S)),u.update(),i();},reset:()=>{let d=s.current,u=x({bounds:e.bounds,azimuth:t?.azimuth,elevation:t?.elevation,aspect:c.height>0?c.width/c.height:void 0});a.position.set(...u.position),d?.target.set(...u.target),d?.update(),i();}},()=>{n.current=null;})),jsx(OrbitControls,{ref:s,makeDefault:true,enabled:o,enablePan:true,screenSpacePanning:true,minDistance:E*.8,maxDistance:E*8,maxPolarAngle:Math.PI/2+.05,onChange:()=>{let d=s.current;if(!d)return;z(d.target.toArray(),e.bounds).some((p,S)=>p!==d.target.getComponent(S))&&b(d.target.clone());}})}var Z={studio:{exposure:1.3,environmentIntensity:.6,key:{color:"#ffffff",intensity:2.6,position:[3,5,4]},shadowOpacity:.5},warm:{exposure:1.4,environmentIntensity:.75,key:{color:"#ffd8b0",intensity:1.7,position:[2.5,4,4]},shadowOpacity:.55},daylight:{exposure:1.6,environmentIntensity:1.15,key:{color:"#eef3ff",intensity:1.8,position:[4,6,3]},shadowOpacity:.4}};function J(r){return j$1.includes(r)?Z[r]:Z.studio}function q(r){let e=useThree(a=>a.invalidate),t=JSON.stringify(Object.entries(r).map(([a,i])=>[a,m(i)])),o=useMemo(()=>JSON.parse(t),[t]),n=useMemo(()=>Object.fromEntries(o.map(([a,i])=>[a,le(i)])),[o]);return useEffect(()=>{let a=new v.TextureLoader;a.setCrossOrigin("anonymous");let i=false,c=[];for(let[s,f]of o){let l=n[s];if(l)for(let m of de(f))a.load(m.url,h=>{if(i){h.dispose();return}h.colorSpace=m.colorSpace,h.wrapS=v.RepeatWrapping,h.wrapT=v.RepeatWrapping;let g=1e3/f.textureSize;h.repeat.set(g,g),m.apply(l,h),l.needsUpdate=true,c.push(h),e();},void 0,()=>{});}return ()=>{i=true;for(let s of c)s.dispose();}},[o,n,e]),useEffect(()=>()=>{for(let a of Object.values(n))a.dispose();},[n]),n}function le(r){let e=new v.MeshStandardMaterial({color:r.color,roughness:r.roughness,metalness:r.metalness});return r.emissive&&(e.emissive.set(r.color),e.emissiveIntensity=1,e.toneMapped=false),r.transparent&&(e.transparent=true,e.opacity=r.opacity,e.depthWrite=false),e}function de(r){let e=[];return r.texture&&e.push({url:r.texture,colorSpace:v.SRGBColorSpace,apply:(t,o)=>{t.map=o,t.color.set("#ffffff");}}),r.normalMap&&e.push({url:r.normalMap,colorSpace:v.NoColorSpace,apply:(t,o)=>{t.normalMap=o,t.normalScale.set(r.normalScale,r.normalScale);}}),r.roughnessMap&&e.push({url:r.roughnessMap,colorSpace:v.NoColorSpace,apply:(t,o)=>{t.roughnessMap=o;}}),e}function Y(r){let{intensity:e}=r,t=useThree(o=>o.get);return useEffect(()=>{let{gl:o,scene:n,invalidate:a}=t(),i=new v.PMREMGenerator(o),c=new RoomEnvironment,s=i.fromScene(c,.04);return c.dispose(),i.dispose(),n.environment=s.texture,a(),()=>{n.environment===s.texture&&(n.environment=null),s.dispose();}},[t]),useEffect(()=>{let{scene:o,invalidate:n}=t();o.environmentIntensity=e,n();},[t,e]),null}function ee(r){let{exposure:e}=r,t=useThree(o=>o.get);return useEffect(()=>{let{gl:o,invalidate:n}=t();o.toneMapping=v.AgXToneMapping,o.toneMappingExposure=e,o.outputColorSpace=v.SRGBColorSpace,n();},[t,e]),null}var Re=lazy(()=>import('./model-part-CGYO323N.js')),Ce=.05,Me=1e-4;function it(r){let{geometry:e,slots:t,camera:o,interactive:n=true,className:a}=r,i=J(r.lighting),c=useState(()=>x({bounds:e.bounds,azimuth:o?.azimuth,elevation:o?.elevation}))[0],s=e.bounds.min[1]/1e3-.001,f=useRef(null),l=n&&r.cameraLabels;return jsxs("div",{className:a,style:{position:"relative",width:"100%",height:"100%"},onContextMenu:m=>m.preventDefault(),tabIndex:l?0:void 0,onKeyDown:m=>{l&&f.current&&B(m.key,f.current)&&m.preventDefault();},children:[jsxs(Canvas,{frameloop:"demand",dpr:[1,2],camera:{fov:O,position:c.position,near:.05,far:100},gl:{antialias:true,alpha:true},shadows:"soft",children:[jsx(ee,{exposure:i.exposure}),jsx(Y,{intensity:i.environmentIntensity}),jsx(xe,{position:i.key.position,color:i.key.color,intensity:i.key.intensity,target:c.target,radius:c.radius}),jsx(Te,{parts:e.parts,slots:t,edges:r.edges}),jsx(ContactShadows,{position:[c.target[0],s,c.target[2]],opacity:i.shadowOpacity,scale:Math.max(c.radius*4,2),resolution:1024,blur:2,far:1.5}),jsx(K,{geometry:e,camera:o,interactive:n,handle:f})]}),l?jsx(j,{handle:f,labels:l}):null]})}function xe(r){let{target:e,radius:t}=r,o=useRef(null),n=useThree(i=>i.invalidate),a=Math.max(t*1.5,1);return useLayoutEffect(()=>{let i=o.current;if(!i)return;let c=new v.Vector3(...r.position).normalize();i.position.set(...e).add(c.multiplyScalar(a*2)),i.target.position.set(...e),i.target.updateMatrixWorld();let s=i.shadow.camera;s.left=-a,s.right=a,s.top=a,s.bottom=-a,s.near=.1,s.far=a*4,s.updateProjectionMatrix(),i.shadow.needsUpdate=true,n();},[r.position,e,a,n]),jsx("directionalLight",{ref:o,color:r.color,intensity:r.intensity,castShadow:true,"shadow-mapSize":[2048,2048],"shadow-bias":-8e-4,"shadow-normalBias":.04,"shadow-radius":4})}function Te(r){let e=q(r.slots);return jsx(Fragment,{children:r.parts.map(t=>{let o=e[t.slot];if(!o)return null;if(t.type!=="model"||!t.model)return jsx(te,{part:t,material:o,edges:r.edges},t.key);let n$1=jsx(te,{part:t,material:o});return jsx(n,{fallback:n$1,children:jsx(Suspense,{fallback:n$1,children:jsx(Re,{part:{...t,model:t.model},material:o})})},`${t.key}:${t.model}`)})})}function te(r){let{part:e$1,material:t,edges:o}=r,n=useRef(null),a=useRef(false),i=useRef(e$1.size),c$1=useThree(g=>g.invalidate),[s,f$1,l]=f(e$1),m=JSON.stringify(e$1.params),h=useMemo(()=>e(e$1,o),[e$1.type,e$1.size[0],e$1.size[1],e$1.size[2],m,o]);return useEffect(()=>()=>h.dispose(),[h]),useLayoutEffect(()=>{let g=n.current;if(g){if(!a.current)g.position.set(s,f$1,l),a.current=true;else {let E=i.current,b=g.scale;b.set(b.x*k(E[0],e$1.size[0]),b.y*k(E[1],e$1.size[1]),b.z*k(E[2],e$1.size[2]));}i.current=e$1.size,c$1();}},[h,e$1.size,s,f$1,l,c$1]),useFrame((g,E)=>{let b=n.current;if(!b)return;let d=1-Math.exp(-E/Ce),u=new v.Vector3(s,f$1,l),p=new v.Vector3(1,1,1),S=Math.max(b.position.distanceTo(u),b.scale.distanceTo(p));if(S<Me){S>0&&(b.position.copy(u),b.scale.copy(p));return}b.position.lerp(u,d),b.scale.lerp(p,d),c$1();}),jsx("mesh",{ref:n,geometry:h,material:t,castShadow:c(t),receiveShadow:true})}function k(r,e){return r>0&&e>0?r/e:1}export{it as ConfiguratorScene};
|