SliceModal-Ckev_VNF.js 59 KB

12
  1. import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{C as t,T as n,a as r,k as i,w as a,x as o}from"./client-uq_Z1wxL.js";import{t as s}from"./preload-helper-Czpn1I53.js";import{n as c}from"./QueryClientProvider-BytsNH5G.js";import{t as l}from"./useQuery-Ri3Hizdr.js";import{t as u}from"./useMutation-Y5Gxe7vE.js";import{a as d}from"./info-QUu8hfnP.js";import{n as f}from"./ToastContext-C1KWXcWl.js";import{t as p}from"./cloud-off-BvLcQzYk.js";import{t as m}from"./cog-D1Ojd7L_.js";import{t as h}from"./layers-tAlrXClL.js";import{t as g}from"./loader-circle-MxPMJ2b-.js";import{t as ee}from"./refresh-cw-DW0A7HtL.js";import{t as _}from"./rotate-ccw-7xDFE8qP.js";import{t as v}from"./search-CDlNAJfk.js";import{t as y}from"./x-DvWlm3CR.js";import{o as b}from"./date-G9KUauqz.js";import{h as x,k as S,m as C,p as w}from"./amsHelpers-DDsrDUnz.js";import{t as T}from"./FilamentSwatch-YN9cyuiV.js";import{n as te}from"./index-DnQdTpRw.js";import{a as ne,i as E,n as D,t as O}from"./slicerPrinterMatch-CUdoNag2.js";import{a as k,c as A,i as j,l as M,n as N,o as re,r as ie,s as ae,t as P}from"./slicePresetPicker-Co9COtU8.js";var oe=t(`grid-2x2`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),F=e(i(),1),I=1024;function se(){let[e,t]=(0,F.useState)(()=>typeof window<`u`&&window.innerWidth>=I);return(0,F.useEffect)(()=>{let e=window.matchMedia(`(min-width: ${I}px)`),n=e=>{t(e.matches)};return t(e.matches),e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var L=a();function ce({plates:e,onSelect:t,onClose:r}){let{t:i}=n();return(0,L.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4`,onClick:r,children:(0,L.jsxs)(`div`,{className:`w-full max-w-3xl max-h-[85vh] flex flex-col rounded-lg bg-bambu-dark-secondary border border-bambu-dark-tertiary/60`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`flex-shrink-0 flex items-start justify-between gap-3 px-4 pt-4 pb-3 border-b border-bambu-dark-tertiary/40`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsx)(`h3`,{className:`text-white font-medium`,children:i(`archives.platePicker.title`)}),(0,L.jsx)(`p`,{className:`text-xs text-bambu-gray mt-1`,children:i(`archives.platePicker.hint`)})]}),(0,L.jsx)(`button`,{onClick:r,className:`flex-shrink-0 text-bambu-gray hover:text-white transition-colors`,"aria-label":i(`common.close`,`Close`),children:(0,L.jsx)(y,{className:`w-5 h-5`})})]}),(0,L.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:(0,L.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2`,children:e.map(e=>(0,L.jsxs)(`button`,{type:`button`,onClick:()=>t(e.index),className:`flex items-center gap-2 p-2 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark hover:border-bambu-gray transition-colors text-left`,children:[e.has_thumbnail&&e.thumbnail_url!=null?(0,L.jsx)(`img`,{src:o(e.thumbnail_url),alt:`Plate ${e.index}`,className:`w-12 h-12 rounded object-cover bg-bambu-dark-tertiary flex-shrink-0`}):(0,L.jsx)(`div`,{className:`w-12 h-12 rounded bg-bambu-dark-tertiary flex items-center justify-center flex-shrink-0`,children:(0,L.jsx)(h,{className:`w-5 h-5 text-bambu-gray`})}),(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,L.jsx)(`p`,{className:`text-sm text-white font-medium truncate`,children:e.name?`${i(`archives.platePicker.plateLabel`,{index:e.index})} — ${e.name}`:i(`archives.platePicker.plateLabel`,{index:e.index})}),(0,L.jsxs)(`p`,{className:`text-xs text-bambu-gray truncate`,children:[e.objects.length>0?e.objects.slice(0,3).join(`, `)+(e.objects.length>3?`…`:``):e.object_count!=null&&e.object_count>0?i(`archives.platePicker.objectCount`,{count:e.object_count}):`${e.filaments.length} filament${e.filaments.length===1?``:`s`}`,e.print_time_seconds==null?``:` • ${b(e.print_time_seconds)}`]})]})]},e.index))})})]})})}function le(e,t){if(!e)return null;let n=e.replace(/^#\s*/,``).trim().match(/^Bambu Lab\s+(.+?)(?:\s+[\d.]+\s*nozzle)?$/i);if(!n)return null;let r=n[1].trim(),i=`bambu lab ${r}`.toLowerCase();for(let[e,n]of Object.entries(t))if(e.toLowerCase()===i)return n;return r}function R(e,t){return!e||!t?!1:E(e.trim(),t.trim())}function ue(e,t){return t?e.filter(e=>R(e.model,t)):e}function de(e,t,n={}){return e?le((Object.hasOwn(n,e)?n[e]:null)||e,t):null}function fe(e,t,n,r={}){let i=de(e.name,n,r);return i===null||t.some(e=>R(e,i))}function pe(e,t,n,r={}){let i=null;for(let a of P)for(let o of e[a].printer){let e=de(o.name,n,r);if(e===null||!t.some(t=>R(t,e)))continue;let s={source:a,id:o.id};if(/\b0\.4\s*nozzle\b/i.test(o.name))return s;i??=s}return i}function me(e){let t=e.replace(/^#\s*/,``),n=t.lastIndexOf(`@`);return n>0&&(t=t.slice(0,n)),t.replace(/\s+/g,` `).trim().toLowerCase()}function he(e){let t=e.replace(/^#\s*/,``),n=t.lastIndexOf(`@`);return n>0&&(t=t.slice(0,n)),t.replace(/\s+/g,` `).trim()}function ge(e){return!!e.tray_type}function _e(e){let t=e.saved_preset;return t&&S(t.preset_id,e.tray_info_idx,t.tray_info_idx)?t:null}function ve(e,t){if(e.preset_source===`local`){let t=e.preset_id.match(/^local_(\d+)$/);return t?{source:`local`,id:t[1]}:null}return(e.preset_source===`cloud`||e.preset_source===`orca_cloud`)&&e.preset_id?j(t,{source:e.preset_source,id:e.preset_id}):null}function ye(e,t){let n=[];t?.preset_name&&n.push(t.preset_name);let r=(e.tray_sub_brands??``).trim();r?(/^GF/i.test(e.tray_info_idx??``)&&!/^bambu\b/i.test(r)&&n.push(`Bambu ${r}`),n.push(r)):e.tray_type&&n.push(`Generic ${e.tray_type}`);let i=new Set;return n.filter(e=>{let t=me(e);return!t||i.has(t)?!1:(i.add(t),!0)})}function be(e){let t=new Map;for(let n of P)for(let r of e[n].filament){let e=me(r.name),i=t.get(e);i?i.push({source:n,preset:r}):t.set(e,[{source:n,preset:r}])}return t}function xe(e,t,n,r,i){if(!ge(e))return null;let a=_e(e),o=e=>ne(e,`filament`,r,i);if(a){let e=ve(a,t),n=e?t[e.source].filament.find(t=>t.id===e.id):void 0;if(e&&n&&o(n)!==`mismatch`)return{ref:e,preset:n}}let s=a?ve(a,t)?.source:void 0;for(let t of ye(e,a)){let r=n.get(me(t))??[],i=s?[...r.filter(e=>e.source===s),...r.filter(e=>e.source!==s)]:r,a=null;for(let{source:t,preset:n}of i){if(M(n,e.tray_type??``))continue;let r=o(n);if(r===`match`)return{ref:{source:t,id:n.id},preset:n};r===`unknown`&&!a&&(a={ref:{source:t,id:n.id},preset:n})}if(a)return a}return null}function Se(e){let t=[];for(let n of e){for(let e of n.ams)for(let n of e.trays)ge(n)&&t.push(n);for(let e of n.external)ge(e)&&t.push(e)}return t}function Ce(e,t,n,r,i){let a=new Set;for(let o of Se(e)){let e=xe(o,t,n,r,i);e&&a.add(A(e.ref))}return a}function we(e){let t=(e.tray_color??``).replace(/^#/,``);return/^[0-9a-fA-F]{6}/.test(t)?`#${t.slice(0,6).toUpperCase()}`:null}function Te({printers:e,data:t,index:r,selectedPrinterName:i,compatIndex:a,slotLabel:o,onPick:s,onClose:c}){let{t:l}=n();return(0,F.useEffect)(()=>{let e=e=>{e.key===`Escape`&&c()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,L.jsx)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center bg-black/60 p-4`,onClick:c,children:(0,L.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`slice-spool-picker-title`,className:`w-full max-w-3xl max-h-[85vh] flex flex-col rounded-lg bg-bambu-dark-secondary border border-bambu-dark-tertiary/60`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`flex-shrink-0 flex items-start justify-between gap-3 px-4 pt-4 pb-3 border-b border-bambu-dark-tertiary/40`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsx)(`h3`,{id:`slice-spool-picker-title`,className:`text-white font-medium`,children:l(`slice.loadedSpools.title`,`Loaded spools`)}),(0,L.jsx)(`p`,{className:`text-xs text-bambu-gray mt-1 truncate`,children:o})]}),(0,L.jsx)(`button`,{type:`button`,onClick:c,className:`flex-shrink-0 text-bambu-gray hover:text-white transition-colors`,"aria-label":l(`common.close`),children:(0,L.jsx)(y,{className:`w-5 h-5`})})]}),(0,L.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-5`,children:e.length===0?(0,L.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:l(`slice.loadedSpools.none`,`No printer of this model is online.`)}):e.map(e=>(0,L.jsx)(Ee,{printer:e,matchFor:e=>xe(e,t,r,i,a),onPick:s},e.id))})]})})}function Ee({printer:e,matchFor:t,onPick:r}){let{t:i}=n(),a=e.ams.filter(e=>!e.is_ams_ht),o=e.ams.filter(e=>e.is_ams_ht),s=e.ams.length>0||e.external.length>0,c=(e,n)=>(0,L.jsx)(De,{tray:e,label:n,match:t(e),onPick:r},`${e.ams_id}-${e.tray_id}`);return(0,L.jsxs)(`section`,{children:[(0,L.jsxs)(`h4`,{className:`text-sm text-white font-medium mb-2`,children:[e.name,e.model&&(0,L.jsx)(`span`,{className:`ml-2 text-xs text-bambu-gray font-normal`,children:e.model})]}),!s&&(0,L.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`slice.loadedSpools.nothingLoaded`,`No AMS and no external spool.`)}),(0,L.jsxs)(`div`,{className:`space-y-3`,children:[a.map(e=>(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`text-xs text-bambu-gray mb-1`,children:C(e.id)}),(0,L.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-2`,children:e.trays.map(t=>c(t,w(e.id,t.tray_id,!1,!1)))})]},e.id)),o.length>0&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`text-xs text-bambu-gray mb-1`,children:`AMS-HT`}),(0,L.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-2`,children:o.flatMap(e=>e.trays.map(t=>c(t,w(e.id,t.tray_id,!0,!1))))})]}),e.external.length>0&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`text-xs text-bambu-gray mb-1`,children:i(`printers.external`)}),(0,L.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-2`,children:e.external.map(t=>c(t,e.external_holders>1?t.tray_id===0?i(`printers.extL`):i(`printers.extR`):i(`printers.ext`)))})]})]})]})}function De({tray:e,label:t,match:r,onPick:i}){let{t:a}=n(),o=x(e),s=we(e),c=(0,F.useMemo)(()=>{if(r)return he(r.preset.name);let t=_e(e);return t?.preset_name?he(t.preset_name):e.tray_sub_brands||null},[r,e]);if(o!==null)return(0,L.jsxs)(`div`,{className:`rounded-md border border-dashed border-bambu-dark-tertiary px-2 py-2 text-xs text-bambu-gray/70`,children:[(0,L.jsx)(`div`,{className:`font-medium text-bambu-gray`,children:t}),(0,L.jsx)(`div`,{children:o===`reset`?a(`slice.loadedSpools.unknownSpool`,`Unidentified spool`):a(`slice.loadedSpools.empty`,`Empty`)})]});let l=r===null;return(0,L.jsxs)(`button`,{type:`button`,disabled:l,onClick:()=>r&&i(r,s),title:l?a(`slice.loadedSpools.noProfile`,`No profile for the selected printer`):c??void 0,className:`text-left rounded-md border border-bambu-dark-tertiary bg-bambu-dark px-2 py-2 text-xs transition-colors enabled:hover:border-bambu-green disabled:opacity-50 disabled:cursor-not-allowed`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsx)(T,{rgba:e.tray_color,className:`w-3.5 h-3.5 shrink-0`,effectSize:`table`}),(0,L.jsx)(`span`,{className:`font-medium text-white`,children:t}),(0,L.jsx)(`span`,{className:`ml-auto text-bambu-gray`,children:e.tray_type})]}),(0,L.jsx)(`div`,{className:`mt-1 truncate text-bambu-gray`,title:c??void 0,children:c??`—`}),l&&(0,L.jsx)(`div`,{className:`mt-0.5 truncate text-[11px] text-amber-600 dark:text-amber-400`,children:a(`slice.loadedSpools.noProfileShort`,`No profile for this printer`)})]})}var Oe=e=>typeof e==`object`&&!!e&&`enumKey`in e,ke=`enum:`;function z(e){if(typeof e==`number`)return e;if(typeof e==`boolean`)return+!!e;if(typeof e!=`string`)return;let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}function B(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e!==0;if(e===`1`||e===`true`)return!0;if(e===`0`||e===`false`)return!1}function Ae(e,t){return{get:n=>{let r=e[n];if((r===void 0||r===``)&&(r=t[n]?.default),Array.isArray(r)&&(r=r[0]),typeof r==`boolean`||typeof r==`number`||typeof r==`string`)return r},has:e=>e in t}}var je=[`->`,`||`,`&&`,`==`,`!=`,`<=`,`>=`,`(`,`)`,`,`,`<`,`>`,`!`];function Me(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
  2. `){n+=1;continue}if(r===`"`){let r=e.indexOf(`"`,n+1);if(r<0)return;t.push({kind:`str`,value:e.slice(n+1,r)}),n=r+1;continue}let i=/^\d+(\.\d*)?f?/.exec(e.slice(n));if(i&&/^[\d]/.test(r)){t.push({kind:`num`,value:Number.parseFloat(i[0])}),n+=i[0].length;continue}let a=je.find(t=>e.startsWith(t,n));if(a){t.push({kind:`op`,value:a}),n+=a.length;continue}let o=/^[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z_][A-Za-z0-9_]*)*/.exec(e.slice(n));if(o){t.push({kind:`id`,value:o[0]}),n+=o[0].length;continue}return}return t}var Ne=new Set([`opt_bool`,`opt_int`,`opt_float`,`opt_float_nullable`,`opt_int_nullable`,`opt_bool_nullable`,`opt_enum`,`opt_string`,`option`,`has`]),Pe=class e{tokens=[];pos=0;cfg;locals;schema;resolving;memo;constructor(e,t,n,r,i){this.cfg=e,this.locals=t,this.schema=n,this.resolving=r,this.memo=i}evaluate(e){let t=Me(e);if(!t||t.length===0)return;this.tokens=t,this.pos=0;let n=this.parseOr();if(this.pos===this.tokens.length)return n}peek(){return this.tokens[this.pos]}eatOp(e){let t=this.peek();return t&&t.kind===`op`&&t.value===e?(this.pos+=1,!0):!1}parseOr(){let e=this.parseAnd();for(;this.eatOp(`||`);){let t=this.parseAnd(),n=B(e),r=B(t);e=n===!0||r===!0?!0:n===void 0||r===void 0?void 0:n||r}return e}parseAnd(){let e=this.parseComparison();for(;this.eatOp(`&&`);){let t=this.parseComparison(),n=B(e),r=B(t);e=n===!1||r===!1?!1:n===void 0||r===void 0?void 0:n&&r}return e}parseComparison(){let e=this.parseUnary();for(let t of[`==`,`!=`,`<=`,`>=`,`<`,`>`])if(this.eatOp(t))return Fe(e,this.parseUnary(),t,this.schema);return e}parseUnary(){if(this.eatOp(`!`)){let e=B(this.parseUnary());return e===void 0?void 0:!e}return this.parsePrimary()}parsePrimary(){let e=this.peek();if(!e)return;if(e.kind===`num`||e.kind===`str`)return this.pos+=1,e.value;if(e.kind===`op`&&e.value===`(`){this.pos+=1;let e=this.parseOr();return this.eatOp(`)`)?e:void 0}if(e.kind!==`id`)return;if(this.pos+=1,e.value===`true`)return!0;if(e.value===`false`)return!1;if(e.value===`config`)return this.parseConfigAccess();let t=this.locals[e.value];return t===void 0?`${ke}${e.value}`:this.resolveLocal(e.value,t)}parseConfigAccess(){if(!this.eatOp(`->`))return;let e=this.peek();if(!e||e.kind!==`id`||!Ne.has(e.value))return;if(this.pos+=1,this.eatOp(`<`)){let e=1;for(;e>0;){let t=this.peek();if(!t)return;this.pos+=1,t.kind===`op`&&t.value===`<`&&(e+=1),t.kind===`op`&&t.value===`>`&&--e}}if(!this.eatOp(`(`))return;let t=this.peek();if(!t||t.kind!==`str`)return;this.pos+=1;let n=t.value;for(;this.eatOp(`,`);){let e=0;for(;;){let t=this.peek();if(!t)return;if(t.kind===`op`&&t.value===`(`&&(e+=1),t.kind===`op`&&t.value===`)`){if(e===0)break;--e}if(t.kind===`op`&&t.value===`,`&&e===0)break;this.pos+=1}}if(!this.eatOp(`)`))return;if(this.eatOp(`->`)){let e=this.peek();if(!e||e.kind!==`id`)return;this.pos+=1}if(e.value===`has`)return this.cfg.has(n);let r=this.cfg.get(n);return this.schema[n]?.enum_values?{enumKey:n,value:typeof r==`string`?r:void 0}:r}resolveLocal(t,n){let r=this.memo.get(t);if(r!==void 0||this.memo.has(t))return r;if(this.resolving.has(t))return;this.resolving.add(t);let i=new e(this.cfg,this.locals,this.schema,this.resolving,this.memo).evaluate(n);return this.resolving.delete(t),this.memo.set(t,i),i}};function Fe(e,t,n,r){let i=typeof e==`string`&&e.startsWith(ke)?e:typeof t==`string`&&t.startsWith(ke)?t:void 0;if(i!==void 0){if(n!==`==`&&n!==`!=`)return;let a=i===e?t:e;if(!Oe(a))return;let o=r[a.enumKey]?.enum_values;if(!o||a.value===void 0)return;let s=Ie(i.slice(5)).filter(e=>o.includes(e));if(s.length!==1)return;let c=s[0]===a.value;return n===`==`?c:!c}let a=Oe(e)?e.value:e,o=Oe(t)?t.value:t;if(n===`==`||n===`!=`){if(a===void 0||o===void 0)return;let e=typeof a==`string`||typeof o==`string`?String(a)===String(o):z(a)===z(o);return n===`==`?e:!e}let s=z(a),c=z(o);if(!(s===void 0||c===void 0)){if(n===`<`)return s<c;if(n===`<=`)return s<=c;if(n===`>`)return s>c;if(n===`>=`)return s>=c}}function Ie(e){let t=e.includes(`::`)?e.slice(e.lastIndexOf(`::`)+2):e,n=[t,/^[a-z]+([A-Z].*)$/.exec(t)?.[1]].filter(e=>!!e),r=new Set;for(let e of n){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1_$2`).toLowerCase();r.add(t),r.add(t.replace(/_/g,` `)),r.add(t.replace(/_/g,``))}return[...r]}function V(e,t,n){let r=Ae(e,t),i=new Map,a=new Set;for(let e of n.rules){let o=Le(e.enable_if);if(o&&B(new Pe(r,n.locals,t,new Set,i).evaluate(o))===!1)for(let t of e.fields)a.add(t)}return a}function Le(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`(`)t+=1;else if(r===`)`)--t;else if(r===`,`&&t===0)return e.slice(0,n).trim()||void 0}return e.trim()||void 0}var Re=new Set([`coBools`,`coFloats`,`coFloatsOrPercents`]),ze=e=>Re.has(e.type);function Be(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}function Ve(e){let t=e.sidetext;if(!(!t||t.includes(`->`)||t.includes(`::`)))return t}function H(e,t){let n=t===void 0?e.default:t;return n===void 0?``:Array.isArray(n)?n.map(String).join(`, `):typeof n==`boolean`?n?`1`:`0`:String(n)}function U(e,t){if(ze(e))return(Array.isArray(t)?t.map(String):String(t).split(`,`)).map(e=>e.trim()).filter(e=>e!==``);if(e.type===`coBool`)return typeof t==`boolean`?t?`1`:`0`:t===`1`||t===`true`||t===1?`1`:`0`;let n=String(t).trim();return e.type===`coPercent`?n.endsWith(`%`)?n:`${n}%`:n}function He(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=t[r];e&&(n[r]=U(e,i))}return n}function Ue(e,t,n){if(t===void 0||t===``)return!1;let r=t=>{let n=U(e,Array.isArray(t)?t.map(String).join(`, `):t);return Array.isArray(n)?n.join(`, `):n},i=r(t),a=n===void 0?e.default:n;return a===void 0?i!==``:i!==r(a)}var We=new Set([`support_filament`,`support_interface_filament`,`outer_wall_filament_id`,`inner_wall_filament_id`,`top_surface_filament_id`,`bottom_surface_filament_id`,`internal_solid_filament_id`,`sparse_infill_filament_id`]),Ge=[`simple`,`advanced`,`expert`],Ke={simple:0,advanced:1,expert:2,develop:3};function qe({values:e,onChange:t,disabled:r=!1,sourceOverrides:i=[],sourceSelected:a,onToggleSource:o,filamentChoices:c,presetValues:l,presetValuesResolved:u=!0,presetValuesReason:d}){let{t:f}=n(),[p,m]=(0,F.useState)(null),[h,ee]=(0,F.useState)(`simple`),[y,b]=(0,F.useState)(null),[x,S]=(0,F.useState)(``);(0,F.useEffect)(()=>{let e=!1;return Promise.all([s(()=>import(`./process-schema-CzfeynAH.js`),[]),s(()=>import(`./process-ui-tree-BWrKRLV6.js`),[]),s(()=>import(`./process-toggle-rules-DDBax3G5.js`),[])]).then(([t,n,r])=>{e||m({schema:t.default??t,tree:n.default??n,toggles:r.default??r})}),()=>{e=!0}},[]);let C=(0,F.useMemo)(()=>{let t={...l??{}};for(let e of i)a?.has(e.key)&&(t[e.key]=e.value);for(let[n,r]of Object.entries(e))r!==void 0&&r!==``&&(t[n]=r);return t},[l,i,a,e]),w=(0,F.useMemo)(()=>p?V(C,p.schema,p.toggles):new Set,[p,C]),T=(0,F.useMemo)(()=>new Map(i.map(e=>[e.key,e])),[i]),te=(0,F.useMemo)(()=>i.filter(e=>!e.printer_coupled&&!e.preset_defining),[i]),ne=(0,F.useMemo)(()=>i.filter(e=>a?.has(e.key)).length,[i,a]),E=(0,F.useMemo)(()=>p?i.filter(e=>!p.schema[e.key]):[],[p,i]),D=e=>{if(!p)return;let n={};for(let[t,r]of Object.entries(e))p.schema[t]&&Ue(p.schema[t],r,l?.[t])&&(n[t]=r);t(e,He(n,p.schema))},O=(t,n)=>{let r={...e};n===void 0?delete r[t]:r[t]=n,D(r)},k=(0,F.useMemo)(()=>{if(!p)return[];let e=e=>e.toLowerCase().replace(/[_\s]+/g,` `).trim(),t=e(x),n=e=>Ke[p.schema[e]?.mode??`expert`]<=Ke[h],r=(n,r,i)=>{if(!t)return!0;let a=p.schema[n];return[n,a?.label??``,a?.tooltip??``,r,i].some(n=>e(n).includes(t))};return p.tree.map(e=>({...e,groups:e.groups.map(t=>({...t,options:t.options.filter(i=>n(i)&&r(i,t.group,e.page))})).filter(e=>e.options.length>0)})).filter(e=>e.groups.length>0)},[p,h,x]),A=(0,F.useMemo)(()=>k.length===0||x.trim()?null:k.find(e=>e.page===y)??k[0],[k,y,x]),j=(0,F.useMemo)(()=>p?Object.keys(e).filter(t=>p.schema[t]&&Ue(p.schema[t],e[t],l?.[t])).length:0,[p,e,l]);if(!p)return(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-8 text-sm text-bambu-gray`,children:[(0,L.jsx)(g,{className:`w-4 h-4 animate-spin`}),f(`slicerSettings.loading`,`Loading slicer settings...`)]});let M=A?[A]:k;return(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(`div`,{className:`flex overflow-hidden rounded border border-bambu-dark-tertiary`,children:Ge.map(e=>(0,L.jsx)(`button`,{type:`button`,onClick:()=>ee(e),disabled:r,className:`px-2.5 py-1 text-xs capitalize transition-colors ${h===e?`bg-bambu-green text-white`:`text-bambu-gray hover:text-white`}`,children:f(`slicerSettings.mode.${e}`,e)},e))}),(0,L.jsxs)(`div`,{className:`relative flex-1 min-w-[10rem]`,children:[(0,L.jsx)(v,{className:`absolute left-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-bambu-gray`}),(0,L.jsx)(`input`,{type:`search`,value:x,onChange:e=>S(e.target.value),disabled:r,placeholder:f(`slicerSettings.searchPlaceholder`,`Search settings`),className:`w-full rounded border border-bambu-dark-tertiary bg-bambu-dark pl-7 pr-2 py-1 text-xs text-white placeholder:text-bambu-gray/60 focus:border-bambu-green focus:outline-none disabled:opacity-40`})]}),j>0&&(0,L.jsxs)(`button`,{type:`button`,onClick:()=>D({}),disabled:r,className:`flex items-center gap-1 text-xs text-bambu-gray hover:text-white`,children:[(0,L.jsx)(_,{className:`w-3 h-3`}),f(`slicerSettings.resetAll`,`Reset {{count}}`,{count:j})]})]}),!u&&(0,L.jsx)(`p`,{className:`rounded border border-amber-300 bg-amber-50 px-2 py-1 text-[0.7rem] text-amber-800 dark:border-amber-700/40 dark:bg-amber-900/20 dark:text-amber-200`,children:d===`sidecar_outdated`?f(`slicerSettings.presetValuesOutdatedSidecar`,`Showing slicer defaults: your slicer sidecar is older than this feature and can't report a preset's values. Update the sidecar image to see them. Anything you don't change still uses the preset.`):d===`not_configured`?f(`slicerSettings.presetValuesNotConfigured`,`Showing slicer defaults: no slicer sidecar is configured, so a preset's values can't be read. Anything you don't change still uses the preset.`):d===`sidecar_unavailable`?f(`slicerSettings.presetValuesSidecarUnavailable`,`Showing slicer defaults: the slicer sidecar did not answer, so a preset's values can't be read. Anything you don't change still uses the preset.`):f(`slicerSettings.presetValuesUnavailable`,`Showing slicer defaults: the picked preset's own values could not be read. Anything you don't change still uses the preset.`)}),i.length>0&&o&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded border border-bambu-dark-tertiary px-2 py-1.5 text-[0.7rem] text-bambu-gray`,children:[(0,L.jsx)(`span`,{className:`min-w-0 flex-1`,children:f(`slicerSettings.fromFileSummary`,`The designer changed {{count}} process settings in this file. Only the ones you tick are used.`,{count:i.length})}),(0,L.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>te.forEach(e=>o(e.key,!0)),title:f(`slicerSettings.fromFileUseAllHint`,`Ticks the settings that carry across printers. The ones tuned for the designer's own printer, and the ones that define the preset you picked, stay off.`),className:`shrink-0 rounded border border-bambu-dark-tertiary px-1.5 py-0.5 hover:text-white disabled:opacity-40`,children:f(`slicerSettings.fromFileUseAll`,`Use the designer's settings`)}),ne>0&&(0,L.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>i.forEach(e=>o(e.key,!1)),className:`shrink-0 rounded border border-bambu-dark-tertiary px-1.5 py-0.5 hover:text-white disabled:opacity-40`,children:f(`slicerSettings.fromFileClear`,`Clear {{count}}`,{count:ne})})]}),!x.trim()&&(0,L.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:k.map(e=>(0,L.jsx)(`button`,{type:`button`,onClick:()=>b(e.page),disabled:r,className:`px-2 py-1 text-xs rounded transition-colors ${A?.page===e.page?`bg-bambu-dark-tertiary text-white`:`text-bambu-gray hover:text-white`}`,children:e.page},e.page))}),M.length===0?(0,L.jsx)(`p`,{className:`py-6 text-center text-xs text-bambu-gray`,children:f(`slicerSettings.noMatches`,`No settings match this search.`)}):(0,L.jsxs)(`div`,{className:`flex flex-col gap-4 max-h-[22rem] lg:max-h-[58vh] overflow-y-auto pr-1`,children:[M.map(t=>(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[x.trim()&&(0,L.jsx)(`p`,{className:`text-[0.7rem] uppercase tracking-wide text-bambu-gray/70`,children:t.page}),t.groups.map(n=>(0,L.jsxs)(`fieldset`,{className:`flex flex-col gap-1.5`,children:[(0,L.jsx)(`legend`,{className:`mb-1 text-xs font-medium text-white`,children:n.group}),n.options.map(t=>(0,L.jsx)(W,{optionKey:t,option:p.schema[t],value:e[t],onChange:e=>O(t,e),disabled:r||w.has(t),disabledBySlicer:w.has(t),formDisabled:r,source:T.get(t),sourceOn:a?.has(t)??!1,onToggleSource:o,filamentChoices:We.has(t)?c:void 0,presetValue:l?.[t]},t))]},`${t.page}:${n.group}`))]},t.page)),E.length>0&&!x.trim()&&(0,L.jsxs)(`fieldset`,{className:`flex flex-col gap-1.5`,children:[(0,L.jsx)(`legend`,{className:`mb-1 text-xs font-medium text-white`,children:f(`slicerSettings.otherFromFile`,`Other settings from this file`)}),E.map(e=>(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-xs cursor-pointer`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:a?.has(e.key)??!1,disabled:r||!o,onChange:t=>o?.(e.key,t.target.checked),className:`shrink-0 cursor-pointer disabled:opacity-40`}),(0,L.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[(0,L.jsx)(`span`,{className:`font-mono text-bambu-gray`,children:e.key}),(0,L.jsx)(`span`,{className:`ml-1.5 text-white`,children:G(e.value)})]}),(e.printer_coupled||e.preset_defining)&&(0,L.jsx)(`span`,{className:`shrink-0 rounded bg-amber-100 px-1 py-0.5 text-[10px] text-amber-700 dark:bg-amber-500/20 dark:text-amber-400`,children:e.printer_coupled?f(`slicerSettings.fromFilePrinterCoupled`,`designer's printer`):f(`slicerSettings.fromFileOverridesPreset`,`overrides preset`)})]},e.key))]})]})]})}function W({optionKey:e,option:t,value:r,onChange:i,disabled:a,disabledBySlicer:o,formDisabled:s,source:c,sourceOn:l=!1,onToggleSource:u,filamentChoices:d,presetValue:f}){let{t:p}=n(),m=Ue(t,r,f),h=Ve(t),g=r===void 0?l&&c?G(c.value):H(t,f):String(r);return(0,L.jsxs)(`div`,{className:`flex items-center gap-2 group`,title:t.tooltip,children:[(0,L.jsxs)(`label`,{htmlFor:`slicer-opt-${e}`,className:`flex min-w-0 flex-1 items-center gap-1 text-xs ${o?`text-bambu-gray/40`:`text-bambu-gray`}`,children:[(0,L.jsx)(`span`,{className:`truncate`,title:t.label||e,children:t.label||e}),m&&(0,L.jsx)(`span`,{className:`shrink-0 text-bambu-green`,"aria-hidden":`true`,children:`•`}),c&&(0,L.jsx)(`span`,{className:`shrink-0 rounded px-1 py-0.5 text-[10px] ${c.printer_coupled||c.preset_defining?`bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-400`:`bg-bambu-green/15 text-bambu-green`}`,title:c.printer_coupled?p(`slicerSettings.fromFilePrinterCoupledHint`,`Tuned for the printer this file was designed for -- may be wrong or out of range on yours.`):c.preset_defining?p(`slicerSettings.fromFileOverridesPresetHint`,`The file sets this to {{value}} where the preset you picked uses {{preset}}. Tick it only if the file should win.`,{value:G(c.value),preset:H(t,f)}):p(`slicerSettings.fromFileHint`,`The designer changed this in the source file. Its value is {{value}}.`,{value:G(c.value)}),children:c.printer_coupled?p(`slicerSettings.fromFilePrinterCoupled`,`designer's printer`):c.preset_defining?p(`slicerSettings.fromFileOverridesPreset`,`overrides preset`):p(`slicerSettings.fromFile`,`from file`)})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:`flex w-3 shrink-0 justify-center`,children:c&&u&&(0,L.jsx)(`input`,{type:`checkbox`,checked:l,disabled:s,onChange:t=>u(e,t.target.checked),"aria-label":p(`slicerSettings.useFromFile`,`Use the source file's value for {{option}}`,{option:t.label||e}),title:p(`slicerSettings.useFromFile`,`Use the source file's value for {{option}}`,{option:t.label||e}),className:`w-3 h-3 cursor-pointer disabled:opacity-40`})}),(0,L.jsx)(`div`,{className:`w-40`,children:(0,L.jsx)(K,{id:`slicer-opt-${e}`,option:t,current:g,onChange:i,disabled:a,filamentChoices:d})}),(0,L.jsx)(`span`,{className:`w-16 shrink-0 whitespace-nowrap text-[0.65rem] text-bambu-gray/60`,children:h??``}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>i(void 0),disabled:a||!m,"aria-label":p(`slicerSettings.resetOption`,`Reset to default`),className:`p-0.5 transition-opacity ${m?`text-bambu-gray hover:text-white`:`opacity-0 pointer-events-none`}`,children:(0,L.jsx)(_,{className:`w-3 h-3`})})]})]})}function G(e){return Array.isArray(e)?e.map(e=>String(e)).join(`, `):e==null?``:String(e)}function K({id:e,option:t,current:r,onChange:i,disabled:a,filamentChoices:o}){let{t:s}=n(),c=`w-full rounded border border-bambu-dark-tertiary bg-bambu-dark px-1.5 py-0.5 text-xs text-white focus:border-bambu-green focus:outline-none disabled:opacity-40`;if(o&&o.length>0){let t=o.find(e=>String(e.index)===r);return(0,L.jsxs)(`div`,{className:`relative w-full`,children:[(0,L.jsxs)(`select`,{id:e,value:r,onChange:e=>i(e.target.value),disabled:a,className:`${c} w-full cursor-pointer appearance-none pr-5`,title:t?.label,children:[(0,L.jsx)(`option`,{value:`0`,children:s(`slicerSettings.filamentDefault`,`Default`)}),o.map(e=>(0,L.jsxs)(`option`,{value:String(e.index),children:[e.index,`: `,e.label]},e.index))]}),(0,L.jsx)(d,{className:`pointer-events-none absolute right-1.5 top-1/2 h-3 w-3 -translate-y-1/2 text-bambu-gray`})]})}return t.type===`coBool`?(0,L.jsx)(`input`,{id:e,type:`checkbox`,checked:r===`1`||r===`true`,onChange:e=>i(e.target.checked),disabled:a,className:`w-3.5 h-3.5 cursor-pointer disabled:opacity-40`}):t.type===`coEnum`&&t.enum_values?(0,L.jsxs)(`div`,{className:`relative w-full`,children:[(0,L.jsx)(`select`,{id:e,value:r,onChange:e=>i(e.target.value),disabled:a,className:`${c} w-full cursor-pointer appearance-none pr-5`,children:t.enum_values.map((e,n)=>(0,L.jsx)(`option`,{value:e,children:t.enum_labels?.[n]??e},e))}),(0,L.jsx)(d,{className:`pointer-events-none absolute right-1.5 top-1/2 h-3 w-3 -translate-y-1/2 text-bambu-gray`})]}):t.type===`coInt`||t.type===`coFloat`||t.type===`coPercent`?(0,L.jsx)(`input`,{id:e,type:`number`,value:r.replace(`%`,``),min:Be(t.min),max:Be(t.max),step:t.type===`coInt`?1:`any`,onChange:e=>i(e.target.value),disabled:a,className:c}):(0,L.jsx)(`input`,{id:e,type:`text`,value:r,onChange:e=>i(e.target.value),disabled:a,className:c})}var Je=`bambuddy.slice.onlyConnectedModels`,Ye=`bambuddy.slice.onlyLoadedSpools`;function Xe(e){try{return localStorage.getItem(e)===`true`}catch{return!1}}function Ze(e,t){try{localStorage.setItem(e,String(t))}catch{}}var Qe=[];function q(e){return e?A(e):``}function $e(e){if(!e)return null;let t=e.indexOf(`:`);if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+1);return n!==`orca_cloud`&&n!==`cloud`&&n!==`local`&&n!==`standard`?null:{source:n,id:r}}var et=new Intl.Collator(void 0,{sensitivity:`base`}),tt=/(\d+(?:\.\d+)?)/,nt=/\b(support|pva|bvoh|hips)\b/i;function rt(e,t){for(let n=0;n<Math.min(e.length,t.length);n++){let r=n%2?Number(e[n])-Number(t[n]):et.compare(e[n],t[n]);if(r)return r}return e.length-t.length}function it(e,t){let n=/^bambu\b/i.test(e)?0:/^generic\b/i.test(e)?1:2;return(t===`filament`&&nt.test(e)?3:0)+n}function J(e,t){return e.map(e=>({p:e,rank:it(e.name,t),parts:e.name.split(tt)})).sort((e,t)=>e.rank-t.rank||rt(e.parts,t.parts)||et.compare(e.p.name,t.p.name)).map(({p:e})=>e)}function at(e){let t=e=>({printer:J(e.printer,`printer`),process:J(e.process,`process`),filament:J(e.filament,`filament`)});return{...e,local:t(e.local),orca_cloud:t(e.orca_cloud),cloud:t(e.cloud),standard:t(e.standard)}}function ot({requestId:e,sourceName:t}){let{t:i}=n(),{showPersistentToast:a,dismissToast:o}=f(),[s,c]=(0,F.useState)(0),[l,u]=(0,F.useState)(null),d=t;try{d=decodeURIComponent(t)}catch{}(0,F.useEffect)(()=>{let e=Date.now(),t=setInterval(()=>c(Math.floor((Date.now()-e)/1e3)),1e3);return()=>clearInterval(t)},[]),(0,F.useEffect)(()=>{let t=!1,n=setInterval(async()=>{if(t)return;let n=await r.getPreviewSliceProgress(e);!t&&n&&u(n)},1e3);return()=>{t=!0,clearInterval(n)}},[e]);let p=`slice-preview-${e}`;(0,F.useEffect)(()=>{let e=l&&l.stage&&l.total_percent>0,t=Y(s);return e?a(p,i(`slice.previewWithProgress`,`Analyzing {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,{name:d,stage:l.stage,percent:Math.min(100,Math.max(0,Math.round(l.total_percent))),elapsed:t}),`loading`):a(p,i(`slice.previewToast`,{name:d,elapsed:t}),`loading`),()=>{o(p)}},[s,l,d,a,o,i,p]);let m=l?.stage,h=l?.total_percent,ee=m&&typeof h==`number`&&h>0?`${m} (${Math.min(100,Math.max(0,Math.round(h)))}%)`:i(`slice.analyzingPlateFilaments`);return(0,L.jsxs)(`div`,{className:`flex flex-col gap-1 text-bambu-gray text-sm py-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(g,{className:`w-4 h-4 animate-spin`}),ee,(0,L.jsxs)(`span`,{className:`text-xs tabular-nums`,children:[s,`s`]})]}),s>=5&&(0,L.jsx)(`div`,{className:`text-xs text-bambu-gray/70 pl-6`,children:i(`slice.analyzingPlateFilamentsHint`,`Running a preview slice to discover which AMS slots this plate uses. Cached after — re-opening is instant.`)})]})}function Y(e){let t=Math.max(0,Math.floor(e));if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;return n<60?`${n}m ${r}s`:`${Math.floor(n/60)}h ${n%60}m`}var X=`#00AE42`;function st(e){let t=(e||``).trim();return/^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(t)?t.slice(0,7).toUpperCase():X}function ct({source:e,onClose:t,defaultAutoArrange:i=!1}){let{t:a}=n(),{trackJob:o}=te(),s=c(),[d,p]=(0,F.useState)(null),[h,_]=(0,F.useState)(null),[v,b]=(0,F.useState)([]),x=(0,F.useRef)(new Set),S=(0,F.useRef)(!1),[C,w]=(0,F.useState)([]),[T,E]=(0,F.useState)(null),[O,A]=(0,F.useState)(null),[P,oe]=(0,F.useState)(!1),[I,le]=(0,F.useState)(null),[R,me]=(0,F.useState)(!1),[he,ge]=(0,F.useState)(!1),[_e,ve]=(0,F.useState)(i),[ye,xe]=(0,F.useState)(new Set),[Se,we]=(0,F.useState)({}),[Ee,De]=(0,F.useState)({}),[Oe,ke]=(0,F.useState)(!1),z=se(),B=z||Oe,Ae=l({queryKey:[`slicer-pipelines`],queryFn:()=>r.listSlicerPipelines(),staleTime:6e4}),[je,Me]=(0,F.useState)(!1),[Ne,Pe]=(0,F.useState)(``),{showToast:Fe}=f(),Ie=u({mutationFn:e=>r.createSlicerPipeline(e),onSuccess:()=>{s.invalidateQueries({queryKey:[`slicer-pipelines`]}),Fe(a(`slice.pipelines.toast.saved`,`Pipeline saved`),`success`),Me(!1),Pe(``)},onError:e=>{Fe(e.message||a(`slice.pipelines.toast.saveFailed`,`Save failed`),`error`)}}),V=l({queryKey:[`slicePlates`,e.kind,e.id],queryFn:async()=>e.kind===`libraryFile`?r.getLibraryFilePlates(e.id):r.getArchivePlates(e.id),staleTime:6e4}),Le=!!V.data?.is_multi_plate&&(V.data?.plates?.length??0)>1,Re=Le&&O==null,ze=O??1,Be=(0,F.useMemo)(()=>{let t=typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`;return`${e.kind}-${e.id}-p${ze}-${t}`},[e.kind,e.id,ze]),Ve=l({queryKey:[`sliceFilamentReqs`,e.kind,e.id,ze],queryFn:async()=>e.kind===`libraryFile`?r.getLibraryFileFilamentRequirements(e.id,ze,Be,!0):r.getArchiveFilamentRequirements(e.id,ze,Be,!0),enabled:!Re,staleTime:6e4}),H=(0,F.useMemo)(()=>{let e=Ve.data?.filaments??[],t=e.length>0?e:[{slot_id:1,type:``,color:``,used_grams:0,used_meters:0}];return P?t.map(e=>({...e,used_in_plate:!0})):t},[P,Ve.data]),U=l({queryKey:[`slicerPresets`],queryFn:()=>r.getSlicerPresets(),staleTime:6e4,enabled:!V.isLoading&&!Re}),[He,Ue]=(0,F.useState)(!1),We=async()=>{if(!He){Ue(!0);try{let e=await r.getSlicerPresets({refresh:!0});s.setQueryData([`slicerPresets`],e)}catch{s.invalidateQueries({queryKey:[`slicerPresets`]})}finally{Ue(!1)}}},Ge=(0,F.useMemo)(()=>U.data&&at(U.data),[U.data]),Ke=l({queryKey:[`slicerPrinterModels`],queryFn:r.getSlicerPrinterModels,staleTime:1/0}),W=(0,F.useMemo)(()=>!U.data||!d?null:N(U.data,d,`printer`)?.name??null,[U.data,d]),G=(0,F.useMemo)(()=>{let e={},t=U.data;if(!t)return e;for(let n of[t.local,t.orca_cloud,t.cloud,t.standard])for(let t of n.printer)t.inherits&&!Object.hasOwn(e,t.name)&&(e[t.name]=t.inherits);return e},[U.data]),K=(0,F.useMemo)(()=>D(Ke.data??{},G),[Ke.data,G]),[$e,et]=(0,F.useState)(()=>Xe(Je)),[tt,nt]=(0,F.useState)(()=>Xe(Ye)),[rt,it]=(0,F.useState)(null),J=l({queryKey:[`slicerLoadedSpools`],queryFn:r.getSlicerLoadedSpools,staleTime:15e3,retry:!1,enabled:!Re}),Y=J.data?.printers??Qe,X=(0,F.useMemo)(()=>Ke.data??{},[Ke.data]),st=(0,F.useMemo)(()=>ue(Y,de(W,X,G)),[Y,W,X,G]),ct=(0,F.useMemo)(()=>U.data?be(U.data):new Map,[U.data]),ut=(0,F.useMemo)(()=>U.data?Ce(st,U.data,ct,W,K):new Set,[st,U.data,ct,W,K]),pt=(0,F.useMemo)(()=>{if(!$e||Y.length===0)return null;let e=Y.map(e=>e.model);return t=>fe(t,e,X,G)},[$e,Y,X,G]),Z=(0,F.useMemo)(()=>!tt||ut.size===0?null:e=>ut.has(q(e)),[tt,ut]),mt=(0,F.useMemo)(()=>{let e=U.data;if(!e||!Z)return null;let t=e=>({...e,filament:e.filament.filter(Z)});return{...e,local:t(e.local),orca_cloud:t(e.orca_cloud),cloud:t(e.cloud),standard:t(e.standard)}},[U.data,Z]),ht=l({queryKey:[`slicer-preset-values`,h?.source,h?.id],queryFn:()=>r.getSlicerPresetValues(h),enabled:h!=null,staleTime:5*6e4}),gt=ht.data?.values,_t=ht.data?.resolved??ht.isLoading,vt=ht.data?.reason??(ht.isError?`sidecar_unavailable`:void 0),yt=(0,F.useMemo)(()=>{let e=U.data;return H.map((t,n)=>{let r=v[n]??null,i=e&&r?N(e,r,`filament`):null;return{index:n+1,label:i?.name||t.type||a(`slice.filamentSlotUnset`,`not set`),color:t.color||void 0}})},[H,v,U.data,a]),Q=V.data?.embedded_printer??null,bt=(0,F.useMemo)(()=>V.data?.design_overrides??[],[V.data]),xt=V.data?.embedded_process??null,St=(0,F.useMemo)(()=>{if(!Q||!xt||!W)return!1;let e=e=>e.replace(/^#\s*/,``).trim().toLowerCase();return e(W)===e(Q)},[Q,xt,W]);(0,F.useEffect)(()=>{St||me(!1)},[St]),(0,F.useEffect)(()=>{xe(R?new Set(bt.map(e=>e.key)):new Set)},[bt,R]),(0,F.useEffect)(()=>{let e=U.data;e&&(d??p(ie(e,`printer`,Q)??k(e,`printer`)))},[U.data,Q]),(0,F.useEffect)(()=>{let e=U.data;if(!e||!pt||S.current||!d||R)return;let t=N(e,d,`printer`);if(t&&pt(t))return;let n=ie(e,`printer`,Q),r=N(e,n,`printer`),i=r&&pt(r)?n:pe(e,Y.map(e=>e.model),X,G);i&&p(i)},[U.data,pt,d,Q,Y,X,G,R]),(0,F.useEffect)(()=>{let e=U.data;e&&_(t=>{if(t){let n=N(e,t,`process`);if(n&&ne(n,`process`,W,K)!==`mismatch`)return t}return ae(e,W,K,xt)})},[U.data,W,K,xt]),(0,F.useEffect)(()=>{let e=U.data;e&&b(t=>H.map((n,r)=>{let i=t[r]??null;if(i){let t=N(e,i,`filament`),a=t&&!x.current.has(r)&&M(t,n.type),o=t&&Z!==null&&!x.current.has(r)&&!Z(t);if(t&&!a&&!o&&ne(t,`filament`,W,K)!==`mismatch`)return i}let a={type:n.type,color:n.color},o=mt&&re(mt,a,W,K),s=N(e,o??null,`filament`);return o&&s&&!M(s,n.type)?o:re(e,a,W,K)}))},[U.data,H,W,K,Z,mt]),(0,F.useEffect)(()=>{w(e=>e.length===H.length?e:(x.current=new Set,H.map(()=>null)))},[H]);let Ct=u({mutationFn:async t=>{let n=wt(t);return e.kind===`libraryFile`?r.sliceLibraryFile(e.id,n):r.sliceArchive(e.id,n)},onSuccess:n=>{o(n.job_id,e.kind,e.filename),t()},onError:e=>{let t=e instanceof Error?e.message:String(e);E(t)}});function wt(e){if(!d||!h||v.length===0||v.some(e=>e==null))throw Error(a(`slice.allPresetsRequired`));return{printer_preset:d,process_preset:h,filament_preset:v[0],filament_presets:v,filament_colours:H.map((e,t)=>C[t]??e.color??``),...e==null?{}:{plate:e},...I==null?{}:{bed_type:I},...R&&St?{use_embedded_settings:!0}:{},...!R&&bt.length>0?{design_overrides:[...ye]}:{},...!R&&Object.keys(Se).length>0?{process_overrides:Ee}:{},...he?{auto_orient:!0}:{},..._e?{auto_arrange:!0}:{}}}let Tt=d!=null&&h!=null&&Ve.isSuccess&&v.length>0&&v.every(e=>e!=null),$=Ct.isPending,Et=V.data?.plates?.length??0,Dt=Le&&Et>1&&!Re;return Re&&V.data?(0,L.jsx)(ce,{plates:V.data.plates,onSelect:e=>A(e),onClose:t}):(0,L.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4`,onClick:()=>{$||t()},children:[(0,L.jsxs)(`div`,{className:`w-full max-w-xl lg:max-w-5xl xl:max-w-7xl 2xl:max-w-[96rem] max-h-[85vh] flex flex-col rounded-lg bg-bambu-dark-secondary border border-bambu-dark-tertiary/60`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`flex-shrink-0 flex items-start justify-between gap-3 px-4 pt-4 pb-3 border-b border-bambu-dark-tertiary/40`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsxs)(`h3`,{className:`text-white font-medium flex items-center gap-2`,children:[(0,L.jsx)(m,{className:`w-4 h-4`}),a(`slice.title`)]}),(0,L.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-1 truncate`,title:e.filename,children:[e.filename,O==null?``:` • ${a(`archives.platePicker.plateLabel`,{index:O})}`]})]}),(0,L.jsx)(`button`,{onClick:t,disabled:$,className:`flex-shrink-0 text-bambu-gray hover:text-white transition-colors disabled:opacity-50`,"aria-label":a(`common.close`),children:(0,L.jsx)(y,{className:`w-5 h-5`})})]}),(0,L.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(V.isLoading||U.isLoading)&&(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray text-sm`,children:[(0,L.jsx)(g,{className:`w-4 h-4 animate-spin`}),a(`slice.loadingPresets`)]}),U.isError&&(0,L.jsx)(`div`,{className:`text-sm text-red-700 dark:text-red-400`,role:`alert`,children:a(`slice.presetsLoadFailed`,`Failed to load presets. Open Settings → Profiles to import them, or sign in to Bambu Cloud.`)}),U.data&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,L.jsx)(lt,{status:U.data.cloud_status,cloudName:`bambu`}),(0,L.jsx)(lt,{status:U.data.orca_cloud_status,cloudName:`orca`})]}),(0,L.jsxs)(`button`,{type:`button`,onClick:We,disabled:He||$,className:`flex-shrink-0 inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs text-bambu-gray hover:text-white hover:bg-bambu-dark-tertiary/40 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,title:a(`slice.refreshPresetsTitle`),"aria-label":a(`slice.refreshPresets`),children:[(0,L.jsx)(ee,{className:`w-3.5 h-3.5 ${He?`animate-spin`:``}`}),a(`slice.refreshPresets`)]})]}),(0,L.jsxs)(`div`,{className:`lg:grid lg:grid-cols-[minmax(20rem,2fr)_minmax(0,3fr)] lg:gap-5 lg:items-start`,children:[(0,L.jsxs)(`div`,{className:`space-y-4 min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 px-2 py-1.5 rounded-md bg-bambu-dark/40 border border-bambu-dark-tertiary`,children:[(0,L.jsxs)(`span`,{className:`text-xs font-medium text-bambu-gray flex items-center gap-1`,children:[(0,L.jsx)(m,{className:`w-3.5 h-3.5`}),` `,a(`slice.pipelines.label`,`Pipeline`)]}),(0,L.jsxs)(`select`,{value:``,disabled:$||(Ae.data?.pipelines.length??0)===0,onChange:e=>{let t=parseInt(e.target.value,10);if(Number.isNaN(t))return;let n=Ae.data?.pipelines.find(e=>e.id===t);if(!n)return;let r=e=>U.data?j(U.data,e):e;S.current=!0,p(r(n.printer_preset)),_(r(n.process_preset)),le(n.bed_type),b(e=>{let t=e.length>0?[...e]:n.filament_presets.map(()=>null);for(let e=0;e<t.length;e++)e<n.filament_presets.length&&(t[e]=r(n.filament_presets[e]),x.current.add(e));return t}),Fe(a(`slice.pipelines.toast.applied`,`Applied "{{name}}"`,{name:n.name}),`success`),e.target.value=``},className:`text-xs px-2 py-1 bg-bambu-dark border border-bambu-dark-tertiary rounded text-white disabled:opacity-50 disabled:cursor-not-allowed flex-1 min-w-[10ch]`,"aria-label":a(`slice.pipelines.applyAria`,`Apply pipeline`),children:[(0,L.jsx)(`option`,{value:``,children:(Ae.data?.pipelines.length??0)===0?a(`slice.pipelines.empty`,`No saved pipelines`):a(`slice.pipelines.applyPrompt`,`Apply pipeline…`)}),Ae.data?.pipelines.map(e=>(0,L.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),je?(0,L.jsxs)(`div`,{className:`flex items-center gap-1 flex-1 min-w-[16ch]`,children:[(0,L.jsx)(`input`,{autoFocus:!0,value:Ne,onChange:e=>Pe(e.target.value),placeholder:a(`slice.pipelines.namePlaceholder`,`Pipeline name`),"aria-label":a(`slice.pipelines.nameAria`,`New pipeline name`),className:`flex-1 text-xs px-2 py-1 bg-bambu-dark border border-bambu-dark-tertiary rounded text-white`}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>{let e=Ne.trim();if(!e||!d||!h)return;let t=v.filter(e=>e!==null);t.length!==0&&Ie.mutate({name:e,printer_preset:d,process_preset:h,filament_presets:t,bed_type:I})},disabled:Ie.isPending||!Ne.trim(),className:`text-xs px-2 py-1 bg-bambu-green hover:bg-bambu-green/80 text-white rounded disabled:opacity-50`,children:Ie.isPending?(0,L.jsx)(g,{className:`w-3 h-3 animate-spin`}):a(`common.save`,`Save`)}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>{Me(!1),Pe(``)},className:`text-xs px-2 py-1 text-bambu-gray hover:text-white`,children:a(`common.cancel`,`Cancel`)})]}):(0,L.jsx)(`button`,{type:`button`,onClick:()=>{Pe(``),Me(!0)},disabled:$||!d||!h||v.length===0||v.some(e=>e===null),className:`text-xs px-2 py-1 bg-bambu-green/20 hover:bg-bambu-green/30 text-bambu-green border border-bambu-green/40 rounded disabled:opacity-50 disabled:cursor-not-allowed`,title:a(`slice.pipelines.saveTitle`,`Save the current four-slot selection as a reusable pipeline`),children:a(`slice.pipelines.saveButton`,`Save as pipeline`)})]}),J.isSuccess&&(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-bambu-gray cursor-pointer select-none`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:$e,onChange:e=>{et(e.target.checked),Ze(Je,e.target.checked)},disabled:$,className:`mt-0.5 cursor-pointer`}),(0,L.jsxs)(`span`,{children:[a(`slice.filters.onlyConnectedModels`,`Only printers that are online`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:a(`slice.filters.onlyConnectedModelsHint`,`Printer profiles for the models online right now, at every nozzle size.`)})]})]}),(0,L.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-bambu-gray cursor-pointer select-none`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:tt,onChange:e=>{nt(e.target.checked),Ze(Ye,e.target.checked)},disabled:$,className:`mt-0.5 cursor-pointer`}),(0,L.jsxs)(`span`,{children:[a(`slice.filters.onlyLoadedSpools`,`Only spools that are loaded`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:a(`slice.filters.onlyLoadedSpoolsHint`,`Filament profiles of the spools in the online printers of the selected model. A profile you pick yourself stays.`)})]})]}),($e||tt)&&Y.length===0&&(0,L.jsx)(`p`,{className:`text-xs text-bambu-gray/70`,role:`status`,children:a(`slice.filters.noneOnline`,`No printer is online, so every profile is shown.`)}),tt&&Y.length>0&&ut.size===0&&(0,L.jsx)(`p`,{className:`text-xs text-bambu-gray/70`,role:`status`,children:a(`slice.filters.noneLoaded`,`No loaded spool has a profile for this printer, so every filament profile is shown.`)})]}),(0,L.jsx)(ft,{label:a(`slice.printer`),slot:`printer`,data:Ge??U.data,value:d,onChange:e=>{S.current=!0,p(e)},allowed:pt,filteredLabel:a(`slice.filters.notOnline`,`Not online`),disabled:$||R}),St&&(0,L.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-bambu-gray cursor-pointer select-none`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:R,onChange:e=>me(e.target.checked),disabled:$,className:`mt-0.5 cursor-pointer`}),(0,L.jsxs)(`span`,{children:[a(`slice.useEmbedded`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:a(`slice.useEmbeddedHint`)})]})]}),(0,L.jsx)(ft,{label:a(`slice.process`),slot:`process`,data:Ge??U.data,value:h,onChange:_,disabled:$||R,selectedPrinterName:W,compatIndex:K}),(0,L.jsx)(dt,{value:I,onChange:le,disabled:$||R}),(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-bambu-gray cursor-pointer select-none`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:he,onChange:e=>ge(e.target.checked),disabled:$,className:`mt-0.5 cursor-pointer`}),(0,L.jsxs)(`span`,{children:[a(`slice.autoOrient`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:a(`slice.autoOrientHint`)})]})]}),(0,L.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-bambu-gray cursor-pointer select-none`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:_e,onChange:e=>ve(e.target.checked),disabled:$,className:`mt-0.5 cursor-pointer`}),(0,L.jsxs)(`span`,{children:[a(`slice.autoArrange`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:a(`slice.autoArrangeHint`)})]})]})]}),Ve.isLoading?(0,L.jsx)(ot,{requestId:Be,sourceName:e.filename}):H.map((e,t)=>{let n=e.used_in_plate!==!1,r=H.length>1?a(`slice.filamentSlot`,{index:t+1,type:e.type}):a(`slice.filament`);return(0,L.jsx)(ft,{label:n?r:`${r} ${a(`slice.notUsedByPlate`)}`,slot:`filament`,data:Ge??U.data,value:v[t]??null,onChange:e=>{x.current.add(t),b(n=>{let r=n.length===H.length?[...n]:H.map((e,t)=>n[t]??null);return r[t]=e,r})},disabled:$||!n||R,swatchColor:C[t]??e.color,swatchColorLabel:a(`slice.filamentColour`),onSwatchColorChange:e=>w(n=>{let r=n.length===H.length?[...n]:H.map((e,t)=>n[t]??null);return r[t]=e,r}),selectedPrinterName:W,compatIndex:K,allowed:Z,filteredLabel:a(`slice.filters.notLoaded`,`Not loaded`),onPick:Y.length>0?()=>it(t):void 0},`filament-${t}`)})]}),(0,L.jsx)(`div`,{className:`mt-4 lg:mt-0 min-w-0`,children:(0,L.jsxs)(`div`,{className:`rounded border border-bambu-dark-tertiary p-3 ${R?`opacity-60`:``}`,children:[(0,L.jsxs)(`button`,{type:`button`,onClick:()=>ke(e=>!e),"aria-expanded":B,disabled:z,className:`flex w-full items-center justify-between gap-2 text-left lg:cursor-default`,children:[(0,L.jsxs)(`span`,{className:`text-sm text-white`,children:[a(`slice.processSettings`,`Process settings`),(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray/70`,children:R?a(`slice.processSettingsEmbedded`,`Not used while "Use the file's built-in settings" is on -- the file's own settings drive this slice.`):a(`slice.processSettingsHint`,`Adjust the picked preset for this slice. Anything you don't touch stays as the preset defines it.`)})]}),(0,L.jsx)(`span`,{className:`shrink-0 text-xs text-bambu-gray`,children:R?a(`slice.processSettingsInactive`,`Inactive`):Object.keys(Ee).length>0?a(`slice.processSettingsChanged`,`{{count}} changed`,{count:Object.keys(Ee).length}):a(`slice.processSettingsUnchanged`,`Preset defaults`)})]}),B&&(0,L.jsx)(`div`,{className:`mt-3 border-t border-bambu-dark-tertiary pt-3`,children:(0,L.jsx)(qe,{values:Se,onChange:(e,t)=>{we(e),De(t)},disabled:$||R,filamentChoices:yt,presetValues:gt,presetValuesResolved:_t,presetValuesReason:vt,sourceOverrides:bt,sourceSelected:ye,onToggleSource:(e,t)=>xe(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})})})]})})]})]}),T&&(0,L.jsx)(`div`,{className:`text-sm text-red-700 dark:text-red-400 bg-red-900/20 border border-red-900/40 rounded p-2`,role:`alert`,children:T})]}),(0,L.jsxs)(`div`,{className:`flex-shrink-0 flex justify-end gap-2 px-4 py-3 border-t border-bambu-dark-tertiary/40`,children:[(0,L.jsx)(`button`,{type:`button`,onClick:t,disabled:$,className:`px-3 py-1.5 text-sm rounded-md border border-bambu-dark-tertiary text-bambu-gray hover:text-white hover:border-bambu-gray transition-colors disabled:opacity-50`,children:a(`common.cancel`)}),Dt&&(0,L.jsxs)(`label`,{className:`flex items-center gap-2 mr-auto text-sm text-bambu-gray cursor-pointer select-none`,title:a(`slice.actionAllTitle`,{count:Et}),children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>oe(e.target.checked),disabled:$,className:`cursor-pointer`}),a(`slice.allPlatesToggle`,{count:Et})]}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>{E(null);let e=P?0:O;Ct.mutate(e)},disabled:!Tt||$,className:`px-3 py-1.5 text-sm rounded-md bg-bambu-green hover:bg-bambu-green/90 text-bambu-dark font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2`,children:$?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(g,{className:`w-4 h-4 animate-spin`}),a(`slice.enqueuing`)]}):P?a(`slice.actionAll`,{count:Et}):a(`slice.action`)})]})]}),rt!==null&&U.data&&H[rt]&&(0,L.jsx)(`div`,{onClick:e=>e.stopPropagation(),children:(0,L.jsx)(Te,{printers:st,data:U.data,index:ct,selectedPrinterName:W,compatIndex:K,slotLabel:H.length>1?a(`slice.filamentSlot`,{index:rt+1,type:H[rt].type}):a(`slice.filament`),onClose:()=>it(null),onPick:(e,t)=>{let n=rt;x.current.add(n),b(t=>{let r=t.length===H.length?[...t]:H.map((e,n)=>t[n]??null);return r[n]=e.ref,r}),t&&w(e=>{let r=e.length===H.length?[...e]:H.map((t,n)=>e[n]??null);return r[n]=t,r}),it(null)}})})]})}function lt({status:e,cloudName:t=`bambu`}){let{t:r}=n();if(e===`ok`||e===`not_authenticated`)return null;let i=t===`orca`?{expired:{key:`slice.orcaCloud.expired`,fallback:`Orca Cloud session expired — sign in again to refresh your Orca presets.`},unreachable:{key:`slice.orcaCloud.unreachable`,fallback:`Orca Cloud is unreachable right now. Other presets still work.`}}:{expired:{key:`slice.cloud.expired`,fallback:`Bambu Cloud session expired — sign in again to refresh your cloud presets.`},unreachable:{key:`slice.cloud.unreachable`,fallback:`Bambu Cloud is unreachable right now. Local and standard presets still work.`}},{tone:a,icon:o}={expired:{tone:`border-amber-300 dark:border-amber-700/40 bg-amber-50 dark:bg-amber-900/20 text-amber-800 dark:text-amber-200`,icon:p},unreachable:{tone:`border-bambu-dark-tertiary/40 bg-bambu-dark text-bambu-gray`,icon:p}}[e],{key:s,fallback:c}=i[e];return(0,L.jsxs)(`div`,{className:`flex items-start gap-2 text-xs rounded-md border p-2 ${a}`,role:`status`,children:[(0,L.jsx)(o,{className:`w-4 h-4 flex-shrink-0 mt-0.5`}),(0,L.jsx)(`span`,{children:r(s,c)})]})}var ut=[{value:`Cool Plate`,labelKey:`slice.bedType.coolPlate`,fallback:`Cool Plate`},{value:`Supertack Plate`,labelKey:`slice.bedType.coolPlateSuperTack`,fallback:`Cool Plate SuperTack`},{value:`Engineering Plate`,labelKey:`slice.bedType.engineering`,fallback:`Engineering Plate`},{value:`High Temp Plate`,labelKey:`slice.bedType.highTemp`,fallback:`Smooth PEI Plate / High Temp Plate`},{value:`Textured PEI Plate`,labelKey:`slice.bedType.texturedPEI`,fallback:`Textured PEI Plate`}];function dt({value:e,onChange:t,disabled:r}){let{t:i}=n();return(0,L.jsxs)(`label`,{className:`block`,children:[(0,L.jsx)(`span`,{className:`block text-xs text-bambu-gray mb-1`,children:i(`slice.bedType.label`)}),(0,L.jsxs)(`select`,{value:e??``,onChange:e=>t(e.target.value===``?null:e.target.value),disabled:r,className:`flex-1 min-w-0 px-3 py-2 rounded-md bg-bambu-dark border border-bambu-dark-tertiary text-white text-sm focus:outline-none focus:border-bambu-gray disabled:opacity-50`,children:[(0,L.jsx)(`option`,{value:``,children:i(`slice.bedType.auto`)}),e&&!ut.some(t=>t.value===e)&&(0,L.jsx)(`option`,{value:e,children:e}),ut.map(e=>(0,L.jsx)(`option`,{value:e.value,children:i(e.labelKey,e.fallback)},e.value))]})]})}function ft({label:e,slot:t,data:r,value:i,onChange:a,disabled:o,swatchColor:s,onSwatchColorChange:c,swatchColorLabel:l,selectedPrinterName:u,compatIndex:d,allowed:f,filteredLabel:p,onPick:m}){let{t:h}=n(),[g,ee]=(0,F.useState)(!1),_=(0,F.useId)(),y=`${_}-colour`,[b,x]=(0,F.useState)(!1),[S,C]=(0,F.useState)(``),w=(0,F.useRef)(null),T=q(i),{sections:te,otherEntries:E,filteredEntries:D}=(0,F.useMemo)(()=>{let e=[{key:`local`,label:`slice.tier.local`,fallback:`Imported`},{key:`orca_cloud`,label:`slice.tier.orcaCloud`,fallback:`Orca Cloud`},{key:`cloud`,label:`slice.tier.cloud`,fallback:`Bambu Cloud`},{key:`standard`,label:`slice.tier.standard`,fallback:`Standard`}],n=t!==`printer`,i=[],a=[],o=[];for(let{key:s,label:c,fallback:l}of e){let e=r[s][t];if(e.length>0&&a.push({tierLabel:h(c,l),entries:e}),!n){e.length>0&&i.push({tierLabel:h(c,l),entries:e});continue}let f=[];for(let n of e)ne(n,t,u??null,d??O)===`mismatch`?o.push(n):f.push(n);f.length>0&&i.push({tierLabel:h(c,l),entries:f})}if(i.length===0&&o.length>0)return{sections:a,otherEntries:[],filteredEntries:[]};if(f){let e=[],t=[];for(let n of i){let r=n.entries.filter(e=>f(e)?!0:(t.push(e),!1));r.length>0&&e.push({tierLabel:n.tierLabel,entries:r})}if(e.length>0)return{sections:e,otherEntries:o,filteredEntries:t}}return{sections:i,otherEntries:o,filteredEntries:[]}},[r,t,h,u,d,f]),k=b?S.toLowerCase().split(/\s+/).filter(Boolean):[],A=g||k.length>0,j=(0,F.useMemo)(()=>A?J(E,t):E.filter(e=>q(e)===T),[A,E,t,T]),M=(0,F.useMemo)(()=>A?J(D,t):D.filter(e=>q(e)===T),[A,D,t,T]),N=E.length-j.length+D.length-M.length,re=te.reduce((e,t)=>e+t.entries.length,0)+j.length+M.length,ie=()=>{x(!1),C(``)},ae=e=>k.every(t=>e.name.toLowerCase().includes(t)),P=e=>ae(e)||q(e)===T,I=k.length>0&&!te.some(e=>e.entries.some(ae))&&!M.some(ae)&&!j.some(ae),se=k.length?te.map(e=>({tierLabel:e.tierLabel,entries:e.entries.filter(P)})).filter(e=>e.entries.length>0):te,ce=k.length?M.filter(P):M,le=k.length?j.filter(P):j;return(0,L.jsxs)(`div`,{className:`block`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-bambu-gray mb-1`,children:[!c&&s&&(0,L.jsx)(`span`,{className:`inline-block w-3 h-3 rounded-full border border-bambu-dark-tertiary`,style:{backgroundColor:s},"aria-hidden":!0}),(0,L.jsx)(`label`,{htmlFor:_,children:e}),(0,L.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 font-normal`,children:[N>0&&(0,L.jsx)(`span`,{className:`text-bambu-gray/60`,children:h(`slice.presetsHidden`,`{{count}} hidden`,{count:N})}),(N>0||g)&&(0,L.jsx)(`button`,{type:`button`,onClick:()=>ee(e=>!e),disabled:o,className:`text-bambu-green hover:underline disabled:opacity-50 disabled:no-underline`,children:g?h(`slice.showFewerPresets`,`Show fewer`):h(`slice.showAllPresets`,`Show all`)}),(0,L.jsx)(`button`,{ref:w,type:`button`,onClick:()=>b?ie():x(!0),disabled:o,"aria-label":`${e}: ${b?h(`slice.closeSearch`,`Close search`):h(`common.search`,`Search`)}`,title:b?h(`slice.closeSearch`,`Close search`):h(`common.search`,`Search`),className:`hover:text-white disabled:opacity-50 ${b?`text-bambu-green`:``}`,children:(0,L.jsx)(v,{className:`w-3.5 h-3.5`})})]})]}),b&&(0,L.jsx)(`input`,{type:`search`,value:S,onChange:e=>C(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(ie(),w.current?.focus())},autoFocus:!0,disabled:o,placeholder:h(`slice.searchPresets`,`Search presets...`),"aria-label":`${e}: ${h(`slice.searchPresets`,`Search presets...`)}`,className:`w-full px-3 py-1.5 mb-1 rounded-md bg-bambu-dark border border-bambu-dark-tertiary text-white text-sm placeholder:text-bambu-gray focus:outline-none focus:border-bambu-gray disabled:opacity-50`}),b&&(0,L.jsx)(`p`,{role:`status`,className:I?`text-xs text-bambu-gray mb-1`:`sr-only`,children:I?h(`slice.noMatchingPresets`,`No matching presets found.`):``}),(0,L.jsxs)(`div`,{className:`flex items-stretch gap-2`,children:[(0,L.jsxs)(`select`,{id:_,value:T,onChange:e=>a($e(e.target.value)),disabled:o||re===0,className:`w-full px-3 py-2 rounded-md bg-bambu-dark border border-bambu-dark-tertiary text-white text-sm focus:outline-none focus:border-bambu-gray disabled:opacity-50`,children:[(0,L.jsx)(`option`,{value:``,children:h(re===0?`slice.noPresetsForSlot`:`slice.selectPreset`)}),se.map(e=>(0,L.jsx)(`optgroup`,{label:e.tierLabel,children:e.entries.map(e=>(0,L.jsx)(`option`,{value:q(e),children:e.name},q(e)))},e.tierLabel)),ce.length>0&&(0,L.jsx)(`optgroup`,{label:p??h(`slice.otherPrinters`),children:ce.map(e=>(0,L.jsx)(`option`,{value:q(e),children:e.name},q(e)))}),le.length>0&&(0,L.jsx)(`optgroup`,{label:h(`slice.otherPrinters`),children:le.map(e=>(0,L.jsx)(`option`,{value:q(e),children:e.name},q(e)))})]}),c&&(0,L.jsxs)(`label`,{htmlFor:y,title:l,className:`flex items-center gap-2 px-2.5 rounded-md bg-bambu-dark border border-bambu-dark-tertiary text-sm ${o?`opacity-50 cursor-not-allowed`:`cursor-pointer hover:border-bambu-gray transition-colors`}`,children:[(0,L.jsx)(`input`,{id:y,type:`color`,value:st(s),onChange:e=>c(e.target.value.toUpperCase()),disabled:o,"aria-label":l,style:{backgroundColor:st(s)},className:`slice-colour-swatch w-4 h-4 shrink-0 rounded-full border border-bambu-dark-tertiary p-0 disabled:cursor-not-allowed enabled:cursor-pointer`}),(0,L.jsx)(`span`,{className:`font-mono text-xs text-white tracking-tight`,children:st(s)})]}),m&&(0,L.jsxs)(`button`,{type:`button`,onClick:m,disabled:o,title:h(`slice.loadedSpools.pickTitle`,`Pick a spool loaded in a connected printer`),className:`flex items-center gap-1.5 px-2.5 rounded-md bg-bambu-dark border border-bambu-dark-tertiary text-sm text-bambu-gray transition-colors enabled:hover:text-white enabled:hover:border-bambu-gray disabled:opacity-50 disabled:cursor-not-allowed`,children:[(0,L.jsx)(oe,{className:`w-4 h-4`,"aria-hidden":!0}),h(`slice.loadedSpools.pick`,`Pick`)]})]})]})}export{ce as n,ct as t};