1var zv=Object.defineProperty;var Bv=(e,t,r)=>t in e?zv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Rn=(e,t,r)=>Bv(e,typeof t!="symbol"?t+"":t,r);import{r as u,j as n,c as Fv,g as $v,N as Oc,u as Go,S as Bs,t as M,a as bg,_ as Va,b as ye,P as vg,d as Kv,e as Er,C as Yo,I as Ze,f as Ng,L as Me,h as Gn,D as En,i as Pn,k as Tn,l as Dn,T as ks,m as ze,n as Xn,B as ee,o as gi,E as go,p as Dm,q as Rm,s as Mm,v as mi,w as tc,x as or,y as fr,A as Lc,z as zc,F as Bc,G as bt,H as _t,J as It,K as Et,M as Pt,O as ft,Q as Vv,R as qv,U as Xf,V as jg,W as Uv,X as Jo,Y as Wv,Z as Hv,$ as Yn,a0 as Jn,a1 as jt,a2 as Ve,a3 as Qn,a4 as De,a5 as rs,a6 as Zv,a7 as Gv,a8 as kg,a9 as Ir,aa as Ii,ab as xi,ac as Po,ad as qa,ae as xo,af as Ad,ag as Cd,ah as Yv,ai as Jv,aj as Ei,ak as Pi,al as ar,am as ir,an as Qo,ao as Qv,ap as Xv,aq as ep,ar as ua,as as da,at as ma,au as fa,av as pa,aw as ha,ax as ga,ay as xa,az as ya,aA as ka,aB as eN,aC as tp,aD as To,aE as wg,aF as Sg,aG as tN,aH as Xo,aI as Ag,aJ as Om,aK as nN,aL as Fc,aM as $c,aN as Ks,aO as Kc,aP as Do,aQ as nc,aR as rc,aS as vs,aT as yo,aU as rN,aV as sN,aW as Cg,aX as lr,aY as el,aZ as _g,a_ as aN,a$ as _d,b0 as iN,b1 as oN,b2 as Lm,b3 as Ig,b4 as lN,b5 as cN,b6 as Eg,b7 as Vc,b8 as Pg,b9 as uN,ba as dN,bb as mN,bc as fN,bd as pN,be as hN,bf as gN,bg as Tu,bh as Tg,bi as xN,bj as qc,bk as yN,bl as bN,bm as zm,bn as Id,bo as vN,bp as NN,bq as Lr,br as mo,bs as Dg,bt as Rg,bu as Du,bv as Mg,bw as jN,bx as Og,by as kN,bz as wN,bA as SN,bB as np,bC as AN,bD as Bm,bE as
1Lg,bF as CN,bG as _N,bH as IN,bI as EN,bJ as PN,bK as TN}from"./booking-system-Ddm0laVC.js";class zg extends Error{constructor(r,s,a){super(s);Rn(this,"status");Rn(this,"detail");this.name="AuthError",this.status=r,this.detail=a}}function DN(e){if(e)return e.map(t=>({tenantId:t.tenant_id,tenantName:t.tenant_name??"",role:t.role}))}function rp(e){return{requiresTenantSelection:!!e.requires_tenant_selection,token:e.token??void 0,loginTicket:e.login_ticket??void 0,tenants:DN(e.tenants),role:e.role??void 0,appRoles:e.app_roles??{},email:e.email??void 0,userId:e.user_id??void 0,displayName:e.display_name??void 0,tenantId:e.tenant_id??void 0,tenantName:e.tenant_name??void 0,tenantLogoUrl:e.tenant_logo_url??void 0,enabledApps:e.enabled_apps??[],expiresAt:e.expires_at??void 0}}function RN(e={}){const t=e.baseUrl??"",r=e.prefix??"/api/v1/auth",s=o=>`${t}${r}${o}`;async function a(o,l){let d=l,m;try{const p=await o.json();m=p==null?void 0:p.detail,d=p.detail||p.message||p.error||l}catch{const p=await o.text().catch(()=>"");p&&(d=p)}throw new zg(o.status,d,m)}async function i(o,l,d){let m;try{m=await fetch(s(o),{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},mode:"cors",body:JSON.stringify(l)})}catch(p){throw p instanceof TypeError&&p.message.includes("Failed to fetch")?new Error("Verbindung zum Server fehlgeschlagen. Bitte Internetverbindung prüfen."):p}return m.ok||await a(m,d),await m.json()}return{async login(o,l,d={}){const m=await i("/login",{email:o.toLowerCase().trim(),password:l,app:d.app,tenantId:d.tenantId},"Login fehlgeschlagen");return rp(m)},async selectTenant(o,l,d={}){const m=await i("/select-tenant",{loginTicket:o,tenantId:l,app:d.app},"Mandantenauswahl fehlgeschlagen");return rp(m)},async session(o){const l=await fetch(s("/session"),{method:"GET",headers:{Authorization:`Bearer ${o}`,Accept:"application/json"},mode:"cors"});l.ok||await a(l,"Sitzung konnte nicht geladen werden");const d=await l.json();return{userId:d.user_id??void 0,email:d.email??void 0,displayName:d.display_name??void 0,role:d.role??void 0,appRoles:d.app_roles??{},tenantId:d.tenant_id??void 0,tenantName:d.tenant_name??void 0,tenantLogoUrl:d.tenant_logo_url??void 0,enabledApps:d.enabled_apps??[],isSuperAdmin:!!d.is_superadmin}},async publicConfig(){const o=await fetch(s("/config/public"),{method:"GET",headers:{Accept:"application/json"},mode:"cors"});o.ok||await a(o,"Konfiguration konnte nicht geladen werden");const l=await o.json();return{appName:l.app_name??"Lia-One",loginMode:l.login_mode??"staff",availableApps:l.available_apps??[]}}}}const MN=u.createContext(null);function CR({enabledApps:e,children:t}){const r=u.useMemo(()=>{const s=new Set(e);return{enabledApps:e,isEnabled:a=>s.has(a)}},[e]);return n.jsx(MN.Provider,{value:r,children:t})}const Fm="auth_token",Bg="userSession";function _R(){const e=localStorage.getItem(Fm);if(!e)return null;try{return JSON.parse(e)}catch{return null}}function IR(e){return e.expiresAt!==void 0&&e.expiresAt<Date.now()}function ER(e){localStorage.setItem(Fm,JSON.stringify(e)),localStorage.setItem(Bg,JSON.stringify({role:e.role,email:e.email,token:e.token}))}function PR(){localStorage.removeItem(Fm),localStorage.removeItem(Bg)}const sp="lia:customer-updated";function ON(e){const t=e.detail;return!(t!=null&&t.customerId)||!t.profile?null:t}const TR="__inbox__",LN="https://kraftwerk-lia-one.fly.dev",zN="/api/v1/production";function BN(e,t){let r=((e==null?void 0:e.replace(/\/+$/,""))||t).trim();return(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'"))&&(r=r.slice(1,-1).trim()),/^http:\/\/[^/]+\.fly\.dev/i.test(r)&&(r=`https://${r.slice(7)}`),typeof window<"u"&&window.location.protocol==="https:"&&r.startsWith("http://")&&(r=`https://${r.slice(7)}`),r}function FN(){return BN("https://kraftwerk-lia-one.fly.dev",LN)}function $N(){return!1}function KN(){if(typeof window>"u")return!1;const{hostname:e}=window.location;return e!=="localhost"&&e!=="127.0.0.1"}function Ti(){return KN()||$N()?window.location.origin.replace(/\/+$/,""):FN()}function $m(){return`${Ti()}${zN}`}const Km="artikelstamm_auth",Fg="lia_last_tenant_id",VN="lia:production-auth-sync",ap=VN;let Ed=null;function DR(e){Ed=e}function qN(){try{return localStorage.getItem(Fg)}catch{return null}}function UN(e){try{localStorage.setItem(Fg,e)}catch{}}function Pd(){try{const e=localStorage.getItem(Km);if(!e)return null;const t=JSON.parse(e);return!(t!=null&&t.token)||!(t!=null&&t.tenantId)?null:t}catch{return null}}function ip(e){localStorage.setItem(Km,JSON.stringify(e))}function WN(){localStorage.removeItem(Km)}function Ga(){var e;if(Ed){const t=Ed();if(t)return t}return((e=Pd())==null?void 0:e.token)??null}function $g(e){if(!e)return!1;try{const t=e.split(".")[1];if(!t)return!1;const r=t.replace(/-/g,"+").replace(/_/g,"/");return!!JSON.parse(atob(r)).is_superadmin}catch{return!1}}
1class ut extends Error{constructor(r,s,a){super(s);Rn(this,"status");Rn(this,"detail");this.status=r,this.name="ApiError",this.detail=a}}const Kg=12e4;function HN(e,t){const r=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")?" â prüfe Vite-Proxy und Backend-URL":"";if(e instanceof DOMException&&e.name==="AbortError")return new ut(408,`Artikelstamm-API Zeitüberschreitung (${t/1e3}s)`);const s=e instanceof TypeError?`Artikelstamm-API nicht erreichbar${r}`:"Artikelstamm-API nicht erreichbar";return new ut(0,s,e)}async function Vg(e,t={},r=Kg){const s=new AbortController,a=window.setTimeout(()=>s.abort(),r);try{return await fetch(e,{...t,signal:s.signal})}catch(i){throw HN(i,r)}finally{window.clearTimeout(a)}}async function Ee(e,t={}){const{timeoutMs:r,...s}=t,a=Ga(),i=new Headers(t.headers);!i.has("Content-Type")&&t.body&&i.set("Content-Type","application/json"),a&&i.set("Authorization",`Bearer ${a}`);const o=await Vg(`${$m()}${e}`,{...s,headers:i},r??Kg);if(o.status===204)return;const l=await o.text();let d=null;if(l)try{d=JSON.parse(l)}catch{d=l}if(!o.ok){let m=null,p=o.statusText;if(typeof d=="object"&&d!==null&&"detail"in d){const h=d.detail;m=h,typeof h=="string"?p=h:Array.isArray(h)?p=h.map(x=>typeof x=="object"&&x!==null&&"msg"in x?String(x.msg):String(x)).join("; "):typeof h=="object"&&h!==null&&"message"in h?p=String(h.message):h!=null&&(p=String(h))}else typeof d=="string"&&d&&(p=d);throw new ut(o.status,p||"Request failed",m)}return d}async function ZN(e,t){const r=Ga(),s=new Headers;r&&s.set("Authorization",`Bearer ${r}`);const a=await Vg(`${$m()}${e}`,{method:"POST",body:t,headers:s});if(a.status===204)return;const i=await a.text();let o=null;if(i)try{o=JSON.parse(i)}catch{o=i}if(!a.ok){let l=null,d=a.statusText;if(typeof o=="object"&&o!==null&&"detail"in o){const m=o.detail;l=m,typeof m=="string"?d=m:Array.isArray(m)?d=m.map(p=>typeof p=="object"&&p!==null&&"msg"in p?String(p.msg):String(p)).join("; "):typeof m=="object"&&m!==null&&"message"in m?d=String(m.message):m!=null&&(d=String(m))}else typeof o=="string"&&o&&(d=o);throw new ut(a.status,d||"Request failed",l)}return o}const GN=[{path:"/auftraege",labelKey:"nav.orders",iconName:"ClipboardList",featureId:"procurement",section:"main"},{path:"/artikel",labelKey:"nav.workPreparation",iconName:"Package",featureId:"article-management",section:"main"},{path:"/maschinen",labelKey:"nav.machines",iconName:"Cpu",featureId:"module.manufacturing.access",section:"main"},{path:"/beschaffung",labelKey:"nav.procurement",iconName:"Truck",featureId:"procurement",section:"main"},{path:"/lieferanten",labelKey:"nav.suppliers",iconName:"Building2",featureId:"article-management",section:"main"},{path:"/fertigung",labelKey:"nav.production",iconName:"Factory",featureId:"module.manufacturing.access",section:"main"},{path:"/freigaben",labelKey:"nav.approvals",iconName:"ShieldCheck",featureId:"article-management",section:"approvals"},{path:"/schnittstellen",labelKey:"nav.integrations",iconName:"Plug",featureId:"data-interfaces",section:"integrations"},{path:"/einstellungen",labelKey:"nav.settings",iconName:"Settings2",featureId:"article-management",section:"settings"}],YN={items:GN},qg=YN.items,JN=qg.map(e=>e.path);function RR(e){const t=new Map(JN.map((r,s)=>[r,s]));return[...e].sort((r,s)=>{const a=t.get(r.path)??999,i=t.get(s.path)??999;return a-i})}function Uc(e){const t={"production-core":["/artikel","/lieferanten","/einstellungen","/freigaben"],"production-procurement":["/auftraege","/beschaffung"],"production-interfaces":["/schnittstellen"],manufacturing:["/maschinen","/fertigung"]},r=new Set(t[e]??[]);return qg.filter(s=>r.has(s.path)).map(({section:s,...a})=>a)}function MR(e){const t=[...e],r=[],s=[];for(const a of t){for(const i of a.systemPrompts)i.trim()&&s.push(i.trim());for(const i of a.tools)r.push({appName:a.appName,name:i.name,description:i.description})}return{tools:r,appCount:t.length,toolCount:r.length,systemPrompts:s,unavailableModules:[]}}async function OR(e,t,r,s){const a=QN(e,t);if(!a)throw new Error(`MCP provider not registered: ${t}`);const i=a.tools.find(l=>
1l.name===r);if(!i)throw new Error(`Tool "${r}" not found for app "${t}"`);const o=i.parameters.safeParse(s);if(!o.success)throw new Error(o.error.message);return a.executeTool(r,o.data)}function QN(e,t){const r=e.get(t);if(r)return r;const s=t.trim().toLowerCase();for(const[a,i]of e)if(a.trim().toLowerCase()===s)return i}const XN=Symbol("Let zodToJsonSchema decide on which parser to use"),op={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},ej=e=>typeof e=="string"?{...op,name:e}:{...op,...e},tj=e=>{const t=ej(e),r=t.name!==void 0?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:r,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([s,a])=>[a._def,{def:a._def,path:[...t.basePath,t.definitionPath,s],jsonSchema:void 0}]))}};function Ug(e,t,r,s){s!=null&&s.errorMessages&&r&&(e.errorMessage={...e.errorMessage,[t]:r})}function Sn(e,t,r,s,a){e[t]=r,Ug(e,t,s,a)}const Wg=(e,t)=>{let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];r++);return[(e.length-r).toString(),...t.slice(r)].join("/")};var pn;(function(e){e.assertEqual=a=>{};function t(a){}e.assertIs=t;function r(a){throw new Error}e.assertNever=r,e.arrayToEnum=a=>{const i={};for(const o of a)i[o]=o;return i},e.getValidEnumValues=a=>{const i=e.objectKeys(a).filter(l=>typeof a[a[l]]!="number"),o={};for(const l of i)o[l]=a[l];return e.objectValues(o)},e.objectValues=a=>e.objectKeys(a).map(function(i){return a[i]}),e.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const i=[];for(const o in a)Object.prototype.hasOwnProperty.call(a,o)&&i.push(o);return i},e.find=(a,i)=>{for(const o of a)if(i(o))return o},e.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function s(a,i=" | "){return a.map(o=>typeof o=="string"?`'${o}'`:o).join(i)}e.joinValues=s,e.jsonStringifyReplacer=(a,i)=>typeof i=="bigint"?i.toString():i})(pn||(pn={}));var lp;(function(e){e.mergeShapes=(t,r)=>({...t,...r})})(lp||(lp={}));const ht=pn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ta=e=>{switch(typeof e){case"undefined":return ht.undefined;case"string":return ht.string;case"number":return Number.isNaN(e)?ht.nan:ht.number;case"boolean":return ht.boolean;case"function":return ht.function;case"bigint":return ht.bigint;case"symbol":return ht.symbol;case"object":return Array.isArray(e)?ht.array:e===null?ht.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ht.promise:typeof Map<"u"&&e instanceof Map?ht.map:typeof Set<"u"&&e instanceof Set?ht.set:typeof Date<"u"&&e instanceof Date?ht.date:ht.object;default:return ht.unknown}}
vendor: 6,033 bytes, line 1
1,Qe=pn.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class Fs extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=t}format(t){const r=t||function(i){return i.message},s={_errors:[]},a=i=>{for(const o of i.issues)if(o.code==="invalid_union")o.unionErrors.map(a);else if(o.code==="invalid_return_type")a(o.returnTypeError);else if(o.code==="invalid_arguments")a(o.argumentsError);else if(o.path.length===0)s._errors.push(r(o));else{let l=s,d=0;for(;d<o.path.length;){const m=o.path[d];d===o.path.length-1?(l[m]=l[m]||{_errors:[]},l[m]._errors.push(r(o))):l[m]=l[m]||{_errors:[]},l=l[m],d++}}};return a(this),s}static assert(t){if(!(t instanceof Fs))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,pn.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=r=>r.message){const r={},s=[];for(const a of this.issues)if(a.path.length>0){const i=a.path[0];r[i]=r[i]||[],r[i].push(t(a))}else s.push(t(a));return{formErrors:s,fieldErrors:r}}get formErrors(){return this.flatten()}}Fs.create=e=>new Fs(e);const Td=(e,t)=>{let r;switch(e.code){case Qe.invalid_type:e.received===ht.undefined?r="Required":r=`Expected ${e.expected}, received ${e.received}`;break;case Qe.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,pn.jsonStringifyReplacer)}`;break;case Qe.unrecognized_keys:r=`Unrecognized key(s) in object: ${pn.joinValues(e.keys,", ")}`;break;case Qe.invalid_union:r="Invalid input";break;case Qe.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${pn.joinValues(e.options)}`;break;case Qe.invalid_enum_value:r=`Invalid enum value. Expected ${pn.joinValues(e.options)}, received '${e.received}'`;break;case Qe.invalid_arguments:r="Invalid function arguments";break;case Qe.invalid_return_type:r="Invalid function return type";break;case Qe.invalid_date:r="Invalid date";break;case Qe.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:pn.assertNever(e.validation):e.validation!=="regex"?r=`Invalid ${e.validation}`:r="Invalid";break;case Qe.too_small:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:r="Invalid input";break;case Qe.too_big:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?r=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:r="Invalid input";break;case Qe.custom:r="Invalid input";break;case Qe.invalid_intersection_types:r="Intersection results could not be merged";break;case Qe.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case Qe.not_finite:r="Number must be finite";break;default:r=t.defaultError,pn.assertNever(e)}return{message:r}};let nj=Td;function rj(){return nj}const sj=e=>{const{data:t,path:r,errorMaps:s,issueData:a}=e,i=[...r,...a.path||[]],o={...a,path:i};if(a.message!==void 0)return{...a,path:i,message:a.message};let l="";const d=s.filter(m=>!!m).slice().reverse();for(const m of d)l=m(o,{data:t,defaultError:l}).message;return{...a,path:i,message:l}};function ot(e,t){const r=rj(),s=sj({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===Td?void 0:Td].filter(a=>!!a)});e.common.issues.push(s)}class Gr{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,r){const s=[];for(const a of r){if(a.status==="aborted")return Ft;a.status==="dirty"&&t.dirty(),s.push(a.value)}return{status:t.value,value:s}}static async mergeObjectAsync(t,r){const s=[];for(const a of r){const i=await a.key,o=await a.value;s.push({key:i,value:o})}return Gr.mergeObjectSync(t,s)}static mergeObjectSync(t,r){const s={};for(const a of r){const{key:i,value:o}=a;if(i.status==="aborted"||o.status==="aborted")return Ft;i.status==="dirty"&&t.dirty(),o.status==="dirty"&&t.dirty(),i.value!=="__proto__"&&(typeof o.value<"u"||a.alwaysSet)&&(s[i.value]=o.value)}return{status:t.value,value:s}}}const Ft=Object.freeze({status:"aborted"}),fo=e=>({status:"dirty",value:e}),is=e=>
vendor: 16,526 bytes, line 1
1({status:"valid",value:e}),cp=e=>e.status==="aborted",up=e=>e.status==="dirty",yi=e=>e.status==="valid",sc=e=>typeof Promise<"u"&&e instanceof Promise;var xt;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(xt||(xt={}));class ba{constructor(t,r,s,a){this._cachedPath=[],this.parent=t,this.data=r,this._path=s,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const dp=(e,t)=>{if(yi(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const r=new Fs(e.common.issues);return this._error=r,this._error}}};function Jt(e){if(!e)return{};const{errorMap:t,invalid_type_error:r,required_error:s,description:a}=e;if(t&&(r||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:a}:{errorMap:(o,l)=>{const{message:d}=e;return o.code==="invalid_enum_value"?{message:d??l.defaultError}:typeof l.data>"u"?{message:d??s??l.defaultError}:o.code!=="invalid_type"?{message:l.defaultError}:{message:d??r??l.defaultError}},description:a}}class dn{get description(){return this._def.description}_getType(t){return ta(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:ta(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Gr,ctx:{common:t.parent.common,data:t.data,parsedType:ta(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const r=this._parse(t);if(sc(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(t){const r=this._parse(t);return Promise.resolve(r)}parse(t,r){const s=this.safeParse(t,r);if(s.success)return s.data;throw s.error}safeParse(t,r){const s={common:{issues:[],async:(r==null?void 0:r.async)??!1,contextualErrorMap:r==null?void 0:r.errorMap},path:(r==null?void 0:r.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ta(t)},a=this._parseSync({data:t,path:s.path,parent:s});return dp(s,a)}"~validate"(t){var s,a;const r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ta(t)};if(!this["~standard"].async)try{const i=this._parseSync({data:t,path:[],parent:r});return yi(i)?{value:i.value}:{issues:r.common.issues}}catch(i){(a=(s=i==null?void 0:i.message)==null?void 0:s.toLowerCase())!=null&&a.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:r}).then(i=>yi(i)?{value:i.value}:{issues:r.common.issues})}async parseAsync(t,r){const s=await this.safeParseAsync(t,r);if(s.success)return s.data;throw s.error}async safeParseAsync(t,r){const s={common:{issues:[],contextualErrorMap:r==null?void 0:r.errorMap,async:!0},path:(r==null?void 0:r.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ta(t)},a=this._parse({data:t,path:s.path,parent:s}),i=await(sc(a)?a:Promise.resolve(a));return dp(s,i)}refine(t,r){const s=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,i)=>{const o=t(a),l=()=>i.addIssue({code:Qe.custom,...s(a)});return typeof Promise<"u"&&o instanceof Promise?o.then(d=>d?!0:(l(),!1)):o?!0:(l(),!1)})}refinement(t,r){return this._refinement((s,a)=>t(s)?!0:(a.addIssue(typeof r=="function"?r(s,a):r),!1))}_refinement(t){return new Ni({schema:this,typeName:et.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return la.create(this,this._def)}nullable(){return ji.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return js.create(this)}promise(){return lc.create(this,this._def)}or(t){return ic.create([this,t],this._def)}and(t){return oc.create(this,t,this._def)}transform(t){return new Ni({...Jt(this._def),schema:this,typeName:et.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const r=typeof t=="function"?t:()=>t;return new Md({...Jt(this._def),innerType:this,defaultValue:r,typeName:et.ZodDefault})}brand(){return new Cj({typeName:et.ZodBranded,type:this,...Jt(this._def)})}catch(t){const r=typeof t=="function"?t:()=>t;return new Od({...Jt(this._def),innerType:this,catchValue:r,typeName:et.ZodCatch})}describe(t){const r=this.constructor;return new r({...this._def,description:t})}pipe(t){return Vm.create(this,t)}readonly(){return Ld.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const aj=/^c[^\s-]{8,}$/i,ij=/^[0-9a-z]+$/,oj=/^[0-9A-HJKMNP-TV-Z]{26}$/i,lj=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,cj=/^[a-z0-9_-]{21}$/i,uj=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,dj=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,mj=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,fj="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Ru;const pj=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,hj=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,gj=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,xj=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,yj=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,bj=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Hg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",vj=new RegExp(`^${Hg}$`);function Zg(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);const r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function Nj(e){return new RegExp(`^${Zg(e)}$`)}function jj(e){let t=`${Hg}T${Zg(e)}`;const r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,new RegExp(`^${t}$`)}function kj(e,t){return!!((t==="v4"||!t)&&pj.test(e)||(t==="v6"||!t)&&gj.test(e))}function wj(e,t){if(!uj.test(e))return!1;try{const[r]=e.split(".");if(!r)return!1;const s=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),a=JSON.parse(atob(s));return!(typeof a!="object"||a===null||"typ"in a&&(a==null?void 0:a.typ)!=="JWT"||!a.alg||t&&a.alg!==t)}catch{return!1}}function Sj(e,t){return!!((t==="v4"||!t)&&hj.test(e)||(t==="v6"||!t)&&xj.test(e))}class aa extends dn{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ht.string){const i=this._getOrReturnCtx(t);return ot(i,{code:Qe.invalid_type,expected:ht.string,received:i.parsedType}),Ft}const s=new Gr;let a;for(const i of this._def.checks)if(i.kind==="min")t.data.length<i.value&&(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),s.dirty());else if(i.kind==="max")t.data.length>i.value&&(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),s.dirty());else if(i.kind==="length"){const o=t.data.length>i.value,l=t.data.length<i.value;(o||l)&&(a=this._getOrReturnCtx(t,a),o?ot(a,{code:Qe.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):l&&ot(a,{code:Qe.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),s.dirty())}else if(i.kind==="email")mj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"email",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="emoji")Ru||(Ru=new RegExp(fj,"u")),Ru.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"emoji",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="uuid")lj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"uuid",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="nanoid")cj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"nanoid",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="cuid")aj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"cuid",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="cuid2")ij.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"cuid2",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="ulid")oj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"ulid",code:Qe.invalid_string,message:i.message}),s.dirty());else if(i.kind==="url")try{new URL(t.data)}catch{a=this._getOrReturnCtx(t,a),ot(a,{validation:"url",code:Qe.invalid_string,message:i.message}),s.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"regex",code:Qe.invalid_string,message:i.message}),s.dirty())):i.kind==="trim"?t.data=t.data.trim():i.kind==="includes"?t.data.includes(i.value,i.position)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),s.dirty()):i.kind==="toLowerCase"?t.data=t.data.toLowerCase():i.kind==="toUpperCase"?t.data=t.data.toUpperCase():i.kind==="startsWith"?t.data.startsWith(i.value)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:{startsWith:i.value},message:i.message}),s.dirty()):i.kind==="endsWith"?t.data.endsWith(i.value)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:{endsWith:i.value},message:i.message}),s.dirty()):i.kind==="datetime"?jj(i).test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:"datetime",message:i.message}),s.dirty()):i.kind==="date"?vj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:"date",message:i.message}),s.dirty()):i.kind==="time"?Nj(i).test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.invalid_string,validation:"time",message:i.message}),s.dirty()):i.kind==="duration"?dj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"duration",code:Qe.invalid_string,message:i.message}),s.dirty()):i.kind==="ip"?kj(t.data,i.version)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"ip",code:Qe.invalid_string,message:i.message}),s.dirty()):i.kind==="jwt"?wj(t.data,i.alg)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"jwt",code:Qe.invalid_string,message:i.message}),s.dirty()):i.kind==="cidr"?Sj(t.data,i.version)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"cidr",code:Qe.invalid_string,message:i.message}),s.dirty()):i.kind==="base64"?yj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"base64",code:Qe.invalid_string,message:i.message}),s.dirty()):i.kind==="base64url"?bj.test(t.data)||(a=this._getOrReturnCtx(t,a),ot(a,{validation:"base64url",code:Qe.invalid_string,message:i.message}),s.dirty()):pn.assertNever(i);return{status:s.value,value:t.data}}_regex(t,r,s){return this.refinement(a=>t.test(a),{validation:r,code:Qe.invalid_string,...xt.errToObj(s)})}_addCheck(t){return new aa({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...xt.errToObj(t)})}url(t){return this._addCheck({kind:"url",...xt.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...xt.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...xt.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...xt.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...xt.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...xt.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...xt.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...xt.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...xt.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...xt.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...xt.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...xt.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,offset:(t==null?void 0:t.offset)??!1,local:(t==null?void 0:t.local)??!1,...xt.errToObj(t==null?void 0:t.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,...xt.errToObj(t==null?void 0:t.message)})}duration(t){return this._addCheck({kind:"duration",...xt.errToObj(t)})}regex(t,r){return this._addCheck({kind:"regex",regex:t,...xt.errToObj(r)})}includes(t,r){return this._addCheck({kind:"includes",value:t,position:r==null?void 0:r.position,...xt.errToObj(r==null?void 0:r.message)})}startsWith(t,r){return this._addCheck({kind:"startsWith",value:t,...xt.errToObj(r)})}endsWith(t,r){return this._addCheck({kind:"endsWith",value:t,...xt.errToObj(r)})}min(t,r){return this._addCheck({kind:"min",value:t,...xt.errToObj(r)})}max(t,r){return this._addCheck({kind:"max",value:t,...xt.errToObj(r)})}length(t,r){return this._addCheck({kind:"length",value:t,...xt.errToObj(r)})}nonempty(t){return this.min(1,xt.errToObj(t))}trim(){return new aa({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new aa({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new aa({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}
vendor: 4,670 bytes, line 1
1get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(const r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxLength(){let t=null;for(const r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}}aa.create=e=>new aa({checks:[],typeName:et.ZodString,coerce:(e==null?void 0:e.coerce)??!1,...Jt(e)});function Aj(e,t){const r=(e.toString().split(".")[1]||"").length,s=(t.toString().split(".")[1]||"").length,a=r>s?r:s,i=Number.parseInt(e.toFixed(a).replace(".","")),o=Number.parseInt(t.toFixed(a).replace(".",""));return i%o/10**a}class bi extends dn{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==ht.number){const i=this._getOrReturnCtx(t);return ot(i,{code:Qe.invalid_type,expected:ht.number,received:i.parsedType}),Ft}let s;const a=new Gr;for(const i of this._def.checks)i.kind==="int"?pn.isInteger(t.data)||(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.invalid_type,expected:"integer",received:"float",message:i.message}),a.dirty()):i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="multipleOf"?Aj(t.data,i.value)!==0&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):i.kind==="finite"?Number.isFinite(t.data)||(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.not_finite,message:i.message}),a.dirty()):pn.assertNever(i);return{status:a.value,value:t.data}}gte(t,r){return this.setLimit("min",t,!0,xt.toString(r))}gt(t,r){return this.setLimit("min",t,!1,xt.toString(r))}lte(t,r){return this.setLimit("max",t,!0,xt.toString(r))}lt(t,r){return this.setLimit("max",t,!1,xt.toString(r))}setLimit(t,r,s,a){return new bi({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:s,message:xt.toString(a)}]})}_addCheck(t){return new bi({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:xt.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:xt.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:xt.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:xt.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:xt.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:xt.toString(r)})}finite(t){return this._addCheck({kind:"finite",message:xt.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:xt.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:xt.toString(t)})}get minValue(){let t=null;for(const r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(const r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&pn.isInteger(t.value))}get isFinite(){let t=null,r=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(r===null||s.value>r)&&(r=s.value):s.kind==="max"&&(t===null||s.value<t)&&(t=s.value)}return Number.isFinite(r)&&Number.isFinite(t)}
vendor: 7,695 bytes, line 1
1}bi.create=e=>new bi({checks:[],typeName:et.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...Jt(e)});class Ro extends dn{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==ht.bigint)return this._getInvalidInput(t);let s;const a=new Gr;for(const i of this._def.checks)i.kind==="min"?(i.inclusive?t.data<i.value:t.data<=i.value)&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?t.data>i.value:t.data>=i.value)&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="multipleOf"?t.data%i.value!==BigInt(0)&&(s=this._getOrReturnCtx(t,s),ot(s,{code:Qe.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):pn.assertNever(i);return{status:a.value,value:t.data}}_getInvalidInput(t){const r=this._getOrReturnCtx(t);return ot(r,{code:Qe.invalid_type,expected:ht.bigint,received:r.parsedType}),Ft}gte(t,r){return this.setLimit("min",t,!0,xt.toString(r))}gt(t,r){return this.setLimit("min",t,!1,xt.toString(r))}lte(t,r){return this.setLimit("max",t,!0,xt.toString(r))}lt(t,r){return this.setLimit("max",t,!1,xt.toString(r))}setLimit(t,r,s,a){return new Ro({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:s,message:xt.toString(a)}]})}_addCheck(t){return new Ro({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:xt.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:xt.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:xt.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:xt.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:xt.toString(r)})}get minValue(){let t=null;for(const r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(const r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}}Ro.create=e=>new Ro({checks:[],typeName:et.ZodBigInt,coerce:(e==null?void 0:e.coerce)??!1,...Jt(e)});class Dd extends dn{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ht.boolean){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.boolean,received:s.parsedType}),Ft}return is(t.data)}}Dd.create=e=>new Dd({typeName:et.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...Jt(e)});class ac extends dn{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ht.date){const i=this._getOrReturnCtx(t);return ot(i,{code:Qe.invalid_type,expected:ht.date,received:i.parsedType}),Ft}if(Number.isNaN(t.data.getTime())){const i=this._getOrReturnCtx(t);return ot(i,{code:Qe.invalid_date}),Ft}const s=new Gr;let a;for(const i of this._def.checks)i.kind==="min"?t.data.getTime()<i.value&&(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),s.dirty()):i.kind==="max"?t.data.getTime()>i.value&&(a=this._getOrReturnCtx(t,a),ot(a,{code:Qe.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),s.dirty()):pn.assertNever(i);return{status:s.value,value:new Date(t.data.getTime())}}_addCheck(t){return new ac({...this._def,checks:[...this._def.checks,t]})}min(t,r){return this._addCheck({kind:"min",value:t.getTime(),message:xt.toString(r)})}max(t,r){return this._addCheck({kind:"max",value:t.getTime(),message:xt.toString(r)})}get minDate(){let t=null;for(const r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t!=null?new Date(t):null}}ac.create=e=>new ac({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:et.ZodDate,...Jt(e)});class mp extends dn{_parse(t){if(this._getType(t)!==ht.symbol){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.symbol,received:s.parsedType}),Ft}return is(t.data)}}mp.create=e=>new mp({typeName:et.ZodSymbol,...Jt(e)});class fp extends dn{_parse(t){if(this._getType(t)!==ht.undefined){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.undefined,received:s.parsedType}),Ft}return is(t.data)}}fp.create=e=>new fp({typeName:et.ZodUndefined,...Jt(e)});class pp extends dn{_parse(t){if(this._getType(t)!==ht.null){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.null,received:s.parsedType}),Ft}return is(t.data)}}pp.create=e=>new pp({typeName:et.ZodNull,...Jt(e)});class hp extends dn{constructor(){super(...arguments),this._any=!0}_parse(t){return is(t.data)}}hp.create=e=>new hp({typeName:et.ZodAny,...Jt(e)});class gp extends dn{constructor(){super(...arguments),this._unknown=!0}_parse(t){return is(t.data)}}gp.create=e=>new gp({typeName:et.ZodUnknown,...Jt(e)});class va extends dn{_parse(t){const r=this._getOrReturnCtx(t);return ot(r,{code:Qe.invalid_type,expected:ht.never,received:r.parsedType}),Ft}}va.create=e=>new va({typeName:et.ZodNever,...Jt(e)});class xp extends dn{_parse(t){if(this._getType(t)!==ht.undefined){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.void,received:s.parsedType}),Ft}return is(t.data)}}xp.create=e=>new xp({typeName:et.ZodVoid,...Jt(e)});class js extends dn{_parse(t){const{ctx:r,status:s}=this._processInputParams(t),a=this._def;if(r.parsedType!==ht.array)return ot(r,{code:Qe.invalid_type,expected:ht.array,received:r.parsedType}),Ft;if(a.exactLength!==null){const o=r.data.length>a.exactLength.value,l=r.data.length<a.exactLength.value;(o||l)&&(ot(r,{code:o?Qe.too_big:Qe.too_small,minimum:l?a.exactLength.value:void 0,maximum:o?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),s.dirty())}if(a.minLength!==null&&r.data.length<a.minLength.value&&(ot(r,{code:Qe.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),s.dirty()),a.maxLength!==null&&r.data.length>a.maxLength.value&&(ot(r,{code:Qe.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),s.dirty()),r.common.async)return Promise.all([...r.data].map((o,l)=>a.type._parseAsync(new ba(r,o,r.path,l)))).then(o=>Gr.mergeArray(s,o));const i=[...r.data].map((o,l)=>a.type._parseSync(new ba(r,o,r.path,l)));return Gr.mergeArray(s,i)}get element(){return this._def.type}min(t,r){return new js({...this._def,minLength:{value:t,message:xt.toString(r)}})}max(t,r){return new js({...this._def,maxLength:{value:t,message:xt.toString(r)}})}length(t,r){return new js({...this._def,exactLength:{value:t,message:xt.toString(r)}})}nonempty(t){return this.min(1,t)}}js.create=(e,t)=>new js({type:e,minLength:null,maxLength:null,exactLength:null,typeName:et.ZodArray,...Jt(t)});function oi(e){if(e instanceof Zn){const t={};for(const r in e.shape){const s=e.shape[r];t[r]=la.create(oi(s))}return new Zn({...e._def,shape:()=>t})}else return e instanceof js?new js({...e._def,type:oi(e.element)}):e instanceof la?la.create(oi(e.unwrap())):e instanceof ji?ji.create(oi(e.unwrap())):e instanceof Ua?Ua.create(e.items.map(t=>oi(t))):e}class Zn extends dn{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;
vendor: 4,259 bytes, line 1
1const t=this._def.shape(),r=pn.objectKeys(t);return this._cached={shape:t,keys:r},this._cached}_parse(t){if(this._getType(t)!==ht.object){const m=this._getOrReturnCtx(t);return ot(m,{code:Qe.invalid_type,expected:ht.object,received:m.parsedType}),Ft}const{status:s,ctx:a}=this._processInputParams(t),{shape:i,keys:o}=this._getCached(),l=[];if(!(this._def.catchall instanceof va&&this._def.unknownKeys==="strip"))for(const m in a.data)o.includes(m)||l.push(m);const d=[];for(const m of o){const p=i[m],h=a.data[m];d.push({key:{status:"valid",value:m},value:p._parse(new ba(a,h,a.path,m)),alwaysSet:m in a.data})}if(this._def.catchall instanceof va){const m=this._def.unknownKeys;if(m==="passthrough")for(const p of l)d.push({key:{status:"valid",value:p},value:{status:"valid",value:a.data[p]}});else if(m==="strict")l.length>0&&(ot(a,{code:Qe.unrecognized_keys,keys:l}),s.dirty());else if(m!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const m=this._def.catchall;for(const p of l){const h=a.data[p];d.push({key:{status:"valid",value:p},value:m._parse(new ba(a,h,a.path,p)),alwaysSet:p in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const m=[];for(const p of d){const h=await p.key,x=await p.value;m.push({key:h,value:x,alwaysSet:p.alwaysSet})}return m}).then(m=>Gr.mergeObjectSync(s,m)):Gr.mergeObjectSync(s,d)}get shape(){return this._def.shape()}strict(t){return xt.errToObj,new Zn({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(r,s)=>{var i,o;const a=((o=(i=this._def).errorMap)==null?void 0:o.call(i,r,s).message)??s.defaultError;return r.code==="unrecognized_keys"?{message:xt.errToObj(t).message??a}:{message:a}}}:{}})}strip(){return new Zn({...this._def,unknownKeys:"strip"})}passthrough(){return new Zn({...this._def,unknownKeys:"passthrough"})}extend(t){return new Zn({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Zn({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:et.ZodObject})}setKey(t,r){return this.augment({[t]:r})}catchall(t){return new Zn({...this._def,catchall:t})}pick(t){const r={};for(const s of pn.objectKeys(t))t[s]&&this.shape[s]&&(r[s]=this.shape[s]);return new Zn({...this._def,shape:()=>r})}omit(t){const r={};for(const s of pn.objectKeys(this.shape))t[s]||(r[s]=this.shape[s]);return new Zn({...this._def,shape:()=>r})}deepPartial(){return oi(this)}partial(t){const r={};for(const s of pn.objectKeys(this.shape)){const a=this.shape[s];t&&!t[s]?r[s]=a:r[s]=a.optional()}return new Zn({...this._def,shape:()=>r})}required(t){const r={};for(const s of pn.objectKeys(this.shape))if(t&&!t[s])r[s]=this.shape[s];else{let i=this.shape[s];for(;i instanceof la;)i=i._def.innerType;r[s]=i}return new Zn({...this._def,shape:()=>r})}keyof(){return Gg(pn.objectKeys(this.shape))}}Zn.create=(e,t)=>new Zn({shape:()=>e,unknownKeys:"strip",catchall:va.create(),typeName:et.ZodObject,...Jt(t)});Zn.strictCreate=(e,t)=>new Zn({shape:()=>e,unknownKeys:"strict",catchall:va.create(),typeName:et.ZodObject,...Jt(t)});Zn.lazycreate=(e,t)=>new Zn({shape:e,unknownKeys:"strip",catchall:va.create(),typeName:et.ZodObject,...Jt(t)});class ic extends dn{_parse(t){const{ctx:r}=this._processInputParams(t),s=this._def.options;function a(i){for(const l of i)if(l.result.status==="valid")return l.result;for(const l of i)if(l.result.status==="dirty")return r.common.issues.push(...l.ctx.common.issues),l.result;const o=i.map(l=>new Fs(l.ctx.common.issues));return ot(r,{code:Qe.invalid_union,unionErrors:o}),Ft}if(r.common.async)return Promise.all(s.map(async i=>{const o={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(a);{let i;const o=[];for(const d of s){const m={...r,common:{...r.common,issues:[]},parent:null},p=d._parseSync({data:r.data,path:r.path,parent:m});if(p.status==="valid")return p;p.status==="dirty"&&!i&&(i={result:p,ctx:m}),m.common.issues.length&&o.push(m.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;const l=o.map(d=>new Fs(d));return ot(r,{code:Qe.invalid_union,unionErrors:l}),Ft}}get options(){return this._def.options}}ic.create=(e,t)=>
vendor: 2,616 bytes, line 1
1new ic({options:e,typeName:et.ZodUnion,...Jt(t)});function Rd(e,t){const r=ta(e),s=ta(t);if(e===t)return{valid:!0,data:e};if(r===ht.object&&s===ht.object){const a=pn.objectKeys(t),i=pn.objectKeys(e).filter(l=>a.indexOf(l)!==-1),o={...e,...t};for(const l of i){const d=Rd(e[l],t[l]);if(!d.valid)return{valid:!1};o[l]=d.data}return{valid:!0,data:o}}else if(r===ht.array&&s===ht.array){if(e.length!==t.length)return{valid:!1};const a=[];for(let i=0;i<e.length;i++){const o=e[i],l=t[i],d=Rd(o,l);if(!d.valid)return{valid:!1};a.push(d.data)}return{valid:!0,data:a}}else return r===ht.date&&s===ht.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class oc extends dn{_parse(t){const{status:r,ctx:s}=this._processInputParams(t),a=(i,o)=>{if(cp(i)||cp(o))return Ft;const l=Rd(i.value,o.value);return l.valid?((up(i)||up(o))&&r.dirty(),{status:r.value,value:l.data}):(ot(s,{code:Qe.invalid_intersection_types}),Ft)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([i,o])=>a(i,o)):a(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}oc.create=(e,t,r)=>new oc({left:e,right:t,typeName:et.ZodIntersection,...Jt(r)});class Ua extends dn{_parse(t){const{status:r,ctx:s}=this._processInputParams(t);if(s.parsedType!==ht.array)return ot(s,{code:Qe.invalid_type,expected:ht.array,received:s.parsedType}),Ft;if(s.data.length<this._def.items.length)return ot(s,{code:Qe.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ft;!this._def.rest&&s.data.length>this._def.items.length&&(ot(s,{code:Qe.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());const i=[...s.data].map((o,l)=>{const d=this._def.items[l]||this._def.rest;return d?d._parse(new ba(s,o,s.path,l)):null}).filter(o=>!!o);return s.common.async?Promise.all(i).then(o=>Gr.mergeArray(r,o)):Gr.mergeArray(r,i)}get items(){return this._def.items}rest(t){return new Ua({...this._def,rest:t})}}Ua.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ua({items:e,typeName:et.ZodTuple,rest:null,...Jt(t)})};class yp extends dn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:r,ctx:s}=this._processInputParams(t);if(s.parsedType!==ht.map)return ot(s,{code:Qe.invalid_type,expected:ht.map,received:s.parsedType}),Ft;const a=this._def.keyType,i=this._def.valueType,o=[...s.data.entries()].map(([l,d],m)=>
vendor: 4,178 bytes, line 1
1({key:a._parse(new ba(s,l,s.path,[m,"key"])),value:i._parse(new ba(s,d,s.path,[m,"value"]))}));if(s.common.async){const l=new Map;return Promise.resolve().then(async()=>{for(const d of o){const m=await d.key,p=await d.value;if(m.status==="aborted"||p.status==="aborted")return Ft;(m.status==="dirty"||p.status==="dirty")&&r.dirty(),l.set(m.value,p.value)}return{status:r.value,value:l}})}else{const l=new Map;for(const d of o){const m=d.key,p=d.value;if(m.status==="aborted"||p.status==="aborted")return Ft;(m.status==="dirty"||p.status==="dirty")&&r.dirty(),l.set(m.value,p.value)}return{status:r.value,value:l}}}}yp.create=(e,t,r)=>new yp({valueType:t,keyType:e,typeName:et.ZodMap,...Jt(r)});class Mo extends dn{_parse(t){const{status:r,ctx:s}=this._processInputParams(t);if(s.parsedType!==ht.set)return ot(s,{code:Qe.invalid_type,expected:ht.set,received:s.parsedType}),Ft;const a=this._def;a.minSize!==null&&s.data.size<a.minSize.value&&(ot(s,{code:Qe.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),r.dirty()),a.maxSize!==null&&s.data.size>a.maxSize.value&&(ot(s,{code:Qe.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());const i=this._def.valueType;function o(d){const m=new Set;for(const p of d){if(p.status==="aborted")return Ft;p.status==="dirty"&&r.dirty(),m.add(p.value)}return{status:r.value,value:m}}const l=[...s.data.values()].map((d,m)=>i._parse(new ba(s,d,s.path,m)));return s.common.async?Promise.all(l).then(d=>o(d)):o(l)}min(t,r){return new Mo({...this._def,minSize:{value:t,message:xt.toString(r)}})}max(t,r){return new Mo({...this._def,maxSize:{value:t,message:xt.toString(r)}})}size(t,r){return this.min(t,r).max(t,r)}nonempty(t){return this.min(1,t)}}Mo.create=(e,t)=>new Mo({valueType:e,minSize:null,maxSize:null,typeName:et.ZodSet,...Jt(t)});class bp extends dn{get schema(){return this._def.getter()}_parse(t){const{ctx:r}=this._processInputParams(t);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}bp.create=(e,t)=>new bp({getter:e,typeName:et.ZodLazy,...Jt(t)});class vp extends dn{_parse(t){if(t.data!==this._def.value){const r=this._getOrReturnCtx(t);return ot(r,{received:r.data,code:Qe.invalid_literal,expected:this._def.value}),Ft}return{status:"valid",value:t.data}}get value(){return this._def.value}}vp.create=(e,t)=>new vp({value:e,typeName:et.ZodLiteral,...Jt(t)});function Gg(e,t){return new vi({values:e,typeName:et.ZodEnum,...Jt(t)})}class vi extends dn{_parse(t){if(typeof t.data!="string"){const r=this._getOrReturnCtx(t),s=this._def.values;return ot(r,{expected:pn.joinValues(s),received:r.parsedType,code:Qe.invalid_type}),Ft}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){const r=this._getOrReturnCtx(t),s=this._def.values;return ot(r,{received:r.data,code:Qe.invalid_enum_value,options:s}),Ft}return is(t.data)}get options(){return this._def.values}get enum(){const t={};for(const r of this._def.values)t[r]=r;return t}get Values(){const t={};for(const r of this._def.values)t[r]=r;return t}get Enum(){const t={};for(const r of this._def.values)t[r]=r;return t}extract(t,r=this._def){return vi.create(t,{...this._def,...r})}exclude(t,r=this._def){return vi.create(this.options.filter(s=>!t.includes(s)),{...this._def,...r})}}vi.create=Gg;class Np extends dn{_parse(t){const r=pn.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(t);if(s.parsedType!==ht.string&&s.parsedType!==ht.number){const a=pn.objectValues(r);return ot(s,{expected:pn.joinValues(a),received:s.parsedType,code:Qe.invalid_type}),Ft}if(this._cache||(this._cache=new Set(pn.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const a=pn.objectValues(r);return ot(s,{received:s.data,code:Qe.invalid_enum_value,options:a}),Ft}return is(t.data)}get enum(){return this._def.values}}Np.create=(e,t)=>new Np({values:e,typeName:et.ZodNativeEnum,...Jt(t)});class lc extends dn{unwrap(){return this._def.type}_parse(t){const{ctx:r}=this._processInputParams(t);if(r.parsedType!==ht.promise&&r.common.async===!1)return ot(r,{code:Qe.invalid_type,expected:ht.promise,received:r.parsedType}),Ft;
vendor: 4,098 bytes, line 1
1const s=r.parsedType===ht.promise?r.data:Promise.resolve(r.data);return is(s.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}}lc.create=(e,t)=>new lc({type:e,typeName:et.ZodPromise,...Jt(t)});class Ni extends dn{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===et.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:r,ctx:s}=this._processInputParams(t),a=this._def.effect||null,i={addIssue:o=>{ot(s,o),o.fatal?r.abort():r.dirty()},get path(){return s.path}};if(i.addIssue=i.addIssue.bind(i),a.type==="preprocess"){const o=a.transform(s.data,i);if(s.common.async)return Promise.resolve(o).then(async l=>{if(r.value==="aborted")return Ft;const d=await this._def.schema._parseAsync({data:l,path:s.path,parent:s});return d.status==="aborted"?Ft:d.status==="dirty"||r.value==="dirty"?fo(d.value):d});{if(r.value==="aborted")return Ft;const l=this._def.schema._parseSync({data:o,path:s.path,parent:s});return l.status==="aborted"?Ft:l.status==="dirty"||r.value==="dirty"?fo(l.value):l}}if(a.type==="refinement"){const o=l=>{const d=a.refinement(l,i);if(s.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(s.common.async===!1){const l=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return l.status==="aborted"?Ft:(l.status==="dirty"&&r.dirty(),o(l.value),{status:r.value,value:l.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(l=>l.status==="aborted"?Ft:(l.status==="dirty"&&r.dirty(),o(l.value).then(()=>({status:r.value,value:l.value}))))}if(a.type==="transform")if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!yi(o))return Ft;const l=a.transform(o.value,i);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:l}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>yi(o)?Promise.resolve(a.transform(o.value,i)).then(l=>({status:r.value,value:l})):Ft);pn.assertNever(a)}}Ni.create=(e,t,r)=>new Ni({schema:e,typeName:et.ZodEffects,effect:t,...Jt(r)});Ni.createWithPreprocess=(e,t,r)=>new Ni({schema:t,effect:{type:"preprocess",transform:e},typeName:et.ZodEffects,...Jt(r)});class la extends dn{_parse(t){return this._getType(t)===ht.undefined?is(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}la.create=(e,t)=>new la({innerType:e,typeName:et.ZodOptional,...Jt(t)});class ji extends dn{_parse(t){return this._getType(t)===ht.null?is(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}ji.create=(e,t)=>new ji({innerType:e,typeName:et.ZodNullable,...Jt(t)});class Md extends dn{_parse(t){const{ctx:r}=this._processInputParams(t);let s=r.data;return r.parsedType===ht.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Md.create=(e,t)=>new Md({innerType:e,typeName:et.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Jt(t)});class Od extends dn{_parse(t){const{ctx:r}=this._processInputParams(t),s={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return sc(a)?a.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Fs(s.common.issues)},input:s.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Fs(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}Od.create=(e,t)=>new Od({innerType:e,typeName:et.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Jt(t)});class jp extends dn{_parse(t){if(this._getType(t)!==ht.nan){const s=this._getOrReturnCtx(t);return ot(s,{code:Qe.invalid_type,expected:ht.nan,received:s.parsedType}),Ft}
1return{status:"valid",value:t.data}}}jp.create=e=>new jp({typeName:et.ZodNaN,...Jt(e)});class Cj extends dn{_parse(t){const{ctx:r}=this._processInputParams(t),s=r.data;return this._def.type._parse({data:s,path:r.path,parent:r})}unwrap(){return this._def.type}}class Vm extends dn{_parse(t){const{status:r,ctx:s}=this._processInputParams(t);if(s.common.async)return(async()=>{const i=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?Ft:i.status==="dirty"?(r.dirty(),fo(i.value)):this._def.out._parseAsync({data:i.value,path:s.path,parent:s})})();{const a=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?Ft:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:s.path,parent:s})}}static create(t,r){return new Vm({in:t,out:r,typeName:et.ZodPipeline})}}class Ld extends dn{_parse(t){const r=this._def.innerType._parse(t),s=a=>(yi(a)&&(a.value=Object.freeze(a.value)),a);return sc(r)?r.then(a=>s(a)):s(r)}unwrap(){return this._def.innerType}}Ld.create=(e,t)=>new Ld({innerType:e,typeName:et.ZodReadonly,...Jt(t)});var et;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(et||(et={}));const kp=aa.create,LR=bi.create,zR=Dd.create;va.create;const BR=js.create,wp=Zn.create,FR=ic.create;oc.create;Ua.create;const $R=vi.create;lc.create;la.create;ji.create;function zr(e){if(e.target!=="openAi")return{};const t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:e.$refStrategy==="relative"?Wg(t,e.currentPath):t.join("/")}}function _j(e,t){var s,a,i;const r={type:"array"};return(s=e.type)!=null&&s._def&&((i=(a=e.type)==null?void 0:a._def)==null?void 0:i.typeName)!==et.ZodAny&&(r.items=bn(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&Sn(r,"minItems",e.minLength.value,e.minLength.message,t),e.maxLength&&Sn(r,"maxItems",e.maxLength.value,e.maxLength.message,t),e.exactLength&&(Sn(r,"minItems",e.exactLength.value,e.exactLength.message,t),Sn(r,"maxItems",e.exactLength.value,e.exactLength.message,t)),r}function Ij(e,t){const r={type:"integer",format:"int64"};if(!e.checks)return r;for(const s of e.checks)switch(s.kind){case"min":t.target==="jsonSchema7"?s.inclusive?Sn(r,"minimum",s.value,s.message,t):Sn(r,"exclusiveMinimum",s.value,s.message,t):(s.inclusive||(r.exclusiveMinimum=!0),Sn(r,"minimum",s.value,s.message,t));break;case"max":t.target==="jsonSchema7"?s.inclusive?Sn(r,"maximum",s.value,s.message,t):Sn(r,"exclusiveMaximum",s.value,s.message,t):(s.inclusive||(r.exclusiveMaximum=!0),Sn(r,"maximum",s.value,s.message,t));break;case"multipleOf":Sn(r,"multipleOf",s.value,s.message,t);break}return r}function Ej(){return{type:"boolean"}}function Yg(e,t){return bn(e.type._def,t)}const Pj=(e,t)=>bn(e.innerType._def,t);function Jg(e,t,r){const s=r??t.dateStrategy;if(Array.isArray(s))return{anyOf:s.map((a,i)=>Jg(e,t,a))};switch(s){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return Tj(e,t)}}const Tj=(e,t)=>{const r={type:"integer",format:"unix-time"};if(t.target==="openApi3")return r;for(const s of e.checks)switch(s.kind){case"min":Sn(r,"minimum",s.value,s.message,t);break;case"max":Sn(r,"maximum",s.value,s.message,t);break}return r};function Dj(e,t){return{...bn(e.innerType._def,t),default:e.defaultValue()}}function Rj(e,t){return t.effectStrategy==="input"?bn(e.schema._def,t):zr(t)}function Mj(e){return{type:"string",enum:Array.from(e.values)}}
1const Oj=e=>"type"in e&&e.type==="string"?!1:"allOf"in e;function Lj(e,t){const r=[bn(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),bn(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(i=>!!i);let s=t.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0;const a=[];return r.forEach(i=>{if(Oj(i))a.push(...i.allOf),i.unevaluatedProperties===void 0&&(s=void 0);else{let o=i;if("additionalProperties"in i&&i.additionalProperties===!1){const{additionalProperties:l,...d}=i;o=d}else s=void 0;a.push(o)}}),a.length?{allOf:a,...s}:void 0}function zj(e,t){const r=typeof e.value;return r!=="bigint"&&r!=="number"&&r!=="boolean"&&r!=="string"?{type:Array.isArray(e.value)?"array":"object"}:t.target==="openApi3"?{type:r==="bigint"?"integer":r,enum:[e.value]}:{type:r==="bigint"?"integer":r,const:e.value}}let Mu;const cs={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Mu===void 0&&(Mu=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Mu),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function Qg(e,t){const r={type:"string"};if(e.checks)for(const s of e.checks)switch(s.kind){case"min":Sn(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,s.value):s.value,s.message,t);break;case"max":Sn(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,s.value):s.value,s.message,t);break;case"email":switch(t.emailStrategy){case"format:email":us(r,"email",s.message,t);break;case"format:idn-email":us(r,"idn-email",s.message,t);break;case"pattern:zod":_r(r,cs.email,s.message,t);break}break;case"url":us(r,"uri",s.message,t);break;case"uuid":us(r,"uuid",s.message,t);break;case"regex":_r(r,s.regex,s.message,t);break;case"cuid":_r(r,cs.cuid,s.message,t);break;case"cuid2":_r(r,cs.cuid2,s.message,t);break;case"startsWith":_r(r,RegExp(`^${Ou(s.value,t)}`),s.message,t);break;case"endsWith":_r(r,RegExp(`${Ou(s.value,t)}$`),s.message,t);break;case"datetime":us(r,"date-time",s.message,t);break;case"date":us(r,"date",s.message,t);break;case"time":us(r,"time",s.message,t);break;case"duration":us(r,"duration",s.message,t);break;case"length":Sn(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,s.value):s.value,s.message,t),Sn(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,s.value):s.value,s.message,t);break;case"includes":{_r(r,RegExp(Ou(s.value,t)),s.message,t);break}case"ip":{s.version!=="v6"&&us(r,"ipv4",s.message,t),s.version!=="v4"&&us(r,"ipv6",s.message,t);break}case"base64url":_r(r,cs.base64url,s.message,t);break;case"jwt":_r(r,cs.jwt,s.message,t);break;case"cidr":{s.version!=="v6"&&_r(r,cs.ipv4Cidr,s.message,t),s.version!=="v4"&&_r(r,cs.ipv6Cidr,s.message,t);break}case"emoji":_r(r,cs.emoji(),s.message,t);break;case"ulid":{_r(r,cs.ulid,s.message,t);break}case"base64":{switch(t.base64Strategy){case"format:binary":{us(r,"binary",s.message,t);break}case"contentEncoding:base64":{Sn(r,"contentEncoding","base64",s.message,t);break}case"pattern:zod":{_r(r,cs.base64,s.message,t);break}}break}case"nanoid":_r(r,cs.nanoid,s.message,t)}return r}function Ou(e,t){return t.patternStrategy==="escape"?Fj(e):e}const Bj=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Fj(e){let t="";for(let r=0;r<e.length;r++)Bj.has(e[r])||(t+="\\"),t+=e[r];return t}function us(e,t,r,s){var a;
1e.format||(a=e.anyOf)!=null&&a.some(i=>i.format)?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&s.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.anyOf.push({format:t,...r&&s.errorMessages&&{errorMessage:{format:r}}})):Sn(e,"format",t,r,s)}function _r(e,t,r,s){var a;e.pattern||(a=e.allOf)!=null&&a.some(i=>i.pattern)?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&s.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.allOf.push({pattern:Sp(t,s),...r&&s.errorMessages&&{errorMessage:{pattern:r}}})):Sn(e,"pattern",Sp(t,s),r,s)}function Sp(e,t){var d;if(!t.applyRegexFlags||!e.flags)return e.source;const r={i:e.flags.includes("i"),m:e.flags.includes("m"),s:e.flags.includes("s")},s=r.i?e.source.toLowerCase():e.source;let a="",i=!1,o=!1,l=!1;for(let m=0;m<s.length;m++){if(i){a+=s[m],i=!1;continue}if(r.i){if(o){if(s[m].match(/[a-z]/)){l?(a+=s[m],a+=`${s[m-2]}-${s[m]}`.toUpperCase(),l=!1):s[m+1]==="-"&&((d=s[m+2])!=null&&d.match(/[a-z]/))?(a+=s[m],l=!0):a+=`${s[m]}${s[m].toUpperCase()}`;continue}}else if(s[m].match(/[a-z]/)){a+=`[${s[m]}${s[m].toUpperCase()}]`;continue}}if(r.m){if(s[m]==="^"){a+=`(^|(?<=[\r 2]))`;continue}else if(s[m]==="$"){a+=`($|(?=[\r 3]))`;continue}}if(r.s&&s[m]==="."){a+=o?`${s[m]}\r 4`:`[${s[m]}\r 5]`;continue}a+=s[m],s[m]==="\\"?i=!0:o&&s[m]==="]"?o=!1:!o&&s[m]==="["&&(o=!0)}try{new RegExp(a)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return a}function Xg(e,t){var s,a,i,o,l,d;if(t.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),t.target==="openApi3"&&((s=e.keyType)==null?void 0:s._def.typeName)===et.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((m,p)=>({...m,[p]:bn(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",p]})??zr(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};const r={type:"object",additionalProperties:bn(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if(t.target==="openApi3")return r;if(((a=e.keyType)==null?void 0:a._def.typeName)===et.ZodString&&((i=e.keyType._def.checks)!=null&&i.length)){const{type:m,...p}=Qg(e.keyType._def,t);return{...r,propertyNames:p}}else{if(((o=e.keyType)==null?void 0:o._def.typeName)===et.ZodEnum)return{...r,propertyNames:{enum:e.keyType._def.values}};if(((l=e.keyType)==null?void 0:l._def.typeName)===et.ZodBranded&&e.keyType._def.type._def.typeName===et.ZodString&&((d=e.keyType._def.type._def.checks)!=null&&d.length)){const{type:m,...p}=Yg(e.keyType._def,t);return{...r,propertyNames:p}}}return r}function $j(e,t){if(t.mapStrategy==="record")return Xg(e,t);const r=bn(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||zr(t),s=bn(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||zr(t);return{type:"array",maxItems:125,items:{type:"array",items:[r,s],minItems:2,maxItems:2}}}function Kj(e){const t=e.values,s=Object.keys(e.values).filter(i=>typeof t[t[i]]!="number").map(i=>t[i]),a=Array.from(new Set(s.map(i=>typeof i)));return{type:a.length===1?a[0]==="string"?"string":"number":["string","number"],enum:s}}function Vj(e){return e.target==="openAi"?void 0:{not:zr({...e,currentPath:[...e.currentPath,"not"]})}}function qj(e){return e.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}const cc={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Uj(e,t){if(t.target==="openApi3")return Ap(e,t);const r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(s=>s._def.typeName in cc&&(!s._def.checks||!s._def.checks.length))){const s=r.reduce((a,i)=>{const o=cc[i._def.typeName];return o&&!a.includes(o)?[...a,o]:a},[]);return{type:s.length>1?s:s[0]}}else if(r.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){const s=r.reduce((a,i)=>{const o=typeof i._def.value;switch(o){case"string":case"number":case"boolean":return[...a,o];case"bigint":return[...a,"integer"];case"object":if(i._def.value===null)return[...a,"null"];case"symbol":case"undefined":case"function":default:return a}},[]);if(s.length===r.length){const a=s.filter((i,o,l)=>l.indexOf(i)===o);return{type:a.length>1?a:a[0],enum:r.reduce((i,o)=>i.includes(o._def.value)?i:[...i,o._def.value],[])}}}else if(r.every(s=>s._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((s,a)=>[...s,...a._def.values.filter(i=>!s.includes(i))],[])};return Ap(e,t)}const Ap=(e,t)=>{const r=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((s,a)=>bn(s._def,{...t,currentPath:[...t.currentPath,"anyOf",`${a}`]})).filter(s=>!!s&&(!t.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return r.length?{anyOf:r}:void 0};function Wj(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target==="openApi3"?{type:cc[e.innerType._def.typeName],nullable:!0}:{type:[cc[e.innerType._def.typeName],"null"]};if(t.target==="openApi3"){const s=bn(e.innerType._def,{...t,currentPath:[...t.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:!0}:s&&{...s,nullable:!0}}const r=bn(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Hj(e,t){const r={type:"number"};if(!e.checks)return r;for(const s of e.checks)switch(s.kind){case"int":r.type="integer",Ug(r,"type",s.message,t);break;case"min":t.target==="jsonSchema7"?s.inclusive?Sn(r,"minimum",s.value,s.message,t):Sn(r,"exclusiveMinimum",s.value,s.message,t):(s.inclusive||(r.exclusiveMinimum=!0),Sn(r,"minimum",s.value,s.message,t));break;case"max":t.target==="jsonSchema7"?s.inclusive?Sn(r,"maximum",s.value,s.message,t):Sn(r,"exclusiveMaximum",s.value,s.message,t):(s.inclusive||(r.exclusiveMaximum=!0),Sn(r,"maximum",s.value,s.message,t));break;case"multipleOf":Sn(r,"multipleOf",s.value,s.message,t);break}return r}function Zj(e,t){const r=t.target==="openAi",s={type:"object",properties:{}},a=[],i=e.shape();for(const l in i){let d=i[l];if(d===void 0||d._def===void 0)continue;let m=Yj(d);m&&r&&(d._def.typeName==="ZodOptional"&&(d=d._def.innerType),d.isNullable()||(d=d.nullable()),m=!1);const p=bn(d._def,{...t,currentPath:[...t.currentPath,"properties",l],propertyPath:[...t.currentPath,"properties",l]});p!==void 0&&(s.properties[l]=p,m||a.push(l))}a.length&&(s.required=a);const o=Gj(e,t);return o!==void 0&&(s.additionalProperties=o),s}function Gj(e,t){if(e.catchall._def.typeName!=="ZodNever")return bn(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;
5case"strip":return t.removeAdditionalStrategy==="strict"?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function Yj(e){try{return e.isOptional()}catch{return!0}}const Jj=(e,t)=>{var s;if(t.currentPath.toString()===((s=t.propertyPath)==null?void 0:s.toString()))return bn(e.innerType._def,t);const r=bn(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:zr(t)},r]}:zr(t)},Qj=(e,t)=>{if(t.pipeStrategy==="input")return bn(e.in._def,t);if(t.pipeStrategy==="output")return bn(e.out._def,t);const r=bn(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),s=bn(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,s].filter(a=>a!==void 0)}};function Xj(e,t){return bn(e.type._def,t)}function e0(e,t){const s={type:"array",uniqueItems:!0,items:bn(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&Sn(s,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&Sn(s,"maxItems",e.maxSize.value,e.maxSize.message,t),s}function t0(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((r,s)=>bn(r._def,{...t,currentPath:[...t.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[]),additionalItems:bn(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((r,s)=>bn(r._def,{...t,currentPath:[...t.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[])}}function n0(e){return{not:zr(e)}}function r0(e){return zr(e)}const s0=(e,t)=>bn(e.innerType._def,t),a0=(e,t,r)=>{switch(t){case et.ZodString:return Qg(e,r);case et.ZodNumber:return Hj(e,r);case et.ZodObject:return Zj(e,r);case et.ZodBigInt:return Ij(e,r);case et.ZodBoolean:return Ej();case et.ZodDate:return Jg(e,r);case et.ZodUndefined:return n0(r);case et.ZodNull:return qj(r);case et.ZodArray:return _j(e,r);case et.ZodUnion:case et.ZodDiscriminatedUnion:return Uj(e,r);case et.ZodIntersection:return Lj(e,r);case et.ZodTuple:return t0(e,r);case et.ZodRecord:return Xg(e,r);case et.ZodLiteral:return zj(e,r);case et.ZodEnum:return Mj(e);case et.ZodNativeEnum:return Kj(e);case et.ZodNullable:return Wj(e,r);case et.ZodOptional:return Jj(e,r);case et.ZodMap:return $j(e,r);case et.ZodSet:return e0(e,r);case et.ZodLazy:return()=>e.getter()._def;case et.ZodPromise:return Xj(e,r);case et.ZodNaN:case et.ZodNever:return Vj(r);case et.ZodEffects:return Rj(e,r);case et.ZodAny:return zr(r);case et.ZodUnknown:return r0(r);case et.ZodDefault:return Dj(e,r);case et.ZodBranded:return Yg(e,r);case et.ZodReadonly:return s0(e,r);case et.ZodCatch:return Pj(e,r);case et.ZodPipeline:return Qj(e,r);case et.ZodFunction:case et.ZodVoid:case et.ZodSymbol:return;default:return(s=>{})()}};function bn(e,t,r=!1){var l;const s=t.seen.get(e);if(t.override){const d=(l=t.override)==null?void 0:l.call(t,e,t,s,r);if(d!==XN)return d}if(s&&!r){const d=i0(s,t);if(d!==void 0)return d}const a={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,a);const i=a0(e,e.typeName,t),o=typeof i=="function"?bn(i(),t):i;if(o&&o0(e,t,o),t.postProcess){const d=t.postProcess(o,e,t);return a.jsonSchema=o,d}return a.jsonSchema=o,o}const i0=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:Wg(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((r,s)=>t.currentPath[s]===r)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),zr(t)):t.$refStrategy==="seen"?zr(t):void 0}},o0=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription&&(r.markdownDescription=e.description)),r),l0=(e,t)=>{const r=tj(t);let s=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((d,[m,p])=>({...d,[m]:bn(p._def,{...r,currentPath:[...r.basePath,r.definitionPath,m]},!0)??zr(r)}),{}):void 0;const a=typeof t=="string"?t:(t==null?void 0:t.nameStrategy)==="title"||t==null?void 0:t.name,i=bn(e._def,a===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,a]}
5,!1)??zr(r),o=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;o!==void 0&&(i.title=o),r.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[r.openAiAnyTypeName]||(s[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));const l=a===void 0?s?{...i,[r.definitionPath]:s}:i:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,a].join("/"),[r.definitionPath]:{...s,[a]:i}};return r.target==="jsonSchema7"?l.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(l.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in l||"oneOf"in l||"allOf"in l||"type"in l&&Array.isArray(l.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),l},zd="__";function c0(e,t){return`${e}${zd}${t}`}function u0(e){const t=e.indexOf(zd);if(t<=0)throw new Error(`Invalid MCP tool function name: ${e}`);return{appName:e.slice(0,t),toolName:e.slice(t+zd.length)}}function KR(e){const t=[];for(const r of e)for(const s of r.tools){const a=l0(s.parameters,{target:"openApi3",$refStrategy:"none"}),{$schema:i,...o}=a;t.push({type:"function",function:{name:c0(r.appName,s.name),description:s.description,parameters:o}})}return t}function VR(e){const{appName:t,toolName:r}=u0(e);return t==="knowledge"&&r==="search_knowledge_base"?"LIA durchsucht die Knowledge Base â¦":t==="customers"&&r==="search_customers"?"LIA durchsucht Kundendaten â¦":t==="customers"&&r==="open_customer"?"LIA öffnet das Kundenprofil â¦":t==="customers"&&r==="search_customer_documents"?"LIA durchsucht Kundendokumente â¦":t==="customers"&&r==="trigger_print_action"?"LIA bereitet den Druckauftrag vor â¦":t==="customers"&&r==="assign_staged_document"?"LIA weist das Dokument dem Kunden zu â¦":t==="support"&&r==="list_open_tickets"?"LIA lädt Support-Tickets â¦":t==="production"&&r==="production_status_summary"?"LIA prüft den Produktionsstatus â¦":t==="production"&&r==="list_work_orders"?"LIA lädt Arbeitsaufträge â¦":t==="production"&&r==="list_project_orders"?"LIA zählt Produktions-Aufträge â¦":t==="production"&&r==="list_shopfloor_work_orders"?"LIA lädt Shopfloor-Aufträge â¦":t==="production"&&r==="list_pending_approvals"?"LIA lädt ausstehende Freigaben â¦":t==="production"&&r==="fetch_supplier_part_data"?"LIA fragt Lieferanten-Preis und Bestand ab â¦":t==="mail"&&r==="search_emails"?"LIA durchsucht E-Mails â¦":t==="mail"&&r==="get_email"?"LIA lädt die E-Mail â¦":t==="mail"&&r==="open_email"?"LIA öffnet die E-Mail â¦":t==="timeline"&&r==="search_timeline"?"LIA durchsucht die Timeline â¦":t==="timeline"&&r==="get_customer_timeline"?"LIA lädt die Kunden-Timeline â¦":t==="backoffice"&&r==="list_installed_plugins"?"LIA lädt installierte Plugins â¦":t==="backoffice"&&r==="get_email_queue_stats"?"LIA prüft die E-Mail-Warteschlange â¦":t==="backoffice"&&r==="list_failed_emails"?"LIA lädt fehlgeschlagene E-Mails â¦":t==="booking"&&r==="list_bookings"?"LIA lädt Buchungen â¦":t==="booking"&&r==="get_availability"?"LIA prüft Verfügbarkeiten â¦":t==="booking"&&r==="list_bookable_assets"?"LIA lädt buchbare Ressourcen â¦":t==="shopware"&&r==="search_shop_orders"?"LIA durchsucht Shop-Bestellungen â¦":t==="shopware"&&r==="get_shop_order_stats"?"LIA zählt Shop-Bestellungen â¦":t==="shopware"&&r==="get_shop_order"?"LIA lädt die Bestellung â¦":t==="shopware"&&r==="open_shop_order"?"LIA öffnet die Bestellung â¦":t==="shopware"&&r==="open_shop_orders"?"LIA öffnet Shop-Bestellungen â¦":t==="shopware"&&r==="search_shop_products"?"LIA durchsucht Shop-Produkte â¦":t==="shopware"&&r==="open_shop_products"?"LIA öffnet die Shopware Suite â¦":t==="shopware"&&r==="get_shop_dashboard"?"LIA lädt Shop-KPIs â¦":`LIA führt ${r} aus â¦`}const d0=`Du bist LIA, das zentrale KI-Betriebssystem von LIA One. Deine Aufgabe ist es, dem Nutzer auf dem Dashboard zu helfen. Dir werden Tools für freigeschaltete Module bereitgestellt â nutze genau diese Tools proaktiv. Behaupte nicht pauschal Zugriff auf Module, für die du keine Tools hast. 6 7WICHTIG - KNOWLEDGE BASE / SUPPORT: 8Wenn ein Kunde ein technisches Problem, einen Fehlercode, eine Support-Frage oder âwie behebe ichâ¦â meldet, MUSST du zwingend das Tool knowledge__search_knowledge_base aufrufen, bevor du antwortest. Die Suche liefert nur freigegebene (approved) Einträge. Nutze Lösungen aus dem System-Kontext (Knowledge Base) und/oder dem Tool-Ergebnis (context/matches). Erfinde keine technischen Workarounds. Wenn nichts Passendes vorliegt, sage das klar â spekuliere nicht. Relative Termine in KB-Lösungen (âEnde der Wocheâ, âmorgenâ, â¦) sind historische Fallnotizen â keine aktuellen Lieferzusagen; formuliere den Prozess zeitlos. 9 10WICHTIG - BUCHUNGEN / TERMINE / BAHNEN: 11âBuchungenâ, âoffene Buchungenâ, ânächste Buchungâ, Bahnen und Ressourcen-Termine meinen das Buchungssystem (Tools booking__*), nicht Shop-Bestellungen und nicht Buchhaltung. 121. Wenn booking__list_bookings (oder andere booking__*-Tools) in deiner Tool-Liste sind: IMMER list_bookings aufrufen (offene/nächste: dateFrom=heute, Standard bis +14 Tage). Antworte nur mit Tool-Ergebnissen. Niemals Buchungen aus dem Chatverlauf erfinden. Niemals behaupten, das Buchungssystem sei nicht aktiviert, wenn du booking-Tools hast. 132. Nur wenn âBuchungssystemâ unter âNicht verfügbare Moduleâ steht und du keine booking-Tools hast: Hinweis laut Abschnitt unten. 14 15WICHTIG - NICHT AKTIVIERTE / NICHT FREIGESCHALTETE PLUGINS:
16Unter âNicht verfügbare Moduleâ stehen Plugins, die für diesen Mandanten nicht aktiviert oder für dich nicht freigeschaltet sind. 17Wenn der Nutzer etwas will, das dort gelistet ist, und du dafür KEINE passenden Tools hast: 181. Erkläre klar und knapp den Grund (nicht aktiviert vs. keine Berechtigung). 192. Bei ânicht aktiviertâ: Hinweis auf Admin â Plugins zur Aktivierung. 203. Erfinde keine Daten und rufe keine Tools auf, die du nicht hast. 214. Wenn eine Alternative mit verfügbaren Tools möglich ist (z.B. Produktions-Aufträge statt Shop-Bestellungen), biete sie kurz an. 22Hast du passende Tools, nutze sie â ignoriere widersprüchliche Ablehnungsimpulse. 23 24WICHTIG - KUNDE ÃFFNEN: 25Wenn der Nutzer einen Kunden öffnen oder anzeigen will (z.B. 'öffne Frank Fechtner', 'zeige Kunde X'): 261. Nutze 'search_customers'. 272. Bei status=exact_match nutze DANN 'open_customer' mit der customerId â nicht nur Stammdaten auflisten. 283. Bestätige kurz, dass das Profil geöffnet wurde. 29 30WICHTIG - MULTI-STEP WORKFLOWS (CHAINING): 31Wenn ein Nutzer dich bittet, ein Dokument von einer bestimmten Person zu öffnen oder zu drucken, musst du mehrere Tools hintereinander nutzen: 321. Nutze IMMER zuerst 'search_customers', um passende Kunden zu finden. Bei mehreren Treffern: Nutzer fragen, welchen er meint â nicht raten. 332. Nutze DANN 'search_customer_documents' mit der gewählten ID, um das gewünschte Dokument und dessen 'fileUrl' zu finden. 343. Nutze DANN 'trigger_print_action' mit der gefundenen URL, um die Aktion auszuführen. 35Antworte dem Nutzer erst mit Text, wenn die gesamte Tool-Kette erfolgreich abgeschlossen ist. Erkläre kurz, was du getan hast (z.B. 'Ich habe den Vertrag gefunden und zum Drucken geöffnet.'). 36 37WICHTIG - DATEI-UPLOADS: 38Wenn der Nutzer eine Datei anhängt und dich bittet, diese einem Kunden oder Ticket zuzuordnen (z.B. 'Lade diesen Vertrag zu Kunde X hoch'): 391. Nutze 'search_customers', um passende Kunden zu finden. 402. Gibt es MEHRERE Treffer, frage den Nutzer zuerst nach, welchen Kunden er meint (Name, E-Mail oder Firma nennen). Akzeptiere auch nummerische Antworten (z.B. '1' oder '2') auf deine Liste und setze den Upload dann fort. Rate NICHT â führe assign_staged_document erst aus, wenn genau ein Kunde eindeutig ist oder der Nutzer explizit gewählt hat. 413. Nutze DANN 'assign_staged_document', um die Datei aus dem Staging-Bereich final mit dem Kunden zu verknüpfen. Den Dateinamen und die Staging-URL findest du im Kontext der Nutzer-Nachricht. 424. Bestätige dem Nutzer anschlieÃend den erfolgreichen Upload. 43 44WICHTIG - GEOGRAFISCHE KUNDENSUCHE: 45Wenn der Nutzer nach Orten, Städten oder Ländern fragt (z.B. 'Kunden aus München', 'Kunden aus Deutschland'): 461. Nutze 'search_customers' mit dem Parameter city oder country (präziser) oder query (Freitext). 472. Fasse die Treffer mit Name, Firma und Ort zusammen. 48 49WICHTIG - SHOP-PRODUKTE MIT FILTER: 50Wenn der Nutzer Shop-Artikel mit Bestandsfilter sehen will (z.B. 'Bestand unter 5', 'niedriger Bestand', 'alle mit Lager < 10'): 511. Nur wenn Shopware-Tools verfügbar sind: Nutze 'open_shop_products' mit passendem maxStock (z.B. 5 für âunter 5â, inkl. Bestand 0) oder stockFilter=low für Standard âniedrigâ (<20). 522. Sonst: Hinweis laut âNicht verfügbare Moduleâ. 533. Bestätige kurz, dass die Shopware Suite mit Filter geöffnet wurde â liste NICHT nur eine Stichprobe im Chat. 544. 'search_shop_products' nur für kurze Vorschau ohne App-Wechsel, nicht für vollständige Bestandslisten. 55 56WICHTIG - BESTELLUNGEN / AUFTRÃGE: 57âBestellungenâ ist mehrdeutig â nutze die passende Quelle (oder nenne beide): 581. **Shop-Bestellungen** (Online-Shop / Shopware): nur wenn Shopware-Tools verfügbar â get_shop_order_stats; open_shop_orders; search_shop_orders. Sonst Hinweis laut âNicht verfügbare Moduleâ. 592. **Produktions-Aufträge** (wenn Produktion-Tools verfügbar): search_orders. 60Wenn Shopware verfügbar ist und der Nutzer Shop-Bestellungen sehen/laden will: IMMER open_shop_orders. Erfinde keine Null-Antwort. 61 62WICHTIG - LIEFERANTEN-PREIS & BESTAND (LCSC/JLC): 63Wenn der Nutzer Preis, Verfügbarkeit oder Lagerbestand für ein Bauteil fragt (MPN oder LCSC C-Nummer): 641. Nutze 'fetch_supplier_part_data' mit supplier=lcsc oder jlc und der Teilenummer. 652. Nenne Preis, Bestand und Währung aus dem Tool-Ergebnis (status=ok). Bei status=error die message erklären. 66 67Antworte auf Deutsch, klar und knapp. Wenn Tools relevante Daten liefern, fasse sie verständlich zusammen â nenne konkrete Namen, E-Mails, Dokumenttitel oder Ticket-Referenzen aus den Tool-Ergebnissen.`;function m0(e){return e.length===0?"":`## Nicht verfügbare Module 68${e.map(r=>r.reason==="not_licensed"?`- ${r.label} (${r.topics}): Plugin ist für diesen Mandanten nicht aktiviert. Sage das klar und weise auf Admin â Plugins hin. Erfinde keine Daten.`:`- ${r.label} (${r.topics}): Für dich nicht freigeschaltet. Sage das klar. Erfinde keine Daten.`).join(` 69`)}`}function qR(e,t=[]){const r=e.map(i=>
69i.trim()).filter(Boolean).map(i=>`- ${i}`),s=[d0];r.length>0&&s.push(`## Modul-spezifisches Wissen 70${r.join(` 71`)}`);const a=m0(t);return a&&s.push(a),s.join(` 72 73`)}const f0=[{key:"semicolon",char:";"},{key:"comma",char:","},{key:"tab",char:" "}];function Wc(e){return e==="tab"?" ":e==="semicolon"?";":","}function Os(e){return e==="tab"?"Tab":e==="semicolon"?"Semikolon ( ; )":"Komma ( , )"}function p0(e,t){let r=0,s=!1;for(let a=0;a<e.length;a++){const i=e[a];if(i==='"'){if(s&&e[a+1]==='"'){a++;continue}s=!s;continue}!s&&i===t&&r++}return r}function qm(e,t=25){const r=e.split(/\r?\n/).filter(i=>i.trim().length>0).slice(0,t);if(r.length===0)return"semicolon";let s="semicolon",a=-1;for(const{key:i,char:o}of f0){const l=r.reduce((d,m)=>d+p0(m,o),0);l>a&&(a=l,s=i)}return s}function Cp(e,t){const r=[];let s="",a=!1;for(let i=0;i<e.length;i++){const o=e[i];if(o==='"'){a&&e[i+1]==='"'?(s+='"',i++):a=!a;continue}if(!a&&o===t){r.push(s.trim()),s="";continue}s+=o}return r.push(s.trim()),r}function h0(e,t={}){const r=Wc(t.delimiter??qm(e)),s=e.split(/\r?\n/).filter(h=>h.trim().length>0);if(s.length===0)return{columns:[],rows:[]};const a=Math.max(0,t.headerRowIndex??0),i=s[a]??s[0],o=t.hasHeader!==!1,l=Cp(i,r),d=o?l.map((h,x)=>h||`Spalte ${x+1}`):l.map((h,x)=>`Spalte ${x+1}`),p=(o?s.slice(a+1):s.slice(a)).map(h=>{const x=Cp(h,r),b={};return d.forEach((w,v)=>{b[w]=x[v]??""}),b});return{columns:d,rows:p}}async function Um(e,t={}){const r=await e.text(),s=t.autoDetectDelimiter!==!1?qm(r):void 0,a=t.delimiter??s??"semicolon",i=h0(r,{delimiter:a,hasHeader:t.hasHeader,headerRowIndex:t.headerRowIndex});return s!=null?{...i,detectedDelimiter:s}:i}function g0(e,t,r="semicolon"){const s=Wc(r),a=l=>l.includes(s)||l.includes('"')||l.includes(` 74`)?`"${l.replace(/"/g,'""')}"`:l,i=e.map(a).join(s),o=t.map(l=>e.map(d=>a(l[d]??"")).join(s));return[i,...o].join(` 75`)}const ex=[{key:"name",label:"Bezeichnung (Parent)",aliases:["name","bezeichnung","component"]},{key:"quantity",label:"Menge",aliases:["quantity","qty","menge","count","amount"]},{key:"refDes",label:"Ref-Des / Designator",aliases:["refdes","ref_des","designator","reference","parts","refs","ref_designator"]},{key:"manufacturer",label:"Hersteller (Variante)",aliases:["manufacturer","hersteller","mfr","vendor"]},{key:"mpn",label:"MPN / PartNumber (Variante)",aliases:["mpn","manufacturer_part_number","order_code","partnumber","lcsc","lcsc_part","lcsc part #","lcsc part number","lcsc#"]},{key:"supplierName",label:"Lieferant",aliases:["lieferant","supplier","supplier_name","vendor_name","distributor","distributor_name"]},{key:"supplierPartNumber",label:"Lieferanten-Bestellnummer",aliases:["bestellnummer","supplier_part_number","order_number","lieferanten_artikelnummer","supplier_sku","lcsc","lcsc_part","lcsc part #","lcsc part number","lcsc#","jlc part #","jlcpcb part #"]},{key:"purchasePrice",label:"Letzter Preis",aliases:["preis","price","last_price","letzter_preis","einkaufspreis","purchase_price"]},{key:"unit",label:"Einheit",aliases:["unit","einheit","uom"]},{key:"description",label:"Beschreibung",aliases:["description","beschreibung","notes","comment"]},{key:"itemTypeDefinitionName",label:"Artikelart",aliases:["artikelart","item_type","itemtype","type"]},{key:"categoryName",label:"Warengruppe",aliases:["warengruppe","category","warengruppe_name","product_group"]},{key:"value",label:"Wert / Bauteilwert",aliases:["value","val","device","component_value","wert","eaglevalue","eagle_value"]},{key:"package",label:"Package / Footprint",aliases:["package","footprint","pkg","gehause","gehäuse","eaglepackage","eagle_package"]},{key:"matchingKey",label:"Matching Key",aliases:["matching_key","matchingkey","match_key","matchkey","matching_keys"]},{key:"x",label:"X-Position",aliases:["x","posx","center-x","mid_x","pos_x"]},{key:"y",label:"Y-Position",aliases:["y","posy","center-y","mid_y","pos_y"]},{key:"rotation",label:"Rotation",aliases:["rotation","rot","angle","orientation"]},{key:"layer",label:"Layer / Seite",aliases:["layer","side","topbottom","tb","top_bottom"]}],x0=["name","quantity","refDes","manufacturer","mpn","supplierName","supplierPartNumber","purchasePrice","itemTypeDefinitionName","categoryName"];ex.filter(e=>
75x0.includes(e.key));const ws=ex;function uc(e){const t={};for(const[r,s]of Object.entries(e))s&&(t[s]=r);return t}function Oo(e){const t={};for(const[r,s]of Object.entries(e))s&&s!=="__none__"&&(t[s]=r);return t}function y0(e,t,r){const s={...e};if(!r||r==="__none__")return delete s[t],s;for(const[a,i]of Object.entries(s))i===r&&a!==t&&delete s[a];return s[t]=r,s}function b0(e){var t,r;return(t=e.refDes)!=null&&t.trim()?e.refDes.trim().toLowerCase():(r=e.mpn)!=null&&r.trim()?`mpn:${e.mpn.trim().toLowerCase()}`:e.id}function ds(e,t){const r=e==null?void 0:e.trim();return r||(t==null?void 0:t.trim())||void 0}function v0(e,t){return{...e,source:e.source==="eagle"?e.source:t.source,name:ds(e.name,t.name)??e.name??t.name,mpn:ds(e.mpn,t.mpn),manufacturer:ds(e.manufacturer,t.manufacturer),supplierName:ds(e.supplierName,t.supplierName),supplierPartNumber:ds(e.supplierPartNumber,t.supplierPartNumber),purchasePrice:ds(e.purchasePrice,t.purchasePrice),value:ds(e.value,t.value),package:ds(e.package,t.package),itemTypeDefinitionName:ds(e.itemTypeDefinitionName,t.itemTypeDefinitionName),categoryName:ds(e.categoryName,t.categoryName),quantity:t.quantity||e.quantity,refDes:ds(e.refDes,t.refDes)??"",placementData:{...e.placementData,...t.placementData},raw:{...e.raw,...t.raw}}}function N0(e){const t=new Map;for(const r of e){const s=b0(r),a=t.get(s);if(!a){t.set(s,{...r});continue}t.set(s,v0(a,r))}return[...t.values()]}function j0(e,t){return e.trim().toLowerCase()===t.trim().toLowerCase()}function Hc(e,t=[]){const r=new Set,s={};for(const a of t){const i=[a.key,a.label,...a.aliases];let o="";for(const l of e)if(!r.has(l)&&i.some(d=>j0(l,d))){o=l;break}o&&(s[a.key]=o,r.add(o))}return s}const _p=["designator","refdes","ref_des","reference","parts","part","value","quantity","qty","menge","amount","count","package","footprint","hersteller","manufacturer","mfr","mpn","sku","artikelnummer","article","article_number","device","component","beschreibung","description","notes","comment","typ","type"],k0={tvm:["designator","value","package","quantity","footprint"],yy1:["parts","value","device","package"]},w0=/\.(step|stp|gcode|nc|zip|dxf|pdf)$/i,tx=/\.brd$/i,S0=/\.(xlsx|xls)$/i;function A0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"")}function nx(e,t){const r=e.trim();if(!r)return[];const s=[];let a="",i=!1;for(let l=0;l<r.length;l++){const d=r[l];if(d==='"'){i&&r[l+1]==='"'?(a+='"',l++):i=!i;continue}if(!i&&d===t){const m=a.trim();m&&s.push(m),a="";continue}a+=d}const o=a.trim();return o&&s.push(o),s}function C0(e,t){const r=nx(e,t);if(!r.length)return 0;let s=0;const a=r.join(" ").toLowerCase();for(const i of _p)a.includes(i)&&s++;for(const i of r){const o=A0(i);for(const l of _p){const d=l.replace(/_/g,"");(o.includes(d)||d.includes(o))&&s++}}return r.length>=3&&s++,s}function Ip(e){const t=qm(e);return Wc(t)}function Ep(e){return e===" "?"Tab":e===";"?";":e===","?",":e}function _0(e,t){if(tx.test(t))return{formatId:"eagle",formatLabel:"Eagle BRD"};const r=e.join(" ").toLowerCase(),s={};for(const[l,d]of Object.entries(k0))s[l]=d.filter(m=>r.includes(m)).length;t.toLowerCase().includes("tvm")&&(s.tvm=(s.tvm??0)+2),t.toLowerCase().includes("yy1")&&(s.yy1=(s.yy1??0)+2);let a="generic",i=0;for(const[l,d]of Object.entries(s))d>i&&(i=d,a=l);return i<2&&(a="generic"),{formatId:a,formatLabel:{tvm:"TVM-CSV",yy1:"YY1-CSV",generic:"CSV",eagle:"Eagle BRD"}[a]??"CSV"}}function I0(e){return Hc(e,ws)}function E0(e,t){if(w0.test(t))return{fileName:t,fileType:"document",importable:!1,formatId:"document",formatLabel:"Dokument",message:"Datei wird als Anhang gespeichert, nicht als Stückliste importiert."};if(tx.test(t)){const b=e.toLowerCase();return{fileName:t,fileType:"eagle",importable:!0,formatId:"eagle",formatLabel:"Eagle BRD",isEagleXml:b.includes("<eagle")||b.includes("<?xml"),message:"Eagle-Board erkannt â Bestückungsliste per Layer-Import."}}if(S0.test(t))return{fileName:t,fileType:"xlsx",importable:!0,formatId:"xlsx",formatLabel:"Excel",delimiter:";",headerRowIndex:0,headerRowNumber:1,columns:[],columnMapping:{},confidence:.5,message:"Excel-Datei â Spaltenzuordnung im Mapping-Dialog."};const r=e.split(/\r?\n/).filter(b=>b.trim().length>0);if(!r.length)return{fileName:t,fileType:"csv",importable:!1,formatId:"unknown",formatLabel:"Unbekannt",message:"Datei ist leer."};let s=0,a=-1;const i=Ip(e);for(let b=0;
75b<Math.min(r.length,80);b++){const w=C0(r[b],i);w>a&&(a=w,s=b)}const o=r.slice(s,s+5).join(` 76`),l=Ip(o),d=nx(r[s]??"",l),{formatId:m,formatLabel:p}=_0(d,t),h=I0(d),x=a>0?Math.min(1,Math.max(.2,a/6)):.2;return{fileName:t,fileType:"csv",importable:a>0&&d.length>=2,formatId:m,formatLabel:p,delimiter:l,delimiterLabel:Ep(l),headerRowIndex:s,headerRowNumber:s+1,discardedLines:s,columns:d,columnMapping:h,confidence:x,keywordScore:a,message:`Format: ${p} erkannt (Trennzeichen: '${Ep(l)}', Startzeile: ${s+1})`}}async function P0(e){const t=await e.slice(0,10240).text();return E0(t,e.name)}function Wm(e,t=0){const r=Number(e);return Number.isFinite(r)?Math.round(r):t}function Ls(e){return Math.max(1,Wm(e,1))}function tl(e,t="de-DE"){return new Intl.NumberFormat(t,{minimumFractionDigits:0,maximumFractionDigits:0}).format(Wm(e))}class rx extends ut{constructor(r,s){super(409,"Versionskonflikt beim Speichern",{code:"version_conflict",serverVersion:r,serverArticle:s});Rn(this,"serverVersion");Rn(this,"serverArticle");this.name="VersionConflictError",this.serverVersion=r,this.serverArticle=s}}class sx extends ut{constructor(r,s,a,i){super(409,"Feld-Konflikt beim Speichern",{code:"field_merge_conflict",serverVersion:r,serverArticle:s,appliedFields:a,conflictingFields:i});Rn(this,"serverVersion");Rn(this,"serverArticle");Rn(this,"appliedFields");Rn(this,"conflictingFields");this.name="FieldMergeConflictError",this.serverVersion=r,this.serverArticle=s,this.appliedFields=a,this.conflictingFields=i}}function T0(e){return e instanceof rx}function D0(e){return e instanceof sx}const ca={RAW_MATERIAL:{label:"Rohstoff / Kaufteil",sellable:!1,procurement:"purchase",allowsBom:!1,inventoryTracked:!0,example:"M3 Schraube, Platine"},TRADED_GOOD:{label:"Handelsware",sellable:!0,procurement:"purchase",allowsBom:!1,inventoryTracked:!0,example:"Zukauf-Fernsteuerung"},SUBASSEMBLY:{label:"Baugruppe",sellable:!1,procurement:"make",allowsBom:!0,inventoryTracked:!0,example:"Vorverlötete Platine"},FINISHED_GOOD:{label:"Endprodukt",sellable:!0,procurement:"make",allowsBom:!0,inventoryTracked:!0,example:"RS1 Soundmodul"},SERVICE:{label:"Dienstleistung",sellable:!0,procurement:"internal_or_purchase",allowsBom:!1,inventoryTracked:!1,example:"Entwicklungsstunden"}},Zc=["RAW_MATERIAL","TRADED_GOOD","SUBASSEMBLY","FINISHED_GOOD","SERVICE"];function Hr(e){return ca[e].label}function ax(e){return e!=null&&ca[e].allowsBom}function Lu(e,t){return e!=null?e.hasBom:ax(t)}function R0(e,t){return e!=null?e.hasSourcing:M0(t)}function Na(e){return e!=null&&ca[e].inventoryTracked}function M0(e){if(!e)return!1;const t=ca[e].procurement;return t==="purchase"||t==="internal_or_purchase"}function O0(e){return e?ca[e].procurement==="make":!1}const dc={batch_freigegeben:{label:"Freigegeben",className:"border-transparent bg-success/15 text-success",dot:"bg-success"},batch_entwurf:{label:"In Bearbeitung",className:"border-transparent bg-muted text-muted-foreground",dot:"bg-muted-foreground"}},Cl={entwurf:"batch_entwurf",draft:"batch_entwurf","in prüfung":"batch_entwurf","in pruefung":"batch_entwurf",in_review:"batch_entwurf",freigegeben:"batch_freigegeben",approved:"batch_freigegeben",active:"batch_freigegeben",gesperrt:"batch_freigegeben",auslaufend:"batch_freigegeben",obsolete:"batch_freigegeben",batch_entwurf:"batch_entwurf",batch_freigegeben:"batch_freigegeben",DRAFT:"batch_entwurf",IN_REVIEW:"batch_entwurf",APPROVED:"batch_freigegeben",OBSOLETE:"batch_freigegeben"};function nl(e){if(!e)return"batch_entwurf";const t=e.trim().toLowerCase();if(t in Cl)return Cl[t];const r=e.trim().toUpperCase();return r in Cl?Cl[r]:e==="batch_entwurf"||e==="batch_freigegeben"?e:"batch_entwurf"}function L0(e){return e.showReleasedData?"batch_freigegeben":e.hasServerDraft?"batch_entwurf":nl(e.releasedStatus??e.draftStatus)}function ix(e){return dc[nl(e)]}const Pp={DRAFT:"batch_entwurf",IN_REVIEW:"batch_entwurf",APPROVED:"batch_freigegeben",OBSOLETE:"batch_freigegeben",INCOMPLETE:"batch_entwurf"},ox={batch_entwurf:"DRAFT",batch_freigegeben:"APPROVED"},z0={active:"batch_freigegeben",draft:"batch_entwurf",in_review:"batch_entwurf",obsolete:"batch_freigegeben"},ja="_minStock";function B0(e){return e==="batch_freigegeben"}function F0(e,t){const r=e[ja];return r!=null&&Number.isFinite(Number(r))?Math.max(0,Number(r)):t?1:0}function $0(e,t){var s;const r=t.mpn??((s=e.attributes)==null?void 0:s.mpn);if(typeof r=="string"&&r.trim())return r.trim();if(typeof e.typ=="string"&&e.typ.trim())return e.typ.trim()}function K0(e){const t=e.shopwareProductNumber;if(typeof t=="string"&&t.trim())return t.trim()}function V0(e){const t=e.supplierParts??[];if(t.length===0)return[];const r=Number(e.price??0);return t.map(s=>({id:s.id,articleId:e.id,supplierId:"",supplierName:s.supplierName,supplierArticleNumber:s.partNumber,purchasePrice:r,currency:"EUR",minOrderQuantity:1,packagingUnit:1,isDefault:s.isPrimary}))}function q0(e){if(!e||typeof e!="object")return{};const{_workflow_status:t,...r}=e;return r}function U0(e){var s,a;if(e.hasOpenDraft)return"batch_entwurf";if(e.workflowStatus&&Pp[e.workflowStatus])return Pp[e.workflowStatus];const t=(s=e.attributes)==null?void 0:s._workflow_status;if(typeof t=="string")return nl(t);const r=((a=e.activeRevision)==null?void 0:a.status)??"draft";return z0[r]??"batch_entwurf"}function dr(e){var s,a,i;const t=Na(e.itemType),r=q0(e.attributes??{});return{id:e.id,tenantId:e.tenantId,articleNumber:e.articleNumber,referenceKey:e.articleNumber,categoryId:e.category??"",name:e.name,description:e.description,itemType:e.itemType??"RAW_MATERIAL",itemTypeDefinitionId:e.itemTypeDefinitionId??null,procurementType:e.procurementType??"BUY",status:nl(U0(e)),revision:((s=e.activeRevision)==null?void 0:s.version)??"â",unitOfMeasure:e.unit??"Stk",stock:t?e.stock??0:0,minStock:t?F0(r,!0):0,purchasePrice:Number(e.price??0),manufacturer:e.typ??void 0,mpn:$0(e,r),shopwareProductNumber:K0(r),pnpHeight:Number(e.pnpHeight??0),pnpBaseRotation:Number(e.pnpBaseRotation??0),properties:r,sourcings:V0(e),syncVersion:e.version??1,createdAt:((a=e.activeRevision)==null?void 0:a.createdAt)??e.updatedAt??"",updatedAt:e.updatedAt??((i=e.activeRevision)==null?void 0:i.updatedAt)??"",deletionRequestedAt:e.deletionRequestedAt??null,aiEnrichmentStatus:e.aiEnrichmentStatus??null,aiEnrichmentError:e.aiEnrichmentError??null,productStructure:e.productStructure??e.product_structure}}function si(e,t,r){return{...e,name:t.name,description:t.description??e.description,category:t.categoryId,itemType:t.itemType??e.itemType,itemTypeDefinitionId:t.itemTypeDefinitionId??e.itemTypeDefinitionId,typ:t.manufacturer??e.typ,price:t.purchasePrice,stock:t.stock,unit:t.unitOfMeasure,attributes:{...t.properties??{},...t.mpn?{mpn:t.mpn}:{},[ja]:t.minStock},hasOpenDraft:(r==null?void 0:r.hasOpenDraft)??e.hasOpenDraft,productStructure:(r==null?void 0:r.productStructure)??t.productStructure??e.productStructure}}function Tp(e){var r,s;const t=Na(e.itemType);return{articleNumber:e.articleNumber.trim(),name:e.name.trim(),description:e.description??"",category:e.categoryId,itemType:e.itemType??"RAW_MATERIAL",itemTypeDefinitionId:e.itemTypeDefinitionId??void 0,procurementType:e.procurementType??"BUY",typ:e.manufacturer??"",pnpHeight:e.pnpHeight??0,pnpBaseRotation:e.pnpBaseRotation??0,price:e.purchasePrice??((s=(r=e.sourcings)==null?void 0:r[0])==null?void 0:s.purchasePrice)??0,stock:t?e.stock:null,unit:e.unitOfMeasure,image:"",attributes:{...e.properties??{},...e.mpn?{mpn:e.mpn}:{},...t?{[ja]:e.minStock}:{}},workflowStatus:ox[e.status]??"DRAFT",activeRevision:null,supplierParts:[]}}function zu(e,t){const r=Na(e.itemType),s={name:e.name.trim(),description:e.description??"",category:e.categoryId,itemType:e.itemType??void 0,itemTypeDefinitionId:e.itemTypeDefinitionId??void 0,procurementType:e.procurementType??"BUY",typ:e.manufacturer??"",pnpHeight:e.pnpHeight??0,pnpBaseRotation:e.pnpBaseRotation??0,price:e.purchasePrice??0,stock:r?e.stock:null,unit:e.unitOfMeasure,attributes:{...e.properties??{},...e.mpn?{mpn:e.mpn}:{},...r?{[ja]:e.minStock}:{}}};return t!=null&&t.releaseImmediately?s.workflowStatus="APPROVED":t!=null&&t.includeWorkflowStatus&&(s.workflowStatus=ox[e.status]??"DRAFT"),(t==null?void 0:t.productStructure)!==void 0&&(s.productStructure=t.productStructure.map((a,i)=>({childArticleId:a.childArticleId,quantity:a.quantity,sortOrder:i,notes:a.notes??"",childArticleNumber:a.childArticleNumber??void 0,childName:a.childName??void 0,childItemType:a.childItemType??void 0}))),s}
76class bo extends Error{constructor(r){super("Draft is locked by another user");Rn(this,"lockedBy");this.name="DraftLockedError",this.lockedBy=r}}class lx extends Error{constructor(r){super("Draft version conflict");Rn(this,"serverVersion");this.name="DraftVersionConflictError",this.serverVersion=r}}function _l(e,t=0){const r=Number(e);return Number.isFinite(r)?r:t}function cx(e){if(typeof e=="string")try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}return e&&typeof e=="object"?e:{}}function Rr(e,t,r){return e[t]??e[r]}function W0(e){return{...e,data:cx(e.data)}}function li(e,t){const r=dr(e),s=cx(t.data),a=Rr(s,"item_type","itemType")??r.itemType,i=Rr(s,"item_type_definition_id","itemTypeDefinitionId")??r.itemTypeDefinitionId,o=Na(a),l=Rr(s,"name","name"),d=Rr(s,"description","description"),m=Rr(s,"category","category"),p=Rr(s,"typ","typ"),h=Rr(s,"unit","unit"),x=Rr(s,"attributes","attributes"),b=Rr(s,"revision_version","revisionVersion"),w=x!=null&&typeof x=="object"?x:r.properties,v=w[ja],S=w.mpn??Rr(s,"mpn","mpn");return{...r,name:l!=null?String(l):r.name,description:d!=null?String(d):r.description,categoryId:m!=null?String(m):r.categoryId,itemType:a,itemTypeDefinitionId:i!=null?String(i):r.itemTypeDefinitionId,manufacturer:p!=null?String(p):r.manufacturer,mpn:S!=null&&String(S).trim()?String(S).trim():r.mpn,shopwareProductNumber:typeof w.shopwareProductNumber=="string"&&w.shopwareProductNumber.trim()?w.shopwareProductNumber.trim():r.shopwareProductNumber,revision:b!=null?String(b):r.revision,pnpHeight:_l(Rr(s,"pnp_height","pnpHeight"),r.pnpHeight??0),pnpBaseRotation:_l(Rr(s,"pnp_base_rotation","pnpBaseRotation"),r.pnpBaseRotation??0),unitOfMeasure:h??r.unitOfMeasure,stock:o?_l(Rr(s,"stock","stock"),r.stock):0,minStock:v!=null&&Number.isFinite(Number(v))?Math.max(0,Number(v)):r.minStock,purchasePrice:_l(Rr(s,"price","price"),r.purchasePrice),properties:w,status:"batch_entwurf"}}function Bu(e,t,r){return{...li(e,W0(t)),name:r.name,description:r.description,categoryId:r.categoryId,itemType:r.itemType,manufacturer:r.manufacturer,mpn:r.mpn,pnpHeight:r.pnpHeight,pnpBaseRotation:r.pnpBaseRotation,unitOfMeasure:r.unitOfMeasure,stock:r.stock,minStock:r.minStock,purchasePrice:r.purchasePrice,revision:r.revision,properties:r.properties??{},status:"batch_entwurf"}}function Yi(e,t){const r=Na(e.itemType),s={name:e.name.trim(),description:e.description??"",category:e.categoryId,itemType:e.itemType??void 0,itemTypeDefinitionId:e.itemTypeDefinitionId??void 0,typ:e.manufacturer??"",pnpHeight:e.pnpHeight??0,pnpBaseRotation:e.pnpBaseRotation??0,stock:r?e.stock:null,price:e.purchasePrice??0,unit:e.unitOfMeasure,attributes:{...e.properties??{},...e.mpn?{mpn:e.mpn}:{},...r?{[ja]:e.minStock}:{}}};return(t==null?void 0:t.expectedVersion)!==void 0&&(s.expectedVersion=t.expectedVersion),t!=null&&t.force&&(s.force=!0),(t==null?void 0:t.productStructure)!==void 0&&(s.productStructure=t.productStructure.map((a,i)=>({childArticleId:a.childArticleId,quantity:a.quantity,sortOrder:i,notes:a.notes??"",childArticleNumber:a.childArticleNumber??void 0,childName:a.childName??void 0,childItemType:a.childItemType??void 0}))),s}const H0=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Gc="local:";function Z0(e){return e.startsWith(Gc)}function G0(){return`${Gc}draft-${crypto.randomUUID()}`}function Y0(e){return`${Gc}staging-parent-${e}`}function J0(e){return`${Gc}staging-variant-${e}`}function kt(e){return!e||Z0(e)?!1:H0.test(e)}async function Hm(e,t){try{return await e()}catch(r){if(r instanceof ut&&r.status===404)return t;throw r}}function mc(e){const t=Number(e);return Number.isFinite(t)?t:0}function xr(e,t=0){return Wm(e,t)}function Ss(e){const t=e.stock===null||e.stock===void 0?null:mc(e.stock);return{...e,version:e.version??1,price:mc(e.price),stock:t,attributes:e.attributes??{},activeRevision:e.activeRevision??null,supplierParts:e.supplierParts??[],suppliers:e.suppliers??[],bom:(e.bom??[]).map(r=>({...r,quantity:xr(r.quantity)})),productStructure:Q0(e)}}function Zm(e){const t=e;return{id:String(t.id??""),parentArticleId:String(t.parentArticleId??t.parent_article_id??""),childArticleId:String(t.childArticleId??t.child_article_id??""),childArticleNumber:t.childArticleNumber??t.child_article_number??null,childName:t.childName??t.child_name??null,childItemType:t.childItemType??t.child_item_type??null,quantity:xr(t.quantity,1),sortOrder:Number(t.sortOrder??t.sort_order??0),notes:typeof t.notes=="string"?t.notes:""}}function Q0(e){const t=e.productStructure??e.product_structure;if(Array.isArray(t))return t.map(r=>Zm(r))}function Di(e){const t=e,r=String(t.status??"planned"),s=xr(e.quantity??t.targetQuantity??t.target_quantity??1),a=e.snapshotId??t.snapshot_id??null;return{...e,quantity:s,targetQuantity:xr(e.targetQuantity??t.target_quantity??s),snapshotId:a,setupMinutes:e.setupMinutes??0,cycleTimeSeconds:e.cycleTimeSeconds??0,status:r,revisionVersion:e.revisionVersion??t.revision_version??void 0,resourceType:e.resourceType??t.resource_type??void 0,subcontractorSupplierId:e.subcontractorSupplierId??t.subcontractor_supplier_id??void 0,subcontractorSupplierName:e.subcontractorSupplierName??t.subcontractor_supplier_name??void 0,supplierOrderReference:e.supplierOrderReference??t.supplier_order_reference??void 0,producedQuantity:e.producedQuantity??t.produced_quantity??null,scrapQuantity:e.scrapQuantity??t.scrap_quantity??null,scrapReason:e.scrapReason??t.scrap_reason??null,blockedReason:e.blockedReason??t.blocked_reason??null,parentWorkOrderId:e.parentWorkOrderId??t.parent_work_order_id??null,operationYields:X0(e.operationYields??t.operation_yields??t.operationYields)}}function X0(e){return Array.isArray(e)?e.map(t=>{const r=t,s=String(r.operationId??r.operation_id??"").trim();return s?{operationId:s,scrapQuantity:Number(r.scrapQuantity??r.scrap_quantity??0)||0,scrapReason:r.scrapReason??r.scrap_reason??null}:null}).filter(t=>t!=null):[]}function ux(e){return{articleNumber:e.articleNumber,name:e.name,description:e.description??"",category:e.category??"",itemType:e.itemType,itemTypeDefinitionId:e.itemTypeDefinitionId??void 0,typ:e.typ??"",price:e.price,stock:e.stock,unit:e.unit??"Stk",image:e.image??"",attributes:e.attributes??{},...e.workflowStatus?{workflowStatus:e.workflowStatus}:{}}}const dx=RN({baseUrl:Ti()});function mx(e){var t;return{requiresTenantSelection:e.requiresTenantSelection,loginTicket:e.loginTicket??null,tenants:(t=e.tenants)==null?void 0:t.map(r=>({tenantId:r.tenantId,tenantName:r.tenantName,role:r.role})),token:e.token??null,role:e.role??null,email:e.email??null,userId:e.userId??null,displayName:e.displayName??null,tenantId:e.tenantId??null,tenantName:e.tenantName??null,tenantLogoUrl:e.tenantLogoUrl??null}}function fx(e){throw e instanceof zg?new ut(e.status,e.message,e.detail):e}async function Dp(e,t,r){try{const s=await dx.login(e,t,{app:"production",tenantId:r??void 0});return mx(s)}catch(s){fx(s)}}async function Rp(e,t){try{const r=await dx.selectTenant(e,t,{app:"production"});return mx(r)}catch(r){fx(r)}}async function ek(){return Ee("/auth/tenant")}async function fc(e){const t=new URLSearchParams({view:"summary"});return(e==null?void 0:e.includeSuppliers)!==!1&&t.set("expand","suppliers"),e!=null&&e.noCache&&t.set("_",String(Date.now())),(await Ee(`/articles?${t.toString()}`,{cache:"no-store"})).map(Ss)}async function tk(e){const t=new URLSearchParams({since:e,view:"summary",expand:"suppliers"});return(await Ee(`/articles/changes?${t.toString()}`)).map(Ss)}async function nk(){return(await Ee("/articles/pending-approvals")).map(Ss)}async function Gm(e){return Ss(await Ee(`/articles/${e}/approve`,{method:"POST"}))}async function ts(e){return Ss(await Ee(`/articles/${e}`))}async function Mp(e){try{return await Ee(`/articles/${e}/draft`)}catch(t){if(t instanceof ut&&t.status===404)return null;throw t}}async function Il(e){try{return await Ee(`/articles/${e}/draft/start`,{method:"POST"})}catch(t){if(t instanceof ut&&t.status===409){const r=t.detail;if(r&&typeof r=="object"&&r.code==="draft_locked")throw new bo(String(r.lockedBy??""))}throw t}}async function Ji(e,t){try{return await Ee(`/articles/${e}/draft`,{method:"PATCH",body:JSON.stringify(t)})}catch(r){if(r instanceof ut&&r.status===409){const s=r.detail;
76if(s&&typeof s=="object"){const a=s.code;if(a==="draft_locked")throw new bo(String(s.lockedBy??""));if(a==="draft_version_conflict")throw new lx(Number(s.serverVersion??1))}}throw r}}async function Op(e){return Ee(`/articles/${e}/draft/unlock`,{method:"POST"})}async function rl(e){return Ss(await Ee("/articles",{method:"POST",body:JSON.stringify(ux(e))}))}async function rk(e){return e.length===0?[]:(await Ee("/articles/bulk-create",{method:"POST",body:JSON.stringify({articles:e.map(r=>({...ux(r),...r.variant?{variant:{mpn:r.variant.mpn,manufacturer:r.variant.manufacturer??""}}:{}}))}),timeoutMs:3e5})).articles.map(Ss)}const na={};function Ym(){na.data=void 0,na.promise=void 0}async function Yc(e){return na.data?na.data:(na.promise||(na.promise=Ee("/article-variants").then(t=>(na.data=t,t)).catch(()=>(Ym(),[]))),na.promise)}async function px(e){return Ee(`/articles/${e}/variants`)}async function sk(e,t){const r=await Ee(`/articles/${e}/variants`,{method:"POST",body:JSON.stringify(t)});return Ym(),r}async function Jm(e,t,r){var i,o;const s={};t.name!==void 0&&(s.name=t.name),t.description!==void 0&&(s.description=t.description),t.category!==void 0&&(s.category=t.category),t.itemType!==void 0&&(s.itemType=t.itemType),t.itemTypeDefinitionId!==void 0&&(s.itemTypeDefinitionId=t.itemTypeDefinitionId),t.typ!==void 0&&(s.typ=t.typ),t.price!==void 0&&(s.price=t.price),t.stock!==void 0&&(s.stock=t.stock),t.unit!==void 0&&(s.unit=t.unit),t.image!==void 0&&(s.image=t.image),t.attributes!==void 0&&(s.attributes=t.attributes),t.workflowStatus!==void 0&&(s.workflowStatus=t.workflowStatus),t.procurementType!==void 0&&(s.procurementType=t.procurementType),t.pnpHeight!==void 0&&(s.pnpHeight=t.pnpHeight),t.pnpBaseRotation!==void 0&&(s.pnpBaseRotation=t.pnpBaseRotation);const a=t.productStructure;a!==void 0&&(s.productStructure=a),(r==null?void 0:r.expectedVersion)!==void 0&&(s.expectedVersion=r.expectedVersion),r!=null&&r.force&&(s.force=!0),r!=null&&r.changeId&&(s.changeId=r.changeId),(i=r==null?void 0:r.dirtyFields)!=null&&i.length&&(s.dirtyFields=r.dirtyFields),r!=null&&r.baseSnapshot&&(s.baseSnapshot=r.baseSnapshot),(o=r==null?void 0:r.forceFields)!=null&&o.length&&(s.forceFields=r.forceFields);try{return Ss(await Ee(`/articles/${e}`,{method:"PATCH",body:JSON.stringify(s)}))}catch(l){if(l instanceof ut&&l.status===409){const d=l.detail;if(typeof d=="object"&&d!==null&&"code"in d){const m=d;if(m.serverArticle){const p=Ss(m.serverArticle);if(m.code==="field_merge_conflict")throw new sx(m.serverVersion??p.version??1,p,m.appliedFields??[],m.conflictingFields??[]);if(m.code==="version_conflict")throw new rx(m.serverVersion??p.version??1,p)}}}throw l}}async function hx(e){return Ee(`/articles/${e}/events`)}async function ak(e,t){const r=JSON.stringify({confirm:(t==null?void 0:t.confirm)??!1,cancel:(t==null?void 0:t.cancel)??!1}),s=await Ee(`/articles/${e}`,{method:"DELETE",body:r});return s===void 0?{status:"deleted"}:{status:t!=null&&t.cancel?"cancelled":"pending",article:Ss(s)}}async function Lp(e){return Ee("/articles/bulk-delete",{method:"POST",body:JSON.stringify({articleIds:e})})}async function ik(){return Ee("/workspace-settings")}async function Qi(e){return Ee("/workspace-settings",{method:"PUT",body:JSON.stringify(e)})}async function ok(){return Ee("/workspace-settings/recompute-matching-keys",{method:"POST"})}async function lk(){return(await Ee("/article-report-presets")).presets??[]}async function ck(e){return(await Ee("/article-report-presets",{method:"PUT",body:JSON.stringify({presets:e})})).presets??[]}async function uk(e){const t=Ga(),r=new Headers({"Content-Type":"application/json"});t&&r.set("Authorization",`Bearer ${t}`);const s=Ti(),a=await fetch(`${s}/api/v1/documents/upload-url`,{method:"POST",headers:r,body:JSON.stringify({file_name:e.fileName,document_kind:"business"})});if(!a.ok){const m=await a.text();throw new ut(a.status,m||"Upload-URL für Dokumente fehlgeschlagen")}const i=await a.json();if(!i.signed_url)throw new ut(502,"Keine Upload-URL vom Dokumente-Storage");const o=await fetch(i.signed_url,{method:"PUT",headers:{"Content-Type":e.contentType||e.blob.type||"application/octet-stream",...i.token?{Authorization:`Bearer ${i.token}`}:{}},body:e.blob});if(!o.ok)throw new ut(o.status,`Storage-Upload fehlgeschlagen (${o.status})`);const l=await fetch(`${s}/api/v1/documents`,{method:"POST",headers:r,body:JSON.stringify({title:e.title||e.fileName,file_path:i.path,document_kind:"business",bucket:i.bucket,content_type:e.contentType||e.blob.type||"",file_size_bytes:e.blob.size,context:"article-report"})});if(!l.ok){const m=await l.text();throw new ut(l.status,m||"Dokument konnte nicht registriert werden")}const d=await l.json();return{id:d.id,title:d.title||e.fileName}}async function sl(e){return Ee(`/articles/${e}/revisions`)}async function Qm(e,t){return Ee(`/articles/${e}/revisions`,{method:"POST",body:JSON.stringify(t)})}async function dk(e,t){await Ee(`/articles/${e}/revisions/${t}`,{method:"DELETE"})}async function mk(e,t){return Ee(`/articles/${e}/revisions/${t}/approve`,{method:"POST"})}async function fk(e,t,r){const s=r==null?void 0:r.enrich;return(await Ee(`/articles/${e}/revisions/${t}/bom?enrich=${s}`)).map(i=>({...i,quantity:xr(i.quantity),materialRequirementId:i.materialRequirementId??null,functionalRequirementsSnapshot:i.functionalRequirementsSnapshot??{},supplierPartId:i.supplierPartId??null,lcscPartNumber:i.lcscPartNumber??null,lcscAlternatives:i.lcscAlternatives??[]}))}async function Bd(e,t,r){const s={quantity:r.quantity,referenceDesignator:r.referenceDesignator,typ:r.typ,value:r.value,package:r.package,placementData:r.placementData};return r.mappingStatus&&(s.mappingStatus=r.mappingStatus),r.variantId&&(s.variantId=r.variantId),r.articleId&&(s.articleId=r.articleId),r.supplyType&&(s.supplyType=r.supplyType),Ee(`/articles/${e}/revisions/${t}/bom`,{method:"POST",body:JSON.stringify(s)})}async function pk(e,t,r,s){return r.length===0?[]:(await Ee(`/articles/${e}/revisions/${t}/bom/bulk?record_event=false`,{method:"POST",body:JSON.stringify({items:r.map(o=>{const l={quantity:o.quantity,referenceDesignator:o.referenceDesignator,typ:o.typ,value:o.value,package:o.package,placementData:o.placementData};return o.mappingStatus&&(l.mappingStatus=o.mappingStatus),o.variantId&&(l.variantId=o.variantId),o.articleId&&(l.articleId=o.articleId),l})}),timeoutMs:12e4})).items.map(o=>({...o,quantity:xr(o.quantity)}))}async function hk(e,t,r){await Ee(`/articles/${e}/revisions/${t}/bom/import-log`,{method:"POST",body:JSON.stringify(r)})}async function gk(e,t,r,s){return Ee(`/articles/${e}/revisions/${t}/bom/${r}`,{method:"PATCH",body:JSON.stringify(s)})}async function xk(e,t,r,s){return Ee(`/articles/${e}/revisions/${t}/bom/${r}/map`,{method:"POST",body:JSON.stringify(s)})}async function yk(e,t,r){return Ee(`/articles/${e}/revisions/${t}/bom/${r}/unmap`,{method:"POST"})}async function bk(){return Ee("/mapping-memory?mappingType=bom_article")}async function Fd(e,t,r){await Ee(`/articles/${e}/revisions/${t}/bom/${r}`,{method:"DELETE"})}async function gx(e,t){await Ee(`/articles/${e}/revisions/${t}/bom`,{method:"DELETE"})}async function vk(e,t){await gx(e,t),await bx(e,t,[])}function Nk(e){if(!e||typeof e!="object"||Array.isArray(e))throw new ut(404,"structure-index unavailable");const t=e;if("articleNumber"in t||"article_number"in t)throw new ut(404,"structure-index unavailable");const r=new Map;for(const[s,a]of Object.entries(t))Array.isArray(a)&&r.set(s.toLowerCase(),a.map(i=>Zm(i)));return r}async function jk(){const e=await Ee("/articles/structure-index",{cache:"no-store"});return Nk(e)}async function po(e){return kt(e)?(await Ee(`/articles/${e}/structure`)).map(r=>Zm(r)):[]}async function xx(e){return(await Ee(`/articles/${e}/bom-outputs`)).map(r=>({...r,quantity:xr(r.quantity,1)}))}async function kk(e,t){return(await Ee(`/articles/${e}/bom-outputs`,{method:"PUT",body:JSON.stringify({outputs:t})})).map(s=>({...s,quantity:xr(s.quantity,1)}))}async function wk(e){return kt(e)?Hm(()=>Ee(`/articles/${e}/yield-sources`),[]):[]}async function yx(e,t){return(await Ee(`/articles/${e}/revisions/${t}/component-groups`)).map(s=>({...s,quantity:xr(s.quantity)}))}async function bx(e,t,r){return(await Ee(`/articles/${e}/revisions/${t}/component-groups/sync-eagle`,{method:"POST",body:JSON.stringify({lines:r})})).map(a=>({...a,quantity:xr(a.quantity)}))}async function Xm(){return Ee("/machines")}async function Sk(e){return Ee(`/machines/${e}`)}async function Ak(e){return Ee("/machines",{method:"POST",body:JSON.stringify(e)})}async function Ck(e,t){return Ee(`/machines/${e}`,{method:"PATCH",body:JSON.stringify(t)})}async function _k(e){await Ee(`/machines/${e}`,{method:"DELETE"})}async function Ik(e){return Ee(`/machines/${e}/feeders`)}async function Ek(e,t){return Ee(`/machines/${e}/feeders`,{method:"PUT",body:JSON.stringify(t)})}async function Pk(e){return Ee(`/machines/${e}/export-sources`)}async function Tk(e,t){const r="workOrderId"in t?{workOrderId:t.workOrderId}:{snapshotId:t.snapshotId};return Ee(`/machines/${e}/placement-export-preview`,{method:"POST",body:JSON.stringify(r)})}async function Dk(e,t){const r={formatId:t.formatId,..."workOrderId"in t?{workOrderId:t.workOrderId}:{snapshotId:t.snapshotId}};return Ee(`/machines/${e}/machine-export`,{method:"POST",body:JSON.stringify(r)})}async function Rk(e){return Ee("/subcontractors/jlc/mapping/search",{method:"POST",body:JSON.stringify(e)})}async function vx(e){return Ee("/subcontractors/jlc/mapping/confirm",{method:"POST",body:JSON.stringify(e)})}async function Mk(e){const t=e?`?revisionId=${encodeURIComponent(e)}`:"";return Ee(`/subcontractors/jlc/export-sources${t}`)}async function Ok(e,t){return Ee("/subcontractors/jlc/export/preview",{method:"POST",body:JSON.stringify({revisionId:e,supplierId:t.supplierId,supplierProfile:t.supplierProfile,snapshotId:t.snapshotId??null,workOrderId:t.workOrderId,includeUnmapped:t.includeUnmapped??!0})})}async function Lk(e,t){return Ee("/subcontractors/jlc/export/download",{method:"POST",body:JSON.stringify({revisionId:e,supplierId:t.supplierId,supplierProfile:t.supplierProfile,formatId:t.formatId,snapshotId:t.snapshotId??null,workOrderId:t.workOrderId,includeUnmapped:t.includeUnmapped??!0})})}async function Nx(e=20){return Ee(`/sync-logs?provider=shopware&limit=${e}`)}async function zk(){return Ee("/integrations/shopware")}async function Bk(e){return Ee("/integrations/shopware",{method:"PUT",body:JSON.stringify(e)})}async function Fk(e){return Ee("/integrations/shopware/test",{method:"POST",body:JSON.stringify(e)})}async function $k(e){var s;const t=new URLSearchParams;e!=null&&e.page&&t.set("page",String(e.page)),e!=null&&e.limit&&t.set("limit",String(e.limit)),(s=e==null?void 0:e.search)!=null&&s.trim()&&t.set("search",e.search.trim());const r=t.toString()?`?${t.toString()}`:"";return Ee(`/integrations/shopware/import-preview${r}`)}async function Kk(){return Ee("/integrations/shopware/import-summary")}
76async function Vk(){return Ee("/integrations/lia-one")}async function qk(e){const t=new URLSearchParams;e!=null&&e.page&&t.set("page",String(e.page)),e!=null&&e.limit&&t.set("limit",String(e.limit));const r=t.toString()?`?${t}`:"";return Ee(`/integrations/lia-one/import-preview${r}`)}async function Uk(e){return Ee("/integrations/lia-one/import",{method:"POST",body:JSON.stringify({articleIds:(e==null?void 0:e.articleIds)??[],syncStock:(e==null?void 0:e.syncStock)!==!1})})}async function Wk(e,t){const r={};return e&&e.length>0&&(r.productIds=e),t!=null&&t.trim()&&(r.itemTypeDefinitionId=t.trim()),Ee("/integrations/shopware/import",{method:"POST",body:JSON.stringify(r)})}async function ef(){return Ee("/locations")}async function Hk(e){return kt(e)?(await Hm(()=>Ee(`/articles/${e}/inventory-levels`),[])).map(r=>({...r,quantity:xr(r.quantity)})):[]}async function Zk(e){return Ee(`/articles/${e}/integrity-check`)}async function Gk(e,t){const r=await Ee(`/articles/${e}/inventory/transfer`,{method:"POST",body:JSON.stringify(t)});return{transactionId:r.transactionId,levels:(r.levels??[]).map(s=>({...s,quantity:xr(s.quantity)}))}}async function jx(e,t){const r=await Ee(`/articles/${e}/inventory/receive`,{method:"POST",body:JSON.stringify(t)});return{transactionId:r.transactionId,levels:(r.levels??[]).map(s=>({...s,quantity:xr(s.quantity)}))}}async function Jc(e){return kt(e)?Hm(()=>Ee(`/articles/${e}/supplier-parts`),[]):[]}async function pc(e,t){return Ee(`/articles/${e}/supplier-parts`,{method:"POST",body:JSON.stringify(t)})}async function zp(e,t,r){return Ee(`/articles/${e}/supplier-parts/${t}`,{method:"PATCH",body:JSON.stringify(r)})}async function Yk(e,t){await Ee(`/articles/${e}/supplier-parts/${t}`,{method:"DELETE"})}async function Lo(){return Ee("/suppliers")}async function kx(e){return Ee("/suppliers",{method:"POST",body:JSON.stringify(e)})}async function Jk(e,t){return Ee(`/suppliers/${e}`,{method:"PATCH",body:JSON.stringify(t)})}async function Qk(e){await Ee(`/suppliers/${e}`,{method:"DELETE"})}async function tf(e){const t=new URLSearchParams({mpn:e.trim()});return Ee(`/supplier-connectors/lcsc/lookup?${t}`)}async function nf(){return(await Ee("/work-orders")).map(Di)}async function wx(e){return Di(await Ee(`/work-orders/${e}`))}async function Xk(e){return(await Ee(`/work-orders/${e}/events`)).map(r=>({...r,payload:r.payload??{}}))}async function ew(e){return Ee(`/work-orders/${e}/attachments`)}async function tw(e,t="dokument"){const r=Ga(),s=new Headers;r&&s.set("Authorization",`Bearer ${r}`);const a=await fetch(`${Ti()}/api/v1/documents/${e}/download`,{headers:s});if(!a.ok){const h=await a.text();throw new ut(a.status,h||a.statusText)}const i=await a.blob(),o=a.headers.get("Content-Disposition")??"",l=/filename\*?="?([^";]+)"?/.exec(o),d=l!=null&&l[1]?decodeURIComponent(l[1]):t,m=URL.createObjectURL(i),p=document.createElement("a");p.href=m,p.download=d,p.click(),URL.revokeObjectURL(m)}async function rf(e){return Di(await Ee("/work-orders",{method:"POST",body:JSON.stringify(e)}))}async function Bp(){return(await Ee("/snapshots?planningStatus=PLANNING_COMPLETE")).map(t=>({id:String(t.id),articleId:String(t.articleId??t.article_id??""),revisionId:t.revisionId??t.revision_id??null,articleNumber:t.articleNumber??t.article_number??null,articleName:t.articleName??t.article_name??null,revisionVersion:t.revisionVersion??t.revision_version??null,planningStatus:String(t.planningStatus??t.planning_status??"PLANNING_COMPLETE"),frozenAt:t.frozenAt??t.frozen_at??null,createdAt:t.createdAt??t.created_at??null}))}async function di(e,t){return Di(await Ee(`/work-orders/${e}`,{method:"PATCH",body:JSON.stringify(t)}))}async function Sx(e){return Di(await Ee(`/work-orders/${e}/unblock`,{method:"POST",body:JSON.stringify({})}))}async function nw(e){return(await Ee(`/work-orders/${e}/genealogy`)).map(r=>({id:String(r.id),parentWorkOrderId:r.parentWorkOrderId??r.parent_work_order_id??null,status:String(r.status??"planned"),quantity:Number(r.quantity??1)||1,producedQuantity:r.producedQuantity??r.produced_quantity??null,scrapQuantity:r.scrapQuantity??r.scrap_quantity??null,snapshotId:r.snapshotId??r.snapshot_id??null,depth:Number(r.depth??0)||0}
76))}async function rw(e){await Ee(`/work-orders/${e}`,{method:"DELETE"})}async function sw(){return Ee("/orders")}async function aw(e){return Ee(`/orders/${e}`)}async function iw(e){return Ee("/orders",{method:"POST",body:JSON.stringify(e)})}async function ow(e){return(await Ee(`/orders/${e}/positions`)).map(r=>({...r,quantity:xr(r.quantity)}))}async function lw(e,t){const r=await Ee(`/orders/${e}/positions`,{method:"POST",body:JSON.stringify(t)});return{...r,quantity:xr(r.quantity)}}async function cw(e){await Ee(`/orders/positions/${e}`,{method:"DELETE"})}async function uw(e){return Di(await Ee(`/orders/positions/${e}/work-orders`,{method:"POST"}))}async function Ax(e){const t=e?`?machineId=${encodeURIComponent(e)}`:"";return Ee(`/schedule${t}`)}async function dw(e){return(await Ee(`/schedule/availability/${e}`)).availableFrom}async function mw(e){return Ee("/schedule",{method:"POST",body:JSON.stringify(e)})}function Fp(e){return{...e,quantity:xr(e.quantity),price:mc(e.price),exportTemplate:e.exportTemplate??{}}}async function fw(){const e=await Ee("/procurement/calculate"),t=e.items.map(Fp),r={};for(const[s,a]of Object.entries(e.groupedBySupplier??{}))r[s]=a.map(Fp);return{items:t,groupedBySupplier:r}}async function Cx(e,t){const r=Ga(),s=new Headers({"Content-Type":"application/json"});r&&s.set("Authorization",`Bearer ${r}`);const a=await fetch(`${$m()}${e}`,{method:"POST",headers:s,body:JSON.stringify(t)});if(!a.ok){const h=await a.text();throw new ut(a.status,h||a.statusText)}const i=await a.blob(),o=a.headers.get("Content-Disposition")??"",l=/filename="([^"]+)"/.exec(o),d=(l==null?void 0:l[1])??"bestellung",m=URL.createObjectURL(i),p=document.createElement("a");return p.href=m,p.download=d,p.click(),URL.revokeObjectURL(m),a.headers.get("X-Order-Email")}async function pw(e){await Cx("/procurement/export/csv",e)}async function hw(e){return Cx("/procurement/export/email",e)}function _x(e){return{id:String(e.id),tenantId:String(e.tenantId??e.tenant_id??""),articleId:String(e.articleId??e.article_id??""),articleNumber:String(e.articleNumber??e.article_number??""),name:String(e.name??e.article_name??""),unit:String(e.unit??"Stk"),supplierId:e.supplierId??e.supplier_id??null,supplierName:String(e.supplierName??e.supplier_name??""),quantity:xr(e.quantity,1),price:mc(e.price??e.unit_price),status:e.status??"draft",sourceWorkOrderId:e.sourceWorkOrderId??e.source_work_order_id??null,productionOrderId:e.productionOrderId??e.production_order_id??null,notes:String(e.notes??""),createdAt:e.createdAt??e.created_at,updatedAt:e.updatedAt??e.updated_at}}async function gw(e){return(await Ee("/procurement/lines")).map(s=>_x(s))}async function xw(e){const t=await Ee("/procurement/lines",{method:"POST",body:JSON.stringify({articleId:e.articleId,supplierId:e.supplierId??null,quantity:e.quantity,price:e.price??0,status:e.status??"pending",sourceWorkOrderId:e.sourceWorkOrderId??e.productionOrderId??null,productionOrderId:e.productionOrderId??e.sourceWorkOrderId??null,notes:e.notes??""})});return _x(t)}function sf(e){const t=e.links??[];return{id:String(e.id),tenantId:String(e.tenantId??e.tenant_id??""),revisionId:String(e.revisionId??e.revision_id??""),articleId:String(e.articleId??e.article_id??""),name:String(e.name??"Standard-Route"),status:e.status??"draft",mappingConfig:e.mappingConfig??e.mapping_config??{},wizardState:e.wizardState??e.wizard_state??{},lockedBy:e.lockedBy??e.locked_by??null,lockedAt:e.lockedAt??e.locked_at,version:Number(e.version??1),links:t.map(r=>{const s=r;return{id:s.id?String(s.id):void 0,routeId:s.routeId?String(s.routeId):s.route_id?String(s.route_id):void 0,sequence:Number(s.sequence??10),stepType:s.stepType??s.step_type??"manual_checkpoint",label:String(s.label??""),machineId:s.machineId??s.machine_id??null,supplierId:s.supplierId??s.supplier_id??null,config:s.config??{},isRequired:!!(s.isRequired??s.is_required??!0)}}),createdAt:e.createdAt??e.created_at,updatedAt:e.updatedAt??e.updated_at}}async function Vl(e,t){const r=await Ee(`/articles/${e}/revisions/${t}/production/route`);return r?sf(r):null}async function ql(e,t,r){const s=await Ee(`/articles/${e}/revisions/${t}/production/route`,{method:"PUT",body:JSON.stringify({name:r.name??"Standard-Route",mappingConfig:r.mappingConfig??{},wizardState:r.wizardState,status:r.status})});return sf(s)}async function yw(e,t,r){const s=new FormData;s.append("file",r);try{return await ZN(`/articles/${e}/revisions/${t}/production/ingest/analyze`,s)}catch(a){if(a instanceof ut&&(a.status===404||a.status===405))return P0(r);throw a}}async function bw(e,t,r){const s=await Ee(`/articles/${e}/production/routes/${t}/links`,{method:"PUT",body:JSON.stringify({links:r})});return sf(s)}async function vw(e,t,r=!1){return Ee(`/articles/${e}/revisions/${t}/production/gate${r?"?require_route_steps=true":""}`)}async function Nw(e,t,r=1){const s=await Ee(`/articles/${e}/revisions/${t}/production/release`,{method:"POST",body:JSON.stringify({quantity:r})});return{snapshotId:String(s.snapshotId??s.snapshot_id),planningStatus:String(s.planningStatus??s.planning_status??"PLANNING_COMPLETE"),executionPath:String(s.executionPath??s.execution_path??"/fertigung")}}async function jw(e){const t=await Ee(`/snapshots/${e}`);return{id:String(t.id),workOrderId:String(t.workOrderId??t.work_order_id??""),workOrderNumber:t.workOrderNumber??t.work_order_number??null,articleNumber:t.articleNumber??t.article_number??null,articleName:t.articleName??t.article_name??null,quantity:Number(t.quantity??1),operations:t.operations??[],positions:t.positions??[],frozenAt:t.frozenAt??t.frozen_at??null,planningStatus:t.planningStatus??t.planning_status??null}}async function kw(e,t){await Ee(`/articles/${e}/revisions/${t}/lock`,{method:"POST"})}async function $p(e,t){await Ee(`/articles/${e}/revisions/${t}/lock`,{method:"DELETE"})}async function Ix(e){return(await Ee("/imports/staging-number-preview",{method:"POST",body:JSON.stringify(e),timeoutMs:3e5})).rows}async function ww(e){return(await Ee("/imports/ghost-suggest",{method:"POST",body:JSON.stringify(e)})).suggestions}async function af(e){return e.length?(await Ee("/imports/enqueue-enrichment",{method:"POST",body:JSON.stringify({articleIds:e})})).enqueued:0}async function Sw(e){return e.length?(await Ee("/imports/classify-preview",{method:"POST",body:JSON.stringify(e),timeoutMs:15e3})).results:[]}async function $d(e){const t=e!==void 0&&e!==""?`?format_id=${encodeURIComponent(e)}`:"";return(await Ee(`/imports/mapping-preferences${t}`)).preferences}async function Aw(e){return(await Ee("/imports/mapping-preferences",{method:"PUT",body:JSON.stringify({formatId:e.formatId??"",mappings:e.mappings})})).preferences}function Kp(e){const t=e&&typeof e=="object"?e:{};return{key:String(t.key??""),label:String(t.label??""),type:["text","number","select","boolean"].includes(String(t.type))?t.type:"text",options:Array.isArray(t.options)?t.options.map(String):[],required:!!t.required,unit:String(t.unit??""),computed:typeof t.computed=="str
76ing"&&t.computed?t.computed:void 0}}function of(e){const t=e&&typeof e=="object"?e:{},r=t.schemaConfig??t.schema_config;let s=[];if(Array.isArray(r))s=r.map(Kp);else if(typeof r=="string"&&r.trim())try{const i=JSON.parse(r);s=Array.isArray(i)?i.map(Kp):[]}catch{s=[]}const a=t.itemTypeDefinitionId??t.item_type_definition_id;if(!a||typeof a!="string")throw new Error(`Warengruppe "${String(t.name??t.id??"?")}" hat keine Artikelart-Verknüpfung (Migration 028 ausführen).`);return{id:String(t.id??""),tenantId:String(t.tenantId??t.tenant_id??""),name:String(t.name??""),icon:String(t.icon??"package"),itemType:String(t.itemType??t.item_type??"RAW_MATERIAL"),itemTypeDefinitionId:a,numberOffset:Number(t.numberOffset??t.number_offset??2e4),schemaConfig:s,createdAt:t.createdAt??t.created_at,updatedAt:t.updatedAt??t.updated_at}}async function lf(){return(await Ee("/type-configs")).map(of)}async function Cw(e){const t=await Ee("/type-configs",{method:"POST",body:JSON.stringify(e)});return of(t)}async function Ex(e,t){const r=await Ee(`/type-configs/${e}`,{method:"PATCH",body:JSON.stringify(t)});return of(r)}async function _w(e){await Ee(`/type-configs/${e}`,{method:"DELETE"})}function Qc(e){const t=String(e.behaviorType??e.behavior_type??"RAW_MATERIAL"),r=e.hasBom??e.has_bom,s=e.hasSourcing??e.has_sourcing,a=t==="RAW_MATERIAL"||t==="TRADED_GOOD"||t==="SERVICE";return{id:String(e.id??""),tenantId:String(e.tenantId??e.tenant_id??""),name:String(e.name??""),behaviorType:t,hasBom:r!=null?!!r:t==="SUBASSEMBLY"||t==="FINISHED_GOOD",hasSourcing:s!=null?!!s:a,sortOrder:Number(e.sortOrder??e.sort_order??0),numberPrefix:Number(e.numberPrefix??e.number_prefix??0),icon:String(e.icon??"package"),createdAt:e.createdAt??e.created_at,updatedAt:e.updatedAt??e.updated_at}}async function Ri(){return(await Ee("/item-type-definitions")).map(t=>Qc(t))}async function Iw(e){const t=await Ee("/item-type-definitions",{method:"POST",body:JSON.stringify(e)});return Qc(t)}async function El(e,t){const r=await Ee(`/item-type-definitions/${e}`,{method:"PATCH",body:JSON.stringify(t)});return Qc(r)}async function Ew(e){return(await Ee("/item-type-definitions/reorder",{method:"PUT",body:JSON.stringify({ids:e})})).map(r=>Qc(r))}async function Pw(e){await Ee(`/item-type-definitions/${e}`,{method:"DELETE"})}async function Tw(e){return Ee("/debug/replay-email-hold",{method:"POST",body:JSON.stringify(e)})}async function Dw(){const e=Ga(),t=new Headers;e&&t.set("Authorization",`Bearer ${e}`);const r=await fetch(`${Ti()}/api/v1/label-templates?active=1`,{headers:t});if(!r.ok){const a=await r.text().catch(()=>"");throw new ut(r.status,a||"Etikettenvorlagen konnten nicht geladen werden")}return(await r.json()).items??[]}async function Rw(e,t){const r=Ga(),s=new Headers({Accept:"image/svg+xml"});r&&s.set("Authorization",`Bearer ${r}`);const a=encodeURIComponent(e),i=await fetch(`${Ti()}/api/v1/articles/${a}/labels/${t}`,{headers:s});if(!i.ok){const o=await i.text().catch(()=>"");throw new ut(i.status,o||"Etikett konnte nicht gerendert werden")}return i.text()}function Fu(e){return{price:0,stock:0,currency:"USD",status:"error",message:e}}const Mw={id:"lcsc",async fetchPartData(e){const t=e.trim();if(!t)return Fu("MPN fehlt");try{const r=await tf(t);return r.status==="error"?Fu(r.message??`Kein LCSC-Treffer für â${t}"`):{price:r.price,stock:r.stock,currency:r.currency,status:"ok"}}catch(r){const s=r instanceof Error?r.message:"LCSC-Anfrage fehlgeschlagen";return Fu(s)}}},Ow=1800*1e3,Kd=new Map,Lw={lcsc:"lcsc",jlc:"lcsc","jlc/lcsc":"lcsc",jlc_pcba:"lcsc"},Vd={lcsc:Mw};function Vp(e){const t=e.trim().toLowerCase();if(!t)return null;const r=Lw[t];return r&&Vd[r]?r:null}function zw(e,t){return`${e}:${t.trim().toUpperCase()}`}function Bw(e){const t=Kd.get(e);return t?t.expiry<=Date.now()?(Kd.delete(e),null):t.data:null}function Fw(e,t){Kd.set(e,{data:t,expiry:Date.now()+Ow})}class $s{static hasConnector(t){return Vp(t)!=null}static listConnectors(){return Object.keys(Vd)}static async fetchPartData(t,r){const s=Vp(t);if(!s)return{price:0,stock:0,currency:"USD",status:"error",message:`Kein Connector für Lieferant â${t}"`};const a=zw(s,r),i=Bw(a);if(i)return i;const l=await Vd[s].fetchPartData(r);return l.status==="ok"&&Fw(a,l),l}}async function $w(e){return $s.fetchPartData(e.supplier,e.mpn)}function Kw(e){return $s.hasConnector(e)}const UR={appName:"production",systemPrompts:["Du bist ein Fertigungs-Assistent für Stücklisten, Bauteile und Lieferantenpreise.","Zum Abrufen von Bauteil-Daten eines Lieferanten: fetch_supplier_part_data."],tools:[{name:"fetch_supplier_part_data",description:"Ruft Preis, Verfügbarkeit und Datenblatt eines Bauteils bei einem Lieferanten ab (z. B. LCSC). Benötigt supplier und MPN.",parameters:wp({supplier:kp().min(1),mpn:kp().min(1)})},{name:"list_supplier_connectors",description:"Listet verfügbare Lieferanten-Konnektoren (z. B. LCSC).",parameters:wp({})}],async executeTool(e,t){switch(e){case"fetch_supplier_part_data":return $w(t);case"list_supplier_connectors":return{connectors:["LCSC"].map(s=>({name:s,available:Kw(s)}))};default:throw new Error(`Unknown tool: ${e}`)}}};var Ul={exports:{}},Vw=Ul.exports,qp;function qw(){return qp||(qp=1,(function(e,t){((r,s)=>{e.exports=s()})(Vw,function(){var r=function(c,f){return(r=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(g,y){g.__proto__=y}:function(g,y){for(var N in y)Object.prototype.hasOwnProperty.call(y,N)&&(g[N]=y[N])}))(c,f)},s=function(){return(s=Object.assign||function(c){for(var f,g=1,y=arguments.length;g<y;g++)for(var N in f=arguments[g])Object.prototype.hasOwnProperty.call(f,N)&&(c[N]=f[N]);return c}).apply(this,arguments)};function a(c,f,g){for(var y,N=0,_=f.length;N<_;N++)!y&&N in f||((y=y||Array.prototype.slice.call(f,0,N))[N]=f[N]);return c.concat(y||Array.prototype.slice.call(f))}var i=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:Fv,o=Object.keys,l=Array.isArray;function d(c,f){return typeof f=="object"&&o(f).forEach(function(g){c[g]=f[g]}),c}typeof Promise>"u"||i.Promise||(i.Promise=Promise);var m=Object.getPrototypeOf,p={}.hasOwnProperty;function h(c,f){return p.call(c,f)}function x(c,f){typeof f=="function"&&(f=f(m(c))),(typeof Reflect>"u"?o:Reflect.ownKeys)(f).forEach(function(g){w(c,g,f[g])})}var b=Object.defineProperty;function w(c,f,g,y){b(c,f,d(g&&h(g,"get")&&typeof g.get=="function"?{get:g.get,set:g.set,configurable:!0}:{value:g,configurable:!0,writable:!0},y))}function v(c){return{from:function(f){return c.prototype=Object.create(f.prototype),w(c.prototype,"constructor",c),{extend:x.bind(null,c.prototype)}}}}var S=Object.getOwnPropertyDescriptor,R=[].slice;function E(c,f,g){return R.call(c,f,g)}function A(c,f){return f(c)}function I(c){if(!c)throw new Error("Assertion Failed")}function C(c){i.setImmediate?setImmediate(c):setTimeout(c,0)}function k(c,f){if(typeof f=="string"&&h(c,f))return c[f];if(!f)return c;if(typeof f!="string"){for(var g=[],y=0,N=f.length;y<N;++y){var _=k(c,f[y]);g.push(_)}return g}var O,F=f.indexOf(".");return F===-1||(O=c[f.substr(0,F)])==null?void 0:k(O,f.substr(F+1))}function j(c,f,g){if(c&&f!==void 0&&!("isFrozen"in Object&&Object.isFrozen(c)))if(typeof f!="string"&&"length"in f){I(typeof g!="string"&&"length"in g);for(var y=0,N=f.length;y<N;++y)j(c,f[y],g[y])}else{var _=f.indexOf(".");if(_!==-1){var O=f.substr(0,_),_=f.substr(_+1);if(_==="")g===void 0?l(c)&&!isNaN(parseInt(O))?c.splice(O,1):delete c[O]:c[O]=g;else{var F=c[O];if(!F||!h(c,O)){if(g===void 0)return;F=c[O]={}}j(F,_,g)}}else g===void 0?l(c)&&!isNaN(parseInt(f))?c.splice(f,1):delete c[f]:c[f]=g}}function z(c){var f,g={};for(f in c)h(c,f)&&(g[f]=c[f]);return g}var D=[].concat;function B(c){return D.apply([],c)}var Q="BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(B([8,16,32,64].map(function(c){return["Int","Uint","Float"].map(function(f){return f+c+"Array"})}))).filter(function(c){return i[c]}),T=new Set(Q.map(function(c){return i[c]})),P=null;function G(c){return P=new WeakMap,c=(function f(g){if(!g||typeof g!="object")return g;var y=P.get(g);if(y)return y;if(l(g)){y=[],P.set(g,y);for(var N=0,_=g.length;N<_;++N)y.push(f(g[N]))}else if(T.has(g.constructor))y=g;else{var O,F=m(g);for(O in y=F===Object.prototype?{}:Object.create(F),P.set(g,y),g)h(g,O)&&(y[O]=f(g[O]))}return y})(c),P=null,c}var W={}.toString;function ke(c){return W.call(c).slice(8,-1)}var L=typeof Symbol<"u"?Symbol.iterator:"@@iterator",xe=typeof L=="symbol"?function(c){var f;return c!=null&&(f=c[L])&&f.apply(c)}:function(){return null};function Y(c,f){f=c.indexOf(f),0<=f&&c.splice(f,1)}var Ne={};function se(c){var f,g,y,N;if(arguments.length===1){if(l(c))return c.slice();if(this===Ne&&typeof c=="string")return[c];if(N=xe(c))for(g=[];!(y=N.next()).done;)g.push(y.value);else{if(c==null)return[c];if(typeof(f=c.length)!="number")return[c];for(g=new Array(f);f--;)g[f]=c[f]}}else for(f=arguments.length,g=new Array(f);f--;)g[f]=arguments[f];return g}var J=typeof Symbol<"u"?function(c){return c[Symbol.toStringTag]==="AsyncFunction"}:function(){return!1},Q=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],qt=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"].concat(Q),U={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function ne(c,f){this.name=c,this.message=f}function H(c,f){return c+". Errors: "+Object.keys(f).map(function(g){return f[g].toString()}).filter(function(g,y,N){return N.indexOf(g)===y}).join(` 77`)}function Z(c,f,g,y){this.failures=f,this.failedKeys=y,this.successCount=g,this.message=H(c,f)}function K(c,f){this.name="BulkError",this.failures=Object.keys(f).map(function(g){return f[g]}),this.failuresByPos=f,this.message=H(c,this.failures)}v(ne).from(Error).extend({toString:function(){return this.name+": "+this.message}}),v(Z).from(ne),v(K).from(ne);var me=qt.reduce(function(c,f){return c[f]=f+"Error",c},{}),$=ne,X=qt.reduce(function(c,f){var g=f+"Error";function y(N,_){this.name=g,N?typeof N=="string"?(this.message="".concat(N).concat(_?` 78 `+_:""),this.inner=_||null):typeof N=="object"&&(this.message="".concat(N.name," ").concat(N.message),this.inner=N):(this.message=U[f]||g,this.inner=null)}return v(y).from($),c[f]=y,c},{}),Ie=(X.Syntax=SyntaxError,X.Type=TypeError,X.Range=RangeError,Q.reduce(function(c,f){return c[f+"Error"]=X[f],c},{}));Q=qt.reduce(function(c,f){return["Syntax","Type","Range"].indexOf(f)===-1&&(c[f+"Error"]=X[f]),c},{});function V(){}function Se(c){return c}function Ce(c,f){return c==null||c===Se?f:function(g){return f(c(g))}}function Be(c,f){return function(){c.apply(this,arguments),f.apply(this,arguments)}}function Le(c,f){return c===V?f:function(){var g=c.apply(this,arguments),y=(g!==void 0&&(arguments[0]=g),this.onsuccess),N=this.onerror,_=(this.onsuccess=null,this.onerror=null,f.apply(this,arguments));return y&&(this.onsuccess=this.onsuccess?Be(y,this.onsuccess):y),N&&(this.onerror=this.onerror?Be(N,this.onerror):N),_!==void 0?_:g}}function rt(c,f){return c===V?f:function(){c.apply(this,arguments);var g=this.onsuccess,y=this.onerror;this.onsuccess=this.onerror=null,f.apply(this,arguments),g&&(this.onsuccess=this.onsuccess?Be(g,this.onsuccess):g),y&&(this.onerror=this.onerror?Be(y,this.onerror):y)}}function lt(c,f){return c===V?f:function(N){var y=c.apply(this,arguments),N=(d(N,y),this.onsuccess),_=this.onerror,O=(this.onsuccess=null,this.onerror=null,f.apply(this,arguments));return N&&(this.onsuccess=this.onsuccess?Be(N,this.onsuccess):N),_&&(this.onerror=this.onerror?Be(_,this.onerror):_),y===void 0?O===void 0?void 0:O:d(y,O)}}function Tt(c,f){return c===V?f:function(){return f.apply(this,arguments)!==!1&&c.apply(this,arguments)}}function vt(c,f){return c===V?f:function(){var g=c.apply(this,arguments);if(g&&typeof g.then=="function"){for(var y=this,N=arguments.length,_=new Array(N);N--;)_[N]=arguments[N];return g.then(function(){return f.apply(y,_)})}return f.apply(this,arguments)}}Q.ModifyError=Z,Q.DexieError=ne,Q.BulkError=K;var Pe=typeof location<"u"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function it(c){Pe=c}var yt={},wt=100,an=typeof Promise>"u"?[]:(qt=Promise.resolve(),typeof crypto<"u"&&crypto.subtle?[an=crypto.subtle.digest("SHA-512",new Uint8Array([0])),m(an),qt]:[qt,m(qt),qt]),qt=an[0],ni=an[1],ni=ni&&ni.then,Qt=qt&&qt.constructor,en=!!an[2],Wt=function(c,f){_e.push([c,f]),mn&&(queueMicrotask(_n),mn=!1)},on=!0,mn=!0,ln=[],cn=[],Oe=Se,re={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:V,pgp:!1,env:{},finalize:V},ve=re,_e=[],te=0,nt=[];function Fe(c){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this._lib=!1;var f=this._PSD=ve;if(typeof c!="function"){if(c!==yt)throw new TypeError("Not a function");this._state=arguments[1],this._value=arguments[2],this._state===!1&&ge(this,this._value)}else this._state=null,this._value=null,++f.ref,(function g(y,N){try{N(function(_){if(y._state===null){if(_===y)throw new TypeError("A promise cannot be resolved with itself.");var O=y._lib&&wn();_&&typeof _.then=="function"?g(y,function(F,ie){_ instanceof Fe?_._then(F,ie):_.then(F,ie)}):(y._state=!0,y._value=_,He(y)),O&&vn()}},ge.bind(null,y))}catch(_){ge(y,_)}})(this,c)}var be={get:function(){var c=ve,f=pr;function g(y,N){var _=this,O=!c.global&&(c!==ve||f!==pr),F=O&&!zn(),ie=new Fe(function(je,le){hn(_,new Ye(br(y,c,O,F),br(N,c,O,F),je,le,c))});return this._consoleTask&&(ie._consoleTask=this._consoleTask),ie}return g.prototype=yt,g},set:function(c){w(this,"then",c&&c.prototype===yt?be:{get:function(){return c},set:be.set})}};function Ye(c,f,g,y,N){this.onFulfilled=typeof c=="function"?c:null,this.onRejected=typeof f=="function"?f:null,this.resolve=g,this.reject=y,this.psd=N}function ge(c,f){var g,y;cn.push(f),c._state===null&&(g=c._lib&&wn(),f=Oe(f),c._state=!1,
vendor: 88,190 bytes, line 78
78c._value=f,y=c,ln.some(function(N){return N._value===y._value})||ln.push(y),He(c),g)&&vn()}function He(c){var f=c._listeners;c._listeners=[];for(var g=0,y=f.length;g<y;++g)hn(c,f[g]);var N=c._PSD;--N.ref||N.finalize(),te===0&&(++te,Wt(function(){--te==0&&fn()},[]))}function hn(c,f){if(c._state===null)c._listeners.push(f);else{var g=c._state?f.onFulfilled:f.onRejected;if(g===null)return(c._state?f.resolve:f.reject)(c._value);++f.psd.ref,++te,Wt(Ht,[g,c,f])}}function Ht(c,f,g){try{var y,N=f._value;!f._state&&cn.length&&(cn=[]),y=Pe&&f._consoleTask?f._consoleTask.run(function(){return c(N)}):c(N),f._state||cn.indexOf(N)!==-1||(_=>{for(var O=ln.length;O;)if(ln[--O]._value===_._value)return ln.splice(O,1)})(f),g.resolve(y)}catch(_){g.reject(_)}finally{--te==0&&fn(),--g.psd.ref||g.psd.finalize()}}function _n(){gn(re,function(){wn()&&vn()})}function wn(){var c=on;return mn=on=!1,c}function vn(){var c,f,g;do for(;0<_e.length;)for(c=_e,_e=[],g=c.length,f=0;f<g;++f){var y=c[f];y[0].apply(null,y[1])}while(0<_e.length);mn=on=!0}function fn(){for(var c=ln,f=(ln=[],c.forEach(function(y){y._PSD.onunhandled.call(null,y._value,y)}),nt.slice(0)),g=f.length;g;)f[--g]()}function Nn(c){return new Fe(yt,!1,c)}function zt(c,f){var g=ve;return function(){var y=wn(),N=ve;try{return Bt(g,!0),c.apply(this,arguments)}catch(_){f&&f(_)}finally{Bt(N,!1),y&&vn()}}}x(Fe.prototype,{then:be,_then:function(c,f){hn(this,new Ye(null,null,c,f,ve))},catch:function(c){var f,g;return arguments.length===1?this.then(null,c):(f=c,g=arguments[1],typeof f=="function"?this.then(null,function(y){return(y instanceof f?g:Nn)(y)}):this.then(null,function(y){return(y&&y.name===f?g:Nn)(y)}))},finally:function(c){return this.then(function(f){return Fe.resolve(c()).then(function(){return f})},function(f){return Fe.resolve(c()).then(function(){return Nn(f)})})},timeout:function(c,f){var g=this;return c<1/0?new Fe(function(y,N){var _=setTimeout(function(){return N(new X.Timeout(f))},c);g.then(y,N).finally(clearTimeout.bind(null,_))}):this}}),typeof Symbol<"u"&&Symbol.toStringTag&&w(Fe.prototype,Symbol.toStringTag,"Dexie.Promise"),re.env=un(),x(Fe,{all:function(){var c=se.apply(null,arguments).map(Ar);return new Fe(function(f,g){c.length===0&&f([]);var y=c.length;c.forEach(function(N,_){return Fe.resolve(N).then(function(O){c[_]=O,--y||f(c)},g)})})},resolve:function(c){return c instanceof Fe?c:c&&typeof c.then=="function"?new Fe(function(f,g){c.then(f,g)}):new Fe(yt,!0,c)},reject:Nn,race:function(){var c=se.apply(null,arguments).map(Ar);return new Fe(function(f,g){c.map(function(y){return Fe.resolve(y).then(f,g)})})},PSD:{get:function(){return ve},set:function(c){return ve=c}},totalEchoes:{get:function(){return pr}},newPSD:yr,usePSD:gn,scheduler:{get:function(){return Wt},set:function(c){Wt=c}},rejectionMapper:{get:function(){return Oe},set:function(c){Oe=c}},follow:function(c,f){return new Fe(function(g,y){return yr(function(N,_){var O=ve;O.unhandleds=[],O.onunhandled=_,O.finalize=Be(function(){var F,ie=this;F=function(){ie.unhandleds.length===0?N():_(ie.unhandleds[0])},nt.push(function je(){F(),nt.splice(nt.indexOf(je),1)}),++te,Wt(function(){--te==0&&fn()},[])},O.finalize),c()},f,g,y)})}}),Qt&&(Qt.allSettled&&w(Fe,"allSettled",function(){var c=se.apply(null,arguments).map(Ar);return new Fe(function(f){c.length===0&&f([]);var g=c.length,y=new Array(g);c.forEach(function(N,_){return Fe.resolve(N).then(function(O){return y[_]={status:"fulfilled",value:O}},function(O){return y[_]={status:"rejected",reason:O}}).then(function(){return--g||f(y)})})})}),Qt.any&&typeof AggregateError<"u"&&w(Fe,"any",function(){var c=se.apply(null,arguments).map(Ar);return new Fe(function(f,g){c.length===0&&g(new AggregateError([]));var y=c.length,N=new Array(y);c.forEach(function(_,O){return Fe.resolve(_).then(function(F){return f(F)},function(F){N[O]=F,--y||g(new AggregateError(N))})})})}),Qt.withResolvers)&&(Fe.withResolvers=Qt.withResolvers);var tn={awaits:0,echoes:0,id:0},On=0,An=[],Ln=0,pr=0,Un=0;function yr(c,O,g,y){var N=ve,_=Object.create(N),O=(_.parent=N,_.ref=0,_.global=!1,_.id=++Un,re.env,_.env=en?{Promise:Fe,PromiseProp:{value:Fe,configurable:!0,writable:!0},all:Fe.all,race:Fe.race,allSettled:Fe.allSettled,any:Fe.any,resolve:Fe.resolve,reject:Fe.reject}:{},O&&d(_,O),++N.ref,_.finalize=function(){--this.parent.ref||this.parent.finalize()},gn(_,c,g,y));return _.ref===0&&_.finalize(),O}function Sr(){return tn.id||(tn.id=++On),++tn.awaits,tn.echoes+=wt,tn.id}function zn(){return!!tn.awaits&&(--tn.awaits==0&&(tn.id=0),tn.echoes=tn.awaits*wt,!0)}function Ar(c){return tn.echoes&&c&&c.constructor===Qt?(Sr(),c.then(function(f){return zn(),f},function(f){return zn(),xn(f)})):c}function We(){var c=An[An.length-1];An.pop(),Bt(c,!1)}function Bt(c,f){var g,y,N=ve;(f?!tn.echoes||Ln++&&c===ve:!Ln||--Ln&&c===ve)||queueMicrotask(f?(function(_){++pr,tn.echoes&&--tn.echoes!=0||(tn.echoes=tn.awaits=tn.id=0),An.push(ve),Bt(_,!0)}).bind(null,c):We),c!==ve&&(ve=c,N===re&&(re.env=un()),en)&&(g=re.env.Promise,y=c.env,N.global||c.global)&&(Object.defineProperty(i,"Promise",y.PromiseProp),g.all=y.all,g.race=y.race,g.resolve=y.resolve,g.reject=y.reject,y.allSettled&&(g.allSettled=y.allSettled),y.any)&&(g.any=y.any)}function un(){var c=i.Promise;return en?{Promise:c,PromiseProp:Object.getOwnPropertyDescriptor(i,"Promise"),all:c.all,race:c.race,allSettled:c.allSettled,any:c.any,resolve:c.resolve,reject:c.reject}:{}}function gn(c,f,g,y,N){var _=ve;try{return Bt(c,!0),f(g,y,N)}finally{Bt(_,!1)}}function br(c,f,g,y){return typeof c!="function"?c:function(){var N=ve;g&&Sr(),Bt(f,!0);try{return c.apply(this,arguments)}finally{Bt(N,!1),y&&queueMicrotask(zn)}}}function Pr(c){Promise===Qt&&tn.echoes===0?Ln===0?c():enqueueNativeMicroTask(c):setTimeout(c,0)}(""+ni).indexOf("[native code]")===-1&&(Sr=zn=V);var xn=Fe.reject,Wn="ï¿¿",Kn="Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.",$r="String expected.",Jr="__dbnames",er="readonly",Vn="readwrite";function yn(c,f){return c?f?function(){return c.apply(this,arguments)&&f.apply(this,arguments)}:c:f}var Qr={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Cs(c){return typeof c!="string"||/\./.test(c)?function(f){return f}:function(f){return f[c]===void 0&&c in f&&delete(f=G(f))[c],f}}function Sa(){throw X.Type("Entity instances must never be new:ed. Instances are generated by the framework bypassing the constructor.")}function Zt(c,f){try{var g=pe(c),y=pe(f);if(g!==y)return g==="Array"?1:y==="Array"?-1:g==="binary"?1:y==="binary"?-1:g==="string"?1:y==="string"?-1:g==="Date"?1:y!=="Date"?NaN:-1;switch(g){case"number":case"Date":case"string":return f<c?1:c<f?-1:0;case"binary":for(var N=$e(c),_=$e(f),O=N.length,F=_.length,ie=O<F?O:F,je=0;je<ie;++je)if(N[je]!==_[je])return N[je]<_[je]?-1:1;return O===F?0:O<F?-1:1;case"Array":for(var le=c,ae=f,oe=le.length,he=ae.length,ue=oe<he?oe:he,ce=0;ce<ue;++ce){var de=Zt(le[ce],ae[ce]);if(de!==0)return de}return oe===he?0:oe<he?-1:1}}catch{}return NaN}function pe(c){var f=typeof c;return f=="object"&&(ArrayBuffer.isView(c)||(f=ke(c))==="ArrayBuffer")?"binary":f}function $e(c){return c instanceof Uint8Array?c:ArrayBuffer.isView(c)?new Uint8Array(c.buffer,c.byteOffset,c.byteLength):new Uint8Array(c)}function st(c,f,g){var y=c.schema.yProps;return y?(f&&0<g.numFailures&&(f=f.filter(function(N,_){return!g.failures[_]})),Promise.all(y.map(function(N){return N=N.updatesTable,f?c.db.table(N).where("k").anyOf(f).delete():c.db.table(N).clear()})).then(function(){return g})):g}Gt.prototype.execute=function(c){var f=this["@@propmod"];if(f.add!==void 0){var g=f.add;if(l(g))return a(a([],l(c)?c:[],!0),g).sort();if(typeof g=="number")return(Number(c)||0)+g;if(typeof g=="bigint")try{return BigInt(c)+g}catch{return BigInt(0)+g}throw new TypeError("Invalid term ".concat(g))}if(f.remove!==void 0){var y=f.remove;if(l(y))return l(c)?c.filter(function(N){return!y.includes(N)}).sort():[];if(typeof y=="number")return Number(c)-y;if(typeof y=="bigint")try{return BigInt(c)-y}catch{return BigInt(0)-y}throw new TypeError("Invalid subtrahend ".concat(y))}return g=(g=f.replacePrefix)==null?void 0:g[0],g&&typeof c=="string"&&c.startsWith(g)?f.replacePrefix[1]+c.substring(g.length):c};var ct=Gt;function Gt(c){this["@@propmod"]=c}function Mt(c,f){for(var g=o(f),y=g.length,N=!1,_=0;_<y;++_){var O=g[_],F=f[O],ie=k(c,O);F instanceof ct?(j(c,O,F.execute(ie)),N=!0):ie!==F&&(j(c,O,F),N=!0)}return N}Ot.prototype._trans=function(c,f,g){var y=this._tx||ve.trans,N=this.name,_=Pe&&typeof console<"u"&&console.createTask&&console.createTask("Dexie: ".concat(c==="readonly"?"read":"write"," ").concat(this.name));function O(je,le,ae){if(ae.schema[N])return f(ae.idbtrans,ae);throw new X.NotFound("Table "+N+" not part of transaction")}var F=wn();try{var ie=y&&y.db._novip===this.db._novip?y===ve.trans?y._promise(c,O,g):yr(function(){return y._promise(c,O,g)},{trans:y,transless:ve.transless||ve}):(function je(le,ae,oe,he){if(le.idbdb&&(le._state.openComplete||ve.letThrough||le._vip)){var ue=le._createTransaction(ae,oe,le._dbSchema);try{ue.create(),le._state.PR1398_maxLoop=3}catch(ce){return ce.name===me.InvalidState&&le.isOpen()&&0<--le._state.PR1398_maxLoop?(console.warn("Dexie: Need to reopen db"),le.close({disableAutoOpen:!1}),le.open().then(function(){return je(le,ae,oe,he)})):xn(ce)}return ue._promise(ae,function(ce,de){return yr(function(){return ve.trans=ue,he(ce,de,ue)})}).then(function(ce){if(ae==="readwrite")try{ue.idbtrans.commit()}catch{}return ae==="readonly"?ce:ue._completion.then(function(){return ce})})}if(le._state.openComplete)return xn(new X.DatabaseClosed(le._state.dbOpenError));if(!le._state.isBeingOpened){if(!le._state.autoOpen)return xn(new X.DatabaseClosed);le.open().catch(V)}return le._state.dbReadyPromise.then(function(){return je(le,ae,oe,he)})})(this.db,c,[this.name],O);return _&&(ie._consoleTask=_,ie=ie.catch(function(je){return console.trace(je),xn(je)})),ie}finally{F&&vn()}},Ot.prototype.get=function(c,f){var g=this;return c&&c.constructor===Object?this.where(c).first(f):c==null?xn(new X.Type("Invalid argument to Table.get()")):this._trans("readonly",function(y){return g.core.get({trans:y,key:c}).then(function(N){return g.hook.reading.fire(N)})}).then(f)},Ot.prototype.where=function(c){if(typeof c=="string")return new this.db.WhereClause(this,c);if(l(c))return new this.db.WhereClause(this,"[".concat(c.join("+"),"]"));var f=o(c);if(f.length===1)return this.where(f[0]).equals(c[f[0]]);var g=this.schema.indexes.concat(this.schema.primKey).filter(function(F){if(F.compound&&f.every(function(je){return 0<=F.keyPath.indexOf(je)})){for(var ie=0;ie<f.length;++ie)if(f.indexOf(F.keyPath[ie])===-1)return!1;return!0}return!1}).sort(function(F,ie){return F.keyPath.length-ie.keyPath.length})[0];if(g&&this.db._maxKey!==Wn)return O=g.keyPath.slice(0,f.length),this.where(O).equals(O.map(function(F){return c[F]}));!g&&Pe&&console.warn("The query ".concat(JSON.stringify(c)," on ").concat(this.name," would benefit from a ")+"compound index [".concat(f.join("+"),"]"));var y=this.schema.idxByName;function N(F,ie){return Zt(F,ie)===0}var O=f.reduce(function(le,ie){var je=le[0],le=le[1],ae=y[ie],oe=c[ie];return[je||ae,je||!ae?yn(le,ae&&ae.multi?function(he){return he=k(he,ie),l(he)&&he.some(function(ue){return N(oe,ue)})}:function(he){return N(oe,k(he,ie))}):le]},[null,null]),_=O[0],O=O[1];return _?this.where(_.name).equals(c[_.keyPath]).filter(O):g?this.filter(O):this.where(f).equals("")},Ot.prototype.filter=function(c){return this.toCollection().and(c)},Ot.prototype.count=function(c){return this.toCollection().count(c)},Ot.prototype.offset=function(c){return this.toCollection().offset(c)},Ot.prototype.limit=function(c){return this.toCollection().limit(c)},Ot.prototype.each=function(c){return this.toCollection().each(c)},Ot.prototype.toArray=function(c){return this.toCollection().toArray(c)},Ot.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},Ot.prototype.orderBy=function(c){return new this.db.Collection(new this.db.WhereClause(this,l(c)?"[".concat(c.join("+"),"]"):c))},Ot.prototype.reverse=function(){return this.toCollection().reverse()},Ot.prototype.mapToClass=function(c){for(var f=this.db,g=this.name,y=((this.schema.mappedClass=c).prototype instanceof Sa&&(c=(O=>{var F=le,ie=O;if(typeof ie!="function"&&ie!==null)throw new TypeError("Class extends value "+String(ie)+" is not a constructor or null");function je(){this.constructor=F}function le(){return O!==null&&O.apply(this,arguments)||this}return r(F,ie),F.prototype=ie===null?Object.create(ie):(je.prototype=ie.prototype,new je),Object.defineProperty(le.prototype,"db",{get:function(){return f},enumerable:!1,configurable:!0}),le.prototype.table=function(){return g},le})(c)),new Set),N=c.prototype;N;N=m(N))Object.getOwnPropertyNames(N).forEach(function(O){return y.add(O)});function _(O){if(!O)return O;var F,ie=Object.create(c.prototype);for(F in O)if(!y.has(F))try{ie[F]=O[F]}catch{}return ie}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=_,this.hook("reading",_),c},Ot.prototype.defineClass=function(){return this.mapToClass(function(c){d(this,c)})},Ot.prototype.add=function(c,f){var g=this,y=this.schema.primKey,N=y.auto,_=y.keyPath,O=c;return _&&N&&(O=Cs(_)(c)),this._trans("readwrite",function(F){return g.core.mutate({trans:F,type:"add",keys:f!=null?[f]:null,values:[O]})}).then(function(F){return F.numFailures?Fe.reject(F.failures[0]):F.lastResult}).then(function(F){if(_)try{j(c,_,F)}catch{}return F})},Ot.prototype.upsert=function(c,f){var g=this,y=this.schema.primKey.keyPath;return this._trans("readwrite",function(N){return g.core.get({trans:N,key:c}).then(function(_){var O=_??{};return Mt(O,f),y&&j(O,y,c),g.core.mutate({trans:N,type:"put",values:[O],keys:[c],upsert:!0,updates:{keys:[c],changeSpecs:[f]}}).then(function(F){return F.numFailures?Fe.reject(F.failures[0]):!!_})})})},Ot.prototype.update=function(c,f){return typeof c!="object"||l(c)?this.where(":id").equals(c).modify(f):(c=k(c,this.schema.primKey.keyPath))===void 0?xn(new X.InvalidArgument("Given object does not contain its primary key")):this.where(":id").equals(c).modify(f)},Ot.prototype.put=function(c,f){var g=this,y=this.schema.primKey,N=y.auto,_=y.keyPath,O=c;return _&&N&&(O=Cs(_)(c)),this._trans("readwrite",function(F){return g.core.mutate({trans:F,type:"put",values:[O],keys:f!=null?[f]:null})}).then(function(F){return F.numFailures?Fe.reject(F.failures[0]):F.lastResult}).then(function(F){if(_)try{j(c,_,F)}catch{}return F})},Ot.prototype.delete=function(c){var f=this;return this._trans("readwrite",function(g){return f.core.mutate({trans:g,type:"delete",keys:[c]}).then(function(y){return st(f,[c],y)}).then(function(y){return y.numFailures?Fe.reject(y.failures[0]):void 0})})},Ot.prototype.clear=function(){var c=this;return this._trans("readwrite",function(f){return c.core.mutate({trans:f,type:"deleteRange",range:Qr}).then(function(g){return st(c,null,g)})}).then(function(f){return f.numFailures?Fe.reject(f.failures[0]):void 0})},Ot.prototype.bulkGet=function(c){var f=this;return this._trans("readonly",function(g){return f.core.getMany({keys:c,trans:g}).then(function(y){return y.map(function(N){return f.hook.reading.fire(N)})})})},Ot.prototype.bulkAdd=function(c,f,g){var y=this,N=Array.isArray(f)?f:void 0,_=(g=g||(N?void 0:f))?g.allKeys:void 0;return this._trans("readwrite",function(O){var F=y.schema.primKey,je=F.auto,F=F.keyPath;if(F&&N)throw new X.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(N&&N.length!==c.length)throw new X.InvalidArgument("Arguments objects and keys must have the same length");var ie=c.length,je=F&&je?c.map(Cs(F)):c;return y.core.mutate({trans:O,type:"add",keys:N,values:je,wantResults:_}).then(function(le){var ae=le.numFailures,oe=le.failures;if(ae===0)return _?le.results:le.lastResult;throw new K("".concat(y.name,".bulkAdd(): ").concat(ae," of ").concat(ie," operations failed"),oe)})})},Ot.prototype.bulkPut=function(c,f,g){var y=this,N=Array.isArray(f)?f:void 0,_=(g=g||(N?void 0:f))?g.allKeys:void 0;return this._trans("readwrite",function(O){var F=y.schema.primKey,je=F.auto,F=F.keyPath;if(F&&N)throw new X.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(N&&N.length!==c.length)throw new X.InvalidArgument("Arguments objects and keys must have the same length");var ie=c.length,je=F&&je?c.map(Cs(F)):c;return y.core.mutate({trans:O,type:"put",keys:N,values:je,wantResults:_}).then(function(le){var ae=le.numFailures,oe=le.failures;if(ae===0)return _?le.results:le.lastResult;throw new K("".concat(y.name,".bulkPut(): ").concat(ae," of ").concat(ie," operations failed"),oe)})})},Ot.prototype.bulkUpdate=function(c){var f=this,g=this.core,y=c.map(function(O){return O.key}),N=c.map(function(O){return O.changes}),_=[];return this._trans("readwrite",function(O){return g.getMany({trans:O,keys:y,cache:"clone"}).then(function(F){var ie=[],je=[],le=(c.forEach(function(ae,oe){var he=ae.key,ue=ae.changes,ce=F[oe];if(ce){for(var de=0,Ae=Object.keys(ue);de<Ae.length;de++){var we=Ae[de],Te=ue[we];if(we===f.schema.primKey.keyPath){if(Zt(Te,he)!==0)throw new X.Constraint("Cannot update primary key in bulkUpdate()")}else j(ce,we,Te)}_.push(oe),ie.push(he),je.push(ce)}}),ie.length);return g.mutate({trans:O,type:"put",keys:ie,values:je,updates:{keys:y,changeSpecs:N}}).then(function(ae){var oe=ae.numFailures,he=ae.failures;if(oe===0)return le;for(var ue=0,ce=Object.keys(he);ue<ce.length;ue++){var de,Ae=ce[ue],we=_[Number(Ae)];we!=null&&(de=he[Ae],delete he[Ae],he[we]=de)}throw new K("".concat(f.name,".bulkUpdate(): ").concat(oe," of ").concat(le," operations failed"),he)})})})},Ot.prototype.bulkDelete=function(c){var f=this,g=c.length;return this._trans("readwrite",function(y){return f.core.mutate({trans:y,type:"delete",keys:c}).then(function(N){return st(f,c,N)})}).then(function(y){var N=y.numFailures,_=y.failures;if(N===0)return y.lastResult;throw new K("".concat(f.name,".bulkDelete(): ").concat(N," of ").concat(g," operations failed"),_)})};var Yt=Ot;function Ot(){}function Nt(c){function f(O,F){if(F){for(var ie=arguments.length,je=new Array(ie-1);--ie;)je[ie-1]=arguments[ie];return g[O].subscribe.apply(null,je),c}if(typeof O=="string")return g[O]}var g={};f.addEventType=_;for(var y=1,N=arguments.length;y<N;++y)_(arguments[y]);return f;function _(O,F,ie){var je,le;if(typeof O!="object")return F=F||Tt,le={subscribers:[],fire:ie=ie||V,subscribe:function(ae){le.subscribers.indexOf(ae)===-1&&(le.subscribers.push(ae),le.fire=F(le.fire,ae))},unsubscribe:function(ae){le.subscribers=le.subscribers.filter(function(oe){return oe!==ae}),le.fire=le.subscribers.reduce(F,ie)}},g[O]=f[O]=le;o(je=O).forEach(function(ae){var oe=je[ae];if(l(oe))_(ae,je[ae][0],je[ae][1]);else{if(oe!=="asap")throw new X.InvalidArgument("Invalid event config");var he=_(ae,Se,function(){for(var ue=arguments.length,ce=new Array(ue);ue--;)ce[ue]=arguments[ue];he.subscribers.forEach(function(de){C(function(){de.apply(null,ce)})})})}})}}function gt(c,f){return v(f).from({prototype:c}),f}function sn(c,f){return!(c.filter||c.algorithm||c.or)&&(f?c.justLimit:!c.replayFilter)}function Cn(c,f){c.filter=yn(c.filter,f)}function vr(c,f,g){var y=c.replayFilter;c.replayFilter=y?function(){return yn(y(),f())}:f,c.justLimit=g&&!y}function Xt(c,f){if(c.isPrimKey)return f.primaryKey;var g=f.getIndexByKeyPath(c.index);if(g)return g;throw new X.Schema("KeyPath "+c.index+" on object store "+f.name+" is not indexed")}function tr(c,f,g){var y=Xt(c,f.schema);return f.openCursor({trans:g,values:!c.keysOnly,reverse:c.dir==="prev",unique:!!c.unique,query:{index:y,range:c.range}})}function Bn(c,f,g,y){var N,_,O=c.replayFilter?yn(c.filter,c.replayFilter()):c.filter;return c.or?(N={},_=function(F,ie,je){var le,ae;O&&!O(ie,je,function(oe){return ie.stop(oe)},function(oe){return ie.fail(oe)})||((ae=""+(le=ie.primaryKey))=="[object ArrayBuffer]"&&(ae=""+new Uint8Array(le)),h(N,ae))||(N[ae]=!0,f(F,ie,je))},Promise.all([c.or._iterate(_,g),ls(tr(c,y,g),c.algorithm,_,!c.keysOnly&&c.valueMapper)])):ls(tr(c,y,g),yn(c.algorithm,O),f,!c.keysOnly&&c.valueMapper)}function ls(c,f,g,y){var N=zt(y?function(_,O,F){return g(y(_),O,F)}:g);return c.then(function(_){if(_)return _.start(function(){var O=function(){return _.continue()};f&&!f(_,function(F){return O=F},function(F){_.stop(F),O=V},function(F){_.fail(F),O=V})||N(_.value,_,function(F){return O=F}),O()})})}Lt.prototype._read=function(c,f){var g=this._ctx;return g.error?g.table._trans(null,xn.bind(null,g.error)):g.table._trans("readonly",c).then(f)},Lt.prototype._write=function(c){var f=this._ctx;return f.error?f.table._trans(null,xn.bind(null,f.error)):f.table._trans("readwrite",c,"locked")},Lt.prototype._addAlgorithm=function(c){var f=this._ctx;f.algorithm=yn(f.algorithm,c)},Lt.prototype._iterate=function(c,f){return Bn(this._ctx,c,f,this._ctx.table.core)},Lt.prototype.clone=function(c){var f=Object.create(this.constructor.prototype),g=Object.create(this._ctx);return c&&d(g,c),f._ctx=g,f},Lt.prototype.raw=function(){return this._ctx.valueMapper=null,this},Lt.prototype.each=function(c){var f=this._ctx;return this._read(function(g){return Bn(f,c,g,f.table.core)})},Lt.prototype.count=function(c){var f=this;return this._read(function(g){var y,N=f._ctx,_=N.table.core;return sn(N,!0)?_.count({trans:g,query:{index:Xt(N,_.schema),range:N.range}}).then(function(O){return Math.min(O,N.limit)}):(y=0,Bn(N,function(){return++y,!1},g,_).then(function(){return y}))}).then(c)},Lt.prototype.sortBy=function(c,f){var g=c.split(".").reverse(),y=g[0],N=g.length-1;function _(ie,je){return je?_(ie[g[je]],je-1):ie[y]}var O=this._ctx.dir==="next"?1:-1;function F(ie,je){return Zt(_(ie,N),_(je,N))*O}return this.toArray(function(ie){return ie.slice().sort(F)}).then(f)},Lt.prototype.toArray=function(c){var f=this;return this._read(function(g){var y,N,_,O=f._ctx;return sn(O,!0)&&0<O.limit?(y=O.valueMapper,N=Xt(O,O.table.core.schema),O.table.core.query({trans:g,limit:O.limit,values:!0,direction:O.dir==="prev"?"prev":void 0,query:{index:N,range:O.range}}).then(function(F){return F=F.result,y?F.map(y):F})):(_=[],Bn(O,function(F){return _.push(F)},g,O.table.core).then(function(){return _}))},c)},Lt.prototype.offset=function(c){var f=this._ctx;return c<=0||(f.offset+=c,sn(f)?vr(f,function(){var g=c;return function(y,N){return g===0||(g===1?--g:N(function(){y.advance(g),g=0}),!1)}}):vr(f,function(){var g=c;return function(){return--g<0}})),this},Lt.prototype.limit=function(c){return this._ctx.limit=Math.min(this._ctx.limit,c),vr(this._ctx,function(){var f=c;return function(g,y,N){return--f<=0&&y(N),0<=f}},!0),this},Lt.prototype.until=function(c,f){return Cn(this._ctx,function(g,y,N){return!c(g.value)||(y(N),f)}),this},Lt.prototype.first=function(c){return this.limit(1).toArray(function(f){return f[0]}).then(c)},Lt.prototype.last=function(c){return this.reverse().first(c)},Lt.prototype.filter=function(c){var f;return Cn(this._ctx,function(g){return c(g.value)}),(f=this._ctx).isMatch=yn(f.isMatch,c),this},Lt.prototype.and=function(c){return this.filter(c)},Lt.prototype.or=function(c){return new this.db.WhereClause(this._ctx.table,c,this)},Lt.prototype.reverse=function(){return this._ctx.dir=this._ctx.dir==="prev"?"next":"prev",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},Lt.prototype.desc=function(){return this.reverse()},Lt.prototype.eachKey=function(c){var f=this._ctx;return f.keysOnly=!f.isMatch,this.each(function(g,y){c(y.key,y)})},Lt.prototype.eachUniqueKey=function(c){return this._ctx.unique="unique",this.eachKey(c)},Lt.prototype.eachPrimaryKey=function(c){var f=this._ctx;return f.keysOnly=!f.isMatch,this.each(function(g,y){c(y.primaryKey,y)})},Lt.prototype.keys=function(c){var f=this._ctx,g=(f.keysOnly=!f.isMatch,[]);return this.each(function(y,N){g.push(N.key)}).then(function(){return g}).then(c)},Lt.prototype.primaryKeys=function(c){var f=this._ctx;if(sn(f,!0)&&0<f.limit)return this._read(function(y){var N=Xt(f,f.table.core.schema);return f.table.core.query({trans:y,values:!1,limit:f.limit,direction:f.dir==="prev"?"prev":void 0,query:{index:N,range:f.range}})}).then(function(y){return y.result}).then(c);f.keysOnly=!f.isMatch;var g=[];return this.each(function(y,N){g.push(N.primaryKey)}).then(function(){return g}).then(c)},Lt.prototype.uniqueKeys=function(c){return this._ctx.unique="unique",this.keys(c)},Lt.prototype.firstKey=function(c){return this.limit(1).keys(function(f){return f[0]}).then(c)},Lt.prototype.lastKey=function(c){return this.reverse().firstKey(c)},Lt.prototype.distinct=function(){var c,f=this._ctx,f=f.index&&f.table.schema.idxByName[f.index];return f&&f.multi&&(c={},Cn(this._ctx,function(y){var y=y.primaryKey.toString(),N=h(c,y);return c[y]=!0,!N})),this},Lt.prototype.modify=function(c){var f=this,g=this._ctx;return this._write(function(y){function N(ce,de){var Ae=de.failures;oe+=ce-de.numFailures;for(var we=0,Te=o(Ae);we<Te.length;we++){var Ke=Te[we];ae.push(Ae[Ke])}}var _=typeof c=="function"?c:function(ce){return Mt(ce,c)},O=g.table.core,le=O.schema.primaryKey,F=le.outbound,ie=le.extractKey,je=200,le=f.db._options.modifyChunkSize,ae=(le&&(je=typeof le=="object"?le[O.name]||le["*"]||200:le),[]),oe=0,he=[],ue=c===cr;return f.clone().primaryKeys().then(function(ce){function de(we){var Te=Math.min(je,ce.length-we),Ke=ce.slice(we,we+Te);return(ue?Promise.resolve([]):O.getMany({trans:y,keys:Ke,cache:"immutable"})).then(function(Ue){var Xe=[],Ge=[],mt=F?[]:null,Je=ue?Ke:[];if(!ue)for(var pt=0;pt<Te;++pt){var qe=Ue[pt],Dt={value:G(qe),primKey:ce[we+pt]};_.call(Dt,Dt.value,Dt)!==!1&&(Dt.value==null?Je.push(ce[we+pt]):F||Zt(ie(qe),ie(Dt.value))===0?(Ge.push(Dt.value),F&&mt.push(ce[we+pt])):(Je.push(ce[we+pt]),Xe.push(Dt.value)))}return Promise.resolve(0<Xe.length&&O.mutate({trans:y,type:"add",values:Xe}).then(function(Rt){for(var Ut in Rt.failures)Je.splice(parseInt(Ut),1);N(Xe.length,Rt)})).then(function(){return(0<Ge.length||Ae&&typeof c=="object")&&O.mutate({trans:y,type:"put",keys:mt,values:Ge,criteria:Ae,changeSpec:typeof c!="function"&&c,isAdditionalChunk:0<we}).then(function(Rt){return N(Ge.length,Rt)})}).then(function(){return(0<Je.length||Ae&&ue)&&O.mutate({trans:y,type:"delete",keys:Je,criteria:Ae,isAdditionalChunk:0<we}).then(function(Rt){return st(g.table,Je,Rt)}).then(function(Rt){return N(Je.length,Rt)})}).then(function(){return ce.length>we+Te&&de(we+je)})})}var Ae=sn(g)&&g.limit===1/0&&(typeof c!="function"||ue)&&{index:g.index,range:g.range};return de(0).then(function(){if(0<ae.length)throw new Z("Error modifying one or more objects",ae,oe,he);return ce.length})})})},Lt.prototype.delete=function(){var c=this._ctx,f=c.range;return!sn(c)||c.table.schema.yProps||!c.isPrimKey&&f.type!==3?this.modify(cr):this._write(function(g){var y=c.table.core.schema.primaryKey,N=f;return c.table.core.count({trans:g,query:{index:y,range:N}}).then(function(_){return c.table.core.mutate({trans:g,type:"deleteRange",range:N}).then(function(ie){var F=ie.failures,ie=ie.numFailures;if(ie)throw new Z("Could not delete some values",Object.keys(F).map(function(je){return F[je]}),_-ie);return _-ie})})})};var Aa=Lt;function Lt(){}var cr=function(c,f){return f.value=null};function Ki(c,f){return c<f?-1:c===f?0:1}function Vs(c,f){return f<c?-1:c===f?0:1}function Fn(c,f,g){return c=c instanceof pl?new c.Collection(c):c,c._ctx.error=new(g||TypeError)(f),c}function qs(c){return new c.Collection(c,function(){return fl("")}).limit(0)}function Ca(he,f,g,y){var N,_,O,F,ie,je,le,ae=g.length;if(!g.every(function(ce){return typeof ce=="string"}))return Fn(he,$r);function oe(ce){N=ce==="next"?function(Ae){return Ae.toUpperCase()}:function(Ae){return Ae.toLowerCase()},_=ce==="next"?function(Ae){return Ae.toLowerCase()}:function(Ae){return Ae.toUpperCase()},O=ce==="next"?Ki:Vs;var de=g.map(function(Ae){return{lower:_(Ae),upper:N(Ae)}}).sort(function(Ae,we){return O(Ae.lower,we.lower)});F=de.map(function(Ae){return Ae.upper}),ie=de.map(function(Ae){return Ae.lower}),le=(je=ce)==="next"?"":y}oe("next");var he=new he.Collection(he,function(){return Xr(F[0],ie[ae-1]+y)}),ue=(he._ondirectionchange=function(ce){oe(ce)},0);return he._addAlgorithm(function(ce,de,Ae){var we=ce.key;if(typeof we=="string"){var Te=_(we);if(f(Te,ie,ue))return!0;for(var Ke=null,Ue=ue;Ue<ae;++Ue){var Xe=((Ge,mt,Je,pt,qe,Dt)=>{for(var Rt=Math.min(Ge.length,pt.length),Ut=-1,nn=0;nn<Rt;++nn){var qr=mt[nn];if(qr!==pt[nn])return qe(Ge[nn],Je[nn])<0?Ge.substr(0,nn)+Je[nn]+Je.substr(nn+1):qe(Ge[nn],pt[nn])<0?Ge.substr(0,nn)+pt[nn]+Je.substr(nn+1):0<=Ut?Ge.substr(0,Ut)+mt[Ut]+Je.substr(Ut+1):null;qe(Ge[nn],qr)<0&&(Ut=nn)}return Rt<pt.length&&Dt==="next"?Ge+Je.substr(Ge.length):Rt<Ge.length&&Dt==="prev"?Ge.substr(0,Je.length):Ut<0?null:Ge.substr(0,Ut)+pt[Ut]+Je.substr(Ut+1)})(we,Te,F[Ue],ie[Ue],O,je);Xe===null&&Ke===null?ue=Ue+1:(Ke===null||0<O(Ke,Xe))&&(Ke=Xe)}de(Ke!==null?function(){ce.continue(Ke+le)}:Ae)}return!1}),he}function Xr(c,f,g,y){return{type:2,lower:c,upper:f,lowerOpen:g,upperOpen:y}}function fl(c){return{type:1,lower:c,upper:c}}Object.defineProperty(Hn.prototype,"Collection",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),Hn.prototype.between=function(c,f,g,y){g=g!==!1,y=y===!0;try{return 0<this._cmp(c,f)||this._cmp(c,f)===0&&(g||y)&&(!g||!y)?qs(this):new this.Collection(this,function(){return Xr(c,f,!g,!y)})}catch{return Fn(this,Kn)}},Hn.prototype.equals=function(c){return c==null?Fn(this,Kn):new this.Collection(this,function(){return fl(c)})},Hn.prototype.above=function(c){return c==null?Fn(this,Kn):new this.Collection(this,function(){return Xr(c,void 0,!0)})},Hn.prototype.aboveOrEqual=function(c){return c==null?Fn(this,Kn):new this.Collection(this,function(){return Xr(c,void 0,!1)})},Hn.prototype.below=function(c){return c==null?Fn(this,Kn):new this.Collection(this,function(){return Xr(void 0,c,!1,!0)})},Hn.prototype.belowOrEqual=function(c){return c==null?Fn(this,Kn):new this.Collection(this,function(){return Xr(void 0,c)})},Hn.prototype.startsWith=function(c){return typeof c!="string"?Fn(this,$r):this.between(c,c+Wn,!0,!0)},Hn.prototype.startsWithIgnoreCase=function(c){return c===""?this.startsWith(c):Ca(this,function(f,g){return f.indexOf(g[0])===0},[c],Wn)},Hn.prototype.equalsIgnoreCase=function(c){return Ca(this,function(f,g){return f===g[0]},[c],"")},Hn.prototype.anyOfIgnoreCase=function(){var c=se.apply(Ne,arguments);return c.length===0?qs(this):Ca(this,function(f,g){return g.indexOf(f)!==-1},c,"")},Hn.prototype.startsWithAnyOfIgnoreCase=function(){var c=se.apply(Ne,arguments);return c.length===0?qs(this):Ca(this,function(f,g){return g.some(function(y){return f.indexOf(y)===0})},c,Wn)},Hn.prototype.anyOf=function(){var c,f,g=this,y=se.apply(Ne,arguments),N=this._cmp;try{y.sort(N)}catch{return Fn(this,Kn)}return y.length===0?qs(this):((c=new this.Collection(this,function(){return Xr(y[0],y[y.length-1])}))._ondirectionchange=function(_){N=_==="next"?g._ascending:g._descending,y.sort(N)},f=0,c._addAlgorithm(function(_,O,F){for(var ie=_.key;0<N(ie,y[f]);)if(++f===y.length)return O(F),!1;return N(ie,y[f])===0||(O(function(){_.continue(y[f])}),!1)}),c)},Hn.prototype.notEqual=function(c){return this.inAnyRange([[-1/0,c],[c,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},Hn.prototype.noneOf=function(){var c=se.apply(Ne,arguments);if(c.length===0)return new this.Collection(this);try{c.sort(this._ascending)}catch{return Fn(this,Kn)}var f=c.reduce(function(g,y){return g?g.concat([[g[g.length-1][1],y]]):[[-1/0,y]]},null);return f.push([c[c.length-1],this.db._maxKey]),this.inAnyRange(f,{includeLowers:!1,includeUppers:!1})},Hn.prototype.inAnyRange=function(c,Ae){var g=this,y=this._cmp,N=this._ascending,_=this._descending,O=this._min,F=this._max;if(c.length===0)return qs(this);if(!c.every(function(we){return we[0]!==void 0&&we[1]!==void 0&&N(we[0],we[1])<=0}))return Fn(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",X.InvalidArgument);var ie=!Ae||Ae.includeLowers!==!1,je=Ae&&Ae.includeUppers===!0,le,ae=N;function oe(we,Te){return ae(we[0],Te[0])}try{(le=c.reduce(function(we,Te){for(var Ke=0,Ue=we.length;Ke<Ue;++Ke){var Xe=we[Ke];if(y(Te[0],Xe[1])<0&&0<y(Te[1],Xe[0])){Xe[0]=O(Xe[0],Te[0]),Xe[1]=F(Xe[1],Te[1]);break}}return Ke===Ue&&we.push(Te),we},[])).sort(oe)}catch{return Fn(this,Kn)}var he=0,ue=je?function(we){return 0<N(we,le[he][1])}:function(we){return 0<=N(we,le[he][1])},ce=ie?function(we){return 0<_(we,le[he][0])}:function(we){return 0<=_(we,le[he][0])},de=ue,Ae=new this.Collection(this,function(){return Xr(le[0][0],le[le.length-1][1],!ie,!je)});return Ae._ondirectionchange=function(we){ae=we==="next"?(de=ue,N):(de=ce,_),le.sort(oe)},Ae._addAlgorithm(function(we,Te,Ke){for(var Ue,Xe=we.key;de(Xe);)if(++he===le.length)return Te(Ke),!1;return!ue(Ue=Xe)&&!ce(Ue)||(g._cmp(Xe,le[he][1])===0||g._cmp(Xe,le[he][0])===0||Te(function(){ae===N?we.continue(le[he][0]):we.continue(le[he][1])}),!1)}),Ae},Hn.prototype.startsWithAnyOf=function(){var c=se.apply(Ne,arguments);return c.every(function(f){return typeof f=="string"})?c.length===0?qs(this):this.inAnyRange(c.map(function(f){return[f,f+Wn]})):Fn(this,"startsWithAnyOf() only works with strings")};var pl=Hn;function Hn(){}function Kr(c){return zt(function(f){return _a(f),c(f.target.error),!1})}function _a(c){c.stopPropagation&&c.stopPropagation(),c.preventDefault&&c.preventDefault()}var Ia="storagemutated",Vi="x-storagemutated-1",Tr=Nt(null,Ia),ku=(es.prototype._lock=function(){return I(!ve.global),++this._reculock,this._reculock!==1||ve.global||(ve.lockOwnerFor=this),this},es.prototype._unlock=function(){if(I(!ve.global),--this._reculock==0)for(ve.global||(ve.lockOwnerFor=null);0<this._blockedFuncs.length&&!this._locked();){var c=this._blockedFuncs.shift();try{gn(c[1],c[0])}catch{}}return this},es.prototype._locked=function(){return this._reculock&&ve.lockOwnerFor!==this},es.prototype.create=function(c){var f=this;if(this.mode){var g=this.db.idbdb,y=this.db._state.dbOpenError;if(I(!this.idbtrans),!c&&!g)switch(y&&y.name){case"DatabaseClosedError":throw new X.DatabaseClosed(y);case"MissingAPIError":throw new X.MissingAPI(y.message,y);default:throw new X.OpenFailed(y)}if(!this.active)throw new X.TransactionInactive;I(this._completion._state===null),(c=this.idbtrans=c||(this.db.core||g).transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})).onerror=zt(function(N){_a(N),f._reject(c.error)}),c.onabort=zt(function(N){_a(N),f.active&&f._reject(new X.Abort(c.error)),f.active=!1,f.on("abort").fire(N)}),c.oncomplete=zt(function(){f.active=!1,f._resolve(),"mutatedParts"in c&&Tr.storagemutated.fire(c.mutatedParts)})}return this},es.prototype._promise=function(c,f,g){var y,N=this;return c==="readwrite"&&this.mode!=="readwrite"?xn(new X.ReadOnly("Transaction is readonly")):this.active?this._locked()?new Fe(function(_,O){N._blockedFuncs.push([function(){N._promise(c,f,g).then(_,O)},ve])}):g?yr(function(){var _=new Fe(function(O,F){N._lock();var ie=f(O,F,N);ie&&ie.then&&ie.then(O,F)});return _.finally(function(){return N._unlock()}),_._lib=!0,_}):((y=new Fe(function(_,O){var F=f(_,O,N);F&&F.then&&F.then(_,O)}))._lib=!0,y):xn(new X.TransactionInactive)},es.prototype._root=function(){return this.parent?this.parent._root():this},es.prototype.waitFor=function(c){var f,g=this._root(),y=Fe.resolve(c),N=(g._waitingFor?g._waitingFor=g._waitingFor.then(function(){return y}):(g._waitingFor=y,g._waitingQueue=[],f=g.idbtrans.objectStore(g.storeNames[0]),(function _(){for(++g._spinCount;g._waitingQueue.length;)g._waitingQueue.shift()();g._waitingFor&&(f.get(-1/0).onsuccess=_)})()),g._waitingFor);return new Fe(function(_,O){y.then(function(F){return g._waitingQueue.push(zt(_.bind(null,F)))},function(F){return g._waitingQueue.push(zt(O.bind(null,F)))}).finally(function(){g._waitingFor===N&&(g._waitingFor=null)})})},es.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new X.Abort))},es.prototype.table=function(c){var f=this._memoizedTables||(this._memoizedTables={});if(h(f,c))return f[c];var g=this.schema[c];if(g)return(g=new this.db.Table(c,g,this)).core=this.db.core.table(c),f[c]=g;throw new X.NotFound("Table "+c+" not part of transaction")},es);function es(){}function qi(c,f,g,y,N,_,O,F){return{name:c,keyPath:f,unique:g,multi:y,auto:N,compound:_,src:(g&&!O?"&":"")+(y?"*":"")+(N?"++":"")+hl(f),type:F}}function hl(c){return typeof c=="string"?c:c?"["+[].join.call(c,"+")+"]":""}function Ja(c,f,g){return{name:c,primKey:f,indexes:g,mappedClass:null,idxByName:(y=function(N){return[N.name,N]},g.reduce(function(N,_,O){return _=y(_,O),_&&(N[_[0]]=_[1]),N},{}))};var y}var ys=function(c){try{return c.only([[]]),ys=function(){return[[]]},[[]]}catch{return ys=function(){return Wn},Wn}};function Ui(c){return c==null?function(){}:typeof c=="string"?(f=c).split(".").length===1?function(g){return g[f]}:function(g){return k(g,f)}:function(g){return k(g,c)};var f}function gl(c){return[].slice.call(c)}var xl=0;function Ea(c){return c==null?":id":typeof c=="string"?c:"[".concat(c.join("+"),"]")}function yl(c,f,O){function y(de){if(de.type===3)return null;if(de.type===4)throw new Error("Cannot convert never type to IDBKeyRange");var he=de.lower,ue=de.upper,ce=de.lowerOpen,de=de.upperOpen;return he===void 0?ue===void 0?null:f.upperBound(ue,!!de):ue===void 0?f.lowerBound(he,!!ce):f.bound(he,ue,!!ce,!!de)}function N(oe){var he,ue,ce=oe.name;return{name:ce,schema:oe,mutate:function(de){var Ae=de.trans,we=de.type,Te=de.keys,Ke=de.values,Ue=de.range;return new Promise(function(Xe,Ge){Xe=zt(Xe);var mt=Ae.objectStore(ce),Je=mt.keyPath==null,pt=we==="put"||we==="add";if(!pt&&we!=="delete"&&we!=="deleteRange")throw new Error("Invalid operation type: "+we);var qe,Dt=(Te||Ke||{length:1}).length;if(Te&&Ke&&Te.length!==Ke.length)throw new Error("Given keys array must have same length as given values array.");if(Dt===0)return Xe({numFailures:0,failures:{},results:[],lastResult:void 0});function Rt(Cr){++qr,_a(Cr)}var Ut=[],nn=[],qr=0;if(we==="deleteRange"){if(Ue.type===4)return Xe({numFailures:qr,failures:nn,results:[],lastResult:void 0});Ue.type===3?Ut.push(qe=mt.clear()):Ut.push(qe=mt.delete(y(Ue)))}else{var Je=pt?Je?[Ke,Te]:[Ke,null]:[Te,null],Kt=Je[0],Nr=Je[1];if(pt)for(var jr=0;jr<Dt;++jr)Ut.push(qe=Nr&&Nr[jr]!==void 0?mt[we](Kt[jr],Nr[jr]):mt[we](Kt[jr])),qe.onerror=Rt;else for(jr=0;jr<Dt;++jr)Ut.push(qe=mt[we](Kt[jr])),qe.onerror=Rt}function Al(Cr){Cr=Cr.target.result,Ut.forEach(function(Ma,Pu){return Ma.error!=null&&(nn[Pu]=Ma.error)}),Xe({numFailures:qr,failures:nn,results:we==="delete"?Te:Ut.map(function(Ma){return Ma.result}),lastResult:Cr})}qe.onerror=function(Cr){Rt(Cr),Al(Cr)},qe.onsuccess=Al})},getMany:function(de){var Ae=de.trans,we=de.keys;return new Promise(function(Te,Ke){Te=zt(Te);for(var Ue,Xe=Ae.objectStore(ce),Ge=we.length,mt=new Array(Ge),Je=0,pt=0,qe=function(Ut){Ut=Ut.target,mt[Ut._pos]=Ut.result,++pt===Je&&Te(mt)},Dt=Kr(Ke),Rt=0;Rt<Ge;++Rt)we[Rt]!=null&&((Ue=Xe.get(we[Rt]))._pos=Rt,Ue.onsuccess=qe,Ue.onerror=Dt,++Je);Je===0&&Te(mt)})},get:function(de){var Ae=de.trans,we=de.key;return new Promise(function(Te,Ke){Te=zt(Te);var Ue=Ae.objectStore(ce).get(we);Ue.onsuccess=function(Xe){return Te(Xe.target.result)},Ue.onerror=Kr(Ke)})},query:(he=ie,ue=je,function(de){return new Promise(function(Ae,we){Ae=zt(Ae);var Te,Ke,Ue,Xe,Dt=de.trans,Ge=de.values,mt=de.limit,qe=de.query,Je=(Je=de.direction)!=null?Je:"next",pt=mt===1/0?void 0:mt,Rt=qe.index,qe=qe.range,Dt=Dt.objectStore(ce),Dt=Rt.isPrimaryKey?Dt:Dt.index(Rt.name),Rt=y(qe);if(mt===0)return Ae({result:[]});ue?(qe={query:Rt,count:pt,direction:Je},(Te=Ge?Dt.getAll(qe):Dt.getAllKeys(qe)).onsuccess=function(Ut){return Ae({result:Ut.target.result})},Te.onerror=Kr(we)):he&&Je==="next"?((Te=Ge?Dt.getAll(Rt,pt):Dt.getAllKeys(Rt,pt)).onsuccess=function(Ut){return Ae({result:Ut.target.result})},Te.onerror=Kr(we)):(Ke=0,Ue=!Ge&&"openKeyCursor"in Dt?Dt.openKeyCursor(Rt,Je):Dt.openCursor(Rt,Je),Xe=[],Ue.onsuccess=function(){var Ut=Ue.result;return!Ut||(Xe.push(Ge?Ut.value:Ut.primaryKey),++Ke===mt)?Ae({result:Xe}):void Ut.continue()},Ue.onerror=Kr(we))})}),openCursor:function(de){var Ae=de.trans,we=de.values,Te=de.query,Ke=de.reverse,Ue=de.unique;return new Promise(function(Xe,Ge){Xe=zt(Xe);var pt=Te.index,mt=Te.range,Je=Ae.objectStore(ce),Je=pt.isPrimaryKey?Je:Je.index(pt.name),pt=Ke?Ue?"prevunique":"prev":Ue?"nextunique":"next",qe=!we&&"openKeyCursor"in Je?Je.openKeyCursor(y(mt),pt):Je.openCursor(y(mt),pt);qe.onerror=Kr(Ge),qe.onsuccess=zt(function(Dt){var Rt,Ut,nn,qr,Kt=qe.result;Kt?(Kt.___id=++xl,Kt.done=!1,Rt=Kt.continue.bind(Kt),Ut=(Ut=Kt.continuePrimaryKey)&&Ut.bind(Kt),nn=Kt.advance.bind(Kt),qr=function(){throw new Error("Cursor not stopped")},Kt.trans=Ae,Kt.stop=Kt.continue=Kt.continuePrimaryKey=Kt.advance=function(){throw new Error("Cursor not started")},Kt.fail=zt(Ge),Kt.next=function(){var Nr=this,jr=1;return this.start(function(){return jr--?Nr.continue():Nr.stop()}).then(function(){return Nr})},Kt.start=function(Nr){function jr(){if(qe.result)try{Nr()}catch(Cr){Kt.fail(Cr)}else Kt.done=!0,Kt.start=function(){throw new Error("Cursor behind last entry")},Kt.stop()}var Al=new Promise(function(Cr,Ma){Cr=zt(Cr),qe.onerror=Kr(Ma),Kt.fail=Ma,Kt.stop=function(Pu){Kt.stop=Kt.continue=Kt.continuePrimaryKey=Kt.advance=qr,Cr(Pu)}});return qe.onsuccess=zt(function(Cr){qe.onsuccess=jr,jr()}),Kt.continue=Rt,Kt.continuePrimaryKey=Ut,Kt.advance=nn,jr(),Al},Xe(Kt)):Xe(null)},Ge)})},count:function(de){var Ae=de.query,we=de.trans,Te=Ae.index,Ke=Ae.range;return new Promise(function(Ue,Xe){var Ge=we.objectStore(ce),Ge=Te.isPrimaryKey?Ge:Ge.index(Te.name),mt=y(Ke),mt=mt?Ge.count(mt):Ge.count();mt.onsuccess=zt(function(Je){return Ue(Je.target.result)}),mt.onerror=Kr(Xe)})}}}_=O,F=gl((O=c).objectStoreNames),le=0<F.length?_.objectStore(F[0]):{};var _,O={schema:{name:O.name,tables:F.map(function(oe){return _.objectStore(oe)}).map(function(oe){var he=oe.keyPath,ue=oe.autoIncrement,de=l(he),ce={},de={name:oe.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:he==null,compound:de,keyPath:he,autoIncrement:ue,unique:!0,extractKey:Ui(he)},indexes:gl(oe.indexNames).map(function(Ae){return oe.index(Ae)}).map(function(Ke){var Ue=Ke.name,we=Ke.unique,Te=Ke.multiEntry,Ke=Ke.keyPath,Ue={name:Ue,compound:l(Ke),keyPath:Ke,unique:we,multiEntry:Te,extractKey:Ui(Ke)};return ce[Ea(Ke)]=Ue}),getIndexByKeyPath:function(Ae){return ce[Ea(Ae)]}};return ce[":id"]=de.primaryKey,he!=null&&(ce[Ea(he)]=de.primaryKey),de})},hasGetAll:0<F.length&&"getAll"in le&&!(typeof navigator<"u"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604),hasIdb3Features:"getAllRecords"in le},F=O.schema,ie=O.hasGetAll,je=O.hasIdb3Features,le=F.tables.map(N),ae={};return le.forEach(function(oe){return ae[oe.name]=oe}),{stack:"dbcore",transaction:c.transaction.bind(c),table:function(oe){if(ae[oe])return ae[oe];throw new Error("Table '".concat(oe,"' not found"))},MIN_KEY:-1/0,MAX_KEY:ys(f),schema:F}}function wu(c,f,g,y){return g=g.IDBKeyRange,f=yl(f,g,y),{dbcore:c.dbcore.reduce(function(N,_){return _=_.create,s(s({},N),_(N))},f)}}function Qa(c,f){var g=f.db,g=wu(c._middlewares,g,c._deps,f);c.core=g.dbcore,c.tables.forEach(function(y){var N=y.name;c.core.schema.tables.some(function(_){return _.name===N})&&(y.core=c.core.table(N),c[N]instanceof c.Table)&&(c[N].core=y.core)})}function Vr(c,f,g,y){g.forEach(function(N){var _=y[N];f.forEach(function(O){var F=(function ie(je,le){return S(je,le)||(je=m(je))&&ie(je,le)})(O,N);(!F||"value"in F&&F.value===void 0)&&(O===c.Transaction.prototype||O instanceof c.Transaction?w(O,N,{get:function(){return this.table(N)},set:function(ie){b(this,N,{value:ie,writable:!0,configurable:!0,enumerable:!0})}}):O[N]=new c.Table(N,_))})})}function Wi(c,f){f.forEach(function(g){for(var y in g)g[y]instanceof c.Table&&delete g[y]})}function bl(c,f){return c._cfg.version-f._cfg.version}function Su(c,f,g,y){var N=c._dbSchema,_=(g.objectStoreNames.contains("$meta")&&!N.$meta&&(N.$meta=Ja("$meta",Nl("")[0],[]),c._storeNames.push("$meta")),c._createTransaction("readwrite",c._storeNames,N)),O=(_.create(g),_._completion.catch(y),_._reject.bind(_)),F=ve.transless||ve;yr(function(){if(ve.trans=_,ve.transless=F,f!==0)return Qa(c,g),je=f,((ie=_).storeNames.includes("$meta")?ie.table("$meta").get("version").then(function(le){return le??je}):Fe.resolve(je)).then(function(de){var ae=c,oe=de,he=_,ue=g,ce=[],de=ae._versions,Ae=ae._dbSchema=ei(0,ae.idbdb,ue);return(de=de.filter(function(we){return we._cfg.version>=oe})).length===0?Fe.resolve():(de.forEach(function(we){ce.push(function(){var Te,Ke,Ue,Xe=Ae,Ge=we._cfg.dbschema,mt=(ti(ae,Xe,ue),ti(ae,Ge,ue),Ae=ae._dbSchema=Ge,Xa(Xe,Ge)),Je=(mt.add.forEach(function(pt){Hi(ue,pt[0],pt[1].primKey,pt[1].indexes)}),mt.change.forEach(function(pt){if(pt.recreate)throw new X.Upgrade("Not yet support for changing primary key");var qe=ue.objectStore(pt.name);pt.add.forEach(function(Dt){return Pa(qe,Dt)}),pt.change.forEach(function(Dt){qe.deleteIndex(Dt.name),Pa(qe,Dt)}),pt.del.forEach(function(Dt){return qe.deleteIndex(Dt)})}),we._cfg.contentUpgrade);if(Je&&we._cfg.version>oe)return Qa(ae,ue),he._memoizedTables={},Te=z(Ge),mt.del.forEach(function(pt){Te[pt]=Xe[pt]}),Wi(ae,[ae.Transaction.prototype]),Vr(ae,[ae.Transaction.prototype],o(Te),Te),he.schema=Te,(Ke=J(Je))&&Sr(),Ge=Fe.follow(function(){var pt;(Ue=Je(he))&&Ke&&(pt=zn.bind(null,null),Ue.then(pt,pt))}),Ue&&typeof Ue.then=="function"?Fe.resolve(Ue):Ge.then(function(){return Ue})}),ce.push(function(Te){var Ke,Ue,Xe=we._cfg.dbschema;Ke=Xe,Ue=Te,[].slice.call(Ue.db.objectStoreNames).forEach(function(Ge){return Ke[Ge]==null&&Ue.db.deleteObjectStore(Ge)}),Wi(ae,[ae.Transaction.prototype]),Vr(ae,[ae.Transaction.prototype],ae._storeNames,ae._dbSchema),he.schema=ae._dbSchema}),ce.push(function(Te){ae.idbdb.objectStoreNames.contains("$meta")&&(Math.ceil(ae.idbdb.version/10)===we._cfg.version?(ae.idbdb.deleteObjectStore("$meta"),delete ae._dbSchema.$meta,ae._storeNames=ae._storeNames.filter(function(Ke){return Ke!=="$meta"})):Te.objectStore("$meta").put(we._cfg.version,"version"))})}),(function we(){return ce.length?Fe.resolve(ce.shift()(he.idbtrans)).then(we):Fe.resolve()})().then(function(){vl(Ae,ue)}))}).catch(O);var ie,je;o(N).forEach(function(le){Hi(g,le,N[le].primKey,N[le].indexes)}),Qa(c,g),Fe.follow(function(){return c.on.populate.fire(_)}).catch(O)})}function Au(c,f){vl(c._dbSchema,f),f.db.version%10!=0||f.objectStoreNames.contains("$meta")||f.db.createObjectStore("$meta").add(Math.ceil(f.db.version/10-1),"version");var g=ei(0,c.idbdb,f);ti(c,c._dbSchema,f);for(var y=0,N=Xa(g,c._dbSchema).change;y<N.length;y++){var _=(O=>{if(O.change.length||O.recreate)return console.warn("Unable to patch indexes of table ".concat(O.name," because it has changes on the type of index or primary key.")),{value:void 0};var F=f.objectStore(O.name);O.add.forEach(function(ie){Pe&&console.debug("Dexie upgrade patch: Creating missing index ".concat(O.name,".").concat(ie.src)),Pa(F,ie)})})(N[y]);if(typeof _=="object")return _.value}}function Xa(c,f){var g,y={del:[],add:[],change:[]};for(g in c)f[g]||y.del.push(g);for(g in f){var N=c[g],_=f[g];if(N){var O={name:g,def:_,recreate:!1,del:[],add:[],change:[]};if(""+(N.primKey.keyPath||"")!=""+(_.primKey.keyPath||"")||N.primKey.auto!==_.primKey.auto)O.recreate=!0,y.change.push(O);else{var F=N.idxByName,ie=_.idxByName,je=void 0;for(je in F)ie[je]||O.del.push(je);for(je in ie){var le=F[je],ae=ie[je];le?le.src!==ae.src&&O.change.push(ae):O.add.push(ae)}(0<O.del.length||0<O.add.length||0<O.change.length)&&y.change.push(O)}}else y.add.push([g,_])}return y}function Hi(c,f,g,y){var N=c.db.createObjectStore(f,g.keyPath?{keyPath:g.keyPath,autoIncrement:g.auto}:{autoIncrement:g.auto});y.forEach(function(_){return Pa(N,_)})}function vl(c,f){o(c).forEach(function(g){f.db.objectStoreNames.contains(g)||(Pe&&console.debug("Dexie: Creating missing table",g),Hi(f,g,c[g].primKey,c[g].indexes))})}function Pa(c,f){c.createIndex(f.name,f.keyPath,{unique:f.unique,multiEntry:f.multi})}function ei(c,f,g){var y={};return E(f.objectStoreNames,0).forEach(function(N){for(var _=g.objectStore(N),O=qi(hl(je=_.keyPath),je||"",!0,!1,!!_.autoIncrement,je&&typeof je!="string",!0),F=[],ie=0;ie<_.indexNames.length;++ie){var le=_.index(_.indexNames[ie]),je=le.keyPath,le=qi(le.name,je,!!le.unique,!!le.multiEntry,!1,je&&typeof je!="string",!1);F.push(le)}y[N]=Ja(N,O,F)}),y}function ti(c,f,g){for(var y=g.db.objectStoreNames,N=0;N<y.length;++N){var _=y[N],O=g.objectStore(_);c._hasGetAll="getAll"in O;for(var F=0;F<O.indexNames.length;++F){var ie,je=O.indexNames[F],le=O.index(je).keyPath,le=typeof le=="string"?le:"["+E(le).join("+")+"]";f[_]&&(ie=f[_].idxByName[le])&&(ie.name=je,delete f[_].idxByName[le],f[_].idxByName[je]=ie)}}typeof navigator<"u"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&i.WorkerGlobalScope&&i instanceof i.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604&&(c._hasGetAll=!1)}function Nl(c){return c.split(",").map(function(f,g){var N=f.split(":"),y=(y=N[1])==null?void 0:y.trim(),N=(f=N[0].trim()).replace(/([&*]|\+\+)/g,""),_=/^\[/.test(N)?N.match(/^\[(.*)\]$/)[1].split("+"):N;return qi(N,_||null,/\&/.test(f),/\*/.test(f),/\+\+/.test(f),l(_),g===0,y)})}_s.prototype._createTableSchema=Ja,_s.prototype._parseIndexSyntax=Nl,_s.prototype._parseStoresSpec=function(c,f){var g=this;o(c).forEach(function(y){if(c[y]!==null){var N=g._parseIndexSyntax(c[y]),_=N.shift();if(!_)throw new X.Schema("Invalid schema for table "+y+": "+c[y]);if(_.unique=!0,_.multi)throw new X.Schema("Primary key cannot be multiEntry*");N.forEach(function(O){if(O.auto)throw new X.Schema("Only primary key can be marked as autoIncrement (++)");if(!O.keyPath)throw new X.Schema("Index must have a name and cannot be an empty string")}),_=g._createTableSchema(y,_,N),f[y]=_}})},_s.prototype.stores=function(g){var f=this.db,g=(this._cfg.storesSource=this._cfg.storesSource?d(this._cfg.storesSource,g):g,f._versions),y={},N={};return g.forEach(function(_){d(y,_._cfg.storesSource),N=_._cfg.dbschema={},_._parseStoresSpec(y,N)}),f._dbSchema=N,Wi(f,[f._allTables,f,f.Transaction.prototype]),Vr(f,[f._allTables,f,f.Transaction.prototype,this._cfg.tables],o(N),N),f._storeNames=o(N),this},_s.prototype.upgrade=function(c){return this._cfg.contentUpgrade=vt(this._cfg.contentUpgrade||V,c),this};var jl=_s;function _s(){}var q=(()=>{var c,f,g;return typeof FinalizationRegistry<"u"&&typeof WeakRef<"u"?(c=new Set,f=new FinalizationRegistry(function(y){c.delete(y)}),{toArray:function(){return Array.from(c).map(function(y){return y.deref()}).filter(function(y){return y!==void 0})},add:function(y){var N=new WeakRef(y._novip);c.add(N),f.register(y._novip,N,N),c.size>y._options.maxConnections&&(N=c.values().next().value,c.delete(N),f.unregister(N))},remove:function(y){if(y)for(var N=c.values(),_=N.next();!_.done;){var O=_.value;if(O.deref()===y._novip)return c.delete(O),void f.unregister(O);_=N.next()}}}):(g=[],{toArray:function(){return g},add:function(y){g.push(y._novip)},remove:function(y){y&&(y=g.indexOf(y._novip))!==-1&&g.splice(y,1)}})})();function fe(c,f){var g=c._dbNamesDB;return g||(g=c._dbNamesDB=new Ts(Jr,{addons:[],indexedDB:c,IDBKeyRange:f})).version(1).stores({dbnames:"name"}),g.table("dbnames")}function Re(c){return c&&typeof c.databases=="function"}function dt(c){return yr(function(){return ve.letThrough=!0,c()})}function at(c){return!("from"in c)}var tt=function(c,f){var g;if(!this)return g=new tt,c&&"d"in c&&d(g,c),g;d(this,arguments.length?{d:1,from:c,to:1<arguments.length?f:c}:{d:0})};function At(c,f,g){var y=Zt(f,g);if(!isNaN(y)){if(0<y)throw RangeError();if(at(c))return d(c,{from:f,to:g,d:1});var y=c.l,N=c.r;if(Zt(g,c.from)<0)return y?At(y,f,g):c.l={from:f,to:g,d:1,l:null,r:null},$t(c);if(0<Zt(f,c.to))return N?At(N,f,g):c.r={from:f,to:g,d:1,l:null,r:null},$t(c);Zt(f,c.from)<0&&(c.from=f,c.l=null,c.d=N?N.d+1:1),0<Zt(g,c.to)&&(c.to=g,c.r=null,c.d=c.l?c.l.d+1:1),f=!c.r,y&&!c.l&&St(c,y),N&&f&&St(c,N)}}function St(c,f){at(f)||(function g(y,N){var _=N.from,O=N.l,F=N.r;At(y,_,N.to),O&&g(y,O),F&&g(y,F)})(c,f)}function Ct(c,f){var g=jn(f),y=g.next();if(!y.done)for(var N=y.value,_=jn(c),O=_.next(N.from),F=O.value;!y.done&&!O.done;){if(Zt(F.from,N.to)<=0&&0<=Zt(F.to,N.from))return!0;Zt(N.from,F.from)<0?N=(y=g.next(F.from)).value:F=(O=_.next(N.from)).value}return!1}function jn(c){var f=at(c)?null:{s:0,n:c};return{next:function(g){for(var y=0<arguments.length;f;)switch(f.s){case 0:if(f.s=1,y)for(;f.n.l&&Zt(g,f.n.from)<0;)f={up:f,n:f.n.l,s:1};else for(;f.n.l;)f={up:f,n:f.n.l,s:1};case 1:if(f.s=2,!y||Zt(g,f.n.to)<=0)return{value:f.n,done:!1};case 2:if(f.n.r){f.s=3,f={up:f,n:f.n.r,s:0};continue}case 3:f=f.up}return{done:!0}}}}function $t(c){var f,g,y,N=(((N=c.r)==null?void 0:N.d)||0)-(((N=c.l)==null?void 0:N.d)||0),N=1<N?"r":N<-1?"l":"";N&&(f=N=="r"?"l":"r",g=s({},c),y=c[N],c.from=y.from,c.to=y.to,c[N]=y[N],g[N]=y[f],(c[f]=g).d=nr(g)),c.d=nr(c)}function nr(g){var f=g.r,g=g.l;return(f?g?Math.max(f.d,g.d):f.d:g?g.d:0)+1}function Us(c,f){return o(f).forEach(function(g){c[g]?St(c[g],f[g]):c[g]=(function y(N){var _,O,F={};for(_ in N)h(N,_)&&(O=N[_],F[_]=!O||typeof O!="object"||T.has(O.constructor)?O:y(O));return F})(f[g])}),c}function Is(c,f){return c.all||f.all||Object.keys(c).some(function(g){return f[g]&&Ct(f[g],c[g])})}x(tt.prototype,((qt={add:function(c){return St(this,c),this},addKey:function(c){return At(this,c,c),this},addKeys:function(c){var f=this;return c.forEach(function(g){return At(f,g,g)}),this},hasKey:function(c){var f=jn(this).next(c).value;return f&&Zt(f.from,c)<=0&&0<=Zt(f.to,c)}})[L]=function(){return jn(this)},qt));var Dr={},Ws={},Es=!1;function Ps(c){Us(Ws,c),Es||(Es=!0,setTimeout(function(){Es=!1,Ta(Ws,!(Ws={}))},0))}function Ta(c,f){f===void 0&&(f=!1);var g=new Set;if(c.all)for(var y=0,N=Object.values(Dr);y<N.length;y++)Hs(F=N[y],c,g,f);else for(var _ in c){var O,F,_=/^idb\:\/\/(.*)\/(.*)\//.exec(_);_&&(O=_[1],_=_[2],F=Dr["idb://".concat(O,"/").concat(_)])&&Hs(F,c,g,f)}g.forEach(function(ie){return ie()})}function Hs(c,f,g,y){for(var N=[],_=0,O=Object.entries(c.queries.query);_<O.length;_++){for(var F=O[_],ie=F[0],je=[],le=0,ae=F[1];le<ae.length;le++){var oe=ae[le];Is(f,oe.obsSet)?oe.subscribers.forEach(function(de){return g.add(de)}):y&&je.push(oe)}y&&N.push([ie,je])}if(y)for(var he=0,ue=N;he<ue.length;he++){var ce=ue[he],ie=ce[0],je=ce[1];c.queries.query[ie]=je}}function Zi(c){var f=c._state,g=c._deps.indexedDB;if(f.isBeingOpened||c.idbdb)return f.dbReadyPromise.then(function(){return f.dbOpenError?xn(f.dbOpenError):c});f.isBeingOpened=!0,f.dbOpenError=null,f.openComplete=!1;var y=f.openCanceller,N=Math.round(10*c.verno),_=!1;function O(){if(f.openCanceller!==y)throw new X.DatabaseClosed("db.open() was cancelled")}function F(){return new Fe(function(oe,he){if(O(),!g)throw new X.MissingAPI;var ue=c.name,ce=f.autoSchema||!N?g.open(ue):g.open(ue,N);if(!ce)throw new X.MissingAPI;ce.onerror=Kr(he),ce.onblocked=zt(c._fireOnBlocked),ce.onupgradeneeded=zt(function(de){var Ae;le=ce.transaction,f.autoSchema&&!c._options.allowEmptyDB?(ce.onerror=_a,le.abort(),ce.result.close(),(Ae=g.deleteDatabase(ue)).onsuccess=Ae.onerror=zt(function(){he(new X.NoSuchDatabase("Database ".concat(ue," doesnt exist")))})):(le.onerror=Kr(he),Ae=de.oldVersion>Math.pow(2,62)?0:de.oldVersion,ae=Ae<1,c.idbdb=ce.result,_&&Au(c,le),Su(c,Ae/10,le,he))},he),ce.onsuccess=zt(function(){le=null;var de,Ae,we,Te,Ke,Ue,Xe=c.idbdb=ce.result,Ge=E(Xe.objectStoreNames);if(0<Ge.length)try{var mt=Xe.transaction((Ke=Ge).length===1?Ke[0]:Ke,"readonly");if(f.autoSchema)Ue=Xe,Te=mt,(we=c).verno=Ue.version/10,Te=we._dbSchema=ei(0,Ue,Te),we._storeNames=E(Ue.objectStoreNames,0),Vr(we,[we._allTables],o(Te),Te);else if(ti(c,c._dbSchema,mt),Ae=mt,((Ae=Xa(ei(0,(de=c).idbdb,Ae),de._dbSchema)).add.length||Ae.change.some(function(Je){return Je.add.length||Je.change.length}))&&!_)return console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this."),Xe.close(),N=Xe.version+1,_=!0,oe(F());Qa(c,mt)}catch{}q.add(c),Xe.onversionchange=zt(function(Je){f.vcFired=!0,c.on("versionchange").fire(Je)}),Xe.onclose=zt(function(){c.close({disableAutoOpen:!1})}),ae&&(Ge=c._deps,Ke=ue,Re(Ue=Ge.indexedDB)||Ke===Jr||fe(Ue,Ge.IDBKeyRange).put({name:Ke}).catch(V)),oe()},he)}).catch(function(oe){switch(oe==null?void 0:oe.name){case"UnknownError":if(0<f.PR1398_maxLoop)return f.PR1398_maxLoop--,console.warn("Dexie: Workaround for Chrome UnknownError on open()"),F();break;case"VersionError":if(0<N)return N=0,F()}return Fe.reject(oe)})}var ie,je=f.dbReadyResolve,le=null,ae=!1;return Fe.race([y,(typeof navigator>"u"?Fe.resolve():!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(oe){function he(){return indexedDB.databases().finally(oe)}ie=setInterval(he,100),he()}).finally(function(){return clearInterval(ie)}):Promise.resolve()).then(F)]).then(function(){return O(),f.onReadyBeingFired=[],Fe.resolve(dt(function(){return c.on.ready.fire(c.vip)})).then(function oe(){var he;if(0<f.onReadyBeingFired.length)return he=f.onReadyBeingFired.reduce(vt,V),f.onReadyBeingFired=[],Fe.resolve(dt(function(){return he(c.vip)})).then(oe)})}).finally(function(){f.openCanceller===y&&(f.onReadyBeingFired=null,f.isBeingOpened=!1)}).catch(function(oe){f.dbOpenError=oe;try{le&&le.abort()}catch{}return y===f.openCanceller&&c._close(),xn(oe)}).finally(function(){f.openComplete=!0,je()}).then(function(){var oe;return ae&&(oe={},c.tables.forEach(function(he){he.schema.indexes.forEach(function(ue){ue.name&&(oe["idb://".concat(c.name,"/").concat(he.name,"/").concat(ue.name)]=new tt(-1/0,[[[]]]))}),oe["idb://".concat(c.name,"/").concat(he.name,"/")]=oe["idb://".concat(c.name,"/").concat(he.name,"/:dels")]=new tt(-1/0,[[[]]])}),Tr(Ia).fire(oe),Ta(oe,!0)),c})}function Gi(c){function f(_){return c.next(_)}var g=N(f),y=N(function(_){return c.throw(_)});function N(_){return function(F){var F=_(F),ie=F.value;return F.done?ie:ie&&typeof ie.then=="function"?ie.then(g,y):l(ie)?Promise.all(ie).then(g,y):g(ie)}}return N(f)()}function Da(c,f,g){for(var y=l(c)?c.slice():[c],N=0;N<g;++N)y.push(f);return y}var kl={stack:"dbcore",name:"VirtualIndexMiddleware",level:1,create:function(c){return s(s({},c),{table:function(y){var g=c.table(y),y=g.schema,N={},_=[];function O(oe,he,ue){var we=Ea(oe),ce=N[we]=N[we]||[],de=oe==null?0:typeof oe=="string"?1:oe.length,Ae=0<he,we=s(s({},ue),{name:Ae?"".concat(we,"(virtual-from:").concat(ue.name,")"):ue.name,lowLevelIndex:ue,isVirtual:Ae,keyTail:he,keyLength:de,extractKey:Ui(oe),unique:!Ae&&ue.unique});return ce.push(we),we.isPrimaryKey||_.push(we),1<de&&O(de===2?oe[0]:oe.slice(0,de-1),he+1,ue),ce.sort(function(Te,Ke){return Te.keyTail-Ke.keyTail}),we}var F=O(y.primaryKey.keyPath,0,y.primaryKey);N[":id"]=[F];for(var ie=0,je=y.indexes;ie<je.length;ie++){var le=je[ie];O(le.keyPath,0,le)}function ae(oe){var he,ue=oe.query.index;return ue.isVirtual?s(s({},oe),{query:{index:ue.lowLevelIndex,range:(he=oe.query.range,ue=ue.keyTail,{type:he.type===1?2:he.type,lower:Da(he.lower,he.lowerOpen?c.MAX_KEY:c.MIN_KEY,ue),lowerOpen:!0,upper:Da(he.upper,he.upperOpen?c.MIN_KEY:c.MAX_KEY,ue),upperOpen:!0})}}):oe}return s(s({},g),{schema:s(s({},y),{primaryKey:F,indexes:_,getIndexByKeyPath:function(oe){return(oe=N[Ea(oe)])&&oe[0]}}),count:function(oe){return g.count(ae(oe))},query:function(oe){return g.query(ae(oe))},openCursor:function(oe){var he=oe.query.index,ue=he.keyTail,ce=he.keyLength;return he.isVirtual?g.openCursor(ae(oe)).then(function(Ae){return Ae&&de(Ae)}):g.openCursor(oe);function de(Ae){return Object.create(Ae,{continue:{value:function(we){we!=null?Ae.continue(Da(we,oe.reverse?c.MAX_KEY:c.MIN_KEY,ue)):oe.unique?Ae.continue(Ae.key.slice(0,ce).concat(oe.reverse?c.MIN_KEY:c.MAX_KEY,ue)):Ae.continue()}},continuePrimaryKey:{value:function(we,Te){Ae.continuePrimaryKey(Da(we,c.MAX_KEY,ue),Te)}},primaryKey:{get:function(){return Ae.primaryKey}},key:{get:function(){var we=Ae.key;return ce===1?we[0]:we.slice(0,ce)}},value:{get:function(){return Ae.value}}})}}})}})}};function ur(c,f,g,y){return g=g||{},y=y||"",o(c).forEach(function(N){var _,O,F;h(f,N)?(_=c[N],O=f[N],typeof _=="object"&&typeof O=="object"&&_&&O?(F=ke(_))!==ke(O)?g[y+N]=f[N]:F==="Object"?ur(_,O,g,y+N+"."):_!==O&&(g[y+N]=f[N]):_!==O&&(g[y+N]=f[N])):g[y+N]=void 0}),o(f).forEach(function(N){h(c,N)||(g[y+N]=f[N])}),g}function Cu(c,f){return f.type==="delete"?f.keys:f.keys||f.values.map(c.extractKey)}var Pv={stack:"dbcore",name:"HooksMiddleware",level:2,create:function(c){return s(s({},c),{table:function(f){var g=c.table(f),y=g.schema.primaryKey;return s(s({},g),{mutate:function(N){var _=ve.trans,O=_.table(f).hook,F=O.deleting,ie=O.creating,je=O.updating;switch(N.type){case"add":if(ie.fire===V)break;return _._promise("readwrite",function(){return le(N)},!0);case"put":if(ie.fire===V&&je.fire===V)break;return _._promise("readwrite",function(){return le(N)},!0);case"delete":if(F.fire===V)break;return _._promise("readwrite",function(){return le(N)},!0);case"deleteRange":if(F.fire===V)break;return _._promise("readwrite",function(){return(function ae(oe,he,ue){return g.query({trans:oe,values:!1,query:{index:y,range:he},limit:ue}).then(function(ce){var de=ce.result;return le({type:"delete",keys:de,trans:oe}).then(function(Ae){return 0<Ae.numFailures?Promise.reject(Ae.failures[0]):de.length<ue?{failures:[],numFailures:0,lastResult:void 0}:ae(oe,s(s({},he),{lower:de[de.length-1],lowerOpen:!0}),ue)})})})(N.trans,N.range,1e4)},!0)}return g.mutate(N);function le(ae){var oe,he,ue,ce=ve.trans,de=ae.keys||Cu(y,ae);if(de)return(ae=ae.type==="add"||ae.type==="put"?s(s({},ae),{keys:de}):s({},ae)).type!=="delete"&&(ae.values=a([],ae.values)),ae.keys&&(ae.keys=a([],ae.keys)),oe=g,ue=de,((he=ae).type==="add"?Promise.resolve([]):oe.getMany({trans:he.trans,keys:ue,cache:"immutable"})).then(function(Ae){var we=de.map(function(Te,Ke){var Ue,Xe,Ge,mt=Ae[Ke],Je={onerror:null,onsuccess:null};return ae.type==="delete"?F.fire.call(Je,Te,mt,ce):ae.type==="add"||mt===void 0?(Ue=ie.fire.call(Je,Te,ae.values[Ke],ce),Te==null&&Ue!=null&&(ae.keys[Ke]=Te=Ue,y.outbound||j(ae.values[Ke],y.keyPath,Te))):(Ue=ur(mt,ae.values[Ke]),(Xe=je.fire.call(Je,Ue,Te,mt,ce))&&(Ge=ae.values[Ke],Object.keys(Xe).forEach(function(pt){h(Ge,pt)?Ge[pt]=Xe[pt]:j(Ge,pt,Xe[pt])}))),Je});return g.mutate(ae).then(function(Te){for(var Ke=Te.failures,Ue=Te.results,Xe=Te.numFailures,Te=Te.lastResult,Ge=0;Ge<de.length;++Ge){var mt=(Ue||de)[Ge],Je=we[Ge];mt==null?Je.onerror&&Je.onerror(Ke[Ge]):Je.onsuccess&&Je.onsuccess(ae.type==="put"&&Ae[Ge]?ae.values[Ge]:mt)}return{failures:Ke,results:Ue,numFailures:Xe,lastResult:Te}}).catch(function(Te){return we.forEach(function(Ke){return Ke.onerror&&Ke.onerror(Te)}),Promise.reject(Te)})});throw new Error("Keys missing")}}})}})}};function Uf(c,f,g){try{if(!f||f.keys.length<c.length)return null;for(var y=[],N=0,_=0;N<f.keys.length&&_<c.length;++N)Zt(f.keys[N],c[_])===0&&(y.push(g?G(f.values[N]):f.values[N]),++_);return y.length===c.length?y:null}catch{return null}}var Tv={stack:"dbcore",level:-1,create:function(c){return{table:function(f){var g=c.table(f);return s(s({},g),{getMany:function(y){var N;return y.cache?(N=Uf(y.keys,y.trans._cache,y.cache==="clone"))?Fe.resolve(N):g.getMany(y).then(function(_){return y.trans._cache={keys:y.keys,values:y.cache==="clone"?G(_):_},_}):g.getMany(y)},mutate:function(y){return y.type!=="add"&&(y.trans._cache=null),g.mutate(y)}})}}}};function Wf(c,f){return c.trans.mode==="readonly"&&!!c.subscr&&!c.trans.explicit&&c.trans.db._options.cache!=="disabled"&&!f.schema.primaryKey.outbound}function Hf(c,f){switch(c){case"query":return f.values&&!f.unique;case"get":case"getMany":case"count":case"openCursor":return!1}}var Dv={stack:"dbcore",level:0,name:"Observability",create:function(c){var f=c.schema.name,g=new tt(c.MIN_KEY,c.MAX_KEY);return s(s({},c),{transaction:function(y,N,_){if(ve.subscr&&N!=="readonly")throw new X.ReadOnly("Readwrite transaction in liveQuery context. Querier source: ".concat(ve.querier));return c.transaction(y,N,_)},table:function(y){function N(de){var ce,de=de.query;return[ce=de.index,new tt((ce=(de=de.range).lower)!=null?ce:c.MIN_KEY,(ce=de.upper)!=null?ce:c.MAX_KEY)]}var _=c.table(y),O=_.schema,F=O.primaryKey,ie=O.indexes,je=F.extractKey,le=F.outbound,ae=F.autoIncrement&&ie.filter(function(ue){return ue.compound&&ue.keyPath.includes(F.keyPath)}),oe=s(s({},_),{mutate:function(ue){function ce(qe){return qe="idb://".concat(f,"/").concat(y,"/").concat(qe),Ke[qe]||(Ke[qe]=new tt)}var de,Ae,we,Te=ue.trans,Ke=ue.mutatedParts||(ue.mutatedParts={}),Ue=ce(""),Xe=ce(":dels"),Ge=ue.type,Je=ue.type==="deleteRange"?[ue.range]:ue.type==="delete"?[ue.keys]:ue.values.length<50?[Cu(F,ue).filter(function(qe){return qe}),ue.values]:[],mt=Je[0],Je=Je[1],pt=ue.trans._cache;return l(mt)?(Ue.addKeys(mt),(Ge=Ge==="delete"||mt.length===Je.length?Uf(mt,pt):null)||Xe.addKeys(mt),(Ge||Je)&&(de=ce,Ae=Ge,we=Je,O.indexes.forEach(function(qe){var Dt=de(qe.name||"");function Rt(nn){return nn!=null?qe.extractKey(nn):null}function Ut(nn){qe.multiEntry&&l(nn)?nn.forEach(function(qr){return Dt.addKey(qr)}):Dt.addKey(nn)}(Ae||we).forEach(function(nn,Nr){var Kt=Ae&&Rt(Ae[Nr]),Nr=we&&Rt(we[Nr]);Zt(Kt,Nr)!==0&&(Kt!=null&&Ut(Kt),Nr!=null)&&Ut(Nr)})}))):mt?(Je={from:(pt=mt.lower)!=null?pt:c.MIN_KEY,to:(Ge=mt.upper)!=null?Ge:c.MAX_KEY},Xe.add(Je),Ue.add(Je)):(Ue.add(g),Xe.add(g),O.indexes.forEach(function(qe){return ce(qe.name).add(g)})),_.mutate(ue).then(function(qe){return!mt||ue.type!=="add"&&ue.type!=="put"||(Ue.addKeys(qe.results),ae&&ae.forEach(function(Dt){for(var Rt=ue.values.map(function(Kt){return Dt.extractKey(Kt)}),Ut=Dt.keyPath.findIndex(function(Kt){return Kt===F.keyPath}),nn=0,qr=qe.results.length;nn<qr;++nn)Rt[nn][Ut]=qe.results[nn];ce(Dt.name).addKeys(Rt)})),Te.mutatedParts=Us(Te.mutatedParts||{},Ke),qe})}}),he={get:function(ue){return[F,new tt(ue.key)]},getMany:function(ue){return[F,new tt().addKeys(ue.keys)]},count:N,query:N,openCursor:N};return o(he).forEach(function(ue){oe[ue]=function(ce){var de=ve.subscr,Ae=!!de,we=Wf(ve,_)&&Hf(ue,ce)?ce.obsSet={}:de;if(Ae){var Te,de=function(Je){return Je="idb://".concat(f,"/").concat(y,"/").concat(Je),we[Je]||(we[Je]=new tt)},Ke=de(""),Ue=de(":dels"),Ae=he[ue](ce),Xe=Ae[0],Ae=Ae[1];if((ue==="query"&&Xe.isPrimaryKey&&!ce.values?Ue:de(Xe.name||"")).add(Ae),!Xe.isPrimaryKey){if(ue!=="count")return Te=ue==="query"&&le&&ce.values&&_.query(s(s({},ce),{values:!1})),_[ue].apply(this,arguments).then(function(Je){if(ue==="query"){if(le&&ce.values)return Te.then(function(Rt){return Rt=Rt.result,Ke.addKeys(Rt),Je});var pt=ce.values?Je.result.map(je):Je.result;(ce.values?Ke:Ue).addKeys(pt)}else{var qe,Dt;if(ue==="openCursor")return Dt=ce.values,(qe=Je)&&Object.create(qe,{key:{get:function(){return Ue.addKey(qe.primaryKey),qe.key}},primaryKey:{get:function(){var Rt=qe.primaryKey;return Ue.addKey(Rt),Rt}},value:{get:function(){return Dt&&Ke.addKey(qe.primaryKey),qe.value}}})}return Je});Ue.add(g)}}return _[ue].apply(this,arguments)}}),oe}})}};function Zf(c,f,g){var y;return g.numFailures===0?f:f.type==="deleteRange"||(y=f.keys?f.keys.length:"values"in f&&f.values?f.values.length:1,g.numFailures===y)?null:(y=s({},f),l(y.keys)&&(y.keys=y.keys.filter(function(N,_){return!(_ in g.failures)})),"values"in y&&l(y.values)&&(y.values=y.values.filter(function(N,_){return!(_ in g.failures)})),y)}function _u(c,f){return g=c,((y=f).lower===void 0||(y.lowerOpen?0<Zt(g,y.lower):0<=Zt(g,y.lower)))&&(g=c,(y=f).upper===void 0||(y.upperOpen?Zt(g,y.upper)<0:Zt(g,y.upper)<=0));var g,y}function Gf(c,f,g,y,N,_){var O,F,ie,je,le,ae,oe;return!g||g.length===0||(O=f.query.index,F=O.multiEntry,ie=f.query.range,je=y.schema.primaryKey.extractKey,le=O.extractKey,ae=(O.lowLevelIndex||O).extractKey,(y=g.reduce(function(he,ue){var ce=he,de=[];if(ue.type==="add"||ue.type==="put")for(var Ae=new tt,we=ue.values.length-1;0<=we;--we){var Te,Ke=ue.values[we],Ue=je(Ke);!Ae.hasKey(Ue)&&(Te=le(Ke),F&&l(Te)?Te.some(function(pt){return _u(pt,ie)}):_u(Te,ie))&&(Ae.addKey(Ue),de.push(Ke))}switch(ue.type){case"add":var Xe=new tt().addKeys(f.values?he.map(function(qe){return je(qe)}):he),ce=he.concat(f.values?de.filter(function(qe){return qe=je(qe),!Xe.hasKey(qe)&&(Xe.addKey(qe),!0)}):de.map(function(qe){return je(qe)}).filter(function(qe){return!Xe.hasKey(qe)&&(Xe.addKey(qe),!0)}));break;case"put":var Ge=new tt().addKeys(ue.values.map(function(qe){return je(qe)}));ce=he.filter(function(qe){return!Ge.hasKey(f.values?je(qe):qe)}).concat(f.values?de:de.map(function(qe){return je(qe)}));break;case"delete":var mt=new tt().addKeys(ue.keys);ce=he.filter(function(qe){return!mt.hasKey(f.values?je(qe):qe)});break;case"deleteRange":var Je=ue.range;ce=he.filter(function(qe){return!_u(je(qe),Je)})}return ce},c))===c)?c:(oe=function(he,ue){return Zt(ae(he),ae(ue))||Zt(je(he),je(ue))},y.sort(f.direction==="prev"||f.direction==="prevunique"?function(he,ue){return oe(ue,he)}:oe),f.limit&&f.limit<1/0&&(y.length>f.limit?y.length=f.limit:c.length===f.limit&&y.length<f.limit&&(N.dirty=!0)),_?Object.freeze(y):y)}function Yf(c,f){return Zt(c.lower,f.lower)===0&&Zt(c.upper,f.upper)===0&&!!c.lowerOpen==!!f.lowerOpen&&!!c.upperOpen==!!f.upperOpen}function Rv(c,f){return((g,y,N,_)=>{if(g===void 0)return y!==void 0?-1:0;if(y===void 0)return 1;if((g=Zt(g,y))===0){if(N&&_)return 0;if(N)return 1;if(_)return-1}return g})(c.lower,f.lower,c.lowerOpen,f.lowerOpen)<=0&&0<=((g,y,N,_)=>{if(g===void 0)return y!==void 0?1:0;if(y===void 0)return-1;if((g=Zt(g,y))===0){if(N&&_)return 0;if(N)return-1;if(_)return 1}return g})(c.upper,f.upper,c.upperOpen,f.upperOpen)}function Mv(c,f,g,y){c.subscribers.add(g),y.addEventListener("abort",function(){var N,_;c.subscribers.delete(g),c.subscribers.size===0&&(N=c,_=f,setTimeout(function(){N.subscribers.size===0&&Y(_,N)},3e3))})}var Ov={stack:"dbcore",level:0,name:"Cache",create:function(c){var f=c.schema.name;return s(s({},c),{transaction:function(g,y,N){var _,O,F=c.transaction(g,y,N);return y==="readwrite"&&(N=(_=new AbortController).signal,F.addEventListener("abort",(O=function(ie){return function(){if(_.abort(),y==="readwrite"){for(var je=new Set,le=0,ae=g;le<ae.length;le++){var oe=ae[le],he=Dr["idb://".concat(f,"/").concat(oe)];if(he){var ue=c.table(oe),ce=he.optimisticOps.filter(function(qe){return qe.trans===F});if(F._explicit&&ie&&F.mutatedParts)for(var de=0,Ae=Object.values(he.queries.query);de<Ae.length;de++)for(var we=0,Te=(Xe=Ae[de]).slice();we<Te.length;we++)Is((Ge=Te[we]).obsSet,F.mutatedParts)&&(Y(Xe,Ge),Ge.subscribers.forEach(function(qe){return je.add(qe)}));else if(0<ce.length){he.optimisticOps=he.optimisticOps.filter(function(qe){return qe.trans!==F});for(var Ke=0,Ue=Object.values(he.queries.query);Ke<Ue.length;Ke++)for(var Xe,Ge,mt,Je=0,pt=(Xe=Ue[Ke]).slice();Je<pt.length;Je++)(Ge=pt[Je]).res!=null&&F.mutatedParts&&(ie&&!Ge.dirty?(mt=Object.isFrozen(Ge.res),mt=Gf(Ge.res,Ge.req,ce,ue,Ge,mt),Ge.dirty?(Y(Xe,Ge),Ge.subscribers.forEach(function(qe){return je.add(qe)})):mt!==Ge.res&&(Ge.res=mt,Ge.promise=Fe.resolve({result:mt}))):(Ge.dirty&&Y(Xe,Ge),Ge.subscribers.forEach(function(qe){return je.add(qe)})))}}}je.forEach(function(qe){return qe()})}}})(!1),{signal:N}),F.addEventListener("error",O(!1),{signal:N}),F.addEventListener("complete",O(!0),{signal:N})),F},table:function(g){var y=c.table(g),N=y.schema.primaryKey;return s(s({},y),{mutate:function(_){var O,F=ve.trans;return!N.outbound&&F.db._options.cache!=="disabled"&&!F.explicit&&F.idbtrans.mode==="readwrite"&&(O=Dr["idb://".concat(f,"/").concat(g)])?(F=y.mutate(_),_.type!=="add"&&_.type!=="put"||!(50<=_.values.length||Cu(N,_).some(function(ie){return ie==null}))?(O.optimisticOps.push(_),_.mutatedParts&&Ps(_.mutatedParts),F.then(function(ie){0<ie.numFailures&&(Y(O.optimisticOps,_),(ie=Zf(0,_,ie))&&O.optimisticOps.push(ie),_.mutatedParts)&&Ps(_.mutatedParts)}),F.catch(function(){Y(O.optimisticOps,_),_.mutatedParts&&Ps(_.mutatedParts)})):F.then(function(ie){var je=Zf(0,s(s({},_),{values:_.values.map(function(le,ae){var oe;return ie.failures[ae]?le:(j(oe=(oe=N.keyPath)!=null&&oe.includes(".")?G(le):s({},le),N.keyPath,ie.results[ae]),oe)})}),ie);O.optimisticOps.push(je),queueMicrotask(function(){return _.mutatedParts&&Ps(_.mutatedParts)})}),F):y.mutate(_)},query:function(_){var O,F,ie,je,le,ae,oe;return Wf(ve,y)&&Hf("query",_)?(O=((ie=ve.trans)==null?void 0:ie.db._options.cache)==="immutable",F=(ie=ve).requery,ie=ie.signal,ae=((he,ue,ce,de)=>{var Ae=Dr["idb://".concat(he,"/").concat(ue)];if(!Ae)return[];if(!(he=Ae.queries[ce]))return[null,!1,Ae,null];var we=he[(de.query?de.query.index.name:null)||""];if(!we)return[null,!1,Ae,null];switch(ce){case"query":var Te=(Ke=de.direction)!=null?Ke:"next",Ke=we.find(function(Ue){var Xe;return Ue.req.limit===de.limit&&Ue.req.values===de.values&&((Xe=Ue.req.direction)!=null?Xe:"next")===Te&&Yf(Ue.req.query.range,de.query.range)});return Ke?[Ke,!0,Ae,we]:[we.find(function(Ue){var Xe;return("limit"in Ue.req?Ue.req.limit:1/0)>=de.limit&&((Xe=Ue.req.direction)!=null?Xe:"next")===Te&&(!de.values||Ue.req.values)&&Rv(Ue.req.query.range,de.query.range)}),!1,Ae,we];case"count":return Ke=we.find(function(Ue){return Yf(Ue.req.query.range,de.query.range)}),[Ke,!!Ke,Ae,we]}})(f,g,"query",_),oe=ae[0],je=ae[2],le=ae[3],oe&&ae[1]?oe.obsSet=_.obsSet:(ae=y.query(_).then(function(he){var ue=he.result;if(oe&&(oe.res=ue),O){for(var ce=0,de=ue.length;ce<de;++ce)Object.freeze(ue[ce]);Object.freeze(ue)}return he}).catch(function(he){return le&&oe&&Y(le,oe),Promise.reject(he)}),oe={obsSet:_.obsSet,promise:ae,subscribers:new Set,type:"query",req:_,dirty:!1},le?le.push(oe):(le=[oe],(je=je||(Dr["idb://".concat(f,"/").concat(g)]={queries:{query:{},count:{}},objs:new Map,optimisticOps:[],unsignaledParts:{}})).queries.query[_.query.index.name||""]=le)),Mv(oe,le,F,ie),oe.promise.then(function(he){return he=Gf(he.result,_,je==null?void 0:je.optimisticOps,y,oe,O),{result:O?he:G(he)}})):y.query(_)}})}})}};function wl(c,f){return new Proxy(c,{get:function(g,y,N){return y==="db"?f:Reflect.get(g,y,N)}})}qn.prototype.version=function(c){if(isNaN(c)||c<.1)throw new X.Type("Given version is not a positive number");if(c=Math.round(10*c)/10,this.idbdb||this._state.isBeingOpened)throw new X.Schema("Cannot add version when database is open");this.verno=Math.max(this.verno,c);var f=this._versions,g=f.filter(function(y){return y._cfg.version===c})[0];return g||(g=new this.Version(c),f.push(g),f.sort(bl),g.stores({}),this._state.autoSchema=!1),g},qn.prototype._whenReady=function(c){var f=this;return this.idbdb&&(this._state.openComplete||ve.letThrough||this._vip)?c():new Fe(function(g,y){if(f._state.openComplete)return y(new X.DatabaseClosed(f._state.dbOpenError));if(!f._state.isBeingOpened){if(!f._state.autoOpen)return void y(new X.DatabaseClosed);f.open().catch(V)}f._state.dbReadyPromise.then(g,y)}).then(c)},qn.prototype.use=function(N){var f=N.stack,g=N.create,y=N.level,N=N.name,_=(N&&this.unuse({stack:f,name:N}),this._middlewares[f]||(this._middlewares[f]=[]));return _.push({stack:f,create:g,level:y??10,name:N}),_.sort(function(O,F){return O.level-F.level}),this},qn.prototype.unuse=function(c){var f=c.stack,g=c.name,y=c.create;return f&&this._middlewares[f]&&(this._middlewares[f]=this._middlewares[f].filter(function(N){return y?N.create!==y:!!g&&N.name!==g})),this},qn.prototype.open=function(){var c=this;return gn(re,function(){return Zi(c)})},qn.prototype._close=function(){this.on.close.fire(new CustomEvent("close"));var c=this._state;if(q.remove(this),this.idbdb){try{this.idbdb.close()}catch{}this.idbdb=null}c.isBeingOpened||(c.dbReadyPromise=new Fe(function(f){c.dbReadyResolve=f}),c.openCanceller=new Fe(function(f,g){c.cancelOpen=g}))},qn.prototype.close=function(f){var f=(f===void 0?{disableAutoOpen:!0}:f).disableAutoOpen,g=this._state;f?(g.isBeingOpened&&g.cancelOpen(new X.DatabaseClosed),this._close(),g.autoOpen=!1,g.dbOpenError=new X.DatabaseClosed):(this._close(),g.autoOpen=this._options.autoOpen||g.isBeingOpened,g.openComplete=!1,g.dbOpenError=null)},qn.prototype.delete=function(c){var f=this,g=(c===void 0&&(c={disableAutoOpen:!0}),0<arguments.length&&typeof arguments[0]!="object"),y=this._state;return new Fe(function(N,_){function O(){f.close(c);var F=f._deps.indexedDB.deleteDatabase(f.name);F.onsuccess=zt(function(){var ie,je,le;ie=f._deps,je=f.name,Re(le=ie.indexedDB)||je===Jr||fe(le,ie.IDBKeyRange).delete(je).catch(V),N()}),F.onerror=Kr(_),F.onblocked=f._fireOnBlocked}if(g)throw new X.InvalidArgument("Invalid closeOptions argument to db.delete()");y.isBeingOpened?y.dbReadyPromise.then(O):O()})},qn.prototype.backendDB=function(){return this.idbdb},qn.prototype.isOpen=function(){return this.idbdb!==null},qn.prototype.hasBeenClosed=function(){var c=this._state.dbOpenError;return c&&c.name==="DatabaseClosed"},qn.prototype.hasFailed=function(){return this._state.dbOpenError!==null},qn.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(qn.prototype,"tables",{get:function(){var c=this;return o(this._allTables).map(function(f){return c._allTables[f]})},enumerable:!1,configurable:!0}),qn.prototype.transaction=function(){var c=(function(f,g,y){var N=arguments.length;if(N<2)throw new X.InvalidArgument("Too few arguments");for(var _=new Array(N-1);--N;)_[N-1]=arguments[N];return y=_.pop(),[f,B(_),y]}).apply(this,arguments);return this._transaction.apply(this,c)},qn.prototype._transaction=function(c,f,g){var y,N,_=this,O=ve.trans,F=(O&&O.db===this&&c.indexOf("!")===-1||(O=null),c.indexOf("?")!==-1);c=c.replace("!","").replace("?","");try{if(N=f.map(function(je){if(je=je instanceof _.Table?je.name:je,typeof je!="string")throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return je}),c=="r"||c===er)y=er;else{if(c!="rw"&&c!=Vn)throw new X.InvalidArgument("Invalid transaction mode: "+c);y=Vn}if(O){if(O.mode===er&&y===Vn){if(!F)throw new X.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");O=null}O&&N.forEach(function(je){if(O&&O.storeNames.indexOf(je)===-1){if(!F)throw new X.SubTransaction("Table "+je+" not included in parent transaction.");O=null}}),F&&O&&!O.active&&(O=null)}}catch(je){return O?O._promise(null,function(le,ae){ae(je)}):xn(je)}var ie=(function je(le,ae,oe,he,ue){return Fe.resolve().then(function(){var we=ve.transless||ve,ce=le._createTransaction(ae,oe,le._dbSchema,he),we=(ce.explicit=!0,{trans:ce,transless:we});if(he)ce.idbtrans=he.idbtrans;else try{ce.create(),ce.idbtrans._explicit=!0,le._state.PR1398_maxLoop=3}catch(Te){return Te.name===me.InvalidState&&le.isOpen()&&0<--le._state.PR1398_maxLoop?(console.warn("Dexie: Need to reopen db"),le.close({disableAutoOpen:!1}),le.open().then(function(){return je(le,ae,oe,null,ue)})):xn(Te)}var de,Ae=J(ue),we=(Ae&&Sr(),Fe.follow(function(){var Te;(de=ue.call(ce,ce))&&(Ae?(Te=zn.bind(null,null),de.then(Te,Te)):typeof de.next=="function"&&typeof de.throw=="function"&&(de=Gi(de)))},we));return(de&&typeof de.then=="function"?Fe.resolve(de).then(function(Te){return ce.active?Te:xn(new X.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))}):we.then(function(){return de})).then(function(Te){return he&&ce._resolve(),ce._completion.then(function(){return Te})}).catch(function(Te){return ce._reject(Te),xn(Te)})})}).bind(null,this,y,N,O,g);return O?O._promise(y,ie,"lock"):ve.trans?gn(ve.transless,function(){return _._whenReady(ie)}):this._whenReady(ie)},qn.prototype.table=function(c){if(h(this._allTables,c))return this._allTables[c];throw new X.InvalidTable("Table ".concat(c," does not exist"))};var Ts=qn;function qn(c,f){var g,y,N,_,O,F=this,ie=(this._middlewares={},this.verno=0,qn.dependencies),ie=(this._options=f=s({addons:qn.addons,autoOpen:!0,indexedDB:ie.indexedDB,IDBKeyRange:ie.IDBKeyRange,cache:"cloned",maxConnections:1e3},f),this._deps={indexedDB:f.indexedDB,IDBKeyRange:f.IDBKeyRange},f.addons),je=(this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this,{dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:V,dbReadyPromise:null,cancelOpen:V,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3,autoOpen:f.autoOpen}),le=(je.dbReadyPromise=new Fe(function(ae){je.dbReadyResolve=ae}),je.openCanceller=new Fe(function(ae,oe){je.cancelOpen=oe}),this._state=je,this.name=c,this.on=Nt(this,"populate","blocked","versionchange","close",{ready:[vt,V]}),this.once=function(ae,oe){var he=function(){for(var ue=[],ce=0;ce<arguments.length;ce++)ue[ce]=arguments[ce];F.on(ae).unsubscribe(he),oe.apply(F,ue)};return F.on(ae,he)},this.on.ready.subscribe=A(this.on.ready.subscribe,function(ae){return function(oe,he){qn.vip(function(){var ue,ce=F._state;ce.openComplete?(ce.dbOpenError||Fe.resolve().then(oe),he&&ae(oe)):ce.onReadyBeingFired?(ce.onReadyBeingFired.push(oe),he&&ae(oe)):(ae(oe),ue=F,he||ae(function de(){ue.on.ready.unsubscribe(oe),ue.on.ready.unsubscribe(de)}))})}}),this.Collection=(g=this,gt(Aa.prototype,function(de,ce){this.db=g;var he=Qr,ue=null;if(ce)try{he=ce()}catch(we){ue=we}var ce=de._ctx,de=ce.table,Ae=de.hook.reading.fire;this._ctx={table:de,index:ce.index,isPrimKey:!ce.index||de.schema.primKey.keyPath&&ce.index===de.schema.primKey.name,range:he,keysOnly:!1,dir:"next",unique:"",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:ue,or:ce.or,valueMapper:Ae!==Se?Ae:null}})),this.Table=(y=this,gt(Yt.prototype,function(ae,oe,he){this.db=y,this._tx=he,this.name=ae,this.schema=oe,this.hook=y._allTables[ae]?y._allTables[ae].hook:Nt(null,{creating:[Le,V],reading:[Ce,Se],updating:[lt,V],deleting:[rt,V]})})),this.Transaction=(N=this,gt(ku.prototype,function(ae,oe,he,ue,ce){var de=this;ae!=="readonly"&&oe.forEach(function(Ae){Ae=(Ae=he[Ae])==null?void 0:Ae.yProps,Ae&&(oe=oe.concat(Ae.map(function(we){return we.updatesTable})))}),this.db=N,this.mode=ae,this.storeNames=oe,this.schema=he,this.chromeTransactionDurability=ue,this.idbtrans=null,this.on=Nt(this,"complete","error","abort"),this.parent=ce||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new Fe(function(Ae,we){de._resolve=Ae,de._reject=we}),this._completion.then(function(){de.active=!1,de.on.complete.fire()},function(Ae){var we=de.active;return de.active=!1,de.on.error.fire(Ae),de.parent?de.parent._reject(Ae):we&&de.idbtrans&&de.idbtrans.abort(),xn(Ae)})})),this.Version=(_=this,gt(jl.prototype,function(ae){this.db=_,this._cfg={version:ae,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})),this.WhereClause=(O=this,gt(pl.prototype,function(ae,oe,he){if(this.db=O,this._ctx={table:ae,index:oe===":id"?null:oe,or:he},this._cmp=this._ascending=Zt,this._descending=function(ue,ce){return Zt(ce,ue)},this._max=function(ue,ce){return 0<Zt(ue,ce)?ue:ce},this._min=function(ue,ce){return Zt(ue,ce)<0?ue:ce},this._IDBKeyRange=O._deps.IDBKeyRange,!this._IDBKeyRange)throw new X.MissingAPI})),this.on("versionchange",function(ae){0<ae.newVersion?console.warn("Another connection wants to upgrade database '".concat(F.name,"'. Closing db now to resume the upgrade.")):console.warn("Another connection wants to delete database '".concat(F.name,"'. Closing db now to resume the delete request.")),F.close({disableAutoOpen:!1})}),this.on("blocked",function(ae){!ae.newVersion||ae.newVersion<ae.oldVersion?console.warn("Dexie.delete('".concat(F.name,"') was blocked")):console.warn("Upgrade '".concat(F.name,"' blocked by other connection holding version ").concat(ae.oldVersion/10))}),this._maxKey=ys(f.IDBKeyRange),this._createTransaction=function(ae,oe,he,ue){return new F.Transaction(ae,oe,he,F._options.chromeTransactionDurability,ue)},this._fireOnBlocked=function(ae){F.on("blocked").fire(ae),q.toArray().filter(function(oe){return oe.name===F.name&&oe!==F&&!oe._state.vcFired}).map(function(oe){return oe.on("versionchange").fire(ae)})},this.use(Tv),this.use(Ov),this.use(Dv),this.use(kl),this.use(Pv),new Proxy(this,{get:function(ae,oe,he){var ue;return oe==="_vip"||(oe==="table"?function(ce){return wl(F.table(ce),le)}:(ue=Reflect.get(ae,oe,he))instanceof Yt?wl(ue,le):oe==="tables"?ue.map(function(ce){return wl(ce,le)}):oe==="_createTransaction"?function(){return wl(ue.apply(this,arguments),le)}:ue)}}));this.vip=le,ie.forEach(function(ae){return ae(F)})}var Sl,ni=typeof Symbol<"u"&&"observable"in Symbol?Symbol.observable:"@@observable",Lv=(Iu.prototype.subscribe=function(c,f,g){return this._subscribe(c&&typeof c!="function"?c:{next:c,error:f,complete:g})},Iu.prototype[ni]=function(){return this},Iu);function Iu(c){this._subscribe=c}try{Sl={indexedDB:i.indexedDB||i.mozIndexedDB||i.webkitIndexedDB||i.msIndexedDB,IDBKeyRange:i.IDBKeyRange||i.webkitIDBKeyRange}}catch{Sl={indexedDB:null,IDBKeyRange:null}}function Jf(c){var f,g=!1,y=new Lv(function(N){var _=J(c),O,F=!1,ie={},je={},le={get closed(){return F},unsubscribe:function(){F||(F=!0,O&&O.abort(),ae&&Tr.storagemutated.unsubscribe(ue))}},ae=(N.start&&N.start(le),!1),oe=function(){return Pr(ce)};function he(){return Is(je,ie)}var ue=function(de){Us(ie,de),he()&&oe()},ce=function(){var de,Ae,we;!F&&Sl.indexedDB&&(ie={},de={},O&&O.abort(),O=new AbortController,we=(Te=>{var Ke=wn();try{_&&Sr();var Ue=yr(c,Te);return Ue=_?Ue.finally(zn):Ue}finally{Ke&&vn()}})(Ae={subscr:de,signal:O.signal,requery:oe,querier:c,trans:null}),ae||(Tr.storagemutated.subscribe(ue),ae=!0),Promise.resolve(we).then(function(Te){g=!0,f=Te,F||Ae.signal.aborted||(he()||(je=de,he())?oe():(ie={},Pr(function(){return!F&&N.next&&N.next(Te)})))},function(Te){g=!1,["DatabaseClosedError","AbortError"].includes(Te==null?void 0:Te.name)||F||Pr(function(){F||N.error&&N.error(Te)})}))};return setTimeout(oe,0),le});return y.hasValue=function(){return g},y.getValue=function(){return f},y}var Ra=Ts;function Eu(c){var f=Zs;try{Zs=!0,Tr.storagemutated.fire(c),Ta(c,!0)}finally{Zs=f}}x(Ra,s(s({},Q),{delete:function(c){return new Ra(c,{addons:[]}).delete()},exists:function(c){return new Ra(c,{addons:[]}).open().then(function(f){return f.close(),!0}).catch("NoSuchDatabaseError",function(){return!1})},getDatabaseNames:function(c){try{return f=Ra.dependencies,g=f.indexedDB,f=f.IDBKeyRange,(Re(g)?Promise.resolve(g.databases()).then(function(y){return y.map(function(N){return N.name}).filter(function(N){return N!==Jr})}):fe(g,f).toCollection().primaryKeys()).then(c)}catch{return xn(new X.MissingAPI)}var f,g},defineClass:function(){return function(c){d(this,c)}},ignoreTransaction:function(c){return ve.trans?gn(ve.transless||re,c):c()},vip:dt,async:function(c){return function(){try{var f=Gi(c.apply(this,arguments));return f&&typeof f.then=="function"?f:Fe.resolve(f)}catch(g){return xn(g)}}},spawn:function(c,f,g){try{var y=Gi(c.apply(g,f||[]));return y&&typeof y.then=="function"?y:Fe.resolve(y)}catch(N){return xn(N)}},currentTransaction:{get:function(){return ve.trans||null}},waitFor:function(c,f){return c=Fe.resolve(typeof c=="function"?Ra.ignoreTransaction(c):c).timeout(f||6e4),ve.trans?ve.trans.waitFor(c):c},Promise:Fe,debug:{get:function(){return Pe},set:function(c){it(c)}},derive:v,extend:d,props:x,override:A,Events:Nt,on:Tr,liveQuery:Jf,extendObservabilitySet:Us,getByKeyPath:k,setByKeyPath:j,delByKeyPath:function(c,f){typeof f=="string"?j(c,f,void 0):"length"in f&&[].map.call(f,function(g){j(c,g,void 0)})},shallowClone:z,deepClone:G,getObjectDiff:ur,cmp:Zt,asap:C,minKey:-1/0,addons:[],connections:{get:q.toArray}
78,errnames:me,dependencies:Sl,cache:Dr,semVer:"4.4.4",version:"4.4.4".split(".").map(function(c){return parseInt(c)}).reduce(function(c,f,g){return c+f/Math.pow(10,2*g)})})),Ra.maxKey=ys(Ra.dependencies.IDBKeyRange),typeof dispatchEvent<"u"&&typeof addEventListener<"u"&&(Tr(Ia,function(c){Zs||(c=new CustomEvent(Vi,{detail:c}),Zs=!0,dispatchEvent(c),Zs=!1)}),addEventListener(Vi,function(c){c=c.detail,Zs||Eu(c)}));var ri,Zs=!1,Qf=function(){};return typeof BroadcastChannel<"u"&&((Qf=function(){(ri=new BroadcastChannel(Vi)).onmessage=function(c){return c.data&&Eu(c.data)}})(),typeof ri.unref=="function"&&ri.unref(),Tr(Ia,function(c){Zs||ri.postMessage(c)})),typeof addEventListener<"u"&&(addEventListener("pagehide",function(c){if(!Ts.disableBfCache&&c.persisted){Pe&&console.debug("Dexie: handling persisted pagehide"),ri!=null&&ri.close();for(var f=0,g=q.toArray();f<g.length;f++)g[f].close({disableAutoOpen:!1})}}),addEventListener("pageshow",function(c){!Ts.disableBfCache&&c.persisted&&(Pe&&console.debug("Dexie: handling persisted pageshow"),Qf(),Eu({all:new tt(-1/0,[[]])}))})),Fe.rejectionMapper=function(c,f){return!c||c instanceof ne||c instanceof TypeError||c instanceof SyntaxError||!c.name||!Ie[c.name]?c:(f=new Ie[c.name](f||c.message,c),"stack"in c&&w(f,"stack",{get:function(){return this.inner.stack}}),f)},it(Pe),s(Ts,Object.freeze({__proto__:null,DEFAULT_MAX_CONNECTIONS:1e3,Dexie:Ts,Entity:Sa,PropModification:ct,RangeSet:tt,add:function(c){return new ct({add:c})},cmp:Zt,default:Ts,liveQuery:Jf,mergeRanges:St,rangesOverlap:Ct,remove:function(c){return new ct({remove:c})},replacePrefix:function(c,f){return new ct({replacePrefix:[c,f]})}}),{default:Ts}),Ts})})(Ul)),Ul.exports}var Uw=qw();const qd=$v(Uw),Up=Symbol.for("Dexie"),hc=globalThis[Up]||(globalThis[Up]=qd);if(qd.semVer!==hc.semVer)throw new Error(`Two different versions of Dexie loaded in the same app: ${qd.semVer} and ${hc.semVer}`);const{liveQuery:WR,mergeRanges:HR,rangesOverlap:ZR,RangeSet:GR,cmp:YR,Entity:JR,PropModification:QR,replacePrefix:XR,add:eM,remove:tM,DexieYProvider:nM}=hc;let Ud=null;function $u(e){Ud=e}class Ww extends hc{constructor(){super("lia-one-platform");Rn(this,"articles");Rn(this,"suppliers");Rn(this,"workOrders");Rn(this,"syncQueue");Rn(this,"tenantMeta");this.version(1).stores({articles:"[tenantId+id], tenantId, syncStatus, updatedAt",suppliers:"[tenantId+id], tenantId, syncStatus, updatedAt",workOrders:"[tenantId+id], tenantId, syncStatus, updatedAt",syncQueue:"id, tenantId, entity, createdAt",tenantMeta:"tenantId"}),this.version(2).stores({articles:"[tenantId+id], tenantId, syncStatus, updatedAt, version",suppliers:"[tenantId+id], tenantId, syncStatus, updatedAt, version",workOrders:"[tenantId+id], tenantId, syncStatus, updatedAt, version",syncQueue:"id, tenantId, entity, createdAt",tenantMeta:"tenantId"}).upgrade(async r=>{await r.table("articles").toCollection().modify(s=>{s.version===void 0&&(s.version=1)}),await r.table("suppliers").toCollection().modify(s=>{s.version===void 0&&(s.version=1)}),await r.table("workOrders").toCollection().modify(s=>{s.version===void 0&&(s.version=1)}),await r.table("syncQueue").toCollection().modify(s=>{s.baseVersion===void 0&&(s.baseVersion=1),s.basePayload===void 0&&(s.basePayload=s.payload??"{}"),s.entityId===void 0&&(s.entityId=s.id)})}),this.version(3).stores({articles:"[tenantId+id], tenantId, syncStatus, updatedAt, version",suppliers:"[tenantId+id], tenantId, syncStatus, updatedAt, version",workOrders:"[tenantId+id], tenantId, syncStatus, updatedAt, version",syncQueue:"id, changeId, tenantId, entity, createdAt",tenantMeta:"tenantId"}).upgrade(async r=>{await r.table("articles").toCollection().modify(s=>{s.dirtyFields||(s.dirtyFields=[])}),await r.table("syncQueue").toCollection().modify(s=>{s.changeId||(s.changeId=s.id),s.dirtyFields||(s.dirtyFields=[])})})}}let Ku=null;function gr(){return Ku||(Ku=new Ww),Ku}function ps(){if(!Ud)throw new Error("Lia-One: no active tenant â call setActiveTenantId() after login");return Ud}const zs={async list(e){const t=e??ps();return gr().articles.where("tenantId").equals(t).toArray()},async put(e){const t=e.tenantId??ps();await gr().articles.put({...e,tenantId:t})},async delete(e,t){const r=t??ps();await gr().articles.delete([r,e])},async clearTenant(e){const t=e??ps();await gr().articles.where("tenantId").equals(t).delete()}},Px={async list(e){const t=e??ps();return gr().suppliers.where("tenantId").equals(t).toArray()},async put(e){const t=e.tenantId??ps();await gr().suppliers.put({...e,tenantId:t})},async delete(e,t){const r=t??ps();await gr().suppliers.delete([r,e])},async clearTenant(e){const t=e??ps();await gr().suppliers.where("tenantId").equals(t).delete()}}
78,gc={async enqueue(e){const t=e.tenantId??ps(),r={id:e.id,changeId:e.changeId,tenantId:t,entity:e.entity,entityId:e.entityId,operation:e.operation,payload:JSON.stringify(e.payload),dirtyFields:e.dirtyFields??[],baseVersion:e.baseVersion??1,basePayload:JSON.stringify(e.basePayload??e.payload),createdAt:e.createdAt,retryCount:e.retryCount??0,lastError:e.lastError};await gr().syncQueue.put(r)},async listPending(e){const t=e??ps();return gr().syncQueue.where("tenantId").equals(t).sortBy("createdAt")},async remove(e){await gr().syncQueue.delete(e)},async clearTenant(e){const t=e??ps();await gr().syncQueue.where("tenantId").equals(t).delete()}},Tx=new Map,Wd=new Set;function Xc(e){Tx.set(e.id,e),Wd.forEach(t=>t())}function Hw(e){return Wd.add(e),()=>Wd.delete(e)}function Wp(){return Array.from(Tx.values())}const Vu="lia_entitlements_",Zw=["article-management","procurement","ticket-system","data-interfaces","module.manufacturing.access"],Hp=["article-management","data-interfaces"];class Gw{constructor(){Rn(this,"entitlements",null)}loadFromStorage(t){var r;try{const s=localStorage.getItem(`${Vu}${t}`);if(s){const a=JSON.parse(s);if((r=a.features)!=null&&r.length)return this.entitlements=a,this.entitlements}}catch{}return this.entitlements={tenantId:t,features:[...Hp],updatedAt:new Date().toISOString()},this.persist(),this.entitlements}setEntitlements(t){var r;this.entitlements={...t,features:(r=t.features)!=null&&r.length?t.features:[...Hp]},this.persist()}getEntitlements(){return this.entitlements}hasAccess(t){return this.entitlements?this.entitlements.features.includes(t):!1}listFeatures(){var t;return((t=this.entitlements)==null?void 0:t.features)??[]}listAllFeatures(){return[...Zw]}clear(){this.entitlements&&localStorage.removeItem(`${Vu}${this.entitlements.tenantId}`),this.entitlements=null}persist(){this.entitlements&&localStorage.setItem(`${Vu}${this.entitlements.tenantId}`,JSON.stringify(this.entitlements))}}const ms=new Gw,cf=()=>new Date().toISOString();async function Yw(e,t){await zs.clearTenant(e);const r=cf();for(const s of t){const a={tenantId:e,id:s.id,articleNumber:s.articleNumber??s.id,payload:JSON.stringify(s),version:typeof s.version=="number"?s.version:1,updatedAt:typeof s.updatedAt=="string"?s.updatedAt:r,syncStatus:"synced",dirtyFields:[]};await zs.put(a)}return t.length}async function Zp(e,t,r){const s=gr();await s[t].where("tenantId").equals(e).delete();const a=cf();for(const i of r)await s[t].put({tenantId:e,id:i.id,payload:JSON.stringify(i),version:typeof i.version=="number"?i.version:1,updatedAt:typeof i.updatedAt=="string"?i.updatedAt:a,syncStatus:"synced",dirtyFields:[]});return r.length}async function Jw(e,t={}){const{tenantId:r,features:s}=e;ms.setEntitlements(e);const a={articles:0,suppliers:0,workOrders:0};if(s.includes("article-management")&&t.fetchArticles){const i=await t.fetchArticles();a.articles=await Yw(r,i)}if(s.includes("article-management")&&t.fetchSuppliers){const i=await t.fetchSuppliers();a.suppliers=await Zp(r,"suppliers",i)}if(s.includes("procurement")&&t.fetchWorkOrders){const i=await t.fetchWorkOrders();a.workOrders=await Zp(r,"workOrders",i)}return await gr().tenantMeta.put({tenantId:r,lastSyncAt:cf(),entitlementsJson:JSON.stringify(e)}),{entitlements:e,mirrored:a}}function Wl(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;if(typeof e=="object"||typeof t=="object")try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}return!1}function Qw(e,t,r){const s={...r},a=[],i=new Set([...Object.keys(e),...Object.keys(t),...Object.keys(r)]);for(const o of i){const l=e[o],d=t[o],m=r[o],p=!Wl(l,d),h=!Wl(l,m);p&&h?Wl(d,m)?s[o]=d:a.push(o):p?s[o]=d:s[o]=m}return{merged:s,conflictingFields:a,autoResolved:a.length===0}}function Pl(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])].filter(s=>!Wl(e[s],t[s]))}function qu(e,t,r,s,a,i,o){return{entity:e,entityId:t,localVersion:r.version,serverVersion:s.version,localPayload:r.payload,serverPayload:s.payload,conflictingFields:i,autoResolvable:i.length===0,mergedPayload:o}}function Xw(e,t){return t>e}class eS{constructor(t){this.adapters=t}async run(){const t=await this.adapters.getLastSyncTimestamp(),r=await this.adapters.pullChanges(t),s=await this.adapters.listPending(),a=new Set(s.map(p=>p.entityId)),i=[];let o=0;for(const p of r){if(a.has(p.id))continue;const h=await this.adapters.getLocalRecord(p.id);(!h||p.version>h.version)&&(await this.adapters.applyLocalRecord(p,"synced"),o+=1)}const l=[];let d=0;for(const p of s){if(p.operation==="delete")continue;const x=r.find(b=>b.id===p.entityId)??await this.adapters.getLocalRecord(p.entityId)??{id:p.entityId,version:p.baseVersion,updatedAt:p.localUpdatedAt,payload:p.basePayload};if(Xw(p.baseVersion,x.version)){const b=Qw(p.basePayload,p.localPayload,x.payload);
78if(!b.autoResolved){l.push(qu(p.entity,p.entityId,{id:p.entityId,version:p.baseVersion,updatedAt:p.localUpdatedAt,payload:p.localPayload},x,p.basePayload,b.conflictingFields,b.merged));continue}try{const w=Pl(p.basePayload,b.merged),v=await this.adapters.pushUpdate(p.entityId,b.merged,{expectedVersion:x.version,dirtyFields:w,changeId:p.changeId,basePayload:p.basePayload});await this.adapters.applyLocalRecord(v,"synced"),await this.adapters.removePending(p.queueId),d+=1}catch{l.push(qu(p.entity,p.entityId,{id:p.entityId,version:p.baseVersion,updatedAt:p.localUpdatedAt,payload:p.localPayload},x,p.basePayload,Pl(p.basePayload,p.localPayload)))}continue}try{const b=p.dirtyFields.length?p.dirtyFields:Pl(p.basePayload,p.localPayload),w=await this.adapters.pushUpdate(p.entityId,p.localPayload,{expectedVersion:p.baseVersion,dirtyFields:b,changeId:p.changeId,basePayload:p.basePayload});await this.adapters.applyLocalRecord(w,"synced"),await this.adapters.removePending(p.queueId),d+=1}catch{l.push(qu(p.entity,p.entityId,{id:p.entityId,version:p.baseVersion,updatedAt:p.localUpdatedAt,payload:p.localPayload},x,p.basePayload,Pl(p.basePayload,p.localPayload)))}}const m=new Date().toISOString();return await this.adapters.setLastSyncTimestamp(m),{pulled:{applied:o,conflicts:i},pushed:{pushed:d,conflicts:l},lastSyncAt:m}}}function tS(e,t){if(!t.includes("."))return e[t];const[r,...s]=t.split(".");let a=e[r];for(const i of s){if(a==null||typeof a!="object")return;a=a[i]}return a}function nS(e,t,r){if(!t.includes(".")){e[t]=r;return}const[s,...a]=t.split("."),i=e[s]!==void 0&&typeof e[s]=="object"&&e[s]!==null?{...e[s]}:{};let o=i;for(let l=0;l<a.length-1;l+=1){const d=a[l],m=o[d]!==void 0&&typeof o[d]=="object"&&o[d]!==null?{...o[d]}:{};o[d]=m,o=m}o[a[a.length-1]]=r,e[s]=i}function rS(e,t){const r={};for(const s of t){const a=tS(e,s);a!==void 0&&nS(r,s,a)}return r}function sS(e,t){return[...new Set([...e??[],...t])]}class aS{constructor(t){Rn(this,"engine");this.engine=new eS({...t,pushUpdate:async(r,s,a)=>{const i=a.dirtyFields??[],o=i.length>0?rS(s,i):s;return t.pushUpdate(r,o,a)}})}async run(){return this.engine.run()}}const Dx=u.createContext(null);function rM({tenantId:e,children:t,fetchEntitlements:r,syncFetchers:s}){const[,a]=u.useState(0),i=u.useRef(new Set),[o,l]=u.useState(null),[d,m]=u.useState(!!e),[p,h]=u.useState(!1),[x,b]=u.useState(null),[w,v]=u.useState(null);u.useEffect(()=>Hw(()=>a(I=>I+1)),[]);const S=u.useMemo(()=>{const I=(o==null?void 0:o.features)??ms.listFeatures();return Wp().filter(C=>I.includes(C.featureId))},[e,o]),R=u.useCallback(async()=>{if(!e)return ms.clear(),l(null),$u(null),!1;$u(e),m(!0),v(null);try{let I;r?I=await r(e):I=ms.loadFromStorage(e),ms.setEntitlements(I),l(I),h(!0);const C=await Jw(I,s??{});b(C.entitlements.updatedAt);const k=Wp().filter(j=>ms.hasAccess(j.featureId));for(const j of k)j.bootstrap&&!i.current.has(j.id)&&(await j.bootstrap(),i.current.add(j.id));return!0}catch(I){const C=I instanceof Error?I.message:"Entitlements-Sync fehlgeschlagen";return v(C),ms.loadFromStorage(e),l(ms.getEntitlements()),!1}finally{m(!1),h(!1)}},[e,r,s]),E=u.useCallback(async()=>{await R()},[R]);u.useEffect(()=>{if(!e){ms.clear(),l(null),$u(null),i.current=new Set;return}R()},[e]);const A=u.useMemo(()=>({tenantId:e,subscription:ms,hasAccess:I=>(o==null?void 0:o.features.includes(I))??ms.hasAccess(I),activeModules:S,entitlements:o,isLoadingEntitlements:d,isSyncing:p,lastSyncAt:x,syncError:w,refreshEntitlements:E}),[e,S,o,d,p,x,w,E]);return n.jsx(Dx.Provider,{value:A,children:t})}function uf(){const e=u.useContext(Dx);if(!e)throw new Error("useEntitlements must be used within EntitlementProvider");return e}const Rx=uf;function Mx({featureId:e,children:t}){const{hasAccess:r,isLoadingEntitlements:s,entitlements:a}=uf(),i=(a==null?void 0:a.features.includes(e))??(!s&&r(e));return s?n.jsx("div",{className:"flex min-h-[40vh] items-center justify-center",children:n.jsx("div",{className:"size-8 animate-spin rounded-full border-2 border-primary border-t-transparent"})}):i?n.jsx(n.Fragment,{children:t}):n.jsx(Oc,{to:`/upgrade/${e}`,replace:!0})}function fi(e){return n.jsx(Mx,{...e})}const iS={"article-management":{title:"Artikelverwaltung",description:"Stammdaten, Stücklisten und Lieferanten â Kernmodul des ERP."},procurement:{title:"Beschaffung & Aufträge",description:"Arbeitsaufträge, Bestellungen und Beschaffungsworkflows."},"ticket-system":{title:"Tickets",description:"Kundenservice, Timeline und E-Mail-Integration."},"data-interfaces":{title:"Datenschnittstellen",description:"Importer, Exporter und CAD-Anbindungen."},"module.manufacturing.access":{title:"Fertigung",description:"Maschinenprofile, SMT-Regeln und konfigurierbare Export-Mappings."}},oS={"article-management":"/artikel",procurement:"/auftraege","data-interfaces":"/schnittstellen","module.manufacturing.access":"/fertigung"};function lS(e){return typeof window<"u"&&localStorage.getItem("lia-app-mode")==="integrated"?oS[e]??"/artikel":"/"}function sM(){const{featureId:e}=Go(),{hasAccess:t}=Rx(),r=e?iS[e]:null;return e&&t(e)?n.jsx(Oc,{to:lS(e),replace:!0}):n.jsx("div",{className:"flex min-h-[60vh] flex-col items-center justify-center px-4 py-16",children:n.jsxs("div",{className:"w-full max-w-lg rounded-2xl border border-border bg-card p-8 text-center shadow-sm",children:[n.jsx("div",{className:"mx-auto flex size-14 items-center justify-center rounded-2xl bg-primary/10",children:n.jsx(Bs,{className:"size-7 text-primary"})}),n.jsx("p",{className:"mt-4 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Lia-One Upgrade"}),n.jsx("h1",{className:"mt-2 text-xl font-semibold tracking-tight",children:(r==null?void 0:r.title)??"Modul nicht freigeschaltet"}),n.jsx("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:(r==null?void 0:r.description)??"Dieses Modul ist für Ihren Mandanten nicht im aktuellen Abonnement enthalten."}),e&&n.jsxs("p",{className:"mt-4 font-mono text-[10px] text-muted-foreground
78/60",children:["Feature: ",e]}),n.jsx("button",{type:"button",className:"mt-8 inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground hover:bg-primary/90",onClick:()=>{window.location.href="mailto:[email protected]?subject=Lia-One%20Upgrade"},children:"Upgrade anfragen"})]})})}u.createContext([]);const Ox=u.createContext(void 0);function cS(e){if(!e.token||!e.tenantId||!e.role||!e.userId||!e.email)throw new Error("Incomplete login result");return{token:e.token,email:e.email,role:e.role,userId:e.userId,displayName:e.displayName??"",tenantId:e.tenantId,tenantName:e.tenantName??void 0,tenantLogoUrl:e.tenantLogoUrl??null}}function uS(e,t){return{...e,tenantName:t.tenantName,tenantLogoUrl:t.tenantLogoUrl??null}}function aM({children:e}){const[t,r]=u.useState(()=>Pd()),[s,a]=u.useState(!1),[i,o]=u.useState(null);u.useEffect(()=>{const x=()=>r(Pd());return window.addEventListener(ap,x),()=>window.removeEventListener(ap,x)},[]),u.useEffect(()=>{if(!(t!=null&&t.token))return;let x=!1;return ek().then(b=>{x||r(w=>{if(!(w!=null&&w.token))return w;const v=uS(w,b);return ip(v),v})},()=>{}),()=>{x=!0}},[t==null?void 0:t.token]);const l=u.useCallback(x=>{const b=cS(x);return ip(b),UN(b.tenantId),r(b),x},[]),d=u.useCallback(async(x,b)=>{var w;a(!0),o(null);try{const v=qN();let S;try{S=await Dp(x,b,v)}catch(R){if(v&&R instanceof ut&&R.status===403)S=await Dp(x,b);else throw R}if(S.requiresTenantSelection&&S.loginTicket&&((w=S.tenants)!=null&&w.length)){const R=v&&S.tenants.some(E=>E.tenantId===v)?v:null;R&&(S=await Rp(S.loginTicket,R))}return!S.requiresTenantSelection&&S.token&&l(S),S}catch(v){const S=v instanceof ut?v.message:"Anmeldung fehlgeschlagen";throw o(S),v}finally{a(!1)}},[l]),m=u.useCallback(async(x,b)=>{a(!0),o(null);try{const w=await Rp(x,b);l(w)}catch(w){const v=w instanceof ut?w.message:"Mandant konnte nicht gewählt werden";throw o(v),w}finally{a(!1)}},[l]),p=u.useCallback(()=>{WN(),r(null),o(null)},[]),h=u.useMemo(()=>({session:t,isAuthenticated:!!(t!=null&&t.token),isLoading:s,login:d,selectTenant:m,logout:p,authError:i}),[t,s,d,m,p,i]);return n.jsx(Ox.Provider,{value:h,children:e})}function os(){const e=u.useContext(Ox);if(!e)throw new Error("useAuth must be used within AuthProvider");return e}const df=new Map,Hd=new Set;function Tl(e){df.set(e.id,e),Hd.forEach(t=>t())}function dS(e){return Hd.add(e),()=>Hd.delete(e)}function al(){return Array.from(df.values())}function xc(e){return df.get(e)}function Lx(e){return Object.fromEntries(e.configSchema.filter(t=>t.defaultValue!==void 0).map(t=>[t.key,t.defaultValue]))}function mS(){return al().map(e=>({moduleId:e.id,active:e.type==="importer",config:Lx(e)}))}function il(e){const t=al(),r=mS();return e!=null&&e.length?t.map(s=>{const a=e.find(o=>o.moduleId===s.id),i=r.find(o=>o.moduleId===s.id);return a?{moduleId:s.id,active:a.active,config:{...Lx(s),...a.config}}:i}):r}function fS(e,t){const r=il(e),s=new Set(r.filter(a=>a.active).map(a=>a.moduleId));return al().filter(a=>s.has(a.id)&&!0)}async function Uu(e,t,r,s){const a=t.updatedAt??new Date().toISOString(),i=(await zs.list(e)).find(o=>o.id===t.id);await zs.put({id:t.id,tenantId:e,articleNumber:t.articleNumber,payload:JSON.stringify(r),version:t.version??1,updatedAt:a,syncStatus:"synced",dirtyFields:sS(i==null?void 0:i.dirtyFields,[])})}async function pS(e,t,r,s,a){const i=(a==null?void 0:a.changeId)??crypto.randomUUID();return await gc.enqueue({id:i,changeId:i,tenantId:e,entity:"article",entityId:r,operation:t,payload:s,dirtyFields:[],baseVersion:1,basePayload:s,createdAt:new Date().toISOString()}),i}async function yc(e,t,r,s){const a=t.updatedAt??new Date().toISOString();await Px.put({id:t.id,tenantId:e,payload:JSON.stringify(r),version:t.version??1,updatedAt:a,syncStatus:(s==null?void 0:s.syncStatus)??"synced"})}async function Zd(e,t,r,s,a){const i=(a==null?void 0:a.changeId)??crypto.randomUUID();return await gc.enqueue({id:i,changeId:i,tenantId:e,entity:"supplier",entityId:r,operation:t,payload:s,dirtyFields:[],baseVersion:1,basePayload:s,createdAt:new Date().toISOString()}),i}async function Gp(e,t,r){const s=new Date().toISOString(),a=gr();await zs.clearTenant(e),t.length>0&&await a.articles.bulkPut(t.map(o=>({id:o.id,tenantId:e,articleNumber:o.articleNumber,payload:JSON.stringify(o),version:o.version??1,updatedAt:o.updatedAt??s,syncStatus:"synced",dirtyFields:[]}))),await a.suppliers.where("tenantId").equals(e).delete(),r.length>0&&await a.suppliers.bulkPut(r.map(o=>({tenantId:e,id:o.id,payload:JSON.stringify(o),version:o.version??1,updatedAt:o.updatedAt??s,syncStatus:"synced"})));const i=await a.tenantMeta.get(e);return await a.tenantMeta.put({tenantId:e,lastSyncAt:s,entitlementsJson:i==null?void 0:i.entitlementsJson}),s}function hS(e){try{const t=JSON.parse(e);return t!=null&&t.id?t:null}catch{return null}}function gS(e){try{const t=JSON.parse(e);return t!=null&&t.id?t:null}catch{return null}}async function xS(e){const[t,r]=await Promise.all([zs.list(e),Px.list(e)]),s=[];for(const i of t){const o=hS(i.payload);o&&s.push(o)}const a=[];for(const i of r){const o=gS(i.payload);o&&a.push(o)}return{articles:s,suppliers:a}}const yS=["name","description","category","itemType","typ","value","package","price","stock","unit","image","attributes"];function zx(e){const t=e,r={};for(const s of yS)t[s]!==void 0&&(r[s]=t[s]);return r}function Yp(e){return{id:e.id,version:e.version??1,updatedAt:e.updatedAt??new Date().toISOString(),payload:zx(e)}}function bS(e){const t=JSON.parse(e.payload);return{id:e.id,version:e.version,updatedAt:e.updatedAt,payload:zx(t)}}function vS(e){return{async pullChanges(t){return(t?await tk(t):await fc()).map(Yp)},async pushUpdate(t,r,s){const a=s.dirtyFields??[],i=await Jm(t,r,{expectedVersion:s.expectedVersion,force:s.force,changeId:s.changeId,dirtyFields:a,baseSnapshot:s.basePayload,forceFields:s.forceFields});return Yp(i)},async getLocalRecord(t){const s=(await zs.list(e)).find(a=>a.id===t);return s?bS(s):null},async applyLocalRecord(t,r){const s=(await zs.list(e)).find(i=>i.id===t.id),a={id:t.id,articleNumber:String(t.payload.articleNumber??t.id),version:t.version,updatedAt:t.updatedAt,...t.payload};await zs.put({tenantId:e,id:t.id,articleNumber:a.articleNumber,payload:JSON.stringify(a),version:t.version,updatedAt:t.updatedAt,syncStatus:r,dirtyFields:r==="synced"?[]:(s==null?void 0:s.dirtyFields)??[]})},async listPending(){return(await gc.listPending(e)).filter(r=>r.entity==="article"&&r.operation==="update").map(r=>({queueId:r.id,changeId:r.changeId,entity:r.entity,entityId:r.entityId,operation:r.operation,baseVersion:r.baseVersion,basePayload:JSON.parse(r.basePayload),localPayload:JSON.parse(r.payload),dirtyFields:r.dirtyFields??[],localUpdatedAt:r.createdAt}))},async removePending(t){await gc.remove(t)},async getLastSyncTimestamp(){const t=await gr().tenantMeta.get(e);return(t==null?void 0:t.lastSyncAt)??null},async setLastSyncTimestamp(t){await gr().tenantMeta.put({tenantId:e,lastSyncAt:t})}}}function NS(e){return new aS(vS(e))}async function jS(e){return NS(e).run()}async function Gd(e,t,r){var i,o;const s=M.loading(e),a=l=>{const d=l.total>0?` (${l.done}/${l.total})`:"",m=l.label??e;M.loading(d?`${m}${d}`:m,{id:s})};try{const l=await t(a);return M.success(((i=r==null?void 0:r.successMessage)==null?void 0:i.call(r,l))??`${e} abgeschlossen`,{id:s}),l}catch(l){throw M.error(((o=r==null?void 0:r.errorMessage)==null?void 0:o.call(r,l))??(l instanceof Error?l.message:`${e} fehlgeschlagen`),{id:s}),l}}function vo(e,t,r){Gd(e,t,r).then(s=>{var a;return(a=r==null?void 0:r.onSuccess)==null?void 0:a.call(r,s)}).catch(s=>{var a;return(a=r==null?void 0:r.onError)==null?void 0:a.call(r,s)})}const Bx="artikelstamm_settings";function kS(){const e={categoryNumbering:[],isFourEyesActive:!1};try{const t=localStorage.getItem(Bx);if(t){const r=JSON.parse(t);return{...e,...r}}}catch{}return e}function wS(e){try{localStorage.setItem(Bx,JSON.stringify(e))}catch{}}const Fx=u.createContext(void 0);function Dl(e,t){var r,s;return{...e,...t,productionFiles:t.productionFiles??e.productionFiles,supplierParts:(r=t.supplierParts)!=null&&r.length?t.supplierParts:e.supplierParts,suppliers:(s=t.suppliers)!=null&&s.length?t.suppliers:e.suppliers,activeRevision:t.activeRevision??e.activeRevision,productStructure:t.productStructure!==void 0?t.productStructure:e.productStructure,bom:t.bom??e.bom}}const iM=({children:e})=>{const{isAuthenticated:t,session:r}=os(),[s,a]=u.useState([]),[i,o]=u.useState([]),[l,d]=u.useState([]),[m,p]=u.useState(()=>kS()),[h,x]=u.useState(!1),[b,w]=u.useState(null);u.useEffect(()=>{wS(m)},[m]);const v=u.useCallback(async H=>{if(t){H!=null&&H.background||x(!0),w(null);try{const[Z,K,me,$]=await Promise.allSettled([fc(),Lo(),nf(),ik()]),X=[],Ie=Z.status==="fulfilled"?Z.value:[],V=K.status==="fulfilled"?K.value:[],Se=me.status==="fulfilled"?me.value:[];
78if(Z.status==="rejected"){const Le=Z.reason;X.push(Le instanceof ut?Le.message:"Artikel konnten nicht geladen werden")}if(K.status==="rejected"){const Le=K.reason;X.push(Le instanceof ut?Le.message:"Lieferanten konnten nicht geladen werden")}if(me.status==="rejected"){const Le=me.reason;X.push(Le instanceof ut?Le.message:"Arbeitsaufträge konnten nicht geladen werden")}const Ce=$.status==="fulfilled"?$.value:{fourEyesActive:!1,matchingKeyTemplate:"%value%_%package%",matchingKeyTemplateBom:"%value%_%package%",aiEnrichmentPrompt:"",aiEnrichmentPromptDefault:"",shopwareImportPreviewLimit:1e3,shopwareImportPreviewMax:1e3,liaOneImportPreviewLimit:50,liaOneImportPreviewMax:200};if(X.length>0){w(X.join(" · "));const Le=Z.status==="rejected"?Z.reason:K.status==="rejected"?K.reason:me.status==="rejected"?me.reason:null;if(Le instanceof ut&&Le.status===401){const rt=typeof window<"u"&&localStorage.getItem("lia-app-mode")==="integrated";M.error(rt?"Artikelstamm-API nicht erreichbar oder Token ungültig.":"Sitzung abgelaufen â bitte erneut anmelden")}else Le instanceof ut&&Le.status===403&&M.error(Le.message)}p(Le=>{var rt,lt,Tt,vt,Pe,it;return{...Le,isFourEyesActive:Ce.fourEyesActive===!0,matchingKeyTemplate:((rt=Ce.matchingKeyTemplate)==null?void 0:rt.trim())||Le.matchingKeyTemplate||"%value%_%package%",matchingKeyTemplateBom:((lt=Ce.matchingKeyTemplateBom)==null?void 0:lt.trim())||((Tt=Ce.matchingKeyTemplate)==null?void 0:Tt.trim())||Le.matchingKeyTemplateBom||Le.matchingKeyTemplate||"%value%_%package%",aiEnrichmentPrompt:((vt=Ce.aiEnrichmentPrompt)==null?void 0:vt.trim())||((Pe=Ce.aiEnrichmentPromptDefault)==null?void 0:Pe.trim())||Le.aiEnrichmentPrompt||"",aiEnrichmentPromptDefault:((it=Ce.aiEnrichmentPromptDefault)==null?void 0:it.trim())||Le.aiEnrichmentPromptDefault||"",shopwareImportPreviewLimit:Ce.shopwareImportPreviewLimit??Le.shopwareImportPreviewLimit??1e3,shopwareImportPreviewMax:Ce.shopwareImportPreviewMax??Le.shopwareImportPreviewMax??1e3,liaOneImportPreviewLimit:Ce.liaOneImportPreviewLimit??Le.liaOneImportPreviewLimit??50,liaOneImportPreviewMax:Ce.liaOneImportPreviewMax??Le.liaOneImportPreviewMax??200}}),a(Le=>{const rt=new Map(Le.map(lt=>[lt.id,lt]));return Ie.map(lt=>{const Tt=rt.get(lt.id);return Tt?Dl(Tt,lt):lt})}),o(V),d(Se);const Be=r==null?void 0:r.tenantId;Be&&Ie.length>0&&Gp(Be,Ie,V).then(()=>jS(Be)).catch(()=>{})}catch(Z){const K=Z instanceof ut?Z.message:"Daten konnten nicht geladen werden";w(K)}finally{x(!1)}}},[t,r==null?void 0:r.tenantId]),S=u.useCallback(async()=>{if(t)try{const H=await fc({noCache:!0});a(H);const Z=r==null?void 0:r.tenantId;if(Z){const K=await Lo().catch(()=>i);await Gp(Z,H,K)}}catch(H){const Z=H instanceof ut?H.message:"Artikelliste konnte nicht aktualisiert werden";M.error(Z)}},[t,r==null?void 0:r.tenantId,i]);u.useEffect(()=>{if(!t){a([]),o([]),d([]),x(!1);return}let H=!1;const Z=r==null?void 0:r.tenantId;return(async()=>{let K=!1;if(Z)try{const me=await xS(Z);!H&&(me.articles.length>0||me.suppliers.length>0)&&(me.articles.length>0&&a(me.articles),me.suppliers.length>0&&o(me.suppliers),K=!0,x(!1))}catch{}H||await v({background:K})})(),()=>{H=!0}},[t,r==null?void 0:r.tenantId,v]);const R=H=>{p(Z=>({...Z,categoryNumbering:H}))},E=(H={})=>({fourEyesActive:m.isFourEyesActive===!0,matchingKeyTemplate:m.matchingKeyTemplate,matchingKeyTemplateBom:m.matchingKeyTemplateBom,aiEnrichmentPrompt:m.aiEnrichmentPrompt,shopwareImportPreviewLimit:m.shopwareImportPreviewLimit,shopwareImportPreviewMax:m.shopwareImportPreviewMax,liaOneImportPreviewLimit:m.liaOneImportPreviewLimit,liaOneImportPreviewMax:m.liaOneImportPreviewMax,...H}),A=H=>{p(Z=>({...Z,isFourEyesActive:H.fourEyesActive===!0,matchingKeyTemplate:H.matchingKeyTemplate||Z.matchingKeyTemplate,matchingKeyTemplateBom:H.matchingKeyTemplateBom||H.matchingKeyTemplate||Z.matchingKeyTemplateBom||Z.matchingKeyTemplate,aiEnrichmentPrompt:H.aiEnrichmentPrompt||H.aiEnrichmentPromptDefault||Z.aiEnrichmentPrompt||"",aiEnrichmentPromptDefault:H.aiEnrichmentPromptDefault||Z.aiEnrichmentPromptDefault||"",shopwareImportPreviewLimit:H.shopwareImportPreviewLimit??Z.shopwareImportPreviewLimit??1e3,shopwareImportPreviewMax:H.shopwareImportPreviewMax??Z.shopwareImportPreviewMax??1e3,liaOneImportPreviewLimit:H.liaOneImportPreviewLimit??Z.liaOneImportPreviewLimit??50,liaOneImportPreviewMax:H.liaOneImportPreviewMax??Z.liaOneImportPreviewMax??200}
78))},I=H=>{p(Z=>({...Z,isFourEyesActive:H})),Qi(E({fourEyesActive:H})).then(A).catch(()=>{M.error("4-Augen-Einstellung konnte nicht gespeichert werden")})},C=async H=>{const Z=H.trim()||"%value%_%package%";p(K=>({...K,matchingKeyTemplate:Z}));try{const K=await Qi(E({matchingKeyTemplate:Z}));A(K)}catch{throw M.error("Matching-Key-Template (Artikelimport) konnte nicht gespeichert werden"),new Error("matching_key_template_save_failed")}},k=async H=>{const Z=H.trim()||"%value%_%package%";p(K=>({...K,matchingKeyTemplateBom:Z}));try{const K=await Qi(E({matchingKeyTemplateBom:Z}));A(K)}catch{throw M.error("Matching-Key-Template (Stückliste) konnte nicht gespeichert werden"),new Error("matching_key_template_bom_save_failed")}},j=async H=>{const Z=H.trim();p(K=>({...K,aiEnrichmentPrompt:Z}));try{const K=await Qi(E({aiEnrichmentPrompt:Z}));A(K)}catch{throw M.error("KI-Enrichment-Prompt konnte nicht gespeichert werden"),new Error("ai_enrichment_prompt_save_failed")}},z=async H=>{p(Z=>({...Z,...H}));try{const Z=await Qi(E(H));A(Z)}catch{throw M.error("Import-Limits konnten nicht gespeichert werden"),new Error("import_limits_save_failed")}},D=(H,Z)=>{p(K=>{const $=il(K.dataModules).map(X=>X.moduleId!==H?X:{...X,...Z,config:Z.config?{...X.config,...Z.config}:X.config});return{...K,dataModules:$}})},B=H=>{p(Z=>({...Z,mappingPresets:[...Z.mappingPresets??[],H]}))},T=H=>{p(Z=>({...Z,mappingPresets:(Z.mappingPresets??[]).filter(K=>K.id!==H)}))},P=u.useCallback(H=>{a(K=>K.map(me=>me.id===H.id?Dl(me,H):me));const Z=r==null?void 0:r.tenantId;Z&&Uu(Z,H,H)},[r==null?void 0:r.tenantId]),G=async H=>{try{const{suppliers:Z,bom:K,productionFiles:me,...$}=H,X=await rl($),Ie={...X,productionFiles:me??[]};a(Se=>[...Se,Ie]);const V=r==null?void 0:r.tenantId;return V&&(await Uu(V,X,X),await pS(V,"create",X.id,X)),M.success("Artikel angelegt"),Ie}catch(Z){throw M.error(Z instanceof ut?Z.message:"Artikel konnte nicht angelegt werden"),Z}},W=async(H,Z,K)=>{try{const{suppliers:me,bom:$,productionFiles:X,...Ie}=Z;if(Object.keys(Ie).length>0){const V=(K==null?void 0:K.changeId)??crypto.randomUUID(),Se=await Jm(H,Ie,{expectedVersion:K==null?void 0:K.expectedVersion,force:K==null?void 0:K.force,changeId:V,dirtyFields:K==null?void 0:K.dirtyFields,baseSnapshot:K==null?void 0:K.basePayload,forceFields:K==null?void 0:K.forceFields});a(Be=>Be.map(Le=>Le.id!==H?Le:{...Dl(Le,Se),...X!==void 0?{productionFiles:X}:{}}));const Ce=r==null?void 0:r.tenantId;return Ce&&await Uu(Ce,Se,Se),M.success("Artikel gespeichert"),Se}X!==void 0&&a(V=>V.map(Se=>Se.id===H?{...Se,productionFiles:X}:Se))}catch(me){throw isVersionConflictError(me)||isFieldMergeConflictError(me)||M.error(me instanceof ut?me.message:"Artikel konnte nicht gespeichert werden"),me}},ke=async(H,Z)=>{try{const K=await ak(H,Z);return K.status==="deleted"?(a(me=>me.filter($=>$.id!==H)),M.success("Artikel gelöscht"),{removed:!0}):(a(me=>me.map($=>$.id===H?Dl($,K.article):$)),M.success(K.status==="cancelled"?"Löschanfrage zurückgezogen":"Löschung zur Freigabe vorgeschlagen (4-Augen-Prüfung)"),{removed:!1,article:K.article})}catch(K){throw M.error(K instanceof ut?K.message:"Artikel konnte nicht gelöscht werden"),K}},L=async(H,Z)=>{const K=[...new Set(H)];if(K.length===0)return{deleted:0,pending:0,failed:0};const me=await Lp(K);if(me.deleted>=K.length){const $=new Set(K);a(X=>X.filter(Ie=>!$.has(Ie.id)))}else await v();return me.failed>0?M.error(`${me.failed} von ${K.length} Artikeln konnten nicht gelöscht werden`):me.pending>0&&me.deleted===0?M.success(`${me.pending} Löschanfragen zur Freigabe vorgeschlagen (4-Augen-Prüfung)`):me.pending>0?M.success(`${me.deleted} gelöscht, ${me.pending} zur Freigabe vorgeschlagen`):M.success(`${me.deleted} Artikel gelöscht`),me},xe=(H,Z)=>{const K=[...new Set(H)];K.length!==0&&Gd("Artikel werden gelöscht",async me=>{me({done:0,total:K.length,label:"Artikel werden gelöscht"});const $=await Lp(K);if(me({done:K.length,total:K.length}),$.deleted>=K.length){const X=new Set(K);a(Ie=>Ie.filter(V=>!X.has(V.id)))}else await v();return $},{successMessage:me=>me.failed>0?`${me.deleted} gelöscht, ${me.failed}
78 fehlgeschlagen`:me.pending>0&&me.deleted===0?`${me.pending} Löschanfragen zur Freigabe vorgeschlagen`:me.pending>0?`${me.deleted} gelöscht, ${me.pending} zur Freigabe`:`${me.deleted} Artikel gelöscht`,onSuccess:Z==null?void 0:Z.onSuccess})},Y=(H,Z)=>{const K=[...new Set(H)];K.length!==0&&Gd("Artikel werden freigegeben",async me=>{let $=0,X=0;me({done:0,total:K.length,label:"Artikel werden freigegeben"});for(let Ie=0;Ie<K.length;Ie+=1){const V=K[Ie];try{await Gm(V),$+=1}catch{X+=1}me({done:Ie+1,total:K.length})}return await v(),{approved:$,failed:X}},{successMessage:me=>me.failed>0?`${me.approved} freigegeben, ${me.failed} fehlgeschlagen`:`${me.approved} Artikel freigegeben`,onSuccess:Z==null?void 0:Z.onComplete})},Ne=async H=>{try{const Z=await kx(H);o(me=>[...me,Z]);const K=r==null?void 0:r.tenantId;K&&(await yc(K,Z,Z),await Zd(K,"create",Z.id,H)),M.success("Lieferant angelegt")}catch(Z){throw M.error(Z instanceof ut?Z.message:"Lieferant konnte nicht angelegt werden"),Z}},se=async(H,Z)=>{try{const K=await Jk(H,Z),me={...K,supplierNumber:Z.supplierNumber??K.supplierNumber};o(X=>X.map(Ie=>Ie.id===H?me:Ie));const $=r==null?void 0:r.tenantId;$&&(await yc($,K,me),await Zd($,"update",H,Z)),M.success("Lieferant gespeichert")}catch(K){throw M.error(K instanceof ut?K.message:"Lieferant konnte nicht gespeichert werden"),K}},J=async H=>{try{await Qk(H),o(Z=>Z.filter(K=>K.id!==H)),M.success("Lieferant gelöscht")}catch(Z){throw M.error(Z instanceof ut?Z.message:"Lieferant konnte nicht gelöscht werden"),Z}},Q=async H=>{try{const Z=await rf(H);d(K=>[...K,Z]),M.success("Arbeitsauftrag angelegt")}catch(Z){throw M.error(Z instanceof ut?Z.message:"Arbeitsauftrag konnte nicht angelegt werden"),Z}},U=async(H,Z)=>{try{const K=await di(H,Z);d(me=>me.map($=>$.id===H?K:$)),M.success("Arbeitsauftrag aktualisiert")}catch(K){throw M.error(K instanceof ut?K.message:"Arbeitsauftrag konnte nicht aktualisiert werden"),K}},ne=async H=>{try{await rw(H),d(Z=>Z.filter(K=>K.id!==H)),M.success("Arbeitsauftrag gelöscht")}catch(Z){throw M.error(Z instanceof ut?Z.message:"Arbeitsauftrag konnte nicht gelöscht werden"),Z}};return n.jsx(Fx.Provider,{value:{articles:s,suppliers:i,workOrders:l,settings:m,isLoading:h,loadError:b,refresh:v,refreshArticlesAfterImport:S,addArticle:G,replaceArticleInList:P,updateArticle:W,deleteArticle:ke,deleteArticlesBulk:L,deleteArticlesBulkInBackground:xe,approveArticlesBulkInBackground:Y,addSupplier:Ne,updateSupplier:se,deleteSupplier:J,addWorkOrder:Q,updateWorkOrder:U,deleteWorkOrder:ne,updateCategoryNumbering:R,updateFourEyesActive:I,updateMatchingKeyTemplate:C,updateMatchingKeyTemplateBom:k,updateAiEnrichmentPrompt:j,updateImportLimits:z,updateDataModule:D,addMappingPreset:B,deleteMappingPreset:T},children:e})},Mn=()=>{const e=u.useContext(Fx);if(!e)throw new Error("useData must be used within a DataProvider");return e},SS={"app.brand":"Lia-One","nav.articles":"Artikelstamm","nav.workPreparation":"Stammdaten","nav.suppliers":"Lieferanten","nav.orders":"Fertigungsaufträge","nav.procurement":"Beschaffung","nav.settings":"Konfiguration","nav.production":"Fertigung","nav.machines":"Maschinen","nav.integrations":"Schnittstellen","nav.approvals":"Freigaben","nav.sectionMain":"Verwaltung","connection.online":"Online","connection.offline":"Offline â lokale Daten","connection.syncing":"Synchronisation läuftâ¦","login.welcome":"Willkommen zurück","login.subtitle":"Melden Sie sich an, um fortzufahren.","login.email":"E-Mail","login.emailPlaceholder":"[email protected]","login.password":"Passwort","login.forgot":"Passwort vergessen?","login.remember":"Angemeldet bleiben","login.submit":"Anmelden","login.submitting":"Anmeldung läuftâ¦","login.sso":"Mit Unternehmens-SSO anmelden","login.or":"oder","login.demoHint":"Demo: beliebige Eingabe genügt zur Anmeldung.","login.brandQuote":"âEin zentraler Zugang für alle Ihre Anwendungen.â","login.brandSubtext":"Sicherer Zugang zu Ihrem Arbeitsbereich.","login.copyright":"© 2026 Alle Rechte vorbehalten.","common.search":"Suchenâ¦","common.export":"Export","common.cancel":"Abbrechen","common.save":"Speichern","common.create":"Anlegen","common.edit":"Bearbeiten","common.duplicate":"Duplizieren","common.all":"Alle","common.filter":"Weitere Filter","common.none":"Keine Einträge gefunden.","common.of":"von","articles.title":"Artikelstamm","detail.tab.masterData":"Stammdaten","detail.tab.bomCad":"Stückliste","detail.tab.production":"Produktion","detail.tab.panelYields":"Nutzen-Definition","detail.tab.inventory":"Lager & Beschaffung","articles.subtitle":"Zentrale Verwaltung aller Artikelstammdaten im Produktlebenszyklus.","articles.new":"Neuer Artikel","articles.import":"Importieren","articles.report":"Report","articles.searchPlaceholder":"Artikel, Nummer, Teilwort⦠Ausschluss: -wort / NOT","import.title":"Artikel importieren","import.subtitle":"Quelle wählen und Datei hochladen, um Artikel in den Stamm zu übernehmen.","import.dropHint":"Datei hierher ziehen oder klicken zum Auswählen","import.selectedFile":"Ausgewählte Datei","import.noFile":"Keine Datei ausgewählt","import.run":"Import starten","import.csv.desc":"Importiert Artikelstammdaten aus CSV- oder Excel-Tabellen mit Spaltenzuordnung.","import.csv.formats":"Unterstützt: .csv, .xlsx, .xls","import.csv.delimiter":"Trennzeichen","import.csv.header":"Erste Zeile als Spaltenüberschrift","import.brd.desc":"Liest Stücklisten direkt aus nativen Eagle .brd Dateien (XML ab Version 6).","import.brd.formats":"Unterstützt: .brd (Eagle XML)","import.brd.layer":"Bestückungsseite","import.success":"Import erfolgreich verarbeitet (Demo).","articles.col.article":"Artikel","articles.col.type":"Typ","articles.col.material":"Werkstoff","articles.col.rev":"Rev.","articles.col.status":"Status","articles.col.stock":"Bestand","articles.col.price":"Preis","articles.col.livePrice":"Live-Preis","articles.col.liveStock":"Verfügbar","articles.col.manufacturer":"Hersteller","articles.col.subcomponents":"Subkomponenten","articles.columns":"Spalten","articles.columns.always":"Immer sichtbar","articles.live":"Live","articles.bulkApprove":"Freigeben","articles.bulkApproveTitle":"Ausgewählte Artikel freigeben?","articles.bulkApproveDescription":"{{count}}
78 Artikel in Bearbeitung werden freigegeben und in den Produktionsstamm übernommen.","articles.count":"Artikel","articles.selected":"{{count}} ausgewählt","articles.selectAll":"Alle auswählen","articles.clearSelection":"Auswahl aufheben","articles.bulkDelete":"Löschen","articles.bulkDeleteSubmit":"Zur Freigabe vorschlagen","articles.bulkDeleteTitle":"Ausgewählte Artikel löschen?","articles.bulkDeleteTitleFourEyes":"Löschung zur Freigabe vorschlagen?","articles.bulkDeleteDescription":"{{count}} Artikel werden sofort aus dem aktiven Stamm entfernt (Soft-Delete, Historie bleibt erhalten).","articles.bulkDeleteFourEyes":"{{count}} Löschanfragen werden eingereicht. Ein Administrator muss die Löschung freigeben â die Artikel bleiben bis dahin im Stamm sichtbar.","articles.bulkDeleting":"Löschenâ¦","detail.classification":"Grunddaten","detail.materialLogistics":"Material & Logistik","detail.procurement":"Beschaffung & Alternativen","detail.bom":"Stückliste","detail.history":"Ãnderungshistorie","sourcing.col.supplier":"Lieferant","sourcing.col.sku":"Bestellnummer","sourcing.col.desc":"Artikeldetails","sourcing.col.stock":"Lagerstand","sourcing.col.price":"Aktueller Preis","sourcing.live":"Live-Abfrageâ¦","bom.col.pos":"Pos.","bom.col.item":"Artikel & Bezeichnung","bom.col.qty":"Menge","bom.col.lastPrice":"Letzter Preis","bom.col.total":"Gesamt","bom.totalCost":"Gesamtkosten Baugruppe","bom.empty":"Keine Stücklistenpositionen hinterlegt.","field.type":"Artikeltyp","field.category":"Warengruppe","field.revision":"Revision","field.unit":"Mengeneinheit","field.costCenter":"Kostenstelle","field.material":"Werkstoff","field.weight":"Gewicht","field.price":"Listenpreis","field.leadTime":"Wiederbeschaffungszeit","field.stock":"Bestand","field.minStock":"Mindestbestand","field.supplier":"Lieferant","field.owner":"Verantwortlich","field.createdAt":"Angelegt am","field.updatedAt":"Letzte Ãnderung","field.name":"Bezeichnung","field.number":"Artikelnummer","field.description":"Beschreibung","field.status":"Status","field.days":"Tage","newArticle.title":"Neuer Artikel","newArticle.subtitle":"Legen Sie einen neuen Artikel im Stamm an.","newArticle.basic":"Grunddaten","newArticle.logistics":"Material & Logistik","newArticle.success":"Artikel angelegt","status.freigegeben":"Freigegeben","status.in-pruefung":"In Bearbeitung","status.entwurf":"In Bearbeitung","status.in-bearbeitung":"In Bearbeitung","status.gesperrt":"Gesperrt","status.auslaufend":"Auslaufend","stat.total":"Artikel gesamt","stat.released":"Freigegeben","stat.inReview":"In Bearbeitung","stat.inProgress":"In Bearbeitung","stat.belowMin":"Unter Mindestbestand","approvals.title":"Freigaben","approvals.subtitleSuffix":"offene Freigaben","approvals.loading":"Freigaben werden geladen â¦","approvals.emptyTitle":"Keine offenen Freigaben","approvals.emptyHint":"Entwürfe, Prüfungen und Löschanfragen erscheinen hier.","approvals.col.article":"Artikelnummer","approvals.col.name":"Bezeichnung","approvals.col.kind":"Art","approvals.col.submittedBy":"Eingereicht von","approvals.col.changes":"Ãnderungen","approvals.col.actions":"Aktionen","approvals.compare.title":"Vergleich: Freigegeben vs. In Bearbeitung","approvals.compare.field":"Feld","approvals.compare.released":"Freigegeben","approvals.compare.draft":"In Bearbeitung","approvals.compare.toggle":"Vergleich","approvals.compare.hide":"Ausblenden","approvals.changesCountLabel":"Feldänderungen","approvals.noChanges":"Keine Feldänderungen","approvals.newArticle":"Neu","approvals.kind.deletion":"Löschung","approvals.kind.review":"In Bearbeitung","approvals.kind.draft":"In Bearbeitung","detail.batch.releasedTitle":"Freigegeben â Produktionsstand","detail.batch.inProgressTitle":"In Bearbeitung","detail.batch.pendingRelease":"Ãnderungen warten auf Freigabe","detail.batch.viewReleased":"Freigegebene Version","detail.batch.viewDraft":"Bearbeitung","approvals.open":"Ãffnen","approvals.approve":"Freigeben","approvals.confirmDelete":"Löschen bestätigen","approvals.rejectDelete":"Ablehnen","approvals.approved":"Artikel freigegeben","approvals.loadError":"Freigaben konnten nicht geladen werden","approvals.approveError":"Freigabe fehlgeschlagen","approvals.deleteError":"Löschung fehlgeschlagen","approvals.cancelError":"Ablehnung fehlgeschlagen","approvals.selfApprovalBlocked":"Eigene Ãnderungen können nicht freigegeben werden","settings.fourEyes.title":"4-Augen-Prinzip","settings.fourEyes.description":"Ãnderungen und Löschungen erfordern eine zweite Freigabe.","settings.emailHoldReplay.title":"Engineering Query Auto-Hold (Test)","settings.emailHoldReplay.description":"Führt die Auto-Hold-Logik für eine bereits ingestete E-Mail erneut aus â ohne erneuten Mail-Ingest. Nur für Superadmins.","settings.emailHoldReplay.customerEventId":"Customer-Event-ID (Timeline)","settings.emailHoldReplay.rawEventId":"Raw-Event-ID (Pipeline)","settings.emailHoldReplay.dryRun":"Dry-Run (nur simulieren)","settings.emailHoldReplay.run":"Auto-Hold prüfen","settings.emailHoldReplay.apply":"Auto-Hold ausführen","suppliers.title":"Lieferantenverwaltung","suppliers.subtitle":"Be
78wertung und Stammdaten Ihrer Lieferanten.","suppliers.new":"Neuer Lieferant","suppliers.searchPlaceholder":"Lieferant, Ort, Kategorieâ¦","suppliers.col.supplier":"Lieferant","suppliers.col.category":"Kategorie","suppliers.col.location":"Standort","suppliers.col.rating":"Bewertung","suppliers.col.articles":"Artikel","suppliers.col.onTime":"Termintreue","stat.suppliers":"Lieferanten gesamt","stat.preferred":"Vorzugslieferanten","stat.avgRating":"à Bewertung","stat.avgOnTime":"à Termintreue","supplier.type.preferred":"Vorzugslieferant","supplier.type.approved":"Freigegeben","supplier.type.review":"In Bewertung","supplier.type.blocked":"Gesperrt","orders.title":"Auftragsverwaltung","orders.subtitle":"Bestellungen und Kundenaufträge im Ãberblick.","orders.new":"Neuer Auftrag","orders.searchPlaceholder":"Auftrag, Kunde, Artikelâ¦","orders.col.order":"Auftrag","orders.col.customer":"Kunde / Lieferant","orders.col.date":"Datum","orders.col.delivery":"Liefertermin","orders.col.items":"Positionen","orders.col.total":"Wert","orders.col.status":"Status","stat.openOrders":"Offene Aufträge","stat.inProduction":"In Fertigung","stat.orderVolume":"Auftragsvolumen","stat.overdue":"Ãberfällig","order.status.offen":"Offen","order.status.in-fertigung":"In Fertigung","order.status.versandt":"Versandt","order.status.abgeschlossen":"Abgeschlossen","order.status.storniert":"Storniert","procurement.title":"Materialbeschaffung","procurement.subtitle":"Bedarfe, Bestellanforderungen und Wareneingänge steuern.","procurement.new":"Neue Anforderung","procurement.searchPlaceholder":"Material, Artikel, Lieferantâ¦","procurement.col.requisition":"Anforderung","procurement.col.article":"Artikel","procurement.col.qty":"Menge","procurement.col.needBy":"Bedarfstermin","procurement.col.supplier":"Lieferant","procurement.col.status":"Status","stat.openReq":"Offene Bedarfe","stat.ordered":"Bestellt","stat.received":"Wareneingang","stat.procValue":"Beschaffungswert","proc.status.bedarf":"Bedarf","proc.status.angefragt":"Angefragt","proc.status.bestellt":"Bestellt","proc.status.eingegangen":"Eingegangen","proc.status.storniert":"Storniert"},AS={"app.brand":"Lia-One","nav.articles":"Article Master","nav.workPreparation":"Work Preparation","nav.suppliers":"Suppliers","nav.orders":"Manufacturing Orders","nav.procurement":"Procurement","nav.settings":"Settings","nav.production":"Production","nav.machines":"Machines","nav.integrations":"Integrations","nav.approvals":"Approvals","nav.sectionMain":"Management","connection.online":"Online","connection.offline":"Offline â local data","connection.syncing":"Syncingâ¦","login.welcome":"Welcome back","login.subtitle":"Sign in to continue.","login.email":"Email","login.emailPlaceholder":"[email protected]","login.password":"Password","login.forgot":"Forgot password?","login.remember":"Keep me signed in","login.submit":"Sign in","login.submitting":"Signing inâ¦","login.sso":"Sign in with company SSO","login.or":"or","login.demoHint":"Demo: any input will sign you in.","login.brandQuote":'"One central access point for all your applications."',"login.brandSubtext":"Secure access to your workspace.","login.copyright":"© 2026 All rights reserved.","common.search":"Searchâ¦","common.export":"Export","common.cancel":"Cancel","common.save":"Save","common.create":"Create","common.edit":"Edit","common.duplicate":"Duplicate","common.all":"All","common.filter":"More filters","common.none":"No entries found.","common.of":"of","articles.title":"Article Master","detail.tab.masterData":"Master Data","detail.tab.bomCad":"BOM","detail.tab.production":"Production","detail.tab.panelYields":"Panel yields","detail.tab.inventory":"Inventory & Procurement","articles.subtitle":"Central management of all article master data across the product lifecycle.","articles.new":"New Article","articles.import":"Import","articles.report":"Report","articles.searchPlaceholder":"Article, number, substring⦠exclude: -word / NOT","import.title":"Import articles","import.subtitle":"Pick a source and upload a file to bring articles into the master data.","import.dropHint":"Drag a file here or click to browse","import.selectedFile":"Selected file","import.noFile":"No file selected","import.run":"Start import","import.csv.desc":"Imports article master data from CSV or Excel sheets with column mapping.","import.csv.formats":"Supported: .csv, .xlsx, .xls","import.csv.delimiter":"Delimiter","import.csv.header":"First row as column header","import.brd.desc":"Reads bills of materials from native Eagle .brd files (XML from version 6).","import.brd.formats":"Supported: .brd (Eagle XML)","import.brd.layer":"Assembly side","import.success":"Import processed successfully (demo).","articles.col.article":"Article","articles.col.type":"Type","articles.col.material":"Material","articles.col.rev":"Rev.","articles.col.status":"Status","articles.col.stock":"Stock","articles.col.price":"Price","articles.col.livePrice":"Live price","articles.col.liveStock":"Available","articles.col.manufacturer":"Manufacturer","articles.col.subcomponents":"Subcomponents","articles.columns":"Columns","articles.columns.always":"Always visible","articles.live":"Live","articles.bulkApprove":"Release","articles.bulkApproveTitle":"Release selected articles?","articles.bulkApproveDescription":"{{count}} in-progress articles will be released to the production catalog.","articles.count":"articles","articles.selected":"{{count}} selected","articles.selectAll":"Select all","articles.clearSelection":"Clear selection","articles.bulkDelete":"Delete","articles.bulkDeleteSubmit":"Submit for approval","articles.bulkDeleteTitle":"Delete selected articles?","articles.bulkDeleteTitleFourEyes":"Submit deleti
78on for approval?","articles.bulkDeleteDescription":"{{count}} articles will be removed from the active catalog immediately (soft delete; history retained).","articles.bulkDeleteFourEyes":"{{count}} deletion requests will be submitted. An administrator must approve before articles are removed.","articles.bulkDeleting":"Deletingâ¦","detail.classification":"Master Data","detail.materialLogistics":"Material & Logistics","detail.procurement":"Procurement & Alternatives","detail.bom":"Bill of Materials","detail.history":"Change History","sourcing.col.supplier":"Supplier","sourcing.col.sku":"Order number","sourcing.col.desc":"Item details","sourcing.col.stock":"Stock level","sourcing.col.price":"Current price","sourcing.live":"Live queryâ¦","bom.col.pos":"Pos.","bom.col.item":"Item & description","bom.col.qty":"Qty","bom.col.lastPrice":"Last price","bom.col.total":"Total","bom.totalCost":"Total assembly cost","bom.empty":"No bill of materials items defined.","field.type":"Article type","field.category":"Category","field.revision":"Revision","field.unit":"Unit","field.costCenter":"Cost center","field.material":"Material","field.weight":"Weight","field.price":"List price","field.leadTime":"Lead time","field.stock":"Stock","field.minStock":"Min. stock","field.supplier":"Supplier","field.owner":"Owner","field.createdAt":"Created on","field.updatedAt":"Last change","field.name":"Name","field.number":"Article number","field.description":"Description","field.status":"Status","field.days":"days","newArticle.title":"New Article","newArticle.subtitle":"Create a new article in the master data.","newArticle.basic":"Basic data","newArticle.logistics":"Material & Logistics","newArticle.success":"Article created","status.freigegeben":"Released","status.in-pruefung":"In progress","status.entwurf":"In progress","status.in-bearbeitung":"In progress","status.gesperrt":"Blocked","status.auslaufend":"Phasing out","stat.total":"Total articles","stat.released":"Released","stat.inReview":"In progress","stat.inProgress":"In progress","stat.belowMin":"Below min. stock","approvals.title":"Approvals","approvals.subtitleSuffix":"pending approvals","approvals.loading":"Loading approvalsâ¦","approvals.emptyTitle":"No pending approvals","approvals.emptyHint":"Drafts, reviews and deletion requests appear here.","approvals.col.article":"Article no.","approvals.col.name":"Name","approvals.col.kind":"Type","approvals.col.submittedBy":"Submitted by","approvals.col.changes":"Changes","approvals.col.actions":"Actions","approvals.compare.title":"Compare: released vs. in progress","approvals.compare.field":"Field","approvals.compare.released":"Released","approvals.compare.draft":"In progress","approvals.compare.toggle":"Compare","approvals.compare.hide":"Hide","approvals.changesCountLabel":"field changes","approvals.noChanges":"No field changes","approvals.newArticle":"New","approvals.kind.deletion":"Deletion","approvals.kind.review":"In progress","approvals.kind.draft":"In progress","detail.batch.releasedTitle":"Released â production baseline","detail.batch.inProgressTitle":"In progress","detail.batch.pendingRelease":"Changes pending approval","detail.batch.viewReleased":"Released version","detail.batch.viewDraft":"Working copy","approvals.open":"Open","approvals.approve":"Approve","approvals.confirmDelete":"Confirm delete","approvals.rejectDelete":"Reject","approvals.approved":"Article approved","approvals.loadError":"Could not load approvals","approvals.approveError":"Approval failed","approvals.deleteError":"Deletion failed","approvals.cancelError":"Rejection failed","approvals.selfApprovalBlocked":"You cannot approve your own changes","settings.fourEyes.title":"Four-eyes principle","settings.fourEyes.description":"Changes and deletions require a second approval.","settings.emailHoldReplay.title":"Engineering Query Auto-Hold (test)","settings.emailHoldReplay.description":"Re-runs auto-hold logic for an already ingested email â without re-ingesting mail. Superadmins only.","settings.emailHoldReplay.customerEventId":"Customer event ID (timeline)","settings.emailHoldReplay.rawEventId":"Raw event ID (pipeline)","settings.emailHoldReplay.dryRun":"Dry run (simulate only)","settings.emailHoldReplay.run":"Check auto-hold","settings.emailHoldReplay.apply":"Apply auto-hold","suppliers.title":"Supplier Management","suppliers.subtitle":"Ratings and master data of your suppliers.","suppliers.new":"New Supplier","suppliers.searchPlaceholder":"Supplier, location, categoryâ¦","suppliers.col.supplier":"Supplier","suppliers.col.category":"Category","suppliers.col.location":"Location","suppliers.col.rating":"Rating","suppliers.col.articles":"Articles","suppliers.col.onTime":"On-time","stat.suppliers":"Total suppliers","stat.preferred":"Preferred suppliers","stat.avgRating":"Avg. rating","stat.avgOnTime":"Avg. on-time","supplier.type.preferred":"Preferred","supplier.type.approved":"Approved","supplier.type.review":"Under review","supplier.type.blocked":"Blocked","orders.title":"Order Management","orders.subtitle":"Overview of purchase and customer orders.","orders.new":"New Order","orders.searchPlaceholder":"Order, customer, articleâ¦","orders.col.order":"Order","orders.col.customer":"Customer / Supplier","orders.col.date":"Date","orders.col.delivery":"Delivery","orders.col.items":"Items","orders.col.total":"Value","orders.col.status":"Status","stat.openOrders":"Open orders","stat.
78inProduction":"In production","stat.orderVolume":"Order volume","stat.overdue":"Overdue","order.status.offen":"Open","order.status.in-fertigung":"In production","order.status.versandt":"Shipped","order.status.abgeschlossen":"Completed","order.status.storniert":"Cancelled","procurement.title":"Material Procurement","procurement.subtitle":"Manage demands, purchase requisitions and goods receipts.","procurement.new":"New Requisition","procurement.searchPlaceholder":"Material, article, supplierâ¦","procurement.col.requisition":"Requisition","procurement.col.article":"Article","procurement.col.qty":"Qty","procurement.col.needBy":"Need by","procurement.col.supplier":"Supplier","procurement.col.status":"Status","stat.openReq":"Open demands","stat.ordered":"Ordered","stat.received":"Received","stat.procValue":"Procurement value","proc.status.bedarf":"Demand","proc.status.angefragt":"Requested","proc.status.bestellt":"Ordered","proc.status.eingegangen":"Received","proc.status.storniert":"Cancelled"},CS={de:SS,en:AS},$x=u.createContext(null);function oM({children:e}){const[t,r]=u.useState("de");u.useEffect(()=>{const i=window.localStorage.getItem("plm-locale");(i==="de"||i==="en")&&r(i)},[]);const s=u.useCallback(i=>{r(i),window.localStorage.setItem("plm-locale",i),document.documentElement.lang=i},[]),a=u.useCallback(i=>CS[t][i]??i,[t]);return n.jsx($x.Provider,{value:{locale:t,setLocale:s,t:a},children:e})}function gs(){const e=u.useContext($x);if(!e)throw new Error("useI18n must be used within I18nProvider");return e}const _S=u.createContext(null);function lM({children:e}){const[t,r]=u.useState([]),[s]=u.useState([]),[a]=u.useState([]),[i]=u.useState([]),o=u.useCallback(l=>r(d=>[l,...d]),[]);return n.jsx(_S.Provider,{value:{articles:t,suppliers:s,orders:a,requisitions:i,addArticle:o},children:e})}const Yd="lia-app-mode",Kx=u.createContext(void 0);function IS(){if(typeof window>"u")return"standalone";const t=new URLSearchParams(window.location.search).get("mode");if(t==="integrated"||t==="standalone")return t;const r=localStorage.getItem(Yd);return r==="integrated"||r==="standalone"?r:"standalone"}function cM({children:e}){const[t]=bg(),[r,s]=u.useState(IS);u.useEffect(()=>{const o=t.get("mode");(o==="integrated"||o==="standalone")&&(s(o),localStorage.setItem(Yd,o))},[t]);const a=u.useCallback(o=>{s(o),localStorage.setItem(Yd,o)},[]),i=u.useMemo(()=>({mode:r,isIntegrated:r==="integrated",setMode:a}),[r,a]);return n.jsx(Kx.Provider,{value:i,children:e})}function Vx(){const e=u.useContext(Kx);if(!e)throw new Error("useAppMode must be used within AppModeProvider");return e}function ES(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function qx(){return{}}function PS(e){if(!e||typeof e!="object")return{};const t={};for(const[r,s]of Object.entries(e)){const a=r.trim();a&&s!=null&&(typeof s=="string"&&s.trim()===""||ES(s)&&(t[a]=typeof s=="string"?s.trim():s))}return t}function TS(e,t){const r=String(e.resourceType??e.resource_type??"INTERNAL_OPERATOR"),s=String(e.status??"ready");return{id:String(e.id??`op-${t}`),sequence:Number(e.sequence??t+1),label:String(e.label??`Schritt ${t+1}`),resourceType:r,resourceId:e.resourceId??e.resource_id??null,resourceName:e.resourceName??e.resource_name??null,status:s}}function DS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=String(t.providerId??t.provider_id??"").trim(),s=String(t.itemId??t.item_id??"").trim();return!r||!s?null:{providerId:r,itemId:s,sku:t.sku??null,label:t.label??null}}function RS(e,t){const r=e.frozenAttributes??e.frozen_attributes??e.features;return{id:String(e.id??`pos-${t}`),operationId:e.operationId??e.operation_id??null,positionRef:e.positionRef??e.position_ref??null,quantity:Number(e.quantity??0),label:e.label??null,articleNumber:e.articleNumber??e.article_number??null,frozenCandidateId:e.frozenCandidateId??e.frozen_candidate_id??null,frozenAttributes:r&&typeof r=="object"&&!Array.isArray(r)?r:qx(),resolvedSource:DS(e.resolvedSource??e.resolved_source)}}function MS(e){const t=(e.operations??[]).map((a,i)=>TS(a??{},i)),r=(e.positions??[]).map((a,i)=>RS(a??{},i)),s=String(e.planningStatus??"PLANNING_COMPLETE");return{id:e.id,status:s,bom_features:r,resource_assignment:t,workOrderId:e.workOrderId,workOrderNumber:e.workOrderNumber??void 0,articleNumber:e.articleNumber??void 0,articleName:e.articleName??void 0,quantity:e.quantity,frozenAt:e.frozenAt??void 0,operations:t,positions:r}}class OS{async getById(t){const r=await jw(t);return MS(r)}async createFromRelease(t,r){const s=await Nw(t.articleId,t.revisionId,t.quantity??1);return this.getById(s.snapshotId)}}class LS{async getById(t){return wx(t)}async updateStatus(t,r){await di(t,{status:r})}async blockWorkOrder(t,r){await di(t,{status:"blocked",blockedReason:r})}async unblockWorkOrder(t){return Sx(t)}async saveOperationYields(t,r){await di(t,{operationYields:r})}async createFromSnapshot(t){return rf({snapshotId:t.snapshotId,targetQuantity:t.targetQuantity,articleId:t.articleId,startDate:t.startDate,
78status:"planned",notes:t.notes??"",parentWorkOrderId:t.parentWorkOrderId??null,standalone:!0})}async getGenealogy(t){return nw(t)}async completeWorkOrder(t,r){var s;await di(t,{status:"completed",producedQuantity:r.produced,scrapQuantity:r.scrap,scrapReason:((s=r.reason)==null?void 0:s.trim())||null})}}function zS(){return{snapshotRepository:new OS,workOrderRepository:new LS}}function BS(e){return{async createFromPlanningRelease(t,r,s=1){const a={articleId:t,revisionId:r,quantity:s},i=await e.createFromRelease(a,"");return{snapshotId:i.id,planningStatus:i.status||"PLANNING_COMPLETE",executionPath:"/fertigung"}},async getById(t){return e.getById(t)}}}function FS(e){return e.snapshotId?`/fertigung/execution/${e.id}`:null}function Ux(e){const t=FS(e);if(!t)return null;switch(e.status){case"completed":case"blocked":return null;case"in_progress":return{path:t,label:"Weiter fertigen",tone:"primary"};case"on_hold":return{path:t,label:"Zum Cockpit",tone:"outline"};case"waiting_for_material":return{path:t,label:"In Fertigung starten",tone:"primary"};case"planned":default:return{path:t,label:"In Fertigung starten",tone:"primary"}}}function bc(e){const t=Number(e.targetQuantity??e.quantity??1);return Number.isFinite(t)&&t>0?t:1}function $S(e){return e!=null&&e.length?e.reduce((t,r)=>t+(Number(r.scrapQuantity)||0),0):0}function Wx(e,t,r){const s=Number(e)-Number(t)-Number(r);return Number.isFinite(s)&&s>1e-9?s:0}function KS(e){return{async updateStatus(t,r){return await e.updateStatus(t,r),e.getById(t)},async blockWorkOrder(t,r){const s=r.trim();if(!s)throw new Error("Blockiergrund ist Pflicht.");return await e.blockWorkOrder(t,s),e.getById(t)},async unblockWorkOrder(t){return e.unblockWorkOrder(t)},async saveOperationYield(t,r,s){var o;const a=new Map;for(const l of r??[])l.operationId&&a.set(l.operationId,l);a.set(s.operationId,{operationId:s.operationId,scrapQuantity:Math.max(0,Number(s.scrapQuantity)||0),scrapReason:((o=s.scrapReason)==null?void 0:o.trim())||null});const i=[...a.values()];return await e.saveOperationYields(t,i),e.getById(t)},async completeWorkOrder(t,r){const s=await e.getById(t);await e.completeWorkOrder(t,{produced:r.produced,scrap:r.scrap,reason:r.reason});const a=await e.getById(t),i=bc(s),o=Wx(i,r.produced,r.scrap);if(!r.splitRemainder||o<=0||!s.snapshotId)return{completed:a};const l=await e.createFromSnapshot({snapshotId:s.snapshotId,targetQuantity:o,articleId:s.articleId,startDate:s.startDate||new Date().toISOString().slice(0,10),parentWorkOrderId:s.id,notes:`Split-Rest aus ${s.orderNumber||s.id.slice(0,8)}`});return{completed:a,split:l}}}}const Hx=u.createContext(null);function uM({children:e,repositories:t}){const r=u.useMemo(()=>{const s=zS(),a=(t==null?void 0:t.snapshotRepository)??s.snapshotRepository,i=(t==null?void 0:t.workOrderRepository)??s.workOrderRepository;return{snapshotRepository:a,workOrderRepository:i,snapshotService:BS(a),statusMachine:KS(i)}},[t==null?void 0:t.snapshotRepository,t==null?void 0:t.workOrderRepository]);return n.jsx(Hx.Provider,{value:r,children:e})}function mf(){const e=u.useContext(Hx);if(!e)throw new Error("useProductionServices must be used within ProductionPortsProvider");return e}function Zx(){return mf().snapshotService}function VS(){return mf().statusMachine}function qS(){return mf().workOrderRepository}Xc({id:"production-core",name:"Produktion",description:"Stammdaten, Lieferanten und Einstellungen",featureId:"article-management",navItems:Uc("production-core"),bootstrap:async()=>{await Va(()=>Promise.resolve().then(()=>wR),void 0)},loadRoutes:async()=>(await Va(()=>Promise.resolve().then(()=>aD),void 0)).coreRoutes});Xc({id:"production-procurement",name:"Beschaffung",description:"Aufträge und Beschaffung",featureId:"procurement",navItems:Uc("production-procurement"),loadRoutes:async()=>(await Va(()=>Promise.resolve().then(()=>bD),void 0)).procurementRoutes});Xc({id:"production-interfaces",name:"Datenschnittstellen",description:"Importer / Exporter (Teil der Artikelverwaltung)",featureId:"data-interfaces",navItems:Uc("production-interfaces"),loadRoutes:async()=>(await Va(()=>Promise.resolve().then(()=>ED),void 0)).interfacesRoutes});Xc({id:"manufacturing",name:"Fertigung",description:"Maschinen, Arbeitsaufträge und Kapazitätsplanung",featureId:"module.manufacturing.access",navItems:Uc("manufacturing"),loadRoutes:async()=>(await Va(()=>Promise.resolve().then(()=>xR),void 0)).manufacturingRoutes});function $a({className:e}){return n.jsx("div",{className:ye("flex min-h-[40vh] items-center justify-center",e),children:n.jsx("div",{className:"size-8 animate-spin rounded-full border-2 border-primary border-t-transparent"})})}function Gx({label:e,className:t,dot:r}
78){return n.jsxs("span",{className:ye("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-medium",t),children:[r&&n.jsx("span",{className:ye("size-1.5 rounded-full",r),"aria-hidden":!0}),e]})}function US({status:e,className:t}){const r=ix(nl(e));return n.jsx(Gx,{label:r.label,className:t?`${r.className} ${t}`:r.className,dot:r.dot})}function Yx({stats:e}){return n.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:e.map(t=>{const r=t.onClick?"button":"div";return n.jsxs(r,{type:t.onClick?"button":void 0,onClick:t.onClick,className:ye("rounded-xl border bg-card p-5 text-left transition-colors",t.onClick&&"cursor-pointer hover:border-primary/40 hover:bg-muted/30",t.active&&"border-primary ring-1 ring-primary/30"),children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:t.label}),n.jsx(t.icon,{className:ye("size-4",t.tone??"text-foreground")})]}),n.jsx("p",{className:"mt-3 font-heading text-3xl font-semibold tracking-tight tabular-nums",children:t.value}),t.hint&&n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:t.hint})]},t.label)})})}function xs({title:e,subtitle:t,action:r}){return n.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"text-balance font-heading text-2xl font-semibold tracking-tight",children:e}),n.jsx("p",{className:"mt-1 text-pretty text-sm text-muted-foreground",children:t})]}),r]})}const WS={de:"de-DE",en:"en-US"};function Mi(){const{locale:e}=gs(),t=WS[e]??"de-DE";return u.useMemo(()=>({currency:(r,s="EUR")=>new Intl.NumberFormat(t,{style:"currency",currency:s,maximumFractionDigits:2}).format(r),number:r=>new Intl.NumberFormat(t).format(r),quantity:r=>new Intl.NumberFormat(t,{minimumFractionDigits:0,maximumFractionDigits:0}).format(Math.round(r)),percent:r=>new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0}).format(r/100),date:r=>{const s=new Date(r);return Number.isNaN(s.getTime())?r:new Intl.DateTimeFormat(t,{day:"2-digit",month:"short",year:"numeric"}).format(s)},dateTime:r=>{const s=new Date(r);return Number.isNaN(s.getTime())?r:new Intl.DateTimeFormat(t,{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"}).format(s)}}),[t])}function ff(e){return e?e.trim().toLowerCase():null}function Jx(e){return e.deletionRequestedAt?"deletion":e.workflowStatus==="IN_REVIEW"||e.workflowStatus==="DRAFT"?"draft":null}function HS(e){return e.deletionRequestedAt||e.hasOpenDraft?!0:Jx(e)!==null}function Qx(e){return ff(e.pendingSubmittedBy??e.draftCreatedBy)}function Xx(e,t){const r=Qx(e),s=ff(t);return!r||!s?!1:r!==s}function Jp(e){return e==="admin"}function ZS(e,t,r,s){if(!t)return!1;const a={pendingSubmittedBy:e,draftCreatedBy:s};if(Xx(a,t))return!0;const i=Qx(a),o=ff(t);return!i||i===o?Jp(r):!0}function Hl(e,t,r){return ZS(e.pendingSubmittedBy,t,r,e.draftCreatedBy)}function GS(e){return e.deletionRequestedAt||(e.draftChanges??[]).length>0?!1:e.workflowStatus==="DRAFT"||!e.activeRevision}function YS(){return!1}function ey(e){return/\.brd$/i.test(e)&&!/\.brd\.json$/i.test(e)}function ty(e){const t=e.trimStart();return t.startsWith("<?xml")||t.startsWith("<!DOCTYPE")||/^<eagle[\s>]/i.test(t)}function JS(e){return e.replace(/<!DOCTYPE[\s\S]*?>/i,"").trimStart()}function QS(e){const t=[],r=s=>{var a;s.localName==="element"&&((a=s.parentElement)==null?void 0:a.localName)==="elements"&&t.push(s);for(const i of s.children)i instanceof Element&&r(i)};return e.documentElement instanceof Element&&r(e.documentElement),t}function XS(e,t){for(const r of e.children)if(r.localName==="attribute"&&r.getAttribute("name")===t)return(r.getAttribute("value")??"").trim();return""}function ny(e){return/M/.test(e)?"Bottom":"Top"}function Wu(e){return(e%360+360)%360}function zo(e){if(e==null||e==="")return 0;if(typeof e=="number")return Number.isFinite(e)?Wu(e):(console.warn("[parseCadRotation] invalid number, defaulting to 0",e),0);const t=String(e).trim();if(!t)return 0;const r=t.toUpperCase(),s=/^M?R(-?\d+(?:\.\d+)?)$/.exec(r);if(s){const i=Number.parseFloat(s[1]);if(Number.isFinite(i))return Wu(i)}const a=/^(-?\d+(?:\.\d+)?)$/.exec(t);if(a){const i=Number.parseFloat(a[1]);if(Number.isFinite(i))return Wu(i)}return console.warn("[parseCadRotation] unparseable rotation, defaulting to 0",t),0}function Qp(e){return e.value?e.value:e.mpn?e.mpn:e.deviceset?e.deviceset:e.device?e.device:e.package?e.package:e.designator}function eA(e){const t=[];for(const r of QS(e)){const s=(r.getAttribute("name")??"").trim();
78s&&t.push({designator:s,value:(r.getAttribute("value")??"").trim(),package:(r.getAttribute("package")??"").trim(),library:(r.getAttribute("library")??"").trim(),deviceset:(r.getAttribute("deviceset")??"").trim(),device:(r.getAttribute("device")??"").trim(),mpn:XS(r,"MPN"),x:Number.parseFloat(r.getAttribute("x")??"0")||0,y:Number.parseFloat(r.getAttribute("y")??"0")||0,rot:r.getAttribute("rot")??"R0"})}return t}function tA(e,t){if(e.length===0)return null;const r=new Map;for(const i of e){const o=Qp(i),l=i.package||"â",d=`${o.toLowerCase()}\0${l.toLowerCase()}`,m=i.mpn||i.device||i.deviceset||i.library||o,p=r.get(d);p?(p.parts.push(i.designator),!p.library&&i.library&&(p.library=i.library)):r.set(d,{value:o,package:l,device:m,library:i.library,parts:[i.designator]})}const s=[...r.values()].map(i=>({quantity:i.parts.length,value:i.value,device:i.device,package:i.package,library:i.library||void 0,parts:i.parts.join(", ")})),a=e.map(i=>({designator:i.designator,x:i.x,y:i.y,rotation:i.rot,layer:ny(i.rot),value:Qp(i),package:i.package||void 0}));return{fileName:t,elementCount:e.length,bom:s,cpl:a}}function Jd(e,t){if(!ty(e)&&!e.trimStart().startsWith("<"))return null;const r=JS(e),s=new DOMParser().parseFromString(r,"application/xml");if(s.querySelector("parsererror"))return null;const a=eA(s);return tA(a,t)}function ry(e){if(!e||typeof e!="object")return null;const t=e;return Array.isArray(t.bom)?{fileName:t.fileName??"board.brd.json",elementCount:t.elementCount??t.bom.length,bom:t.bom.map(r=>({quantity:r.quantity??1,value:r.value??"",device:r.device??r.value??"",package:r.package??"",parts:r.parts??""})),cpl:(t.cpl??[]).map(r=>({designator:r.designator,x:r.x,y:r.y,rotation:String(zo(r.rotation)),layer:r.layer==="Bottom"?"Bottom":"Top",value:r.value,package:r.package}))}:null}function Oi(e,t="append"){const r=new Map(e.cpl.map(a=>[a.designator,a])),s=[];for(const a of e.bom){const i=a.parts.split(/[,;\s]+/).map(l=>l.trim()).filter(Boolean),o=i.length>0?i:[""];for(const l of o){const d=l?r.get(l):void 0,m=d?zo(d.rotation):0;s.push({articleNumber:"",name:a.value||a.device||"Unbenannt",referenceKey:a.package||void 0,quantity:i.length>0?1:a.quantity,refDes:l||a.parts,mpn:a.device||void 0,value:a.value||void 0,package:a.package||void 0,eagleLibrary:a.library||void 0,placementData:d?{x:d.x,y:d.y,rot:m,rotation:m,layer:d.layer,boardRaw:{x:d.x,y:d.y,rotation:m,layer:d.layer}}:void 0})}}return s}async function ol(e){const t=await e.text(),r=t.trimStart(),s=ey(e.name);if(s||ty(t)){const a=Jd(t,e.name);if(a)return a;if(s)return null}if(r.startsWith("{")||r.startsWith("[")||/\.json$/i.test(e.name))try{return ry(JSON.parse(t))}catch{return null}return r.startsWith("<")?Jd(t,e.name):null}function nA(e,t,r){const s=r.mergeStrategy??"append",a=Oi(e,s),i=[{id:crypto.randomUUID(),name:t.name,kind:"board",mimeType:t.type||(ey(t.name)?"application/xml":"application/json"),sizeBytes:t.size,file:t}];return{success:!0,message:`${a.length} Stücklistenpositionen aus Eagle-Board importiert (${e.elementCount} Bauteile).`,bomItems:a,attachments:i}}const sy=Object.freeze(Object.defineProperty({__proto__:null,buildProcessResultFromEagle:nA,eagleBomToProcessLines:Oi,eagleRotationToLayer:ny,parseCadRotation:zo,parseEagleBrdJson:ry,parseEagleBrdXml:Jd,readEagleBrdFile:ol},Symbol.toStringTag,{value:"Module"})),rA=["name","description","value","package","itemTypeDefinitionName","categoryName"],sA=["mpn","manufacturer","unit"],aA=["supplierName","supplierPartNumber","purchasePrice"],iA=["refDes","x","y","rotation","layer"],pf=["manufacturer","supplierName","itemTypeDefinitionName","categoryName","unit"];function Qd(e){return rA.includes(e)?"parent":sA.includes(e)?"variant":aA.includes(e)?"procurement":iA.includes(e)?"placement":"other"}function oA(e=ws){const t=[],r=[],s=[],a=[],i=[];for(const o of e){const l=Qd(o.key);l==="parent"?t.push(o):l==="variant"?r.push(o):l==="procurement"?s.push(o):l==="placement"?a.push(o):i.push(o)}return{parent:t,variant:r,procurement:s,placement:a,other:i}}const ay={parent:"Artikel (Bezeichnung / Klasse)",variant:"Variante (MPN / Hersteller)",procurement:"Beschaffung (Lieferant / Preis)",placement:"Bestückung (Pflicht)",other:"Sonstiges"},lA={parent:"border-sky-500/40 bg-sky-500/10 text-sky-800 dark:text-sky-300",variant:"border-violet-500/40 bg-violet-500/10 text-violet-800 dark:text-violet-300",procurement:"border-emerald-500/40 bg-emerald-500/10 text-emerald-800 dark:text-emerald-300",placement:"border-amber-500/40 bg-amber-500/10 text-amber-900 dark:text-amber-200",other:"border-border bg-muted/40 text-muted-foreground"};function hf(e,t={}){var s,a;const r={...e};for(const i of pf){const o=(s=t[i])==null?void 0:s.trim();if(!o)continue;((a=r[i])==null?void 0:a.trim())||(r[i]=o)}return r}function cA(e){return pf.some(t=>{var r;return!!((r=e[t])!=null&&r.trim())})}const Yr="%value%_%package%",uA=["Value: GroÃ/Klein egal; bei Kapazität optionales âFâ entfernen (100nF â 100n).","Value: 0Ω-Jumper als 0R (0R â¡ R00 â¡ 0).","Package: führendes C/R/L vor Chip-Bauform entfernen (C0603 â 0603).","µ wird zu u (4.7µF â 4.7u)."],Xp=/%([a-z_]+)%/g,dA=/^(\d+(?:\.\d+)?)([munp]?)(f)?$/i,mA=/^[lcrc]?(\d{4}
78)$/i,eh=/^(?:0+r?|r0+|0+(?:ohm|Ω|â¦)s?)$/i,fA=new Set(["value","package","footprint"]);function wa(e){return(e??"").trim().toLowerCase()}function iy(e){const t=(e??"").trim();return!t||!/%[a-z_]+%/.test(t)?Yr:t}function eu(e){return iy(e==null?void 0:e.matchingKeyTemplate)}function Li(e){const t=((e==null?void 0:e.matchingKeyTemplateBom)??"").trim();return t&&/%[a-z_]+%/.test(t)?t:eu(e)}function oy(e){let t=(e??"").trim().toLowerCase().replace(/µ/g,"u");if(!t)return"";const r=t.replace(/\s+/g,"").replace(/[Ωâ¦]/g,"ohm");if(eh.test(t)||eh.test(r))return"0r";const s=dA.exec(t);if(s){const[,a,i=""]=s;return`${a}${i}`}return t}function ly(e){const t=(e??"").trim().toLowerCase();if(!t)return"";const r=mA.exec(t);return r!=null&&r[1]?r[1]:t}function pA(e,t){return e==="value"?oy(t):e==="package"||e==="footprint"?ly(t):t.trim()}function tu(e,t,r){const s=iy(e),a={};for(const[m,p]of Object.entries(t)){const h=(p??"").trim();h&&(a[`%${m}%`]=fA.has(m)?pA(m,h):h)}const i=((r==null?void 0:r.name)??"").trim(),o=((r==null?void 0:r.mpn)??"").trim();if(!a["%name%"]&&i&&(a["%name%"]=i),!a["%mpn%"]&&o&&(a["%mpn%"]=o),![...s.matchAll(Xp)].map(m=>m[1]).some(m=>a[`%${m}%`])||s.includes("%value%")&&!(a["%value%"]??"").trim())return"";let d=s;for(const[m,p]of Object.entries(a))d=d.split(m).join(p);return d=d.replace(Xp,"").replace(/^[_\- .|/]+|[_\- .|/]+$/g,""),d?(r==null?void 0:r.normalize)===!1?d:wa(d):""}function ki(e){const t=e.properties??{},r=e.attributes??{},s=t.matching_key??t.matchingKey??t.matching_keys??t.matchingKeys??r.matching_key??r.matchingKey??r.matching_keys??r.matchingKeys??"";return wa(String(s??""))}function Hu(e,t={value:"10k",package:"0402"}){return tu(e,{value:t.value,package:t.package},{name:t.name,mpn:t.mpn,normalize:!1})||"â"}function hA(e){const t=(e.value??"").trim(),r=(e.package??"").trim(),s=oy(t),a=ly(r);return{valueRaw:t,valueCanon:s,packageRaw:r,packageCanon:a,valueChanged:!!t&&t.toLowerCase().replace(/µ/g,"u")!==s,packageChanged:!!r&&r.toLowerCase()!==a}}function gf(e,t=Yr){const r="typ"in e?String(e.typ||""):"";return tu(t,{value:e.value,package:e.package,footprint:e.package,name:e.name||r,typ:r},{name:e.name||r})}function cy(e,t=Yr){const r=wa(e.matchingKey)||gf(e,t)||void 0;return{value:e.value,package:e.package,matchingKey:r}}function gA(e){return e.attributes??e.properties??{}}function Bo(e,t=Yr){const r=gA(e),s=ki(e),a=tu(t,{value:r.value!=null?String(r.value):"",package:r.package!=null?String(r.package):"",footprint:r.footprint!=null?String(r.footprint):r.package!=null?String(r.package):""},{name:e.name});return[...new Set([s,a].map(i=>wa(i)).filter(Boolean))]}function xA(e){return new Map(e.map(t=>[t.id,t]))}function yA(e,t,r){if(!r||!e)return null;const s=r.get(e);return s?xA(t).get(s)??null:null}function bA(e,t,r=Yr,s){const a=hA({value:e.value,package:e.package}),i=gf(e,r);if(!i)return{key:"",reason:"empty_key",hitCount:0,hits:[],article:null,normalization:a};const o=wa(i),l=t.filter(p=>Bo(p,r).includes(o)),d=l.map(p=>{const h=Bo(p,r);return{id:p.id,articleNumber:p.articleNumber||"",matchingKey:h.includes(o)?o:h[0]||ki(p),name:p.name||""}});if(l.length===1)return{key:o,reason:"unique",hitCount:1,hits:d,article:l[0],normalization:a};const m=yA(o,t,s);return m?{key:o,reason:"learned",hitCount:l.length,hits:d.length>0?d:[{id:m.id,articleNumber:m.articleNumber||"",matchingKey:o,name:m.name||""}],article:m,normalization:a}:l.length===0?{key:o,reason:"no_hit",hitCount:0,hits:[],article:null,normalization:a}:{key:o,reason:"ambiguous",hitCount:l.length,hits:d,article:null,normalization:a}}function vA(e,t){const r=e.attributes??e.properties??{},s=Bo(e,t),a=ki(e),i=s.find(o=>o!==a)||a||s[0]||"";return{id:e.id,articleNumber:e.articleNumber||"",name:e.name||"",matchingKey:i,value:String(r.value??""),package:String(r.package??"")}}function NA(e){const t=e.articles.map(o=>vA(o,e.template)).sort((o,l)=>{const d=(l.matchingKey?1:0)-(o.matchingKey?1:0);return d!==0?d:(o.articleNumber||o.name).localeCompare(l.articleNumber||l.name,"de")}),r=t.filter(o=>o.matchingKey).length,s={template:e.template,catalogSize:e.articles.length,catalogWithMatchingKey:r,candidates:e.rows.length,unique:e.rows.filter(o=>o.diagnosis.reason==="unique").length,learned:e.rows.filter(o=>o.diagnosis.reason==="learned").length,mapped:e.rows.filter(o=>o.mapped).length,emptyKey:e.rows.filter(o=>o.diagnosis.reason==="empty_key").length,noHit:e.rows.filter(o=>o.diagnosis.reason==="no_hit").length,ambiguous:e.rows.filter(o=>o.diagnosis.reason==="ambiguous").length};let a=null;s.noHit>
780&&r===0?a="Kein Artikel im geladenen Katalog hat matching_key bzw. value/package. Unter Einstellungen â System â Matching Key âArtikel-Keys neu berechnenâ.":s.noHit>0?a="ohne Treffer: kanonischer BOM-Key stimmt mit keinem Artikel überein und es gibt keinen gelernten Eintrag. Manuell zuordnen â Auto-Map merkt sich die Wahl.":s.ambiguous>0?a="mehrdeutig: mehrere Artikel teilen denselben matching_key und kein gelernter Favorit â bitte manuell zuordnen (wird gelernt).":s.emptyKey>0&&(a="ohne Key: BOM-Zeile hat weder value noch package (oder Template liefert leer).");const i=new Map(t.map(o=>[o.id,o]));return{...s,hint:a,rows:e.rows.map(({item:o,diagnosis:l,mapped:d})=>{const m=l.hits.map(x=>i.get(x.id)??{id:x.id,articleNumber:x.articleNumber,name:x.name,matchingKey:x.matchingKey,value:"",package:""}),p=l.normalization,h=[];return p.valueChanged&&h.push(`${p.valueRaw} â ${p.valueCanon}`),p.packageChanged&&h.push(`${p.packageRaw} â ${p.packageCanon}`),{bomLineId:o.id,value:o.value??"",package:o.package??"",valueCanon:p.valueCanon,packageCanon:p.packageCanon,normalizedNote:h.join(" · "),refDes:(o.refDes??"").slice(0,48),computedKey:l.key||"â",reason:l.reason,hits:l.hitCount,hitArticles:m.map(x=>[x.articleNumber,x.name].filter(Boolean).join(" · ")||x.id).join(", "),hitDetails:m,mapped:d}}),catalogArticles:t.slice(0,200)}}function jA(e){const t=NA(e);return console.groupCollapsed(`[BOM Auto-Map] ${t.mapped}/${t.candidates} mapped · template=${t.template}`),console.info("summary",{template:t.template,catalogSize:t.catalogSize,catalogWithMatchingKey:t.catalogWithMatchingKey,candidates:t.candidates,unique:t.unique,learned:t.learned,mapped:t.mapped,emptyKey:t.emptyKey,noHit:t.noHit,ambiguous:t.ambiguous}),console.table(t.rows),console.info(`Artikelstamm (erste ${t.catalogArticles.length}, davon ${t.catalogWithMatchingKey}/${t.catalogSize} mit matching_key):`),console.table(t.catalogArticles),t.hint&&console.warn(t.hint),console.groupEnd(),t}function Fa(e){return(e??"").trim().toLowerCase()}function vc(e){return(e??"").trim()||"Unbekannt"}function Nc(e,t=""){const r=(e??"").trim();return r||t.trim()||"UNKNOWN"}function Wa(e){return(e.name||e.value||"").trim()}function uy(e,t,r=Yr){const s=new Map,a=new Map,i=new Map,o=new Map;for(const l of e){i.set(l.id,l);const d=Fa(l.name);if(d){const m=s.get(d);m?m.push(l.id):s.set(d,[l.id])}for(const m of Bo(l,r)){if(!m)continue;const p=a.get(m);p?p.push(l.id):a.set(m,[l.id])}}for(const l of t){const d=o.get(l.articleId);d?d.push(l):o.set(l.articleId,[l])}return{byName:s,byMatchingKey:a,articleById:i,variantsByArticle:o}}function th(e,t){const r=Fa(e);return r?t.byName.get(r)??[]:[]}function kA(e,t){const r=wa(e);return r?t.byMatchingKey.get(r)??[]:[]}function Zu(e,t,r,s){const a=Fa(t);if(!a||a==="unknown")return[];const i=Fa(r);return(s.variantsByArticle.get(e)??[]).filter(l=>!(Fa(l.mpn)!==a||i&&i!=="unbekannt"&&Fa(l.manufacturer)!==i)).map(l=>l.id)}function Xi(e){return e.length===0?"new":e.length===1?"match":"conflict"}function wA(e,t=Yr){const r=wa(e.matchingKey);return r||tu(t,{value:e.value,package:e.package,footprint:e.package,name:e.name,mpn:e.mpn},{name:e.name,mpn:e.mpn})}function SA(e,t,r,s){const a=s==null?void 0:s.matchingKeyTemplate,i=(s==null?void 0:s.index)??uy(t,r,a),o=wA(e,a),l=Wa(e),d=Nc(e.mpn),m=vc(e.manufacturer),p=!!(e.mpn??"").trim()&&Fa(d)!=="unknown";let h=th(l,i),x=Xi(h),b=x==="match"?h[0]:null,w=[],v="new";if(b&&p&&(w=Zu(b,d,m,i),v=Xi(w)),!(x==="match"&&v==="match"&&p)&&o){const A=kA(o,i);if(A.length===1){b=A[0],h=[b],x="match";const I=i.variantsByArticle.get(b)??[];p?(w=Zu(b,d,m,i),v=Xi(w)):I.length===1?(w=[I[0].id],v="match"):I.length===0?(w=[],v="match"):v="new"}else A.length>1&&(h=A,x="conflict",b=null,v="new",w=[])}x==="new"&&l&&(h=th(l,i),x=Xi(h),b=x==="match"?h[0]:null,b&&p&&(w=Zu(b,d,m,i),v=Xi(w)));const R=v==="match"?w[0]:null;let E="new";return x==="conflict"||v==="conflict"?E="conflict":x==="match"&&v==="match"?E="match":E="new",{parentArticleId:b,variantId:R,matchedParentIds:h,matchedVariantIds:w,parentMatchStatus:x,variantMatchStatus:v,matchStatus:E,selectedArticleId:b,selectedVariantId:R,matchingKey:o||void 0}}function nu(e){var t;return e.variantMatchStatus==="new"?null:e.selectedVariantId??e.variantId??((t=e.matchedVariantIds)==null?void 0:t[0])??null}function No(e){var t,r;return e.parentMatchStatus==="new"?null:e.selectedArticleId??e.parentArticleId??((t=e.matchedParentIds)==null?void 0:t[0])??((r=e.matchedArticleIds)==null?void 0:r[0])??null}function xf(e,t,r=[],s){const a=(s==null?void 0:s.matchingKeyTemplate)||Yr,i=uy(t,r,a);return e.map(o=>{const l=SA(o,t,r,{matchingKeyTemplate:a,index:i});return{...o,matchingKey:l.matchingKey??o.matchingKey,matchStatus:l.matchStatus,matchedArticleIds:l.matchedParentIds,selectedArticleId:l.selectedArticleId,parentArticleId:l.parentArticleId,variantId:l.variantId,matchedParentIds:l.matchedParentIds,matchedVariantIds:l.matchedVariantIds,parentMatchStatus:l.parentMatchStatus,variantMatchStatus:l.variantMatchStatus,selectedVariantId:l.selectedVariantId}})}async function dy(e,t,r){const s=await Yc();return xf(e,t,s,r)}function my(e,t,r,s={}){const a=[];for(const i of e){const o=hf(bf(i,t),s);if(!fy(o,r))continue;const l=o.name||o.description||o.value||o.refDes||"",d=o.x||o.y||o.rotation||o.layer?{...o.x?{x:o.x}:{},...o.y?{y:o.y}:{},...o.rotation?{rotation:zo(o.rotation),rot:zo(o.rotation)}:{},...o.layer?{layer:o.layer}:{}}:void 0;a.push({id:crypto.randomUUID(),source:"csv",name:l,mpn:o.mpn||void 0,manufacturer:o.manufacturer||void 0,supplierName:o.supplierName||void 0,supplierPartNumber:o.supplierPartNumber||void 0,purchasePrice:o.purchasePrice||void 0,value:o.value||void 0,package:o.package||void 0,matchingKey:o.matchingKey||void 0,itemTypeDefinitionName:o.itemTypeDefinitionName||void 0,categoryName:o.categoryName||void 0,quantity:o.quantity,refDes:o.refDes,placementData:d,raw:i})}return a}function yf(e,t){return e.map(r=>({id:crypto.randomUUID(),source:t,name:r.name,mpn:r.mpn,manufacturer:r.manufacturer,value:r.value,package:r.package,eagleLibrary:r.eagleLibrary,quantity:r.quantity,refDes:r.refDes,placementData:r.placementData,raw:{name:r.name,mpn:r.mpn??"",manufacturer:r.manufacturer??"",value:r.value??"",package:r.package??"",eagleLibrary:r.eagleLibrary??"",quantity:String(r.quantity),refDes:r.refDes}}))}function bf(e,t,r={}){const s=d=>{const m=t[d];return m?(e[m]??"").trim():""},a=s("name"),i=s("mpn"),o=s("value")||a,l={name:a,description:s("description"),mpn:i,manufacturer:s("manufacturer"),supplierName:s("supplierName"),supplierPartNumber:s("supplierPartNumber"),purchasePrice:s("purchasePrice"),itemTypeDefinitionName:s("itemTypeDefinitionName"),categoryName:s("categoryName"),value:o,package:s("package"),matchingKey:s("matchingKey"),quantity:parseInt(s("quantity")||"1",10)||1,refDes:s("refDes"),x:s("x"),y:s("y"),rotation:s("rotation"),layer:s("layer")};return hf(l,r)}function fy(e,t){return t==="placement"?!!(e.refDes||e.x||e.y):!!(e.name||e.mpn||e.value||e.refDes||e.x||e.y)}function Gu(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?t:null}function AA(e){return e==null?null:String(e).trim()||null}function Xd(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=Gu(t.x),s=Gu(t.y),a=Gu(t.rotation??t.rot),i=AA(t.layer);return r===null&&s===null&&a===null&&i===null?null:{x:r,y:s,rotation:a,layer:i}}function py(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=e.byDesignator;if(t&&typeof t=="object"&&!Array.isArray(t)){const s={};for(const[a,i]of Object.entries(t)){const o=Xd(i);o&&(s[a.trim()]=o)}return s}const r=Xd(e);return r?{__flat__:r}:{}}function nh(e,t,r){const s=py(e),a=t.trim();if(a&&s[a])return s[a];const i=s.__flat__;return i&&r.length===1&&r[0]===a?i:null}function hy(e,t,r){const s=r?Xd(r):null,a=t.trim(),o={...py(e)};if(delete o.__flat__,a&&s)o[a]=s;else{if(s&&!a)return{x:s.x,y:s.y,rotation:s.rotation,layer:s.layer};!s&&a&&o[a]&&delete o[a]}return Object.keys(o).length===0?e&&typeof e=="object"?{...e}:null:{byDesignator:o}}function CA(e){return e?e.x!==null||e.y!==null||e.rotation!==null||e.layer!==null:!1}function _A(e,t){return`${e}|${t}`}function IA(e){return["unmapped",(e.value??"").trim().toLowerCase(),(e.package??"").trim().toLowerCase(),Wa(e).trim().toLowerCase()].join("|")}function rh(e){var i,o;let t=0;const r=new Set;let s;const a=e[0];for(const l of e)t+=l.quantity,(i=l.refDes)!=null&&i.trim()&&r.add(l.refDes.trim()),l.placementData&&((o=l.refDes)!=null&&o.trim())&&(s=hy(s??null,l.refDes,l.placementData)??void 0);return{quantity:t,refDes:[...r].join(", "),placementData:s,value:a.value,package:a.package,typ:Wa(a)||a.name}}function Yu(e){return(e??"").trim().toLowerCase()}function EA(e){return[Yu(Wa(e)),Yu(Nc(e.mpn)),Yu(vc(e.manufacturer))].join("|")}function PA(){return`ART-${Math.floor(1e5+Math.random()*899999)}`}function em(e){return e.name.replace(/\.(brd\.json|json|brd)$/i,"").replace(/[_-]+/g," ").trim()||"Neue Baugruppe"}async function TA(e){const t=await ol(e);if(!t)throw new Error("Keine gültige Eagle .brd Datei (XML ab Version 6).");const r=Oi(t);return{board:t,lines:r,stagingRows:[]}}function DA(e,t,r=[],s){const a=yf(e,"eagle");return xf(a,t,r,s)}async function RA(e,t){return rl({articleNumber:PA(),name:e,description:`Aus CAD-Datei importiert
78: ${t}`,category:"",itemType:"SUBASSEMBLY",typ:"",price:0,stock:null,unit:"Stk",attributes:{sourceFile:t}})}function MA(e){if(!e)throw new Error("Keine Arbeitsrevision ausgewählt. Bitte zuerst eine Revision anlegen.");return e}function OA(e){if(e.matchStatus==="conflict"&&!e.selectedArticleId&&!e.selectedVariantId)return{parentId:null,variantId:null};const t=No(e),r=nu(e);return t&&r?{parentId:t,variantId:r}:t&&!r&&e.parentMatchStatus==="match"&&e.variantMatchStatus==="match"?{parentId:t,variantId:null}:{parentId:null,variantId:null}}async function gy(e,t,r,s){var S,R,E,A,I;const a=MA(s==null?void 0:s.revisionId),i=t.length;(S=s==null?void 0:s.onProgress)==null||S.call(s,0,i),s!=null&&s.replaceExisting&&await gx(e,a);let o=0,l=0,d=0;const m=new Map,p=C=>{l+=1;const k=IA(C),j=m.get(k);(j==null?void 0:j.kind)==="unmapped"?j.rows.push(C):m.set(k,{kind:"unmapped",key:k,rows:[C]})};for(let C=0;C<t.length;C+=1){const k=t[C],{parentId:j,variantId:z}=OA(k);if(j&&(z||k.variantMatchStatus==="match")){o+=1;const D=_A(j,z??""),B=m.get(D);(B==null?void 0:B.kind)==="mapped"?B.rows.push(k):m.set(D,{kind:"mapped",parentId:j,variantId:z,rows:[k]})}else k.matchStatus==="conflict"&&!k.selectedArticleId?s!=null&&s.keepUnresolvedConflicts?p(k):d+=1:p(k);(R=s==null?void 0:s.onProgress)==null||R.call(s,C+1,i)}const h=[...m.values()];let x=0;const b=h.map(C=>{const k=rh(C.rows);return C.kind==="mapped"?{...C.variantId?{variantId:C.variantId}:{},articleId:C.parentId,quantity:k.quantity,referenceDesignator:k.refDes,value:k.value,package:k.package,typ:k.typ,placementData:k.placementData}:{quantity:k.quantity,referenceDesignator:k.refDes,value:k.value??k.typ??"",package:k.package,typ:k.typ,placementData:k.placementData,mappingStatus:"unmapped"}}),w=10;if((E=s==null?void 0:s.onProgress)==null||E.call(s,0,b.length,"Stückliste speichern â¦"),b.length>0){let C=0;for(let k=0;k<b.length;k+=w){const j=b.slice(k,k+w),z=k+w>=b.length;await pk(e,a,j),C+=j.length,(A=s==null?void 0:s.onProgress)==null||A.call(s,C,b.length,"Stückliste speichern â¦"),z&&(x=C)}}const v=h.filter(C=>C.kind==="mapped").map(C=>{const k=rh(C.rows);return{value:k.value??"",package:k.package??"",referenceDesignator:k.refDes,quantity:k.quantity,articleId:C.parentId,secondaryArticleIds:[]}});return(s==null?void 0:s.syncComponentGroups)!==!1&&v.length>0&&((I=s==null?void 0:s.onProgress)==null||I.call(s,h.length,h.length,"Bauteilgruppen werden synchronisiert â¦"),await bx(e,a,v)),{bomLines:x,mapped:o,unmapped:l,skipped:d}}function LA(e){var r,s;const t=new Map;for(const a of e){const o=nu(a)??EA(a),l=t.get(o);if(!l){t.set(o,{...a});continue}if(l.quantity+=a.quantity,(r=a.refDes)!=null&&r.trim()){const d=new Set;for(const m of`${l.refDes},${a.refDes}`.split(/[,;\s]+/)){const p=m.trim();p&&d.add(p)}l.refDes=[...d].join(", ")}a.placementData&&((s=a.refDes)!=null&&s.trim())&&(l.placementData=hy(l.placementData,a.refDes,a.placementData))}return[...t.values()]}async function zA(e,t,r,s,a=[],i){var x,b;const o=await ol(e);if(!o)throw new Error("Keine gültige Eagle .brd Datei (XML ab Version 6).");const l=Oi(o),d=DA(l,t,a,{matchingKeyTemplate:i==null?void 0:i.matchingKeyTemplate});let m,p;if(r==="create")m=(await RA(em(e),e.name)).id,p=(await Qm(m,{version:"A",notes:"Initialrevision (Eagle-Produktanlage)"})).id;else{if(!s)throw new Error("Keine Ziel-Baugruppe ausgewählt.");m=s;const v=((x=(await ts(m)).activeRevision)==null?void 0:x.id)??((b=(await sl(m)).find(S=>S.status==="draft"))==null?void 0:b.id);if(!v)throw new Error("Ziel-Baugruppe hat keine Revision. Bitte zuerst eine Revision im Artikel anlegen.");p=v}const h=await gy(m,d,t,{replaceExisting:r==="update",revisionId:p,variants:a});return{assemblyId:m,stats:h}}const ru=1,xy="production-tab-cache:v1";function su(e,t,r){return`${xy}:${e}:${t}:${r}`}function yy(e,t){return`${xy}:ui:${e}:${t}`}function ll(e){if(!e)return null;try{const t=JSON.parse(e);return t.version!==ru?null:t}catch{return null}}function vf(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function sh(e,t,r){const s=ll(localStorage.getItem(su(e,t,r)));return(s==null?void 0:s.workspace)??null}function Ju(e,t,r,s){const a=su(e,t,r),i=ll(localStorage.getItem(a));vf(a,{version:ru,savedAt:new Date().toISOString(),workspace:s,importDraft:i==null?void 0:i.importDraft,ui:i==null?void 0:i.ui})}function BA(e,t,r){const s=ll(localStorage.getItem(su(e,t,r)));return(s==null?void 0:s.importDraft)??null}function by(e,t,r,s){const a=su(e,t,r),i=ll(localStorage.getItem(a));vf(a,{version:ru,savedAt:new Date().toISOString(),workspace:i==null?void 0:i.workspace,importDraft:s??void 0,ui:i==null?void 0:i.ui})}function Rl(e,t,r){by(e,t,r,null)}function FA(e,t){const r=ll(localStorage.getItem(yy(e,t)));return(r==null?void 0:r.ui)??null}function $A(e,t,r){vf(yy(e,t),{version:ru,savedAt:new Date().toISOString(),ui:r})}function KA(e){const{file:t,...r}=e;
78return{...r,fileName:t.name}}function VA(e){const{fileName:t,...r}=e;return{...r,file:new File([],t,{type:"application/octet-stream"})}}const qA=1e5,au=2e4,UA=1e4,WA=1e4;function Fo(e,t){return e+t}function $o(e){const t=e.trim();return/^\d+$/.test(t)?parseInt(t,10):null}function HA(e,t){let s=e+au;for(const a of t){const i=$o(a);i!=null&&i>s&&(s=i)}return String(s+1)}function tm(e,t,r){const s=t.find(d=>d.id===e||d.name===e),a=(s==null?void 0:s.numberPrefix)??0;if(a<=0){let d=1e5;for(const m of r){const p=$o(m);p!=null&&p>d&&(d=p)}return String(d+1)}const i=a+WA;let o=a;for(const d of r){const m=$o(d);m==null||m<=a||m>=i||m>o&&(o=m)}const l=o===a?a+1:o+1;return l<i?String(l):String(a+1)}function Qu(e,t,r){var i;const s=(e.categoryId??"").trim();if(s)return tm(s,t,r);const a=(i=e.itemTypeDefinitions)==null?void 0:i.find(o=>o.id===e.itemTypeDefinitionId);return a?HA(a.numberPrefix??0,r):tm("",t,r)}function ZA(e){return e.length===0?au:Math.max(...e)+UA}function vy(e){return(e+1)*qA}const Ny="local:";function jo(e){return e.startsWith(Ny)}function GA(e){const t=e.options??[];return{key:e.key,label:e.label,type:e.type,required:e.required,unit:e.unit||void 0,options:t.length>0?t:void 0,computed:e.computed||void 0}}function jy(e,t,r){const s=e.schemaConfig??[];if(!e.itemTypeDefinitionId)throw new Error(`Warengruppe "${e.name}" hat keine Artikelart-Verknüpfung.`);const a=e.numberOffset??au,i=(t==null?void 0:t.numberPrefix)??(t!=null?vy(t.sortOrder):0);return{id:e.id,name:e.name,itemType:e.itemType??"RAW_MATERIAL",itemTypeDefinitionId:e.itemTypeDefinitionId,numberOffset:a,numberPrefix:Fo(i,a),schema:s.map(GA)}}function Ha(e,t){return t?e.filter(r=>r.itemTypeDefinitionId===t):[]}function YA(e,t){return e.find(r=>r.id===t||r.name===t)}function JA(e,t){const r=(t??"").trim().toLowerCase();if(r)return e.find(s=>s.name.trim().toLowerCase()===r)}function QA(e,t){const r=(t??"").trim().toLowerCase();if(r)return e.find(s=>s.name.trim().toLowerCase()===r)}function XA(e,t){const s=Ha(e,t.id).map(o=>o.numberOffset??au),a=ZA(s),i=t.numberPrefix??vy(t.sortOrder);return{id:`${Ny}${crypto.randomUUID()}`,name:"Neue Warengruppe",itemType:t.behaviorType,itemTypeDefinitionId:t.id,numberOffset:a,numberPrefix:Fo(i,a),schema:[]}}async function iu(e){const t=await lf(),r=new Map(e.map(s=>[s.id,s]));return t.map((s,a)=>jy(s,r.get(s.itemTypeDefinitionId)))}function ky(e){const t=e.type==="url"?"text":e.type;return{key:e.key,label:e.label,type:t,required:e.required,unit:e.unit??"",options:e.options??[],computed:e.computed||void 0}}const eC=[{value:"TURNKEY",label:"Fremdbeschafft"},{value:"CONSIGNMENT",label:"Beistellung"}];function ou(e){const t=String(e??"INTERNAL").toUpperCase();return t==="TURNKEY"||t==="CONSIGNMENT"?t:"INTERNAL"}function wy(e){return e==="TURNKEY"}function tC(e){return e==="TURNKEY"}const nC=[{value:"INTERNAL",label:"Eigenes Lager"},{value:"TURNKEY",label:"Fremdbeschafft"}];function Sy(e){return e?eC:nC}const Ay="Bevorz. Bestückung",Cy="Vorschau aus Artikelstamm â dauerhaft in Schritt Stückliste pflegen";function ah(e){return e==="TURNKEY"?"Fremdbeschafft":e==="CONSIGNMENT"?"Beistellung":e==="INTERNAL"?"Eigenes Lager":""}function rC(e){return!tC(ou(e))}function ko(e){return!!e&&kt(e)}function Ya(e){return e.mappingStatus==="unmapped"||!e.articleId}function lu(e){return Ya(e)?!1:e.articleExists===!1}function Xu(e){return Ya(e)||lu(e)}function nm(e){const t=String(e.value??"").trim(),r=String(e.package??"").trim();return t&&r?`${t} · ${r}`:t||r||String(e.typ??"").trim()||String(e.name??"").trim()||"Zuordnung offen"}function Zl(e,t){const r=e.mappingStatus==="unmapped"||!e.articleId,s=e.articleId?t==null?void 0:t.get(e.articleId):void 0,a=r||e.articleExists===!1?!1:e.articleExists===!0?!0:s!=null,i=(s==null?void 0:s.name)??(r?nm(e):a?e.typ||"Zuordnung offen":nm(e)||"Gelöschtes Bauteil");return{id:e.id,articleId:e.articleId??"",variantId:e.variantId,articleNumber:(s==null?void 0:s.articleNumber)??(r?"â":a?(e.articleId??"").slice(0,8).toUpperCase():"gelöscht"),name:i,referenceKey:(s==null?void 0:s.referenceKey)??(s==null?void 0:s.articleNumber)??"",quantity:e.quantity,refDes:e.referenceDesignator??"",value:e.value,package:e.package,placementData:e.placementData??null,mappingStatus:e.mappingStatus??(r?"unmapped":"mapped"),articleExists:a,supplyType:ou(e.supplyType),materialRequirementId:e.materialRequirementId??null,functionalRequirementsSnapshot:e.functionalRequirementsSnapshot??void 0,supplierPartId:e.supplierPartId??null,lcscPartNumber:e.lcscPartNumber??null,lcscAlternatives:e.lcscAlternatives??[]}}async function ra(e,t,r){if(!ko(e)||!kt(t))return[];try{return(await fk(e,t,{enrich:"ebom"})).map(a=>Zl(a,r))}catch{return[]}}async function Gl(e,t,r){var s;if(!ko(e))return[];try{if(r&&kt(r))return ra(e,r,t);const i=(s=(await ts(e)).activeRevision)==null?void 0:s.id;return i?ra(e,i,t):[]}catch{return[]}}const _y={name:"name",articleNumber:"articleNumber",description:"description",categoryId:"category",itemType:"itemType",unitOfMeasure:"unit",stock:"stock",manufacturer:"typ",price:"price",status:"workflowStatus"};function rm(e){return e.startsWith("properties.")?`attributes.${e.slice(11)}`:_y[e]??e}function sC(e){const t=[];for(const r of Object.keys(e))if(r==="properties"&&e.properties&&typeof e.properties=="object")for(const s of Object.keys(e.properties))t.push(`attributes.${s}`);else t.push(rm(r));return t}function sm(e){if(e.startsWith("attributes."))return`properties.${e.slice(11)}`;const t=Object.entries(_y).find(([,r])=>r===e);return(t==null?void 0:t[0])??e}const aC={name:"Bezeichnung",articleNumber:"Artikelnummer",description:"Beschreibung",categoryId:"Warengruppe",itemType:"Artikelart",unitOfMeasure:"Mengeneinheit",stock:"Bestand",manufacturer:"Hersteller",price:"Preis",status:"Workflow-Status"};function iC(e){return e.startsWith("properties.")?e.slice(11):aC[e]??e}function ih(e,t,r){if(r.startsWith("properties.")){const s=r.slice(11);return{...e,properties:{...e.properties,[s]:t.properties[s]}}}switch(r){case"name":return{...e,name:t.name};case"articleNumber":return{...e,articleNumber:t.articleNumber};
78case"description":return{...e,description:t.description};case"categoryId":return{...e,categoryId:t.categoryId};case"itemType":return{...e,itemType:t.itemType};case"unitOfMeasure":return{...e,unitOfMeasure:t.unitOfMeasure};case"stock":return{...e,stock:t.stock};case"manufacturer":return{...e,manufacturer:t.manufacturer};case"status":return{...e,status:t.status};default:return e}}function Nf(e){const t=new Set,r=[];for(const s of e.replace(/;/g,",").split(",")){const a=s.trim();a&&!t.has(a)&&(t.add(a),r.push(a))}return r}function oC(e,t){return!e&&!t?0:e?t?e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}):-1:1}function lC(e){const t=[];for(const r of e){const s=Ya(r),a=Nf(r.refDes??""),i=r.placementData??null;if(a.length>0){for(const o of a)t.push({instanceKey:`${r.id}:${o}`,bomLineId:r.id,refDes:o,childArticleId:r.articleId,quantity:1,articleNumber:r.articleNumber,name:r.name,value:r.value,package:r.package,placement:nh(i,o,a),isUnmapped:s});continue}t.push({instanceKey:`${r.id}:__bulk`,bomLineId:r.id,refDes:"",childArticleId:r.articleId,quantity:1,articleNumber:r.articleNumber,name:r.name,value:r.value,package:r.package,placement:nh(i,"",[]),isUnmapped:s})}return t.sort((r,s)=>oC(r.refDes,s.refDes))}function cC(e,t){return t.length?t.map(r=>({outputArticleId:r.outputArticleId,quantity:r.quantity})):[{outputArticleId:e,quantity:1}]}function uC(e){return e.reduce((t,r)=>t+r.quantity,0)}function Iy(e,t){const r=t.find(s=>s.id===e);return r&&Number(r.price)||0}function dC(e,t){return e.reduce((r,s)=>{const a=Iy(s.articleId,t);return r+a*s.quantity},0)}function mC(e,t){const r=uC(t);return r<=0?e:e/r}function Ey(e){return new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR",minimumFractionDigits:2,maximumFractionDigits:4}).format(e)}const fC="Platzhalter";function pC(e,t){return[e,t].filter(Boolean).join(" ")||"Unbekanntes Bauteil"}const hC=80,wi=2,gC=new Set(["not","nicht"]),Si=80;function cu(e){return e<=1?"max-h-48":"max-h-[min(72vh,40rem)]"}function jf(e){var t;return String(((t=e.attributes)==null?void 0:t.value)??"").trim()}function kf(e){var t;return String(((t=e.attributes)==null?void 0:t.package)??"").trim()}function $n(e){return e==null?"":String(e).trim()}function kn(e){return $n(e).toLowerCase().replace(/[±]/g,"").replace(/[,_]/g," ").replace(/\s+/g," ").trim()}function jc(e){return $n(e.name)||$n(e.typ)||$n(e.articleNumber)||"â"}function Py(e){const t=new Map;for(const s of e){const a=[s.mpn,s.description,s.manufacturer];for(const l of Object.values(s.attributes??{}))typeof l=="string"&&l.trim()&&a.push(l.trim());const i=a.filter(Boolean).join(" ");if(!i)continue;const o=t.get(s.articleId)??[];o.push(i),t.set(s.articleId,o)}const r=new Map;for(const[s,a]of t)r.set(s,kn(a.join(" ")));return r}function Ty(e){const t=e.attributes??{},r=[];for(const s of Object.values(t))typeof s=="string"&&s.trim()?r.push(s.trim()):typeof s=="number"&&Number.isFinite(s)&&r.push(String(s));return kn(r.join(" "))}function wo(e,t){return jc(e).localeCompare(jc(t),"de",{sensitivity:"base",numeric:!0})}function xC(e){return e.replace(/\*/g,"")}function zi(e){const t=kn(e).split(/[\s/]+/).filter(Boolean),r=[],s=[];let a=!1,i=null;const o=(l,d)=>{const m=xC(l);m.length<wi||(d?s.push(m):r.push(m))};for(const l of t){if(!a&&gC.has(l)){a=!0,i=l;continue}let d=l,m=a;a=!1,i=null,!m&&(d.startsWith("-")||d.startsWith("!"))&&(d=d.slice(1),m=!0),o(d,m)}return a&&i&&i.length>=wi&&r.push(i),{include:r,exclude:s}}function Dy(e){return zi(e).include}function Ry(e){const t=(e.supplierParts??[]).map(r=>$n(r.partNumber)).filter(Boolean).join(" ");return kn([e.typ,e.name,e.articleNumber,e.description,e.category,Ty(e),t].filter(Boolean).join(" "))}function as(e){const t=new Set([e]),r=/^(\d+(?:\.\d+)?)([munp]?)(f)?$/i.exec(e);if(r){const[,a,i="",o]=r,l=`${a}${i}`;t.add(l),t.add(`${l}f`),o&&t.add(l)}const s=/^[lcrc]?(\d{4})$/i.exec(e);return s!=null&&s[1]&&(t.add(s[1]),t.add(`c${s[1]}`),t.add(`r${s[1]}`),t.add(`l${s[1]}`)),/^\d+(?:\.\d+)?v$/i.test(e)&&t.add(e.replace(/v$/i," v")),[...t].filter(Boolean)}function Ai(e){return e.replace(/([a-zäöüõ])\1+/gi,"$1")}function yC(e,t){if(!t||!e)return!1;if(e.includes(t))return!0;const r=Ai(t);return r.length<wi?!1:Ai(e).includes(r)}function wf(e,t){return e?as(t).some(r=>yC(e,r)):!1}function fs(e,t){return!e||t.length===0?!1:t.every(r=>wf(e,r))}function My(e,t){const{include:r,exclude:s}=zi(t);if(r.length===0&&s.length===0)return!1;const a=kn(e);return!(r.length>0&&!fs(a,r)||s.some(i=>wf(a,i)))}function am(e,t,r){if(t.length===0)return!1;const s=`${Ry(e)} ${r}`.trim();return t.some(a=>wf(s,a))}const bC=new Set(["01005","0201","0402","0603","0805","1206","1210","2010","2512"]);function vC(e){return/^[lcr]\d{4}$/i.test(e)?!0:bC.has(e.toLowerCase())}function NC(e){return/^(\d+(?:\.\d+)?)([munp])(f)?$/i.test(e)||/^(\d+(?:\.\d+)?)f$/i.test(e)}function jC(e){return/^\d+(?:\.\d+)?v$/i.test(e)}function Ko(e){return/(capacitor|resistor|inductor|led|diode|transistor|kondensator|widerstand|ceramic)/i.test(e)}function kC(e,t,r){const s=r>0?e[r-1]:" ",a=e[r+t.length]??" ";return!/[a-z0-9µ]/.test(s)&&!/[a-z0-9µ]/.test(a)}function Mr(e,t,r){if(!e)return 0;let s=0;for(const a of as(t)){const i=e.indexOf(a);if(i!==-1){let p=r+a.length*2;e.startsWith(a)&&(p+=14),kC(e,a,i)&&(p+=12),(e.endsWith(a)||e.endsWith(` ${a}`))&&(p+=10),s=Math.max(s,p);continue}const o=Ai(a);if(o.length<wi)continue;const l=Ai(e),d=l.indexOf(o);if(d===-1)continue;let m=r+o.length;l.startsWith(o)&&(m+=8),(d===0||l[d-1]===" ")&&(m+=6),s=Math.max(s,m)}return s}function wC(e,t,r){const s=kn(e.articleNumber);if(s===t)return{score:130,field:"secondary"};if(s.startsWith(t))return{score:80,field:"secondary"};if(s.includes(t))return{score:72,field:"secondary"};const a=kn(e.typ),i=kn(e.name),o=kn(jf(e)),l=kn(kf(e)),d=Ty(e),m=kn([e.articleNumber,e.description,e.category].filter(
78Boolean).join(" ")),p=Mr(r,t,72);if(p>0)return{score:p+10,field:"variants"};if(vC(t)){for(const w of as(t))if(l&&(l===w||l.includes(w)))return{score:110+w.length,field:"package"};const x=Mr(a,t,70);if(x>0)return{score:x+8,field:"typ"};const b=Mr(i,t,62);if(b>0)return{score:b+4,field:"name"}}if(NC(t)){for(const w of as(t)){if(o&&(o===w||o.startsWith(w)))return{score:115+w.length,field:"value"};if(a.startsWith(w))return{score:100+w.length,field:"typ"};if(i.startsWith(w))return{score:92+w.length,field:"name"}}const x=Mr(a,t,65);if(x>0)return{score:x+6,field:"typ"};const b=Mr(i,t,58);if(b>0)return{score:b+4,field:"name"}}if(jC(t)){const x=Mr(a,t,60);if(x>0)return{score:x+10,field:"typ"};const b=Mr(i,t,55);if(b>0)return{score:b+8,field:"name"};const w=Mr(r,t,52);if(w>0)return{score:w+6,field:"variants"}}return[{score:Mr(a,t,55),field:"typ"},{score:Mr(i,t,50),field:"name"},{score:Mr(o,t,48),field:"value"},{score:Mr(l,t,48),field:"package"},{score:Mr(d,t,35),field:"attributes"},{score:Mr(m,t,18),field:"secondary"}].reduce((x,b)=>b.score>x.score?b:x,{score:0,field:null})}function SC(e,t,r){const s=kn(e.name),a=kn(e.typ),i=kn([jf(e),kf(e)].filter(Boolean).join(" "));return fs(s,t)&&Ko(s)?100:fs(a,t)&&Ko(a)?95:fs(r,t)?90:fs(s,t)?85:fs(a,t)?80:fs(i,t)?75:fs(Ry(e),t)?50:10}function oh(e,t){const r=kn(e),s=kn(t);if(!r||!s)return!1;if(r===s)return!0;const a=as(r),i=as(s);return a.some(o=>i.some(l=>o===l||o.startsWith(l)||l.startsWith(o)))}function AC(e,t){const r=kn(e),s=kn(t);if(!r||!s)return!1;if(r===s)return!0;const a=as(r),i=as(s);return a.some(o=>i.some(l=>o===l))}function lh(e,t){return e?as(t).some(r=>e===r||e.endsWith(r)||e.endsWith(` ${r}`)||e.includes(` ${r} `)||e.includes(`${r} `)):!1}function kc(e,t){if(!t)return 0;const r=$n(t.value),s=$n(t.package),a=wa(t.matchingKey);if(!r&&!s&&!a)return 0;let i=0;a&&(ki(e)===a||Bo(e).includes(a))&&(i+=800);const o=kn(e.name),l=kn(e.typ),d=kn(jf(e)),m=kn(kf(e));r&&(oh(d,r)?i+=220:oh(l,r)?i+=140:as(kn(r)).some(h=>o.startsWith(h))?i+=100:as(kn(r)).some(h=>o.includes(h))&&(i+=60)),s&&(AC(m,s)?i+=220:lh(o,kn(s))?i+=100:lh(l,kn(s))&&(i+=70)),r&&s&&(i>=440?i+=180:i>=200&&(i+=90));const p=Dy([r,s].filter(Boolean).join(" "));return p.length>0&&fs(o,p)&&Ko(o)&&(i+=400),i}function im(e,t,r="",s){const a=kc(e,s);if(t.length===0)return{tier:0,score:0,hintScore:a,variantHits:0,nameHits:0,typHits:0};let i=0,o=0,l=0,d=0;for(const p of t){const h=wC(e,p,r);if(h.score<=0||!h.field)return null;i+=h.score,h.field==="variants"&&(o+=1),h.field==="name"&&(l+=1),h.field==="typ"&&(d+=1)}const m=SC(e,t,r);return o===t.length&&(i+=50),l===t.length&&Ko(kn(e.name))&&(i+=40),d===t.length&&Ko(kn(e.typ))&&(i+=40),{tier:m,score:i+a,hintScore:a,variantHits:o,nameHits:l,typHits:d}}function ed(e,t,r){const s=jc(e);if(r.length===0)return s;const a=t.filter(l=>l.articleId===e.id),i=a.find(l=>fs(kn(l.mpn),r));if(i!=null&&i.mpn&&!s.toLowerCase().includes(i.mpn.toLowerCase()))return`${s} · ${i.mpn}`;const o=a.find(l=>{const d=kn([l.mpn,l.description].filter(Boolean).join(" "));return fs(d,r)});return o!=null&&o.mpn&&!s.toLowerCase().includes(o.mpn.toLowerCase())?`${s} · ${o.mpn}`:s}function Oy(e){return!!(e!=null&&e.id)}function cl(e,t,r){const s=(r==null?void 0:r.limit)??hC,a=r==null?void 0:r.hint,i=Py((r==null?void 0:r.variants)??[]),o=e.filter(Oy),{include:l,exclude:d}=zi(t);if(l.length===0){const p=o.filter(h=>!am(h,d,i.get(h.id)??""));if(a&&($n(a.value)||$n(a.package)||$n(a.matchingKey))){const h=p.map(x=>({article:x,hintScore:kc(x,a)})).filter(x=>x.hintScore>0).sort((x,b)=>b.hintScore!==x.hintScore?b.hintScore-x.hintScore:wo(x.article,b.article));if(h.length>0)return h.slice(0,s).map(x=>x.article)}return[...p].sort(wo).slice(0,s)}const m=[];for(const p of o){const h=i.get(p.id)??"";if(am(p,d,h))continue;const x=im(p,l,h,a);x&&m.push({article:p,rank:x})}return m.sort((p,h)=>a&&h.rank.hintScore!==p.rank.hintScore?h.rank.hintScore-p.rank.hintScore:h.rank.tier!==p.rank.tier?h.rank.tier-p.rank.tier:h.rank.score!==p.rank.score?h.rank.score-p.rank.score:h.rank.variantHits!==p.rank.variantHits?h.rank.variantHits-p.rank.variantHits:h.rank.nameHits!==p.rank.nameHits?h.rank.nameHits-p.rank.nameHits:h.rank.typHits!==p.rank.typHits?h.rank.typHits-p.rank.typHits:wo(p.article,h.article)),m.slice(0,s).map(p=>p.article)}const CC={RAW_MATERIAL:"Rohstoffe",TRADED_GOOD:"Handelswaren",SUBASSEMBLY:"Baugruppen",FINISHED_GOOD:"Endprodukte",SERVICE:"Dienstleistungen"};function _C(e){return`Alle ${CC[e]} anzeigen`}function IC(e){const t=new Map;for(const r of e)r.itemType&&t.set(r.itemType,(t.get(r.itemType)??0)+1);return Zc.filter(r=>(t.get(r)??0)>0)}function EC(e,t,r=120){return e.filter(s=>s.itemType===t).sort(wo).slice(0,r)}const PC=75;function TC(e,t,r){const s=r==null?void 0:r.limit,a=r==null?void 0:r.hint,i=Py((r==null?void 0:r.variants)??[]),o=e.filter(Oy),{include:l,exclude:
78d}=zi(t),m=new Map;if(l.length===0){const v=cl(e,t,r);for(const S of v)m.set(S.id,im(S,l,i.get(S.id)??"",a)??{tier:0,score:kc(S,a),hintScore:kc(S,a),variantHits:0,nameHits:0,typHits:0});return{relevant:v,irrelevant:[],ranks:m}}const p=[];for(const v of o){const S=i.get(v.id)??"";if(am(v,d,S))continue;const R=im(v,l,S,a);R&&(p.push({article:v,rank:R}),m.set(v.id,R))}p.sort((v,S)=>a&&S.rank.hintScore!==v.rank.hintScore?S.rank.hintScore-v.rank.hintScore:S.rank.tier!==v.rank.tier?S.rank.tier-v.rank.tier:S.rank.score!==v.rank.score?S.rank.score-v.rank.score:wo(v.article,S.article));const h=[],x=[];for(const v of p)(v.rank.tier>=PC?h:x).push(v.article);const b=[...h,...x].slice(0,s),w=new Set(h.map(v=>v.id));return{relevant:b.filter(v=>w.has(v.id)),irrelevant:b.filter(v=>!w.has(v.id)),ranks:m}}function DC(e){const t=$n(e.articleNumber)||$n(e.referenceKey),r=$n(e.shopwareProductNumber),s=$n(e.mpn),a=(e.sourcings??[]).map(i=>$n(i.supplierArticleNumber)).filter(Boolean).join(" ");return{id:e.id,articleNumber:t,name:$n(e.name),description:$n(e.description),category:$n(e.category)||$n(e.categoryId)||$n(e.referenceKey),itemType:e.itemType??"RAW_MATERIAL",typ:$n(e.typ)||$n(e.manufacturer),price:0,stock:null,unit:"Stk",attributes:{...e.attributes??e.properties??{},...s?{mpn:s}:{},...r?{shopwareProductNumber:r}:{},...a?{supplierPartNumbers:a}:{}},activeRevision:null,supplierParts:[]}}function Ly(e,t,r){const s=(r==null?void 0:r.limit)??Si,a=cl(e.map(DC),t,{limit:s}),i=new Map(e.map(o=>[o.id,o]));return a.map(o=>i.get(o.id)).filter(o=>!!o)}function RC(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function MC(e,t,r){let s=0,a=0,i=e.length;for(let o=0;o<e.length;o+=1){const l=e[o],d=o>0?e[o-1]:"";if(!(/[a-zäöüõ]/i.test(l)&&l.toLowerCase()===d.toLowerCase())){if(s===t&&(a=o),s===t+r-1){for(i=o+1;i<e.length&&e[i].toLowerCase()===l.toLowerCase();)i+=1;break}s+=1}}return[a,i]}function OC(e,t){if(!e||t.length===0)return[];const r=[];for(const a of t)for(const i of as(a)){if(i.length<wi)continue;const o=new RegExp(RC(i),"gi");let l,d=!1;for(;(l=o.exec(e))!==null;)r.push([l.index,l.index+l[0].length]),d=!0,l[0].length===0&&(o.lastIndex+=1);if(d)continue;const m=Ai(i);if(m.length<wi)continue;const h=Ai(e.toLowerCase()).indexOf(m);h!==-1&&r.push(MC(e,h,m.length))}if(r.length===0)return[];r.sort((a,i)=>a[0]-i[0]||a[1]-i[1]);const s=[r[0]];for(let a=1;a<r.length;a+=1){const i=r[a],o=s[s.length-1];i[0]<=o[1]?o[1]=Math.max(o[1],i[1]):s.push(i)}return s}function LC(e,t){if(!e)return[{text:"",bold:!1}];const r=OC(e,t);if(r.length===0)return[{text:e,bold:!1}];const s=[];let a=0;for(const[i,o]of r)a<i&&s.push({text:e.slice(a,i),bold:!1}),s.push({text:e.slice(i,o),bold:!0}),a=o;return a<e.length&&s.push({text:e.slice(a),bold:!1}),s}const zC=["lcsc","jlc","jlc/lcsc","jlc pcba","jlc/lcsc"],BC=/^C\d{3,}$/i;function Zr(e){const t=e.trim().toLowerCase();if(!t)return null;if($s.hasConnector(t))return"lcsc";for(const r of zC)if(t===r||t.includes(r))return $s.hasConnector("lcsc")?"lcsc":null;return null}function Sf(e){return e==="lcsc"?"LCSC / JLC":e.toUpperCase()}function zy(e){const t=Vo(e);return!t||!$s.hasConnector(t)?!1:t==="lcsc"?!0:e.apiEnabled!==!1}function Vo(e){const t=(e.apiConnectorId??"").trim().toLowerCase();return t&&$s.hasConnector(t)?t==="jlc"||t.startsWith("jlc")?"lcsc":t:Zr(e.name)}function FC(e,t){const r=(t??"").trim().toLowerCase();if(r)return e.find(s=>s.name.trim().toLowerCase()===r)}function $C(e,t){const r=FC(e,t);if(r)return r;const s=(t??"").trim().toLowerCase(),a=Zr(s);if(a)return e.find(i=>Vo(i)===a)}function KC(e,t){const r=$C(t,e==null?void 0:e.supplierName);if(r&&zy(r)){const a=Vo(r);if(a)return{connectorId:a,supplier:r}}const s=Zr((e==null?void 0:e.supplierName)??(r==null?void 0:r.name)??"");if(s)return{connectorId:s,supplier:r};if(r){const a=Vo(r);if(a&&$s.hasConnector(a))return{connectorId:a,supplier:r}}return null}function VC(e){return e.find(t=>Vo(t)==="lcsc")}function By(e,t){var d,m,p;const r=e.sourcings??[],s=[...r.filter(h=>h.isDefault),...r.filter(h=>!h.isDefault)],a=[];for(const h of s){const x=((d=h.supplierArticleNumber)==null?void 0:d.trim())||((m=e.mpn)==null?void 0:m.trim())||"";if(!x)continue;const b=KC(h,t);b&&a.push({connectorId:b.connectorId,partNumber:x,supplier:b.supplier})}const i=a.find(h=>
78h.connectorId==="lcsc");if(i)return i;if(a[0])return a[0];const o=((p=e.mpn)==null?void 0:p.trim())||"";if(!o)return null;const l=VC(t);return l||BC.test(o)?{connectorId:"lcsc",partNumber:o,supplier:l}:null}function qC(e){var r,s;const t=(r=e.attributes)==null?void 0:r.mpn;return typeof t=="string"&&t.trim()?t.trim():((s=e.typ)==null?void 0:s.trim())??""}function Fy(e,t){const r=e.supplierParts??[];return By({mpn:qC(e),sourcings:r.map(s=>({supplierName:s.supplierName,supplierArticleNumber:s.partNumber,isDefault:s.isPrimary}))},t)}const wc=4;function ia(e,t){return{price:0,stock:0,currency:"USD",status:e,message:t}}async function UC(e,t,r){const s=r(e,t);if(!s)return ia("skip","Lieferanten-API nicht aktiv");const a=await $s.fetchPartData(s.connectorId,s.partNumber);return a.status==="error"?{...ia("error"),message:a.message??"Abfrage fehlgeschlagen"}:{price:a.price,stock:a.stock,currency:a.currency,status:"ok"}}function WC(e,t,r){return Ky(e,t,r,By)}function $y(e,t){const[r,s]=u.useState(()=>new Map),a=u.useRef(0),i=u.useRef(new Map),o=u.useRef(e);o.current=e;const l=e.map(d=>`${d.id}:${d.partNumber}`).join("|");return u.useEffect(()=>{if(!t)return;const d=++a.current,m=o.current;s(x=>{const b=new Map;for(const w of m)!Zr(w.supplierName)||!w.partNumber.trim()?b.set(w.id,ia("skip")):b.set(w.id,i.current.get(w.id)??x.get(w.id)??ia("idle"));return b});const p=m.filter(x=>!Zr(x.supplierName)||!x.partNumber.trim()?!1:!i.current.has(x.id));if(p.length===0)return()=>{a.current+=1};async function h(){for(let x=0;x<p.length;x+=wc){if(a.current!==d)return;const b=p.slice(x,x+wc);s(v=>{const S=new Map(v);for(const R of b)S.set(R.id,ia("loading"));return S});const w=await Promise.all(b.map(async v=>{const S=Zr(v.supplierName),R=await $s.fetchPartData(S,v.partNumber);return R.status==="error"?{id:v.id,quote:{...ia("error"),message:R.message??"Fehler"}}:{id:v.id,quote:{price:R.price,stock:R.stock,currency:R.currency,status:"ok"}}}));if(a.current!==d)return;for(const{id:v,quote:S}of w)i.current.set(v,S);s(v=>{const S=new Map(v);for(const{id:R,quote:E}of w)S.set(R,E);return S})}}return h(),()=>{a.current+=1}},[t,l]),r}function HC(e,t,r){return Ky(e,t,r,Fy)}function Ky(e,t,r,s){const[a,i]=u.useState(()=>new Map),o=u.useRef(0),l=u.useRef(new Map),d=u.useRef(new Map),m=u.useRef(e),p=u.useRef(t);m.current=e,p.current=t;const h=e.map(b=>b.id).join("|"),x=t.map(b=>`${b.id}:${b.apiEnabled}:${b.apiConnectorId??""}`).join("|");return u.useEffect(()=>{if(!r)return;const b=++o.current,w=m.current,v=p.current;i(E=>{const A=new Map;for(const I of w){const C=l.current.get(I.id);A.set(I.id,C??E.get(I.id)??ia("idle"))}return A});const S=w.filter(E=>{const A=s(E,v),I=A?`${E.id}:${A.connectorId}:${A.partNumber}`:`${E.id}:skip`;return d.current.get(E.id)!==I?(l.current.delete(E.id),d.current.set(E.id,I),!0):!l.current.has(E.id)});if(S.length===0)return()=>{o.current+=1};async function R(){for(let E=0;E<S.length;E+=wc){if(o.current!==b)return;const A=S.slice(E,E+wc);i(C=>{const k=new Map(C);for(const j of A)k.set(j.id,ia("loading"));return k});const I=await Promise.all(A.map(async C=>({id:C.id,quote:await UC(C,v,s)})));if(o.current!==b)return;for(const{id:C,quote:k}of I)l.current.set(C,k);i(C=>{const k=new Map(C);for(const{id:j,quote:z}of I)k.set(j,z);return k})}}return R(),()=>{o.current+=1}},[r,h,x,s]),a}const ZC=440;function GC(){return Yc()}function YC(e){var t;return((t=e.unit)==null?void 0:t.trim())||"Stk"}function Vy(e,t){return t==null||t<=0||e==null?!1:e<t}function JC(e){var r,s;const t=(s=(r=e.supplier)==null?void 0:r.name)==null?void 0:s.trim();if(t){const a=t.split(/\s+/)[0];if(a)return a}return Sf(e.connectorId)}function td({text:e,tokens:t,className:r}){const s=u.useMemo(()=>LC(e,t),[e,t]);return n.jsx("span",{className:r,children:s.map((a,i)=>a.bold?n.jsx("strong",{className:"font-semibold text-foreground",children:a.text},i):n.jsx("span",{children:a.text},i))})}function QC({article:e,requiredQuantity:t,className:r}){if(!Na(e.itemType)||e.stock==null)return null;const s=Vy(e.stock,t),a=YC(e);return n.jsxs("span",{className:ye("whitespace-nowrap tabular-nums",s?"font-medium text-amber-600 dar
78k:text-amber-500":"text-muted-foreground",r),title:`Lager: ${e.stock} ${a}`,children:["Lager ",e.stock," ",a]})}function Af({target:e,quote:t,requiredQuantity:r,className:s}){const a=JC(e);if((t==null?void 0:t.status)==="loading"||(t==null?void 0:t.status)==="idle")return n.jsxs("span",{className:ye("inline-flex items-center gap-1 text-muted-foreground",s),children:[n.jsx(Me,{className:"size-2.5 animate-spin"}),n.jsx("span",{className:"truncate",children:a})]});if((t==null?void 0:t.status)==="error")return n.jsxs("span",{className:ye("text-destructive",s),title:t.message??"Abfrage fehlgeschlagen",children:[a," !"]});if((t==null?void 0:t.status)!=="ok")return null;const i=Vy(t.stock,r),o=t.price>0?`${t.price.toFixed(4)} ${t.currency}`:null;return n.jsxs("span",{className:ye("inline-flex items-center gap-1 whitespace-nowrap tabular-nums",i?"font-medium text-amber-600 dark:text-amber-500":"text-muted-foreground",s),title:`${a}: ${t.stock} verfügbar${o?` · ${o}`:""}`,children:[n.jsxs("span",{children:[a," ",t.stock]}),o?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"text-muted-foreground/40","aria-hidden":!0,children:"·"}),n.jsx("span",{children:o})]}):null]})}function Sc({article:e,suppliers:t,liveQuote:r,requiredQuantity:s,className:a}){const i=u.useMemo(()=>Fy(e,t),[e,t]),o=n.jsx(QC,{article:e,requiredQuantity:s,className:a}),l=i!=null?n.jsx(Af,{target:i,quote:r,requiredQuantity:s,className:a}):null;return!o&&!l?null:n.jsxs("span",{className:ye("inline-flex shrink-0 items-center gap-1 leading-tight",a),children:[o,o&&l?n.jsx("span",{className:"text-muted-foreground/40","aria-hidden":!0,children:"·"}):null,l]})}function nd({article:e,label:t,searchTokens:r,suppliers:s,liveQuote:a,supplierPartQuotes:i,requiredQuantity:o,onPick:l,onPickWithPart:d}){const m=e.supplierParts??[];return m.length>0&&d?n.jsx(n.Fragment,{children:m.map(p=>{const h=Zr(p.supplierName),x=h?{connectorId:h,partNumber:p.partNumber}:null,b=i==null?void 0:i.get(p.id);return n.jsxs("button",{type:"button",className:"flex w-full flex-col gap-0.5 px-3 py-2 text-left hover:bg-accent",onMouseDown:w=>w.preventDefault(),onClick:()=>d(p.id,p.partNumber),children:[n.jsxs("div",{className:"flex min-w-0 w-full items-center gap-2 leading-tight",children:[n.jsx("span",{className:"font-mono text-xs font-semibold text-foreground",children:n.jsx(td,{text:p.partNumber,tokens:r})}),p.supplierName?n.jsx("span",{className:"text-[11px] text-muted-foreground/60",children:p.supplierName}):null,n.jsx("span",{className:"ml-auto shrink-0",children:x?n.jsx(Af,{target:x,quote:b,requiredQuantity:o,className:"text-[10px]"}):n.jsx(Sc,{article:e,suppliers:s,liveQuote:a,requiredQuantity:o,className:"text-[10px]"})})]}),n.jsx("div",{className:"truncate text-[11px] leading-tight text-muted-foreground",children:n.jsx(td,{text:t,tokens:r})})]},p.id)})}):n.jsxs("button",{type:"button",className:"flex w-full items-start gap-2 px-3 py-2 text-left hover:bg-accent",onMouseDown:p=>p.preventDefault(),onClick:l,children:[n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("span",{className:"line-clamp-2 text-xs font-medium leading-snug text-muted-foreground",children:n.jsx(td,{text:t,tokens:r})}),n.jsx("span",{className:"font-mono text-[11px] font-medium text-muted-foreground",children:e.articleNumber})]}),n.jsx(Sc,{article:e,suppliers:s,liveQuote:a,requiredQuantity:o,className:"pt-0.5 text-[10px]"})]})}function Ci({articles:e,value:t,supplierPartValue:r,onSelect:s,onSelectWithPart:a,placeholder:i="Artikel suchen ⦠(Teilwort, -wort / NOT)",disabled:o,className:l,searchHint:d,requiredQuantity:m,onCreateArticle:p,onMarkDoNotPlace:h,creatingArticle:x=!1,scrollContainerRef:b,onOpenChange:w,twoLine:v=!1}){var Le,rt,lt,Tt,vt;const{suppliers:S}=Mn(),[R,E]=u.useState(""),[A,I]=u.useState(!1),[C,k]=u.useState(null),[j,z]=u.useState([]),D=u.useRef(null),B=u.useRef(null),T=Pe=>{I(Pe),w==null||w(Pe)};u.useEffect(()=>{if(!A||o)return;const Pe=window.requestAnimationFrame(()=>{var yt;const it=B.current??((yt=D.current)==null?void 0:yt.querySelector("input:not([disabled])"));it==null||it.focus()});return()=>window.cancelAnimationFrame(Pe)},[o,A]),u.useEffect(()=>{j.length>0||GC().then(z)},[j.length]),u.useEffect(()=>{A||k(null)},[A]),u.useEffect(()=>{k(null)},[R]),u.useEffect(()=>{const Pe=b==null?void 0:b.current;if(!Pe||!A)return;const it=()=>T(!1);return Pe.addEventListener("scroll",it,{passive:!0}),()=>Pe.removeEventListener("scroll",it)},[A,b]);const P=e.find(Pe=>Pe.id===t),G=P?jc(P):"",W=P?r?((Le=P.supplierParts)==null?void 0:Le.find(Pe=>Pe.id===r))??((rt=P.supplierParts)==null?void 0:rt.find(Pe=>Pe.isPrimary))??((lt=P.supplierParts)==null?void 0:lt[0]):((Tt=P.supplierParts)==null?void 0:Tt.find(Pe=>Pe.isPrimary))??((vt=P.supplierParts)==null?void 0:vt[0]):void 0,ke=u.useMemo(()=>Dy(R),[R]),L=u.useMemo(()=>TC(e,R,{variants:j,hint:d,limit:Si}),[e,R,j,d]),xe=u.useMemo(()=>IC(e),[e]),Y=u.useMemo(()=>C?EC(e,C):[],[e,C]),Ne=u.useMemo(()=>C?Y:[...L.relevant,...L.irrelevant],[Y,C,L.irrelevant,L.relevant]),se=u.useMemo(()=>A?Ne:P?[P]:[],[Ne,A,P]),J=HC(se,S,se.length>0),Q=u.useMemo(()=>{const Pe=new Set,it=[],yt=wt=>{!Pe.has(wt.id)&&wt.partNumber.trim()&&(Pe.add(wt.id),it.push({id:wt.id,supplierName:wt.supplierName,partNumber:wt.partNumber}))};if(A)for(const wt of Ne)for(const an of wt.supplierParts??[])yt(an);return W&&yt({id:W.id,supplierName:W.supplierName,partNumber:W.partNumber}),it},[Ne,A,W]),U=$y(Q,Q.length>0),ne=u.useMemo(()=>[d==null?void 0:d.value,d==null?void 0:d.package].filter(it=>!!(it!=null&&it.trim())).join(" ").trim(),[d==null?void 0:d.package,d==null?void 0:d.value]),H=Pe=>{var it;return Pe instanceof Node&&((it=D.current)==null?void 0:it.contains(Pe))},Z=Pe=>{H(Pe.target)&&(Pe.preventDefault(),window.requestAnimationFrame(()=>{var yt;const it=B.current??((yt=D.current)==null?void 0:yt.querySelector("input:not([disabled])"));it==null||it.focus()}))},K=()=>{o||(E(ne),k(null),T(!0))},me=Pe=>{s(Pe),E(""),k(null),T(!1)},$=(Pe,it,yt)=>{a?a(Pe,it,yt):s(Pe),E(""),k(null),T(!1)},X=v&&!!P,Ie=!v&&!!P&&!A,V=!P||A&&!v&&!!P,Se=Pe=>{o||(Pe.preventDefault(),A?T(!1):K())},Ce=xe.length>0||!!p||!!h,Be=n.jsxs("div",{className:"relative",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2 top-1/2 z-10 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{ref:B,value:R,onChange:Pe=>{E(Pe.target.value),T(!0)},onFocus:()=>T(!0),onPointerDown:Pe=>Pe.stopPropagation(),placeholder:i,className:"h-8 w-full min-w-0 pl-8 text-xs",disabled:o,autoComplete:"off",autoFocus:!0})]});return n.jsxs(vg,{open:A&&!o,onOpenChange:Pe=>{o||T(Pe)},children:[n.jsx(Kv,{asChild:!0,children:n.jsxs("div",{ref:D,className:ye("relative w-full min-w-0",l),children:[V?n.jsx(Er,{className:"pointer-events-none absolute left-2 top-1/2 z-10 size-3.5 -translate-y-1/2 text-muted-foreground"}):null,X&&P?n.jsxs("button",{type:"button",className:ye("relative flex w-full min-w-0 flex-col gap-0.5 rounded-md border border-input bg-background py-1.5 pl-2 pr-8 text-left shadow-xs","hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",A&&"ring-2 ring-ring",o&&"cursor-not-allowed opacity-50"),onPointerDown:Se,disabled:o,"aria-expanded":A,"aria-haspopup":"listbox","aria-label":`${G}${W?` (${W.partNumber})`:""}`,children:[n.jsx("span",{className:"block min-w-0 truncate text-xs font-semibold leading-tight text-foreground",title:G,children:G}),n.jsxs("div",{className:"flex min-w-0 items-center gap-1.5 leading-tight",children:[n.jsx("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",title:(W==null?void 0:W.partNumber)??P.articleNumber,children:(W==null?void 0:W.partNumber)??P.articleNumber}),W&&Zr(W.supplierName)?n.jsx(Af,{target:{connectorId:Zr(W.supplierName),partNumber:W.partNumber},quote:U.get(W.id),requiredQuantity:m,className:"ml-auto shrink-0 text-[10px]"}
78):n.jsx(Sc,{article:P,suppliers:S,liveQuote:J.get(P.id),requiredQuantity:m,className:"ml-auto shrink-0 text-[10px]"})]}),n.jsx(Yo,{className:ye("pointer-events-none absolute right-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground transition-transform",A&&"rotate-180"),"aria-hidden":!0})]}):Ie&&P?n.jsxs("button",{type:"button",className:ye("flex h-8 w-full min-w-0 items-center gap-2 rounded-md border border-input bg-background py-1 pl-2 pr-2 text-left shadow-xs","hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",o&&"cursor-not-allowed opacity-50"),onPointerDown:Se,disabled:o,"aria-label":`${P.articleNumber} â ${G}`,children:[n.jsx("span",{className:"shrink-0 font-mono text-xs font-semibold text-foreground",children:P.articleNumber}),n.jsx("span",{className:"min-w-0 truncate text-[11px] text-muted-foreground",children:G}),n.jsx(Sc,{article:P,suppliers:S,liveQuote:J.get(P.id),requiredQuantity:m,className:"ml-auto text-[10px]"})]}):n.jsx(Ze,{ref:B,value:R,onChange:Pe=>{E(Pe.target.value),T(!0)},onFocus:()=>T(!0),onPointerDown:Pe=>Pe.stopPropagation(),placeholder:i,className:"h-8 w-full min-w-0 pl-8 text-xs",disabled:o,autoComplete:"off"})]})}),n.jsx(Ng,{align:"end",side:"bottom",sideOffset:4,collisionPadding:12,className:"z-[200] p-0",style:{width:ZC,maxWidth:"min(92vw, 520px)"},onOpenAutoFocus:Pe=>Pe.preventDefault(),onCloseAutoFocus:Pe=>Pe.preventDefault(),onFocusOutside:Z,onPointerDownOutside:Z,children:n.jsxs("div",{className:ye("flex flex-col",cu(Ne.length)),children:[X&&A?n.jsx("div",{className:"shrink-0 border-b border-border/60 p-2",children:Be}):null,n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",onWheel:Pe=>Pe.stopPropagation(),children:C?Ne.length===0?n.jsx("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"Keine Artikel in dieser Gruppe."}):Ne.map(Pe=>{const it=ed(Pe,j,ke);return n.jsx(nd,{article:Pe,label:it,searchTokens:ke,suppliers:S,liveQuote:J.get(Pe.id),supplierPartQuotes:U,requiredQuantity:m,onPick:()=>me(Pe.id),onPickWithPart:a?(yt,wt)=>$(Pe.id,yt,wt):void 0},Pe.id)}):L.relevant.length===0&&L.irrelevant.length===0&&!Ce?n.jsx("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"Keine Treffer"}):L.relevant.length===0&&L.irrelevant.length===0?n.jsx("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"Keine Treffer â unten nach Artikelart filtern oder neu anlegen."}):n.jsxs(n.Fragment,{children:[L.relevant.map(Pe=>{const it=ed(Pe,j,ke);return n.jsx(nd,{article:Pe,label:it,searchTokens:ke,suppliers:S,liveQuote:J.get(Pe.id),supplierPartQuotes:U,requiredQuantity:m,onPick:()=>me(Pe.id),onPickWithPart:a?(yt,wt)=>$(Pe.id,yt,wt):void 0},Pe.id)}),L.irrelevant.length>0?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"border-t border-border/60 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Weniger relevant"}),L.irrelevant.map(Pe=>{const it=ed(Pe,j,ke);return n.jsx(nd,{article:Pe,label:it,searchTokens:ke,suppliers:S,liveQuote:J.get(Pe.id),supplierPartQuotes:U,requiredQuantity:m,onPick:()=>me(Pe.id),onPickWithPart:a?(yt,wt)=>$(Pe.id,yt,wt):void 0},Pe.id)})]}):null]})}),Ce?n.jsxs("div",{className:"shrink-0 border-t border-border/60 bg-muted/10",children:[xe.map(Pe=>n.jsx("button",{type:"button",className:ye("flex w-full items-center px-3 py-2 text-left text-xs hover:bg-accent",C===Pe?"bg-accent/70 font-medium text-foreground":"text-muted-foreground"),onMouseDown:it=>it.preventDefault(),onClick:()=>{k(Pe),E("")},children:_C(Pe)},Pe)),h?n.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 border-t border-border/60 px-3 py-2.5 text-left text-xs text-muted-foreground hover:bg-accent hover:text-foreground",disabled:o,onMouseDown:Pe=>Pe.preventDefault(),onClick:()=>{h==null||h(),E(""),k(null),T(!1)},children:[n.jsx("span",{className:"shrink-0 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium text-foreground",children:"DNP"}),n.jsxs("span",{children:["Nicht bestücken"," ",n.jsx("span",{className:"text-muted-foreground/60",children:"(Do Not Place)"})]})]}):null,p?n.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 border-t border-border/60 px-3 py-2.5 text-left text-xs font-medium text-primary hover:bg-accent",disabled:x||o,onMouseDown:Pe=>Pe.preventDefault(),onClick:()=>{p==null||p(),E(""),k(null),T(!1)},children:[x?n.jsx(Me,{className:"size-3.5 shrink-0 animate-spin"}):n.jsx(Gn,{className:"size-3.5 shrink-0"}),"Neuer Artikel"]}):null]}):null]})})]})}function XC({open:e,onOpenChange:t,target:r,assemblyArticleId:s,revisionId:a,catalogArticles:i,typeConfigs:o,onResolved:l}){const[d,m]=u.useState(!1),[p,h]=u.useState(!1),[x,b]=u.useState([]),[w,v]=u.useState(null),[S,R]=u.useState(""),E=r?pC(r.value,r.package):"";u.useEffect(()=>{if(!e||!r){b([]),v(null),R("");return}let k=!1;return m(!0),ww({value:r.value??"",package:r.package??"",mpn:r.mpn??""}).then(j=>{k||b(j)}).catch(()=>{k||M.error("Vorschläge konnten nicht geladen werden.")}).finally(()=>{k||m(!1)}),()=>{k=!0}},[e,r]);const A=u.useCallback(async k=>
78{if(r){h(!0);try{await Fd(s,a,r.bomLineId),await Bd(s,a,{articleId:k,quantity:r.quantity,referenceDesignator:r.refDes??"",value:r.value??"",package:r.package??""}),M.success("Stücklistenposition mit Artikelstamm verknüpft."),t(!1),await l()}catch{M.error("Verknüpfung fehlgeschlagen.")}finally{h(!1)}}},[s,t,l,a,r]),I=u.useCallback(async()=>{if(!r||!S){M.error("Bitte eine Warengruppe wählen.");return}h(!0);try{const k=o.find(j=>j.id===S);await Jm(r.childArticleId,{category:S,workflowStatus:"DRAFT",attributes:{isGhost:!1},name:E}),M.success(k?`Platzhalter vervollständigt (${k.name}).`:"Platzhalter vervollständigt."),t(!1),await l()}catch{M.error("Vervollständigung fehlgeschlagen.")}finally{h(!1)}},[E,t,l,S,r,o]),C=()=>{if(!w){M.error("Bitte einen Artikel auswählen.");return}A(w)};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-w-lg",children:[n.jsx(Tn,{children:n.jsxs(Dn,{className:"flex items-center gap-2",children:[n.jsx(ks,{className:"size-4 text-destructive"}),"Platzhalter-Bauteil vervollständigen"]})}),r?n.jsxs("div",{className:"space-y-4",children:[n.jsxs("p",{className:"text-sm text-muted-foreground",children:[n.jsx("span",{className:"font-medium text-foreground",children:E}),r.refDes?` (${r.refDes})`:""," â kein vollständiger Stammdatensatz. Wählen Sie einen passenden Artikel oder vervollständigen Sie den Platzhalter."]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs(ze,{className:"flex items-center gap-1.5 text-xs",children:[n.jsx(Bs,{className:"size-3.5"}),"Vorschläge aus dem Artikelstamm"]}),d?n.jsxs("div",{className:"flex items-center gap-2 py-3 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Vorschläge werden geladen â¦"]}):x.length===0?n.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine automatischen Treffer."}):n.jsx("ul",{className:"max-h-40 space-y-1 overflow-y-auto rounded-lg border border-border p-2",children:x.map(k=>n.jsx("li",{children:n.jsxs("button",{type:"button",disabled:p,className:ye("flex w-full items-center justify-between rounded-md px-2 py-1.5 text-left text-xs hover:bg-accent",w===k.articleId&&"bg-accent"),onClick:()=>v(k.articleId),children:[n.jsxs("span",{children:[n.jsx("span",{className:"font-medium",children:k.name}),n.jsx("span",{className:"ml-2 font-mono text-muted-foreground",children:k.articleNumber})]}),n.jsxs("span",{className:"text-[10px] text-muted-foreground",children:[Math.round(k.confidence*100),"%"]})]})},k.articleId))})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Manuelle Suche"}),n.jsx(Ci,{articles:i,value:w,onSelect:v,placeholder:"Artikel im Stamm suchen â¦",disabled:p})]}),n.jsxs("div",{className:"rounded-lg border border-dashed border-border p-3 space-y-2",children:[n.jsx("p",{className:"text-xs font-medium",children:"Alternativ: Platzhalter vervollständigen"}),n.jsxs("select",{className:"h-8 w-full rounded-md border border-input bg-background px-2 text-xs",value:S,onChange:k=>R(k.target.value),disabled:p,children:[n.jsx("option",{value:"",children:"Warengruppe wählen â¦"}),o.map(k=>n.jsx("option",{value:k.id,children:k.name},k.id))]})]})]}):null,n.jsxs(Xn,{className:"gap-2 sm:gap-0",children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:p,children:"Abbrechen"}),S?n.jsxs(ee,{type:"button",onClick:()=>void I(),disabled:p,children:[p?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(gi,{className:"size-4"}),"Platzhalter vervollständigen"]}):n.jsx(ee,{type:"button",onClick:C,disabled:p||!w,children:p?n.jsx(Me,{className:"size-4 animate-spin"}):"Artikel verknüpfen"})]})]})})}const qy="lia-filter-prefs:";function Uy(e,t,r){try{const s=localStorage.getItem(`${qy}${e}`);if(!s)return t;const a=JSON.parse(s);return r?r(a):{...t,...a}}catch{return t}}function Cf(e,t){try{localStorage.setItem(`${qy}${e}`,JSON.stringify(t))}catch{}}const Yl="production-workspace",e1=new Set(["status","name","mpn","package","quantity","articleNumber","warengruppe"]),Wy={stuecklisteView:"kompakt",density:"compact",bomFilterQuery:"",importStagingFilterQuery:"",importStagingViewMode:"bom",importStagingSortKey:"name",importStagingSortDir:"asc"};function t1(e){return e==="fertigung"||e==="manufacturing"?"fert
78igung":"kompakt"}function om(e){return{stuecklisteView:t1(e.stuecklisteView),density:e.density==="comfortable"?"comfortable":"compact",bomFilterQuery:typeof e.bomFilterQuery=="string"?e.bomFilterQuery:"",importStagingFilterQuery:typeof e.importStagingFilterQuery=="string"?e.importStagingFilterQuery:"",importStagingViewMode:e.importStagingViewMode==="designators"?"designators":"bom",importStagingSortKey:e1.has(e.importStagingSortKey)?e.importStagingSortKey:Wy.importStagingSortKey,importStagingSortDir:e.importStagingSortDir==="desc"?"desc":"asc"}}function n1(){try{const e=localStorage.getItem("production-workspace-prefs")??sessionStorage.getItem("production-workspace-prefs");return e?JSON.parse(e):null}catch{return null}}function Ur(){const e=Uy(Yl,Wy,om),t=n1();if(!t)return e;const r=om({...t,...e});return t&&!localStorage.getItem(`lia-filter-prefs:${Yl}`)&&Cf(Yl,r),r}function uu(e){const t=Ur();Cf(Yl,om({...t,...e}));try{sessionStorage.removeItem("production-workspace-prefs")}catch{}}const rd={id:"internal-stock",async search(e){const t=e.features??{},r=typeof t.sku=="string"&&t.sku||typeof t.mpn=="string"&&t.mpn||typeof t.value=="string"&&t.value||e.positionRef||e.id;return[{id:`internal:${e.id}`,name:String(r),description:"Interner Bestand (FeatureSet)",sku:typeof t.sku=="string"?t.sku:void 0,providerId:"internal-stock",availability:null,attributes:{...t}}]},async resolvePart(e){return{id:e,name:e,sku:e,providerId:"internal-stock"}}};function ch(e){for(const t of["supplierSku","sku","mpn","partNumber","lcscPartNumber"]){const r=e[t];if(typeof r=="string"&&r.trim())return r.trim()}return""}const r1={id:"lcsc",async search(e){const t=ch(e.features)||(e.technicalEquivalents??[]).map(s=>ch(s)).find(Boolean)||"";if(!t)return[];const r=await this.resolvePart(t);return r.id?[r]:[]},async resolvePart(e){const t=e.trim();if(!t)return{id:"",name:"",providerId:"lcsc",availability:null,price:null};try{const r=await tf(t),s=r.lcscPartNumber||r.mpn||t;return{id:s,name:r.manufacturer?`${r.manufacturer} ${s}`:s,description:r.message,sku:s,price:r.status==="ok"?r.price:null,currency:r.currency,availability:r.status==="ok"?r.stock:null,providerId:"lcsc",attributes:{productUrl:r.productUrl,status:r.status}}}catch(r){return{id:t,name:t,sku:t,providerId:"lcsc",availability:null,price:null,description:r instanceof Error?r.message:"Lookup fehlgeschlagen",attributes:{status:"error"}}}}};class s1{constructor(){Rn(this,"providers",new Map);this.register(r1),this.register(rd)}register(t){this.providers.set(t.id,t)}get(t){return this.providers.get(t)}resolveForRequirement(t){const r=t.features??{},s=a1(r);if(s){const a=this.providers.get(s);if(a)return a}return o1(r,t)?this.providers.get("lcsc")??rd:this.providers.get("internal-stock")??rd}}function a1(e){for(const t of["catalogProvider","providerId","provider_id","warengruppe","category"]){const r=e[t];if(typeof r!="string")continue;const s=r.trim().toLowerCase();if(s==="lcsc"||s==="jlc"||s==="electronics"||s==="elektronik")return"lcsc";if(s==="internal"||s==="internal-stock"||s==="lager"||s==="holz")return"internal-stock";if(i1(s))return s}return null}function i1(e){return e==="lcsc"||e==="internal-stock"}function o1(e,t){return[e.supplierSku,e.sku,e.mpn,e.partNumber,e.lcscPartNumber,...(t.technicalEquivalents??[]).flatMap(s=>[s.supplierSku,s.sku,s.mpn,s.partNumber])].some(s=>typeof s=="string"&&/^C\d+$/i.test(s.trim()))}const l1=new s1;function c1(e,t){return e==null?"text-muted-foreground":e<=0?"text-destructive font-medium":e<t?"text-amber-600 dark:text-amber-400 font-medium":"text-emerald-600 dark:text-emerald-400"}function u1(e){var r;if(!e)return null;const t=(r=e.attributes)==null?void 0:r.productUrl;return typeof t=="string"&&t.startsWith("http")?t:null}function d1({requirement:e,candidates:t=[],selected:r,disabled:s,requiredQty:a=1,onSelect:i,onClear:o,onMarkDoNotPlace:l}){const[d,m]=u.useState(!1),[p,h]=u.useState([]),[x,b]=u.useState(!1),[w,v]=u.useState({}),S=u.useMemo(()=>l1.resolveForRequirement(e),[e]),R=u.useMemo(()=>{const D=new Map;for(const B of t)D.set(B.id,B);for(const B of p){const T=D.get(B.id);D.set(B.id,T?{...T,...B,availability:B.availability??T.availability}:B)}return[...D.values()]},[t,p]),E=u.useCallback(async D=>{const B=D.id;v(T=>{var P;return{...T,[B]:{stock:((P=T[B])==null?void 0:P.stock)??D.availability??null,loading:!0}}});try{const T=await S.resolvePart(D.sku||D.id);v(P=>({...P,[B]:{stock:T.availability??null,loading:!1}}))}catch{v(T=>({...T,[B]:{stock:null,loading:!1}}))}},[S]);u.useEffect(()=>{if(!d)return;let D=!1;return b(!0),S.search(e).then(B=>{D||h(B)}).catch(()=>{D||h([])}).finally(()=>{D||b(!1)}),()=>{D=!0}},[d,S,e]),u.useEffect(()=>{if(!(!d||R.length===0))for(const D of R)w[D.id]||E(D)},[E,R,d,w]);const A=R.find(D=>D.isPrimary)??R[0],I=R.find(D=>D.id===(r==null?void 0:r.itemId))??(r?{id:r.itemId,name:r.label||r.sku||r.itemId,sku:r.sku??void 0,providerId:r.providerId}:null),k=((r==null?void 0:r.sku)??"").toUpperCase()==="DNP"?"DNP":(I==null?void 0:I.sku)||(I==null?void 0:I.name)||(r==null?void 0:r.sku)||"â",j=u1(I??void 0);return!s&&(R.length>0||!!l||!!o)?n.jsxs(Dm,{open:d,onOpenChange:m,modal:!1,children:[n.jsx(Rm,{asChild:!0,children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 w-full min-w-0 justify-between gap-1 px-2 font-mono text-[10px]",onPointerDown:D=>D.stopPropagation(),children:[n.jsx("span",{className:"truncate",children:k}),n.jsx(Yo,{className:"size-3 shrink-0 opacity-60"})]})}),n.jsxs(Mm,{align:"start",className:"z-[200] w-64 p-1",collisionPadding:8,onCloseAutoFocus:D=>D.preventDefault(),children:[l?n.jsxs(n.Fragment,{children:[n.jsxs(mi,{className:"flex items-center gap-2 text-xs",onSelect:()=>{l(),m(!1)},children:[n.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium",children:"DNP"}),n.jsx("span",{children:"Nicht bestücken"})]}),n.jsx(tc,{})]}):null,r!=null&&r.itemId&&o&&A?n.jsxs(n.Fragment,{children:[n.jsxs(mi,{className:"flex flex-col items-start gap-0.5 text-xs",onSelect:()=>{o(),m(!1)},children:[n.jsx("span",{className:"font-medium",children:"Standard (Primär)"}),n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:A.sku||A.name})]}),n.jsx(tc,{})]}):null,x?n.jsxs("div",{className:"flex items-center gap-2 px-2 py-1.5 text-[10px] text-muted-foreground",children:[n.jsx(Me,{className:"size-3 animate-spin"}),"Katalog wird abgefragt â¦"]}):null,R.map(D=>{const B=D.id===(r==null?void 0:r.itemId),T=w[D.id],P=(T==null?void 0:T.stock)??D.availability;return n.jsxs(mi,{className:ye("flex flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-xs",B&&"bg-muted"),onSelect:()=>{i(D),m(!1)},children:[n.jsxs("div",{className:"flex w-full items-center justify-between gap-2",children:[n.jsx("span",{className:"font-mono font-medium",children:D.sku||D.name}),D.isPrimary?n.jsx("span",{className:"text-[9px] text-muted-foreground",children:"Primär"}):null]}),n.jsxs("div",{className:"flex w-full items-center justify-between gap-2 text-[10px] text-muted-foreground",children:[n.jsx("span",{className:"truncate",children:D.name}),T!=null&&T.loading?n.jsx(Me,{className:"size-3 animate-spin"}):n.jsx("span",{className:ye("tabular-nums",c1(P,a)),children:P!=null?`Bestand ${P}`:"Bestand â"})]})]},`${D.providerId}:${D.id}`)}),!x&&R.length===0?n.jsx("p",{className:"px-2 py-1.5 text-[10px] text-muted-foreground",children:"Keine Katalogtreffer."}):null]})]}):n.jsxs("div",{className:"flex min-w-0 items-center gap-1",children:[n.jsx("span",{className:"truncate font-mono text-[10px]",children:k}),j?n.jsx("a",{href:j,target:"_blank",rel:"noopener noreferrer",className:"shrink-0 text-muted-foreground hover:text-foreground","aria-label":"Katalog öffnen",children:n.jsx(go,{className:"size-3"})}):null]})}function m1(e,t="lcsc"){return(e??[]).map(r=>({id:r.id,name:r.supplierName?`${r.supplierName} ${r.partNumber}`:r.partNumber,sku:r.partNumber,providerId:t,isPrimary:r.isPrimary,description:r.supplierName}))}function f1(e){const t=PS({...e.features??{},...e.skuHint?{supplierSku:e.skuHint}:{}});return{id:e.id,quantity:e.quantity,features:Object.keys(t).length?t:qx(),positionRef:e.positionRef??void 0}}function p1(e){return{providerId:e.providerId,itemId:e.id,sku:e.sku??e.id,label:e.name}}function h1(e="internal-stock"){return{providerId:e,itemId:"DNP",sku:"DNP",label:"Nicht bestücken"}}function Hy(e){const r={"bg-success":"var(--success)","bg-warning":"var(--warning)","bg-info":"var(--info)","bg-primary":"var(--primary)"}[e];return r?{backgroundColor:r}:void 0}function Zy({label:e,className:t,dotClassName:r,compact:s=!1,title:a}){const i=e,o=Hy(r);
78return s?n.jsx("span",{className:ye("inline-block size-3 shrink-0 rounded-full",r),style:o,title:a??i,"aria-label":i,role:"img"}):n.jsxs("span",{className:ye("inline-flex max-w-full items-center gap-1 rounded-md px-1 py-0.5 text-[9px] font-semibold leading-none",t),title:a??i,children:[n.jsx("span",{className:ye("inline-block size-2 shrink-0 rounded-full",r),style:o,"aria-hidden":!0}),n.jsx("span",{className:"truncate",children:i})]})}function sd({meta:e,count:t}){return t<=0?null:n.jsxs("span",{className:ye("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium",e.className),children:[n.jsx("span",{className:ye("inline-block size-2 rounded-full",e.dotClassName),style:Hy(e.dotClassName),"aria-hidden":!0}),n.jsx("span",{children:e.shortLabel}),n.jsx("span",{className:"tabular-nums opacity-80",children:t})]})}const g1={match_mpn:{label:"Match (MPN)",className:"border-transparent bg-violet-500/15 text-violet-700 dark:text-violet-300"},match_hash:{label:"Match (Hash)",className:"border-transparent bg-amber-500/15 text-amber-800 dark:text-amber-300"},new:{label:"Neu (Auto-Nummer)",className:"border-transparent bg-info/15 text-info"}},uh={label:"Existierend",shortLabel:"Bestand",className:"border-transparent bg-primary/15 text-primary",dotClassName:"bg-primary"},So={match:{shortLabel:"Match",className:"border-transparent bg-success/15 text-success",dotClassName:"bg-success"},conflict:{shortLabel:"Konflikt",className:"border-transparent bg-warning/15 text-warning",dotClassName:"bg-warning"},new:{shortLabel:"Neu",className:"border-transparent bg-info/15 text-info",dotClassName:"bg-info"}},dh={shortLabel:"Offen",className:"border-transparent bg-muted text-muted-foreground",dotClassName:"bg-muted-foreground"};function du(e){return e.importMode==="match_mpn"&&e.deduplicatedExisting||e.importMode==="match_hash"&&e.hashMatchConfirmed?!1:e.matchStatus==="new"&&!e.selectedArticleId&&!e.deduplicatedExisting}function x1(e,t){const r={typeConfigId:t.typeConfigId??e.typeConfigId,typeConfigName:t.typeConfigName??e.typeConfigName,itemTypeDefinitionId:t.itemTypeDefinitionId??e.itemTypeDefinitionId,classificationSource:t.classificationSource,classificationConfidence:t.classificationConfidence,existingTypeConfigId:t.existingTypeConfigId??void 0,existingTypeConfigName:t.existingTypeConfigName??void 0,warengruppeWarning:t.warengruppeWarning??void 0,importMode:t.importMode??e.importMode??"new",hashMatchPrompt:t.hashMatchPrompt??e.hashMatchPrompt,isGhost:t.isGhost??e.isGhost};if(t.importMode==="match_mpn"&&t.matchedArticleId)return{...e,...r,matchStatus:"match",deduplicatedExisting:!0,hashMatchConfirmed:void 0,matchedArticleIds:[t.matchedArticleId],selectedArticleId:t.matchedArticleId,proposedArticleNumber:t.matchedArticleNumber??t.proposedArticleNumber??void 0};if(t.importMode==="match_hash"&&t.matchedArticleId){const s=e.hashMatchConfirmed??!1;return{...e,...r,matchStatus:s?"match":"new",deduplicatedExisting:!1,hashMatchConfirmed:s,matchedArticleIds:[t.matchedArticleId,...e.matchedArticleIds.filter(a=>a!==t.matchedArticleId)],selectedArticleId:s?t.matchedArticleId:e.selectedArticleId,proposedArticleNumber:s?t.matchedArticleNumber??t.proposedArticleNumber??void 0:t.proposedArticleNumber??e.proposedArticleNumber}}return t.deduplicationStatus==="warengruppe_mismatch"?{...e,...r,matchStatus:"new",deduplicatedExisting:!1,proposedArticleNumber:t.proposedArticleNumber??e.proposedArticleNumber,matchedArticleIds:t.matchedArticleId?[t.matchedArticleId,...e.matchedArticleIds.filter(s=>s!==t.matchedArticleId)]:e.matchedArticleIds}:{...e,...r,proposedArticleNumber:t.proposedArticleNumber??e.proposedArticleNumber}}function y1(e,t){const r=new Map(t.map(s=>[s.rowId,s]));return e.map(s=>{const a=r.get(s.id);return a?x1(s,a):s})}async function ad(e,t,r){var l,d;const s=e.filter(m=>m.matchStatus==="new"&&!m.selectedArticleId);if(!s.length)return e;const a=s.length;(l=r==null?void 0:r.onProgress)==null||l.call(r,0,a);const i=await Ix({fallbackTypeConfigId:t,rows:s.map(m=>({rowId:m.id,matchStatus:m.matchStatus,selectedArticleId:m.selectedArticleId,footprint:m.package,value:m.value||m.name,package:m.package,mpn:m.mpn,manufacturer:m.manufacturer,proposedArticleNumber:m.proposedArticleNumber??null,articleNumberManual:m.articleNumberManual??!1}))}),o=y1(e,i);return(d=r==null?void 0:r.onProgress)==null||d.call(r,a,a),o}function b1(e,t){return e.some(r=>du(r)&&!r.isGhost&&!r.typeConfigId&&!t)}function v1(e){return e.filter(t=>{var r;return!!((r=t.warengruppeWarning)!=null&&r.trim())})}function Ml(e){return(e??"").trim().toLowerCase()}function N1(e){const t=new Set,r=[];for(const s of e.replace(/;/g,",").split(",")){const a=s.trim();a&&!t.has(a)&&(t.add(a),r.push(a))}return r}function j1(e,t){return e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})}function k1(e){return[Ml(e.value),Ml(e.mpn),Ml(e.package),Ml(e.manufacturer)].join("|")}
78function w1(e){const t=(e.value||"").trim(),r=(e.package||"").trim();return t&&r?`${t} · ${r}`:t||r||(e.name||"").trim()||"â"}function S1(e,t){const r=t.value!==void 0?t.value:e.value,s=t.package!==void 0?t.package:e.package;return{...e,value:r,package:s}}function A1(e,t,r,s){const a=new Set([t]);if(s==="bom")for(const i of _f(e,t))a.add(i);return e.map(i=>a.has(i.id)?S1(i,r):i)}function mu(e){const t=new Map;for(const r of e){const s=k1(r),a=t.get(s)??[];a.push(r),t.set(s,a)}return[...t.entries()].map(([r,s])=>{const a=new Set;let i=0;for(const l of s){i+=l.quantity;for(const d of N1(l.refDes??""))a.add(d)}const o=s.find(l=>l.selectedArticleId)??s.find(l=>l.matchStatus==="match")??s[0];return{key:r,rows:s,name:w1(o),mpn:o.mpn,package:o.package,refDes:[...a].sort(j1).join(", "),quantity:i,representative:o}}).sort((r,s)=>r.name.localeCompare(s.name,"de",{numeric:!0,sensitivity:"base"}))}function Ka(e){return e.selectedArticleId||e.deduplicatedExisting||e.matchStatus==="match"?"match":e.matchStatus}function Gy(e){const t=e.rows.map(r=>Ka(r));return t.every(r=>r==="match")?"match":t.some(r=>r==="conflict")?"conflict":t.some(r=>r==="match")?"match":"new"}function C1(e,t){if(!t)return{...e,selectedArticleId:null,parentArticleId:null,parentMatchStatus:"new",matchStatus:"new"};const r=e.matchedArticleIds.includes(t.id)?e.matchedArticleIds:[t.id,...e.matchedArticleIds];return{...e,selectedArticleId:t.id,parentArticleId:t.id,parentMatchStatus:"match",matchStatus:"match",matchedArticleIds:r,matchedParentIds:r,proposedArticleNumber:t.articleNumber,isGhost:!1,deduplicatedExisting:!0,importMode:e.importMode==="match_hash"&&!e.hashMatchConfirmed?e.importMode:"match_mpn"}}function Ac(e,t,r,s,a){const i=s.find(l=>l.id===r),o=new Set([t]);if(a==="bom"){const l=mu(e).find(d=>d.rows.some(m=>m.id===t));if(l)for(const d of l.rows)o.add(d.id)}return e.map(l=>o.has(l.id)?C1(l,i):l)}function _f(e,t){const r=mu(e).find(s=>s.rows.some(a=>a.id===t));return r?r.rows.map(s=>s.id):[t]}const _1=/^C\d+$/i;function I1(e){return e!=null&&e.length?[...e].filter(t=>String(t.partNumber??"").trim()).sort((t,r)=>Number(r.isPrimary)-Number(t.isPrimary)).map(t=>({id:t.id,partNumber:_1.test(t.partNumber)?t.partNumber.toUpperCase():t.partNumber,supplierName:t.supplierName??"",isPrimary:!!t.isPrimary})):[]}function Yy(e,t){return e&&e.length>0?e:I1(t==null?void 0:t.supplierParts)}const Ns="sticky top-0 z-20 h-9 px-2 text-left align-middle text-[11px] font-medium uppercase tracking-wide text-muted-foreground whitespace-normal bg-card shadow-[inset_0_-1px_0_0_hsl(var(--border))]",rr="px-2 py-2 align-top whitespace-normal text-xs",ai=4,E1={selection:3,status:10,bauteil:21,designatoren:28,menge:8,zuordnung:30},P1={selection:3,status:10,bauteil:24,designatoren:46,menge:17},T1={status:10,bauteil:22,designatoren:30,menge:8,zuordnung:30},D1={status:10,bauteil:24,designatoren:48,menge:18},R1={selection:3,bauteil:28,designatoren:52,menge:17},M1={bauteil:26,designatoren:54,menge:20},id="production-import-bom-col-widths-v2-with-sel",od="production-import-bom-col-widths-v2";function mh(e,t){try{const r=localStorage.getItem(e);if(!r)return{...t};const s=JSON.parse(r),a=Object.keys(t);if(!a.every(o=>typeof s[o]=="number"&&Number.isFinite(s[o])))return{...t};const i=a.reduce((o,l)=>o+s[l],0);return Math.abs(i-100)>.5?{...t}:s}catch{return{...t}}}function O1(e,t,r){const s=r?e?t?id:`${id}:no-map`:t?od:`${od}:no-map`:e?`${id}:source`:`${od}:source`,a=r?e?t?E1:P1:t?T1:D1:e?R1:M1,[i,o]=u.useState(()=>mh(s,a));u.useEffect(()=>{o(mh(s,a))},[s,a]),u.useEffect(()=>{localStorage.setItem(s,JSON.stringify(i))},[s,i]);const l=u.useCallback((d,m,p)=>{Math.abs(p)<.01||o(h=>{const x={...h};let b=x[d]+p,w=x[m]-p;if(b<ai){const v=ai-b;b=ai,w-=v}if(w<ai){const v=ai-w;w=ai,b-=v}return x[d]=Math.round(b*10)/10,x[m]=Math.round(w*10)/10,x})},[]);return{widths:i,resizeColumns:l}}function L1({withSelection:e,widths:t,mappingEnabled:r,showStatusColumn:s,showSupplyColumns:a,hasSubcontractorExportStep:i}){const o=d=>`${t[d]}%`,l={width:"6rem"};return e?n.jsxs("colgroup",{children:[n.jsx("col",{"data-col":"selection",style:{width:o("selection")}}),s?n.jsx("col",{"data-col":"status",style:{width:o("status")}}):null,n.jsx("col",{"data-col":"bauteil",style:{width:o("bauteil")}}),n.jsx("col",{"data-col":"designatoren",style:{width:o("designatoren")}}),n.jsx("col",{"data-col":"menge",style:{width:o("menge")}}),a&&i?n.jsx("col",{"data-col":"beschaffung",style:l}):null,a?n.jsx("col",{"data-col":"bevorzugte-bestückung",style:l}):null,r?n.jsx("col",{"data-col":"zuordnung",style:{width:o("zuordnung")}}):null]}):n.jsxs("colgroup",{children:[s?n.jsx("col",{"data-col":"status",style:{width:o("status")}}):null,n.jsx("col",{"data-col":"bauteil",style:{width:o("bauteil")}}),n.jsx("col",{"data-col":"designatoren",style:{width:o("designatoren")}}),n.jsx("col",{"data-col":"menge",style:{width:o("menge")}}),a&&i?n.jsx("col",{"data-col":"beschaffung",style:l}):null,a?n.jsx("col",{"data-col":"bevorzugte-bestückung",style:l}):null,r?n.jsx("col",{"data-col":"zuordnung",style:{width:o("zuordnung")}}):null]})}function lm({onDragDelta:e}){const t=r=>{r.preventDefault(),r.stopPropagation();const s=r.currentTarget;s.setPointerCapture(r.pointerId);let a=r.clientX;const i=l=>{const d=s.closest("table");if(!d)return;const m=d.getBoundingClientRect().width;if(m<=0)return;const p=l.clientX-a;a=l.clientX,e(p/m*100)},o=l=>{s.releasePointerCapture(l.pointerId),s.removeEventListener("pointermove",i),s.removeEventListener("pointerup",o),s.removeEventListener("pointercancel",o)};s.addEventListener("pointermove",i),s.addEventListener("pointerup",o),s.addEventListener("pointercancel",o)};return n.jsx("span",{role:"separator","aria-orientation":"vertical","aria-label":"Spaltenbreite ändern",t
78itle:"Spaltenbreite ziehen",className:"absolute -right-0.5 top-0 z-20 h-full w-2 cursor-col-resize touch-none select-none bg-transparent hover:bg-primary/25 active:bg-primary/40",onPointerDown:t})}function z1(e){return e?n.jsxs("colgroup",{children:[n.jsx("col",{style:{width:"2%"}}),n.jsx("col",{style:{width:"3%"}}),n.jsx("col",{style:{width:"18%"}}),n.jsx("col",{style:{width:"4%"}}),n.jsx("col",{style:{width:"17%"}}),n.jsx("col",{style:{width:"56%"}})]}):n.jsxs("colgroup",{children:[n.jsx("col",{style:{width:"3%"}}),n.jsx("col",{style:{width:"19%"}}),n.jsx("col",{style:{width:"4%"}}),n.jsx("col",{style:{width:"18%"}}),n.jsx("col",{style:{width:"56%"}})]})}const Cc="border-b border-border transition-colors hover:bg-muted/40";function Jy(e,t,r,s){const a=t.find(o=>o.id===(e.selectedArticleId??e.matchedArticleIds[0]));if(r==="match"&&a)return{...So.match,label:`Match · ${a.articleNumber}`};if(e.deduplicatedExisting)return{...uh,label:e.proposedArticleNumber?`Bestand · ${e.proposedArticleNumber}`:uh.label};if(s&&r==="new")return{...dh,label:dh.shortL
78abel};const i=So[r];return{...i,label:i.shortLabel}}function B1(e,t,r){if(r){if(e.variantMatchStatus==="match"&&e.parentMatchStatus==="match"){const i=e.selectedArticleId??e.matchedArticleIds[0],o=t.find(l=>l.id===i);return o?`Stücklistenposition wird mit ${o.articleNumber} verknüpft.`:"Stücklistenposition wird mit bestehendem Artikel verknüpft."}return e.matchStatus==="conflict"?"Mehrere Treffer â bitte Artikel wählen oder offen lassen.":"Stücklistenposition â Artikel später in der Stückliste zuordnen."}if(e.hashMatchPrompt&&e.importMode==="match_hash"&&!e.hashMatchConfirmed)return e.hashMatchPrompt;if(e.variantMatchStatus==="match"&&e.parentMatchStatus==="match")return"Artikel + Variante gefunden â BOM verknüpft mit variant_id.";if(e.parentMatchStatus==="match"&&e.variantMatchStatus==="new")return r?"Artikel im Stamm â Variante wird nicht angelegt, Zuordnung offen.":"Artikel gefunden â neue Variante (MPN) wird angelegt.";if(e.parentMatchStatus==="new")return e.isGhost?r?"Stücklistenposition offen â später zuordnen.":"Neuer Artikel + Variante â Import-Platzhalter (unvollständig).":r?"Stücklistenposition offen â später zuordnen.":"Neuer Artikel + Variante werden angelegt.";if(e.importMode==="match_mpn"||e.deduplicatedExisting)return`Artikel per MPN im Stamm (${e.proposedArticleNumber??"â"}) â Wird wiederverwendet.`;if(e.importMode==="match_hash"&&e.hashMatchConfirmed)return`Hash-Match bestätigt (${e.proposedArticleNumber??"â"}) â Wird wiederverwendet.`;if(e.warengruppeWarning)return e.warengruppeWarning;if(e.matchStatus==="new")return e.isGhost?"Import-Platzhalter â Warengruppe unbekannt, Stammdaten später ergänzen.":"Kein Match â Wird als neuer Artikel angelegt.";const s=e.selectedArticleId??e.matchedArticleIds[0],a=t.find(i=>i.id===s);return e.matchStatus==="match"&&a?`Artikel gefunden (${a.articleNumber}) â Wird aktualisiert/verknüpft.`:e.matchStatus==="conflict"?"Mehrere Artikel gefunden â Bitte manuell auswählen.":a?`Artikel gefunden (${a.articleNumber}) â Wird aktualisiert/verknüpft.`:"Kein Match â Wird als neuer Artikel angelegt."}function Qy(e,t,r,s){const a=o=>{const l=o.selectedArticleId??o.matchedArticleIds[0];return s.find(d=>d.id===l)},i={numeric:!0,sensitivity:"base"};switch(r){case"status":return Ka(e).localeCompare(Ka(t));case"name":return qo(e).localeCompare(qo(t),"de",i);case"mpn":return(e.mpn||e.value||"").localeCompare(t.mpn||t.value||"","de",i);case"package":return(e.package||"").localeCompare(t.package||"","de",i);case"quantity":return e.quantity-t.quantity;case"articleNumber":{const o=cm(e,a(e))??"",l=cm(t,a(t))??"";return o.localeCompare(l,"de",i)}case"warengruppe":return(e.typeConfigName||"").localeCompare(t.typeConfigName||"","de",i);default:return 0}}function cm(e,t){return du(e)?e.proposedArticleNumber:t==null?void 0:t.articleNumber}function Xy(e,t){return e&&t==="ebom-edit"}function eb(e,t){const{mode:r,supplyType:s,turnkey:a,supplyOptions:i,disabled:o,onSupplyTypeChange:l,stock:d,stockLow:m,mappedArticle:p,effectiveStatus:h}=t;return h!=="match"||!p?n.jsx("span",{className:"text-muted-foreground",children:"â"}):r==="import-preview"?n.jsx(bt,{variant:"outline",className:ye("h-5 w-fit px-1 text-[9px] font-normal",a?"border-sky-500/40 text-sky-700 dark:text-sky-300":s==="CONSIGNMENT"?"border-violet-500/40 text-violet-700 dark:text-violet-300":"border-emerald-500/40 text-emerald-700 dark:text-emerald-300"),children:ah(s)}):l&&!o?n.jsxs(_t,{value:s==="CONSIGNMENT"?"CONSIGNMENT":"TURNKEY",onValueChange:x=>l(e.id,x),children:[n.jsx(It,{className:"h-7 w-full min-w-0 text-[10px]",children:n.jsx(Et,{})}),n.jsx(Pt,{children:i.map(x=>n.jsx(ft,{value:x.value,className:"text-xs",children:x.label},x.value))})]}):n.jsxs("div",{className:"flex min-w-0 flex-col gap-1",children:[n.jsx(bt,{variant:"outline",className:ye("h-5 w-fit px-1 text-[9px] font-normal",a?"border-sky-500/40 text-sky-700 dark:text-sky-300":s==="CONSIGNMENT"?"border-violet-500/40 text-violet-700 dark:text-violet-300":"border-emerald-500/40 text-emerald-700 dark:text-emerald-300"),children:ah(s)}),rC(s)&&d!=null?n.jsxs("span",{className:ye("text-[10px] tabular-nums text-muted-foreground",m&&"font-medium text-destructive"),children:["Lager ",d]}):null]})}function tb(e,t){var S,R,E,A;const{mode:r,mappedArticle:s,effectiveStatus:a,disabled:i,pieceCount:o,onCatalogSourceChange:l,onCatalogSourceClear:d}=t,m=((S=e.resolvedSource)==null?void 0:S.sku)??e.lcscPartNumber;if((m??"").toUpperCase()==="DNP")return n.jsx("span",{className:"inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium text-muted-foreground",title:"Do Not Place â nicht bestücken",children:"DNP"});if(a!=="match"||!s)return n.jsx("span",{className:"text-muted-foreground",children:"â"});const h=Yy(e.lcscAlternatives,s),x=m1(h),b=((R=x.find(I=>{var C;return I.id===(((C=e.resolvedSource)==null?void 0:C.itemId)??e.supplierPartId)}))==null?void 0:R.sku)??m??((E=x.find(I=>I.isPrimary))==null?void 0:E.sku)??((A=x[0])==null?void 0:A.sku)??"â";if(r==="import-preview")return n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",title:Cy,children:b});
78const w=f1({id:e.bomLineId||e.id,quantity:o,positionRef:e.refDes,features:{value:e.value,package:e.package,supplierSku:m||void 0},skuHint:m}),v=e.resolvedSource??(e.supplierPartId||e.lcscPartNumber?{providerId:"lcsc",itemId:e.supplierPartId||e.lcscPartNumber||"",sku:e.lcscPartNumber??null,label:e.lcscPartNumber??null}:null);return n.jsx(d1,{requirement:w,candidates:x,selected:v,disabled:!l||!!i,requiredQty:o,onSelect:I=>l==null?void 0:l(e.id,p1(I)),onClear:v!=null&&v.itemId&&d?()=>d(e.id):void 0,onMarkDoNotPlace:l?()=>l(e.id,h1()):void 0})}function bs({label:e,sortKey:t,activeKey:r,sortDir:s,onSort:a,className:i,dataCol:o,onResizePair:l,nextColKey:d}){const p=r===t?s==="asc"?Lc:zc:Bc;return n.jsxs("th",{className:ye(Ns,"relative",i),"data-col":o,children:[n.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 font-medium hover:text-foreground",onClick:()=>a(t),"aria-label":e||t,children:[e||n.jsx("span",{className:"sr-only",children:"Status"}),n.jsx(p,{className:"size-3 opacity-60"})]}),l&&d?n.jsx(lm,{onDragDelta:l}):null]})}function F1(e,t,r){const s={numeric:!0,sensitivity:"base"};switch(r){case"quantity":return e.quantity-t.quantity;case"package":return(e.package||"").localeCompare(t.package||"","de",s);case"mpn":return(e.mpn||e.representative.value||"").localeCompare(t.mpn||t.representative.value||"","de",s);case"name":return qo(e.representative).localeCompare(qo(t.representative),"de",s);default:return Qy(e.representative,t.representative,r,[])}}function $1(e){const t=new Set,r=[];for(const s of e.replace(/;/g,",").replace(/\n/g,",").split(",")){const a=s.trim();a&&!t.has(a)&&(t.add(a),r.push(a))}return r}function um({refDes:e}){const t=$1(e);return t.length===0?n.jsx("span",{className:"text-muted-foreground",children:"â"}):n.jsx("p",{className:"m-0 break-words font-mono text-[10px] leading-relaxed text-muted-foreground",children:t.join(", ")})}function K1(e){return e.map(t=>({key:t.id,rows:[t],name:t.name,mpn:t.mpn,package:t.package,refDes:t.refDes,quantity:t.quantity,representative:t}))}function qo(e){const t=(e.mpn||"").trim(),r=(e.name||"").trim(),s=(e.value||"").trim(),a=(e.package||"").trim(),i=(r&&r!==t?r:"")||(s&&s!==t?s:"");return i&&a?i===a||i.endsWith(` · ${a}`)||i.endsWith(` ·${a}`)||i===`${s} · ${a}`?i:`${i} · ${a}`:i||a||"â"}function nb({row:e,disabled:t,onRowFieldChange:r}){const s=!!r&&!t,[a,i]=u.useState(!1),[o,l]=u.useState(""),[d,m]=u.useState(""),p=u.useRef(null),h=u.useRef(null),x=(e.eagleLibrary||"").trim(),b=qo(e),w=()=>{s&&(l(e.value??""),m(e.package??""),i(!0))},v=u.useCallback(()=>{i(!1)},[]),S=u.useCallback(()=>{if(!a||!r){i(!1);return}const E={};o!==(e.value??"")&&(E.value=o),d!==(e.package??"")&&(E.package=d),Object.keys(E).length>0&&r(e.id,E),i(!1)},[d,o,a,r,e.package,e.value,e.id]);u.useEffect(()=>{var E,A;a&&((E=h.current)==null||E.focus(),(A=h.current)==null||A.select())},[a]),u.useEffect(()=>{if(!a)return;const E=A=>{var I;(I=p.current)!=null&&I.contains(A.target)||S()};return document.addEventListener("pointerdown",E),()=>document.removeEventListener("pointerdown",E)},[S,a]);const R=E=>{if(E.key==="Escape"){E.preventDefault(),v();return}E.key==="Enter"&&(E.preventDefault(),S())};return a?n.jsxs("div",{ref:p,className:"mx-auto flex min-w-0 max-w-full flex-col gap-0.5 text-center",children:[n.jsx(Ze,{ref:h,value:o,onChange:E=>l(E.target.value),onKeyDown:R,className:"h-6 px-1.5 text-center font-mono text-[10px] font-semibold",placeholder:"Wert","aria-label":"Eagle-Wert"}),n.jsx(Ze,{value:d,onChange:E=>m(E.target.value),onKeyDown:R,className:"h-6 px-1.5 text-center font-mono text-[10px]",placeholder:"Package","aria-label":"Eagle-Package"}),n.jsx("div",{className:"mt-0.5 truncate text-center text-[9px] leading-tight text-muted-foreground",title:x||void 0,children:x||"â"})]}):n.jsxs("div",{className:"mx-auto min-w-0 max-w-full text-center",children:[n.jsx("button",{type:"button",className:ye("w-full min-w-0 text-center",s&&"cursor-pointer rounded-sm hover:bg-muted/40 focu
78s-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"),onClick:w,disabled:!s,title:s?`${b} â Klicken zum Bearbeiten`:b,children:n.jsx("div",{className:"truncate text-xs font-semibold leading-tight",children:b})}),n.jsx("div",{className:"mt-0.5 truncate text-center text-[9px] leading-tight text-muted-foreground",title:x||void 0,children:x||"â"})]})}function rb(e,t,r,s,a,i,o,l,d,m,p,h=Yr){var I,C;const x=t.find(k=>k.id===(e.selectedArticleId??e.matchedArticleIds[0])),b=du(e),w=cm(e,x),v=d??e.quantity,S=cy(e,h),R=(e.lcscPartNumber??"").toUpperCase()==="DNP";if(l)return n.jsxs("div",{className:"min-w-0 space-y-1",children:[e.articleDeleted?n.jsx("span",{className:"inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-1.5 py-0.5 text-[10px] font-medium text-destructive",children:"Gelöscht â neu zuordnen"}):null,R?n.jsx("span",{className:"inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium text-muted-foreground",children:"DNP · nicht bestücken"}):null,n.jsx(Ci,{articles:t,value:e.articleDeleted?null:e.selectedArticleId??e.matchedArticleIds[0]??null,supplierPartValue:e.articleDeleted?null:e.supplierPartId??null,onSelect:k=>a(e.id,k),onSelectWithPart:p?(k,j,z)=>p(e.id,k,j,z):void 0,placeholder:e.articleDeleted?"Ersatzartikel wählen â¦":r==="conflict"?"Art
78ikel wählen â¦":"Artikel zuordnen â¦",disabled:s,className:"min-w-0 w-full max-w-full",searchHint:S,requiredQuantity:v,twoLine:!0,onCreateArticle:m!=null&&m.onCreateArticle?()=>{var k;return(k=m.onCreateArticle)==null?void 0:k.call(m,e.id)}:void 0,onMarkDoNotPlace:m!=null&&m.onMarkDoNotPlace?()=>{var k;return(k=m.onMarkDoNotPlace)==null?void 0:k.call(m,e.id)}:void 0,creatingArticle:m==null?void 0:m.creatingArticle,scrollContainerRef:m==null?void 0:m.scrollContainerRef})]});const E=e.importMode??(e.deduplicatedExisting?"match_mpn":"new"),A=g1[E];return n.jsxs("div",{className:"space-y-1.5 overflow-hidden",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-0.5",children:[e.isGhost?n.jsx(bt,{className:"border-transparent bg-destructive/15 px-1 py-0 text-[8px] font-normal text-destructive",children:fC}):null,n.jsx(bt,{className:ye("px-1 py-0 text-[8px] font-normal",A.className),children:E==="match_hash"&&e.hashMatchConfirmed?"Hash â":A.label})]}),b?n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",title:"Wird beim Import automatisch vergeben",children:((I=e.proposedArticleNumber)==null?void 0:I.trim())||"automatisch"}):n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:w??"â"}),b&&e.typeConfigName?n.jsx("div",{className:"truncate text-[9px] text-muted-foreground",children:e.typeConfigName}):null,b?n.jsxs("div",{className:"text-[9px] leading-snug text-muted-foreground",children:[e.classificationSource&&e.classificationSource!=="none"?n.jsxs("div",{className:"opacity-70",children:[e.classificationSource,e.classificationConfidence!=null?` (${Math.round(e.classificationConfidence*100)}%)`:""]}):null,e.warengruppeWarning?n.jsx("div",{className:"text-warning",children:e.warengruppeWarning}):null]}):null,E==="match_hash"&&e.matchedArticleIds[0]?n.jsxs("div",{className:"text-[9px] text-muted-foreground",children:["Vorschlag:"," ",((C=t.find(k=>k.id===e.matchedArticleIds[0]))==null?void 0:C.articleNumber)??e.proposedArticleNumber??"â"]}):null,sb(e,t,r,s,a,i,l,v,m,h)]})}function sb(e,t,r,s,a,i,o,l,d,m=Yr){const p=B1(e,t,o);if(!o&&e.importMode==="match_hash"&&!e.hashMatchConfirmed)return n.jsxs("div",{className:"space-y-2",children:[n.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:e.hashMatchPrompt??p}),n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 text-xs",disabled:s,onClick:()=>i==null?void 0:i(e.id),children:"Gleichen Artikel verwenden"})]});if(r==="conflict")return n.jsx(Ci,{articles:t,value:e.selectedArticleId??e.matchedArticleIds[0]??null,onSelect:h=>a(e.id,h),placeholder:"Artikel wählen â¦",disabled:s,className:"min-w-0 w-full max-w-full",searchHint:cy(e,m),requiredQuantity:l??e.quantity,onCreateArticle:d!=null&&d.onCreateArticle?()=>{var h;return(h=d.onCreateArticle)==null?void 0:h.call(d,e.id)}:void 0,creatingArticle:d==null?void 0:d.creatingArticle,scrollContainerRef:d==null?void 0:d.scrollContainerRef});if(r==="new"){const h=e.selectedArticleId?t.find(x=>x.id===e.selectedArticleId):void 0;return h?n.jsxs("p",{className:"text-xs leading-relaxed text-success",children:["Manuell zugeordnet: ",h.articleNumber]}):n.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:"Wird neu angelegt"})}return n.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:p})}function fh({rows:e,articles:t,onSelectArticle:r,onProposedArticleNumberChange:s,onConfirmHashMatch:a,onRowFieldChange:i,selectedRowIds:o,onSelectedRowIdsChange:l,onDeleteSelected:d,disabled:m,sortedBomGroups:p,sortKey:h,sortDir:x,onSort:b,bomLinesOnly:w=!1,mappingEnabled:v=!0,showStatusColumn:S=!0,rowLayout:R="grouped",assignmentOptions:E,hasSubcontractorExportStep:A=!1,preferredAssemblyMode:I="off",onSupplyTypeChange:C,onCatalogSourceChange:k,onCatalogSourceClear:j,onSelectArticleWithPart:z,matchingKeyTemplate:D=Yr}){const B=!!(o&&l),T=u.useMemo(()=>Sy(A),[A]),P=Xy(w,I),G=B&&e.length>0&&e.every(se=>o.has(se.id)),W=B&&e.some(se=>o.has(se.id)),ke=()=>{B&&l(G?new Set:new Set(e.map(se=>se.id)))},L=se=>{if(!B)return;const J=R==="flat"?[se]:_f(e,se),Q=new Set(o),U=J.every(ne=>Q.has(ne));for(const ne of J)U?Q.delete(ne):Q.add(ne);l(Q)},{widths:xe,resizeColumns:Y}=O1(B,v,S),Ne=u.useCallback((se,J)=>Q=>Y(se,J,Q),[Y]);return n.jsxs("div",{className:"space-y-2",children:[B&&W&&d?n.jsxs("div",{className:"flex items-center justify-between px-3 pt-2",children:[n.jsxs("span",{className:"text-xs text-muted-foreground",children:[o.size," ausgewählt"]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1 text-destructive hover:text-destructive",disabled:m,onClick:d,children:[n.jsx(or,{className:"size-3.5"}),"Löschen"]})]}
78):null,n.jsx("div",{className:"min-w-0 w-full rounded-xl border border-border","data-staging-table":"bom-table-v22",children:n.jsxs("table",{className:"w-full min-w-[760px] table-fixed border-separate border-spacing-0 text-xs",children:[n.jsx(L1,{withSelection:B,widths:xe,mappingEnabled:v,showStatusColumn:S,showSupplyColumns:P,hasSubcontractorExportStep:A}),n.jsx("thead",{children:n.jsxs("tr",{className:Cc,children:[B?n.jsxs("th",{className:ye(Ns,"relative w-[3%] px-1"),"data-col":"selection",children:[n.jsx(fr,{checked:G,onCheckedChange:ke,disabled:m,"aria-label":"Alle auswählen"}),S?null:n.jsx(lm,{onDragDelta:Ne("selection","bauteil")})]}):null,S?n.jsx(bs,{label:"Status",sortKey:"status",activeKey:h,sortDir:x,onSort:b,dataCol:"status",className:"px-0.5 text-center [&_button]:mx-auto [&_button]:justify-center",onResizePair:Ne("status","bauteil"),nextColKey:"bauteil"}):null,n.jsx(bs,{label:"Bauteil",sortKey:"name",activeKey:h,sortDir:x,onSort:b,dataCol:"bauteil",className:"text-center [&_button]:mx-auto [&_button]:justify-center",onResizePair:Ne("bauteil","designatoren"),nextColKey:"designatoren"}),n.jsxs("th",{className:ye(Ns,"relative px-2 text-center"),"data-col":"designatoren",children:["Designatoren",n.jsx(lm,{onDragDelta:Ne("designatoren","menge")})]}),n.jsx(bs,{label:"Menge",sortKey:"quantity",activeKey:h,sortDir:x,onSort:b,dataCol:"menge",className:"px-1 text-center [&_button]:mx-auto [&_button]:justify-center",onResizePair:v?Ne("menge","zuordnung"):void 0,nextColKey:v?"zuordnung":void 0}),P&&A?n.jsx("th",{className:ye(Ns,"hidden px-2 sm:table-cell"),children:"Beschaffung"}):null,P?n.jsx("th",{className:ye(Ns,"min-w-[5.5rem] px-2"),children:Ay}):null,v?n.jsx(bs,{label:"Bevorzugte Zuordnung",sortKey:"articleNumber",activeKey:h,sortDir:x,onSort:b,dataCol:"zuordnung",className:"px-2 text-center [&_button]:mx-auto [&_button]:justify-center"}):null]})}),n.jsx("tbody",{children:p.map(se=>{const J=se.representative,Q=Gy(se),U=Jy(J,t,Q,w),ne=se.rows.map(Se=>Se.id),H=B&&ne.every(Se=>o.has(Se)),Z=Ls(se.quantity),K=ou(J.supplyType),me=wy(K),$=J.selectedArticleId??J.matchedArticleIds[0],X=$?t.find(Se=>Se.id===$):void 0,Ie=(X==null?void 0:X.stock)??null,V=Ie!=null&&Ie<Z;return n.jsxs("tr",{className:ye(Cc,J.articleDeleted&&"bg-destructive/10"),children:[B?n.jsx("td",{className:ye(rr,"px-1 text-center"),"data-col":"selection",children:n.jsx(fr,{checked:H,onCheckedChange:()=>L(J.id),disabled:m,"aria-label":`Zeile ${J.name} auswählen`})}):null,S?n.jsx("td",{className:ye(rr,"px-0.5 text-center"),"data-col":"status",children:n.jsx(Zy,{...U,label:U.shortLabel,title:U.label})}):null,n.jsx("td",{className:ye(rr,"min-w-0 text-center"),"data-col":"bauteil",children:n.jsx(nb,{row:J,disabled:m,onRowFieldChange:i})}),n.jsx("td",{className:ye(rr,"min-w-0"),"data-col":"designatoren",children:n.jsx(um,{refDes:se.refDes})}),n.jsx("td",{className:ye(rr,"px-1 text-center tabular-nums whitespace-nowrap"),"data-col":"menge",children:R==="flat"?Ls(J.quantity):Z}),P&&A?n.jsx("td",{className:ye(rr,"hidden min-w-0 sm:table-cell"),children:eb(J,{mode:I,supplyType:K,turnkey:me,supplyOptions:T,disabled:m,onSupplyTypeChange:C,stock:Ie,stockLow:V,mappedArticle:X,effectiveStatus:Q})}):null,P?n.jsx("td",{className:ye(rr,"min-w-0"),children:tb(J,{mode:I,mappedArticle:X,effectiveStatus:Q,disabled:m,pieceCount:Z,onCatalogSourceChange:k,onCatalogSourceClear:j})}):null,v?n.jsx("td",{className:ye(rr,"min-w-0"),"data-col":"zuordnung",children:rb(J,t,Q,m,r,a,s,w,R==="flat"?J.quantity:se.quantity,{onCreateArticle:E==null?void 0:E.onCreateArticle,onMarkDoNotPlace:E==null?void 0:E.onMarkDoNotPlace,creatingArticle:(E==null?void 0:E.creatingArticleRowId)===J.id,scrollContainerRef:E==null?void 0:E.scrollContainerRef},z,D)}):null]},se.key)})})]})})]})}function fu({rows:e,articles:t,onSelectArticle:r,onProposedArticleNumberChange:s,onConfirmHashMatch:a,selectedRowIds:i,onSelectedRowIdsChange:o,onDeleteSelected:l,showNumbering:d=!1,viewMode:m="bom",bomLinesOnly:p=!1,disabled:h,onRowFieldChange:x,assignmentOptions:b,mappingEnabled:w=!0,showStatusColumn:v=!0,hasSubcontractorExportStep:S=!1,onSupplyTypeChange:R,onCatalogSourceChange:E,onCatalogSourceClear:A,preferredAssemblyMo
78de:I="off",onSelectArticleWithPart:C}){const{settings:k}=Mn(),j=p?Li(k):eu(k),[z,D]=u.useState(()=>Ur().importStagingSortKey),[B,T]=u.useState(()=>Ur().importStagingSortDir);u.useEffect(()=>{uu({importStagingSortKey:z,importStagingSortDir:B})},[z,B]);const P=u.useMemo(()=>Sy(S),[S]),G=Xy(p,I),W=u.useMemo(()=>{const Q=[...e];return Q.sort((U,ne)=>{const H=Qy(U,ne,z,t);return B==="asc"?H:-H}),Q},[t,e,B,z]),ke=u.useMemo(()=>{const Q=mu(e);return Q.sort((U,ne)=>{const H=F1(U,ne,z);return B==="asc"?H:-H}),Q},[e,B,z]),L=!!(i&&o),xe=L&&e.length>0&&e.every(Q=>i.has(Q.id)),Y=L&&e.some(Q=>i.has(Q.id)),Ne=Q=>{if(z===Q){T(U=>U==="asc"?"desc":"asc");return}D(Q),T("asc")},se=()=>{if(L){if(xe){o(new Set);return}o(new Set(e.map(Q=>Q.id)))}},J=Q=>{if(!L)return;const U=m==="bom"?_f(e,Q):[Q],ne=new Set(i),H=U.every(Z=>ne.has(Z));for(const Z of U)H?ne.delete(Z):ne.add(Z);o(ne)};return e.length===0?n.jsx("p",{className:"py-6 text-center text-sm text-muted-foreground",children:"Keine importierbaren Zeilen in der Datei gefunden."}):d&&m==="bom"?n.jsx(fh,{rows:e,articles:t,onSelectArticle:r,onSelectArticleWithPart:C,onProposedArticleNumberChange:s,onConfirmHashMatch:a,onRowFieldChange:x,selectedRowIds:i,onSelectedRowIdsChange:o,onDeleteSelected:l,disabled:h,sortedBomGroups:ke,sortKey:z,sortDir:B,onSort:Ne,bomLinesOnly:p,mappingEnabled:w,showStatusColumn:v,rowLayout:"grouped",assignmentOptions:b,hasSubcontractorExportStep:S,preferredAssemblyMode:I,onSupplyTypeChange:R,onCatalogSourceChange:E,onCatalogSourceClear:A,matchingKeyTemplate:j}):d&&m==="designators"?n.jsx(fh,{rows:e,articles:t,onSelectArticle:r,onSelectArticleWithPart:C,onProposedArticleNumberChange:s,onConfirmHashMatch:a,onRowFieldChange:x,selectedRowIds:i,onSelectedRowIdsChange:o,onDeleteSelected:l,disabled:h,sortedBomGroups:K1(W),sortKey:z,sortDir:B,onSort:Ne,bomLinesOnly:p,mappingEnabled:w,showStatusColumn:v,rowLayout:"flat",assignmentOptions:b,hasSubcontractorExportStep:S,preferredAssemblyMode:I,onSupplyTypeChange:R,onCatalogSourceChange:E,onCatalogSourceClear:A,matchingKeyTemplate:j}):n.jsxs("div",{className:"space-y-2",children:[L&&Y&&l?n.jsxs("div",{className:"flex items-center justify-between px-3 pt-2",children:[n.jsxs("span",{className:"text-xs text-muted-foreground",children:[i.size," ausgewählt"]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1 text-destructive hover:text-destructive",disabled:h,onClick:l,children:[n.jsx(or,{className:"size-3.5"}),"Löschen"]})]}):null,n.jsx("div",{className:"min-w-0 w-full overflow-hidden rounded-xl border border-border","data-staging-table":"v5",children:n.jsxs("table",{className:"w-full table-fixed border-separate border-spacing-0 caption-bottom text-xs",children:[d&&m==="designators"?z1(!!L):null,n.jsx("thead",{children:n.jsxs("tr",{className:Cc,children:[L?n.jsx("th",{className:ye(Ns,"px-1"),children:n.jsx(fr,{checked:xe,onCheckedChange:se,disabled:h,"aria-label":"Alle auswählen"})}):null,n.jsx(bs,{label:"Status",sortKey:"status",activeKey:z,sortDir:B,onSort:Ne,className:"px-0.5 text-center [&_button]:mx-auto [&_button]:justify-center"}),n.jsx(bs,{label:d?"Bauteil":"Bezeichnung",sortKey:"name",activeKey:z,sortDir:B,onSort:Ne,className:"max-w-0 overflow-hidden px-1 text-center [&_button]:mx-auto [&_button]:justify-center"}),m==="bom"&&d?n.jsx("th",{className:ye(Ns,"px-2"),children:"Designatoren"}):null,p&&m==="bom"&&d&&G&&S?n.jsx("th",{className:ye(Ns,"hidden px-2 sm:table-cell"),children:"Beschaffung"}):null,p&&m==="bom"&&d&&G?n.jsx("th",{className:ye(Ns,"min-w-[5.5rem] px-2"),children:Ay}):null,d?null:n.jsxs(n.Fragment,{children:[n.jsx(bs,{label:"MPN (Variante)",sortKey:"mpn",activeKey:z,sortDir:B,onSort:Ne,className:"hidden md:table-cell"}),n.jsx(bs,{label:"Package",sortKey:"package",activeKey:z,sortDir:B,onSort:Ne,className:"hidden lg:table-cell"})]}),n.jsx(bs,{label:"Menge",sortKey:"quantity",activeKey:z,sortDir:B,onSort:Ne,className:"px-1 text-center [&_button]:w-full [&_button]:justify-center"}),d?n.jsx(bs,{label:"Bevorzugte Zuordnung",sortKey:"articleNumber",activeKey:z,sortDir:B,onSort:Ne,className:"px-2"}):n.jsx("th",{className:ye(Ns,"px-2"),children:"Prüfergebnis"})]})}),n.jsx("tbody",{children:(m==="bom"?ke:W).map(Q=>{const U=m==="bom"?Q:null,ne=m==="bom"?U.representative:Q,H=m==="bom"?U.key:ne.id,Z=m==="bom"?U.refDes:ne.refDes,K=m==="bom"?U.quantity:ne.quantity,me=m==="bom"?Gy(U):Ka(ne),$=Jy(ne,t,me,p),X=m==="bom"?U.rows.map(Tt=>Tt.id):[ne.id],Ie=L&&X.every(Tt=>i.has(Tt)),V=Ls(K),Se=ou(ne.supplyType),Ce=wy(Se),Be=ne.selectedArticleId??ne.matchedArticleIds[0],Le=Be?t.find(Tt=>Tt.id===Be):void 0,rt=(Le==null?void 0:Le.stock)??null,lt=rt!=null&&rt<V;return n.jsxs("tr",{className:ye(Cc,ne.articleDeleted&&"bg-destructive/10"),children:[L?n.jsx("td",{className:ye(rr,"px-1"),children:n.jsx(fr,{checked:Ie,onCheckedChange:()=>J(ne.id),disabled:h,"aria-label":`Zeile ${ne.name} auswählen`})}):null,n.jsx("td",{className:ye(rr,"px-0.5 text-center"),children:n.jsx(Zy,{...$,label:$.shortLabel,compact:!0,title:ne.articleDeleted?"Gelöschtes Bauteil â neu zuordnen":$.label})}),n.jsx("td",{className:ye(rr,"max-w-0 overflow-hidden px-1 text-center"),children:n.jsxs("div",{className:"min-w-0 overflow-hidden",children:[n.jsx(nb,{row:ne,disabled:h,onRowFieldChange:x}),m==="designators"&&Z?n.jsx("div",{className:"mt-1",children:n.jsx(um,{refDes:Z})}):null,!d&&ne.proposedArticleNumber?n.jsx("div",{className:"truncate font-mono text-[10px] text-muted-foreground",children:ne.proposedArticleNumber}):null]})}),m==="bom"&&d?n.jsx("td",{className:ye(rr,"min-w-0"),children:n.jsx(um,{refDes:Z})}):null,p&&m==="bom"&&d&&G&&S?n.jsx("td",{className:ye(rr,"hidden min-w-0 sm:table-cell"),children:eb(ne,{mode:I,supplyType:Se,turnkey:Ce,supplyOptions:P,disabled:h,onSupplyTypeChange:R,stock:rt,stockLow:lt,mappedArticle:Le,effectiveStatus:me})}):null,p&&m==="bom"&&d&&G?n.jsx("td",{className:ye(rr,"min-w-0"),children:tb(ne,{mode:I,mappedArticle:Le,effectiveStatus:me,disabled:h,pieceCount:V,onCatalogSourceChange:E,onCatalogSourceClear:A})}):null,d?null:n.jsxs(n.Fragment,{children:[n.jsxs("td",{className:ye(rr,"hidden text-muted-foreground md:table-cell"),children:[n.jsx("div",{className:"font-mono",children:ne.mpn||ne.value||"â"}),ne.manufacturer?n.jsx("div",{className:"text-[10px]",children:ne.manufacturer}):null]}),n.jsx("td",{className:ye(rr,"hidden text-muted-foreground lg:table-cell"),children:ne.package||"â"})]}),n.jsx("td",{className:ye(rr,"px-1 text-center tabular-nums"),children:V}),d?n.jsx("td",{className:ye(rr,"min-w-0"),children:rb(ne,t,me,h,r,a,s,p,ne.quantity,{onCreateArticle:b==null?void 0:b.onCreateArticle,onMarkDoNotPlace:b==null?void 0:b.onMarkDoNotPlace,creatingArticle:(b==null?void 0:b.creatingArticleRowId)===ne.id,scrollContainerRef:b==null?void 0:b.scrollC
78ontainerRef},C,j)}):n.jsx("td",{className:ye(rr,"min-w-0 max-w-0 overflow-hidden"),children:sb(ne,t,me,h,r,a,p,void 0,void 0,j)})]},H)})})]})})]})}function If({rows:e,viewMode:t="bom",showMatchBadges:r=!0}){const s=t==="bom"?mu(e):null,a=e.filter(l=>Ka(l)==="match").length,i=e.filter(l=>Ka(l)==="conflict").length,o=e.filter(l=>Ka(l)==="new").length;return n.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[s?n.jsxs("span",{className:"text-muted-foreground",children:[s.length," Bauteile · ",e.length," Designatoren"]}):n.jsxs("span",{className:"text-muted-foreground",children:[e.length," Zeilen"]}),r?n.jsxs(n.Fragment,{children:[n.jsx(sd,{meta:So.match,count:a}),n.jsx(sd,{meta:So.conflict,count:i}),n.jsx(sd,{meta:So.new,count:o})]}):null]})}function ld(e,t,r=Yr){const s=!Ya(e),a=lu(e);return{source:"eagle",name:s?(e.name||"").trim():"",mpn:"",manufacturer:"",value:e.value??"",package:e.package??"",matchingKey:gf(e,r)||void 0,quantity:e.quantity,refDes:e.refDes??"",raw:{},matchStatus:a?"conflict":s?"match":"new",matchedArticleIds:s&&e.articleId?[e.articleId]:[],selectedArticleId:s&&e.articleId&&!a?e.articleId:null,variantId:a?null:e.variantId??null,placementData:e.placementData??void 0,bomLineId:e.id,articleDeleted:a,supplyType:e.supplyType??"INTERNAL",supplierPartId:a?null:e.supplierPartId??null,lcscPartNumber:e.lcscPartNumber??null,lcscAlternatives:Yy(e.lcscAlternatives,t),resolvedSource:e.resolvedSource??(e.supplierPartId||e.lcscPartNumber?{providerId:"lcsc",itemId:e.supplierPartId||e.lcscPartNumber||"",sku:e.lcscPartNumber??null,label:e.lcscPartNumber??null}:null)}}function V1(e,t,r=[],s=Yr){const a=new Map(r.map(i=>[i.id,i]));if(t==="designators"){const i=[];for(const o of e){const l=o.articleId?a.get(o.articleId):void 0,d=Nf(o.refDes??"");if(d.length===0){i.push({...ld(o,l,s),id:o.id,refDes:o.refDes??"",quantity:o.quantity});continue}for(const m of d)i.push({...ld(o,l,s),id:`${o.id}::${m}`,refDes:m,quantity:1})}return i}return e.map(i=>{const o=i.articleId?a.get(i.articleId):void 0;return{...ld(i,o,s),id:i.id,refDes:i.refDes??"",quantity:i.quantity}})}function Oa(e){return e.bomLineId??e.id.split("::")[0]??e.id}function q1(e){const t=(e.value||"").trim(),r=(e.package||"").trim();return t&&r?`${t} · ${r}`:t||r||(e.name||"").trim()||"Neues Bauteil"}function ph(){return`K-${Date.now().toString(36).toUpperCase().slice(-8)}${Math.random().toString(36).slice(2,4).toUpperCase()}`}async function ab(e,t){var d,m;const s=(await Ix({rows:[{rowId:e.id,matchStatus:"new",value:e.value,package:e.package,mpn:e.mpn,manufacturer:e.manufacturer}],fallbackTypeConfigId:t??null}))[0];if(s!=null&&s.matchedArticleId&&(s.deduplicationStatus==="existing"||s.importMode==="match_mpn"))return{article:await ts(s.matchedArticleId),created:!1};let a=((d=s==null?void 0:s.proposedArticleNumber)==null?void 0:d.trim())||"";a&&((m=s==null?void 0:s.matchedArticleNumber)!=null&&m.trim())&&a===s.matchedArticleNumber.trim()&&(a=""),a||(a=ph());const i={name:q1(e),description:"",category:(s==null?void 0:s.typeConfigId)??"",itemType:"RAW_MATERIAL",itemTypeDefinitionId:(s==null?void 0:s.itemTypeDefinitionId)??void 0,typ:e.mpn??"",value:e.value??"",package:e.package??"",price:0,stock:0,unit:"Stk",attributes:{mpn:e.mpn??"",source:"staging_create"},activeRevision:null,supplierParts:[]},o=async p=>{try{return await rl({...i,articleNumber:p})}catch(h){if(h instanceof ut&&h.status===409)return null;throw h}};let l=await o(a);if(l||(l=await o(ph())),!l)throw new Error("Artikelnummer bereits vergeben â bitte erneut versuchen.");return{article:l,created:!0}}function U1(e,t){const r=zi(t);if(r.include.length===0&&r.exclude.length===0)return e;const s=a=>[a.value,a.package,a.name,a.mpn,a.refDes,a.manufacturer,a.eagleLibrary].filter(Boolean).join(" ");return e.filter(a=>My(s(a),t))}function W1({bomItems:e,articles:t,viewMode:r,disabled:s,isEditing:a,hasSubcontractorExportStep:i=!1,onMapBomItem:o,onMarkDoNotPlace:l,onUpdateBomItem:d,onCatalogRefresh:m,addArticle:p}){const h=u.useRef(null),{settings:x}=Mn(),b=Li(x),[w,v]=u.useState(()=>Ur().bomFilterQuery),[S,R]=u.useState(null),[E,A]=u.useState(!1);u.useEffect(()=>{uu({bomFilterQuery:w})},[w]);const I=u.useMemo(()=>V1(e,r,t,b),[t,e,b,r]),C=u.useMemo(()=>U1(I,w),[I,w]),k=u.useCallback((W,ke)=>{const L=I.find(xe=>xe.id===W);!L||!o||o(Oa(L),ke)},[o,I]),j=u.useCallback(async W=>{const ke=I.find(L=>L.id===W);!ke||!l||await l(Oa(ke))},[l,I]),z=u.useCallback(async(W,ke,L,xe)=>{const Y=I.find(J=>J.id===W);if(!Y)return;const Ne=Oa(Y);!!!Y.selectedArticleId&&o&&await o(Ne,ke),d&&d(Ne,{supplierPartId:L,lcscPartNumber:xe,resolvedSource:{providerId:"lcsc",itemId:L||xe,sku:xe,label:xe}})},[o,d,I]),D=u.useCallback((W,ke)=>{if((ke.sku??"").toUpperCase()==="DNP"){j(W);return}const L=I.find(Ne=>Ne.id===W),xe=L==null?void 0:L.selectedArticleId;if(!L||!xe||!d)return;const Y=Oa(L);d(Y,{supplierPartId:ke.itemId,lcscPartNumber:ke.sku??null,resolvedSource:ke})},[j,d,I]),B=u.useCallback((W,ke)=>{const L=I.find(xe=>xe.id===W);!L||!d||d(Oa(L),ke)}
78,[d,I]),T=u.useCallback(async W=>{const ke=I.find(L=>L.id===W);if(!(!ke||!o)){R(W);try{const L=await ab(ke,null);await(m==null?void 0:m()),await o(Oa(ke),L.article.id),M.success(L.created?`Artikel ${L.article.articleNumber} angelegt und zugeordnet`:`Bestehender Artikel ${L.article.articleNumber} zugeordnet (bereits im Stamm)`)}catch(L){M.error(L instanceof Error?L.message:"Artikel konnte nicht angelegt werden")}finally{R(null)}}},[m,o,I]),P=u.useCallback((W,ke)=>{const L=I.find(xe=>xe.id===W);!L||!d||d(Oa(L),{supplyType:ke})},[d,I]),G=!!s||!a;return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-1.5 overflow-hidden",children:[n.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[n.jsxs("div",{className:"relative min-w-0 max-w-xs flex-1",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:w,onChange:W=>v(W.target.value),placeholder:"Stückliste filtern â¦",className:"h-8 pl-8 text-xs",title:"Bevorzugte Zuordnung und Bestellnummer werden in der Revision gespeichert (EBOM)."})]}),p?n.jsxs(vg,{open:E,onOpenChange:W=>{A(W),W?p.onSearchFocus(!0):(p.onSearchFocus(!1),p.onSearchChange(""))},children:[n.jsx(Vv,{asChild:!0,children:n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"ml-auto h-8 shrink-0 gap-1.5 px-2.5 text-xs",disabled:p.disabled,children:[n.jsx(Gn,{className:"size-3.5"}),"Artikel hinzufügen"]})}),n.jsxs(Ng,{className:"w-[min(32rem,92vw)] p-2",align:"end",children:[n.jsxs("div",{className:"relative",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{autoFocus:!0,value:p.search,onChange:W=>p.onSearchChange(W.target.value),onFocus:()=>p.onSearchFocus(!0),placeholder:"Artikel suchen ⦠(Teilwort, -wort / NOT)",className:"h-8 pl-8 text-xs",disabled:p.disabled})]}),n.jsx("div",{className:`mt-2 overflow-y-auto overscroll-contain ${cu(p.results.length)}`,children:p.search.trim()&&p.results.length===0?n.jsx("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"Keine Artikel gefunden."}):p.results.length===0?n.jsx("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"Teilwort, mehrere Begriffe, Ausschluss mit -wort oder NOT â¦"}):p.results.map(W=>n.jsxs("button",{type:"button",onClick:()=>{p.onAdd(W),A(!1),p.onSearchChange(""),p.onSearchFocus(!1)},className:"flex w-full flex-col rounded-md px-2.5 py-2 text-left hover:bg-accent",children:[n.jsx("span",{className:"text-sm font-medium",children:W.name}),n.jsxs("span",{className:"font-mono text-[10px] text-muted-foreground",children:[W.articleNumber," · ",W.itemType?Hr(W.itemType):"â"]})]},W.id))})]})]}):null]}),n.jsx("div",{ref:h,className:"min-h-0 flex-1 overflow-auto overscroll-contain",onWheel:W=>W.stopPropagation(),children:n.jsx(fu,{rows:C,articles:t,showNumbering:!0,viewMode:r,bomLinesOnly:!0,mappingEnabled:!!o,preferredAssemblyMode:"ebom-edit",onSelectArticle:k,onSelectArticleWithPart:a?z:void 0,onRowFieldChange:a?B:void 0,disabled:G,assignmentOptions:{onCreateArticle:a&&o?T:void 0,onMarkDoNotPlace:a&&l?j:void 0,creatingArticleRowId:S,scrollContainerRef:h},hasSubcontractorExportStep:i,onSupplyTypeChange:a?P:void 0,onCatalogSourceChange:a?D:void 0})})]})}
78function H1(e){const t=Nf(e.refDes??"");return t.length>0?t.length:Ls(e.quantity)}function Z1({view:e,onViewChange:t}){return n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("span",{className:"text-xs text-muted-foreground",children:"Ansicht"}),n.jsxs(qv,{type:"single",value:e,onValueChange:r=>r&&t(r),className:"justify-start",children:[n.jsx(Xf,{value:"kompakt",className:"h-8 px-3 text-xs",children:"BOM"}),n.jsx(Xf,{value:"fertigung",className:"h-8 px-3 text-xs",children:"Designatoren"})]})]})}function G1({count:e}){return e<=0?null:n.jsxs(bt,{variant:"outline",className:"h-5 border-amber-500/40 px-1.5 text-[10px] font-medium text-amber-800 dark:text-amber-300",children:[e," offen"]})}function Y1({count:e}){return e<=0?null:n.jsxs(bt,{variant:"outline",className:"h-5 border-destructive/50 px-1.5 text-[10px] font-medium text-destructive",children:[e," gelöscht"]})}function J1({articleId:e,revisionId:t,componentGroupsRefreshKey:r=0,bomItems:s,catalogArticles:a,apiArticles:i,view:o,density:l,disabled:d,isEditing:m,bomSearch:p,filteredSearchArticles:h,onBomSearchChange:x,onBomSearchFocus:b,onAddBomItem:w,onUpdateBomItem:v,onRemoveBomItem:S,onMapBomItem:R,onMarkDoNotPlace:E,onDrillDown:A,onCatalogRefresh:I,hasSubcontractorExportStep:C=!1}){const k=kt(e)&&!!t,[j,z]=u.useState([]),[D,B]=u.useState(!1),[T,P]=u.useState(null),[G,W]=u.useState([]);u.useEffect(()=>{lf().then(Q=>W(Q.map(U=>({id:U.id,name:U.name})))).catch(()=>W([]))},[]);const ke=u.useCallback(async()=>{if(!k||!t){z([]);return}B(!0);try{z(await yx(e,t))}catch{M.error("Bauteilgruppen konnten nicht geladen werden.")}finally{B(!1)}},[e,k,t]);u.useEffect(()=>{ke()},[ke,r]);const L=u.useCallback(async()=>{await(I==null?void 0:I()),ke()},[ke,I]),xe=u.useMemo(()=>s.reduce((Q,U)=>Ya(U)?Q:Q+Iy(U.articleId,i)*H1(U),0),[s,i]),Y=u.useMemo(()=>lC(s),[s]),Ne=u.useMemo(()=>new Set(Y.filter(Q=>Q.isUnmapped).map(Q=>Q.bomLineId)).size,[Y]),se=u.useMemo(()=>s.filter(Q=>lu(Q)).length,[s]),J=u.useMemo(()=>Y.filter(Q=>CA(Q.placement)).length,[Y]);return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:[o==="kompakt"&&xe>0||o==="fertigung"?n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground",children:[n.jsx("span",{className:"flex flex-wrap items-center gap-1.5",children:o==="kompakt"&&xe>0?n.jsxs(n.Fragment,{children:[n.jsx(jg,{className:"size-3.5"}),n.jsxs("span",{className:"text-foreground",children:["Material ",Ey(xe)]})]}):null}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o==="fertigung"&&n.jsxs("span",{className:"flex flex-wrap items-center gap-1.5",children:[Y.length," Instanzen",J>0&&` · ${J} mit Koordinaten`,n.jsx(G1,{count:Ne}),n.jsx(Y1,{count:se})]}),j.length>0&&o==="fertigung"&&n.jsxs("span",{children:[j.length," Bauteilgruppen"]})]})]}):null,n.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:n.jsx(W1,{bomItems:s,articles:i,viewMode:o==="fertigung"?"designators":"bom",disabled:d,isEditing:m,hasSubcontractorExportStep:C,onMapBomItem:R,onMarkDoNotPlace:E,onUpdateBomItem:v,onCatalogRefresh:I,addArticle:m&&o==="kompakt"?{search:p,results:h,disabled:d,onSearchChange:x,onSearchFocus:b,onAdd:w}:void 0})}),t?n.jsx(XC,{open:T!=null,onOpenChange:Q=>{Q||P(null)},target:T,assemblyArticleId:e,revisionId:t,catalogArticles:a,typeConfigs:G,onResolved:L}):null]})}function Q1({fileName:e,positionCount:t,importedAt:r,source:s,statusLabel:a,technicalDetails:i,defaultOpen:o=!1,detailsOpen:l,onDetailsOpenChange:d,detailsInScroll:m=!1,className:p}){const h=Mi(),x=l!==void 0,b=!!i||!!d;return n.jsxs(Uv,{defaultOpen:x?void 0:o,open:x?l:void 0,onOpenChange:x?d:void 0,className:ye("rounded-lg border border-border bg-muted/15",p),children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2 px-3 py-2",children:[n.jsx(Jo,{className:"size-4 shrink-0 text-muted-foreground"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("p",{className:"truncate text-xs font-medium text-foreground",children:e}),n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:[h.dateTime(r)," · ",t," Positionen"]})]}),n.jsx(bt,{variant:"secondary",className:"shrink-0 text-[10px] uppercase",children:a??s}),b&&n.jsx(Wv,{asChild:!0,children:n.jsxs(ee,{type:"button",variant:"ghost",size:"sm",className:"group h-7 gap-1 px-2 text-[10px]",children:["Details anzeigen",n.jsx(Yo,{className:"size-3 transition-transform group-data-[state=open]:rotate-180"})]})})]}),i&&!m&&n.jsx(Hv,{className:"border-t border-border px-3 py-2 text-xs text-muted-foreground",children:n.jsx("div",{className:"max-h-[min(42vh,360px)] overflow-y-auto overscroll-contain pr-1",children:i})})]})}
78const dm=["refDes","x","y"];function ib(e,t=ws){const r=new Map(t.map(s=>[s.key,s]));return dm.map(s=>{var i,o;const a=((i=e[s])==null?void 0:i.trim())||null;return{key:s,label:((o=r.get(s))==null?void 0:o.label)??s,mapped:!!a,column:a}})}function pu(e){return ib(e).every(t=>t.mapped)}function X1(e,t){var i,o;const r=new Map;for(const l of t){const d=(i=l.fileColumn)==null?void 0:i.trim(),m=(o=l.systemField)==null?void 0:o.trim();d&&m&&r.set(d.toLowerCase(),m)}const s={},a=new Set;for(const l of e){const d=r.get(l.trim().toLowerCase());d&&!a.has(d)&&(s[d]=l,a.add(d))}return s}function e_(e,t,r){return[{group:"parent",fields:e.parent},{group:"variant",fields:e.variant},{group:"procurement",fields:e.procurement},{group:"placement",fields:e.placement},{group:"other",fields:e.other}].map(({group:a,fields:i})=>n.jsxs(Zv,{children:[n.jsx(Gv,{className:"text-[10px] font-semibold uppercase tracking-wide",children:ay[a]}),i.map(o=>{const l=t.has(o.key)&&o.key!==r;return n.jsxs(ft,{value:o.key,disabled:l,children:[o.label,l?" (belegt)":""]},o.key)})]},a))}function t_({globalDefaults:e,onChange:t,fields:r=ws,definitions:s=[],categories:a=[],suppliers:i=[],disabled:o}){const l=u.useMemo(()=>new Map(r.map(h=>[h.key,h])),[r]),d=u.useMemo(()=>s.find(h=>h.name===e.itemTypeDefinitionName),[s,e.itemTypeDefinitionName]),m=u.useMemo(()=>d?Ha(a,d.id):a,[a,d]);function p(h){const x=e[h]??"";return h==="itemTypeDefinitionName"?n.jsxs(_t,{value:x||"__none__",onValueChange:b=>t({...e,itemTypeDefinitionName:b==="__none__"?"":b,categoryName:""}),disabled:o||s.length===0,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Artikelart wählen"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"â keine Vorgabe â"}),s.map(b=>n.jsx(ft,{value:b.name,children:b.name},b.id))]})]}):h==="categoryName"?n.jsxs(_t,{value:x||"__none__",onValueChange:b=>t({...e,categoryName:b==="__none__"?"":b}),disabled:o||m.length===0,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Warengruppe wählen"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"â keine Vorgabe â"}),m.map(b=>n.jsx(ft,{value:b.name,children:b.name},b.id))]})]}):h==="supplierName"?n.jsxs(_t,{value:x||"__none__",onValueChange:b=>t({...e,supplierName:b==="__none__"?"":b}),disabled:o||i.length===0,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Lieferant wählen"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"â keine Vorgabe â"}),i.map(b=>n.jsx(ft,{value:b.name,children:b.name},b.id))]})]}):n.jsx(Ze,{value:x,onChange:b=>t({...e,[h]:b.target.value}),placeholder:h==="manufacturer"?"z. B. LCSC":"Optionaler Standardwert",className:"h-8 text-xs",disabled:o})}return n.jsxs("div",{className:"rounded-xl border border-border bg-muted/20 px-3 py-2.5",children:[n.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2",children:[n.jsx(ze,{className:"text-xs font-semibold",children:"Global-Overrides (für alle Zeilen)"}),cA(e)?n.jsx(bt,{variant:"outline",className:"text-[10px]",children:"aktiv"}):n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Leer lassen = nur Spalten-Mapping"})]}),n.jsx("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-5",children:pf.map(h=>{var x;return n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-[10px] text-muted-foreground",children:((x=l.get(h))==null?void 0:x.label)??h}),p(h)]},h)})})]})}function n_({mapping:e,fields:t=ws}){const r=ib(e,t),s=pu(e);return n.jsxs("div",{className:ye("flex flex-wrap items-center gap-2 rounded-lg border px-3 py-2",s?"border-emerald-500/30 bg-emerald-500/5":"border-destructive/40 bg-destructive/5"),children:[n.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Pflichtfelder"}),r.map(a=>n.jsxs(bt,{variant:"outline",className:ye("gap-1 text-[10px]",a.mapped?"border-emerald-500/40 text-emerald-700 dark:text-emerald-400":"border-destructive ring-1 ring-destructive/50 text-destructive"),children:[a.mapped?n.jsx(rs,{className:"size-3"}):n.jsx(ks,{className:"size-3"}),a.label,a.mapped&&a.column?n.jsxs("span",{className:"font-normal opacity-80",children:["â ",a.column]}):null]},a.key))]})}function r_(e,t,r){const s=hf(bf(e,t),r),a=s.name||s.description||s.value||s.mpn||s.package||Object.values(e).find(d=>d==null?void 0:d.trim())||"â",i=a!==s.mpn?s.mpn:"",o=s.manufacturer||"",l=[i,o].filter(
78Boolean).join(" · ");return{label:a,sub:l}}function Ef({fileColumns:e,rows:t,columnToField:r,onColumnToFieldChange:s,globalDefaults:a={},onGlobalDefaultsChange:i,fields:o=ws,maxRows:l=12,disabled:d,showGlobalDefaults:m=!0,requireCriticalValidation:p=!0,fillAvailable:h=!1,definitions:x=[],categories:b=[],suppliers:w=[]}){const v=u.useMemo(()=>oA(o),[o]),S=u.useMemo(()=>new Map(o.map(k=>[k.key,k])),[o]),R=u.useMemo(()=>Oo(r),[r]),E=u.useMemo(()=>new Set(Object.values(r).filter(Boolean)),[r]),A=!p||pu(R),I=t.slice(0,l),C=u.useMemo(()=>{const k=new Map;for(const[j,z]of Object.entries(r))z&&dm.includes(z)&&k.set(z,j);return k},[r]);return e.length===0?n.jsx("p",{className:"rounded-lg border border-dashed border-border px-3 py-4 text-center text-xs text-muted-foreground",children:"Keine Spalten erkannt â Header-Zeile oder Trennzeichen prüfen."}):n.jsxs("div",{className:ye("min-w-0 space-y-3",h&&"flex min-h-0 flex-1 flex-col"),children:[m&&i?n.jsx(t_,{globalDefaults:a,onChange:i,fields:o,definitions:x,categories:b,suppliers:w,disabled:d}):null,p?n.jsx(n_,{mapping:R,fields:o}):null,n.jsxs("div",{className:ye("flex items-center justify-between gap-2",h&&"shrink-0"),children:[n.jsx(ze,{className:"text-xs font-semibold",children:"Daten-Vorschau & Spalten-Mapping"}),n.jsxs("div",{className:"flex items-center gap-2",children:[p&&n.jsx(bt,{variant:"outline",className:ye("gap-1 text-[10px]",A?"border-emerald-500/40 text-emerald-700 dark:text-emerald-400":"border-destructive/40 text-destructive"),children:A?"Validiert":"Pflichtfelder fehlen"}),n.jsxs("span",{className:"text-[10px] text-muted-foreground",children:[t.length," Zeile",t.length===1?"":"n"]})]})]}),n.jsx("div",{className:ye("min-w-0 w-full rounded-xl border border-border shadow-sm",h?"min-h-[20rem] flex-1 overflow-auto":"overflow-y-auto max-h-[min(52vh,28rem)]"),children:n.jsxs(Yn,{children:[n.jsx(Jn,{className:"sticky top-0 z-10 bg-background",children:n.jsxs(jt,{className:"bg-muted/40 hover:bg-muted/40",children:[n.jsx(Ve,{className:"min-w-[9rem] border-r border-border/60 bg-muted/60 px-2 py-2 align-bottom",children:n.jsxs("div",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[n.jsx(jg,{className:"size-3"}),"Vorschau"]})}),e.map(k=>{var T;const j=r[k]??"",z=j?Qd(j):null,D=j?C.get(j)===k:!1,B=p&&j&&dm.includes(j);return n.jsx(Ve,{className:ye("min-w-[8.5rem] px-1.5 py-2 align-bottom",D&&"bg-emerald-500/10"),children:n.jsxs("div",{className:"space-y-1",children:[n.jsxs(_t,{value:j||"__none__",onValueChange:P=>s(y0(r,k,P)),disabled:d,children:[n.jsx(It,{className:ye("h-8 w-full text-[11px]",!j&&"border-dashed border-muted-foreground/40",B&&D&&"border-emerald-500/60 bg-emerald-500/5"),children:n.jsx(Et,{placeholder:"Feld wählen â¦"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"â nicht zugeordnet â"}),e_(v,E,j||void 0)]})]}),n.jsxs("div",{className:"flex flex-col gap-0.5",children:[n.jsx("span",{className:"truncate text-[10px] font-medium text-foreground",title:k,children:k}),j&&z?n.jsx(bt,{variant:"outline",className:ye("w-fit px-1 py-0 text-[9px] font-normal",lA[z]),children:((T=S.get(j))==null?void 0:T.label)??ay[z].split(" ")[0]}):null]})]})},k)})]})}),n.jsx(Qn,{children:I.map((k,j)=>{const z=r_(k,R,a);return n.jsxs(jt,{children:[n.jsx(De,{className:"border-r border-border/40 bg-muted/10 py-2 align-top",children:n.jsxs("div",{className:"leading-snug",children:[n.jsx("div",{className:"max-w-[9rem] truncate text-xs font-medium",title:z.label,children:z.label}),z.sub&&n.jsx("div",{className:"mt-0.5 max-w-[9rem] truncate font-mono text-[10px] text-muted-foreground",title:z.sub,children:z.sub})]})}),e.map(D=>{const B=r[D]??"",T=B?Qd(B):null,P=k[D]??"";return n.jsx(De,{className:ye("max-w-[11rem] truncate py-1.5 text-xs",T==="parent"&&"bg-sky-500/[0.04]",T==="variant"&&"bg-violet-500/[0.05]",T==="procurement"&&"bg-emerald-500/[0.04]",T==="placement"&&"bg-amber-500/[0.04]"),title:P,children:P||n.jsx("span",{className:"text-muted-foreground/60",children:"â"})},D)})]},j)})})]})}),t.length>l&&!h&&n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["⦠und ",t.length-l," weitere Zeile",t.length-l===1?"":"n"]}),!h&&n.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Spalten-Header: System-Feld zuordnen · Artikelfelder (blau) vs. Varianten-Felder (violett) · Global-Overrides gelten wenn Zelle leer"})]})}function hh(e){const t=(e.formatId??"").toLowerCase();return e.fileType==="eagle"||t==="yy1"||t==="tvm"?"bom":"material"}function Pf(e){return ws}function mm(e,t,r,s={},a=[]){const i=Object.fromEntries(Object.entries(ob(t,e)).filter(([,o])=>!!o));return{...Hc(e,Pf()),...i,...X1(e,a),...s}}function ob(e,t){const r=new Map(t.map(i=>[i.toLowerCase(),i])),s=(...i)=>{for(const o of i){const l=r.get(o.toLowerCase());if(l)return l}return""},a=e.toLowerCase();return a==="yy1"?{refDes:s("parts","part","designator","refdes"),value:s("value","val","wert"),package:s("package","footprint","device"),name:s("value","val","wert","device","parts"),quantity:s("quantity","qty","menge")}:a==="tvm"?{refDes:s("designator","refdes","parts"),value:s("value","val","wert"),package:s("package","footprint"),name:s("value","val","wert","description"),quantity:s("quantity","qty","menge")}:{}}function gh(e,t,r,s,a){return e.length===0?s:Object.keys(s).length>0?mm(e,t??"generic",r,s,a):mm(e,t??"generic",r,{},a)}function lb({open:e,onOpenChange:t,mappingConfig:r,disabled:s,onSave:a,onApply:i,formatId:o,formatLabel:l,importTarget:d="material",fileColumns:m=[],previewRows:p=[],initialColumnMapping:h,delimiter:x="semicolon",headerRowIndex:b=0,fileLabel:w}){const[v,S]=u.useState([]),[R,E]=u.useState([]),[A,I]=u.useState({}),[C,k]=u.useState({}),[j,z]=u.useState("semicolon"),[D,B]=u.useState(0),[T,P]=u.useState([]),[G,W]=u.useState(!1),ke=u.useMemo(()=>Pf(),[d]),L=u.useMemo(()=>Oo(A),[A]),xe=pu(L),Y=u.useCallback(async U=>{W(!0);try{const ne=await $d(U);return P(ne),ne}catch{return P([]),[]}finally{W(!1)}},[]);u.useEffect(()=>{if(!e)return;let U=!1;return(async()=>{const ne=await Y(o);if(U)return;const H=m.length>0?m:[],Z=h&&Object.keys(h).length>0?h:r.columnMapping??{};S(H),E(p.slice(0,20)),z(x),B(b);const K=gh(H,o,d,Z,ne);I(uc(K)),k(r.globalDefaults??{})})(),()=>{U=!0}},[e,m,p,h,r,x,b,ke,o,d,Y]);const Ne=async(U,ne,H)=>{const Z=await Um(U,{delimiter:ne,headerRowIndex:H,hasHeader:!0,autoDetectDelimiter:!1});S(Z.columns),E(Z.rows.slice(0,20));const K=gh(Z.columns,o,d,{},T);I(uc(K))},se=async U=>{await Ne(U,j,D)},J=async()=>{const U=Object.entries(A).filter(([,ne])=>ne&&ne!=="__none__").map(([ne,H])=>({fileColumn:ne,systemField:H,formatId:o??""}));if(U.length!==0)try{const ne=await Aw({formatId:o??"",mappings:U});P(ne)}catch{M.error("Spaltenzuordnung konnte nicht gespeichert werden.")}},Q=async()=>
78{if(!xe){M.error("Bitte Designator, X und Y zuordnen, bevor die Vorschau gültig ist.");return}const U=Oo(A);await J(),i?i({columnMapping:U,globalDefaults:C,delimiter:j,headerRowIndex:D}):a({...r,fileType:"csv",moduleId:"csv-importer",columnMapping:U,globalDefaults:C,delimiter:j,headerRowIndex:D,...o?{lastFormatId:o}:{}}),t(!1)};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:ye("flex max-h-[92vh] flex-col overflow-hidden",kg),children:[n.jsxs(Tn,{className:"shrink-0",children:[n.jsx(Dn,{children:"Spaltenzuordnung"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Automatische Zuordnung nur bei 100 %-Namensgleichheit (GroÃ/Kleinschreibung egal). Manuelle Zuordnungen werden als persönliche Präferenz gespeichert und beim nächsten Import bevorzugt."}),(w||l)&&n.jsxs("p",{className:"text-xs text-muted-foreground",children:[w&&n.jsxs(n.Fragment,{children:["Datei: ",n.jsx("span",{className:"font-medium text-foreground",children:w}),l?" · ":""]}),l&&n.jsxs(n.Fragment,{children:["Format: ",n.jsx("span",{className:"font-medium text-foreground",children:l}),o?` (${o})`:""]}),G?" · Präferenzen laden â¦":null]})]}),n.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto overscroll-contain pr-1",children:[v.length===0&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-2 block text-xs text-muted-foreground",children:"CSV-Beispieldatei für Spalten-Erkennung"}),n.jsx("input",{type:"file",accept:".csv,.txt,.tsv",disabled:s,onChange:U=>{var H;const ne=(H=U.target.files)==null?void 0:H[0];ne&&se(ne)},className:"block w-full text-xs"})]}),n.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-xs",children:"Trennzeichen"}),n.jsxs(_t,{value:j,onValueChange:U=>z(U),disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"semicolon",children:Os("semicolon")}),n.jsx(ft,{value:"comma",children:Os("comma")}),n.jsx(ft,{value:"tab",children:Os("tab")})]})]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-xs",children:"Header-Zeile (1-basiert)"}),n.jsx("input",{type:"number",min:1,value:D+1,disabled:s,onChange:U=>{const ne=Math.max(1,parseInt(U.target.value,10)||1);B(ne-1)},className:"flex h-8 w-full rounded-md border border-input bg-background px-2 text-xs"})]})]}),v.length>0&&n.jsx(Ef,{fileColumns:v,rows:R,columnToField:A,onColumnToFieldChange:I,globalDefaults:C,onGlobalDefaultsChange:k,disabled:s,fields:ke,maxRows:12})]}),n.jsxs(Xn,{className:"shrink-0 border-t border-border pt-3",children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Abbrechen"}),n.jsx(ee,{type:"button",disabled:s||v.length===0||!xe,onClick:()=>void Q(),children:i?"Ãbernehmen":"Mapping speichern"})]})]})})}function s_(e){const t=e.orderQuantity!=null&&Number.isFinite(e.orderQuantity)?` · ${e.orderQuantity} Stk`:"",r=e.revisionVersion?` Rev ${e.revisionVersion}`:"",s=e.articleNumber||e.articleName||e.articleId.slice(0,8),a=e.createdAt?new Date(e.createdAt).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"}):`AA-${e.workOrderId.slice(0,8)}`;return`${s}${r}${t} · ${a}`}function a_(e,t,r){const s=new Blob([r],{type:t}),a=URL.createObjectURL(s),i=document.createElement("a");i.href=a,i.download=e,i.click(),URL.revokeObjectURL(a)}function i_(e){var t;return((t=e.lcscPartNumber)==null?void 0:t.toUpperCase())==="DNP"?"opacity-50":e.jlcLibraryMatch?"":e.jlcMappingStatus==="suggestion"||e.jlcMappingStatus==="unknown"||!e.lcscPartNumber?"bg-amber-500/10 hover:bg-amber-500/15":""}const cd="__live__";function o_({revisionId:e,supplierId:t,supplierName:r,supplierProfile:s,refreshKey:a=0}){const[i,o]=u.useState([]),[l,d]=u.useState(!0),[m,p]=u.useState(cd),[h,x]=u.useState(!1),[b,w]=u.useState(null),[v,S]=u.useState(null),[R,E]=u.useState(!0),A=m===cd,I=A?null:m,C=u.useCallback(async()=>{d(!0);try{const L=await Mk(e);o(L)}catch{M.error("Produktions-Snapshots konnten nicht geladen werden."),o([])}finally{d(!1)}},[e]);u.useEffect(()=>{C()},[C,a]),u.useEffect(()=>{P()},[m,R]);const k=u.useMemo(()=>i.find(L=>L.snapshotId===m)??null,[i,m]),j=!A&&!!(v!=null&&v.jlcMappingsFrozen),z=(v
78==null?void 0:v.exportFormats)??[],D=(v==null?void 0:v.ghostBlockers)??[],B=D.length>0,T=(v==null?void 0:v.summary.jlcUnmapped)??0,P=u.useCallback(async()=>{var L;x(!0);try{const xe=await Ok(e,{supplierId:t,supplierProfile:s,snapshotId:I,includeUnmapped:R});S(xe),(xe.summary.jlcUnmapped??0)>0?M.message(`${xe.lines.length} Positionen â ${xe.summary.jlcUnmapped??0} ohne Mapping (Export dennoch möglich).`):(((L=xe.ghostBlockers)==null?void 0:L.length)??0)>0?M.error(xe.ghostBlockers[0]??"Import-Platzhalter blockieren den Export."):M.success(`${xe.lines.length} Positionen exportbereit.`)}catch{M.error("Export-Vorschau fehlgeschlagen.")}finally{x(!1)}},[e,t,s,I,R]),G=async L=>{w(L.id);try{const xe=await Lk(e,{formatId:L.id,supplierId:t,supplierProfile:s,snapshotId:I,includeUnmapped:R});a_(xe.filename,xe.mimeType,xe.content)}catch(xe){if(xe instanceof ut){const Y=xe.detail;if(typeof Y=="object"&&Y&&"blockers"in Y){const Ne=Y.blockers??[];M.error(Ne[0]??"Export blockiert.");return}}M.error(`Download â${L.label}â fehlgeschlagen.`)}finally{w(null)}},W=u.useMemo(()=>z,[z]),ke=u.useMemo(()=>v?[...v.lines].sort((L,xe)=>{const Y=!!L.lcscPartNumber,Ne=!!xe.lcscPartNumber;if(Y!==Ne)return Y?-1:1;const se=(L.lcscPartNumber??"").localeCompare(xe.lcscPartNumber??"");if(se!==0)return se;const J=(L.footprint??L.package??"").localeCompare(xe.footprint??xe.package??"");if(J!==0)return J;const Q=(L.comment??L.value??"").localeCompare(xe.comment??xe.value??"");return Q!==0?Q:(L.designator??"").localeCompare(xe.designator??"")}):[],[v]);return n.jsxs("div",{className:"mt-6 space-y-4 rounded-xl border bg-card p-5",children:[n.jsxs("div",{children:[n.jsxs("h3",{className:"text-sm font-semibold",children:["Fremdfertigung â ",r]}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Profil: ",n.jsx("span",{className:"font-medium",children:(v==null?void 0:v.profileLabel)??s})]})]}),n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"min-w-[280px] space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Datenquelle"}),n.jsxs(_t,{value:m,onValueChange:p,children:[n.jsx(It,{className:"h-9 text-xs",children:n.jsx(Et,{placeholder:"Quelle wählen"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:cd,children:"âï¸ Live-Vorschau (aktuelle Revision)"}),l?n.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1.5 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-3 animate-spin"})," Snapshots laden â¦"]}):i.map(L=>n.jsxs(ft,{value:L.snapshotId,children:["ð ",s_(L)]},L.snapshotId))]})]}),k&&n.jsx("p",{className:"text-[10px] text-muted-foreground",children:k.articleName})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(Ir,{id:"include-unmapped",checked:R,onCheckedChange:E}),n.jsx(ze,{htmlFor:"include-unmapped",className:"cursor-pointer text-xs",children:"Ungemappte Bauteile inkludieren"}),v&&T>0&&n.jsxs(bt,{variant:"outline",className:"border-amber-500/50 bg-amber-500/10 text-amber-800 dark:text-amber-300",children:[T," ohne Mapping"]})]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",disabled:h,onClick:()=>void P(),children:[h?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(Ii,{className:"size-3.5"}),h?"Lädt â¦":"Neu laden"]}),W.map(L=>n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",disabled:!v||B||b===L.id,onClick:()=>void G(L),children:[b===L.id?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(xi,{className:"size-3.5"}),L.label]},L.id))]}),B&&n.jsx("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive",children:n.jsx("div",{children:D.map(L=>n.jsx("p",{children:L},L))})}),(h||v&&ke.length>0)&&n.jsxs("div",{className:"overflow-hidden rounded-lg border",children:[v&&n.jsxs("div",{className:`flex items-center gap-1.5 border-b px-3 py-1.5 text-[10px] ${A?"bg-blue-500/10 text-blue-800 dark:text-blue-300":"bg-muted/40 text-muted-foreground"}`,children:[n.jsx("span",{children:A?"âï¸":"ð"}),n.jsx("span",{children:A?"Live-Vorschau â Mappings sofort aktiv. Sobald âProduktion ausführenâ geklickt wird, wird dieser Zustand eingefroren.":j?n.jsxs(n.Fragment,{children:[n.jsx("strong",{children:"Eingefrierter Snapshot."})," Gesetzte Mappings werden erst im n\\u00e4chsten Snapshot (neuer Arbeitsauftrag) wirksam."]}):"Ãlterer Snapshot (kein eingefrorenes Mapping)."})]}),n.jsx("div",{className:"max-h-[480px] overflow-y-auto",children:n.jsxs(Yn,{children:[n.jsx(Jn,{className:"sticky top-0 z-10 bg-muted/90 backdrop-blur-sm",children:n.jsxs(jt,{children:[n.jsx(Ve,{className:"text-xs",children:"Des"}),n.jsx(Ve,{className:"text-xs",children:"Wert"}),n.jsx(Ve,{className:"text-xs",children:"LCSC #"}),n.jsx(Ve,{className:"text-xs",children:"Footprint"}),n.jsx(Ve,{className:"text-right text-xs",children:"X"}),n.jsx(Ve,{className:"text-right text-xs",children:"Y"}),n.jsx(Ve,{className:"text-right text-xs",children:"Rot"})]})}),n.jsx(Qn,{children:h?n.jsx(jt,{children:n.jsxs(De,{colSpan:7,className:"py-8 text-center text-xs text-muted-foreground",children:[n.jsx(Me,{className:"mx-auto mb-1 size-4 animate-spin"}),"Wird geladen â¦"]})}):ke.map(L=>n.jsx(l_,{row:L,frozen:j,onMappingChanged:A?xe=>{S(Y=>{if(!Y)return Y;const Ne=xe.lcscPartNumber.toUpperCase()==="DNP",se=Y.lines.map(J=>{const Q=J.footprint||J.package||"",U=J.comment||J.value||"";return(xe.applyToAll?Q===xe.footprint&&U===xe.value:J.designator===xe.designator)?{...J,lcscPartNumber:xe.l
78cscPartNumber,jlcMappingStatus:"confirmed",jlcMappingConfidence:1,jlcPartLabel:xe.partLabel,jlcProductUrl:Ne?null:`https://www.lcsc.com/product-detail/${xe.lcscPartNumber}.html`,jlcLibraryMatch:!Ne}:J});return{...Y,lines:se}})}:()=>{}},L.designator))})]})})]})]})]})}function l_({row:e,frozen:t,onMappingChanged:r}){const s=e.footprint||e.package||"",a=e.comment||e.value||"";return n.jsxs(jt,{className:i_(e),children:[n.jsx(De,{className:"font-mono text-xs",children:e.designator}),n.jsx(De,{className:"max-w-[120px] truncate text-xs",title:a,children:a||"â"}),n.jsx(De,{children:n.jsx(c_,{row:e,footprint:s,value:a,frozen:t,onMappingChanged:r,designator:e.designator??""})}),n.jsx(De,{className:"max-w-[100px] truncate text-xs",title:s,children:s||"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:e.x??"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:e.y??"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:e.rotation??"â"})]})}function c_({row:e,footprint:t,value:r,frozen:s,onMappingChanged:a,designator:i}){const{articles:o}=Mn(),[l,d]=u.useState(!1),[m,p]=u.useState(!1),[h,x]=u.useState(!1),[b,w]=u.useState([]),[v,S]=u.useState([]),[R,E]=u.useState(""),[A,I]=u.useState(""),[C,k]=u.useState(!1),[j,z]=u.useState(!0),[D,B]=u.useState(null),[T,P]=u.useState(!1),G=e.jlcMappingStatus??"unknown",W=e.lcscPartNumber,ke=(W==null?void 0:W.toUpperCase())==="DNP",L=e.jlcMappingConfidence??0,xe=!ke&&W?e.jlcProductUrl??`https://www.lcsc.com/product-detail/${W}.html`:null,Y=async(K,me)=>{await vx({footprint:t,value:r,package:t,lcscPartNumber:K,partLabel:(me==null?void 0:me.partLabel)??e.jlcPartLabel??r,manufacturer:(me==null?void 0:me.manufacturer)??"",articleId:e.articleId,confidence:(me==null?void 0:me.confidence)??1,source:(me==null?void 0:me.source)??"manual",designator:j?null:i});const $=j?`alle â${r||t}â-Bauteile`:`nur ${i}`;M.success(`${K} gespeichert â gilt für ${$}.`),a({lcscPartNumber:K,partLabel:(me==null?void 0:me.partLabel)??e.jlcPartLabel??r,applyToAll:j,footprint:t,value:r,designator:i})},Ne=async()=>{if(W){x(!0);try{await Y(W,{partLabel:e.jlcPartLabel,confidence:L,source:"suggestion"})}catch{M.error("Bestätigung fehlgeschlagen.")}finally{x(!1)}}},se=u.useCallback(K=>{const $=cl(o,K,{hint:{value:r,package:t},limit:20}),X=/^C\d+$/i,Ie=[];for(const V of $){const Se=(V.supplierParts??[]).filter(Ce=>X.test(Ce.partNumber??""));for(const Ce of Se)Ie.push({lcscPartNumber:Ce.partNumber.toUpperCase(),mpn:Ce.partNumber.toUpperCase(),manufacturer:Ce.supplierName??"",footprint:t,description:V.name??"",productUrl:`https://www.lcsc.com/product-detail/${Ce.partNumber.toUpperCase()}.html`,confidence:1,jlcMappingStatus:"suggestion",stock:0,price:0,source:"catalog",articleId:V.id,articleName:V.name??"",articleNumber:V.articleNumber??""})}return Ie},[o,t,r]),J=u.useRef(null),Q=u.useCallback(async K=>{if(!K.trim()){p(!1);return}p(!0);try{const me=await Rk({footprint:t,value:r,package:t,keyword:K.trim()});S(me.candidates.filter($=>$.source!=="catalog"))}catch{M.error("LCSC-Suche fehlgeschlagen.")}finally{p(!1)}},[t,r]),U=u.useCallback(K=>{if(E(K),w(K.trim()?se(K):[]),J.current&&clearTimeout(J.current),!K.trim()){S([]),p(!1);return}p(!0),J.current=setTimeout(()=>void Q(K),400)},[se,Q]),ne=()=>{const K=[r,t].filter(Boolean).join(" ");I(""),w([]),S([]),B(null),d(!0),U(K),W&&!ke&&(P(!0),tf(W).then(me=>B(me)).catch(()=>B(null)).finally(()=>P(!1)))},H=async()=>{const K=A.trim().toUpperCase();if(K){k(!0);try{await Y(K,{source:"manual_direct"}),d(!1)}catch{M.error("Mapping fehlgeschlagen.")}finally{k(!1)}}},Z=s?n.jsx("div",{className:"flex flex-wrap items-center gap-1.5",children:W?n.jsxs(n.Fragment,{children:[n.jsx(bt,{variant:"outline",className:"font-mono text-[10px]",children:W}),xe&&n.jsx("a",{href:xe,target:"_blank",rel:"noreferrer",className:"text-muted-foreground hover:text-foreground",children:n.jsx(go,{className:"size-3"})})]}):n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"â"})}):W&&(G==="auto"||G==="confirmed")?n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[n.jsx(bt,{variant:"outline",className:"font-mono text-[10px]",children:W}),xe&&n.jsx("a",{href:xe,target:"_blank",rel:"noreferrer",className:"text-muted-foreground hover:text-foreground",children:n.jsx(go,{className:"size-3"})}),n.jsx(ee,{type:"button",size:"sm",variant:"ghost",className:"h-5 px-1 text-[10px] text-muted-foreground",onClick:ne,children:"ändern"})]}):G==="suggestion"&&W?n.jsxs("div",{className:"flex flex-wrap items-center gap-1",children:[n.jsx(bt,{variant:"outline",className:"font-mono text-[10px]",children:W}),n.jsxs(ee,{type:"button",size:"sm",variant:"ghost",className:"h-6 px-2 text-[10px]",disabled:h,onClick:()=>void Ne(),children:[h?n.jsx(Me,{className:"size-3 animate-spin"}):n.jsx(gi,{className:"size-3"}),"Bestätigen"]}),n.jsx(ee,{type:"button",size:"sm",variant:"ghost",className:"h-5 px-1 text-[10px] text-muted-foreground",onClick:ne,children:"ändern"})]}):n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-6 gap-1 px-2 text-[10px]",onClick:ne,children:[n.jsx(Er,{className:"size-3"}),"Suchen"]});return n.jsxs(n.Fragment,{children:[Z,n.jsx(En,{open:l,onOpenChange:K=>{d(K),K||z(!0)},children:n.jsxs(Pn,{className:"max-w-lg",children:[n.jsx(Tn,{children:n.jsxs(Dn,{children:["LCSC-Mapping â ",r||t]})}),W&&!ke&&n.jsxs("div",{className:"flex items-center gap-3 rounded-lg bg-muted/50 px-3 py-2 text-xs",children:[n.jsx("span",{className:"font-mono font-semibold",children:W}),T?n.jsx(Me,{className:"size-3 animate-spin text-muted-foreground"}):(D==null?void 0:D.status)==="ok"?n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:D.stock<=0?"font-medium text-destructive":D.stock<10?"font-medium text-amber-600":"text-emerald-600",children:["Lager ",D.stock.toLocaleStr
78ing("de-DE")]}),D.price>0&&n.jsxs("span",{className:"text-muted-foreground",children:[D.price.toFixed(4)," ",D.currency]})]}):(D==null?void 0:D.status)==="error"?n.jsx("span",{className:"text-muted-foreground",children:"LCSC nicht erreichbar"}):null,xe&&n.jsx("a",{href:xe,target:"_blank",rel:"noreferrer",className:"ml-auto text-muted-foreground hover:text-foreground",children:n.jsx(go,{className:"size-3"})})]}),n.jsxs("div",{className:"flex items-center justify-between rounded-lg border px-3 py-2",children:[n.jsx("div",{className:"text-xs",children:j?n.jsxs(n.Fragment,{children:[n.jsx("strong",{children:"Alle gleichen Bauteile"})," â selbes Wert+Gehäuse"]}):n.jsxs(n.Fragment,{children:[n.jsxs("strong",{children:["Nur ",i]})," â nur dieser eine Eintrag"]})}),n.jsx(Ir,{checked:j,onCheckedChange:z})]}),n.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 rounded-lg border border-dashed border-border px-3 py-2 text-left text-xs text-muted-foreground transition-colors hover:border-foreground/30 hover:bg-muted/40 hover:text-foreground",onClick:()=>void Y("DNP",{partLabel:"Nicht bestücken",source:"manual"}).then(()=>d(!1)),children:[n.jsx("span",{className:"shrink-0 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium",children:"DNP"}),n.jsxs("span",{children:["Nicht bestücken ",n.jsx("span",{className:"text-muted-foreground/60",children:"(Do Not Place)"})]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx("label",{className:"text-xs font-medium",children:"LCSC-Nummer direkt eingeben"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("input",{type:"text",placeholder:"z.B. C14663",value:A,onChange:K=>I(K.target.value),onKeyDown:K=>{K.key==="Enter"&&H()},className:"h-8 w-full rounded border bg-background px-2 font-mono text-xs focus:outline-none focus:ring-1 focus:ring-ring"}),n.jsxs(ee,{type:"button",size:"sm",className:"h-8 shrink-0",disabled:!A.trim()||C,onClick:()=>void H(),children:[C?n.jsx(Me,{className:"size-3 animate-spin"}):n.jsx(gi,{className:"size-3"}),"Ãbernehmen"]})]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx("label",{className:"text-xs font-medium",children:"Suche"}),n.jsxs("div",{className:"relative",children:[n.jsx("input",{type:"text",autoFocus:!0,value:R,onChange:K=>U(K.target.value),placeholder:"Bauteil suchen â¦",className:"h-8 w-full rounded border bg-background px-2 pr-7 text-xs focus:outline-none focus:ring-1 focus:ring-ring"}),m&&n.jsx(Me,{className:"absolute right-2 top-1/2 size-3.5 -translate-y-1/2 animate-spin text-muted-foreground"})]})]}),n.jsxs("div",{className:"max-h-52 space-y-1.5 overflow-y-auto",children:[b.length>0&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Artikelstamm"}),b.map(K=>n.jsx(xh,{candidate:K,onSelect:()=>void Y(K.lcscPartNumber,{partLabel:K.articleName||K.description||K.mpn,manufacturer:K.manufacturer,confidence:K.confidence,source:"catalog"}).then(()=>d(!1))},`catalog-${K.articleId}-${K.lcscPartNumber}`))]}),m?n.jsxs("p",{className:"py-2 text-center text-xs text-muted-foreground",children:[n.jsx(Me,{className:"mx-auto mb-1 size-3.5 animate-spin"}),"LCSC wird durchsucht â¦"]}):v.length>0?n.jsxs(n.Fragment,{children:[n.jsx("p",{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground ${b.length>0?"mt-2":""}`,children:"LCSC"}),v.map(K=>n.jsx(xh,{candidate:K,onSelect:()=>void Y(K.lcscPartNumber,{partLabel:K.description||K.mpn,manufacturer:K.manufacturer,confidence:K.confidence,source:"manual_search"}).then(()=>d(!1))},`lcsc-${K.lcscPartNumber}`))]}):!m&&b.length===0?n.jsx("p",{className:"py-4 text-center text-sm text-muted-foreground",children:"Keine Treffer gefunden."}):null]}),n.jsx(Xn,{})]})})]})}function xh({candidate:e,onSelect:t}){const r=e.source==="catalog",s=(e.stock??0)>0,a=e.stock!=null?`${e.stock.toLocaleString("de-DE")} Stk`:null,i=e.price!=null&&e.price>0?`⬠${e.price.toFixed(4)}`:null;return n.jsxs("button",{type:"button",className:"flex w-full flex-col rounded border px-2 py-1.5 text-left text-xs hover:bg-muted",onClick:t,children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"font-mono font-medium",children:e.lcscPartNumber}),r&&e.articleNumber&&n.jsx("span",{className:"rounded bg-primary/10 px-1 text-[9px] font-medium text-primary",children:e.articleNumber})]}),n.jsx("span",{className:"truncate text-muted-foreground",children:r?e.articleName||e.description:e.description||e.mpn}),(a||i)&&n.jsxs("div",{className:"mt-0.5 flex items-center gap-2 text-[10px]",children:[a&&n.jsx("span",{className:s?"text-emerald-600 dark:text-emerald-400":"text-destructive",children:a}),i&&n.jsx("span",{className:"text-muted-foreground",children:i})]})]})}function u_(e){const t=e.exportTemplate??{},r=typeof t.profileId=="string"?t.profileId.trim():typeof t.profile_id=="string"?t.profile_id.trim():"";return r?{supported:!0,profileId:r}:e.apiConnectorId==="lcsc"?{supported:!0,profileId:"jlcpcb_pcba"}:{supported:!1,reason:"Für diesen Lieferanten ist kein Export-Profil hinterlegt (exportTemplate.profileId oder LCSC-Connector)."}}const yh={import_bom:"Stückliste importieren",validate_stock:"Bestand prüfen",machine_export:"Maschinen-Export",subcontractor_export:"Fremdfertigung (Export)",book_output:"Fertigware buchen",manual_checkpoint:"Manueller Schritt"};function d_(e){return JSON.stringify(e.map(t=>({sequence:t.sequence,stepType:t.stepType,label:t.label,machineId:t.machineId??null,supplierId:t.supplierId??null,isRequired:t.isRequired,config:t.config??{}})))}function m_(e){return JSON.stringify(e.map(t=>({sequence:t.sequence,stepType:t.stepType,label:t.label,machineId:t.machineId??null,supplierId:t.supplierId??null,isRequired:t.isRequired,config:t.config??{}})))}function bh(e){return{sequence:e,stepType:"validate_stock",label:"",isRequired:!0,config:{}}}function f_({articleId:e,revisionId:t,revisionStatus:r,disabled:s,snapshotRefreshKey:a=0,onRouteSaved:i}){const o=kt(e)&&t&&kt(t),[l,d]=u.useState(!1),[m,p]=u.useState(!1),[h,x]=u.useState(null),[b,w]=u.useState("Standard-Route"),[v,S]=u.useState([]),[R,E]=u.useState(!1),[A,I]=u.useState([]),[C,k]=u.useState([]),j=u.useCallback(async()=>{try{const[Y,Ne]=await Promise.all([Xm(),Lo()]);I(Y),k(Ne)}catch{I([]),k([])}},[]),z=u.useCallback(async()=>
78{if(!o||!t){x(null);return}d(!0);try{const Y=await Vl(e,t);Y?(x(Y),w(Y.name),S(Y.links.map(Ne=>({sequence:Ne.sequence,stepType:Ne.stepType,label:Ne.label,machineId:Ne.machineId,supplierId:Ne.supplierId,config:Ne.config??{},isRequired:Ne.isRequired})))):(x(null),w("Standard-Route"),S([bh(10)]))}catch{M.error("Fertigungsroute konnte nicht geladen werden.")}finally{d(!1)}},[e,t,o]);u.useEffect(()=>{j()},[j]),u.useEffect(()=>{z()},[z]);const D=u.useMemo(()=>!h||b!==h.name?!0:d_(v)!==m_(h.links),[h,b,v]),B=u.useMemo(()=>(h==null?void 0:h.links.find(Y=>Y.stepType==="subcontractor_export"&&Y.supplierId&&kt(Y.supplierId)))??null,[h]),T=u.useMemo(()=>C.find(Y=>Y.id===(B==null?void 0:B.supplierId))??null,[C,B]),P=u.useMemo(()=>T?u_(T):null,[T]),G=!D&&!!(B!=null&&B.supplierId)&&!!T&&(P==null?void 0:P.supported)===!0,W=async()=>{if(!t)throw new Error("missing revision");if(h)return h;const Y=await ql(e,t,{name:b,mappingConfig:{},status:r==="active"?"active":"draft"});return x(Y),Y},ke=async()=>{if(!(!o||!t)){p(!0);try{const Y=await ql(e,t,{name:b,mappingConfig:(h==null?void 0:h.mappingConfig)??{},status:h==null?void 0:h.status}),Ne=await bw(e,Y.id,v);x(Ne),await(i==null?void 0:i()),M.success("Fertigungsroute gespeichert.")}catch{M.error("Fertigungsroute konnte nicht gespeichert werden.")}finally{p(!1)}}},L=async Y=>{if(t){p(!0);try{const Ne=await W(),se=await ql(e,t,{name:Ne.name,mappingConfig:Y,status:Ne.status});x(se),M.success("Import-Mapping gespeichert.")}catch{M.error("Mapping konnte nicht gespeichert werden.")}finally{p(!1)}}},xe=(Y,Ne)=>{S(se=>se.map((J,Q)=>Q===Y?{...J,...Ne}:J))};return o?l?n.jsxs("div",{className:"flex items-center gap-2 py-8 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Route wird geladen â¦"]}):n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(bt,{variant:"outline",children:(h==null?void 0:h.status)??"draft"}),r&&n.jsxs(bt,{variant:"secondary",children:["Revision: ",r]})]}),n.jsxs("div",{className:"grid max-w-md gap-2",children:[n.jsx("label",{className:"text-xs text-muted-foreground",children:"Routenname"}),n.jsx(Ze,{value:b,onChange:Y=>w(Y.target.value),disabled:s||m,className:"h-8"})]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",disabled:s||m,onClick:()=>E(!0),children:[n.jsx(Po,{className:"size-3.5"}),"Import-Mapping"]}),n.jsx(ee,{type:"button",size:"sm",disabled:s||m,onClick:()=>void ke(),children:m?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Route speichern"}),D&&n.jsx(bt,{variant:"outline",className:"text-[10px] text-amber-700",children:"Ungespeicherte Ãnderungen"})]}),n.jsx("div",{className:"overflow-hidden rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"h-8 w-16 text-xs",children:"Seq."}),n.jsx(Ve,{className:"h-8 text-xs",children:"Schritt"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Bezeichnung"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Ressource"}),n.jsx(Ve,{className:"h-8 w-10"})]})}),n.jsx(Qn,{children:v.map((Y,Ne)=>n.jsxs(jt,{children:[n.jsx(De,{className:"py-2",children:n.jsx(Ze,{type:"number",className:"h-8 w-16 text-xs",value:Y.sequence,disabled:s,onChange:se=>xe(Ne,{sequence:parseInt(se.target.value,10)||10})})}),n.jsx(De,{className:"py-2",children:n.jsxs(_t,{value:Y.stepType,onValueChange:se=>{const J=se;xe(Ne,{stepType:J,machineId:J==="machine_export"?Y.machineId:null,supplierId:J==="subcontractor_export"?Y.supplierId:null})},disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{})}),n.jsx(Pt,{children:Object.entries(yh).map(([se,J])=>n.jsx(ft,{value:se,children:J},se))})]})}),n.jsx(De,{className:"py-2",children:n.jsx(Ze,{value:Y.label,placeholder:yh[Y.stepType],className:"h-8 text-xs",disabled:s,onChange:se=>xe(Ne,{label:se.target.value})})}),n.jsx(De,{className:"py-2",children:Y.stepType==="machine_export"?n.jsxs(_t,{value:Y.machineId??"",onValueChange:se=>xe(Ne,{machineId:se||null}),disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Maschine wählen"})}),n.jsx(Pt,{children:A.map(se=>n.jsx(ft,{value:se.id,children:se.name},se.id))})]}):Y.stepType==="subcontractor_export"?n.jsxs(_t,{value:Y.supplierId??"",onValueChange:se=>xe(Ne,{supplierId:se||null}),disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Lieferant wählen"})}),n.jsx(Pt,{children:C.map(se=>n.jsx(ft,{value:se.id,children:se.name},se.id))})]}):n.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),n.jsx(De,{className:"py-2 text-right",children:n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7",disabled:s,onClick:()=>S(se=>se.filter((J,Q)=>Q!==Ne)),children:n.jsx(or,{className:"size-3.5"})})})]},`${Y.sequence}-${Ne}`))})]})}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",disabled:s,onClick:()=>S(Y=>[...Y,bh((Y.length+1)*10)]),children:[n.jsx(Gn,{className:"size-3.5"}),"Schritt hinzufügen"]}
78),!D&&B&&T&&P&&!P.supported&&n.jsxs("div",{className:"mt-6 rounded-lg border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-xs text-amber-900 dark:text-amber-100",children:["Lieferant â",T.name,"â hat kein unterstütztes Export-Profil."," ",P.reason]}),G&&t&&(B==null?void 0:B.supplierId)&&T&&(P==null?void 0:P.supported)&&n.jsx(o_,{revisionId:t,supplierId:B.supplierId,supplierName:T.name,supplierProfile:P.profileId,refreshKey:a}),n.jsx(lb,{open:R,onOpenChange:E,mappingConfig:(h==null?void 0:h.mappingConfig)??{},disabled:s||m,onSave:Y=>void L(Y)})]}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Fertigungsroute ist verfügbar, sobald der Artikel mit Revision gespeichert wurde."})}const ud=[{id:"datenquelle",label:"Datenquelle"},{id:"stueckliste",label:"Stückliste"},{id:"route",label:"Fertigungsroute"}];function p_({currentStep:e,completedSteps:t,onStepChange:r,disabled:s,allowFreeNavigation:a=!1}){const i=ud.findIndex(o=>o.id===e);return n.jsx("nav",{"aria-label":"Produktionsablauf",className:"w-full",children:n.jsx("ol",{className:"flex items-center gap-0",children:ud.map((o,l)=>{const d=o.id===e,m=t.includes(o.id),p=l<i,h=!s&&(a||m||p||d);return n.jsxs("li",{className:"flex min-w-0 flex-1 items-center",children:[n.jsxs("button",{type:"button",disabled:!h,onClick:()=>h&&r(o.id),className:ye("group flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-2 text-left transition-colors",h&&"hover:bg-muted/60",!h&&"cursor-default opacity-60"),children:[n.jsx("span",{className:ye("flex size-6 shrink-0 items-center justify-center rounded-full border text-[11px] font-semibold",d&&"border-primary bg-primary text-primary-foreground",!d&&m&&"border-primary/40 bg-primary/10 text-primary",!d&&!m&&"border-border bg-muted/40 text-muted-foreground"),children:m&&!d?n.jsx(gi,{className:"size-3.5"}):l+1}),n.jsx("span",{className:ye("truncate text-xs font-medium",d?"text-foreground":"text-muted-foreground"),children:o.label})]}),l<ud.length-1&&n.jsx("div",{className:ye("mx-1 hidden h-px min-w-[12px] flex-1 sm:block",p||m?"bg-primary/30":"bg-border"),"aria-hidden":!0})]},o.id)})})})}const vh=/^C\d{3,}$/i;function h_(e){const t=e.trim().toLowerCase();return t?t==="lcsc"||t==="jlc"||t.includes("lcsc")||t.includes("jlcpcb")||t.includes("jlc ")||t.startsWith("jlc/"):!1}function g_(e){let t=(e.supplierName??"").trim(),r=(e.supplierPartNumber??"").trim();const s=(e.mpn??"").trim(),a=(e.manufacturer??"").trim();return!r&&vh.test(s)&&(r=s),!t&&r&&vh.test(r)&&(t="LCSC"),!t&&h_(a)&&(t="LCSC",!r&&s&&(r=s)),!t||!r?null:{supplierName:t,partNumber:r}}function x_(e,t,r=[]){return e.map(s=>{const a=No(s),i=nu(s),o=a?t.find(d=>d.id===a):void 0,l=i?r.find(d=>d.id===i):void 0;return{id:crypto.randomUUID(),articleId:a??Y0(s.id),variantId:i??J0(s.id),articleNumber:(o==null?void 0:o.articleNumber)??s.name,name:(o==null?void 0:o.name)??Wa(s),variantMpn:(l==null?void 0:l.mpn)??s.mpn,variantManufacturer:(l==null?void 0:l.manufacturer)??s.manufacturer,referenceKey:(o==null?void 0:o.articleNumber)??s.name,quantity:s.quantity,refDes:s.refDes}})}function y_(e,t){const r=QA(t.definitions,e.itemTypeDefinitionName)??t.definitions.find(i=>i.id===t.defaultDefinitionId)??t.definitions[0];if(!r)throw new Error("Keine Artikelart für den Import konfiguriert.");const s=JA(t.categories,e.categoryName)??(t.defaultCategoryId?t.categories.find(i=>i.id===t.defaultCategoryId):void 0),a=s&&s.itemTypeDefinitionId===r.id?s:void 0;return{definition:r,category:a}}function b_(e,t,r,s,a){const i=(t==null?void 0:t.id)??`def:${r.id}`,o=a.get(i);if(o!=null){const p=o+1;return a.set(i,p),String(p)}const l=[...e.existingArticleNumbers,...s];let d;if(t)d=tm(t.id,e.categories,l);else{let h=r.numberPrefix+2e4;for(const x of l){const b=$o(x);b!=null&&b>h&&(h=b)}d=String(h+1)}const m=$o(d);return m!=null&&a.set(i,m),d}function Nh(e){const t=(e??"").trim().replace(",",".");if(!t)return null;const r=Number.parseFloat(t);return Number.isFinite(r)&&r>=0?r:null}async function jh(e,t,r){const s=g_(t);if(s)try{if(!(r!=null&&r.assumeEmpty)){const a=await Jc(e),i=s.partNumber.trim().toLowerCase();if(a.some(l=>l.partNumber.trim().toLowerCase()===i&&l.supplierName.trim().toLowerCase()===s.supplierName.trim().toLowerCase())||a.some(l=>l.partNumber.trim().toLowerCase()===i))return;await pc(e,{supplierName:s.supplierName,partNumber:s.partNumber,isPrimary:a.length===0});return}await pc(e,{supplierName:s.supplierName,partNumber:s.partNumber,isPrimary:!0})}catch(a){console.warn("[import] Beschaffungslink konnte nicht angelegt werden",{articleId:e,sourcing:s,error:a})}}async function cb(e,t,r){let s=0,a=0,i=0,o=0,l=0;const d=[],m=[],p=new Map,h=[],{onProgress:x,bookQuantity:b=!1}=r;await Promise.resolve();let w=null;if(b)try{const I=await ef(),C=I.find(k=>k.isDefault)??I[0];w=(C==null?void 0:C.id)??null}catch{}const v=e.filter(I=>!(I.matchStatus==="conflict"&&!I.selectedArticleId&&!I.selectedVariantId));let S=0;const R=()=>{x&&x(Math.min(++S,v.length),v.length)};for(const I of e){if(I.matchStatus==="conflict"&&!I.selectedArticleId&&!I.selectedVariantId){i++;continue}if(No(I))continue;const{definition:k,category:j}=y_(I,t),z=Wa(I).trim()||I.name.trim(),D=Nh(I.purchasePrice),B=b_(t,j,k,m,p);m.push(B);const T=Nc(I.mpn),P=vc(I.manufacturer);h.push({row:I,payload:{articleNumber:B,name:z,description:"",category:(j==null?void 0:j.id)??"",itemType:k.behaviorType,itemTypeDefinitionId:k.id,typ:"",value:I.value??"",package:I.package??"",price:D??0,stock:0,unit:"Stk",attributes:{...I.value?{value:
78I.value}:{},...I.package?{package:I.package}:{}},activeRevision:null,supplierParts:[],...T?{variant:{mpn:T,manufacturer:P}}:{}}})}const E=h.length>0?await rk(h.map(I=>I.payload)):[],A=new Map;h.forEach((I,C)=>{const k=E[C];k&&A.set(I.row.id,k)});for(const I of e){if(I.matchStatus==="conflict"&&!I.selectedArticleId&&!I.selectedVariantId)continue;const C=Wa(I).trim()||I.name.trim(),k=Nc(I.mpn),j=vc(I.manufacturer),z=Nh(I.purchasePrice),D=!No(I);let B=No(I);if(B)I.parentMatchStatus==="match"&&(await r.updateArticle(B,{name:C||void 0,value:I.value||void 0,package:I.package||void 0,...z!=null?{price:z}:{},attributes:{...I.value?{value:I.value}:{},...I.package?{package:I.package}:{}}}),await jh(B,I),a++);else{const P=A.get(I.id);if(!P){i++;continue}if(B=P.id,d.push(B),await jh(B,I,{assumeEmpty:!0}),s++,b&&w&&I.quantity>0)try{await jx(B,{toLocationId:w,quantity:I.quantity,referenceType:"RECEIPT"}),l++}catch{}}!nu(I)&&B&&!D?(await sk(B,{mpn:k,manufacturer:j}),o++):D&&k&&o++,R()}return(d.length>0||o>0)&&Ym(),{created:s,updated:a,skipped:i,variantsCreated:o,createdArticleIds:d,quantityBooked:l}}function ci(e){return{id:crypto.randomUUID(),at:new Date().toISOString(),...e}}function v_(e,t){return[...e,t].slice(-500)}function N_(e){return e.map(t=>({...t,persisted:!0}))}function j_(e){const t=new Date(e.at).toLocaleString("de-DE");switch(e.action){case"field_edit":return`${t} · ${e.refDes??e.rowId??"Zeile"} · ${e.field}: â${e.before??"â"}â â â${e.after??"â"}â`;case"article_assign":return`${t} · ${e.refDes??e.rowId??"Zeile"} · zugeordnet: ${e.articleNumber??e.articleId??"â"}`;case"article_create":return`${t} · ${e.refDes??e.rowId??"Zeile"} · Bauteil angelegt: ${e.articleNumber??"â"}`;case"import_commit":return`${t} · Import gespeichert${e.label?`: ${e.label}`:""}`;default:return`${t} · ${e.label??e.action}`}}const k_=new Set(["field_edit","article_assign","article_create","import_commit"]);function w_(e){const t=[];for(const r of e){if(r.eventType!=="bom_changed")continue;const s=r.changes.filter(i=>i.field==="bom.bulk_import"||i.field.startsWith("bom.import."));if(s.length===0)continue;const a=r.createdAt??new Date().toISOString();t.push({id:`${r.id}:commit`,at:a,action:"import_commit",label:r.summary||"Stücklisten-Import",persisted:!0});for(const i of s){if(!i.field.startsWith("bom.import."))continue;const o=i.field.slice(11),l=k_.has(o)?o:"import_commit";l!=="import_commit"&&t.push({id:`${r.id}:${i.field}:${t.length}`,at:a,action:l,before:i.releasedValue!=null?String(i.releasedValue):void 0,after:i.draftValue!=null?String(i.draftValue):void 0,label:i.draftValue!=null?String(i.draftValue):void 0,persisted:!0})}}return t}function ub({open:e,onOpenChange:t,entries:r}){const s=[...r].sort((a,i)=>i.at.localeCompare(a.at));return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-w-2xl",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Import-Protokoll"})}),n.jsx(qa,{className:"max-h-[min(60vh,480px)] pr-3",children:s.length===0?n.jsx("p",{className:"py-8 text-center text-sm text-muted-foreground",children:"Noch keine Einträge."}):n.jsx("ul",{className:"space-y-2 text-xs leading-relaxed",children:s.map(a=>n.jsxs("li",{className:"rounded-md border border-border/60 bg-muted/20 px-3 py-2 font-mono",children:[n.jsx("span",{className:"block text-[11px] text-foreground",children:j_(a)}),a.persisted?n.jsx("span",{className:"mt-1 block text-[10px] text-emerald-600 dark:text-emerald-400",children:"In Datenbank gespeichert"}):n.jsx("span",{className:"mt-1 block text-[10px] text-muted-foreground",children:"Nur lokal (Cache)"})]},a.id))})})]})})}function S_(e){var s,a;const t=new Map,r=i=>{if(!i)return;const o=`${i.name}\0${i.size}\0${i.lastModified}`;t.has(o)||t.set(o,i)};if((s=e.items)!=null&&s.length)for(let i=0;i<e.items.length;i++){const o=e.items[i];(o==null?void 0:o.kind)==="file"&&r(o.getAsFile())}if((a=e.files)!=null&&a.length)for(let i=0;i<e.files.length;i++)r(e.files[i]??null);return[...t.values()]}const A_=.95,C_=["designator","refdes","ref_des","reference","parts","refs"],__=["artikelnummer","article_number","sku","mpn","manufacturer","hersteller","value","wert","quantity","menge"];function db(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"")}function I_(e,t){const r=db(e);return t.some(s=>r.includes(s.replace(/_/g,""))||s.replace(/_/g,"")===r)}function eo(e,t){return e.some(r=>I_(r,t))}function kr(e,...t){return t.some(r=>{var s;return!!((s=e[r])!=null&&s.trim())})}function E_(e,t,r){if(r.fileType==="eagle")return"bom";const s=(r.formatId??"").toLowerCase();if(s==="tvm"||s==="yy1")return"bom";const a=kr(t,"refDes")||eo(e,C_),i=(kr(t,"x")||eo(e,["x","posx","mid_x"]))&&(kr(t,"y")||eo(e,["y","posy","mid_y"])),o=kr(t,"rotation")||eo(e,["rotation","rot","angle"]);return a&&(i||o)?"placement":kr(t,"mpn","value","name")||eo(e,__)?"material":a&&kr(t,"value","package","quantity")?"bom":"unknown"}function P_(e,t){const r=e.toLowerCase();return r==="tvm"?"TVM-Standard":r==="yy1"?"YY1-Standard":r==="eagle"?"Eagle BRD":t==="placement"?"Bestückungsdaten":t==="material"?"Material-Stückliste":t==="bom"?"BOM-Standard":"CSV-Standard"}function T_(e,t,r){const s=e.toLowerCase(),a=t.map(db);if(s==="tvm"){const i=["designator","value","package"],o=["quantity","footprint"];let l=0;for(const d of i)a.some(m=>m.includes(d))&&(l+=.25),r.refDes&&d==="designator"&&(l+=.05),r.value&&d==="value"&&(l+=.05),r.package&&d==="package"&&(l+=.05);for(const d of o)a.some(m=>m.includes(d))&&(l+=.05);return Math.min(1,l)}if(s==="yy1"){const o=["parts","value","device","package"].filter(d=>a.some(m=>m.includes(d))).length,l=r.refDes&&(r.value||r.name);return Math.min(1,o*.22+(l?.12:0))}return 0}function D_(e,t,r,s,a){if(a!=null&&a.columnMapping&&Object.keys(a.columnMapping).length>0)return .98;if(e.fileType==="eagle")return 1;const i=(e.formatId??"generic").toLowerCase();if(i==="tvm"||i==="yy1"){const l=T_(i,t,r),d=i==="tvm"?kr(r,"refDes")&&kr(r,"value"):kr(r,"refDes")&&kr(r,"value","name");return l>=.75&&d?Math.max(.96,l):l}if(s==="placement"){const l=kr(r,"refDes"),d=kr(r,"x")&&kr(r,"y");if(l&&d)return .97;if(l&&kr(r,"rotation"))return .96}return s==="bom"&&kr(r,"refDes")&&kr(r,"value")?.96:e.confidence??0}function R_(e){const t=Hc(e,ws),r=ob("generic",e);return{...t,...r}}function dd(e,t,r={}
78){const{preset:s,existingMapping:a={},userPreferences:i=[]}=r;let o,l;s!=null&&s.columnMapping&&Object.keys(s.columnMapping).length>0?(o={...s.columnMapping,...a},l=s.importTarget??hh(e)):e.fileType==="eagle"?(o={},l="bom"):(l=hh(e),o=mm(t,e.formatId,l,{...e.columnMapping??{},...a},i));let d=E_(t,o,e);d==="placement"&&(o=R_(t),l="bom");const m=D_(e,t,o,d,s),h=(d!=="placement"||pu(o))&&m>=A_,x=s!=null&&s.formatLabel?`${s.formatLabel} (gespeichert)`:P_(e.formatId,d);return{role:d,columnMapping:o,importTarget:l,autoConfigured:h,confidence:m,presetLabel:x,skipManualMapping:h}}function M_(e){if(e.length<2)return null;const t=e.find(s=>s.fileRole==="material"||s.fileRole==="bom"),r=e.find(s=>s.fileRole==="placement");return!t||!r?null:{materialSlotId:t.id,placementSlotId:r.id,materialFileName:t.file.name,placementFileName:r.file.name,joinField:"refDes",message:`Ich erkenne: â${t.file.name}" enthält Artikel-/Stücklistendaten und â${r.file.name}" enthält Koordinaten (Bestückung). Soll ich beide über den Designator verknüpfen?`}}function O_({presetLabel:e,confidence:t,fileRole:r,onEditMapping:s,className:a}){const i=t!=null?`${Math.round(t*100)}%`:null;return n.jsxs("div",{className:ye("flex flex-wrap items-center gap-x-3 gap-y-2 rounded-lg border border-primary/25 bg-primary/5 px-3 py-2 text-xs",a),children:[n.jsx(Bs,{className:"size-3.5 shrink-0 text-primary","aria-hidden":!0}),n.jsxs("p",{className:"min-w-0 flex-1 text-foreground",children:["Format automatisch erkannt",i?` (${i})`:"",". Spaltenzuordnung:"," ",n.jsx("span",{className:"font-medium",children:e}),r==="placement"&&n.jsx("span",{className:"text-muted-foreground",children:" · Bestückungsdaten"}),s&&n.jsxs(n.Fragment,{children:[" ",n.jsx("button",{type:"button",onClick:s,className:"font-medium text-primary underline-offset-2 hover:underline",children:"(Ãndern?)"})]})]})]})}function L_({message:e,onAccept:t,onDecline:r,busy:s,className:a}){return n.jsxs("div",{className:ye("flex flex-col gap-3 rounded-lg border border-border bg-muted/30 px-3 py-3 text-xs sm:flex-row sm:items-center",a),children:[n.jsx("p",{className:"min-w-0 flex-1 text-foreground",children:e}),n.jsxs("div",{className:"flex shrink-0 gap-2",children:[n.jsx(ee,{type:"button",size:"sm",variant:"outline",disabled:s,onClick:r,children:"Nein, getrennt"}),n.jsx(ee,{type:"button",size:"sm",disabled:s,onClick:t,children:"Ja, verknüpfen"})]})]})}const to=2;function kh(e){return e.analysis.fileType==="eagle"?"eagle":e.analysis.fileType==="xlsx"?"xlsx":"csv"}function z_(){return crypto.randomUUID()}function wh(e){return e.analysis.fileType==="eagle"?"eagle":`csv:${e.fileRole}`}const B_=/\.(step|stp|gcode|nc|zip|dxf|pdf)$/i;function F_(e,t){const r=zi(t);if(r.include.length===0&&r.exclude.length===0)return e;const s=a=>[a.value,a.package,a.name,a.mpn,a.refDes,a.manufacturer,a.eagleLibrary].filter(Boolean).join(" ");return e.filter(a=>My(s(a),t))}function md(e){return e===" "?"tab":e===","?"comma":"semicolon"}function $_(e){const t=e.formatPresets;return!t||typeof t!="object"?{}:t}function K_(e){return/gerber|\.gbr/i.test(e)?"gerber":/\.brd$/i.test(e)?"board":(/\.step|\.stp$/i.test(e),"other")}function V_({articleId:e,revisionId:t,articleNumber:r,articleName:s,bomItems:a,fileImportModuleIds:i,eagleImportModuleIds:o,moduleConfigs:l,mappingConfig:d,disabled:m,className:p,onBomImport:h,onAttachments:x,onStagingImportCommitted:b,onEagleImportCommitted:w,onMappingConfigSave:v,onImportCompleted:S,onImportActivityChange:R,onImportPreviewCleared:E}){const{articles:A,suppliers:I,refreshArticlesAfterImport:C,settings:k}=Mn(),{session:j}=os(),z=j==null?void 0:j.tenantId,D=u.useRef(null),B=u.useRef(null),T=u.useRef(null),P=u.useRef(0),G=u.useRef(0),W=u.useRef(null),ke=u.useRef(!1),[L,xe]=u.useState([]),Y=u.useRef([]);Y.current=L;const[Ne,se]=u.useState(null),[J,Q]=u.useState(!1),[U,ne]=u.useState(!1),[H,Z]=u.useState([]),[K,me]=u.useState([]),[$,X]=u.useState([]),[Ie,V]=u.useState([]),[Se,Ce]=u.useState(new Set),Be=Ur(),[Le,rt]=u.useState(()=>Be.importStagingViewMode),[lt,Tt]=u.useState(!1),[vt,Pe]=u.useState(null),[it,yt]=u.useState(null),[wt,an]=u.useState(null),[qt,Qt]=u.useState([]),[en,Wt]=u.useState(()=>Be.importStagingFilterQuery),[on,mn]=u.useState([]),[ln,cn]=u.useState(!1),[Oe,re]=u.useState(null),ve=u.useRef([]);ve.current=qt,u.useEffect(()=>{uu({importStagingViewMode:Le,importStagingFilterQuery:en})},[Le,en]),u.useEffect(()=>{if(!z||!t)return;const pe=BA(z,e,t);if(T.current=`${z}:${e}:${t}`,ke.current){ke.current=!1,pe!=null&&pe.slots.length&&Rl(z,e,t);return}pe!=null&&pe.slots.length&&(xe(pe.slots.map(VA)),se(pe.activeSlotId),rt(pe.stagingViewMode),Wt(pe.stagingFilterQuery??Ur().importStagingFilterQuery),Ce(new Set(pe.selectedStagingRowIds)),mn(pe.changeLog??[]))},[z,e,t]),u.useEffect(()=>{C()},[e,t,C]);const _e=u.useCallback(pe=>{mn($e=>v_($e,pe))},[]);u.useEffect(()=>{if(!z||!t)return;const pe=`${z}:${e}:${t}`;if(T.current!==pe){T.current=pe;return}W.current!==null&&(window.clearTimeout(W.current),W.current=null);const $e=G.current;return W.current=window.setTimeout(()=>{if(W.current=null,$e===G.current){if(L.length===0){Rl(z,e,t);return}by(z,e,t,{activeSlotId:Ne,stagingViewMode:Le,stagingFilterQuery:en,selectedStagingRowIds:[...Se],slots:L.map(KA),changeLog:on})}},400),()=>{W.current!==null&&(window.clearTimeout(W.current),W.current=null)}},[z,e,t,L,Ne,Le,en,Se,on]),u.useEffect(()=>{lf().then(V).catch(()=>V([])),$d().then(Qt).catch(()=>Qt([])),Ri().then(async pe=>{Z(pe),me(await iu(pe))}).catch(()=>{Z([]),me([])})},[]),u.useEffect(()=>{R==null||R(L.length>0)},[L.length,R]);const te=u.useMemo(()=>L.find(pe=>pe.id===Ne)??L[0]??null,[L,Ne]),nt=u.useCallback((pe,$e)=>{xe(st=>st.map(ct=>ct.id===pe?{...ct,...$e}:ct))},[]),Fe=u.useCallback(pe=>{xe($e=>{const st=$e.filter(ct=>ct.id!==pe);return se(ct=>{var Gt;return ct!==pe?ct:((Gt=st[0])==null?void 0:Gt.id)??null}),st})},[]),be=u.useCallback(()=>{P.current+=1,G.current+=1,ke.current=!0,W.current!==null&&(window.clearTimeout(W.current),W.current=null),xe([]),se(null),Ce(new Set),Wt(""),Pe(null),yt(null),an(null),D.current&&(D.current.value=""),z&&t&&Rl(z,e,t),E==null||E()},[z,e,t,E]),Ye=u.useMemo(()=>i[0]?xc(i[0]):void 0,[i]),ge=u.useMemo(()=>o[0]?xc(o[0]):void 0,[o]),He=u.useMemo(()=>$_(d),[d]),hn=u.useMemo(()=>({bomItems:a.map(pe=>({articleNumber:pe.articleNumber,name:pe.name,referenceKey:pe.referenceKey,quantity:pe.quantity,refDes:pe.refDe
78s})),articleName:s,articleNumber:r}),[a,s,r]),Ht=u.useCallback(async(pe,$e,st)=>Um(pe,{delimiter:$e,headerRowIndex:st,hasHeader:!0,autoDetectDelimiter:!1}),[]),_n=u.useCallback(async(pe,$e)=>{if($e.fileType==="document"||!$e.importable){if($e.fileType==="document"||B_.test(pe.name)){const sn={id:crypto.randomUUID(),name:pe.name,kind:K_(pe.name),mimeType:pe.type,sizeBytes:pe.size,file:pe};X(Cn=>[...Cn,sn]),x([sn]),M.message(`â${pe.name}" als Dokument-Anhang gespeichert.`)}return null}let st=md($e.delimiter),ct=$e.headerRowIndex??0;const Gt=$e.fileType==="eagle"?{...l[o[0]??""]??{}}:{},Mt=He[$e.formatId];let Yt=!1,Ot=[],Nt=[];if(Mt!=null&&Mt.columnMapping&&Object.keys(Mt.columnMapping).length>0&&(Yt=!0,Mt.delimiter&&(st=md(Mt.delimiter)),Mt.headerRowIndex!=null&&(ct=Mt.headerRowIndex)),$e.fileType==="csv"){const sn=await Ht(pe,Yt&&(Mt!=null&&Mt.delimiter)?md(Mt.delimiter):st,Yt&&(Mt==null?void 0:Mt.headerRowIndex)!=null?Mt.headerRowIndex:ct);Ot=sn.columns,Nt=sn.rows}else $e.fileType==="xlsx"&&M.message("Excel-Datei erkannt â bitte Spalten im Mapping-Dialog zuordnen.");const gt=dd($e,Ot,{preset:Mt??null,userPreferences:ve.current});return Yt&&Ye?M.success(`Format â${$e.formatLabel}" erkannt â gespeichertes Mapping angewendet.`):gt.autoConfigured&&M.success(`${gt.presetLabel} automatisch erkannt (${Math.round(gt.confidence*100)}%).`),{id:z_(),file:pe,uploadedAt:new Date().toISOString(),analysis:$e,delimiter:st,headerRowIndex:ct,csvColumns:Ot,csvRows:Nt,columnMapping:gt.columnMapping,globalDefaults:{},importTarget:gt.importTarget,rememberedFormat:Yt||gt.autoConfigured,eagleConfig:Gt,stagingRows:null,fallbackTypeConfigId:null,fileRole:gt.role,autoConfigured:gt.autoConfigured,autoConfidence:gt.confidence,autoPresetLabel:gt.presetLabel,skipManualMapping:gt.skipManualMapping}},[Ye,o,He,l,x,Ht]),[wn,vn]=u.useState(!1),fn=u.useRef(0),Nn=u.useRef(!1),zt=u.useRef(!0),[tn,On]=u.useState(!1),An=u.useCallback(async pe=>{if(!(m||pe.length===0)){ke.current=!1,G.current+=1,On(!0);try{const $e=Math.max(0,to-Y.current.length),st=pe.slice(0,$e);st.length<pe.length&&M.message(`Maximal ${to} Import-Dateien gleichzeitig.`);const ct=await Promise.allSettled(st.map(async Nt=>{const gt=await yw(e,t,Nt),sn=await _n(Nt,gt);return{file:Nt,slot:sn}})),Gt=[],Mt=[];for(let Nt=0;Nt<ct.length;Nt++){const gt=ct[Nt],sn=st[Nt];if(gt.status==="fulfilled")gt.value.slot&&Gt.push(gt.value.slot);else{const Cn=gt.reason instanceof Error&>.reason.message?gt.reason.message:"Analyse fehlgeschlagen";Mt.push(`${(sn==null?void 0:sn.name)??"Datei"}: ${Cn}`)}}if(Mt.length>0&&M.error(Mt.slice(0,3).join(" · ")),Gt.length===0)return;let Yt=[];xe(Nt=>{Yt=[...Nt];for(const gt of Gt){const sn=wh(gt);Yt=Yt.filter(Cn=>wh(Cn)!==sn),Yt.push(gt)}return Yt=Yt.slice(-to),Yt}),se(Gt[Gt.length-1].id);const Ot=M_(Yt);Ot?(Pe(Ot),yt(null)):(Pe(null),yt(null),Yt.every(gt=>gt.skipManualMapping||gt.analysis.fileType==="eagle")&&an({slots:Yt,slotId:Yt[Yt.length-1].id,mergeFiles:Yt.length>1}))}catch($e){const st=$e instanceof Error&&$e.message?$e.message:"Datei konnte nicht analysiert werden.";M.error(st)}finally{On(!1)}}},[e,_n,m,t]),Ln=u.useCallback(pe=>{pe.preventDefault(),pe.stopPropagation(),fn.current+=1,!Nn.current&&zt.current&&vn(!0)},[]),pr=u.useCallback(pe=>{pe.preventDefault(),pe.stopPropagation(),pe.dataTransfer.dropEffect="copy",!Nn.current&&zt.current&&vn(!0)},[]),Un=u.useCallback(pe=>{pe.preventDefault(),pe.stopPropagation(),fn.current=Math.max(0,fn.current-1),fn.current===0&&vn(!1)},[]),yr=u.useCallback(pe=>{if(pe.preventDefault(),pe.stopPropagation(),fn.current=0,vn(!1),Nn.current||!zt.current)return;const $e=S_(pe.dataTransfer);$e.length&&An($e)},[An]),Sr=u.useCallback(async(pe,$e,st)=>{Tt(!0);try{return await ad(pe,$e,{onProgress:st})}finally{Tt(!1)}},[]),zn=u.useCallback(async(pe,$e,st={},ct)=>{const Gt=pe.find(Nt=>Nt.id===$e)??pe[0];if(!Gt)return;const Mt=P.current,Yt=st.mergeFiles??(pe.length>1&&it!==!1),Ot=Yt?pe:pe.filter(Nt=>Nt.id===$e);Q(!0);try{const Nt=[];for(const Xt of Ot){if(Xt.analysis.fileType==="eagle"){if(!ge)throw new Error("Eagle-Import ist nicht aktiv. Bitte unter Konfiguration â Schnittstellen aktivieren.");ct==null||ct({done:0,total:1,label:`Eagle-Datei ${Xt.file.name} wird gelesen â¦`});const tr=await ge.process({files:[Xt.file],attachments:[],config:Xt.eagleConfig,context:hn});if(!tr.success)throw new Error(tr.message??`Eagle-Import fehlgeschlagen (${Xt.file.name}).`);const Bn=yf(tr.bomItems??[],"eagle");if(!Bn.length)throw new Error(`Keine Bauteile in ${Xt.file.name} gefunden.`);Nt.push(...Bn);continue}if(Xt.csvRows.length>0){const tr=my(Xt.csvRows,Xt.columnMapping,Xt.fileRole,Xt.globalDefaults);if(!tr.length&&Xt.csvRows.length>0)throw Object.values(Xt.columnMapping).some(Boolean)?Xt.fileRole==="placement"?new Error(`Keine Bestückungszeilen in â${Xt.file.name}" â Designator oder X/Y zuordnen.`):new Error(`Keine verwertbaren Zeilen in â${Xt.file.name}" â Mapping prüfen.`):new Error(`Bitte Spalten für â${Xt.file.name}" zuordnen.`);Nt.push(...tr)}}if(!Nt.length)throw new Error("Keine Import-Daten â Dateien und Spaltenzuordnung prüfen.");const gt=Yt&&Ot.length>1?N0(Nt):Nt;Yt&&Ot.length>1&&M.message(`${Ot.length} Dateien zusammengeführt â ${gt.length} Positionen.`),ct==null||ct({done:0,total:0,label:"Varianten-Katalog wird geladen â¦"});const sn=await Yc();ct==null||ct({done:0,total:gt.length,label:"Bauteile werden zugeordnet â¦"});const Cn=Gt.importTarget==="bom",vr=xf(gt,A,sn,{matchingKeyTemplate:Cn?Li(k):eu(k)});if(ct==null||ct({done:0,total:vr.length,label:Cn?"Stückliste wird vorbereitet â¦":"Artikelnummern werden vergeben â¦"}),Mt!==P.current)return;nt(Gt.id,{stagingRows:Cn?vr:await Sr(vr,Gt.fallbackTypeConfigId,(Xt,tr)=>{ct==null||ct({done:Xt,total:tr,label:"Artikelnummern werden vergeben â¦"})})}),Ce(new Set)}catch(Nt){const gt=Nt instanceof Error&&Nt.message?Nt.message:"Unerwarteter Fehler bei der Vorschau.";throw M.error(gt),Nt}finally{Q(!1)}},[Sr,A,ge,it,hn,nt]),Ar=async()=>{!te||L.length===0||vo("Import-Vorschau wird erstellt â¦",async pe=>{await zn(L,te.id,{mergeFiles:L.length>1&&it!==!1},pe)},{successMessage:()=>"Vorschau bereit â bitte Positionen prüfen.",errorMessage:pe=>pe instanceof Error&&pe.message?pe.message:"Vorschau fehlgeschlagen"})},We=()=>{yt(!0),Pe(null),te&&zn(L,te.id,{mergeFiles:!0})},Bt=()=>{yt(!1),Pe(null),te&&zn(L,te.id,{mergeFiles:!1})};u.useEffect(()=>{if(!wt||vt)return;const{slots:pe,slotId:$e,mergeFiles:st}=wt;an(null),vo("Eagle-Stückliste wird vorbereitet â¦",async ct=>{await zn(pe,$e,{mergeFiles:st},ct)},{successMessage:()=>"Eagle-Vorschau bereit â bitte Positionen prüfen.",errorMessage:ct=>ct instanceof Error&&ct.message?ct.message:"Eagle-Vorschau fehlgeschlagen"})},[wt,vt,zn]);const un=async()=>
78{if(!te)return;const pe=await Ht(te.file,te.delimiter,te.headerRowIndex),$e=dd(te.analysis,pe.columns,{userPreferences:ve.current});nt(te.id,{csvColumns:pe.columns,csvRows:pe.rows,columnMapping:$e.columnMapping,importTarget:$e.importTarget,fileRole:$e.role,autoConfigured:$e.autoConfigured,autoConfidence:$e.confidence,autoPresetLabel:$e.presetLabel,skipManualMapping:$e.skipManualMapping,stagingRows:null,rememberedFormat:!1})},gn=async pe=>{if(!pe.analysis.formatId)return;const $e={...He};$e[pe.analysis.formatId]={formatId:pe.analysis.formatId,formatLabel:pe.analysis.formatLabel,delimiter:Wc(pe.delimiter),headerRowIndex:pe.headerRowIndex,columnMapping:{...pe.columnMapping},importTarget:pe.importTarget},await v({...d,formatPresets:$e,lastFormatId:pe.analysis.formatId})},br=async pe=>{var $e;if(($e=te==null?void 0:te.stagingRows)!=null&&$e.length){Tt(!0);try{const st=await ad(te.stagingRows,pe);nt(te.id,{stagingRows:st,fallbackTypeConfigId:pe})}finally{Tt(!1)}}},Pr=u.useCallback((pe,$e)=>{if(!te)return;const st=(te.stagingRows??[]).find(ct=>ct.id===pe);st&&($e.value!==void 0&&$e.value!==st.value&&_e(ci({action:"field_edit",rowId:pe,refDes:st.refDes,field:"value",before:st.value,after:$e.value})),$e.package!==void 0&&$e.package!==st.package&&_e(ci({action:"field_edit",rowId:pe,refDes:st.refDes,field:"package",before:st.package,after:$e.package})),nt(te.id,{stagingRows:A1(te.stagingRows??[],pe,$e,Le)}))},[te,_e,Le,nt]);u.useCallback((pe,$e)=>{if(!te)return;const st=(te.stagingRows??[]).find(Gt=>Gt.id===pe),ct=A.find(Gt=>Gt.id===$e);nt(te.id,{stagingRows:Ac(te.stagingRows??[],pe,$e,A,Le)}),_e(ci({action:"article_assign",rowId:pe,refDes:st==null?void 0:st.refDes,articleId:$e,articleNumber:ct==null?void 0:ct.articleNumber}))},[te,_e,A,Le,nt]),u.useCallback(async pe=>{if(!te)return;const $e=(te.stagingRows??[]).find(st=>st.id===pe);if($e){re(pe);try{const st=await ab($e,te.fallbackTypeConfigId);await C();const ct=[...A,st.article].filter((Gt,Mt,Yt)=>Yt.findIndex(Ot=>Ot.id===Gt.id)===Mt);nt(te.id,{stagingRows:Ac(te.stagingRows??[],pe,st.article.id,ct,Le)}),_e(ci({action:"article_create",rowId:pe,refDes:$e.refDes,articleId:st.article.id,articleNumber:st.article.articleNumber})),M.success(st.created?`Bauteil ${st.article.articleNumber} angelegt`:`Bestehender Artikel ${st.article.articleNumber} zugeordnet`)}catch(st){M.error(st instanceof Error?st.message:"Bauteil konnte nicht angelegt werden")}finally{re(null)}}},[te,_e,A,C,Le,nt]);const xn=()=>{var Nt,gt;if(!((Nt=te==null?void 0:te.stagingRows)!=null&&Nt.length))return;const pe=te.importTarget==="bom";if(!pe){if(te.stagingRows.some(vr=>vr.matchStatus==="conflict"&&!vr.selectedArticleId)){M.error("Bitte alle Konflikte auflösen.");return}if(b1(te.stagingRows,te.fallbackTypeConfigId)){M.error("Bitte eine Fallback-Warengruppe für nicht klassifizierte Bauteile wählen.");return}const Cn=v1(te.stagingRows);if(Cn.length>0){const vr=Cn.map(tr=>tr.warengruppeWarning).filter(Boolean).join(` 79 80`);if(!window.confirm(`${vr} 81 82Trotzdem als neue Artikel anlegen und importieren?`))return}}const $e=String(te.eagleConfig.mergeStrategy??((gt=l[i[0]??""])==null?void 0:gt.mergeStrategy)??"append")==="replace",st=kh(te),ct=te.stagingRows,Gt=te.importTarget,Mt=te,Yt=Mt.id,Ot=on;vo("Stückliste wird importiert",async sn=>{let Cn=ct;pe||ct.some(Bn=>{var ls;return!Bn.isGhost&&du(Bn)&&!((ls=Bn.proposedArticleNumber)!=null&&ls.trim())})&&(sn({done:0,total:ct.length,label:"Artikelnummern werden vergeben â¦"}),Cn=await ad(ct,Mt.fallbackTypeConfigId??null,{onProgress:(Bn,ls)=>{sn({done:Bn,total:ls,label:"Artikelnummern werden vergeben â¦"})}}),nt(Yt,{stagingRows:Cn}));const vr=ci({action:"import_commit",label:Mt.file.name}),Xt=N_([...Ot,vr]);sn({done:0,total:Cn.length,label:"Stückliste wird importiert"}),b?await b(Cn,$e,Gt,{onProgress:(tr,Bn,ls)=>{sn({done:tr,total:Bn,label:ls??"Stückliste wird importiert"})},changeLog:Xt,filename:Mt.file.name}):w?await w(Cn,$e):h(x_(Cn,A),$e);try{await gn(Mt)}catch{}return sn({done:Cn.length,total:Cn.length}),Xt},{successMessage:()=>"Import bestätigt â weiter zur Stückliste.",onSuccess:async sn=>{try{await v({...d,stagingChangeLog:sn,stagingChangeLogSavedAt:new Date().toISOString()})}catch{}S({fileName:Mt.file.name,positionCount:ct.length,source:st,changeLog:sn}),z&&Rl(z,e,t),Fe(Yt)}})},Wn=ge==null?void 0:ge.configSchema,Kn=!!m||tn,$r=L.length<to;Nn.current=Kn,zt.current=$r;const Jr=L.length>0,er=te!=null&&te.stagingRows&&te.stagingRows.length>0?te.stagingRows:null,Vn=u.useMemo(()=>er?F_(er,en):null,[er,en]),yn=te?kh(te):"csv",Qr=er?"Vorschau":te!=null&&te.autoConfigured?"Auto":te!=null&&te.rememberedFormat?"Mapping aktiv":te?"Analysiert":void 0,Cs=()=>
82{if(!te)return null;const{analysis:pe,delimiter:$e,headerRowIndex:st,csvColumns:ct,rememberedFormat:Gt,eagleConfig:Mt}=te,Yt=pe.fileType==="csv"&&ct.length>0&&!te.skipManualMapping&&!Gt&&!er,Ot=pe.fileType==="eagle";return n.jsxs("div",{className:"space-y-2 text-xs text-muted-foreground",children:[pe.message?n.jsx("p",{children:pe.message}):null,L.length>1&&!er?n.jsxs("p",{className:"rounded border border-border bg-muted/20 px-2 py-1.5",children:[L.length," Dateien â Tabs zum Wechseln. Vorschau führt Zeilen über Designator / MPN zusammen."]}):null,Ot?n.jsx("p",{className:"rounded border border-border bg-muted/20 px-2 py-1.5",children:"Eagle/Stückliste â optional Layer anpassen, dann âVorschau & Validierungâ."}):null,pe.fileType==="csv"&&Gt?n.jsxs("p",{className:"rounded border border-primary/20 bg-primary/5 px-2 py-1.5 text-foreground",children:["Format â",pe.formatLabel,"â â gespeichertes Mapping aktiv."]}):null,Yt?n.jsxs("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-4",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-[10px]",children:"Trennzeichen"}),n.jsxs(_t,{value:$e,onValueChange:Nt=>{nt(te.id,{delimiter:Nt}),un()},disabled:m,children:[n.jsx(It,{className:"h-7 text-xs",children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"semicolon",children:Os("semicolon")}),n.jsx(ft,{value:"comma",children:Os("comma")}),n.jsx(ft,{value:"tab",children:Os("tab")})]})]})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-[10px]",children:"Header-Zeile"}),n.jsx(Ze,{type:"number",min:1,value:st+1,onChange:Nt=>{const gt=Math.max(1,parseInt(Nt.target.value,10)||1);nt(te.id,{headerRowIndex:gt-1})},onBlur:()=>void un(),className:"h-7 text-xs",disabled:m})]})]}):null,pe.fileType==="eagle"&&Wn&&Wn.length>0?n.jsx("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-4",children:Wn.map(Nt=>n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-[10px]",children:Nt.label}),Nt.type==="select"&&Nt.options?n.jsxs(_t,{value:String(Mt[Nt.key]??Nt.defaultValue??""),onValueChange:gt=>nt(te.id,{eagleConfig:{...Mt,[Nt.key]:gt}}),disabled:m,children:[n.jsx(It,{className:"h-7 text-xs",children:n.jsx(Et,{})}),n.jsx(Pt,{children:Nt.options.map(gt=>n.jsx(ft,{value:gt.value,children:gt.label},gt.value))})]}):n.jsx(Ze,{value:String(Mt[Nt.key]??Nt.defaultValue??""),onChange:gt=>nt(te.id,{eagleConfig:{...Mt,[Nt.key]:gt.target.value}}),className:"h-7 text-xs",disabled:m})]},Nt.key))}):null]})},Sa=te&&te.analysis.fileType==="csv"&&te.csvColumns.length>0&&!te.skipManualMapping&&!te.rememberedFormat&&!er,Zt=()=>te?n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 overflow-hidden",children:[n.jsx("div",{className:"shrink-0",children:Cs()}),Sa&&te.csvRows.length>0&&n.jsx(Ef,{fileColumns:te.csvColumns,rows:te.csvRows,columnToField:uc(te.columnMapping),onColumnToFieldChange:pe=>nt(te.id,{columnMapping:Oo(pe),stagingRows:null,skipManualMapping:!1}),globalDefaults:te.globalDefaults??{},onGlobalDefaultsChange:pe=>nt(te.id,{globalDefaults:pe,stagingRows:null}),fields:Pf(te.importTarget),definitions:H,categories:K,suppliers:I,fillAvailable:!0,maxRows:20,disabled:m,requireCriticalValidation:te.importTarget==="bom"})]}):null;return n.jsxs("div",{className:ye("relative flex min-h-0 flex-1 flex-col overflow-hidden",p),onDragEnter:Ln,onDragOver:pr,onDragLeave:Un,onDrop:yr,children:[wn&&$r&&!Kn&&n.jsxs("div",{className:"pointer-events-none absolute inset-0 z-50 flex flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-primary bg-primary/10 ring-2 ring-primary/20","aria-hidden":!0,children:[n.jsx(xo,{className:"size-10 text-primary"}),n.jsx("span",{className:"text-sm font-semibold text-primary",children:"Datei(en) loslassen â¦"}),n.jsx("span",{className:"text-xs text-muted-foreground",children:"Eagle BRD + TVM/YY1-CSV gleichzeitig möglich"})]}),n.jsx("input",{ref:D,type:"file",accept:".csv,.txt,.tsv,.xlsx,.xls,.brd",multiple:!0,className:"sr-only",onChange:pe=>{const $e=[...pe.target.files??[]];$e.length&&An($e),pe.target.value=""}}),!Jr&&n.jsx("div",{className:"shrink-0 pb-1",children:n.jsx("div",{role:"button",tabIndex:Kn?-1:0,"aria-disabled":Kn,onClick:()=>{var pe;Kn||(pe=D.current)==null||pe.click()},onKeyDown:pe=>{var $e;
82Kn||(pe.key==="Enter"||pe.key===" ")&&(pe.preventDefault(),($e=D.current)==null||$e.click())},className:ye("flex w-full shrink-0 cursor-pointer flex-col items-center gap-1.5 rounded-lg border px-3 py-5 text-center transition-colors",Kn&&"cursor-not-allowed opacity-50",!Kn&&(wn?"border-primary bg-primary/10 ring-2 ring-primary/25":"border-dashed border-border hover:border-primary/40 hover:bg-primary/[0.02]")),children:tn?n.jsxs(n.Fragment,{children:[n.jsx(Me,{className:"size-7 animate-spin text-primary"}),n.jsx("span",{className:"text-sm font-medium",children:"Analysiere Datei â¦"})]}):n.jsxs(n.Fragment,{children:[n.jsx(xo,{className:ye("size-7",wn?"text-primary":"text-muted-foreground")}),n.jsx("span",{className:"text-sm font-medium",children:wn?"Datei(en) loslassen â¦":"Stücklisten-Datei(en) hier ablegen"}),n.jsxs("span",{className:"text-[10px] text-muted-foreground",children:["Bis zu ",to," Dateien (z. B. Eagle BRD + YY1/TVM-CSV)"]})]})})}),Jr&&te&&n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 overflow-hidden",children:[vt&&!er&&n.jsx("div",{className:"shrink-0",children:n.jsx(L_,{message:vt.message,onAccept:We,onDecline:Bt,busy:J})}),te.autoConfigured&&!vt&&!er&&n.jsx("div",{className:"shrink-0",children:n.jsx(O_,{presetLabel:te.autoPresetLabel,confidence:te.autoConfidence,fileRole:te.fileRole,onEditMapping:void 0})}),n.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-2",children:[L.length>1&&L.map(pe=>n.jsxs("button",{type:"button",onClick:()=>se(pe.id),className:ye("flex max-w-[min(100%,240px)] items-center gap-1.5 rounded-md border px-2 py-1 text-left text-[11px] transition-colors",pe.id===te.id?"border-primary bg-primary/5":"border-border hover:bg-muted/40"),children:[n.jsx("span",{className:"truncate font-medium",children:pe.file.name}),n.jsx(bt,{variant:"outline",className:"shrink-0 px-1 py-0 text-[9px]",children:pe.fileRole==="placement"?"Bestückung":pe.analysis.formatLabel})]},pe.id)),$r&&n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1 px-2 text-[11px]",disabled:Kn,onClick:()=>{var pe;return(pe=D.current)==null?void 0:pe.click()},children:[n.jsx(xo,{className:"size-3.5"}),"Weitere Datei"]})]}),n.jsx("div",{className:"shrink-0 rounded-md border border-border bg-muted/15 px-2.5 py-1.5",children:n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:te.file.name}),Qr?n.jsx(bt,{variant:"secondary",className:"shrink-0 text-[9px] uppercase",children:Qr}):null,n.jsx(bt,{variant:"outline",className:"shrink-0 text-[9px] uppercase",children:yn})]})}),er?n.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card",children:[n.jsxs("div",{className:"shrink-0 border-b border-border px-2 py-2",children:[n.jsx(If,{rows:er,viewMode:Le,showMatchBadges:te.importTarget!=="bom"}),n.jsxs("div",{className:"mt-2 flex flex-wrap items-end gap-2",children:[n.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-1",children:[n.jsx(ee,{type:"button",size:"sm",variant:Le==="bom"?"default":"outline",className:"h-8 px-2 text-[11px]",onClick:()=>rt("bom"),children:"BOM"}),n.jsx(ee,{type:"button",size:"sm",variant:Le==="designators"?"default":"outline",className:"h-8 px-2 text-[11px]",onClick:()=>rt("designators"),children:"Designatoren"}),n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-8 gap-1 px-2 text-[11px] text-destructive hover:bg-destructive/10 hover:text-destructive",disabled:m||lt,title:"Import-Vorschau und Datei entfernen",onClick:()=>be(),children:[n.jsx(Ad,{className:"size-3"}),"Vorschau leeren"]})]}),n.jsx("div",{className:"min-w-[200px] flex-1",children:te.importTarget!=="bom"?n.jsxs(n.Fragment,{children:[n.jsx(ze,{className:"text-[10px] text-muted-foreground",children:"Fallback-Warengruppe"}),n.jsxs(_t,{value:te.fallbackTypeConfigId??"",onValueChange:pe=>{br(pe||null)},disabled:m||lt,children:[n.jsx(It,{className:"mt-0.5 h-8",children:n.jsx(Et,{placeholder:"Warengruppe wählen â¦"})}),n.jsx(Pt,{children:Ie.map(pe=>n.jsx(ft,{value:pe.id,children:pe.name},pe.id))})]})]}):n.jsxs("p",{className:"text-[10px] leading-snug text-muted-foreground",children:["Es werden nur Stücklistenpositionen angelegt â Artikel-Zuordnung später in Schritt â¡."," ",Cy]})}),lt?n.jsxs("span",{className:"inline-flex items-center gap-1 text-[10px] text-muted-foreground",children:[n.jsx(Me,{className:"size-3 animate-spin"}),"Nummern â¦"]}):null,n.jsxs("div",{className:"relative min-w-[140px] max-w-xs flex-1",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:en,onChange:pe=>Wt(pe.target.value),placeholder:"Tabelle durchsuchen ⦠(Teilwort, -wort / NOT)",className:"h-8 pl-8 text-xs"})]}),te.importTarget!=="bom"?n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-8 gap-1 px-2 text-[11px]",onClick:()=>cn(!0),children:[n.jsx(Cd,{className:"size-3"}),"Protokoll",on.length>0?` (${on.length})`:""]}):null]})]}),n.jsx("div",{ref:B,className:"min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain",onWheel:pe=>pe.stopPropagation(),children:n.jsx(fu,{rows:Vn??er,articles:A,showNumbering:!0,viewMode:Le,bomLinesOnly:te.importTarget==="bom",preferredAssemblyMo
82de:te.importTarget==="bom"?"import-preview":"off",selectedRowIds:Se,onSelectedRowIdsChange:Ce,onDeleteSelected:()=>{if(Se.size===0)return;const pe=(te.stagingRows??[]).filter($e=>!Se.has($e.id));nt(te.id,{stagingRows:pe}),Ce(new Set)},onProposedArticleNumberChange:(pe,$e)=>nt(te.id,{stagingRows:(te.stagingRows??[]).map(st=>st.id===pe?{...st,proposedArticleNumber:$e,articleNumberManual:!0}:st)}),onConfirmHashMatch:pe=>nt(te.id,{stagingRows:(te.stagingRows??[]).map($e=>{if($e.id!==pe)return $e;const st=$e.matchedArticleIds[0],ct=A.find(Gt=>Gt.id===st);return{...$e,hashMatchConfirmed:!0,matchStatus:"match",selectedArticleId:st??$e.selectedArticleId,proposedArticleNumber:(ct==null?void 0:ct.articleNumber)??$e.proposedArticleNumber}})}),onSelectArticle:()=>{},onRowFieldChange:te.importTarget==="bom"?void 0:Pr,mappingEnabled:!1,showStatusColumn:!1,disabled:m||lt})}),te.importTarget!=="bom"?n.jsx(ub,{open:ln,onOpenChange:cn,entries:on}):null,n.jsxs("div",{className:"sticky bottom-0 z-10 flex shrink-0 items-center justify-between gap-2 border-t border-border bg-card px-2 py-1.5 shadow-[0_-4px_12px_rgba(0,0,0,0.06)]",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5 text-destructive hover:bg-destructive/10 hover:text-destructive",disabled:m||lt,onClick:()=>be(),children:[n.jsx(Ad,{className:"size-3.5"}),"Vorschau leeren"]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(ee,{type:"button",variant:"outline",size:"sm",disabled:m,onClick:()=>nt(te.id,{stagingRows:null}),children:"Zurück"}),n.jsx(ee,{type:"button",size:"sm",disabled:m,onClick:xn,children:"Import bestätigen"})]})]})]}):n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:Zt()}),n.jsxs("div",{className:"flex shrink-0 justify-end gap-2 border-t border-border pt-1.5",children:[n.jsx(ee,{type:"button",variant:"outline",size:"sm",disabled:m,onClick:()=>Fe(te.id),children:"Datei entfernen"}),te.analysis.importable&&te.analysis.fileType!=="document"&&n.jsx(ee,{type:"button",size:"sm",disabled:m||J||te.analysis.fileType==="csv"&&!te.csvRows.length,onClick:()=>void Ar(),children:J?n.jsx(Me,{className:"size-4 animate-spin"}):"Vorschau & Validierung"})]})]})]}),$.length>0&&n.jsxs("div",{className:"space-y-2 rounded-lg border border-border bg-muted/10 p-3",children:[n.jsxs("div",{className:"flex items-center gap-2 text-xs font-semibold",children:[n.jsx(Yv,{className:"size-3.5"}),"Dokumente (kein Stücklisten-Import)"]}),n.jsx("ul",{className:"space-y-1.5",children:$.map(pe=>n.jsxs("li",{className:"flex items-center justify-between rounded-md border border-border bg-background px-3 py-2",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[n.jsx(Jv,{className:"size-3.5 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"truncate text-xs font-medium",children:pe.name}),n.jsx(bt,{variant:"outline",className:"text-[9px]",children:pe.kind})]}),!m&&n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-6 text-muted-foreground hover:text-destructive",onClick:()=>X($e=>$e.filter(st=>st.id!==pe.id)),children:n.jsx(or,{className:"size-3"})})]},pe.id))})]}),n.jsx(lb,{open:U,onOpenChange:ne,mappingConfig:d,disabled:m,formatId:te==null?void 0:te.analysis.formatId,formatLabel:te==null?void 0:te.analysis.formatLabel,importTarget:(te==null?void 0:te.importTarget)??"material",fileColumns:(te==null?void 0:te.csvColumns)??[],previewRows:(te==null?void 0:te.csvRows)??[],initialColumnMapping:te==null?void 0:te.columnMapping,delimiter:te==null?void 0:te.delimiter,headerRowIndex:te==null?void 0:te.headerRowIndex,fileLabel:te==null?void 0:te.file.name,onApply:te?async({columnMapping:pe,globalDefaults:$e,delimiter:st,headerRowIndex:ct})=>{const Gt=await Ht(te.file,st,ct),Mt=dd(te.analysis,Gt.columns,{existingMapping:pe,userPreferences:ve.current});$d().then(Qt).catch(()=>{}),nt(te.id,{columnMapping:pe,globalDefaults:$e,delimiter:st,headerRowIndex:ct,csvColumns:Gt.columns,csvRows:Gt.rows,stagingRows:null,rememberedFormat:!1,skipManualMapping:!1,autoConfigured:!1,fileRole:Mt.role,
82importTarget:Mt.importTarget}),zn(L.map(Yt=>Yt.id===te.id?{...Yt,columnMapping:pe,globalDefaults:$e,csvRows:Gt.rows,csvColumns:Gt.columns,skipManualMapping:!1,fileRole:Mt.role}:Yt),te.id,{mergeFiles:L.length>1&&it!==!1})}:void 0,onSave:pe=>void v(pe)})]})}const Sh={unique:"zugeordnet",learned:"gelernt",empty_key:"ohne Key",no_hit:"ohne Treffer",ambiguous:"mehrdeutig"},Ah={unique:0,learned:1,ambiguous:2,no_hit:3,empty_key:4};function q_({reason:e,mapped:t}){const r=Sh[e];return n.jsx(bt,{variant:"outline",className:ye("h-5 px-1.5 text-[10px] font-medium",t||e==="unique"||e==="learned"?"border-emerald-500/40 text-emerald-700 dark:text-emerald-400":e==="ambiguous"?"border-amber-500/40 text-amber-800 dark:text-amber-300":"border-border text-muted-foreground"),children:r})}function Ds({label:e,active:t,dir:r,onClick:s,className:a}){const i=t?r==="asc"?Lc:zc:Bc;return n.jsx("th",{className:ye("sticky top-0 z-10 bg-background py-1.5 pr-2 font-medium",a),children:n.jsxs("button",{type:"button",className:ye("inline-flex items-center gap-1 text-[10px] uppercase tracking-wide transition-colors",t?"text-foreground":"text-muted-foreground hover:text-foreground"),onClick:s,children:[e,n.jsx(i,{className:"size-3 opacity-70"})]})})}function U_(e){return[e.value,e.package,e.valueCanon,e.packageCanon,e.computedKey,e.refDes,e.hitArticles,...e.hitDetails.flatMap(t=>[t.articleNumber,t.name,t.matchingKey])].filter(Boolean).join(" ").toLowerCase()}function W_(e){return[e.articleNumber,e.name,e.matchingKey,e.value,e.package].filter(Boolean).join(" ").toLowerCase()}function Rs(e,t){return e.localeCompare(t,"de",{numeric:!0,sensitivity:"base"})}function H_({open:e,onOpenChange:t,report:r}){const[s,a]=u.useState("bom"),[i,o]=u.useState(""),[l,d]=u.useState("all"),[m,p]=u.useState("status"),[h,x]=u.useState("asc"),[b,w]=u.useState("matchingKey"),[v,S]=u.useState("desc");u.useEffect(()=>{e||(a("bom"),o(""),d("all"),p("status"),x("asc"),w("matchingKey"),S("desc"))},[e]);const R=j=>{if(m===j){x(z=>z==="asc"?"desc":"asc");return}p(j),x(j==="hits"?"desc":"asc")},E=j=>{if(b===j){S(z=>z==="asc"?"desc":"asc");return}w(j),S(j==="matchingKey"?"desc":"asc")},A=u.useMemo(()=>{if(!r)return[];const j=i.trim().toLowerCase(),z=r.rows.filter(D=>{if(l==="unique"){if(!(D.mapped&&(D.reason==="unique"||D.reason==="learned")))return!1}else if(l!=="all"&&D.reason!==l)return!1;return!(j&&!U_(D).includes(j))});return z.sort((D,B)=>{let T=0;switch(m){case"status":T=Ah[D.reason]-Ah[B.reason],T===0&&(T=Number(B.mapped)-Number(D.mapped));break;case"raw":T=Rs([D.value,D.package].filter(Boolean).join(" · "),[B.value,B.package].filter(Boolean).join(" · "));break;case"key":T=Rs(D.computedKey,B.computedKey);break;case"hits":T=D.hits-B.hits;break}return T===0&&(T=Rs(D.bomLineId,B.bomLineId)),h==="asc"?T:-T}),z},[h,m,i,l,r]),I=u.useMemo(()=>{if(!r)return[];const j=i.trim().toLowerCase(),z=r.catalogArticles.filter(D=>!(j&&!W_(D).includes(j)));return z.sort((D,B)=>{let T=0;switch(b){case"articleNumber":T=Rs(D.articleNumber,B.articleNumber);break;case"name":T=Rs(D.name,B.name);break;case"matchingKey":T=(B.matchingKey?1:0)-(D.matchingKey?1:0),T===0&&(T=Rs(D.matchingKey,B.matchingKey));break;case"value":T=Rs(D.value,B.value);break;case"package":T=Rs(D.package,B.package);break}return T===0&&(T=Rs(D.id,B.id)),v==="asc"?T:-T}),z},[v,b,i,r]),C=u.useMemo(()=>r?{all:r.rows.length,unique:r.rows.filter(j=>j.mapped&&j.reason==="unique").length,learned:r.learned,no_hit:r.noHit,ambiguous:r.ambiguous,empty_key:r.emptyKey}:{all:0,unique:0,learned:0,no_hit:0,ambiguous:0,empty_key:0},[r]),k=[{id:"all",label:"Alle",count:C.all},{id:"unique",label:"zugeordnet",count:C.unique+C.learned},{id:"learned",label:"gelernt",count:C.learned},{id:"no_hit",label:"ohne Treffer",count:C.no_hit},{id:"ambiguous",label:"mehrdeutig",count:C.ambiguous},{id:"empty_key",label:"ohne Key",count:C.empty_key}];return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"flex max-h-[min(90vh,820px)] w-full max-w-4xl flex-col gap-3 overflow-hidden",children:[n.jsx(Tn,{className:"shrink-0",children:n.jsx(Dn,{children:"Auto-Map Protokoll"})}),r?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"shrink-0 space-y-2 text-xs",children:[n.jsxs("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-muted-foreground",children:[n.jsxs("span",{children:["Template:"," ",n.jsx("code",{className:"font-mono text-foreground",children:r.template})]}),n.jsxs("span",{children:["Artikelstamm: ",r.catalogWithMatchingKey,"/",r.catalogSize," mit Key"]}),n.jsxs("span",{children:["Ergebnis: ",r.mapped,"/",r.candidates," zugeordnet"]})]}),r.hint?n.jsx("p",{className:"rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-2 text-[11px] leading-snug text-amber-900 dark:text-amber-200",children:r.hint}):null]}),n.jsxs(Ei,{value:s,onValueChange:j=>a(j),className:"flex min-h-0 flex-1 flex-col gap-2",children:[n.jsxs(Pi,{className:"h-8 w-full shrink-0 justify-start",children:[n.jsxs(ar,{value:"bom",className:"gap-1.5 text-xs",children:["BOM-Positionen",n.jsxs("span",{className:"tabular-nums text-muted-foreground",children:[A.length,"/",r.rows.length]})]}),n.jsxs(ar,{value:"catalog",className:"gap-1.5 text-xs",children:["Artikelstamm",n.jsxs("span",{className:"tabular-nums text-muted-foreground",children:[I.length,r.catalogSize>r.catalogArticles.length?`/${r.catalogArticles.length}`:`/${r.catalogSize}`]})]})]}),n.jsxs("div",{className:"relative shrink-0",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:i,onChange:j=>o(j.target.value),placeholder:s==="bom"?"BOM-Positionen suchenâ¦":"Artikelstamm suchenâ¦",className:"h-8 pl-8 text-xs"})]}),s==="bom"?n.jsx("div",{className:"flex shrink-0 flex-wrap gap-1.5",children:k.map(j=>j.count>0||j.id==="all"?n.jsxs(ee,{type:"button",size:"sm",variant:l===j.id?"secondary":"outline",className:"h-6 gap-1 px-2 text-[10px]",onClick:()=>
82d(j.id),children:[j.label,n.jsx("span",{className:"tabular-nums text-muted-foreground",children:j.count})]},j.id):null)}):null,n.jsx(ir,{value:"bom",className:"mt-0 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-1 data-[state=inactive]:hidden",children:n.jsxs("table",{className:"w-full border-separate border-spacing-0 text-left text-[11px]",children:[n.jsx("thead",{children:n.jsxs("tr",{children:[n.jsx(Ds,{label:"Status",active:m==="status",dir:h,onClick:()=>R("status")}),n.jsx(Ds,{label:"Roh",active:m==="raw",dir:h,onClick:()=>R("raw")}),n.jsx(Ds,{label:"Key",active:m==="key",dir:h,onClick:()=>R("key")}),n.jsx(Ds,{label:"Treffer",active:m==="hits",dir:h,onClick:()=>R("hits")})]})}),n.jsx("tbody",{children:A.length===0?n.jsx("tr",{children:n.jsx("td",{colSpan:4,className:"py-6 text-center text-xs text-muted-foreground",children:"Keine Positionen für diesen Filter."})}):A.map(j=>n.jsxs("tr",{className:"border-t border-border/50 align-top",children:[n.jsx("td",{className:"py-1.5 pr-2",children:n.jsx(q_,{reason:j.reason,mapped:j.mapped})}),n.jsxs("td",{className:"py-1.5 pr-2 font-mono",children:[n.jsx("div",{children:[j.value,j.package].filter(Boolean).join(" · ")||"â"}),j.normalizedNote?n.jsxs("div",{className:"mt-0.5 text-[9px] text-amber-800 dark:text-amber-300",children:["â ",j.normalizedNote]}):null]}),n.jsx("td",{className:"py-1.5 pr-2 font-mono text-muted-foreground",children:j.computedKey||"â"}),n.jsx("td",{className:"py-1.5 text-muted-foreground",children:j.hitDetails.length>0?n.jsx("ul",{className:"space-y-0.5",children:j.hitDetails.map(z=>n.jsxs("li",{className:"font-mono text-[10px] leading-snug",children:[n.jsx("span",{className:"text-foreground",children:z.articleNumber||"â"}),z.name?n.jsxs("span",{className:"text-muted-foreground",children:[" · ",z.name]}):null,z.matchingKey?n.jsxs("span",{className:"block text-[9px] opacity-80",children:["key=",z.matchingKey]}):null]},z.id))}):"â"})]},j.bomLineId))})]})}),n.jsxs(ir,{value:"catalog",className:"mt-0 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-1 data-[state=inactive]:hidden",children:[r.catalogSize>r.catalogArticles.length?n.jsxs("p",{className:"mb-2 text-[10px] text-muted-foreground",children:["Erste ",r.catalogArticles.length," von ",r.catalogSize," Artikeln"]}):null,I.length===0?n.jsx("p",{className:"py-6 text-center text-xs text-muted-foreground",children:r.catalogArticles.length===0?"Keine Artikel im geladenen Katalog.":"Keine Artikel für diese Suche."}):n.jsxs("table",{className:"w-full border-separate border-spacing-0 text-left text-[11px]",children:[n.jsx("thead",{children:n.jsxs("tr",{children:[n.jsx(Ds,{label:"Nr.",active:b==="articleNumber",dir:v,onClick:()=>E("articleNumber")}),n.jsx(Ds,{label:"Name",active:b==="name",dir:v,onClick:()=>E("name")}),n.jsx(Ds,{label:"matching_key",active:b==="matchingKey",dir:v,onClick:()=>E("matchingKey")}),n.jsx(Ds,{label:"Value",active:b==="value",dir:v,onClick:()=>E("value")}),n.jsx(Ds,{label:"Package",active:b==="package",dir:v,onClick:()=>E("package"),className:"pr-0"})]})}),n.jsx("tbody",{children:I.map(j=>n.jsxs("tr",{className:"border-t border-border/50 align-top",children:[n.jsx("td",{className:"py-1.5 pr-2 font-mono text-foreground",children:j.articleNumber||"â"}),n.jsx("td",{className:"max-w-[12rem] truncate py-1.5 pr-2",title:j.name,children:j.name||"â"}),n.jsx("td",{className:ye("py-1.5 pr-2 font-mono",j.matchingKey?"text-foreground":"text-muted-foreground"),children:j.matchingKey||"â"}),n.jsx("td",{className:"py-1.5 pr-2 font-mono text-muted-foreground",children:j.value||"â"}),n.jsx("td",{className:"py-1.5 font-mono text-muted-foreground",children:j.package||"â"})]},j.id))})]})]})]})]}):n.jsx("p",{className:"py-8 text-center text-sm text-muted-foreground",children:"Noch kein Lauf."})]})})}async function Z_(e){const t=e.bomItems.filter(p=>Ya(p));if(!t.length)return M.message("Keine offenen Positionen."),null;let r=e.memory??new Map;if(e.memory==null)try{const p=await bk();r=new Map(p.filter(h=>h.matchKey&&h.articleId).map(h=>[h.matchKey,h.articleId]))}catch(p){console.warn("[BOM Auto-Map] mapping memory unavailable",p),r=new Map}let s=0,a=0,i=0,o=0,l=0;const d=[];for(const p of t){const h=bA(p,e.articles,e.matchingKeyTemplate,r);let x=!1;if(h.reason==="empty_key"?a+=1:h.reason==="no_hit"?i+=1:h.reason==="ambiguous"?o+=1:h.reason==="learned"&&(l+=1),!h.article){d.push({item:p,diagnosis:h,mapped:!1});continue}
82try{await e.onMapBomItem(p.id,h.article.id),s+=1,x=!0}catch(b){console.warn("[BOM Auto-Map] map failed",{bomLineId:p.id,articleId:h.article.id,error:b})}d.push({item:p,diagnosis:h,mapped:x})}const m=jA({template:e.matchingKeyTemplate,articles:e.articles,rows:d});if(s>0){const p=d.filter(b=>b.mapped&&b.diagnosis.reason==="learned").length,h=s-p,x=[h>0?`${h} per Key`:null,p>0?`${p} gelernt`:null].filter(Boolean);M.success(s===1?p===1?"1 Position aus Mapping-Gedächtnis zugeordnet":"1 Position per Matching Key zugeordnet":`${s} Positionen zugeordnet${x.length?` (${x.join(" · ")})`:""}`)}else{const p=[a>0?`${a} ohne Key`:null,i>0?`${i} ohne Treffer`:null,o>0?`${o} mehrdeutig`:null,l>0?`${l} gelernt (Map fehlgeschlagen)`:null].filter(Boolean).join(" · ");M.message(p?`Kein eindeutiger Treffer (${p}).`:"Keine Positionen zugeordnet.")}return m}const mb={draft:"Entwurf",in_review:"In Prüfung",active:"Aktiv",obsolete:"Veraltet"},G_={article_not_approved:"Artikel nicht freigegeben",revision_not_active:"Revision nicht aktiv",article_draft_open:"Offener Artikel-Entwurf",revision_locked:"Stückliste wird bearbeitet",revision_draft_pending:"Neue Revision in Bearbeitung",route_not_ready:"Fertigungsroute nicht bereit",ghost_components_pending:"Import-Platzhalter in der Stückliste",article_not_found:"Artikel nicht gefunden",revision_not_found:"Revision nicht gefunden"};function Y_(e){var i;if(e.length===0)return"A";const t=e.find(o=>o.status==="active"),r=(t==null?void 0:t.version)??((i=e[0])==null?void 0:i.version)??"A",s=r.match(/^(\d+)\.(\d+)$/);if(s)return`${s[1]}.${Number(s[2])+1}`;const a=r.match(/^([A-Z])$/i);if(a){const o=a[1].toUpperCase().charCodeAt(0);return o<90?String.fromCharCode(o+1):`${r}.1`}return`${r}.1`}function J_(e){return`Revision ${e.version} (${mb[e.status]})`}function Q_({articleId:e,articleNumber:t,articleName:r,revisionId:s,selectedRevision:a,onSelectRevision:i,bomItems:o,bomTabProps:l,fileImportModuleIds:d,eagleImportModuleIds:m,moduleConfigs:p,fieldsReadOnly:h,canEditBom:x,isEditing:b,onBomImport:w,onAttachments:v,onStagingImportCommitted:S,onRouteSaved:R}){const E=Qo(),{session:A}=os(),{settings:I}=Mn(),C=Zx(),k=A==null?void 0:A.tenantId,j=kt(e),[z,D]=u.useState([]),[B,T]=u.useState(!1),[P,G]=u.useState("datenquelle"),[W,ke]=u.useState([]),[L,xe]=u.useState(null),[Y,Ne]=u.useState({}),[se,J]=u.useState(!1),[Q,U]=u.useState(!1),[ne,H]=u.useState(!1),[Z,K]=u.useState(!1),[me,$]=u.useState([]),[X,Ie]=u.useState(!1),[V,Se]=u.useState(0),[Ce,Be]=u.useState(!1),[Le,rt]=u.useState("A"),[lt,Tt]=u.useState(""),[vt,Pe]=u.useState(!1),[it,yt]=u.useState(()=>Ur().stuecklisteView),[wt,an]=u.useState(()=>Ur().density),[qt,Qt]=u.useState(!1),[en,Wt]=u.useState(!1),[on,mn]=u.useState(!1),[ln,cn]=u.useState(0),[Oe,re]=u.useState(!1),[ve,_e]=u.useState(null),[te,nt]=u.useState(!1),[Fe,be]=u.useState(!1),[Ye,ge]=u.useState([]),He=u.useRef(null),hn=u.useRef("datenquelle"),Ht=u.useRef(!1),_n=u.useRef(null);u.useEffect(()=>{if(!k||!s)return;Ht.current=!1;const We=sh(k,e,s),Bt=_n.current;if(!!(Bt&&Date.now()-Bt.at<3e4)&&Bt){xe(Bt.lastImport),ge(Bt.log),G("stueckliste"),yt((We==null?void 0:We.stuecklisteView)??Ur().stuecklisteView),an((We==null?void 0:We.density)??Ur().density),Ju(k,e,s,{currentStep:"stueckliste",lastImport:Bt.lastImport,importProtocolLog:Bt.log,stuecklisteView:(We==null?void 0:We.stuecklisteView)??Ur().stuecklisteView,density:(We==null?void 0:We.density)??Ur().density});return}if(We)G(We.currentStep),xe(We.lastImport),ge(We.importProtocolLog??[]),yt(We.stuecklisteView),an(We.density);else{const gn=Ur();G("datenquelle"),xe(null),ge([]),Wt(!1),yt(gn.stuecklisteView),an(gn.density)}},[k,e,s]),u.useEffect(()=>{if(!Ht.current&&!qt&&o.length!==0){if(P!=="datenquelle"){Ht.current=!0;return}Ht.current=!0,G("stueckliste")}},[o.length,P,qt]),u.useEffect(()=>{Wt(!1)},[e,s]),u.useEffect(()=>{if(!j||!s){mn(!1);return}Vl(e,s).then(We=>{mn((We==null?void 0:We.links.some(Bt=>Bt.stepType==="subcontractor_export"))??!1)}).catch(()=>mn(!1))},[e,s,j,ln,V]),u.useEffect(()=>{hn.current!=="datenquelle"&&P==="datenquelle"&&Wt(!1),hn.current=P},[P]),u.useEffect(()=>{uu({stuecklisteView:it,density:wt})},[it,wt]),u.useEffect(()=>{if(!k||!s)return;const We=`${k}:${e}:${s}`;if(He.current!==We){He.current=We;return}Ju(k,e,s,{currentStep:P,lastImport:L,importProtocolLog:Ye,stuecklisteView:it,density:wt})},[k,e,s,P,L,Ye,it,wt]);const wn=u.useCallback(async()=>
82{if(!j){D([]);return}T(!0);try{D(await sl(e))}catch{M.error("Revisionen konnten nicht geladen werden.")}finally{T(!1)}},[e,j]);u.useEffect(()=>{wn()},[wn]),u.useEffect(()=>{!j||B||s||z.length!==1||i(z[0])},[j,B,s,z,i]);const vn=u.useCallback(async()=>{if(!j||!s){K(!1),$([]);return}Ie(!0);try{const We=await vw(e,s);K(We.allowed),$(We.reasons??[])}catch{K(!1),$(["article_not_found"])}finally{Ie(!1)}},[e,s,j]);u.useEffect(()=>{vn()},[vn]),u.useEffect(()=>{if(!j||!s){Ne({});return}let We=!1;return Vl(e,s).then(Bt=>{if(We)return;const un=(Bt==null?void 0:Bt.mappingConfig)??{};Ne(un);const gn=un.stagingChangeLog??un.staging_change_log;Array.isArray(gn)&&gn.length>0&&ge(br=>br.length>=gn.length?br:gn)}).catch(()=>{We||Ne({})}),()=>{We=!0}},[e,s,j]),u.useEffect(()=>{if(!j)return;let We=!1;return hx(e).then(Bt=>{if(We)return;const un=w_(Bt);un.length!==0&&ge(gn=>gn.length>=un.length?gn:un)}).catch(()=>{}),()=>{We=!0}},[e,s,j,L==null?void 0:L.importedAt]),u.useEffect(()=>{const We=[];(L||o.length>0)&&We.push("datenquelle"),o.length>0&&We.push("stueckliste"),ke(We)},[L,o.length]);const fn=async()=>{const We=Le.trim();if(!We){M.error("Bitte eine Versionsbezeichnung eingeben.");return}Pe(!0);try{const Bt=await Qm(e,{version:We,notes:lt.trim()});await wn(),i(Bt),Be(!1),M.success(`Revision ${We} angelegt.`)}catch{M.error("Revision konnte nicht angelegt werden.")}finally{Pe(!1)}},Nn=We=>{Wt(!1);const Bt=new Date().toISOString(),un={...We,importedAt:Bt},gn=We.changeLog&&We.changeLog.length>0?We.changeLog:[ci({action:"import_commit",label:`${We.fileName} · ${We.positionCount} Positionen`})];if(xe(un),ge(gn),_n.current={at:Date.now(),lastImport:un,log:gn},k&&s){const br=sh(k,e,s);Ju(k,e,s,{currentStep:"stueckliste",lastImport:un,importProtocolLog:gn,stuecklisteView:(br==null?void 0:br.stuecklisteView)??it,density:(br==null?void 0:br.density)??wt})}Ht.current=!0,G("stueckliste")},zt=async()=>{if(l.onClearBomItems){H(!0);try{await l.onClearBomItems(),xe(null),ge([]),Wt(!1),U(!1)}catch{M.error("Stückliste konnte nicht geleert werden.")}finally{H(!1)}}},tn=async We=>{if(!s)return;Ne(We);const Bt=We.stagingChangeLog??We.staging_change_log;Array.isArray(Bt)&&ge(Bt);try{const un=await Vl(e,s);await ql(e,s,{name:(un==null?void 0:un.name)??"Standard-Route",mappingConfig:We,wizardState:un==null?void 0:un.wizardState,status:un==null?void 0:un.status}),M.success("Import-Mapping gespeichert.")}catch{M.error("Mapping konnte nicht gespeichert werden.")}},On=!!(s&&a),An=!On||b||X||!Z||se,Ln=u.useMemo(()=>!An||se?"":b?"Bearbeitungsmodus aktiv â zuerst speichern und Ansichtsmodus verlassen.":On?X?"Bereitschaft wird geprüft â¦":!Z&&me.length>0?me.map(We=>G_[We]??We).join(" · "):"Freigabe derzeit nicht möglich.":"Revision auswählen.",[An,se,b,On,X,Z,me]),pr=async()=>{if(!(!j||!s||An)){J(!0);try{const We=await C.createFromPlanningRelease(e,s,1);Se(Bt=>Bt+1),vn(),M.success("Arbeitsvorbereitung freigegeben.",{description:"Status PLANNING_COMPLETE â Snapshot erstellt. Arbeitsauftrag in Fertigung anlegen."}),E(We.executionPath||"/fertigung")}catch{M.error("Freigabe fehlgeschlagen.")}finally{J(!1)}}},Un=u.useMemo(()=>o.filter(We=>Ya(We)).length,[o]),yr=u.useMemo(()=>o.filter(We=>lu(We)).length,[o]),Sr=u.useCallback(async()=>{if(!(!x||Oe||!l.onMapBomItem)){re(!0);try{const We=await Z_({bomItems:o,articles:l.apiArticles,matchingKeyTemplate:Li(I),onMapBomItem:l.onMapBomItem});We&&_e(We)}finally{re(!1)}}},[Oe,o,l.apiArticles,l.onMapBomItem,x,I]),zn=u.useMemo(()=>{if(Ye.length>0)return Ye;const We=Y.stagingChangeLog??Y.staging_change_log;return Array.isArray(We)&&We.length>0?We:L?[{id:`last-import:${L.importedAt}`,at:L.importedAt,action:"import_commit",label:`${L.fileName} · ${L.positionCount} Positionen`,persisted:!0}]:o.length>0?[{id:`bom-present:${s??e}`,at:new Date(0).toISOString(),action:"import_commit",label:`${o.length} Positionen in der Stückliste`,persisted:!0}]:[]},[Ye,L,Y.stagingChangeLog,Y.staging_change_log,o.length,s,e]),Ar=u.useMemo(()=>{switch(P){case"datenquelle":return"Datei importieren oder in Schritt â¡ Stückliste manuell pflegen.";case"stueckliste":return Un>0?`${Un} Position${Un===1?"":"en"} ohne Artikelzuordnung â bitte in der Tabelle zuordnen.`:"Positionen hinzufügen, Mengen und Referenzdesignatoren bearbeiten.";case"route":return"Fertigungsschritte und Maschinen-Export festlegen.";default:return""}},[P,Un]);return j?n.jsxs("div",{className:"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-hidden","data-
82production-ui":"v4",children:[n.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border bg-muted/20 px-4 py-3",children:[n.jsxs("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-2",children:[B?n.jsxs("span",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-3.5 animate-spin"}),"Revisionen â¦"]}):z.length===0?n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-8 gap-1.5 text-xs",disabled:!x,onClick:()=>{rt("A"),Tt(""),Be(!0)},children:[n.jsx(Gn,{className:"size-3.5"}),"Erste Revision anlegen"]}):n.jsxs(_t,{value:s??void 0,onValueChange:We=>{const Bt=z.find(un=>un.id===We);Bt&&i(Bt)},children:[n.jsx(It,{className:"h-9 w-[min(100%,280px)] text-sm font-medium",children:n.jsx(Et,{placeholder:"Revision wählen â¦"})}),n.jsx(Pt,{children:z.map(We=>n.jsx(ft,{value:We.id,children:J_(We)},We.id))})]}),n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0",disabled:!x,title:"Neue Revision",onClick:()=>{rt(Y_(z)),Tt(""),Be(!0)},children:n.jsx(Gn,{className:"size-4"})}),a&&n.jsx(bt,{variant:"outline",className:"text-[10px]",children:mb[a.status]})]}),n.jsxs(Qv,{children:[n.jsx(Xv,{asChild:!0,children:n.jsx("span",{className:"inline-flex",children:n.jsxs(ee,{type:"button",size:"sm",className:"h-9 gap-2 shrink-0 px-4",disabled:An,onClick:()=>void pr(),children:[X||se?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(rs,{className:"size-4"}),"Freigeben"]})})}),An&&Ln?n.jsx(ep,{side:"bottom",className:"max-w-xs text-xs",children:Ln}):n.jsx(ep,{side:"bottom",className:"max-w-xs text-xs",children:"Setzt PLANNING_COMPLETE und erstellt den ProductionSnapshot für die Fertigung."})]})]}),b&&n.jsxs("div",{className:"flex shrink-0 items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-3 py-2 text-xs text-amber-800",children:[n.jsx(ks,{className:"mt-0.5 size-3.5 shrink-0"}),n.jsx("span",{children:"Bearbeitungsmodus aktiv â Produktion ist bis zum Speichern blockiert."})]}),On?n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2",children:[n.jsxs("div",{className:"shrink-0 space-y-2 border-b border-border pb-2",children:[n.jsx(p_,{currentStep:P,completedSteps:W,onStepChange:G,allowFreeNavigation:On}),P==="stueckliste"&&n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(Z1,{view:it,onViewChange:yt}),o.length>0?n.jsx(bt,{variant:"outline",className:Un>0?"h-6 border-amber-500/40 px-2 text-[11px] font-medium text-amber-800 dark:text-amber-300":"h-6 px-2 text-[11px] font-medium text-muted-foreground",children:Un>0?`${Un}/${o.length} offen`:`${o.length} Positionen`}):null,yr>0?n.jsxs(bt,{variant:"outline",className:"h-6 border-destructive/50 px-2 text-[11px] font-medium text-destructive",children:[yr," gelöscht"]}):null,n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 gap-1.5 px-2.5 text-xs",disabled:!x||Oe||o.length===0||!l.onMapBomItem,onClick:()=>void Sr(),children:[Oe?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(Bs,{className:"size-3.5"}),"Auto-Map"]}),o.length>0||zn.length>0?n.jsxs(ee,{type:"button",size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs text-muted-foreground",onClick:()=>be(!0),children:[n.jsx(Cd,{className:"size-3.5"}),"Protokoll",` (${zn.length})`]}):null,ve?n.jsxs(ee,{type:"button",size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs text-muted-foreground",onClick:()=>nt(!0),children:[n.jsx(Cd,{className:"size-3.5"}),"Auto-Map",` (${ve.rows.length})`]}):null]}),!qt&&P!=="stueckliste"&&Ar?n.jsx("p",{className:"text-xs text-muted-foreground",children:Ar}):null]}),n.jsxs("div",{className:"min-h-0 flex-1 overflow-hidden rounded-lg border border-border bg-background p-2",children:[P==="datenquelle"&&s&&n.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[(L||o.length>0&&!L&&!qt)&&!en&&n.jsxs("div",{className:"shrink-0 pb-1",children:[L&&!qt&&n.jsx(Q1,{fileName:L.fileName,positionCount:L.positionCount,importedAt:L.importedAt,source:L.source,statusLabel:"Importiert"}),o.length>0&&!L&&!qt&&n.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Stückliste: ",n.jsx("strong",{children:o.length})," Positionen",Un>0&&n.jsxs(n.Fragment,{children:[" ","· ",n.jsx("strong",{className:"text-amber-800 dark:text-amber-300",children:Un})," ","ohne Zuordnung"]})," ","â erneuter Import optional."]})]}),n.jsx(V_,{className:"min-h-0 flex-1",articleId:e,revisionId:s,articleNumber:t,articleName:r,bomItems:o,fileImportModuleIds:d,eagleImportModuleIds:m,moduleConfigs:p,mappingConfig:Y,disabled:!x,onBomImport:w,onAttachments:v,onStagingImportCommitted:S,onMappingConfigSave:tn,onImportCompleted:Nn,onImportActivityChange:We=>{Qt(We),We&&Wt(!0)},onImportPreviewCleared:()=>Wt(!0)}),(!qt||o.length>0)&&n.jsx("div",{className:"flex shrink-0 justify-end border-t border-border pt-1.5",children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>G("stueckliste"),children:[o.length>0?"Weiter zur Stückliste":"Stückliste manuell pflegen",n.jsx(ua,{className:"size-4"})]})})]}),P==="stueckliste"&&n.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3 overflow-hidden",children:[n.jsx(J1,{articleId:e,revisionId:s,componentGroupsRefreshKey:l.componentGroupsRefreshKey,bomItems:o,catalogArticles:l.catalogArticles,apiArticles:l.apiArticles,view:it,density:wt,disabled:l.disabled,isEditing:l.isEditing,bomSearch:l.bomSearch,bomSearchFocused:l.bomSearchFocused,filteredSearchArticles:l.filteredSearchArticles,showSearchDrop:l.showSearchDrop,onBomSearchChange:l.onBomSearchChange,onBomSearchFocus:l.onBomSearchFocus,onAddBomItem:l.onAddBomItem,onUpdateBomItem:l.onUpdateBomItem,onRemoveBomItem:l.onRemoveBomItem,onMapBomItem:l.onMapBomItem,onMarkDoNotPlace:l.onMarkDoNotPlace,onDrillDown:l.onDrillDown,onCatalogRefresh:l.onCatalogRefresh,hasSubcontractorExportStep:on}),n.jsxs("div",{className:"sticky bottom-0 z-10 flex shrink-0 items-center justify-between gap-2 border-t border-border bg-background pt-2 shadow-[0_-4px_12px_rgba(0,0,0,0.06)]",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5 text-destructive hover:bg-destructive/10 hover:text-destructive",disabled:o.length===0||!x||!l.onClearBomItems,title:x?o.length===0?"Stückliste ist leer":void 0:"Bearbeitung nicht möglich",onClick:()=>U(!0),children:[n.jsx(Ad,{className:"size-3.5"}),"Stückliste leeren"]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>G("route"),children:["Weiter zur Fertigungsroute",n.jsx(ua,{className:"size-4"})]})]})]}),P==="route"&&n.jsx("div",{className:"h-full overflow-y-auto",children:n.jsx(f_,{articleId:e,revisionId:s,revisionStatus:a==null?void 0:a.status,disabled:!x,snapshotRefreshKey:V,onRouteSaved:async()=>{cn(We=>We+1),await(R==null?void 0:R())}})})]})]}):n.jsx("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border py-16 text-center",children:n.jsx("p",{className:"text-sm text-muted-foreground",children:"Wählen oder legen Sie eine Revision an, um den Produktions-Workspace zu öffnen."})}),n.jsx(da,{open:Q,onOpenChange:U,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:"Stückliste leeren?"}),n.jsxs(ha,{children:["Alle ",o.length," Positionen werden aus der aktiven Revision entfernt. Bauteilgruppen werden ebenfalls gelöscht."]})]}),n.jsxs(ga,{children:[n.jsx(xa,{disabled:ne,children:"Abbrechen"}),n.jsx(ya,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:ne,onClick:We=>{We.preventDefault(),zt()},children:ne?n.jsxs(n.Fragment,{children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Wird geleert â¦"]}):"Stückliste leeren"})]})]})}),n.jsx(En,{open:Ce,onOpenChange:Be,children:n.jsxs(Pn,{className:"sm:max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Neue Revision"})}),n.jsxs("div",{className:"space-y-3 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"ws-rev-version",className:"text-xs",children:"Version"}),n.jsx(Ze,{id:"ws-rev-version",value:Le,onChange:We=>rt(We.target.value),className:"h-8 font-mono text-sm",disabled:vt})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"ws-rev-notes",className:"text-xs",children:"Notiz (optional)"}),n.jsx(ka,{id:"ws-rev-notes",value:lt,onChange:We=>Tt(We.target.value),rows:2,className:"resize-none text-sm",disabled:vt})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>Be(!1),disabled:vt,children:"Abbrechen"}),n.jsx(ee,{type:"button",onClick:()=>void fn(),disabled:vt,children:vt?n.jsx(Me,{className:"size-4 animate-spin"}):"Anlegen"})]})]})}),n.jsx(H_,{open:te,onOpenChange:nt,report:ve}),n.jsx(ub,{open:Fe,onOpenChange:be,entries:zn})]}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Produktion ist verfügbar, sobald der Artikel gespeichert wurde."})}function X_({open:e,onOpenChange:t,target:r,onConfirm:s}){const[a,i]=u.useState([]),[o,l]=u.useState(!1),[d,m]=u.useState(!1),[p,h]=u.useState(null);u.useEffect(()=>{if(!e||!r){i([]),h(null);return}let b=!1;return l(!0),px(r.articleId).then(w=>
82{b||(i(w),h(w.length===1?w[0].id:null))}).catch(()=>{b||M.error("Varianten konnten nicht geladen werden.")}).finally(()=>{b||l(!1)}),()=>{b=!0}},[e,r]);const x=r?[r.bomItem.value,r.bomItem.package].filter(Boolean).join(" · ")||r.bomItem.name:"";return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Variante wählen"})}),n.jsxs("div",{className:"space-y-3 text-sm",children:[n.jsxs("p",{className:"text-muted-foreground",children:[n.jsx("span",{className:"font-medium text-foreground",children:x})," â ",n.jsx("span",{className:"font-medium text-foreground",children:r==null?void 0:r.articleLabel})]}),o?n.jsxs("div",{className:"flex items-center gap-2 py-4 text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Varianten werden geladen â¦"]}):a.length===0?n.jsx("p",{className:"text-destructive",children:"Dieser Artikel hat keine Variante im Stamm. Bitte zuerst eine MPN-Variante anlegen."}):n.jsx("ul",{className:"max-h-56 space-y-1 overflow-y-auto rounded-md border border-border p-1",children:a.map(b=>n.jsx("li",{children:n.jsxs("button",{type:"button",className:ye("flex w-full flex-col rounded-md px-2 py-1.5 text-left text-xs transition-colors hover:bg-muted",p===b.id&&"bg-primary/10 ring-1 ring-primary/30"),onClick:()=>h(b.id),children:[n.jsx("span",{className:"font-mono font-medium",children:b.mpn}),b.manufacturer?n.jsx("span",{className:"text-muted-foreground",children:b.manufacturer}):null]})},b.id))})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:d,children:"Abbrechen"}),n.jsx(ee,{type:"button",disabled:d||!p,onClick:()=>{p&&(m(!0),Promise.resolve(s(p)).catch(()=>{}).finally(()=>m(!1)))},children:d?n.jsxs(n.Fragment,{children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Zuordnen â¦"]}):"Zuordnen"})]})]})})}const eI={draft:"Entwurf",in_review:"In Prüfung",active:"Aktiv",obsolete:"Veraltet"},tI={draft:"secondary",in_review:"outline",active:"default",obsolete:"outline"};function nI(e){var i;if(e.length===0)return"A";const t=e.find(o=>o.status==="active"),r=(t==null?void 0:t.version)??((i=e[0])==null?void 0:i.version)??"A",s=r.match(/^(\d+)\.(\d+)$/);if(s)return`${s[1]}.${Number(s[2])+1}`;const a=r.match(/^([A-Z])$/i);if(a){const o=a[1].toUpperCase().charCodeAt(0);return o<90?String.fromCharCode(o+1):`${r}.1`}return`${r}.1`}function rI({articleId:e,selectedRevisionId:t,onSelectRevision:r,onRevisionsChanged:s,disabled:a,compact:i}){const o=Mi(),l=kt(e),[d,m]=u.useState(!1),[p,h]=u.useState([]),[x,b]=u.useState(!1),[w,v]=u.useState("A"),[S,R]=u.useState(""),[E,A]=u.useState(!1),[I,C]=u.useState(!1),k=u.useCallback(async()=>{if(!l){h([]);return}m(!0);try{h(await sl(e))}catch{M.error("Revisionen konnten nicht geladen werden."),h([])}finally{m(!1)}},[e,l]);u.useEffect(()=>{k()},[k]);const j=p.find(P=>P.id===t)??null,z=()=>{v(nI(p)),R(""),b(!0)},D=async()=>{const P=w.trim();if(!P){M.error("Bitte eine Versionsbezeichnung eingeben.");return}A(!0);try{const G=await Qm(e,{version:P,notes:S.trim()});await k(),r(G),s==null||s(),b(!1),M.success(`Revision ${P} angelegt.`)}catch{M.error("Revision konnte nicht angelegt werden.")}finally{A(!1)}},B=async()=>{if(!(!j||j.status!=="draft")){C(!0);try{const P=await mk(e,j.id);await k(),r(P),s==null||s(),M.success(`Revision ${P.version} freigegeben.`)}catch(P){const G=P instanceof ut?String(P.message||P.detail||""):P instanceof Error?P.message:"",W=/article not found/i.test(G)?"Stückliste verweist auf fehlende/gelöschte Bauteile â bitte Zuordnung prüfen.":G.trim()||"Revision konnte nicht freigegeben werden.";M.error(W)}finally{C(!1)}}},T=async()=>{if(!(!j||j.status!=="draft")&&window.confirm(`Revision â${j.version}â wirklich löschen?`)){C(!0);try{await dk(e,j.id);const P=p.filter(W=>W.id!==j.id);await k();const G=P.find(W=>W.status==="active")??P.find(W=>W.status==="draft")??P[0]??null;G&&r(G),s==null||s(),M.success("Revision gelöscht.")}catch{M.error("Revision konnte nicht gelöscht werden.")}finally{C(!1)}}};return l?n.jsxs("div",{className:ye("space-y-3",i&&"space-y-2"),children:[n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[n.jsxs("div",{children:[n.jsx("h3",{className:ye("font-semibold tracking-tight",i?"text-xs":"text-sm"),children:"Revisionen"}),!i&&n.jsx("p",{className:"text-xs text-muted-foreground",children:"Stückliste und Produktion beziehen sich auf die ausgewählte Arbeitsrevision."})]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1 text-xs",disabled:a||E||I,onClick:z,children:[n.jsx(Gn,{className:"size-3.5"}),"Neue Revision"]})]}),d?n.jsxs("div",{className:"flex items-center gap-2 py-4 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-3.5 animate-spin"}),"Revisionen werden geladen â¦"]}):p.length===0?n.jsx("div",{className:"rounded-md border border-dashed border-border px-4 py-6 text-center text-xs text-muted-foreground",children:"Noch keine Revision vorhanden. Legen Sie eine Revision an, bevor Sie Stückliste oder Produktion bearbeiten."}):n.jsx("div",{className:"overflow-hidden rounded-md border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"hover:bg-transparent",children:[n.jsx(Ve,{className:"h-8 w-10 text-xs"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Version"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Status"}),!i&&n.jsx(Ve,{className:"h-8 text-xs",children:"Freigegeben"}),!i&&n.jsx(Ve,{className:"h-8 text-xs",children:"Notiz"})]})}),n.jsx(Qn,{children:p.map(P=>{const G=P.id===t;return n.jsxs(jt,{className:ye("cursor-pointer",G&&"bg-primary/5"),onClick:()=>r(P),children:[n.jsx(De,{className:"py-1.5",children:G?n.jsx(gi,{className:"size-3.5 text-primary"}):n.jsx("span",{className:"inline-block size-3.5"})}),n.jsx(De,{className:"py-1.5 font-mono text-xs",children:P.version}),n.jsx(De,{className:"py-1.5",children:n.jsx(bt,{variant:tI[P.status],className:"text-[10px]",children:eI[P.status]})}),!i&&n.jsx(De,{className:"py-1.5 text-xs text-muted-foreground",children:P.approvedAt?o.date(P.approvedAt):"â"}),!i&&n.jsx(De,{className:"max-w-[200px] truncate py-1.5 text-xs text-muted-foreground",children:P.notes||"â"})]},P.id)})})]})}),j&&n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsxs("span",{className:"text-xs text-muted-foreground",children:["Arbeitsrevision: ",n.jsx("span",{className:"font-mono font-medium text-foreground",children:j.version})]}),j.status==="draft"&&n.jsxs(n.Fragment,{children:[n.jsx(ee,{type:"button",size:"sm",className:"h-7 text-xs",disabled:a||I,onClick:()=>void B(),children:"Freigeben"}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1 text-xs text-destructive hover:text-destructive",disabled:a||I,onClick:()=>void T(),children:[n.jsx(or,{className:"size-3"}),"Löschen"]})]})]}),n.jsx(En,{open:x,onOpenChange:b,children:n.jsxs(Pn,{className:"sm:max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Neue Revision"})}),n.jsxs("div",{className:"space-y-3 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"rev-version",className:"text-xs",children:"Version"}),n.jsx(Ze,{id:"rev-version",value:w,onChange:P=>v(P.target.value),placeholder:"z. B. B oder 1.1",className:"h-8 font-mono text-sm",disabled:E})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"rev-notes",className:"text-xs",children:"Notiz (optional)"}),n.jsx(ka,{id:"rev-notes",value:S,onChange:P=>R(P.target.value),rows:2,className:"resize-none text-sm",disabled:E})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>b(!1),disabled:E,children:"Abbrechen"}),n.jsx(ee,{type:"button",onClick:()=>void D(),disabled:E,children:E?n.jsx(Me,{className:"size-4 animate-spin"}):"Anlegen"})]})]})})]}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"Revisionen sind verfügbar, sobald der Artikel gespeichert wurde."})}function fb(e){return e.filter(t=>!t.parentId)}function Ch(e,t){return t?e.filter(r=>r.parentId===t):fb(e)}function ii(e,t){return!t.some(r=>r.parentId===e)}function fd(e,t){const r=new Map(t.map(o=>[o.id,o])),s=[];let a=e;const i=new Set;for(;a&&!i.has(a);){i.add(a);const o=r.get(a);if(!o)break;s.push(o.name),a=o.parentId??void 0}return s.reverse().join(" > ")}function fm({locations:e,value:t,onChange:r,disabled:s,label:a="Lagerort",placeholder:i="Lagerort wählen â¦",allowedLocationIds:o}){const[l,d]=u.useState(""),[m,p]=u.useState(""),h=u.useMemo(()=>fb(e),[e]),x=u.useMemo(()=>l?Ch(e,l):[],[e,l]),b=u.useMemo(()=>m?Ch(e,m):[],[e,m]),w=h.find(j=>j.id===l),v=x.find(j=>j.id===m),S=l?ii(l,e):!1,R=m?ii(m,e):!1;u.useEffect(()=>{var B,T,P;if(!t){d(""),p("");return}const j=new Map(e.map(G=>[G.id,G])),z=[];let D=j.get(t);for(;D;)z.unshift(D),D=D.parentId?j.get(D.parentId):void 0;d(((B=z[0])==null?void 0:B.id)??""),z.length>=3?p(((T=z[1])==null?void 0:T.id)??""):z.length===2&&z[0]&&!ii(z[0].id,e)?p(((P=z[1])==null?void 0:P.id)??""):p("")},[t,e]);const E=u.useMemo(()=>
82{if(t)return fd(t,e);const j=[];return w&&j.push(w.name),v&&!S&&j.push(v.name),j.join(" > ")||i},[w,v,S,t,e,i]),A=j=>o?j.filter(z=>o.has(z.id)||!ii(z.id,e)):j,I=j=>{r(j,fd(j,e))},C=j=>{d(j),p(""),ii(j,e)?I(j):r("","")},k=j=>{p(j),ii(j,e)?I(j):r("","")};return n.jsxs("div",{className:"space-y-2",children:[a&&n.jsx(ze,{children:a}),n.jsx("div",{className:"rounded-md border bg-muted/20 px-2 py-1.5 text-xs text-muted-foreground",children:n.jsx("span",{className:ye(t&&"font-medium text-foreground"),children:E})}),n.jsxs("div",{className:"grid gap-2 sm:grid-cols-3",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"1. Lager"}),n.jsxs(_t,{value:l,onValueChange:C,disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Lager wählen â¦"})}),n.jsx(Pt,{children:A(h).map(j=>n.jsx(ft,{value:j.id,children:j.name},j.id))})]})]}),l&&!S&&n.jsxs("div",{className:"space-y-1",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"2. Regal"}),n.jsxs(_t,{value:m,onValueChange:k,disabled:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Regal wählen â¦"})}),n.jsx(Pt,{children:A(x).map(j=>n.jsx(ft,{value:j.id,children:j.shelfCode?`Regal ${j.shelfCode}`:j.name},j.id))})]})]}),m&&!R&&n.jsxs("div",{className:"space-y-1",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"3. Fach"}),n.jsxs(_t,{value:t,onValueChange:I,disabled:s||!m,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Fach wählen â¦"})}),n.jsx(Pt,{children:A(b).map(j=>n.jsx(ft,{value:j.id,children:j.binCode?`Fach ${j.binCode}`:j.name},j.id))})]})]})]}),t&&n.jsxs("p",{className:"flex items-center gap-1 text-[10px] text-muted-foreground",children:[n.jsx(ua,{className:"size-3"}),fd(t,e)]})]})}function sI({open:e,onOpenChange:t,articleId:r,unitOfMeasure:s,onBooked:a}){const[i,o]=u.useState([]),[l,d]=u.useState(""),[m,p]=u.useState("1"),[h,x]=u.useState(!1);u.useEffect(()=>{e&&ef().then(o)},[e]),u.useEffect(()=>{e||(d(""),p("1"))},[e]);const b=async()=>{const w=parseFloat(m);if(!l){M.error("Bitte einen Lagerort vollständig wählen.");return}if(!Number.isFinite(w)||w<=0){M.error("Bitte eine gültige Menge eingeben (mindestens 1).");return}x(!0);try{const v=await jx(r,{toLocationId:l,quantity:w,referenceType:"RECEIPT"});M.success(`${w} ${s} erfolgreich gebucht.`),a(v.levels)}catch{M.error("Bestand konnte nicht gebucht werden.")}finally{x(!1)}};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"sm:max-w-lg",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Bestand buchen"})}),n.jsxs("div",{className:"space-y-5 py-2",children:[n.jsx("p",{className:"text-xs text-muted-foreground",children:"Wareneingang auf einen Lagerplatz â für Erstbestand oder Nachbuchung ohne Umbuchung."}),n.jsx(fm,{locations:i,value:l,onChange:w=>d(w),label:"Lagerort"}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"book-qty",children:"Menge"}),n.jsx(Ze,{id:"book-qty",type:"number",min:1,step:"any",value:m,onChange:w=>p(w.target.value)})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:h,children:"Abbrechen"}),n.jsxs(ee,{type:"button",onClick:()=>void b(),disabled:h,className:"gap-2",children:[h?n.jsx(Me,{className:"size-4 animate-spin"}):null,"Buchen"]})]})]})})}function aI({open:e,onOpenChange:t,articleId:r,articleNumber:s,articleName:a,unitOfMeasure:i,purchasePrice:o=0,minStock:l=0,currentStock:d=0,onOrdered:m}){const p=kt(r),[h,x]=u.useState("1"),[b,w]=u.useState("0"),[v,S]=u.useState(""),[R,E]=u.useState(""),[A,I]=u.useState(null),[C,k]=u.useState(!1),[j,z]=u.useState(!1),D=u.useMemo(()=>{const T=Math.max(0,l-d);return Math.max(1,T||1)},[l,d]);u.useEffect(()=>{!e||!p||(x(String(D)),w(String(Number.isFinite(o)?o:0)),S(""),k(!0),Promise.all([Jc(r),Lo()]).then(([T,P])=>{const G=T.find(ke=>ke.isPrimary)??T[0];if(!G){E(""),I(null);return}E(`${G.supplierName} / ${G.partNumber}`);const W=P.find(ke=>ke.name.trim().toLowerCase()===G.supplierName.trim().toLowerCase());I((W==null?void 0:W.id)??null)}
82).catch(()=>{E(""),I(null)}).finally(()=>k(!1)))},[e,p,r,D,o]);const B=async()=>{const T=parseFloat(h.replace(",",".")),P=parseFloat(b.replace(",","."));if(!Number.isFinite(T)||T<=0){M.error("Bitte eine gültige Menge eingeben.");return}if(!Number.isFinite(P)||P<0){M.error("Bitte einen gültigen Preis eingeben.");return}z(!0);try{await xw({articleId:r,supplierId:A,quantity:T,price:P,status:"pending",notes:v.trim()||`Manuelle Bestellanforderung für ${s}`}),M.success("Bestellanforderung erstellt.",{description:"Unter Beschaffung weiterbearbeiten."}),t(!1),m==null||m()}catch{M.error("Bestellanforderung konnte nicht erstellt werden.")}finally{z(!1)}};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"sm:max-w-lg",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Bauteil bestellen"})}),p?n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"rounded-md border border-border bg-muted/30 px-3 py-2",children:[n.jsx("p",{className:"text-sm font-medium",children:a}),n.jsx("p",{className:"font-mono text-xs text-muted-foreground",children:s})]}),C?n.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Bezugsquellen werden geladen â¦"]}):R?n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{children:"Bezugsquelle"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:R})]}):n.jsx("p",{className:"text-xs text-amber-700",children:"Keine Bezugsquelle hinterlegt â Bestellung ohne Lieferanten-Zuordnung."}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"order-qty",children:"Menge"}),n.jsxs("div",{className:"relative",children:[n.jsx(Ze,{id:"order-qty",type:"number",min:1e-4,step:"any",value:h,onChange:T=>x(T.target.value),className:"pr-12"}),n.jsx("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground",children:i})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"order-price",children:"Stückpreis"}),n.jsxs("div",{className:"relative",children:[n.jsx(Ze,{id:"order-price",type:"number",min:0,step:1e-4,value:b,onChange:T=>w(T.target.value),className:"pr-10"}),n.jsx("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground",children:"EUR"})]})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"order-notes",children:"Notiz (optional)"}),n.jsx(ka,{id:"order-notes",value:v,onChange:T=>S(T.target.value),rows:2,placeholder:"z. B. Projekt, Dringlichkeit â¦"})]})]}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Bestellen ist möglich, sobald der Artikel gespeichert wurde."}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Abbrechen"}),n.jsx(ee,{type:"button",disabled:!p||j,onClick:()=>void B(),children:j?n.jsx(Me,{className:"size-4 animate-spin"}):"Bestellen"})]})]})})}function iI({open:e,onOpenChange:t,articleId:r,levels:s,unitOfMeasure:a,onTransferred:i}){const[o,l]=u.useState([]),[d,m]=u.useState(""),[p,h]=u.useState(""),[x,b]=u.useState("1"),[w,v]=u.useState(!1);u.useEffect(()=>{e&&ef().then(l)},[e]);const S=u.useMemo(()=>new Set(s.filter(A=>A.quantity>0).map(A=>A.locationId)),[s]),R=u.useMemo(()=>{const A=s.find(I=>I.locationId===d);return(A==null?void 0:A.quantity)??0},[s,d]);u.useEffect(()=>{e||(m(""),h(""),b("1"))},[e]);const E=async()=>{const A=parseFloat(x);if(!d||!p){M.error("Bitte Quell- und Ziel-Lagerort vollständig wählen.");return}if(d===p){M.error("Quell- und Ziel-Lagerort müssen unterschiedlich sein.");return}if(!Number.isFinite(A)||A<=0){M.error("Bitte eine gültige Menge eingeben.");return}if(A>R){M.error(`Maximal ${R} ${a} verfügbar.`);return}v(!0);try{const I=await Gk(r,{fromLocationId:d,toLocationId:p,quantity:A,referenceType:"MANUAL"});M.success("Bestand erfolgreich umgebucht."),i(I.levels)}catch{M.error("Umbuchung fehlgeschlagen â Bestand prüfen.")}finally{v(!1)}};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"sm:max-w-lg",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Bestand umbuchen"})}),n.jsxs("div",{className:"space-y-5 py-2",children:[n.jsx(fm,{locations:o,value:d,onChange:A=>m(A),label:"Von Lagerort",allowedLocationIds:S}),n.jsx(fm,{locations:o,value:p,onChange:A=>h(A),label:"Nach Lagerort"}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"transfer-qty",children:"Menge"}),n.jsx(Ze,{id:"transfer-qty",type:"number",min:1e-4,step:"any",value:x,onChange:A=>b(A.target.value)}),d&&n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Verfügbar: ",R," ",a]})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:w,children:"Abbrechen"}),n.jsxs(ee,{type:"button",onClick:()=>void E(),disabled:w,className:"gap-2",children:[w?n.jsx(Me,{className:"size-4 animate-spin"}):null,"Umbuchen"]})]})]})})}function Ol(e){return e.map(t=>({id:t.id,supplierName:t.supplierName,partNumber:t.partNumber,isPrimary:t.isPrimary}))}function oI(e){return{id:`new-${crypto.randomUUID()}`,supplierName:"",partNumber:"",isPrimary:e,isNew:!0}}function lI(e,t){return e<=0?{label:"Leer",variant:"empty"}:e<t?{label:"Unter Meldebestand",variant:"warn"}:{label:"Verfügbar",variant:"ok"}}function cI({articleId:e,articleNumber:t,articleName:r,unitOfMeasure:s,minStock:a,minStockBaseline:i,minStockDisabled:o,savingMinStock:l=!1,onMinStockChange:d,onMinStockSave:m,purchasePrice:p=0,purchasePriceBaseline:h=0,savingPurchasePrice:x=!1,onPurchasePriceChange:b,onPurchasePriceSave:w,showSupplierSection:v=!0,manufacturer:S,mpn:R,isEditing:E=!1}){const{hasAccess:A}=uf(),I=A("procurement"),C=kt(e),k=E&&!o&&C,j=k&&!!b,z=a!==i,D=p!==h,[B,T]=u.useState([]),[P,G]=u.useState(!1),[W,ke]=u.useState(!1),[L,xe]=u.useState(!1),[Y,Ne]=u.useState(!1),[se,J]=u.useState([]),[Q,U]=u.useState([]),[ne,H]=u.useState(!1),[Z,K]=u.useState([]),[me,$]=u.useState(new Set),[X,Ie]=u.useState(!1),V=u.useRef(!1),Se=((R==null?void 0:R.trim())||(S==null?void 0:S.trim())||"").trim(),Ce=(S==null?void 0:S.trim())||"Unbekannt",Be=!!Se&&se.length===0,Le=u.useCallback(async()=>
82{if(!C){T([]);return}G(!0);try{T(await Hk(e))}finally{G(!1)}},[e,C]),rt=u.useCallback(async()=>{if(!C){J([]);return}H(!0);try{J(await Jc(e))}catch{M.error("Lieferanten konnten nicht geladen werden."),J([])}finally{H(!1)}},[e,C]);u.useEffect(()=>{Le(),rt()},[Le,rt]),u.useEffect(()=>{k&&!V.current&&U(Ol(se)),V.current=k},[k,se]),u.useEffect(()=>{k&&Lo().then(Oe=>K(Oe.map(re=>({id:re.id,name:re.name})))).catch(()=>K([]))},[k]);const lt=u.useMemo(()=>B.reduce((Oe,re)=>Oe+re.quantity,0),[B]),Tt=u.useMemo(()=>[...B].sort((Oe,re)=>(Oe.locationPath||Oe.locationName).localeCompare(re.locationPath||re.locationName,"de")),[B]),vt=k?Q:Ol(se),Pe=$y(vt,C&&vt.length>0),it=(Oe,re)=>{$(ve=>{const _e=new Set(ve);return re?_e.add(Oe):_e.delete(Oe),_e})},yt=(Oe,re)=>{U(ve=>ve.map(_e=>_e.id===Oe?{..._e,...re}:_e))},wt=async Oe=>{const re=Oe.supplierName.trim(),ve=Oe.partNumber.trim();if(!(!re||!ve)){it(Oe.id,!0);try{if(Oe.isNew){const _e=await pc(e,{supplierName:re,partNumber:ve,isPrimary:Oe.isPrimary});U(te=>te.map(nt=>nt.id===Oe.id?{id:_e.id,supplierName:_e.supplierName,partNumber:_e.partNumber,isPrimary:_e.isPrimary}:_e.isPrimary?{...nt,isPrimary:!1}:nt)),J(te=>{const nt=te.filter(be=>be.id!==Oe.id);return[..._e.isPrimary?nt.map(be=>({...be,isPrimary:!1})):nt,_e]})}else{const _e=await zp(e,Oe.id,{supplierName:re,partNumber:ve,isPrimary:Oe.isPrimary});U(te=>te.map(nt=>nt.id===Oe.id?{id:_e.id,supplierName:_e.supplierName,partNumber:_e.partNumber,isPrimary:_e.isPrimary}:_e.isPrimary?{...nt,isPrimary:!1}:nt)),J(te=>te.map(Fe=>
82Fe.id===_e.id?_e:_e.isPrimary?{...Fe,isPrimary:!1}:Fe))}}catch{M.error("Bezugsquelle konnte nicht gespeichert werden.")}finally{it(Oe.id,!1)}}},an=Oe=>{wt(Oe)},qt=async Oe=>{if(Oe.isPrimary)return;const re=Oe.supplierName.trim(),ve=Oe.partNumber.trim();if(!re||!ve){M.error("Lieferant und Bestellnummer zuerst ausfüllen.");return}if(U(_e=>_e.map(te=>({...te,isPrimary:te.id===Oe.id}))),Oe.isNew){await wt({...Oe,isPrimary:!0});return}it(Oe.id,!0);try{const _e=await zp(e,Oe.id,{isPrimary:!0});U(te=>te.map(nt=>({...nt,isPrimary:nt.id===_e.id}))),J(te=>te.map(nt=>({...nt,isPrimary:nt.id===_e.id})))}catch{M.error("Standard-Lieferant konnte nicht gesetzt werden."),U(Ol(se))}finally{it(Oe.id,!1)}},Qt=async Oe=>{if(Oe.isNew){U(re=>re.filter(ve=>ve.id!==Oe.id));return}it(Oe.id,!0);try{await Yk(e,Oe.id),U(re=>re.filter(ve=>ve.id!==Oe.id)),J(re=>re.filter(ve=>ve.id!==Oe.id)),M.success("Bezugsquelle entfernt.")}catch{M.error("Bezugsquelle konnte nicht gelöscht werden.")}finally{it(Oe.id,!1)}},en=()=>{U(Oe=>[...Oe,oI(Oe.length===0)])},Wt=async()=>{if(Be){Ie(!0);try{const Oe=await pc(e,{supplierName:Ce,partNumber:Se,isPrimary:!0});J([Oe]),k&&U(Ol([Oe])),M.success("Bezugsquelle aus Stammdaten übernommen.")}catch{M.error("Bezugsquelle konnte nicht gespeichert werden.")}finally{Ie(!1)}}},on=Oe=>{const re=Oe.replace(",","."),ve=parseFloat(re);return Math.max(0,Number.isFinite(ve)?ve:0)},mn=Oe=>j&&Oe===0?n.jsxs("div",{className:"flex items-center justify-end gap-1",children:[n.jsx(Ze,{type:"number",min:0,step:1e-4,value:Number.isFinite(p)?p:0,onChange:re=>b==null?void 0:b(on(re.target.value)),disabled:x,className:"h-8 w-24 text-right text-xs tabular-nums","aria-label":"Einkaufspreis"}),n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"EUR"})]}):n.jsxs("span",{className:"text-xs tabular-nums",children:[(Number.isFinite(p)?p:0).toFixed(4)," EUR"]}),ln=()=>n.jsxs("div",{className:"mx-auto flex max-w-xs flex-col gap-1.5 py-2",children:[n.jsx("label",{htmlFor:"inv-purchase-price",className:"text-xs text-muted-foreground",children:"Einkaufspreis"}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx(Ze,{id:"inv-purchase-price",type:"number",min:0,step:1e-4,value:Number.isFinite(p)?p:0,onChange:Oe=>b==null?void 0:b(on(Oe.target.value)),disabled:x,className:"h-8 pr-10 text-right text-sm tabular-nums"}),n.jsx("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground",children:"EUR"})]}),w&&n.jsx(ee,{type:"button",size:"sm",className:"h-8 shrink-0",disabled:!D||x,onClick:w,children:x?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Speichern"})]})]}),cn=Oe=>Z.length>0?n.jsxs(_t,{value:Oe.supplierName||void 0,onValueChange:re=>{yt(Oe.id,{supplierName:re}),wt({...Oe,supplierName:re})},children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Lieferant wählen â¦"})}),n.jsx(Pt,{children:Z.map(re=>n.jsx(ft,{value:re.name,children:re.name},re.id))})]}):n.jsx(Ze,{value:Oe.supplierName,onChange:re=>yt(Oe.id,{supplierName:re.target.value}),onBlur:()=>an(Oe),placeholder:"Lieferant",className:"h-8 text-xs"});return n.jsxs("div",{className:"space-y-6 pb-2",children:[v&&n.jsxs("section",{className:"space-y-3",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold tracking-tight",children:"Lieferanten & Preise"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:k?"Bezugsquellen direkt in der Tabelle bearbeiten â Ãnderungen werden beim Verlassen des Feldes gespeichert.":"Bezugsquellen und Einkaufspreise für diesen Artikel"})]}),ne?n.jsxs("div",{className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Lieferanten werden geladen â¦"]}):vt.length>0||k?n.jsx("div",{className:"overflow-hidden rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"h-8 pl-3 text-xs",children:"Lieferant"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Bestellnr."}),n.jsx(Ve,{className:"h-8 text-right text-xs",children:"Marktpreis"}),n.jsx(Ve,{className:"h-8 text-right text-xs",children:"Lager"}),n.jsx(Ve,{className:"h-8 text-right text-xs",children:"Preis"}),n.jsx(Ve,{className:"h-8 w-12 text-center text-xs",children:"Std."}),k&&n.jsx(Ve,{className:"h-8 w-10"})]})}),n.jsx(Qn,{children:vt.map((Oe,re)=>{const ve=me.has(Oe.id),_e=Pe.get(Oe.id);return n.jsxs(jt,{children:[n.jsx(De,{className:"py-2 pl-3",children:k?cn(Oe):n.jsx("span",{className:"text-xs font-medium",children:Oe.supplierName||"â"})}),n.jsx(De,{className:"py-2",children:k?n.jsx(Ze,{value:Oe.partNumber,onChange:te=>yt(Oe.id,{partNumber:te.target.value}),onBlur:()=>an(Oe),placeholder:"Bestellnr.",className:"h-8 font-mono text-[10px]"}):n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:Oe.partNumber})}),n.jsx(De,{className:"py-2 text-right",children:(_e==null?void 0:_e.
82status)==="loading"?n.jsx(Me,{className:"ml-auto size-3 animate-spin text-muted-foreground"}):(_e==null?void 0:_e.status)==="ok"?n.jsxs("span",{className:"flex items-center justify-end gap-1 tabular-nums",children:[n.jsx(eN,{className:"size-2.5 text-green-500"}),n.jsx("span",{className:"text-xs",children:_e.price>0?`${_e.price.toFixed(4)} ${_e.currency}`:"â"})]}):(_e==null?void 0:_e.status)==="error"?n.jsx("span",{className:"text-[10px] text-destructive",title:_e.message,children:"Fehler"}):n.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"â"})}),n.jsx(De,{className:"py-2 text-right",children:(_e==null?void 0:_e.status)==="loading"?n.jsx(Me,{className:"ml-auto size-3 animate-spin text-muted-foreground"}):(_e==null?void 0:_e.status)==="ok"?n.jsx("span",{className:ye("text-xs tabular-nums",_e.stock<=0?"text-destructive":_e.stock<100?"text-orange-500":"text-foreground"),children:_e.stock.toLocaleString("de-DE")}):n.jsx("span",{className:"text-[10px] text-muted-foreground/50",children:"â"})}),n.jsx(De,{className:"py-2 text-right",children:mn(re)}),n.jsx(De,{className:"py-2 text-center",children:n.jsx("button",{type:"button",disabled:!k&&!Oe.isPrimary,onClick:()=>k&&void qt(Oe),className:ye("mx-auto inline-flex",k&&"cursor-pointer rounded p-0.5 hover:bg-muted/60",ve&&"opacity-50"),"aria-label":Oe.isPrimary?"Standard-Lieferant":"Als Standard setzen",children:Oe.isPrimary?n.jsx(tp,{className:"size-3.5 fill-yellow-400 text-yellow-400"}):n.jsx(tp,{className:ye("size-3.5",k?"text-muted-foreground/50":"text-muted-foreground/30")})})}),k&&n.jsx(De,{className:"py-2 pr-2 text-right",children:n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7 text-muted-foreground hover:text-destructive",disabled:ve,onClick:()=>void Qt(Oe),"aria-label":"Bezugsquelle entfernen",children:ve?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(or,{className:"size-3.5"})})})]},Oe.id)})})]})}):n.jsxs("div",{className:"space-y-3 py-2 text-center",children:[n.jsx("p",{className:"text-xs text-muted-foreground",children:"Noch keine Bezugsquelle gespeichert."}),j&&ln(),Be&&k&&n.jsx(ee,{type:"button",variant:"secondary",size:"sm",className:"h-7 text-xs",disabled:X,onClick:()=>void Wt(),children:X?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Aus Stammdaten übernehmen"})]}),k&&n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5 h-7 text-xs",onClick:en,children:[n.jsx(Gn,{className:"size-3"}),"Zeile hinzufügen"]}),j&&D&&w&&n.jsx(ee,{type:"button",size:"sm",className:"h-7 text-xs",disabled:x,onClick:w,children:x?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Preis speichern"}),Be&&vt.length===0&&n.jsx(ee,{type:"button",variant:"secondary",size:"sm",className:"h-7 text-xs",disabled:X,onClick:()=>void Wt(),children:X?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Aus Stammdaten übernehmen"})]})]}),v&&n.jsx(To,{}),n.jsxs("section",{className:"space-y-4",children:[n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold tracking-tight",children:"Bestand"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Gesamt: ",lt," ",s]})]}),C&&n.jsxs("div",{className:"flex flex-wrap gap-2",children:[I&&n.jsxs(ee,{type:"button",variant:"secondary",size:"sm",className:"gap-1.5",onClick:()=>Ne(!0),children:[n.jsx(wg,{className:"size-3.5"}),"Bestellen"]}),!o&&n.jsxs(n.Fragment,{children:[n.jsxs(ee,{type:"button",variant:"default",size:"sm",className:"gap-1.5",onClick:()=>xe(!0),children:[n.jsx(Sg,{className:"size-3.5"}),"Bestand buchen"]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>ke(!0),children:[n.jsx(tN,{className:"size-3.5"}),"Umbuchen"]})]})]})]}),C?P?n.jsxs("div",{className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Bestand wird geladen â¦"]}):n.jsx("div",{className:"overflow-hidden rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"h-8 pl-3 text-xs",children:"Lagerort"}),n.jsx(Ve,{className:"h-8 text-right text-xs",children:"Verfügbar"}),n.jsx(Ve,{className:"h-8 pr-3 text-xs",children:"Status"})]})}),n.jsx(Qn,{children:Tt.length===0?n.jsx(jt,{children:n.jsx(De,{colSpan:3,className:"py-6 text-center text-xs text-muted-foreground",children:"Noch kein Bestand gebucht â âBestand buchenâ für Wareneingang nutzen."})}):Tt.map(Oe=>{const re=lI(Oe.quantity,a);return n.jsxs(jt,{children:[n.jsx(De,{className:"py-2 pl-3 text-sm font-medium",children:Oe.locationPath||Oe.locationName}),n.jsxs(De,{className:"py-2 text-right text-sm tabular-nums",children:[Oe.quantity," ",s]}),n.jsx(De,{className:"py-2 pr-3",children:n.jsx(bt,{variant:"outline",className:re.variant==="ok"?"border-green-500/40 text-green-700":re.variant==="warn"?"border-amber-500/40 text-amber-700":"border-muted-foreground
82/30 text-muted-foreground",children:re.label})})]},Oe.locationId)})})]})}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"Bestände sind verfügbar, sobald der Artikel gespeichert wurde."}),n.jsxs("div",{className:"grid max-w-xs grid-cols-1 gap-1.5",children:[n.jsx("label",{htmlFor:"inv-min-stock",className:"text-xs text-muted-foreground",children:"Meldebestand"}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx("input",{id:"inv-min-stock",type:"number",min:0,value:a,onChange:Oe=>d(parseInt(Oe.target.value,10)||0),disabled:o||l,className:"h-8 w-full rounded-md border border-input bg-background px-3 pr-10 text-sm disabled:opacity-50"}),n.jsx("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground",children:s})]}),C&&!o&&n.jsx(ee,{type:"button",size:"sm",className:"h-8 shrink-0",disabled:!z||l,onClick:m,children:l?n.jsx(Me,{className:"size-3.5 animate-spin"}):"Speichern"})]})]})]}),C&&n.jsxs(n.Fragment,{children:[n.jsx(aI,{open:Y,onOpenChange:Ne,articleId:e,articleNumber:t,articleName:r,unitOfMeasure:s,purchasePrice:p,minStock:a,currentStock:lt}),n.jsx(sI,{open:L,onOpenChange:xe,articleId:e,unitOfMeasure:s,onBooked:Oe=>{T(Oe),xe(!1),Le()}}),n.jsx(iI,{open:W,onOpenChange:ke,articleId:e,levels:B,unitOfMeasure:s,onTransferred:Oe=>{T(Oe),ke(!1),Le()}})]})]})}const uI={name:"Bezeichnung",description:"Beschreibung",category:"Warengruppe",item_type:"Artikeltyp",item_type_definition_id:"Artikelart",typ:"Hersteller",stock:"Bestand",unit:"Mengeneinheit",revision_version:"Revision",product_structure:"Produktstruktur",price:"Preis","bom.add":"Stückliste: Position hinzugefügt","bom.remove":"Stückliste: Position entfernt","bom.bulk_import":"Stückliste: Import","bom.quantity":"Stückliste: Menge","bom.child_article":"Stückliste: Artikel","bom.reference_designator":"Stückliste: Referenz","bom.typ":"Stückliste: Typ","bom.import.field_edit":"Wert korrigiert","bom.import.article_assign":"Artikel zugeordnet","bom.import.article_create":"Neuer Artikel angelegt","bom.import.import_commit":"Import bestätigt","sourcing.add":"Bezugsquelle hinzugefügt","sourcing.remove":"Bezugsquelle entfernt","sourcing.supplier_name":"Lieferant","sourcing.part_number":"Bestellnummer","sourcing.is_primary":"Standard-Lieferant","inventory.receive":"Wareneingang","inventory.transfer":"Umbuchung"},dI={_minStock:"Meldebestand",mpn:"MPN",shopwareProductNumber:"Shop-Artikelnummer"};function _h(e){if(e.startsWith("attributes.")){const t=e.slice(11);return dI[t]??`Eigenschaft: ${t}`}return uI[e]??e}function mI(e){switch(e){case"draft_submitted":return"Zur Freigabe eingereicht";case"approved":return"Freigegeben";case"direct_update":return"Direkt gespeichert";case"deletion_requested":return"Löschung angefordert";case"deleted":return"Gelöscht";case"deletion_cancelled":return"Löschanfrage zurückgezogen";case"bom_changed":return"Stückliste geändert";case"sourcing_changed":return"Beschaffung geändert";case"inventory_changed":return"Lager geändert";case"production_started":return"Produktion gestartet";case"production_planning_complete":return"AV freigegeben (PLANNING_COMPLETE)";case"production_waiting_for_material":return"Wartet auf Material";default:return e}}function pd(e){if(e==null||e==="")return"â";if(typeof e=="object")try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function fI({articleId:e}){const t=Mi(),[r,s]=u.useState([]),[a,i]=u.useState(!1),o=u.useCallback(async()=>{if(!kt(e)){s([]);return}i(!0);try{s(await hx(e))}finally{i(!1)}},[e]);return u.useEffect(()=>{o()},[o]),kt(e)?a?n.jsxs("div",{className:"flex items-center gap-2 py-8 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Historie wird geladenâ¦"]}):r.length===0?n.jsx("p",{className:"py-8 text-center text-sm text-muted-foreground",children:"Noch keine Einträge."}):n.jsx("div",{className:"space-y-4 pb-2",children:r.map(l=>n.jsxs("div",{className:"rounded-lg border border-border bg-card p-3",children:[n.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[n.jsx("span",{className:"text-sm font-medium",children:mI(l.eventType)}),n.jsx("span",{className:"text-[11px] text-muted-foreground",children:l.createdAt?t.dateTime(l.createdAt):"â"})]}),l.summary&&n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:l.summary}),l.changes.length>0&&(()=>{const d=l.changes.filter(p=>p.field.startsWith("bom.import.")),m=l.changes.filter(p=>!p.field.startsWith("bom.import."));return n.jsxs("div",{className:"mt-2 border-t border-border/60 pt-2 space-y-2",children:[m.length>0&&n.jsx("ul",{className:"space-y-1.5",children:m.map(p=>n.jsxs("li",{className:"text-xs",children:[n.jsxs("span",{className:"font-medium text-foreground",children:[_h(p.field),":"]})," ",n.jsx("span",{className:"text-muted-foreground line-through",children:pd(p.releasedValue)}),p.releasedValue!=null&&" â ",n.jsx("span",{className:"text-foreground",children:pd(p.draftValue)})]},`${l.id}-${p.field}`))}),d.length>0&&n.jsx("ul",{className:"space-y-0.5",children:d.map(p=>n.jsxs("li",{className:"text-xs flex gap-1.5",children:[n.jsxs("span",{className:"shrink-0 text-muted-foreground",children:[_h(p.field),":"]}),n.jsx("span",{className:"text-foreground truncate",children:pd(p.draftValue)})]},`${l.id}-${p.field}`))})]})})()]},l.id))}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Ãnderungshistorie ist verfügbar, sobald der Artikel gespeichert wurde."})}const pI={article:"Artikel",inventory_level:"Bestand (Fach)",stock_integrity:"Integrität",bom_output:"Nutzen (BOM Output)",bom_yield:"Nutzen-Summe",error:"Fehler"};function hI({open:e,onOpenChange:t,result:r}){const s=(r==null?void 0:r.hasMismatch)??!1;return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-h-[85vh] overflow-hidden sm:min-w-[36rem] sm:max-w-2xl",children:[n.jsxs(Tn,{children:[n.jsxs(Dn,{className:"flex items-center gap-2",children:["Integritätsprüfung",r&&n.jsx(bt,{className:ye("border-transparent text-[10px] font-medium",s?"bg-destructive/15 text-destructive":"bg-emerald-500/15 text-emerald-700 dark:text-emerald-400"),children:s?"Abweichung":"OK"})]}),n.jsx(Xo,{children:"Abgleich Lagerbestand â Buchungsjournal sowie Nutzen-Mapping (BOM Outputs)."})]}),n.jsx("div",{className:"max-h-[60vh] overflow-y-auto rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"h-8 w-[120px] pl-3 text-xs",children:"Bereich"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Info"}),n.jsx(Ve,{className:"h-8 pr-3 text-right text-xs",children:"Wert"})]})}),n.jsx(Qn,{children:!r||r.rows.length===0?n.jsx(jt,{children:n.jsx(De,{colSpan:3,className:"py-6 text-center text-xs text-muted-foreground",children:"Keine Ergebnisse."})}):r.rows.map((a,i)=>{const o=a.section==="stock_integrity"&&a.value.includes("MISMATCH");return n.jsxs(jt,{children:[n.jsx(De,{className:"py-2 pl-3 text-xs text-muted-foreground",children:pI[a.section]??a.section}),n.jsx(De,{className:"py-2 text-sm",children:a.info}),n.jsx(De,{className:ye("py-2 pr-3 text-right text-xs font-mono",o&&"font-medium text-destructive"),children:a.value})]},`${a.section}-${a.info}-${i}`)})})]})})]})})}function gI(e){var a;const t=document.createElement("iframe");t.setAttribute("aria-hidden","true"),t.style.position="fixed",t.style.right="0",t.style.bottom="0",t.style.width="0",t.style.height="0",t.style.border="0",document.body.appendChild(t);const r=t.contentDocument;if(!r)throw t.remove(),new Error("Druckrahmen konnte nicht geöffnet werden");r.open(),r.write(`<!DOCTYPE html><html><head><title>Etikett</title><style>html,body{margin:0;padding:0}svg{max-width:100%;height:auto}</style></head><body>${e}</body></html>`),r.close();const s=()=>{var i,o;(i=t.contentWindow)==null||i.focus(),(o=t.contentWindow)==null||o.print(),window.setTimeout(()=>t.remove(),1500)};((a=t.contentDocument)==null?void 0:a.readyState)==="complete"?s():t.onload=s}function xI({open:e,onOpenChange:t,articleNumber:r}){const[s,a]=u.useState([]),[i,o]=u.useState(""),[l,d]=u.useState(!1),[m,p]=u.useState(!1),[h,x]=u.useState(!1),[b,w]=u.useState(""),v=u.useRef(null),[S,R]=u.useState("");u.useEffect(()=>{if(!e)return;let A=!1;return d(!0),w(""),R(""),Dw().then(I=>{A||(a(I),o(C=>{var k;return C||((k=I[0])==null?void 0:k.id)||""}))}).catch(I=>{A||M.error(I instanceof Error?I.message:"Vorlagen konnten nicht geladen werden")}).finally(()=>{A||d(!1)}),()=>{A=!0}},[e]),u.useEffect(()=>{if(!e||!i||!r.trim()){w(""),R("");return}let A=!1;return p(!0),Rw(r.trim(),i).then(I=>
82{if(A)return;w(I),v.current&&URL.revokeObjectURL(v.current);const C=URL.createObjectURL(new Blob([I],{type:"image/svg+xml"}));v.current=C,R(C)}).catch(I=>{A||(w(""),R(""),M.error(I instanceof Error?I.message:"Vorschau fehlgeschlagen"))}).finally(()=>{A||p(!1)}),()=>{A=!0}},[e,i,r]),u.useEffect(()=>()=>{v.current&&URL.revokeObjectURL(v.current)},[]);function E(){if(b){x(!0);try{gI(b)}catch(A){M.error(A instanceof Error?A.message:"Druck fehlgeschlagen")}finally{x(!1)}}}return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-w-lg",children:[n.jsxs(Tn,{children:[n.jsx(Dn,{children:"Etikett drucken"}),n.jsxs(Xo,{children:["Vorlage aus dem System, gerendert für ",r||"diesen Artikel",". Die gespeicherte SVG-Vorlage bleibt unverändert."]})]}),l?n.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Vorlagen laden â¦"]}):s.length===0?n.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine aktiven Vorlagen. Lege sie unter Admin â Etiketten an."}):n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{children:"Vorlage"}),n.jsxs(_t,{value:i,onValueChange:o,children:[n.jsx(It,{children:n.jsx(Et,{placeholder:"Vorlage wählen"})}),n.jsx(Pt,{children:s.map(A=>n.jsx(ft,{value:A.id,children:A.name},A.id))})]})]}),n.jsx("div",{className:"rounded-md border bg-white min-h-[140px] flex items-center justify-center p-3",children:m?n.jsx(Me,{className:"size-5 animate-spin text-muted-foreground"}):S?n.jsx("img",{src:S,alt:"Etikettenvorschau",className:"max-h-56 max-w-full"}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Vorschau"})})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),children:"SchlieÃen"}),n.jsxs(ee,{type:"button",className:"gap-1.5",disabled:!b||h||!r.trim(),onClick:E,children:[h?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(Ag,{className:"size-4"}),"Drucken"]})]})]})})}function yI({articleId:e,apiArticles:t}){const[r,s]=u.useState(null),[a,i]=u.useState(""),o=u.useMemo(()=>{const l=new Map;for(const d of t)l.set(d.id,{articleNumber:d.articleNumber,name:d.name,referenceKey:d.articleNumber});return l},[t]);return u.useEffect(()=>{let l=!1;async function d(){try{const m=await wk(e);if(!m.length||l)return;const p=m[0],[h,x]=await Promise.all([Gl(p.panelArticleId,o),xx(p.panelArticleId)]);if(l)return;const b=cC(p.panelArticleId,x),w=dC(h,t);s(mC(w,b)),i(`${p.panelName} (${p.panelArticleNumber})`)}catch{l||(s(null),i(""))}}return d(),()=>{l=!0}},[e,t,o]),r==null?null:n.jsx("div",{className:"border-b px-6 py-3",children:n.jsxs("div",{className:"rounded-lg border border-border bg-muted/20 px-4 py-3",children:[n.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Herstellpreis (COGS) aus Nutzen"}),n.jsx("p",{className:"text-lg font-semibold tabular-nums",children:Ey(r)}),n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["Quelle: Panel ",a]})]})})}const bI=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function vI({panelArticleId:e,panelArticleName:t,catalogArticles:r,disabled:s=!1,isEditing:a=!0,variant:i="embedded",onChanged:o}){const l=bI.test(e),[d,m]=u.useState([]),[p,h]=u.useState(!1),[x,b]=u.useState(!1),[w,v]=u.useState(""),[S,R]=u.useState(!1),E=u.useCallback(async()=>{if(!l){m([]);return}h(!0);try{m(await xx(e))}catch{M.error("Nutzen-Definition konnte nicht geladen werden.")}finally{h(!1)}},[e,l]);u.useEffect(()=>{E()},[E]);const A=async P=>{if(!l){m(P);return}b(!0);try{const G=await kk(e,P.map(W=>({outputArticleId:W.outputArticleId,quantity:W.quantity})));m(G),M.success("Nutzen-Definition gespeichert."),o==null||o()}catch{M.error("Nutzen-Definition konnte nicht gespeichert werden.")}finally{b(!1)}},I=P=>{if(d.some(W=>W.outputArticleId===P.id)){M.message("Artikel ist bereits in der Nutzen-Definition.");return}const G=[...d,{id:crypto.randomUUID(),tenantId:"",articleId:e,outputArticleId:P.id,quantity:1}];A(G),v(""),R(!1)},C=(P,G)=>{const W=Ls(G),ke=d.map(L=>L.outputArticleId===P?{...L,quantity:W}:L);A(ke)},k=P=>{A(d.filter(G=>G.outputArticleId!==P))},j=()=>{const P=r.find(G=>
82G.id===e);P&&A([{id:crypto.randomUUID(),tenantId:"",articleId:e,outputArticleId:P.id,quantity:1}])},z=u.useMemo(()=>{if(!w.trim())return[];const P=r.filter(G=>G.id!==e&&!d.some(W=>W.outputArticleId===G.id));return Ly(P,w,{limit:Si})},[w,r,e,d]),D=P=>{const G=r.find(W=>W.id===P);return G?{name:G.name,articleNumber:G.articleNumber}:P===e?{name:t,articleNumber:"â"}:{name:"Unbekannter Artikel",articleNumber:"â"}},B=d.length===0,T=i==="tab";return n.jsxs("div",{className:T?"space-y-5 p-6":"space-y-3 rounded-lg border border-border p-4",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(Om,{className:"mt-0.5 size-4 shrink-0 text-primary"}),n.jsxs("div",{children:[n.jsx("h4",{className:"text-sm font-semibold",children:T?"Kuppelproduktion / Nutzen-Bruch":"Fertigungs-Ergebnis (Nutzen)"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:T?"Definiert, in welche Einzelplatinen ein Nutzen beim Wareneingang aufgebrochen wird. Ohne Eintrag wird der Fertigungsartikel 1:1 eingelagert.":"Was aus diesem Panel nach Nutzentrennung entsteht. Ohne Eintrag gilt 1à der eigene Artikel."})]})]}),p?n.jsx("p",{className:"text-xs text-muted-foreground",children:"Nutzen-Definition wird geladen â¦"}):n.jsxs(n.Fragment,{children:[B?n.jsx("ul",{className:"space-y-2",children:n.jsxs("li",{className:"flex flex-wrap items-center gap-2 rounded-md border bg-card px-3 py-2",children:[n.jsxs("span",{className:"min-w-0 flex-1 text-xs",children:[n.jsx("span",{className:"font-medium",children:t||"Dieser Artikel"}),n.jsx("span",{className:"ml-2 text-[10px] text-muted-foreground",children:"(Standard 1:1)"})]}),n.jsx("span",{className:"text-xs text-muted-foreground",children:"Ergibt: 1 Stück / Nutzen"})]})}):n.jsx("ul",{className:"space-y-2",children:d.map(P=>{const G=D(P.outputArticleId);return n.jsxs("li",{className:"flex flex-wrap items-center gap-2 rounded-md border bg-card px-3 py-2",children:[n.jsxs("span",{className:"min-w-0 flex-1 text-xs",children:[n.jsx("span",{className:"font-medium",children:G.name}),n.jsx("span",{className:"ml-2 font-mono text-[10px] text-muted-foreground",children:G.articleNumber})]}),n.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[n.jsx("span",{className:"text-muted-foreground",children:"à / Nutzen:"}),n.jsx(Ze,{type:"number",min:1,step:1,value:Ls(P.quantity),onChange:W=>C(P.outputArticleId,parseInt(W.target.value,10)||1),className:"h-7 w-16 text-right text-xs",disabled:s||x||!a}),n.jsx("span",{className:"text-muted-foreground",children:"Stück"})]}),a&&n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7 text-muted-foreground hover:text-destructive",disabled:x,onClick:()=>k(P.outputArticleId),children:n.jsx(or,{className:"size-3.5"})})]},P.id)})}),a&&l&&n.jsxs("div",{className:"space-y-2",children:[B&&n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",disabled:s||x,onClick:j,children:[n.jsx(Gn,{className:"size-3.5"}),"Mischnutzen definieren"]}),!B&&n.jsxs("div",{className:"relative",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:w,onChange:P=>v(P.target.value),onFocus:()=>R(!0),onBlur:()=>setTimeout(()=>R(!1),150),placeholder:"Einzelplatine / Modul suchen ⦠(Teilwort, -wort / NOT)",className:"h-8 pl-8 text-sm",disabled:s||x}),S&&w.trim()&&n.jsx("div",{className:"absolute left-0 right-0 top-full z-50 mt-1 overflow-hidden rounded-lg border bg-popover shadow-lg",children:z.length===0?n.jsx("p",{className:"px-3 py-2.5 text-center text-xs text-muted-foreground",children:"Keine Artikel gefunden."}):n.jsx("div",{className:`${cu(z.length)} overflow-y-auto p-1`,children:z.map(P=>n.jsxs("button",{type:"button",onMouseDown:G=>{G.preventDefault(),I(P)},className:"flex w-full flex-col items-start rounded-md px-3 py-2 text-left hover:bg-accent",children:[n.jsx("span",{className:"text-sm font-medium",children:P.name}),n.jsxs("span",{className:"font-mono text-[10px] text-muted-foreground",children:[P.articleNumber," · ",Hr(P.itemType)]})]},P.id))})})]})]})]})]})}
82class pb extends Error{constructor(r){const s=r.mismatchMessages.join("; ")||"Stock integrity mismatch";super(s);Rn(this,"result");this.name="IntegrityMismatchError",this.result=r}}async function NI(e){const t=await Zk(e);if(t.hasMismatch)throw console.error("[DiagnosticService] integrity mismatch",{articleId:e,messages:t.mismatchMessages}),new pb(t);return t}function Or(e){return e.map(t=>({...t}))}function Ih(e,t){if(!e)return null;const r=e.product_structure??e.productStructure;return r==null?null:Array.isArray(r)?r.map((s,a)=>{const i=s&&typeof s=="object"?s:{},o=String(i.child_article_id??i.childArticleId??""),l=i.child_article_number??i.childArticleNumber,d=i.child_name??i.childName,m=i.child_item_type??i.childItemType;return{id:String(i.id??`draft-${o||a}`),parentArticleId:t,childArticleId:o,childArticleNumber:l!=null?String(l):null,childName:d!=null?String(d):null,childItemType:m!=null?String(m):null,quantity:Number(i.quantity)>0?Number(i.quantity):1,sortOrder:Number(i.sort_order??i.sortOrder??a)||0,notes:i.notes!=null?String(i.notes):""}}):[]}function pm(e,t){return e!=null&&e.length?e.map(r=>{var a;return`${(r.childName??"").trim()||(r.childArticleNumber??"").trim()||((a=t==null?void 0:t(r.childArticleId))==null?void 0:a.trim())||"â"} à ${r.quantity>0?r.quantity:1}`}).join(", "):"â"}function jI(e,t){return JSON.stringify(Eh(e))===JSON.stringify(Eh(t))}function Eh(e){return e.map((t,r)=>({childArticleId:t.childArticleId,quantity:t.quantity,sortOrder:r,notes:t.notes??"",childArticleNumber:t.childArticleNumber??void 0,childName:t.childName??void 0,childItemType:t.childItemType??void 0}))}function kI({parentArticleId:e,catalogArticles:t,lines:r,onLinesChange:s,loading:a=!1,disabled:i=!1,isEditing:o=!1,onOpenArticle:l}){const d=kt(e),m=o&&!i&&!!s,[p,h]=u.useState(""),[x,b]=u.useState(!1),w=u.useRef(null);u.useEffect(()=>{if(!x)return;const C=k=>{var j;k.target instanceof Node&&!((j=w.current)!=null&&j.contains(k.target))&&b(!1)};return document.addEventListener("mousedown",C),()=>document.removeEventListener("mousedown",C)},[x]);const v=C=>{if(!(!m||!s)&&C.id!==e){if(C.itemType==="SERVICE"){M.error("Dienstleistungen können nicht als Subprodukt verknüpft werden.");return}if(r.some(k=>k.childArticleId===C.id)){M.message("Artikel ist bereits in der Produktstruktur.");return}s([...r,{id:crypto.randomUUID(),parentArticleId:e,childArticleId:C.id,childArticleNumber:C.articleNumber,childName:C.name,childItemType:C.itemType,quantity:1,sortOrder:r.length}]),h(""),b(!1)}},S=(C,k)=>{if(!m||!s)return;const j=Ls(k);s(r.map(z=>z.childArticleId===C?{...z,quantity:j}:z))},R=C=>{!m||!s||s(r.filter(k=>k.childArticleId!==C))},E=u.useMemo(()=>{if(!p.trim())return[];const C=t.filter(k=>k.id!==e&&k.itemType!=="SERVICE"&&!r.some(j=>j.childArticleId===k.id));return Ly(C,p,{limit:Si})},[p,t,e,r]),A=C=>{const k=t.find(j=>j.id===C.childArticleId);return{name:(k==null?void 0:k.name)||C.childName||"Unbekannter Artikel",articleNumber:(k==null?void 0:k.articleNumber)||C.childArticleNumber||"â",itemType:(k==null?void 0:k.itemType)||C.childItemType||null,article:k}},I=x&&p.trim().length>0;return n.jsxs("div",{className:"space-y-5 p-0",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(nN,{className:"mt-0.5 size-4 shrink-0 text-primary"}),n.jsx("h4",{className:"text-sm font-semibold",children:"Produktstruktur"})]}),r.length===0?n.jsx("p",{className:"rounded-md border border-dashed px-3 py-4 text-xs text-muted-foreground",children:a?"Produktstruktur wird geladen â¦":m?"Noch keine Subprodukte verknüpft. Gehäuse, Hardware-Baugruppe oder Dokumentation hier hinzufügen â ohne Produktionsfreigabe.":"Keine Subprodukte verknüpft."}):n.jsx("ul",{className:"space-y-2",children:r.map(C=>{const k=A(C);return n.jsxs("li",{className:"flex flex-wrap items-center gap-2 rounded-md border bg-card px-3 py-2",children:[n.jsxs("button",{type:"button",className:"min-w-0 flex-1 text-left text-xs",disabled:!k.article||!l,onClick:()=>k.article&&l(k.article),children:[n.jsx("span",{className:"font-medium",children:k.name}),n.jsxs("span",{className:"ml-2 font-mono text-[10px] text-muted-foreground",children:[k.articleNumber,k.itemType?` · ${Hr(k.itemType)}`:""]})]}),n.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[n.jsx("span",{className:"text-muted-foreground",children:"Menge"}),m?n.jsx(Ze,{type:"number",min:1,step:1,value:Ls(C.quantity),onChange:j=>S(C.childArticleId,parseInt(j.target.value,10)||1),className:"h-7 w-16 text-right text-xs"}):n.jsx("span",{className:"min-w-8 text-right font-medium tabular-nums",children:Ls(C.quantity)})]}),m&&n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7 text-muted-foreground hover:text-destructive",onClick:()=>R(C.childArticleId),children:n.jsx(or,{className:"size-3.5"})})]},C.id)})}),m&&d&&n.jsxs("div",{ref:w,className:"relative",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:p,onChange:C=>{h(C.target.value),b(!0)},onFocus:()=>b(!0),onPointerDown:()=>b(!0),placeholder:"Artikel suchen ⦠(Teilwort, -wort / NOT)",className:"h-8 pl-8 text-sm",disabled:i,autoComplete:"off"}),I&&n.jsx("div",{className:"absolute left-0 right-0 top-full z-50 mt-1 overflow-hidden rounded-lg border bg-popover shadow-lg",children:E.length===0?n.jsx("p",{className:"px-3 py-2.5 text-center text-xs text-muted-foreground",children:"Keine Artikel gefunden."}):n.jsx("div",{className:`${cu(E.length)} overflow-y-auto p-1`,children:E.map(C=>n.jsxs("button",{type:"button",onMouseDown:k=>{k.preventDefault(),v(C)},className:"flex w-full flex-col items-start rounded-md px-3 py-2 text-left hover:bg-accent",children:[n.jsx("span",{className:"text-sm font-medium",children:C.name}),n.jsxs("span",{className:"font-mono text-[10px] text-muted-foreground",children:[C.articleNumber,C.itemType?` · ${Hr(C.itemType)}`:""]})]},C.id))})})]}),m&&!d&&n.jsx("p",{className:"text-xs text-muted-foreground",children:"Artikel zuerst speichern, dann Subprodukte verknüpfen."})]})}function wI(e){const t=e.map(r=>iC(sm(r)));return t.length===1?`Konflikt im Feld â${t[0]}â â bitte markiertes Feld prüfen (â» für Server-Wert).`:`Konflikt in ${t.length} Feldern (${t.join(", ")}) â bitte markierte Felder prüfen.`}function Gs({uiField:e,fieldConflicts:t,onReloadField:r,children:s,className:a}){const i=t.has(e);return n.jsxs("div",{className:ye("relative",a,i&&"rounded-md ring-2 ring-amber-500/90 ring-offset-1 ring-offset-background"),children:[s,i&&n.jsx("button",{type:"button",className:"absolute -right-1.5 -top-1.5 z-10 flex size-5 items-center justify-center rounded-full bg-amber-500 text-white shadow-sm hover:bg-amber-600",title:"Server-Wert für dieses Feld laden","aria-label":"Server-Wert laden",onClick:()=>r(e),children:n.jsx(el,{className:"size-3"})})]})}function hd(e){const t=new Date().toISOString().slice(0,10);return{id:G0(),articleNumber:e.articleNumber,referenceKey:"",categoryId:e.categoryId??"",name:"",description:void 0,itemType:null,itemTypeDefinitionId:null,
82status:e.status,revision:"A",unitOfMeasure:"Stk",stock:0,minStock:0,purchasePrice:0,manufacturer:void 0,mpn:void 0,properties:{},pnpHeight:0,pnpBaseRotation:0,sourcings:[],createdAt:t,updatedAt:t}}function SI(e){return e.articleNumber}const ea="text-primary border-primary/25 hover:bg-primary/5 hover:text-primary",La="bg-primary text-primary-foreground hover:bg-primary/90";function Vt(e){return{...e,properties:{...e.properties}}}function no({label:e,value:t}){return n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs text-muted-foreground",children:e}),n.jsx("p",{className:"flex h-8 items-center rounded-md border border-border bg-muted/30 px-3 text-sm text-foreground",children:t||"â"})]})}function AI({field:e,value:t,onChange:r,disabled:s=!1}){return e.computed?n.jsxs("div",{className:"flex items-center gap-1.5 rounded-md border border-dashed border-amber-300 bg-amber-50/50 px-2.5 py-1.5 dark:border-amber-800/40 dark:bg-amber-950/20",children:[n.jsx("span",{className:"flex-1 font-mono text-xs text-foreground",children:t!=null&&t!==""?String(t):n.jsx("span",{className:"text-muted-foreground",children:"â"})}),n.jsx("span",{className:"shrink-0 rounded-sm bg-amber-100 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wider text-amber-600 dark:bg-amber-900/40 dark:text-amber-400",children:"berechnet"})]}):e.type==="boolean"?n.jsxs("div",{className:"flex items-center gap-2.5 pt-1",children:[n.jsx(Ir,{id:`prop-${e.key}`,checked:!!t,onCheckedChange:r,disabled:s}),n.jsx(ze,{htmlFor:`prop-${e.key}`,className:"cursor-pointer text-sm",children:t?"Ja":"Nein"})]}):e.type==="select"&&e.options?n.jsxs(_t,{value:String(t??""),onValueChange:r,disabled:s,children:[n.jsx(It,{children:n.jsx(Et,{placeholder:"â wählen â"})}),n.jsx(Pt,{children:e.options.map(a=>n.jsx(ft,{value:a,children:a},a))})]}):e.type==="number"?n.jsxs("div",{className:"relative",children:[n.jsx(Ze,{type:"number",value:String(t??""),onChange:a=>r(parseFloat(a.target.value)||0),className:ye(e.unit&&"pr-14"),disabled:s}),e.unit&&n.jsx("span",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-xs text-muted-foreground",children:e.unit})]}):e.type==="url"?n.jsxs("div",{className:"relative",children:[n.jsx(_g,{className:"pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{type:"url",value:String(t??""),onChange:a=>r(a.target.value),placeholder:"https://â¦",className:"pl-8",disabled:s})]}):n.jsx(Ze,{value:String(t??""),onChange:a=>r(a.target.value),disabled:s})}function CI({article:e,open:t,onDrillDown:r,onClose:s,onDirtyChange:a}){var jl,_s;const i=!e,o=Mi(),{t:l}=gs(),{addArticle:d,updateArticle:m,deleteArticle:p,refresh:h,replaceArticleInList:x,settings:b,articles:w}=Mn(),[v,S]=u.useState(!1),[R,E]=u.useState(!1),[A,I]=u.useState(!1),[C,k]=u.useState(!1),[j,z]=u.useState("request"),[D,B]=u.useState(i),[T,P]=u.useState("stammdaten"),[G,W]=u.useState(!1),[ke,L]=u.useState(!1),[xe,Y]=u.useState(null),[Ne,se]=u.useState(!1),{isIntegrated:J}=Vx(),{session:Q}=os(),U=(Q==null?void 0:Q.role)==="admin",ne=U||$g(Q==null?void 0:Q.token),[H,Z]=u.useState([]),K=b.isFourEyesActive===!0,me=u.useMemo(()=>w.map(q=>q.articleNumber),[w]),[$,X]=u.useState(()=>e?Vt(e):hd({articleNumber:"",status:K?"batch_entwurf":"batch_freigegeben"})),[Ie,V]=u.useState(()=>e?Vt(e):hd({articleNumber:"",status:K?"batch_entwurf":"batch_freigegeben"})),[Se,Ce]=u.useState([]),[Be,Le]=u.useState([]),[rt,lt]=u.useState([]),[Tt,vt]=u.useState([]),[Pe,it]=u.useState(null),[yt,wt]=u.useState(null),[an,qt]=u.useState(0),[Qt,en]=u.useState(null),[Wt,on]=u.useState(null),[mn,ln]=u.useState(()=>new Set),[cn,Oe]=u.useState(()=>new Set),[re,ve]=u.useState(null),[_e,te]=u.useState(!1),[nt,Fe]=u.useState(null),[be,Ye]=u.useState(!1),[ge,He]=u.useState(null),[hn,Ht]=u.useState(null),[_n,wn]=u.useState(!1),[vn,fn]=u.useState([]),[Nn,zt]=u.useState([]),tn=u.useRef(!1),On=u.useRef(!1),An=u.useRef(null),Ln=u.useRef(null),pr=u.useRef(new Map);u.useEffect(()=>{An.current=Pe},[Pe]),u.useEffect(()=>{if(!t)return;let q=!1;return Ri().then(async fe=>{if(q)return;zt(fe);const Re=await iu(fe);q||fn(Re)}).catch(()=>{q||(fn([]),zt([]))}),()=>{q=!0}},[t]);const Un=mn.size>0||!jI(rt,Tt)||$.minStock!==Ie.minStock||$.purchasePrice!==Ie.purchasePrice;u.useEffect(()=>{a==null||a(Un)},[Un,a]);const yr=u.useMemo(()=>Ha(vn,$.itemTypeDefinitionId),[vn,$.itemTypeDefinitionId]),Sr=yr.length>0,zn=u.useMemo(()=>Nn.find(q=>q.id===$.itemTypeDefinitionId)??null,[Nn,$.itemTypeDefinitionId]),Ar=Lu(zn,$.itemType),[We,Bt]=u.useState(""),[un,gn]=u.useState(!1),br=un&&We.trim().length>0,Pr=u.useMemo(()=>w.map(dr),[w]),xn=u.useMemo(()=>{const q=new Map;for(const fe of w)q.set(fe.id,{articleNumber:fe.articleNumber,name:fe.name,referenceKey:fe.articleNumber});return q},[w]),Wn=u.useRef(xn);Wn.current=xn;const Kn=u.useMemo(()=>
82{if(!We.trim())return[];const q=new Map(Pr.map(dt=>[dt.id,dt])),fe=cl(w,We,{limit:Si+1}),Re=[];for(const dt of fe){if(dt.id===$.id)continue;const at=q.get(dt.id);if(at&&(Re.push(at),Re.length>=Si))break}return Re},[w,We,Pr,$.id]);u.useEffect(()=>{if(!t){Ln.current=null;return}const q=(e==null?void 0:e.id)??"new",fe=Ln.current!==q;if(fe&&(Ln.current=q),!e||!kt(e.id)){const tt=e?Vt(e):hd({categoryId:"",articleNumber:"",status:K?"batch_entwurf":"batch_freigegeben"});X(tt),V(tt),Ht(e?Vt(e):null),He(null),te(!1),Fe(null),fe&&(P("stammdaten"),Bt(""),gn(!1),Ce([]),Le([]),lt([]),vt([]),it(null),wt(null)),B(!e);return}fe&&(B(!1),te(!1),Fe(null),P("stammdaten"),Bt(""),gn(!1),ln(new Set),Oe(new Set),ve(null));const Re=fe?null:An.current;let dt=!1;wn(!0);async function at(){var tt,At;try{const St=Nn.find(ur=>ur.id===e.itemTypeDefinitionId),Ct=ko(e.id)&&Lu(St,e.itemType),jn=Lu(St,e.itemType),[$t,nr,Us,Is,Dr]=await Promise.all([ts(e.id),Mp(e.id),Ct?Gl(e.id,Wn.current,Re??void 0):Promise.resolve([]),Jc(e.id).catch(()=>[]),jn?po(e.id).c
82atch(()=>[]):Promise.resolve([])]);if(dt)return;let Ws=Us;const Es={...$t,supplierParts:Is.length>0?Is:$t.supplierParts??[]},Ps=dr(Es);Ht(Vt(Ps));const Ta=Re??((tt=$t.activeRevision)==null?void 0:tt.id)??null;let Hs=Ta,Zi=Ta&&Ta===((At=$t.activeRevision)==null?void 0:At.id)?{id:$t.activeRevision.id,tenantId:$t.activeRevision.tenantId,articleId:$t.activeRevision.articleId,version:$t.activeRevision.version,status:$t.activeRevision.status,notes:$t.activeRevision.notes??"",bom:$t.activeRevision.bom??[],approvedAt:$t.activeRevision.approvedAt,approvedBy:$t.activeRevision.approvedBy}:null;if(!Hs&&Ct){const ur=await sl(e.id);ur.length===1&&(Hs=ur[0].id,Zi=ur[0],Re||(Ws=await ra(e.id,Hs,Wn.current)))}it(Hs),Zi?wt(Zi):Hs||wt(null),Ce(Ws),Le(Or(Dr));const Gi=nr?Ih(nr.data??{},e.id):null,Da=Or(Gi??Dr);lt(Da),vt(Or(Da));const kl=ur=>K?ur:{...ur,status:"batch_freigegeben"};if(nr&&K){const ur=li(Es,nr);X(Vt(ur)),V(Vt(ur)),He(nr)}else{const ur=kl(nr?li(Es,nr):Ps);X(Vt(ur)),V(Vt(ur)),He(null)}}catch(St){if(!dt){const Ct=Vt(e);X(Ct),V(Ct),Ht(Ct),console.error(St),M.error("Artikel-Entwurf konnte nicht geladen werden.")}}finally{dt||wn(!1)}}return at(),()=>{dt=!0}},[t,e==null?void 0:e.id,e==null?void 0:e.itemType,e==null?void 0:e.itemTypeDefinitionId,K,me,Nn]),u.useEffect(()=>{tn.current=!!(ge!=null&&ge.lockedBy&&(Q!=null&&Q.userId)&&ge.lockedBy===Q.userId)},[ge==null?void 0:ge.lockedBy,Q==null?void 0:Q.userId]),u.useEffect(()=>{const q=e==null?void 0:e.id;return()=>{q&&kt(q)&&tn.current&&Op(q)}},[e==null?void 0:e.id]);const $r=!!(K&&(ge!=null&&ge.lockedBy)&&(Q!=null&&Q.userId)&&ge.lockedBy!==Q.userId&&!ne),Jr=!!(K&&(ge!=null&&ge.lockedBy)),er=u.useMemo(()=>{var q,fe;return!Jr||!(ge!=null&&ge.lockedBy)?null:ge.lockedBy===(Q==null?void 0:Q.userId)?((q=Q==null?void 0:Q.displayName)==null?void 0:q.trim())||"Sie":((fe=ge.lockedByDisplayName)==null?void 0:fe.trim())||"Anderer Benutzer"},[Jr,ge,Q==null?void 0:Q.userId,Q==null?void 0:Q.displayName]),Vn=!D||_e||$r||_n,yn=_e&&nt?nt:$,Qr=((jl=yn.shopwareProductNumber)==null?void 0:jl.trim())||(typeof((_s=yn.properties)==null?void 0:_s.shopwareProductNumber)=="string"?yn.properties.shopwareProductNumber.trim():""),Cs=L0({showReleasedData:_e,hasServerDraft:ge!=null,releasedStatus:hn==null?void 0:hn.status,draftStatus:$.status}),Sa=ix(Cs),Zt=B0(Cs),pe=!Vn,$e=K&&kt($.id)&&ge!=null&&(Xx({draftCreatedBy:ge.createdBy,pendingSubmittedBy:null},Q==null?void 0:Q.userId)||Hl({draftCreatedBy:ge.createdBy,pendingSubmittedBy:null},Q==null?void 0:Q.userId,Q==null?void 0:Q.role)),st=u.useMemo(()=>fS(b.dataModules),[b.dataModules]),ct=u.useMemo(()=>{const q=il(b.dataModules);return Object.fromEntries(q.map(fe=>[fe.moduleId,fe.config]))},[b.dataModules]),Gt=u.useMemo(()=>st.filter(q=>q.id==="csv-importer").map(q=>q.id),[st]),Mt=u.useMemo(()=>st.filter(q=>q.id==="eagle-cad-importer").map(q=>q.id),[st]),Yt=(q,fe)=>{Ar&&Ce(Re=>fe?q:[...Re,...q])},Ot=async(q,fe,Re,dt)=>{if(!kt($.id)||!Ar)throw new Error("Artikel muss zuerst gespeichert sein.");const at=An.current??Pe;if(!at)throw new Error("Bitte zuerst eine Revision anlegen oder auswählen.");try{const tt=Re==="material"?LA(q):q,At=await Yc(),St=await gy($.id,tt,w,{replaceExisting:fe,revisionId:at,syncComponentGroups:Re==="bom",keepUnresolvedConflicts:Re==="bom",variants:At,onProgress:dt==null?void 0:dt.onProgress});if(dt!=null&&dt.filename)try{await hk($.id,at,{filename:dt.filename,bomLines:St.bomLines,mapped:St.mapped,unmapped:St.unmapped,skipped:St.skipped,entries:dt.changeLog??[]})}catch{}const Ct=await ra($.id,at,xn);Ce(Ct),qt($t=>$t+1),M.success(`${St.bomLines} Stückliste-Positionen importiert`+(St.mapped>0?` (${St.mapped} zugeordnet`:"")+(St.unmapped>0?`${St.mapped>0?", ":" ("}${St.unmapped} offen`:"")+(St.mapped>0||St.unmapped>0?")":"")+(St.skipped>0?`, ${St.skipped} übersprungen`:"")+".")}catch(tt){const At=tt instanceof Error?tt.message:"";throw M.error(At.includes("Arbeitsrevision")||At.includes("Revision")?At:At||"Import konnte nicht gespeichert werden."),tt}},Nt=q=>{Z(fe=>[...fe,...q]),setUploadedFiles(fe=>[...fe,...q.map(Re=>Re.name)])},gt=q=>{const fe=sC(q);ln(Re=>new Set([...Re,...fe])),X(Re=>({...Re,...q}))},sn=(q,fe)=>{ln(Re=>new Set([...Re,rm(`properties.${q}`)])),X(Re=>({...Re,properties:{...Re.properties,[q]:fe}}))},Cn=q=>
82{var At,St;const fe=Nn.find(Ct=>Ct.id===q);if(!fe)return;const Re=fe.behaviorType,dt=Ha(vn,q),at=((At=dt.find(Ct=>Ct.id===$.categoryId))==null?void 0:At.id)??((St=dt[0])==null?void 0:St.id)??"",tt={itemType:Re,itemTypeDefinitionId:q,categoryId:at,properties:{}};Na(Re)||(tt.stock=0,tt.minStock=0),i&&(tt.articleNumber=Qu({categoryId:at,itemTypeDefinitionId:q,itemTypeDefinitions:Nn},vn,me)),gt(tt),fe.hasBom?!i&&ko($.id)?Gl($.id,xn).then(Ce):Ce([]):(Ce([]),P(Ct=>Ct==="produktion"||Ct==="nutzen"||Ct==="struktur"?"stammdaten":Ct))},vr=q=>{const fe={categoryId:q,properties:{}};i&&(fe.articleNumber=Qu({categoryId:q,itemTypeDefinitionId:$.itemTypeDefinitionId,itemTypeDefinitions:Nn},vn,me)),gt(fe)},Xt=YA(vn,$.categoryId),tr=Sr&&$.categoryId&&!Xt?$.categoryId:null;SI($);const Bn=$.itemTypeDefinitionId!=null,ls=$.itemTypeDefinitionId??"",Aa=!!$.deletionRequestedAt,Lt=!i&&kt($.id),cr=Lt&&!$r&&!_n,Ki=Ar,Vs=Ar,Fn=O0($.itemType)||!!Pe,qs=R0(zn,$.itemType),Ca=Na($.itemType);u.useMemo(()=>($.sourcings??[]).map(q=>({...q,supplierName:q.supplierName??"â"})),[$.sourcings]),u.useEffect(()=>{!Vs&&T==="struktur"&&P("stammdaten"),!Fn&&(T==="produktion"||T==="nutzen")&&P("stammdaten")},[Vs,Fn,T]);const Xr=u.useRef(null);u.useEffect(()=>{if(!t){Xr.current=null;return}if(!kt($.id)||!(Q!=null&&Q.tenantId)||Xr.current===$.id)return;Xr.current=$.id;const q=FA(Q.tenantId,$.id);(q==null?void 0:q.activeTab)==="struktur"&&Vs?P("struktur"):(q==null?void 0:q.activeTab)==="produktion"&&Fn&&P("produktion")},[t,$.id,Q==null?void 0:Q.tenantId,Vs,Fn]),u.useEffect(()=>{!t||!kt($.id)||!(Q!=null&&Q.tenantId)||$A(Q.tenantId,$.id,{activeTab:T})},[t,$.id,Q==null?void 0:Q.tenantId,T]),u.useEffect(()=>{const q=$.id,fe=Pe;if(!(D&&cr&&kt(q)&&fe&&kt(fe))){On.current&&q&&fe&&(On.current=!1,$p(q,fe).catch(()=>{}));return}let dt=!1;return kw(q,fe).then(()=>{dt||(On.current=!0)}).catch(()=>{M.warning("Revisions-Sperre konnte nicht gesetzt werden.")}),()=>{dt=!0,On.current&&(On.current=!1,$p(q,fe).catch(()=>{}))}},[D,cr,$.id,Pe]);function fl(q){X(fe=>({...fe,minStock:q,properties:{...fe.properties,[ja]:q}}))}function pl(q){const fe=Math.max(0,Number.isFinite(q)?q:0);X(Re=>({...Re,purchasePrice:fe,sourcings:(Re.sourcings??[]).map(dt=>({...dt,purchasePrice:fe}))}))}async function Hn(){if(Lt){I(!0);try{const q={...$,...K?{}:{status:"batch_freigegeben"}};if(K){let fe=ge;fe||(fe=await Il($.id),He(fe));const Re=await Ji($.id,Yi(q,{expectedVersion:fe.version})),dt=await ts($.id),at=Bu(dt,Re,q);He(Re),X(Vt(at)),V(Vt(at)),Ht(Vt(dr(dt))),x(si(dt,at,{hasOpenDraft:!0}))}else{const fe=await m($.id,zu(q,{releaseImmediately:!0}),{expectedVersion:$.syncVersion??Ie.syncVersion}),Re=dr(fe);X(Vt(Re)),V(Vt(Re)),Ht(Vt(Re))}M.success(K?"Einkaufspreis zur Freigabe vorgeschlagen.":"Einkaufspreis gespeichert.")}catch(q){q instanceof ut||M.error("Einkaufspreis konnte nicht gespeichert werden.")}finally{I(!1)}}}async function Kr(){if(Lt){E(!0);try{const q={...$,...K?{}:{status:"batch_freigegeben"},properties:{...$.properties,[ja]:$.minStock}};if(K){let fe=ge;fe||(fe=await Il($.id),He(fe));const Re=await Ji($.id,Yi(q,{expectedVersion:fe.version})),dt=await ts($.id),at=Bu(dt,Re,q);He(Re),X(Vt(at)),V(Vt(at)),Ht(Vt(dr(dt))),x(si(dt,at,{hasOpenDraft:!0}))}else{const fe=await m($.id,zu(q,{releaseImmediately:!0}),{expectedVersion:$.syncVersion??Ie.syncVersion}),Re=dr(fe);X(Vt(Re)),V(Vt(Re)),Ht(Vt(Re))}M.success(K?"Meldebestand zur Freigabe vorgeschlagen.":"Meldebestand gespeichert.")}catch(q){q instanceof ut||M.error("Meldebestand konnte nicht gespeichert werden.")}finally{E(!1)}}}function _a(q){const fe=q.trim();ln(Re=>new Set([...Re,"attributes.mpn"])),X(Re=>({...Re,mpn:fe||void 0,properties:{...Re.properties,...fe?{mpn:fe}:{}}}))}async function Ia(q){if(it(q.id),An.current=q.id,wt(q),X(fe=>({...fe,revision:q.version})),!!ko($.id))try{const fe=await ra($.id,q.id,xn);Ce(fe),qt(Re=>Re+1)}catch{M.error("Stückliste für diese Revision konnte nicht geladen werden.")}}async function Vi(){}async function Tr(){return kt($.id)?An.current?An.current:(M.error("Bitte zuerst eine Revision anlegen oder auswählen."),null):null}function ku(q,fe){if(!kt($.id)||!kt(q))return;const Re=pr.current.get(q);Re&&clearTimeout(Re),pr.current.set(q,setTimeout(()=>{(async()=>{const dt=await Tr();if(dt)try{const at={};if(fe.quantity!==void 0&&(at.quantity=fe.quantity),fe.refDes!==void 0&&(at.referenceDesignator=fe.refDes),fe.value!==void 0&&(at.value=fe.value),fe.package!==void 0&&(at.package=fe.package),fe.supplyType!==void 0&&(at.supplyType=fe.supplyType),fe.supplierPartId!==void 0&&(at.supplierPartId=fe.supplierPartId),Object.keys(at).length===0)return;await gk($.id,dt,q,at)}catch{M.error("Stücklistenposition konnte nicht gespeichert werden.")}})()},400))}const es=q=>{if(!Ar||!cr)return;const fe=Se.find(Re=>Re.articleId===q.id);if(fe){xl(fe.id,{quantity:fe.quantity+1}),Bt(""),gn(!1);return}if(!kt($.id)){Ce(Re=>[...Re,{id:crypto.randomUUID(),articleId:q.id,articleNumber:q.articleNumber,name:q.name,referenceKey:q.referenceKey,quantity:1,refDes:""}]),Bt(""),gn(!1);return}(async()=>{const Re=await Tr();if(Re)try{const dt=await Bd($.id,Re,{articleId:q.id,quantity:1,referenceDesignator:""});Ce(at=>[...at,Zl(dt,Wn.current)]),Bt(""),gn(!1)}catch{M.error("Stücklistenposition konnte nicht hinzugefügt werden.")}})()},qi=q=>{Ce(fe=>fe.filter(Re=>Re.id!==q)),!(!kt($.id)||!kt(q)||!cr)&&(async()=>{const fe=await Tr();if(fe)try{await Fd($.id,fe,q)}catch{M.error("Stücklistenposition konnte nicht entfernt werden."),Gl($.id,Wn.current).then(Ce)}})()},hl=async()=>
82{if(!cr||Se.length===0||(Ce([]),!kt($.id)))return;const q=An.current??Pe;if(!q)throw new Error("Keine Revision für die Stückliste.");try{await vk($.id,q),qt(fe=>fe+1),M.success("Stückliste geleert.")}catch{const fe=await ra($.id,q,Wn.current);throw Ce(fe),new Error("Stückliste konnte nicht geleert werden.")}},Ja=(q,fe)=>{const Re=Zl(q,Wn.current);Ce(dt=>{const at=dt.filter(At=>At.id!==fe),tt=at.findIndex(At=>At.id===q.id);if(tt>=0){const At=[...at];return At[tt]=Re,At}return[...at,Re]}),qt(dt=>dt+1)},ys=async(q,fe,Re,dt)=>{if(!cr)return;const at=dt??Se.find(jn=>jn.id===q);if(!at||!Xu(at))return;const tt=Pr.find(jn=>jn.id===fe),At=(tt==null?void 0:tt.name)??fe;if(!kt($.id)){Ce(jn=>jn.map($t=>$t.id===q?{...$t,articleId:fe,articleNumber:(tt==null?void 0:tt.articleNumber)??$t.articleNumber,name:(tt==null?void 0:tt.name)??$t.name,referenceKey:(tt==null?void 0:tt.referenceKey)??$t.referenceKey,variantId:Re,mappingStatus:"mapped",articleExists:!0}:$t)),en(null),M.success("Position zugeordnet.");return}const St=await Tr();if(!St)return;const Ct=Se;Ce(jn=>jn.map($t=>$t.id===q?{...$t,articleId:fe,variantId:Re,name:(tt==null?void 0:tt.name)??$t.name,articleNumber:(tt==null?void 0:tt.articleNumber)??$t.articleNumber,mappingStatus:"mapped",articleExists:!0,_pending:!0}:$t)),en(null);try{const jn=await xk($.id,St,q,{articleId:fe,variantId:Re});Ja(jn,q),M.success("Position zugeordnet.")}catch(jn){Ce(Ct);const $t=jn instanceof ut?String(jn.detail??jn.message):jn instanceof Error?jn.message:"";if($t.includes("variant_selection_required")){en({bomLineId:q,articleId:fe,articleLabel:At,bomItem:at});return}if($t.includes("article_has_no_variants")){M.error("Dieser Artikel hat keine Variante. Bitte zuerst eine MPN-Variante anlegen.");return}M.error("Zuordnung konnte nicht gespeichert werden.")}},Ui=async q=>{var St;if(!cr)return;const fe=Se.find(Ct=>Ct.id===q);if(!fe)return;const Re=await Tr();if(!Re&&kt($.id))return;const dt=((St=fe.refDes)==null?void 0:St.split(/[,;\s]+/).filter(Boolean)[0])??null,at=Xu(fe)||!fe.articleId,tt=(Ct,jn)=>{Ce($t=>$t.map(nr=>nr.id===Ct?jn?{...nr,articleId:"",variantId:void 0,mappingStatus:"unmapped",articleExists:!1,lcscPartNumber:"DNP",supplierPartId:null,articleNumber:"â",name:nm(fe)}:{...nr,lcscPartNumber:"DNP",supplierPartId:null}:nr))},At=async()=>{if(!kt($.id)||!Re)return tt(q,!0),q;try{const Ct=await yk($.id,Re,q);return Ja(Ct,q),Ce(jn=>jn.map($t=>$t.id===Ct.id?{...$t,lcscPartNumber:"DNP",supplierPartId:null}:$t)),Ct.id}catch(Ct){if(!(Ct instanceof ut&&(Ct.status===404||/not found/i.test(Ct.message))))throw Ct;await Fd($.id,Re,q);const $t=(fe.value||"").trim(),nr=(fe.package||"").trim(),Us=(fe.value||fe.name||"DNP").trim()||"DNP",Is=await Bd($.id,Re,{quantity:fe.quantity||1,referenceDesignator:fe.refDes||"",typ:$t||nr?Us:"DNP",value:$t||(nr?"":"DNP"),package:nr,placementData:fe.placementData??void 0,mappingStatus:"unmapped",supplyType:fe.supplyType});return Ce(Dr=>{const Ws=Dr.filter(Ps=>Ps.id!==q),Es={...Zl(Is,Wn.current),lcscPartNumber:"DNP",supplierPartId:null};return[...Ws,Es]}),qt(Dr=>Dr+1),Is.id}};try{await vx({footprint:fe.package||"",value:fe.value||"",package:fe.package||"",lcscPartNumber:"DNP",partLabel:"Nicht bestücken",articleId:null,designator:dt,source:"manual",confidence:1}),at?await At():tt(q,!1),M.success(at?"Nicht bestücken (DNP) â Katalogverweis entfernt":"Als nicht bestücken (DNP) markiert")}catch(Ct){const jn=Ct instanceof ut||Ct instanceof Error?Ct.message:"DNP konnte nicht gespeichert werden";M.error(jn)}},gl=async(q,fe)=>{if(!cr)return;const Re=Se.find(tt=>tt.id===q);if(!Re||!Xu(Re))return;const dt=Pr.find(tt=>tt.id===fe),at=(dt==null?void 0:dt.name)??fe;try{const tt=await px(fe);if(tt.length===0){await ys(q,fe,void 0,Re);return}const At=(Re.value??Re.name??"").trim().toLowerCase(),St=tt.length>1&&At?tt.find(Ct=>(Ct.mpn??"").trim().toLowerCase()===At):void 0;if(tt.length===1){await ys(q,fe,tt[0].id,Re);return}if(St){await ys(q,fe,St.id,Re);return}en({bomLineId:q,articleId:fe,articleLabel:at,bomItem:Re})}catch{M.error("Varianten konnten nicht geladen werden.")}},xl=(q,fe)=>{Ce(Re=>Re.map(dt=>dt.id===q?{...dt,...fe}:dt)),cr&&ku(q,fe)},Ea=q=>{const fe=Pr.find(Re=>Re.id===q.articleId);fe&&r(fe)};async function yl(){var dt;if(!$.itemType){M.error("Bitte zuerst eine Artikelart wählen.");return}if(!$.name.trim()){M.error("Bitte einen Artikelnamen eingeben.");return}const q=K?{...$}:{...$,status:"batch_freigegeben"},fe=q.articleNumber.trim()||Qu({categoryId:q.categoryId,itemTypeDefinitionId:q.itemTypeDefinitionId,itemTypeDefinitions:Nn},vn,me),Re={...q,articleNumber:fe};S(!0);try{if(i){const at=Tp({...Re,status:K?Re.status:"batch_freigegeben"});await d(at),s()}else if(kt($.id))if(K)try{let at=ge;
82at||(at=await Il($.id),He(at));const tt=await Ji($.id,Yi(q,{expectedVersion:at.version,productStructure:rt})),At=await ts($.id),St=Bu(At,tt,q);He(tt),X(Vt(St)),V(Vt(St)),Ht(Vt(dr(At))),ln(new Set),Oe(new Set),ve(null),te(!1),B(!1),vt(Or(rt)),x(si(At,St,{hasOpenDraft:!0,productStructure:rt})),M.success(K?"Entwurf zur Freigabe vorgeschlagen.":"Entwurf gespeichert.")}catch(at){if(at instanceof bo){M.error("Entwurf wird von einem anderen Benutzer bearbeitet.");return}if(at instanceof lx){M.error("Entwurf wurde zwischenzeitlich geändert â bitte erneut speichern.");try{const[tt,At]=await Promise.all([ts($.id),Mp($.id)]);if(At){const St=li(tt,At);He(At),X(Vt(St)),V(Vt(St));const Ct=Ih(At.data??{},$.id);Ct&&(lt(Or(Ct)),vt(Or(Ct)))}}catch{}return}console.error(at),M.error(at instanceof ut?at.message:"Entwurf konnte nicht gespeichert werden.")}else{const at=await m($.id,zu(q,{releaseImmediately:!0,productStructure:rt}),{expectedVersion:$.syncVersion??Ie.syncVersion});if(!at)return;const tt=dr(at);X(Vt(tt)),V(Vt(tt)),Ht(Vt(tt)),ln(new Set),Oe(new Set),ve(null),te(!1),He(null),B(!1);const At=await po($.id).catch(()=>rt);Le(Or(At)),lt(Or(At)),vt(Or(At)),x(si(at,tt,{productStructure:At})),M.success("Artikel gespeichert und freigegeben.")}else{M.error("Demo-Artikel aus der Stückliste können nicht gespeichert werden.");return}}catch(at){if(at instanceof bo){const tt=(dt=ge==null?void 0:ge.lockedByDisplayName)==null?void 0:dt.trim();M.error(tt?`Artikel wird bereits von ${tt} bearbeitet.`:"Artikel wird bereits von einem anderen Benutzer bearbeitet.");return}if(T0(at)){on(dr(at.serverArticle));return}if(D0(at)){const tt=dr(at.serverArticle);ve(tt),Oe(new Set(at.conflictingFields.map(sm))),X(At=>{let St={...At};for(const Ct of at.appliedFields)St=ih(St,tt,sm(Ct));return St}),ln(At=>{const St=new Set(At);for(const Ct of at.appliedFields)St.delete(Ct);return St}),M.warning(wI(at.conflictingFields));return}}finally{S(!1)}}async function wu(){if(!(!$.name.trim()||i||!kt($.id)||!ge)){S(!0);try{const q=await Ji($.id,Yi($,{expectedVersion:ge.version,force:!0,productStructure:rt})),fe=await ts($.id),Re=li(fe,q);He(q),X(Vt(Re)),V(Vt(Re)),on(null),x(si(fe,Re,{hasOpenDraft:!0,productStructure:rt})),M.success("Entwurf wurde überschrieben.")}catch{M.error("Entwurf konnte nicht gespeichert werden.")}finally{S(!1)}}}function Qa(){if(!Wt)return;const q=Vt(Wt);X(q),V(q),on(null),M.message("Server-Version geladen â lokale Ãnderungen verworfen.")}function Vr(q){re&&(X(fe=>ih(fe,re,q)),Oe(fe=>{const Re=new Set(fe);return Re.delete(q),Re}),ln(fe=>{const Re=new Set(fe);return Re.delete(rm(q)),Re}))}async function Wi(){var q;if(kt($.id)&&(te(!1),ln(new Set),Oe(new Set),ve(null),B(!0),!!K)){S(!0);try{const fe=await Il($.id),Re=await ts($.id),dt=li(Re,fe);He(fe),X(Vt(dt)),V(Vt(dt))}catch(fe){if(B(!1),fe instanceof bo){const Re=(q=ge==null?void 0:ge.lockedByDisplayName)==null?void 0:q.trim();M.error(Re?`Artikel wird bereits von ${Re} bearbeitet.`:"Artikel wird bereits von einem anderen Benutzer bearbeitet.")}else M.error("Entwurf konnte nicht gestartet werden.")}finally{S(!1)}}}async function bl(){if(i){s();return}if(kt($.id)&&(ge==null?void 0:ge.lockedBy)===(Q==null?void 0:Q.userId))try{const q=await Op($.id);He(q)}catch{}X(Vt(Ie)),lt(Or(Tt)),ln(new Set),Oe(new Set),B(!1)}async function Su(){if(kt($.id)){S(!0);try{ge&&await Ji($.id,Yi($,{expectedVersion:ge.version,productStructure:rt}));const q=await Gm($.id);He(null);const fe=dr(q);Ht(Vt(fe)),X(Vt(fe)),V(Vt(fe)),B(!1);const Re=await po($.id).catch(()=>rt);Le(Or(Re)),lt(Or(Re)),vt(Or(Re)),x(si(q,fe,{hasOpenDraft:!1,productStructure:Re})),M.success("Artikel freigegeben.")}catch{M.error("Freigabe fehlgeschlagen.")}finally{S(!1)}}}async function Au(){if(i||!$.name.trim())return;const q={...Vt($),id:crypto.randomUUID(),name:`${$.name} (Kopie)`,articleNumber:$.articleNumber?`${$.articleNumber}-K`:"",status:"batch_entwurf"};S(!0);try{await d(Tp(q)),M.success("Artikel dupliziert."),s()}catch{}finally{S(!1)}}function Xa(q){const fe=dr(q);X(Vt(fe)),V(Vt(fe))}async function Hi(){if(Lt){S(!0);try{const{removed:q,article:fe}=await p($.id,{fourEyes:K,confirm:j==="confirm"});if(k(!1),q){s();return}fe&&Xa(fe)}catch{}finally{S(!1)}}}async function vl(){if(!(!Lt||!Aa)){S(!0);try{const{article:q}=await p($.id,{cancel:!0});q&&Xa(q)}catch{}finally{S(!1)}}}function Pa(q){z(q),k(!0)}async function ei(){if(kt($.id)){Ye(!0);try{const[q,fe]=await Promise.all([ts($.id),po($.id).catch(()=>Be)]);Fe(Vt(dr(q))),Le(Or(fe)),te(!0)}catch{M.error("Freigegebene Daten konnten nicht geladen werden.")}finally{Ye(!1)}}}function ti(){te(!1)}async function Nl(){if(kt($.id)){se(!0);try{const q=await NI($.id);Y(q),L(!0),M.success("Integritätsprüfung: keine Abweichungen")}catch(q){q instanceof pb?(Y(q.result),L(!0),M.error("Integritätsprüfung: Abweichungen gefunden",{description:q.result.mismatchMessages[0]})):M.error("Integritätsprüfung fehlgeschlagen")}finally{se(!1)}}}return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[n.jsx(Kc,{className:"shrink-0 gap-3 border-b px-6 py-4",children:i?n.jsxs("div",{className:"space-y-1",children:[n.jsx(Do,{
82className:"text-base font-semibold leading-tight",children:"Neuer Artikel"}),n.jsx(nc,{className:"text-xs text-muted-foreground",children:"Artikelnummer wird beim Anlegen automatisch vergeben."})]}):n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-2",children:n.jsxs("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-2",children:[D?n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:"flex shrink-0 items-center gap-1 font-mono text-xs text-muted-foreground",children:[n.jsx(rc,{className:"size-3"}),yn.articleNumber]}),Qr?n.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Shop ",Qr]}):null,n.jsx(Gs,{uiField:"name",fieldConflicts:cn,onReloadField:Vr,className:"min-w-0 flex-1",children:n.jsx(Ze,{id:"hdr-name",value:yn.name,onChange:q=>gt({name:q.target.value}),className:"h-8 min-w-[12rem] text-sm font-semibold",placeholder:"Bezeichnung",disabled:Vn})})]}):n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:"flex shrink-0 items-center gap-1 font-mono text-xs text-muted-foreground",children:[n.jsx(rc,{className:"size-3"}),$.articleNumber]}),Qr?n.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:["Shop ",Qr]}):null,n.jsx(Do,{className:"min-w-0 truncate text-base font-semibold leading-tight",children:$.name||"â"})]}),n.jsx(bt,{className:ye("shrink-0 border-transparent px-2 py-0 text-[10px] font-medium",Sa.className),children:Sa.label}),Jr&&er&&n.jsxs(bt,{className:"shrink-0 border-transparent bg-amber-500/15 px-2 py-0 text-[10px] font-medium text-amber-800 dark:text-amber-200",children:["In Bearbeitung durch ",er]}),!Jr&&ge!=null&&K&&n.jsx(bt,{className:"shrink-0 border-transparent bg-amber-500/15 px-2 py-0 text-[10px] font-medium text-amber-800 dark:text-amber-200",children:"Entwurf wartet auf Freigabe"}),!K&&D&&n.jsx(bt,{className:"shrink-0 border-transparent bg-amber-500/15 px-2 py-0 text-[10px] font-medium text-amber-800 dark:text-amber-200",children:"In Bearbeitung"}),Aa&&n.jsx(bt,{className:"shrink-0 border-transparent bg-destructive/10 px-2 py-0 text-[10px] font-medium text-destructive",children:"Löschung angefordert"})]})}),!D&&$.description&&n.jsx(nc,{className:"text-pretty text-xs leading-relaxed line-clamp-2",children:$.description}),n.jsx("div",{className:"flex flex-wrap items-center gap-2",children:D?n.jsxs(n.Fragment,{children:[n.jsxs(ee,{type:"button",size:"sm",variant:"default",className:ye("gap-1.5",La),disabled:v||_e||$r,onClick:()=>void yl(),children:[v?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(vs,{className:"size-3.5"}),"Speichern"]}),n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:ea,disabled:v,onClick:bl,children:"Abbrechen"})]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsxs(ee,{type:"button",size:"sm",variant:"default",className:ye("gap-1.5",La),onClick:()=>void Wi(),disabled:_e||$r||v,children:[n.jsx(yo,{className:"size-3.5"}),"Bearbeiten"]}),!Aa&&!_e&&!$r&&n.jsxs(ee,{type:"button",size:"sm",variant:"default",className:ye("gap-1.5",La),disabled:v,onClick:()=>void Au(),children:[n.jsx(rN,{className:"size-3.5"}),"Duplizieren"]}),yn.articleNumber.trim()?n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:ye("gap-1.5",ea),onClick:()=>W(!0),children:[n.jsx(Ag,{className:"size-3.5"}),"Etikett drucken"]}):null,$e&&n.jsxs(ee,{type:"button",size:"sm",variant:"default",className:ye("gap-1.5",La),disabled:v||_e,onClick:()=>void Su(),children:[v?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(rs,{className:"size-3.5"}),l("approvals.approve")]}),Lt&&Aa&&n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:ea,disabled:v,onClick:()=>void vl(),children:"Anfrage zurückziehen"})]}),n.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[YS&&U&&Lt&&n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",title:"Integritätsprüfung (Admin)",disabled:Ne,onClick:()=>void Nl(),children:[Ne?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(sN,{className:"size-3.5"}),"Debug"]}),Lt&&Aa?n.jsxs(ee,{type:"button",size:"sm",variant:"destructive",className:"gap-1.5",disabled:v,onClick:()=>Pa("confirm"),children:[n.jsx(or,{className:"size-3.5"}),"Löschung bestätigen"]}):Lt?n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5 text-destructive border-destructive/30 hover:bg-destructive/5 hover:text-destructive",disabled:v,onClick:()=>Pa("request"),children:[n.jsx(or,{className:"size-3.5"}),"Löschen"]}):null]})]})})]})}),!i&&Lt&&(Zt||ge)&&n.jsx("div",{className:ye("mx-6 mt-4 shrink-0 rounded-xl border px-4 py-3",_e?"border-success/40 bg-success/10":ge?"border-amber-500/30 bg-amber-500/5":"border-success/30 bg-success/5"),children:n.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[_e?n.jsx(rs,{className:"mt-0.5 size-5 shrink-0 text-success"}):n.jsx(yo,{className:"mt-0.5 size-5 shrink-0 text-amber-600 dar
82k:text-amber-400"}),n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-semibold text-foreground",children:l(_e?"detail.batch.releasedTitle":ge?"detail.batch.inProgressTitle":"detail.batch.releasedTitle")}),ge&&!_e&&n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:l("detail.batch.pendingRelease")})]})]}),Zt&&n.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",size:"sm",variant:_e?"default":"outline",className:ye("gap-1.5",_e?La:ea),disabled:be,onClick:()=>void ei(),children:[be?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(rs,{className:"size-3.5"}),l("detail.batch.viewReleased")]}),n.jsxs(ee,{type:"button",size:"sm",variant:_e?"outline":"default",className:ye("gap-1.5",_e?ea:La),onClick:ti,disabled:!_e&&!ge,children:[n.jsx(yo,{className:"size-3.5"}),l("detail.batch.viewDraft")]})]})]})}),n.jsxs("div",{className:"shrink-0 border-b px-6 py-4 space-y-4",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs(ze,{className:"text-xs",children:["Artikelart ",n.jsx("span",{className:"text-destructive",children:"*"})]}),n.jsx(Gs,{uiField:"itemType",fieldConflicts:cn,onReloadField:Vr,children:n.jsxs(_t,{value:ls??"",onValueChange:Cn,disabled:Vn,children:[n.jsx(It,{className:"h-9 text-sm",children:n.jsx(Et,{placeholder:"â Artikelart wählen â"})}),n.jsx(Pt,{children:Nn.map(q=>n.jsx(ft,{value:q.id,children:q.name},q.id))})]})}),!Bn&&n.jsx("p",{className:"text-xs text-muted-foreground",children:"Wählen Sie zuerst die Artikelart â weitere Felder werden danach freigeschaltet."})]}),i&&n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs(ze,{htmlFor:"na-name",className:"text-xs",children:["Bezeichnung ",n.jsx("span",{className:"text-destructive",children:"*"})]}),n.jsx(Ze,{id:"na-name",value:yn.name,onChange:q=>gt({name:q.target.value}),className:"h-9 text-sm",placeholder:"z. B. Widerstand 10k 0402",disabled:!Bn,autoFocus:Bn})]}),Bn&&Sr&&(tr?n.jsx(Gs,{uiField:"categoryId",fieldConflicts:cn,onReloadField:Vr,children:n.jsx(no,{label:"Warengruppe",value:tr})}):n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Warengruppe"}),n.jsx(Gs,{uiField:"categoryId",fieldConflicts:cn,onReloadField:Vr,children:n.jsxs(_t,{value:yn.categoryId||void 0,onValueChange:vr,disabled:Vn,children:[n.jsx(It,{className:"h-8 text-sm",children:n.jsx(Et,{placeholder:"â wählen â"})}),n.jsx(Pt,{children:yr.map(q=>n.jsx(ft,{value:q.id,children:q.name},q.id))})]})})]}))]}),Bn?n.jsxs(n.Fragment,{children:[!Ki&&kt($.id)&&n.jsx(yI,{articleId:$.id,apiArticles:w}),n.jsxs(Ei,{value:T,onValueChange:P,className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[n.jsxs(Pi,{className:"mx-6 mt-2 h-9 w-auto shrink-0 justify-start rounded-lg bg-muted/60 p-1",children:[n.jsx(ar,{value:"stammdaten",className:"text-xs",children:l("detail.tab.masterData")}),Vs&&n.jsx(ar,{value:"struktur",className:"text-xs",children:l("detail.tab.bomCad")}),Fn&&n.jsx(ar,{value:"produktion",className:"text-xs",children:l("detail.tab.production")}),Fn&&kt($.id)&&n.jsx(ar,{value:"nutzen",className:"text-xs",children:l("detail.tab.panelYields")}),Ca&&n.jsx(ar,{value:"lager",className:"text-xs",children:l("detail.tab.inventory")}),!i&&kt($.id)&&n.jsx(ar,{value:"historie",className:"text-xs",children:l("detail.history")})]}),Fn&&n.jsx(ir,{value:"produktion",className:"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden px-6 py-4 data-[state=inactive]:hidden",children:n.jsx(Q_,{articleId:$.id,articleNumber:$.articleNumber,articleName:$.name,revisionId:Pe,selectedRevision:yt,onSelectRevision:q=>void Ia(q),bomItems:Se,bomTabProps:{componentGroupsRefreshKey:an,catalogArticles:Pr,apiArticles:w,disabled:!cr,isEditing:cr,bomSearch:We,bomSearchFocused:un,filteredSearchArticles:Kn,showSearchDrop:br,onBomSearchChange:Bt,onBomSearchFocus:gn,onAddBomItem:es,onUpdateBomItem:xl,onRemoveBomItem:qi,onClearBomItems:hl,onMapBomItem:gl,onMarkDoNotPlace:Ui,onDrillDown:Ea,onCatalogRefresh:async()=>{await h();const q=Pe;if($.id&&q){const fe=await ra($.id,q,xn);Ce(fe),qt(Re=>Re+1)}}},fileImportModuleIds:Gt,eagleImportModuleIds:Mt,moduleConfigs:ct,fieldsReadOnly:Vn,canEditBom:cr,isEditing:D,onBomImport:Yt,onAttachments:Nt,onStagingImportCommitted:Ot,onRouteSaved:async()=>{const q=Pe;if(!$.id||!q)return;const fe=await ra($.id,q,xn);Ce(fe)}})}),Fn&&kt($.id)&&n.jsx(ir,{value:"nutzen",className:"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden data-[state=inactive]:hidden",children:n.jsx(qa,{className:"min-h-0 flex-1",children:n.jsx(vI,{panelArticleId:$.id,panelArticleName:$.name,catalogArticles:Pr,apiArticles:w,disabled:!cr,isEditing:cr,variant:"tab"})})}),n.jsxs(qa,{className:ye("min-h-0 flex-1",(T==="produktion"||T==="nutzen")&&"hidden"),children:[Vs&&n.jsx(ir,{value:"struktur",className:"mt-0 px-6 py-4",children:n.jsx(kI,{parentArticleId:$.id,catalogArticles:Pr,lines:_e?Be:rt,onLinesChange:_e?void 0:lt,loading:_n,disabled:Vn||!Lt,isEditing:pe&&Lt,onOpenArticle:r})}),n.jsx(ir,{value:"stammdaten",className:"mt-0 px-6 py-4",children:n.jsxs("div",{className:"space-y-6 pb-2",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-3",children:[!Ki&&n.jsx(no,{label:"Revision",value:yn.revision||"â"}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Mengeneinheit"}),n.jsx(Gs,{uiField:"unitOfMeasure",fieldConflicts:cn,onReloadField:Vr,children:n.jsxs(_t,{value:yn.unitOfMeasure,onValueChange:q=>gt({unitOfMeasure:q}),disabled:Vn,children:[n.jsx(It,{className:"h-8 text-sm",children:n.jsx(Et,{})}),n.jsx(Pt,{children:["Stk","m","kg","l","Set","Rolle"].map(q=>n.jsx(ft,{value:q,children:q},q))})]})})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"s-mfr",className:"text-xs",children:"Hersteller"}),n.jsx(Gs,{uiField:"manufacturer",fieldConflicts:cn,onReloadField:Vr,children:n.jsx(Ze,{id:"s-mfr",value:yn.manufacturer??"",onChange:q=>gt({manufacturer:q.target.value||void 0}),placeholder:"z. B. Yageo",className:ye("h-8 text-sm",Vn&&"bg-muted/40"),disabled:Vn}
82)})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"s-mpn",className:"text-xs",children:"MPN (Hersteller-Teilenummer)"}),n.jsx(Ze,{id:"s-mpn",value:yn.mpn??"",onChange:q=>_a(q.target.value),placeholder:"z. B. CC0402KRX5R7BB104",className:ye("h-8 font-mono text-sm",Vn&&"bg-muted/40"),disabled:Vn})]}),Qr?n.jsx(no,{label:"Shop-Artikelnummer",value:Qr}):null,n.jsx(no,{label:"Angelegt am",value:yn.createdAt?o.date(yn.createdAt):"â"}),n.jsx(no,{label:"Letzte Ãnderung",value:yn.updatedAt?o.date(yn.updatedAt):"â"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"s-desc",className:"text-xs",children:"Beschreibung"}),n.jsx(Gs,{uiField:"description",fieldConflicts:cn,onReloadField:Vr,children:n.jsx(ka,{id:"s-desc",rows:2,value:yn.description??"",onChange:q=>gt({description:q.target.value||void 0}),placeholder:"Technische Kurzbeschreibung â¦",className:ye("resize-none text-sm",Vn&&"bg-muted/40"),disabled:Vn})})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Beschaffungsart"}),n.jsxs(_t,{value:yn.procurementType??"BUY",onValueChange:q=>gt({procurementType:q}),disabled:Vn,children:[n.jsx(It,{className:"h-8 text-sm",children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"BUY",children:"Fremdbeschaffung (BUY)"}),n.jsx(ft,{value:"MAKE",children:"Eigenfertigung (MAKE)"}),n.jsx(ft,{value:"SERVICE",children:"Dienstleistung (SERVICE)"})]})]})]}),Ki&&kt($.id)&&n.jsxs(n.Fragment,{children:[n.jsx(To,{}),n.jsx(rI,{articleId:$.id,selectedRevisionId:Pe,onSelectRevision:q=>void Ia(q),onRevisionsChanged:()=>void Vi(),disabled:!cr})]}),Sr&&n.jsxs(n.Fragment,{children:[n.jsx(To,{}),n.jsxs("div",{children:[n.jsxs("h3",{className:"mb-3 text-sm font-semibold tracking-tight",children:["Eigenschaften",Xt&&n.jsxs("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:[Xt.name," · ",Xt.schema.length," Felder"]})]}),((e==null?void 0:e.aiEnrichmentStatus)==="PENDING"||(e==null?void 0:e.aiEnrichmentStatus)==="IN_PROGRESS")&&n.jsxs("div",{className:"mb-3 flex items-center gap-2 rounded-md border border-info/30 bg-info/10 px-3 py-2 text-xs text-info",children:[n.jsx(Me,{className:"size-3 animate-spin shrink-0"}),n.jsx("span",{children:"KI-Anreicherung läuft â Schema-Werte werden automatisch befüllt."})]}),(e==null?void 0:e.aiEnrichmentStatus)==="COMPLETED"&&n.jsxs("div",{className:"mb-3 flex items-center gap-2 rounded-md border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-xs text-emerald-700 dark:text-emerald-400",children:[n.jsx(rs,{className:"size-3 shrink-0"}),n.jsx("span",{children:"KI-angereichert â Warengruppe und Schema-Werte wurden automatisch befüllt."})]}),(e==null?void 0:e.aiEnrichmentStatus)==="FAILED"&&n.jsx("div",{className:"mb-3 flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs text-destructive",children:"KI-Anreicherung fehlgeschlagen â Schema-Werte manuell prüfen."}),!Xt||Xt.schema.length===0?n.jsxs("div",{className:"flex flex-col items-center gap-2 py-6 text-center",children:[n.jsx(Cg,{className:"size-6 text-muted-foreground/50"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:Xt?"Diese Warengruppe hat noch kein Schema.":"Bitte Warengruppe auswählen."}),n.jsx(lr,{to:"/einstellungen/warengruppen",onClick:s,children:n.jsx(ee,{variant:"outline",size:"sm",className:ye("mt-1",ea),children:"Schema konfigurieren"})})]}):n.jsx("div",{className:"grid grid-cols-2 gap-x-4 gap-y-3",children:Xt.schema.map(q=>n.jsxs("div",{className:ye("space-y-1.5",q.type==="url"&&"col-span-2"),children:[n.jsxs(ze,{className:"flex items-center gap-1 text-xs",children:[q.label,q.required&&n.jsx("span",{className:"text-destructive",children:"*"})]}),n.jsx(Gs,{uiField:`properties.${q.key}`,fieldConflicts:cn,onReloadField:Vr,children:n.jsx(AI,{field:q,value:yn.properties[q.key],onChange:fe=>sn(q.key,fe),disabled:Vn})})]},q.key))})]})]})]})}),Ca&&n.jsx(ir,{value:"lager",className:"mt-0 px-6 py-4",children:n.jsx(cI,{articleId:$.id,articleNumber:$.articleNumber,articleName:$.name,unitOfMeasure:$.unitOfMeasure,minStock:$.minStock,minStockBaseline:Ie.minStock,minStockDisabled:!Lt||$r,savingMinStock:R,onMinStockChange:fl,onMinStockSave:()=>void Kr(),purchasePrice:$.purchasePrice,purchasePriceBaseline:Ie.purchasePrice,savingPurchasePrice:A,onPurchasePriceChange:pl,onPurchasePriceSave:()=>void Hn(),showSupplierSection:qs,manufacturer:$.manufacturer,mpn:$.mpn,isEditing:pe})}),!i&&kt($.id)&&n.jsx(ir,{value:"historie",className:"mt-0 px-6 py-4",children:n.jsx(fI,{articleId:$.id})})]})]})]}):null,i&&n.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-2 border-t px-6 py-4",children:[n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:ea,disabled:v,onClick:bl,children:"Abbrechen"}),n.jsxs(ee,{type:"button",size:"sm",variant:"default",className:ye("gap-1.5",La),disabled:v||!yn.name.trim()||!Bn,onClick:()=>void yl(),children:[v?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(vs,{className:"size-3.5"}),"Artikel anlegen"]})]}),n.jsx(da,{open:Wt!==null,onOpenChange:q=>!q&&on(null),children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:"Konflikt beim Speichern"}),n.jsx(ha,{children:"Die Version vom Server unterscheidet sich von deiner lokalen Kopie. Möchtest du deine Ãnderungen erzwingen oder die Server-Version laden?"})]}),n.jsxs(ga,{children:[n.jsx(xa,{onClick:Qa,children:"Server-Version laden"}),n.jsx(ya,{onClick:()=>void wu(),children:"Ãnderungen erzwingen"})]})]})}),n.jsx(da,{open:C,onOpenChange:k,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:j==="confirm"?"Löschung bestätigen":"Artikel löschen"}),n.jsx(ha,{children:j==="confirm"?n.jsxs(n.Fragment,{children:["Der Artikel ",n.jsx("strong",{children:$.name})," (",$.articleNumber,") wird endgültig als gelöscht markiert. Stücklisten und Historie bleiben erhalten, der Artikel erscheint nicht mehr in der Liste."]}):K?n.jsxs(n.Fragment,{children:["Der Artikel ",n.jsx("strong",{children:$.name})," (",$.articleNumber,") wird zur Löschung vorgeschlagen. Ein zweiter Benutzer muss die Löschung bestätigen (4-Augen-Prüfung)."]}):n.jsxs(n.Fragment,{children:["Der Artikel ",n.jsx("strong",{children:$.name})," (",$.articleNumber,") wird als gelöscht markiert. Stücklisten und Historie bleiben erhalten, der Artikel erscheint nicht mehr in der Liste."]})})]}),n.jsxs(ga,{children:[n.jsx(xa,{disabled:v,children:"Abbrechen"}),n.jsx(ya,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:v,onClick:q=>{q.preventDefault(),Hi()},children:j==="confirm"?"Endgültig löschen":K?"Zur Freigabe vorschlagen":"Löschen"})]})]})}),n.jsx(X_,{open:!!Qt,onOpenChange:q=>{q||en(null)},target:Qt,onConfirm:q=>{if(Qt)return ys(Qt.bomLineId,Qt.articleId,q,Qt.bomItem)}}),n.jsx(hI,{open:ke,onOpenChange:L,result:xe}),n.jsx(xI,{open:G,onOpenChange:W,articleNumber:yn.articleNumber})]})}function Tf({article:e,open:t,onOpenChange:r}){const{isIntegrated:s}=Vx(),[a,i]=u.useState([]),[o,l]=u.useState(!1),d=u.useRef(!1);u.useEffect(()=>{t||(i([]),l(!1),d.current=!1)},[t]),u.useEffect(()=>{i([])},[e==null?void 0:e.id]);const m=v=>i(S=>[...S,v]),p=()=>i(v=>v.slice(0,-1)),h=()=>{l(!1),d.current=!1,r(!1)},x=()=>
82{if(d.current){l(!0);return}r(!1)},b=a.length>0?a[a.length-1]:e,w=[...e?[e]:[],...a];return n.jsxs(n.Fragment,{children:[n.jsx(Fc,{open:t,onOpenChange:v=>{v?r(!0):x()},children:n.jsxs($c,{side:"right",className:"flex w-[min(100vw,880px)] max-w-none flex-col gap-0 overflow-hidden p-0 sm:w-[60vw] sm:max-w-[880px]",children:[a.length>0&&n.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-4 py-2",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",onClick:p,className:ye("h-7 gap-1 px-2 text-xs",ea),children:[n.jsx(Ks,{className:"size-3.5"}),"Zurück"]}),!s&&n.jsx("div",{className:"flex min-w-0 items-center gap-1 overflow-x-auto",children:w.map((v,S)=>n.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[S>0&&n.jsx(ua,{className:"size-3 text-muted-foreground/40"}),n.jsx("span",{className:ye("max-w-[160px] truncate text-xs",S===w.length-1?"font-medium text-foreground":"cursor-pointer text-muted-foreground hover:text-foreground"),title:v.name,onClick:S<w.length-1?()=>i(a.slice(0,S)):void 0,children:v.name||v.articleNumber})]},v.id))})]}),n.jsx(CI,{open:t,article:b,onDrillDown:m,onClose:h,onDirtyChange:v=>{d.current=v}},(b==null?void 0:b.id)??"new")]})}),n.jsx(da,{open:o,onOpenChange:l,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:"Ungespeicherte Ãnderungen"}),n.jsx(ha,{children:"Beim SchlieÃen gehen die Ãnderungen verloren."})]}),n.jsxs(ga,{children:[n.jsx(xa,{children:"Abbrechen"}),n.jsx(ya,{onClick:h,children:"Trotzdem schlieÃen"})]})]})})]})}const _I=250,II=6;async function EI(e,t,r){const s=[...e],a=Array.from({length:Math.min(t,s.length)},async()=>{for(;s.length>0;){const i=s.shift();if(i===void 0)return;await r(i)}});await Promise.all(a)}function PI(e,t){const[r,s]=u.useState(new Map),a=u.useMemo(()=>{var l;const o=new Map;for(const d of t)(l=d.productStructure)!=null&&l.length&&o.set(d.id.toLowerCase(),d.productStructure);return o},[t]),i=u.useMemo(()=>e?t.filter(o=>kt(o.id)&&ax(o.itemType)&&!a.has(o.id.toLowerCase())).map(o=>o.id).slice(0,_I):[],[t,e,a]);return u.useEffect(()=>{if(!e)return;let o=!1;async function l(){try{const m=await jk();o||s(m);return}catch(m){const p=m instanceof ut?m.status:0;if(p===401||p===403){o||s(new Map);return}}if(i.length===0)return;const d=new Map;await EI(i,II,async m=>{try{const p=await po(m);p.length>0&&d.set(m.toLowerCase(),p)}catch{}}),o||s(d)}return l(),()=>{o=!0}},[e,i.join("|")]),u.useMemo(()=>{const o=new Map(r);for(const[l,d]of a)o.set(l,d);return o},[a,r])}function _c(e,t){var r;return(r=e.productStructure)!=null&&r.length?e.productStructure:t.get(e.id.toLowerCase())??t.get(e.id)}const oa=[{id:"articleNumber",label:"Artikelnummer"},{id:"shopwareProductNumber",label:"Shop-Artikelnummer"},{id:"name",label:"Name"},{id:"itemType",label:"Typ"},{id:"manufacturer",label:"Hersteller"},{id:"revision",label:"Revision"},{id:"status",label:"Status"},{id:"stock",label:"Bestand"},{id:"minStock",label:"Mindestbestand"},{id:"purchasePrice",label:"Einkaufspreis"},{id:"quantity",label:"Menge"},{id:"mpn",label:"MPN"},{id:"description",label:"Beschreibung"}],Ph=["articleNumber","name","itemType","quantity"],hm="{Einzug}{Artikelnummer} {Name} Ã{Menge}",TI=[{token:"{Einzug}",label:"Einzug"},{token:"{Ebene}",label:"Ebene"},{token:"{Neue Zeile}",label:"Neue Zeile"},{token:"{Nur Subkomponenten}",label:"Nur Subkomponenten"}];function gm(e){return e.trim().toLowerCase().replace(/\s+/g,"")}const hb=(()=>{const e=new Map;for(const t of oa)e.set(gm(t.id),t.id),e.set(gm(t.label),t.id);return e.set("einzug","indent"),e.set("indent","indent"),e.set("ebene","level"),e.set("level","level"),e.set("neuezeile","newline"),e.set("newline","newline"),e.set("nursubkomponenten","subonly"),e.set("subcomponentsonly","subonly"),e.set("subonly","subonly"),e})(),DI=new Set(["sub","subonly","nursub","nursubkomponenten"]),RI=new Set(["root","nurroot"]);function gb(e){const t=e.split("|").map(r=>gm(r)).filter(Boolean);return{name:t[0]??"",modifiers:new Set(t.slice(1))}}function MI(e,t){return[...e].some(r=>DI.has(r))?t>0:[...e].some(r=>RI.has(r))?t===0:!0}function OI(e){for(const t of e.matchAll(/\{([^}]+)\}/g)){const r=gb(t[1]??"");if(hb.get(r.name)==="subonly")return!0}return!1}
82function xb(e,t){const r=Math.max(0,e.level+t);return{...e,level:r,children:e.children.map(s=>xb(s,t))}}function Ao(e,t){return OI(t)?e.flatMap(r=>r.children.map(s=>xb(s,-1))):e}const Jl=200,xm=2500,ym=3;function Th(e){return e.asZip?!0:e.fileMode==="perObject"&&e.fileCount>ym}function LI(e){return e.asZip||e.fileCount>1}const zI=xm;function BI(e){const t=new Map;for(const r of e)t.set(r.id.toLowerCase(),r);return t}function yb(e,t){var s,a,i,o,l,d;const r=t.article;switch(e){case"articleNumber":return t.articleNumber;case"shopwareProductNumber":return bb(r);case"name":return t.name;case"itemType":return r!=null&&r.itemType?Hr(r.itemType):((s=t.line)==null?void 0:s.childItemType)??"";case"manufacturer":return((a=r==null?void 0:r.manufacturer)==null?void 0:a.trim())??"";case"revision":return((i=r==null?void 0:r.revision)==null?void 0:i.trim())??"";case"status":return r?((o=dc[r.status])==null?void 0:o.label)??r.status:"";case"stock":return r?String(r.stock??""):"";case"minStock":return r?String(r.minStock??""):"";case"purchasePrice":return r&&Number.isFinite(r.purchasePrice)?r.purchasePrice.toFixed(2):"";case"quantity":return String(t.quantity);case"mpn":return((l=r==null?void 0:r.mpn)==null?void 0:l.trim())??"";case"description":return((d=r==null?void 0:r.description)==null?void 0:d.trim())??""}}function Df(e,t){return(e||hm).replace(/\{([^}]+)\}/g,(r,s)=>{const a=gb(s);if(!MI(a.modifiers,t.level))return"";const i=hb.get(a.name);return i==="indent"?" ".repeat(t.level):i==="level"?String(t.level):i==="newline"?` 83`:i==="subonly"?"":i?yb(i,t):""})}function FI(e,t){const r=[],s=a=>{r.push(...Df(t,a).split(/\r?\n/));for(const i of a.children)s(i)};for(const a of Ao(e,t))s(a);return r}function $I(e,t,r,s){const a=BI(t);let i=zI;const o=(l,d,m,p,h)=>{var R,E,A,I,C,k,j,z,D;if(i<=0)return null;i-=1;const x=(l==null?void 0:l.id)??((R=d.line)==null?void 0:R.childArticleId)??d.articleNumber,b={id:`${x}:${p}:${i}`,articleId:x,articleNumber:((E=l==null?void 0:l.articleNumber)==null?void 0:E.trim())||d.articleNumber||((I=(A=d.line)==null?void 0:A.childArticleNumber)==null?void 0:I.trim())||"",name:((C=l==null?void 0:l.name)==null?void 0:C.trim())||d.name||((j=(k=d.line)==null?void 0:k.childName)==null?void 0:j.trim())||d.articleNumber,quantity:m,level:p,article:l,line:d.line,children:[]};if(!(s==="all"||s==="first"&&p===0)||!l||h.has(l.id.toLowerCase()))return b;const v=new Set(h);v.add(l.id.toLowerCase());const S=[..._c(l,r)??[]].sort((B,T)=>(B.sortOrder??0)-(T.sortOrder??0));for(const B of S){const T=a.get(B.childArticleId.toLowerCase())??null,P=o(T,{articleNumber:((z=B.childArticleNumber)==null?void 0:z.trim())||"",name:((D=B.childName)==null?void 0:D.trim())||"",line:B},B.quantity>0?B.quantity:1,p+1,v);P&&b.children.push(P)}return b};return e.map(l=>o(l,{articleNumber:l.articleNumber,name:l.name,line:null},1,0,new Set)).filter(l=>l!==null)}function KI(e){let t=0;const r=s=>{t+=1;for(const a of s.children)r(a)};for(const s of e)r(s);return t}function Dh(e,t){const r=[],s=a=>{const i={};for(const o of t)i[o]=yb(o,a);r.push({level:a.level,quantity:a.quantity,articleNumber:a.articleNumber,name:a.name,values:i});for(const o of a.children)s(o)};for(const a of e)s(a);return r}function VI(e){return/[;"\n\r]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Ic(e){return e.some(t=>t.level>0)}function qI(e,t,r){const s=(r==null?void 0:r.includeLevel)??Ic(e);return`\uFEFF${[[...s?["Ebene"]:[],...t.map(o=>{var l;return((l=oa.find(d=>d.id===o))==null?void 0:l.label)??o})].join(";"),...e.map(o=>[...s?[String(o.level)]:[],...t.map(l=>VI(o.values[l]??""))].join(";"))].join(`\r 84`)}`}function Rh(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function UI(e,t,r){const s=(r==null?void 0:r.includeLevel)??Ic(e),i=[...s?["Ebene"]:[],...t.map(l=>{var d;return((d=oa.find(m=>m.id===l))==null?void 0:d.label)??l})].map(l=>`<Cell><Data ss:Type="String">${Rh(l)}</Data></Cell>`).join(""),o=e.map(l=>`<Row>${[...s?[`<Cell><Data ss:Type="Number">${l.level}</Data></Cell>`]:[],...t.map(m=>{const p=l.values[m]??"";return(m==="quantity"||m==="stock"||m==="minStock"||m==="purchasePrice")&&p!==""&&Number.isFinite(Number(p))?`<Cell><Data ss:Type="Number">${p}</Data></Cell>`:`<Cell><Data ss:Type="String">${Rh(p)}</Data></Cell>`})].join("")}</Row>`).join("");return['<?xml version="1.0"?>','<?mso-application progid="Excel.Sheet"?>','<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">','<Worksheet ss:Name="Artikelreport"><Table>',`<Row>${i}</Row>`,o,"</Table></Worksheet></Workbook>"].join("")}function WI(e,t,r){Ql(new Blob([e],{type:r}),t)}function Ql(e,t){const r=URL.createObjectURL(e),s=document.createElement("a");s.href=r,s.download=t,s.click(),URL.revokeObjectURL(r)}function bb(e){var r;if(!e)return"";if(typeof e.shopwareProductNumber=="string"&&e.shopwareProductNumber.trim())return e.shopwareProductNumber.trim();const t=(r=e.properties)==null?void 0:r.shopwareProductNumber;return typeof t=="string"?t.trim():""}function Mh(e){return(e.articleNumber.trim()||e.name.trim()||e.id.slice(0,8)).replace(/[^\w.-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"artikel"}const gd=10,ro=28,za=24;function HI(e){var t;return((t=oa.find(r=>r.id===e))==null?void 0:t.label)??e}function Oh(e,t){return Df(t,e).split(/\r?\n/)}function xd(e,t){if(typeof document>"u")return Promise.reject(new Error("PNG nur im Browser"));const r=[],s=x=>{r.push(x);for(const b of x.children)s(b)};for(const x of Ao(e,t))s(x);const a=document.createElement("canvas").getContext("2d");if(!a)return Promise.reject(new Error("Canvas nicht verfügbar"));a.font="13px Inter, Segoe UI, sans-serif";let i=320;const o=[];for(const x of r){const b=Oh(x,t);let w=0;for(const v of b)w=Math.max(w,a.measureText(v).width);i=Math.max(i,w+x.level*ro+28),o.push(18+b.length*16)}const l=za*2+o.reduce((x,b)=>x+b+gd,0),d=document.createElement("canvas");d.width=Math.ceil(i+za*2),d.height=Math.ceil(Math.max(l,80));const m=d.getContext("2d");if(!m)return Promise.reject(new Error("Canvas nicht verfügbar"));m.fillStyle="#f7f7f5",m.fillRect(0,0,d.width,d.height);let p=za;const h=[];for(let x=0;x<r.length;x+=1){r[x];const b=o[x];h.push(p+b/2),p+=b+gd}m.strokeStyle="#b8b4ae",m.lineWidth=1.2;for(let x=0;x<r.length;x+=1){const b=r[x];if(b.level===0)continue;const w=[...r.slice(0,x)].reverse().find(I=>I.level===b.level-1);if(!w)continue;const v=r.indexOf(w),S=za+w.level*ro+10,R=za+b.level*ro,E=h[v],A=h[x];m.beginPath(),m.moveTo(S,E),m.lineTo(S,A),m.lineTo(R,A),m.stroke()}p=za;for(let x=0;x<r.length;x+=1){const b=r[x],w=Oh(b,t),v=o[x],S=za+b.level*ro,R=i-b.level*ro;
84m.fillStyle=b.level===0?"#1f1c19":"#ffffff",m.strokeStyle="#d4d0c8",m.lineWidth=1,m.beginPath(),typeof m.roundRect=="function"?m.roundRect(S,p,R,v,6):m.rect(S,p,R,v),m.fill(),m.stroke(),m.fillStyle=b.level===0?"#f7f7f5":"#1f1c19",m.font=x===0||b.level===0?"600 13px Inter, Segoe UI, sans-serif":"13px Inter, Segoe UI, sans-serif",w.forEach((E,A)=>{m.fillText(E,S+10,p+16+A*16)}),p+=v+gd}return new Promise((x,b)=>{d.toBlob(w=>{w?x(w):b(new Error("PNG konnte nicht erzeugt werden"))},"image/png")})}function Ys(e,t){const r=new Date().toISOString().slice(0,10),s=t?`-${t}`:"";return`artikel-report-${r}${s}.${e}`}var wr=Uint8Array,Wr=Uint16Array,Rf=Int32Array,Mf=new wr([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Of=new wr([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Lh=new wr([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),vb=function(e,t){for(var r=new Wr(31),s=0;s<31;++s)r[s]=t+=1<<e[s-1];for(var a=new Rf(r[30]),s=1;s<30;++s)for(var i=r[s];i<r[s+1];++i)a[i]=i-r[s]<<5|s;return{b:r,r:a}},Nb=vb(Mf,2),ZI=Nb.b,bm=Nb.r;ZI[28]=258,bm[258]=28;var GI=vb(Of,0),zh=GI.r,vm=new Wr(32768);for(var In=0;In<32768;++In){var Js=(In&43690)>>1|(In&21845)<<1;Js=(Js&52428)>>2|(Js&13107)<<2,Js=(Js&61680)>>4|(Js&3855)<<4,vm[In]=((Js&65280)>>8|(Js&255)<<8)>>1}var Co=(function(e,t,r){for(var s=e.length,a=0,i=new Wr(t);a<s;++a)e[a]&&++i[e[a]-1];var o=new Wr(t);for(a=1;a<t;++a)o[a]=o[a-1]+i[a-1]<<1;var l;if(r){l=new Wr(1<<t);var d=15-t;for(a=0;a<s;++a)if(e[a])for(var m=a<<4|e[a],p=t-e[a],h=o[e[a]-1]++<<p,x=h|(1<<p)-1;h<=x;++h)l[vm[h]>>d]=m}else for(l=new Wr(s),a=0;a<s;++a)e[a]&&(l[a]=vm[o[e[a]-1]++]>>15-e[a]);return l}),Za=new wr(288);for(var In=0;In<144;++In)Za[In]=8;for(var In=144;In<256;++In)Za[In]=9;for(var In=256;In<280;++In)Za[In]=7;for(var In=280;In<288;++In)Za[In]=8;var Ec=new wr(32);for(var In=0;In<32;++In)Ec[In]=5;var YI=Co(Za,9,0),JI=Co(Ec,5,0),jb=function(e){return(e+7)/8|0},kb=function(e,t,r){return(r==null||r>e.length)&&(r=e.length),new wr(e.subarray(t,r))}
vendor: 5,812 bytes, line 84
84,QI=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],hu=function(e,t,r){var s=new Error(t||QI[e]);if(s.code=e,Error.captureStackTrace&&Error.captureStackTrace(s,hu),!r)throw s;return s},Ms=function(e,t,r){r<<=t&7;var s=t/8|0;e[s]|=r,e[s+1]|=r>>8},so=function(e,t,r){r<<=t&7;var s=t/8|0;e[s]|=r,e[s+1]|=r>>8,e[s+2]|=r>>16},yd=function(e,t){for(var r=[],s=0;s<e.length;++s)e[s]&&r.push({s,f:e[s]});var a=r.length,i=r.slice();if(!a)return{t:Sb,l:0};if(a==1){var o=new wr(r[0].s+1);return o[r[0].s]=1,{t:o,l:1}}r.sort(function(C,k){return C.f-k.f}),r.push({s:-1,f:25001});var l=r[0],d=r[1],m=0,p=1,h=2;for(r[0]={s:-1,f:l.f+d.f,l,r:d};p!=a-1;)l=r[r[m].f<r[h].f?m++:h++],d=r[m!=p&&r[m].f<r[h].f?m++:h++],r[p++]={s:-1,f:l.f+d.f,l,r:d};for(var x=i[0].s,s=1;s<a;++s)i[s].s>x&&(x=i[s].s);var b=new Wr(x+1),w=Nm(r[p-1],b,0);if(w>t){var s=0,v=0,S=w-t,R=1<<S;for(i.sort(function(k,j){return b[j.s]-b[k.s]||k.f-j.f});s<a;++s){var E=i[s].s;if(b[E]>t)v+=R-(1<<w-b[E]),b[E]=t;else break}for(v>>=S;v>0;){var A=i[s].s;b[A]<t?v-=1<<t-b[A]++-1:++s}for(;s>=0&&v;--s){var I=i[s].s;b[I]==t&&(--b[I],++v)}w=t}return{t:new wr(b),l:w}},Nm=function(e,t,r){return e.s==-1?Math.max(Nm(e.l,t,r+1),Nm(e.r,t,r+1)):t[e.s]=r},Bh=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new Wr(++t),s=0,a=e[0],i=1,o=function(d){r[s++]=d},l=1;l<=t;++l)if(e[l]==a&&l!=t)++i;else{if(!a&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(a),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(a);i=1,a=e[l]}return{c:r.subarray(0,s),n:t}},ao=function(e,t){for(var r=0,s=0;s<t.length;++s)r+=e[s]*t[s];return r},wb=function(e,t,r){var s=r.length,a=jb(t+2);e[a]=s&255,e[a+1]=s>>8,e[a+2]=e[a]^255,e[a+3]=e[a+1]^255;for(var i=0;i<s;++i)e[a+i+4]=r[i];return(a+4+s)*8},Fh=function(e,t,r,s,a,i,o,l,d,m,p){Ms(t,p++,r),++a[256];for(var h=yd(a,15),x=h.t,b=h.l,w=yd(i,15),v=w.t,S=w.l,R=Bh(x),E=R.c,A=R.n,I=Bh(v),C=I.c,k=I.n,j=new Wr(19),z=0;z<E.length;++z)++j[E[z]&31];for(var z=0;z<C.length;++z)++j[C[z]&31];for(var D=yd(j,7),B=D.t,T=D.l,P=19;P>4&&!B[Lh[P-1]];--P);var G=m+5<<3,W=ao(a,Za)+ao(i,Ec)+o,ke=ao(a,x)+ao(i,v)+o+14+3*P+ao(j,B)+2*j[16]+3*j[17]+7*j[18];if(d>=0&&G<=W&&G<=ke)return wb(t,p,e.subarray(d,d+m));var L,xe,Y,Ne;if(Ms(t,p,1+(ke<W)),p+=2,ke<W){L=Co(x,b,0),xe=x,Y=Co(v,S,0),Ne=v;var se=Co(B,T,0);Ms(t,p,A-257),Ms(t,p+5,k-1),Ms(t,p+10,P-4),p+=14;for(var z=0;z<P;++z)Ms(t,p+3*z,B[Lh[z]]);p+=3*P;for(var J=[E,C],Q=0;Q<2;++Q)for(var U=J[Q],z=0;z<U.length;++z){var ne=U[z]&31;Ms(t,p,se[ne]),p+=B[ne],ne>15&&(Ms(t,p,U[z]>>5&127),p+=U[z]>>12)}}else L=YI,xe=Za,Y=JI,Ne=Ec;for(var z=0;z<l;++z){var H=s[z];if(H>255){var ne=H>>18&31;so(t,p,L[ne+257]),p+=xe[ne+257],ne>7&&(Ms(t,p,H>>23&31),p+=Mf[ne]);var Z=H&31;so(t,p,Y[Z]),p+=Ne[Z],Z>3&&(so(t,p,H>>5&8191),p+=Of[Z])}else so(t,p,L[H]),p+=xe[H]}return so(t,p,L[256]),p+xe[256]},XI=new Rf([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Sb=new wr(0),eE=function(e,t,r,s,a,i){var o=i.z||e.length,l=new wr(s+o+5*(1+Math.ceil(o/7e3))+a),d=l.subarray(s,l.length-a),m=i.l,p=(i.r||0)&7;if(t){p&&(d[0]=i.r>>3);for(var h=XI[t-1],x=h>>13,b=h&8191,w=(1<<r)-1,v=i.p||new Wr(32768),S=i.h||new Wr(w+1),R=Math.ceil(r/3),E=2*R,A=function(Ce){return(e[Ce]^e[Ce+1]<<R^e[Ce+2]<<E)&w},I=new Rf(25e3),C=new Wr(288),k=new Wr(32),j=0,z=0,D=i.i||0,B=0,T=i.w||0,P=0;D+2<o;++D){var G=A(D),W=D&32767,ke=S[G];if(v[W]=ke,S[G]=W,T<=D){var L=o-D;if((j>7e3||B>24576)&&(L>423||!m)){p=Fh(e,d,0,I,C,k,z,B,P,D-P,p),B=j=z=0,P=D;for(var xe=0;xe<286;++xe)C[xe]=0;for(var xe=0;xe<30;++xe)k[xe]=0}var Y=2,Ne=0,se=b,J=W-ke&32767;if(L>2&&G==A(D-J))for(var Q=Math.min(x,L)-1,U=Math.min(32767,D),ne=Math.min(258,L);J<=U&&--se&&W!=ke;){if(e[D+Y]==e[D+Y-J]){for(var H=0;H<ne&&e[D+H]==e[D+H-J];++H);if(H>Y){if(Y=H,Ne=J,H>Q)break;for(var Z=Math.min(J,H-2),K=0,xe=0;xe<Z;++xe){var me=D-J+xe&32767,$=v[me],X=me-$&32767;X>K&&(K=X,ke=me)}}}W=ke,ke=v[W],J+=W-ke&32767}if(Ne){I[B++]=268435456|bm[Y]<<18|zh[Ne];var Ie=bm[Y]&31,V=zh[Ne]&31;z+=Mf[Ie]+Of[V],++C[257+Ie],++k[V],T=D+Y,++j}else I[B++]=e[D],++C[e[D]]}}for(D=Math.max(D,T);D<o;++D)I[B++]=e[D],++C[e[D]];p=Fh(e,d,m,I,C,k,z,B,P,D-P,p),m||(i.r=p&7|d[p/8|0]<<3,p-=7,i.h=S,i.p=v,i.i=D,i.w=T)}else{for(var D=i.w||0;D<o+m;D+=65535){var Se=D+65535;Se>=o&&(d[p/8|0]=m,Se=o),p=wb(d,p+1,e.subarray(D,Se))}i.i=o}return kb(l,0,s+jb(p)+a)},tE=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var r=t,s=9;--s;)r=(r&1&&-306674912)^r>>>1;e[t]=r}return e})(),nE=function(){var e=-1;return{p:function(t){for(var r=e,s=0;s<t.length;++s)r=tE[r&255^t[s]]^r>>>8;e=r},d:function(){return~e}}},rE=function(e,t,r,s,a){if(!a&&(a={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),o=new wr(i.length+e.length);o.set(i),o.set(e,i.length),e=o,a.w=i.length}return eE(e,t.level==null?6:t.level,t.mem==null?a.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,r,s,a)},Ab=function(e,t){var r={};for(var s in e)r[s]=e[s];for(var s in t)r[s]=t[s];return r},hr=function(e,t,r){for(;r;++t)e[t]=r,r>>>=8};function sE(e,t){return rE(e,t||{},0,0)}var Cb=function(e,t,r,s){for(var a in e){var i=e[a],o=t+a,l=s;Array.isArray(i)&&(l=Ab(s,i[1]),i=i[0]),i instanceof wr?r[o]=[i,l]:(r[o+="/"]=[new wr(0),l],Cb(i,o,r,s))}},$h=typeof TextEncoder<"u"&&new TextEncoder,aE=typeof TextDecoder<"u"&&new TextDecoder,iE=0;try{aE.decode(Sb,{stream:!0}),iE=1}catch{}function jm(e,t){var r;if($h)return $h.encode(e);for(var s=e.length,a=new wr(e.length+(e.length>>1)),i=0,o=function(m){a[i++]=m},r=0;r<s;++r){if(i+5>a.length){var l=new wr(i+8+(s-r<<1));l.set(a),a=l}var d=e.charCodeAt(r);d<128||t?o(d):d<2048?(o(192|d>>6),o(128|d&63)):d>
8455295&&d<57344?(d=65536+(d&1047552)|e.charCodeAt(++r)&1023,o(240|d>>18),o(128|d>>12&63),o(128|d>>6&63),o(128|d&63)):(o(224|d>>12),o(128|d>>6&63),o(128|d&63))}return kb(a,0,i)}var km=function(e){var t=0;if(e)for(var r in e){var s=e[r].length;s>65535&&hu(9),t+=s+4}return t},Kh=function(e,t,r,s,a,i,o,l){var d=s.length,m=r.extra,p=l&&l.length,h=km(m);hr(e,t,o!=null?33639248:67324752),t+=4,o!=null&&(e[t++]=20,e[t++]=r.os),e[t]=20,t+=2,e[t++]=r.flag<<1|(i<0&&8),e[t++]=a&&8,e[t++]=r.compression&255,e[t++]=r.compression>>8;var x=new Date(r.mtime==null?Date.now():r.mtime),b=x.getFullYear()-1980;if((b<0||b>119)&&hu(10),hr(e,t,b<<25|x.getMonth()+1<<21|x.getDate()<<16|x.getHours()<<11|x.getMinutes()<<5|x.getSeconds()>>1),t+=4,i!=-1&&(hr(e,t,r.crc),hr(e,t+4,i<0?-i-2:i),hr(e,t+8,r.size)),hr(e,t+12,d),hr(e,t+14,h),t+=16,o!=null&&(hr(e,t,p),hr(e,t+6,r.attrs),hr(e,t+10,o),t+=14),e.set(s,t),t+=d,h)for(var w in m){var v=m[w],S=v.length;hr(e,t,+w),hr(e,t+2,S),e.set(v,t+4),t+=4+S}return p&&(e.set(l,t),t+=p),t},oE=function(e,t,r,s,a){hr(e,t,101010256),hr(e,t+8,r),hr(e,t+10,r),hr(e,t+12,s),hr(e,t+16,a)};function lE(e,t){t||(t={});var r={},s=[];Cb(e,"",r,t);var a=0,i=0;for(var o in r){var l=r[o],d=l[0],m=l[1],p=m.level==0?0:8,h=jm(o),x=h.length,b=m.comment,w=b&&jm(b),v=w&&w.length,S=km(m.extra);x>65535&&hu(11);var R=p?sE(d,m):d,E=R.length,A=nE();A.p(d),s.push(Ab(m,{size:d.length,crc:A.d(),c:R,f:h,m:w,u:x!=o.length||w&&b.length!=v,o:a,compression:p})),a+=30+x+S+E,i+=76+2*(x+S)+(v||0)+E}for(var I=new wr(i+22),C=a,k=i-a,j=0;j<s.length;++j){var h=s[j];Kh(I,h.o,h,h.f,h.u,h.c.length);var z=30+h.f.length+km(h.extra);I.set(h.c,h.o+z),Kh(I,a,h,h.f,h.u,h.c.length,h.o,h.m),a+=16+z+(h.m?h.m.length:0)}return oE(I,a,s.length,k,C),I}function Vh(e){return jm(e)}function cE(e){const t={},r=new Map;for(const s of e){const a=r.get(s.name)??0;r.set(s.name,a+1);const i=a===0?s.name:s.name.replace(/(\.[^.]+)$/,`-${a}$1`);t[i]=s.data}return new Blob([lE(t)],{type:"application/zip"})}function _b({nodes:e,template:t}){return n.jsx("ul",{className:"space-y-1",children:e.map(r=>n.jsxs("li",{children:[n.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs leading-5 text-foreground",children:Df(t,r)}),r.children.length>0?n.jsx(_b,{nodes:r.children,template:t}):null]},r.id))})}function uE({rows:e,fields:t,includeLevel:r}){return n.jsxs("table",{className:"w-max min-w-full border-separate border-spacing-0 text-left text-xs",children:[n.jsx("thead",{children:n.jsxs("tr",{children:[r?n.jsx("th",{className:"sticky top-0 z-10 border-b border-border bg-muted px-2 py-1.5 font-medium text-muted-foreground",children:"Ebene"}):null,t.map(s=>n.jsx("th",{className:"sticky top-0 z-10 border-b border-border bg-muted px-2 py-1.5 font-medium text-muted-foreground",children:HI(s)},s))]})}),n.jsx("tbody",{children:e.map((s,a)=>n.jsxs("tr",{children:[r?n.jsx("td",{className:"whitespace-nowrap border-b border-border/60 px-2 py-1 tabular-nums text-muted-foreground",children:s.level}):null,t.map((i,o)=>n.jsx("td",{className:ye("whitespace-nowrap border-b border-border/60 px-2 py-1",o===0&&s.level===0?"font-medium":"text-foreground"),style:o===0?{paddingLeft:8+s.level*16}:void 0,children:s.values[i]||"â"},i))]},`${s.articleNumber}-${s.level}-${a}`))})]})}function qh(e){const t=e.article;return Mh(t||{id:e.articleId,articleNumber:e.articleNumber,name:e.name})}async function dE(e){await new Promise(t=>window.setTimeout(t,e))}function mE(e,t){return t?[e.articleNumber,e.name,e.mpn,bb(e)].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function fE({open:e,onOpenChange:t,roots:r,catalog:s,structure:a,sourceLabel:i,candidateTotal:o}){const[l,d]=u.useState("csv"),[m,p]=u.useState(hm),[h,x]=u.useState(Ph),[b,w]=u.useState("first"),[v,S]=u.useState(!1),[R,E]=u.useState("single"),[A,I]=u.useState(!1),[C,k]=u.useState(!1),[j,z]=u.useState(()=>new Set),[D,B]=u.useState(""),[T,P]=u.useState(!1),[G,W]=u.useState([]),[ke,L]=u.useState(""),[xe,Y]=u.useState(""),[Ne,se]=u.useState(!1),J=u.useRef(null),Q=r.map(re=>re.id).join("\0");u.useEffect(()=>{e&&(z(new Set(Q?Q.split("\0"):[])),B(""))},[e,Q]),u.useEffect(()=>{if(!e)return;let re=!1;return lk().then(ve=>{re||W(ve)}).catch(()=>{re||W([])}),()=>{re=!0}},[e]);const U=D.trim().toLowerCase(),ne=u.useMemo(()=>r.filter(re=>
84mE(re,U)),[U,r]),H=u.useMemo(()=>r.filter(re=>j.has(re.id)),[r,j]),Z=u.useMemo(()=>$I(H,s,a,b),[s,b,H,a]),K=v?`{Nur Subkomponenten}${m}`:m,me=u.useMemo(()=>Ao(Z,K),[K,Z]),$=u.useMemo(()=>v?Ao(Z,"{Nur Subkomponenten}"):Z,[v,Z]),X=l==="png"?me:$,Ie=u.useMemo(()=>Dh($,h),[h,$]),V=u.useMemo(()=>FI(Z,K),[K,Z]),Se=u.useMemo(()=>{const re=h.map(_e=>oa.find(te=>te.id===_e)).filter(_e=>_e!=null),ve=oa.filter(_e=>!h.includes(_e.id));return[...re,...ve]},[h]),Ce=r.length>0&&H.length===r.length,Be=l==="png"?V.length>0:Ie.length>0,Le=u.useMemo(()=>KI(Z),[Z]),rt=(o??r.length)>Jl,lt=Le>=xm,Tt=Ic(Ie);function vt(re){const ve=re.fields.filter(_e=>oa.some(te=>te.id===_e));L(re.id),Y(re.name),d(re.format),x(ve.length>0?ve:Ph),p(re.template.trim()||hm),w(re.depth),S(re.subOnly),E(re.fileMode)}function Pe(){return{id:ke||crypto.randomUUID(),name:xe.trim(),format:l,fields:h,template:m,depth:b,subOnly:v,fileMode:R}}async function it(re){se(!0);try{const ve=await ck(re);return W(ve),ve}catch(ve){return M.error(ve instanceof Error?ve.message:"Preset konnte nicht gespeichert werden."),null}finally{se(!1)}}async function yt(){const re=Pe();if(!re.name){M.error("Preset braucht einen Namen.");return}const _e=G.find(nt=>nt.id===re.id)?G.map(nt=>nt.id===re.id?re:nt):[...G,re];await it(_e)&&(L(re.id),M.success("Preset gespeichert."))}async function wt(){if(!ke)return;await it(G.filter(ve=>ve.id!==ke))&&(L(""),M.success("Preset gelöscht."))}function an(re){re==="{Nur Subkomponenten}"&&b==="none"&&w("first");const ve=J.current;if(!ve){p(Fe=>`${Fe}${re}`);return}const _e=ve.selectionStart,te=ve.selectionEnd,nt=`${m.slice(0,_e)}${re}${m.slice(te)}`;p(nt),requestAnimationFrame(()=>{ve.focus();const Fe=_e+re.length;ve.setSelectionRange(Fe,Fe)})}function qt(re,ve){x(_e=>ve?_e.includes(re)?_e:[..._e,re]:_e.length===1?_e:_e.filter(te=>te!==re))}function Qt(re,ve){x(_e=>{const te=_e.indexOf(re),nt=te+ve;if(te<0||nt<0||nt>=_e.length)return _e;const Fe=[..._e],[be]=Fe.splice(te,1);return Fe.splice(nt,0,be),Fe})}function en(re,ve){z(_e=>{const te=new Set(_e);return ve?te.add(re):te.delete(re),te})}function Wt(re){z(re?new Set(r.map(ve=>ve.id)):new Set)}async function on(re){for(let ve=0;ve<Z.length;ve+=1)await re(Z[ve]),ve<Z.length-1&&await dE(250);Z.length>1&&M.success(`${Z.length} Dateien heruntergeladen`)}function mn(re){const ve=v?Ao(re,"{Nur Subkomponenten}"):re,_e=Dh(ve,h),te={includeLevel:Ic(_e)};return l==="csv"?qI(_e,h,te):UI(_e,h,te)}async function ln(){if(R==="perObject"){const re=[];for(const ve of Z){const _e=qh(ve);if(l==="png"){const te=await xd([ve],K);re.push({name:Ys("png",_e),data:new Uint8Array(await te.arrayBuffer())})}else re.push({name:Ys(l,_e),data:Vh(mn([ve]))})}return re}if(l==="png"){const re=await xd(Z,K);return[{name:Ys("png"),data:new Uint8Array(await re.arrayBuffer())}]}return[{name:Ys(l),data:Vh(mn(Z))}]}function cn(re){return re.name.endsWith(".png")?new Blob([re.data],{type:"image/png"}):re.name.endsWith(".csv")?new Blob([re.data],{type:"text/csv;charset=utf-8"}):re.name.endsWith(".xls")?new Blob([re.data],{type:"application/vnd.ms-excel"}):new Blob([re.data],{type:"application/octet-stream"})}async function Oe(){if(Be){P(!0);try{const re=await ln(),ve=Th({asZip:A,fileCount:re.length,fileMode:R}),_e=C&&LI({asZip:A,fileCount:re.length}),te=ve||_e?cE(re):null;if(ve&&te?(Ql(te,Ys("zip")),M.success(`${re.length} Dateien als ZIP`)):R==="single"?Ql(cn(re[0]),re[0].name):await on(async nt=>{const Fe=qh(nt);if(l==="png"){Ql(await xd([nt],K),Ys("png",Fe));return}const be=l==="csv"?"text/csv;charset=utf-8":"application/vnd.ms-excel";WI(mn([nt]),Ys(l,Fe),be)}),C){const nt=_e&&te?{blob:te,fileName:Ys("zip"),contentType:"application/zip"}:{blob:cn(re[0]),fileName:re[0].name,contentType:cn(re[0]).type},Fe=await uk({blob:nt.blob,fileName:nt.fileName,title:nt.fileName.replace(/\.[^.]+$/,""),contentType:nt.contentType});M.success(`In Dokumente gespeichert: ${Fe.title}`)}}catch(re){M.error(re instanceof Error?re.message:"Export fehlgeschlagen.")}finally{P(!1)}}}return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"flex h-[min(90vh,52rem)] w-[min(100vw,64rem)] max-w-none flex-col gap-0 overflow-hidden p-0",children:[n.jsx(Tn,{className:"shrink-0 space-y-3 border-b px-5 py-4",children:n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[n.jsxs("div",{children:[n.jsx(Dn,{children:"Artikel-Report"}),n.jsxs("p",{className:"text-sm text-muted-foreground",children:[i?`${i} · `:"",H.length," von ",r.length," ",r.length===1?"Objekt":"Objekten"," ausgewählt"]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[[["csv","CSV",aN],["xls","XLS",_d],["png","PNG",iN]].map(([re,ve,_e])=>
84n.jsxs("button",{type:"button",className:ye("inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm",l===re?"border-foreground bg-muted font-medium":"border-border text-muted-foreground hover:bg-muted/50"),onClick:()=>d(re),children:[n.jsx(_e,{className:"size-3.5"}),ve]},re)),n.jsx(ee,{type:"button",className:"gap-1.5",disabled:!Be||T,onClick:()=>void Oe(),children:"Export"})]})]})}),rt||lt?n.jsxs("div",{className:"shrink-0 border-b border-amber-300/60 bg-amber-50 px-5 py-2.5 text-sm text-amber-950 dark:border-amber-700/50 dark:bg-amber-950/40 dark:text-amber-100",children:[rt?n.jsxs("p",{children:["Der Browser-Export ist auf ",Jl," Wurzelartikel begrenzt",(o??0)>Jl?` (${o} in der Auswahl).`:"."," ","Ein kompletter Katalog braucht später einen Server-Export mit Benachrichtigung."]}):null,lt?n.jsxs("p",{className:rt?"mt-1":void 0,children:["Der Baum ist auf ",xm," Knoten begrenzt. Tiefere Strukturen werden abgeschnitten."]}):null]}):null,n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden px-5 py-4",children:[n.jsxs("div",{className:"grid min-h-0 flex-1 gap-4 overflow-hidden md:grid-cols-[20rem_1fr]",children:[n.jsx("div",{className:"min-h-0 overflow-y-auto pr-1",children:n.jsxs("div",{className:"space-y-4 pb-10",children:[n.jsxs("div",{children:[n.jsx(ze,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Export-Preset"}),n.jsxs("div",{className:"mt-2 space-y-2",children:[n.jsxs("select",{className:"border-input h-8 w-full rounded-md border bg-input-background px-2 text-sm",value:ke,onChange:re=>{const ve=re.target.value;if(!ve){L(""),Y("");return}const _e=G.find(te=>te.id===ve);_e&&vt(_e)},children:[n.jsx("option",{value:"",children:"Neues Preset"}),G.map(re=>n.jsx("option",{value:re.id,children:re.name},re.id))]}),n.jsx(Ze,{value:xe,onChange:re=>Y(re.target.value),placeholder:"z. B. Shopware Update-Liste",className:"h-8 text-sm"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(ee,{type:"button",variant:"outline",size:"sm",disabled:Ne,onClick:()=>void yt(),children:"Speichern"}),n.jsx(ee,{type:"button",variant:"ghost",size:"sm",disabled:Ne||!ke,onClick:()=>void wt(),children:"Löschen"})]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Tenantweit für wiederkehrende Exporte (BOM, Shop-Import, Inventur)."})]})]}),l==="png"?n.jsxs("div",{children:[n.jsx("p",{className:"mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Vorlage"}),n.jsx("textarea",{ref:J,value:m,onChange:re=>p(re.target.value),spellCheck:!1,rows:6,className:"border-input flex min-h-24 w-full resize-none rounded-md border bg-input-background px-3 py-2 font-mono text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50"}),n.jsxs("div",{className:"mt-2 flex flex-wrap gap-1",children:[TI.map(re=>n.jsx("button",{type:"button",className:"rounded border border-border px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground",onClick:()=>an(re.token),children:re.token},re.token)),oa.map(re=>n.jsx("button",{type:"button",className:"rounded border border-border px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground",onClick:()=>an(`{${re.label}}`),children:`{${re.label}}`},re.id))]})]}):n.jsxs("div",{children:[n.jsx("p",{className:"mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Spalten"}),n.jsx("div",{className:"space-y-1",children:Se.map(re=>{const ve=h.indexOf(re.id),_e=ve>=0;return n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsxs("label",{className:"flex min-w-0 flex-1 items-center gap-2 text-sm",children:[n.jsx(fr,{checked:_e,onCheckedChange:te=>qt(re.id,te===!0)}),_e?n.jsx("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] text-muted-foreground",children:ve+1}):n.jsx("span",{className:"w-4 shrink-0"}),n.jsx("span",{className:"truncate",children:re.label})]}),_e?n.jsxs("div",{className:"flex shrink-0",children:[n.jsx("button",{type:"button",className:"rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-30",disabled:ve===0,onClick:()=>Qt(re.id,-1),"aria-label":`${re.label} nach oben`,children:n.jsx(oN,{className:"size-3.5"})}),n.jsx("button",{type:"button",className:"rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-30",disabled:ve===h.length-1,onClick:()=>Qt(re.id,1),"aria-label":`${re.label} nach unten`,children:n.jsx(Yo,{className:"size-3.5"})})]}):null]},re.id)})}),n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:Tt?"Ebene bleibt Pflichtspalte, weil Kinder enthalten sind.":"Ebene ist ausgeblendet â der Export bleibt auf Ebene 0."})]}),n.jsxs("div",{children:[n.jsx(ze,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Subkomponenten"}),n.jsxs("div",{className:"mt-2 flex flex-col gap-1.5",children:[[["none","Keine"],["first","Nur erste Ebene"],["all","Alle Ebenen"]].map(([re,ve])=>n.jsx("button",{type:"button",className:ye("rounded-md border px-3 py-1.5 text-left text-sm",b===re?"border-foreground bg-muted font-medium":"border-border text-muted-foreground hover:bg-muted/50"),onClick:()=>w(re),children:ve},re)),n.jsxs("label",{className:"flex items-center gap-2 pt-1 text-sm",children:[n.jsx(fr,{checked:v,onCheckedChange:re=>{const ve=re===!0;S(ve),ve&&b==="none"&&w("first")}}),"Nur Subkomponenten"]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Eltern entfallen, Kinder rücken auf Ebene 0 â Pick- und Beschaffungsliste."})]})]}),n.jsxs("div",{children:[n.jsx(ze,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Dateien"}),n.jsxs("div",{className:"mt-2 flex flex-col gap-1.5",children:[[["single","Alles in eine Datei"],["perObject","Eine Datei pro Objekt"]].map(([re,ve])=>n.jsx("button",{type:"button",className:ye("rounded-md border px-3 py-1.5 text-left text-sm",R===re?"border-foreground bg-muted font-medium":"border-border text-muted-foreground hover:bg-muted/50"),onClick:()=>E(re),children:ve},re)),R==="perObject"&&H.length>ym&&!A?n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Mehr als ",ym," Objekte werden als eine ZIP-Datei heruntergeladen."]}):null,n.jsxs("label",{className:"flex items-center gap-2 pt-1 text-sm",children:[n.jsx(fr,{checked:A,onCheckedChange:re=>I(re===!0)}),"Als ZIP herunterladen"]}),n.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[n.jsx(fr,{checked:C,onCheckedChange:re=>k(re===!0)}),"In Dokumente (S3) speichern"]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Storage legt eine Datei im Dokumente-Ordner ab (Metadaten + Objekt). Mehrere Dateien werden dort als ZIP gespeichert."})]})]})]})}),n.jsxs("div",{className:"flex min-h-0 flex-col",children:[n.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2",children:[n.jsxs("p",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:["Objekte",n.jsxs("span",{className:"ml-2 font-normal normal-case tracking-normal",children:[H.length," ausgewählt",U?` · ${ne.length} Treffer`:""]})]}),n.jsx("button",{type:"button",className:"text-xs text-muted-foreground hover:text-foreground",onClick:()=>Wt(!Ce),children:Ce?"Keine":"Alle"})]}),n.jsxs("div",{className:"relative mb-2",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:D,onChange:re=>B(re.target.value),placeholder:"Nummer, Name, Shop oder MPNâ¦",className:"h-8 pl-8 text-sm"})]}),n.jsx(qa,{className:"min-h-0 flex-1 rounded-md border border-border bg-muted/20 p-2",children:r.length===0?n.jsx("p",{className:"p-1 text-sm text-muted-foreground",children:"Keine Artikel in der Auswahl."}):ne.length===0?n.jsxs("p",{className:"p-1 text-sm text-muted-foreground",children:["Keine Treffer für â",D.trim(),"â."]}):n.jsx("ul",{className:"space-y-1 pb-4",children:ne.map(re=>n.jsx("li",{children:n.jsxs("label",{className:"flex items-start gap-2 rounded-md px-1 py-0.5 text-sm hover:bg-muted/60",children:[n.jsx(fr,{className:"mt-0.5",checked:j.has(re.id),onCheckedChange:ve=>en(re.id,ve===!0)}),n.jsxs("span",{className:"min-w-0",children:[n.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:re.articleNumber||"â"}),n.jsx("span",{className:"ml-2 text-foreground",children:re.name||"Ohne Name"})]})]})},re.id))})})]})]}),n.jsxs("div",{className:"flex h-64 shrink-0 flex-col",children:[n.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2",children:[n.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Vorschau"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[Th({asZip:A,fileCount:H.length||1,fileMode:R})?`1 ZIP · ${R==="perObject"?H.length:1} Dateien`:R==="perObject"?`${H.length} Dateien`:l==="png"?`${V.length} Zeilen`:`${Ie.length} Zeilen`,C?" · + Storage":""]})]}),n.jsx(qa,{className:"min-h-0 flex-1 rounded-md border border-border bg-muted/20",children:Z.length===0?n.jsx("p",{className:"p-3 text-sm text-muted-foreground",children:"Keine Artikel ausgewählt."}):X.length===0?n.jsx("p",{className:"p-3 text-sm text-muted-foreground",children:"Keine Subkomponenten in der Auswahl."}):l==="png"?n.jsx("div",{className:"p-3 pb-6",children:n.jsx(_b,{nodes:X,template:m})}):n.jsx("div",{className:"p-1 pb-6",children:n.jsx(uE,{rows:Ie,fields:h,includeLevel:Tt})})})]})]})]})})}const ss={fileImport:"Datei-Import",shopware:"Shopware",eagleImport:"Eagle Import",liaOne:"Lia.One"};async function pi(){return zk()}async function Lf(e){return Bk(e)}async function Ib(e){var r;const t=(r=e.clientSecret)==null?void 0:r.trim();return Fk({baseUrl:e.baseUrl.trim(),clientId:e.clientId.trim(),...t?{clientSecret:t}:{}})}async function Eb(e,t){return Wk(e,t)}async function pE(){return Kk()}async function hE(e){return $k(e)}function Pb(e){return e==="success"?"Erfolgreich":e==="partial"?"Teilweise erfolgreich":"Fehler"}function Tb(e){return e==="success"?"text-emerald-600 dark:text-emerald-400":e==="partial"?"text-amber-600 dar
84k:text-amber-400":"text-destructive"}function ho(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function wm(e){var l,d,m,p,h,x,b,w;const t=ho(((l=e.details)==null?void 0:l.productsChecked)??((d=e.details)==null?void 0:d.articlesChecked)),r=ho(((m=e.details)==null?void 0:m.created)??((p=e.details)==null?void 0:p.synced)),s=ho((h=e.details)==null?void 0:h.skipped),a=ho(((x=e.details)==null?void 0:x.errors)??((b=e.details)==null?void 0:b.errorCount)),i=typeof((w=e.details)==null?void 0:w.articleNumberPrefix)=="string"?e.details.articleNumberPrefix:"",o=[];return t!=null&&o.push(`${t} in Shopware geprüft`),r!=null&&o.push(`${r} angelegt`),s!=null&&s>0&&o.push(`${s} übersprungen`),a!=null&&a>0&&o.push(`${a} Hinweise/Fehler`),i&&o.push(`Prefix «${i}»`),o.length>0?o.join(" · "):null}function gE(e){var a,i,o;const t=(a=e.details)==null?void 0:a.errorSamples;if(Array.isArray(t)){const l=t.map(d=>String(d).trim()).filter(Boolean);if(l.length>0)return l}const r=e.errorMessage.trim();if(r)return r.split(";").map(l=>l.trim()).filter(Boolean);const s=ho(((i=e.details)==null?void 0:i.errors)??((o=e.details)==null?void 0:o.errorCount));return s!=null&&s>0?[`${s} Hinweise â Einzelheiten wurden nicht protokolliert (älterer Lauf).`]:e.status==="error"||e.status==="partial"?["Import unvollständig â Details siehe Protokoll oder erneut ausführen."]:[]}function xE(e){return e==="success"?rs:Ig}function yE(e){return e?new Intl.DateTimeFormat("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(e)):"â"}function bE({log:e}){const[t,r]=u.useState(!1),s=xE(e.status),a=wm(e),i=gE(e),o=Tb(e.status);return n.jsxs("li",{className:"px-2.5 py-1.5",children:[n.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden whitespace-nowrap text-[11px] leading-none",children:[n.jsx(s,{className:ye("size-3 shrink-0",o),"aria-hidden":!0}),n.jsx("span",{className:ye("shrink-0 font-semibold",o),children:Pb(e.status)}),a?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"shrink-0 text-muted-foreground",children:"·"}),n.jsx("span",{className:"min-w-0 truncate text-muted-foreground",children:a})]}):null,i.length>0?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"shrink-0 text-muted-foreground",children:"·"}),n.jsxs("button",{type:"button",className:"inline-flex shrink-0 items-center gap-0.5 text-[11px] font-normal leading-none text-destructive/90 hover:underline",onClick:()=>r(l=>!l),"aria-expanded":t,children:[n.jsx(Yo,{className:ye("size-2.5 transition-transform",t&&"rotate-180")}),t?"Ausblenden":i.length>1?`${i.length} Fehler`:"1 Fehler"]})]}):null,n.jsx("time",{className:"ml-auto shrink-0 pl-2 text-[11px] tabular-nums leading-none text-muted-foreground",children:yE(e.createdAt)})]}),t?n.jsx("div",{className:"mt-1 max-h-32 overflow-y-auto rounded border border-destructive/15 bg-destructive/5 px-2 py-1",children:n.jsx("div",{className:"space-y-0.5 text-[10px] leading-snug text-destructive/90 whitespace-pre-wrap",children:i.map(l=>n.jsx("p",{children:l},l))})}):null]})}function vE(){const[e,t]=u.useState([]),[r,s]=u.useState(!0);return u.useEffect(()=>{let a=!1;return Nx(15).then(i=>{a||t(i)}).catch(()=>{a||t([])}).finally(()=>{a||s(!1)}),()=>{a=!0}},[]),n.jsxs("div",{className:"mt-4 space-y-2",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(Lm,{className:"size-3.5 text-muted-foreground"}),n.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Import-Protokoll"})]}),r?n.jsxs("div",{className:"flex items-center gap-2 py-4 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-3.5 animate-spin"}),"Protokoll wird geladen â¦"]}):e.length===0?n.jsx("p",{className:"rounded-md border border-dashed px-3 py-4 text-center text-xs text-muted-foreground",children:"Noch kein Import protokolliert."}):n.jsx("ul",{className:"divide-y rounded-md border border-border",children:e.map(a=>n.jsx(bE,{log:a},a.id))})]})}const Sm={new:{label:"Neu",className:"bg-info/15 text-info",sortOrder:0},existing:{label:"Importiert",className:"bg-muted text-muted-foreground",sortOrder:1},duplicate_number:{label:"Nr. belegt",className:"bg-warning/15 text-warning",sortOrder:2},inactive:{label:"Inaktiv",className:"bg-muted text-muted-foreground",sortOrder:3}};function Ll(e){return e.importStatus==="new"}function NE(e,t,r){var i,o;if(r==="stock")return Number(e.stock)-Number(t.stock);if(r==="importStatus")return(((i=Sm[e.importStatus])==null?void 0:i.sortOrder)??99)-(((o=Sm[t.importStatus])==null?void 0:o.sortOrder)??99);const s=String(e[r]??"").trim().toLocaleLowerCase("de"),a=String(t[r]??"").trim().toLocaleLowerCase("de");return s.localeCompare(a,"de",{numeric:!0,sensitivity:"base"})}function io({label:e,sortKey:t,activeKey:r,dir:s,onSort:a,className:i,title:o,align:l="left"}){const d=r===t,m=d?s==="asc"?Lc:zc:Bc;return n.jsx(Ve,{className:i,title:o,children:n.jsxs("button",{type:"button",onClick:()=>
84a(t),className:ye("inline-flex items-center gap-1 font-medium hover:text-foreground",l==="right"&&"w-full justify-end",d?"text-foreground":"text-muted-foreground"),children:[e,n.jsx(m,{className:"size-3.5 shrink-0 opacity-70","aria-hidden":!0})]})})}function jE({open:e,onOpenChange:t,itemTypeDefinitionId:r,onImported:s}){const[a,i]=u.useState(!1),[o,l]=u.useState(!1),[d,m]=u.useState(""),[p,h]=u.useState(""),[x,b]=u.useState(1),[w,v]=u.useState([]),[S,R]=u.useState(0),{refreshArticlesAfterImport:E,settings:A}=Mn(),I=Math.max(1,Math.min(A.shopwareImportPreviewLimit??1e3,A.shopwareImportPreviewMax??1e3)),[C,k]=u.useState(new Set),[j,z]=u.useState("importStatus"),[D,B]=u.useState("asc"),T=w.length>0,P=J=>{if(j===J){B(Q=>Q==="asc"?"desc":"asc");return}z(J),B(J==="stock"?"desc":"asc")},G=u.useCallback(async J=>{i(!0);try{const Q=await hE({page:x,limit:I,search:d});if(J!=null&&J.aborted)return;v(Q.items),R(Q.total),k(U=>{const ne=new Set;for(const H of U)Q.items.some(Z=>Z.productId===H&&Ll(Z))&&ne.add(H);return ne})}catch(Q){if(J!=null&&J.aborted)return;M.error(Q instanceof Error?Q.message:"Vorschau konnte nicht geladen werden"),v([]),R(0)}finally{J!=null&&J.aborted||i(!1)}},[I,x,d]);u.useEffect(()=>{if(!e)return;const J=p.trim(),Q=window.setTimeout(()=>{m(J),b(1)},300);return()=>window.clearTimeout(Q)},[e,p]),u.useEffect(()=>{if(!e)return;const J=new AbortController;return G(J.signal),()=>J.abort()},[G,e]),u.useEffect(()=>{e||(m(""),h(""),b(1),k(new Set),v([]),R(0))},[e]);const W=u.useMemo(()=>{if(!j)return w;const J=[...w];return J.sort((Q,U)=>{const ne=NE(Q,U,j);return D==="asc"?ne:-ne}),J},[w,j,D]),ke=u.useMemo(()=>W.filter(Ll),[W]),L=ke.length>0&&ke.every(J=>C.has(J.productId)),xe=Math.max(1,Math.ceil(S/I)),Y=()=>{if(L){k(J=>{const Q=new Set(J);for(const U of ke)Q.delete(U.productId);return Q});return}k(J=>{const Q=new Set(J);for(const U of ke)Q.add(U.productId);return Q})},Ne=J=>{Ll(J)&&k(Q=>{const U=new Set(Q);return U.has(J.productId)?U.delete(J.productId):U.add(J.productId),U})},se=()=>{if(C.size===0){M.error("Bitte mindestens ein importierbares Produkt auswählen.");return}const J=[...C];l(!0),vo("Shopware-Import",async Q=>{Q({done:0,total:J.length,label:"Shopware-Import"});const U=await Eb(J,r);return Q({done:J.length,total:J.length}),U},{successMessage:Q=>Q.message,errorMessage:Q=>Q instanceof Error?Q.message:"Import fehlgeschlagen",onSuccess:async()=>{try{await E(),await(s==null?void 0:s()),k(new Set),await G()}finally{l(!1)}},onError:()=>l(!1)})};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"flex max-h-[min(92vh,900px)] w-[min(calc(100vw-1rem),80rem)] min-w-[min(calc(100vw-1rem),36rem)] max-w-[min(calc(100vw-1rem),80rem)] flex-col gap-0 p-0 sm:min-w-[42rem] sm:max-w-[min(calc(100vw-1rem),80rem)]",children:[n.jsxs(Tn,{className:"border-b border-border px-5 py-4",children:[n.jsx(Dn,{children:"Shopware-Import â Vorschau"}),n.jsx(Xo,{children:"Wählen Sie die Produkte aus, die in den Artikelstamm importiert werden sollen. Bereits importierte oder inaktive Produkte können nicht ausgewählt werden."})]}),n.jsx("div",{className:"flex items-center gap-2 border-b border-border px-5 py-3",children:n.jsxs("div",{className:"relative min-w-0 flex-1",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:p,onChange:J=>h(J.target.value),placeholder:"Name oder Produktnummer suchen â¦",className:"h-9 pl-8 pr-9","aria-label":"Produkte durchsuchen"}),a?n.jsx(Me,{className:"pointer-events-none absolute right-2.5 top-1/2 size-3.5 -translate-y-1/2 animate-spin text-muted-foreground","aria-hidden":!0}):null]})}),n.jsxs("div",{className:"relative min-h-0 flex-1 overflow-auto px-5 py-3",children:[a&&T?n.jsx("div",{className:"pointer-events-none absolute inset-x-5 top-3 z-10 flex justify-end","aria-live":"polite",children:n.jsx("span",{className:"rounded-md bg-background/90 px-2 py-1 text-[10px] text-muted-foreground shadow-sm ring-1 ring-border",children:"Suche wird aktualisiert â¦"})}):null,!T&&a?n.jsxs("div",{className:"flex flex-col items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),n.jsx("span",{children:"Produkte werden geladen â¦"}),n.jsxs("span",{className:"text-xs",children:["Seite ",x,", bis zu ",I," Einträge"]})]}):!T&&!a?n.jsx("p",{className:"py-16 text-center text-sm text-muted-foreground",children:"Keine Produkte gefunden."}):n.jsxs(Yn,{className:ye("w-full text-xs transition-opacity",a&&"opacity-60"),children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"hover:bg-transparent",children:[n.jsx(Ve,{className:"w-8 px-2",children:n.jsx(fr,{checked:L,onCheckedChange:Y,disabled:ke.length===0,"aria-label":"Alle importierbaren auf dieser Seite auswählen"})}),n.jsx(io,{label:"Produktnr.",sortKey:"productNumber",activeKey:j,dir:D,onSort:P,className:"w-[7rem] whitespace-nowrap"}),n.jsx(io,{label:"Bezeichnung",sortKey:"name",activeKey:j,dir:D,onSort:P}
84),n.jsx(io,{label:"SW-Kategorie",sortKey:"categoryName",activeKey:j,dir:D,onSort:P,className:"hidden w-[10rem] whitespace-nowrap md:table-cell",title:"Shopware-Produktkategorie (erste zugeordnete Category in Shopware). Hinweis für die Zuordnung beim Import â keine Artikelstamm-Kategorie."}),n.jsx(io,{label:"Best.",sortKey:"stock",activeKey:j,dir:D,onSort:P,className:"w-12 whitespace-nowrap",align:"right",title:"Shopware-Bestand"}),n.jsx(io,{label:"Status",sortKey:"importStatus",activeKey:j,dir:D,onSort:P,className:"w-[6.5rem] whitespace-nowrap"})]})}),n.jsx(Qn,{children:W.map(J=>{const Q=Sm[J.importStatus],U=Ll(J),ne=[J.categoryName?`SW: ${J.categoryName}`:null,J.existingArticleNumber?`Art. ${J.existingArticleNumber}`:null].filter(Boolean);return n.jsxs(jt,{children:[n.jsx(De,{className:"px-2",children:n.jsx(fr,{checked:C.has(J.productId),onCheckedChange:()=>Ne(J),disabled:!U,"aria-label":`${J.name} auswählen`})}),n.jsx(De,{className:"max-w-[7rem] truncate font-mono",title:J.productNumber||void 0,children:J.productNumber||"â"}),n.jsxs(De,{className:"min-w-0 max-w-0",children:[n.jsx("div",{className:"truncate font-medium",title:J.name,children:J.name}),ne.length>0?n.jsx("div",{className:"truncate text-[10px] text-muted-foreground md:hidden",title:ne.join(" · "),children:ne.join(" · ")}):null]}),n.jsx(De,{className:"hidden max-w-[10rem] truncate text-muted-foreground md:table-cell",title:J.categoryName?`Shopware-Kategorie: ${J.categoryName}`:"Keine Shopware-Kategorie zugeordnet",children:J.categoryName||"â"}),n.jsx(De,{className:"text-right tabular-nums",children:J.stock}),n.jsx(De,{children:n.jsx(bt,{className:ye("whitespace-nowrap px-1.5 py-0 text-[10px] font-normal",Q.className),children:Q.label})})]},J.productId)})})]})]}),n.jsxs(Xn,{className:"flex-col gap-3 border-t border-border px-5 py-4 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[n.jsx(ee,{type:"button",variant:"outline",size:"icon",className:"size-8",disabled:a||x<=1,onClick:()=>b(J=>Math.max(1,J-1)),children:n.jsx(lN,{className:"size-4"})}),n.jsxs("span",{children:["Seite ",x," / ",xe," (",S," Produkte)"]}),n.jsx(ee,{type:"button",variant:"outline",size:"icon",className:"size-8",disabled:a||x>=xe,onClick:()=>b(J=>Math.min(xe,J+1)),children:n.jsx(ua,{className:"size-4"})})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsxs("span",{className:"text-xs text-muted-foreground",children:[C.size," ausgewählt"]}),n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),children:"SchlieÃen"}),n.jsxs(ee,{type:"button",disabled:o||C.size===0,onClick:se,children:[o?n.jsx(Me,{className:"size-4 animate-spin","aria-hidden":!0}):null,"Ausgewählte importieren"]})]})]})]})})}function kE({open:e,onOpenChange:t,onConfirm:r}){const[s,a]=u.useState(!1),[i,o]=u.useState(!1),[l,d]=u.useState(null),[m,p]=u.useState([]),[h,x]=u.useState(""),b=u.useCallback(async()=>{var S,R,E;a(!0);try{const[A,I,C]=await Promise.all([pi(),pE(),Ri()]);p(C),d(I);const k=((S=A.importItemTypeDefinitionId)==null?void 0:S.trim())||"",j=((R=I.itemTypeDefinitionId)==null?void 0:R.trim())||"",z=((E=C[0])==null?void 0:E.id)??"";x(k||j||z)}catch(A){M.error(A instanceof Error?A.message:"Vorschau konnte nicht geladen werden"),d(null)}finally{a(!1)}},[]);u.useEffect(()=>{e&&b()},[b,e]),u.useEffect(()=>{e||d(null)},[e]);const w=u.useMemo(()=>m.find(S=>S.id===h)??null,[m,h]),v=async()=>{if(l){if(!h){M.error("Bitte eine Artikelart für den Import wählen.");return}if(l.importable===0){M.error("Keine neuen Artikel zum Import vorhanden.");return}o(!0);try{const S=await pi();S.importItemTypeDefinitionId!==h&&await Lf({baseUrl:S.baseUrl,clientId:S.clientId,storeApiUrl:S.storeApiUrl,isActive:S.isActive,articleNumberPrefix:S.articleNumberPrefix??"",importActiveProductsOnly:S.importActiveProductsOnly!==!1,importItemTypeDefinitionId:h}),r({...l,itemTypeDefinitionId:h,itemTypeDefinitionName:(w==null?void 0:w.name)??l.itemTypeDefinitionName}),t(!1)}catch(S){M.error(S instanceof Error?S.message:"Einstellungen konnten nicht gespeichert werden")}finally{o(!1)}}};return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:"max-w-lg",children:[n.jsxs(Tn,{children:[n.jsx(Dn,{children:"Vollimport aus Shopware"}
84),n.jsx(Xo,{children:"Es werden nur fehlende Artikel angelegt. Bereits importierte Produkte werden übersprungen."})]}),s?n.jsxs("div",{className:"flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Shopware-Bestand wird analysiert â¦"]}):l?n.jsxs("div",{className:"space-y-4",children:[n.jsxs("dl",{className:"grid grid-cols-2 gap-x-4 gap-y-2 rounded-lg border border-border bg-muted/20 px-4 py-3 text-sm",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Produkte in Shopware"}),n.jsx("dd",{className:"font-medium tabular-nums",children:l.totalInShopware}),n.jsx("dt",{className:"text-muted-foreground",children:"Neu anzulegen"}),n.jsx("dd",{className:"font-semibold tabular-nums text-primary",children:l.importable}),n.jsx("dt",{className:"text-muted-foreground",children:"Bereits importiert"}),n.jsx("dd",{className:"tabular-nums",children:l.existing}),l.inactive>0?n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"text-muted-foreground",children:"Inaktiv (übersprungen)"}),n.jsx("dd",{className:"tabular-nums",children:l.inactive})]}):null,l.duplicateNumber>0?n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"text-muted-foreground",children:"Nummer belegt"}),n.jsx("dd",{className:"tabular-nums",children:l.duplicateNumber})]}):null]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:l.importActiveProductsOnly?"Es werden nur aktive Shopware-Produkte berücksichtigt.":"Es werden alle Shopware-Produkte berücksichtigt (auch inaktive)."}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"shopware-import-item-type",children:"Artikelart für neue Artikel"}),n.jsxs(_t,{value:h,onValueChange:x,children:[n.jsx(It,{id:"shopware-import-item-type",children:n.jsx(Et,{placeholder:"Artikelart wählen â¦"})}),n.jsx(Pt,{children:m.map(S=>n.jsx(ft,{value:S.id,children:S.name},S.id))})]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Bestimmt Nummernkreis und Verhalten der importierten Artikel."})]})]}):n.jsx("p",{className:"py-6 text-center text-sm text-muted-foreground",children:"Zählung nicht verfügbar â bitte erneut versuchen."}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Abbrechen"}),n.jsxs(ee,{type:"button",disabled:s||i||!l||l.importable===0,onClick:()=>void v(),children:[i?n.jsx(Me,{className:"size-4 animate-spin"}):null,l?`${l.importable} Artikel importieren`:"Importieren"]})]})]})})}function wE(e){if(!e)return"â";const t=new Date(e),r=new Date,s=t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate(),a=new Intl.DateTimeFormat("de-DE",{timeStyle:"short"}).format(t);return s?`heute, ${a} Uhr`:new Intl.DateTimeFormat("de-DE",{dateStyle:"medium",timeStyle:"short"}).format(t)}function SE(e){return((e==null?void 0:e.trim())??"")||"(keiner)"}function Db(){const{session:e}=os(),{refresh:t,refreshArticlesAfterImport:r}=Mn(),s=(e==null?void 0:e.role)==="admin",[a,i]=u.useState(null),[o,l]=u.useState(!0),[d,m]=u.useState(!1),[p,h]=u.useState(!1),[x,b]=u.useState(!1),[w,v]=u.useState(""),[S,R]=u.useState(!0),[E,A]=u.useState(!1),[I,C]=u.useState(!1),[k,j]=u.useState(!1),[z,D]=u.useState([]),[B,T]=u.useState(""),[P,G]=u.useState(!1),W=async()=>{var ne,H;const[se,J,Q]=await Promise.all([Nx(1),pi(),Ri()]);i(se[0]??null),b(!!(J.baseUrl&&J.clientId&&J.hasClientSecret)),v(J.articleNumberPrefix??""),R(J.importActiveProductsOnly!==!1),D(Q);const U=((ne=J.importItemTypeDefinitionId)==null?void 0:ne.trim())||"";T(U||((H=Q[0])==null?void 0:H.id)||"")};u.useEffect(()=>{let se=!1;return W().catch(()=>{se||i(null)}).finally(()=>{se||l(!1)}),()=>{se=!0}},[]);const ke=async()=>{m(!0);try{const se=await pi(),J=await Ib({baseUrl:se.baseUrl,clientId:se.clientId});J.success?M.success(J.message):M.error(J.message)}catch{M.error("Verbindungstest fehlgeschlagen")}finally{m(!1)}},L=async se=>{const J=await pi();return Lf({baseUrl:J.baseUrl,clientId:J.clientId,storeApiUrl:J.storeApiUrl,isActive:J.isActive,articleNumberPrefix:J.articleNumberPrefix??"",importActiveProductsOnly:se.importActiveProductsOnly??J.importActiveProductsOnly!==!1,importItemTypeDefinitionId:se.importItemTypeDefinitionId??J.importItemTypeDefinitionId??""})},xe=async se=>{if(s){R(se),A(!0);try{await L({importActiveProductsOnly:se}),M.success(se?"Import: nur aktive Artikel":"Import: alle Artikel")}catch{R(!se),M.error("Import-Option konnte nicht gespeichert werden")}finally{A(!1)}}},Y=async se=>{if(!s)return;const J=B;T(se),G(!0);try{await L({importItemTypeDefinitionId:se}),M.success("Import-Artikelart gespeichert")}catch{T(J),M.error("Artikelart konnte nicht gespeichert werden")}finally{G(!1)}},Ne=se=>{h(!0),vo("Shopware-Vollimport",async J=>(J({done:0,total:0,label:`Shopware-Vollimport (${se.importable} Artikel) â¦`}),await Eb(void 0,se.itemTypeDefinitionId)),{successMessage:J=>J.message,errorMessage:J=>J instanceof Error?J.message:"Import fehlgeschlagen",onSuccess:async()=>{try{await W(),await r()}finally{h(!1)}},onError:()=>h(!1)})};return n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"rounded-xl border border-border bg-card px-5 py-4",children:[n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx("h3",{className:"text-sm font-semibold",children:"Shopware 6 â Artikelstamm"}),n.jsx("p",{className:"max-w-2xl text-xs text-muted-foreground",children:"Einweg-Import aus Shopware (nur lesen â es werden keine Daten nach Shopware geschrieben). Im Vorschau-Modus wählen Sie einzelne Produkte aus; der Vollimport legt alle fehlenden Handelsartikel im Artikelstamm an. Bereits vorhandene Artikel werden übersprungen."})]}),n.jsx(lr,{to:"/einstellungen/system",children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",children:[n.jsx(Po,{className:"size-3.5"}),"Systemeinstellungen"]})})]}),n.jsxs("div",{className:"mt-4 space-y-3 border-t border-border pt-4",children:[n.jsxs("div",{className:"flex flex-wrap items-start gap-3",children:[n.jsx(Lm,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),o?n.jsx("span",{className:"text-sm text-muted-foreground",children:"Status wird geladen â¦"}):a?n.jsxs("div",{className:"min-w-0 flex-1 space-y-1",children:[n.jsxs("p",{className:"text-sm",children:[n.jsx("span",{className:"text-muted-foreground",children:"Letzter Import: "}),n.jsx("span",{className:"font-medium",children:wE(a.createdAt)}),n.jsx("span",{className:"text-muted-foreground",children:" â "}),n.jsx("span",{className:ye("font-medium",Tb(a.status)),children:Pb(a.status)})]}),wm(a)&&n.jsx("p",{className:"text-xs text-muted-foreground",children:wm(a)}),(a.status==="error"||a.status==="partial")&&n.jsx("p",{className:"text-xs text-muted-foreground",children:"Details im Import-Protokoll unten."})]}):n.jsx("p",{className:"text-sm text-muted-foreground",children:"Noch kein Import protokolliert."}),s&&n.jsxs("div",{className:"ml-auto flex flex-wrap items-center gap-2",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",disabled:!x,onClick:()=>C(!0),children:[n.jsx(cN,{className:"size-3.5"}),"Vorschau & Auswahl"]}),n.jsxs(ee,{type:"button",variant:"default",size:"sm",className:"gap-1.5",disabled:p||!x,onClick:()=>j(!0),children:[p?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(xi,{className:"size-3.5"}),"Vollimport starten"]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",disabled:d||!x,onClick:()=>void ke(),children:[d?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(Eg,{className:"size-3.5"}),"Verbindung testen"]})]})]}),!o&&x&&s&&n.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[n.jsxs("div",{className:"space-y-2 rounded-lg border border-border bg-muted/20 px-3 py-2.5",children:[n.jsxs("div",{children:[n.jsx(ze,{htmlFor:"shopware-import-item-type-panel",className:"text-sm",children:"Artikelart für Import"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Neue Artikel aus Shopware werden dieser Artikelart zugeordnet."})]}),n.jsxs(_t,{value:B,onValueChange:se=>void Y(se),disabled:P||p||z.length===0,children:[n.jsx(It,{id:"shopware-import-item-type-panel",className:"w-full",children:n.jsx(Et,{placeholder:"Artikelart wählen â¦"})}),n.jsx(Pt,{children:z.map(se=>n.jsx(ft,{value:se.id,children:se.name},se.id))})]})]}),n.jsxs("div",{className:"flex items-center justify-between gap-4 roun
84ded-lg border border-border bg-muted/20 px-3 py-2.5",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{htmlFor:"shopware-import-active-only",className:"text-sm",children:"Nur aktive Artikel"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Beim Vollimport nur Shopware-Produkte mit Status âaktivâ importieren."})]}),n.jsx(Ir,{id:"shopware-import-active-only",checked:S,onCheckedChange:se=>void xe(se),disabled:E||p,className:"shrink-0"})]})]}),!o&&x&&n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Aktiver Artikelnummer-Prefix: ",SE(w)," â änderbar unter Systemeinstellungen."]})]}),!o&&!x&&n.jsxs("div",{className:"mt-3 flex items-start gap-2 rounded-lg border border-dashed border-amber-500/40 bg-amber-500/5 px-3 py-2 text-xs text-amber-900 dark:text-amber-200",children:[n.jsx(Ig,{className:"mt-0.5 size-3.5 shrink-0"}),"Shopware ist noch nicht konfiguriert. Bitte URL, Client-ID und Secret in den Systemeinstellungen hinterlegen."]})]}),n.jsx(vE,{}),n.jsx(jE,{open:I,onOpenChange:C,itemTypeDefinitionId:B,onImported:async()=>{await W(),await r()}}),n.jsx(kE,{open:k,onOpenChange:j,onConfirm:Ne})]})}function AE(){const{session:e}=os(),{refreshArticlesAfterImport:t,settings:r}=Mn(),s=(e==null?void 0:e.role)==="admin",a=Math.max(1,Math.min(r.liaOneImportPreviewLimit??50,r.liaOneImportPreviewMax??200)),[i,o]=u.useState(!0),[l,d]=u.useState(!1),[m,p]=u.useState(!1),[h,x]=u.useState(""),[b,w]=u.useState([]),[v,S]=u.useState(0),[R,E]=u.useState(1),[A,I]=u.useState(new Set),[C,k]=u.useState(!1),[j,z]=u.useState(!0),D=async(G=R)=>{const[W,ke]=await Promise.all([Vk(),qk({page:G,limit:a}).catch(()=>null)]);d(W.configured),p(W.isActive),x(W.baseUrl??""),ke?(w(ke.items??[]),S(ke.total??0),E(ke.page??G)):(w([]),S(0)),I(new Set)};u.useEffect(()=>{let G=!1;return D(1).catch(()=>{G||M.error("Lia.One-Vorschau konnte nicht geladen werden")}).finally(()=>{G||o(!1)}),()=>{G=!0}},[]);const B=G=>{I(W=>{const ke=new Set(W);return ke.has(G)?ke.delete(G):ke.add(G),ke})},T=b.filter(G=>G.importStatus==="new").map(G=>G.id),P=async G=>{if(!s){M.error("Nur Administratoren können importieren");return}k(!0);try{const W=await Uk({articleIds:G??void 0,syncStock:j});W.status==="error"?M.error(W.errorMessage||W.message||"Import fehlgeschlagen"):(M.success(W.message||"Import abgeschlossen"),await(t==null?void 0:t()),await D(R))}catch{M.error("Import fehlgeschlagen")}finally{k(!1)}};return i?n.jsxs("div",{className:"flex items-center gap-2 py-10 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Remote-Artikel werden geladen â¦"]}):!l||!m?n.jsxs("div",{className:"flex flex-col items-center gap-3 py-10 text-center",children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:"Remote Lia.One ist nicht konfiguriert oder nicht aktiv."}),n.jsxs("p",{className:"max-w-sm text-xs text-muted-foreground",children:["Unter ",n.jsx("strong",{children:"Lia.One Partner"})," (Launchpad/Admin) die Outbound-Verbindung speichern: Base-URL + Client Credentials der Gegenseite."]})]}):n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground",children:[n.jsxs("span",{className:"truncate",children:["Quelle: ",h||"â"]}
84),n.jsxs("label",{className:"flex items-center gap-2",children:[n.jsx(fr,{checked:j,onCheckedChange:G=>z(G===!0)}),"Bestand mitübernehmen"]})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border",children:n.jsxs("table",{className:"w-full text-left text-sm",children:[n.jsx("thead",{className:"sticky top-0 bg-muted/80 text-xs text-muted-foreground",children:n.jsxs("tr",{children:[n.jsx("th",{className:"w-10 px-2 py-2"}),n.jsx("th",{className:"px-2 py-2 font-medium",children:"Nummer"}),n.jsx("th",{className:"px-2 py-2 font-medium",children:"Name"}),n.jsx("th",{className:"px-2 py-2 font-medium",children:"Status"})]})}),n.jsx("tbody",{children:b.length===0?n.jsx("tr",{children:n.jsx("td",{colSpan:4,className:"px-3 py-8 text-center text-muted-foreground",children:"Keine Artikel auf der Gegenseite gefunden."})}):b.map(G=>{const W=G.importStatus==="new";return n.jsxs("tr",{className:"border-t border-border/60",children:[n.jsx("td",{className:"px-2 py-1.5",children:n.jsx(fr,{checked:A.has(G.id),disabled:!W,onCheckedChange:()=>B(G.id)})}),n.jsx("td",{className:"px-2 py-1.5 font-mono text-xs",children:G.articleNumber||"â"}),n.jsx("td",{className:"px-2 py-1.5",children:G.name}),n.jsx("td",{className:"px-2 py-1.5",children:n.jsx("span",{className:ye("text-xs",W?"text-emerald-700 dark:text-emerald-400":"text-muted-foreground"),children:W?"neu":`vorhanden${G.existingArticleNumber?` (${G.existingArticleNumber})`:""}`})})]},G.id)})})]})}),n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[n.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[n.jsxs("span",{children:[v," Artikel · Seite ",R]}),n.jsxs(ee,{type:"button",size:"sm",variant:"ghost",className:"gap-1",onClick:()=>void D(R).catch(()=>M.error("Aktualisieren fehlgeschlagen")),children:[n.jsx(el,{className:"size-3.5"}),"Aktualisieren"]})]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",size:"sm",variant:"outline",disabled:!s||C||A.size===0,onClick:()=>void P([...A]),children:[C?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(xi,{className:"size-4"}),"Auswahl (",A.size,")"]}),n.jsxs(ee,{type:"button",size:"sm",disabled:!s||C||T.length===0,onClick:()=>void P(null),children:[C?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(xi,{className:"size-4"}),"Alle neuen importieren"]})]})]})]})}const Uh={comma:Os("comma"),semicolon:Os("semicolon"),tab:Os("tab")};function Rb({accept:e,hint:t,formats:r,onFile:s}){const{t:a}=gs(),i=u.useRef(null),[o,l]=u.useState(null),[d,m]=u.useState(!1),p=h=>{l((h==null?void 0:h.name)??null),s(h)};return n.jsxs("div",{children:[n.jsxs("button",{type:"button",onClick:()=>{var h;return(h=i.current)==null?void 0:h.click()},onDragOver:h=>{h.preventDefault(),m(!0)},onDragLeave:()=>m(!1),onDrop:h=>{var x;h.preventDefault(),m(!1),p(((x=h.dataTransfer.files)==null?void 0:x[0])??null)},className:ye("flex w-full flex-col items-center justify-center gap-2 rounded-lg border border-dashed px-4 py-8 text-center transition-colors",d?"border-foreground
84/40 bg-accent":"border-border hover:bg-accent/50"),children:[n.jsx(xo,{className:"size-6 text-muted-foreground"}),n.jsx("span",{className:"text-sm font-medium",children:t}),n.jsx("span",{className:"text-xs text-muted-foreground",children:r})]}),n.jsx("input",{ref:i,type:"file",accept:e,className:"sr-only",onChange:h=>{var x;return p(((x=h.target.files)==null?void 0:x[0])??null)}}),n.jsxs("p",{className:"mt-2 truncate text-xs text-muted-foreground",children:[a("import.selectedFile"),":"," ",n.jsx("span",{className:"font-medium text-foreground",children:o??a("import.noFile")})]})]})}function Mb({stagingRows:e,running:t,onBack:r,onPreview:s,onCommit:a,onCancel:i,previewDisabled:o}){return n.jsxs("div",{className:"flex flex-row flex-wrap items-center justify-end gap-2",children:[n.jsx(ee,{type:"button",variant:"outline",onClick:i,disabled:t,children:"Abbrechen"}),e?n.jsxs(n.Fragment,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:r,disabled:t,children:"Zurück"}),n.jsxs(ee,{type:"button",onClick:a,disabled:t,className:"gap-2",children:[t?n.jsx(Me,{className:"size-4 animate-spin"}):null,"Import bestätigen"]})]}):n.jsxs(ee,{onClick:s,disabled:o||t,className:"gap-2",children:[t?n.jsx(Me,{className:"size-4 animate-spin"}):null,"Daten prüfen"]})]})}function Ob({definitions:e,categories:t,definitionId:r,categoryId:s,onDefinitionChange:a,onCategoryChange:i}){const o=u.useMemo(()=>Ha(t,r),[t,r]);return n.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"import-definition",children:"Standard-Artikelart"}),n.jsxs(_t,{value:r||void 0,onValueChange:a,children:[n.jsx(It,{id:"import-definition",children:n.jsx(Et,{placeholder:"Artikelart wählen"})}),n.jsx(Pt,{children:e.map(l=>n.jsx(ft,{value:l.id,children:l.name},l.id))})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"import-category",children:"Standard-Warengruppe (optional)"}),n.jsxs(_t,{value:s||"__none__",onValueChange:l=>i(l==="__none__"?"":l),children:[n.jsx(It,{id:"import-category",children:n.jsx(Et,{placeholder:"Keine Vorgabe"})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"Keine Vorgabe"}),o.map(l=>n.jsx(ft,{value:l.id,children:l.name},l.id))]})]})]})]})}function Lb({done:e,total:t}){const r=t>0?Math.round(e/t*100):0;return n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[n.jsxs("span",{children:["Importiere⦠",e," / ",t]}),n.jsxs("span",{children:[r,"%"]})]}),n.jsx("div",{className:"h-2 overflow-hidden rounded-full bg-muted",children:n.jsx("div",{className:"h-full rounded-full bg-primary transition-all duration-200",style:{width:`${r}%`}})})]})}async function zb(e,t,r){for(let a=0;a<e.length;a+=20){const i=e.slice(a,a+20);try{const o=await Sw(i.map(l=>({rowId:l.id,name:l.name,value:l.value??"",package:l.package??""})));r!=null&&r.aborted||t(o)}catch{}}}function Bb(){const{articles:e}=Mn(),[t,r]=u.useState([]),[s,a]=u.useState([]),[i,o]=u.useState(""),[l,d]=u.useState("");return u.useEffect(()=>{let p=!1;return Ri().then(async h=>{if(p)return;r(h),o(b=>{var w;return b||((w=h[0])==null?void 0:w.id)||""});const x=await iu(h);p||a(x)}).catch(()=>{p||(r([]),a([]))}),()=>{p=!0}},[]),{definitions:t,categories:s,defaultDefinitionId:i,defaultCategoryId:l,setDefaultDefinitionId:o,setDefaultCategoryId:d,buildContext:()=>({definitions:t,categories:s,existingArticleNumbers:e.map(p=>p.articleNumber),defaultDefinitionId:i,defaultCategoryId:l||null})}}function Fb({onDone:e,onCancel:t}){const{t:r}=gs(),{articles:s,addArticle:a,updateArticle:i,refresh:o,suppliers:l,settings:d}=Mn(),m=Bb(),[p,h]=u.useState(null),[x,b]=u.useState("semicolon"),[w,v]=u.useState(!0),[S,R]=u.useState(!0),[E,A]=u.useState([]),[I,C]=u.useState([]),[k,j]=u.useState({}),[z,D]=u.useState({}),[B,T]=u.useState(!1),[P,G]=u.useState(null),[W,ke]=u.useState(!1),[L,xe]=u.useState(!1),[Y,Ne]=u.useState(null),[se,J]=u.useState(new Map),[Q,U]=u.useState(!1),[ne,H]=u.useState(!1);u.useEffect(()=>{if(!p){A([]),C([]),j({}),T(!1);return}let $=!1;return xe(!0),(async()=>{try{const X=await Um(p,{delimiter:w?void 0:x,hasHeader:S,autoDetectDelimiter:w});if($)return;w&&X.detectedDelimiter&&b(X.detectedDelimiter),A(X.columns),C(X.rows),B||j(Hc(X.columns,ws))}catch{$||M.error("CSV konnte nicht gelesen werden.")}finally{$||xe(!1)}})(),()=>{$=!0}},[p,x,S,w,B]);const Z=async()=>
84{if(!p){M.error("Bitte zuerst eine Datei auswählen.");return}if(!I.length){M.error("Keine gültigen Zeilen gefunden.");return}ke(!0);try{await Promise.resolve();const $=my(I,k,void 0,z);if(!$.length){M.error("Keine gültigen Zeilen gefunden.");return}const X=await dy($,s,{matchingKeyTemplate:eu(d)});G(X),M.message("Import-Vorschau bereit.");const Ie=X.filter(V=>V.matchStatus==="new");Ie.length&&(U(!0),zb(Ie,V=>{J(Se=>{const Ce=new Map(Se);return V.forEach(Be=>Ce.set(Be.rowId,Be)),Ce}),G(Se=>(Se??[]).map(Ce=>{if(Ce.matchStatus!=="new")return Ce;const Be=V.find(Le=>Le.rowId===Ce.id);return Be!=null&&Be.typeConfigName?{...Ce,categoryName:Be.typeConfigName,typeConfigId:Be.typeConfigId??void 0,typeConfigName:Be.typeConfigName,classificationSource:Be.source,classificationConfidence:Be.confidence}:Ce}))}).finally(()=>U(!1)))}catch{M.error("CSV konnte nicht gelesen werden.")}finally{ke(!1)}},K=async()=>{if(!(P!=null&&P.length))return;if(P.some(X=>X.matchStatus==="conflict"&&!X.selectedArticleId)){M.error("Bitte alle Konflikte auflösen.");return}if(!m.defaultDefinitionId){M.error("Bitte eine Standard-Artikelart wählen.");return}ke(!0),Ne({done:0,total:0});try{const X=await cb(P,m.buildContext(),{createArticle:rl,updateArticle:async(V,Se)=>{await i(V,Se)},onProgress:(V,Se)=>Ne({done:V,total:Se}),bookQuantity:ne});await o(),X.createdArticleIds.length&&af(X.createdArticleIds);const Ie=X.quantityBooked?` · ${X.quantityBooked} Mengen eingebucht`:"";M.success(`Import bestätigt: ${X.created} neu, ${X.variantsCreated} Varianten, ${X.updated} aktualisiert${X.skipped?`, ${X.skipped} übersprungen`:""}${X.createdArticleIds.length?" · KI-Anreicherung läuft im Hintergrund":""}${Ie}.`),e()}catch{M.error("Import konnte nicht gespeichert werden.")}finally{ke(!1),Ne(null)}},me=($,X)=>{G(Ie=>Ac(Ie??[],$,X,s,"designators"))};return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden",children:[n.jsx("div",{className:"shrink-0 space-y-4",children:n.jsx(Ob,{definitions:m.definitions,categories:m.categories,definitionId:m.defaultDefinitionId,categoryId:m.defaultCategoryId,onDefinitionChange:$=>{m.setDefaultDefinitionId($),m.setDefaultCategoryId("")},onCategoryChange:m.setDefaultCategoryId})}),P?n.jsxs("div",{className:"min-h-0 flex-1 space-y-3 overflow-auto",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(If,{rows:P}),Q&&n.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-muted-foreground",children:[n.jsx(Me,{className:"size-3 animate-spin"}),"Warengruppen werden klassifiziertâ¦"]})]}),n.jsx(fu,{rows:P,articles:s,onSelectArticle:me})]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"shrink-0 space-y-3",children:[p?n.jsxs("div",{className:"flex flex-wrap items-center gap-3 rounded-lg border border-border bg-muted/20 px-3 py-2",children:[n.jsx(Jo,{className:"size-4 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:p.name}),n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-7 shrink-0 text-xs",onClick:()=>{h(null),A([]),C([]),j({}),T(!1)},children:"Andere Datei"})]}):n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:r("import.csv.desc")}),n.jsx(Rb,{accept:".csv,.xlsx,.xls,.txt,.tsv",hint:r("import.dropHint"),formats:r("import.csv.formats"),onFile:$=>{h($),G(null),v(!0),T(!1)}})]}),p?n.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-[1fr_1fr_auto]",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"v2-csv-delimiter",children:r("import.csv.delimiter")}),n.jsxs(_t,{value:x,onValueChange:$=>{v(!1),b($)},disabled:L,children:[n.jsx(It,{id:"v2-csv-delimiter",children:n.jsx(Et,{})}),n.jsx(Pt,{children:Object.entries(Uh).map(([$,X])=>n.jsx(ft,{value:$,children:X},$))})]}),w?n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["Automatisch erkannt: ",Uh[x]]}):null]}),n.jsx("div",{className:"flex items-end pb-1",children:n.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[n.jsx("input",{type:"checkbox",checked:S,onChange:$=>R($.target.checked),disabled:L,className:"size-4 rounded border-input"}),r("import.csv.header")]})})]}):null]}),E.length>0?n.jsx(Ef,{fileColumns:E,rows:I,columnToField:uc(k),onColumnToFieldChange:$=>{T(!0),j(Oo($))},globalDefaults:z,onGlobalDefaultsChange:D,disabled:L||W,fields:ws,definitions:m.definitions,categories:m.categories,suppliers:l,fillAvailable:!0,maxRows:25,requireCriticalValidation:!1}):null]}),n.jsxs("div",{className:"shrink-0 border-t border-border pt-3 space-y-2",children:[Y&&W?n.jsx(Lb,{done:Y.done,total:Y.total}):null,P&&P.some($=>$.quantity>0)?n.jsxs("label",{className:"flex items-center gap-2 text-xs text-muted-foreground cursor-pointer select-none",children:[n.jsx("input",{type:"checkbox",checked:ne,onChange:$=>H($.target.checked),disabled:W,className:"size-3.5 rounded border-input"}),"Mengen ins Standardlager einbuchen"]}):null,n.jsx(Mb,{stagingRows:P,running:W,onBack:()=>{G(null),J(new Map)},onPreview:()=>void Z(),onCommit:()=>void K(),onCancel:t,previewDisabled:!p||!I.length||L})]})]})}function CE({onDone:e,onCancel:t}){const{t:r}=gs(),{articles:s,addArticle:a,updateArticle:i,refresh:o,settings:l}=Mn(),d=Bb(),[m,p]=u.useState(null),[h,x]=u.useState(null),[b,w]=u.useState(!1),[v,S]=u.useState(null),[R,E]=u.useState(new Map),[A,I]=u.useState(!1),[C,k]=u.useState(!1),j=async()=>
84{if(!m){M.error("Bitte zuerst eine Eagle-Datei auswählen.");return}w(!0);try{const B=await ol(m);if(!B){M.error("Keine gültige Eagle .brd Datei (XML ab Version 6).");return}const T=Oi(B),P=yf(T,"eagle");if(!P.length){M.error("Keine Stücklistenpositionen in der Datei gefunden.");return}const G=await dy(P,s,{matchingKeyTemplate:Li(l)});x(G),M.message("Import-Vorschau bereit.");const W=G.filter(ke=>ke.matchStatus==="new");W.length&&(I(!0),zb(W,ke=>{E(L=>{const xe=new Map(L);return ke.forEach(Y=>xe.set(Y.rowId,Y)),xe}),x(L=>(L??[]).map(xe=>{if(xe.matchStatus!=="new")return xe;const Y=ke.find(Ne=>Ne.rowId===xe.id);return Y!=null&&Y.typeConfigName?{...xe,categoryName:Y.typeConfigName,typeConfigId:Y.typeConfigId??void 0,typeConfigName:Y.typeConfigName,classificationSource:Y.source,classificationConfidence:Y.confidence}:xe}))}).finally(()=>I(!1)))}catch{M.error("Eagle-Datei konnte nicht gelesen werden.")}finally{w(!1)}},z=async()=>{if(!(h!=null&&h.length))return;if(h.some(T=>T.matchStatus==="conflict"&&!T.selectedArticleId)){M.error("Bitte alle Konflikte auflösen.");return}if(!d.defaultDefinitionId){M.error("Bitte eine Standard-Artikelart wählen.");return}w(!0),S({done:0,total:0});try{const T=await cb(h,d.buildContext(),{createArticle:rl,updateArticle:async(G,W)=>{await i(G,W)},onProgress:(G,W)=>S({done:G,total:W}),bookQuantity:C});await o(),T.createdArticleIds.length&&af(T.createdArticleIds);const P=T.quantityBooked?` · ${T.quantityBooked} Mengen eingebucht`:"";M.success(`Import bestätigt: ${T.created} neu, ${T.variantsCreated} Varianten, ${T.updated} aktualisiert${T.skipped?`, ${T.skipped} übersprungen`:""}${T.createdArticleIds.length?" · KI-Anreicherung läuft im Hintergrund":""}${P}.`),e()}catch{M.error("Import konnte nicht gespeichert werden.")}finally{w(!1),S(null)}},D=(B,T)=>{x(P=>Ac(P??[],B,T,s,"designators"))};return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden",children:[n.jsx("div",{className:"shrink-0",children:n.jsx(Ob,{definitions:d.definitions,categories:d.categories,definitionId:d.defaultDefinitionId,categoryId:d.defaultCategoryId,onDefinitionChange:B=>{d.setDefaultDefinitionId(B),d.setDefaultCategoryId("")},onCategoryChange:d.setDefaultCategoryId})}),h?n.jsxs("div",{className:"min-h-0 flex-1 space-y-3 overflow-auto",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(If,{rows:h}),A&&n.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-muted-foreground",children:[n.jsx(Me,{className:"size-3 animate-spin"}),"Warengruppen werden klassifiziertâ¦"]})]}),n.jsx(fu,{rows:h,articles:s,onSelectArticle:D})]}):m?n.jsxs("div",{className:"flex shrink-0 items-center gap-3 rounded-lg border border-border bg-muted/20 px-3 py-2",children:[n.jsx(Vc,{className:"size-4 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:m.name}),n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-7 shrink-0 text-xs",onClick:()=>p(null),children:"Andere Datei"})]}):n.jsxs("div",{className:"shrink-0 space-y-3",children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:r("import.brd.desc")}),n.jsx(Rb,{accept:".brd,.brd.json,.json",hint:r("import.dropHint"),formats:r("import.brd.formats"),onFile:B=>{p(B),x(null)}})]}),n.jsxs("div",{className:"shrink-0 border-t border-border pt-3 space-y-2",children:[v&&b?n.jsx(Lb,{done:v.done,total:v.total}):null,n.jsx(Mb,{stagingRows:h,running:b,onBack:()=>{x(null),E(new Map)},onPreview:()=>void j(),onCommit:()=>void z(),onCancel:t,previewDisabled:!m})]})]})}const Am={csv:{id:"csv",name:ss.fileImport,icon:Jo,Component:Fb},brd:{id:"brd",name:ss.eagleImport,icon:Vc,Component:CE}},_E={"csv-importer":"csv","eagle-cad-importer":"brd"},IE=[Am.csv,Am.brd];function EE(e,t){const r=new Set(t??e),s=new Set,a=[];for(const i of e){if(!r.has(i))continue;const o=_E[i];if(!o||s.has(o))continue;const l=Am[o];l&&(s.add(o),a.push(l))}return a}function PE(e){return n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto p-1",children:n.jsx(Db,{})})}function TE(e){return n.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden p-1",children:n.jsx(AE,{})})}function DE({open:e,onOpenChange:t,importers:r=IE}){var l;const{t:s}=gs(),a=u.useMemo(()=>[...r,{id:"shopware",name:ss.shopware,icon:Pg,Component:PE},{id:"lia-one",name:ss.liaOne,icon:uN,Component:TE}],[r]),i=u.useMemo(()=>a.map(d=>d.id).join("-"),[a]),o=((l=a[0])==null?void 0:l.id)??"";return n.jsx(En,{open:e,onOpenChange:t,children:n.jsxs(Pn,{className:ye("flex h-[min(92vh,56rem)] max-h-[92vh] flex-col overflow-hidden",kg),children:[n.jsxs(Tn,{className:"shrink-0",children:[n.jsx(Dn,{children:s("import.title")}),n.jsx(Xo,{children:"Quelle wählen: Datei, Eagle, Shopware oder Lia.One."})]}),a.length===0?n.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 py-12 text-center",children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Import-Quellen verfügbar."}),n.jsx(ee,{asChild:!0,variant:"outline",size:"sm",children:n.jsx(lr,{to:"/einstellungen/datenschnittstellen",children:"Zur Konfiguration"})})]}):n.jsxs(Ei,{defaultValue:o,className:"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden",children:[n.jsx(Pi,{className:"h-auto w-full shrink-0 flex-wrap justify-start gap-1",children:a.map(d=>n.jsxs(ar,{value:d.id,className:"gap-1.5",children:[n.jsx(d.icon,{className:"size-4"}),d.name]},d.id))}),a.map(d=>n.jsx(ir,{value:d.id,className:"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden data-[state=inactive]:hidden",children:n.jsx(d.Component,{onDone:()=>t(!1),onCancel:()=>t(!1)})},d.id))]},i)]})})}const $b="w-full min-w-[var(--artikelstamm-view-min-width,72rem)]";function zf(){return dN()?"h-full min-h-0":"h-[calc(100svh-3.5rem)]"}function Kb(e){return ye($b,e)}function Vb({children:e,className:t}){return n.jsx("div",{className:ye($b,t),children:e})}function Br({children:e,className:t,maxWidth:r="max-w-7xl"}){return n.jsx(Vb,{className:ye("mx-auto px-4 py-8 sm:px-6",r,t),children:e})}const qb="articles-list",Ub=["type","manufacturer","revision","stock","price","subcomponents"],RE=["type","manufacturer","revision","stock","price","subcomponents"],ui={itemType:"alle",status:"alle",quickFilter:"all",sortColumn:"article",sortDirection:"asc",visibleColumns:RE},ME=new Set(["article","type","manufacturer","revision","status","stock","price","subcomponents"]),OE=new Set(Ub),LE=new Set(["all","released","inProgress","belowMin"]);function zE(e){const t=e.itemType==="alle"||e.itemType&&Zc.includes(e.itemType)?e.itemType:ui.itemType,r=e.status==="alle"||e.status==="batch_freigegeben"||e.status==="batch_entwurf"?e.status:ui.status,s=LE.has(e.quickFilter)?e.quickFilter:ui.quickFilter,a=ME.has(e.sortColumn)?e.sortColumn:ui.sortColumn,i=e.sortDirection==="desc"?"desc":"asc",o=Array.isArray(e.visibleColumns)?e.visibleColumns.filter(l=>OE.has(l)):ui.visibleColumns;return{itemType:t,status:r,quickFilter:s,sortColumn:a,sortDirection:i,visibleColumns:o}}function oo(){return Uy(qb,ui,zE)}function BE(e){Cf(qb,e)}function zl(e,t){return e.replace(/\{\{count\}\}/g,String(t))}function FE(e,t){switch(e){case"type":return t("articles.col.type");case"manufacturer":return t("articles.col.manufacturer");case"revision":return t("articles.col.rev");case"stock":return t("articles.col.stock");case"price":return"Einkaufspreis";case"subcomponents":return t("articles.col.subcomponents")}}function Wh(e){return e.minStock>0?e.stock<e.minStock:e.stock<=0}const Hh=["alle","batch_freigegeben","batch_entwurf"],$E=["alle",...Zc];function Zh(e){var r,s;const t=((r=e.sourcings)==null?void 0:r.find(a=>
84a.isDefault))??((s=e.sourcings)==null?void 0:s[0]);return(t==null?void 0:t.purchasePrice)??Number.NEGATIVE_INFINITY}function KE(e,t,r,s,a){const i=r.direction==="asc"?1:-1;switch(r.column){case"article":{const o=e.name.localeCompare(t.name,"de",{sensitivity:"base"});return o!==0?i*o:i*e.articleNumber.localeCompare(t.articleNumber,"de",{sensitivity:"base"})}case"type":{const o=e.itemType?Hr(e.itemType):"",l=t.itemType?Hr(t.itemType):"";return i*o.localeCompare(l,"de",{sensitivity:"base"})}case"manufacturer":return i*(e.manufacturer??"").localeCompare(t.manufacturer??"","de",{sensitivity:"base"});case"revision":return i*e.revision.localeCompare(t.revision,"de",{numeric:!0,sensitivity:"base"});case"status":return i*e.status.localeCompare(t.status);case"stock":return i*(e.stock-t.stock);case"price":return i*(Zh(e)-Zh(t));case"subcomponents":{const o=_c(e,s??new Map),l=_c(t,s??new Map),d=((o==null?void 0:o.length)??0)-((l==null?void 0:l.length)??0);return d!==0?i*d:i*pm(o,a).localeCompare(pm(l,a),"de",{sensitivity:"base"})}default:return 0}}function Qs({label:e,column:t,sort:r,onSort:s,className:a}){const i=r.column===t;return n.jsx(Ve,{className:ye("h-8 font-medium",a),children:n.jsxs("button",{type:"button",className:ye("inline-flex items-center gap-1 text-left transition-colors hover:text-foreground",i?"text-foreground":"text-muted-foreground"),onClick:()=>s(t),children:[n.jsx("span",{children:e}),i?r.direction==="asc"?n.jsx(Lc,{className:"size-3 shrink-0"}):n.jsx(zc,{className:"size-3 shrink-0"}):n.jsx(Bc,{className:"size-3 shrink-0 opacity-40"})]})})}function VE(){const{t:e}=gs(),t=Mi(),{session:r}=os(),[s,a]=bg(),{articles:i,isLoading:o,loadError:l,settings:d,suppliers:m,deleteArticlesBulkInBackground:p,approveArticlesBulkInBackground:h}=Mn(),[x,b]=u.useState(""),[w,v]=u.useState(()=>oo().itemType),[S,R]=u.useState(()=>oo().status),[E,A]=u.useState(null),[I,C]=u.useState(!1),[k,j]=u.useState(!1),[z,D]=u.useState(!1),[B,T]=u.useState(()=>new Set),[P,G]=u.useState(!1),[W,ke]=u.useState(!1),[L,xe]=u.useState(!1),[Y,Ne]=u.useState(()=>{const be=oo();return{column:be.sortColumn,direction:be.sortDirection}}),[se,J]=u.useState(()=>oo().quickFilter),[Q,U]=u.useState(()=>oo().visibleColumns);u.useEffect(()=>{BE({itemType:w,status:S,quickFilter:se,sortColumn:Y.column,sortDirection:Y.direction,visibleColumns:Q})},[w,S,se,Y.column,Y.direction,Q]);const ne=u.useMemo(()=>new Set(Q),[Q]),H=be=>ne.has(be),Z=(r==null?void 0:r.role)==="admin"||(r==null?void 0:r.role)==="planer",K=d.isFourEyesActive===!0,me=u.useMemo(()=>i.map(dr),[i]);u.useEffect(()=>{const be=s.get("article");if(!be||o)return;const Ye=me.find(ge=>ge.id===be);Ye&&(A(Ye),C(!0),a({},{replace:!0}))},[me,o,s,a]);const $=u.useMemo(()=>{const be=al().filter(ge=>ge.type==="importer").map(ge=>ge.id),Ye=il(d.dataModules).filter(ge=>ge.active).map(ge=>ge.moduleId);return EE(be,Ye)},[d.dataModules]),X=u.useMemo(()=>{const be=x.trim();if(!be)return null;const Ye=cl(i,be,{limit:i.length}).map(ge=>ge.id);return new Map(Ye.map((ge,He)=>[ge,He]))},[x,i]),Ie=u.useMemo(()=>me.filter(be=>{const Ye=w==="alle"||be.itemType===w,ge=S==="alle"||be.status===S,He=se==="all"||se==="released"&&be.status==="batch_freigegeben"||se==="inProgress"&&be.status==="batch_entwurf"||se==="belowMin"&&Wh(be),hn=!X||X.has(be.id);return Ye&&ge&&He&&hn}),[me,w,S,se,X]),V=u.useMemo(()=>{var Ye,ge;const be=new Map;for(const He of me){const hn=((Ye=He.name)==null?void 0:Ye.trim())||((ge=He.articleNumber)==null?void 0:ge.trim());hn&&be.set(He.id.toLowerCase(),hn)}return be},[me]),Se=be=>V.get(be.toLowerCase()),Ce=PI(ne.has("subcomponents")||z,z?me:Ie),Be=u.useMemo(()=>X?[...Ie].sort((be,Ye)=>X.get(be.id)-X.get(Ye.id)):[...Ie].sort((be,Ye)=>KE(be,Ye,Y,Ce,Se)),[V,Ie,X,Y,Ce]),Le=WC(Be,m,L),rt=u.useMemo(()=>me.filter(be=>B.has(be.id)),[me,B]),lt=rt.length>0?rt.length:Be.length,Tt=u.useMemo(()=>(rt.length>0?rt:Be).slice(0,Jl),[rt,Be]),vt=u.useMemo(()=>rt.filter(be=>be.status==="batch_entwurf"&&!be.deletionRequestedAt),[rt]),Pe=u.useMemo(()=>{let be=Z?3:2;return be+=Q.length,L&&(be+=2),be+=1,be},[Z,L,Q.length]);function it(be){U(Ye=>Ye.includes(be)?Ye.filter(ge=>ge!==be):[...Ye,be])}function yt(be){Ne(Ye=>Ye.column===be?{column:be,direction:Ye.direction==="asc"?"desc":"asc"}:{column:be,direction:"asc"})}u.useEffect(()=>{const be=new Set(me.map(Ye=>Ye.id));T(Ye=>{const ge=new Set([...Ye].filter(He=>be.has(He)));return ge.size===Ye.size?Ye:ge})},[me]);const wt=B.size,an=u.useMemo(()=>Be.map(be=>be.id),[Be]),qt=an.length>0&&an.every(be=>B.has(be)),Qt=an.some(be=>B.has(be));function en(be,Ye){T(ge=>{const He=new Set(ge);return Ye?He.add(be):He.delete(be),He})}function Wt(be){T(Ye=>{const ge=new Set(Ye);for(const He of an)be?ge.add(He):ge.delete(He);return ge})}function on(){T(new Set)}function mn(){const be=[...B];if(be.length===0)return;const Ye=E==null?void 0:E.id;G(!1),on(),Ye&&be.includes(Ye)&&(C(!1),A(null)),p(be,{onComplete:ge=>{ge.failed>0&&Ye&&be.includes(Ye)&&ge.deleted}})}function ln(){const be=vt.map(Ye=>Ye.id);be.length!==0&&(ke(!1),on(),h(be))}const cn=me.length,Oe=me.filter(be=>be.status==="batch_freigegeben").length,re=me.filter(be=>be.status==="batch_entwurf").length,ve=me.filter(Wh).length;function _e(be){J(be),R(be==="all"?"alle":be==="released"?"batch_freigegeben":be==="inProgress"?"batch_entwurf":"alle")}const te=[{label:e("stat.total"),value:String(cn),icon:Cg,active:se==="all",onClick:()=>_e("all")},{label:e("stat.released"),value:String(Oe),hint:cn?t.percent(Oe/cn*100):void 0,icon:rs,tone:"text-success",active:se==="released",onClick:()=>_e("released")},{label:e("stat.inProgress"),value:String(re),icon:mN,tone:"text-info",active:se==="inProgress",onClick:()=>_e("inProgress")},{label:e("stat.belowMin"),value:String(ve),icon:fN,tone:"text-warning",active:se==="belowMin",onClick:()=>_e("belowMin")}];function nt(be){A(be),C(!0)}const Fe=be=>{var Ye,ge;return((Ye=be.sourcings)==null?void 0:Ye.find(He=>He.isDefault))??((ge=be.sourcings)==null?void 0:ge[0])};return n.jsxs(Br,{children:[n.jsx(xs,{title:e("articles.title"),subtitle:e("articles.subtitle"),action:n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ee,{variant:"outline",className:"gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/artikel/ki-anreicherung",children:[n.jsx(Bs,{className:"size-4"}),"KI"]})}),n.jsxs(ee,{variant:"outline",className:"gap-1.5",onClick:()=>j(!0),children:[n.jsx(pN,{className:"size-4"}),e("articles.import")]}),n.jsxs(ee,{variant:"outline",className:"gap-1.5",onClick:()=>D(!0),children:[n.jsx(_d,{className:"size-4"}),e("articles.report")]}),n.jsxs(ee,{className:"gap-1.5",onClick:()=>{A(null),C(!0)},children:[n.jsx(Gn,{className:"size-4"}),e("articles.new")]})]})}),n.jsx("div",{className:"mt-6",children:n.jsx(Yx,{stats:te})}),l&&n.jsx("div",{className:"mt-4 rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:l}),n.jsxs("div",{className:"mt-6 overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[n.jsxs("div",{className:"flex flex-col gap-3 border-b p-3 sm:flex-row sm:items-center sm:gap-3 sm:p-4",children:[n.jsxs("div",{className:"relative min-w-0 flex-1",children:[n.jsx(Er,{className:"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:x,onChange:be=>b(be.target.value),onPointerDown:be=>be.stopPropagation(),placeholder:e("articles.searchPlaceholder"),className:"h-8 w-full pl-9 text-sm",autoComplete:"off"})]}),n.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-2",children:[n.jsxs(_t,{value:w,onValueChange:be=>v(be),children:[n.jsx(It,{className:"h-8 w-[11rem] text-sm",children:n.jsx(Et,{placeholder:e("articles.col.type")})}),n.jsx(Pt,{children:$E.map(be=>n.jsx(ft,{value:be,children:be==="alle"?`${e("articles.col.type")}: ${e("common.all")}`:Hr(be)},be))})]}),n.jsxs(_t,{value:S,onValueChange:be=>{const Ye=be;R(Ye),Ye==="batch_freigegeben"?J("released"):Ye==="batch_entwurf"?J("inProgress"):(se==="released"||se==="inProgress")&&J("all")},children:[n.jsx(It,{className:"h-8 w-[11rem] text-sm",children:n.jsx(Et,{placeholder:e("articles.col.status")})}),n.jsx(Pt,{children:Hh.map(be=>{var Ye;return n.jsx(ft,{value:be,children:be==="alle"?`${e("articles.col.status")}: ${e("common.all")}`:((Ye=dc[be])==null?void 0:Ye.label)??be},be)})})]}),n.jsxs(Dm,{children:[n.jsx(Rm,{asChild:!0,children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-8 gap-1.5",children:[n.jsx(hN,{className:"size-3.5"}),e("articles.columns")]})}),n.jsxs(Mm,{align:"end",className:"w-52",children:[n.jsx(gN,{children:e("articles.columns.always")}),n.jsx(Tu,{checked:!0,disabled:!0,children:e("articles.col.article")}),n.jsx(Tu,{checked:!0,disabled:!0,children:e("articles.col.status")}),n.jsx(tc,{}),Ub.map(be=>n.jsx(Tu,{checked:H(be),onCheckedChange:()=>it(be),children:FE(be,e)},be))]})]}),n.jsxs(ee,{type:"button",variant:L?"default":"outline",size:"sm",className:"h-8 gap-1.5",onClick:()=>xe(be=>!be),children:[n.jsx(Tg,{className:ye("size-3.5",L&&"text-success")}),e("articles.live")]})]})]}),Z&&wt>0&&n.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-b bg-muted/40 px-3 py-2 sm:px-4",children:[n.jsx("span",{className:"text-sm font-medium",children:zl(e("articles.selected"),wt)}),n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>Wt(!0),children:e("articles.selectAll")}),n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:on,children:e("articles.clearSelection")}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1.5",onClick:()=>D(!0),children:[n.jsx(_d,{className:"size-3.5"}),e("articles.report")]}),n.jsx(ee,{type:"button",variant:"outline",size:"sm",className:"h-7 gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/artikel/ki-anreicherung",children:[n.jsx(Bs,{className:"size-3.5"}),"KI-Ansicht"]})}),vt.length>0&&n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"ml-auto h-7 gap-1.5",onClick:()=>ke(!0),children:[n.jsx(rs,{className:"size-3.5"}),e("articles.bulkApprove")]}),n.jsxs(ee,{type:"button",variant:"destructive",size:"sm",className:ye("h-7 gap-1.5",vt.length===0&&"ml-auto"),onClick:()=>G(!0),children:[n.jsx(or,{className:"size-3.5"}),e("articles.bulkDelete")]})]}),n.jsx("div",{className:"overflow-x-auto",children:n.jsxs(Yn,{className:"w-full min-w-[880px] text-xs",children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"hover:bg-transparent",children:[Z&&n.jsx(Ve,{className:"h-8 w-10 pl-3",children:n.jsx(fr,{checked:qt?!0:Qt?"indeterminate":!1,onCheckedChange:be=>Wt(be===!0),"aria-label":e("articles.selectAll"),onClick:be=>be.stopPropagation()})}),n.jsx(Qs,{label:e("articles.col.article"),column:"article",sort:Y,onSort:yt,className:"max-w-[200px] pl-3"}),H("type")&&n.jsx(Qs,{label:e("articles.col.type"),column:"type",sort:Y,onSort:yt,className:"max-w-[88px]"}),H("manufacturer")&&n.jsx(Qs,{label:e("articles.col.manufacturer"),column:"manufacturer",sort:Y,onSort:yt,className:"max-w-[96px]"}),H("revision")&&n.jsx(Qs,{label:e("articles.col.rev"),column:"revision",sort:Y,onSort:yt,className:"w-12"}),n.jsx(Qs,{label:e("articles.col.status"),column:"status",sort:Y,onSort:yt,className:"w-[88px]"}),H("stock")&&n.jsx(Qs,{label:e("articles.col.stock"),column:"stock",sort:Y,onSort:yt,className:"w-16 text-right [&_button]:ml-auto"}),H("price")&&n.jsx(Qs,{label:"Einkaufspreis",column:"price",sort:Y,onSort:yt,className:"w-20 text-right [&_button]:ml-auto"}),H("subcomponents")&&n.jsx(Qs,{label:e("articles.col.subcomponents"),column:"subcomponents",sort:Y,onSort:yt,className:"min-w-[10rem] max-w-[16rem]"}),L&&n.jsxs(n.Fragment,{children:[n.jsx(Ve,{className:"h-8 w-20 text-right text-muted-foreground",children:e("articles.col.livePrice")}),n.jsx(Ve,{className:"h-8 w-16 text-right text-muted-foreground",children:e("articles.col.liveStock")})]}),n.jsx(Ve,{className:"h-8 w-8 pr-2"})]})}),n.jsxs(Qn,{children:[o&&n.jsx(jt,{className:"hover:bg-transparent",children:n.jsx(De,{colSpan:Pe,className:"h-24 text-center",children:n.jsxs("div",{className:"flex items-center justify-center gap-2 text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Artikel werden geladenâ¦"]})})}),!o&&Be.map(be=>{const Ye=Fe(be),ge=B.has(be.id),He=Le.get(be.id),hn=pm(_c(be,Ce),Se);return n.jsxs(jt,{onClick:()=>nt(be),className:ye("cursor-pointer",ge&&"bg-muted/30"),children:[Z&&n.jsx(De,{className:"w-10 py-1.5 pl-3",onClick:Ht=>Ht.stopPropagation(),children:n.jsx(fr,{checked:ge,onCheckedChange:Ht=>en(be.id,Ht===!0),"aria-label":be.name})}),n.jsxs(De,{className:"max-w-[200px] py-1.5 pl-3 pr-2",children:[n.jsx("div",{className:"truncate text-sm font-medium leading-tight text-foreground",title:be.name,children:be.name}),n.jsx("div",{className:"mt-0.5 truncate font-mono text-[11px] text-muted-foreground",title:be.articleNumber,children:be.articleNumber})]}),H("type")&&n.jsx(De,{className:"max-w-[88px] truncate py-1.5 text-muted-foreground",title:be.itemType?Hr(be.itemType):void 0,children:be.itemType?Hr(be.itemType):"â"}),H("manufacturer")&&n.jsx(De,{className:"max-w-[96px] truncate py-1.5 text-muted-foreground",title:be.manufacturer??void 0,children:be.manufacturer??"â"}),H("revision")&&n.jsx(De,{className:"truncate py-1.5 font-mono text-muted-foreground",children:be.revision}),n.jsx(De,{className:"py-1.5",children:n.jsx(US,{status:be.status})}),H("stock")&&n.jsxs(De,{className:ye("py-1.5 text-right tabular-nums",be.stock===0?"text-warning":"text-muted-foreground"),children:[t.number(be.stock)," ",be.unitOfMeasure]}),H("price")&&n.jsx(De,{className:"truncate py-1.5 text-right font-medium tabular-nums",children:Ye?t.currency(Ye.purchasePrice,Ye.currency):"â"}),H("subcomponents")&&n.jsx(De,{className:"max-w-[16rem] truncate py-1.5 text-muted-foreground",title:hn!=="â"?hn:void 0,children:hn}),L&&n.jsxs(n.Fragment,{children:[n.jsx(De,{className:"py-1.5 text-right tabular-nums",children:(He==null?void 0:He.status)==="loading"?n.jsx(Me,{className:"ml-auto size-3.5 animate-spin text-muted-foreground"}):(He==null?void 0:He.status)==="ok"?n.jsx("span",{className:"font-medium text-info",children:t.currency(He.price,He.currency)}):(He==null?void 0:He.status)==="error"?n.jsx("span",{className:"text-muted-foreground",title:He.message,children:"N/A"}):n.jsx("span",{className:"text-muted-foreground",title:(He==null?void 0:He.message)??"Kein Lieferanten-API-Link",children:"N/A"})}),n.jsx(De,{className:"py-1.5 text-right tabular-nums text-muted-foreground",children:(He==null?void 0:He.status)==="loading"?n.jsx(Me,{className:"ml-auto size-3.5 animate-spin"}):(He==null?void 0:He.status)==="ok"?t.number(He.stock):n.jsx("span",{title:(He==null?void 0:He.message)??"Kein Lieferanten-API-Link",children:"N/A"})})]}),n.jsx(De,{className:"py-1.5 pr-2",children:n.jsx(ua,{className:"size-3.5 text-muted-foreground"})})]},be.id)}),!o&&Be.length===0&&n.jsx(jt,{className:"hover:bg-transparent",children:n.jsx(De,{colSpan:Pe,className:"h-24 text-center",children:n.jsx("p",{className:"text-muted-foreground",children:e("common.none")})})})]})]})}),n.jsxs("div",{className:"flex items-center justify-between border-t px-3 py-2 text-[11px] text-muted-foreground sm:px-4",children:[n.jsxs("span",{children:[Be.length," ",e("common.of")," ",cn," ",e("articles.count")]}),n.jsx("div",{className:"flex items-center gap-3",children:Hh.slice(1).map(be=>{const Ye=me.filter(ge=>ge.status===be).length;return n.jsxs("span",{className:"hidden items-center gap-1.5 sm:flex",children:[n.jsx("span",{className:ye("size-1.5 rounded-full",dc[be].dot)}),Ye]},be)})})]})]}),n.jsx(Tf,{article:E,open:I,onOpenChange:C}),n.jsx(DE,{open:k,onOpenChange:j,importers:$}),n.jsx(fE,{open:z,onOpenChange:D,roots:Tt,catalog:me,structure:Ce,candidateTotal:lt,sourceLabel:rt.length>0?`${rt.length} ausgewählt`:"Aktuelle Liste"}),n.jsx(da,{open:P,onOpenChange:G,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:e(K?"articles.bulkDeleteTitleFourEyes":"articles.bulkDeleteTitle")}),n.jsx(ha,{children:zl(e(K?"articles.bulkDeleteFourEyes":"articles.bulkDeleteDescription"),wt)})]}
84),n.jsxs(ga,{children:[n.jsx(xa,{children:e("common.cancel")}),n.jsx(ya,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:be=>{be.preventDefault(),mn()},children:e(K?"articles.bulkDeleteSubmit":"articles.bulkDelete")})]})]})}),n.jsx(da,{open:W,onOpenChange:ke,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:e("articles.bulkApproveTitle")}),n.jsx(ha,{children:zl(e("articles.bulkApproveDescription"),vt.length)})]}),n.jsxs(ga,{children:[n.jsx(xa,{children:e("common.cancel")}),n.jsx(ya,{onClick:be=>{be.preventDefault(),ln()},children:e("articles.bulkApprove")})]})]})})]})}function Xl(e){return e.status==="active"}function Cm(e,t){var r;return(r=e.supplierNumber)!=null&&r.trim()?e.supplierNumber.trim():`LF-${String(t+1).padStart(4,"0")}`}function qE(e){return`LF-${String(e+1).padStart(4,"0")}`}function UE(e){var s,a,i;const t=e.apiConnectorId??Zr(e.name),r=e.apiEnabled??!!t;return{name:e.name.trim(),email:((s=e.email)==null?void 0:s.trim())||void 0,phone:((a=e.phone)==null?void 0:a.trim())||void 0,orderMethod:e.orderMethod??"EMAIL",orderEmail:((i=e.orderEmail)==null?void 0:i.trim())||void 0,status:e.status,apiConnectorId:t,apiEnabled:t?r:!1}}function WE(e,t){var s,a;const r=e.apiConnectorId??Zr(e.name);return{name:e.name,supplierNumber:((s=e.supplierNumber)==null?void 0:s.trim())||Cm(e,t),supplierNumberManual:!!((a=e.supplierNumber)!=null&&a.trim()),email:e.email??"",phone:e.phone??"",orderMethod:e.orderMethod??"EMAIL",orderEmail:e.orderEmail??"",status:e.status,apiConnectorId:r,apiEnabled:e.apiEnabled??!!r}}function Gh(e){return{name:"",supplierNumber:qE(e),supplierNumberManual:!1,email:"",phone:"",orderMethod:"EMAIL",orderEmail:"",status:"active",apiConnectorId:null,apiEnabled:!1}}function HE({open:e,onOpenChange:t,supplier:r=null,supplierIndex:s=0,existingCount:a,onSaved:i}){const{session:o}=os(),{updateSupplier:l}=Mn(),d=!!r,[m,p]=u.useState(()=>Gh(a)),[h,x]=u.useState(!1);u.useEffect(()=>{e&&p(r?WE(r,s):Gh(a))},[e,r,s,a]);const b=(E,A)=>p(I=>({...I,[E]:A})),w=u.useMemo(()=>Zr(m.name),[m.name]),v=m.apiConnectorId??w,S=m.name.trim().length>0;async function R(E){if(E.preventDefault(),!S||h)return;const A=UE({name:m.name,email:m.email,phone:m.phone,orderMethod:m.orderMethod,orderEmail:m.orderEmail,status:m.status,apiConnectorId:v,apiEnabled:v?m.apiEnabled:!1});x(!0);try{if(d&&r){await l(r.id,{...A,supplierNumber:m.supplierNumber.trim()||void 0}),i(),t(!1);return}const I=o==null?void 0:o.tenantId;if(!I){M.error("Kein Mandant aktiv â bitte erneut anmelden.");return}const C=crypto.randomUUID(),k={id:C,tenantId:I,supplierNumber:m.supplierNumber.trim()||void 0,...A};await yc(I,k,k,{syncStatus:"pending"}),await Zd(I,"create",C,A);const j=await kx(A),z={...j,supplierNumber:m.supplierNumber.trim()||void 0};await yc(I,j,z,{syncStatus:"synced"}),M.success("Lieferant angelegt",{description:z.name}),i(),t(!1)}catch(I){M.error(I instanceof ut?I.message:"Lieferant konnte nicht gespeichert werden")}finally{x(!1)}}return n.jsx(Fc,{open:e,onOpenChange:t,children:n.jsxs($c,{side:"right",className:"flex w-full flex-col gap-0 overflow-hidden p-0 sm:max-w-lg",children:[n.jsxs(Kc,{className:"gap-1 border-b px-6 py-5",children:[n.jsx(Do,{className:"text-xl",children:d?"Lieferant bearbeiten":"Neuer Lieferant"}),n.jsx(nc,{children:d?"Stammdaten des Lieferanten anpassen.":"Stammdaten für einen neuen Lieferanten erfassen."})]}),n.jsxs("form",{onSubmit:R,className:"flex min-h-0 flex-1 flex-col",children:[n.jsx(qa,{className:"min-h-0 flex-1",children:n.jsxs("div",{className:"space-y-5 px-6 py-5",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsxs(ze,{htmlFor:"supplier-name",children:["Firmenname ",n.jsx("span",{className:"text-destructive",children:"*"})]}),n.jsx(Ze,{id:"supplier-name",value:m.name,onChange:E=>{const A=E.target.value,I=Zr(A);p(C=>({...C,name:A,apiConnectorId:I,apiEnabled:I?C.apiEnabled||!0:!1}))},placeholder:"z. B. Mouser Electronics",autoFocus:!0})]}),v&&n.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-lg border border-success/30 bg-success/5 px-4 py-3",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(bt,{className:"border-transparent bg-success/15 text-success",children:"API erkannt"}),n.jsx("span",{className:"text-sm font-medium",children:Sf(v)})]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Live-Abfrage von Preis und Verfügbarkeit in den Stammdaten."})]}),n.jsxs("div",{className:"flex flex-col items-end gap-1",children:[n.jsx(ze,{htmlFor:"supplier-api-enabled",className:"text-xs text-muted-foreground",children:"Aktiv"}),n.jsx(Ir,{id:"supplier-api-enabled",checked:m.apiEnabled,onCheckedChange:E=>b("apiEnabled",E===!0)})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-number",children:"Lieferantennummer"}),n.jsx(Ze,{id:"supplier-number",value:m.supplierNumber,onChange:E=>{b("supplierNumber",E.target.value),b("supplierNumberManual",!0)},placeholder:"LF-0001"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:d?"Anzeigenummer â wird lokal gespeichert, bis das Backend-Feld verfügbar ist.":"Wird automatisch vorgeschlagen â manuelle Anpassung möglich."})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-email",children:"E-Mail"}),n.jsx(Ze,{id:"supplier-email",type:"email",value:m.email,onChange:E=>b("email",E.target.value),autoComplete:"off",placeholder:""})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-phone",children:"Telefon"}),n.jsx(Ze,{id:"supplier-phone",type:"tel",value:m.phone,onChange:E=>b("phone",E.target.value),placeholder:"+49 â¦"})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-status",children:"Status"}),n.jsxs(_t,{value:m.status,onValueChange:E=>b("status",E),children:[n.jsx(It,{id:"supplier-status",children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"active",children:"Aktiv"}),n.jsx(ft,{value:"inactive",children:"Inaktiv"})]})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-order-method",children:"Bestellweg"}),n.jsxs(_t,{value:m.orderMethod??"EMAIL",onValueChange:E=>b("orderMethod",E),children:[n.jsx(It,{id:"supplier-order-method",children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"EMAIL",children:"E-Mail (PDF)"}),n.jsx(ft,{value:"BOM_CSV",children:"BOM CSV"}),n.jsx(ft,{value:"BOM_EXCEL",children:"BOM Excel (CSV-Vorlage)"})]})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(ze,{htmlFor:"supplier-order-email",children:"Bestell-E-Mail"}),n.jsx(Ze,{id:"supplier-order-email",type:"email",value:m.orderEmail,onChange:E=>b("orderEmail",E.target.value),autoComplete:"off",placeholder:""})]})]})}),n.jsxs("div",{className:"flex items-center justify-end gap-2 border-t px-6 py-4",children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>t(!1),disabled:h,children:"Abbrechen"}),n.jsxs(ee,{type:"submit",disabled:!S||h,className:"gap-2",children:[h?n.jsx(Me,{className:"size-4 animate-spin"}):null,"Speichern"]})]})]})]})})}function ZE({supplier:e}){return Xl(e)?n.jsxs(bt,{className:"border-transparent bg-success/15 text-success font-medium gap-1.5",children:[n.jsx("span",{className:"size-1.5 rounded-full bg-success inline-block"}),"Aktiv"]}):n.jsxs(bt,{className:"border-transparent bg-muted text-muted-foreground font-medium gap-1.5",children:[n.jsx("span",{className:"size-1.5 rounded-full bg-muted-foreground inline-block"}),"Inaktiv"]})}function GE(){const{suppliers:e,updateSupplier:t,deleteSupplier:r,refresh:s,isLoading:a}=Mn(),[i,o]=u.useState(!1),[l,d]=u.useState(null),[m,p]=u.useState(""),h=e.filter(A=>{var j;const I=m.trim().toLowerCase(),C=e.indexOf(A),k=Cm(A,C).toLowerCase();return I===""||A.name.toLowerCase().includes(I)||k.includes(I)||((j=A.email)==null?void 0:j.toLowerCase().includes(I))}),x=e.filter(A=>Xl(A)).length;function b(){d(null),o(!0)}function w(A){d(A),o(!0)}function v(A){o(A),A||d(null)}function S(){o(!1),d(null),s()}function R(A){const I=Xl(A)?"inactive":"active";t(A.id,{status:I})}function E(A){window.confirm(`Lieferant â${A.name}" wirklich löschen?`)&&r(A.id)}return n.jsxs(Br,{children:[n.jsx(xs,{title:"Lieferanten",subtitle:`${x} von ${e.length} aktiv`,action:n.jsxs(ee,{className:"gap-1.5",onClick:b,children:[n.jsx(Gn,{className:"size-4"}),"Neuer Lieferant"]})}),n.jsxs("div",{className:"mt-8 overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[n.jsxs("div",{className:"flex flex-col gap-3 border-b border-border p-4 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"relative w-full sm:max-w-xs",children:[n.jsx(Er,{className:"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:m,onChange:A=>p(A.target.value),placeholder:"Name, Nummer oder E-Mail â¦",className:"pl-9"})]}),n.jsxs("span",{className:"text-xs text-muted-foreground tabular-nums",children:[h.length," Ergebnis",h.length!==1?"se":""]})]}),n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"hover:bg-transparent",children:[n.jsx(Ve,{className:"pl-4 w-[120px]",children:"Nummer"}),n.jsx(Ve,{children:"Name"}),n.jsx(Ve,{className:"hidden md:table-cell",children:"Kontakt"}),n.jsx(Ve,{className:"hidden lg:table-cell",children:"API"}),n.jsx(Ve,{className:"hidden lg:table-cell",children:"Telefon"}),n.jsx(Ve,{children:"Status"}),n.jsx(Ve,{className:"w-[48px]"})]})}),n.jsxs(Qn,{children:[h.map(A=>{const I=e.indexOf(A);return n.jsxs(jt,{className:"cursor-pointer",onClick:()=>w(A),children:[n.jsx(De,{className:"pl-4",children:n.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:Cm(A,I)})}),n.jsx(De,{children:n.jsxs("div",{className:"flex items-center gap-2.5",children:[n.jsx("div",{className:"flex size-8 shrink-0 items-center justify-center rounded-md bg-muted",children:n.jsx(xN,{className:"size-4 text-muted-foreground"})}),n.jsx("span",{className:"text-sm font-semibold text-foreground leading-tight",children:A.name})]})}),n.jsx(De,{className:"hidden md:table-cell",children:A.email?n.jsxs("a",{href:`mailto:${A.email}`,className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",onClick:C=>C.stopPropagation(),children:[n.jsx(qc,{className:"size-3"}),A.email]}):n.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),n.jsx(De,{className:"hidden lg:table-cell",children:zy(A)?n.jsxs(bt,{className:"border-transparent bg-info/15 text-info font-medium",children:[Sf(A.apiConnectorId??"lcsc")," Live"]}):A.apiConnectorId?n.jsx(bt,{variant:"outline",className:"font-medium text-muted-foreground",children:"API deaktiviert"}):n.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),n.jsx(De,{className:"hidden lg:table-cell",children:A.phone?n.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground",children:[n.jsx(yN,{className:"size-3"}),A.phone]}
84):n.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),n.jsx(De,{children:n.jsx(ZE,{supplier:A})}),n.jsx(De,{onClick:C=>C.stopPropagation(),children:n.jsxs(Dm,{modal:!1,children:[n.jsx(Rm,{asChild:!0,children:n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-8 text-muted-foreground","aria-label":"Aktionen",children:n.jsx(bN,{className:"size-4"})})}),n.jsxs(Mm,{align:"end",className:"w-44",children:[n.jsxs(mi,{onSelect:()=>w(A),children:[n.jsx(yo,{className:"size-4"}),"Bearbeiten"]}),n.jsx(mi,{onSelect:()=>R(A),children:Xl(A)?"Deaktivieren":"Aktivieren"}),n.jsx(tc,{}),n.jsxs(mi,{variant:"destructive",onSelect:()=>E(A),children:[n.jsx(or,{className:"size-4"}),"Löschen"]})]})]})})]},A.id)}),!a&&h.length===0&&n.jsx(jt,{className:"hover:bg-transparent",children:n.jsx(De,{colSpan:7,className:"h-32 text-center",children:n.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Lieferanten gefunden."})})})]})]}),n.jsxs("div",{className:"border-t border-border px-4 py-3 text-xs text-muted-foreground",children:[h.length," von ",e.length," Lieferanten"]})]}),n.jsx(HE,{open:i,onOpenChange:v,supplier:l,supplierIndex:l?e.indexOf(l):0,existingCount:e.length,onSaved:S})]})}const YE=[{title:"Artikelarten & Warengruppen",description:"Pro Artikelart Warengruppen anlegen und Schema-Felder (Eigenschaften) konfigurieren.",icon:Om,href:"/einstellungen/warengruppen"},{title:"Datenschnittstellen",description:`Importer aktivieren: ${ss.fileImport}, ${ss.eagleImport} und weitere Formate.`,icon:zm,href:"/einstellungen/datenschnittstellen"},{title:"Systemeinstellungen",description:"KI-Enrichment-Prompt, Matching Key, 4-Augen, Shopware-Anbindung und Import-Limits.",icon:Id,href:"/einstellungen/system"},{title:"Nummernkreise",description:"Artikelnummern-Schemata, Präfixe und Zählbereiche pro Warengruppe verwalten.",icon:rc,locked:!0},{title:"Allgemein",description:"Standardwährung, Sprache und weiteres Systemverhalten (demnächst).",icon:_g,locked:!0,badge:"Bald verfügbar"},{title:"Benutzer & Rechte",description:"Benutzer verwalten, Rollen zuweisen und Zugriffsberechtigungen konfigurieren.",icon:vN,locked:!0,badge:"Bald verfügbar"}];function JE({card:e}){const t=n.jsxs("div",{className:ye("group relative flex flex-col rounded-xl border border-border bg-card p-6 shadow-sm transition-all",e.href?"cursor-pointer hover:border-primary/40 hover:shadow-md":"opacity-60 cursor-not-allowed select-none"),children:[n.jsxs("div",{className:"flex items-start justify-between",children:[n.jsx("div",{className:ye("flex size-10 items-center justify-center rounded-lg",e.href?"bg-primary/10":"bg-muted"),children:n.jsx(e.icon,{className:ye("size-5",e.href?"text-primary":"text-muted-foreground")})}),e.locked?n.jsx(NN,{className:"size-3.5 text-muted-foreground/60"}):n.jsx(ua,{className:"size-4 text-muted-foreground/40 transition-transform group-hover:translate-x-0.5 group-hover:text-primary"})]}),n.jsxs("div",{className:"mt-4 flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h3",{className:"text-sm font-semibold leading-tight",children:e.title}),e.badge&&n.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:e.badge})]}),n.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-muted-foreground",children:e.description})]})]});return e.href?n.jsx(lr,{to:e.href,className:"block",children:t}):t}function QE(){const{hasAccess:e}=Rx(),t=YE.filter(r=>r.href==="/einstellungen/datenschnittstellen"?e("data-interfaces"):!0);return n.jsxs(Br,{maxWidth:"max-w-5xl",children:[n.jsx(xs,{title:"Einstellungen",subtitle:"System- und Stammdaten-Konfiguration für Ihr ERP."}),n.jsx("div",{className:"mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-2",children:t.map(r=>n.jsx(JE,{card:r},r.title))})]})}function XE(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return u.useMemo(()=>s=>{t.forEach(a=>a(s))},t)}const gu=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Bi(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function Bf(e){return"nodeType"in e}function Fr(e){var t,r;return e?Bi(e)?e:Bf(e)&&(t=(r=e.ownerDocument)==null?void 0:r.defaultView)!=null?t:window:window}function Ff(e){const{Document:t}=Fr(e);return e instanceof t}function ul(e){return Bi(e)?!1:e instanceof Fr(e).HTMLElement}function Wb(e){return e instanceof Fr(e).SVGElement}
84function Fi(e){return e?Bi(e)?e.document:Bf(e)?Ff(e)?e:ul(e)||Wb(e)?e.ownerDocument:document:document:document}const As=gu?u.useLayoutEffect:u.useEffect;function $f(e){const t=u.useRef(e);return As(()=>{t.current=e}),u.useCallback(function(){for(var r=arguments.length,s=new Array(r),a=0;a<r;a++)s[a]=arguments[a];return t.current==null?void 0:t.current(...s)},[])}function eP(){const e=u.useRef(null),t=u.useCallback((s,a)=>{e.current=setInterval(s,a)},[]),r=u.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,r]}function Uo(e,t){t===void 0&&(t=[e]);const r=u.useRef(e);return As(()=>{r.current!==e&&(r.current=e)},t),r}function dl(e,t){const r=u.useRef();return u.useMemo(()=>{const s=e(r.current);return r.current=s,s},[...t])}function Pc(e){const t=$f(e),r=u.useRef(null),s=u.useCallback(a=>{a!==r.current&&(t==null||t(a,r.current)),r.current=a},[]);return[r,s]}function _m(e){const t=u.useRef();return u.useEffect(()=>{t.current=e},[e]),t.current}let bd={};function ml(e,t){return u.useMemo(()=>{if(t)return t;const r=bd[e]==null?0:bd[e]+1;return bd[e]=r,e+"-"+r},[e,t])}function Hb(e){return function(t){for(var r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];return s.reduce((i,o)=>{const l=Object.entries(o);for(const[d,m]of l){const p=i[d];p!=null&&(i[d]=p+e*m)}return i},{...t})}}const hi=Hb(1),Wo=Hb(-1);function tP(e){return"clientX"in e&&"clientY"in e}function Kf(e){if(!e)return!1;const{KeyboardEvent:t}=Fr(e.target);return t&&e instanceof t}function nP(e){if(!e)return!1;const{TouchEvent:t}=Fr(e.target);return t&&e instanceof t}function Im(e){if(nP(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:r}=e.touches[0];return{x:t,y:r}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:r}=e.changedTouches[0];return{x:t,y:r}}}return tP(e)?{x:e.clientX,y:e.clientY}:null}const _i=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:r}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(r?Math.round(r):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:r}=e;return"scaleX("+t+") scaleY("+r+")"}},Transform:{toString(e){if(e)return[_i.Translate.toString(e),_i.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:r,easing:s}=e;return t+" "+r+"ms "+s}}}),Yh="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function rP(e){return e.matches(Yh)?e:e.querySelector(Yh)}const sP={display:"none"};function aP(e){let{id:t,value:r}=e;return Lr.createElement("div",{id:t,style:sP},r)}function iP(e){let{id:t,announcement:r,ariaLiveType:s="assertive"}=e;const a={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return Lr.createElement("div",{id:t,style:a,role:"status","aria-live":s,"aria-atomic":!0},r)}function oP(){const[e,t]=u.useState("");return{announce:u.useCallback(s=>{s!=null&&t(s)},[]),announcement:e}}const Zb=u.createContext(null);function lP(e){const t=u.useContext(Zb);u.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function cP(){const[e]=u.useState(()=>new Set),t=u.useCallback(s=>(e.add(s),()=>e.delete(s)),[e]);return[u.useCallback(s=>{let{type:a,event:i}=s;e.forEach(o=>{var l;return(l=o[a])==null?void 0:l.call(o,i)})},[e]),t]}const uP={draggable:` 85 To pick up a draggable item, press the space bar. 86 While dragging, use the arrow keys to move the item. 87 Press space again to drop the item in its new position, or press escape to cancel. 88 `},dP={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was moved over droppable area "+r.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was dropped over droppable area "+r.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function mP(e){let{announcements:t=dP,container:r,hiddenTextDescribedById:s,screenReaderInstructions:a=uP}=e;const{announce:i,announcement:o}=oP(),l=ml("DndLiveRegion"),[d,m]=u.useState(!1);if(u.useEffect(()=>{m(!0)},[]),lP(u.useMemo(()=>({onDragStart(h){let{active:x}=h;i(t.onDragStart({active:x}))},onDragMove(h){let{active:x,over:b}=h;t.onDragMove&&i(t.onDragMove({active:x,over:b}))},onDragOver(h){let{active:x,over:b}=h;i(t.onDragOver({active:x,over:b}))},onDragEnd(h){let{active:x,over:b}=h;i(t.onDragEnd({active:x,over:b}))},onDragCancel(h){let{active:x,over:b}=h;
88i(t.onDragCancel({active:x,over:b}))}}),[i,t])),!d)return null;const p=Lr.createElement(Lr.Fragment,null,Lr.createElement(aP,{id:s,value:a.draggable}),Lr.createElement(iP,{id:l,announcement:o}));return r?mo.createPortal(p,r):p}var sr;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(sr||(sr={}));function Tc(){}function Dc(e,t){return u.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Gb(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return u.useMemo(()=>[...t].filter(s=>s!=null),[...t])}const hs=Object.freeze({x:0,y:0});function Yb(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Jb(e,t){let{data:{value:r}}=e,{data:{value:s}}=t;return r-s}function fP(e,t){let{data:{value:r}}=e,{data:{value:s}}=t;return s-r}function Jh(e){let{left:t,top:r,height:s,width:a}=e;return[{x:t,y:r},{x:t+a,y:r},{x:t,y:r+s},{x:t+a,y:r+s}]}function Qb(e,t){if(!e||e.length===0)return null;const[r]=e;return r[t]}function Qh(e,t,r){return t===void 0&&(t=e.left),r===void 0&&(r=e.top),{x:t+e.width*.5,y:r+e.height*.5}}const Xb=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:s}=e;const a=Qh(t,t.left,t.top),i=[];for(const o of s){const{id:l}=o,d=r.get(l);if(d){const m=Yb(Qh(d),a);i.push({id:l,data:{droppableContainer:o,value:m}})}}return i.sort(Jb)},pP=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:s}=e;const a=Jh(t),i=[];for(const o of s){const{id:l}=o,d=r.get(l);if(d){const m=Jh(d),p=a.reduce((x,b,w)=>x+Yb(m[w],b),0),h=Number((p/4).toFixed(4));i.push({id:l,data:{droppableContainer:o,value:h}})}}return i.sort(Jb)};function hP(e,t){const r=Math.max(t.top,e.top),s=Math.max(t.left,e.left),a=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),o=a-s,l=i-r;if(s<a&&r<i){const d=t.width*t.height,m=e.width*e.height,p=o*l,h=p/(d+m-p);return Number(h.toFixed(4))}return 0}const gP=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:s}=e;const a=[];for(const i of s){const{id:o}=i,l=r.get(o);if(l){const d=hP(l,t);d>0&&a.push({id:o,data:{droppableContainer:i,value:d}})}}return a.sort(fP)};function xP(e,t,r){return{...e,scaleX:t&&r?t.width/r.width:1,scaleY:t&&r?t.height/r.height:1}}function ev(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:hs}function yP(e){return function(r){for(var s=arguments.length,a=new Array(s>1?s-1:0),i=1;i<s;i++)a[i-1]=arguments[i];return a.reduce((o,l)=>({...o,top:o.top+e*l.y,bottom:o.bottom+e*l.y,left:o.left+e*l.x,right:o.right+e*l.x}),{...r})}}const bP=yP(1);function vP(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function NP(e,t,r){const s=vP(t);if(!s)return e;const{scaleX:a,scaleY:i,x:o,y:l}=s,d=e.left-o-(1-a)*parseFloat(r),m=e.top-l-(1-i)*parseFloat(r.slice(r.indexOf(" ")+1)),p=a?e.width/a:e.width,h=i?e.height/i:e.height;return{width:p,height:h,top:m,right:d+p,bottom:m+h,left:d}}const jP={ignoreTransform:!1};function $i(e,t){t===void 0&&(t=jP);let r=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:m,transformOrigin:p}=Fr(e).getComputedStyle(e);m&&(r=NP(r,m,p))}const{top:s,left:a,width:i,height:o,bottom:l,right:d}=r;return{top:s,left:a,width:i,height:o,bottom:l,right:d}}function Xh(e){return $i(e,{ignoreTransform:!0})}function kP(e){const t=e.innerWidth,r=e.innerHeight;return{top:0,left:0,right:t,bottom:r,width:t,height:r}}function wP(e,t){return t===void 0&&(t=Fr(e).getComputedStyle(e)),t.position==="fixed"}function SP(e,t){t===void 0&&(t=Fr(e).getComputedStyle(e));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(a=>{const i=t[a];return typeof i=="string"?r.test(i):!1})}function xu(e,t){const r=[];function s(a){if(t!=null&&r.length>=t||!a)return r;if(Ff(a)&&a.scrollingElement!=null&&!r.includes(a.scrollingElement))return r.push(a.scrollingElement),r;if(!ul(a)||Wb(a)||r.includes(a))return r;const i=Fr(e).getComputedStyle(a);return a!==e&&SP(a,i)&&r.push(a),wP(a,i)?r:s(a.parentNode)}return e?s(e):r}function tv(e){const[t]=xu(e,1);return t??null}function vd(e){return!gu||!e?null:Bi(e)?e:Bf(e)?Ff(e)||e===Fi(e).scrollingElement?window:ul(e)?e:null:null}function nv(e){return Bi(e)?e.scrollX:e.scrollLeft}function rv(e){return Bi(e)?e.scrollY:e.scrollTop}function Em(e){return{x:nv(e),y:rv(e)}}var mr;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(mr||(mr={}));function sv(e){return!gu||!e?!1:e===document.scrollingElement}function av(e){const t={x:0,y:0},r=sv(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},s={x:e.scrollWidth-r.width,y:e.scrollHeight-r.height},a=e.scrollTop<=t.y,i=e.scrollLeft<=t.x,o=e.scrollTop>=s.y,l=e.scrollLeft>=s.x;return{isTop:a,isLeft:i,isBottom:o,isRight:l,maxScroll:s,minScroll:t}}const AP={x:.2,y:.2};function CP(e,t,r,s,a){let{top:i,left:o,right:l,bottom:d}=r;s===void 0&&(s=10),a===void 0&&(a=AP);const{isTop:m,isBottom:p,isLeft:h,isRight:x}=av(e),b={x:0,y:0},w={x:0,y:0},v={height:t.height*a.y,width:t.width*a.x};return!m&&i<=t.top+v.height?(b.y=mr.Backward,w.y=s*Math.abs((t.top+v.height-i)/v.height)):!p&&d>=t.bottom-v.height&&(b.y=mr.Forward,w.y=s*Math.abs((t.bottom-v.height-d)/v.height)),!x&&l>=t.right-v.width?(b.x=mr.Forward,w.x=s*Math.abs((t.right-v.width-l)/v.width)):!h&&o<=t.left+v.width&&(b.x=mr.Backward,w.x=s*Math.abs((t.left+v.width-o)/v.width)),{direction:b,speed:w}}function _P(e){if(e===document.scrollingElement){const{innerWidth:i,innerHeight:o}=window;return{top:0,left:0,right:i,bottom:o,width:i,height:o}}const{top:t,left:r,right:s,bottom:a}=e.getBoundingClientRect();return{top:t,left:r,right:s,bottom:a,width:e.clientWidth,height:e.clientHeight}}function iv(e){return e.reduce((t,r)=>hi(t,Em(r)),hs)}function IP(e){return e.reduce((t,r)=>t+nv(r),0)}function EP(e){return e.reduce((t,r)=>t+rv(r),0)}function PP(e,t){if(t===void 0&&(t=$i),!e)return;const{top:r,left:s,bottom:a,right:i}=t(e);tv(e)&&(a<=0||i<=0||r>=window.innerHeight||s>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const TP=[["x",["left","right"],IP],["y",["top","bottom"],EP]];class Vf{constructor(t,r){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const s=xu(r),a=iv(s);this.rect={...t},this.width=t.width,this.height=t.height;for(const[i,o,l]of TP)for(const d of o)Object.defineProperty(this,d,{get:()=>{const m=l(s),p=a[i]-m;return this.rect[d]+p},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class _o{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>
88{this.listeners.forEach(r=>{var s;return(s=this.target)==null?void 0:s.removeEventListener(...r)})},this.target=t}add(t,r,s){var a;(a=this.target)==null||a.addEventListener(t,r,s),this.listeners.push([t,r,s])}}function DP(e){const{EventTarget:t}=Fr(e);return e instanceof t?e:Fi(e)}function Nd(e,t){const r=Math.abs(e.x),s=Math.abs(e.y);return typeof t=="number"?Math.sqrt(r**2+s**2)>t:"x"in t&&"y"in t?r>t.x&&s>t.y:"x"in t?r>t.x:"y"in t?s>t.y:!1}var ns;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(ns||(ns={}));function eg(e){e.preventDefault()}function RP(e){e.stopPropagation()}var rn;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(rn||(rn={}));const ov={start:[rn.Space,rn.Enter],cancel:[rn.Esc],end:[rn.Space,rn.Enter,rn.Tab]},MP=(e,t)=>{let{currentCoordinates:r}=t;switch(e.code){case rn.Right:return{...r,x:r.x+25};case rn.Left:return{...r,x:r.x-25};case rn.Down:return{...r,y:r.y+25};case rn.Up:return{...r,y:r.y-25}}};class yu{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:r}}=t;this.props=t,this.listeners=new _o(Fi(r)),this.windowListeners=new _o(Fr(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ns.Resize,this.handleCancel),this.windowListeners.add(ns.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ns.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:r}=this.props,s=t.node.current;s&&PP(s),r(hs)}handleKeyDown(t){if(Kf(t)){const{active:r,context:s,options:a}=this.props,{keyboardCodes:i=ov,coordinateGetter:o=MP,scrollBehavior:l="smooth"}=a,{code:d}=t;if(i.end.includes(d)){this.handleEnd(t);return}if(i.cancel.includes(d)){this.handleCancel(t);return}const{collisionRect:m}=s.current,p=m?{x:m.left,y:m.top}:hs;this.referenceCoordinates||(this.referenceCoordinates=p);const h=o(t,{active:r,context:s.current,currentCoordinates:p});if(h){const x=Wo(h,p),b={x:0,y:0},{scrollableAncestors:w}=s.current;for(const v of w){const S=t.code,{isTop:R,isRight:E,isLeft:A,isBottom:I,maxScroll:C,minScroll:k}=av(v),j=_P(v),z={x:Math.min(S===rn.Right?j.right-j.width/2:j.right,Math.max(S===rn.Right?j.left:j.left+j.width/2,h.x)),y:Math.min(S===rn.Down?j.bottom-j.height/2:j.bottom,Math.max(S===rn.Down?j.top:j.top+j.height/2,h.y))},D=S===rn.Right&&!E||S===rn.Left&&!A,B=S===rn.Down&&!I||S===rn.Up&&!R;if(D&&z.x!==h.x){const T=v.scrollLeft+x.x,P=S===rn.Right&&T<=C.x||S===rn.Left&&T>=k.x;if(P&&!x.y){v.scrollTo({left:T,behavior:l});return}P?b.x=v.scrollLeft-T:b.x=S===rn.Right?v.scrollLeft-C.x:v.scrollLeft-k.x,b.x&&v.scrollBy({left:-b.x,behavior:l});break}else if(B&&z.y!==h.y){const T=v.scrollTop+x.y,P=S===rn.Down&&T<=C.y||S===rn.Up&&T>=k.y;if(P&&!x.x){v.scrollTo({top:T,behavior:l});return}P?b.y=v.scrollTop-T:b.y=S===rn.Down?v.scrollTop-C.y:v.scrollTop-k.y,b.y&&v.scrollBy({top:-b.y,behavior:l});break}}this.handleMove(t,hi(Wo(h,this.referenceCoordinates),b))}}}handleMove(t,r){const{onMove:s}=this.props;t.preventDefault(),s(r)}handleEnd(t){const{onEnd:r}=this.props;t.preventDefault(),this.detach(),r()}handleCancel(t){const{onCancel:r}=this.props;t.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}yu.activators=[{eventName:"onKeyDown",handler:(e,t,r)=>{let{keyboardCodes:s=ov,onActivation:a}=t,{active:i}=r;const{code:o}=e.nativeEvent;if(s.start.includes(o)){const l=i.activatorNode.current;return l&&e.target!==l?!1:(e.preventDefault(),a==null||a({event:e.nativeEvent}),!0)}return!1}}];function tg(e){return!!(e&&"distance"in e)}function ng(e){return!!(e&&"delay"in e)}class qf{constructor(t,r,s){var a;s===void 0&&(s=DP(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=r;const{event:i}=t,{target:o}=i;this.props=t,this.events=r,this.document=Fi(o),this.documentListeners=new _o(this.document),this.listeners=new _o(s),this.windowListeners=new _o(Fr(o)),this.initialCoordinates=(a=Im(i))!=null?a:hs,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:r,bypassActivationConstraint:s}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(ns.Resize,this.handleCancel),this.windowListeners.add(ns.DragStart,eg),this.windowListeners.add(ns.VisibilityChange,this.handleCancel),this.windowListeners.add(ns.ContextMenu,eg),this.documentListeners.add(ns.Keydown,this.handleKeydown),r){if(s!=null&&s({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(ng(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(tg(r)){this.handlePending(r);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,r){const{active:s,onPending:a}=this.props;a(s,t,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:t}=this,{onStart:r}=this.props;t&&(this.activated=!0,this.documentListeners.add(ns.Click,RP,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ns.SelectionChange,this.removeTextSelection),r(t))}handleMove(t){var r;const{activated:s,initialCoordinates:a,props:i}=this,{onMove:o,options:{activationConstraint:l}}=i;if(!a)return;const d=(r=Im(t))!=null?r:hs,m=Wo(a,d);if(!s&&l){if(tg(l)){if(l.tolerance!=null&&Nd(m,l.tolerance))return this.handleCancel();if(Nd(m,l.distance))return this.handleStart()}if(ng(l)&&Nd(m,l.tolerance))return this.handleCancel();this.handlePending(l,m);return}t.cancelable&&t.preventDefault(),o(d)}handleEnd(){const{onAbort:t,onEnd:r}=this.props;this.detach(),this.activated||t(this.props.active),r()}handleCancel(){const{onAbort:t,onCancel:r}=this.props;this.detach(),this.activated||t(this.props.active),r()}handleKeydown(t){t.code===rn.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const OP={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class bu extends qf{constructor(t){const{event:r}=t,s=Fi(r.target);super(t,OP,s)}}bu.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:s}=t;return!r.isPrimary||r.button!==0?!1:(s==null||s({event:r}),!0)}}];const LP={move:{name:"mousemove"},end:{name:"mouseup"}};var Pm;(function(e){e[e.RightClick=2]="RightClick"})(Pm||(Pm={}));class zP extends qf{constructor(t){super(t,LP,Fi(t.event.target))}}zP.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:s}=t;return r.button===Pm.RightClick?!1:(s==null||s({event:r}),!0)}}];const jd={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class BP extends qf{constructor(t){super(t,jd)}static setup(){return window.addEventListener(jd.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(jd.move.name,t)};function t(){}}}BP.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:s}=t;const{touches:a}=r;return a.length>1?!1:(s==null||s({event:r}),!0)}}];var Io;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Io||(Io={}));var Rc;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="Rever
88sedTreeOrder"})(Rc||(Rc={}));function FP(e){let{acceleration:t,activator:r=Io.Pointer,canScroll:s,draggingRect:a,enabled:i,interval:o=5,order:l=Rc.TreeOrder,pointerCoordinates:d,scrollableAncestors:m,scrollableAncestorRects:p,delta:h,threshold:x}=e;const b=KP({delta:h,disabled:!i}),[w,v]=eP(),S=u.useRef({x:0,y:0}),R=u.useRef({x:0,y:0}),E=u.useMemo(()=>{switch(r){case Io.Pointer:return d?{top:d.y,bottom:d.y,left:d.x,right:d.x}:null;case Io.DraggableRect:return a}},[r,a,d]),A=u.useRef(null),I=u.useCallback(()=>{const k=A.current;if(!k)return;const j=S.current.x*R.current.x,z=S.current.y*R.current.y;k.scrollBy(j,z)},[]),C=u.useMemo(()=>l===Rc.TreeOrder?[...m].reverse():m,[l,m]);u.useEffect(()=>{if(!i||!m.length||!E){v();return}for(const k of C){if((s==null?void 0:s(k))===!1)continue;const j=m.indexOf(k),z=p[j];if(!z)continue;const{direction:D,speed:B}=CP(k,z,E,t,x);for(const T of["x","y"])b[T][D[T]]||(B[T]=0,D[T]=0);if(B.x>0||B.y>0){v(),A.current=k,w(I,o),S.current=B,R.current=D;return}}S.current={x:0,y:0},R.current={x:0,y:0},v()},[t,I,s,v,i,o,JSON.stringify(E),JSON.stringify(b),w,m,C,p,JSON.stringify(x)])}const $P={x:{[mr.Backward]:!1,[mr.Forward]:!1},y:{[mr.Backward]:!1,[mr.Forward]:!1}};function KP(e){let{delta:t,disabled:r}=e;const s=_m(t);return dl(a=>{if(r||!s||!a)return $P;const i={x:Math.sign(t.x-s.x),y:Math.sign(t.y-s.y)};return{x:{[mr.Backward]:a.x[mr.Backward]||i.x===-1,[mr.Forward]:a.x[mr.Forward]||i.x===1},y:{[mr.Backward]:a.y[mr.Backward]||i.y===-1,[mr.Forward]:a.y[mr.Forward]||i.y===1}}},[r,t,s])}function VP(e,t){const r=t!=null?e.get(t):void 0,s=r?r.node.current:null;return dl(a=>{var i;return t==null?null:(i=s??a)!=null?i:null},[s,t])}function qP(e,t){return u.useMemo(()=>e.reduce((r,s)=>{const{sensor:a}=s,i=a.activators.map(o=>({eventName:o.eventName,handler:t(o.handler,s)}));return[...r,...i]},[]),[e,t])}var Ho;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Ho||(Ho={}));var Tm;(function(e){e.Optimized="optimized"})(Tm||(Tm={}));const rg=new Map;function UP(e,t){let{dragging:r,dependencies:s,config:a}=t;const[i,o]=u.useState(null),{frequency:l,measure:d,strategy:m}=a,p=u.useRef(e),h=S(),x=Uo(h),b=u.useCallback(function(R){R===void 0&&(R=[]),!x.current&&o(E=>E===null?R:E.concat(R.filter(A=>!E.includes(A))))},[x]),w=u.useRef(null),v=dl(R=>{if(h&&!r)return rg;if(!R||R===rg||p.current!==e||i!=null){const E=new Map;for(let A of e){if(!A)continue;if(i&&i.length>0&&!i.includes(A.id)&&A.rect.current){E.set(A.id,A.rect.current);continue}const I=A.node.current,C=I?new Vf(d(I),I):null;A.rect.current=C,C&&E.set(A.id,C)}return E}return R},[e,i,r,h,d]);return u.useEffect(()=>{p.current=e},[e]),u.useEffect(()=>{h||b()},[r,h]),u.useEffect(()=>{i&&i.length>0&&o(null)},[JSON.stringify(i)]),u.useEffect(()=>{h||typeof l!="number"||w.current!==null||(w.current=setTimeout(()=>{b(),w.current=null},l))},[l,h,b,...s]),{droppableRects:v,measureDroppableContainers:b,measuringScheduled:i!=null};function S(){switch(m){case Ho.Always:return!1;case Ho.BeforeDragging:return r;default:return!r}}}function lv(e,t){return dl(r=>e?r||(typeof t=="function"?t(e):e):null,[t,e])}function WP(e,t){return lv(e,t)}function HP(e){let{callback:t,disabled:r}=e;const s=$f(t),a=u.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(s)},[s,r]);return u.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function vu(e){let{callback:t,disabled:r}=e;const s=$f(t),a=u.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(s)},[r]);return u.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function ZP(e){return new Vf($i(e),e)}function sg(e,t,r){t===void 0&&(t=ZP);const[s,a]=u.useState(null);function i(){a(d=>{if(!e)return null;if(e.isConnected===!1){var m;return(m=d??r)!=null?m:null}const p=t(e);return JSON.stringify(d)===JSON.stringify(p)?d:p})}const o=HP({callback(d){if(e)for(const m of d){const{type:p,target:h}=m;if(p==="childList"&&h instanceof HTMLElement&&h.contains(e)){i();break}}}}),l=vu({callback:i});return As(()=>{i(),e?(l==null||l.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(l==null||l.disconnect(),o==null||o.disconnect())},[e]),s}function GP(e){const t=lv(e);return ev(e,t)}const ag=[];function YP(e){const t=u.useRef(e),r=dl(s=>e?s&&s!==ag&&e&&t.current&&e.parentNode===t.current.parentNode?s:xu(e):ag,[e]);return u.useEffect(()=>{t.current=e},[e]),r}function JP(e){const[t,r]=u.useState(null),s=u.useRef(e),a=u.useCallback(i=>{const o=vd(i.target);o&&r(l=>l?(l.set(o,Em(o)),new Map(l)):null)},[]);return u.useEffect(()=>{const i=s.current;if(e!==i){o(i);const l=e.map(d=>{const m=vd(d);return m?(m.addEventListener("scroll",a,{passive:!0}),[m,Em(m)]):null}).filter(d=>d!=null);r(l.length?new Map(l):null),s.current=e}return()=>{o(e),o(i)};function o(l){l.forEach(d=>{const m=vd(d);m==null||m.removeEventListener("scroll",a)})}},[a,e]),u.useMemo(()=>e.length?t?Array.from(t.values()).reduce((i,o)=>hi(i,o),hs):iv(e):hs,[e,t])}function ig(e,t){t===void 0&&(t=[]);const r=u.useRef(null);return u.useEffect(()=>{r.current=null},t),u.useEffect(()=>{const s=e!==hs;s&&!r.current&&(r.current=e),!s&&r.current&&(r.current=null)},[e]),r.current?Wo(e,r.current):hs}function QP(e){u.useEffect(()=>{if(!gu)return;const t=e.map(r=>{let{sensor:s}=r;return s.setup==null?void 0:s.setup()});return()=>{for(const r of t)r==null||r()}},e.map(t=>{let{sensor:r}=t;return r}))}function XP(e,t){return u.useMemo(()=>e.reduce((r,s)=>{let{eventName:a,handler:i}=s;return r[a]=o=>{i(o,t)},r},{}),[e,t])}function cv(e){return u.useMemo(()=>e?kP(e):null,[e])}const og=[];function eT(e,t){t===void 0&&(t=$i);const[r]=e,s=cv(r?Fr(r):null),[a,i]=u.useState(og);function o(){i(()=>e.length?e.map(d=>
88sv(d)?s:new Vf(t(d),d)):og)}const l=vu({callback:o});return As(()=>{l==null||l.disconnect(),o(),e.forEach(d=>l==null?void 0:l.observe(d))},[e]),a}function tT(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return ul(t)?t:e}function nT(e){let{measure:t}=e;const[r,s]=u.useState(null),a=u.useCallback(m=>{for(const{target:p}of m)if(ul(p)){s(h=>{const x=t(p);return h?{...h,width:x.width,height:x.height}:x});break}},[t]),i=vu({callback:a}),o=u.useCallback(m=>{const p=tT(m);i==null||i.disconnect(),p&&(i==null||i.observe(p)),s(p?t(p):null)},[t,i]),[l,d]=Pc(o);return u.useMemo(()=>({nodeRef:l,rect:r,setRef:d}),[r,l,d])}const rT=[{sensor:bu,options:{}},{sensor:yu,options:{}}],sT={current:{}},ec={draggable:{measure:Xh},droppable:{measure:Xh,strategy:Ho.WhileDragging,frequency:Tm.Optimized},dragOverlay:{measure:$i}};class Eo extends Map{get(t){var r;return t!=null&&(r=super.get(t))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:r}=t;return!r})}getNodeFor(t){var r,s;return(r=(s=this.get(t))==null?void 0:s.node.current)!=null?r:void 0}}const aT={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Eo,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Tc},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:ec,measureDroppableContainers:Tc,windowRect:null,measuringScheduled:!1},iT={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Tc,draggableNodes:new Map,over:null,measureDroppableContainers:Tc},Nu=u.createContext(iT),uv=u.createContext(aT);function oT(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Eo}}}function lT(e,t){switch(t.type){case sr.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case sr.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case sr.DragEnd:case sr.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case sr.RegisterDroppable:{const{element:r}=t,{id:s}=r,a=new Eo(e.droppable.containers);return a.set(s,r),{...e,droppable:{...e.droppable,containers:a}}}case sr.SetDroppableDisabled:{const{id:r,key:s,disabled:a}=t,i=e.droppable.containers.get(r);if(!i||s!==i.key)return e;const o=new Eo(e.droppable.containers);return o.set(r,{...i,disabled:a}),{...e,droppable:{...e.droppable,containers:o}}}case sr.UnregisterDroppable:{const{id:r,key:s}=t,a=e.droppable.containers.get(r);if(!a||s!==a.key)return e;const i=new Eo(e.droppable.containers);return i.delete(r),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function cT(e){let{disabled:t}=e;const{active:r,activatorEvent:s,draggableNodes:a}=u.useContext(Nu),i=_m(s),o=_m(r==null?void 0:r.id);return u.useEffect(()=>{if(!t&&!s&&i&&o!=null){if(!Kf(i)||document.activeElement===i.target)return;const l=a.get(o);if(!l)return;const{activatorNode:d,node:m}=l;if(!d.current&&!m.current)return;requestAnimationFrame(()=>{for(const p of[d.current,m.current]){if(!p)continue;const h=rP(p);if(h){h.focus();break}}})}},[s,t,a,o,i]),null}function uT(e,t){let{transform:r,...s}=t;return e!=null&&e.length?e.reduce((a,i)=>i({transform:a,...s}),r):r}function dT(e){return u.useMemo(()=>({draggable:{...ec.draggable,...e==null?void 0:e.draggable},droppable:{...ec.droppable,...e==null?void 0:e.droppable},dragOverlay:{...ec.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function mT(e){let{activeNode:t,measure:r,initialRect:s,config:a=!0}=e;const i=u.useRef(!1),{x:o,y:l}=typeof a=="boolean"?{x:a,y:a}:a;As(()=>{if(!o&&!l||!t){i.current=!1;return}if(i.current||!s)return;const m=t==null?void 0:t.node.current;if(!m||m.isConnected===!1)return;const p=r(m),h=ev(p,s);if(o||(h.x=0),l||(h.y=0),i.current=!0,Math.abs(h.x)>0||Math.abs(h.y)>0){const x=tv(m);x&&x.scrollBy({top:h.y,left:h.x})}},[t,o,l,s,r])}const dv=u.createContext({...hs,scaleX:1,scaleY:1}
88);var sa;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(sa||(sa={}));const mv=u.memo(function(t){var r,s,a,i;let{id:o,accessibility:l,autoScroll:d=!0,children:m,sensors:p=rT,collisionDetection:h=gP,measuring:x,modifiers:b,...w}=t;const v=u.useReducer(lT,void 0,oT),[S,R]=v,[E,A]=cP(),[I,C]=u.useState(sa.Uninitialized),k=I===sa.Initialized,{draggable:{active:j,nodes:z,translate:D},droppable:{containers:B}}=S,T=j!=null?z.get(j):null,P=u.useRef({initial:null,translated:null}),G=u.useMemo(()=>{var Ye;return j!=null?{id:j,data:(Ye=T==null?void 0:T.data)!=null?Ye:sT,rect:P}:null},[j,T]),W=u.useRef(null),[ke,L]=u.useState(null),[xe,Y]=u.useState(null),Ne=Uo(w,Object.values(w)),se=ml("DndDescribedBy",o),J=u.useMemo(()=>B.getEnabled(),[B]),Q=dT(x),{droppableRects:U,measureDroppableContainers:ne,measuringScheduled:H}=UP(J,{dragging:k,dependencies:[D.x,D.y],config:Q.droppable}),Z=VP(z,j),K=u.useMemo(()=>xe?Im(xe):null,[xe]),me=be(),$=WP(Z,Q.draggable.measure);mT({activeNode:j!=null?z.get(j):null,config:me.layoutShiftCompensation,initialRect:$,measure:Q.draggable.measure});const X=sg(Z,Q.draggable.measure,$),Ie=sg(Z?Z.parentElement:null),V=u.useRef({activatorEvent:null,active:null,activeNode:Z,collisionRect:null,collisions:null,droppableRects:U,draggableNodes:z,draggingNode:null,draggingNodeRect:null,droppableContainers:B,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Se=B.getNodeFor((r=V.current.over)==null?void 0:r.id),Ce=nT({measure:Q.dragOverlay.measure}),Be=(s=Ce.nodeRef.current)!=null?s:Z,Le=k?(a=Ce.rect)!=null?a:X:null,rt=!!(Ce.nodeRef.current&&Ce.rect),lt=GP(rt?null:X),Tt=cv(Be?Fr(Be):null),vt=YP(k?Se??Z:null),Pe=eT(vt),it=uT(b,{transform:{x:D.x-lt.x,y:D.y-lt.y,scaleX:1,scaleY:1},activatorEvent:xe,active:G,activeNodeRect:X,containerNodeRect:Ie,draggingNodeRect:Le,over:V.current.over,overlayNodeRect:Ce.rect,scrollableAncestors:vt,scrollableAncestorRects:Pe,windowRect:Tt}),yt=K?hi(K,D):null,wt=JP(vt),an=ig(wt),qt=ig(wt,[X]),Qt=hi(it,an),en=Le?bP(Le,it):null,Wt=G&&en?h({active:G,collisionRect:en,droppableRects:U,droppableContainers:J,pointerCoordinates:yt}):null,on=Qb(Wt,"id"),[mn,ln]=u.useState(null),cn=rt?it:hi(it,qt),Oe=xP(cn,(i=mn==null?void 0:mn.rect)!=null?i:null,X),re=u.useRef(null),ve=u.useCallback((Ye,ge)=>{let{sensor:He,options:hn}=ge;if(W.current==null)return;const Ht=z.get(W.current);if(!Ht)return;const _n=Ye.nativeEvent,wn=new He({active:W.current,activeNode:Ht,event:_n,options:hn,context:V,onAbort(fn){if(!z.get(fn))return;const{onDragAbort:zt}=Ne.current,tn={id:fn};zt==null||zt(tn),E({type:"onDragAbort",event:tn})},onPending(fn,Nn,zt,tn){if(!z.get(fn))return;const{onDragPending:An}=Ne.current,Ln={id:fn,constraint:Nn,initialCoordinates:zt,offset:tn};An==null||An(Ln),E({type:"onDragPending",event:Ln})},onStart(fn){const Nn=W.current;if(Nn==null)return;const zt=z.get(Nn);if(!zt)return;const{onDragStart:tn}=Ne.current,On={activatorEvent:_n,active:{id:Nn,data:zt.data,rect:P}};mo.unstable_batchedUpdates(()=>{tn==null||tn(On),C(sa.Initializing),R({type:sr.DragStart,initialCoordinates:fn,active:Nn}),E({type:"onDragStart",event:On}),L(re.current),Y(_n)})},onMove(fn){R({type:sr.DragMove,coordinates:fn})},onEnd:vn(sr.DragEnd),onCancel:vn(sr.DragCancel)});re.current=wn;function vn(fn){return async function(){const{active:zt,collisions:tn,over:On,scrollAdjustedTranslate:An}=V.current;let Ln=null;if(zt&&An){const{cancelDrop:pr}=Ne.current;Ln={activatorEvent:_n,active:zt,collisions:tn,delta:An,over:On},fn===sr.DragEnd&&typeof pr=="function"&&await Promise.resolve(pr(Ln))&&(fn=sr.DragCancel)}W.current=null,mo.unstable_batchedUpdates(()=>{R({type:fn}),C(sa.Uninitialized),ln(null),L(null),Y(null),re.current=null;const pr=fn===sr.DragEnd?"onDragEnd":"onDragCancel";if(Ln){const Un=Ne.current[pr];Un==null||Un(Ln),E({type:pr,event:Ln})}})}}},[z]),_e=u.useCallback((Ye,ge)=>(He,hn)=>{const Ht=He.nativeEvent,_n=z.get(hn);if(W.current!==null||!_n||Ht.dndKit||Ht.defaultPrevented)return;const wn={active:_n};Ye(He,ge.options,wn)===!0&&(Ht.dndKit={capturedBy:ge.sensor},W.current=hn,ve(He,ge))},[z,ve]),te=qP(p,_e);QP(p),As(()=>{X&&I===sa.Initializing&&C(sa.Initialized)},[X,I]),u.useEffect(()=>{const{onDragMove:Ye}=Ne.current,{active:ge,activatorEvent:He,collisions:hn,over:Ht}=V.current;if(!ge||!He)return;const _n={active:ge,activatorEvent:He,collisions:hn,delta:{x:Qt.x,y:Qt.y},over:Ht};mo.unstable_batchedUpdates(()=>
88{Ye==null||Ye(_n),E({type:"onDragMove",event:_n})})},[Qt.x,Qt.y]),u.useEffect(()=>{const{active:Ye,activatorEvent:ge,collisions:He,droppableContainers:hn,scrollAdjustedTranslate:Ht}=V.current;if(!Ye||W.current==null||!ge||!Ht)return;const{onDragOver:_n}=Ne.current,wn=hn.get(on),vn=wn&&wn.rect.current?{id:wn.id,rect:wn.rect.current,data:wn.data,disabled:wn.disabled}:null,fn={active:Ye,activatorEvent:ge,collisions:He,delta:{x:Ht.x,y:Ht.y},over:vn};mo.unstable_batchedUpdates(()=>{ln(vn),_n==null||_n(fn),E({type:"onDragOver",event:fn})})},[on]),As(()=>{V.current={activatorEvent:xe,active:G,activeNode:Z,collisionRect:en,collisions:Wt,droppableRects:U,draggableNodes:z,draggingNode:Be,draggingNodeRect:Le,droppableContainers:B,over:mn,scrollableAncestors:vt,scrollAdjustedTranslate:Qt},P.current={initial:Le,translated:en}},[G,Z,Wt,en,z,Be,Le,U,B,mn,vt,Qt]),FP({...me,delta:D,draggingRect:en,pointerCoordinates:yt,scrollableAncestors:vt,scrollableAncestorRects:Pe});const nt=u.useMemo(()=>({active:G,activeNode:Z,activeNodeRect:X,activatorEvent:xe,collisions:Wt,containerNodeRect:Ie,dragOverlay:Ce,draggableNodes:z,droppableContainers:B,droppableRects:U,over:mn,measureDroppableContainers:ne,scrollableAncestors:vt,scrollableAncestorRects:Pe,measuringConfiguration:Q,measuringScheduled:H,windowRect:Tt}),[G,Z,X,xe,Wt,Ie,Ce,z,B,U,mn,ne,vt,Pe,Q,H,Tt]),Fe=u.useMemo(()=>({activatorEvent:xe,activators:te,active:G,activeNodeRect:X,ariaDescribedById:{draggable:se},dispatch:R,draggableNodes:z,over:mn,measureDroppableContainers:ne}),[xe,te,G,X,R,se,z,mn,ne]);return Lr.createElement(Zb.Provider,{value:A},Lr.createElement(Nu.Provider,{value:Fe},Lr.createElement(uv.Provider,{value:nt},Lr.createElement(dv.Provider,{value:Oe},m)),Lr.createElement(cT,{disabled:(l==null?void 0:l.restoreFocus)===!1})),Lr.createElement(mP,{...l,hiddenTextDescribedById:se}));function be(){const Ye=(ke==null?void 0:ke.autoScrollEnabled)===!1,ge=typeof d=="object"?d.enabled===!1:d===!1,He=k&&!Ye&&!ge;return typeof d=="object"?{...d,enabled:He}:{enabled:He}}}),fT=u.createContext(null),lg="button",pT="Draggable";function hT(e){let{id:t,data:r,disabled:s=!1,attributes:a}=e;const i=ml(pT),{activators:o,activatorEvent:l,active:d,activeNodeRect:m,ariaDescribedById:p,draggableNodes:h,over:x}=u.useContext(Nu),{role:b=lg,roleDescription:w="draggable",tabIndex:v=0}=a??{},S=(d==null?void 0:d.id)===t,R=u.useContext(S?dv:fT),[E,A]=Pc(),[I,C]=Pc(),k=XP(o,t),j=Uo(r);As(()=>(h.set(t,{id:t,key:i,node:E,activatorNode:I,data:j}),()=>{const D=h.get(t);D&&D.key===i&&h.delete(t)}),[h,t]);const z=u.useMemo(()=>({role:b,tabIndex:v,"aria-disabled":s,"aria-pressed":S&&b===lg?!0:void 0,"aria-roledescription":w,"aria-describedby":p.draggable}),[s,b,v,S,w,p.draggable]);return{active:d,activatorEvent:l,activeNodeRect:m,attributes:z,isDragging:S,listeners:s?void 0:k,node:E,over:x,setNodeRef:A,setActivatorNodeRef:C,transform:R}}function gT(){return u.useContext(uv)}const xT="Droppable",yT={timeout:25};function bT(e){let{data:t,disabled:r=!1,id:s,resizeObserverConfig:a}=e;const i=ml(xT),{active:o,dispatch:l,over:d,measureDroppableContainers:m}=u.useContext(Nu),p=u.useRef({disabled:r}),h=u.useRef(!1),x=u.useRef(null),b=u.useRef(null),{disabled:w,updateMeasurementsFor:v,timeout:S}={...yT,...a},R=Uo(v??s),E=u.useCallback(()=>{if(!h.current){h.current=!0;return}b.current!=null&&clearTimeout(b.current),b.current=setTimeout(()=>{m(Array.isArray(R.current)?R.current:[R.current]),b.current=null},S)},[S]),A=vu({callback:E,disabled:w||!o}),I=u.useCallback((z,D)=>{A&&(D&&(A.unobserve(D),h.current=!1),z&&A.observe(z))},[A]),[C,k]=Pc(I),j=Uo(t);return u.useEffect(()=>{!A||!C.current||(A.disconnect(),h.current=!1,A.observe(C.current))},[C,A]),u.useEffect(()=>(l({type:sr.RegisterDroppable,element:{id:s,key:i,disabled:r,node:C,rect:x,data:j}}),()=>l({type:sr.UnregisterDroppable,key:i,id:s})),[s]),u.useEffect(()=>{r!==p.current.disabled&&(l({type:sr.SetDroppableDisabled,id:s,key:i,disabled:r}),p.current.disabled=r)},[s,i,r,l]),{active:o,rect:x,isOver:(d==null?void 0:d.id)===s,node:C,over:d,setNodeRef:k}}function Zo(e,t,r){const s=e.slice();return s.splice(r<0?s.length+r:r,0,s.splice(t,1)[0]),s}function vT(e,t){return e.reduce((r,s,a)=>{const i=t.get(s);return i&&(r[a]=i),r},Array(e.length))}function Bl(e){return e!==null&&e>=0}function NT(e,t){if(e===t)return!0;
88if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}function jT(e){return typeof e=="boolean"?{draggable:e,droppable:e}:e}const fv=e=>{let{rects:t,activeIndex:r,overIndex:s,index:a}=e;const i=Zo(t,s,r),o=t[a],l=i[a];return!l||!o?null:{x:l.left-o.left,y:l.top-o.top,scaleX:l.width/o.width,scaleY:l.height/o.height}},Fl={scaleX:1,scaleY:1},pv=e=>{var t;let{activeIndex:r,activeNodeRect:s,index:a,rects:i,overIndex:o}=e;const l=(t=i[r])!=null?t:s;if(!l)return null;if(a===r){const m=i[o];return m?{x:0,y:r<o?m.top+m.height-(l.top+l.height):m.top-l.top,...Fl}:null}const d=kT(i,a,r);return a>r&&a<=o?{x:0,y:-l.height-d,...Fl}:a<r&&a>=o?{x:0,y:l.height+d,...Fl}:{x:0,y:0,...Fl}};function kT(e,t,r){const s=e[t],a=e[t-1],i=e[t+1];return s?r<t?a?s.top-(a.top+a.height):i?i.top-(s.top+s.height):0:i?i.top-(s.top+s.height):a?s.top-(a.top+a.height):0:0}const hv="Sortable",gv=Lr.createContext({activeIndex:-1,containerId:hv,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:fv,disabled:{draggable:!1,droppable:!1}});function xv(e){let{children:t,id:r,items:s,strategy:a=fv,disabled:i=!1}=e;const{active:o,dragOverlay:l,droppableRects:d,over:m,measureDroppableContainers:p}=gT(),h=ml(hv,r),x=l.rect!==null,b=u.useMemo(()=>s.map(k=>typeof k=="object"&&"id"in k?k.id:k),[s]),w=o!=null,v=o?b.indexOf(o.id):-1,S=m?b.indexOf(m.id):-1,R=u.useRef(b),E=!NT(b,R.current),A=S!==-1&&v===-1||E,I=jT(i);As(()=>{E&&w&&p(b)},[E,b,w,p]),u.useEffect(()=>{R.current=b},[b]);const C=u.useMemo(()=>({activeIndex:v,containerId:h,disabled:I,disableTransforms:A,items:b,overIndex:S,useDragOverlay:x,sortedRects:vT(b,d),strategy:a}),[v,h,I.draggable,I.droppable,A,b,S,d,x,a]);return Lr.createElement(gv.Provider,{value:C},t)}const wT=e=>{let{id:t,items:r,activeIndex:s,overIndex:a}=e;return Zo(r,s,a).indexOf(t)},ST=e=>{let{containerId:t,isSorting:r,wasDragging:s,index:a,items:i,newIndex:o,previousItems:l,previousContainerId:d,transition:m}=e;return!m||!s||l!==i&&a===o?!1:r?!0:o!==a&&t===d},AT={duration:200,easing:"ease"},yv="transform",CT=_i.Transition.toString({property:yv,duration:0,easing:"linear"}),_T={roleDescription:"sortable"};function IT(e){let{disabled:t,index:r,node:s,rect:a}=e;const[i,o]=u.useState(null),l=u.useRef(r);return As(()=>{if(!t&&r!==l.current&&s.current){const d=a.current;if(d){const m=$i(s.current,{ignoreTransform:!0}),p={x:d.left-m.left,y:d.top-m.top,scaleX:d.width/m.width,scaleY:d.height/m.height};(p.x||p.y)&&o(p)}}r!==l.current&&(l.current=r)},[t,r,s,a]),u.useEffect(()=>{i&&o(null)},[i]),i}function bv(e){let{animateLayoutChanges:t=ST,attributes:r,disabled:s,data:a,getNewIndex:i=wT,id:o,strategy:l,resizeObserverConfig:d,transition:m=AT}=e;const{items:p,containerId:h,activeIndex:x,disabled:b,disableTransforms:w,sortedRects:v,overIndex:S,useDragOverlay:R,strategy:E}=u.useContext(gv),A=ET(s,b),I=p.indexOf(o),C=u.useMemo(()=>({sortable:{containerId:h,index:I,items:p},...a}),[h,a,I,p]),k=u.useMemo(()=>p.slice(p.indexOf(o)),[p,o]),{rect:j,node:z,isOver:D,setNodeRef:B}=bT({id:o,data:C,disabled:A.droppable,resizeObserverConfig:{updateMeasurementsFor:k,...d}}),{active:T,activatorEvent:P,activeNodeRect:G,attributes:W,setNodeRef:ke,listeners:L,isDragging:xe,over:Y,setActivatorNodeRef:Ne,transform:se}=hT({id:o,data:C,attributes:{..._T,...r},disabled:A.draggable}),J=XE(B,ke),Q=!!T,U=Q&&!w&&Bl(x)&&Bl(S),ne=!R&&xe,H=ne&&U?se:null,K=U?H??(l??E)({rects:v,activeNodeRect:G,activeIndex:x,overIndex:S,index:I}):null,me=Bl(x)&&Bl(S)?i({id:o,items:p,activeIndex:x,overIndex:S}):I,$=T==null?void 0:T.id,X=u.useRef({activeId:$,items:p,newIndex:me,containerId:h}),Ie=p!==X.current.items,V=t({active:T,containerId:h,isDragging:xe,isSorting:Q,id:o,index:I,items:p,newIndex:X.current.newIndex,previousItems:X.current.items,previousContainerId:X.current.containerId,transition:m,wasDragging:X.current.activeId!=null}),Se=IT({disabled:!V,index:I,node:z,rect:j});return u.useEffect(()=>{Q&&X.current.newIndex!==me&&(X.current.newIndex=me),h!==X.current.containerId&&(X.current.containerId=h),p!==X.current.items&&(X.current.items=p)},[Q,me,h,p]),u.useEffect(()=>{if($===X.current.activeId)return;if($!=null&&X.current.activeId==null){X.current.activeId=$;return}const Be=setTimeout(()=>{X.current.activeId=$},50);return()=>clearTimeout(Be)},[$]),{active:T,activeIndex:x,attributes:W,data:C,rect:j,index:I,newIndex:me,items:p,isOver:D,isSorting:Q,isDragging:xe,listeners:L,node:z,overIndex:S,over:Y,setNodeRef:J,setActivatorNodeRef:Ne,setDroppableNodeRef:B,setDraggableNodeRef:ke,transform:Se??K,transition:Ce()};
88function Ce(){if(Se||Ie&&X.current.newIndex===I)return CT;if(!(ne&&!Kf(P)||!m)&&(Q||V))return _i.Transition.toString({...m,property:yv})}}function ET(e,t){var r,s;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(r=e==null?void 0:e.draggable)!=null?r:t.draggable,droppable:(s=e==null?void 0:e.droppable)!=null?s:t.droppable}}function Mc(e){if(!e)return!1;const t=e.data.current;return!!(t&&"sortable"in t&&typeof t.sortable=="object"&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable)}const PT=[rn.Down,rn.Right,rn.Up,rn.Left],vv=(e,t)=>{let{context:{active:r,collisionRect:s,droppableRects:a,droppableContainers:i,over:o,scrollableAncestors:l}}=t;if(PT.includes(e.code)){if(e.preventDefault(),!r||!s)return;const d=[];i.getEnabled().forEach(h=>{if(!h||h!=null&&h.disabled)return;const x=a.get(h.id);if(x)switch(e.code){case rn.Down:s.top<x.top&&d.push(h);break;case rn.Up:s.top>x.top&&d.push(h);break;case rn.Left:s.left>x.left&&d.push(h);break;case rn.Right:s.left<x.left&&d.push(h);break}});const m=pP({collisionRect:s,droppableRects:a,droppableContainers:d});let p=Qb(m,"id");if(p===(o==null?void 0:o.id)&&m.length>1&&(p=m[1].id),p!=null){const h=i.get(r.id),x=i.get(p),b=x?a.get(x.id):null,w=x==null?void 0:x.node.current;if(w&&b&&h&&x){const S=xu(w).some((k,j)=>l[j]!==k),R=Nv(h,x),E=TT(h,x),A=S||!R?{x:0,y:0}:{x:E?s.width-b.width:0,y:E?s.height-b.height:0},I={x:b.left,y:b.top};return A.x&&A.y?I:Wo(I,A)}}}};function Nv(e,t){return!Mc(e)||!Mc(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function TT(e,t){return!Mc(e)||!Mc(t)||!Nv(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}const DT=/^[a-z0-9_]+$/;function lo(e,t){return{name:e.name,numberOffset:e.numberOffset??0,schema:structuredClone(t)}}function RT(e,t){return JSON.stringify(e)===JSON.stringify(t)}function MT(e){const t=new Set;for(const r of e){if(!r.label.trim())return"Jedes Feld braucht einen Anzeigenamen.";if(!r.key.trim())return"Jedes Feld braucht einen technischen Key.";if(!DT.test(r.key))return`Key â${r.key}â ist ungültig (nur aâz, 0â9, _).`;if(t.has(r.key))return`Doppelter Key â${r.key}â.`;t.add(r.key)}return null}const jv=[{value:"text",label:"Text"},{value:"number",label:"Zahl"},{value:"boolean",label:"Ja / Nein"},{value:"select",label:"Auswahl"},{value:"url",label:"URL"}],OT={text:"bg-muted text-muted-foreground",number:"bg-info/15 text-info",boolean:"bg-warning/15 text-warning",select:"bg-primary/10 text-primary",url:"bg-success/15 text-success"};function LT(){return{key:"",label:"",type:"text",required:!1,computed:void 0}}function zT({id:e,field:t,index:r,onChange:s,onDelete:a}){const i=u.useId(),{attributes:o,listeners:l,setNodeRef:d,setActivatorNodeRef:m,transform:p,transition:h,isDragging:x}=bv({id:e}),b={transform:_i.Transform.toString(p),transition:h},w=(R,E)=>s({...t,[R]:E}),v=!!t.computed,S=t.key==="matching_key"||t.key==="matching_keys";return n.jsxs("div",{ref:d,style:b,className:ye("group relative rounded-lg border border-border bg-card px-3 py-2.5 shadow-sm transition-shadow",x?"z-50 shadow-lg ring-2 ring-primary/30 opacity-90":"hover:shadow-md",v&&"border-amber-200 bg-amber-50/40 dark:border-amber-800/40 dark:bg-amber-950/20"),children:[n.jsxs("div",{className:"grid grid-cols-[auto_1fr_1fr_140px_88px_auto_36px] items-center gap-2",children:[n.jsx("button",{type:"button",ref:m,...l,...o,className:"cursor-grab touch-none text-muted-foreground/40 transition-colors group-hover:text-muted-foreground active:cursor-grabbing focus-visible:outline-none","aria-label":`Feld ${r+1} verschieben`,tabIndex:-1,children:n.jsx(Dg,{className:"size-4 shrink-0"})}),n.jsxs("div",{className:"space-y-0.5",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:"Anzeigename"}),n.jsx(Ze,{id:`${i}-label`,value:t.label,onChange:R=>w("label",R.target.value),placeholder:"z. B. Spannung",className:"h-8 text-sm"})]}),n.jsxs("div",{className:"space-y-0.5",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:"Technischer Key"}),n.jsx(Ze,{id:`${i}-key`,value:t.key,onChange:R=>w("key",R.target.value.toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,"")),placeholder:"z. B. spannung",className:"h-8 font-mono text-xs"})]}),n.jsxs("div",{className:"space-y-0.5",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:"Typ"}),n.jsxs(_t,{value:t.type,onValueChange:R=>w("type",R),disabled:v,children:[n.jsx(It,{className:"h-8 text-sm",children:n.jsx(Et,{})}),n.jsx(Pt,{children:jv.map(R=>n.jsx(ft,{value:R.value,children:R.label},R.value))})]})]}),n.jsxs("div",{className:"space-y-0.5",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:"Einheit"}),n.jsx(Ze,{value:t.unit??"",onChange:R=>w("unit",R.target.value||void 0),placeholder:"V, kg, °C â¦",className:"h-8 text-sm",disabled:t.type!=="number"||v})]}),n.jsxs("div",{className:"flex flex-col items-center space-y-0.5",children:[n.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-muted-foreground",title:"Berechnetes Feld â Wert wird automatisch vom Worker aus anderen Feldern erzeugt",children:"Berechnet"}),n.jsx("button",{type:"button",onClick:()=>{S||w("computed",v?void 0:"%value%_%package%")},disabled:S,className:ye("mt-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",v?"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-400":"bg-muted text-muted-foreground hover:bg-muted/80",S&&"cursor-not-allowed opacity-70"),children:v?"Ja":"Nein"})]}),n.jsx(ee,{type:"button",variant:"ghost",size:"icon",onClick:a,disabled:S,className:"size-8 shrink-0 text-muted-foreground hover:text-destructive","aria-label":`Feld ${r+1} löschen`,children:n.jsx(or,{className:"size-4"})})]}),v&&n.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md bg-amber-100/60 px-2.5 py-1.5 dark:bg-amber-900/20",children:[n.jsx("span",{className:"shrink-0 text-[10px] font-medium uppercase tracking-wider text-amber-700 dark:text-amber-400",children:"Formel"}),n.jsx(Ze,{value:t.computed??"",onChange:R=>w("computed",R.target.value||void 0),placeholder:"%value%_%package%",disabled:S,className:"h-6 flex-1 border-0 bg-transparent px-1 font-mono text-xs text-amber-800 shadow-none focus-visible:ring-0 dark:text-amber-300"}),n.jsx("span",{className:"shrink-0 text-[10px] text-amber-600 dar
88k:text-amber-500",children:S?"Template in Systemeinstellungen":"Platzhalter: %value%, %package%, %name%, %mpn%"})]})]})}function BT({definition:e,count:t,isSelected:r,onClick:s}){const{attributes:a,listeners:i,setNodeRef:o,setActivatorNodeRef:l,transform:d,transition:m,isDragging:p}=bv({id:e.id}),h={transform:_i.Transform.toString(d),transition:m};return n.jsxs("div",{ref:o,style:h,className:ye("flex items-center gap-1 rounded-lg transition-colors",r?"bg-sidebar-accent text-sidebar-accent-foreground":"hover:bg-muted/60",p&&"z-50 opacity-90 shadow-lg ring-2 ring-primary/30"),children:[n.jsx("button",{type:"button",ref:l,...i,...a,className:"cursor-grab touch-none px-1 py-2.5 text-muted-foreground/40 hover:text-muted-foreground active:cursor-grabbing","aria-label":`${e.name} verschieben`,tabIndex:-1,children:n.jsx(Dg,{className:"size-4 shrink-0"})}),n.jsxs("button",{type:"button",onClick:s,className:"flex min-w-0 flex-1 items-center justify-between gap-3 py-2.5 pr-3 text-left",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:ye("truncate text-sm font-medium",r&&"text-sidebar-accent-foreground"),children:e.name}),n.jsxs("p",{className:"truncate text-[11px] text-muted-foreground",children:["Nummernkreis ab ",(e.numberPrefix||0).toLocaleString("de")]})]}),n.jsx(bt,{className:"border-transparent bg-muted text-muted-foreground text-[10px] py-0",children:t})]})]})}function FT({category:e,isSelected:t,onClick:r}){const s=jo(e.id);return n.jsxs("button",{type:"button",onClick:r,className:ye("flex w-full items-center justify-between gap-3 rounded-lg px-3 py-2.5 text-left transition-colors",t?"bg-sidebar-accent text-sidebar-accent-foreground":"hover:bg-muted/60 text-foreground"),children:[n.jsxs("div",{className:"min-w-0",children:[n.jsxs("p",{className:ye("truncate text-sm font-medium",t&&"text-sidebar-accent-foreground"),children:[e.name,s&&n.jsx("span",{className:"ml-1.5 text-xs font-normal text-muted-foreground",children:"(Entwurf)"})]}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["ab ",e.numberPrefix.toLocaleString("de")]})]}),n.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[n.jsx(bt,{className:"border-transparent bg-muted text-muted-foreground text-[10px] py-0",children:e.schema.length}),n.jsx(ua,{className:ye("size-3.5 text-muted-foreground transition-transform",t&&"rotate-90")})]})]})}function $T({category:e,definitionName:t,definitionNumberPrefix:r,allCategories:s,onUpdate:a,onSave:i,onDelete:o,onFieldPropagated:l,isSaving:d,isDeleting:m}){const[p,h]=u.useState(!1),[x,b]=u.useState(e.schema),[w,v]=u.useState(()=>e.schema.map(()=>crypto.randomUUID())),[S,R]=u.useState(()=>lo(e,e.schema)),[E,A]=u.useState(null),[I,C]=u.useState(!1),[k,j]=u.useState(new Set),[z,D]=u.useState(!1),B=u.useRef(null),T=JSON.stringify(e.schema);u.useEffect(()=>{const U=lo(e,e.schema);R(U),b(U.schema),v(U.schema.map(()=>crypto.randomUUID()))},[e.id,T]);const P=!RT(lo(e,x),S);function G(U,ne){b(H=>{const Z=[...H];return Z[U]=ne,Z})}function W(U){const ne=x.filter((Z,K)=>K!==U),H=w.filter((Z,K)=>K!==U);b(ne),v(H),(async()=>{try{const Z=await i({...e,schema:ne}),K=Z.schema.map($=>{const X=ne.find(Ie=>Ie.key===$.key);return X?{...$,computed:X.computed??$.computed}:$}),me=lo(Z,K);R(me),b(me.schema),v(me.schema.map(()=>crypto.randomUUID())),M.success("Feld gelöscht",{description:Z.name})}catch{M.error("Feld konnte nicht gelöscht werden.")}})()}function ke(){b(U=>(A(U.length),[...U,LT()])),v(U=>[...U,crypto.randomUUID()])}function L(U){s.length!==0&&(B.current=U,j(new Set(s.map(ne=>ne.id))),C(!0))}async function xe(){const U=B.current;if(!U||k.size===0)return;D(!0);let ne=0;try{const H=s.filter(Z=>k.has(Z.id));await Promise.allSettled(H.map(async Z=>{if(Z.schema.some(me=>me.key===U.key&&U.key!==""))return;const K=[...Z.schema,U];await Ex(Z.id,{schemaConfig:K.map(ky)}),l(Z.id,K),ne++})),M.success(`Eigenschaft auf ${ne} Warengruppe(n) übertragen.`),C(!1),A(null)}finally{D(!1)}}const Y=Gb(Dc(bu,{activationConstraint:{distance:8}}),Dc(yu,{coordinateGetter:vv}));function Ne(U){const{active:ne,over:H}=U;if(!H||ne.id===H.id)return;const Z=w.indexOf(ne.id),K=w.indexOf(H.id);b(me=>Zo(me,Z,K)),v(me=>Zo(me,Z,K))}async function se(){const U=MT(x);if(U){M.error(U);return}if(!e.name.trim()){M.error("Bitte einen Namen für die Warengruppe eingeben.");return}try{const ne=await i({...e,schema:x}),H=ne.schema.map(K=>{const me=x.find($=>$.key===K.key);return me?{...K,computed:me.computed??K.computed}:K}),Z=lo(ne,H);R(Z),b(Z.schema),v(Z.schema.map(()=>crypto.randomUUID())),M.success("Schema gespeichert",{description:ne.name})}catch(ne){M.error(ne instanceof ut?ne.message:"Schema konnte nicht gespeichert werden")}}function J(){a({name:S.name,numberOffset:S.numberOffset,numberPrefix:Fo(r,S.numberOffset)}),b(structuredClone(S.schema)),v(S.schema.map(()=>crypto.randomUUID()))}async function Q(){try{await o(e),h(!1),M.success("Warengruppe gelöscht",{description:e.name})}
88catch(U){M.error(U instanceof ut?U.message:"Warengruppe konnte nicht gelöscht werden")}}return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[n.jsxs("div",{className:"flex items-center justify-between gap-4 border-b border-border px-6 py-4",children:[n.jsxs("div",{className:"flex items-center gap-2.5",children:[n.jsx("div",{className:"flex size-8 items-center justify-center rounded-md bg-primary/10",children:n.jsx(Po,{className:"size-4 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold leading-tight",children:e.name}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[x.length," Eigenschaften"]})]})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5 text-destructive hover:text-destructive",disabled:d||m,onClick:()=>h(!0),children:[m?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(or,{className:"size-3.5"}),"Löschen"]}),P&&n.jsxs(ee,{type:"button",variant:"ghost",size:"sm",className:"gap-1.5",onClick:J,children:[n.jsx(Rg,{className:"size-3.5"}),"Ãnderungen verwerfen"]}),n.jsxs(ee,{type:"button",size:"sm",className:"gap-1.5",disabled:!P||d,onClick:()=>void se(),children:[d?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(vs,{className:"size-3.5"}),"Schema speichern"]})]})]}),n.jsx(da,{open:p,onOpenChange:h,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:"Warengruppe löschen?"}),n.jsx(ha,{children:jo(e.id)?n.jsxs(n.Fragment,{children:["Der Entwurf ",n.jsx("strong",{children:e.name})," wird verworfen. Es wurde noch nichts in der Datenbank gespeichert."]}):n.jsxs(n.Fragment,{children:["Die Warengruppe ",n.jsx("strong",{children:e.name})," wird dauerhaft gelöscht. Artikel mit dieser Warengruppe behalten ihre gespeicherte Kategorie, verlieren aber das zugehörige Schema."]})})]}),n.jsxs(ga,{children:[n.jsx(xa,{disabled:m,children:"Abbrechen"}),n.jsx(ya,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",disabled:m,onClick:U=>{U.preventDefault(),Q()},children:m?"Wird gelöschtâ¦":"Löschen"})]})]})}),n.jsx("div",{className:"flex-1 overflow-y-auto",children:n.jsxs("div",{className:"space-y-8 px-6 py-6",children:[n.jsxs("section",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Om,{className:"size-4 text-muted-foreground"}),n.jsx("h3",{className:"text-sm font-semibold",children:"Grunddaten"})]}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[n.jsx(ze,{children:"Artikelart"}),n.jsx(Ze,{value:t,readOnly:!0,disabled:!0,className:"bg-muted/40"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:`cat-name-${e.id}`,children:"Name der Warengruppe"}),n.jsx(Ze,{id:`cat-name-${e.id}`,value:e.name,onChange:U=>a({name:U.target.value}),placeholder:"z. B. Elektronik"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:`cat-offset-${e.id}`,children:n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx(rc,{className:"size-3.5"}),"Offset zur Artikelart"]})}),n.jsx(Ze,{id:`cat-offset-${e.id}`,type:"number",min:1e4,step:1e4,value:e.numberOffset??"",onChange:U=>{const ne=parseInt(U.target.value,10)||0;a({numberOffset:ne,numberPrefix:Fo(r,ne)})},className:"font-mono"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Artikel starten ab"," ",n.jsx("span",{className:"font-mono",children:e.numberPrefix.toLocaleString("de")})," ","(Artikelart ",r.toLocaleString("de")," + Offset)."]})]})]})]}),n.jsx(To,{}),n.jsxs("section",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold",children:"Schema-Builder"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Diese Felder erscheinen beim Anlegen / Bearbeiten von Artikeln die
88ser Warengruppe. Reihenfolge per Drag & Drop ändern."})]}),x.length>0&&n.jsx("div",{className:"flex shrink-0 flex-wrap gap-1",children:Object.entries(x.reduce((U,ne)=>(U[ne.type]=(U[ne.type]??0)+1,U),{})).map(([U,ne])=>{var H;return n.jsxs(bt,{className:ye("border-transparent text-[10px] font-medium py-0",OT[U]),children:[ne,"à ",(H=jv.find(Z=>Z.value===U))==null?void 0:H.label]},U)})})]}),x.length===0?n.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border py-10 text-center",children:[n.jsx("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted",children:n.jsx(Po,{className:"size-5 text-muted-foreground"})}),n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:"Keine Eigenschaften definiert"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Füge Felder hinzu, um das Formular für diese Warengruppe zu erweitern."})]}),n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",onClick:ke,children:[n.jsx(Gn,{className:"size-4"}),"Erste Eigenschaft hinzufügen"]})]}):n.jsxs("div",{className:"space-y-2 overflow-x-auto",children:[n.jsx(mv,{sensors:Y,collisionDetection:Xb,onDragEnd:Ne,children:n.jsx(xv,{items:w,strategy:pv,children:x.map((U,ne)=>n.jsx(zT,{id:w[ne],field:U,index:ne,onChange:H=>G(ne,H),onDelete:()=>W(ne)},w[ne]))})}),E!==null&&x[E]&&s.length>0&&n.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md border border-primary/30 bg-primary/5 px-3 py-2",children:[n.jsx(Du,{className:"size-3.5 shrink-0 text-primary"}),n.jsxs("p",{className:"min-w-0 flex-1 text-xs text-muted-foreground",children:["Neue Eigenschaft",x[E].label?` â${x[E].label}"`:""," auf andere Warengruppen übertragen?"]}),n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 shrink-0 text-xs",onClick:()=>L(x[E]),children:"Auswählen"}),n.jsx(ee,{type:"button",size:"sm",variant:"ghost",className:"h-7 shrink-0 text-xs text-muted-foreground",onClick:()=>A(null),children:"Nein"})]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"mt-2 w-full gap-1.5 border-dashed",onClick:ke,children:[n.jsx(Gn,{className:"size-4"}),"Eigenschaft hinzufügen"]})]})]})]})}),n.jsx(En,{open:I,onOpenChange:C,children:n.jsxs(Pn,{className:"max-w-sm",children:[n.jsx(Tn,{children:n.jsxs(Dn,{className:"flex items-center gap-2",children:[n.jsx(Du,{className:"size-4 text-primary"}),"Auf andere Warengruppen übertragen"]})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Wähle die Warengruppen, die diese Eigenschaft ebenfalls erhalten sollen. Warengruppen, die den Key bereits besitzen, werden übersprungen."}),n.jsxs("div",{className:"max-h-60 space-y-1 overflow-y-auto rounded-md border border-border p-2",children:[n.jsx("button",{type:"button",className:"mb-1 w-full rounded px-2 py-1 text-left text-xs font-medium text-muted-foreground hover:bg-muted",onClick:()=>j(k.size===s.length?new Set:new Set(s.map(U=>U.id))),children:k.size===s.length?"Alle abwählen":"Alle auswählen"}),s.map(U=>n.jsxs("label",{className:"flex cursor-pointer items-center gap-2.5 rounded px-2 py-1.5 text-sm hover:bg-muted",children:[n.jsx("input",{type:"checkbox",className:"size-4 rounded",checked:k.has(U.id),onChange:ne=>{const H=new Set(k);ne.target.checked?H.add(U.id):H.delete(U.id),j(H)}}),n.jsx("span",{className:"flex-1 truncate",children:U.name}),U.schema.some(ne=>{var H;return ne.key===(((H=B.current)==null?void 0:H.key)??"")&&ne.key!==""})&&n.jsx(bt,{variant:"outline",className:"text-[10px]",children:"bereits vorhanden"})]},U.id))]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",onClick:()=>C(!1),children:"Abbrechen"}),n.jsxs(ee,{type:"button",disabled:k.size===0||z,onClick:()=>void xe(),children:[z?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(Du,{className:"size-4"}),"Ãbertragen (",k.size,")"]})]})]})})]})}function KT(){const e=zf(),{settings:t}=Mn(),{session:r}=os(),s=t.isFourEyesActive===!0,a=(r==null?void 0:r.role)==="admin",[i,o]=u.useState([]),[l,d]=u.useState([]),[m,p]=u.useState(null),[h,x]=u.useState(null),[b,w]=u.useState(!0),[v,S]=u.useState(!1),[R,E]=u.useState(!1),[A,I]=u.useState(!1),[C,k]=u.useState(!1),[j,z]=u.useState(""),[D,B]=u.useState("RAW_MATERIAL"),[T,P]=u.useState(""),G=Gb(Dc(bu),Dc(yu,{coordinateGetter:vv}));u.useEffect(()=>{let V=!1;return(async()=>{var Se;w(!0);try{const Ce=await Ri(),Be=await iu(Ce);if(V)return;d(Ce),o(Be);const Le=((Se=Ce[0])==null?void 0:Se.id)??null;p(rt=>rt&&Ce.some(lt=>lt.id===rt)?rt:Le),x(rt=>{var Tt;if(rt&&Be.some(vt=>vt.id===rt))return rt;const lt=Be.find(vt=>vt.itemTypeDefinitionId===Le);return(lt==null?void 0:lt.id)??((Tt=Be[0])==null?void 0:Tt.id)??null})}catch(Ce){M.error(Ce instanceof ut?Ce.message:"Einstellungen konnten nicht geladen werden")}finally{V||w(!1)}})(),()=>{V=!0}},[]);const[W,ke]=u.useState(""),L=u.useMemo(()=>l.find(V=>V.id===m)??null,[l,m]);u.useEffect(()=>{P((L==null?void 0:L.name)??""),ke(String((L==null?void 0:L.numberPrefix)??""))},[L==null?void 0:L.id,L==null?void 0:L.name,L==null?void 0:L.numberPrefix]);const xe=u.useMemo(()=>L?Ha(i,L.id):[],[i,L]),Y=xe.find(V=>V.id===h)??xe[0]??null;u.useEffect(()=>{var V;h&&xe.some(Se=>Se.id===h)||x(((V=xe[0])==null?void 0:V.id)??null)},[m,xe,h]);const Ne=u.useMemo(()=>{const V=Object.fromEntries(l.map(Se=>[Se.id,0]));for(const Se of i)Se.itemTypeDefinitionId&&V[Se.itemTypeDefinitionId]!=null&&(V[Se.itemTypeDefinitionId]+=1);return V},[i,l]),se=V=>{h&&o(Se=>Se.map(Ce=>Ce.id===h?{...Ce,...V}:Ce))};function J(V,Se){o(Ce=>Ce.map(Be=>Be.id===V?{...Be,schema:Se}:Be))}async function Q(V){if(s&&!a)throw M.error("Warengruppen-Stammdaten können bei aktivem 4-Augen-Prinzip nur von Administratoren geändert werden."),new Error("four_eyes_admin_only");if(!V.name.trim())throw new Error("Bitte einen Namen für die Warengruppe eingeben.");if(!L)throw new Error("Bitte zuerst eine Artikelart wählen.");S(!0);try{const Se={name:V.name.trim(),itemTypeDefinitionId:L.id,numberOffset:V.numberOffset,schemaConfig:V.schema.map(ky)},Ce=jo(V.id)?await Cw(Se):await Ex(V.id,Se),Be=i.findIndex(rt=>rt.id===V.id),Le=jy(Ce,L,Be>=0?Be:i.length);return o(rt=>jo(V.id)?rt.filter(lt=>lt.id!==V.id).concat(Le):rt.map(lt=>lt.id===V.id?Le:lt)),x(Le.id),Le}finally{S(!1)}}function U(){if(!L){M.error("Bitte zuerst eine Artikelart wählen.");return}const V=XA(i,L);o(Se=>[...Se,V]),x(V.id)}async function ne(V){E(!0);try{jo(V.id)||await _w(V.id);const Se=i.filter(Ce=>Ce.id!==V.id);o(Se),x(Ce=>{var Le;return Ce!==V.id?Ce:((Le=Ha(Se,V.itemTypeDefinitionId)[0])==null?void 0:Le.id)??null})}finally{E(!1)}}async function H(){const V=j.trim();if(!V){M.error("Bitte einen Namen für die Artikelart eingeben.");return}I(!0);try{const Se=await Iw({name:V,behaviorType:D,hasBom:ca[D].allowsBom,hasSourcing:ca[D].procurement==="purchase"||ca[D].procurement==="internal_or_purchase"});d(Ce=>[...Ce,Se]),p(Se.id),k(!1),z(""),B("RAW_MATERIAL"),M.success("Artikelart angelegt")}catch(Se){M.error(Se instanceof ut?Se.message:"Artikelart konnte nicht angelegt werden")}finally{I(!1)}}async function Z(){if(!L)return;const V=T.trim();if(!(!V||V===L.name)){I(!0);try{const Se=await El(L.id,{name:V});d(Ce=>Ce.map(Be=>Be.id===Se.id?Se:Be)),M.success("Artikelart gespeichert")}catch(Se){M.error(Se instanceof ut?Se.message:"Artikelart konnte nicht gespeichert werden")}finally{I(!1)}}}async function K(){if(!L)return;const V=parseInt(W,10);if(!Number.isFinite(V)||V<=0){M.error("Bitte einen gültigen Nummernkreis eingeben.");return}if(V!==L.numberPrefix){I(!0);try{const Se=await El(L.id,{numberPrefix:V});d(Ce=>Ce.map(Be=>Be.id===Se.id?Se:Be)),o(Ce=>Ce.map(Be=>Be.itemTypeDefinitionId===Se.id?{...Be,numberPrefix:Fo(Se.numberPrefix,Be.numberOffset??0)}:Be)),M.success("Nummernkreis gespeichert")}catch(Se){M.error(Se instanceof ut?Se.message:"Nummernkreis konnte nicht gespeichert werden")}finally{I(!1)}}}async function me(V){if(!(!L||V===L.hasBom)){I(!0);try{const Se=await El(L.id,{hasBom:V});d(Ce=>Ce.map(Be=>Be.id===Se.id?Se:Be)),M.success(V?"Stückliste aktiviert":"Stückliste deaktiviert")}catch(Se){M.error(Se instanceof ut?Se.message:"Einstellung konnte nicht gespeichert werden")}finally{I(!1)}}}async function $(V){if(!(!L||V===L.hasSourcing)){I(!0);try{const Se=await El(L.id,{hasSourcing:V});d(Ce=>Ce.map(Be=>Be.id===Se.id?Se:Be)),M.success(V?"Bezugsquellen aktiviert":"Bezugsquellen deaktiviert")}catch(Se){M.error(Se instanceof ut?Se.message:"Einstellung konnte nicht gespeichert werden")}finally{I(!1)}}}async function X(){var V;if(L){I(!0);try{await Pw(L.id);const Se=l.filter(Ce=>
88Ce.id!==L.id);d(Se),p(((V=Se[0])==null?void 0:V.id)??null),M.success("Artikelart gelöscht")}catch(Se){M.error(Se instanceof ut?Se.message:"Artikelart konnte nicht gelöscht werden")}finally{I(!1)}}}async function Ie(V){const{active:Se,over:Ce}=V;if(!Ce||Se.id===Ce.id)return;const Be=l.findIndex(lt=>lt.id===Se.id),Le=l.findIndex(lt=>lt.id===Ce.id);if(Be<0||Le<0)return;const rt=Zo(l,Be,Le);d(rt);try{const lt=await Ew(rt.map(Tt=>Tt.id));d(lt)}catch(lt){d(l),M.error(lt instanceof ut?lt.message:"Reihenfolge konnte nicht gespeichert werden")}}return n.jsxs("div",{className:Kb(`${e} flex flex-col overflow-hidden`),children:[n.jsxs("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-border bg-background px-6",children:[n.jsxs(lr,{to:"/einstellungen",className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground transition-colors hover:text-foreground",children:[n.jsx(Ks,{className:"size-3.5"}),"Einstellungen"]}),n.jsx("span",{className:"text-xs text-muted-foreground/40",children:"/"}),n.jsx("span",{className:"text-xs font-medium text-foreground",children:"Artikelarten & Warengruppen"})]}),n.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[n.jsxs("aside",{className:"flex w-56 shrink-0 flex-col border-r border-border bg-background",children:[n.jsx("div",{className:"flex h-14 items-center border-b border-border px-4",children:n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-semibold leading-tight",children:"Artikelarten"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Reihenfolge per Drag & Drop"})]})}),n.jsx("nav",{className:"flex-1 space-y-0.5 overflow-y-auto p-2",children:b?n.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:n.jsx(Me,{className:"size-5 animate-spin"})}):l.length===0?n.jsx("p",{className:"px-2 py-4 text-xs text-muted-foreground",children:"Noch keine Artikelarten â unten anlegen."}):n.jsx(mv,{sensors:G,collisionDetection:Xb,onDragEnd:V=>void Ie(V),children:n.jsx(xv,{items:l.map(V=>V.id),strategy:pv,children:l.map(V=>n.jsx(BT,{definition:V,count:Ne[V.id]??0,isSelected:V.id===m,onClick:()=>p(V.id)},V.id))})})}),L&&n.jsxs("div",{className:"space-y-2 border-t border-border p-3",children:[n.jsx(ze,{htmlFor:"definition-name",className:"text-xs",children:"Name der Artikelart"}),n.jsx(Ze,{id:"definition-name",value:T,onChange:V=>P(V.target.value),onBlur:()=>void Z(),disabled:A}),n.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Verhalten: ",Hr(L.behaviorType)]}),n.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-md border border-border px-3 py-2",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"text-xs font-medium",children:"Hat Stückliste"}),n.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Stücklisten-Tab und manuelle Stücklisten-Pflege für Artikel dieser Art"})]}),n.jsx(Ir,{checked:L.hasBom,disabled:A,onCheckedChange:V=>void me(V),"aria-label":"Hat Stückliste"})]}),n.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-md border border-border px-3 py-2",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"text-xs font-medium",children:"Hat Bezugsquellen"}),n.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Lieferanten & Preise auf dem Tab Lager & Beschaffung"})]}),n.jsx(Ir,{checked:L.hasSourcing,disabled:A,onCheckedChange:V=>void $(V),"aria-label":"Hat Bezugsquellen"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"definition-prefix",className:"text-xs",children:"Nummernkreis (Artikelart)"}),n.jsx(Ze,{id:"definition-prefix",type:"number",min:1e5,step:1e5,value:W,onChange:V=>ke(V.target.value),onBlur:()=>void K(),disabled:A,className:"font-mono text-sm"})]}),n.jsx(ee,{type:"button",variant:"outline",size:"sm",className:"w-full text-destructive hover:text-destructive",disabled:A,onClick:()=>void X(),children:"Artikelart löschen"})]}),n.jsx("div",{className:"border-t border-border p-3",children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"w-full gap-1.5",onClick:()=>k(!0),children:[n.jsx(Gn,{className:"size-4"}),"Neue Artikelart"]})})]}),n.jsx(da,{open:C,onOpenChange:k,children:n.jsxs(ma,{children:[n.jsxs(fa,{children:[n.jsx(pa,{children:"Neue Artikelart"}),n.jsx(ha,{children:"Name frei wählbar â das Verhalten (Stückliste, Lager, Beschaffung) kommt vom Stammt
88yp."})]}),n.jsxs("div",{className:"space-y-4 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"new-definition-name",children:"Name"}),n.jsx(Ze,{id:"new-definition-name",value:j,onChange:V=>z(V.target.value),placeholder:"z. B. Verbrauchsmaterial"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{children:"Stammtyp (Verhalten)"}),n.jsxs(_t,{value:D,onValueChange:V=>B(V),children:[n.jsx(It,{children:n.jsx(Et,{})}),n.jsx(Pt,{children:Zc.map(V=>n.jsx(ft,{value:V,children:Hr(V)},V))})]})]})]}),n.jsxs(ga,{children:[n.jsx(xa,{disabled:A,children:"Abbrechen"}),n.jsx(ya,{disabled:A,onClick:V=>{V.preventDefault(),H()},children:A?"Wird angelegtâ¦":"Anlegen"})]})]})}),n.jsxs("aside",{className:"flex w-64 shrink-0 flex-col border-r border-border bg-background",children:[n.jsx("div",{className:"flex h-14 items-center justify-between gap-2 border-b border-border px-4",children:n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-semibold leading-tight",children:"Warengruppen"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[(L==null?void 0:L.name)??"â"," · ",xe.length]})]})}),n.jsx("nav",{className:"flex-1 space-y-0.5 overflow-y-auto p-2",children:b?n.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:n.jsx(Me,{className:"size-5 animate-spin"})}):xe.length===0?n.jsx("p",{className:"px-2 py-4 text-xs text-muted-foreground",children:"Noch keine Warengruppen für diese Artikelart â unten anlegen."}):xe.map(V=>n.jsx(FT,{category:V,isSelected:V.id===h,onClick:()=>x(V.id)},V.id))}),n.jsx("div",{className:"border-t border-border p-3",children:n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"w-full gap-1.5",onClick:U,children:[n.jsx(Gn,{className:"size-4"}),"Neue Warengruppe"]})})]}),n.jsx("div",{className:"flex min-w-0 flex-1 flex-col bg-muted/30",children:Y?n.jsx($T,{category:Y,definitionName:(L==null?void 0:L.name)??Hr(Y.itemType),definitionNumberPrefix:(L==null?void 0:L.numberPrefix)??0,allCategories:i.filter(V=>V.id!==Y.id),onUpdate:se,onSave:Q,onDelete:ne,onFieldPropagated:J,isSaving:v,isDeleting:R},Y.id):b?n.jsx("div",{className:"flex flex-1 items-center justify-center text-muted-foreground",children:n.jsx(Me,{className:"size-6 animate-spin"})}):n.jsx("div",{className:"flex flex-1 items-center justify-center text-sm text-muted-foreground",children:"Warengruppe auswählen oder anlegen"})})]})]})}const VT={set_on_hold:"On Hold setzen",already_on_hold:"Bereits On Hold",no_match:"Kein Match",skipped_outbound:"Outbound übersprungen",skipped_no_keyword:"Kein Keyword"};function qT(){const{t:e}=gs(),[t,r]=u.useState("customer"),[s,a]=u.useState(""),[i,o]=u.useState(!0),[l,d]=u.useState(!1),[m,p]=u.useState(null);async function h(){const x=s.trim();if(!x){M.error("Bitte eine Event-ID eingeben.");return}d(!0),p(null);try{const b=await Tw({...t==="customer"?{customerEventId:x}:{rawEventId:x},dryRun:i});p(b),b.action==="set_on_hold"&&!b.dryRun?M.success("Fertigungsauftrag auf On Hold gesetzt."):b.matched&&i?M.message("Dry-Run: Auto-Hold würde greifen."):b.matched||M.message(b.reason||"Kein Match.")}catch{M.error("Replay fehlgeschlagen â Event-ID oder Berechtigung prüfen.")}finally{d(!1)}}return n.jsxs("section",{className:"mt-8 space-y-5 rounded-xl border border-dashed border-amber-500/40 bg-amber-500/5 p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-amber-500/15",children:n.jsx(qc,{className:"size-5 text-amber-700 dark:text-amber-400"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:e("settings.emailHoldReplay.title")}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:e("settings.emailHoldReplay.description")}),n.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Voraussetzungen: offener FA mit"," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"supplierOrderReference"}),", E-Mail enthält Referenz + Keyword (query/issue/hold/confirm), Absender-Domäne = Lieferant."]})]})]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsx(ee,{type:"button",size:"sm",variant:t==="customer"?"default":"outline",onClick:()=>r("customer"),children:e("settings.emailHoldReplay.customerEventId")}),n.jsx(ee,{type:"button",size:"sm",variant:t==="raw"?"default":"outline",onClick:()=>r("raw"),children:e("settings.emailHoldReplay.rawEventId")})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"email-hold-event-id",children:e(t==="customer"?"settings.emailHoldReplay.customerEventId":"settings.emailHoldReplay.rawEventId")}),n.jsx(Ze,{id:"email-hold-event-id",value:s,onChange:x=>a(x.target.value),placeholder:"UUID aus customer_events oder raw_events",className:"font-mono text-xs"})]}),n.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-border bg-card px-4 py-3",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:e("settings.emailHoldReplay.dryRun")}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Empfohlen für den ersten Test â ändert nichts am FA."})]}),n.jsx(Ir,{checked:i,onCheckedChange:o})]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:n.jsxs(ee,{type:"button",variant:"outline",className:"gap-1.5",disabled:l||!s.trim(),onClick:()=>void h(),children:[l?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(Ii,{className:"size-4"}),e(i?"settings.emailHoldReplay.run":"settings.emailHoldReplay.apply")]})}),m?n.jsxs("div",{className:ye("rounded-lg border px-4 py-3 text-sm",m.matched&&m.action==="set_on_hold"?"border-amber-500/30 bg-amber-500/10":"border-border bg-card"),children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(bt,{variant:m.matched?"default":"secondary",children:VT[m.action]}),m.dryRun?n.jsx(bt,{variant:"outline",className:"text-[10px]",children:"Dry-Run"}):null]}),m.reason?n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:m.reason}):null,m.matchedReference?n.jsxs("p",{className:"mt-1 font-mono text-xs",children:["Referenz: ",m.matchedReference]}):null,m.workOrderId?n.jsxs("p",{className:"mt-1 font-mono text-xs",children:["FA: ",m.workOrderId]}):null,!i&&m.action==="set_on_hold"?n.jsxs("p",{className:"mt-2 flex items-center gap-1.5 text-xs text-amber-800 dark:text-amber-200",children:[n.jsx(ks,{className:"size-3.5"}),"FA wurde auf On Hold gesetzt â Timeline im FA-Detail prüfen."]}):null]}):null]})}const kv=`PRIORITÃT BEI LCSC-/DISTRIBUTOR-TITELN: 89- Die Bezeichnung enthält oft Wert + Gehäuse + Marketingtext gemischt. 90- Suche ZUERST den elektrischen Hauptwert und das Chip-/IC-Gehäuse. 91- Ignoriere für value: Leistung (100mW), Spannung (75V), Toleranz (±1%), 92 ppm, Temperatur, RoHS, 'Thick Film', 'Surface Mount'. 93 94WIDERSTÃNDE (value): 95- IMMER EIA-Kurzformat OHNE Ω-Symbol: 96 56Ω â '56R' | 1kΩ â '1k' | 39kΩ â '39k' | 4.7Ω â '4R7' 97 8.2Ω â '8R2' | 10mΩ â 'R01' | 0Ω / Jumper â '0R' (NICHT 'R00')
98- Wenn Ω/Ohm/kΩ/MΩ in der Bezeichnung steht: value DARF NICHT null sein. 99- package z.B. '0603', '1206', '0402', '0603x4' â nicht den Widerstandswert. 100 101KONDENSATOREN (value): 102- Kapazität MIT Einheit: '100nF', '4.7uF', '22uF', '20pF', '470nF'. 103- µ/μ â u (4.7µF â '4.7uF'). 104- Dielektrikum (X5R, X7R, NP0) ist KEIN value und KEIN package. 105- NIEMALS Widerstandswerte (R00, 56R) für Kondensatoren setzen. 106- Wenn uF/nF/pF/µF in der Bezeichnung steht: value DARF NICHT null sein. 107 108ICs / TRANSISTOREN / REGLER / STECKER: 109- package = Gehäuse aus dem Titel (SOT-23-5, QFN-28-EP(4x4), DO-214AC, â¦). 110- value nur setzen, wenn es ein echtes Schema-Feld ist (z.B. feste 111 Ausgangsspannung '3.3V' bei LDO) â sonst null. Kein Fantasie-value. 112- 'SMD', 'Through Hole', 'Right Angle', 'P=1mm' sind KEINE guten 113 alleinigen package-Werte wenn ein konkretes Gehäuse (SOT/QFN/â¦) da ist. 114 115ALLGEMEIN: 116- value und package strikt trennen; nie vertauschen. 117- Unklare Nicht-Passive-Felder lieber null als raten. 118- Konfidenz konservativ: unter 0.85 wenn Warengruppe nicht eindeutig. 119 120BEISPIELE: 1211) '100mW 56Ω 75V Thick Film Resistor ⦠0603 â¦' 122 â value='56R', package='0603' 1232) '100mW 0Ω ⦠Resistor ⦠0603 â¦' 124 â value='0R', package='0603' 1253) '4.7uF ±10% 16V Ceramic Capacitor X5R 0603' 126 â value='4.7uF', package='0603' (NICHT R00) 1274) '20pF ±5% 50V Ceramic Capacitor NP0 0603' 128 â value='20pF', package='0603' 1295) '3.3V Positive Fixed SOT-23-5 Voltage Regulators â¦' 130 â package='SOT-23-5'; value='3.3V' falls Schema es vorsieht, sonst value=null 1316) 'Connector Header ⦠Surface Mount, Right Angle â¦' 132 â kein Widerstand/Kondensator-value; package nur wenn sinnvoll 133`;function cg(e,t){const r=(e??"").trim();if(r)return r;const s=(t??"").trim();return s||kv}const co="bg-primary text-primary-foreground hover:bg-primary/90";function UT(){var Ye;const{session:e}=os(),{settings:t,updateFourEyesActive:r,updateMatchingKeyTemplate:s,updateMatchingKeyTemplateBom:a,updateAiEnrichmentPrompt:i,updateImportLimits:o}=Mn(),{t:l}=gs(),d=(e==null?void 0:e.role)==="admin",m=$g(e==null?void 0:e.token),[p,h]=u.useState(!0),[x,b]=u.useState(!1),[w,v]=u.useState(!1),[S,R]=u.useState(!1),[E,A]=u.useState(t.matchingKeyTemplate||"%value%_%package%"),[I,C]=u.useState(t.matchingKeyTemplateBom||t.matchingKeyTemplate||"%value%_%package%"),[k,j]=u.useState(!1),[z,D]=u.useState(!1),[B,T]=u.useState(!1),[P,G]=u.useState(()=>cg(t.aiEnrichmentPrompt,t.aiEnrichmentPromptDefault)),[W,ke]=u.useState(!1),L=((Ye=t.aiEnrichmentPromptDefault)==null?void 0:Ye.trim())||kv,[xe,Y]=u.useState(String(t.shopwareImportPreviewLimit??1e3)),[Ne,se]=u.useState(String(t.shopwareImportPreviewMax??1e3)),[J,Q]=u.useState(String(t.liaOneImportPreviewLimit??50)),[U,ne]=u.useState(String(t.liaOneImportPreviewMax??200)),[H,Z]=u.useState(!1),[K,me]=u.useState(""),[$,X]=u.useState(""),[Ie,V]=u.useState(""),[Se,Ce]=u.useState(""),[Be,Le]=u.useState(""),[rt,lt]=u.useState(!1),[Tt,vt]=u.useState(""),[Pe,it]=u.useState(!0),[yt,wt]=u.useState(!1),[an,qt]=u.useState(!0),[Qt,en]=u.useState(!0),[Wt,on]=u.useState(null);u.useEffect(()=>{A(t.matchingKeyTemplate||"%value%_%package%")},[t.matchingKeyTemplate]),u.useEffect(()=>{C(t.matchingKeyTemplateBom||t.matchingKeyTemplate||"%value%_%package%")},[t.matchingKeyTemplateBom,t.matchingKeyTemplate]),u.useEffect(()=>{G(cg(t.aiEnrichmentPrompt,t.aiEnrichmentPromptDefault))},[t.aiEnrichmentPrompt,t.aiEnrichmentPromptDefault]),u.useEffect(()=>{Y(String(t.shopwareImportPreviewLimit??1e3)),se(String(t.shopwareImportPreviewMax??1e3)),Q(String(t.liaOneImportPreviewLimit??50)),ne(String(t.liaOneImportPreviewMax??200))},[t.shopwareImportPreviewLimit,t.shopwareImportPreviewMax,t.liaOneImportPreviewLimit,t.liaOneImportPreviewMax]),u.useEffect(()=>{let ge=!1;return pi().then(He=>{ge||(me(He.baseUrl??""),X(He.clientId??""),Ce(He.storeApiUrl??""),R(He.hasClientSecret??!1),lt(He.hasSalesChannelAccessKey??!1),vt(He.articleNumberPrefix??""),it(He.importActiveProductsOnly!==!1),wt(He.isActive===!0),qt(He.liveSyncStock!==!1),en(He.liveCreateArticles!==!1),V(""),Le(""))}).catch(()=>{ge||M.error("Schnittstellen-Konfiguration konnte nicht geladen werden")}).finally(()=>{ge||h(!1)}),()=>{ge=!0}},[]);const mn=u.useMemo(()=>Hu(E),[E]),ln=u.useMemo(()=>Hu(I),[I]),cn=async()=>
133{if(d){j(!0);try{await s(E),M.success("Matching-Key (Artikelimport) gespeichert")}catch{}finally{j(!1)}}},Oe=async()=>{if(d){D(!0);try{await a(I),M.success("Matching-Key (Stücklistenimport) gespeichert")}catch{}finally{D(!1)}}},re=async()=>{if(d){ke(!0);try{await i(P),M.success("KI-Enrichment-Prompt gespeichert")}catch{}finally{ke(!1)}}},ve=()=>{G(L)},_e=async()=>{if(d){T(!0);try{await s(E);const ge=await ok();M.success(`Matching Keys neu berechnet: ${ge.updated} von ${ge.scanned} Artikeln aktualisiert`)}catch{M.error("Neuberechnung fehlgeschlagen")}finally{T(!1)}}},te=async()=>{if(d){Z(!0);try{await o({shopwareImportPreviewLimit:Number(xe)||1e3,shopwareImportPreviewMax:Number(Ne)||1e3,liaOneImportPreviewLimit:Number(J)||50,liaOneImportPreviewMax:Number(U)||200}),M.success("Import-Limits gespeichert")}catch{}finally{Z(!1)}}},nt=u.useMemo(()=>Ie.trim()?"Neues Secret wird beim Speichern verschlüsselt abgelegt.":S?"Gespeichertes Secret bleibt erhalten, wenn das Feld leer bleibt.":"API-Client-Secret eingeben (wird verschlüsselt gespeichert).",[Ie,S]),Fe=async()=>{v(!0),on(null);try{const ge=await Ib({baseUrl:K,clientId:$,clientSecret:Ie.trim()||void 0});on({ok:ge.success,message:ge.message}),ge.success?M.success(ge.message):M.error(ge.message)}catch{const ge="Verbindungstest fehlgeschlagen";on({ok:!1,message:ge}),M.error(ge)}finally{v(!1)}},be=async()=>{if(d){b(!0);try{const ge=await Lf({baseUrl:K,clientId:$,clientSecret:Ie.trim()||void 0,storeApiUrl:Se.trim(),salesChannelAccessKey:Be.trim()||void 0,isActive:yt,articleNumberPrefix:Tt.trim(),importActiveProductsOnly:Pe,liveSyncStock:an,liveCreateArticles:Qt});R(ge.hasClientSecret),lt(ge.hasSalesChannelAccessKey??!1),wt(ge.isActive===!0),qt(ge.liveSyncStock!==!1),en(ge.liveCreateArticles!==!1),V(""),Le(""),M.success("Schnittstellen-Konfiguration gespeichert")}catch{M.error("Speichern fehlgeschlagen")}finally{b(!1)}}};return n.jsxs(Br,{maxWidth:"max-w-3xl",children:[n.jsxs(lr,{to:"/einstellungen",className:"mb-6 inline-flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground",children:[n.jsx(Ks,{className:"size-3.5"}),"Zurück zu Einstellungen"]}),n.jsx(xs,{title:"Systemeinstellungen",subtitle:"Allgemeine Systemparameter und externe Schnittstellen."}),n.jsxs("section",{className:"mt-8 space-y-6 rounded-xl border border-border bg-card p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Mg,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:l("settings.fourEyes.title")}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:l("settings.fourEyes.description")})]})]}),n.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-border px-4 py-3",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:l("settings.fourEyes.title")}),n.jsx("p",{className:"text-xs text-muted-foreground",children:l("settings.fourEyes.description")})]}),n.jsx(Ir,{checked:t.isFourEyesActive===!0,onCheckedChange:r,disabled:!d})]}),!d&&n.jsx("p",{className:"text-xs text-muted-foreground",children:"Nur Administratoren können das 4-Augen-Prinzip aktivieren."})]}),n.jsxs("section",{id:"ki-enrichment-prompt",className:"mt-8 space-y-6 rounded-xl border border-border bg-card p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Bs,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:"KI-Enrichment Prompt"}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Anweisungen für die automatische Warengruppen-/Attribut-Anreicherung. Die Warengruppen-Liste aus dem Schema wird immer dynamisch vorangestellt â hier nur Regeln, Formate und Beispiele."})]})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsx(ze,{htmlFor:"ai-enrichment-prompt",children:"Instruktionen"}),n.jsx(ka,{id:"ai-enrichment-prompt",value:P,onChange:ge=>G(ge.target.value),disabled:!d,rows:16,className:"min-h-[20rem] font-mono text-xs leading-relaxed",placeholder:"Regeln für Widerstände, Kondensatoren, ICs â¦"}),n.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Pfad: Einstellungen â Systemeinstellungen. Wirkt bei neuen Enrichment-Läufen. Backend neu starten, damit Speichern den Tenant-Prompt übernimmt."}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",className:co,disabled:!d||W,onClick:()=>void re(),children:[W?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Prompt speichern"]}),n.jsxs(ee,{type:"button",variant:"outline",disabled:!d||W,onClick:ve,children:[n.jsx(Rg,{className:"size-4"}),"Standard wiederherstellen"]})]})]})]}),n.jsxs("section",{className:"mt-8 space-y-6 rounded-xl border border-border bg-card p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(jN,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:"Matching Key"}),n.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:["Getrennte Formeln für Artikelimport (Attribut"," ",n.jsx("code",{className:"text-[10px]",children:"matching_key"}),") und Stücklistenimport. Platzhalter: ",n.jsx("code",{className:"text-[10px]",children:"%value%"}),","," ",n.jsx("code",{className:"text-[10px]",children:"%package%"}),","," ",n.jsx("code",{className:"text-[10px]",children:"%name%"}),", ",n.jsx("code",{className:"text-[10px]",children:"%mpn%"}),"."]})]})]}),n.jsxs("div",{className:"space-y-2 rounded-lg border border-border/70 bg-muted/20 p-4",children:[n.jsx("p",{className:"text-xs font-medium text-foreground",children:"Sichtbare Normalisierung"}),n.jsx("ul",{className:"list-disc space-y-1 pl-4 text-[11px] text-muted-foreground",children:uA.map(ge=>n.jsx("li",{children:ge},ge))}),n.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Eagle ",n.jsx("code",{className:"font-mono text-foreground",children:"100n / C0603"})," und Stamm"," ",n.jsx("code",{className:"font-mono text-foreground",children:"100nF / 0603"})," â Key"," ",n.jsx("code",{className:"font-mono text-foreground",children:Hu("%value%_%package%",{value:"100nF",package:"C0603"})}),". Nach Regeländerung: Artikel-Keys neu berechnen (füllt fehlende R/C-Werte aus dem Artikelnamen und entfernt reine Package-Keys)."]})]}),n.jsxs("div",{className:"space-y-3 rounded-lg border border-border/70 p-4",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"matching-key-template",children:"Artikelimport"}),n.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["CSV-/Katalog-Import und Berechnung von ",n.jsx("code",{className:"text-[10px]",children:"matching_key"})," ","am Artikel."]}),n.jsx(Ze,{id:"matching-key-template",value:E,onChange:ge=>A(ge.target.value),placeholder:"%value%_%package%",disabled:!d,className:"font-mono text-sm"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Beispiel (10k / 0402):"," ",n.jsx("span",{className:"font-mono text-foreground",children:mn})]})]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",className:co,disabled:!d||k,onClick:()=>void cn(),children:[k?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Artikel-Template speichern"]}),n.jsxs(ee,{type:"button",variant:"outline",disabled:!d||B,onClick:()=>void _e(),children:[B?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(el,{className:"size-4"}),"Artikel-Keys neu berechnen"]})]})]}),n.jsxs("div",{className:"space-y-3 rounded-lg border border-border/70 p-4",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"matching-key-template-bom",children:"Stücklistenimport"}),n.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Eagle-/BOM-Import und manuelles/automatisches Zuordnen in der Stückliste."}),n.jsx(Ze,{id:"matching-key-template-bom",value:I,onChange:ge=>C(ge.target.value),placeholder:"%value%_%package%",disabled:!d,className:"font-mono text-sm"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Beispiel (10k / 0402):"," ",n.jsx("span",{className:"font-mono text-foreground",children:ln})]})]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:n.jsxs(ee,{type:"button",className:co,disabled:!d||z,onClick:()=>void Oe(),children:[z?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Stücklisten-Template speichern"]})})]})]}),n.jsxs("section",{className:"mt-8 space-y-6 rounded-xl border border-border bg-card p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Id,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:"Import-Limits"}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"SeitengröÃe und Maximalwert für Shopware- und Lia.One-Importvorschauen. Hard-Caps: Shopware 2000, Lia.One 1000."})]})]}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"sw-preview-limit",children:"Shopware Vorschau (Default)"}),n.jsx(Ze,{id:"sw-preview-limit",type:"number",min:1,max:2e3,value:xe,onChange:ge=>Y(ge.target.value),disabled:!d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"sw-preview-max",children:"Shopware Vorschau (Max)"}),n.jsx(Ze,{id:"sw-preview-max",type:"number",min:1,max:2e3,value:Ne,onChange:ge=>se(ge.target.value),disabled:!d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"lia-preview-limit",children:"Lia.One Vorschau (Default)"}),n.jsx(Ze,{id:"lia-preview-limit",type:"number",min:1,max:1e3,value:J,onChange:ge=>Q(ge.target.value),disabled:!d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"lia-preview-max",children:"Lia.One Vorschau (Max)"}),n.jsx(Ze,{id:"lia-preview-max",type:"number",min:1,max:1e3,value:U,onChange:ge=>ne(ge.target.value),disabled:!d})]})]}),n.jsxs(ee,{type:"button",className:co,disabled:!d||H,onClick:()=>void te(),children:[H?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Limits speichern"]})]}),n.jsxs("section",{className:"mt-8 space-y-6 rounded-xl border border-border bg-card p-6 shadow-sm",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Id,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-sm font-semibold",children:"Shopware"}),n.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:["Admin-API-Zugang liegt in der zentralen Integration"," ",n.jsx("code",{className:"text-[10px]",children:"tenant_integrations"}
133)," (provider=shopware) â dieselbe Quelle wie Shopware Suite. Live steuert den automatischen Artikelstamm-Sync; manueller Import braucht nur gültige Credentials."]})]})]}),p?n.jsxs("div",{className:"flex items-center gap-2 py-8 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Konfiguration wird geladen â¦"]}):n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"space-y-4",children:[n.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Zentrale Integration (geteilt mit Suite)"}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-1",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-url",children:"Shopware-URL"}),n.jsx(Ze,{id:"shopware-url",type:"url",placeholder:"https://shop.example.com",value:K,onChange:ge=>me(ge.target.value),disabled:!d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-client-id",children:"API-Client-ID"}),n.jsx(Ze,{id:"shopware-client-id",value:$,onChange:ge=>X(ge.target.value),disabled:!d,autoComplete:"off"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-client-secret",children:"API-Client-Secret"}),n.jsx(Ze,{id:"shopware-client-secret",type:"password",value:Ie,onChange:ge=>V(ge.target.value),disabled:!d,placeholder:S?"â¢â¢â¢â¢â¢â¢â¢â¢ (gespeichert)":"",autoComplete:"new-password"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:nt})]})]}),n.jsxs("div",{className:"space-y-4 border-t border-border pt-4",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:"Kunden-Login (Store-API)"}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Optional. Wird ebenfalls zentral gespeichert. Standard-URL ist die Shopware-URL."})]}),n.jsxs("div",{className:"grid gap-4 sm:grid-cols-1",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-store-url",children:"Store-API-URL (optional)"}),n.jsx(Ze,{id:"shopware-store-url",type:"url",placeholder:"https://shop.example.com",value:Se,onChange:ge=>Ce(ge.target.value),disabled:!d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-access-key",children:"Sales-Channel-Access-Key"}),n.jsx(Ze,{id:"shopware-access-key",type:"password",value:Be,onChange:ge=>Le(ge.target.value),disabled:!d,placeholder:rt?"â¢â¢â¢â¢â¢â¢â¢â¢ (gespeichert)":"SWSC...",autoComplete:"new-password"})]})]})]})]}),n.jsxs("div",{className:"space-y-4 border-t border-border pt-4",children:[n.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Artikelstamm (lokal)"}),n.jsxs("div",{className:"rounded-lg border border-border",children:[n.jsxs("div",{className:"flex items-center justify-between gap-4 px-3 py-2.5",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{htmlFor:"shopware-live",className:"text-sm",children:"Live"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Automatischer Sync Shopware â Artikelstamm (Cron). Manueller Import bleibt unabhängig verfügbar."})]}),n.jsx(Ir,{id:"shopware-live",checked:yt,onCheckedChange:wt,disabled:!d})]}),n.jsxs("div",{className:ye("ml-3 space-y-0 border-l border-border pl-3",!yt&&"opacity-50"),children:[n.jsxs("div",{className:"flex items-center justify-between gap-4 border-t border-border/60 py-2.5 pr-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{htmlFor:"shopware-live-stock",className:"text-sm",children:"Bestand aktualisieren"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Shopware-Bestand auf bereits verknüpfte Artikel schreiben."})]}),n.jsx(Ir,{id:"shopware-live-stock",checked:an,onCheckedChange:qt,disabled:!d||!yt})]}),n.jsxs("div",{className:"flex items-center justify-between gap-4 border-t border-border/60 py-2.5 pr-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{htmlFor:"shopware-live-create",className:"text-sm",children:"Neue Artikel anlegen"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Neue Shopware-Produkte als Artikel im Artikelstamm anlegen."})]}),n.jsx(Ir,{id:"shopware-live-create",checked:Qt,onCheckedChange:en,disabled:!d||!yt})]})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{htmlFor:"shopware-article-prefix",children:"Artikelnummer-Prefix"}),n.jsx(Ze,{id:"shopware-article-prefix",value:Tt,onChange:ge=>vt(ge.target.value),disabled:!d,placeholder:"z. B. 99 â leer = keine Präfix",autoComplete:"off"})]}),n.jsxs("div",{className:"flex items-center justify-between gap-4 roun
133ded-lg border border-border px-3 py-2.5",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{htmlFor:"shopware-active-only",className:"text-sm",children:"Nur aktive Artikel"}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Bei Live und manuellem Import nur Shopware-Produkte mit Status âaktivâ berücksichtigen."})]}),n.jsx(Ir,{id:"shopware-active-only",checked:Pe,onCheckedChange:it,disabled:!d})]})]}),Wt&&n.jsxs("div",{className:ye("flex items-start gap-2 rounded-lg border px-4 py-3 text-sm",Wt.ok?"border-emerald-500/30 bg-emerald-500/10 text-emerald-800 dark:text-emerald-300":"border-destructive/30 bg-destructive/10 text-destructive"),children:[Wt.ok?n.jsx(rs,{className:"mt-0.5 size-4 shrink-0"}):n.jsx(Og,{className:"mt-0.5 size-4 shrink-0"}),n.jsx("span",{children:Wt.message})]}),d?n.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[n.jsxs(ee,{type:"button",variant:"outline",className:"gap-1.5",disabled:w||!K.trim()||!$.trim(),onClick:()=>void Fe(),children:[w?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(Eg,{className:"size-4"}),"Verbindung testen"]}),n.jsxs(ee,{type:"button",className:ye("gap-1.5",co),disabled:x,onClick:()=>void be(),children:[x?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Speichern"]})]}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"Nur Administratoren können Schnittstellen-Konfiguration bearbeiten."})]})]}),m?n.jsx(qT,{}):null]})}const WT=2500,HT={PENDING:{label:"ausstehend",className:"border-amber-500/40 text-amber-800 dark:text-amber-300"},IN_PROGRESS:{label:"läuft",className:"border-sky-500/40 text-sky-800 dark:text-sky-300"},COMPLETED:{label:"fertig",className:"border-emerald-500/40 text-emerald-700 dark:text-emerald-400"},FAILED:{label:"fehlgeschlagen",className:"border-destructive/40 text-destructive"},none:{label:"nie",className:"border-border text-muted-foreground"}};function $l(e){const t=(e.aiEnrichmentStatus||"").toUpperCase();return t==="PENDING"||t==="IN_PROGRESS"||t==="COMPLETED"||t==="FAILED"?t:"none"}function Kl(e,t){const s=(e.attributes??{})[t];return s==null?"":String(s).trim()}function wv(e){return e==="PENDING"||e==="IN_PROGRESS"}function ZT({status:e}){const t=HT[e];return n.jsx(bt,{variant:"outline",className:ye("h-5 px-1.5 text-[10px] font-medium",t.className),children:wv(e)?n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx(Me,{className:"size-2.5 animate-spin"}),t.label]}):t.label})}function GT(){const{session:e}=os(),{articles:t,refreshArticlesAfterImport:r}=Mn(),s=zf(),a=(e==null?void 0:e.role)==="admin"||(e==null?void 0:e.role)==="planer",[i,o]=u.useState([]),[l,d]=u.useState(!0),[m,p]=u.useState(!1),[h,x]=u.useState(""),[b,w]=u.useState("all"),[v,S]=u.useState(()=>new Set),[R,E]=u.useState(!1),[A,I]=u.useState(!1),[C,k]=u.useState(null),j=u.useRef(0),z=u.useCallback(async Y=>{const Ne=(Y==null?void 0:Y.silent)===!0,se=++j.current;Ne?p(!0):d(!0);try{const J=await fc({noCache:!0,includeSuppliers:!1});if(se!==j.current)return;o(J)}catch{if(se!==j.current)return;Ne||(M.error("Artikel konnten nicht geladen werden"),o(t))}finally{if(se!==j.current)return;Ne?p(!1):d(!1)}},[t]);u.useEffect(()=>{z()},[z]);const D=u.useMemo(()=>i.some(Y=>wv($l(Y))),[i]);u.useEffect(()=>{if(!D)return;const Y=window.setInterval(()=>{z({silent:!0})},WT);return()=>window.clearInterval(Y)},[D,z]);const B=u.useMemo(()=>{const Y={all:i.length,PENDING:0,IN_PROGRESS:0,COMPLETED:0,FAILED:0,none:0};for(const Ne of i)Y[$l(Ne)]+=1;return Y},[i]),T=u.useMemo(()=>{const Y=h.trim().toLowerCase();return i.filter(Ne=>{const se=$l(Ne);return b!=="all"&&se!==b?!1:Y?[Ne.articleNumber,Ne.name,Ne.typ,Ne.category,Kl(Ne,"value"),Kl(Ne,"package"),ki(Ne),Ne.aiEnrichmentError].filter(
133Boolean).join(" ").toLowerCase().includes(Y):!0})},[h,i,b]),P=T.length>0&&T.every(Y=>v.has(Y.id)),G=T.some(Y=>v.has(Y.id)),W=Y=>{S(Ne=>{const se=new Set(Ne);for(const J of T)Y?se.add(J.id):se.delete(J.id);return se})},ke=async Y=>{if(!a||Y.length===0||R)return;E(!0);const Ne=new Set(Y);o(se=>se.map(J=>Ne.has(J.id)?{...J,aiEnrichmentStatus:"PENDING",aiEnrichmentError:null}:J)),S(new Set);try{const se=await af(Y);M.success(se===1?"1 Artikel zur erneuten Anreicherung eingereiht":`${se} Artikel zur erneuten Anreicherung eingereiht`),z({silent:!0}),r()}catch{M.error("KI-Anreicherung konnte nicht gestartet werden"),z({silent:!0})}finally{E(!1)}},L=[{id:"all",label:"Alle"},{id:"FAILED",label:"fehlgeschlagen"},{id:"PENDING",label:"ausstehend"},{id:"IN_PROGRESS",label:"läuft"},{id:"COMPLETED",label:"fertig"},{id:"none",label:"nie"}],xe=a?8:7;return n.jsxs(Vb,{className:ye("mx-auto flex max-w-6xl flex-col px-4 py-4 sm:px-6 sm:py-6",s),children:[n.jsxs(lr,{to:"/artikel",className:"mb-3 inline-flex shrink-0 items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground",children:[n.jsx(Ks,{className:"size-3.5"}),"Zurück zum Artikelstamm"]}),n.jsx("div",{className:"shrink-0",children:n.jsx(xs,{title:"KI-Anreicherung",subtitle:"Status, Rohdaten und Matching Key prüfen â erneut anreichern bei Bedarf.",action:n.jsxs("div",{className:"flex items-center gap-2",children:[D?n.jsxs("span",{className:"inline-flex items-center gap-1.5 text-[11px] text-sky-700 dark:text-sky-300",children:[n.jsx(Tg,{className:ye("size-3.5",m&&"animate-pulse")}),"Live",B.PENDING+B.IN_PROGRESS>0?` · ${B.PENDING+B.IN_PROGRESS}`:""]}):null,n.jsxs(ee,{type:"button",variant:"outline",className:"gap-1.5",disabled:l||R,onClick:()=>void z(),children:[l||m?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(el,{className:"size-4"}),"Aktualisieren"]}),n.jsxs(ee,{type:"button",className:"gap-1.5",disabled:!a||v.size===0||R,onClick:()=>void ke([...v]),children:[R?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(Bs,{className:"size-4"}),"Erneut anreichern",v.size>0?` (${v.size})`:""]})]})})}),n.jsxs("div",{className:"mt-4 flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[n.jsxs("div",{className:"shrink-0 space-y-3 border-b p-3 sm:p-4",children:[n.jsxs("div",{className:"relative",children:[n.jsx(Er,{className:"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:h,onChange:Y=>x(Y.target.value),placeholder:"Suchen nach Nr., Name, Key, Fehlerâ¦",className:"h-8 pl-8 text-xs"})]}),n.jsx("div",{className:"flex flex-wrap gap-1.5",children:L.map(Y=>Y.id==="all"||B[Y.id]>0?n.jsxs(ee,{type:"button",size:"sm",variant:b===Y.id?"secondary":"outline",className:"h-6 gap-1 px-2 text-[10px]",onClick:()=>w(Y.id),children:[Y.label,n.jsx("span",{className:"tabular-nums text-muted-foreground",children:B[Y.id]})]},Y.id):null)})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-auto overscroll-contain",children:n.jsxs(Yn,{className:"w-full min-w-[880px] text-xs",children:[n.jsx(Jn,{className:"sticky top-0 z-10 bg-card shadow-[inset_0_-1px_0_0_hsl(var(--border))]",children:n.jsxs(jt,{className:"hover:bg-transparent",children:[a?n.jsx(Ve,{className:"h-8 w-10 bg-card pl-3",children:n.jsx(fr,{checked:P?!0:G?"indeterminate":!1,onCheckedChange:Y=>W(Y===!0),"aria-label":"Alle auswählen"})}):null,n.jsx(Ve,{className:"h-8 bg-card",children:"Status"}),n.jsx(Ve,{className:"h-8 bg-card",children:"Artikel"}),n.jsx(Ve,{className:"h-8 bg-card",children:"Roh"}),n.jsx(Ve,{className:"h-8 bg-card",children:"Key"}),n.jsx(Ve,{className:"h-8 bg-card",children:"Warengruppe"}),n.jsx(Ve,{className:"h-8 bg-card",children:"Ergebnis / Fehler"}),n.jsx(Ve,{className:"h-8 w-28 bg-card"})]})}),n.jsx(Qn,{children:l?n.jsx(jt,{children:n.jsx(De,{colSpan:xe,className:"py-10 text-center text-muted-foreground",children:n.jsx(Me,{className:"mx-auto size-5 animate-spin"})})}):T.length===0?n.jsx(jt,{children:n.jsx(De,{colSpan:xe,className:"py-10 text-center text-muted-foreground",children:"Keine Artikel für diesen Filter."})}):T.map(Y=>{const Ne=$l(Y),se=Kl(Y,"value"),J=Kl(Y,"package"),Q=ki(Y);return n.jsxs(jt,{className:"align-top",children:[a?n.jsx(De,{className:"pl-3",children:n.jsx(fr,{checked:v.has(Y.id),onCheckedChange:U=>{S(ne=>{const H=new Set(ne);return U===!0?H.add(Y.id):H.delete(Y.id),H})},onClick:U=>U.stopPropagation()})}):null,n.jsx(De,{children:n.jsx(ZT,{status:Ne})}),n.jsxs(De,{className:"font-mono",children:[n.jsx("div",{className:"text-foreground",children:Y.articleNumber||"â"}),n.jsx("div",{className:"max-w-[14rem] truncate text-[10px] text-muted-foreground",title:Y.name,children:Y.name||"â"})]}),n.jsxs(De,{className:"font-mono text-[11px]",children:[n.jsx("div",{children:[se,J].filter(
133Boolean).join(" · ")||"â"}),Y.typ?n.jsxs("div",{className:"mt-0.5 text-[10px] text-muted-foreground",children:["mpn=",Y.typ]}):null]}),n.jsx(De,{className:"font-mono text-[11px] text-muted-foreground",children:Q||"â"}),n.jsx(De,{className:"text-[11px]",children:Y.category||"â"}),n.jsx(De,{className:"max-w-[16rem] text-[11px] text-muted-foreground",children:Ne==="FAILED"&&Y.aiEnrichmentError?n.jsx("span",{className:"text-destructive",title:Y.aiEnrichmentError,children:Y.aiEnrichmentError}):Ne==="COMPLETED"?n.jsx("span",{className:"text-emerald-700 dark:text-emerald-400",children:"angereichert"}):"â"}),n.jsx(De,{children:n.jsxs("div",{className:"flex flex-col gap-1",children:[n.jsx(ee,{type:"button",size:"sm",variant:"ghost",className:"h-7 justify-start px-2 text-xs",onClick:()=>{k(dr(Y)),I(!0)},children:"Ãffnen"}),a?n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 gap-1 px-2 text-xs",disabled:R,onClick:()=>void ke([Y.id]),children:[n.jsx(Bs,{className:"size-3"}),"KI"]}):null]})})]},Y.id)})})]})})]}),n.jsx(Tf,{open:A,onOpenChange:Y=>{I(Y),Y||z({silent:!0})},article:C})]})}const YT={name:"Bezeichnung",description:"Beschreibung",category:"Warengruppe",item_type:"Artikelart",typ:"Hersteller",unit:"Mengeneinheit",stock:"Bestand",price:"Preis",pnp_height:"P&P-Höhe",pnp_base_rotation:"P&P-Rotation",image:"Bild",product_structure:"Produktstruktur"};function JT(e){return e.startsWith("attributes.")?e.slice(11):YT[e]??e}function ug(e){return e==null||e===""?"â":typeof e=="object"?JSON.stringify(e):String(e)}function QT(e){return e?e.length<=8?e:`${e.slice(0,8)}â¦`:"â"}function XT(e,t,r){var i;const s=e==null?void 0:e.trim();if(s)return s;const a=t==null?void 0:t.trim();return a&&(r!=null&&r.userId)&&a.toLowerCase()===r.userId.toLowerCase()?((i=r.displayName)==null?void 0:i.trim())||"Sie":QT(t)}const eD="bg-primary text-primary-foreground hover:bg-primary/90";function tD({kind:e,t}){const r={deletion:t("approvals.kind.deletion"),review:t("approvals.kind.review"),draft:t("approvals.kind.draft")},s={deletion:"bg-destructive/15 text-destructive",review:"bg-amber-500/15 text-amber-800 dark:text-amber-300",draft:"bg-muted text-muted-foreground"};return n.jsx(bt,{className:ye("border-transparent font-medium",s[e]),children:r[e]})}function nD({changes:e,t}){return e.length===0?n.jsx("p",{className:"text-xs text-muted-foreground",children:t("approvals.noChanges")}):n.jsxs("div",{className:"space-y-2",children:[n.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:t("approvals.compare.title")}),n.jsx("div",{className:"overflow-hidden rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40 hover:bg-muted/40",children:[n.jsx(Ve,{className:"h-8 text-xs",children:t("approvals.compare.field")}),n.jsx(Ve,{className:"h-8 text-xs",children:t("approvals.compare.released")}),n.jsx(Ve,{className:"h-8 text-xs",children:t("approvals.compare.draft")})]})}),n.jsx(Qn,{children:e.map(r=>n.jsxs(jt,{children:[n.jsx(De,{className:"py-2 text-xs font-medium",children:JT(r.field)}),n.jsx(De,{className:"py-2 text-xs text-muted-foreground",children:ug(r.releasedValue)}),n.jsx(De,{className:"py-2 text-xs font-medium text-foreground",children:ug(r.draftValue)})]},r.field))})]})})]})}function rD(){const{t:e}=gs(),{session:t}=os(),{deleteArticle:r}=Mn(),[s,a]=u.useState([]),[i,o]=u.useState(!0),[l,d]=u.useState(null),[m,p]=u.useState(null),[h,x]=u.useState(!1),[b,w]=u.useState(null),v=u.useRef(!1),S=u.useCallback(async()=>{const k=await nk();a(k)},[]);u.useEffect(()=>{v.current||(v.current=!0,(async()=>{try{await S()}catch(k){M.error(k instanceof ut?k.message:e("approvals.loadError"))}finally{o(!1)}})())},[S,e]);const R=k=>{a(j=>j.filter(z=>z.id!==k))},E=async k=>{if(!Hl(k,t==null?void 0:t.userId,t==null?void 0:t.role)){M.error(e("approvals.selfApprovalBlocked"));return}d(k.id);try{await Gm(k.id),M.success(e("approvals.approved")),R(k.id)}catch(j){M.error(j instanceof ut?j.message:e("approvals.approveError"))}finally{d(null)}},A=async k=>{if(!Hl(k,t==null?void 0:t.userId,t==null?void 0:t.role)){M.error(e("approvals.selfApprovalBlocked"));return}d(k.id);try{await r(k.id,{fourEyes:!0,confirm:!0}),R(k.id)}catch(j){M.error(j instanceof ut?j.message:e("approvals.deleteError"))}finally{d(null)}},I=async k=>{d(k.id);try{const j=await r(k.id,{fourEyes:!0,cancel:!0});if(j.removed||!j.article||!HS(j.article))R(k.id);else{const z=Jx(j.article);a(D=>D.map(B=>B.id===k.id?{...B,...j.article,pendingKind:z??"review"}:B))}}catch(j){M.error(j instanceof ut?j.message:e("approvals.cancelError"))}finally{d(null)}},C=k=>{p(dr(k)),x(!0)};return n.jsxs(Br,{children:[n.jsx(xs,{title:e("approvals.title"),subtitle:`${s.length} ${e("approvals.subtitleSuffix")}`}),i?n.jsxs("div",{className:"flex items-center gap-2 py-16 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),e("approvals.loading")]}):s.length===0?n.jsxs("div",{className:"rounded-xl border border-dashed border-border py-16 text-center",children:[n.jsx(Mg,{className:"mx-auto
133size-10 text-muted-foreground/40"}),n.jsx("p",{className:"mt-3 text-sm font-medium",children:e("approvals.emptyTitle")}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:e("approvals.emptyHint")})]}):n.jsx("div",{className:"mt-6 overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:n.jsx("div",{className:"overflow-x-auto",children:n.jsxs(Yn,{className:"table-fixed w-full min-w-[52rem]",children:[n.jsx(Jn,{children:n.jsxs(jt,{children:[n.jsx(Ve,{className:"w-[6.5rem] pl-4",children:e("approvals.col.article")}),n.jsx(Ve,{children:e("approvals.col.name")}),n.jsx(Ve,{className:"hidden w-[7.5rem] sm:table-cell",children:e("approvals.col.kind")}),n.jsx(Ve,{className:"hidden w-[9rem] md:table-cell",children:e("approvals.col.submittedBy")}),n.jsx(Ve,{className:"w-[8.5rem]",children:e("approvals.col.changes")}),n.jsx(Ve,{className:"w-[11rem] text-right pr-4",children:e("approvals.col.actions")})]})}),n.jsx(Qn,{children:s.map(k=>{const j=l===k.id,z=Hl(k,t==null?void 0:t.userId,t==null?void 0:t.role),D=k.draftChanges??[],B=k.pendingKind!=="deletion"&&D.length>0,T=b===k.id,P=k.draftCreatedBy??k.pendingSubmittedBy,G=XT(k.submittedByDisplayName,P,t??void 0),W=k.pendingKind==="deleti
133on"?"â":B?null:GS(k)?e("approvals.newArticle"):e("approvals.noChanges");return n.jsxs(u.Fragment,{children:[n.jsxs(jt,{children:[n.jsx(De,{className:"pl-4 font-mono text-xs",children:k.articleNumber}),n.jsx(De,{className:"max-w-0",children:n.jsx("span",{className:"block truncate text-sm",title:k.name,children:k.name})}),n.jsx(De,{className:"hidden sm:table-cell",children:n.jsx(tD,{kind:k.pendingKind,t:e})}),n.jsx(De,{className:"hidden max-w-0 md:table-cell",children:n.jsx("span",{className:"block truncate text-sm text-muted-foreground",title:G,children:G})}),n.jsx(De,{children:B?n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-7 max-w-full truncate px-2 text-xs",onClick:()=>w(T?null:k.id),children:T?e("approvals.compare.hide"):`${D.length} ${e("approvals.changesCountLabel")}`}):n.jsx("span",{className:"text-xs text-muted-foreground",children:W})}),n.jsx(De,{className:"pr-4",children:n.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-1",children:[n.jsxs(ee,{type:"button",variant:"ghost",size:"sm",className:"h-8 gap-1 px-2",disabled:j,onClick:()=>C(k),title:e("approvals.open"),children:[n.jsx(go,{className:"size-3.5 shrink-0"}),n.jsx("span",{className:"hidden lg:inline",children:e("approvals.open")})]}
133),k.pendingKind==="deletion"?n.jsxs(n.Fragment,{children:[n.jsxs(ee,{type:"button",size:"sm",variant:"destructive",className:"h-8 gap-1 px-2",disabled:j||!z,title:e(z?"approvals.confirmDelete":"approvals.selfApprovalBlocked"),onClick:()=>void A(k),children:[j?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(or,{className:"size-3.5 shrink-0"}),n.jsx("span",{className:"hidden xl:inline",children:e("approvals.confirmDelete")})]}),n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-8 gap-1 px-2",disabled:j,title:e("approvals.rejectDelete"),onClick:()=>void I(k),children:[n.jsx(Og,{className:"size-3.5 shrink-0"}),n.jsx("span",{className:"hidden xl:inline",children:e("approvals.rejectDelete")})]})]}):n.jsxs(ee,{type:"button",size:"sm",className:ye("h-8 gap-1 px-2",eD),disabled:j||!z,title:e(z?"approvals.approve":"approvals.selfApprovalBlocked"),onClick:()=>void E(k),children:[j?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(rs,{className:"size-3.5 shrink-0"}),n.jsx("span",{className:"hidden xl:inline",children:e("approvals.approve")})]})]})})]}),T&&B&&n.jsx(jt,{className:"bg-muted/20 hover:bg-muted/20",children:n.jsx(De,{colSpan:6,className:"py-4 pl-4 pr-4",children:n.jsx(nD,{changes:D,t:e})})},`${k.id}-compare`)]},k.id)})})]})})}),m&&n.jsx(Tf,{article:m,open:h,onOpenChange:k=>{x(k),k||p(null)}})]})}function Ba(e,t){return n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:e,children:t})})}const sD=[{path:"/artikel",element:Ba("article-management",n.jsx(VE,{}))},{path:"/artikel/ki-anreicherung",element:Ba("article-management",n.jsx(GT,{}))},{path:"/freigaben",element:Ba("article-management",n.jsx(rD,{}))},{path:"/lieferanten",element:Ba("article-management",n.jsx(GE,{}))},{path:"/einstellungen",element:Ba("article-management",n.jsx(QE,{}))},{path:"/einstellungen/warengruppen",element:Ba("article-management",n.jsx(KT,{}))},{path:"/einstellungen/system",element:Ba("article-management",n.jsx(UT,{}))}],aD=Object.freeze(Object.defineProperty({__proto__:null,coreRoutes:sD},Symbol.toStringTag,{value:"Module"}));function Sv(e,t){const r=e==null?void 0:e.trim().toLowerCase();return r?[t.display_name,t.company_name,t.email].map(a=>a==null?void 0:a.trim().toLowerCase()).filter(Boolean).includes(r):!1}function Av({liaCustomerId:e,matchCustomerName:t,any:r=!1,onMatch:s}){u.useEffect(()=>{const a=i=>{const o=ON(i);if(!o)return;if(r){s(o);return}const l=!!(e&&o.customerId===e),d=!!(t&&Sv(t,o.profile));(l||d)&&s(o)};return window.addEventListener(sp,a),()=>window.removeEventListener(sp,a)},[r,e,t,s])}function iD(){const e=Qo(),[t,r]=u.useState([]),[s,a]=u.useState(!0),[i,o]=u.useState(!1),[l,d]=u.useState(!1),[m,p]=u.useState(""),[h,x]=u.useState(""),[b,w]=u.useState(""),[v,S]=u.useState("CUSTOMER_ORDER"),R=u.useCallback(async()=>{a(!0);try{r(await sw())}catch{M.error("Aufträge konnten nicht geladen werden.")}finally{a(!1)}},[]);u.useEffect(()=>{R()},[R]),Av({any:!0,onMatch:u.useCallback(A=>{r(I=>{let C=!1;const k=I.map(j=>Sv(j.customerName,A.profile)?(C=!0,{...j,customerName:A.profile.display_name||A.profile.company_name||j.customerName}):j);return C?k:I})},[])});async function E(){const A=m.trim(),I=h.trim();if(!(!A||!I)){d(!0);try{const C=await iw({orderNumber:A,name:I,customerName:b.trim(),status:"open",orderType:v,notes:""});o(!1),p(""),x(""),w(""),S("CUSTOMER_ORDER"),e(`/auftraege/${C.id}`)}catch{M.error("Auftrag konnte nicht angelegt werden.")}finally{d(!1)}}}return n.jsxs(Br,{children:[n.jsx(xs,{title:"Aufträge",subtitle:"Projekt- und Kundenaufträge mit einzeln fertigbaren Baugruppen-Positionen.",action:n.jsxs(ee,{className:"gap-1.5",onClick:()=>o(!0),children:[n.jsx(Gn,{className:"size-4"}),"Neuer Auftrag"]})}),n.jsx("div",{className:"mt-6 overflow-hidden rounded-xl border bg-card",children:s?n.jsxs("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Laden â¦"]}):n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"pl-4 text-xs",children:"Auftrag"}),n.jsx(Ve,{className:"text-xs",children:"Kunde"}),n.jsx(Ve,{className:"text-right text-xs",children:"Positionen"}),n.jsx(Ve,{className:"text-xs",children:"Status"})]})}),n.jsxs(Qn,{children:[t.map(A=>n.jsxs(jt,{className:"cursor-pointer",onClick:()=>e(`/auftraege/${A.id}`),children:[n.jsx(De,{className:"pl-4",children:n.jsxs(lr,{to:`/auftraege/${A.id}`,className:"hover:underline",onClick:I=>I.stopPropagation(),children:[n.jsx("div",{className:"font-mono text-sm font-medium",children:A.orderNumber}),n.jsx("div",{className:"text-xs text-muted-foreground",children:A.name})]})}),n.jsx(De,{className:"text-sm",children:A.customerName||"â"}),n.jsx(De,{className:"text-right text-sm tabular-nums",children:A.positionCount??0}),n.jsx(De,{children:n.jsx(bt,{variant:"secondary",className:"text-[10px]",children:A.status})})]},A.id)),t.length===0&&n.jsx(jt,{children:n.jsx(De,{colSpan:4,className:"py-10 text-center text-sm text-muted-foreground",children:"Noch keine Aufträge angelegt."})})]})]})}),n.jsx(En,{open:i,onOpenChange:o,children:n.jsxs(Pn,{children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Projekt / Kundenauftrag anlegen"})}),n.jsxs("div",{className:"space-y-3 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Auftragstyp"}),n.jsxs(_t,{value:v,onValueChange:A=>S(A),children:[n.jsx(It,{children:n.jsx(Et,{})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"CUSTOMER_ORDER",children:"Kundenauftrag"}),n.jsx(ft,{value:"INTERNAL_STOCK",children:"Lagerauftrag (intern)"})]})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Auftragsnummer"}),n.jsx(Ze,{value:m,onChange:A=>p(A.target.value),placeholder:"A-2026-001"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Projektbezeichnung"}),n.jsx(Ze,{value:h,onChange:A=>x(A.target.value),placeholder:"Smart Panel Serie X"})]}),v==="CUSTOMER_ORDER"&&n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Kunde"}),n.jsx(Ze,{value:b,onChange:A=>w(A.target.value)})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{variant:"outline",onClick:()=>o(!1),children:"Abbrechen"}),n.jsx(ee,{disabled:l,onClick:()=>void E(),children:l?n.jsx(Me,{className:"size-4 animate-spin"}):"Anlegen"})]})]})})]})}function oD({orderId:e}){const t=Qo(),{articles:r}=Mn(),[s,a]=u.useState(null),[i,o]=u.useState([]),[l,d]=u.useState(!0),[m,p]=u.useState(!1),[h,x]=u.useState(""),[b,w]=u.useState(null),[v,S]=u.useState("1"),[R,E]=u.useState(!1),A=u.useCallback(async()=>{d(!0);try{const[j,z]=await Promise.all([aw(e),ow(e)]);a(j),o(z)}catch{M.error("Auftrag konnte nicht geladen werden."),t("/auftraege")}finally{d(!1)}},[e,t]);u.useEffect(()=>{A()},[A]),Av({matchCustomerName:(s==null?void 0:s.customerName)??null,onMatch:u.useCallback(j=>{a(z=>z&&{...z,customerName:j.profile.display_name||j.profile.company_name||z.customerName})},[])});async function I(){if(!h.trim()||!b){M.error("Bezeichnung und Artikel sind Pflicht.");return}E(!0);try{const j=await lw(e,{label:h.trim(),articleId:b,quantity:parseFloat(v)||1});o(z=>[...z,j]),p(!1),x(""),w(null),S("1"),M.success("Position hinzugefügt.")}catch{M.error("Position konnte nicht gespeichert werden.")}finally{E(!1)}}async function C(j){try{await uw(j),M.success("Arbeitsauftrag erzeugt.")}catch{M.error("Arbeitsauftrag konnte nicht erzeugt werden.")}}async function k(j){try{await cw(j),o(z=>z.filter(D=>D.id!==j))}catch{M.error("Position konnte nicht gelöscht werden.")}}return l||!s?n.jsxs("div",{className:"flex min-h-[240px] items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Auftrag wird geladen â¦"]}):n.jsxs(Br,{maxWidth:"max-w-5xl",children:[n.jsxs("div",{className:"mb-6 flex flex-wrap items-center gap-3",children:[n.jsx(ee,{variant:"ghost",size:"sm",className:"gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/auftraege",children:[n.jsx(Ks,{className:"size-4"}),"Aufträge"]})}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:s.name}),n.jsx("p",{className:"font-mono text-xs text-muted-foreground",children:s.orderNumber})]}),n.jsx(bt,{variant:"secondary",children:s.status})]}),n.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[n.jsx("h2",{className:"text-sm font-semibold",children:"Positionen (Baugruppen / Module)"}),n.jsxs(ee,{size:"sm",className:"gap-1.5",onClick:()=>p(!0),children:[n.jsx(Gn,{className:"size-3.5"}),"Position"]})]}),n.jsx("div",{className:"overflow-hidden rounded-xl border bg-card",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"text-xs",children:"Bezeichnung"}),n.jsx(Ve,{className:"text-xs",children:"Artikel"}),n.jsx(Ve,{className:"text-right text-xs",children:"Menge"}),n.jsx(Ve,{className:"w-40 text-xs",children:"Aktionen"})]})}),n.jsxs(Qn,{children:[i.map(j=>n.jsxs(jt,{children:[n.jsx(De,{className:"text-sm font-medium",children:j.label}),n.jsxs(De,{className:"text-xs",children:[n.jsx("div",{children:j.articleName}),n.jsx("div",{className:"font-mono text-[10px] text-muted-foreground",children:j.articleNumber})]}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:tl(j.quantity)}),n.jsx(De,{children:n.jsxs("div",{className:"flex gap-1",children:[n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 text-[10px]",onClick:()=>void C(j.id),children:"FA anlegen"}),n.jsx(ee,{type:"button",size:"icon",variant:"ghost",className:"size-7 text-destructive",onClick:()=>void k(j.id),children:n.jsx(or,{className:"size-3.5"})})]})})]},j.id)),i.length===0&&n.jsx(jt,{children:n.jsx(De,{colSpan:4,className:"py-8 text-center text-sm text-muted-foreground",children:"Noch keine Positionen â fügen Sie Baugruppen als Zeilen hinzu."})})]})]})}),n.jsx(En,{open:m,onOpenChange:p,children:n.jsxs(Pn,{children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Position hinzufügen"})}),n.jsxs("div",{className:"space-y-3 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Bezeichnung (z. B. AuÃenwand, Mainboard)"}),n.jsx(Ze,{value:h,onChange:j=>x(j.target.value),className:"h-8"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Artikel / Baugruppe"}),n.jsx(Ci,{articles:r,value:b,onSelect:w})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Menge"}
133),n.jsx(Ze,{value:v,onChange:j=>S(j.target.value),className:"h-8 w-24"})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{variant:"outline",onClick:()=>p(!1),children:"Abbrechen"}),n.jsx(ee,{disabled:R,onClick:()=>void I(),children:R?n.jsx(Me,{className:"size-4 animate-spin"}):"Hinzufügen"})]})]})})]})}const lD={bedarf:{key:"proc.status.bedarf",className:"border-transparent bg-muted text-muted-foreground",dot:"bg-muted-foreground"},angefragt:{key:"proc.status.angefragt",className:"border-transparent bg-info/15 text-info",dot:"bg-info"},bestellt:{key:"proc.status.bestellt",className:"border-transparent bg-warning/15 text-warning",dot:"bg-warning"},eingegangen:{key:"proc.status.eingegangen",className:"border-transparent bg-success/15 text-success",dot:"bg-success"},storniert:{key:"proc.status.storniert",className:"border-transparent bg-destructive/15 text-destructive",dot:"bg-destructive"}};function cD(e){return e.qty*e.estPrice}const uD={draft:"bedarf",pending:"angefragt",ordered:"bestellt",received:"eingegangen",cancelled:"storniert"};function dD(e){return uD[e]??"bedarf"}function mD(e){return`BA-${e.replace(/-/g,"").slice(0,8).toUpperCase()}`}function fD(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?"":(t.setDate(t.getDate()+14),t.toISOString().slice(0,10))}function pD(e){return{id:e.id,number:mD(e.id),articleNumber:e.articleNumber,articleName:e.name,qty:e.quantity,unit:e.unit,needBy:fD(e.createdAt),supplier:e.supplierName||"â",status:dD(e.status),estPrice:e.price,currency:"EUR",requester:"Manuell"}}const hD=["alle","bedarf","angefragt","bestellt","eingegangen","storniert"];function gD(){const{t:e}=gs(),t=Mi(),[r,s]=u.useState(""),[a,i]=u.useState("alle"),[o,l]=u.useState(!0),[d,m]=u.useState(!0),[p,h]=u.useState(null),[x,b]=u.useState({}),[w,v]=u.useState([]),S=new Date,R=u.useCallback(async()=>{m(!0);try{const T=await gw();v(T.map(pD))}catch{M.error("Bestellanforderungen konnten nicht geladen werden."),v([])}finally{m(!1)}},[]),E=u.useCallback(async()=>{l(!0);try{const T=await fw();b(T.groupedBySupplier)}catch{M.error("Fehlbestände konnten nicht berechnet werden.")}finally{l(!1)}},[]);u.useEffect(()=>{E(),R()},[E,R]);const A=u.useMemo(()=>w.filter(T=>{const P=a==="alle"||T.status===a,G=r.trim().toLowerCase(),W=G===""||T.number.toLowerCase().includes(G)||T.articleName.toLowerCase().includes(G)||T.articleNumber.toLowerCase().includes(G)||T.supplier.toLowerCase().includes(G);return P&&W}),[w,r,a]),I=Object.values(x).reduce((T,P)=>T+P.length,0),C=w.filter(T=>T.status==="bedarf"||T.status==="angefragt").length,k=w.filter(T=>T.status==="bestellt").length,j=w.filter(T=>T.status==="eingegangen").length,z=w.filter(T=>T.status!=="storniert").reduce((T,P)=>T+cD(P),0),D=[{label:e("stat.openReq"),value:String(C),icon:kN},{label:e("stat.ordered"),value:String(k),icon:wg,tone:"text-warning"},{label:e("stat.received"),value:String(j),icon:wN,tone:"text-success"},{label:e("stat.procValue"),value:t.currency(z),icon:SN,tone:"text-info"}];async function B(T,P,G){h(T);try{const W=P.map(ke=>ke.articleId);if(G==="BOM_CSV"||G==="BOM_EXCEL")await pw({supplierName:T,articleIds:W}),M.success(`CSV-Export für ${T} gestartet`);
133else{const ke=await hw({supplierName:T,articleIds:W});M.success(ke?`Bestell-PDF erstellt (Ziel: ${ke})`:`Bestell-PDF für ${T} erstellt`)}}catch{M.error("Export fehlgeschlagen")}finally{h(null)}}return n.jsxs(Br,{children:[n.jsx(xs,{title:e("procurement.title"),subtitle:e("procurement.subtitle")}),n.jsx("div",{className:"mt-6",children:n.jsx(Yx,{stats:D})}),n.jsxs("div",{className:"mt-6 overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[n.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[n.jsxs("div",{children:[n.jsx("h2",{className:"font-semibold",children:"Fehlbestände nach Lieferant"}),n.jsxs("p",{className:"text-sm text-muted-foreground",children:["Aus offenen Arbeitsaufträgen · ",I," Positionen"]})]}),n.jsx(ee,{variant:"outline",size:"sm",onClick:()=>void E(),disabled:o,children:o?n.jsx(Me,{className:"size-4 animate-spin"}):"Aktualisieren"})]}),o?n.jsxs("div",{className:"flex h-32 items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Berechne Bedarf â¦"]}):Object.keys(x).length===0?n.jsx("p",{className:"p-6 text-sm text-muted-foreground",children:"Keine Fehlbestände."}):n.jsx("div",{className:"divide-y",children:Object.entries(x).map(([T,P])=>{var ke;const G=((ke=P[0])==null?void 0:ke.orderMethod)??"EMAIL",W=G==="BOM_CSV"||G==="BOM_EXCEL";return n.jsxs("div",{className:"flex flex-col gap-3 p-4 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{children:[n.jsx("p",{className:"font-medium",children:T}),n.jsxs("p",{className:"text-sm text-muted-foreground",children:[P.length," Artikel · ",G]})]}),n.jsxs(ee,{className:"gap-2",disabled:p===T,onClick:()=>void B(T,P,G),children:[p===T?n.jsx(Me,{className:"size-4 animate-spin"}):W?n.jsx(xi,{className:"size-4"}):n.jsx(qc,{className:"size-4"}),W?"CSV exportieren":"Bestell-PDF"]})]},T)})})]}),n.jsxs("div",{className:"mt-6 overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[n.jsxs("div",{className:"flex flex-col gap-3 border-b p-4 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"relative w-full sm:max-w-xs",children:[n.jsx(Er,{className:"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),n.jsx(Ze,{value:r,onChange:T=>s(T.target.value),placeholder:e("procurement.searchPlaceholder"),className:"pl-9"})]}),n.jsxs(_t,{value:a,onValueChange:T=>i(T),children:[n.jsx(It,{className:"w-[180px]",children:n.jsx(Et,{})}),n.jsx(Pt,{children:hD.map(T=>n.jsx(ft,{value:T,children:e(T==="alle"?"common.all":`proc.status.${T}`)},T))})]})]}),n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"hover:bg-transparent",children:[n.jsx(Ve,{className:"pl-4",children:e("procurement.col.requisition")}),n.jsx(Ve,{children:e("procurement.col.article")}),n.jsx(Ve,{className:"hidden text-right sm:table-cell",children:e("procurement.col.qty")}),n.jsx(Ve,{className:"hidden lg:table-cell",children:e("procurement.col.needBy")}),n.jsx(Ve,{className:"hidden md:table-cell",children:e("procurement.col.supplier")}),n.jsx(Ve,{children:e("procurement.col.status")})]})}),n.jsxs(Qn,{children:[d?n.jsx(jt,{className:"hover:bg-transparent",children:n.jsx(De,{colSpan:6,className:"h-32 text-center",children:n.jsxs("div",{className:"flex items-center justify-center gap-2 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Anforderungen werden geladen â¦"]})})}):A.map(T=>{const P=lD[T.status],W=(T.status==="bedarf"||T.status==="angefragt")&&!!T.needBy&&new Date(T.needBy)<S;return n.jsxs(jt,{children:[n.jsxs(De,{className:"pl-4",children:[n.jsx("div",{className:"font-mono text-sm font-medium leading-tight",children:T.number}),n.jsx("div",{className:"text-xs text-muted-foreground",children:T.requester})]}),n.jsxs(De,{children:[n.jsx("div",{className:"text-sm font-semibold text-foreground leading-tight",children:T.articleName}),n.jsx("div",{className:"font-mono text-xs text-muted-foreground",children:T.articleNumber})]}),n.jsxs(De,{className:"hidden text-right tabular-nums sm:table-cell",children:[t.quantity(T.qty)," ",T.unit]}),n.jsx(De,{className:ye("hidden lg:table-cell",W?"font-medium text-destructive":"text-muted-foreground"),children:T.needBy?t.date(T.needBy):"â"}),n.jsx(De,{className:"hidden text-muted-foreground md:table-cell",children:T.supplier}),n.jsx(De,{children:n.jsx(Gx,{label:e(P.key),className:P.className,dot:P.dot})})]},T.id)}),!d&&A.length===0&&n.jsx(jt,{className:"hover:bg-transparent",children:n.jsx(De,{colSpan:6,className:"h-32 text-center",children:n.jsx("p",{className:"text-sm text-muted-foreground",children:e("common.none")})})})]})]}),n.jsxs("div",{className:"border-t px-4 py-3 text-xs text-muted-foreground",children:[A.length," ",e("common.of")," ",w.length," ",e("nav.procurement")]})]})]})}function xD(){const{orderId:e}=Go();return e?n.jsx(oD,{orderId:e}):null}const yD=[{path:"/auftraege",element:n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:"procurement",children:n.jsx(iD,{})})})},{path:"/auftraege/:orderId",element:n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:"procurement",children:n.jsx(xD,{})})})},{path:"/beschaffung",element:n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:"procurement",children:n.jsx(gD,{})})})}],bD=Object.freeze(Object.defineProperty({__proto__:null,procurementRoutes:yD},Symbol.toStringTag,{value:"Module"})),vD="bg-primary text-primary-foreground hover:bg-primary/90",ND={"csv-importer":Jo,"eagle-cad-importer":Vc,"bom-export-electronics":np,"pnp-export-electronics":np};function jD({mod:e}){const t=ND[e.id]??zm;return n.jsx("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(t,{className:"size-4 text-primary"})})}function kD({field:e,value:t,onChange:r}){return e.type==="boolean"?n.jsxs("div",{className:"flex items-center justify-between gap-4 roun
133ded-lg border border-border px-3 py-2.5",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx(ze,{className:"text-sm",children:e.label}),e.description&&n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:e.description})]}),n.jsx(Ir,{checked:!!t,onCheckedChange:r})]}):e.type==="select"&&e.options?n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:e.label}),e.description&&n.jsx("p",{className:"text-xs text-muted-foreground",children:e.description}),n.jsxs(_t,{value:String(t??""),onValueChange:r,children:[n.jsx(It,{className:"h-8 text-sm",children:n.jsx(Et,{})}),n.jsx(Pt,{children:e.options.map(s=>n.jsx(ft,{value:s.value,children:s.label},s.value))})]})]}):e.type==="number"?n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:e.label}),e.description&&n.jsx("p",{className:"text-xs text-muted-foreground",children:e.description}),n.jsx(Ze,{type:"number",value:String(t??""),onChange:s=>r(parseFloat(s.target.value)||0),className:"h-8 text-sm"})]}):n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:e.label}),e.description&&n.jsx("p",{className:"text-xs text-muted-foreground",children:e.description}),n.jsx(Ze,{value:String(t??""),onChange:s=>r(s.target.value),className:"h-8 text-sm"})]})}function wD({module:e,config:t,open:r,onOpenChange:s,onSave:a}){const[i,o]=u.useState(t);return u.useEffect(()=>{r&&o(t)},[r,t,e==null?void 0:e.id]),e?n.jsx(Fc,{open:r,onOpenChange:s,children:n.jsxs($c,{side:"right",className:"flex w-full flex-col gap-0 p-0 sm:max-w-md",children:[n.jsxs(Kc,{className:"border-b px-6 py-5",children:[n.jsx(Do,{className:"text-base",children:e.name}),n.jsxs(nc,{className:"text-xs",children:["Modul-Konfiguration · Format: ",e.format.toUpperCase()]})]}),n.jsx("div",{className:"flex-1 space-y-4 overflow-y-auto px-6 py-5",children:e.configSchema.map(l=>n.jsx(kD,{field:l,value:i[l.key]??l.defaultValue??"",onChange:d=>o(m=>({...m,[l.key]:d}))},l.key))}),n.jsx(AN,{className:"border-t px-6 py-4",children:n.jsx(ee,{type:"button",className:vD,onClick:()=>{a(i),s(!1),M.success("Modul-Konfiguration gespeichert")},children:"Speichern"})})]})}):null}function SD(){const e=zf(),{settings:t,updateDataModule:r,deleteMappingPreset:s}=Mn(),[a,i]=u.useState(null),[,o]=u.useState(0);u.useEffect(()=>dS(()=>o(x=>x+1)),[]);const l=u.useMemo(()=>il(t.dataModules),[t.dataModules]),d=al(),m=t.mappingPresets??[],p=a?xc(a)??null:null,h=a?l.find(x=>x.moduleId===a):void 0;return n.jsxs("div",{className:Kb(`${e} flex flex-col overflow-hidden`),children:[n.jsxs("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-border bg-background px-6",children:[n.jsxs(lr,{to:"/einstellungen",className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground transition-colors hover:text-foreground",children:[n.jsx(Ks,{className:"size-3.5"}),"Einstellungen"]}),n.jsx("span",{className:"text-xs text-muted-foreground/40",children:"/"}),n.jsx("span",{className:"text-xs font-medium text-foreground",children:"Datenschnittstellen"})]}),n.jsx("div",{className:"flex-1 overflow-y-auto",children:n.jsxs(Br,{maxWidth:"max-w-3xl",children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(zm,{className:"size-5 text-primary"})}),n.jsxs("div",{children:[n.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Datenschnittstellen"}),n.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Integrationen für den Datenaustausch mit externen Systemen. Mit âLiveâ erscheinen sie im Import-Dialog des Artikelstamms."})]})]}),n.jsx("div",{className:"mt-8 space-y-3",children:d.map(x=>{const b=l.find(v=>v.moduleId===x.id),w=(b==null?void 0:b.active)??!1;
133return n.jsxs("div",{className:"flex items-center gap-4 rounded-xl border border-border bg-card p-4 shadow-sm",children:[n.jsx(jD,{mod:x}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("h3",{className:"text-sm font-semibold",children:x.name}),n.jsx(bt,{variant:"outline",className:"text-[10px] font-normal capitalize",children:x.type==="importer"?"Import":"Export"}),w?n.jsxs(bt,{className:"gap-1 bg-emerald-600/15 text-[10px] font-medium text-emerald-700 hover:bg-emerald-600/15 dark:text-emerald-400",children:[n.jsx(gi,{className:"size-3"}),"Live"]}):null,n.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:x.format})]}),n.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:x.description??`${x.configSchema.length} Konfigurationsfelder`})]}),n.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ze,{htmlFor:`live-${x.id}`,className:"text-xs text-muted-foreground",children:"Live"}),n.jsx(Ir,{id:`live-${x.id}`,checked:w,onCheckedChange:v=>r(x.id,{active:v})})]}),n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5 h-8 text-xs",onClick:()=>i(x.id),children:[n.jsx(Po,{className:"size-3.5"}),"Konfigurieren"]})]})]},x.id)})}),m.length>0&&n.jsxs("div",{className:"mt-10",children:[n.jsx("h2",{className:"text-sm font-semibold",children:"Gespeicherte Mapping-Presets"}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"CSV-Spaltenzuordnungen, die beim Import wiederverwendet werden können."}),n.jsx("div",{className:"mt-4 space-y-2",children:m.map(x=>{const b=xc(x.moduleId);return n.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-border bg-card px-4 py-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"text-sm font-medium",children:x.name}),n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:[(b==null?void 0:b.name)??x.moduleId," ·"," ",Object.keys(x.mappings).filter(w=>x.mappings[w]).length," Felder"]})]}),n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-8 text-muted-foreground hover:text-destructive",onClick:()=>{s(x.id),M.success("Preset gelöscht.")},children:n.jsx(or,{className:"size-4"})})]},x.id)})})]})]})}),n.jsx(wD,{module:p,config:(h==null?void 0:h.config)??{},open:!!a,onOpenChange:x=>{x||i(null)},onSave:x=>{a&&r(a,{config:x})}})]})}function dg(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/1024).toFixed(1)} KB`}function AD(){const e=Qo(),{articles:t,refresh:r,settings:s}=Mn(),a=u.useRef(null),[i,o]=u.useState("upload"),[l,d]=u.useState(null),[m,p]=u.useState(!1),[h,x]=u.useState(!1),[b,w]=u.useState(null),[v,S]=u.useState(""),[R,E]=u.useState(""),I=t.filter(P=>P.itemType==="SUBASSEMBLY"||P.itemType==="FINISHED_GOOD").map(dr).filter(P=>{const G=v.trim().toLowerCase();return G?P.name.toLowerCase().includes(G)||P.articleNumber.toLowerCase().includes(G):!0}),C=()=>{o("upload"),d(null),w(null),E(""),S("")},k=u.useCallback(async P=>{M.message(`Datei erkannt: ${P.name} (${dg(P.size)})`),d(P),w(null),E("");try{await TA(P),o("choose-mode")}catch(G){M.error(G instanceof Error?G.message:"Eagle-Datei konnte nicht gelesen werden."),d(null),o("upload")}},[]),[j,z]=u.useState(0),D=u.useCallback(async P=>{const G=await ol(P);if(!G)return;const W=Oi(G);z(W.length)},[]),B=P=>{D(P),k(P)},T=async()=>{if(!(!l||!b)){if(b==="update"&&!R){M.error("Bitte eine bestehende Baugruppe auswählen.");return}x(!0);try{const{assemblyId:P,stats:G}=await zA(l,t,b,b==="update"?R:void 0,void 0,{matchingKeyTemplate:Li(s)});await r();const W=b==="create"?`"${em(l)}" wurde als neue Baugruppe angelegt.`:"Baugruppe wurde aktualisiert.";M.success(`${W} ${G.bomLines} Stücklistenpositionen übernommen.`,{action:{label:b==="create"?"Zum neuen Artikel springen":"Zum Artikel springen",onClick:()=>e(`/artikel?article=${P}`)},duration:1e4}),C()}catch(P){M.error(P instanceof Error?P.message:"CAD-Import fehlgeschlagen.")}finally{x(!1)}}};return i==="upload"?n.jsxs("div",{className:"space-y-4",children:[n.jsxs("p",{className:"text-sm text-muted-foreground",children:[ss.eagleImport," â Ziehen Sie Ihre Baugruppen-Datei (.brd) hierher. Die Stückliste wird automatisch erstellt."]}),n.jsxs("button",{type:"button",onClick:()=>{var P;return(P=a.current)==null?void 0:P.click()},onDragEnter:P=>{P.preventDefault(),p(!0)},onDragOver:P=>{P.preventDefault(),p(!0)},onDragLeave:P=>{P.preventDefault(),p(!1)},onDrop:P=>{var W;P.preventDefault(),p(!1);const G=(W=P.dataTransfer.files)==null?void 0:W[0];G&&B(G)},className:ye("flex w-full flex-col items-center gap-3 rounded-2xl border px-6 py-14 text-center transition-colors",m?"border-primary bg-primary/10 ring-2 ring-primary/25":"border-dashed border-border hover:border-primary/40 hover:bg-primary/[0.02]"),children:[n.jsx("div",{className:"flex size-14 items-center justify-center rounded-2xl bg-primary/10",children:n.jsx(xo,{className:ye("size-7",m?"text-primary":"text-muted-foreground")})}),n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:m?"Datei loslassen â¦":"Eagle .brd (XML) hier ablegen"}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"oder klicken zum Auswählen"})]})]}),n.jsx("input",{ref:a,type:"file",accept:".brd,.brd.json,.json",className:"sr-only",onChange:P=>{var W;const G=(W=P.target.files)==null?void 0:W[0];G&&B(G)}})]}):n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-xl border bg-muted/20 px-4 py-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"truncate text-sm font-medium",children:l==null?void 0:l.name}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[j," Bauteil",j===1?"":"e"," erkannt",l?` · ${dg(l.size)}`:""]})]}),n.jsx(ee,{type:"button",variant:"outline",size:"sm",onClick:C,children:"Andere Datei"})]}),n.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[n.jsxs("button",{type:"button",onClick:()=>w("create"),className:ye("rounded-xl border p-5 text-left transition-colors",b==="create"?"border-primary bg-primary/5 ring-2 ring-primary/20":"border-border hover:border-primary/30 hover:bg-accent/30"),children:[n.jsx("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Sg,{className:"size-5 text-primary"})}),n.jsx("h3",{className:"mt-4 text-sm font-semibold",children:"Neue Baugruppe aus CAD erstellen"}),n.jsxs("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:["Legt automatisch einen Artikel vom Typ SUBASSEMBLY an",l?` (â${em(l)}â)`:""," und baut die Stückliste im Hintergrund auf."]})]}),n.jsxs("button",{type:"button",onClick:()=>w("update"),className:ye("rounded-xl border p-5 text-left transition-colors",b==="update"?"border-primary bg-primary/5 ring-2 ring-primary/20":"border-border hover:border-primary/30 hover:bg-accent/30"),children:[n.jsx("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(el,{className:"size-5 text-primary"})}),n.jsx("h3",{className:"mt-4 text-sm font-semibold",children:"Bestehende Baugruppe aktualisieren"}),n.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:"Ersetzt die Stückliste einer vorhandenen Baugruppe durch die CAD-Daten."})]})]}),b==="update"&&n.jsxs("div",{className:"space-y-3 rounded-xl border border-border bg-card p-4",children:[n.jsx(ze,{htmlFor:"assembly-search",children:"Baugruppe suchen"}
133),n.jsx(Ze,{id:"assembly-search",value:v,onChange:P=>S(P.target.value),placeholder:"Name oder Artikelnummer â¦"}),n.jsx("div",{className:"max-h-48 space-y-1 overflow-y-auto",children:I.length===0?n.jsx("p",{className:"py-4 text-center text-xs text-muted-foreground",children:"Keine Baugruppen gefunden."}):I.map(P=>n.jsxs("button",{type:"button",onClick:()=>E(P.id),className:ye("flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm transition-colors",R===P.id?"bg-primary/10 text-foreground":"hover:bg-accent/50"),children:[n.jsx(Vc,{className:"size-4 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:P.name}),n.jsx("span",{className:"shrink-0 font-mono text-[10px] text-muted-foreground",children:P.articleNumber})]},P.id))})]}),n.jsx("div",{className:"flex justify-end",children:n.jsxs(ee,{type:"button",className:"gap-2",disabled:!b||h||b==="update"&&!R,onClick:()=>void T(),children:[h?n.jsx(Me,{className:"size-4 animate-spin"}):null,b==="create"?"Baugruppe erstellen & Stückliste aufbauen":"Baugruppe aktualisieren"]})})]})}function CD(){return n.jsx(Fb,{onDone:()=>{}})}function _D(){return n.jsxs(Br,{maxWidth:"max-w-5xl",children:[n.jsx(xs,{title:"Schnittstellen",subtitle:"Datei-Import, Eagle Import und Shop-Anbindungen â alles an einem Ort."}),n.jsxs(Ei,{defaultValue:"file-import",className:"mt-8 gap-6",children:[n.jsxs(Pi,{className:"h-auto w-full flex-wrap justify-start gap-1",children:[n.jsxs(ar,{value:"file-import",className:"gap-1.5",children:[n.jsx(Jo,{className:"size-4"}),ss.fileImport]}),n.jsxs(ar,{value:"shopware",className:"gap-1.5",children:[n.jsx(Pg,{className:"size-4"}),ss.shopware]}),n.jsx(ar,{value:"cad-eagle",className:"gap-1.5",children:ss.eagleImport})]}),n.jsx(ir,{value:"file-import",children:n.jsx(CD,{})}),n.jsx(ir,{value:"shopware",children:n.jsx(Db,{})}),n.jsx(ir,{value:"cad-eagle",children:n.jsx(AD,{})})]})]})}const ID=[{path:"/schnittstellen",element:n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:"data-interfaces",children:n.jsx(_D,{})})})},{path:"/einstellungen/datenschnittstellen",element:n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(fi,{featureId:"data-interfaces",children:n.jsx(SD,{})})})}],ED=Object.freeze(Object.defineProperty({__proto__:null,interfacesRoutes:ID},Symbol.toStringTag,{value:"Module"})),ju={PICK_AND_PLACE:"Pick & Place",CNC_LASER_3D:"CNC / Laser 3D",OTHER:"Sonstige"};function PD(e){return e==="PICK_AND_PLACE"?{feeders:[],offsets:{x:0,y:0,rotation:0},exportMapping:[]}:e==="CNC_LASER_3D"?{supportedFormats:[".gcode",".nc"]}:{}}function TD(e){const t=e;return{feeders:Array.isArray(t.feeders)?t.feeders:[],offsets:t.offsets??{x:0,y:0,rotation:0},exportMapping:t.exportMapping??[]}}function DD(e){const t=e;return{supportedFormats:Array.isArray(t.supportedFormats)?t.supportedFormats:[".gcode",".nc"],workArea:t.workArea}}const RD=Object.entries(ju);function MD(){const[e,t]=u.useState([]),[r,s]=u.useState(!0),[a,i]=u.useState(!1),[o,l]=u.useState(!1),[d,m]=u.useState(""),[p,h]=u.useState("PICK_AND_PLACE"),x=u.useCallback(async()=>{s(!0);try{t(await Xm())}catch{M.error("Maschinen konnten nicht geladen werden.")}finally{s(!1)}},[]);u.useEffect(()=>{x()},[x]);function b(){m(""),h("PICK_AND_PLACE")}async function w(){const v=d.trim();if(v){l(!0);try{const S=await Ak({name:v,type:p});t(R=>[...R,S].sort((E,A)=>E.name.localeCompare(A.name,"de"))),i(!1),b(),M.success("Maschine angelegt.")}catch{M.error("Maschine konnte nicht angelegt werden.")}finally{l(!1)}}}return n.jsxs(Br,{children:[n.jsx(xs,{title:"Maschinen",subtitle:"Ressourcenverwaltung â Bestückungsautomaten, CNC-Anlagen und Feeder-Setup.",action:n.jsxs(ee,{onClick:()=>i(!0),children:[n.jsx(Gn,{className:"size-4"}),"Neue Maschine"]})}),n.jsx("div",{className:"mt-6",children:r?n.jsxs("div",{className:"flex min-h-[200px] items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Maschinen werden geladen â¦"]}):e.length===0?n.jsxs("div",{className:"flex min-h-[280px] flex-col items-center justify-center rounded-xl border border-dashed bg-muted/20 px-6 py-12 text-center",children:[n.jsx("div",{className:"flex size-12 items-center justify-center rounded-xl bg-primary/10",children:n.jsx(Bm,{className:"size-6 text-primary"})}),n.jsx("p",{className:"mt-4 text-sm font-medium",children:"Noch keine Maschinen"}),n.jsx("p",{className:"mt-1 max-w-md text-sm text-muted-foreground",children:"Legen Sie Pick-and-Place-Anlagen oder CNC/Laser-Maschinen an, um Feeder-Setup und Fertigungsexport vorzubereiten."}),n.jsxs(ee,{className:"mt-6",variant:"outline",onClick:()=>i(!0),children:[n.jsx(Gn,{className:"size-4"}),"Erste Maschine anlegen"]})]}):n.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:e.map(v=>{const S=v.type==="PICK_AND_PLACE"&&Array.isArray(v.machineConfig.feeders)?v.machineConfig.feeders.length:0;return n.jsxs(lr,{to:`/maschinen/${v.id}`,className:"rounded-xl border bg-card p-5 transition-colors hover:border-primary/40 hover:bg-accent/30",children:[n.jsxs("div",{className:"flex items-start justify-between gap-3",children:[n.jsx("div",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Lg,{className:"size-5 text-primary"})}),n.jsx(bt,{variant:"secondary",children:ju[v.type]})]}),n.jsx("h3",{className:"mt-4 font-medium",children:v.name}),n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:v.type==="PICK_AND_PLACE"?`${S} Feeder-Zuordnungen`:v.type==="CNC_LASER_3D"?"CNC / Laser konfiguriert":"Allgemeine Fertigungsressource"})]},v.id)})})}),n.jsx(En,{open:a,onOpenChange:v=>{i(v),v||b()},children:n.jsxs(Pn,{children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Neue Maschine anlegen"})}),n.jsxs("div",{className:"grid gap-4 py-2",children:[n.jsxs("div",{className:"grid gap-2",children:[n.jsx(ze,{htmlFor:"machine-name",children:"Name"}),n.jsx(Ze,{id:"machine-name",value:d,onChange:v=>m(v.target.value),placeholder:"z. B. ASM Siplace SX"})]}),n.jsxs("div",{className:"grid gap-2",children:[n.jsx(ze,{htmlFor:"machine-type",children:"Typ"}),n.jsxs(_t,{value:p,onValueChange:v=>h(v),children:[n.jsx(It,{id:"machine-type",children:n.jsx(Et,{placeholder:"Maschinentyp wählen"})}),n.jsx(Pt,{children:RD.map(([v,S])=>n.jsx(ft,{value:v,children:S},v))})]})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{variant:"outline",onClick:()=>i(!1),children:"Abbrechen"}),n.jsx(ee,{onClick:()=>void w(),disabled:!d.trim()||o,children:o?n.jsx(Me,{className:"size-4 animate-spin"}):"Anlegen"})]})]})})]})}function OD({articleId:e,revisionId:t,value:r,onChange:s,disabled:a,placeholder:i="Bauteilgruppe wählen â¦"}){const[o,l]=u.useState([]),[d,m]=u.useState(!1),p=kt(e??"")&&!!t;u.useEffect(()=>{if(!p||!e||!t){l([]);return}let x=!1;return m(!0),yx(e,t).then(b=>{x||l(b)}).catch(()=>{x||l([])}).finally(()=>{x||m(!1)}),()=>{x=!0}},[e,t,p]);const h=u.useMemo(()=>o.map(x=>({id:x.id,label:x.name||x.referenceDesignators||x.id.slice(0,8),sub:[x.value,x.package].filter(
133Boolean).join(" · ")})),[o]);return p?n.jsxs(_t,{value:r??"__none__",onValueChange:x=>s(x==="__none__"?null:x),disabled:a||d,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:d?"Laden â¦":i})}),n.jsxs(Pt,{children:[n.jsx(ft,{value:"__none__",children:"â keine Gruppe â"}),h.map(x=>n.jsxs(ft,{value:x.id,children:[x.label,x.sub?` (${x.sub})`:""]},x.id))]})]}):n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Baugruppe wählen, um Gruppen zu laden"})}function LD(e){const t=e.orderQuantity!=null&&Number.isFinite(e.orderQuantity)?` · ${e.orderQuantity} Stk`:"",r=e.revisionVersion?` Rev ${e.revisionVersion}`:"",s=e.articleNumber||e.articleName||e.articleId.slice(0,8),a=e.createdAt?new Date(e.createdAt).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"}):`AA-${e.workOrderId.slice(0,8)}`;return`${s}${r}${t} · ${a}`}function zD(e,t,r){const s=new Blob([r],{type:t}),a=URL.createObjectURL(s),i=document.createElement("a");i.href=a,i.download=e,i.click(),URL.revokeObjectURL(a)}function BD({machineId:e,machine:t}){const[r,s]=u.useState([]),[a,i]=u.useState(!0),[o,l]=u.useState(null),[d,m]=u.useState(!1),[p,h]=u.useState(null),[x,b]=u.useState(null),w=u.useCallback(async()=>{i(!0);try{const C=await Pk(e);s(C),l(k=>{var j;return k&&C.some(z=>z.snapshotId===k)?k:((j=C[0])==null?void 0:j.snapshotId)??null})}catch{M.error("Produktionsaufträge mit Snapshot konnten nicht geladen werden."),s([]),l(null)}finally{i(!1)}},[e]);u.useEffect(()=>{w()},[w]);const v=u.useMemo(()=>r.find(C=>C.snapshotId===o)??null,[r,o]),S=(x==null?void 0:x.exportFormats)??[],R=(x==null?void 0:x.ghostBlockers)??[],E=R.length>0,A=u.useCallback(async()=>{var C;if(!o){M.error("Bitte einen Produktionsauftrag mit Snapshot wählen.");return}m(!0);try{const k=await Tk(e,{snapshotId:o});b(k),(((C=k.ghostBlockers)==null?void 0:C.length)??0)>0?M.error(k.ghostBlockers[0]??"Import-Platzhalter blockieren den Export."):M.success(`${k.lines.length} Positionen exportbereit (Snapshot eingefroren).`)}catch{M.error("Export-Vorschau fehlgeschlagen.")}finally{m(!1)}},[e,o]),I=async C=>{if(o){h(C.id);try{const k=await Dk(e,{snapshotId:o,formatId:C.id});zD(k.filename,k.mimeType,k.content)}catch(k){if(k instanceof ut){const j=k.detail;if(typeof j=="object"&&j&&"blockers"in j){const z=j.blockers??[];M.error(z[0]??"Export blockiert.");return}}M.error(`Download â${C.label}" fehlgeschlagen.`)}finally{h(null)}}};return n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[n.jsxs("p",{className:"max-w-2xl text-sm text-muted-foreground",children:["P&P-Export basiert auf einem eingefrorenen Produktions-Snapshot. Feeder-Offsets und Maschinen-Rotation werden angewendet â"," ",n.jsx("span",{className:"font-medium text-foreground",children:t.name}),"."]}),x&&n.jsx(bt,{variant:x.summary.readyForExport?"default":"destructive",children:x.summary.readyForExport?"Exportbereit":"Feeder unvollständig"})]}),n.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:n.jsxs("div",{className:"space-y-1.5 md:col-span-2",children:[n.jsx(ze,{className:"text-xs",children:"Produktionsauftrag / Snapshot"}),n.jsxs(_t,{value:o??"",onValueChange:l,disabled:a||r.length===0,children:[n.jsx(It,{className:"h-9 text-xs",children:n.jsx(Et,{placeholder:a?"Laden â¦":r.length===0?"Kein Snapshot â zuerst Produktion starten":"Auftrag wählen"})}),n.jsx(Pt,{children:r.map(C=>n.jsx(ft,{value:C.snapshotId,children:LD(C)},C.snapshotId))})]}),v&&n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:[v.articleName," · Status ",v.workOrderStatus]})]})}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(ee,{type:"button",size:"sm",className:"gap-1.5",disabled:d||!o,onClick:()=>void A(),children:[d?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(Ii,{className:"size-3.5"}),"Vorschau generieren"]}),S.map(C=>n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",disabled:!x||E||p===C.id,onClick:()=>void I(C),children:[p===C.id?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(xi,{className:"size-3.5"}),C.label]},C.id))]}),E&&n.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive",children:[n.jsx(ks,{className:"mt-0.5 size-4 shrink-0"}),n.jsx("div",{children:R.map(C=>n.jsx("p",{children:C},C))})]}),x&&n.jsxs("div",{className:"flex flex-wrap gap-3 text-xs text-muted-foreground",children:[n.jsxs("span",{children:[x.summary.totalLines," Positionen"]}),n.jsxs("span",{children:[x.summary.mappedFeeders," Feeder gemappt"]}),n.jsxs("span",{children:[x.summary.unmappedFeeders," ohne Feeder"]})]}),x&&x.lines.length>0&&n.jsx("div",{className:"overflow-hidden rounded-lg border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"text-xs",children:"Des"}),n.jsx(Ve,{className:"text-xs",children:"Footprint"}),n.jsx(Ve,{className:"text-xs",children:"Feeder"}),n.jsx(Ve,{className:"text-right text-xs",children:"X"}),n.jsx(Ve,{className:"text-right text-xs",children:"Y"}),n.jsx(Ve,{className:"text-right text-xs",children:"Rot"}),n.jsx(Ve,{className:"text-right text-xs",children:"Z"})]})}),n.jsx(Qn,{children:x.lines.slice(0,80).map(C=>n.jsxs(jt,{className:C.feederMapped?void 0:"bg-amber-500/10 hover:bg-amber-500/15",children:[n.jsx(De,{className:"font-mono text-xs",children:C.designator}),n.jsx(De,{className:"text-xs",children:C.footprint||C.package||"â"}),n.jsx(De,{className:"text-xs",children:C.feederSlot||"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:C.x??"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:C.y??"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:C.rotation??"â"}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:C.z??"â"})]},C.designator))})]})}),r.length===0&&!a&&n.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/5 p-3 text-xs text-amber-900 dark:text-amber-100",children:[n.jsx(ks,{className:"mt-0.5 size-4 shrink-0"}),n.jsx("p",{children:"Noch kein Produktions-Snapshot vorhanden. Starten Sie die Produktion im Artikel, damit Stückliste und Koordinaten eingefroren werden."})]})]})}const FD=Object.entries(ju);function kd(e){return JSON.parse(JSON.stringify(e))}function $D({machineId:e}){const t=Qo(),{articles:r}=Mn(),[s,a]=u.useState(null),[i,o]=u.useState(null),[l,d]=u.useState(!0),[m,p]=u.useState(!1),[h,x]=u.useState(!1),[b,w]=u.useState([]),[v,S]=u.useState([]),[R,E]=u.useState(null),[A,I]=u.useState(null),[C,k]=u.useState([]),[j,z]=u.useState(!1),D=u.useCallback(async()=>{d(!0);
133try{const[U,ne]=await Promise.all([Sk(e),Ik(e)]);a(U),o(kd(U)),w(ne),S(ne)}catch{M.error("Maschine konnte nicht geladen werden."),t("/maschinen")}finally{d(!1)}},[e,t]);u.useEffect(()=>{D()},[D]);const B=u.useCallback(async U=>{var ne,H;z(!0);try{const Z=await ts(U),K=await sl(U);k(K.map($=>({id:$.id,version:$.version,status:$.status})));const me=((ne=Z.activeRevision)==null?void 0:ne.id)??((H=K[0])==null?void 0:H.id)??null;I(me)}catch{M.error("Revisionen konnten nicht geladen werden."),k([]),I(null)}finally{z(!1)}},[]);u.useEffect(()=>{R?B(R):(k([]),I(null))},[R,B]);const T=h?i:s;if(l||!T)return n.jsxs("div",{className:"flex min-h-[240px] items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Maschine wird geladen â¦"]});const P=TD(T.machineConfig),G=DD(T.machineConfig),W=U=>{i&&o({...i,machineConfig:U})},ke=async()=>{if(i){p(!0);try{const U=await Ck(e,{name:i.name.trim(),type:i.type,machineConfig:i.machineConfig,exportMapping:i.exportMapping});if(i.type==="PICK_AND_PLACE"){const ne=await Ek(e,v.map((H,Z)=>({componentGroupId:H.componentGroupId??null,articleId:H.articleId??null,feederIdentifier:H.feederIdentifier,machineXOffset:H.machineXOffset,machineYOffset:H.machineYOffset,machineRotationOffset:H.machineRotationOffset,sortOrder:Z})));w(ne),S(ne)}a(U),o(kd(U)),x(!1),M.success("Maschine gespeichert.")}catch{M.error("Speichern fehlgeschlagen.")}finally{p(!1)}}},L=async()=>{if(window.confirm(`Maschine â${T.name}" wirklich löschen?`))try{await _k(e),M.success("Maschine gelöscht."),t("/maschinen")}catch{M.error("Löschen fehlgeschlagen.")}},xe=U=>{i&&o({...i,type:U,machineConfig:PD(U)})},Y=()=>{S(U=>[...U,{id:crypto.randomUUID(),tenantId:"",machineId:e,componentGroupId:null,articleId:null,feederIdentifier:"",machineXOffset:0,machineYOffset:0,machineRotationOffset:0,sortOrder:U.length}])},Ne=(U,ne)=>{S(H=>H.map((Z,K)=>K===U?{...Z,...ne}:Z))},se=U=>{S(ne=>ne.filter((H,Z)=>Z!==U))},J=(U,ne)=>{W({...P,offsets:{...P.offsets,[U]:ne}})},Q=U=>{if(!i)return;const ne=U.split(",").map(H=>H.trim()).filter(Boolean);o({...i,machineConfig:{...G,supportedFormats:ne}})};return n.jsxs(Br,{maxWidth:"max-w-5xl",children:[n.jsxs("div",{className:"mb-6 flex flex-wrap items-center gap-3",children:[n.jsx(ee,{variant:"ghost",size:"sm",className:"gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/maschinen",children:[n.jsx(Ks,{className:"size-4"}),"Zurück"]})}),n.jsx("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10",children:n.jsx(Lg,{className:"size-5 text-primary"})}),n.jsxs("div",{className:"min-w-0 flex-1",children:[h?n.jsx(Ze,{value:(i==null?void 0:i.name)??"",onChange:U=>i&&o({...i,name:U.target.value}),className:"h-9 max-w-md text-lg font-semibold"}):n.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:T.name}),n.jsx(bt,{variant:"secondary",className:"mt-1",children:ju[T.type]})]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:h?n.jsxs(n.Fragment,{children:[n.jsx(ee,{variant:"outline",size:"sm",disabled:m,onClick:()=>{o(s?kd(s):null),S(b),x(!1)},children:"Abbrechen"}),n.jsxs(ee,{size:"sm",className:"gap-1.5",disabled:m||!(i!=null&&i.name.trim()),onClick:()=>void ke(),children:[m?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(vs,{className:"size-3.5"}),"Speichern"]})]}):n.jsxs(n.Fragment,{children:[n.jsxs(ee,{variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>x(!0),children:[n.jsx(yo,{className:"size-3.5"}),"Bearbeiten"]}),n.jsxs(ee,{variant:"outline",size:"sm",className:"gap-1.5 text-destructive hover:text-destructive",onClick:()=>void L(),children:[n.jsx(or,{className:"size-3.5"}),"Löschen"]})]})})]}),n.jsxs(Ei,{defaultValue:"general",className:"space-y-4",children:[n.jsxs(Pi,{children:[n.jsx(ar,{value:"general",children:"Allgemein"}),T.type==="PICK_AND_PLACE"&&n.jsx(ar,{value:"feeders",children:"Feeder-Setup"}),T.type==="CNC_LASER_3D"&&n.jsx(ar,{value:"parameters",children:"Maschinen-Parameter"}),T.type==="PICK_AND_PLACE"&&n.jsx(ar,{value:"export",children:"Export-Vorbereitung"})]}),n.jsx(ir,{value:"general",className:"rounded-xl border bg-card p-5",children:n.jsxs("div",{className:"grid max-w-md gap-4",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Maschinentyp"}),n.jsxs(_t,{value:T.type,onValueChange:U=>xe(U),disabled:!h,children:[n.jsx(It,{children:n.jsx(Et,{})}),n.jsx(Pt,{children:FD.map(([U,ne])=>n.jsx(ft,{value:U,children:ne},U))})]})]}),T.type==="PICK_AND_PLACE"&&h&&n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Export-Plugin"}),n.jsxs(_t,{value:P.exportPluginId??"generic",onValueChange:U=>W({...P,exportPluginId:U==="generic"?void 0:U}),children:[n.jsx(It,{className:"h-9 text-xs",children:n.jsx(Et,{})}),n.jsx(Pt,{children:n.jsx(ft,{value:"generic",children:"Generisch (Placement CSV/JSON)"})})]}),n.jsx("p",{className:"text-[10px] text-muted-foreground",children:"JLCPCB/Fremdfertigung: Fertigungsroute â Schritt âFremdfertigung (Export)â."})]}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Angelegt: ",new Date(T.createdAt).toLocaleStr
133ing("de-DE")," · Aktualisiert:"," ",new Date(T.updatedAt).toLocaleString("de-DE")]})]})}),T.type==="PICK_AND_PLACE"&&n.jsxs(ir,{value:"feeders",className:"space-y-5 rounded-xl border bg-card p-5",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold",children:"Feeder-Matrix"}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Verknüpfen Sie Bauteilgruppen oder Artikel mit Feeder-Slots und Maschinen-Offsets."})]}),n.jsxs("div",{className:"rounded-lg border bg-muted/20 p-4",children:[n.jsx("p",{className:"mb-3 text-xs font-medium",children:"Baugruppen-Kontext (für Bauteilgruppen-Auswahl)"}),n.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Baugruppe"}),n.jsx(Ci,{articles:r,value:R,onSelect:E,placeholder:"Panel / Baugruppe suchen â¦"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Revision"}),n.jsxs(_t,{value:A??"",onValueChange:I,disabled:!R||j||C.length===0,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:j?"Laden â¦":"Revision wählen"})}),n.jsx(Pt,{children:C.map(U=>n.jsxs(ft,{value:U.id,children:[U.version," (",U.status,")"]},U.id))})]})]})]})]}),n.jsx("div",{className:"overflow-hidden rounded-lg border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"text-xs",children:"Bauteilgruppe"}),n.jsx(Ve,{className:"text-xs",children:"Artikel (optional)"}),n.jsx(Ve,{className:"text-xs",children:"Feeder / Slot"}),n.jsx(Ve,{className:"text-xs",children:"ÎX"}),n.jsx(Ve,{className:"text-xs",children:"ÎY"}),n.jsx(Ve,{className:"text-xs",children:"ÎRot"}),h&&n.jsx(Ve,{className:"w-10"})]})}),n.jsx(Qn,{children:v.length===0?n.jsx(jt,{children:n.jsx(De,{colSpan:h?7:6,className:"py-6 text-center text-xs text-muted-foreground",children:"Noch keine Feeder-Zuordnungen."})}):v.map((U,ne)=>n.jsxs(jt,{children:[n.jsx(De,{className:"min-w-[180px]",children:n.jsx(OD,{articleId:R,revisionId:A,value:U.componentGroupId??null,onChange:H=>Ne(ne,{componentGroupId:H}),disabled:!h})}),n.jsx(De,{className:"min-w-[200px]",children:n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsx(Ci,{articles:r,value:U.articleId??null,onSelect:H=>Ne(ne,{articleId:H}),placeholder:"Einzelartikel â¦",disabled:!h}),h&&U.articleId&&n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7 shrink-0 text-muted-foreground",onClick:()=>Ne(ne,{articleId:null}),children:"Ã"})]})}),n.jsx(De,{children:n.jsx(Ze,{value:U.feederIdentifier,onChange:H=>Ne(ne,{feederIdentifier:H.target.value}),placeholder:"F12",className:"h-8 font-mono text-xs",disabled:!h})}),n.jsx(De,{children:n.jsx(Ze,{type:"number",step:"any",value:U.machineXOffset,onChange:H=>Ne(ne,{machineXOffset:parseFloat(H.target.value)||0}),className:"h-8 w-16 text-xs",disabled:!h})}),n.jsx(De,{children:n.jsx(Ze,{type:"number",step:"any",value:U.machineYOffset,onChange:H=>Ne(ne,{machineYOffset:parseFloat(H.target.value)||0}),className:"h-8 w-16 text-xs",disabled:!h})}),n.jsx(De,{children:n.jsx(Ze,{type:"number",step:"any",value:U.machineRotationOffset,onChange:H=>Ne(ne,{machineRotationOffset:parseFloat(H.target.value)||0}),className:"h-8 w-16 text-xs",disabled:!h})}),h&&n.jsx(De,{children:n.jsx(ee,{type:"button",variant:"ghost",size:"icon",className:"size-7 text-destructive",onClick:()=>se(ne),children:n.jsx(or,{className:"size-3.5"})})})]},U.id))})]})}),h&&n.jsxs(ee,{type:"button",variant:"outline",size:"sm",className:"gap-1.5",onClick:Y,children:[n.jsx(Gn,{className:"size-3.5"}),"Feeder-Zuordnung hinzufügen"]}),n.jsx(To,{}),n.jsxs("div",{children:[n.jsx("h3",{className:"mb-3 text-sm font-semibold",children:"Standard-Korrekturwerte"}),n.jsx("div",{className:"grid max-w-md grid-cols-3 gap-3",children:["x","y","rotation"].map(U=>n.jsxs("div",{className:"space-y-1",children:[n.jsx(ze,{className:"text-xs uppercase",children:U==="rotation"?"Rotation":`${U.toUpperCase()}-Offset`}),n.jsx(Ze,{type:"number",step:"any",value:P.offsets[U],onChange:ne=>J(U,parseFloat(ne.target.value)||0),className:"h-8 text-xs",disabled:!h})]},U))})]})]}),T.type==="CNC_LASER_3D"&&n.jsx(ir,{value:"parameters",className:"rounded-xl border bg-card p-5",children:n.jsxs("div",{className:"max-w-md
133space-y-3",children:[n.jsx(ze,{className:"text-xs",children:"Unterstützte Dateiformate (kommagetrennt)"}),n.jsx(Ze,{value:G.supportedFormats.join(", "),onChange:U=>Q(U.target.value),placeholder:".gcode, .nc",className:"font-mono text-sm",disabled:!h}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Diese Formate werden später beim Fertigungsauftrag-Export für NC-Programme berücksichtigt."})]})}),T.type==="PICK_AND_PLACE"&&n.jsx(ir,{value:"export",className:"rounded-xl border bg-card p-5",children:n.jsx(BD,{machineId:e,machine:T})})]})]})}const KD={planned:"Geplant",waiting_for_material:"Wartet auf Material",in_progress:"In Fertigung",on_hold:"On Hold",blocked:"Blockiert (Shopfloor)",completed:"Abgeschlossen"};function VD(e){switch(e){case"waiting_for_material":return"border-sky-500/40 bg-sky-500/10 text-sky-800 dark:text-sky-200";case"on_hold":return"border-amber-500 bg-amber-500/15 text-amber-900 dark:text-amber-100 animate-pulse";case"blocked":return"border-destructive/50 bg-destructive/10 text-destructive";case"in_progress":return"border-primary/40 bg-primary/10 text-primary";case"completed":return"border-muted bg-muted text-muted-foreground";default:return""}}function qD(e){return e.orderNumber?e.positionLabel?`${e.orderNumber} · ${e.positionLabel}`:e.orderNumber:`AA-${e.id.slice(0,8).toUpperCase()}`}function UD(e){switch(e.eventType){case"engineering_query_hold":return"Engineering Query â Auto-Hold";case"started":return"Fertigung gestartet";case"completed":return"Fertigung abgeschlossen";case"fault":return"Störung gemeldet";case"panel_breakout":return"Nutzen-Bruch";case"snapshot_created":return"Produktionssnapshot erstellt";default:return e.eventType}}function WD({workOrder:e,scheduleBlocks:t,supplierRef:r,savingRef:s,onSupplierRefChange:a,onSaveSupplierRef:i}){var l;return e.resourceType==="subcontractor"?n.jsxs("div",{className:"space-y-5 p-6",children:[n.jsxs("section",{className:"rounded-lg border bg-card p-4",children:[n.jsxs("div",{className:"mb-3 flex items-center gap-2 text-sm font-medium",children:[n.jsx(CN,{className:"size-4 text-primary"}),"Fremdfertigung / Lieferant"]}),n.jsxs("dl",{className:"grid gap-2 text-sm",children:[n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Lieferant"}),n.jsx("dd",{className:"font-medium",children:e.subcontractorSupplierName||"â"})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Menge"}),n.jsx("dd",{className:"tabular-nums",children:tl(e.quantity)})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Start"}),n.jsx("dd",{children:e.startDate})]})]})]}),n.jsxs("section",{className:"rounded-lg border border-dashed p-4",children:[n.jsx(ze,{htmlFor:"supplier-order-ref",className:"text-xs font-medium",children:"Lieferanten-Auftragsnummer"}),n.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:"z. B. JLCPCB Order ID â wird für E-Mail-Matching und Auto-Hold verwendet."}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(Ze,{id:"supplier-order-ref",value:r,onChange:d=>a(d.target.value),placeholder:"JLC-123456789",className:"font-mono text-sm"}),n.jsxs(ee,{type:"button",size:"sm",className:"shrink-0 gap-1.5",disabled:s,onClick:i,children:[s?n.jsx(Me,{className:"size-4 animate-spin"}):n.jsx(vs,{className:"size-4"}),"Speichern"]})]})]})]}):n.jsxs("div",{className:"space-y-5 p-6",children:[n.jsxs("section",{className:"rounded-lg border bg-card p-4",children:[n.jsxs("div",{className:"mb-3 flex items-center gap-2 text-sm font-medium",children:[n.jsx(Bm,{className:"size-4 text-primary"}),"Inhouse / Maschine"]}),n.jsxs("dl",{className:"grid gap-2 text-sm",children:[n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Aktive Maschine"}),n.jsx("dd",{className:"font-mono text-xs",children:((l=e.activeMachineId)==null?void 0:l.slice(0,8))||"â"})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Rüstzeit"}),n.jsxs("dd",{children:[e.setupMinutes??0," min"]})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("dt",{className:"text-muted-foreground",children:"Taktzeit"}),n.jsxs("dd",{children:[e.cycleTimeSeconds??0," s"]})]})]})]}),n.jsxs("section",{className:"rounded-lg border p-4",children:[n.jsx("div",{className:"mb-3 text-sm font-medium",children:"Maschinenkalender"}),t.length===0?n.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine geplanten Maschinenblöcke."}):n.jsx("ul",{className:"space-y-2",children:t.map(d=>n.jsxs("li",{className:"flex items-center justify-between rounded-md border px-3 py-2 text-xs",children:[n.jsx("span",{children:d.machineName||d.machineId.slice(0,8)}),n.jsx("span",{className:"text-muted-foreground",children:new Date(d.plannedStart).toLocaleStr
133ing("de-DE")})]},d.id))})]})]})}function HD({file:e}){const[t,r]=u.useState(!1),[s,a]=u.useState(!1);return e.documentId?n.jsxs("button",{type:"button",disabled:t,className:"inline-flex items-center gap-1 text-primary hover:underline disabled:opacity-60",onClick:async()=>{r(!0),a(!1);try{await tw(e.documentId,e.fileName)}catch{a(!0)}finally{r(!1)}},children:[t?n.jsx(Me,{className:"size-3 animate-spin"}):null,s?"Erneut versuchen":"Download"]}):e.downloadUrl?n.jsx("a",{href:e.downloadUrl,target:"_blank",rel:"noreferrer",className:"text-primary hover:underline",children:"Download"}):null}function ZD({workOrder:e,attachments:t,loading:r}){return n.jsxs("div",{className:"space-y-5 p-6",children:[n.jsxs("section",{children:[n.jsxs("div",{className:"mb-3 flex items-center gap-2 text-sm font-medium",children:[n.jsx(_N,{className:"size-4"}),"Anhänge"]}),r?n.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Laden â¦"]}):t.length===0?n.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine Dokumente hinterlegt."}):n.jsx("ul",{className:"space-y-2",children:t.map(s=>n.jsxs("li",{className:"flex items-center justify-between rounded-md border px-3 py-2 text-xs",children:[n.jsx("span",{className:"truncate",children:s.fileName}),n.jsx(HD,{file:s})]},s.id))})]}),e.resourceType==="subcontractor"?n.jsxs("section",{className:"rounded-lg border border-dashed p-4 text-xs text-muted-foreground",children:["BOM- und Placement-Exporte für"," ",n.jsx("strong",{children:e.subcontractorSupplierName||"den Lieferanten"})," werden über den Artikel-Workspace (Fertigungsroute) erzeugt und können hier als Anhänge hinterlegt werden."]}):null]})}function GD({events:e,loading:t}){return t?n.jsxs("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Timeline laden â¦"]}):e.length===0?n.jsx("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:"Noch keine Ereignisse."}):n.jsx(qa,{className:"h-[min(60vh,520px)]",children:n.jsx("ul",{className:"space-y-0 p-6",children:e.map(r=>{const s=r.payload??{},a=r.eventType==="engineering_query_hold",i=r.eventType==="panel_breakout";return n.jsxs("li",{className:"relative border-l-2 border-muted pb-6 pl-6 last:pb-0",children:[n.jsx("span",{className:`absolute -left-[5px] top-1 size-2 rounded-full ${a?"bg-amber-500":i?"bg-emerald-500":"bg-primary"}`}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("span",{className:"text-sm font-medium",children:UD(r)}),r.fromStatus&&r.toStatus?n.jsxs(bt,{variant:"outline",className:"text-[10px]",children:[r.fromStatus," â ",r.toStatus]}):null]}),r.createdAt?n.jsxs("p",{className:"mt-1 flex items-center gap-1 text-[11px] text-muted-foreground",children:[n.jsx(Lm,{className:"size-3"}),new Date(r.createdAt).toLocaleString("de-DE")]}):null,a?n.jsx("div",{className:"mt-2 rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-xs",children:n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(ks,{className:"mt-0.5 size-4 shrink-0 text-amber-600"}),n.jsxs("div",{className:"space-y-1",children:[s.emailSubject?n.jsxs("p",{children:[n.jsx(qc,{className:"mr-1 inline size-3"}),String(s.emailSubject)]}):null,s.emailFrom?n.jsxs("p",{className:"text-muted-foreground",children:["Von: ",String(s.emailFrom)]}):null,s.matchedReference?n.jsxs("p",{className:"font-mono",children:["Ref: ",String(s.matchedReference)]}):null]})]})}):null,i&&s.message?n.jsx("p",{className:"mt-2 rounded-md border bg-muted/30 px-3 py-2 text-xs",children:String(s.message)}):null]},r.id)})})})}function YD({workOrderId:e,open:t,onOpenChange:r,onUpdated:s}){const[a,i]=u.useState(null),[o,l]=u.useState([]),[d,m]=u.useState([]),[p,h]=u.useState([]),[x,b]=u.useState(!1),[w,v]=u.useState(!1),[S,R]=u.useState(""),[E,A]=u.useState(!1),[I,C]=u.useState("resources"),k=u.useRef(s);k.current=s;const j=u.useCallback(async P=>{var G;b(!0);try{const W=await wx(P);i(W),R(W.supplierOrderReference??""),(G=k.current)==null||G.call(k,W)}catch{M.error("Arbeitsauftrag konnte nicht geladen werden."),i(null)}finally{b(!1)}},[]),z=u.useCallback(async P=>{v(!0);try{const[G,W,ke]=await Promise.all([Xk(P),ew(P),Ax()]);l(G),m(W),h(ke.filter(L=>L.workOrderId===P))}catch{M.error("Zusatzdaten konnten nicht geladen werden.")}finally{v(!1)}},[]);u.useEffect(()=>{if(!t||!e){i(null),l([]),m([]),h([]);return}j(e),z(e),C("resources")},[t,e,j,z]);const D=u.useMemo(()=>a?qD(a):"Arbeitsauftrag",[a]);async function B(){var P;if(a){A(!0);try{const G=await di(a.id,{supplierOrderReference:S.trim()||null});i(G),(P=k.current)==null||P.call(k,G),M.success("Lieferanten-Auftragsnummer gespeichert.")}catch{M.error("Speichern fehlgeschlagen.")}finally{A(!1)}}}async function T(){var P;if(!(!a||a.status!=="blocked")){A(!0);try{const G=await Sx(a.id);i(G),(P=k.current)==null||P.call(k,G),M.success(G.status==="in_progress"?"Entsperrt â In Fertigung (Fortschritt erhalten).":"Entsperrt â Geplant.")}catch{M.error("Entsperren fehlgeschlagen.")}finally{A(!1)}}}return n.jsx(Fc,{open:t,onOpenChange:r,children:n.jsxs($c,{side:"right",className:"flex w-full flex-col gap-0 p-0 sm:max-w-xl md:max-w-2xl",children:[n.jsx(Kc,{className:"shrink-0 gap-3 border-b px-6 py-4",children:x||!a?n.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Laden â¦"]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[n.jsxs("div",{className:"min-w-0 space-y-1",children:[n.jsx(Do,{
133className:"text-base",children:D}),n.jsx("p",{className:"truncate text-sm text-muted-foreground",children:a.articleName}),n.jsxs("p",{className:"font-mono text-[11px] text-muted-foreground",children:[a.articleNumber,a.revisionVersion?` · Rev ${a.revisionVersion}`:""," · ",tl(bc(a))," Stk",a.snapshotId?` · snap ${a.snapshotId.slice(0,8)}`:""]})]}),n.jsxs("div",{className:"flex shrink-0 flex-col items-end gap-2",children:[n.jsx(bt,{variant:a.status==="on_hold"||a.status==="blocked"?"destructive":"secondary",className:`text-[11px] ${VD(a.status)}`,children:KD[a.status]??a.status}),(()=>{const P=Ux(a);return P?n.jsx(ee,{type:"button",size:"sm",variant:P.tone==="outline"?"outline":"default",className:"h-8 gap-1.5",asChild:!0,children:n.jsxs(lr,{to:P.path,children:[n.jsx(Ii,{className:"size-3.5"}),P.label]})}):null})(),a.status==="blocked"?n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:"h-8",disabled:E,onClick:()=>void T(),children:"Entsperren (smart)"}):null]})]}),a.status==="on_hold"?n.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-900 dark:text-amber-100",children:[n.jsx(ks,{className:"size-4 shrink-0"}),"Engineering Query â Fertigung blockiert bis zur Klärung."]}):null,a.status==="blocked"?n.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive",children:[n.jsx(ks,{className:"size-4 shrink-0"}),"Shopfloor-Veto",a.blockedReason?`: ${a.blockedReason}`:"."," ","AV muss prüfen â Werker darf nicht selbst entsperren."]}):null,a.snapshotId?null:n.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Kein Snapshot verknüpft â Cockpit erst nach Anlage aus freigegebenem Snapshot."})]})}),a?n.jsxs(Ei,{value:I,onValueChange:C,className:"flex min-h-0 flex-1 flex-col",children:[n.jsxs(Pi,{className:"mx-6 mt-4 grid w-auto shrink-0 grid-cols-3",children:[n.jsx(ar,{value:"resources",children:"Ressourcen & Daten"}),n.jsx(ar,{value:"documents",children:"Dokumente & Exporte"}),n.jsx(ar,{value:"timeline",children:"Timeline"})]}),n.jsx(ir,{value:"resources",className:"mt-0 min-h-0 flex-1 overflow-auto",children:n.jsx(WD,{workOrder:a,scheduleBlocks:p,supplierRef:S,savingRef:E,onSupplierRefChange:R,onSaveSupplierRef:()=>void B()})}),n.jsx(ir,{value:"documents",className:"mt-0 min-h-0 flex-1 overflow-auto",children:n.jsx(ZD,{workOrder:a,attachments:d,loading:w})}),n.jsx(ir,{value:"timeline",className:"mt-0 min-h-0 flex-1 overflow-auto",children:n.jsx(GD,{events:o,loading:w})})]}):null]})})}const JD={planned:"Geplant",waiting_for_material:"Wartet auf Material",in_progress:"In Fertigung",on_hold:"On Hold",blocked:"Blockiert",completed:"Abgeschlossen"};function QD(e){switch(e){case"waiting_for_material":return"border-sky-500/40 bg-sky-500/10 text-sky-800 dark:text-sky-200";case"on_hold":return"border-amber-500 bg-amber-500/15 text-amber-900 dark:text-amber-100";case"blocked":return"border-destructive/50 bg-destructive/10 text-destructive";case"in_progress":return"border-primary/40 bg-primary/10 text-primary";case"completed":return"border-muted bg-muted text-muted-foreground";default:return""}}function XD(e){const t=[e.articleNumber,e.articleName].filter(Boolean).join(" · ")||e.articleId.slice(0,8),r=e.revisionVersion?` Rev ${e.revisionVersion}`:"";return`${t}${r} · ${e.id.slice(0,8)}`}function eR(){const[e,t]=u.useState([]),[r,s]=u.useState([]),[a,i]=u.useState(!0),[o,l]=u.useState(!1),[d,m]=u.useState(!1),[p,h]=u.useState(""),[x,b]=u.useState("1"),[w,v]=u.useState("15"),[S,R]=u.useState("60"),[E,A]=u.useState(null),[I,C]=u.useState(!1),k=u.useCallback(async()=>{i(!0);try{const[D,B]=await Promise.all([nf(),Bp()]);t(D),s(B)}catch{M.error("Arbeitsaufträge konnten nicht geladen werden.")}finally{i(!1)}},[]);u.useEffect(()=>{k()},[k]),u.useEffect(()=>{o&&Bp().then(s).catch(()=>M.error("Freigegebene Snapshots konnten nicht geladen werden."))},[o]);const j=u.useMemo(()=>e.filter(D=>D.status!=="completed").length,[e]);async function z(){if(!p){M.error("Bitte einen freigegebenen Snapshot wählen.");return}const D=parseFloat(x)||0;if(D<=0){M.error("Bitte eine gültige Stückzahl eingeben.");return}m(!0);try{const B=await rf({snapshotId:p,targetQuantity:D,quantity:D,setupMinutes:parseInt(w,10)||0,cycleTimeSeconds:parseFloat(S)||0,startDate:new Date().toISOString().slice(0,10),status:"planned",standalone:!0});t(T=>
133[B,...T]),l(!1),h(""),b("1"),M.success("Arbeitsauftrag aus Snapshot angelegt.")}catch{M.error("Arbeitsauftrag konnte nicht angelegt werden.")}finally{m(!1)}}return n.jsxs(Br,{children:[n.jsx(xs,{title:"Fertigung",subtitle:"Arbeitsauftrag = Snapshot-Instanz mit Ziel-Stückzahl. Cockpit: /fertigung/execution/:workOrderId",action:n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsx(ee,{variant:"outline",className:"gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/fertigung/kalender",children:[n.jsx(IN,{className:"size-4"}),"Maschinenkalender"]})}),n.jsxs(ee,{className:"gap-1.5",onClick:()=>l(!0),children:[n.jsx(Gn,{className:"size-4"}),"Arbeitsauftrag"]})]})}),n.jsxs("div",{className:"mt-6 flex items-center gap-3 rounded-lg border bg-card px-4 py-3 text-sm",children:[n.jsx(Bm,{className:"size-4 text-primary"}),n.jsxs("span",{children:[n.jsx("strong",{children:j})," offene Arbeitsaufträge ·"," ",n.jsx("strong",{children:e.length})," gesamt"]})]}),n.jsx("div",{className:"mt-6 overflow-hidden rounded-xl border bg-card",children:a?n.jsxs("div",{className:"flex h-40 items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Laden â¦"]}):n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"text-xs",children:"Position / Auftrag"}),n.jsx(Ve,{className:"text-xs",children:"Artikel"}),n.jsx(Ve,{className:"text-right text-xs",children:"Stückzahl"}),n.jsx(Ve,{className:"text-xs",children:"Status"}),n.jsx(Ve,{className:"text-xs",children:"Start"}),n.jsx(Ve,{className:"text-xs w-[1%]"})]})}),n.jsxs(Qn,{children:[e.map(D=>{const B=Ux(D);return n.jsxs(jt,{className:"cursor-pointer hover:bg-muted/30",onClick:()=>{A(D.id),C(!0)},children:[n.jsxs(De,{className:"text-xs",children:[n.jsx("div",{className:"font-medium",children:D.positionLabel||"â"}),n.jsxs("div",{className:"text-muted-foreground",children:[D.orderNumber||D.id.slice(0,8),D.snapshotId?n.jsxs("span",{className:"ml-1 font-mono text-[10px]",children:["· snap ",D.snapshotId.slice(0,8)]}):null]})]}),n.jsxs(De,{className:"text-xs",children:[n.jsx("div",{children:D.articleName}),n.jsx("div",{className:"font-mono text-[10px] text-muted-foreground",children:D.articleNumber})]}),n.jsx(De,{className:"text-right text-xs tabular-nums",children:tl(D.targetQuantity??D.quantity)}),n.jsx(De,{children:n.jsx(bt,{variant:D.status==="on_hold"||D.status==="blocked"?"destructive":"secondary",className:`text-[10px] ${QD(D.status)}`,children:JD[D.status]??D.status})}),n.jsx(De,{className:"text-xs text-muted-foreground",children:D.startDate}),n.jsx(De,{className:"text-right",children:B?n.jsx(ee,{type:"button",size:"sm",variant:"outline",className:"h-7 gap-1 px-2 text-[11px]",asChild:!0,onClick:T=>T.stopPropagation(),children:n.jsxs(lr,{to:B.path,children:[n.jsx(Ii,{className:"size-3"}),B.label]})}):null})]},D.id)}),e.length===0&&n.jsx(jt,{children:n.jsx(De,{colSpan:6,className:"py-10 text-center text-sm text-muted-foreground",children:"Noch keine Arbeitsaufträge. Legen Sie einen aus einem freigegebenen Snapshot an."})})]})]})}),n.jsx(En,{open:o,onOpenChange:l,children:n.jsxs(Pn,{children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Arbeitsauftrag anlegen"})}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Wählen Sie einen freigegebenen ProductionSnapshot (PLANNING_COMPLETE) und die Ziel-Stückzahl. Der Snapshot liefert den Bedarf pro Stück."}),n.jsxs("div",{className:"space-y-3 py-2",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Freigegebener Snapshot"}),n.jsxs(_t,{value:p||void 0,onValueChange:h,children:[n.jsx(It,{className:"h-9",children:n.jsx(Et,{placeholder:"Snapshot wählen â¦"})}),n.jsx(Pt,{children:r.map(D=>n.jsx(ft,{value:D.id,children:XD(D)},D.id))})]}),r.length===0?n.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Keine freigegebenen Snapshots. Zuerst in der Arbeitsvorbereitung freigeben."}):null]}),n.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Stückzahl"}),n.jsx(Ze,{value:x,onChange:D=>b(D.target.value),className:"h-8",inputMode:"decimal"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Rüstzeit (min)"}),n.jsx(Ze,{value:w,onChange:D=>v(D.target.value),className:"h-8"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Taktzeit (s)"}),n.jsx(Ze,{value:S,onChange:D=>R(D.target.value),className:"h-8"})]})]})]}),n.jsxs(Xn,{children:[n.jsx(ee,{variant:"outline",onClick:()=>l(!1),children:"Abbrechen"}),n.jsx(ee,{disabled:d||!p,onClick:()=>void z(),children:d?n.jsx(Me,{className:"size-4 animate-spin"}):"Anlegen"})]})]})}),n.jsx(YD,{workOrderId:E,open:I,onOpenChange:C,onUpdated:D=>{t(B=>B.map(T=>T.id===D.id?D:T))}})]})}function Xs(e){return new Date(e).getTime()}
133function wd(e){return new Date(e).toLocaleString("de-DE",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit"})}function tR(){const[e,t]=u.useState([]),[r,s]=u.useState(""),[a,i]=u.useState([]),[o,l]=u.useState([]),[d,m]=u.useState(""),[p,h]=u.useState(!0),[x,b]=u.useState(!1),[w,v]=u.useState(null),S=u.useCallback(async()=>{h(!0);try{const[C,k]=await Promise.all([Xm(),nf()]);t(C),l(k.filter(j=>j.status!=="completed")),!r&&C[0]&&s(C[0].id)}catch{M.error("Kalenderdaten konnten nicht geladen werden.")}finally{h(!1)}},[r]),R=u.useCallback(async C=>{if(C)try{const[k,j]=await Promise.all([Ax(C),dw(C)]);i(k),v(j)}catch{M.error("Maschinenplanung konnte nicht geladen werden.")}},[]);u.useEffect(()=>{S()},[S]),u.useEffect(()=>{r&&R(r)},[r,R]);const E=u.useMemo(()=>{if(a.length===0){const j=Date.now();return{start:j,end:j+8*36e5}}const C=a.map(j=>Xs(j.plannedStart)),k=a.map(j=>Xs(j.plannedEnd));return{start:Math.min(...C),end:Math.max(...k)+36e5}},[a]),A=Math.max(E.end-E.start,36e5);async function I(){if(!(!r||!d||!w)){b(!0);try{const C=o.find(B=>B.id===d),k=(C==null?void 0:C.setupMinutes)??0,j=(C==null?void 0:C.cycleTimeSeconds)??0,z=Math.max(1,Math.round(((C==null?void 0:C.quantity)??1)*j/60)),D=await mw({workOrderId:d,machineId:r,plannedStart:w,setupMinutes:k,productionMinutes:z});i(B=>[...B,D].sort((T,P)=>Xs(T.plannedStart)-Xs(P.plannedStart))),v(D.plannedEnd),M.success("Auftrag eingeplant.")}catch{M.error("Einplanen fehlgeschlagen.")}finally{b(!1)}}}return n.jsxs(Br,{children:[n.jsxs("div",{className:"mb-6 flex flex-wrap items-center gap-3",children:[n.jsx(ee,{variant:"ghost",size:"sm",className:"gap-1.5",asChild:!0,children:n.jsxs(lr,{to:"/fertigung",children:[n.jsx(Ks,{className:"size-4"}),"Fertigung"]})}),n.jsxs("div",{children:[n.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:"Maschinenkalender"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Dauer = Rüstzeit + (Menge à Taktzeit). Verfügbar-ab = Ende des letzten Blocks."})]})]}),n.jsxs("div",{className:"mb-6 grid gap-4 rounded-xl border bg-card p-4 md:grid-cols-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Maschine"}),n.jsxs(_t,{value:r,onValueChange:s,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Maschine wählen"})}),n.jsx(Pt,{children:e.map(C=>n.jsx(ft,{value:C.id,children:C.name},C.id))})]})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Arbeitsauftrag"}),n.jsxs(_t,{value:d,onValueChange:m,children:[n.jsx(It,{className:"h-8 text-xs",children:n.jsx(Et,{placeholder:"Arbeitsauftrag wählen"})}),n.jsx(Pt,{children:o.map(C=>n.jsxs(ft,{value:C.id,children:[C.positionLabel||C.articleName," · ",tl(C.quantity)," Stk"]},C.id))})]})]}),n.jsxs("div",{className:"flex flex-col justify-end gap-2",children:[w&&n.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Verfügbar ab: ",wd(Xs(w))]}),n.jsx(ee,{size:"sm",disabled:x||!d,onClick:()=>void I(),children:x?n.jsx(Me,{className:"size-4 animate-spin"}):"Auf Maschine einplanen"})]})]}),n.jsxs("div",{className:"overflow-hidden rounded-xl border bg-card p-4",children:[n.jsxs("div",{className:"mb-3 flex justify-between text-[10px] text-muted-foreground",children:[n.jsx("span",{children:wd(E.start)}),n.jsx("span",{children:wd(E.end)})]}
133),p?n.jsxs("div",{className:"flex h-32 items-center justify-center text-sm text-muted-foreground",children:[n.jsx(Me,{className:"mr-2 size-4 animate-spin"}),"Laden â¦"]}):n.jsxs("div",{className:"relative h-28 rounded-lg bg-muted/30",children:[a.map(C=>{const k=(Xs(C.plannedStart)-E.start)/A*100,j=Math.max(2,(Xs(C.plannedEnd)-Xs(C.plannedStart))/A*100);return n.jsxs("div",{className:"absolute top-4 h-10 rounded-md border border-primary/30 bg-primary/20 px-2 py-1 text-[10px] leading-tight",style:{left:`${k}%`,width:`${j}%`},title:`${C.articleName} · ${C.setupMinutes}min Rüst + ${C.productionMinutes}min Prod`,children:[n.jsx("div",{className:"truncate font-medium",children:C.articleName||C.workOrderNumber}),n.jsxs("div",{className:"text-muted-foreground",children:[C.setupMinutes,"+",C.productionMinutes," min"]})]},C.id)}),a.length===0&&n.jsx("p",{className:"absolute inset-0 flex items-center justify-center text-xs text-muted-foreground",children:"Noch keine Planungsblöcke â wählen Sie einen Arbeitsauftrag und planen Sie ein."})]})]})]})}const Cv={id:"internal-machine",resourceType:"INTERNAL_MACHINE",async trigger(e){if(e.phase==="ack")return;const t=e.machineExport;if(!t)throw new Error("MachineExportRequest fehlt für Maschinen-Export.");typeof console<"u"&&console.info("[resource-adapter:machine]",{workOrderId:e.workOrderId,snapshotId:e.snapshotId,resourceId:e.resourceId,operationId:t.operationId,machineId:t.machineId,positionCount:t.positions.length,configKeys:Object.keys(e.adapterConfig)})}},_v={id:"internal-operator",resourceType:"INTERNAL_OPERATOR",async trigger(e){}},Iv={id:"outbound-subcontractor",resourceType:"EXTERNAL_SUBCONTRACTOR",async trigger(e){if(e.phase==="ack")return;const t=e.outbound;if(!t)throw new Error("Outbound_Data_Package fehlt für externe Ãbergabe.");const r=typeof e.adapterConfig.format=="string"?e.adapterConfig.format:t.format;typeof console<"u"&&console.info("[resource-adapter:outbound]",{workOrderId:e.workOrderId,snapshotId:e.snapshotId,resourceId:e.resourceId,operationId:t.operationId,format:r,positionCount:t.positions.length})}},nR={EXTERNAL_SUBCONTRACTOR:Iv,INTERNAL_MACHINE:Cv,INTERNAL_OPERATOR:_v};class rR{constructor(){Rn(this,"adapters",new Map);Rn(this,"entries",new Map);this.registerAdapter(Iv),this.registerAdapter(Cv),this.registerAdapter(_v)}registerAdapter(t){this.adapters.set(t.id,t)}bindResource(t){if(!this.adapters.has(t.adapterId))throw new Error(`Unbekannter Resource-Adapter: ${t.adapterId}`);this.entries.set(t.resourceId,t)}getEntry(t){return this.entries.get(t)}resolveAdapter(t,r){if(r){const a=this.entries.get(r);if(a){const i=this.adapters.get(a.adapterId);if(i)return{adapter:i,adapterConfig:a.adapterConfig}}}return{adapter:nR[t],adapterConfig:{}}}async trigger(t,r,s){const{adapter:a,adapterConfig:i}=this.resolveAdapter(t,r);await a.trigger({resourceId:r||a.id,adapterConfig:i,...s})}}const Sd=new rR;function sR({positions:e}){return e.length===0?n.jsx("p",{className:"text-xs text-muted-foreground",children:"Keine eingefrorenen Positionen für diesen Arbeitsschritt."}):n.jsx("div",{className:"max-h-72 overflow-auto rounded-lg border border-border",children:n.jsxs(Yn,{children:[n.jsx(Jn,{children:n.jsxs(jt,{className:"bg-muted/40",children:[n.jsx(Ve,{className:"h-8 text-xs",children:"Position"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Bezeichnung"}),n.jsx(Ve,{className:"h-8 text-xs",children:"Quelle"}),n.jsx(Ve,{className:"h-8 text-right text-xs",children:"Menge"})]})}),n.jsx(Qn,{children:e.map(t=>{var r,s;return n.jsxs(jt,{children:[n.jsx(De,{className:"py-1.5 font-mono text-xs",children:t.positionRef||t.articleNumber||"â"}),n.jsx(De,{className:"max-w-[14rem] truncate py-1.5 text-xs",title:t.label??void 0,children:t.label||"â"}),n.jsx(De,{className:"max-w-[8rem] truncate py-1.5 font-mono text-xs text-muted-foreground",title:t.resolvedSource?`${t.resolvedSource.providerId}:${t.resolvedSource.sku||t.resolvedSource.itemId}`:void 0,children:((r=t.resolvedSource)==null?void 0:r.sku)||((s=t.resolvedSource)==null?void 0:s.itemId)||"â"}),n.jsx(De,{className:"py-1.5 text-right text-xs tabular-nums",children:t.quantity})]},t.id)})})]})})}const mg=[{value:"prozessfehler",label:"Prozessfehler"},{value:"materialfehler",label:"Materialfehler"},{value:"handling",label:"Handling / Beschädigung"},{value:"messung",label:"Messung / Toleranz"},{value:"sonstiges",label:"Sonstiges"}];function aR({isOpen:e,onClose:t,operationLabel:r,operationId:s,initial:a,submitting:i,onSubmit:o}){const[l,d]=u.useState("0"),[m,p]=u.useState(""),[h,x]=u.useState("");u.useEffect(()=>{var E;e&&(d(String((a==null?void 0:a.scrapQuantity)??0)),p(""),x(((E=a==null?void 0:a.scrapReason)==null?void 0:E.trim())||""))},[e,a]);const b=Number(l),w=Number.isFinite(b)&&b>=0,v=w&&b>0,S=w&&(!v||!!m||!!h.trim()),R=(()=>{var E;if(!v)return null;if(m){const A=((E=mg.find(I=>I.value===m))==null?void 0:E.label)??m;return m==="sonstiges"&&h.trim()?`${A}: ${h.trim()}`:A||h.trim()||null}return h.trim()||null})();return n.jsx(En,{open:e,onOpenChange:E=>{!E&&!i&&t()},children:n.jsxs(Pn,{className:"sm:max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Schritt-Ausschuss"})}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["Optionaler Ausschuss für â",r,"â. Wird am Arbeitsauftrag gespeichert (nicht am Snapshot)."]}),n.jsxs("div",{className:"space-y-3 py-1",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Ausschuss (St
133k)"}),n.jsx(Ze,{value:l,onChange:E=>d(E.target.value),className:"h-8 font-mono text-xs",inputMode:"decimal",disabled:i})]}),v?n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Ausschussgrund"}),n.jsxs(_t,{value:m||void 0,onValueChange:p,children:[n.jsx(It,{className:"h-9",children:n.jsx(Et,{placeholder:"Grund wählen â¦"})}),n.jsx(Pt,{children:mg.map(E=>n.jsx(ft,{value:E.value,children:E.label},E.value))})]}),m==="sonstiges"||!m?n.jsx(ka,{value:h,onChange:E=>x(E.target.value),placeholder:"Kurz beschreiben â¦",className:"min-h-[4rem] text-xs",disabled:i}):null]}):null]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",disabled:i,onClick:t,children:"Abbrechen"}),n.jsx(ee,{type:"button",disabled:!S||i,onClick:()=>void o({operationId:s,scrapQuantity:b,scrapReason:R}),children:"Speichern"})]})]})})}const iR={INTERNAL_MACHINE:{pending:"Maschine wartet auf Freigabe",ready:"Maschine bereit",in_progress:"Maschine läuft",handed_over:"Export an Maschine übergeben",completed:"Maschinenschritt abgeschlossen",blocked:"Maschine blockiert"},EXTERNAL_SUBCONTRACTOR:{pending:"Ãbergabe an Dienstleister vorbereitet",ready:"Bereit zur Ãbergabe",in_progress:"Beim Dienstleister in Arbeit",handed_over:"Daten an Dienstleister übertragen",completed:"Fremdschritt abgeschlossen",blocked:"Ãbergabe blockiert"},INTERNAL_OPERATOR:{pending:"Manueller Schritt wartet",ready:"Bereit zum Start",in_progress:"In Ausführung",handed_over:"Ãbergeben",completed:"Abgeschlossen",blocked:"Blockiert"}};function fg(e){return iR[e.resourceType][e.status]??e.status}function oR(e){return e.status==="completed"?{kind:null,label:"Abgeschlossen",disabledReason:"Schritt ist bereits abgeschlossen."}:e.status==="blocked"?{kind:null,label:"Blockiert",disabledReason:"Schritt ist blockiert."}:e.resourceType==="EXTERNAL_SUBCONTRACTOR"?e.status==="handed_over"||e.status==="in_progress"?{kind:"complete",label:"AbschlieÃen"}:{kind:"handover",label:"Ãbergabe auslösen"}:e.resourceType==="INTERNAL_MACHINE"?e.status==="handed_over"||e.status==="in_progress"?{kind:"complete",label:"AbschlieÃen"}:{kind:"machine_export",label:"Maschinen-Export starten"}:e.status==="in_progress"?{kind:"complete",label:"AbschlieÃen"}:{kind:"start",label:"Starten"}}function lR(e,t){return t==="complete"?"completed":t==="handover"||t==="machine_export"?"handed_over":t==="start"?"in_progress":e.status}function pg(e,t){const r=e.filter(s=>s.operationId===t);return r.length>0?[...r]:[...e]}function cR({isOpen:e,onClose:t,submitting:r,onSubmit:s}){const[a,i]=u.useState("");u.useEffect(()=>{e&&i("")},[e]);const o=a.trim(),l=o.length>0;return n.jsx(En,{open:e,onOpenChange:d=>{!d&&!r&&t()},children:n.jsxs(Pn,{className:"sm:max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Fertigung blockieren"})}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Harter Shopfloor-Stopp (Veto). Die Arbeitsvorbereitung muss den Auftrag später prüfen. Entsperren ist nur administrativ möglich."}),n.jsxs("div",{className:"space-y-1.5 py-1",children:[n.jsx(ze,{className:"text-xs",children:"Grund (Pflicht)"}),n.jsx(ka,{value:a,onChange:d=>i(d.target.value),placeholder:"z.â¯B. Bauteil beschädigt, Materialfehler â¦",className:"min-h-[6rem] text-xs",disabled:r})]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",disabled:r,onClick:t,children:"Abbrechen"}),n.jsx(ee,{type:"button",variant:"destructive",disabled:!l||r,onClick:()=>void s(o),children:"Blockieren"})]})]})})}const hg=[{value:"prozessfehler",label:"Prozessfehler"},{value:"materialfehler",label:"Materialfehler"},{value:"handling",label:"Handling / Beschädigung"},{value:"messung",label:"Messung / Toleranz"},{value:"sonstiges",label:"Sonstiges"}];function uR({isOpen:e,onClose:t,targetQuantity:r,initialScrap:s=0,submitting:a,onSubmit:i}){const[o,l]=u.useState(String(r)),[d,m]=u.useState("0"),[p,h]=u.useState(""),[x,b]=u.useState(""),[w,v]=u.useState(!1);u.useEffect(()=>{if(!e)return;const D=Math.max(0,Number(s)||0),B=Math.max(0,r-D);l(String(B)),m(String(D)),h(""),b(""),v(!1)},[e,r,s]);const S=Number(o),R=Number(d),E=Number.isFinite(S)&&S>=0,A=Number.isFinite(R)&&R>=0,I=E&&A&&Math.abs(S+R-r)>1e-9,C=A&&R>
1330,k=E&&A?Wx(r,S,R):0,j=E&&A&&(!C||!!p),z=(()=>{var B;if(!C)return;const D=((B=hg.find(T=>T.value===p))==null?void 0:B.label)??p;return p==="sonstiges"&&x.trim()?`${D}: ${x.trim()}`:D||void 0})();return n.jsx(En,{open:e,onOpenChange:D=>{!D&&!a&&t()},children:n.jsxs(Pn,{className:"sm:max-w-md",children:[n.jsx(Tn,{children:n.jsx(Dn,{children:"Auftrag abschlieÃen"})}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Erfassen Sie Gutteile und Ausschuss. Der Snapshot bleibt unverändert (Soll = Zielmenge)."}),n.jsxs("div",{className:"space-y-3 py-1",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Soll-Menge (Ziel)"}),n.jsx(Ze,{value:String(r),readOnly:!0,className:"h-8 bg-muted/40 font-mono text-xs"})]}),n.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Gutteile (Ist)"}),n.jsx(Ze,{value:o,onChange:D=>l(D.target.value),className:"h-8 font-mono text-xs",inputMode:"decimal",disabled:a})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Ausschuss"}),n.jsx(Ze,{value:d,onChange:D=>m(D.target.value),className:"h-8 font-mono text-xs",inputMode:"decimal",disabled:a})]})]}),C?n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(ze,{className:"text-xs",children:"Ausschussgrund"}),n.jsxs(_t,{value:p||void 0,onValueChange:h,children:[n.jsx(It,{className:"h-9",children:n.jsx(Et,{placeholder:"Grund wählen â¦"})}),n.jsx(Pt,{children:hg.map(D=>n.jsx(ft,{value:D.value,children:D.label},D.value))})]}),p==="sonstiges"?n.jsx(ka,{value:x,onChange:D=>b(D.target.value),placeholder:"Kurz beschreiben â¦",className:"min-h-[4rem] text-xs",disabled:a}):null]}):null,I?n.jsxs("p",{className:"rounded-md border border-amber-500/40 bg-amber-500/10 px-2.5 py-2 text-xs text-amber-800 dark:text-amber-200",children:["Hinweis: Gutteile (",S,") + Ausschuss (",R,") = ",S+R," ","weicht von der Soll-Menge (",r,") ab. Speichern ist trotzdem möglich."]}):null,k>0?n.jsxs("label",{className:"flex items-start gap-2 rounded-md border border-border px-2.5 py-2 text-xs",children:[n.jsx(fr,{checked:w,onCheckedChange:D=>v(D===!0),disabled:a,className:"mt-0.5"}),n.jsxs("span",{children:["Restmenge (",k,") als neuen geplanten Arbeitsauftrag anlegen (gleicher Snapshot, Traceability über parent_work_order_id)."]})]}):null]}),n.jsxs(Xn,{children:[n.jsx(ee,{type:"button",variant:"outline",disabled:a,onClick:t,children:"Abbrechen"}),n.jsx(ee,{type:"button",disabled:!j||a,onClick:()=>void i({produced:S,scrap:R,reason:z,splitRemainder:k>0?w:!1}),children:"AbschlieÃen & Buchen"})]})]})})}function dR(e){return e.resourceType==="EXTERNAL_SUBCONTRACTOR"?"Externe Ressource":e.resourceType==="INTERNAL_MACHINE"?"Maschine":"Manuell"}function gg(e,t){const r=t>0?t:1;return e.map(s=>({...s,quantity:Number(s.quantity)*r}))}function xg(e,t){return e.length===0?!1:e.every(r=>(t[r.id]??r.status)==="completed")}function mR({workOrderId:e,className:t}){var X;const r=Zx(),s=VS(),a=qS(),[i,o]=u.useState(null),[l,d]=u.useState(null),[m,p]=u.useState(!0),[h,x]=u.useState(null),[b,w]=u.useState(null),[v,S]=u.useState({}),[R,E]=u.useState(!1),[A,I]=u.useState(null),[C,k]=u.useState(!1),[j,z]=u.useState(!1),[D,B]=u.useState(!1),T=bc(l??{quantity:1,targetQuantity:1}),P=$S(l==null?void 0:l.operationYields),G=Math.max(0,T-P),W=(l==null?void 0:l.status)==="completed"||(l==null?void 0:l.status)==="blocked";u.useEffect(()=>{let Ie=!1;return p(!0),x(null),o(null),d(null),S({}),w(null),k(!1),z(!1),B(!1),(async()=>{var Le;const Se=await a.getById(e);if(Ie)return;if(!Se.snapshotId)throw new Error("Arbeitsauftrag hat keinen freigegebenen Snapshot.");d(Se);const Ce=await r.getById(Se.snapshotId);if(Ie)return;o(Ce);const Be=[...Ce.resource_assignment].sort((rt,lt)=>rt.sequence-lt.sequence);w(((Le=Be[0])==null?void 0:Le.id)??null)})().catch(Se=>{Ie||x(Se instanceof Error?Se.message:"Daten konnten nicht geladen werden.")}).finally(()=>{Ie||p(!1)}),()=>{Ie=!0}},[e,a,r]);const ke=u.useMemo(()=>i?[...i.resource_assignment].sort((Ie,V)=>Ie.sequence-V.sequence):[],[i]),L=u.useMemo(()=>{const Ie=ke.find(Se=>Se.id===b)??ke[0]??null;if(!Ie)return null;const V=v[Ie.id];return V?{...Ie,status:V}:Ie},[ke,b,v]),xe=u.useMemo(()=>
133{if(!L||!i)return[];const Ie=pg(i.bom_features,L.id);return gg(Ie,T)},[i,L,T]),Ne=xg(ke,v)&&l!=null&&l.status!=="completed"&&l.status!=="blocked";u.useEffect(()=>{I(null)},[L==null?void 0:L.id]);const se=L?oR(L):null,J=(se==null?void 0:se.kind)==="complete"&&!W,Q=async(Ie,V)=>{if(l&&!(xg(ke,Ie)&&l.status!=="completed")&&(V==="start"||V==="handover"||V==="machine_export")&&(l.status==="planned"||l.status==="waiting_for_material")){const Se=await s.updateStatus(e,"in_progress");d(Se)}},U=async Ie=>{if(!(!i||!l||!L)){E(!0),I(null);try{const V=gg(pg(i.bom_features,L.id),T),Se={workOrderId:e,snapshotId:i.id};if(Ie==="handover"){const Le={snapshotId:i.id,workOrderId:e,operationId:L.id,resourceId:L.resourceId,resourceName:L.resourceName,format:"file",positions:V};await Sd.trigger(L.resourceType,L.resourceId,{...Se,phase:"transport",outbound:Le})}else if(Ie==="machine_export"){const Le={snapshotId:i.id,workOrderId:e,operationId:L.id,machineId:L.resourceId,machineName:L.resourceName,positions:V};await Sd.trigger(L.resourceType,L.resourceId,{...Se,phase:"transport",machineExport:Le})}else if(Ie==="start"||Ie==="complete"){const Le=Ie==="complete"&&(L.resourceType==="EXTERNAL_SUBCONTRACTOR"||L.resourceType==="INTERNAL_MACHINE")?"ack":void 0;await Sd.trigger(L.resourceType,L.resourceId,{...Se,...Le?{phase:Le}:{}})}const Ce=lR(L,Ie),Be={...v,[L.id]:Ce};S(Be),await Q(Be,Ie)}catch(V){I(V instanceof Error?V.message:"Aktion fehlgeschlagen.")}finally{E(!1)}}},ne=async()=>{!l||!L||!(se!=null&&se.kind)||W||await U(se.kind)},H=async Ie=>{E(!0),I(null);try{const V=await s.saveOperationYield(e,l==null?void 0:l.operationYields,Ie);d(V),B(!1),M.success("Ausschuss gespeichert.")}catch(V){I(V instanceof Error?V.message:"Ausschuss speichern fehlgeschlagen.")}finally{E(!1)}},Z=async Ie=>{E(!0),I(null);try{const V=await s.completeWorkOrder(e,Ie);d(V.completed),k(!1),V.split&&M.success(`Restauftrag angelegt (${V.split.orderNumber||V.split.id.slice(0,8)}) · Zielmenge ${bc(V.split)}`)}catch(V){I(V instanceof Error?V.message:"Abschluss fehlgeschlagen.")}finally{E(!1)}},K=async()=>{await Z({produced:G,scrap:P,reason:P>0?"Summiert aus Arbeitsschritten":void 0,splitRemainder:!1})},me=async Ie=>{E(!0),I(null);try{const V=await s.blockWorkOrder(e,Ie);d(V),z(!1),M.message("Arbeitsauftrag blockiert â AV muss prüfen.")}catch(V){I(V instanceof Error?V.message:"Blockieren fehlgeschlagen.")}finally{E(!1)}};if(m)return n.jsxs("div",{className:ye("flex h-full items-center justify-center gap-2 text-sm text-muted-foreground",t),children:[n.jsx(Me,{className:"size-4 animate-spin"}),"Arbeitsauftrag wird geladen â¦"]});if(h||!l||!i)return n.jsx("p",{className:ye("text-sm text-destructive",t),children:h??"Arbeitsauftrag oder Snapshot fehlt."});const $=((X=l.operationYields)==null?void 0:X.find(Ie=>Ie.operationId===(L==null?void 0:L.id)))??null;return n.jsxs("div",{className:ye("flex h-full min-h-0 flex-col gap-3",t),"data-execution":"worker-cockpit",children:[n.jsxs("header",{className:"shrink-0 space-y-1 border-b border-border pb-3",children:[n.jsx("p",{className:"text-sm font-semibold",children:l.orderNumber||l.positionLabel||`AA-${l.id.slice(0,8).toUpperCase()}`}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[[i.articleNumber,i.articleName].filter(Boolean).join(" · ")||"â",` · Zielmenge ${T}`,l.status==="completed"&&l.producedQuantity!=null?` · Ist ${l.producedQuantity}`+(l.scrapQuantity?` / Ausschuss ${l.scrapQuantity}`:""):"",P>0&&l.status!=="completed"?` · Op-Ausschuss ${P}`:""]}),n.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["WO ",l.status," · ","Snapshot ",i.status," (read-only)"," · ","Material = eingefrorene Stückliste à Zielmenge",l.parentWorkOrderId?` · Split aus ${l.parentWorkOrderId.slice(0,8)}`:"",i.frozenAt?` · ${new Date(i.frozenAt).toLocaleString("de-DE")}`:""]}),l.status==="blocked"?n.jsxs("div",{className:"mt-2 flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-2.5 py-2 text-xs text-destructive",children:[n.jsx(EN,{className:"mt-0.5 size-3.5 shrink-0"}),n.jsxs("span",{children:["Shopfloor-Veto â blockiert.",l.blockedReason?` Grund: ${l.blockedReason}`:""," ","Entsperren nur administrativ (WO-Detail)."]})]}):null,n.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[Ne?n.jsxs(n.Fragment,{children:[n.jsxs(ee,{type:"button",size:"sm",className:"h-9 gap-1.5",disabled:R,onClick:()=>void K(),children:[n.jsx(rs,{className:"size-3.5"}),"Auftrag abschlieÃen & Buchen"]}),n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-8 gap-1.5",disabled:R,title:"Abweichende Mengen oder Restmenge splitten",onClick:()=>k(!0),children:[n.jsx(PN,{className:"size-3.5"}),"Abweichung / Split â¦"]})]}):null,l.status==="in_progress"?n.jsxs(ee,{type:"button",size:"sm",variant:"destructive",className:"h-8 gap-1.5",disabled:R,onClick:()=>z(!0),children:[n.jsx(ks,{className:"size-3.5"}),"Blockieren"]}):null]})]}),n.jsxs("div",{className:"grid min-h-0 flex-1 gap-3 md:grid-cols-[minmax(12rem,16rem)_1fr]",children:[n.jsxs("aside",{className:"min-h-0 space-y-1 overflow-y-auto rounded-lg border border-border p-2",children:[n.jsx("p",{className:"px-1 pb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Arbeitsschritte"}),n.jsx("ol",{className:"space-y-1",children:ke.map(Ie=>{var Be;const V=v[Ie.id]??Ie.status,Se=((L==null?void 0:L.id)??null)===Ie.id,Ce=(Be=l.operationYields)==null?void 0:Be.find(Le=>Le.operationId===Ie.id);return n.jsx("li",{children:n.jsxs("button",{type:"button",className:ye("w-full rounded-md px-2 py-2 text-left text-xs transition-colors",Se?"bg-primary/10 text-foreground":"hover:bg-muted/50"),onClick:()=>w(Ie.id),children:[n.jsxs("span",{className:"font-medium",children:[Ie.sequence,". ",Ie.label]}),n.jsxs("span",{className:"mt-0.5 block text-[10px] text-muted-foreground",children:[fg({...Ie,status:V}),Ce&&Ce.scrapQuantity>0?` · Ausschuss ${Ce.scrapQuantity}`:""]})]})},Ie.id)})})]}),n.jsx("section",{className:"min-h-0 space-y-3 overflow-y-auto rounded-lg border border-border p-3",children:L?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[n.jsxs("div",{className:"min-w-0 space-y-1",children:[n.jsx("p",{className:"text-sm font-semibold",children:L.label}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:[fg(L),L.resourceName?` · ${L.resourceName}`:""]})]}),n.jsx(bt,{variant:"outline",className:"shrink-0 text-[10px] font-normal",children:dR(L)})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("p",{className:"text-[11px] font-medium",children:["Material (à ",T,")"]}),n.jsx(sR,{positions:xe})]}),A?n.jsx("p",{className:"text-xs text-destructive",children:A}):null,n.jsxs("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[n.jsxs(ee,{type:"button",size:"sm",className:"h-10 min-w-[10rem] gap-1.5 px-4",disabled:R||!(se!=null&&se.kind)||W,title:W?l.status==="blocked"?"Auftrag ist blockiert.":"Auftrag ist abgeschlossen.":se==null?void 0:se.disabledReason,onClick:()=>void ne(),children:[R?n.jsx(Me,{className:"size-3.5 animate-spin"}):n.jsx(Ii,{className:"size-3.5"}),(se==null?void 0:se.label)??"â"]}
133),J||L.status!=="completed"&&L.status!=="blocked"&&!W?n.jsxs(ee,{type:"button",size:"sm",variant:"outline",className:"h-8 gap-1.5",disabled:R||W||L.status==="completed",title:"Ausschuss für diesen Schritt erfassen (optional)",onClick:()=>B(!0),children:[n.jsx(TN,{className:"size-3.5"}),"Ausschuss erfassen"]}):null]})]}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"Kein Arbeitsschritt vorhanden."})})]}),n.jsx(uR,{isOpen:C,onClose:()=>k(!1),targetQuantity:T,initialScrap:P,submitting:R,onSubmit:Z}),n.jsx(cR,{isOpen:j,onClose:()=>z(!1),submitting:R,onSubmit:me}),L?n.jsx(aR,{isOpen:D,onClose:()=>B(!1),operationId:L.id,operationLabel:L.label,initial:$,submitting:R,onSubmit:H}):null]})}function fR(){const{workOrderId:e}=Go();return n.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3 p-4 md:p-6",children:[n.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[n.jsx(ee,{type:"button",variant:"ghost",size:"sm",className:"h-8 gap-1.5 px-2",asChild:!0,children:n.jsxs(lr,{to:"/fertigung",children:[n.jsx(Ks,{className:"size-3.5"}),"Fertigung"]})}),n.jsx("span",{className:"text-xs text-muted-foreground",children:"Worker-Cockpit"}),e?n.jsxs("span",{className:"font-mono text-[10px] text-muted-foreground",children:["WO ",e.slice(0,8)]}):null]}),e?n.jsx(mR,{className:"min-h-0 flex-1",workOrderId:e}):n.jsx("p",{className:"text-sm text-destructive",children:"Arbeitsauftrag fehlt."})]})}function uo(e,t){return n.jsx(u.Suspense,{fallback:n.jsx($a,{}),children:n.jsx(Mx,{featureId:e,children:t})})}function pR(){const{machineId:e}=Go();return e?n.jsx($D,{machineId:e}):null}function hR(){const{machineId:e}=Go();return n.jsx(Oc,{to:e?`/maschinen/${e}`:"/maschinen",replace:!0})}const gR=[{path:"/fertigung",element:uo("module.manufacturing.access",n.jsx(eR,{}))},{path:"/fertigung/kalender",element:uo("module.manufacturing.access",n.jsx(tR,{}))},{path:"/fertigung/execution/:workOrderId",element:uo("module.manufacturing.access",n.jsx(fR,{}))},{path:"/fertigung/halle",element:n.jsx(Oc,{to:"/fertigung",replace:!0})},{path:"/maschinen",element:uo("module.manufacturing.access",n.jsx(MD,{}))},{path:"/maschinen/:machineId",element:uo("module.manufacturing.access",n.jsx(pR,{}))},{path:"/fertigung/:machineId",element:n.jsx(hR,{})}],xR=Object.freeze(Object.defineProperty({__proto__:null,manufacturingRoutes:gR},Symbol.toStringTag,{value:"Module"}));function yR(e,t){const r=[];for(const s of e){const a=bf(s,t);if(!fy(a))continue;const i=a.name||a.value||a.articleNumber||a.mpn||a.refDes||"â";r.push({articleNumber:a.articleNumber||a.value||a.refDes||i,name:i,quantity:a.quantity,refDes:a.refDes,mpn:a.mpn||void 0,manufacturer:a.manufacturer||void 0,value:a.value||void 0,package:a.package||void 0})}return r}const bR={id:"csv-importer",name:ss.fileImport,description:"Stückliste hochladen (CSV/Excel) â Das System erkennt Bauteile automatisch und schlägt Zuordnungen vor.",type:"importer",format:"csv",accept:".csv,.txt,.tsv",supportsAttachments:!0,uiMode:"mapping",configSchema:[{key:"delimiter",label:"Trennzeichen",type:"select",defaultValue:"semicolon",options:[{value:"comma",label:"Komma (,)"},{value:"semicolon",label:"Semikolon (;)"},{value:"tab",label:"Tab"}]},{key:"hasHeader",label:"Erste Zeile enthält Spaltenüberschriften",type:"boolean",defaultValue:!0}],async process(e){const{columnMapping:t,parsedRows:r,files:s,attachments:a}=e;if(!t||!(r!=null&&r.length))return{success:!1,message:"Mapping oder Daten fehlen."};const i=yR(r,t),o=s.map(l=>({id:crypto.randomUUID(),name:l.name,kind:"other",mimeType:l.type,sizeBytes:l.size,file:l}));return{success:i.length>0,message:i.length?`${i.length} Positionen importiert.`:"Keine gültigen Zeilen gefunden.",bomItems:i,attachments:[...a,...o]}}},vR={id:"eagle-cad-importer",name:ss.eagleImport,description:"Eagle .brd Import â Ziehen Sie Ihre Baugruppen-Datei hierher. Die Stückliste wird automatisch erstellt.",type:"importer",format:"eagle-brd",accept:".brd,.brd.json,.json",supportsAttachments:!0,uiMode:"direct",configSchema:[{key:"mergeStrategy",label:"Zusammenführung",type:"select",defaultValue:"append",options:[{value:"append",label:"An bestehende Stückliste anhängen"},{value:"replace",label:"Stückliste ersetzen"}]},{key:"importSchematics",label:"Schaltplan-Anhänge übernehmen",type:"boolean",defaultValue:!0}],async process(e){const{files:t,config:r,attachments:s}=e,a=t.find(p=>/\.(json|brd)$/i.test(p.name));if(!a)return{success:!1,message:"Keine Eagle .brd Datei gefunden."};const{readEagleBrdFile:i,buildProcessResultFromEagle:o}=await Va(async()=>{const{readEagleBrdFile:p,buildProcessResultFromEagle:h}=await Promise.resolve().then(()=>sy);return{readEagleBrdFile:p,buildProcessResultFromEagle:h}},void 0),l=await i(a);if(!l)return{success:!1,message:"Keine gültige Eagle .brd Datei (XML ab Version 6)."};const d=o(l,a,r),m=t.filter(p=>p!==a&&/\.(sch|kicad_sch)$/i.test(p.name));if(r.importSchematics!==!1&&m.length){const p=m.map(h=>({id:crypto.randomUUID(),name:h.name,kind:"schematic",mimeType:h.type,sizeBytes:h.size,file:h}));d.attachments=[...d.attachments??[],...p,...s]}return d}};function NR(e){return e.exportFields??["articleNumber","name","quantity","refDes"]}const jR={id:"bom-export-electronics",name:"BOM-Export (Elektronik)",description:"Stückliste als CSV/XLSX mit konfigurierbaren Feldern und optionalen Gerber-Anhängen.",type:"exporter",format:"bom",supportsAttachments:!0,uiMode:"export",configSchema:[{key:"outputFormat",label:"Ausgabeformat",type:"select",defaultValue:"csv",options:[{value:"csv",label:"CSV"},{value:"xlsx",label:"Excel (XLSX)"}]},{key:"includeRefDes",label:"Referenzdesignatoren exportieren",type:"boolean",defaultValue:!0},{key:"groupByValue",label:"Gleiche Bauteile zusammenfassen",type:"boolean",defaultValue:!0},{key:"includeGerberZip",label:"Gerber-ZIP als Anhang beilegen",type:"boolean",defaultValue:!1}],async process(e){const{context:t,config:r,attachments:s}=e,a=t.bomItems??[];if(!a.length)return{success:!1,message:"Keine Stücklistendaten zum Exportieren."};let i=a.map(v=>({articleNumber:v.articleNumber,name:v.name,quantity:String(v.quantity),refDes:r.includeRefDes!==!1?v.refDes:""}));if(r.groupByValue){const v=new Map;for(const S of a){const R=`${S.articleNumber}::${S.name}`,E=v.get(R);E?(E.quantity+=S.quantity,S.refDes&&S.refDes.split(/[,;
133\s]+/).forEach(A=>E.refDesSet.add(A))):v.set(R,{articleNumber:S.articleNumber,name:S.name,quantity:S.quantity,refDesSet:new Set(S.refDes?S.refDes.split(/[,;\s]+/):[])})}i=Array.from(v.values()).map(S=>({articleNumber:S.articleNumber,name:S.name,quantity:String(S.quantity),refDes:r.includeRefDes!==!1?Array.from(S.refDesSet).join(", "):""}))}const o=NR(r),l={articleNumber:"Artikelnummer",name:"Bezeichnung",quantity:"Menge",refDes:"Ref-Des"},d=o.filter(v=>l[v]),m=i.map(v=>Object.fromEntries(d.map(S=>[l[S],v[S]??""]))),p=r.delimiter??"semicolon",h=g0(d.map(v=>l[v]),m,p),x=new Blob([h],{type:"text/csv;charset=utf-8"}),b=`BOM_${t.articleNumber??"export"}.csv`,w=[...s];if(r.includeGerberZip){const v=s.find(S=>S.kind==="gerber"||/\.zip$/i.test(S.name));v&&w.push(v)}return{success:!0,message:`BOM mit ${i.length} Positionen exportiert.`,exportBlob:x,exportFileName:b,attachments:w}}},kR={id:"pnp-export-electronics",name:"PnP / CPL-Export",description:"Pick-and-Place / Centroid-Datei für Bestückungsautomaten.",type:"exporter",format:"cpl",supportsAttachments:!0,uiMode:"export",configSchema:[{key:"layer",label:"Bestückungsseite",type:"select",defaultValue:"top",options:[{value:"top",label:"Top"},{value:"bottom",label:"Bottom"},{value:"both",label:"Beide Seiten"}]},{key:"units",label:"Einheiten",type:"select",defaultValue:"mm",options:[{value:"mm",label:"Millimeter"},{value:"mil",label:"Mil"}]},{key:"exportFields",label:"Felder (kommagetrennt)",type:"text",defaultValue:"designator,x,y,rotation,layer,value,package",description:"designator, x, y, rotation, layer, value, package"}],async process(e){var x,b;const{context:t,config:r,attachments:s,files:a}=e;let i=[];const o=a[0];if(o){const{readEagleBrdFile:w,parseCadRotation:v}=await Va(async()=>{const{readEagleBrdFile:R,parseCadRotation:E}=await Promise.resolve().then(()=>sy);return{readEagleBrdFile:R,parseCadRotation:E}},void 0),S=await w(o);if((x=S==null?void 0:S.cpl)!=null&&x.length){const R=r.layer??"top";i=S.cpl.filter(E=>R==="both"?!0:R==="bottom"?E.layer==="Bottom":E.layer==="Top").map(E=>({designator:E.designator,x:String(E.x),y:String(E.y),rotation:String(v(E.rotation)),layer:E.layer,value:E.value??"",package:E.package??""}))}}if(!i.length&&((b=t.bomItems)!=null&&b.length)&&(i=t.bomItems.flatMap(w=>(w.refDes||"REF").split(/[,;\s]+/).filter(Boolean).map(v=>({designator:v,x:"0",y:"0",rotation:"0",layer:"Top",value:w.name,package:w.referenceKey??""})))),!i.length)return{success:!1,message:"Keine PnP/CPL-Daten verfügbar."};const l=String(r.exportFields??"designator,x,y,rotation,layer").split(",").map(w=>w.trim()).filter(Boolean),d=l.join(" "),m=i.map(w=>l.map(v=>w[v]??"").join(" ")),p=[d,...m].join(` 134`),h=new Blob([p],{type:"text/plain;charset=utf-8"});return{success:!0,message:`${i.length} PnP-Positionen exportiert.`,exportBlob:h,exportFileName:`PnP_${t.articleNumber??"export"}.txt`,attachments:s}}};let yg=!1;function Ev(){yg||(yg=!0,Tl(bR),Tl(vR),Tl(jR),Tl(kR))}Ev();const wR=Object.freeze(Object.defineProperty({__proto__:null,bootstrapDataModules:Ev},Symbol.toStringTag,{value:"Module"}));export{aM as A,$R as B,sp as C,iM as D,CR as E,FR as F,UR as G,MR as H,oM as I,OR as J,KR as K,VR as L,TR as M,qg as N,u0 as O,uM as P,qR as Q,lM as S,sM as U,PR as a,uf as b,RN as c,os as d,rM as e,cM as f,sD as g,yD as h,IR as i,ID as j,DR as k,Pd as l,gR as m,ip as n,WN as o,ON as p,VN as q,_R as r,RR as s,wp as t,gs as u,LR as v,ER as w,BR as x,kp as y,zR as z};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.