@tscircuit/runframe 0.0.1347 → 0.0.1349

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5755,7 +5755,7 @@ You passed in: '`+this.raw_options[o]+"'");return a},t.prototype._is_valid_selec
5755
5755
  `);break}}return s}}}),o6e=Hl({"node_modules/pretty/index.js"(e,A){var t=$ze(),i=n6e(),n=Hut(),o={unformatted:["code","pre","em","strong","span"],indent_inner_html:!0,indent_char:" ",indent_size:2,sep:`
5756
5756
  `};A.exports=function(a,g){var c=n({},o,g);return a=t.html(a,c),c.ocd===!0?(c.newlines&&(c.sep=c.newlines),s(a,c)):a};function s(r,a){return i(r,a).replace(/^\s+/g,"").replace(/\s+$/g,`
5757
5757
  `).replace(/(\s*<!--)/g,`
5758
- $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function Yut(e,A,t){if(!A||!t)return;let i=e.get(A);i||(i=new Set,e.set(A,i)),i.add(t);let n=e.get(t);n||(n=new Set,e.set(t,n)),n.add(A)}function s6e(e,A){if(!A.subcircuit_id&&!A.source_group_id)return[...e];const t=new Map;for(const s of e){const r=s[`${s.type}_id`];typeof r=="string"&&t.set(r,s)}const i=new Map;for(const s of e){const r=Object.entries(s);for(const[a,g]of r)if(a!=="parent_source_group_id"){if(a.endsWith("_id")&&typeof g=="string"){const c=t.get(g);Yut(i,s,c)}else if(a.endsWith("_ids")&&Array.isArray(g)){for(const c of g)if(typeof c=="string"){const I=t.get(c);Yut(i,s,I)}}}}const n=[],o=new Set;for(const s of e)(A.subcircuit_id&&s.subcircuit_id===A.subcircuit_id||A.source_group_id&&(s.source_group_id===A.source_group_id||Array.isArray(s.member_source_group_ids)&&s.member_source_group_ids.includes(A.source_group_id)))&&(n.push(s),o.add(s));for(;n.length>0;){const s=n.shift(),r=i.get(s);if(r)for(const a of r)o.has(a)||(o.add(a),n.push(a))}return e.filter(s=>o.has(s))}var dz=(e,A={})=>{const t=e;let i=t._internal_store;if(!i){i={counts:{},editCount:0},t._internal_store=i;for(const o of t){const s=o.type,r=o[`${s}_id`];if(!r)continue;const a=Number.parseInt(r.split("_").pop());Number.isNaN(a)||(i.counts[s]=Math.max(i.counts[s]??0,a))}}return new Proxy({},{get:(o,s)=>{if(s==="toArray")return()=>(t.editCount=i.editCount,t);if(s==="editCount")return i.editCount;if(s==="subtree")return a=>dz(s6e(t,a),A);const r=s;return{get:a=>t.find(g=>g.type===r&&g[`${r}_id`]===a),getUsing:a=>{const g=Object.keys(a);if(g.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const c=g[0],I=c.replace("_id",""),l=t.find(B=>B.type===I&&B[c]===a[c]);return l?t.find(B=>B.type===r&&B[`${r}_id`]===l[`${r}_id`]):null},getWhere:a=>{const g=Object.keys(a);return t.find(c=>c.type===r&&g.every(I=>c[I]===a[I]))},list:a=>{const g=a?Object.keys(a):[];return t.filter(c=>c.type===r&&g.every(I=>c[I]===a[I]))},insert:a=>{i.counts[r]??=-1,i.counts[r]++;const g=i.counts[r],c={type:r,[`${r}_id`]:`${r}_${g}`,...a};return A.validateInserts&&(PQt[r]??UwA).parse(c),t.push(c),i.editCount++,c},delete:a=>{const g=t.find(c=>c[`${r}_id`]===a);g&&(t.splice(t.indexOf(g),1),i.editCount++)},update:(a,g)=>{const c=t.find(I=>I.type===r&&I[`${r}_id`]===a);return c?(Object.assign(c,g),i.editCount++,c):null},select:a=>{if(r==="source_component")return t.find(g=>g.type==="source_component"&&g.name===a.replace(/\./g,""));if(r==="pcb_port"||r==="source_port"||r==="schematic_port"){const[g,c]=a.replace(/\./g,"").split(/[\s\>]+/),I=t.find(B=>B.type==="source_component"&&B.name===g);if(!I)return null;const l=t.find(B=>B.type==="source_port"&&B.source_component_id===I.source_component_id&&(B.name===c||(B.port_hints??[]).includes(c)));if(!l)return null;if(r==="source_port")return l;if(r==="pcb_port")return t.find(B=>B.type==="pcb_port"&&B.source_port_id===l.source_port_id);if(r==="schematic_port")return t.find(B=>B.type==="schematic_port"&&B.source_port_id===l.source_port_id)}}}}})};dz.unparsed=dz;var _k=dz;function gDA(e){const A=e.type;return`${A}:${e[`${A}_id`]}`}var Jut=(e,A={})=>{let t=e._internal_store_indexed;if(!t){t={counts:{},editCount:0,indexes:{}};for(const s of e){const r=s.type,a=s[`${r}_id`];if(!a)continue;const g=Number.parseInt(a.split("_").pop()||"");Number.isNaN(g)||(t.counts[r]=Math.max(t.counts[r]??0,g))}const n=A.indexConfig||{},o=t.indexes;if(n.byId&&(o.byId=new Map),n.byType&&(o.byType=new Map),n.byRelation&&(o.byRelation=new Map),n.bySubcircuit&&(o.bySubcircuit=new Map),n.byCustomField&&n.byCustomField.length>0){o.byCustomField=new Map;for(const s of n.byCustomField)o.byCustomField.set(s,new Map)}for(const s of e){if(n.byId){const r=gDA(s);o.byId.set(r,s)}if(n.byType){const r=o.byType.get(s.type)||[];r.push(s),o.byType.set(s.type,r)}if(n.byRelation){const r=Object.entries(s);for(const[a,g]of r)if(a.endsWith("_id")&&a!==`${s.type}_id`&&typeof g=="string"){const c=o.byRelation.get(a)||new Map,I=c.get(g)||[];I.push(s),c.set(g,I),o.byRelation.set(a,c)}}if(n.bySubcircuit&&"subcircuit_id"in s){const r=s.subcircuit_id;if(r&&typeof r=="string"){const a=o.bySubcircuit.get(r)||[];a.push(s),o.bySubcircuit.set(r,a)}}if(n.byCustomField&&o.byCustomField){for(const r of n.byCustomField)if(r in s){const a=s[r];if(a!==void 0&&(typeof a=="string"||typeof a=="number")){const g=String(a),c=o.byCustomField.get(r),I=c.get(g)||[];I.push(s),c.set(g,I)}}}}e._internal_store_indexed=t}return new Proxy({},{get:(n,o)=>{if(o==="toArray")return()=>(e.editCount=t.editCount,e);if(o==="editCount")return t.editCount;const s=o;return{get:r=>{const a=A.indexConfig||{};return a.byId&&t.indexes.byId?t.indexes.byId.get(`${s}:${r}`)||null:a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(c=>c[`${s}_id`]===r)||null:e.find(g=>g.type===s&&g[`${s}_id`]===r)||null},getUsing:r=>{const a=A.indexConfig||{},g=Object.keys(r);if(g.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const c=g[0],I=c.replace("_id","");if(a.byRelation&&t.indexes.byRelation){const B=t.indexes.byRelation.get(c);if(B){const h=(B.get(r[c])||[]).find(E=>E.type===I);if(!h)return null;const u=h[`${s}_id`];return a.byId&&t.indexes.byId?t.indexes.byId.get(`${s}:${u}`)||null:a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(p=>p[`${s}_id`]===u)||null:e.find(E=>E.type===s&&E[`${s}_id`]===u)||null}}const l=e.find(B=>B.type===I&&B[c]===r[c]);return l&&e.find(B=>B.type===s&&B[`${s}_id`]===l[`${s}_id`])||null},getWhere:r=>{const a=A.indexConfig||{},g=Object.keys(r);if(g.length===1&&a.byCustomField&&t.indexes.byCustomField){const c=g[0],I=t.indexes.byCustomField.get(c);if(I){const l=String(r[c]);return(I.get(l)||[]).find(C=>C.type===s)||null}}if("subcircuit_id"in r&&a.bySubcircuit&&t.indexes.bySubcircuit){const c=r.subcircuit_id;return(t.indexes.bySubcircuit.get(c)||[]).find(l=>l.type===s&&g.every(B=>l[B]===r[B]))||null}return a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(I=>g.every(l=>I[l]===r[l]))||null:e.find(c=>c.type===s&&g.every(I=>c[I]===r[I]))||null},list:r=>{const a=A.indexConfig||{},g=r?Object.keys(r):[];if(g.length===0&&a.byType&&t.indexes.byType)return t.indexes.byType.get(s)||[];if(g.length===1&&g[0]==="subcircuit_id"&&a.bySubcircuit&&t.indexes.bySubcircuit){const I=r.subcircuit_id;return(t.indexes.bySubcircuit.get(I)||[]).filter(B=>B.type===s)}let c;return a.byType&&t.indexes.byType?c=t.indexes.byType.get(s)||[]:c=e.filter(I=>I.type===s),g.length>0?c.filter(I=>g.every(l=>I[l]===r[l])):c},insert:r=>{t.counts[s]??=-1,t.counts[s]++;const a=t.counts[s],g={type:s,[`${s}_id`]:`${s}_${a}`,...r};A.validateInserts&&(PQt[s]??UwA).parse(g),e.push(g),t.editCount++;const c=A.indexConfig||{};if(c.byId&&t.indexes.byId){const I=gDA(g);t.indexes.byId.set(I,g)}if(c.byType&&t.indexes.byType){const I=t.indexes.byType.get(s)||[];I.push(g),t.indexes.byType.set(s,I)}if(c.byRelation&&t.indexes.byRelation){const I=Object.entries(g);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${g.type}_id`&&typeof B=="string"){const C=t.indexes.byRelation.get(l)||new Map,h=C.get(B)||[];h.push(g),C.set(B,h),t.indexes.byRelation.set(l,C)}}if(c.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in g){const I=g.subcircuit_id;if(I&&typeof I=="string"){const l=t.indexes.bySubcircuit.get(I)||[];l.push(g),t.indexes.bySubcircuit.set(I,l)}}if(c.byCustomField&&t.indexes.byCustomField){for(const I of c.byCustomField)if(I in g){const l=g[I];if(l!==void 0&&(typeof l=="string"||typeof l=="number")){const B=String(l),C=t.indexes.byCustomField.get(I),h=C.get(B)||[];h.push(g),C.set(B,h)}}}return g},delete:r=>{const a=A.indexConfig||{};let g;if(a.byId&&t.indexes.byId?g=t.indexes.byId.get(`${s}:${r}`):a.byType&&t.indexes.byType?g=(t.indexes.byType.get(s)||[]).find(l=>l[`${s}_id`]===r):g=e.find(I=>I[`${s}_id`]===r),!g)return;const c=e.indexOf(g);if(c>=0&&(e.splice(c,1),t.editCount++),a.byId&&t.indexes.byId){const I=gDA(g);t.indexes.byId.delete(I)}if(a.byType&&t.indexes.byType){const l=(t.indexes.byType.get(s)||[]).filter(B=>B[`${s}_id`]!==r);t.indexes.byType.set(s,l)}if(a.byRelation&&t.indexes.byRelation)for(const[I,l]of t.indexes.byRelation.entries())for(const[B,C]of l.entries()){const h=C.filter(u=>u!==g);h.length===0?l.delete(B):l.set(B,h)}if(a.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in g){const I=g.subcircuit_id;if(I){const B=(t.indexes.bySubcircuit.get(I)||[]).filter(C=>C!==g);B.length===0?t.indexes.bySubcircuit.delete(I):t.indexes.bySubcircuit.set(I,B)}}if(a.byCustomField&&t.indexes.byCustomField)for(const I of t.indexes.byCustomField.values())for(const[l,B]of I.entries()){const C=B.filter(h=>h!==g);C.length===0?I.delete(l):I.set(l,C)}},update:(r,a)=>{const g=A.indexConfig||{};let c;if(g.byId&&t.indexes.byId?c=t.indexes.byId.get(`${s}:${r}`):g.byType&&t.indexes.byType?c=(t.indexes.byType.get(s)||[]).find(l=>l[`${s}_id`]===r):c=e.find(I=>I.type===s&&I[`${s}_id`]===r),!c)return null;if(g.byRelation&&t.indexes.byRelation){const I=Object.entries(c);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${c.type}_id`&&typeof B=="string"&&l in a&&a[l]!==B){const C=t.indexes.byRelation.get(l);if(C){const u=(C.get(B)||[]).filter(E=>E!==c);u.length===0?C.delete(B):C.set(B,u)}}}if(g.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in c&&"subcircuit_id"in a){const I=c.subcircuit_id,l=a.subcircuit_id;if(I!==l){const C=(t.indexes.bySubcircuit.get(I)||[]).filter(h=>h!==c);C.length===0?t.indexes.bySubcircuit.delete(I):t.indexes.bySubcircuit.set(I,C)}}if(g.byCustomField&&t.indexes.byCustomField){for(const I of g.byCustomField)if(I in c&&I in a&&c[I]!==a[I]){const l=t.indexes.byCustomField.get(I);if(l){const B=String(c[I]),h=(l.get(B)||[]).filter(u=>u!==c);h.length===0?l.delete(B):l.set(B,h)}}}if(Object.assign(c,a),t.editCount++,g.byRelation&&t.indexes.byRelation){const I=Object.entries(c);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${c.type}_id`&&typeof B=="string"&&l in a){const C=t.indexes.byRelation.get(l)||new Map,h=C.get(B)||[];h.includes(c)||(h.push(c),C.set(B,h),t.indexes.byRelation.set(l,C))}}if(g.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in c&&"subcircuit_id"in a){const I=c.subcircuit_id;if(I&&typeof I=="string"){const l=t.indexes.bySubcircuit.get(I)||[];l.includes(c)||(l.push(c),t.indexes.bySubcircuit.set(I,l))}}if(g.byCustomField&&t.indexes.byCustomField){for(const I of g.byCustomField)if(I in c&&I in a){const l=c[I];if(l!==void 0&&(typeof l=="string"||typeof l=="number")){const B=String(l),C=t.indexes.byCustomField.get(I),h=C.get(B)||[];h.includes(c)||(h.push(c),C.set(B,h))}}}return c},select:r=>{if(s==="source_component")return e.find(a=>a.type==="source_component"&&a.name===r.replace(/\./g,""))||null;if(s==="pcb_port"||s==="source_port"||s==="schematic_port"){const[a,g]=r.replace(/\./g,"").split(/[\s\>]+/),c=e.find(l=>l.type==="source_component"&&l.name===a);if(!c)return null;const I=e.find(l=>l.type==="source_port"&&l.source_component_id===c.source_component_id&&(l.name===g||(l.port_hints??[]).includes(g)));if(!I)return null;if(s==="source_port")return I;if(s==="pcb_port")return e.find(l=>l.type==="pcb_port"&&l.source_port_id===I.source_port_id)||null;if(s==="schematic_port")return e.find(l=>l.type==="schematic_port"&&l.source_port_id===I.source_port_id)||null}return null}}}})};Jut.unparsed=Jut;var r6e=e=>{const A=e.type;return e[`${A}_id`]},a6e=e=>{let A=Number.POSITIVE_INFINITY,t=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const o of e){if(!o.type.startsWith("pcb_"))continue;let s,r,a,g;if("x"in o&&"y"in o&&(s=Number(o.x),r=Number(o.y)),"outer_diameter"in o&&(a=Number(o.outer_diameter),g=Number(o.outer_diameter)),"width"in o&&(a=Number(o.width)),"height"in o&&(g=Number(o.height)),"center"in o&&(s=o.center.x,r=o.center.y),s!==void 0&&r!==void 0)A=Math.min(A,s),t=Math.min(t,r),i=Math.max(i,s),n=Math.max(n,r),a!==void 0&&g!==void 0&&(A=Math.min(A,s-a/2),t=Math.min(t,r-g/2),i=Math.max(i,s+a/2),n=Math.max(n,r+g/2)),"radius"in o&&(A=Math.min(A,s-o.radius),t=Math.min(t,r-o.radius),i=Math.max(i,s+o.radius),n=Math.max(n,r+o.radius));else if(o.type==="pcb_trace")for(const c of o.route)A=Math.min(A,c.x),t=Math.min(t,c.y),i=Math.max(i,c.x),n=Math.max(n,c.y)}return{minX:A,minY:t,maxX:i,maxY:n}};function g6e(e){let A=0;if(e.length==0)return A;for(var t=0;t<e.length;t++){var i=e.charCodeAt(t);A=(A<<5)-A+i,A=A&A}return Math.abs(A)}var Tut=[["#69d2e7","#a7dbd8","#e0e4cc","#f38630","#fa6900"],["#fe4365","#fc9d9a","#f9cdad","#c8c8a9","#83af9b"],["#ecd078","#d95b43","#c02942","#542437","#53777a"],["#556270","#4ecdc4","#c7f464","#ff6b6b","#c44d58"],["#774f38","#e08e79","#f1d4af","#ece5ce","#c5e0dc"],["#e8ddcb","#cdb380","#036564","#033649","#031634"],["#490a3d","#bd1550","#e97f02","#f8ca00","#8a9b0f"],["#594f4f","#547980","#45ada8","#9de0ad","#e5fcc2"],["#00a0b0","#6a4a3c","#cc333f","#eb6841","#edc951"],["#e94e77","#d68189","#c6a49a","#c6e5d9","#f4ead5"],["#3fb8af","#7fc7af","#dad8a7","#ff9e9d","#ff3d7f"],["#d9ceb2","#948c75","#d5ded9","#7a6a53","#99b2b7"],["#ffffff","#cbe86b","#f2e9e1","#1c140d","#cbe86b"],["#efffcd","#dce9be","#555152","#2e2633","#99173c"],["#343838","#005f6b","#008c9e","#00b4cc","#00dffc"],["#413e4a","#73626e","#b38184","#f0b49e","#f7e4be"],["#ff4e50","#fc913a","#f9d423","#ede574","#e1f5c4"],["#99b898","#fecea8","#ff847c","#e84a5f","#2a363b"],["#655643","#80bca3","#f6f7bd","#e6ac27","#bf4d28"],["#00a8c6","#40c0cb","#f9f2e7","#aee239","#8fbe00"],["#351330","#424254","#64908a","#e8caa4","#cc2a41"],["#554236","#f77825","#d3ce3d","#f1efa5","#60b99a"],["#5d4157","#838689","#a8caba","#cad7b2","#ebe3aa"],["#8c2318","#5e8c6a","#88a65e","#bfb35a","#f2c45a"],["#fad089","#ff9c5b","#f5634a","#ed303c","#3b8183"],["#ff4242","#f4fad2","#d4ee5e","#e1edb9","#f0f2eb"],["#f8b195","#f67280","#c06c84","#6c5b7b","#355c7d"],["#d1e751","#ffffff","#000000","#4dbce9","#26ade4"],["#1b676b","#519548","#88c425","#bef202","#eafde6"],["#5e412f","#fcebb6","#78c0a8","#f07818","#f0a830"],["#bcbdac","#cfbe27","#f27435","#f02475","#3b2d38"],["#452632","#91204d","#e4844a","#e8bf56","#e2f7ce"],["#eee6ab","#c5bc8e","#696758","#45484b","#36393b"],["#f0d8a8","#3d1c00","#86b8b1","#f2d694","#fa2a00"],["#2a044a","#0b2e59","#0d6759","#7ab317","#a0c55f"],["#f04155","#ff823a","#f2f26f","#fff7bd","#95cfb7"],["#b9d7d9","#668284","#2a2829","#493736","#7b3b3b"],["#bbbb88","#ccc68d","#eedd99","#eec290","#eeaa88"],["#b3cc57","#ecf081","#ffbe40","#ef746f","#ab3e5b"],["#a3a948","#edb92e","#f85931","#ce1836","#009989"],["#300030","#480048","#601848","#c04848","#f07241"],["#67917a","#170409","#b8af03","#ccbf82","#e33258"],["#aab3ab","#c4cbb7","#ebefc9","#eee0b7","#e8caaf"],["#e8d5b7","#0e2430","#fc3a51","#f5b349","#e8d5b9"],["#ab526b","#bca297","#c5ceae","#f0e2a4","#f4ebc3"],["#607848","#789048","#c0d860","#f0f0d8","#604848"],["#b6d8c0","#c8d9bf","#dadabd","#ecdbbc","#fedcba"],["#a8e6ce","#dcedc2","#ffd3b5","#ffaaa6","#ff8c94"],["#3e4147","#fffedf","#dfba69","#5a2e2e","#2a2c31"],["#fc354c","#29221f","#13747d","#0abfbc","#fcf7c5"],["#cc0c39","#e6781e","#c8cf02","#f8fcc1","#1693a7"],["#1c2130","#028f76","#b3e099","#ffeaad","#d14334"],["#a7c5bd","#e5ddcb","#eb7b59","#cf4647","#524656"],["#dad6ca","#1bb0ce","#4f8699","#6a5e72","#563444"],["#5c323e","#a82743","#e15e32","#c0d23e","#e5f04c"],["#edebe6","#d6e1c7","#94c7b6","#403b33","#d3643b"],["#fdf1cc","#c6d6b8","#987f69","#e3ad40","#fcd036"],["#230f2b","#f21d41","#ebebbc","#bce3c5","#82b3ae"],["#b9d3b0","#81bda4","#b28774","#f88f79","#f6aa93"],["#3a111c","#574951","#83988e","#bcdea5","#e6f9bc"],["#5e3929","#cd8c52","#b7d1a3","#dee8be","#fcf7d3"],["#1c0113","#6b0103","#a30006","#c21a01","#f03c02"],["#000000","#9f111b","#b11623","#292c37","#cccccc"],["#382f32","#ffeaf2","#fcd9e5","#fbc5d8","#f1396d"],["#e3dfba","#c8d6bf","#93ccc6","#6cbdb5","#1a1f1e"],["#f6f6f6","#e8e8e8","#333333","#990100","#b90504"],["#1b325f","#9cc4e4","#e9f2f9","#3a89c9","#f26c4f"],["#a1dbb2","#fee5ad","#faca66","#f7a541","#f45d4c"],["#c1b398","#605951","#fbeec2","#61a6ab","#accec0"],["#5e9fa3","#dcd1b4","#fab87f","#f87e7b","#b05574"],["#951f2b","#f5f4d7","#e0dfb1","#a5a36c","#535233"],["#8dccad","#988864","#fea6a2","#f9d6ac","#ffe9af"],["#2d2d29","#215a6d","#3ca2a2","#92c7a3","#dfece6"],["#413d3d","#040004","#c8ff00","#fa023c","#4b000f"],["#eff3cd","#b2d5ba","#61ada0","#248f8d","#605063"],["#ffefd3","#fffee4","#d0ecea","#9fd6d2","#8b7a5e"],["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"],["#9dc9ac","#fffec7","#f56218","#ff9d2e","#919167"],["#4e395d","#827085","#8ebe94","#ccfc8e","#dc5b3e"],["#a8a7a7","#cc527a","#e8175d","#474747","#363636"],["#f8edd1","#d88a8a","#474843","#9d9d93","#c5cfc6"],["#046d8b","#309292","#2fb8ac","#93a42a","#ecbe13"],["#f38a8a","#55443d","#a0cab5","#cde9ca","#f1edd0"],["#a70267","#f10c49","#fb6b41","#f6d86b","#339194"],["#ff003c","#ff8a00","#fabe28","#88c100","#00c176"],["#ffedbf","#f7803c","#f54828","#2e0d23","#f8e4c1"],["#4e4d4a","#353432","#94ba65","#2790b0","#2b4e72"],["#0ca5b0","#4e3f30","#fefeeb","#f8f4e4","#a5b3aa"],["#4d3b3b","#de6262","#ffb88c","#ffd0b3","#f5e0d3"],["#fffbb7","#a6f6af","#66b6ab","#5b7c8d","#4f2958"],["#edf6ee","#d1c089","#b3204d","#412e28","#151101"],["#9d7e79","#ccac95","#9a947c","#748b83","#5b756c"],["#fcfef5","#e9ffe1","#cdcfb7","#d6e6c3","#fafbe3"],["#9cddc8","#bfd8ad","#ddd9ab","#f7af63","#633d2e"],["#30261c","#403831","#36544f","#1f5f61","#0b8185"],["#aaff00","#ffaa00","#ff00aa","#aa00ff","#00aaff"],["#d1313d","#e5625c","#f9bf76","#8eb2c5","#615375"],["#ffe181","#eee9e5","#fad3b2","#ffba7f","#ff9c97"],["#73c8a9","#dee1b6","#e1b866","#bd5532","#373b44"],["#805841","#dcf7f3","#fffcdd","#ffd8d8","#f5a2a2"]],c6e=e=>{let{x:A,y:t,width:i,height:n}={...e,...e.size,...e.center,...e.position};if(e.x1!==void 0&&e.x2!==void 0&&e.y1!==void 0&&e.y2!==void 0&&(A=(e.x1+e.x2)/2,t=(e.y1+e.y2)/2,i=Math.abs(e.x1-e.x2),n=Math.abs(e.y1-e.y2)),e.points&&Array.isArray(e.points)&&e.points.length>0){const r=e.points.map(B=>B.x),a=e.points.map(B=>B.y),g=Math.min(...r),c=Math.max(...r),I=Math.min(...a),l=Math.max(...a);A=(g+c)/2,t=(I+l)/2,i=c-g,n=l-I}const o=e.text||e.name||e.source?.text||e.source?.name||"?",s=e;return A===void 0||t===void 0?null:(i===void 0&&"outer_diameter"in e&&(i=e.outer_diameter,n=e.outer_diameter),(i===void 0||n===void 0)&&(i=.1,n=.1),{x:A,y:t,width:i,height:n,title:o,content:s,bg_color:Tut[g6e(e.type||o)%Tut.length]?.[4]??"#f00"})},I6e=e=>!!e,l6e=e=>{const A=e.filter(g=>g.type.startsWith("pcb_")||g.type.startsWith("schematic_")).concat(e.filter(g=>g.type==="pcb_trace"||g.type==="schematic_trace").flatMap(g=>g.route)).map(g=>c6e(g)).filter(I6e);if(A.length===0)return{center:{x:0,y:0},width:0,height:0};let t=A[0].x-A[0].width/2,i=A[0].x+A[0].width/2,n=A[0].y-A[0].height/2,o=A[0].y+A[0].height/2;for(const g of A.slice(1))t=Math.min(t,g.x-g.width/2),i=Math.max(i,g.x+g.width/2),n=Math.min(n,g.y-g.height/2),o=Math.max(o,g.y+g.height/2);const s=i-t,r=o-n;return{center:{x:t+s/2,y:n+r/2},width:s,height:r}},Rb={IS_SHOWING_PCB_GROUPS:"pcb_viewer_is_showing_pcb_groups",PCB_GROUP_VIEW_MODE:"pcb_viewer_group_view_mode",IS_SHOWING_COPPER_POURS:"pcb_viewer_is_showing_copper_pours",IS_SHOWING_GROUP_ANCHOR_OFFSETS:"pcb_viewer_is_showing_group_anchor_offsets",IS_SHOWING_SOLDER_MASK:"pcb_viewer_is_showing_solder_mask"},pz=(e,A)=>{if(typeof window>"u")return A;try{const t=localStorage.getItem(e);return t!==null?JSON.parse(t):A}catch{return A}},fz=(e,A)=>{if(!(typeof window>"u"))try{localStorage.setItem(e,JSON.stringify(A))}catch{}},B6e=(e,A)=>{if(typeof window>"u")return A;try{const t=localStorage.getItem(e);return t!==null?JSON.parse(t):A}catch{return A}},C6e=(e,A)=>{if(!(typeof window>"u"))try{localStorage.setItem(e,JSON.stringify(A))}catch{}},h6e="named_only",Q6e=(e={},A=!1)=>K5A(t=>({selected_layer:"top",pcb_viewer_id:`pcb_viewer_${Math.random().toString().slice(2,10)}`,in_edit_mode:!1,in_move_footprint_mode:!1,in_draw_trace_mode:!1,is_moving_component:!1,is_drawing_trace:!1,is_mouse_over_container:!1,is_showing_multiple_traces_length:!1,is_showing_rats_nest:!1,is_showing_autorouting:!0,is_showing_drc_errors:!0,is_showing_copper_pours:pz(Rb.IS_SHOWING_COPPER_POURS,!0),is_showing_pcb_groups:A?!1:pz(Rb.IS_SHOWING_PCB_GROUPS,!0),is_showing_group_anchor_offsets:pz(Rb.IS_SHOWING_GROUP_ANCHOR_OFFSETS,!0),is_showing_solder_mask:pz(Rb.IS_SHOWING_SOLDER_MASK,!1),pcb_group_view_mode:A?"all":B6e(Rb.PCB_GROUP_VIEW_MODE,h6e),hovered_error_id:null,...e,selectLayer:i=>t({selected_layer:i}),setEditMode:i=>t({in_edit_mode:i!=="off",in_move_footprint_mode:i==="move_footprint",in_draw_trace_mode:i==="draw_trace",is_moving_component:!1,is_drawing_trace:!1}),setIsShowingRatsNest:i=>t({is_showing_rats_nest:i}),setIsMovingComponent:i=>t({is_moving_component:i}),setIsDrawingTrace:i=>t({is_drawing_trace:i}),setIsMouseOverContainer:i=>t({is_mouse_over_container:i}),setIsShowingMultipleTracesLength:i=>t({is_showing_multiple_traces_length:i}),setIsShowingAutorouting:i=>t({is_showing_autorouting:i}),setIsShowingDrcErrors:i=>t({is_showing_drc_errors:i}),setIsShowingCopperPours:i=>{fz(Rb.IS_SHOWING_COPPER_POURS,i),t({is_showing_copper_pours:i})},setIsShowingPcbGroups:i=>{A||(fz(Rb.IS_SHOWING_PCB_GROUPS,i),t({is_showing_pcb_groups:i}))},setIsShowingGroupAnchorOffsets:i=>{fz(Rb.IS_SHOWING_GROUP_ANCHOR_OFFSETS,i),t({is_showing_group_anchor_offsets:i})},setIsShowingSolderMask:i=>{fz(Rb.IS_SHOWING_SOLDER_MASK,i),t({is_showing_solder_mask:i})},setPcbGroupViewMode:i=>{A||(C6e(Rb.PCB_GROUP_VIEW_MODE,i),t({pcb_group_view_mode:i}))},setHoveredErrorId:i=>t({hovered_error_id:i})})),n0=e=>{const A=gA.useContext(Kut);return $5A(A,e)},Kut=gA.createContext(null),u6e=({children:e,initialState:A,disablePcbGroups:t})=>{const i=gA.useMemo(()=>Q6e(A,t),[t]);return iA.jsx(Kut.Provider,{value:i,children:e})},E6e=()=>{const e=n0(t=>t.pcb_viewer_id),A=(t,i)=>nh(t,{containerId:e,...i});return A.error=(t,i)=>nh.error(t,{containerId:e,...i}),A.promise=nh.promise,A},d6e=()=>{gA.useEffect(()=>{Jje()},[]);const e=n0(A=>A.pcb_viewer_id);return iA.jsx(Yje,{position:"top-center",containerId:e})},p6e=function(){},qut=typeof window<"u",f6e=qut?gA.useLayoutEffect:gA.useEffect,y6e=f6e,Put={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function m6e(){var e=gA.useState(null),A=e[0],t=e[1],i=gA.useState(Put),n=i[0],o=i[1],s=gA.useMemo(function(){return new window.ResizeObserver(function(r){if(r[0]){var a=r[0].contentRect,g=a.x,c=a.y,I=a.width,l=a.height,B=a.top,C=a.left,h=a.bottom,u=a.right;o({x:g,y:c,width:I,height:l,top:B,left:C,bottom:h,right:u})}})},[]);return y6e(function(){if(A)return s.observe(A),function(){s.disconnect()}},[A]),[t,n]}var N4=qut&&typeof window.ResizeObserver<"u"?m6e:function(){return[p6e,Put]},Out=({initialTransform:e,initialTouch1:A,initialTouch2:t,finalTouch1:i,finalTouch2:n})=>{if(!i||!n)return e;const o={x:(A.x+t.x)/2,y:(A.y+t.y)/2},s={x:(i.x+n.x)/2,y:(i.y+n.y)/2},r=Math.hypot(t.x-A.x,t.y-A.y),a=Math.hypot(n.x-i.x,n.y-i.y),g=r===0?1:a/r,c=s.x-o.x,I=s.y-o.y;return ko(Jo(c,I),Jo(o.x,o.y),jC(g,g),Jo(-o.x,-o.y),e)},w6e=(e={})=>{const A=gA.useRef(null),[t,i]=gA.useState(0),n=e.canvasElm??A.current,[o,s]=gA.useState(e.initialTransform??RB()),[r,a]=gA.useState(0),[g,c]=gA.useReducer(f=>f+1,0),I=gA.useCallback(f=>{e.onSetTransform&&e.onSetTransform(f),e.transform||s(f)},[e.onSetTransform,s]),l=gA.useCallback(f=>{I(f),c()},[I]),B=e.transform??o,C=gA.useCallback(()=>{i(Date.now())},[]),h=gA.useRef("none"),u=gA.useRef(null),E=gA.useRef(null);gA.useEffect(()=>{const f=e.canvasElm??A.current;if(f&&!n){a(r+1);return}if(!f){const z=setTimeout(()=>{a(r+1)},100);return()=>clearTimeout(z)}let m=e.transform??o,S={x:0,y:0},_={x:0,y:0},v=!1;const D=z=>({x:z.pageX-f.getBoundingClientRect().left-window.scrollX,y:z.pageY-f.getBoundingClientRect().top-window.scrollY});function k(z){e.enabled!==!1&&(e.shouldDrag&&!e.shouldDrag(z)||(S=D(z),!(Date.now()-t<100)&&(v=!0,z.preventDefault())))}function b(z){if(!v||e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA),m=nA,v=!1}function M(z){if(D(z),!v||e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA)}function N(z){if(e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;const nA=D(z),cA=ko(Jo(nA.x,nA.y),jC(1-z.deltaY/1e3,1-z.deltaY/1e3),Jo(-nA.x,-nA.y),m);I(cA),m=cA,z.preventDefault()}function T(z){if(!v||e.shouldDrag&&!e.shouldDrag(z))return;if(f){const cA=f.getBoundingClientRect();if(z.clientX>=cA.left+10&&z.clientX<=cA.right-10&&z.clientY>=cA.top+10&&z.clientY<=cA.bottom-10)return}v=!1,_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA),m=nA}function K(z){if(z.preventDefault(),e.enabled!==!1){if(z.touches.length===1){h.current="drag";const nA=z.touches[0];u.current={initialTransform:m,initialTouch:{x:nA.clientX,y:nA.clientY}}}else if(z.touches.length===2){h.current="pinch";const nA=z.touches[0],cA=z.touches[1];E.current={initialTransform:m,initialTouch1:{x:nA.clientX,y:nA.clientY},initialTouch2:{x:cA.clientX,y:cA.clientY},finalTouch1:null,finalTouch2:null}}}}function P(z){if(z.preventDefault(),e.enabled!==!1){if(h.current==="drag"&&z.touches.length===1&&u.current){const nA=z.touches[0],cA={x:nA.clientX,y:nA.clientY},hA=cA.x-u.current.initialTouch.x,tA=cA.y-u.current.initialTouch.y,aA=ko(Jo(hA,tA),u.current.initialTransform);I(aA)}else if(h.current==="pinch"&&z.touches.length===2&&E.current){const nA=z.touches[0],cA=z.touches[1];E.current.finalTouch1={x:nA.clientX,y:nA.clientY},E.current.finalTouch2={x:cA.clientX,y:cA.clientY};const hA=Out(E.current);I(hA)}}}function V(z){z.preventDefault();const nA=z.changedTouches[0];if(h.current==="drag"&&u.current&&nA){const cA={x:nA.clientX,y:nA.clientY},hA=cA.x-u.current.initialTouch.x,tA=cA.y-u.current.initialTouch.y,aA=ko(Jo(hA,tA),u.current.initialTransform);I(aA),m=aA}else if(h.current==="pinch"&&E.current){const cA=Out(E.current);I(cA),m=cA}h.current="none",u.current=null,E.current=null}return f.addEventListener("mousedown",k),f.addEventListener("mouseup",b),window.addEventListener("mousemove",M),f.addEventListener("mouseout",T),f.addEventListener("wheel",N),f.addEventListener("touchstart",K,{passive:!1}),f.addEventListener("touchmove",P,{passive:!1}),f.addEventListener("touchend",V,{passive:!1}),f.addEventListener("touchcancel",V,{passive:!1}),()=>{f.removeEventListener("mousedown",k),f.removeEventListener("mouseup",b),window.removeEventListener("mousemove",M),f.removeEventListener("mouseout",T),f.removeEventListener("wheel",N),f.removeEventListener("touchstart",K),f.removeEventListener("touchmove",P),f.removeEventListener("touchend",V),f.removeEventListener("touchcancel",V)}},[n,r,g,t,e.enabled,e.shouldDrag]);const p=gA.useCallback(f=>Ut(B,f),[B]);return{ref:A,transform:B,applyTransformToPoint:p,setTransform:l,cancelDrag:C}},D6e=w6e;function _6e(e){const A=new Map;let t=0;function i(n){for(const[,s]of A)if(s.has(n))return s;const o=new Set;return A.set(`connectivity_net${t++}`,o),o}for(const n of e){let o=null;for(const s of n){if(!o)o=i(s);else if(!o.has(s)){const r=i(s);if(r!==o){for(const a of r)o.add(a);A.delete(Array.from(A.entries()).find(([,a])=>a===r)[0])}}o.add(s)}}return Object.fromEntries(Array.from(A.entries()).map(([n,o])=>[n,Array.from(o)]))}var x6e=class{netMap;idToNetMap;constructor(A){this.netMap=A,this.idToNetMap={};for(const[t,i]of Object.entries(A))for(const n of i)this.idToNetMap[n]=t}addConnections(A){for(const t of A){const i=new Set;for(const o of t){const s=this.idToNetMap[o];s&&i.add(s)}let n;if(i.size===0)n=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[n]=[];else if(i.size===1)n=i.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{n=i.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const o of i)if(o!==n){this.netMap[n].push(...this.netMap[o]),this.netMap[o]=this.netMap[n];for(const s of this.netMap[n])this.idToNetMap[s]=n}}for(const o of t)this.netMap[n].includes(o)||this.netMap[n].push(o),this.idToNetMap[o]=n}}getIdsConnectedToNet(A){return this.netMap[A]||[]}getNetConnectedToId(A){return this.idToNetMap[A]}areIdsConnected(A,t){if(A===t)return!0;const i=this.getNetConnectedToId(A);if(!i)return!1;const n=this.getNetConnectedToId(t);return n?i===n||n===A||n===A:!1}areAllIdsConnected(A){const t=this.getNetConnectedToId(A[0]);for(const i of A){const n=this.getNetConnectedToId(i);if(n===void 0||n!==t)return!1}return!0}},Wut=e=>{const A=[];for(const i of e)if(i.type==="source_trace")A.push([i.source_trace_id,...i.connected_source_port_ids??[],...i.connected_source_net_ids??[]].filter(Boolean));else if(i.type==="pcb_port"){const{pcb_port_id:n,source_port_id:o}=i;o&&n&&A.push([o,n])}else if(i.type==="pcb_smtpad"){const{pcb_smtpad_id:n,pcb_port_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="pcb_plated_hole"){const{pcb_plated_hole_id:n,pcb_port_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="pcb_trace"){const{pcb_trace_id:n,source_trace_id:o}=i,s=Array.isArray(i.route)?i.route.filter(r=>r&&r.route_type==="wire"):[];if(o&&n&&A.push([n,o]),Array.isArray(s)){const r=s.find(g=>g&&g.start_pcb_port_id)?.start_pcb_port_id,a=s.find(g=>g&&g.end_pcb_port_id)?.end_pcb_port_id;r&&n&&a&&A.push([r,n,a])}}else if(i.type==="pcb_via"){const{pcb_via_id:n,pcb_trace_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="source_component"&&i.internally_connected_source_port_ids)for(const n of i.internally_connected_source_port_ids)A.push(n);const t=_6e(A);return new x6e(t)};function b6e({primitivesWithoutInteractionMetadata:e,drawingObjectIdsWithMouseOver:A,primitiveIdsInMousedOverNet:t}){const i=[];for(const n of e){const o={...n};n?.layer==="drill"?(o.is_in_highlighted_net=!1,o.is_mouse_over=!1):A.has(n._pcb_drawing_object_id)?o.is_mouse_over=!0:n._element&&("pcb_trace_id"in n._element&&t.includes(n._element.pcb_trace_id)||"pcb_port_id"in n._element&&t.includes(n._element.pcb_port_id))?o.is_in_highlighted_net=!0:(o.is_in_highlighted_net=!1,o.is_mouse_over=!1),i.push(o)}return i}function S6e(e,A){if(e.length<2)throw new Error("Stroke must have at least two points");const t=e.map(I=>Array.isArray(I)?{x:I[0],y:I[1]}:I),i=[],n=[];function o(I,l){const B=l.x-I.x,C=l.y-I.y,h=Math.sqrt(B*B+C*C);return{x:-C/h,y:B/h}}function s(I,l,B,C){const h=C/2,u={x:I.x+l.x*h*B,y:I.y+l.y*h*B};B>0?i.push(u):n.unshift(u)}const r=o(t[0],t[1]),a=t[0].trace_width??A;s(t[0],r,1,a),s(t[0],r,-1,a);for(let I=1;I<t.length-1;I++){const l=t[I-1],B=t[I],C=t[I+1],h=o(l,B),u=o(B,C),E=h.x+u.x,p=h.y+u.y,f=Math.sqrt(E*E+p*p),m=B.trace_width??A;if(f/2>2*(m/2))s(B,h,1,m),s(B,u,1,m),s(B,h,-1,m),s(B,u,-1,m);else{const _=1/f;s(B,{x:E*_,y:p*_},1,m),s(B,{x:E*_,y:p*_},-1,m)}}const g=o(t[t.length-2],t[t.length-1]),c=t[t.length-1].trace_width??A;return s(t[t.length-1],g,1,c),s(t[t.length-1],g,-1,c),[...i,...n]}var Qs=0,tu=e=>`${e}_${Qs++}`,$F=e=>(e??[]).map(A=>({x:Xe.parse(A.x),y:Xe.parse(A.y)})),v6e=(e,A)=>{const t="pcb_component_id"in e?A.find(s=>s.type==="pcb_component"&&s.pcb_component_id===e.pcb_component_id):void 0,i=t&&"source_component_id"in t?A.find(s=>s.type==="source_component"&&s.source_component_id===t.source_component_id):void 0,n="source_port_id"in e?e.source_port_id:"pcb_port_id"in e?_k(A).pcb_port.get(e.pcb_port_id)?.source_port_id:void 0,o=n?A.find(s=>s.type==="source_port"&&s.source_port_id===n):void 0;switch(e.type){case"pcb_panel":{const{width:s,height:r}=e;return[{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:0,y1:0,x2:s,y2:0,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:0,y1:r,x2:s,y2:r,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:0,y1:0,x2:0,y2:r,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:s,y1:0,x2:s,y2:r,width:1,zoomIndependent:!0,layer:"board",_element:e}]}case"pcb_board":{const{width:s,height:r,center:a,outline:g}=e,c=[];return A.some(l=>l.type==="pcb_smtpad"&&l.is_covered_with_solder_mask===!0)&&(g&&g.length>2?(c.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(g),layer:"soldermask_top",_element:e}),c.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(g),layer:"soldermask_bottom",_element:e})):s&&r&&(c.push({_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:a.x,y:a.y,w:s,h:r,layer:"soldermask_top",_element:e}),c.push({_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:a.x,y:a.y,w:s,h:r,layer:"soldermask_bottom",_element:e}))),g&&g.length>2?c.push(...g.map((l,B,C)=>({_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:l.x,y1:l.y,x2:B===C.length-1?C[0].x:C[B+1].x,y2:B===C.length-1?C[0].y:C[B+1].y,width:1,zoomIndependent:!0,layer:"board",_element:e}))):c.push({_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y-r/2,x2:a.x+s/2,y2:a.y-r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y+r/2,x2:a.x+s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y-r/2,x2:a.x-s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x+s/2,y1:a.y-r/2,x2:a.x+s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e}),c}case"pcb_smtpad":{if(e.shape==="rect"||e.shape==="rotated_rect"){const{shape:s,x:r,y:a,width:g,height:c,layer:I,rect_border_radius:l}=e,B=e.corner_radius??l??0,C=[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:r,y:a,w:g,h:c,layer:I||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation,roundness:B}];if(e.is_covered_with_solder_mask){const h=I==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",u={_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:r,y:a,w:g,h:c,layer:h,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation,roundness:B};e.solder_mask_color&&(u.color=e.solder_mask_color),C.push(u)}return C}else if(e.shape==="circle"){const{x:s,y:r,radius:a,layer:g}=e,c=[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a,layer:g||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];if(e.is_covered_with_solder_mask){const I=g==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",l={_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a,layer:I,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o};e.solder_mask_color&&(l.color=e.solder_mask_color),c.push(l)}return c}else if(e.shape==="polygon"){const{layer:s,points:r}=e,a=[{_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(r),layer:s||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];if(e.is_covered_with_solder_mask){const g=s==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",c={_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(r),layer:g,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o};e.solder_mask_color&&(c.color=e.solder_mask_color),a.push(c)}return a}else if(e.shape==="pill"||e.shape==="rotated_pill"){const{x:s,y:r,width:a,height:g,layer:c}=e,I=[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:c||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation}];if(e.is_covered_with_solder_mask){const l=c==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",B={_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation};e.solder_mask_color&&(B.color=e.solder_mask_color),I.push(B)}return I}return[]}case"pcb_hole":{if(e.hole_shape==="circle"||!e.hole_shape){const{x:s,y:r,hole_diameter:a}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}else if(e.hole_shape==="pill"||e.hole_shape==="rotated_pill"){const{x:s,y:r,hole_width:a,hole_height:g}=e;return typeof a!="number"||typeof g!="number"?[]:[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i,ccw_rotation:e.ccw_rotation}]}else if(e.hole_shape==="rect"){const{x:s,y:r,hole_width:a,hole_height:g}=e;return typeof a!="number"||typeof g!="number"?[]:[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:a,h:g,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}return[]}case"pcb_plated_hole":if(e.shape==="circle"){const{x:s,y:r,hole_diameter:a,outer_diameter:g}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:g/2,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o},{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:"drill",_element:e}]}else if(e.shape==="oval"){const{x:s,y:r,outer_height:a,outer_width:g,hole_height:c,hole_width:I}=e;return[{_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:s,y:r,rX:g/2,rY:a/2,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o},{_pcb_drawing_object_id:`oval_${Qs++}`,_element:e,pcb_drawing_type:"oval",x:s,y:r,rX:I/2,rY:c/2,layer:"drill"}]}else if(e.shape==="pill"){const{x:s,y:r,outer_height:a,outer_width:g,hole_height:c,hole_width:I}=e;return[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:g,h:a,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:I,h:c,layer:"drill",ccw_rotation:e.ccw_rotation}]}else if(e.shape==="circular_hole_with_rect_pad"){const{x:s,y:r,hole_diameter:a,rect_pad_width:g,rect_pad_height:c,rect_border_radius:I}=e,l=e.hole_offset_x??0,B=e.hole_offset_y??0;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:g,h:c,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:I},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:g,h:c,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:I},{_pcb_drawing_object_id:`circle_${Qs++}`,_element:e,pcb_drawing_type:"circle",x:s+l,y:r+B,r:a/2,layer:"drill"}]}else if(e.shape==="pill_hole_with_rect_pad"){const{x:s,y:r,hole_width:a,hole_height:g,rect_pad_width:c,rect_pad_height:I,rect_border_radius:l}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:c,h:I,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:l},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:c,h:I,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:l},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill"}]}else if(e.shape==="rotated_pill_hole_with_rect_pad"){const{x:s,y:r,hole_width:a,hole_height:g,hole_ccw_rotation:c,rect_pad_width:I,rect_pad_height:l,rect_ccw_rotation:B,rect_border_radius:C}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:I,h:l,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:B,roundness:C},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:I,h:l,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:B,roundness:C},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill",ccw_rotation:c}]}else if(e.shape==="hole_with_polygon_pad"){const{x:s,y:r,pad_outline:a,hole_shape:g,hole_diameter:c,hole_width:I,hole_height:l,layers:B}=e,C=Xe.parse(e.hole_offset_x??0),h=Xe.parse(e.hole_offset_y??0),u=a,E=[];if(u&&Array.isArray(u)){const m=$F(u).map(S=>({x:S.x+s,y:S.y+r}));for(const S of B||["top","bottom"])E.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:m,layer:S,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o})}const p={x:s+C,y:r+h},f=[];return g==="circle"?f.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:p.x,y:p.y,r:(c??0)/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}):g==="oval"?f.push({_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:p.x,y:p.y,rX:(I??0)/2,rY:(l??0)/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}):(g==="pill"||g==="rotated_pill")&&f.push({_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:p.x,y:p.y,w:I??0,h:l??0,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i,ccw_rotation:e.ccw_rotation}),[...E,...f]}else return[];case"pcb_keepout":{if(e.shape==="circle"){const{center:s,radius:r}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s.x,y:s.y,r,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,mesh_fill:!0}]}else if(e.shape==="rect"){const{center:s,width:r,height:a}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s.x,y:s.y,w:r,h:a,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,mesh_fill:!0}]}break}case"pcb_trace":{const s=[];if(e.route_thickness_mode==="interpolated"){const g=e.route.map(l=>({x:l.x,y:l.y,trace_width:l.route_type==="wire"?l.width:.5})),c=S6e(g,.5),I=e.route[0].layer;return s.push({_pcb_drawing_object_id:`polygon_${Qs++}`,_element:e,pcb_drawing_type:"polygon",points:c,layer:I}),e.route.forEach(l=>{l.route_type==="via"&&s.push({_pcb_drawing_object_id:`circle_${Qs++}`,_element:e,pcb_drawing_type:"circle",x:l.x,y:l.y,r:l.outer_diameter/2,layer:l.from_layer})}),s}let r=null,a=null;for(const g of e.route)g.route_type==="wire"&&(r!==null&&a!==null&&s.push({_pcb_drawing_object_id:`line_${Qs++}`,_element:e,pcb_drawing_type:"line",x1:r,y1:a,x2:g.x,y2:g.y,width:g.width,squareCap:!1,layer:g.layer}),r=g.x,a=g.y);return s}case"pcb_via":{const{x:s,y:r,outer_diameter:a,hole_diameter:g}=e,c=e.from_layer,I=e.to_layer,l=e.layers,B=[];c&&I?B.push(c,I):l&&Array.isArray(l)?B.push(...l):B.push("top","bottom");const C=[];for(const h of B)C.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:h,_element:e,_parent_pcb_component:t,_parent_source_component:i});return C.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:g/2,layer:"drill",_element:e}),C}case"pcb_silkscreen_rect":return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:e.center.x,y:e.center.y,w:e.width,h:e.height,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",stroke_width:e.stroke_width,is_filled:e.is_filled,has_stroke:e.has_stroke,is_stroke_dashed:e.is_stroke_dashed,roundness:e.corner_radius,_element:e}];case"pcb_silkscreen_circle":return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:e.center.x,y:e.center.y,r:e.radius,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_oval":return[{_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:e.center.x,y:e.center.y,rX:e.radius_x/2,rY:e.radius_y/2,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_pill":return[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:e.center.x,y:e.center.y,w:e.width,h:e.height,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_line":return[{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,width:.1,squareCap:!1,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_fabrication_note_rect":{const s=e,r=s.layer==="bottom"?"bottom_fabrication":"top_fabrication",a=s.has_stroke!==void 0?s.has_stroke:typeof s.stroke_width=="number"?s.stroke_width>0:void 0;return[{_pcb_drawing_object_id:tu("pcb_fabrication_note_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,roundness:s.corner_radius,layer:r,stroke_width:s.stroke_width,is_filled:s.is_filled,has_stroke:a,is_stroke_dashed:s.is_stroke_dashed,color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}]}case"pcb_fabrication_note_path":case"pcb_silkscreen_path":{const{pcb_component_id:s,route:r,type:a}=e;let g;if(a==="pcb_silkscreen_path")return g=e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",r.slice(0,-1).map((c,I)=>{const l=r[I+1];return{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:c.x,y1:c.y,x2:l.x,y2:l.y,width:e.stroke_width??.1,squareCap:!1,layer:g,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}}).filter(Boolean);if(a==="pcb_fabrication_note_path")return g="top_fabrication",r.slice(0,-1).map((c,I)=>{const l=r[I+1];return{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:c.x,y1:c.y,x2:l.x,y2:l.y,width:e.stroke_width??.1,squareCap:!1,layer:g,color:e.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}}).filter(Boolean)}case"pcb_silkscreen_text":return[{_pcb_drawing_object_id:`text_${Qs++}`,pcb_drawing_type:"text",x:e.anchor_position.x,y:e.anchor_position.y,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",align:e.anchor_alignment??"center",text:e.text,size:e.font_size,ccw_rotation:e.ccw_rotation}];case"pcb_copper_pour":{const s=e;switch(s.shape){case"rect":{const{center:r,width:a,height:g,layer:c,rotation:I}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_rect"),pcb_drawing_type:"rect",x:r.x,y:r.y,w:a,h:g,layer:c,_element:e,ccw_rotation:I}]}case"polygon":{const{points:r,layer:a}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_polygon"),pcb_drawing_type:"polygon",points:$F(r),layer:a,_element:e}]}case"brep":{const{brep_shape:r,layer:a}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_brep"),pcb_drawing_type:"polygon_with_arcs",brep_shape:r,layer:a,_element:e}]}}return[]}case"pcb_fabrication_note_dimension":{const s=e,{from:r,to:a,text:g,font_size:c,arrow_size:I}=s,l=e.layer==="bottom"?"bottom_fabrication":"top_fabrication",B=[],C=typeof I=="number"&&!Number.isNaN(I)?I:1;B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:a.x,y2:a.y,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o});const h=a.x-r.x,u=a.y-r.y,E=Math.sqrt(h*h+u*u)||1,p=h/E,f=u/E,m=Math.PI/6,S=r.x+C*(p*Math.cos(m)-f*Math.sin(m)),_=r.y+C*(p*Math.sin(m)+f*Math.cos(m)),v=r.x+C*(p*Math.cos(-m)-f*Math.sin(-m)),D=r.y+C*(p*Math.sin(-m)+f*Math.cos(-m));B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:S,y2:_,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:v,y2:D,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o});const k=a.x-C*(p*Math.cos(m)-f*Math.sin(m)),b=a.y-C*(p*Math.sin(m)+f*Math.cos(m)),M=a.x-C*(p*Math.cos(-m)-f*Math.sin(-m)),N=a.y-C*(p*Math.sin(-m)+f*Math.cos(-m));if(B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:k,y2:b,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:M,y2:N,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),g){const T=(c??1)*1.5,K=-f,P=p,V=(r.x+a.x)/2,z=(r.y+a.y)/2;let nA=T;Math.abs(p)>Math.abs(f)?nA=z>=0?T:-T:nA=V>=0?-T:T,B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"text",x:(r.x+a.x)/2+K*nA,y:(r.y+a.y)/2+P*nA,layer:l,align:"center",text:g,size:c,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o})}return B}case"pcb_fabrication_note_text":return[{_pcb_drawing_object_id:tu("text"),pcb_drawing_type:"text",x:e.anchor_position.x,y:e.anchor_position.y,layer:e.layer==="bottom"?"bottom_fabrication":"top_fabrication",size:e.font_size,align:e.anchor_alignment??"center",text:e.text,color:e.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];case"pcb_cutout":switch(e.shape){case"rect":{const s=e,r=s.corner_radius,a=s.rotation??s.rotation;return[{_pcb_drawing_object_id:tu("pcb_cutout_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,layer:"drill",roundness:r,ccw_rotation:a,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"circle":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_cutout_circle"),pcb_drawing_type:"circle",x:s.center.x,y:s.center.y,r:s.radius,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"polygon":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_cutout_polygon"),pcb_drawing_type:"polygon",points:$F(s.points),layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}default:return console.warn(`Unsupported pcb_cutout shape: ${e.shape}`),[]}case"pcb_note_line":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_line"),pcb_drawing_type:"line",x1:s.x1,y1:s.y1,x2:s.x2,y2:s.y2,width:s.stroke_width??.1,squareCap:!1,layer:"notes",color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_rect":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,layer:"notes",stroke_width:s.stroke_width,is_filled:s.is_filled,has_stroke:s.has_stroke,is_stroke_dashed:s.is_stroke_dashed,color:s.color,roundness:s.corner_radius,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_path":{const s=e,{route:r,stroke_width:a}=s;return r.slice(0,-1).map((g,c)=>{const I=r[c+1];return{_pcb_drawing_object_id:tu("pcb_note_path"),pcb_drawing_type:"line",x1:g.x,y1:g.y,x2:I.x,y2:I.y,width:a??.1,squareCap:!1,layer:"notes",color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}}).filter(Boolean)}case"pcb_note_text":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_text"),pcb_drawing_type:"text",x:s.anchor_position.x,y:s.anchor_position.y,layer:"notes",align:s.anchor_alignment??"center",text:s.text||"",size:s.font_size,color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_dimension":{const s=e,{from:r,to:a,text:g,font_size:c,arrow_size:I}=s,l=[];l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:a.x,y2:a.y,width:.05,squareCap:!1,color:s.color,layer:"notes",_element:e,_parent_pcb_component:t,_parent_source_component:i});const B=a.x-r.x,C=a.y-r.y,h=Math.sqrt(B*B+C*C),u=B/h,E=C/h,p=Math.PI/6,f=r.x+I*(u*Math.cos(p)-E*Math.sin(p)),m=r.y+I*(u*Math.sin(p)+E*Math.cos(p)),S=r.x+I*(u*Math.cos(-p)-E*Math.sin(-p)),_=r.y+I*(u*Math.sin(-p)+E*Math.cos(-p));l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:f,y2:m,width:.05,squareCap:!1,layer:"notes",_element:e}),l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:S,y2:_,width:.05,squareCap:!1,layer:"notes",_element:e});const v=a.x-I*(u*Math.cos(p)-E*Math.sin(p)),D=a.y-I*(u*Math.sin(p)+E*Math.cos(p)),k=a.x-I*(u*Math.cos(-p)-E*Math.sin(-p)),b=a.y-I*(u*Math.sin(-p)+E*Math.cos(-p));if(l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:v,y2:D,width:.05,squareCap:!1,layer:"notes",_element:e}),l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:k,y2:b,width:.05,squareCap:!1,layer:"notes",_element:e}),g){const M=c*1.5,N=-E,T=u,K=(r.x+a.x)/2,P=(r.y+a.y)/2;let V=M;Math.abs(u)>Math.abs(E)?V=P>=0?M:-M:V=K>=0?-M:M,l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"text",x:(r.x+a.x)/2+N*V,y:(r.y+a.y)/2+T*V,layer:"notes",align:"center",text:g,size:c,_element:e})}return l}}return[]},uQ={board:{anchor:"rgb(255, 38, 226)",aux_items:"rgb(255, 255, 255)",b_adhes:"rgb(0, 0, 132)",b_crtyd:"rgb(255, 38, 226)",b_fab:"rgb(88, 93, 132)",b_mask:"rgba(2, 255, 238, 0.400)",b_paste:"rgb(0, 194, 194)",b_silks:"rgb(242, 237, 161)",background:"rgb(0, 16, 35)",cmts_user:"rgb(89, 148, 220)",copper:{b:"rgb(77, 127, 196)",f:"rgb(200, 52, 52)",in1:"rgb(127, 200, 127)",in10:"rgb(237, 124, 51)",in11:"rgb(91, 195, 235)",in12:"rgb(247, 111, 142)",in13:"rgb(167, 165, 198)",in14:"rgb(40, 204, 217)",in15:"rgb(232, 178, 167)",in16:"rgb(242, 237, 161)",in17:"rgb(237, 124, 51)",in18:"rgb(91, 195, 235)",in19:"rgb(247, 111, 142)",in2:"rgb(206, 125, 44)",in20:"rgb(167, 165, 198)",in21:"rgb(40, 204, 217)",in22:"rgb(232, 178, 167)",in23:"rgb(242, 237, 161)",in24:"rgb(237, 124, 51)",in25:"rgb(91, 195, 235)",in26:"rgb(247, 111, 142)",in27:"rgb(167, 165, 198)",in28:"rgb(40, 204, 217)",in29:"rgb(232, 178, 167)",in3:"rgb(79, 203, 203)",in30:"rgb(242, 237, 161)",in4:"rgb(219, 98, 139)",in5:"rgb(167, 165, 198)",in6:"rgb(40, 204, 217)",in7:"rgb(232, 178, 167)",in8:"rgb(242, 237, 161)",in9:"rgb(141, 203, 129)"},cursor:"rgb(255, 255, 255)",drc:"rgb(194, 194, 194)",drc_error:"rgba(215, 91, 107, 0.800)",drc_exclusion:"rgb(255, 255, 255)",drc_warning:"rgba(255, 208, 66, 0.902)",dwgs_user:"rgb(194, 194, 194)",eco1_user:"rgb(180, 219, 210)",eco2_user:"rgb(216, 200, 82)",edge_cuts:"rgb(208, 210, 205)",f_adhes:"rgb(132, 0, 132)",f_crtyd:"rgb(255, 0, 245)",f_fab:"rgb(175, 175, 175)",f_mask:"rgba(216, 100, 255, 0.400)",f_paste:"rgba(180, 160, 154, 0.902)",f_silks:"rgb(242, 237, 161)",footprint_text_back:"rgb(0, 0, 132)",footprint_text_front:"rgb(194, 194, 194)",footprint_text_invisible:"rgb(132, 132, 132)",grid:"rgb(132, 132, 132)",grid_axes:"rgb(194, 194, 194)",margin:"rgb(255, 38, 226)",microvia:"rgb(0, 132, 132)",no_connect:"rgb(0, 0, 132)",pad_back:"rgb(77, 127, 196)",pad_front:"rgb(200, 52, 52)",pad_plated_hole:"rgb(194, 194, 0)",pad_through_hole:"rgb(227, 183, 46)",plated_hole:"rgb(26, 196, 210)",ratsnest:"rgba(245, 255, 213, 0.702)",select_overlay:"rgb(4, 255, 67)",soldermaskWithCopper:{top:"rgb(18, 82, 50)",bottom:"rgb(77, 127, 196)"},soldermask:{top:"rgb(12, 55, 33)",bottom:"rgb(12, 55, 33)"},through_via:"rgb(236, 236, 236)",user_1:"rgb(194, 194, 194)",user_2:"rgb(89, 148, 220)",user_3:"rgb(180, 219, 210)",user_4:"rgb(216, 200, 82)",user_5:"rgb(194, 194, 194)",user_6:"rgb(89, 148, 220)",user_7:"rgb(180, 219, 210)",user_8:"rgb(216, 200, 82)",user_9:"rgb(232, 178, 167)",via_blind_buried:"rgb(187, 151, 38)",via_hole:"rgb(227, 183, 46)",via_micro:"rgb(0, 132, 132)",via_through:"rgb(236, 236, 236)",worksheet:"rgb(200, 114, 171)"}},gw=(e,A=1)=>{if(Math.abs(e.a)!==Math.abs(e.d))throw new Error("Cannot scale non-uniformly");return A*Math.abs(e.a)},EQ={elementOverlay:40,dimensionOverlay:40,editTraceHintOverlay:40,errorOverlay:40,pcbGroupOverlay:35,ratsNestOverlay:30,toolbarOverlay:70,warnings:30,topLayer:20,clickToInteractOverlay:100},yz={red:"red",black:"black",green:"green",board:"rgb(255, 255, 255)",other:"#eee",top:uQ.board.copper.f,inner1:uQ.board.copper.in1,inner2:uQ.board.copper.in2,inner3:uQ.board.copper.in3,inner4:uQ.board.copper.in4,inner5:uQ.board.copper.in5,inner6:uQ.board.copper.in6,inner7:uQ.board.copper.in7,inner8:uQ.board.copper.in8,bottom:uQ.board.copper.b,drill:uQ.board.anchor,keepout:uQ.board.background,tkeepout:uQ.board.b_crtyd,tplace:uQ.board.b_silks,top_silkscreen:uQ.board.f_silks,bottom_silkscreen:uQ.board.b_silks,top_fabrication:uQ.board.f_fab,bottom_fabrication:uQ.board.b_fab,soldermask_top:uQ.board.soldermask.top,soldermask_bottom:uQ.board.soldermask.bottom,soldermask_with_copper_top:uQ.board.soldermaskWithCopper.top,soldermask_with_copper_bottom:uQ.board.soldermaskWithCopper.bottom,notes:uQ.board.user_2,...uQ.board},k6e=["inner6","inner5","inner4","inner3","inner2","inner1","bottom","soldermask_bottom","bottom_silkscreen","top","soldermask_top","top_silkscreen","soldermask_with_copper_bottom","soldermask_with_copper_top","board"],R6e=class{canvasLayerMap;ctxLayerMap;aperture;transform;foregroundLayer="top";lastPoint;constructor(e){this.canvasLayerMap=e,this.ctxLayerMap=Object.fromEntries(Object.entries(e).map(([A,t])=>[A,t.getContext("2d")])),this.transform=RB(),this.transform.d*=-1,this.transform=ko(this.transform,Jo(0,-500)),this.lastPoint={x:0,y:0},this.equip({})}clear(){for(const e of Object.values(this.ctxLayerMap))e.clearRect(0,0,e.canvas.width,e.canvas.height)}equip(e){this.aperture={fontSize:0,shape:"circle",mode:"add",size:0,color:"red",layer:"top",opacity:this.foregroundLayer===e.color?1:.5,...e}}drawMeshPattern(e,A,t,i,n,o=45){const s=this.getLayerCtx(),[r,a]=Ut(this.transform,[e,A]),[g,c]=Ut(this.transform,[e+t,A+i]),I=gw(this.transform,n);s.lineWidth=1,s.strokeStyle=this.aperture.color;const l=B=>{const C=Math.sin(B),h=Math.cos(B),u=Math.sqrt(Math.pow(g-r,2)+Math.pow(c-a,2));for(let E=-u;E<=u;E+=I)s.beginPath(),s.moveTo(r+E*h-u*C,a+E*C+u*h),s.lineTo(r+E*h+u*C,a+E*C-u*h),s.stroke()};l(o*Math.PI/180),l((o+90)*Math.PI/180)}rect({x:e,y:A,w:t,h:i,mesh_fill:n,is_filled:o=!0,has_stroke:s,is_stroke_dashed:r,stroke_width:a,roundness:g}){const[c,I]=Ut(this.transform,[e-t/2,A-i/2]),[l,B]=Ut(this.transform,[e+t/2,A+i/2]);this.applyAperture();const C=this.getLayerCtx(),h=g?gw(this.transform,g):0,u=s===void 0?o===!1:s;if(n)C.save(),C.beginPath(),h>0&&C.roundRect?C.roundRect(c,I,l-c,B-I,h):C.rect(c,I,l-c,B-I),C.clip(),this.drawMeshPattern(e-t/2,A-i/2,t,i,.15),C.restore(),h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.stroke()):C.strokeRect(c,I,l-c,B-I);else if(o!==!1&&(h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.fill()):C.fillRect(c,I,l-c,B-I)),u){const E=C.lineWidth;if(a!==void 0&&(C.lineWidth=gw(this.transform,a)),r){let p=[];const f=Math.abs(this.transform.a);if(f>0){const S=.1*f,_=S*1.3;S>.5&&(p=[S,_])}C.setLineDash(p)}h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.stroke()):C.strokeRect(c,I,l-c,B-I),r&&C.setLineDash([]),a!==void 0&&(C.lineWidth=E)}}rotatedRect(e,A,t,i,n,o,s){const r=this.getLayerCtx();this.applyAperture();const[a,g]=Ut(this.transform,[e-t/2,A-i/2]),[c,I]=Ut(this.transform,[e+t/2,A+i/2]),l=o?gw(this.transform,o):0;r.save();const[B,C]=Ut(this.transform,[e,A]);r.translate(B,C);const h=360-n;n&&r.rotate(h*Math.PI/180),r.translate(-B,-C),s?(r.beginPath(),l>0&&r.roundRect?r.roundRect(a,g,c-a,I-g,l):r.rect(a,g,c-a,I-g),r.clip(),this.drawMeshPattern(e-t/2,A-i/2,t,i,.15),l>0&&r.roundRect?(r.beginPath(),r.roundRect(a,g,c-a,I-g,l),r.stroke()):r.strokeRect(a,g,c-a,I-g)):l>0&&r.roundRect?(r.beginPath(),r.roundRect(a,g,c-a,I-g,l),r.fill()):r.fillRect(a,g,c-a,I-g),r.restore()}rotatedPill(e,A,t,i,n){const o=this.getLayerCtx();this.applyAperture(),o.save();const[s,r]=Ut(this.transform,[e,A]);o.translate(s,r);const a=360-n;n&&o.rotate(a*Math.PI/180),o.translate(-s,-r),this.pill(e,A,t,i),o.restore()}circle(e,A,t,i){const n=gw(this.transform,t),[o,s]=Ut(this.transform,[e,A]);this.applyAperture();const r=this.getLayerCtx();i?(r.save(),r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.clip(),this.drawMeshPattern(e-t,A-t,t*2,t*2,.15),r.restore(),r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.stroke()):(r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.fill())}oval(e,A,t,i){const n=gw(this.transform,t),o=gw(this.transform,i),[s,r]=Ut(this.transform,[e,A]);this.applyAperture();const a=this.getLayerCtx();a.beginPath(),a.ellipse(s,r,n,o,0,0,2*Math.PI),a.fill(),a.closePath()}pill(e,A,t,i){const[n,o]=Ut(this.transform,[e-t/2,A+i/2]),s=gw(this.transform,t),r=gw(this.transform,i),a=Math.min(s,r)/2;this.applyAperture();const g=this.getLayerCtx();g.beginPath(),g.arc(n+a,o+a,a,Math.PI,Math.PI*1.5),g.arc(n+s-a,o+a,a,Math.PI*1.5,0),g.arc(n+s-a,o+r-a,a,0,Math.PI*.5),g.arc(n+a,o+r-a,a,Math.PI*.5,Math.PI),g.fill(),g.closePath()}polygon(e){if(e.length<3)return;this.applyAperture();const A=this.getLayerCtx(),t=e.map(n=>Ut(this.transform,[n.x,n.y]));A.beginPath(),A.moveTo(t[0][0],t[0][1]);for(let n=1;n<t.length;n++)A.lineTo(t[n][0],t[n][1]);A.closePath(),A.fill("evenodd");const i=gw(this.transform,this.aperture.size);i>0&&(A.lineWidth=i,A.stroke())}debugText(e,A,t){const[i,n]=Ut(this.transform,[A,t]);this.applyAperture();const o=this.getLayerCtx();o.font="10px sans-serif",o.fillText(e,i,n)}getLayerCtx(){const e=this.ctxLayerMap[this.aperture.layer];if(!e)throw new Error(`No context for layer "${this.aperture.layer}"`);return e}orderAndFadeLayers(){const{canvasLayerMap:e,foregroundLayer:A}=this,t=A==="top"?"top_silkscreen":A==="bottom"?"bottom_silkscreen":void 0,i=A==="top"?"soldermask_with_copper_top":A==="bottom"?"soldermask_with_copper_bottom":void 0,n=new Set([A,"drill","other","board",...t?[t]:[],...i?[i]:[]]),o=[A,...t?[t]:[],...i?[i]:[]],s=[...k6e.filter(r=>!o.includes(r)),A,...i?[i]:[],"drill",...t?[t]:[]];s.forEach((r,a)=>{const g=e[r];g&&(g.style.zIndex=`${EQ.topLayer-(s.length-a)}`,g.style.opacity=n.has(r)?"1":"0.5")})}applyAperture(){const{transform:e,aperture:A}=this;let{size:t,mode:i,color:n,fontSize:o,layer:s}=A;s in this.ctxLayerMap||(this.aperture.layer="other");const r=this.getLayerCtx();if(!r)throw new Error(`No context for layer "${this.foregroundLayer}"`);if(n||(n="undefined"),r.lineWidth=gw(e,t),r.lineCap="round",i==="add"){r.globalCompositeOperation="source-over";let a=yz[n.toLowerCase()];if(!a)try{a=cut(n).rgb().toString()}catch{console.warn(`Invalid color format: '${n}'`),a="white"}r.fillStyle=a,r.strokeStyle=a}else r.globalCompositeOperation="destination-out",r.fillStyle="rgba(0,0,0,1)",r.strokeStyle="rgba(0,0,0,1)";r.font=`${gw(v_(e),o)}px sans-serif`}moveTo(e,A){this.lastPoint={x:e,y:A}}lineTo(e,A){const[t,i]=Ut(this.transform,[e,A]),{size:n,shape:o,mode:s}=this.aperture,r=gw(this.transform,n);let{lastPoint:a}=this;const g=Ut(this.transform,a);this.applyAperture();const c=this.getLayerCtx();o==="square"&&c.fillRect(g.x-r/2,g.y-r/2,r,r),c.beginPath(),c.moveTo(g.x,g.y),c.lineTo(t,i),c.stroke(),c.closePath(),o==="square"&&c.fillRect(t-r/2,i-r/2,r,r),this.lastPoint={x:e,y:A}}polygonWithArcs(e){const A=this.getLayerCtx(),t=i=>{if(i.vertices.length===0)return;const n=i.vertices[0],o=Ut(this.transform,[n.x,n.y]);A.moveTo(o[0],o[1]);for(let s=0;s<i.vertices.length;s++){const r=i.vertices[s],a=i.vertices[(s+1)%i.vertices.length];if(r.bulge&&r.bulge!==0){const g=r.bulge,c=a.x-r.x,I=a.y-r.y,l=Math.sqrt(c*c+I*I);if(l<1e-9){const N=Ut(this.transform,[a.x,a.y]);A.lineTo(N[0],N[1]);continue}const B=4*Math.atan(g),C=Math.abs(l/(2*Math.sin(B/2))),h=(r.x+a.x)/2,u=(r.y+a.y)/2,E=c/l,f=-(I/l),m=E,S=Math.sqrt(Math.max(0,C*C-(l/2)**2)),_=h+S*f*Math.sign(g),v=u+S*m*Math.sign(g),D=Math.atan2(r.y-v,r.x-_);let k=Math.atan2(a.y-v,a.x-_);g>0&&k<D?k+=2*Math.PI:g<0&&k>D&&(k-=2*Math.PI);const b=Ut(this.transform,[_,v]),M=gw(this.transform,C);A.arc(b[0],b[1],M,-D,-k,g>0)}else{const g=Ut(this.transform,[a.x,a.y]);A.lineTo(g[0],g[1])}}A.closePath()};if(A.beginPath(),t(e.outer_ring),e.inner_rings)for(const i of e.inner_rings)t(i);A.fill("evenodd")}};function F6e(e){const{lines:A,anchorPoint:t,ccwRotation:i}=e;if(!i)return A;const n=i*Math.PI/180,o=cE(n),s=ko(Jo(t.x,t.y),o,Jo(-t.x,-t.y));return Ut(s,t),A.map(r=>({...r,x1:Ut(s,{x:r.x1,y:r.y1}).x,y1:Ut(s,{x:r.x1,y:r.y1}).y,x2:Ut(s,{x:r.x2,y:r.y2}).x,y2:Ut(s,{x:r.x2,y:r.y2}).y}))}var N6e=.6,Zut=.2,Vut=(()=>{const A=["a","c","e","m","n","o","r","s","u","x"].map(t=>S4[t]).filter(t=>t&&t.length>0).map(t=>Math.min(...t.map(i=>Math.min(i.y1,i.y2))));return A.length>0?Math.min(...A):0})(),G6e=e=>e>="a"&&e<="z"?Vut:0,jut=e=>{const A=e.size*.7,t=A*N6e,i=A*Zut,n=A*Zut,o=e.text.split(/\r?\n/),s=e.text.length>0&&A>0,r=s?o.length:0,a=s?o.map(B=>B.length===0?0:B.length*t+(B.length-1)*i):[],g=a.length>0?Math.max(...a):0,I=/[a-z]/.test(e.text)?Vut*A:0,l=r>0?r*A+(r-1)*n+I:0;return{text_lines:o,line_count:r,target_height:A,target_width_char:t,space_between_chars:i,space_between_lines:n,width:g,height:l}},M6e=e=>{const A=jut(e);return{width:A.width,height:A.height,lineHeight:A.target_height,lineSpacing:A.space_between_lines,lineCount:A.line_count}},L6e=e=>{const{text_lines:A,line_count:t,target_height:i,target_width_char:n,space_between_chars:o,space_between_lines:s}=jut(e);if(i<=0||t===0)return[];const r=i/12,a=[];for(let g=0;g<t;g++){const c=g*(i+s);let I=e.x;for(let l=0;l<A[g].length;l++){const B=A[g][l],C=S4[B]??S4[B.toUpperCase()],h=G6e(B);if(!C){I+=n+o;continue}for(const{x1:u,y1:E,x2:p,y2:f}of C){const m=E-h,S=f-h;a.push({_pcb_drawing_object_id:tu("line"),pcb_drawing_type:"line",x1:I+n*u,y1:e.y+c+i*m,x2:I+n*p,y2:e.y+c+i*S,width:r,layer:e.layer,unit:e.unit,color:e.color})}I+=n+o}}return a};function Fb(e){const t=e.color??yz[e.layer];let i=cut(t);return e._element?.type==="pcb_copper_pour"&&(i=i.alpha(.7)),e.is_mouse_over||e.is_in_highlighted_net?i.lighten(.5).rgb().toString():i.rgb().toString()}var zut=(e,A)=>{e.equip({size:A.zoomIndependent?A.width/e.transform.a:A.width,shape:A.squareCap?"square":"circle",color:Fb(A),layer:A.layer}),e.moveTo(A.x1,A.y1),e.lineTo(A.x2,A.y2)},U6e=(e,A)=>{e.equip({fontSize:A.size,color:Fb(A),layer:A.layer});let t={x:0,y:0};const{width:i,height:n}=M6e(A);switch(A.align){case"top_left":t.x=0,t.y=-n;break;case"top_center":t.x=-i/2,t.y=-n;break;case"top_right":t.x=-i,t.y=-n;break;case"center_left":t.x=0,t.y=-n/2;break;case"center":t.x=-i/2,t.y=-n/2;break;case"center_right":t.x=-i,t.y=-n/2;break;case"bottom_left":t.x=0,t.y=0;break;case"bottom_center":t.x=-i/2,t.y=0;break;case"bottom_right":t.x=-i,t.y=0;break;default:t.x=0,t.y=0;break}A.x??=0,A.y??=0;const o={x:A.x,y:A.y};let s=L6e({...A,x:A.x+t.x,y:A.y+t.y});if(A.layer==="bottom_silkscreen"&&(s=s.map(r=>({...r,x1:2*A.x-r.x1,x2:2*A.x-r.x2}))),A.ccw_rotation){const r={lines:s,anchorPoint:o,ccwRotation:A.ccw_rotation};s=F6e(r)}for(const r of s)zut(e,r)},H6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer,size:A.stroke_width}),e.rect({x:A.x,y:A.y,w:A.w,h:A.h,mesh_fill:A.mesh_fill,is_filled:A.is_filled,has_stroke:A.has_stroke,is_stroke_dashed:A.is_stroke_dashed,stroke_width:A.stroke_width,roundness:A.roundness})},Y6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.rotatedRect(A.x,A.y,A.w,A.h,A.ccw_rotation,A.roundness,A.mesh_fill)},J6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.rotatedPill(A.x,A.y,A.w,A.h,A.ccw_rotation)},T6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.circle(A.x,A.y,A.r,A.mesh_fill)},K6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.oval(A.x,A.y,A.rX,A.rY)},q6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.pill(A.x,A.y,A.w,A.h)},P6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.polygon(A.points)},O6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.polygonWithArcs(A.brep_shape)},W6e=(e,A)=>{switch(A.pcb_drawing_type){case"line":return zut(e,A);case"text":return U6e(e,A);case"rect":return A.ccw_rotation?Y6e(e,A):H6e(e,A);case"circle":return T6e(e,A);case"oval":return K6e(e,A);case"pill":return A.ccw_rotation?J6e(e,A):q6e(e,A);case"polygon":return P6e(e,A);case"polygon_with_arcs":return O6e(e,A)}},Z6e=(e,A)=>{for(const t of A)W6e(e,t)},V6e=["board","bottom_silkscreen","bottom","soldermask_bottom","top","soldermask_top","soldermask_with_copper_bottom","soldermask_with_copper_top","top_silkscreen","inner1","inner2","inner3","inner4","inner5","inner6","drill","notes","other"],j6e=({primitives:e,transform:A,grid:t,width:i=500,height:n=500})=>{const o=gA.useRef({}),s=n0(a=>a.selected_layer),r=n0(a=>a.is_showing_solder_mask);return gA.useEffect(()=>{if(!o.current||Object.keys(o.current).length===0)return;const a=Object.fromEntries(Object.entries(o.current).filter(([I,l])=>!(!l||!r&&I.includes("soldermask"))));if(Object.keys(a).length===0)return;const g=new R6e(a);A&&(g.transform=A),g.clear(),g.foregroundLayer=s;const c=r?e:e.filter(I=>!I.layer?.includes("soldermask"));Z6e(g,c),g.orderAndFadeLayers()},[e,A,s,r]),iA.jsxs("div",{style:{backgroundColor:"black",width:i,height:n,position:"relative"},children:[iA.jsx(KwA.SuperGrid,{textColor:"rgba(0,255,0,0.8)",majorColor:"rgba(0,255,0,0.4)",minorColor:"rgba(0,255,0,0.2)",screenSpaceCellSize:200,width:i,height:n,transform:A,stringifyCoord:(a,g,c)=>`${KwA.toMMSI(a,c)}, ${KwA.toMMSI(g,c)}`}),V6e.filter(a=>r?!0:!a.includes("soldermask")).map(a=>a.replace(/-/g,"")).map((a,g)=>iA.jsx("canvas",{className:`pcb-layer-${a}`,ref:c=>{o.current??={},c?o.current[a]=c:delete o.current[a]},style:{position:"absolute",zIndex:g,left:0,top:0,pointerEvents:"none"},width:i,height:n},a))]})},z6e=.6,X6e=1;kut(Kze()),kut(o6e());var mz=["rgba(239, 68, 68, 0.8)","rgba(249, 115, 22, 0.8)","rgba(245, 158, 11, 0.8)","rgba(234, 179, 8, 0.8)","rgba(132, 204, 22, 0.8)","rgba(34, 197, 94, 0.8)","rgba(16, 185, 129, 0.8)","rgba(20, 184, 166, 0.8)","rgba(6, 182, 212, 0.8)","rgba(14, 165, 233, 0.8)","rgba(59, 130, 246, 0.8)","rgba(99, 102, 241, 0.8)","rgba(139, 92, 246, 0.8)","rgba(168, 85, 247, 0.8)","rgba(217, 70, 239, 0.8)","rgba(236, 72, 153, 0.8)","rgba(249, 168, 212, 0.8)","rgba(161, 161, 170, 0.8)"];function Xut(e,A,t,i={}){const n=i.padding??40,o=i.yFlip??!1;let s;if("center"in e){const c=e.width/2,I=e.height/2;s={minX:e.center.x-c,maxX:e.center.x+c,minY:e.center.y-I,maxY:e.center.y+I}}else s=e;const r=s.maxX-s.minX||1,a=s.maxY-s.minY||1,g=Math.min((A-2*n)/r,(t-2*n)/a);return ko(Jo(A/2,t/2),jC(g,o?-g:g),Jo(-(s.minX+r/2),-(s.minY+a/2)))}function $6e(e){const A=[...e.points||[],...(e.lines||[]).flatMap(t=>t.points),...(e.rects||[]).flatMap(t=>{const i=t.width/2,n=t.height/2;return[{x:t.center.x-i,y:t.center.y-n},{x:t.center.x+i,y:t.center.y-n},{x:t.center.x-i,y:t.center.y+n},{x:t.center.x+i,y:t.center.y+n}]}),...(e.circles||[]).flatMap(t=>[{x:t.center.x-t.radius,y:t.center.y},{x:t.center.x+t.radius,y:t.center.y},{x:t.center.x,y:t.center.y-t.radius},{x:t.center.x,y:t.center.y+t.radius}]),...(e.texts||[]).flatMap(t=>{const i=t.fontSize??12,n=t.text.length*i*z6e,o=i*X6e,s=t.anchorSide??"center",r={top_left:{dx:0,dy:0},top_center:{dx:-n/2,dy:0},top_right:{dx:-n,dy:0},center_left:{dx:0,dy:-o/2},center:{dx:-n/2,dy:-o/2},center_right:{dx:-n,dy:-o/2},bottom_left:{dx:0,dy:-o},bottom_center:{dx:-n/2,dy:-o},bottom_right:{dx:-n,dy:-o}},{dx:a,dy:g}=r[s],c=t.x+a,I=t.y+g;return[{x:c,y:I},{x:c+n,y:I+o}]})];return A.length===0?{minX:-1,maxX:1,minY:-1,maxY:1}:A.reduce((t,i)=>({minX:Math.min(t.minX,i.x),maxX:Math.max(t.maxX,i.x),minY:Math.min(t.minY,i.y),maxY:Math.max(t.maxY,i.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0})}function AXe(e,A,t={}){const i=A instanceof HTMLCanvasElement?A.getContext("2d"):A;if(!i)throw new Error("Could not get 2D context from canvas");const n=A instanceof HTMLCanvasElement?A.width:A.canvas.width,o=A instanceof HTMLCanvasElement?A.height:A.canvas.height;let s;if(t.transform)s=t.transform;else if(t.viewbox)s=Xut(t.viewbox,n,o,{padding:t.padding,yFlip:t.yFlip});else{const r=$6e(e),a=e.coordinateSystem==="cartesian";s=Xut(r,n,o,{padding:t.padding??40,yFlip:a})}i.clearRect(0,0,n,o),i.save(),e.rects&&e.rects.length>0&&e.rects.forEach(r=>{const a=r.width/2,g=r.height/2,c=Ut(s,{x:r.center.x-a,y:r.center.y-g}),I=Ut(s,{x:r.center.x+a,y:r.center.y+g}),l=Math.abs(I.x-c.x),B=Math.abs(I.y-c.y);i.beginPath(),i.rect(Math.min(c.x,I.x),Math.min(c.y,I.y),l,B),r.fill&&(i.fillStyle=r.fill,i.fill()),r.stroke&&(i.strokeStyle=r.stroke,i.stroke())}),e.circles&&e.circles.length>0&&e.circles.forEach(r=>{const a=Ut(s,r.center),g=r.radius*Math.abs(s.a);i.beginPath(),i.arc(a.x,a.y,g,0,2*Math.PI),r.fill&&(i.fillStyle=r.fill,i.fill()),r.stroke&&(i.strokeStyle=r.stroke??"transparent",i.stroke())}),e.lines&&e.lines.length>0&&e.lines.forEach((r,a)=>{if(r.points.length===0)return;i.beginPath();const g=Ut(s,r.points[0]);i.moveTo(g.x,g.y);for(let c=1;c<r.points.length;c++){const I=Ut(s,r.points[c]);i.lineTo(I.x,I.y)}if(i.strokeStyle=r.strokeColor||mz[a%mz.length],r.strokeWidth?i.lineWidth=r.strokeWidth*s.a:i.lineWidth=2,i.lineCap="round",r.strokeDash)if(typeof r.strokeDash=="string"){let c;if(r.strokeDash.includes(","))c=r.strokeDash.split(",").map(I=>parseFloat(I.trim())).filter(I=>!Number.isNaN(I));else{const I=parseFloat(r.strokeDash.trim());c=Number.isNaN(I)?[]:[I]}i.setLineDash(c)}else i.setLineDash(r.strokeDash.map(c=>c*Math.abs(s.a)));else i.setLineDash([]);i.stroke()}),e.points&&e.points.length>0&&e.points.forEach((r,a)=>{const g=Ut(s,r);i.beginPath(),i.arc(g.x,g.y,3,0,2*Math.PI),i.fillStyle=r.color||mz[a%mz.length],i.fill(),r.label&&!t.disableLabels&&(i.fillStyle=r.color||"black",i.font="12px sans-serif",i.fillText(r.label,g.x+5,g.y-5))}),e.texts&&e.texts.length>0&&e.texts.forEach(r=>{const a=Ut(s,{x:r.x,y:r.y});i.fillStyle=r.color||"black",i.font=`${(r.fontSize??12)*Math.abs(s.a)}px sans-serif`;const g=r.anchorSide??"center",c={top_left:"left",center_left:"left",bottom_left:"left",top_center:"center",center:"center",bottom_center:"center",top_right:"right",center_right:"right",bottom_right:"right"},I={top_left:"top",top_center:"top",top_right:"top",center_left:"middle",center:"middle",center_right:"middle",bottom_left:"bottom",bottom_center:"bottom",bottom_right:"bottom"};i.textAlign=c[g],i.textBaseline=I[g],i.fillText(r.text,a.x,a.y)}),i.restore()}var tXe=({children:e,transform:A,debugGraphics:t})=>{const i=gA.useRef(null),[n,{width:o,height:s}]=N4(),r=n0(a=>a.is_showing_autorouting);return gA.useEffect(()=>{r&&i.current&&t&&o&&s&&(i.current.width=o,i.current.height=s,AXe(t,i.current,{transform:A,disableLabels:!0}))},[t,A,o,s,r]),r?iA.jsxs("div",{ref:n,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:i,style:{position:"absolute",top:0,left:0,opacity:.5,zIndex:100,width:"100%",height:"100%",pointerEvents:"none"}})]}):e},eXe=({children:e,transform:A=RB(),elements:t=[]})=>{const[i,{width:n,height:o}]=N4(),s=gA.useRef(null);return gA.useEffect(()=>{const r=s.current;if(!r||!n||!o)return;r.width=n,r.height=o;const a=r.getContext("2d");if(!a)return;a.clearRect(0,0,n,o);const g=t.filter(I=>I.type==="pcb_component"),c=t.filter(I=>I.type==="pcb_manual_edit_conflict_warning");a.strokeStyle=uQ.board.drc_warning,a.lineWidth=2,c.forEach(I=>{const l=g.find(V=>V.pcb_component_id===I.pcb_component_id);if(!l)return;const{width:B,height:C,center:h}=l,u=Ut(A,h),E=B*Math.abs(A.a),p=C*Math.abs(A.d),f=.1*Math.abs(A.a),m=E+f*2,S=p+f*2,_=u.x-m/2,v=u.y-S/2;a.beginPath(),a.rect(_,v,m,S),a.stroke();const D="Manual Edit Conflict",k=4,b=Math.max(8,Math.min(12,10*Math.abs(A.a)));a.font=`${b}px sans-serif`;const N=a.measureText(D).width+k*2,T=b+k*2,K=_+(m-N)/2,P=v+S+5;a.fillStyle="rgba(0, 0, 0, 0.7)",a.beginPath(),a.roundRect(K,P,N,T,3),a.fill(),a.fillStyle=uQ.board.drc_warning,a.textAlign="center",a.textBaseline="middle",a.fillText(D,K+N/2,P+T/2)})},[t,A,n,o]),iA.jsxs("div",{ref:i,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:s,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:EQ.warnings}})]})},wz=(e,A,t)=>t(e,A),$ut=(e,A,t,i,n)=>{const o=n*Math.PI/180,s=Math.cos(o),r=Math.sin(o),a=e-t,g=A-i,c=a*s-g*r,I=a*r+g*s;return{x:c+t,y:I+i}},wL=e=>{if(e.length===0)return null;let A=e[0].x,t=e[0].x,i=e[0].y,n=e[0].y;for(const o of e)A=wz(A,o.x,Math.min),t=wz(t,o.x,Math.max),i=wz(i,o.y,Math.min),n=wz(n,o.y,Math.max);return{minX:A,maxX:t,minY:i,maxY:n}},iXe=wL,nXe=(e,A)=>({minX:Math.min(e.minX,A.minX),maxX:Math.max(e.maxX,A.maxX),minY:Math.min(e.minY,A.minY),maxY:Math.max(e.maxY,A.maxY)}),oXe=(e,A)=>e?nXe(e,A):A,sXe=e=>{switch(e.pcb_drawing_type){case"line":{const A=(e.width??0)/2,t=[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],i=wL(t);return i?{minX:i.minX-A,maxX:i.maxX+A,minY:i.minY-A,maxY:i.maxY+A}:null}case"rect":{const A=e.w/2,t=e.h/2,i=[{x:e.x-A,y:e.y-t},{x:e.x+A,y:e.y-t},{x:e.x+A,y:e.y+t},{x:e.x-A,y:e.y+t}],n=e.ccw_rotation??0,o=n===0?i:i.map(s=>$ut(s.x,s.y,e.x,e.y,n));return wL(o)}case"circle":return{minX:e.x-e.r,maxX:e.x+e.r,minY:e.y-e.r,maxY:e.y+e.r};case"oval":return{minX:e.x-e.rX,maxX:e.x+e.rX,minY:e.y-e.rY,maxY:e.y+e.rY};case"pill":{const A=e.w/2,t=e.h/2,i=[{x:e.x-A,y:e.y-t},{x:e.x+A,y:e.y-t},{x:e.x+A,y:e.y+t},{x:e.x-A,y:e.y+t}],n=e.ccw_rotation??0,o=n===0?i:i.map(s=>$ut(s.x,s.y,e.x,e.y,n));return wL(o)}case"polygon":return wL(e.points);case"polygon_with_arcs":{const A=e.brep_shape.outer_ring.vertices.map(t=>({x:t.x,y:t.y}));return wL(A)}case"text":{const A=e.size??0,t=e.text?e.text.length*A*.6:0,i=A;if(t===0&&i===0)return{minX:e.x,maxX:e.x,minY:e.y,maxY:e.y};const n=t/2,o=i/2;return{minX:e.x-n,maxX:e.x+n,minY:e.y-o,maxY:e.y+o}}default:return null}};function rXe(e){const{dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}=e,r=t.x-A.x,a=t.y-A.y,g=Math.sqrt(r*r+a*a),c=n.x-i.x,I=n.y-i.y,l=Math.sqrt(c*c+I*I),B=Math.atan2(I,c)*(180/Math.PI),C=Math.abs(B)%90,u=Math.min(C,90-C)>15,E=(i.x+n.x)/2,p=(i.y+n.y)/2,f=15,m=B+90;let S=Math.cos(m*Math.PI/180)*f,_=Math.sin(m*Math.PI/180)*f;const v=c>0&&I<0,D=c>0&&I>0,k=c<0&&I>0;o!==s&&!v&&(S=-S,_=-_),v&&(S+=Math.cos(m*Math.PI/180)*-45,_+=Math.sin(m*Math.PI/180)*-45),D&&(S+=Math.cos(m*Math.PI/180)+-20,_+=Math.sin(m*Math.PI/180)+-10),k&&(S+=Math.cos(m*Math.PI/180)*10,_+=Math.sin(m*Math.PI/180)*10);const b=E+S,M=p+_;return{distance:g,screenDistance:l,x:b,y:M,show:g>.01&&l>30&&u}}function aXe(e){const{dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}=e;return gA.useMemo(()=>rXe({dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}),[A,t,i,n,o,s])}var gXe=(e,A,t)=>{const i=t*Math.PI/180,n=Math.cos(i),o=Math.sin(i),s=e.x-A.x,r=e.y-A.y,a=s*n-r*o,g=s*o+r*n;return{x:a+A.x,y:g+A.y}},AEt=(e,A,t,i)=>{const n={top_left:{x:e.x-A,y:e.y-t},top_center:{x:e.x,y:e.y-t},top_right:{x:e.x+A,y:e.y-t},center_left:{x:e.x-A,y:e.y},center:{x:e.x,y:e.y},center_right:{x:e.x+A,y:e.y},bottom_left:{x:e.x-A,y:e.y+t},bottom_center:{x:e.x,y:e.y+t},bottom_right:{x:e.x+A,y:e.y+t}};return i===0?Object.entries(n).map(([o,s])=>({anchor:o,point:s})):Object.entries(n).map(([o,s])=>({anchor:o,point:gXe(s,e,i)}))},cXe=e=>{switch(e.pcb_drawing_type){case"rect":{const A=e.ccw_rotation??0;return AEt({x:e.x,y:e.y},e.w/2,e.h/2,A)}case"pill":{const A=e.ccw_rotation??0;return AEt({x:e.x,y:e.y},e.w/2,e.h/2,A)}case"circle":return[{anchor:"circle_center",point:{x:e.x,y:e.y}},{anchor:"circle_right",point:{x:e.x+e.r,y:e.y}},{anchor:"circle_left",point:{x:e.x-e.r,y:e.y}},{anchor:"circle_top",point:{x:e.x,y:e.y-e.r}},{anchor:"circle_bottom",point:{x:e.x,y:e.y+e.r}}];case"oval":return[{anchor:"oval_center",point:{x:e.x,y:e.y}},{anchor:"oval_right",point:{x:e.x+e.rX,y:e.y}},{anchor:"oval_left",point:{x:e.x-e.rX,y:e.y}},{anchor:"oval_top",point:{x:e.x,y:e.y-e.rY}},{anchor:"oval_bottom",point:{x:e.x,y:e.y+e.rY}}];case"line":{const A={x:(e.x1+e.x2)/2,y:(e.y1+e.y2)/2};return[{anchor:"line_start",point:{x:e.x1,y:e.y1}},{anchor:"line_mid",point:A},{anchor:"line_end",point:{x:e.x2,y:e.y2}}]}case"polygon":return e.points.map((A,t)=>({anchor:`polygon_vertex_${t}`,point:A}));case"polygon_with_arcs":return e.brep_shape.outer_ring.vertices.map((A,t)=>({anchor:`polygon_with_arcs_vertex_${t}`,point:{x:A.x,y:A.y}}));default:return[]}},IXe=16,AN=5,tEt=e=>{if(e.pcb_drawing_type==="text")return!0;const A=e._element;if(!A||typeof A!="object")return!1;const t=typeof A.type=="string"?A.type:void 0;return t?!!(t.startsWith("pcb_silkscreen_")||t.startsWith("pcb_note_")||t==="pcb_text"||t.startsWith("pcb_fabrication_note_")&&t!=="pcb_fabrication_note_rect"):!1},lXe=({children:e,transform:A,focusOnHover:t=!1,primitives:i=[]})=>{A||(A=RB());const[n,o]=gA.useState(!1),[s,r]=gA.useState(!1),[a,g]=gA.useState(!1),[c,I]=gA.useState({start:null,end:null}),l=gA.useCallback(()=>{a&&(g(!1),window.dispatchEvent(new Event("disarm-dimension-tool")))},[a]),[B,C]=gA.useState({x:0,y:0}),[h,u]=gA.useState({x:0,y:0}),E=gA.useRef({x:0,y:0}),p=gA.useRef(null),m=p.current?.getBoundingClientRect(),S=gA.useMemo(()=>{const K=new Map;for(const P of i){if(!P._element||tEt(P)||P.pcb_drawing_type==="pill"||P.pcb_drawing_type==="rect"&&P.ccw_rotation&&P.ccw_rotation!==0)continue;const V=sXe(P);if(!V)continue;const z=K.get(P._element);K.set(P._element,oXe(z??void 0,V))}return K},[i]),_=gA.useMemo(()=>{const K=[];for(const P of i){if(!P._element||tEt(P))continue;const V=cXe(P);if(V.length!==0)for(const z of V)K.push({anchor:z.anchor,point:z.point,element:P._element})}return K},[i]),v=gA.useMemo(()=>{const K=[];S.forEach((P,V)=>{if(!P)return;const z=(P.minX+P.maxX)/2,nA=(P.minY+P.maxY)/2,cA={top_left:{x:P.minX,y:P.minY},top_center:{x:z,y:P.minY},top_right:{x:P.maxX,y:P.minY},center_left:{x:P.minX,y:nA},center:{x:z,y:nA},center_right:{x:P.maxX,y:nA},bottom_left:{x:P.minX,y:P.maxY},bottom_center:{x:z,y:P.maxY},bottom_right:{x:P.maxX,y:P.maxY}};for(const[hA,tA]of Object.entries(cA))K.push({anchor:hA,point:tA,element:V})});for(const P of _)K.push(P);return K.push({anchor:"origin",point:{x:0,y:0},element:null}),K},[S,_]),D=gA.useMemo(()=>v.map((K,P)=>({...K,id:`${P}-${K.anchor}`,screenPoint:Ut(A,K.point)})),[v,A]),k=gA.useCallback(K=>{if(D.length===0)return{point:K,id:null};const P=Ut(A,K);let V=null;for(const z of D){const nA=z.screenPoint.x-P.x,cA=z.screenPoint.y-P.y,hA=Math.hypot(nA,cA);hA>IXe||(!V||hA<V.distance)&&(V={distance:hA,id:z.id,point:z.point})}return V?{point:V.point,id:V.id}:{point:K,id:null}},[D,A]);gA.useEffect(()=>{const K=p.current,P=cA=>{if(cA.key==="d"){const hA=k({x:E.current.x,y:E.current.y});C({x:hA.point.x,y:hA.point.y}),u({x:hA.point.x,y:hA.point.y}),I({start:hA.id,end:hA.id}),n?(o(!1),r(!1),I({start:null,end:null})):(o(!0),r(!0)),l()}cA.key==="Escape"&&(o(!1),r(!1),I({start:null,end:null}),l())},V=()=>{g(!0)},z=()=>{K&&window.addEventListener("keydown",P)},nA=()=>{K&&window.removeEventListener("keydown",P)};return window.addEventListener("arm-dimension-tool",V),K&&(K.addEventListener("focus",z),K.addEventListener("blur",nA),K.addEventListener("mouseenter",z),K.addEventListener("mouseleave",nA)),()=>{window.removeEventListener("arm-dimension-tool",V),l(),K&&(K.removeEventListener("focus",z),K.removeEventListener("blur",nA),K.removeEventListener("mouseenter",z),K.removeEventListener("mouseleave",nA))}},[p,n,l,k]);const b=Ut(A,B),M=Ut(A,h),N={left:Math.min(b.x,M.x),right:Math.max(b.x,M.x),top:Math.min(b.y,M.y),bottom:Math.max(b.y,M.y),flipX:b.x>M.x,flipY:b.y>M.y,width:0,height:0};N.width=N.right-N.left,N.height=N.bottom-N.top;const T=aXe({dimensionStart:B,dimensionEnd:h,screenDimensionStart:b,screenDimensionEnd:M,flipX:N.flipX,flipY:N.flipY});return iA.jsxs("div",{ref:p,tabIndex:0,style:{position:"relative"},onMouseEnter:()=>{t&&p.current&&p.current.focus()},onMouseLeave:()=>{p.current&&p.current.blur()},onMouseMove:K=>{const P=K.currentTarget.getBoundingClientRect(),V=K.clientX-P.left,z=K.clientY-P.top,nA=Ut(v_(A),{x:V,y:z});if(E.current.x=nA.x,E.current.y=nA.y,s){const cA=k(nA);u({x:cA.point.x,y:cA.point.y}),I(hA=>({...hA,end:cA.id}))}},onMouseDown:K=>{const P=K.currentTarget.getBoundingClientRect(),V=K.clientX-P.left,z=K.clientY-P.top,nA=Ut(v_(A),{x:V,y:z});if(a&&!n){const cA=k(nA);C({x:cA.point.x,y:cA.point.y}),u({x:cA.point.x,y:cA.point.y}),I({start:cA.id,end:cA.id}),o(!0),r(!0),l()}else s?(r(!1),I(cA=>({...cA,end:null}))):n&&(o(!1),I({start:null,end:null}))},children:[e,n&&iA.jsxs(iA.Fragment,{children:[T.show&&iA.jsx("div",{style:{position:"absolute",left:T.x,top:T.y,color:"red",mixBlendMode:"difference",pointerEvents:"none",fontSize:12,fontFamily:"sans-serif",whiteSpace:"nowrap",zIndex:EQ.dimensionOverlay},children:T.distance.toFixed(2)}),iA.jsx("div",{style:{position:"absolute",left:N.left,width:N.width,textAlign:"center",top:b.y+2,color:"red",mixBlendMode:"difference",pointerEvents:"none",marginTop:N.flipY?0:-20,fontSize:12,fontFamily:"sans-serif",zIndex:EQ.dimensionOverlay},children:Math.abs(B.x-h.x).toFixed(2)}),iA.jsx("div",{style:{position:"absolute",left:M.x,height:N.height,display:"flex",flexDirection:"column",justifyContent:"center",top:N.top,color:"red",pointerEvents:"none",mixBlendMode:"difference",fontSize:12,fontFamily:"sans-serif",zIndex:EQ.dimensionOverlay},children:iA.jsx("div",{style:{marginLeft:N.flipX?"-100%":4,paddingRight:4},children:Math.abs(B.y-h.y).toFixed(2)})}),iA.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:EQ.dimensionOverlay},width:m.width,height:m.height,children:[iA.jsx("defs",{children:iA.jsx("marker",{id:"head",orient:"auto",markerWidth:"3",markerHeight:"4",refX:"2",refY:"2",children:iA.jsx("path",{d:"M0,0 V4 L2,2 Z",fill:"red"})})}),iA.jsx("line",{x1:b.x,y1:b.y,x2:M.x,y2:M.y,markerEnd:"url(#head)",strokeWidth:1.5,fill:"none",stroke:"red"}),iA.jsx("line",{x1:b.x,y1:b.y,x2:M.x,y2:b.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"}),iA.jsx("line",{x1:M.x,y1:b.y,x2:M.x,y2:M.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"})]}),s&&D.map(K=>{const P=K.id===c.start||K.id===c.end,V=AN/2;return iA.jsxs("svg",{width:AN,height:AN,style:{position:"absolute",left:K.screenPoint.x-V,top:K.screenPoint.y-V,pointerEvents:"none",zIndex:EQ.dimensionOverlay},children:[iA.jsx("line",{x1:0,y1:0,x2:AN,y2:AN,stroke:P?"#66ccff":"white",strokeWidth:1}),iA.jsx("line",{x1:AN,y1:0,x2:0,y2:AN,stroke:P?"#66ccff":"white",strokeWidth:1})]},K.id)}),iA.jsxs("div",{style:{right:0,bottom:0,position:"absolute",color:"red",fontFamily:"sans-serif",fontSize:12,margin:4},children:["(",B.x.toFixed(2),",",B.y.toFixed(2),")",iA.jsx("br",{}),"(",h.x.toFixed(2),",",h.y.toFixed(2),")",iA.jsx("br",{}),"dist:"," ",Math.sqrt((h.x-B.x)**2+(h.y-B.y)**2).toFixed(2)]})]})]})},BXe=(e,A,t=0)=>{const i=e.width/2,n=e.height/2,o=e.center.x-i-t,s=e.center.x+i+t,r=e.center.y-n-t,a=e.center.y+n+t;return A.x>o&&A.x<s&&A.y>r&&A.y<a},CXe=({children:e,disabled:A,transform:t,soup:i,cancelPanDrag:n,onCreateEditEvent:o,onModifyEditEvent:s})=>{t||(t=RB());const r=gA.useRef(null),[a,g]=gA.useState(null),[c,I]=gA.useState(null),l=a!==null;n0(u=>u.in_edit_mode);const B=n0(u=>u.in_move_footprint_mode),C=n0(u=>u.setIsMovingComponent),h=A||!B;return iA.jsxs("div",{ref:r,style:{position:"relative",overflow:"hidden"},onMouseDown:u=>{if(h)return;const E=u.currentTarget.getBoundingClientRect(),p=u.clientX-E.left,f=u.clientY-E.top;if(Number.isNaN(p)||Number.isNaN(f))return;const m=Ut(v_(t),{x:p,y:f});let S=!1;for(const _ of i)if(_.type==="pcb_component"&&BXe(_,m,10/t.a)){n(),g(_.pcb_component_id),S=!0;const v=Math.random().toString();I({dragStart:m,originalCenter:_.center,dragEnd:m,edit_event_id:v}),o({edit_event_id:v,edit_event_type:"edit_pcb_component_location",pcb_edit_event_type:"edit_component_location",pcb_component_id:_.pcb_component_id,original_center:_.center,new_center:_.center,in_progress:!0,created_at:Date.now()}),C(!0);break}if(S||g(null),S)return u.preventDefault(),!1},onMouseMove:u=>{if(!a||!c)return;const E=u.currentTarget.getBoundingClientRect(),p=u.clientX-E.left,f=u.clientY-E.top;if(Number.isNaN(p)||Number.isNaN(f))return;const m=Ut(v_(t),{x:p,y:f});I({...c,dragEnd:m}),s({edit_event_id:c.edit_event_id,new_center:{x:c.originalCenter.x+m.x-c.dragStart.x,y:c.originalCenter.y+m.y-c.dragStart.y}})},onMouseUp:u=>{a&&(g(null),C(!1),c&&(s({edit_event_id:c.edit_event_id,in_progress:!1}),I(null)))},children:[e,!h&&i.filter(u=>u.type==="pcb_component").map(u=>{if(!u?.center)return null;const E=Ut(t,u.center);return iA.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:E.x,top:E.y,width:u.width*t.a+20,height:u.height*t.a+20,transform:"translate(-50%, -50%)",background:l&&a===u.pcb_component_id?"rgba(255, 0, 0, 0.2)":""}},u.pcb_component_id)})]})},hXe=({hotkeys:e})=>(gA.useEffect(()=>{const A=t=>{e.forEach(i=>{t.key===i.key&&i.onUse()})};return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[e]),iA.jsx("div",{className:mL`
5758
+ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function Yut(e,A,t){if(!A||!t)return;let i=e.get(A);i||(i=new Set,e.set(A,i)),i.add(t);let n=e.get(t);n||(n=new Set,e.set(t,n)),n.add(A)}function s6e(e,A){if(!A.subcircuit_id&&!A.source_group_id)return[...e];const t=new Map;for(const s of e){const r=s[`${s.type}_id`];typeof r=="string"&&t.set(r,s)}const i=new Map;for(const s of e){const r=Object.entries(s);for(const[a,g]of r)if(a!=="parent_source_group_id"){if(a.endsWith("_id")&&typeof g=="string"){const c=t.get(g);Yut(i,s,c)}else if(a.endsWith("_ids")&&Array.isArray(g)){for(const c of g)if(typeof c=="string"){const I=t.get(c);Yut(i,s,I)}}}}const n=[],o=new Set;for(const s of e)(A.subcircuit_id&&s.subcircuit_id===A.subcircuit_id||A.source_group_id&&(s.source_group_id===A.source_group_id||Array.isArray(s.member_source_group_ids)&&s.member_source_group_ids.includes(A.source_group_id)))&&(n.push(s),o.add(s));for(;n.length>0;){const s=n.shift(),r=i.get(s);if(r)for(const a of r)o.has(a)||(o.add(a),n.push(a))}return e.filter(s=>o.has(s))}var dz=(e,A={})=>{const t=e;let i=t._internal_store;if(!i){i={counts:{},editCount:0},t._internal_store=i;for(const o of t){const s=o.type,r=o[`${s}_id`];if(!r)continue;const a=Number.parseInt(r.split("_").pop());Number.isNaN(a)||(i.counts[s]=Math.max(i.counts[s]??0,a))}}return new Proxy({},{get:(o,s)=>{if(s==="toArray")return()=>(t.editCount=i.editCount,t);if(s==="editCount")return i.editCount;if(s==="subtree")return a=>dz(s6e(t,a),A);const r=s;return{get:a=>t.find(g=>g.type===r&&g[`${r}_id`]===a),getUsing:a=>{const g=Object.keys(a);if(g.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const c=g[0],I=c.replace("_id",""),l=t.find(B=>B.type===I&&B[c]===a[c]);return l?t.find(B=>B.type===r&&B[`${r}_id`]===l[`${r}_id`]):null},getWhere:a=>{const g=Object.keys(a);return t.find(c=>c.type===r&&g.every(I=>c[I]===a[I]))},list:a=>{const g=a?Object.keys(a):[];return t.filter(c=>c.type===r&&g.every(I=>c[I]===a[I]))},insert:a=>{i.counts[r]??=-1,i.counts[r]++;const g=i.counts[r],c={type:r,[`${r}_id`]:`${r}_${g}`,...a};return A.validateInserts&&(PQt[r]??UwA).parse(c),t.push(c),i.editCount++,c},delete:a=>{const g=t.find(c=>c[`${r}_id`]===a);g&&(t.splice(t.indexOf(g),1),i.editCount++)},update:(a,g)=>{const c=t.find(I=>I.type===r&&I[`${r}_id`]===a);return c?(Object.assign(c,g),i.editCount++,c):null},select:a=>{if(r==="source_component")return t.find(g=>g.type==="source_component"&&g.name===a.replace(/\./g,""));if(r==="pcb_port"||r==="source_port"||r==="schematic_port"){const[g,c]=a.replace(/\./g,"").split(/[\s\>]+/),I=t.find(B=>B.type==="source_component"&&B.name===g);if(!I)return null;const l=t.find(B=>B.type==="source_port"&&B.source_component_id===I.source_component_id&&(B.name===c||(B.port_hints??[]).includes(c)));if(!l)return null;if(r==="source_port")return l;if(r==="pcb_port")return t.find(B=>B.type==="pcb_port"&&B.source_port_id===l.source_port_id);if(r==="schematic_port")return t.find(B=>B.type==="schematic_port"&&B.source_port_id===l.source_port_id)}}}}})};dz.unparsed=dz;var _k=dz;function gDA(e){const A=e.type;return`${A}:${e[`${A}_id`]}`}var Jut=(e,A={})=>{let t=e._internal_store_indexed;if(!t){t={counts:{},editCount:0,indexes:{}};for(const s of e){const r=s.type,a=s[`${r}_id`];if(!a)continue;const g=Number.parseInt(a.split("_").pop()||"");Number.isNaN(g)||(t.counts[r]=Math.max(t.counts[r]??0,g))}const n=A.indexConfig||{},o=t.indexes;if(n.byId&&(o.byId=new Map),n.byType&&(o.byType=new Map),n.byRelation&&(o.byRelation=new Map),n.bySubcircuit&&(o.bySubcircuit=new Map),n.byCustomField&&n.byCustomField.length>0){o.byCustomField=new Map;for(const s of n.byCustomField)o.byCustomField.set(s,new Map)}for(const s of e){if(n.byId){const r=gDA(s);o.byId.set(r,s)}if(n.byType){const r=o.byType.get(s.type)||[];r.push(s),o.byType.set(s.type,r)}if(n.byRelation){const r=Object.entries(s);for(const[a,g]of r)if(a.endsWith("_id")&&a!==`${s.type}_id`&&typeof g=="string"){const c=o.byRelation.get(a)||new Map,I=c.get(g)||[];I.push(s),c.set(g,I),o.byRelation.set(a,c)}}if(n.bySubcircuit&&"subcircuit_id"in s){const r=s.subcircuit_id;if(r&&typeof r=="string"){const a=o.bySubcircuit.get(r)||[];a.push(s),o.bySubcircuit.set(r,a)}}if(n.byCustomField&&o.byCustomField){for(const r of n.byCustomField)if(r in s){const a=s[r];if(a!==void 0&&(typeof a=="string"||typeof a=="number")){const g=String(a),c=o.byCustomField.get(r),I=c.get(g)||[];I.push(s),c.set(g,I)}}}}e._internal_store_indexed=t}return new Proxy({},{get:(n,o)=>{if(o==="toArray")return()=>(e.editCount=t.editCount,e);if(o==="editCount")return t.editCount;const s=o;return{get:r=>{const a=A.indexConfig||{};return a.byId&&t.indexes.byId?t.indexes.byId.get(`${s}:${r}`)||null:a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(c=>c[`${s}_id`]===r)||null:e.find(g=>g.type===s&&g[`${s}_id`]===r)||null},getUsing:r=>{const a=A.indexConfig||{},g=Object.keys(r);if(g.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const c=g[0],I=c.replace("_id","");if(a.byRelation&&t.indexes.byRelation){const B=t.indexes.byRelation.get(c);if(B){const h=(B.get(r[c])||[]).find(E=>E.type===I);if(!h)return null;const u=h[`${s}_id`];return a.byId&&t.indexes.byId?t.indexes.byId.get(`${s}:${u}`)||null:a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(p=>p[`${s}_id`]===u)||null:e.find(E=>E.type===s&&E[`${s}_id`]===u)||null}}const l=e.find(B=>B.type===I&&B[c]===r[c]);return l&&e.find(B=>B.type===s&&B[`${s}_id`]===l[`${s}_id`])||null},getWhere:r=>{const a=A.indexConfig||{},g=Object.keys(r);if(g.length===1&&a.byCustomField&&t.indexes.byCustomField){const c=g[0],I=t.indexes.byCustomField.get(c);if(I){const l=String(r[c]);return(I.get(l)||[]).find(C=>C.type===s)||null}}if("subcircuit_id"in r&&a.bySubcircuit&&t.indexes.bySubcircuit){const c=r.subcircuit_id;return(t.indexes.bySubcircuit.get(c)||[]).find(l=>l.type===s&&g.every(B=>l[B]===r[B]))||null}return a.byType&&t.indexes.byType?(t.indexes.byType.get(s)||[]).find(I=>g.every(l=>I[l]===r[l]))||null:e.find(c=>c.type===s&&g.every(I=>c[I]===r[I]))||null},list:r=>{const a=A.indexConfig||{},g=r?Object.keys(r):[];if(g.length===0&&a.byType&&t.indexes.byType)return t.indexes.byType.get(s)||[];if(g.length===1&&g[0]==="subcircuit_id"&&a.bySubcircuit&&t.indexes.bySubcircuit){const I=r.subcircuit_id;return(t.indexes.bySubcircuit.get(I)||[]).filter(B=>B.type===s)}let c;return a.byType&&t.indexes.byType?c=t.indexes.byType.get(s)||[]:c=e.filter(I=>I.type===s),g.length>0?c.filter(I=>g.every(l=>I[l]===r[l])):c},insert:r=>{t.counts[s]??=-1,t.counts[s]++;const a=t.counts[s],g={type:s,[`${s}_id`]:`${s}_${a}`,...r};A.validateInserts&&(PQt[s]??UwA).parse(g),e.push(g),t.editCount++;const c=A.indexConfig||{};if(c.byId&&t.indexes.byId){const I=gDA(g);t.indexes.byId.set(I,g)}if(c.byType&&t.indexes.byType){const I=t.indexes.byType.get(s)||[];I.push(g),t.indexes.byType.set(s,I)}if(c.byRelation&&t.indexes.byRelation){const I=Object.entries(g);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${g.type}_id`&&typeof B=="string"){const C=t.indexes.byRelation.get(l)||new Map,h=C.get(B)||[];h.push(g),C.set(B,h),t.indexes.byRelation.set(l,C)}}if(c.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in g){const I=g.subcircuit_id;if(I&&typeof I=="string"){const l=t.indexes.bySubcircuit.get(I)||[];l.push(g),t.indexes.bySubcircuit.set(I,l)}}if(c.byCustomField&&t.indexes.byCustomField){for(const I of c.byCustomField)if(I in g){const l=g[I];if(l!==void 0&&(typeof l=="string"||typeof l=="number")){const B=String(l),C=t.indexes.byCustomField.get(I),h=C.get(B)||[];h.push(g),C.set(B,h)}}}return g},delete:r=>{const a=A.indexConfig||{};let g;if(a.byId&&t.indexes.byId?g=t.indexes.byId.get(`${s}:${r}`):a.byType&&t.indexes.byType?g=(t.indexes.byType.get(s)||[]).find(l=>l[`${s}_id`]===r):g=e.find(I=>I[`${s}_id`]===r),!g)return;const c=e.indexOf(g);if(c>=0&&(e.splice(c,1),t.editCount++),a.byId&&t.indexes.byId){const I=gDA(g);t.indexes.byId.delete(I)}if(a.byType&&t.indexes.byType){const l=(t.indexes.byType.get(s)||[]).filter(B=>B[`${s}_id`]!==r);t.indexes.byType.set(s,l)}if(a.byRelation&&t.indexes.byRelation)for(const[I,l]of t.indexes.byRelation.entries())for(const[B,C]of l.entries()){const h=C.filter(u=>u!==g);h.length===0?l.delete(B):l.set(B,h)}if(a.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in g){const I=g.subcircuit_id;if(I){const B=(t.indexes.bySubcircuit.get(I)||[]).filter(C=>C!==g);B.length===0?t.indexes.bySubcircuit.delete(I):t.indexes.bySubcircuit.set(I,B)}}if(a.byCustomField&&t.indexes.byCustomField)for(const I of t.indexes.byCustomField.values())for(const[l,B]of I.entries()){const C=B.filter(h=>h!==g);C.length===0?I.delete(l):I.set(l,C)}},update:(r,a)=>{const g=A.indexConfig||{};let c;if(g.byId&&t.indexes.byId?c=t.indexes.byId.get(`${s}:${r}`):g.byType&&t.indexes.byType?c=(t.indexes.byType.get(s)||[]).find(l=>l[`${s}_id`]===r):c=e.find(I=>I.type===s&&I[`${s}_id`]===r),!c)return null;if(g.byRelation&&t.indexes.byRelation){const I=Object.entries(c);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${c.type}_id`&&typeof B=="string"&&l in a&&a[l]!==B){const C=t.indexes.byRelation.get(l);if(C){const u=(C.get(B)||[]).filter(E=>E!==c);u.length===0?C.delete(B):C.set(B,u)}}}if(g.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in c&&"subcircuit_id"in a){const I=c.subcircuit_id,l=a.subcircuit_id;if(I!==l){const C=(t.indexes.bySubcircuit.get(I)||[]).filter(h=>h!==c);C.length===0?t.indexes.bySubcircuit.delete(I):t.indexes.bySubcircuit.set(I,C)}}if(g.byCustomField&&t.indexes.byCustomField){for(const I of g.byCustomField)if(I in c&&I in a&&c[I]!==a[I]){const l=t.indexes.byCustomField.get(I);if(l){const B=String(c[I]),h=(l.get(B)||[]).filter(u=>u!==c);h.length===0?l.delete(B):l.set(B,h)}}}if(Object.assign(c,a),t.editCount++,g.byRelation&&t.indexes.byRelation){const I=Object.entries(c);for(const[l,B]of I)if(l.endsWith("_id")&&l!==`${c.type}_id`&&typeof B=="string"&&l in a){const C=t.indexes.byRelation.get(l)||new Map,h=C.get(B)||[];h.includes(c)||(h.push(c),C.set(B,h),t.indexes.byRelation.set(l,C))}}if(g.bySubcircuit&&t.indexes.bySubcircuit&&"subcircuit_id"in c&&"subcircuit_id"in a){const I=c.subcircuit_id;if(I&&typeof I=="string"){const l=t.indexes.bySubcircuit.get(I)||[];l.includes(c)||(l.push(c),t.indexes.bySubcircuit.set(I,l))}}if(g.byCustomField&&t.indexes.byCustomField){for(const I of g.byCustomField)if(I in c&&I in a){const l=c[I];if(l!==void 0&&(typeof l=="string"||typeof l=="number")){const B=String(l),C=t.indexes.byCustomField.get(I),h=C.get(B)||[];h.includes(c)||(h.push(c),C.set(B,h))}}}return c},select:r=>{if(s==="source_component")return e.find(a=>a.type==="source_component"&&a.name===r.replace(/\./g,""))||null;if(s==="pcb_port"||s==="source_port"||s==="schematic_port"){const[a,g]=r.replace(/\./g,"").split(/[\s\>]+/),c=e.find(l=>l.type==="source_component"&&l.name===a);if(!c)return null;const I=e.find(l=>l.type==="source_port"&&l.source_component_id===c.source_component_id&&(l.name===g||(l.port_hints??[]).includes(g)));if(!I)return null;if(s==="source_port")return I;if(s==="pcb_port")return e.find(l=>l.type==="pcb_port"&&l.source_port_id===I.source_port_id)||null;if(s==="schematic_port")return e.find(l=>l.type==="schematic_port"&&l.source_port_id===I.source_port_id)||null}return null}}}})};Jut.unparsed=Jut;var r6e=e=>{const A=e.type;return e[`${A}_id`]},a6e=e=>{let A=Number.POSITIVE_INFINITY,t=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const o of e){if(!o.type.startsWith("pcb_"))continue;let s,r,a,g;if("x"in o&&"y"in o&&(s=Number(o.x),r=Number(o.y)),"outer_diameter"in o&&(a=Number(o.outer_diameter),g=Number(o.outer_diameter)),"width"in o&&(a=Number(o.width)),"height"in o&&(g=Number(o.height)),"center"in o&&(s=o.center.x,r=o.center.y),s!==void 0&&r!==void 0)A=Math.min(A,s),t=Math.min(t,r),i=Math.max(i,s),n=Math.max(n,r),a!==void 0&&g!==void 0&&(A=Math.min(A,s-a/2),t=Math.min(t,r-g/2),i=Math.max(i,s+a/2),n=Math.max(n,r+g/2)),"radius"in o&&(A=Math.min(A,s-o.radius),t=Math.min(t,r-o.radius),i=Math.max(i,s+o.radius),n=Math.max(n,r+o.radius));else if(o.type==="pcb_trace")for(const c of o.route)A=Math.min(A,c.x),t=Math.min(t,c.y),i=Math.max(i,c.x),n=Math.max(n,c.y)}return{minX:A,minY:t,maxX:i,maxY:n}};function g6e(e){let A=0;if(e.length==0)return A;for(var t=0;t<e.length;t++){var i=e.charCodeAt(t);A=(A<<5)-A+i,A=A&A}return Math.abs(A)}var Tut=[["#69d2e7","#a7dbd8","#e0e4cc","#f38630","#fa6900"],["#fe4365","#fc9d9a","#f9cdad","#c8c8a9","#83af9b"],["#ecd078","#d95b43","#c02942","#542437","#53777a"],["#556270","#4ecdc4","#c7f464","#ff6b6b","#c44d58"],["#774f38","#e08e79","#f1d4af","#ece5ce","#c5e0dc"],["#e8ddcb","#cdb380","#036564","#033649","#031634"],["#490a3d","#bd1550","#e97f02","#f8ca00","#8a9b0f"],["#594f4f","#547980","#45ada8","#9de0ad","#e5fcc2"],["#00a0b0","#6a4a3c","#cc333f","#eb6841","#edc951"],["#e94e77","#d68189","#c6a49a","#c6e5d9","#f4ead5"],["#3fb8af","#7fc7af","#dad8a7","#ff9e9d","#ff3d7f"],["#d9ceb2","#948c75","#d5ded9","#7a6a53","#99b2b7"],["#ffffff","#cbe86b","#f2e9e1","#1c140d","#cbe86b"],["#efffcd","#dce9be","#555152","#2e2633","#99173c"],["#343838","#005f6b","#008c9e","#00b4cc","#00dffc"],["#413e4a","#73626e","#b38184","#f0b49e","#f7e4be"],["#ff4e50","#fc913a","#f9d423","#ede574","#e1f5c4"],["#99b898","#fecea8","#ff847c","#e84a5f","#2a363b"],["#655643","#80bca3","#f6f7bd","#e6ac27","#bf4d28"],["#00a8c6","#40c0cb","#f9f2e7","#aee239","#8fbe00"],["#351330","#424254","#64908a","#e8caa4","#cc2a41"],["#554236","#f77825","#d3ce3d","#f1efa5","#60b99a"],["#5d4157","#838689","#a8caba","#cad7b2","#ebe3aa"],["#8c2318","#5e8c6a","#88a65e","#bfb35a","#f2c45a"],["#fad089","#ff9c5b","#f5634a","#ed303c","#3b8183"],["#ff4242","#f4fad2","#d4ee5e","#e1edb9","#f0f2eb"],["#f8b195","#f67280","#c06c84","#6c5b7b","#355c7d"],["#d1e751","#ffffff","#000000","#4dbce9","#26ade4"],["#1b676b","#519548","#88c425","#bef202","#eafde6"],["#5e412f","#fcebb6","#78c0a8","#f07818","#f0a830"],["#bcbdac","#cfbe27","#f27435","#f02475","#3b2d38"],["#452632","#91204d","#e4844a","#e8bf56","#e2f7ce"],["#eee6ab","#c5bc8e","#696758","#45484b","#36393b"],["#f0d8a8","#3d1c00","#86b8b1","#f2d694","#fa2a00"],["#2a044a","#0b2e59","#0d6759","#7ab317","#a0c55f"],["#f04155","#ff823a","#f2f26f","#fff7bd","#95cfb7"],["#b9d7d9","#668284","#2a2829","#493736","#7b3b3b"],["#bbbb88","#ccc68d","#eedd99","#eec290","#eeaa88"],["#b3cc57","#ecf081","#ffbe40","#ef746f","#ab3e5b"],["#a3a948","#edb92e","#f85931","#ce1836","#009989"],["#300030","#480048","#601848","#c04848","#f07241"],["#67917a","#170409","#b8af03","#ccbf82","#e33258"],["#aab3ab","#c4cbb7","#ebefc9","#eee0b7","#e8caaf"],["#e8d5b7","#0e2430","#fc3a51","#f5b349","#e8d5b9"],["#ab526b","#bca297","#c5ceae","#f0e2a4","#f4ebc3"],["#607848","#789048","#c0d860","#f0f0d8","#604848"],["#b6d8c0","#c8d9bf","#dadabd","#ecdbbc","#fedcba"],["#a8e6ce","#dcedc2","#ffd3b5","#ffaaa6","#ff8c94"],["#3e4147","#fffedf","#dfba69","#5a2e2e","#2a2c31"],["#fc354c","#29221f","#13747d","#0abfbc","#fcf7c5"],["#cc0c39","#e6781e","#c8cf02","#f8fcc1","#1693a7"],["#1c2130","#028f76","#b3e099","#ffeaad","#d14334"],["#a7c5bd","#e5ddcb","#eb7b59","#cf4647","#524656"],["#dad6ca","#1bb0ce","#4f8699","#6a5e72","#563444"],["#5c323e","#a82743","#e15e32","#c0d23e","#e5f04c"],["#edebe6","#d6e1c7","#94c7b6","#403b33","#d3643b"],["#fdf1cc","#c6d6b8","#987f69","#e3ad40","#fcd036"],["#230f2b","#f21d41","#ebebbc","#bce3c5","#82b3ae"],["#b9d3b0","#81bda4","#b28774","#f88f79","#f6aa93"],["#3a111c","#574951","#83988e","#bcdea5","#e6f9bc"],["#5e3929","#cd8c52","#b7d1a3","#dee8be","#fcf7d3"],["#1c0113","#6b0103","#a30006","#c21a01","#f03c02"],["#000000","#9f111b","#b11623","#292c37","#cccccc"],["#382f32","#ffeaf2","#fcd9e5","#fbc5d8","#f1396d"],["#e3dfba","#c8d6bf","#93ccc6","#6cbdb5","#1a1f1e"],["#f6f6f6","#e8e8e8","#333333","#990100","#b90504"],["#1b325f","#9cc4e4","#e9f2f9","#3a89c9","#f26c4f"],["#a1dbb2","#fee5ad","#faca66","#f7a541","#f45d4c"],["#c1b398","#605951","#fbeec2","#61a6ab","#accec0"],["#5e9fa3","#dcd1b4","#fab87f","#f87e7b","#b05574"],["#951f2b","#f5f4d7","#e0dfb1","#a5a36c","#535233"],["#8dccad","#988864","#fea6a2","#f9d6ac","#ffe9af"],["#2d2d29","#215a6d","#3ca2a2","#92c7a3","#dfece6"],["#413d3d","#040004","#c8ff00","#fa023c","#4b000f"],["#eff3cd","#b2d5ba","#61ada0","#248f8d","#605063"],["#ffefd3","#fffee4","#d0ecea","#9fd6d2","#8b7a5e"],["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"],["#9dc9ac","#fffec7","#f56218","#ff9d2e","#919167"],["#4e395d","#827085","#8ebe94","#ccfc8e","#dc5b3e"],["#a8a7a7","#cc527a","#e8175d","#474747","#363636"],["#f8edd1","#d88a8a","#474843","#9d9d93","#c5cfc6"],["#046d8b","#309292","#2fb8ac","#93a42a","#ecbe13"],["#f38a8a","#55443d","#a0cab5","#cde9ca","#f1edd0"],["#a70267","#f10c49","#fb6b41","#f6d86b","#339194"],["#ff003c","#ff8a00","#fabe28","#88c100","#00c176"],["#ffedbf","#f7803c","#f54828","#2e0d23","#f8e4c1"],["#4e4d4a","#353432","#94ba65","#2790b0","#2b4e72"],["#0ca5b0","#4e3f30","#fefeeb","#f8f4e4","#a5b3aa"],["#4d3b3b","#de6262","#ffb88c","#ffd0b3","#f5e0d3"],["#fffbb7","#a6f6af","#66b6ab","#5b7c8d","#4f2958"],["#edf6ee","#d1c089","#b3204d","#412e28","#151101"],["#9d7e79","#ccac95","#9a947c","#748b83","#5b756c"],["#fcfef5","#e9ffe1","#cdcfb7","#d6e6c3","#fafbe3"],["#9cddc8","#bfd8ad","#ddd9ab","#f7af63","#633d2e"],["#30261c","#403831","#36544f","#1f5f61","#0b8185"],["#aaff00","#ffaa00","#ff00aa","#aa00ff","#00aaff"],["#d1313d","#e5625c","#f9bf76","#8eb2c5","#615375"],["#ffe181","#eee9e5","#fad3b2","#ffba7f","#ff9c97"],["#73c8a9","#dee1b6","#e1b866","#bd5532","#373b44"],["#805841","#dcf7f3","#fffcdd","#ffd8d8","#f5a2a2"]],c6e=e=>{let{x:A,y:t,width:i,height:n}={...e,...e.size,...e.center,...e.position};if(e.x1!==void 0&&e.x2!==void 0&&e.y1!==void 0&&e.y2!==void 0&&(A=(e.x1+e.x2)/2,t=(e.y1+e.y2)/2,i=Math.abs(e.x1-e.x2),n=Math.abs(e.y1-e.y2)),e.points&&Array.isArray(e.points)&&e.points.length>0){const r=e.points.map(B=>B.x),a=e.points.map(B=>B.y),g=Math.min(...r),c=Math.max(...r),I=Math.min(...a),l=Math.max(...a);A=(g+c)/2,t=(I+l)/2,i=c-g,n=l-I}const o=e.text||e.name||e.source?.text||e.source?.name||"?",s=e;return A===void 0||t===void 0?null:(i===void 0&&"outer_diameter"in e&&(i=e.outer_diameter,n=e.outer_diameter),(i===void 0||n===void 0)&&(i=.1,n=.1),{x:A,y:t,width:i,height:n,title:o,content:s,bg_color:Tut[g6e(e.type||o)%Tut.length]?.[4]??"#f00"})},I6e=e=>!!e,l6e=e=>{const A=e.filter(g=>g.type.startsWith("pcb_")||g.type.startsWith("schematic_")).concat(e.filter(g=>g.type==="pcb_trace"||g.type==="schematic_trace").flatMap(g=>g.route)).map(g=>c6e(g)).filter(I6e);if(A.length===0)return{center:{x:0,y:0},width:0,height:0};let t=A[0].x-A[0].width/2,i=A[0].x+A[0].width/2,n=A[0].y-A[0].height/2,o=A[0].y+A[0].height/2;for(const g of A.slice(1))t=Math.min(t,g.x-g.width/2),i=Math.max(i,g.x+g.width/2),n=Math.min(n,g.y-g.height/2),o=Math.max(o,g.y+g.height/2);const s=i-t,r=o-n;return{center:{x:t+s/2,y:n+r/2},width:s,height:r}},Rb={IS_SHOWING_PCB_GROUPS:"pcb_viewer_is_showing_pcb_groups",PCB_GROUP_VIEW_MODE:"pcb_viewer_group_view_mode",IS_SHOWING_COPPER_POURS:"pcb_viewer_is_showing_copper_pours",IS_SHOWING_GROUP_ANCHOR_OFFSETS:"pcb_viewer_is_showing_group_anchor_offsets",IS_SHOWING_SOLDER_MASK:"pcb_viewer_is_showing_solder_mask"},pz=(e,A)=>{if(typeof window>"u")return A;try{const t=localStorage.getItem(e);return t!==null?JSON.parse(t):A}catch{return A}},fz=(e,A)=>{if(!(typeof window>"u"))try{localStorage.setItem(e,JSON.stringify(A))}catch{}},B6e=(e,A)=>{if(typeof window>"u")return A;try{const t=localStorage.getItem(e);return t!==null?JSON.parse(t):A}catch{return A}},C6e=(e,A)=>{if(!(typeof window>"u"))try{localStorage.setItem(e,JSON.stringify(A))}catch{}},h6e="named_only",Q6e=(e={},A=!1)=>K5A(t=>({selected_layer:"top",pcb_viewer_id:`pcb_viewer_${Math.random().toString().slice(2,10)}`,in_edit_mode:!1,in_move_footprint_mode:!1,in_draw_trace_mode:!1,is_moving_component:!1,is_drawing_trace:!1,is_mouse_over_container:!1,is_showing_multiple_traces_length:!1,is_showing_rats_nest:!1,is_showing_autorouting:!0,is_showing_drc_errors:!0,is_showing_copper_pours:pz(Rb.IS_SHOWING_COPPER_POURS,!0),is_showing_pcb_groups:A?!1:pz(Rb.IS_SHOWING_PCB_GROUPS,!0),is_showing_group_anchor_offsets:pz(Rb.IS_SHOWING_GROUP_ANCHOR_OFFSETS,!0),is_showing_solder_mask:pz(Rb.IS_SHOWING_SOLDER_MASK,!1),pcb_group_view_mode:A?"all":B6e(Rb.PCB_GROUP_VIEW_MODE,h6e),hovered_error_id:null,...e,selectLayer:i=>t({selected_layer:i}),setEditMode:i=>t({in_edit_mode:i!=="off",in_move_footprint_mode:i==="move_footprint",in_draw_trace_mode:i==="draw_trace",is_moving_component:!1,is_drawing_trace:!1}),setIsShowingRatsNest:i=>t({is_showing_rats_nest:i}),setIsMovingComponent:i=>t({is_moving_component:i}),setIsDrawingTrace:i=>t({is_drawing_trace:i}),setIsMouseOverContainer:i=>t({is_mouse_over_container:i}),setIsShowingMultipleTracesLength:i=>t({is_showing_multiple_traces_length:i}),setIsShowingAutorouting:i=>t({is_showing_autorouting:i}),setIsShowingDrcErrors:i=>t({is_showing_drc_errors:i}),setIsShowingCopperPours:i=>{fz(Rb.IS_SHOWING_COPPER_POURS,i),t({is_showing_copper_pours:i})},setIsShowingPcbGroups:i=>{A||(fz(Rb.IS_SHOWING_PCB_GROUPS,i),t({is_showing_pcb_groups:i}))},setIsShowingGroupAnchorOffsets:i=>{fz(Rb.IS_SHOWING_GROUP_ANCHOR_OFFSETS,i),t({is_showing_group_anchor_offsets:i})},setIsShowingSolderMask:i=>{fz(Rb.IS_SHOWING_SOLDER_MASK,i),t({is_showing_solder_mask:i})},setPcbGroupViewMode:i=>{A||(C6e(Rb.PCB_GROUP_VIEW_MODE,i),t({pcb_group_view_mode:i}))},setHoveredErrorId:i=>t({hovered_error_id:i})})),n0=e=>{const A=gA.useContext(Kut);return $5A(A,e)},Kut=gA.createContext(null),u6e=({children:e,initialState:A,disablePcbGroups:t})=>{const i=gA.useMemo(()=>Q6e(A,t),[t]);return iA.jsx(Kut.Provider,{value:i,children:e})},E6e=()=>{const e=n0(t=>t.pcb_viewer_id),A=(t,i)=>nh(t,{containerId:e,...i});return A.error=(t,i)=>nh.error(t,{containerId:e,...i}),A.promise=nh.promise,A},d6e=()=>{gA.useEffect(()=>{Jje()},[]);const e=n0(A=>A.pcb_viewer_id);return iA.jsx(Yje,{position:"top-center",containerId:e})},p6e=function(){},qut=typeof window<"u",f6e=qut?gA.useLayoutEffect:gA.useEffect,y6e=f6e,Put={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function m6e(){var e=gA.useState(null),A=e[0],t=e[1],i=gA.useState(Put),n=i[0],o=i[1],s=gA.useMemo(function(){return new window.ResizeObserver(function(r){if(r[0]){var a=r[0].contentRect,g=a.x,c=a.y,I=a.width,l=a.height,B=a.top,C=a.left,h=a.bottom,u=a.right;o({x:g,y:c,width:I,height:l,top:B,left:C,bottom:h,right:u})}})},[]);return y6e(function(){if(A)return s.observe(A),function(){s.disconnect()}},[A]),[t,n]}var N4=qut&&typeof window.ResizeObserver<"u"?m6e:function(){return[p6e,Put]},Out=({initialTransform:e,initialTouch1:A,initialTouch2:t,finalTouch1:i,finalTouch2:n})=>{if(!i||!n)return e;const o={x:(A.x+t.x)/2,y:(A.y+t.y)/2},s={x:(i.x+n.x)/2,y:(i.y+n.y)/2},r=Math.hypot(t.x-A.x,t.y-A.y),a=Math.hypot(n.x-i.x,n.y-i.y),g=r===0?1:a/r,c=s.x-o.x,I=s.y-o.y;return ko(Jo(c,I),Jo(o.x,o.y),jC(g,g),Jo(-o.x,-o.y),e)},w6e=(e={})=>{const A=gA.useRef(null),[t,i]=gA.useState(0),n=e.canvasElm??A.current,[o,s]=gA.useState(e.initialTransform??RB()),[r,a]=gA.useState(0),[g,c]=gA.useReducer(f=>f+1,0),I=gA.useCallback(f=>{e.onSetTransform&&e.onSetTransform(f),e.transform||s(f)},[e.onSetTransform,s]),l=gA.useCallback(f=>{I(f),c()},[I]),B=e.transform??o,C=gA.useCallback(()=>{i(Date.now())},[]),h=gA.useRef("none"),u=gA.useRef(null),E=gA.useRef(null);gA.useEffect(()=>{const f=e.canvasElm??A.current;if(f&&!n){a(r+1);return}if(!f){const z=setTimeout(()=>{a(r+1)},100);return()=>clearTimeout(z)}let m=e.transform??o,S={x:0,y:0},_={x:0,y:0},v=!1;const D=z=>({x:z.pageX-f.getBoundingClientRect().left-window.scrollX,y:z.pageY-f.getBoundingClientRect().top-window.scrollY});function k(z){e.enabled!==!1&&(e.shouldDrag&&!e.shouldDrag(z)||(S=D(z),!(Date.now()-t<100)&&(v=!0,z.preventDefault())))}function b(z){if(!v||e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA),m=nA,v=!1}function M(z){if(D(z),!v||e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA)}function N(z){if(e.enabled===!1||e.shouldDrag&&!e.shouldDrag(z))return;const nA=D(z),cA=ko(Jo(nA.x,nA.y),jC(1-z.deltaY/1e3,1-z.deltaY/1e3),Jo(-nA.x,-nA.y),m);I(cA),m=cA,z.preventDefault()}function T(z){if(!v||e.shouldDrag&&!e.shouldDrag(z))return;if(f){const cA=f.getBoundingClientRect();if(z.clientX>=cA.left+10&&z.clientX<=cA.right-10&&z.clientY>=cA.top+10&&z.clientY<=cA.bottom-10)return}v=!1,_=D(z);const nA=ko(Jo(_.x-S.x,_.y-S.y),m);I(nA),m=nA}function K(z){if(z.preventDefault(),e.enabled!==!1){if(z.touches.length===1){h.current="drag";const nA=z.touches[0];u.current={initialTransform:m,initialTouch:{x:nA.clientX,y:nA.clientY}}}else if(z.touches.length===2){h.current="pinch";const nA=z.touches[0],cA=z.touches[1];E.current={initialTransform:m,initialTouch1:{x:nA.clientX,y:nA.clientY},initialTouch2:{x:cA.clientX,y:cA.clientY},finalTouch1:null,finalTouch2:null}}}}function P(z){if(z.preventDefault(),e.enabled!==!1){if(h.current==="drag"&&z.touches.length===1&&u.current){const nA=z.touches[0],cA={x:nA.clientX,y:nA.clientY},hA=cA.x-u.current.initialTouch.x,tA=cA.y-u.current.initialTouch.y,aA=ko(Jo(hA,tA),u.current.initialTransform);I(aA)}else if(h.current==="pinch"&&z.touches.length===2&&E.current){const nA=z.touches[0],cA=z.touches[1];E.current.finalTouch1={x:nA.clientX,y:nA.clientY},E.current.finalTouch2={x:cA.clientX,y:cA.clientY};const hA=Out(E.current);I(hA)}}}function V(z){z.preventDefault();const nA=z.changedTouches[0];if(h.current==="drag"&&u.current&&nA){const cA={x:nA.clientX,y:nA.clientY},hA=cA.x-u.current.initialTouch.x,tA=cA.y-u.current.initialTouch.y,aA=ko(Jo(hA,tA),u.current.initialTransform);I(aA),m=aA}else if(h.current==="pinch"&&E.current){const cA=Out(E.current);I(cA),m=cA}h.current="none",u.current=null,E.current=null}return f.addEventListener("mousedown",k),f.addEventListener("mouseup",b),window.addEventListener("mousemove",M),f.addEventListener("mouseout",T),f.addEventListener("wheel",N),f.addEventListener("touchstart",K,{passive:!1}),f.addEventListener("touchmove",P,{passive:!1}),f.addEventListener("touchend",V,{passive:!1}),f.addEventListener("touchcancel",V,{passive:!1}),()=>{f.removeEventListener("mousedown",k),f.removeEventListener("mouseup",b),window.removeEventListener("mousemove",M),f.removeEventListener("mouseout",T),f.removeEventListener("wheel",N),f.removeEventListener("touchstart",K),f.removeEventListener("touchmove",P),f.removeEventListener("touchend",V),f.removeEventListener("touchcancel",V)}},[n,r,g,t,e.enabled,e.shouldDrag]);const p=gA.useCallback(f=>Ut(B,f),[B]);return{ref:A,transform:B,applyTransformToPoint:p,setTransform:l,cancelDrag:C}},D6e=w6e;function _6e(e){const A=new Map;let t=0;function i(n){for(const[,s]of A)if(s.has(n))return s;const o=new Set;return A.set(`connectivity_net${t++}`,o),o}for(const n of e){let o=null;for(const s of n){if(!o)o=i(s);else if(!o.has(s)){const r=i(s);if(r!==o){for(const a of r)o.add(a);A.delete(Array.from(A.entries()).find(([,a])=>a===r)[0])}}o.add(s)}}return Object.fromEntries(Array.from(A.entries()).map(([n,o])=>[n,Array.from(o)]))}var x6e=class{netMap;idToNetMap;constructor(A){this.netMap=A,this.idToNetMap={};for(const[t,i]of Object.entries(A))for(const n of i)this.idToNetMap[n]=t}addConnections(A){for(const t of A){const i=new Set;for(const o of t){const s=this.idToNetMap[o];s&&i.add(s)}let n;if(i.size===0)n=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[n]=[];else if(i.size===1)n=i.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{n=i.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const o of i)if(o!==n){this.netMap[n].push(...this.netMap[o]),this.netMap[o]=this.netMap[n];for(const s of this.netMap[n])this.idToNetMap[s]=n}}for(const o of t)this.netMap[n].includes(o)||this.netMap[n].push(o),this.idToNetMap[o]=n}}getIdsConnectedToNet(A){return this.netMap[A]||[]}getNetConnectedToId(A){return this.idToNetMap[A]}areIdsConnected(A,t){if(A===t)return!0;const i=this.getNetConnectedToId(A);if(!i)return!1;const n=this.getNetConnectedToId(t);return n?i===n||n===A||n===A:!1}areAllIdsConnected(A){const t=this.getNetConnectedToId(A[0]);for(const i of A){const n=this.getNetConnectedToId(i);if(n===void 0||n!==t)return!1}return!0}},Wut=e=>{const A=[];for(const i of e)if(i.type==="source_trace")A.push([i.source_trace_id,...i.connected_source_port_ids??[],...i.connected_source_net_ids??[]].filter(Boolean));else if(i.type==="pcb_port"){const{pcb_port_id:n,source_port_id:o}=i;o&&n&&A.push([o,n])}else if(i.type==="pcb_smtpad"){const{pcb_smtpad_id:n,pcb_port_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="pcb_plated_hole"){const{pcb_plated_hole_id:n,pcb_port_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="pcb_trace"){const{pcb_trace_id:n,source_trace_id:o}=i,s=Array.isArray(i.route)?i.route.filter(r=>r&&r.route_type==="wire"):[];if(o&&n&&A.push([n,o]),Array.isArray(s)){const r=s.find(g=>g&&g.start_pcb_port_id)?.start_pcb_port_id,a=s.find(g=>g&&g.end_pcb_port_id)?.end_pcb_port_id;r&&n&&a&&A.push([r,n,a])}}else if(i.type==="pcb_via"){const{pcb_via_id:n,pcb_trace_id:o}=i;o&&n&&A.push([n,o])}else if(i.type==="source_component"&&i.internally_connected_source_port_ids)for(const n of i.internally_connected_source_port_ids)A.push(n);const t=_6e(A);return new x6e(t)};function b6e({primitivesWithoutInteractionMetadata:e,drawingObjectIdsWithMouseOver:A,primitiveIdsInMousedOverNet:t}){const i=[];for(const n of e){const o={...n};n?.layer==="drill"?(o.is_in_highlighted_net=!1,o.is_mouse_over=!1):A.has(n._pcb_drawing_object_id)?o.is_mouse_over=!0:n._element&&("pcb_trace_id"in n._element&&t.includes(n._element.pcb_trace_id)||"pcb_port_id"in n._element&&t.includes(n._element.pcb_port_id))?o.is_in_highlighted_net=!0:(o.is_in_highlighted_net=!1,o.is_mouse_over=!1),i.push(o)}return i}function S6e(e,A){if(e.length<2)throw new Error("Stroke must have at least two points");const t=e.map(I=>Array.isArray(I)?{x:I[0],y:I[1]}:I),i=[],n=[];function o(I,l){const B=l.x-I.x,C=l.y-I.y,h=Math.sqrt(B*B+C*C);return{x:-C/h,y:B/h}}function s(I,l,B,C){const h=C/2,u={x:I.x+l.x*h*B,y:I.y+l.y*h*B};B>0?i.push(u):n.unshift(u)}const r=o(t[0],t[1]),a=t[0].trace_width??A;s(t[0],r,1,a),s(t[0],r,-1,a);for(let I=1;I<t.length-1;I++){const l=t[I-1],B=t[I],C=t[I+1],h=o(l,B),u=o(B,C),E=h.x+u.x,p=h.y+u.y,f=Math.sqrt(E*E+p*p),m=B.trace_width??A;if(f/2>2*(m/2))s(B,h,1,m),s(B,u,1,m),s(B,h,-1,m),s(B,u,-1,m);else{const _=1/f;s(B,{x:E*_,y:p*_},1,m),s(B,{x:E*_,y:p*_},-1,m)}}const g=o(t[t.length-2],t[t.length-1]),c=t[t.length-1].trace_width??A;return s(t[t.length-1],g,1,c),s(t[t.length-1],g,-1,c),[...i,...n]}var Qs=0,tu=e=>`${e}_${Qs++}`,$F=e=>(e??[]).map(A=>({x:Xe.parse(A.x),y:Xe.parse(A.y)})),v6e=(e,A)=>{const t="pcb_component_id"in e?A.find(s=>s.type==="pcb_component"&&s.pcb_component_id===e.pcb_component_id):void 0,i=t&&"source_component_id"in t?A.find(s=>s.type==="source_component"&&s.source_component_id===t.source_component_id):void 0,n="source_port_id"in e?e.source_port_id:"pcb_port_id"in e?_k(A).pcb_port.get(e.pcb_port_id)?.source_port_id:void 0,o=n?A.find(s=>s.type==="source_port"&&s.source_port_id===n):void 0;switch(e.type){case"pcb_panel":{const{width:s,height:r,center:a}=e,g=a?.x??0,c=a?.y??0;return[{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:g-s/2,y1:c-r/2,x2:g+s/2,y2:c-r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:g-s/2,y1:c+r/2,x2:g+s/2,y2:c+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:g-s/2,y1:c-r/2,x2:g-s/2,y2:c+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:g+s/2,y1:c-r/2,x2:g+s/2,y2:c+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e}]}case"pcb_board":{const{width:s,height:r,center:a,outline:g}=e,c=[];return A.some(l=>l.type==="pcb_smtpad"&&l.is_covered_with_solder_mask===!0)&&(g&&g.length>2?(c.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(g),layer:"soldermask_top",_element:e}),c.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(g),layer:"soldermask_bottom",_element:e})):s&&r&&(c.push({_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:a.x,y:a.y,w:s,h:r,layer:"soldermask_top",_element:e}),c.push({_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:a.x,y:a.y,w:s,h:r,layer:"soldermask_bottom",_element:e}))),g&&g.length>2?c.push(...g.map((l,B,C)=>({_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:l.x,y1:l.y,x2:B===C.length-1?C[0].x:C[B+1].x,y2:B===C.length-1?C[0].y:C[B+1].y,width:1,zoomIndependent:!0,layer:"board",_element:e}))):c.push({_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y-r/2,x2:a.x+s/2,y2:a.y-r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y+r/2,x2:a.x+s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x-s/2,y1:a.y-r/2,x2:a.x-s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e},{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:a.x+s/2,y1:a.y-r/2,x2:a.x+s/2,y2:a.y+r/2,width:1,zoomIndependent:!0,layer:"board",_element:e}),c}case"pcb_smtpad":{if(e.shape==="rect"||e.shape==="rotated_rect"){const{shape:s,x:r,y:a,width:g,height:c,layer:I,rect_border_radius:l}=e,B=e.corner_radius??l??0,C=[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:r,y:a,w:g,h:c,layer:I||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation,roundness:B}];if(e.is_covered_with_solder_mask){const h=I==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",u={_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:r,y:a,w:g,h:c,layer:h,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation,roundness:B};e.solder_mask_color&&(u.color=e.solder_mask_color),C.push(u)}return C}else if(e.shape==="circle"){const{x:s,y:r,radius:a,layer:g}=e,c=[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a,layer:g||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];if(e.is_covered_with_solder_mask){const I=g==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",l={_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a,layer:I,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o};e.solder_mask_color&&(l.color=e.solder_mask_color),c.push(l)}return c}else if(e.shape==="polygon"){const{layer:s,points:r}=e,a=[{_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(r),layer:s||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];if(e.is_covered_with_solder_mask){const g=s==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",c={_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:$F(r),layer:g,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o};e.solder_mask_color&&(c.color=e.solder_mask_color),a.push(c)}return a}else if(e.shape==="pill"||e.shape==="rotated_pill"){const{x:s,y:r,width:a,height:g,layer:c}=e,I=[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:c||"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation}];if(e.is_covered_with_solder_mask){const l=c==="bottom"?"soldermask_with_copper_bottom":"soldermask_with_copper_top",B={_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation};e.solder_mask_color&&(B.color=e.solder_mask_color),I.push(B)}return I}return[]}case"pcb_hole":{if(e.hole_shape==="circle"||!e.hole_shape){const{x:s,y:r,hole_diameter:a}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}else if(e.hole_shape==="pill"||e.hole_shape==="rotated_pill"){const{x:s,y:r,hole_width:a,hole_height:g}=e;return typeof a!="number"||typeof g!="number"?[]:[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i,ccw_rotation:e.ccw_rotation}]}else if(e.hole_shape==="rect"){const{x:s,y:r,hole_width:a,hole_height:g}=e;return typeof a!="number"||typeof g!="number"?[]:[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:a,h:g,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}return[]}case"pcb_plated_hole":if(e.shape==="circle"){const{x:s,y:r,hole_diameter:a,outer_diameter:g}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:g/2,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o},{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:"drill",_element:e}]}else if(e.shape==="oval"){const{x:s,y:r,outer_height:a,outer_width:g,hole_height:c,hole_width:I}=e;return[{_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:s,y:r,rX:g/2,rY:a/2,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o},{_pcb_drawing_object_id:`oval_${Qs++}`,_element:e,pcb_drawing_type:"oval",x:s,y:r,rX:I/2,rY:c/2,layer:"drill"}]}else if(e.shape==="pill"){const{x:s,y:r,outer_height:a,outer_width:g,hole_height:c,hole_width:I}=e;return[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:s,y:r,w:g,h:a,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:e.ccw_rotation},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:I,h:c,layer:"drill",ccw_rotation:e.ccw_rotation}]}else if(e.shape==="circular_hole_with_rect_pad"){const{x:s,y:r,hole_diameter:a,rect_pad_width:g,rect_pad_height:c,rect_border_radius:I}=e,l=e.hole_offset_x??0,B=e.hole_offset_y??0;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:g,h:c,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:I},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:g,h:c,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:I},{_pcb_drawing_object_id:`circle_${Qs++}`,_element:e,pcb_drawing_type:"circle",x:s+l,y:r+B,r:a/2,layer:"drill"}]}else if(e.shape==="pill_hole_with_rect_pad"){const{x:s,y:r,hole_width:a,hole_height:g,rect_pad_width:c,rect_pad_height:I,rect_border_radius:l}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:c,h:I,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:l},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:c,h:I,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,roundness:l},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill"}]}else if(e.shape==="rotated_pill_hole_with_rect_pad"){const{x:s,y:r,hole_width:a,hole_height:g,hole_ccw_rotation:c,rect_pad_width:I,rect_pad_height:l,rect_ccw_rotation:B,rect_border_radius:C}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:I,h:l,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:B,roundness:C},{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s,y:r,w:I,h:l,layer:"bottom",_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o,ccw_rotation:B,roundness:C},{_pcb_drawing_object_id:`pill_${Qs++}`,_element:e,pcb_drawing_type:"pill",x:s,y:r,w:a,h:g,layer:"drill",ccw_rotation:c}]}else if(e.shape==="hole_with_polygon_pad"){const{x:s,y:r,pad_outline:a,hole_shape:g,hole_diameter:c,hole_width:I,hole_height:l,layers:B}=e,C=Xe.parse(e.hole_offset_x??0),h=Xe.parse(e.hole_offset_y??0),u=a,E=[];if(u&&Array.isArray(u)){const m=$F(u).map(S=>({x:S.x+s,y:S.y+r}));for(const S of B||["top","bottom"])E.push({_pcb_drawing_object_id:`polygon_${Qs++}`,pcb_drawing_type:"polygon",points:m,layer:S,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o})}const p={x:s+C,y:r+h},f=[];return g==="circle"?f.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:p.x,y:p.y,r:(c??0)/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}):g==="oval"?f.push({_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:p.x,y:p.y,rX:(I??0)/2,rY:(l??0)/2,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}):(g==="pill"||g==="rotated_pill")&&f.push({_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:p.x,y:p.y,w:I??0,h:l??0,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i,ccw_rotation:e.ccw_rotation}),[...E,...f]}else return[];case"pcb_keepout":{if(e.shape==="circle"){const{center:s,radius:r}=e;return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s.x,y:s.y,r,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,mesh_fill:!0}]}else if(e.shape==="rect"){const{center:s,width:r,height:a}=e;return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:s.x,y:s.y,w:r,h:a,layer:"top",_element:e,_parent_pcb_component:t,_parent_source_component:i,mesh_fill:!0}]}break}case"pcb_trace":{const s=[];if(e.route_thickness_mode==="interpolated"){const g=e.route.map(l=>({x:l.x,y:l.y,trace_width:l.route_type==="wire"?l.width:.5})),c=S6e(g,.5),I=e.route[0].layer;return s.push({_pcb_drawing_object_id:`polygon_${Qs++}`,_element:e,pcb_drawing_type:"polygon",points:c,layer:I}),e.route.forEach(l=>{l.route_type==="via"&&s.push({_pcb_drawing_object_id:`circle_${Qs++}`,_element:e,pcb_drawing_type:"circle",x:l.x,y:l.y,r:l.outer_diameter/2,layer:l.from_layer})}),s}let r=null,a=null;for(const g of e.route)g.route_type==="wire"&&(r!==null&&a!==null&&s.push({_pcb_drawing_object_id:`line_${Qs++}`,_element:e,pcb_drawing_type:"line",x1:r,y1:a,x2:g.x,y2:g.y,width:g.width,squareCap:!1,layer:g.layer}),r=g.x,a=g.y);return s}case"pcb_via":{const{x:s,y:r,outer_diameter:a,hole_diameter:g}=e,c=e.from_layer,I=e.to_layer,l=e.layers,B=[];c&&I?B.push(c,I):l&&Array.isArray(l)?B.push(...l):B.push("top","bottom");const C=[];for(const h of B)C.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:a/2,layer:h,_element:e,_parent_pcb_component:t,_parent_source_component:i});return C.push({_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:s,y:r,r:g/2,layer:"drill",_element:e}),C}case"pcb_silkscreen_rect":return[{_pcb_drawing_object_id:`rect_${Qs++}`,pcb_drawing_type:"rect",x:e.center.x,y:e.center.y,w:e.width,h:e.height,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",stroke_width:e.stroke_width,is_filled:e.is_filled,has_stroke:e.has_stroke,is_stroke_dashed:e.is_stroke_dashed,roundness:e.corner_radius,_element:e}];case"pcb_silkscreen_circle":return[{_pcb_drawing_object_id:`circle_${Qs++}`,pcb_drawing_type:"circle",x:e.center.x,y:e.center.y,r:e.radius,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_oval":return[{_pcb_drawing_object_id:`oval_${Qs++}`,pcb_drawing_type:"oval",x:e.center.x,y:e.center.y,rX:e.radius_x/2,rY:e.radius_y/2,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_pill":return[{_pcb_drawing_object_id:`pill_${Qs++}`,pcb_drawing_type:"pill",x:e.center.x,y:e.center.y,w:e.width,h:e.height,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_line":return[{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,width:.1,squareCap:!1,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_fabrication_note_rect":{const s=e,r=s.layer==="bottom"?"bottom_fabrication":"top_fabrication",a=s.has_stroke!==void 0?s.has_stroke:typeof s.stroke_width=="number"?s.stroke_width>0:void 0;return[{_pcb_drawing_object_id:tu("pcb_fabrication_note_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,roundness:s.corner_radius,layer:r,stroke_width:s.stroke_width,is_filled:s.is_filled,has_stroke:a,is_stroke_dashed:s.is_stroke_dashed,color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}]}case"pcb_fabrication_note_path":case"pcb_silkscreen_path":{const{pcb_component_id:s,route:r,type:a}=e;let g;if(a==="pcb_silkscreen_path")return g=e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",r.slice(0,-1).map((c,I)=>{const l=r[I+1];return{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:c.x,y1:c.y,x2:l.x,y2:l.y,width:e.stroke_width??.1,squareCap:!1,layer:g,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}}).filter(Boolean);if(a==="pcb_fabrication_note_path")return g="top_fabrication",r.slice(0,-1).map((c,I)=>{const l=r[I+1];return{_pcb_drawing_object_id:`line_${Qs++}`,pcb_drawing_type:"line",x1:c.x,y1:c.y,x2:l.x,y2:l.y,width:e.stroke_width??.1,squareCap:!1,layer:g,color:e.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}}).filter(Boolean)}case"pcb_silkscreen_text":return[{_pcb_drawing_object_id:`text_${Qs++}`,pcb_drawing_type:"text",x:e.anchor_position.x,y:e.anchor_position.y,layer:e.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",align:e.anchor_alignment??"center",text:e.text,size:e.font_size,ccw_rotation:e.ccw_rotation}];case"pcb_copper_pour":{const s=e;switch(s.shape){case"rect":{const{center:r,width:a,height:g,layer:c,rotation:I}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_rect"),pcb_drawing_type:"rect",x:r.x,y:r.y,w:a,h:g,layer:c,_element:e,ccw_rotation:I}]}case"polygon":{const{points:r,layer:a}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_polygon"),pcb_drawing_type:"polygon",points:$F(r),layer:a,_element:e}]}case"brep":{const{brep_shape:r,layer:a}=s;return[{_pcb_drawing_object_id:tu("pcb_copper_pour_brep"),pcb_drawing_type:"polygon_with_arcs",brep_shape:r,layer:a,_element:e}]}}return[]}case"pcb_fabrication_note_dimension":{const s=e,{from:r,to:a,text:g,font_size:c,arrow_size:I}=s,l=e.layer==="bottom"?"bottom_fabrication":"top_fabrication",B=[],C=typeof I=="number"&&!Number.isNaN(I)?I:1;B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:a.x,y2:a.y,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o});const h=a.x-r.x,u=a.y-r.y,E=Math.sqrt(h*h+u*u)||1,p=h/E,f=u/E,m=Math.PI/6,S=r.x+C*(p*Math.cos(m)-f*Math.sin(m)),_=r.y+C*(p*Math.sin(m)+f*Math.cos(m)),v=r.x+C*(p*Math.cos(-m)-f*Math.sin(-m)),D=r.y+C*(p*Math.sin(-m)+f*Math.cos(-m));B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:S,y2:_,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:v,y2:D,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o});const k=a.x-C*(p*Math.cos(m)-f*Math.sin(m)),b=a.y-C*(p*Math.sin(m)+f*Math.cos(m)),M=a.x-C*(p*Math.cos(-m)-f*Math.sin(-m)),N=a.y-C*(p*Math.sin(-m)+f*Math.cos(-m));if(B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:k,y2:b,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:M,y2:N,width:.05,squareCap:!1,layer:l,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}),g){const T=(c??1)*1.5,K=-f,P=p,V=(r.x+a.x)/2,z=(r.y+a.y)/2;let nA=T;Math.abs(p)>Math.abs(f)?nA=z>=0?T:-T:nA=V>=0?-T:T,B.push({_pcb_drawing_object_id:tu("pcb_fabrication_note_dimension"),pcb_drawing_type:"text",x:(r.x+a.x)/2+K*nA,y:(r.y+a.y)/2+P*nA,layer:l,align:"center",text:g,size:c,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o})}return B}case"pcb_fabrication_note_text":return[{_pcb_drawing_object_id:tu("text"),pcb_drawing_type:"text",x:e.anchor_position.x,y:e.anchor_position.y,layer:e.layer==="bottom"?"bottom_fabrication":"top_fabrication",size:e.font_size,align:e.anchor_alignment??"center",text:e.text,color:e.color,_element:e,_parent_pcb_component:t,_parent_source_component:i,_source_port:o}];case"pcb_cutout":switch(e.shape){case"rect":{const s=e,r=s.corner_radius,a=s.rotation??s.rotation;return[{_pcb_drawing_object_id:tu("pcb_cutout_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,layer:"drill",roundness:r,ccw_rotation:a,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"circle":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_cutout_circle"),pcb_drawing_type:"circle",x:s.center.x,y:s.center.y,r:s.radius,layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"polygon":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_cutout_polygon"),pcb_drawing_type:"polygon",points:$F(s.points),layer:"drill",_element:e,_parent_pcb_component:t,_parent_source_component:i}]}default:return console.warn(`Unsupported pcb_cutout shape: ${e.shape}`),[]}case"pcb_note_line":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_line"),pcb_drawing_type:"line",x1:s.x1,y1:s.y1,x2:s.x2,y2:s.y2,width:s.stroke_width??.1,squareCap:!1,layer:"notes",color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_rect":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_rect"),pcb_drawing_type:"rect",x:s.center.x,y:s.center.y,w:s.width,h:s.height,layer:"notes",stroke_width:s.stroke_width,is_filled:s.is_filled,has_stroke:s.has_stroke,is_stroke_dashed:s.is_stroke_dashed,color:s.color,roundness:s.corner_radius,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_path":{const s=e,{route:r,stroke_width:a}=s;return r.slice(0,-1).map((g,c)=>{const I=r[c+1];return{_pcb_drawing_object_id:tu("pcb_note_path"),pcb_drawing_type:"line",x1:g.x,y1:g.y,x2:I.x,y2:I.y,width:a??.1,squareCap:!1,layer:"notes",color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}}).filter(Boolean)}case"pcb_note_text":{const s=e;return[{_pcb_drawing_object_id:tu("pcb_note_text"),pcb_drawing_type:"text",x:s.anchor_position.x,y:s.anchor_position.y,layer:"notes",align:s.anchor_alignment??"center",text:s.text||"",size:s.font_size,color:s.color,_element:e,_parent_pcb_component:t,_parent_source_component:i}]}case"pcb_note_dimension":{const s=e,{from:r,to:a,text:g,font_size:c,arrow_size:I}=s,l=[];l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:a.x,y2:a.y,width:.05,squareCap:!1,color:s.color,layer:"notes",_element:e,_parent_pcb_component:t,_parent_source_component:i});const B=a.x-r.x,C=a.y-r.y,h=Math.sqrt(B*B+C*C),u=B/h,E=C/h,p=Math.PI/6,f=r.x+I*(u*Math.cos(p)-E*Math.sin(p)),m=r.y+I*(u*Math.sin(p)+E*Math.cos(p)),S=r.x+I*(u*Math.cos(-p)-E*Math.sin(-p)),_=r.y+I*(u*Math.sin(-p)+E*Math.cos(-p));l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:f,y2:m,width:.05,squareCap:!1,layer:"notes",_element:e}),l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:r.x,y1:r.y,x2:S,y2:_,width:.05,squareCap:!1,layer:"notes",_element:e});const v=a.x-I*(u*Math.cos(p)-E*Math.sin(p)),D=a.y-I*(u*Math.sin(p)+E*Math.cos(p)),k=a.x-I*(u*Math.cos(-p)-E*Math.sin(-p)),b=a.y-I*(u*Math.sin(-p)+E*Math.cos(-p));if(l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:v,y2:D,width:.05,squareCap:!1,layer:"notes",_element:e}),l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"line",x1:a.x,y1:a.y,x2:k,y2:b,width:.05,squareCap:!1,layer:"notes",_element:e}),g){const M=c*1.5,N=-E,T=u,K=(r.x+a.x)/2,P=(r.y+a.y)/2;let V=M;Math.abs(u)>Math.abs(E)?V=P>=0?M:-M:V=K>=0?-M:M,l.push({_pcb_drawing_object_id:tu("pcb_note_dimension"),pcb_drawing_type:"text",x:(r.x+a.x)/2+N*V,y:(r.y+a.y)/2+T*V,layer:"notes",align:"center",text:g,size:c,_element:e})}return l}}return[]},uQ={board:{anchor:"rgb(255, 38, 226)",aux_items:"rgb(255, 255, 255)",b_adhes:"rgb(0, 0, 132)",b_crtyd:"rgb(255, 38, 226)",b_fab:"rgb(88, 93, 132)",b_mask:"rgba(2, 255, 238, 0.400)",b_paste:"rgb(0, 194, 194)",b_silks:"rgb(242, 237, 161)",background:"rgb(0, 16, 35)",cmts_user:"rgb(89, 148, 220)",copper:{b:"rgb(77, 127, 196)",f:"rgb(200, 52, 52)",in1:"rgb(127, 200, 127)",in10:"rgb(237, 124, 51)",in11:"rgb(91, 195, 235)",in12:"rgb(247, 111, 142)",in13:"rgb(167, 165, 198)",in14:"rgb(40, 204, 217)",in15:"rgb(232, 178, 167)",in16:"rgb(242, 237, 161)",in17:"rgb(237, 124, 51)",in18:"rgb(91, 195, 235)",in19:"rgb(247, 111, 142)",in2:"rgb(206, 125, 44)",in20:"rgb(167, 165, 198)",in21:"rgb(40, 204, 217)",in22:"rgb(232, 178, 167)",in23:"rgb(242, 237, 161)",in24:"rgb(237, 124, 51)",in25:"rgb(91, 195, 235)",in26:"rgb(247, 111, 142)",in27:"rgb(167, 165, 198)",in28:"rgb(40, 204, 217)",in29:"rgb(232, 178, 167)",in3:"rgb(79, 203, 203)",in30:"rgb(242, 237, 161)",in4:"rgb(219, 98, 139)",in5:"rgb(167, 165, 198)",in6:"rgb(40, 204, 217)",in7:"rgb(232, 178, 167)",in8:"rgb(242, 237, 161)",in9:"rgb(141, 203, 129)"},cursor:"rgb(255, 255, 255)",drc:"rgb(194, 194, 194)",drc_error:"rgba(215, 91, 107, 0.800)",drc_exclusion:"rgb(255, 255, 255)",drc_warning:"rgba(255, 208, 66, 0.902)",dwgs_user:"rgb(194, 194, 194)",eco1_user:"rgb(180, 219, 210)",eco2_user:"rgb(216, 200, 82)",edge_cuts:"rgb(208, 210, 205)",f_adhes:"rgb(132, 0, 132)",f_crtyd:"rgb(255, 0, 245)",f_fab:"rgb(175, 175, 175)",f_mask:"rgba(216, 100, 255, 0.400)",f_paste:"rgba(180, 160, 154, 0.902)",f_silks:"rgb(242, 237, 161)",footprint_text_back:"rgb(0, 0, 132)",footprint_text_front:"rgb(194, 194, 194)",footprint_text_invisible:"rgb(132, 132, 132)",grid:"rgb(132, 132, 132)",grid_axes:"rgb(194, 194, 194)",margin:"rgb(255, 38, 226)",microvia:"rgb(0, 132, 132)",no_connect:"rgb(0, 0, 132)",pad_back:"rgb(77, 127, 196)",pad_front:"rgb(200, 52, 52)",pad_plated_hole:"rgb(194, 194, 0)",pad_through_hole:"rgb(227, 183, 46)",plated_hole:"rgb(26, 196, 210)",ratsnest:"rgba(245, 255, 213, 0.702)",select_overlay:"rgb(4, 255, 67)",soldermaskWithCopper:{top:"rgb(18, 82, 50)",bottom:"rgb(77, 127, 196)"},soldermask:{top:"rgb(12, 55, 33)",bottom:"rgb(12, 55, 33)"},through_via:"rgb(236, 236, 236)",user_1:"rgb(194, 194, 194)",user_2:"rgb(89, 148, 220)",user_3:"rgb(180, 219, 210)",user_4:"rgb(216, 200, 82)",user_5:"rgb(194, 194, 194)",user_6:"rgb(89, 148, 220)",user_7:"rgb(180, 219, 210)",user_8:"rgb(216, 200, 82)",user_9:"rgb(232, 178, 167)",via_blind_buried:"rgb(187, 151, 38)",via_hole:"rgb(227, 183, 46)",via_micro:"rgb(0, 132, 132)",via_through:"rgb(236, 236, 236)",worksheet:"rgb(200, 114, 171)"}},gw=(e,A=1)=>{if(Math.abs(e.a)!==Math.abs(e.d))throw new Error("Cannot scale non-uniformly");return A*Math.abs(e.a)},EQ={elementOverlay:40,dimensionOverlay:40,editTraceHintOverlay:40,errorOverlay:40,pcbGroupOverlay:35,ratsNestOverlay:30,toolbarOverlay:70,warnings:30,topLayer:20,clickToInteractOverlay:100},yz={red:"red",black:"black",green:"green",board:"rgb(255, 255, 255)",other:"#eee",top:uQ.board.copper.f,inner1:uQ.board.copper.in1,inner2:uQ.board.copper.in2,inner3:uQ.board.copper.in3,inner4:uQ.board.copper.in4,inner5:uQ.board.copper.in5,inner6:uQ.board.copper.in6,inner7:uQ.board.copper.in7,inner8:uQ.board.copper.in8,bottom:uQ.board.copper.b,drill:uQ.board.anchor,keepout:uQ.board.background,tkeepout:uQ.board.b_crtyd,tplace:uQ.board.b_silks,top_silkscreen:uQ.board.f_silks,bottom_silkscreen:uQ.board.b_silks,top_fabrication:uQ.board.f_fab,bottom_fabrication:uQ.board.b_fab,soldermask_top:uQ.board.soldermask.top,soldermask_bottom:uQ.board.soldermask.bottom,soldermask_with_copper_top:uQ.board.soldermaskWithCopper.top,soldermask_with_copper_bottom:uQ.board.soldermaskWithCopper.bottom,notes:uQ.board.user_2,...uQ.board},k6e=["inner6","inner5","inner4","inner3","inner2","inner1","bottom","soldermask_bottom","bottom_silkscreen","top","soldermask_top","top_silkscreen","soldermask_with_copper_bottom","soldermask_with_copper_top","board"],R6e=class{canvasLayerMap;ctxLayerMap;aperture;transform;foregroundLayer="top";lastPoint;constructor(e){this.canvasLayerMap=e,this.ctxLayerMap=Object.fromEntries(Object.entries(e).map(([A,t])=>[A,t.getContext("2d")])),this.transform=RB(),this.transform.d*=-1,this.transform=ko(this.transform,Jo(0,-500)),this.lastPoint={x:0,y:0},this.equip({})}clear(){for(const e of Object.values(this.ctxLayerMap))e.clearRect(0,0,e.canvas.width,e.canvas.height)}equip(e){this.aperture={fontSize:0,shape:"circle",mode:"add",size:0,color:"red",layer:"top",opacity:this.foregroundLayer===e.color?1:.5,...e}}drawMeshPattern(e,A,t,i,n,o=45){const s=this.getLayerCtx(),[r,a]=Ut(this.transform,[e,A]),[g,c]=Ut(this.transform,[e+t,A+i]),I=gw(this.transform,n);s.lineWidth=1,s.strokeStyle=this.aperture.color;const l=B=>{const C=Math.sin(B),h=Math.cos(B),u=Math.sqrt(Math.pow(g-r,2)+Math.pow(c-a,2));for(let E=-u;E<=u;E+=I)s.beginPath(),s.moveTo(r+E*h-u*C,a+E*C+u*h),s.lineTo(r+E*h+u*C,a+E*C-u*h),s.stroke()};l(o*Math.PI/180),l((o+90)*Math.PI/180)}rect({x:e,y:A,w:t,h:i,mesh_fill:n,is_filled:o=!0,has_stroke:s,is_stroke_dashed:r,stroke_width:a,roundness:g}){const[c,I]=Ut(this.transform,[e-t/2,A-i/2]),[l,B]=Ut(this.transform,[e+t/2,A+i/2]);this.applyAperture();const C=this.getLayerCtx(),h=g?gw(this.transform,g):0,u=s===void 0?o===!1:s;if(n)C.save(),C.beginPath(),h>0&&C.roundRect?C.roundRect(c,I,l-c,B-I,h):C.rect(c,I,l-c,B-I),C.clip(),this.drawMeshPattern(e-t/2,A-i/2,t,i,.15),C.restore(),h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.stroke()):C.strokeRect(c,I,l-c,B-I);else if(o!==!1&&(h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.fill()):C.fillRect(c,I,l-c,B-I)),u){const E=C.lineWidth;if(a!==void 0&&(C.lineWidth=gw(this.transform,a)),r){let p=[];const f=Math.abs(this.transform.a);if(f>0){const S=.1*f,_=S*1.3;S>.5&&(p=[S,_])}C.setLineDash(p)}h>0&&C.roundRect?(C.beginPath(),C.roundRect(c,I,l-c,B-I,h),C.stroke()):C.strokeRect(c,I,l-c,B-I),r&&C.setLineDash([]),a!==void 0&&(C.lineWidth=E)}}rotatedRect(e,A,t,i,n,o,s){const r=this.getLayerCtx();this.applyAperture();const[a,g]=Ut(this.transform,[e-t/2,A-i/2]),[c,I]=Ut(this.transform,[e+t/2,A+i/2]),l=o?gw(this.transform,o):0;r.save();const[B,C]=Ut(this.transform,[e,A]);r.translate(B,C);const h=360-n;n&&r.rotate(h*Math.PI/180),r.translate(-B,-C),s?(r.beginPath(),l>0&&r.roundRect?r.roundRect(a,g,c-a,I-g,l):r.rect(a,g,c-a,I-g),r.clip(),this.drawMeshPattern(e-t/2,A-i/2,t,i,.15),l>0&&r.roundRect?(r.beginPath(),r.roundRect(a,g,c-a,I-g,l),r.stroke()):r.strokeRect(a,g,c-a,I-g)):l>0&&r.roundRect?(r.beginPath(),r.roundRect(a,g,c-a,I-g,l),r.fill()):r.fillRect(a,g,c-a,I-g),r.restore()}rotatedPill(e,A,t,i,n){const o=this.getLayerCtx();this.applyAperture(),o.save();const[s,r]=Ut(this.transform,[e,A]);o.translate(s,r);const a=360-n;n&&o.rotate(a*Math.PI/180),o.translate(-s,-r),this.pill(e,A,t,i),o.restore()}circle(e,A,t,i){const n=gw(this.transform,t),[o,s]=Ut(this.transform,[e,A]);this.applyAperture();const r=this.getLayerCtx();i?(r.save(),r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.clip(),this.drawMeshPattern(e-t,A-t,t*2,t*2,.15),r.restore(),r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.stroke()):(r.beginPath(),r.arc(o,s,n,0,2*Math.PI),r.fill())}oval(e,A,t,i){const n=gw(this.transform,t),o=gw(this.transform,i),[s,r]=Ut(this.transform,[e,A]);this.applyAperture();const a=this.getLayerCtx();a.beginPath(),a.ellipse(s,r,n,o,0,0,2*Math.PI),a.fill(),a.closePath()}pill(e,A,t,i){const[n,o]=Ut(this.transform,[e-t/2,A+i/2]),s=gw(this.transform,t),r=gw(this.transform,i),a=Math.min(s,r)/2;this.applyAperture();const g=this.getLayerCtx();g.beginPath(),g.arc(n+a,o+a,a,Math.PI,Math.PI*1.5),g.arc(n+s-a,o+a,a,Math.PI*1.5,0),g.arc(n+s-a,o+r-a,a,0,Math.PI*.5),g.arc(n+a,o+r-a,a,Math.PI*.5,Math.PI),g.fill(),g.closePath()}polygon(e){if(e.length<3)return;this.applyAperture();const A=this.getLayerCtx(),t=e.map(n=>Ut(this.transform,[n.x,n.y]));A.beginPath(),A.moveTo(t[0][0],t[0][1]);for(let n=1;n<t.length;n++)A.lineTo(t[n][0],t[n][1]);A.closePath(),A.fill("evenodd");const i=gw(this.transform,this.aperture.size);i>0&&(A.lineWidth=i,A.stroke())}debugText(e,A,t){const[i,n]=Ut(this.transform,[A,t]);this.applyAperture();const o=this.getLayerCtx();o.font="10px sans-serif",o.fillText(e,i,n)}getLayerCtx(){const e=this.ctxLayerMap[this.aperture.layer];if(!e)throw new Error(`No context for layer "${this.aperture.layer}"`);return e}orderAndFadeLayers(){const{canvasLayerMap:e,foregroundLayer:A}=this,t=A==="top"?"top_silkscreen":A==="bottom"?"bottom_silkscreen":void 0,i=A==="top"?"soldermask_with_copper_top":A==="bottom"?"soldermask_with_copper_bottom":void 0,n=new Set([A,"drill","other","board",...t?[t]:[],...i?[i]:[]]),o=[A,...t?[t]:[],...i?[i]:[]],s=[...k6e.filter(r=>!o.includes(r)),A,...i?[i]:[],"drill",...t?[t]:[]];s.forEach((r,a)=>{const g=e[r];g&&(g.style.zIndex=`${EQ.topLayer-(s.length-a)}`,g.style.opacity=n.has(r)?"1":"0.5")})}applyAperture(){const{transform:e,aperture:A}=this;let{size:t,mode:i,color:n,fontSize:o,layer:s}=A;s in this.ctxLayerMap||(this.aperture.layer="other");const r=this.getLayerCtx();if(!r)throw new Error(`No context for layer "${this.foregroundLayer}"`);if(n||(n="undefined"),r.lineWidth=gw(e,t),r.lineCap="round",i==="add"){r.globalCompositeOperation="source-over";let a=yz[n.toLowerCase()];if(!a)try{a=cut(n).rgb().toString()}catch{console.warn(`Invalid color format: '${n}'`),a="white"}r.fillStyle=a,r.strokeStyle=a}else r.globalCompositeOperation="destination-out",r.fillStyle="rgba(0,0,0,1)",r.strokeStyle="rgba(0,0,0,1)";r.font=`${gw(v_(e),o)}px sans-serif`}moveTo(e,A){this.lastPoint={x:e,y:A}}lineTo(e,A){const[t,i]=Ut(this.transform,[e,A]),{size:n,shape:o,mode:s}=this.aperture,r=gw(this.transform,n);let{lastPoint:a}=this;const g=Ut(this.transform,a);this.applyAperture();const c=this.getLayerCtx();o==="square"&&c.fillRect(g.x-r/2,g.y-r/2,r,r),c.beginPath(),c.moveTo(g.x,g.y),c.lineTo(t,i),c.stroke(),c.closePath(),o==="square"&&c.fillRect(t-r/2,i-r/2,r,r),this.lastPoint={x:e,y:A}}polygonWithArcs(e){const A=this.getLayerCtx(),t=i=>{if(i.vertices.length===0)return;const n=i.vertices[0],o=Ut(this.transform,[n.x,n.y]);A.moveTo(o[0],o[1]);for(let s=0;s<i.vertices.length;s++){const r=i.vertices[s],a=i.vertices[(s+1)%i.vertices.length];if(r.bulge&&r.bulge!==0){const g=r.bulge,c=a.x-r.x,I=a.y-r.y,l=Math.sqrt(c*c+I*I);if(l<1e-9){const N=Ut(this.transform,[a.x,a.y]);A.lineTo(N[0],N[1]);continue}const B=4*Math.atan(g),C=Math.abs(l/(2*Math.sin(B/2))),h=(r.x+a.x)/2,u=(r.y+a.y)/2,E=c/l,f=-(I/l),m=E,S=Math.sqrt(Math.max(0,C*C-(l/2)**2)),_=h+S*f*Math.sign(g),v=u+S*m*Math.sign(g),D=Math.atan2(r.y-v,r.x-_);let k=Math.atan2(a.y-v,a.x-_);g>0&&k<D?k+=2*Math.PI:g<0&&k>D&&(k-=2*Math.PI);const b=Ut(this.transform,[_,v]),M=gw(this.transform,C);A.arc(b[0],b[1],M,-D,-k,g>0)}else{const g=Ut(this.transform,[a.x,a.y]);A.lineTo(g[0],g[1])}}A.closePath()};if(A.beginPath(),t(e.outer_ring),e.inner_rings)for(const i of e.inner_rings)t(i);A.fill("evenodd")}};function F6e(e){const{lines:A,anchorPoint:t,ccwRotation:i}=e;if(!i)return A;const n=i*Math.PI/180,o=cE(n),s=ko(Jo(t.x,t.y),o,Jo(-t.x,-t.y));return Ut(s,t),A.map(r=>({...r,x1:Ut(s,{x:r.x1,y:r.y1}).x,y1:Ut(s,{x:r.x1,y:r.y1}).y,x2:Ut(s,{x:r.x2,y:r.y2}).x,y2:Ut(s,{x:r.x2,y:r.y2}).y}))}var N6e=.6,Zut=.2,Vut=(()=>{const A=["a","c","e","m","n","o","r","s","u","x"].map(t=>S4[t]).filter(t=>t&&t.length>0).map(t=>Math.min(...t.map(i=>Math.min(i.y1,i.y2))));return A.length>0?Math.min(...A):0})(),G6e=e=>e>="a"&&e<="z"?Vut:0,jut=e=>{const A=e.size*.7,t=A*N6e,i=A*Zut,n=A*Zut,o=e.text.split(/\r?\n/),s=e.text.length>0&&A>0,r=s?o.length:0,a=s?o.map(B=>B.length===0?0:B.length*t+(B.length-1)*i):[],g=a.length>0?Math.max(...a):0,I=/[a-z]/.test(e.text)?Vut*A:0,l=r>0?r*A+(r-1)*n+I:0;return{text_lines:o,line_count:r,target_height:A,target_width_char:t,space_between_chars:i,space_between_lines:n,width:g,height:l}},M6e=e=>{const A=jut(e);return{width:A.width,height:A.height,lineHeight:A.target_height,lineSpacing:A.space_between_lines,lineCount:A.line_count}},L6e=e=>{const{text_lines:A,line_count:t,target_height:i,target_width_char:n,space_between_chars:o,space_between_lines:s}=jut(e);if(i<=0||t===0)return[];const r=i/12,a=[];for(let g=0;g<t;g++){const c=g*(i+s);let I=e.x;for(let l=0;l<A[g].length;l++){const B=A[g][l],C=S4[B]??S4[B.toUpperCase()],h=G6e(B);if(!C){I+=n+o;continue}for(const{x1:u,y1:E,x2:p,y2:f}of C){const m=E-h,S=f-h;a.push({_pcb_drawing_object_id:tu("line"),pcb_drawing_type:"line",x1:I+n*u,y1:e.y+c+i*m,x2:I+n*p,y2:e.y+c+i*S,width:r,layer:e.layer,unit:e.unit,color:e.color})}I+=n+o}}return a};function Fb(e){const t=e.color??yz[e.layer];let i=cut(t);return e._element?.type==="pcb_copper_pour"&&(i=i.alpha(.7)),e.is_mouse_over||e.is_in_highlighted_net?i.lighten(.5).rgb().toString():i.rgb().toString()}var zut=(e,A)=>{e.equip({size:A.zoomIndependent?A.width/e.transform.a:A.width,shape:A.squareCap?"square":"circle",color:Fb(A),layer:A.layer}),e.moveTo(A.x1,A.y1),e.lineTo(A.x2,A.y2)},U6e=(e,A)=>{e.equip({fontSize:A.size,color:Fb(A),layer:A.layer});let t={x:0,y:0};const{width:i,height:n}=M6e(A);switch(A.align){case"top_left":t.x=0,t.y=-n;break;case"top_center":t.x=-i/2,t.y=-n;break;case"top_right":t.x=-i,t.y=-n;break;case"center_left":t.x=0,t.y=-n/2;break;case"center":t.x=-i/2,t.y=-n/2;break;case"center_right":t.x=-i,t.y=-n/2;break;case"bottom_left":t.x=0,t.y=0;break;case"bottom_center":t.x=-i/2,t.y=0;break;case"bottom_right":t.x=-i,t.y=0;break;default:t.x=0,t.y=0;break}A.x??=0,A.y??=0;const o={x:A.x,y:A.y};let s=L6e({...A,x:A.x+t.x,y:A.y+t.y});if(A.layer==="bottom_silkscreen"&&(s=s.map(r=>({...r,x1:2*A.x-r.x1,x2:2*A.x-r.x2}))),A.ccw_rotation){const r={lines:s,anchorPoint:o,ccwRotation:A.ccw_rotation};s=F6e(r)}for(const r of s)zut(e,r)},H6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer,size:A.stroke_width}),e.rect({x:A.x,y:A.y,w:A.w,h:A.h,mesh_fill:A.mesh_fill,is_filled:A.is_filled,has_stroke:A.has_stroke,is_stroke_dashed:A.is_stroke_dashed,stroke_width:A.stroke_width,roundness:A.roundness})},Y6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.rotatedRect(A.x,A.y,A.w,A.h,A.ccw_rotation,A.roundness,A.mesh_fill)},J6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.rotatedPill(A.x,A.y,A.w,A.h,A.ccw_rotation)},T6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.circle(A.x,A.y,A.r,A.mesh_fill)},K6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.oval(A.x,A.y,A.rX,A.rY)},q6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.pill(A.x,A.y,A.w,A.h)},P6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.polygon(A.points)},O6e=(e,A)=>{e.equip({color:Fb(A),layer:A.layer}),e.polygonWithArcs(A.brep_shape)},W6e=(e,A)=>{switch(A.pcb_drawing_type){case"line":return zut(e,A);case"text":return U6e(e,A);case"rect":return A.ccw_rotation?Y6e(e,A):H6e(e,A);case"circle":return T6e(e,A);case"oval":return K6e(e,A);case"pill":return A.ccw_rotation?J6e(e,A):q6e(e,A);case"polygon":return P6e(e,A);case"polygon_with_arcs":return O6e(e,A)}},Z6e=(e,A)=>{for(const t of A)W6e(e,t)},V6e=["board","bottom_silkscreen","bottom","soldermask_bottom","top","soldermask_top","soldermask_with_copper_bottom","soldermask_with_copper_top","top_silkscreen","inner1","inner2","inner3","inner4","inner5","inner6","drill","notes","other"],j6e=({primitives:e,transform:A,grid:t,width:i=500,height:n=500})=>{const o=gA.useRef({}),s=n0(a=>a.selected_layer),r=n0(a=>a.is_showing_solder_mask);return gA.useEffect(()=>{if(!o.current||Object.keys(o.current).length===0)return;const a=Object.fromEntries(Object.entries(o.current).filter(([I,l])=>!(!l||!r&&I.includes("soldermask"))));if(Object.keys(a).length===0)return;const g=new R6e(a);A&&(g.transform=A),g.clear(),g.foregroundLayer=s;const c=r?e:e.filter(I=>!I.layer?.includes("soldermask"));Z6e(g,c),g.orderAndFadeLayers()},[e,A,s,r]),iA.jsxs("div",{style:{backgroundColor:"black",width:i,height:n,position:"relative"},children:[iA.jsx(KwA.SuperGrid,{textColor:"rgba(0,255,0,0.8)",majorColor:"rgba(0,255,0,0.4)",minorColor:"rgba(0,255,0,0.2)",screenSpaceCellSize:200,width:i,height:n,transform:A,stringifyCoord:(a,g,c)=>`${KwA.toMMSI(a,c)}, ${KwA.toMMSI(g,c)}`}),V6e.filter(a=>r?!0:!a.includes("soldermask")).map(a=>a.replace(/-/g,"")).map((a,g)=>iA.jsx("canvas",{className:`pcb-layer-${a}`,ref:c=>{o.current??={},c?o.current[a]=c:delete o.current[a]},style:{position:"absolute",zIndex:g,left:0,top:0,pointerEvents:"none"},width:i,height:n},a))]})},z6e=.6,X6e=1;kut(Kze()),kut(o6e());var mz=["rgba(239, 68, 68, 0.8)","rgba(249, 115, 22, 0.8)","rgba(245, 158, 11, 0.8)","rgba(234, 179, 8, 0.8)","rgba(132, 204, 22, 0.8)","rgba(34, 197, 94, 0.8)","rgba(16, 185, 129, 0.8)","rgba(20, 184, 166, 0.8)","rgba(6, 182, 212, 0.8)","rgba(14, 165, 233, 0.8)","rgba(59, 130, 246, 0.8)","rgba(99, 102, 241, 0.8)","rgba(139, 92, 246, 0.8)","rgba(168, 85, 247, 0.8)","rgba(217, 70, 239, 0.8)","rgba(236, 72, 153, 0.8)","rgba(249, 168, 212, 0.8)","rgba(161, 161, 170, 0.8)"];function Xut(e,A,t,i={}){const n=i.padding??40,o=i.yFlip??!1;let s;if("center"in e){const c=e.width/2,I=e.height/2;s={minX:e.center.x-c,maxX:e.center.x+c,minY:e.center.y-I,maxY:e.center.y+I}}else s=e;const r=s.maxX-s.minX||1,a=s.maxY-s.minY||1,g=Math.min((A-2*n)/r,(t-2*n)/a);return ko(Jo(A/2,t/2),jC(g,o?-g:g),Jo(-(s.minX+r/2),-(s.minY+a/2)))}function $6e(e){const A=[...e.points||[],...(e.lines||[]).flatMap(t=>t.points),...(e.rects||[]).flatMap(t=>{const i=t.width/2,n=t.height/2;return[{x:t.center.x-i,y:t.center.y-n},{x:t.center.x+i,y:t.center.y-n},{x:t.center.x-i,y:t.center.y+n},{x:t.center.x+i,y:t.center.y+n}]}),...(e.circles||[]).flatMap(t=>[{x:t.center.x-t.radius,y:t.center.y},{x:t.center.x+t.radius,y:t.center.y},{x:t.center.x,y:t.center.y-t.radius},{x:t.center.x,y:t.center.y+t.radius}]),...(e.texts||[]).flatMap(t=>{const i=t.fontSize??12,n=t.text.length*i*z6e,o=i*X6e,s=t.anchorSide??"center",r={top_left:{dx:0,dy:0},top_center:{dx:-n/2,dy:0},top_right:{dx:-n,dy:0},center_left:{dx:0,dy:-o/2},center:{dx:-n/2,dy:-o/2},center_right:{dx:-n,dy:-o/2},bottom_left:{dx:0,dy:-o},bottom_center:{dx:-n/2,dy:-o},bottom_right:{dx:-n,dy:-o}},{dx:a,dy:g}=r[s],c=t.x+a,I=t.y+g;return[{x:c,y:I},{x:c+n,y:I+o}]})];return A.length===0?{minX:-1,maxX:1,minY:-1,maxY:1}:A.reduce((t,i)=>({minX:Math.min(t.minX,i.x),maxX:Math.max(t.maxX,i.x),minY:Math.min(t.minY,i.y),maxY:Math.max(t.maxY,i.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0})}function AXe(e,A,t={}){const i=A instanceof HTMLCanvasElement?A.getContext("2d"):A;if(!i)throw new Error("Could not get 2D context from canvas");const n=A instanceof HTMLCanvasElement?A.width:A.canvas.width,o=A instanceof HTMLCanvasElement?A.height:A.canvas.height;let s;if(t.transform)s=t.transform;else if(t.viewbox)s=Xut(t.viewbox,n,o,{padding:t.padding,yFlip:t.yFlip});else{const r=$6e(e),a=e.coordinateSystem==="cartesian";s=Xut(r,n,o,{padding:t.padding??40,yFlip:a})}i.clearRect(0,0,n,o),i.save(),e.rects&&e.rects.length>0&&e.rects.forEach(r=>{const a=r.width/2,g=r.height/2,c=Ut(s,{x:r.center.x-a,y:r.center.y-g}),I=Ut(s,{x:r.center.x+a,y:r.center.y+g}),l=Math.abs(I.x-c.x),B=Math.abs(I.y-c.y);i.beginPath(),i.rect(Math.min(c.x,I.x),Math.min(c.y,I.y),l,B),r.fill&&(i.fillStyle=r.fill,i.fill()),r.stroke&&(i.strokeStyle=r.stroke,i.stroke())}),e.circles&&e.circles.length>0&&e.circles.forEach(r=>{const a=Ut(s,r.center),g=r.radius*Math.abs(s.a);i.beginPath(),i.arc(a.x,a.y,g,0,2*Math.PI),r.fill&&(i.fillStyle=r.fill,i.fill()),r.stroke&&(i.strokeStyle=r.stroke??"transparent",i.stroke())}),e.lines&&e.lines.length>0&&e.lines.forEach((r,a)=>{if(r.points.length===0)return;i.beginPath();const g=Ut(s,r.points[0]);i.moveTo(g.x,g.y);for(let c=1;c<r.points.length;c++){const I=Ut(s,r.points[c]);i.lineTo(I.x,I.y)}if(i.strokeStyle=r.strokeColor||mz[a%mz.length],r.strokeWidth?i.lineWidth=r.strokeWidth*s.a:i.lineWidth=2,i.lineCap="round",r.strokeDash)if(typeof r.strokeDash=="string"){let c;if(r.strokeDash.includes(","))c=r.strokeDash.split(",").map(I=>parseFloat(I.trim())).filter(I=>!Number.isNaN(I));else{const I=parseFloat(r.strokeDash.trim());c=Number.isNaN(I)?[]:[I]}i.setLineDash(c)}else i.setLineDash(r.strokeDash.map(c=>c*Math.abs(s.a)));else i.setLineDash([]);i.stroke()}),e.points&&e.points.length>0&&e.points.forEach((r,a)=>{const g=Ut(s,r);i.beginPath(),i.arc(g.x,g.y,3,0,2*Math.PI),i.fillStyle=r.color||mz[a%mz.length],i.fill(),r.label&&!t.disableLabels&&(i.fillStyle=r.color||"black",i.font="12px sans-serif",i.fillText(r.label,g.x+5,g.y-5))}),e.texts&&e.texts.length>0&&e.texts.forEach(r=>{const a=Ut(s,{x:r.x,y:r.y});i.fillStyle=r.color||"black",i.font=`${(r.fontSize??12)*Math.abs(s.a)}px sans-serif`;const g=r.anchorSide??"center",c={top_left:"left",center_left:"left",bottom_left:"left",top_center:"center",center:"center",bottom_center:"center",top_right:"right",center_right:"right",bottom_right:"right"},I={top_left:"top",top_center:"top",top_right:"top",center_left:"middle",center:"middle",center_right:"middle",bottom_left:"bottom",bottom_center:"bottom",bottom_right:"bottom"};i.textAlign=c[g],i.textBaseline=I[g],i.fillText(r.text,a.x,a.y)}),i.restore()}var tXe=({children:e,transform:A,debugGraphics:t})=>{const i=gA.useRef(null),[n,{width:o,height:s}]=N4(),r=n0(a=>a.is_showing_autorouting);return gA.useEffect(()=>{r&&i.current&&t&&o&&s&&(i.current.width=o,i.current.height=s,AXe(t,i.current,{transform:A,disableLabels:!0}))},[t,A,o,s,r]),r?iA.jsxs("div",{ref:n,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:i,style:{position:"absolute",top:0,left:0,opacity:.5,zIndex:100,width:"100%",height:"100%",pointerEvents:"none"}})]}):e},eXe=({children:e,transform:A=RB(),elements:t=[]})=>{const[i,{width:n,height:o}]=N4(),s=gA.useRef(null);return gA.useEffect(()=>{const r=s.current;if(!r||!n||!o)return;r.width=n,r.height=o;const a=r.getContext("2d");if(!a)return;a.clearRect(0,0,n,o);const g=t.filter(I=>I.type==="pcb_component"),c=t.filter(I=>I.type==="pcb_manual_edit_conflict_warning");a.strokeStyle=uQ.board.drc_warning,a.lineWidth=2,c.forEach(I=>{const l=g.find(V=>V.pcb_component_id===I.pcb_component_id);if(!l)return;const{width:B,height:C,center:h}=l,u=Ut(A,h),E=B*Math.abs(A.a),p=C*Math.abs(A.d),f=.1*Math.abs(A.a),m=E+f*2,S=p+f*2,_=u.x-m/2,v=u.y-S/2;a.beginPath(),a.rect(_,v,m,S),a.stroke();const D="Manual Edit Conflict",k=4,b=Math.max(8,Math.min(12,10*Math.abs(A.a)));a.font=`${b}px sans-serif`;const N=a.measureText(D).width+k*2,T=b+k*2,K=_+(m-N)/2,P=v+S+5;a.fillStyle="rgba(0, 0, 0, 0.7)",a.beginPath(),a.roundRect(K,P,N,T,3),a.fill(),a.fillStyle=uQ.board.drc_warning,a.textAlign="center",a.textBaseline="middle",a.fillText(D,K+N/2,P+T/2)})},[t,A,n,o]),iA.jsxs("div",{ref:i,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:s,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:EQ.warnings}})]})},wz=(e,A,t)=>t(e,A),$ut=(e,A,t,i,n)=>{const o=n*Math.PI/180,s=Math.cos(o),r=Math.sin(o),a=e-t,g=A-i,c=a*s-g*r,I=a*r+g*s;return{x:c+t,y:I+i}},wL=e=>{if(e.length===0)return null;let A=e[0].x,t=e[0].x,i=e[0].y,n=e[0].y;for(const o of e)A=wz(A,o.x,Math.min),t=wz(t,o.x,Math.max),i=wz(i,o.y,Math.min),n=wz(n,o.y,Math.max);return{minX:A,maxX:t,minY:i,maxY:n}},iXe=wL,nXe=(e,A)=>({minX:Math.min(e.minX,A.minX),maxX:Math.max(e.maxX,A.maxX),minY:Math.min(e.minY,A.minY),maxY:Math.max(e.maxY,A.maxY)}),oXe=(e,A)=>e?nXe(e,A):A,sXe=e=>{switch(e.pcb_drawing_type){case"line":{const A=(e.width??0)/2,t=[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],i=wL(t);return i?{minX:i.minX-A,maxX:i.maxX+A,minY:i.minY-A,maxY:i.maxY+A}:null}case"rect":{const A=e.w/2,t=e.h/2,i=[{x:e.x-A,y:e.y-t},{x:e.x+A,y:e.y-t},{x:e.x+A,y:e.y+t},{x:e.x-A,y:e.y+t}],n=e.ccw_rotation??0,o=n===0?i:i.map(s=>$ut(s.x,s.y,e.x,e.y,n));return wL(o)}case"circle":return{minX:e.x-e.r,maxX:e.x+e.r,minY:e.y-e.r,maxY:e.y+e.r};case"oval":return{minX:e.x-e.rX,maxX:e.x+e.rX,minY:e.y-e.rY,maxY:e.y+e.rY};case"pill":{const A=e.w/2,t=e.h/2,i=[{x:e.x-A,y:e.y-t},{x:e.x+A,y:e.y-t},{x:e.x+A,y:e.y+t},{x:e.x-A,y:e.y+t}],n=e.ccw_rotation??0,o=n===0?i:i.map(s=>$ut(s.x,s.y,e.x,e.y,n));return wL(o)}case"polygon":return wL(e.points);case"polygon_with_arcs":{const A=e.brep_shape.outer_ring.vertices.map(t=>({x:t.x,y:t.y}));return wL(A)}case"text":{const A=e.size??0,t=e.text?e.text.length*A*.6:0,i=A;if(t===0&&i===0)return{minX:e.x,maxX:e.x,minY:e.y,maxY:e.y};const n=t/2,o=i/2;return{minX:e.x-n,maxX:e.x+n,minY:e.y-o,maxY:e.y+o}}default:return null}};function rXe(e){const{dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}=e,r=t.x-A.x,a=t.y-A.y,g=Math.sqrt(r*r+a*a),c=n.x-i.x,I=n.y-i.y,l=Math.sqrt(c*c+I*I),B=Math.atan2(I,c)*(180/Math.PI),C=Math.abs(B)%90,u=Math.min(C,90-C)>15,E=(i.x+n.x)/2,p=(i.y+n.y)/2,f=15,m=B+90;let S=Math.cos(m*Math.PI/180)*f,_=Math.sin(m*Math.PI/180)*f;const v=c>0&&I<0,D=c>0&&I>0,k=c<0&&I>0;o!==s&&!v&&(S=-S,_=-_),v&&(S+=Math.cos(m*Math.PI/180)*-45,_+=Math.sin(m*Math.PI/180)*-45),D&&(S+=Math.cos(m*Math.PI/180)+-20,_+=Math.sin(m*Math.PI/180)+-10),k&&(S+=Math.cos(m*Math.PI/180)*10,_+=Math.sin(m*Math.PI/180)*10);const b=E+S,M=p+_;return{distance:g,screenDistance:l,x:b,y:M,show:g>.01&&l>30&&u}}function aXe(e){const{dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}=e;return gA.useMemo(()=>rXe({dimensionStart:A,dimensionEnd:t,screenDimensionStart:i,screenDimensionEnd:n,flipX:o,flipY:s}),[A,t,i,n,o,s])}var gXe=(e,A,t)=>{const i=t*Math.PI/180,n=Math.cos(i),o=Math.sin(i),s=e.x-A.x,r=e.y-A.y,a=s*n-r*o,g=s*o+r*n;return{x:a+A.x,y:g+A.y}},AEt=(e,A,t,i)=>{const n={top_left:{x:e.x-A,y:e.y-t},top_center:{x:e.x,y:e.y-t},top_right:{x:e.x+A,y:e.y-t},center_left:{x:e.x-A,y:e.y},center:{x:e.x,y:e.y},center_right:{x:e.x+A,y:e.y},bottom_left:{x:e.x-A,y:e.y+t},bottom_center:{x:e.x,y:e.y+t},bottom_right:{x:e.x+A,y:e.y+t}};return i===0?Object.entries(n).map(([o,s])=>({anchor:o,point:s})):Object.entries(n).map(([o,s])=>({anchor:o,point:gXe(s,e,i)}))},cXe=e=>{switch(e.pcb_drawing_type){case"rect":{const A=e.ccw_rotation??0;return AEt({x:e.x,y:e.y},e.w/2,e.h/2,A)}case"pill":{const A=e.ccw_rotation??0;return AEt({x:e.x,y:e.y},e.w/2,e.h/2,A)}case"circle":return[{anchor:"circle_center",point:{x:e.x,y:e.y}},{anchor:"circle_right",point:{x:e.x+e.r,y:e.y}},{anchor:"circle_left",point:{x:e.x-e.r,y:e.y}},{anchor:"circle_top",point:{x:e.x,y:e.y-e.r}},{anchor:"circle_bottom",point:{x:e.x,y:e.y+e.r}}];case"oval":return[{anchor:"oval_center",point:{x:e.x,y:e.y}},{anchor:"oval_right",point:{x:e.x+e.rX,y:e.y}},{anchor:"oval_left",point:{x:e.x-e.rX,y:e.y}},{anchor:"oval_top",point:{x:e.x,y:e.y-e.rY}},{anchor:"oval_bottom",point:{x:e.x,y:e.y+e.rY}}];case"line":{const A={x:(e.x1+e.x2)/2,y:(e.y1+e.y2)/2};return[{anchor:"line_start",point:{x:e.x1,y:e.y1}},{anchor:"line_mid",point:A},{anchor:"line_end",point:{x:e.x2,y:e.y2}}]}case"polygon":return e.points.map((A,t)=>({anchor:`polygon_vertex_${t}`,point:A}));case"polygon_with_arcs":return e.brep_shape.outer_ring.vertices.map((A,t)=>({anchor:`polygon_with_arcs_vertex_${t}`,point:{x:A.x,y:A.y}}));default:return[]}},IXe=16,AN=5,tEt=e=>{if(e.pcb_drawing_type==="text")return!0;const A=e._element;if(!A||typeof A!="object")return!1;const t=typeof A.type=="string"?A.type:void 0;return t?!!(t.startsWith("pcb_silkscreen_")||t.startsWith("pcb_note_")||t==="pcb_text"||t.startsWith("pcb_fabrication_note_")&&t!=="pcb_fabrication_note_rect"):!1},lXe=({children:e,transform:A,focusOnHover:t=!1,primitives:i=[]})=>{A||(A=RB());const[n,o]=gA.useState(!1),[s,r]=gA.useState(!1),[a,g]=gA.useState(!1),[c,I]=gA.useState({start:null,end:null}),l=gA.useCallback(()=>{a&&(g(!1),window.dispatchEvent(new Event("disarm-dimension-tool")))},[a]),[B,C]=gA.useState({x:0,y:0}),[h,u]=gA.useState({x:0,y:0}),E=gA.useRef({x:0,y:0}),p=gA.useRef(null),m=p.current?.getBoundingClientRect(),S=gA.useMemo(()=>{const K=new Map;for(const P of i){if(!P._element||tEt(P)||P.pcb_drawing_type==="pill"||P.pcb_drawing_type==="rect"&&P.ccw_rotation&&P.ccw_rotation!==0)continue;const V=sXe(P);if(!V)continue;const z=K.get(P._element);K.set(P._element,oXe(z??void 0,V))}return K},[i]),_=gA.useMemo(()=>{const K=[];for(const P of i){if(!P._element||tEt(P))continue;const V=cXe(P);if(V.length!==0)for(const z of V)K.push({anchor:z.anchor,point:z.point,element:P._element})}return K},[i]),v=gA.useMemo(()=>{const K=[];S.forEach((P,V)=>{if(!P)return;const z=(P.minX+P.maxX)/2,nA=(P.minY+P.maxY)/2,cA={top_left:{x:P.minX,y:P.minY},top_center:{x:z,y:P.minY},top_right:{x:P.maxX,y:P.minY},center_left:{x:P.minX,y:nA},center:{x:z,y:nA},center_right:{x:P.maxX,y:nA},bottom_left:{x:P.minX,y:P.maxY},bottom_center:{x:z,y:P.maxY},bottom_right:{x:P.maxX,y:P.maxY}};for(const[hA,tA]of Object.entries(cA))K.push({anchor:hA,point:tA,element:V})});for(const P of _)K.push(P);return K.push({anchor:"origin",point:{x:0,y:0},element:null}),K},[S,_]),D=gA.useMemo(()=>v.map((K,P)=>({...K,id:`${P}-${K.anchor}`,screenPoint:Ut(A,K.point)})),[v,A]),k=gA.useCallback(K=>{if(D.length===0)return{point:K,id:null};const P=Ut(A,K);let V=null;for(const z of D){const nA=z.screenPoint.x-P.x,cA=z.screenPoint.y-P.y,hA=Math.hypot(nA,cA);hA>IXe||(!V||hA<V.distance)&&(V={distance:hA,id:z.id,point:z.point})}return V?{point:V.point,id:V.id}:{point:K,id:null}},[D,A]);gA.useEffect(()=>{const K=p.current,P=cA=>{if(cA.key==="d"){const hA=k({x:E.current.x,y:E.current.y});C({x:hA.point.x,y:hA.point.y}),u({x:hA.point.x,y:hA.point.y}),I({start:hA.id,end:hA.id}),n?(o(!1),r(!1),I({start:null,end:null})):(o(!0),r(!0)),l()}cA.key==="Escape"&&(o(!1),r(!1),I({start:null,end:null}),l())},V=()=>{g(!0)},z=()=>{K&&window.addEventListener("keydown",P)},nA=()=>{K&&window.removeEventListener("keydown",P)};return window.addEventListener("arm-dimension-tool",V),K&&(K.addEventListener("focus",z),K.addEventListener("blur",nA),K.addEventListener("mouseenter",z),K.addEventListener("mouseleave",nA)),()=>{window.removeEventListener("arm-dimension-tool",V),l(),K&&(K.removeEventListener("focus",z),K.removeEventListener("blur",nA),K.removeEventListener("mouseenter",z),K.removeEventListener("mouseleave",nA))}},[p,n,l,k]);const b=Ut(A,B),M=Ut(A,h),N={left:Math.min(b.x,M.x),right:Math.max(b.x,M.x),top:Math.min(b.y,M.y),bottom:Math.max(b.y,M.y),flipX:b.x>M.x,flipY:b.y>M.y,width:0,height:0};N.width=N.right-N.left,N.height=N.bottom-N.top;const T=aXe({dimensionStart:B,dimensionEnd:h,screenDimensionStart:b,screenDimensionEnd:M,flipX:N.flipX,flipY:N.flipY});return iA.jsxs("div",{ref:p,tabIndex:0,style:{position:"relative"},onMouseEnter:()=>{t&&p.current&&p.current.focus()},onMouseLeave:()=>{p.current&&p.current.blur()},onMouseMove:K=>{const P=K.currentTarget.getBoundingClientRect(),V=K.clientX-P.left,z=K.clientY-P.top,nA=Ut(v_(A),{x:V,y:z});if(E.current.x=nA.x,E.current.y=nA.y,s){const cA=k(nA);u({x:cA.point.x,y:cA.point.y}),I(hA=>({...hA,end:cA.id}))}},onMouseDown:K=>{const P=K.currentTarget.getBoundingClientRect(),V=K.clientX-P.left,z=K.clientY-P.top,nA=Ut(v_(A),{x:V,y:z});if(a&&!n){const cA=k(nA);C({x:cA.point.x,y:cA.point.y}),u({x:cA.point.x,y:cA.point.y}),I({start:cA.id,end:cA.id}),o(!0),r(!0),l()}else s?(r(!1),I(cA=>({...cA,end:null}))):n&&(o(!1),I({start:null,end:null}))},children:[e,n&&iA.jsxs(iA.Fragment,{children:[T.show&&iA.jsx("div",{style:{position:"absolute",left:T.x,top:T.y,color:"red",mixBlendMode:"difference",pointerEvents:"none",fontSize:12,fontFamily:"sans-serif",whiteSpace:"nowrap",zIndex:EQ.dimensionOverlay},children:T.distance.toFixed(2)}),iA.jsx("div",{style:{position:"absolute",left:N.left,width:N.width,textAlign:"center",top:b.y+2,color:"red",mixBlendMode:"difference",pointerEvents:"none",marginTop:N.flipY?0:-20,fontSize:12,fontFamily:"sans-serif",zIndex:EQ.dimensionOverlay},children:Math.abs(B.x-h.x).toFixed(2)}),iA.jsx("div",{style:{position:"absolute",left:M.x,height:N.height,display:"flex",flexDirection:"column",justifyContent:"center",top:N.top,color:"red",pointerEvents:"none",mixBlendMode:"difference",fontSize:12,fontFamily:"sans-serif",zIndex:EQ.dimensionOverlay},children:iA.jsx("div",{style:{marginLeft:N.flipX?"-100%":4,paddingRight:4},children:Math.abs(B.y-h.y).toFixed(2)})}),iA.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:EQ.dimensionOverlay},width:m.width,height:m.height,children:[iA.jsx("defs",{children:iA.jsx("marker",{id:"head",orient:"auto",markerWidth:"3",markerHeight:"4",refX:"2",refY:"2",children:iA.jsx("path",{d:"M0,0 V4 L2,2 Z",fill:"red"})})}),iA.jsx("line",{x1:b.x,y1:b.y,x2:M.x,y2:M.y,markerEnd:"url(#head)",strokeWidth:1.5,fill:"none",stroke:"red"}),iA.jsx("line",{x1:b.x,y1:b.y,x2:M.x,y2:b.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"}),iA.jsx("line",{x1:M.x,y1:b.y,x2:M.x,y2:M.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"})]}),s&&D.map(K=>{const P=K.id===c.start||K.id===c.end,V=AN/2;return iA.jsxs("svg",{width:AN,height:AN,style:{position:"absolute",left:K.screenPoint.x-V,top:K.screenPoint.y-V,pointerEvents:"none",zIndex:EQ.dimensionOverlay},children:[iA.jsx("line",{x1:0,y1:0,x2:AN,y2:AN,stroke:P?"#66ccff":"white",strokeWidth:1}),iA.jsx("line",{x1:AN,y1:0,x2:0,y2:AN,stroke:P?"#66ccff":"white",strokeWidth:1})]},K.id)}),iA.jsxs("div",{style:{right:0,bottom:0,position:"absolute",color:"red",fontFamily:"sans-serif",fontSize:12,margin:4},children:["(",B.x.toFixed(2),",",B.y.toFixed(2),")",iA.jsx("br",{}),"(",h.x.toFixed(2),",",h.y.toFixed(2),")",iA.jsx("br",{}),"dist:"," ",Math.sqrt((h.x-B.x)**2+(h.y-B.y)**2).toFixed(2)]})]})]})},BXe=(e,A,t=0)=>{const i=e.width/2,n=e.height/2,o=e.center.x-i-t,s=e.center.x+i+t,r=e.center.y-n-t,a=e.center.y+n+t;return A.x>o&&A.x<s&&A.y>r&&A.y<a},CXe=({children:e,disabled:A,transform:t,soup:i,cancelPanDrag:n,onCreateEditEvent:o,onModifyEditEvent:s})=>{t||(t=RB());const r=gA.useRef(null),[a,g]=gA.useState(null),[c,I]=gA.useState(null),l=a!==null;n0(u=>u.in_edit_mode);const B=n0(u=>u.in_move_footprint_mode),C=n0(u=>u.setIsMovingComponent),h=A||!B;return iA.jsxs("div",{ref:r,style:{position:"relative",overflow:"hidden"},onMouseDown:u=>{if(h)return;const E=u.currentTarget.getBoundingClientRect(),p=u.clientX-E.left,f=u.clientY-E.top;if(Number.isNaN(p)||Number.isNaN(f))return;const m=Ut(v_(t),{x:p,y:f});let S=!1;for(const _ of i)if(_.type==="pcb_component"&&BXe(_,m,10/t.a)){n(),g(_.pcb_component_id),S=!0;const v=Math.random().toString();I({dragStart:m,originalCenter:_.center,dragEnd:m,edit_event_id:v}),o({edit_event_id:v,edit_event_type:"edit_pcb_component_location",pcb_edit_event_type:"edit_component_location",pcb_component_id:_.pcb_component_id,original_center:_.center,new_center:_.center,in_progress:!0,created_at:Date.now()}),C(!0);break}if(S||g(null),S)return u.preventDefault(),!1},onMouseMove:u=>{if(!a||!c)return;const E=u.currentTarget.getBoundingClientRect(),p=u.clientX-E.left,f=u.clientY-E.top;if(Number.isNaN(p)||Number.isNaN(f))return;const m=Ut(v_(t),{x:p,y:f});I({...c,dragEnd:m}),s({edit_event_id:c.edit_event_id,new_center:{x:c.originalCenter.x+m.x-c.dragStart.x,y:c.originalCenter.y+m.y-c.dragStart.y}})},onMouseUp:u=>{a&&(g(null),C(!1),c&&(s({edit_event_id:c.edit_event_id,in_progress:!1}),I(null)))},children:[e,!h&&i.filter(u=>u.type==="pcb_component").map(u=>{if(!u?.center)return null;const E=Ut(t,u.center);return iA.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:E.x,top:E.y,width:u.width*t.a+20,height:u.height*t.a+20,transform:"translate(-50%, -50%)",background:l&&a===u.pcb_component_id?"rgba(255, 0, 0, 0.2)":""}},u.pcb_component_id)})]})},hXe=({hotkeys:e})=>(gA.useEffect(()=>{const A=t=>{e.forEach(i=>{t.key===i.key&&i.onUse()})};return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[e]),iA.jsx("div",{className:mL`
5759
5759
  display: flex;
5760
5760
  flex-direction: column;
5761
5761
  font-family: sans-serif;
@@ -5794,7 +5794,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function Yut(e,A,t){if(!A||!t)retu
5794
5794
  transition: opacity 0.2s;
5795
5795
  margin-bottom: 10px;
5796
5796
  color: red;
5797
- `,fXe=({children:e,transform:A=RB(),elements:t})=>{const i=gA.useRef(null),{isShowingDRCErrors:n,hoveredErrorId:o}=n0(g=>({isShowingDRCErrors:g.is_showing_drc_errors,hoveredErrorId:g.hovered_error_id}));if(!t)return iA.jsx("div",{style:{position:"relative"},ref:i,children:e});const s=t.filter(g=>g.type==="pcb_trace_error"),r=t.filter(g=>g.type==="pcb_trace_error"&&g.message?.includes("Multiple components found with name")),a=new Map;return t.forEach(g=>{g.type==="pcb_port"&&a.set(g.pcb_port_id,g)}),iA.jsxs("div",{style:{position:"relative"},ref:i,children:[e,s.map((g,c)=>{const{pcb_port_ids:I,pcb_trace_id:l}=g,B=I?.[0]?a.get(I[0]):void 0,C=I?.[1]?a.get(I[1]):void 0,h=t?_k(t).pcb_trace.get(l):void 0,u=g.pcb_trace_error_id||`error_${c}_${g.error_type}_${g.message?.slice(0,20)}`,E=o===u;if(B&&C){const p=Ut(A,{x:B.x,y:B.y}),f=Ut(A,{x:C.x,y:C.y}),m=!(isNaN(p.x)||isNaN(p.y)||isNaN(f.x)||isNaN(f.y)),S={x:(p.x+f.x)/2,y:(p.y+f.y)/2};if(isNaN(S.x)||isNaN(S.y))return null;const _=cDA(S,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx(dXe,{screenPort1:p,screenPort2:f,errorCenter:S,canLineBeDrawn:m,isHighlighted:E}),iA.jsx("div",{style:{position:"absolute",left:S.x-15,top:S.y-15,width:30,height:30,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:v=>{const D=v.currentTarget.nextElementSibling;if(D){const k=D.querySelector(".error-message");k&&(k.style.opacity="1")}},onMouseLeave:v=>{if(!E){const D=v.currentTarget.nextElementSibling;if(D){const k=D.querySelector(".error-message");k&&(k.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:E?200:100,left:_.left,top:_.top,color:E?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:n||E?"flex":"none",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:_.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:E?1:0,border:`1px solid ${E?"#ff4444":"red"}`},children:g.message})})]},u)}if(h?.route&&(n||E)){const p=h.route.map(_=>Ut(A,{x:_.x,y:_.y}));if(p.some(_=>isNaN(_.x)||isNaN(_.y)))return null;const f=Math.floor(p.length/2),m=p[f],S=cDA(m,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx(pXe,{points:p,errorCenter:m,isHighlighted:E}),iA.jsx("div",{style:{position:"absolute",left:m.x-15,top:m.y-15,width:30,height:30,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:_=>{const v=_.currentTarget.nextElementSibling;if(v){const D=v.querySelector(".error-message");D&&(D.style.opacity="1")}},onMouseLeave:_=>{if(!E){const v=_.currentTarget.nextElementSibling;if(v){const D=v.querySelector(".error-message");D&&(D.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:E?EQ.errorOverlay+10:EQ.errorOverlay+1,left:S.left,top:S.top,color:E?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:"flex",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:S.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:E?1:0,border:`1px solid ${E?"#ff4444":"red"}`},children:g.message})})]},u)}return null}),r.map((g,c)=>{const I=g.component_name||g.message?.match(/name "([^"]+)"/)?.[1];if(!I)return null;const l=t?.filter(h=>h.type==="source_component"&&h.name===I||h.type==="pcb_component"&&t?.find(u=>u.type==="source_component"&&u.source_component_id===h.source_component_id&&u.name===I))||[],B=g.pcb_trace_error_id||`error_${c}_${g.error_type}_${g.message?.slice(0,20)}`,C=o===B;return!C&&!n?null:l.map((h,u)=>{let E={x:0,y:0};if(h.type==="pcb_component")E=h.center||{x:0,y:0};else if(h.type==="source_component"){const k=t?.find(b=>b.type==="pcb_component"&&b.source_component_id===h.source_component_id);k&&k.type==="pcb_component"&&(E=k.center||{x:0,y:0})}const p=Ut(A,E);if(isNaN(p.x)||isNaN(p.y))return null;const f=Math.abs(A.a),v=Math.max(8,Math.min(30,.5*f)),D=cDA(p,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:EQ.errorOverlay},width:"100%",height:"100%",children:C?iA.jsx("polygon",{points:`${p.x},${p.y-v*1.25} ${p.x+v},${p.y} ${p.x},${p.y+v*1.25} ${p.x-v},${p.y}`,fill:"#ff4444"}):iA.jsx("circle",{cx:p.x,cy:p.y,r:v,fill:"none",stroke:C?"#ff4444":"red",strokeWidth:C?Math.max(2,v*.15):Math.max(1,v*.1),opacity:1})}),iA.jsx("div",{style:{position:"absolute",left:p.x-(v+10),top:p.y-(v+10),width:(v+10)*2,height:(v+10)*2,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:k=>{const b=k.currentTarget.nextElementSibling;if(b){const M=b.querySelector(".error-message");M&&(M.style.opacity="1")}},onMouseLeave:k=>{if(!C){const b=k.currentTarget.nextElementSibling;if(b){const M=b.querySelector(".error-message");M&&(M.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:C?EQ.errorOverlay+20:EQ.errorOverlay+10,left:D.left,top:D.top,color:C?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:n||C?"flex":"none",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:D.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:C?1:0,border:`1px solid ${C?"#ff4444":"red"}`},children:g.message})})]},`${B}_${u}`)})})]})};function yXe(e,A){return e.size!==A.size?!1:Array.from(e).every(t=>A.has(t))}function mXe({primitiveElement:e,elements:A}){let t=e.trace_length?`${e.trace_length.toFixed(3)}`:"";const i=_k(A).source_trace.get(e?.source_trace_id);if(i?.display_name&&(i?.max_length?t+=` / ${i.max_length}mm `:t+=" mm ",t+=`(${i.display_name})`),!t)return null;const n=e.trace_length&&i?.max_length&&e.trace_length>i.max_length;return{text:t,isOverLength:n}}function wXe(e){const{primitives:A,is_showing_multiple_traces_length:t,elements:i}=e,n=A.filter(a=>a._element.type==="pcb_trace"),o=i.filter(a=>a.type==="source_trace"),s=A.filter(a=>a._element.type!=="pcb_trace"),r=n.filter(a=>o.some(g=>a._element.type==="pcb_trace"&&a._element.source_trace_id===g.source_trace_id&&g.max_length!==void 0));if(!t)return[...s,...r];if(n.length>1){const a=n.reduce((g,c)=>{const I=g._element.trace_length;return c._element.trace_length<I?c:g},n[0]);return[...s,a]}return A}var DXe={position:"absolute",left:0,top:0,pointerEvents:"none",color:"red",fontFamily:"sans-serif",fontSize:12,textShadow:"0 0 2px black"},_Xe=e=>{const{_element:A,_parent_pcb_component:t,_parent_source_component:i,_source_port:n}=e;switch(A.type){case"pcb_trace":return A.trace_length?`${A.trace_length.toFixed(3)}`:"";case"pcb_smtpad":case"pcb_plated_hole":{const o=[],s=Array.from(new Set((A.port_hints??[]).concat(n?.port_hints??[]))).filter(a=>!/^[0-9]+$/.test(a)).filter(a=>!a.includes("unnamed_")).sort((a,g)=>g.localeCompare(a)),r=i&&"name"in i&&i.name&&!i.name.includes("unnamed_")?i.name:null;return s.length>0?r?o.push(...s.map(a=>`${r}.${a}`)):o.push(...s):r&&o.push(r),o.join(", ")}default:return""}},xXe={top:"red",bottom:"aqua"},bXe=({primitive:e,mousePos:A,elements:t})=>{const[i,n]=gA.useState(!1),o=e._element;gA.useEffect(()=>{setTimeout(()=>{n(!0)},100)},[]);const[s,r,a,g]=[e.screen_x,e.screen_y,e.screen_w,e.screen_h],c=e.same_space_index??0,I=26,l=xXe[e?._element?.layer]??"red";let B=0;if(o.type==="pcb_smtpad"&&o?.shape==="rotated_rect"?B=o?.ccw_rotation??0:(o.type==="pcb_smtpad"&&(o?.shape==="pill"||o?.shape==="rotated_pill")&&"ccw_rotation"in e||o.type==="pcb_plated_hole"&&(o?.shape==="pill"||o?.shape==="oval")&&"ccw_rotation"in e)&&(B=o.ccw_rotation??0),o.type==="pcb_trace"){const u=mXe({primitiveElement:o,elements:t});if(!u)return null;const E=A.y-35;return iA.jsx("div",{style:{zIndex:EQ.elementOverlay,position:"absolute",left:A.x,top:E,color:l,pointerEvents:"none",transform:"translateX(-50%)"},children:iA.jsx("div",{style:{backgroundColor:"#f2efcc",color:u.isOverLength?"red":"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",minWidth:"45px",textAlign:"center",whiteSpace:"nowrap"},children:u.text})})}const C=_Xe(e);return C.trim().length===0?null:iA.jsx("div",{style:{zIndex:EQ.elementOverlay,position:"absolute",left:s-a/2-8,top:r-g/2-8,width:a+16,height:g+16,color:l,transform:`rotate(${-B}deg)`,transformOrigin:"center center"},children:iA.jsx("div",{style:{width:i?`calc(100% + ${I*2*c}px)`:"100%",height:i?`calc(100% + ${I*2*c}px)`:"100%",marginLeft:i?`${-I*c}px`:0,marginTop:i?`${-I*c}px`:0,border:`1px solid ${l}`,opacity:i||c===0?1:0,transition:"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"},children:iA.jsx("div",{style:{position:"absolute",bottom:g+20+I*c,marginRight:i?`${-I*c}px`:0,marginBottom:i?0:-I*c,transition:"margin-right 0.2s, margin-bottom 0.2s",backgroundColor:"#f2efcc",color:"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",transform:`rotate(${B}deg)`,minWidth:"45px",textAlign:"center"},children:C})})})},SXe=({highlightedPrimitives:e,mousePos:A,elements:t})=>{const[i,n]=n0(r=>[r.is_moving_component,r.is_showing_multiple_traces_length]),o=e.some(r=>r._element.type==="pcb_smtpad")&&e.some(r=>r._element.type==="pcb_trace");let s=e;return o&&(s=s.filter(r=>r._element.type==="pcb_smtpad")),s=wXe({primitives:s,is_showing_multiple_traces_length:n,elements:t}),iA.jsx("div",{style:DXe,children:!i&&s.map((r,a)=>iA.jsx(bXe,{primitive:r,mousePos:A,elements:t},a))})},vXe=e=>{const A=[];for(const t of e){if(!t.center||typeof t.width!="number"||typeof t.height!="number")continue;const i=t.width/2,n=t.height/2;A.push({x:t.center.x-i,y:t.center.y-n}),A.push({x:t.center.x+i,y:t.center.y+n})}return iXe(A)},Gy={GROUP_PADDING:1,MIN_LINE_LENGTH_FOR_LABEL:40,LABEL_OFFSET_ABOVE:2,LABEL_OFFSET_BELOW:-18,LABEL_OFFSET_RIGHT:8,LABEL_OFFSET_LEFT:-80,LINE_STROKE_WIDTH:1.5,LINE_DASH_PATTERN:"4,4",COMPONENT_MARKER_RADIUS:3,LABEL_FONT_SIZE:11},G4={OFFSET_LINE:"white",COMPONENT_MARKER_FILL:"#66ccff",COMPONENT_MARKER_STROKE:"white",LABEL_TEXT:"white"},kXe=(e,A)=>{const{minX:t,maxX:i,minY:n,maxY:o}=A,s=Math.abs(e.x-t),r=Math.abs(e.x-i),a=Math.abs(e.y-o),g=Math.abs(e.y-n),c=Math.min(s,r,a,g);return c===s?{x:t,y:e.y}:c===r?{x:i,y:e.y}:c===a?{x:e.x,y:o}:{x:e.x,y:n}},RXe=({elements:e,highlightedPrimitives:A,transform:t,containerWidth:i,containerHeight:n,children:o})=>{if(!n0(N=>N.is_showing_group_anchor_offsets)||A.length===0)return null;const r=A.find(N=>N._parent_pcb_component?.type==="pcb_component"||N._element?.type==="pcb_component");if(!r)return null;const a=r._parent_pcb_component||r._element;if(!a?.pcb_group_id)return null;const g=e.filter(N=>N.type==="pcb_group").find(N=>N.pcb_group_id===a.pcb_group_id);if(!g?.anchor_position)return null;const c=r._element?.type==="pcb_smtpad"?{x:r.x,y:r.y}:a.center||{x:r.x,y:r.y},I=e.filter(N=>N.type==="pcb_component").filter(N=>N.pcb_group_id===g.pcb_group_id),l=vXe(I);if(!l)return null;const B={minX:l.minX-Gy.GROUP_PADDING,maxX:l.maxX+Gy.GROUP_PADDING,minY:l.minY-Gy.GROUP_PADDING,maxY:l.maxY+Gy.GROUP_PADDING},C=kXe(g.anchor_position,B),h=c.x-C.x,u=c.y-C.y,E=Ut(t,C),p=Ut(t,c),f=Math.abs(p.x-E.x),m=Math.abs(p.y-E.y),S=p.y<E.y,_=p.x>E.x,v=S?Gy.LABEL_OFFSET_ABOVE:Gy.LABEL_OFFSET_BELOW,D=_?Gy.LABEL_OFFSET_RIGHT:Gy.LABEL_OFFSET_LEFT,k=f>Gy.MIN_LINE_LENGTH_FOR_LABEL,b=m>Gy.MIN_LINE_LENGTH_FOR_LABEL,M={color:G4.LABEL_TEXT,mixBlendMode:"difference",pointerEvents:"none",fontSize:Gy.LABEL_FONT_SIZE,fontFamily:"monospace",fontWeight:"bold"};return iA.jsxs("div",{style:{position:"absolute",left:0,top:0,width:i,height:n,overflow:"hidden",pointerEvents:"none",zIndex:EQ.dimensionOverlay},children:[iA.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none"},width:i,height:n,children:[iA.jsx("line",{x1:E.x,y1:E.y,x2:p.x,y2:E.y,stroke:G4.OFFSET_LINE,strokeWidth:Gy.LINE_STROKE_WIDTH,strokeDasharray:Gy.LINE_DASH_PATTERN}),iA.jsx("line",{x1:p.x,y1:E.y,x2:p.x,y2:p.y,stroke:G4.OFFSET_LINE,strokeWidth:Gy.LINE_STROKE_WIDTH,strokeDasharray:Gy.LINE_DASH_PATTERN}),iA.jsx("circle",{cx:p.x,cy:p.y,r:Gy.COMPONENT_MARKER_RADIUS,fill:G4.COMPONENT_MARKER_FILL,stroke:G4.COMPONENT_MARKER_STROKE,strokeWidth:1})]}),k&&iA.jsxs("div",{style:{...M,position:"absolute",left:Math.min(E.x,p.x),top:E.y+v,width:Math.abs(p.x-E.x),textAlign:"center"},children:["Δx: ",h.toFixed(2),"mm"]}),b&&iA.jsxs("div",{style:{...M,position:"absolute",left:p.x+D,top:Math.min(E.y,p.y),height:Math.abs(p.y-E.y),display:"flex",flexDirection:"column",justifyContent:"center"},children:["Δy: ",u.toFixed(2),"mm"]})]})},Dz=e=>{if(e.length===0)return null;let A=e[0].x,t=e[0].y,i=e[0].x,n=e[0].y;for(const o of e)o.x<A&&(A=o.x),o.y<t&&(t=o.y),o.x>i&&(i=o.x),o.y>n&&(n=o.y);return{center:{x:(A+i)/2,y:(t+n)/2},width:i-A,height:n-t}},eEt=(e,A)=>{if(A.length<3)return!1;let t=!1;for(let i=0,n=A.length-1;i<A.length;n=i++){const o=A[i].x,s=A[i].y,r=A[n].x,a=A[n].y;s>e.y!=a>e.y&&e.x<(r-o)*(e.y-s)/(a-s||Number.EPSILON)+o&&(t=!t)}return t},FXe=(e,A,t)=>{const i=[];for(const n of e){if(!n._element)continue;if("x1"in n&&n._element?.type==="pcb_trace"){const r=Tje({x:A.x,y:A.y},{x:n.x1,y:n.y1},{x:n.x2,y:n.y2}),a=n.width||.5,g=Math.max(a*25,2)/t.a;r<g&&i.push(n);continue}if(n.pcb_drawing_type==="polygon"){const r=n.points.map(g=>({x:Xe.parse(g.x),y:Xe.parse(g.y)})),a=Dz(r);if(!a||A.x<a.center.x-a.width/2||A.x>a.center.x+a.width/2||A.y<a.center.y-a.height/2||A.y>a.center.y+a.height/2)continue;eEt(A,r)&&i.push(n);continue}if(n.pcb_drawing_type==="polygon_with_arcs"){const r=n.brep_shape.outer_ring.vertices.map(g=>({x:Xe.parse(g.x),y:Xe.parse(g.y)})),a=Dz(r);if(!a||A.x<a.center.x-a.width/2||A.x>a.center.x+a.width/2||A.y<a.center.y-a.height/2||A.y>a.center.y+a.height/2)continue;eEt(A,r)&&i.push(n);continue}if(!("x"in n&&"y"in n))continue;let o=0,s=0;if("w"in n&&"h"in n)o=n.w,s=n.h;else if("r"in n)o=n.r*2,s=n.r*2;else if("rX"in n&&"rY"in n)o=n.rX*2,s=n.rY*2;else continue;Math.abs(n.x-A.x)<o/2&&Math.abs(n.y-A.y)<s/2&&i.push(n)}return i},NXe=({elements:e,children:A,transform:t,primitives:i,onMouseHoverOverPrimitives:n})=>{const[o,s]=gA.useState([]),[r,a]=gA.useState({x:0,y:0}),[g,{width:c,height:I}]=N4(),l=gA.useMemo(()=>{const C=[];for(const h of o){if(h._element?.type==="pcb_via"||h._element?.type==="pcb_component"||h?.layer==="drill")continue;let u=null,E=0,p=0;if(h.pcb_drawing_type==="polygon"){const _=Dz(h.points);if(!_)continue;u=_.center,E=_.width,p=_.height}else if(h.pcb_drawing_type==="polygon_with_arcs"){const _=h.brep_shape.outer_ring.vertices.map(D=>({x:D.x,y:D.y})),v=Dz(_);if(!v)continue;u=v.center,E=v.width,p=v.height}else"x"in h&&"y"in h&&(u={x:h.x,y:h.y},E="w"in h?h.w:"r"in h?h.r*2:"rX"in h&&"rY"in h?h.rX*2:0,p="h"in h?h.h:"r"in h?h.r*2:"rX"in h&&"rY"in h?h.rY*2:0);if(!u)continue;const f=Ut(t,u),m={w:E*t.a,h:p*t.a},S=C.filter(_=>f.x===_.screen_x&&f.y===_.screen_y&&m.w===_.screen_w&&m.h===_.screen_h).length;C.push({...h,x:u.x,y:u.y,w:E,h:p,screen_x:f.x,screen_y:f.y,screen_w:m.w,screen_h:m.h,same_space_index:S})}return C},[o,t]),B=(C,h,u,E)=>{a({x:C,y:h});const p=Ut(v_(u),{x:C,y:h}),f=FXe(E,p,u);yXe(new Set(f.map(m=>m._pcb_drawing_object_id)),new Set(o.map(m=>m._pcb_drawing_object_id)))||(s(f),n(f))};return iA.jsxs("div",{ref:g,style:{position:"relative",width:"100%",height:"100%"},onMouseMove:C=>{if(t){const h=C.currentTarget.getBoundingClientRect(),u=C.clientX-h.left,E=C.clientY-h.top;B(u,E,t,i)}},onTouchStart:C=>{if(t){const h=C.touches[0],u=C.currentTarget.getBoundingClientRect(),E=h.clientX-u.left,p=h.clientY-u.top;B(E,p,t,i)}},children:[A,iA.jsx(SXe,{elements:e,mousePos:r,highlightedPrimitives:l}),t&&iA.jsx(RXe,{elements:e,highlightedPrimitives:l,transform:t,containerWidth:c,containerHeight:I})]})},iEt=["rgb(255, 100, 100)","rgb(100, 255, 100)","rgb(100, 100, 255)","rgb(255, 255, 100)","rgb(255, 100, 255)","rgb(100, 255, 255)","rgb(255, 150, 100)","rgb(150, 100, 255)","rgb(100, 255, 150)","rgb(255, 100, 150)"],GXe=({children:e,transform:A=RB(),elements:t=[]})=>{const[i,{width:n,height:o}]=N4(),s=gA.useRef(null),{is_showing_pcb_groups:r,pcb_group_view_mode:a}=n0(g=>({is_showing_pcb_groups:g.is_showing_pcb_groups,pcb_group_view_mode:g.pcb_group_view_mode}));return gA.useEffect(()=>{const g=s.current;if(!g||!n||!o)return;g.width=n,g.height=o;const c=g.getContext("2d");if(!c||(c.clearRect(0,0,n,o),!r))return;const I=t.filter(f=>f.type==="pcb_group"),l=t.filter(f=>f.type==="pcb_component"),B=t.filter(f=>f.type==="source_group"),C=new Map(B.map(f=>[f.source_group_id,f])),h=I.filter(f=>{if(a==="all")return!0;if(!f.source_group_id)return!1;const m=C.get(f.source_group_id);return m?m.was_automatically_named!==!0:!1}),u=new Map;B.forEach(f=>{const m=f;if(m.parent_source_group_id){const S=u.get(m.parent_source_group_id)||[];S.push(f.source_group_id),u.set(m.parent_source_group_id,S)}});const E=f=>{const m=[],S=u.get(f)||[];for(const _ of S)m.push(_),m.push(...E(_));return m},p=f=>{const m=B.find(S=>S.source_group_id===f);return m?.parent_source_group_id?1+p(m.parent_source_group_id):0};h.forEach((f,m)=>{let S=l.filter(FA=>FA.pcb_group_id===f.pcb_group_id);if(f.source_group_id){const FA=E(f.source_group_id),pA=I.filter(uA=>uA.source_group_id&&FA.includes(uA.source_group_id));for(const uA of pA){const HA=l.filter(RA=>RA.pcb_group_id===uA.pcb_group_id);S=[...S,...HA]}}if(S.length===0)return;let _=1/0,v=1/0,D=-1/0,k=-1/0;if(S.forEach(FA=>{if(FA.center&&typeof FA.width=="number"&&typeof FA.height=="number"){const pA=FA.center.x-FA.width/2,uA=FA.center.x+FA.width/2,HA=FA.center.y+FA.height/2,RA=FA.center.y-FA.height/2;_=Math.min(_,pA),D=Math.max(D,uA),v=Math.min(v,RA),k=Math.max(k,HA)}}),_===1/0||D===-1/0)return;const b=f.source_group_id?p(f.source_group_id):0,M=f.source_group_id?E(f.source_group_id).length>0:!1,K=1+(M?.5:0);_-=K,D+=K,v-=K,k+=K;const P=Ut(A,{x:_,y:k}),V=Ut(A,{x:D,y:k}),z=Ut(A,{x:_,y:v}),nA=Ut(A,{x:D,y:v}),cA=iEt[m%iEt.length];c.strokeStyle=cA,c.lineWidth=2;const hA=Math.max(4,Math.min(12,8*Math.abs(A.a))),tA=Math.max(2,Math.min(6,4*Math.abs(A.a))),lA=hA*(M?1.3:1),EA=tA;c.setLineDash([lA,EA]),c.beginPath(),c.moveTo(P.x,P.y),c.lineTo(V.x,V.y),c.lineTo(nA.x,nA.y),c.lineTo(z.x,z.y),c.closePath(),c.stroke();const bA=Math.max(8,Math.min(12,10*Math.abs(A.a))),LA=b==0||b==1?0:b*.11,JA=bA*(1-LA),MA=4,rA=f.name||`Group ${m+1}`;c.font=`${JA}px sans-serif`,c.setLineDash([]);const wA=c.measureText(rA).width+MA*2,PA=JA+MA*2,tt=P.x-5,at=P.y-5,vA=3;if(c.fillStyle="rgba(0, 0, 0, 0.8)",c.beginPath(),c.roundRect(tt,at-PA,wA,PA,vA),c.fill(),c.fillStyle=cA,c.textAlign="left",c.textBaseline="middle",c.fillText(rA,tt+MA,at-PA/2),f.anchor_position){const FA=f.anchor_position,pA=_,uA=D,HA=k,RA=v;let kA={x:FA.x,y:FA.y};const KA=Math.abs(FA.x-pA),YA=Math.abs(FA.x-uA),XA=Math.abs(FA.y-HA),et=Math.abs(FA.y-RA),It=Math.min(KA,YA,XA,et);It===KA?kA={x:pA,y:FA.y}:It===YA?kA={x:uA,y:FA.y}:It===XA?kA={x:FA.x,y:HA}:kA={x:FA.x,y:RA};const ut=Ut(A,kA);c.strokeStyle="white",c.lineWidth=1.5,c.setLineDash([]);const Et=Math.max(4,Math.min(8,6*Math.abs(A.a)));c.beginPath(),c.moveTo(ut.x-Et,ut.y),c.lineTo(ut.x+Et,ut.y),c.stroke(),c.beginPath(),c.moveTo(ut.x,ut.y-Et),c.lineTo(ut.x,ut.y+Et),c.stroke()}})},[t,A,n,o,r,a]),iA.jsxs("div",{ref:i,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:s,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:EQ.pcbGroupOverlay,display:r?"block":"none"}})]})},MXe=({transform:e,soup:A,children:t})=>{const i=n0(r=>r.is_showing_rats_nest),{netMap:n,idToNetMap:o}=gA.useMemo(()=>Wut(A||[]),[A]),s=gA.useMemo(()=>{if(!A||!i)return[];const r=l=>{const B=_k(A)[l.replace(/_\d+$/,"")].get(l);return B&&"x"in B&&"y"in B?{x:B.x,y:B.y}:null},a=(l,B)=>{const C=n[B]||[];let h=null,u=1/0;return C.forEach(E=>{const p=r(E);if(p){const f=Math.sqrt((l.x-p.x)**2+(l.y-p.y)**2);f<u&&f>0&&(u=f,h=p)}}),h},g=_k(A).pcb_port.list(),c=_k(A).source_trace.list(),I=[];return g.forEach((l,B)=>{const C=o[l.pcb_port_id];let h=!1;for(const p of c)p.connected_source_port_ids.includes(l.source_port_id)&&p.connected_source_net_ids.length>0&&(h=!0);if(!C)return;const u={x:l.x,y:l.y},E=a(u,C);E&&I.push({key:`${l.pcb_port_id}-${B}`,startPoint:u,endPoint:E,isInNet:h})}),I},[A,n,o,i]);return!A||!i?t:(e||(e=RB()),iA.jsxs("div",{style:{position:"relative"},children:[t,iA.jsx("svg",{style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",opacity:.5,zIndex:EQ.ratsNestOverlay},children:s.map(({key:r,startPoint:a,endPoint:g,isInNet:c})=>{const I=Ut(e,a),l=Ut(e,g);return iA.jsx("line",{x1:I.x,y1:I.y,x2:l.x,y2:l.y,stroke:"white",strokeWidth:"1",strokeDasharray:c?"6,6":void 0},r)})})]}))},LXe={version:"1.11.274"},xk=(e,A)=>{const t=n0(i=>i.is_mouse_over_container);gA.useEffect(()=>{if(!e||typeof A!="function")return;const i=n=>{const o=e.split("+"),s=o.includes("ctrl"),r=o.includes("shift"),a=o.includes("alt"),g=o.includes("meta"),c=o[o.length-1];t&&(!s||n.ctrlKey)&&(!r||n.shiftKey)&&(!a||n.altKey)&&(!g||n.metaKey)&&n.key.toLowerCase()===c.toLowerCase()&&(n.preventDefault(),A())};return window.addEventListener("keydown",i),()=>{window.removeEventListener("keydown",i)}},[e,A])},UXe=()=>{const[e,A]=gA.useState(!1);return gA.useEffect(()=>{const t=()=>{A(window.innerWidth<=768)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),e},HXe=({name:e,selected:A,onClick:t})=>iA.jsxs("div",{className:mL`
5797
+ `,fXe=({children:e,transform:A=RB(),elements:t})=>{const i=gA.useRef(null),{isShowingDRCErrors:n,hoveredErrorId:o}=n0(g=>({isShowingDRCErrors:g.is_showing_drc_errors,hoveredErrorId:g.hovered_error_id}));if(!t)return iA.jsx("div",{style:{position:"relative"},ref:i,children:e});const s=t.filter(g=>g.type==="pcb_trace_error"),r=t.filter(g=>g.type==="pcb_trace_error"&&g.message?.includes("Multiple components found with name")),a=new Map;return t.forEach(g=>{g.type==="pcb_port"&&a.set(g.pcb_port_id,g)}),iA.jsxs("div",{style:{position:"relative"},ref:i,children:[e,s.map((g,c)=>{const{pcb_port_ids:I,pcb_trace_id:l}=g,B=I?.[0]?a.get(I[0]):void 0,C=I?.[1]?a.get(I[1]):void 0,h=t?_k(t).pcb_trace.get(l):void 0,u=g.pcb_trace_error_id||`error_${c}_${g.error_type}_${g.message?.slice(0,20)}`,E=o===u;if(B&&C){const p=Ut(A,{x:B.x,y:B.y}),f=Ut(A,{x:C.x,y:C.y}),m=!(isNaN(p.x)||isNaN(p.y)||isNaN(f.x)||isNaN(f.y)),S={x:(p.x+f.x)/2,y:(p.y+f.y)/2};if(isNaN(S.x)||isNaN(S.y))return null;const _=cDA(S,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx(dXe,{screenPort1:p,screenPort2:f,errorCenter:S,canLineBeDrawn:m,isHighlighted:E}),iA.jsx("div",{style:{position:"absolute",left:S.x-15,top:S.y-15,width:30,height:30,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:v=>{const D=v.currentTarget.nextElementSibling;if(D){const k=D.querySelector(".error-message");k&&(k.style.opacity="1")}},onMouseLeave:v=>{if(!E){const D=v.currentTarget.nextElementSibling;if(D){const k=D.querySelector(".error-message");k&&(k.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:E?200:100,left:_.left,top:_.top,color:E?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:n||E?"flex":"none",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:_.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:E?1:0,border:`1px solid ${E?"#ff4444":"red"}`},children:g.message})})]},u)}if(h?.route&&(n||E)){const p=h.route.map(_=>Ut(A,{x:_.x,y:_.y}));if(p.some(_=>isNaN(_.x)||isNaN(_.y)))return null;const f=Math.floor(p.length/2),m=p[f],S=cDA(m,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx(pXe,{points:p,errorCenter:m,isHighlighted:E}),iA.jsx("div",{style:{position:"absolute",left:m.x-15,top:m.y-15,width:30,height:30,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:_=>{const v=_.currentTarget.nextElementSibling;if(v){const D=v.querySelector(".error-message");D&&(D.style.opacity="1")}},onMouseLeave:_=>{if(!E){const v=_.currentTarget.nextElementSibling;if(v){const D=v.querySelector(".error-message");D&&(D.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:E?EQ.errorOverlay+10:EQ.errorOverlay+1,left:S.left,top:S.top,color:E?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:"flex",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:S.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:E?1:0,border:`1px solid ${E?"#ff4444":"red"}`},children:g.message})})]},u)}return null}),r.map((g,c)=>{const I=g.component_name||g.message?.match(/name "([^"]+)"/)?.[1];if(!I)return null;const l=t?.filter(h=>h.type==="source_component"&&h.name===I||h.type==="pcb_component"&&t?.find(u=>u.type==="source_component"&&u.source_component_id===h.source_component_id&&u.name===I))||[],B=g.pcb_trace_error_id||`error_${c}_${g.error_type}_${g.message?.slice(0,20)}`,C=o===B;return!C&&!n?null:l.map((h,u)=>{let E={x:0,y:0};if(h.type==="pcb_component")E=h.center||{x:0,y:0};else if(h.type==="source_component"){const k=t?.find(b=>b.type==="pcb_component"&&b.source_component_id===h.source_component_id);k&&k.type==="pcb_component"&&(E=k.center||{x:0,y:0})}const p=Ut(A,E);if(isNaN(p.x)||isNaN(p.y))return null;const f=Math.abs(A.a),v=Math.max(8,Math.min(30,.5*f)),D=cDA(p,i);return iA.jsxs(gA.Fragment,{children:[iA.jsx("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:EQ.errorOverlay},width:"100%",height:"100%",children:C?iA.jsx("polygon",{points:`${p.x},${p.y-v*1.25} ${p.x+v},${p.y} ${p.x},${p.y+v*1.25} ${p.x-v},${p.y}`,fill:"#ff4444"}):iA.jsx("circle",{cx:p.x,cy:p.y,r:v,fill:"none",stroke:C?"#ff4444":"red",strokeWidth:C?Math.max(2,v*.15):Math.max(1,v*.1),opacity:1})}),iA.jsx("div",{style:{position:"absolute",left:p.x-(v+10),top:p.y-(v+10),width:(v+10)*2,height:(v+10)*2,zIndex:EQ.errorOverlay+5,cursor:"pointer",borderRadius:"50%"},onMouseEnter:k=>{const b=k.currentTarget.nextElementSibling;if(b){const M=b.querySelector(".error-message");M&&(M.style.opacity="1")}},onMouseLeave:k=>{if(!C){const b=k.currentTarget.nextElementSibling;if(b){const M=b.querySelector(".error-message");M&&(M.style.opacity="0")}}}}),iA.jsx("div",{style:{position:"absolute",zIndex:C?EQ.errorOverlay+20:EQ.errorOverlay+10,left:D.left,top:D.top,color:C?"#ff4444":"red",textAlign:"center",fontFamily:"sans-serif",fontSize:12,display:n||C?"flex":"none",flexDirection:"column",alignItems:"center",pointerEvents:"none",transform:D.transform},children:iA.jsx("div",{className:`error-message ${IDA}`,style:{opacity:C?1:0,border:`1px solid ${C?"#ff4444":"red"}`},children:g.message})})]},`${B}_${u}`)})})]})};function yXe(e,A){return e.size!==A.size?!1:Array.from(e).every(t=>A.has(t))}function mXe({primitiveElement:e,elements:A}){let t=e.trace_length?`${e.trace_length.toFixed(3)}`:"";const i=_k(A).source_trace.get(e?.source_trace_id);if(i?.display_name&&(i?.max_length?t+=` / ${i.max_length}mm `:t+=" mm ",t+=`(${i.display_name})`),!t)return null;const n=e.trace_length&&i?.max_length&&e.trace_length>i.max_length;return{text:t,isOverLength:n}}function wXe(e){const{primitives:A,is_showing_multiple_traces_length:t,elements:i}=e,n=A.filter(a=>a._element.type==="pcb_trace"),o=i.filter(a=>a.type==="source_trace"),s=A.filter(a=>a._element.type!=="pcb_trace"),r=n.filter(a=>o.some(g=>a._element.type==="pcb_trace"&&a._element.source_trace_id===g.source_trace_id&&g.max_length!==void 0));if(!t)return[...s,...r];if(n.length>1){const a=n.reduce((g,c)=>{const I=g._element.trace_length;return c._element.trace_length<I?c:g},n[0]);return[...s,a]}return A}var DXe={position:"absolute",left:0,top:0,pointerEvents:"none",color:"red",fontFamily:"sans-serif",fontSize:12,textShadow:"0 0 2px black"},_Xe=e=>{const{_element:A,_parent_pcb_component:t,_parent_source_component:i,_source_port:n}=e;switch(A.type){case"pcb_trace":return A.trace_length?`${A.trace_length.toFixed(3)}`:"";case"pcb_smtpad":case"pcb_plated_hole":{const o=[],s=Array.from(new Set((A.port_hints??[]).concat(n?.port_hints??[]))).filter(a=>!/^[0-9]+$/.test(a)).filter(a=>!a.includes("unnamed_")).sort((a,g)=>g.localeCompare(a)),r=i&&"name"in i&&i.name&&!i.name.includes("unnamed_")?i.name:null;return s.length>0?r?o.push(...s.map(a=>`${r}.${a}`)):o.push(...s):r&&o.push(r),o.join(", ")}default:return""}},xXe={top:"red",bottom:"aqua"},bXe=({primitive:e,mousePos:A,elements:t})=>{const[i,n]=gA.useState(!1),o=e._element;gA.useEffect(()=>{setTimeout(()=>{n(!0)},100)},[]);const[s,r,a,g]=[e.screen_x,e.screen_y,e.screen_w,e.screen_h],c=e.same_space_index??0,I=26,l=xXe[e?._element?.layer]??"red";let B=0;if(o.type==="pcb_smtpad"&&o?.shape==="rotated_rect"?B=o?.ccw_rotation??0:(o.type==="pcb_smtpad"&&(o?.shape==="pill"||o?.shape==="rotated_pill")&&"ccw_rotation"in e||o.type==="pcb_plated_hole"&&(o?.shape==="pill"||o?.shape==="oval")&&"ccw_rotation"in e)&&(B=o.ccw_rotation??0),o.type==="pcb_trace"){const u=mXe({primitiveElement:o,elements:t});if(!u)return null;const E=A.y-35;return iA.jsx("div",{style:{zIndex:EQ.elementOverlay,position:"absolute",left:A.x,top:E,color:l,pointerEvents:"none",transform:"translateX(-50%)"},children:iA.jsx("div",{style:{backgroundColor:"#f2efcc",color:u.isOverLength?"red":"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",minWidth:"45px",textAlign:"center",whiteSpace:"nowrap"},children:u.text})})}const C=_Xe(e);return C.trim().length===0?null:iA.jsx("div",{style:{zIndex:EQ.elementOverlay,position:"absolute",left:s-a/2-8,top:r-g/2-8,width:a+16,height:g+16,color:l,transform:`rotate(${-B}deg)`,transformOrigin:"center center"},children:iA.jsx("div",{style:{width:i?`calc(100% + ${I*2*c}px)`:"100%",height:i?`calc(100% + ${I*2*c}px)`:"100%",marginLeft:i?`${-I*c}px`:0,marginTop:i?`${-I*c}px`:0,border:`1px solid ${l}`,opacity:i||c===0?1:0,transition:"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"},children:iA.jsx("div",{style:{position:"absolute",bottom:g+20+I*c,marginRight:i?`${-I*c}px`:0,marginBottom:i?0:-I*c,transition:"margin-right 0.2s, margin-bottom 0.2s",backgroundColor:"#f2efcc",color:"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",transform:`rotate(${B}deg)`,minWidth:"45px",textAlign:"center"},children:C})})})},SXe=({highlightedPrimitives:e,mousePos:A,elements:t})=>{const[i,n]=n0(r=>[r.is_moving_component,r.is_showing_multiple_traces_length]),o=e.some(r=>r._element.type==="pcb_smtpad")&&e.some(r=>r._element.type==="pcb_trace");let s=e;return o&&(s=s.filter(r=>r._element.type==="pcb_smtpad")),s=wXe({primitives:s,is_showing_multiple_traces_length:n,elements:t}),iA.jsx("div",{style:DXe,children:!i&&s.map((r,a)=>iA.jsx(bXe,{primitive:r,mousePos:A,elements:t},a))})},vXe=e=>{const A=[];for(const t of e){if(!t.center||typeof t.width!="number"||typeof t.height!="number")continue;const i=t.width/2,n=t.height/2;A.push({x:t.center.x-i,y:t.center.y-n}),A.push({x:t.center.x+i,y:t.center.y+n})}return iXe(A)},Gy={GROUP_PADDING:1,MIN_LINE_LENGTH_FOR_LABEL:40,LABEL_OFFSET_ABOVE:2,LABEL_OFFSET_BELOW:-18,LABEL_OFFSET_RIGHT:8,LABEL_OFFSET_LEFT:-80,LINE_STROKE_WIDTH:1.5,LINE_DASH_PATTERN:"4,4",COMPONENT_MARKER_RADIUS:3,LABEL_FONT_SIZE:11},G4={OFFSET_LINE:"white",COMPONENT_MARKER_FILL:"#66ccff",COMPONENT_MARKER_STROKE:"white",LABEL_TEXT:"white"},kXe=(e,A)=>{const{minX:t,maxX:i,minY:n,maxY:o}=A,s=Math.abs(e.x-t),r=Math.abs(e.x-i),a=Math.abs(e.y-o),g=Math.abs(e.y-n),c=Math.min(s,r,a,g);return c===s?{x:t,y:e.y}:c===r?{x:i,y:e.y}:c===a?{x:e.x,y:o}:{x:e.x,y:n}},RXe=({elements:e,highlightedPrimitives:A,transform:t,containerWidth:i,containerHeight:n,children:o})=>{if(!n0(N=>N.is_showing_group_anchor_offsets)||A.length===0)return null;const r=A.find(N=>N._parent_pcb_component?.type==="pcb_component"||N._element?.type==="pcb_component");if(!r)return null;const a=r._parent_pcb_component||r._element;if(!a?.pcb_group_id)return null;const g=e.filter(N=>N.type==="pcb_group").find(N=>N.pcb_group_id===a.pcb_group_id);if(!g?.anchor_position)return null;const c=r._element?.type==="pcb_smtpad"?{x:r.x,y:r.y}:a.center||{x:r.x,y:r.y},I=e.filter(N=>N.type==="pcb_component").filter(N=>N.pcb_group_id===g.pcb_group_id),l=vXe(I);if(!l)return null;const B={minX:l.minX-Gy.GROUP_PADDING,maxX:l.maxX+Gy.GROUP_PADDING,minY:l.minY-Gy.GROUP_PADDING,maxY:l.maxY+Gy.GROUP_PADDING},C=kXe(g.anchor_position,B),h=c.x-C.x,u=c.y-C.y,E=Ut(t,C),p=Ut(t,c),f=Math.abs(p.x-E.x),m=Math.abs(p.y-E.y),S=p.y<E.y,_=p.x>E.x,v=S?Gy.LABEL_OFFSET_ABOVE:Gy.LABEL_OFFSET_BELOW,D=_?Gy.LABEL_OFFSET_RIGHT:Gy.LABEL_OFFSET_LEFT,k=f>Gy.MIN_LINE_LENGTH_FOR_LABEL,b=m>Gy.MIN_LINE_LENGTH_FOR_LABEL,M={color:G4.LABEL_TEXT,mixBlendMode:"difference",pointerEvents:"none",fontSize:Gy.LABEL_FONT_SIZE,fontFamily:"monospace",fontWeight:"bold"};return iA.jsxs("div",{style:{position:"absolute",left:0,top:0,width:i,height:n,overflow:"hidden",pointerEvents:"none",zIndex:EQ.dimensionOverlay},children:[iA.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none"},width:i,height:n,children:[iA.jsx("line",{x1:E.x,y1:E.y,x2:p.x,y2:E.y,stroke:G4.OFFSET_LINE,strokeWidth:Gy.LINE_STROKE_WIDTH,strokeDasharray:Gy.LINE_DASH_PATTERN}),iA.jsx("line",{x1:p.x,y1:E.y,x2:p.x,y2:p.y,stroke:G4.OFFSET_LINE,strokeWidth:Gy.LINE_STROKE_WIDTH,strokeDasharray:Gy.LINE_DASH_PATTERN}),iA.jsx("circle",{cx:p.x,cy:p.y,r:Gy.COMPONENT_MARKER_RADIUS,fill:G4.COMPONENT_MARKER_FILL,stroke:G4.COMPONENT_MARKER_STROKE,strokeWidth:1})]}),k&&iA.jsxs("div",{style:{...M,position:"absolute",left:Math.min(E.x,p.x),top:E.y+v,width:Math.abs(p.x-E.x),textAlign:"center"},children:["Δx: ",h.toFixed(2),"mm"]}),b&&iA.jsxs("div",{style:{...M,position:"absolute",left:p.x+D,top:Math.min(E.y,p.y),height:Math.abs(p.y-E.y),display:"flex",flexDirection:"column",justifyContent:"center"},children:["Δy: ",u.toFixed(2),"mm"]})]})},Dz=e=>{if(e.length===0)return null;let A=e[0].x,t=e[0].y,i=e[0].x,n=e[0].y;for(const o of e)o.x<A&&(A=o.x),o.y<t&&(t=o.y),o.x>i&&(i=o.x),o.y>n&&(n=o.y);return{center:{x:(A+i)/2,y:(t+n)/2},width:i-A,height:n-t}},eEt=(e,A)=>{if(A.length<3)return!1;let t=!1;for(let i=0,n=A.length-1;i<A.length;n=i++){const o=A[i].x,s=A[i].y,r=A[n].x,a=A[n].y;s>e.y!=a>e.y&&e.x<(r-o)*(e.y-s)/(a-s||Number.EPSILON)+o&&(t=!t)}return t},FXe=(e,A,t)=>{const i=[];for(const n of e){if(!n._element)continue;if("x1"in n&&n._element?.type==="pcb_trace"){const r=Tje({x:A.x,y:A.y},{x:n.x1,y:n.y1},{x:n.x2,y:n.y2}),a=n.width||.5,g=Math.max(a*25,2)/t.a;r<g&&i.push(n);continue}if(n.pcb_drawing_type==="polygon"){const r=n.points.map(g=>({x:Xe.parse(g.x),y:Xe.parse(g.y)})),a=Dz(r);if(!a||A.x<a.center.x-a.width/2||A.x>a.center.x+a.width/2||A.y<a.center.y-a.height/2||A.y>a.center.y+a.height/2)continue;eEt(A,r)&&i.push(n);continue}if(n.pcb_drawing_type==="polygon_with_arcs"){const r=n.brep_shape.outer_ring.vertices.map(g=>({x:Xe.parse(g.x),y:Xe.parse(g.y)})),a=Dz(r);if(!a||A.x<a.center.x-a.width/2||A.x>a.center.x+a.width/2||A.y<a.center.y-a.height/2||A.y>a.center.y+a.height/2)continue;eEt(A,r)&&i.push(n);continue}if(!("x"in n&&"y"in n))continue;let o=0,s=0;if("w"in n&&"h"in n)o=n.w,s=n.h;else if("r"in n)o=n.r*2,s=n.r*2;else if("rX"in n&&"rY"in n)o=n.rX*2,s=n.rY*2;else continue;Math.abs(n.x-A.x)<o/2&&Math.abs(n.y-A.y)<s/2&&i.push(n)}return i},NXe=({elements:e,children:A,transform:t,primitives:i,onMouseHoverOverPrimitives:n})=>{const[o,s]=gA.useState([]),[r,a]=gA.useState({x:0,y:0}),[g,{width:c,height:I}]=N4(),l=gA.useMemo(()=>{const C=[];for(const h of o){if(h._element?.type==="pcb_via"||h._element?.type==="pcb_component"||h?.layer==="drill")continue;let u=null,E=0,p=0;if(h.pcb_drawing_type==="polygon"){const _=Dz(h.points);if(!_)continue;u=_.center,E=_.width,p=_.height}else if(h.pcb_drawing_type==="polygon_with_arcs"){const _=h.brep_shape.outer_ring.vertices.map(D=>({x:D.x,y:D.y})),v=Dz(_);if(!v)continue;u=v.center,E=v.width,p=v.height}else"x"in h&&"y"in h&&(u={x:h.x,y:h.y},E="w"in h?h.w:"r"in h?h.r*2:"rX"in h&&"rY"in h?h.rX*2:0,p="h"in h?h.h:"r"in h?h.r*2:"rX"in h&&"rY"in h?h.rY*2:0);if(!u)continue;const f=Ut(t,u),m={w:E*t.a,h:p*t.a},S=C.filter(_=>f.x===_.screen_x&&f.y===_.screen_y&&m.w===_.screen_w&&m.h===_.screen_h).length;C.push({...h,x:u.x,y:u.y,w:E,h:p,screen_x:f.x,screen_y:f.y,screen_w:m.w,screen_h:m.h,same_space_index:S})}return C},[o,t]),B=(C,h,u,E)=>{a({x:C,y:h});const p=Ut(v_(u),{x:C,y:h}),f=FXe(E,p,u);yXe(new Set(f.map(m=>m._pcb_drawing_object_id)),new Set(o.map(m=>m._pcb_drawing_object_id)))||(s(f),n(f))};return iA.jsxs("div",{ref:g,style:{position:"relative",width:"100%",height:"100%"},onMouseMove:C=>{if(t){const h=C.currentTarget.getBoundingClientRect(),u=C.clientX-h.left,E=C.clientY-h.top;B(u,E,t,i)}},onTouchStart:C=>{if(t){const h=C.touches[0],u=C.currentTarget.getBoundingClientRect(),E=h.clientX-u.left,p=h.clientY-u.top;B(E,p,t,i)}},children:[A,iA.jsx(SXe,{elements:e,mousePos:r,highlightedPrimitives:l}),t&&iA.jsx(RXe,{elements:e,highlightedPrimitives:l,transform:t,containerWidth:c,containerHeight:I})]})},iEt=["rgb(255, 100, 100)","rgb(100, 255, 100)","rgb(100, 100, 255)","rgb(255, 255, 100)","rgb(255, 100, 255)","rgb(100, 255, 255)","rgb(255, 150, 100)","rgb(150, 100, 255)","rgb(100, 255, 150)","rgb(255, 100, 150)"],GXe=({children:e,transform:A=RB(),elements:t=[]})=>{const[i,{width:n,height:o}]=N4(),s=gA.useRef(null),{is_showing_pcb_groups:r,pcb_group_view_mode:a}=n0(g=>({is_showing_pcb_groups:g.is_showing_pcb_groups,pcb_group_view_mode:g.pcb_group_view_mode}));return gA.useEffect(()=>{const g=s.current;if(!g||!n||!o)return;g.width=n,g.height=o;const c=g.getContext("2d");if(!c||(c.clearRect(0,0,n,o),!r))return;const I=t.filter(f=>f.type==="pcb_group"),l=t.filter(f=>f.type==="pcb_component"),B=t.filter(f=>f.type==="source_group"),C=new Map(B.map(f=>[f.source_group_id,f])),h=I.filter(f=>{if(a==="all")return!0;if(!f.source_group_id)return!1;const m=C.get(f.source_group_id);return m?m.was_automatically_named!==!0:!1}),u=new Map;B.forEach(f=>{const m=f;if(m.parent_source_group_id){const S=u.get(m.parent_source_group_id)||[];S.push(f.source_group_id),u.set(m.parent_source_group_id,S)}});const E=f=>{const m=[],S=u.get(f)||[];for(const _ of S)m.push(_),m.push(...E(_));return m},p=f=>{const m=B.find(S=>S.source_group_id===f);return m?.parent_source_group_id?1+p(m.parent_source_group_id):0};h.forEach((f,m)=>{let S=l.filter(FA=>FA.pcb_group_id===f.pcb_group_id);if(f.source_group_id){const FA=E(f.source_group_id),pA=I.filter(uA=>uA.source_group_id&&FA.includes(uA.source_group_id));for(const uA of pA){const HA=l.filter(RA=>RA.pcb_group_id===uA.pcb_group_id);S=[...S,...HA]}}if(S.length===0)return;let _=1/0,v=1/0,D=-1/0,k=-1/0;if(S.forEach(FA=>{if(FA.center&&typeof FA.width=="number"&&typeof FA.height=="number"){const pA=FA.center.x-FA.width/2,uA=FA.center.x+FA.width/2,HA=FA.center.y+FA.height/2,RA=FA.center.y-FA.height/2;_=Math.min(_,pA),D=Math.max(D,uA),v=Math.min(v,RA),k=Math.max(k,HA)}}),_===1/0||D===-1/0)return;const b=f.source_group_id?p(f.source_group_id):0,M=f.source_group_id?E(f.source_group_id).length>0:!1,K=1+(M?.5:0);_-=K,D+=K,v-=K,k+=K;const P=Ut(A,{x:_,y:k}),V=Ut(A,{x:D,y:k}),z=Ut(A,{x:_,y:v}),nA=Ut(A,{x:D,y:v}),cA=iEt[m%iEt.length];c.strokeStyle=cA,c.lineWidth=2;const hA=Math.max(4,Math.min(12,8*Math.abs(A.a))),tA=Math.max(2,Math.min(6,4*Math.abs(A.a))),lA=hA*(M?1.3:1),EA=tA;c.setLineDash([lA,EA]),c.beginPath(),c.moveTo(P.x,P.y),c.lineTo(V.x,V.y),c.lineTo(nA.x,nA.y),c.lineTo(z.x,z.y),c.closePath(),c.stroke();const bA=Math.max(8,Math.min(12,10*Math.abs(A.a))),LA=b==0||b==1?0:b*.11,JA=bA*(1-LA),MA=4,rA=f.name||`Group ${m+1}`;c.font=`${JA}px sans-serif`,c.setLineDash([]);const wA=c.measureText(rA).width+MA*2,PA=JA+MA*2,tt=P.x-5,at=P.y-5,vA=3;if(c.fillStyle="rgba(0, 0, 0, 0.8)",c.beginPath(),c.roundRect(tt,at-PA,wA,PA,vA),c.fill(),c.fillStyle=cA,c.textAlign="left",c.textBaseline="middle",c.fillText(rA,tt+MA,at-PA/2),f.anchor_position){const FA=f.anchor_position,pA=_,uA=D,HA=k,RA=v;let kA={x:FA.x,y:FA.y};const KA=Math.abs(FA.x-pA),YA=Math.abs(FA.x-uA),XA=Math.abs(FA.y-HA),et=Math.abs(FA.y-RA),It=Math.min(KA,YA,XA,et);It===KA?kA={x:pA,y:FA.y}:It===YA?kA={x:uA,y:FA.y}:It===XA?kA={x:FA.x,y:HA}:kA={x:FA.x,y:RA};const ut=Ut(A,kA);c.strokeStyle="white",c.lineWidth=1.5,c.setLineDash([]);const Et=Math.max(4,Math.min(8,6*Math.abs(A.a)));c.beginPath(),c.moveTo(ut.x-Et,ut.y),c.lineTo(ut.x+Et,ut.y),c.stroke(),c.beginPath(),c.moveTo(ut.x,ut.y-Et),c.lineTo(ut.x,ut.y+Et),c.stroke()}})},[t,A,n,o,r,a]),iA.jsxs("div",{ref:i,style:{position:"relative",width:"100%",height:"100%"},children:[e,iA.jsx("canvas",{ref:s,style:{position:"absolute",top:0,left:0,pointerEvents:"none",zIndex:EQ.pcbGroupOverlay,display:r?"block":"none"}})]})},MXe=({transform:e,soup:A,children:t})=>{const i=n0(r=>r.is_showing_rats_nest),{netMap:n,idToNetMap:o}=gA.useMemo(()=>Wut(A||[]),[A]),s=gA.useMemo(()=>{if(!A||!i)return[];const r=l=>{const B=_k(A)[l.replace(/_\d+$/,"")].get(l);return B&&"x"in B&&"y"in B?{x:B.x,y:B.y}:null},a=(l,B)=>{const C=n[B]||[];let h=null,u=1/0;return C.forEach(E=>{const p=r(E);if(p){const f=Math.sqrt((l.x-p.x)**2+(l.y-p.y)**2);f<u&&f>0&&(u=f,h=p)}}),h},g=_k(A).pcb_port.list(),c=_k(A).source_trace.list(),I=[];return g.forEach((l,B)=>{const C=o[l.pcb_port_id];let h=!1;for(const p of c)p.connected_source_port_ids.includes(l.source_port_id)&&p.connected_source_net_ids.length>0&&(h=!0);if(!C)return;const u={x:l.x,y:l.y},E=a(u,C);E&&I.push({key:`${l.pcb_port_id}-${B}`,startPoint:u,endPoint:E,isInNet:h})}),I},[A,n,o,i]);return!A||!i?t:(e||(e=RB()),iA.jsxs("div",{style:{position:"relative"},children:[t,iA.jsx("svg",{style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",opacity:.5,zIndex:EQ.ratsNestOverlay},children:s.map(({key:r,startPoint:a,endPoint:g,isInNet:c})=>{const I=Ut(e,a),l=Ut(e,g);return iA.jsx("line",{x1:I.x,y1:I.y,x2:l.x,y2:l.y,stroke:"white",strokeWidth:"1",strokeDasharray:c?"6,6":void 0},r)})})]}))},LXe={version:"1.11.276"},xk=(e,A)=>{const t=n0(i=>i.is_mouse_over_container);gA.useEffect(()=>{if(!e||typeof A!="function")return;const i=n=>{const o=e.split("+"),s=o.includes("ctrl"),r=o.includes("shift"),a=o.includes("alt"),g=o.includes("meta"),c=o[o.length-1];t&&(!s||n.ctrlKey)&&(!r||n.shiftKey)&&(!a||n.altKey)&&(!g||n.metaKey)&&n.key.toLowerCase()===c.toLowerCase()&&(n.preventDefault(),A())};return window.addEventListener("keydown",i),()=>{window.removeEventListener("keydown",i)}},[e,A])},UXe=()=>{const[e,A]=gA.useState(!1);return gA.useEffect(()=>{const t=()=>{A(window.innerWidth<=768)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),e},HXe=({name:e,selected:A,onClick:t})=>iA.jsxs("div",{className:mL`
5798
5798
  margin-top: 2px;
5799
5799
  padding: 4px;
5800
5800
  padding-left: 8px;
@@ -5830,7 +5830,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function Yut(e,A,t){if(!A||!t)retu
5830
5830
  &:hover {
5831
5831
  background-color: rgba(255, 255, 255, 0.1);
5832
5832
  }
5833
- `,onClick:i=>{i.stopPropagation(),t()},onTouchEnd:i=>{i.preventDefault(),i.stopPropagation(),t()},children:[iA.jsx("input",{type:"radio",checked:A,onChange:()=>{},readOnly:!0}),iA.jsx("span",{style:{color:"#eee"},children:e})]}),YXe=({children:e,elements:A})=>{const t=UXe(),{isMouseOverContainer:i,setIsMouseOverContainer:n,selectedLayer:o,selectLayer:s,editModes:r,viewSettings:a,setEditMode:g,setIsShowingRatsNest:c,setIsShowingMultipleTracesLength:I,setIsShowingAutorouting:l,setIsShowingDrcErrors:B,setIsShowingCopperPours:C,setIsShowingPcbGroups:h,setIsShowingGroupAnchorOffsets:u,setIsShowingSolderMask:E,setPcbGroupViewMode:p,setHoveredErrorId:f}=n0(mA=>({isMouseOverContainer:mA.is_mouse_over_container,setIsMouseOverContainer:mA.setIsMouseOverContainer,selectedLayer:mA.selected_layer,selectLayer:mA.selectLayer,editModes:{in_move_footprint_mode:mA.in_move_footprint_mode,in_draw_trace_mode:mA.in_draw_trace_mode},viewSettings:{is_showing_rats_nest:mA.is_showing_rats_nest,is_showing_multiple_traces_length:mA.is_showing_multiple_traces_length,is_showing_autorouting:mA.is_showing_autorouting,is_showing_drc_errors:mA.is_showing_drc_errors,is_showing_copper_pours:mA.is_showing_copper_pours,is_showing_pcb_groups:mA.is_showing_pcb_groups,is_showing_group_anchor_offsets:mA.is_showing_group_anchor_offsets,is_showing_solder_mask:mA.is_showing_solder_mask,pcb_group_view_mode:mA.pcb_group_view_mode},setEditMode:mA.setEditMode,setIsShowingRatsNest:mA.setIsShowingRatsNest,setIsShowingMultipleTracesLength:mA.setIsShowingMultipleTracesLength,setIsShowingAutorouting:mA.setIsShowingAutorouting,setIsShowingDrcErrors:mA.setIsShowingDrcErrors,setIsShowingCopperPours:mA.setIsShowingCopperPours,setIsShowingPcbGroups:mA.setIsShowingPcbGroups,setIsShowingGroupAnchorOffsets:mA.setIsShowingGroupAnchorOffsets,setIsShowingSolderMask:mA.setIsShowingSolderMask,setPcbGroupViewMode:mA.setPcbGroupViewMode,setHoveredErrorId:mA.setHoveredErrorId})),[m,S]=gA.useState(!1),[_,v]=gA.useState(!1),[D,k]=gA.useState(!1),[b,M]=gA.useState(!1),N=gA.useRef(new Map),T=gA.useRef(new Map);gA.useEffect(()=>{const mA=()=>M(!0),wA=()=>M(!1);return window.addEventListener("arm-dimension-tool",mA),window.addEventListener("disarm-dimension-tool",wA),()=>{window.removeEventListener("arm-dimension-tool",mA),window.removeEventListener("disarm-dimension-tool",wA)}},[]);const K=A?.filter(mA=>mA.type.includes("error")).length??0,P=A?.filter(mA=>mA.type.includes("error"))||[],z=A?.find(mA=>mA.type==="pcb_board")?.num_layers||2,nA=z<=2?["top","bottom"]:["top",...Array.from({length:z-2},(mA,wA)=>`inner${wA+1}`),"bottom"],cA=nA,hA={1:nA[0]?()=>s(nA[0]):()=>{},2:nA[1]?()=>s(nA[1]):()=>{},3:nA[2]?()=>s(nA[2]):()=>{},4:nA[3]?()=>s(nA[3]):()=>{},5:nA[4]?()=>s(nA[4]):()=>{},6:nA[5]?()=>s(nA[5]):()=>{},7:nA[6]?()=>s(nA[6]):()=>{},8:nA[7]?()=>s(nA[7]):()=>{}};xk("1",hA[1]),xk("2",hA[2]),xk("3",hA[3]),xk("4",hA[4]),xk("5",hA[5]),xk("6",hA[6]),xk("7",hA[7]),xk("8",hA[8]);const tA=gA.useCallback(()=>{n(!0)},[n]),aA=gA.useCallback(()=>{n(!1),v(!1),S(!1),k(!1),f(null)},[n,f]),lA=gA.useCallback(()=>{v(!_)},[_]),EA=gA.useCallback(()=>{const mA=!D;k(mA),mA&&S(!1),mA||f(null)},[D,f]),bA=gA.useCallback(()=>{g(r.in_draw_trace_mode?"off":"draw_trace")},[r.in_draw_trace_mode,g]),LA=gA.useCallback(()=>{g(r.in_move_footprint_mode?"off":"move_footprint")},[r.in_move_footprint_mode,g]),JA=gA.useCallback(()=>{c(!a.is_showing_rats_nest)},[a.is_showing_rats_nest,c]),MA=gA.useCallback(()=>{M(!0),window.dispatchEvent(new Event("arm-dimension-tool"))},[]),rA=gA.useCallback(()=>{const mA=!m;S(mA),mA&&k(!1)},[m]);return iA.jsxs("div",{style:{position:"relative",zIndex:"999 !important"},onMouseEnter:tA,onMouseLeave:aA,children:[e,iA.jsxs("div",{style:{position:"absolute",bottom:4,right:8,pointerEvents:"none",color:"white",fontSize:11,opacity:i?.5:0,transition:"opacity 1s",transitionDelay:"2s",fontFamily:"sans-serif"},children:["@tscircuit/pcb-viewer@",LXe.version]}),iA.jsxs("div",{"data-toolbar-overlay":!0,onTouchStart:mA=>mA.stopPropagation(),onTouchEnd:mA=>mA.stopPropagation(),onTouchMove:mA=>mA.stopPropagation(),style:{position:"absolute",opacity:t||i?1:0,top:16,left:16,right:t?16:"auto",transition:i?"opacity 100ms linear":"opacity 300ms linear",zIndex:EQ.toolbarOverlay,color:"red",display:"flex",flexWrap:"wrap",gap:4,fontSize:12,fontFamily:"sans-serif"},children:[iA.jsxs(tN,{isSmallScreen:t,onClick:lA,onMouseLeave:()=>{_&&v(!1)},children:[iA.jsxs("div",{children:["layer:"," ",iA.jsx("span",{style:{marginLeft:2,fontWeight:500,color:yz[o]},children:o})]}),_&&iA.jsx("div",{style:{marginTop:4,minWidth:120},children:cA.map(mA=>iA.jsx(HXe,{name:mA,selected:mA===o,onClick:()=>{s(mA)}},mA))})]}),iA.jsx(tN,{isSmallScreen:t,style:{position:"relative",...K>0?{color:"red"}:{}},onClick:EA,children:iA.jsxs("div",{children:[K," errors"]})}),D&&K>0&&iA.jsx("div",{style:{position:"absolute",top:"100%",left:0,backgroundColor:"#2a2a2a",border:"1px solid #666",borderRadius:4,marginTop:4,zIndex:1e3,minWidth:t?"280px":"400px",maxWidth:t?"90vw":"600px",maxHeight:"400px",overflow:"auto",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.3)"},children:P.map((mA,wA)=>{const PA=mA.pcb_trace_error_id||`error_${wA}_${mA.error_type}_${mA.message?.slice(0,20)}`;return iA.jsxs("div",{style:{borderBottom:wA<P.length-1?"1px solid #444":"none"},children:[iA.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",cursor:"pointer",backgroundColor:"#2a2a2a",transition:"background-color 0.2s ease",touchAction:"manipulation",userSelect:"none"},onMouseEnter:tt=>{tt.currentTarget.style.backgroundColor="#333",f(PA)},onMouseLeave:tt=>{tt.currentTarget.style.backgroundColor="#2a2a2a",f(null)},onTouchStart:tt=>{tt.stopPropagation(),tt.currentTarget.style.backgroundColor="#333",f(PA)},onTouchEnd:tt=>{tt.stopPropagation(),tt.preventDefault(),tt.currentTarget.style.backgroundColor="#2a2a2a",f(null);const at=N.current.get(wA),vA=T.current.get(wA);if(at&&vA){const FA=at.style.display!=="none";at.style.display=FA?"none":"block",vA.style.transform=FA?"rotate(90deg)":"rotate(0deg)"}},onClick:tt=>{tt.stopPropagation();const at=N.current.get(wA),vA=T.current.get(wA);if(at&&vA){const FA=at.style.display!=="none";at.style.display=FA?"none":"block",vA.style.transform=FA?"rotate(90deg)":"rotate(0deg)"}},children:[iA.jsx("div",{style:{fontWeight:"bold",fontSize:t?"12px":"13px",whiteSpace:"nowrap",flexShrink:0,color:"#ff6b6b",display:t?"none":"block"},children:mA.error_type}),iA.jsx("div",{style:{flex:1,fontSize:t?"12px":"13px",color:"#ddd",lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:mA.message}),iA.jsx("div",{ref:tt=>{tt&&T.current.set(wA,tt)},"data-arrow-id":wA,style:{color:"#888",fontSize:"16px",transform:"rotate(90deg)",transition:"transform 0.2s ease",flexShrink:0},children:"›"})]}),iA.jsx("div",{ref:tt=>{tt&&N.current.set(wA,tt)},"data-error-id":wA,style:{display:"none",padding:"12px 16px",backgroundColor:"#1a1a1a",borderTop:"1px solid #444"},children:iA.jsx("div",{style:{fontSize:t?"11px":"12px",color:"#ccc",lineHeight:1.5,wordWrap:"break-word",overflowWrap:"break-word",hyphens:"auto"},children:mA.message})})]},wA)})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:bA,children:iA.jsxs("div",{children:[r.in_draw_trace_mode?"✖ ":"","Edit Traces"]})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:LA,children:iA.jsxs("div",{children:[r.in_move_footprint_mode?"✖ ":"","Move Components"]})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:JA,children:iA.jsxs("div",{children:[a.is_showing_rats_nest?"✖ ":"","Rats Nest"]})}),iA.jsx(tN,{isSmallScreen:t,style:b?{backgroundColor:"#444"}:{},onClick:MA,children:iA.jsx("div",{children:"📏"})}),iA.jsx(tN,{isSmallScreen:t,onClick:rA,children:iA.jsxs("div",{children:[iA.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:["View",iA.jsx("span",{style:{fontSize:"8px",transform:m?"rotate(180deg)":"rotate(0)",transition:"transform 0.1s ease",display:"inline-block"},children:"▼"})]}),m&&iA.jsxs("div",{style:{marginTop:4,minWidth:120},children:[iA.jsx(eN,{label:"Show All Trace Lengths",checked:a.is_showing_multiple_traces_length,onClick:()=>{I(!a.is_showing_multiple_traces_length)}}),iA.jsx(eN,{label:"Show Autorouting Animation",checked:a.is_showing_autorouting,onClick:()=>{l(!a.is_showing_autorouting)}}),iA.jsx(eN,{label:"Show DRC Errors",checked:a.is_showing_drc_errors,onClick:()=>{B(!a.is_showing_drc_errors)}}),iA.jsx(eN,{label:"Show Copper Pours",checked:a.is_showing_copper_pours,onClick:()=>{C(!a.is_showing_copper_pours)}}),iA.jsx(eN,{label:"Show Solder Mask",checked:a.is_showing_solder_mask,onClick:()=>{E(!a.is_showing_solder_mask)}}),iA.jsx(eN,{label:"Show Group Anchor Offsets",checked:a.is_showing_group_anchor_offsets,onClick:()=>{u(!a.is_showing_group_anchor_offsets)}}),iA.jsx(eN,{label:"Show PCB Groups",checked:a.is_showing_pcb_groups,onClick:()=>{h(!a.is_showing_pcb_groups)}}),a.is_showing_pcb_groups&&iA.jsxs("div",{style:{marginLeft:16},children:[iA.jsx(nEt,{label:"Show All Groups",checked:a.pcb_group_view_mode==="all",onClick:()=>{p("all")}}),iA.jsx(nEt,{label:"Show Named Groups",checked:a.pcb_group_view_mode==="named_only",onClick:()=>{p("named_only")}})]})]})]})})]})]})},JXe=e=>{const{transform:A,elements:t}=e,i=n0(B=>B.hovered_error_id),n=n0(B=>B.is_showing_copper_pours),o=gA.useMemo(()=>n?t:t.filter(B=>B.type!=="pcb_copper_pour"),[t,n]),[s,r]=gA.useMemo(()=>{const B=o.flatMap(h=>v6e(h,e.elements)),C=Wut(e.elements);return[B,C]},[o,e.elements]),[a,g]=gA.useState({drawingObjectIdsWithMouseOver:new Set,primitiveIdsInMousedOverNet:[]}),c=gA.useMemo(()=>{if(!i)return[];const C=t.filter(u=>u.type.includes("error")).find((u,E)=>(u.pcb_trace_error_id||`error_${E}_${u.error_type}_${u.message?.slice(0,20)}`)===i);if(!C)return[];const h=[];return C.pcb_trace_id&&h.push(C.pcb_trace_id),C.pcb_port_ids&&h.push(...C.pcb_port_ids),h},[i,t]),I=gA.useMemo(()=>{const B=[...a.primitiveIdsInMousedOverNet,...c];return b6e({primitivesWithoutInteractionMetadata:s,drawingObjectIdsWithMouseOver:a.drawingObjectIdsWithMouseOver,primitiveIdsInMousedOverNet:B})},[s,a,c]),l=gA.useCallback(B=>{const C=[];for(const u of B)if(u._element){const E=r.getNetConnectedToId("pcb_port_id"in u._element?u._element?.pcb_port_id:"pcb_trace_id"in u._element?u._element?.pcb_trace_id:"");C.push(...r.getIdsConnectedToNet(E))}const h=new Set(B.map(u=>u._pcb_drawing_object_id));g({drawingObjectIdsWithMouseOver:h,primitiveIdsInMousedOverNet:C})},[r]);return iA.jsx(NXe,{elements:o,transform:A,primitives:s,onMouseHoverOverPrimitives:l,children:iA.jsx(CXe,{disabled:!e.allowEditing,transform:A,soup:t,cancelPanDrag:e.cancelPanDrag,onCreateEditEvent:e.onCreateEditEvent,onModifyEditEvent:e.onModifyEditEvent,children:iA.jsx(EXe,{disabled:!e.allowEditing,transform:A,soup:t,cancelPanDrag:e.cancelPanDrag,onCreateEditEvent:e.onCreateEditEvent,onModifyEditEvent:e.onModifyEditEvent,children:iA.jsx(lXe,{transform:A,focusOnHover:e.focusOnHover,primitives:s,children:iA.jsx(YXe,{elements:t,children:iA.jsx(fXe,{transform:A,elements:t,children:iA.jsx(MXe,{transform:A,soup:t,children:iA.jsx(GXe,{transform:A,elements:t,children:iA.jsx(tXe,{transform:A,debugGraphics:e.debugGraphics,children:iA.jsx(eXe,{transform:A,elements:t,children:iA.jsx(j6e,{transform:A,primitives:I,width:e.width,height:e.height,grid:e.grid})})})})})})})})})})})},_z=e=>Number.isFinite(e)?e.toFixed(4):"NaN",TXe=e=>{let A=5381;for(let t=0;t<e.length;t++)A=(A<<5)+A+e.charCodeAt(t);return Math.abs(A)},KXe=e=>{if(!e?.length)return"0";const A=[];for(const n of e){if(!n?.type?.startsWith("pcb_"))continue;const o=r6e(n),s=a6e([n]),r=[_z(s.minX),_z(s.minY),_z(s.maxX),_z(s.maxY)].join(",");let a=`${o}:${r}`;if(n.type==="pcb_trace"){const g=(n.route??[]).length;a+=`:${g}`}A.push(a)}if(A.length===0)return"0";A.sort();const t=A.join(","),i=TXe(t);return`${A.length}_${i.toString(36)}`},qXe=ko(Jo(400,300),jC(40,-40)),PXe=({circuitJson:e,debugGraphics:A,height:t=600,initialState:i,allowEditing:n=!0,editEvents:o,onEditEventsChanged:s,focusOnHover:r=!1,clickToInteractEnabled:a=!1,disablePcbGroups:g=!1})=>{const[c,I]=gA.useState(!a),[l,B]=N4(),[C,h]=gA.useState(qXe),{ref:u,setTransform:E,cancelDrag:p}=D6e({transform:C,onSetTransform:h,enabled:c});let[f,m]=gA.useState([]);f=o??f;const S=gA.useRef(!1),_=gA.useRef(null),v=gA.useMemo(()=>KXe(e),[e]),D=()=>{const K=B?.width>0?B:{width:500,height:500},{center:P,width:V,height:z}=b.some(hA=>hA.type.startsWith("pcb_"))?l6e(b.filter(hA=>hA.type.startsWith("pcb_"))):{center:{x:0,y:0},width:.001,height:.001},nA=Math.min((K.width??0)/V,(K.height??0)/z,100)*.75,cA=ko(Jo((K.width??0)/2,(K.height??0)/2),jC(nA,-nA,0,0),Jo(-P.x,-P.y));E(cA)};gA.useEffect(()=>{B?.width&&e&&e.length!==0&&(S.current||(D(),S.current=!0))},[e,B]);const k=gA.useMemo(()=>e?.filter(K=>K.type.startsWith("pcb_")||K.type.startsWith("source_"))??[],[v]),b=gA.useMemo(()=>dse({circuitJson:k,editEvents:f}),[k,f]),M=K=>{m([...f,K]),s?.([...f,K])},N=K=>{const P=f.map(V=>V.edit_event_id===K.edit_event_id?{...V,...K}:V);m(P),s?.(P)},T=gA.useMemo(()=>({...i,...g&&{is_showing_pcb_groups:!1}}),[i,g]);return iA.jsxs("div",{ref:u,style:{position:"relative"},children:[iA.jsx("div",{ref:l,children:iA.jsxs(u6e,{initialState:T,disablePcbGroups:g,children:[iA.jsx(JXe,{transform:C,height:t,width:B.width,allowEditing:n,focusOnHover:r,cancelPanDrag:p,onCreateEditEvent:M,onModifyEditEvent:N,grid:{spacing:1,view_window:{left:0,right:B.width||500,top:t,bottom:0}},elements:b,debugGraphics:A},B.width),iA.jsx(d6e,{})]})}),a&&!c&&iA.jsx("div",{onClick:()=>{I(!0),D()},onTouchStart:K=>{const P=K.touches[0];_.current={x:P.clientX,y:P.clientY}},onTouchEnd:K=>{const P=K.changedTouches[0],V=_.current;if(!V)return;const z=Math.abs(P.clientX-V.x),nA=Math.abs(P.clientY-V.y);z<10&&nA<10&&(K.preventDefault(),I(!0),D()),_.current=null},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:EQ.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",touchAction:"pan-x pan-y pinch-zoom"},children:iA.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})})]})};/*! Bundled license information:
5833
+ `,onClick:i=>{i.stopPropagation(),t()},onTouchEnd:i=>{i.preventDefault(),i.stopPropagation(),t()},children:[iA.jsx("input",{type:"radio",checked:A,onChange:()=>{},readOnly:!0}),iA.jsx("span",{style:{color:"#eee"},children:e})]}),YXe=({children:e,elements:A})=>{const t=UXe(),{isMouseOverContainer:i,setIsMouseOverContainer:n,selectedLayer:o,selectLayer:s,editModes:r,viewSettings:a,setEditMode:g,setIsShowingRatsNest:c,setIsShowingMultipleTracesLength:I,setIsShowingAutorouting:l,setIsShowingDrcErrors:B,setIsShowingCopperPours:C,setIsShowingPcbGroups:h,setIsShowingGroupAnchorOffsets:u,setIsShowingSolderMask:E,setPcbGroupViewMode:p,setHoveredErrorId:f}=n0(mA=>({isMouseOverContainer:mA.is_mouse_over_container,setIsMouseOverContainer:mA.setIsMouseOverContainer,selectedLayer:mA.selected_layer,selectLayer:mA.selectLayer,editModes:{in_move_footprint_mode:mA.in_move_footprint_mode,in_draw_trace_mode:mA.in_draw_trace_mode},viewSettings:{is_showing_rats_nest:mA.is_showing_rats_nest,is_showing_multiple_traces_length:mA.is_showing_multiple_traces_length,is_showing_autorouting:mA.is_showing_autorouting,is_showing_drc_errors:mA.is_showing_drc_errors,is_showing_copper_pours:mA.is_showing_copper_pours,is_showing_pcb_groups:mA.is_showing_pcb_groups,is_showing_group_anchor_offsets:mA.is_showing_group_anchor_offsets,is_showing_solder_mask:mA.is_showing_solder_mask,pcb_group_view_mode:mA.pcb_group_view_mode},setEditMode:mA.setEditMode,setIsShowingRatsNest:mA.setIsShowingRatsNest,setIsShowingMultipleTracesLength:mA.setIsShowingMultipleTracesLength,setIsShowingAutorouting:mA.setIsShowingAutorouting,setIsShowingDrcErrors:mA.setIsShowingDrcErrors,setIsShowingCopperPours:mA.setIsShowingCopperPours,setIsShowingPcbGroups:mA.setIsShowingPcbGroups,setIsShowingGroupAnchorOffsets:mA.setIsShowingGroupAnchorOffsets,setIsShowingSolderMask:mA.setIsShowingSolderMask,setPcbGroupViewMode:mA.setPcbGroupViewMode,setHoveredErrorId:mA.setHoveredErrorId})),[m,S]=gA.useState(!1),[_,v]=gA.useState(!1),[D,k]=gA.useState(!1),[b,M]=gA.useState(!1),N=gA.useRef(new Map),T=gA.useRef(new Map);gA.useEffect(()=>{const mA=()=>M(!0),wA=()=>M(!1);return window.addEventListener("arm-dimension-tool",mA),window.addEventListener("disarm-dimension-tool",wA),()=>{window.removeEventListener("arm-dimension-tool",mA),window.removeEventListener("disarm-dimension-tool",wA)}},[]);const K=A?.filter(mA=>mA.type.includes("error")).length??0,P=A?.filter(mA=>mA.type.includes("error"))||[],z=A?.find(mA=>mA.type==="pcb_board")?.num_layers||2,nA=z<=2?["top","bottom"]:["top",...Array.from({length:z-2},(mA,wA)=>`inner${wA+1}`),"bottom"],cA=nA,hA={1:nA[0]?()=>s(nA[0]):()=>{},2:nA[1]?()=>s(nA[1]):()=>{},3:nA[2]?()=>s(nA[2]):()=>{},4:nA[3]?()=>s(nA[3]):()=>{},5:nA[4]?()=>s(nA[4]):()=>{},6:nA[5]?()=>s(nA[5]):()=>{},7:nA[6]?()=>s(nA[6]):()=>{},8:nA[7]?()=>s(nA[7]):()=>{}};xk("1",hA[1]),xk("2",hA[2]),xk("3",hA[3]),xk("4",hA[4]),xk("5",hA[5]),xk("6",hA[6]),xk("7",hA[7]),xk("8",hA[8]);const tA=gA.useCallback(()=>{n(!0)},[n]),aA=gA.useCallback(()=>{n(!1),v(!1),S(!1),k(!1),f(null)},[n,f]),lA=gA.useCallback(()=>{v(!_)},[_]),EA=gA.useCallback(()=>{const mA=!D;k(mA),mA&&S(!1),mA||f(null)},[D,f]),bA=gA.useCallback(()=>{g(r.in_draw_trace_mode?"off":"draw_trace")},[r.in_draw_trace_mode,g]),LA=gA.useCallback(()=>{g(r.in_move_footprint_mode?"off":"move_footprint")},[r.in_move_footprint_mode,g]),JA=gA.useCallback(()=>{c(!a.is_showing_rats_nest)},[a.is_showing_rats_nest,c]),MA=gA.useCallback(()=>{M(!0),window.dispatchEvent(new Event("arm-dimension-tool"))},[]),rA=gA.useCallback(()=>{const mA=!m;S(mA),mA&&k(!1)},[m]);return iA.jsxs("div",{style:{position:"relative",zIndex:"999 !important"},onMouseEnter:tA,onMouseLeave:aA,children:[e,iA.jsxs("div",{style:{position:"absolute",bottom:4,right:8,pointerEvents:"none",color:"white",fontSize:11,opacity:i?.5:0,transition:"opacity 1s",transitionDelay:"2s",fontFamily:"sans-serif"},children:["@tscircuit/pcb-viewer@",LXe.version]}),iA.jsxs("div",{"data-toolbar-overlay":!0,onTouchStart:mA=>mA.stopPropagation(),onTouchEnd:mA=>mA.stopPropagation(),onTouchMove:mA=>mA.stopPropagation(),style:{position:"absolute",opacity:t||i?1:0,top:16,left:16,right:t?16:"auto",transition:i?"opacity 100ms linear":"opacity 300ms linear",zIndex:EQ.toolbarOverlay,color:"red",display:"flex",flexWrap:"wrap",gap:4,fontSize:12,fontFamily:"sans-serif"},children:[iA.jsxs(tN,{isSmallScreen:t,onClick:lA,onMouseLeave:()=>{_&&v(!1)},children:[iA.jsxs("div",{children:["layer:"," ",iA.jsx("span",{style:{marginLeft:2,fontWeight:500,color:yz[o]},children:o})]}),_&&iA.jsx("div",{style:{marginTop:4,minWidth:120},children:cA.map(mA=>iA.jsx(HXe,{name:mA,selected:mA===o,onClick:()=>{s(mA)}},mA))})]}),iA.jsx(tN,{isSmallScreen:t,style:{position:"relative",...K>0?{color:"red"}:{}},onClick:EA,children:iA.jsxs("div",{children:[K," errors"]})}),D&&K>0&&iA.jsx("div",{style:{position:"absolute",top:"100%",left:0,backgroundColor:"#2a2a2a",border:"1px solid #666",borderRadius:4,marginTop:4,zIndex:1e3,minWidth:t?"280px":"400px",maxWidth:t?"90vw":"600px",maxHeight:"400px",overflow:"auto",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.3)"},children:P.map((mA,wA)=>{const PA=mA.pcb_trace_error_id||`error_${wA}_${mA.error_type}_${mA.message?.slice(0,20)}`;return iA.jsxs("div",{style:{borderBottom:wA<P.length-1?"1px solid #444":"none"},children:[iA.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",cursor:"pointer",backgroundColor:"#2a2a2a",transition:"background-color 0.2s ease",touchAction:"manipulation",userSelect:"none"},onMouseEnter:tt=>{tt.currentTarget.style.backgroundColor="#333",f(PA)},onMouseLeave:tt=>{tt.currentTarget.style.backgroundColor="#2a2a2a",f(null)},onTouchStart:tt=>{tt.stopPropagation(),tt.currentTarget.style.backgroundColor="#333",f(PA)},onTouchEnd:tt=>{tt.stopPropagation(),tt.preventDefault(),tt.currentTarget.style.backgroundColor="#2a2a2a",f(null);const at=N.current.get(wA),vA=T.current.get(wA);if(at&&vA){const FA=at.style.display!=="none";at.style.display=FA?"none":"block",vA.style.transform=FA?"rotate(90deg)":"rotate(0deg)"}},onClick:tt=>{tt.stopPropagation();const at=N.current.get(wA),vA=T.current.get(wA);if(at&&vA){const FA=at.style.display!=="none";at.style.display=FA?"none":"block",vA.style.transform=FA?"rotate(90deg)":"rotate(0deg)"}},children:[iA.jsx("div",{style:{fontWeight:"bold",fontSize:t?"12px":"13px",whiteSpace:"nowrap",flexShrink:0,color:"#ff6b6b",display:t?"none":"block"},children:mA.error_type}),iA.jsx("div",{style:{flex:1,fontSize:t?"12px":"13px",color:"#ddd",lineHeight:1.4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:mA.message}),iA.jsx("div",{ref:tt=>{tt&&T.current.set(wA,tt)},"data-arrow-id":wA,style:{color:"#888",fontSize:"16px",transform:"rotate(90deg)",transition:"transform 0.2s ease",flexShrink:0},children:"›"})]}),iA.jsx("div",{ref:tt=>{tt&&N.current.set(wA,tt)},"data-error-id":wA,style:{display:"none",padding:"12px 16px",backgroundColor:"#1a1a1a",borderTop:"1px solid #444"},children:iA.jsx("div",{style:{fontSize:t?"11px":"12px",color:"#ccc",lineHeight:1.5,wordWrap:"break-word",overflowWrap:"break-word",hyphens:"auto"},children:mA.message})})]},wA)})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:bA,children:iA.jsxs("div",{children:[r.in_draw_trace_mode?"✖ ":"","Edit Traces"]})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:LA,children:iA.jsxs("div",{children:[r.in_move_footprint_mode?"✖ ":"","Move Components"]})}),iA.jsx(tN,{isSmallScreen:t,style:{},onClick:JA,children:iA.jsxs("div",{children:[a.is_showing_rats_nest?"✖ ":"","Rats Nest"]})}),iA.jsx(tN,{isSmallScreen:t,style:b?{backgroundColor:"#444"}:{},onClick:MA,children:iA.jsx("div",{children:"📏"})}),iA.jsx(tN,{isSmallScreen:t,onClick:rA,children:iA.jsxs("div",{children:[iA.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:["View",iA.jsx("span",{style:{fontSize:"8px",transform:m?"rotate(180deg)":"rotate(0)",transition:"transform 0.1s ease",display:"inline-block"},children:"▼"})]}),m&&iA.jsxs("div",{style:{marginTop:4,minWidth:120},children:[iA.jsx(eN,{label:"Show All Trace Lengths",checked:a.is_showing_multiple_traces_length,onClick:()=>{I(!a.is_showing_multiple_traces_length)}}),iA.jsx(eN,{label:"Show Autorouting Animation",checked:a.is_showing_autorouting,onClick:()=>{l(!a.is_showing_autorouting)}}),iA.jsx(eN,{label:"Show DRC Errors",checked:a.is_showing_drc_errors,onClick:()=>{B(!a.is_showing_drc_errors)}}),iA.jsx(eN,{label:"Show Copper Pours",checked:a.is_showing_copper_pours,onClick:()=>{C(!a.is_showing_copper_pours)}}),iA.jsx(eN,{label:"Show Solder Mask",checked:a.is_showing_solder_mask,onClick:()=>{E(!a.is_showing_solder_mask)}}),iA.jsx(eN,{label:"Show Group Anchor Offsets",checked:a.is_showing_group_anchor_offsets,onClick:()=>{u(!a.is_showing_group_anchor_offsets)}}),iA.jsx(eN,{label:"Show PCB Groups",checked:a.is_showing_pcb_groups,onClick:()=>{h(!a.is_showing_pcb_groups)}}),a.is_showing_pcb_groups&&iA.jsxs("div",{style:{marginLeft:16},children:[iA.jsx(nEt,{label:"Show All Groups",checked:a.pcb_group_view_mode==="all",onClick:()=>{p("all")}}),iA.jsx(nEt,{label:"Show Named Groups",checked:a.pcb_group_view_mode==="named_only",onClick:()=>{p("named_only")}})]})]})]})})]})]})},JXe=e=>{const{transform:A,elements:t}=e,i=n0(B=>B.hovered_error_id),n=n0(B=>B.is_showing_copper_pours),o=gA.useMemo(()=>n?t:t.filter(B=>B.type!=="pcb_copper_pour"),[t,n]),[s,r]=gA.useMemo(()=>{const B=o.flatMap(h=>v6e(h,e.elements)),C=Wut(e.elements);return[B,C]},[o,e.elements]),[a,g]=gA.useState({drawingObjectIdsWithMouseOver:new Set,primitiveIdsInMousedOverNet:[]}),c=gA.useMemo(()=>{if(!i)return[];const C=t.filter(u=>u.type.includes("error")).find((u,E)=>(u.pcb_trace_error_id||`error_${E}_${u.error_type}_${u.message?.slice(0,20)}`)===i);if(!C)return[];const h=[];return C.pcb_trace_id&&h.push(C.pcb_trace_id),C.pcb_port_ids&&h.push(...C.pcb_port_ids),h},[i,t]),I=gA.useMemo(()=>{const B=[...a.primitiveIdsInMousedOverNet,...c];return b6e({primitivesWithoutInteractionMetadata:s,drawingObjectIdsWithMouseOver:a.drawingObjectIdsWithMouseOver,primitiveIdsInMousedOverNet:B})},[s,a,c]),l=gA.useCallback(B=>{const C=[];for(const u of B)if(u._element){const E=r.getNetConnectedToId("pcb_port_id"in u._element?u._element?.pcb_port_id:"pcb_trace_id"in u._element?u._element?.pcb_trace_id:"");C.push(...r.getIdsConnectedToNet(E))}const h=new Set(B.map(u=>u._pcb_drawing_object_id));g({drawingObjectIdsWithMouseOver:h,primitiveIdsInMousedOverNet:C})},[r]);return iA.jsx(NXe,{elements:o,transform:A,primitives:s,onMouseHoverOverPrimitives:l,children:iA.jsx(CXe,{disabled:!e.allowEditing,transform:A,soup:t,cancelPanDrag:e.cancelPanDrag,onCreateEditEvent:e.onCreateEditEvent,onModifyEditEvent:e.onModifyEditEvent,children:iA.jsx(EXe,{disabled:!e.allowEditing,transform:A,soup:t,cancelPanDrag:e.cancelPanDrag,onCreateEditEvent:e.onCreateEditEvent,onModifyEditEvent:e.onModifyEditEvent,children:iA.jsx(lXe,{transform:A,focusOnHover:e.focusOnHover,primitives:s,children:iA.jsx(YXe,{elements:t,children:iA.jsx(fXe,{transform:A,elements:t,children:iA.jsx(MXe,{transform:A,soup:t,children:iA.jsx(GXe,{transform:A,elements:t,children:iA.jsx(tXe,{transform:A,debugGraphics:e.debugGraphics,children:iA.jsx(eXe,{transform:A,elements:t,children:iA.jsx(j6e,{transform:A,primitives:I,width:e.width,height:e.height,grid:e.grid})})})})})})})})})})})},_z=e=>Number.isFinite(e)?e.toFixed(4):"NaN",TXe=e=>{let A=5381;for(let t=0;t<e.length;t++)A=(A<<5)+A+e.charCodeAt(t);return Math.abs(A)},KXe=e=>{if(!e?.length)return"0";const A=[];for(const n of e){if(!n?.type?.startsWith("pcb_"))continue;const o=r6e(n),s=a6e([n]),r=[_z(s.minX),_z(s.minY),_z(s.maxX),_z(s.maxY)].join(",");let a=`${o}:${r}`;if(n.type==="pcb_trace"){const g=(n.route??[]).length;a+=`:${g}`}A.push(a)}if(A.length===0)return"0";A.sort();const t=A.join(","),i=TXe(t);return`${A.length}_${i.toString(36)}`},qXe=ko(Jo(400,300),jC(40,-40)),PXe=({circuitJson:e,debugGraphics:A,height:t=600,initialState:i,allowEditing:n=!0,editEvents:o,onEditEventsChanged:s,focusOnHover:r=!1,clickToInteractEnabled:a=!1,disablePcbGroups:g=!1})=>{const[c,I]=gA.useState(!a),[l,B]=N4(),[C,h]=gA.useState(qXe),{ref:u,setTransform:E,cancelDrag:p}=D6e({transform:C,onSetTransform:h,enabled:c});let[f,m]=gA.useState([]);f=o??f;const S=gA.useRef(!1),_=gA.useRef(null),v=gA.useMemo(()=>KXe(e),[e]),D=()=>{const K=B?.width>0?B:{width:500,height:500},{center:P,width:V,height:z}=b.some(hA=>hA.type.startsWith("pcb_"))?l6e(b.filter(hA=>hA.type.startsWith("pcb_"))):{center:{x:0,y:0},width:.001,height:.001},nA=Math.min((K.width??0)/V,(K.height??0)/z,100)*.75,cA=ko(Jo((K.width??0)/2,(K.height??0)/2),jC(nA,-nA,0,0),Jo(-P.x,-P.y));E(cA)};gA.useEffect(()=>{B?.width&&e&&e.length!==0&&(S.current||(D(),S.current=!0))},[e,B]);const k=gA.useMemo(()=>e?.filter(K=>K.type.startsWith("pcb_")||K.type.startsWith("source_"))??[],[v]),b=gA.useMemo(()=>dse({circuitJson:k,editEvents:f}),[k,f]),M=K=>{m([...f,K]),s?.([...f,K])},N=K=>{const P=f.map(V=>V.edit_event_id===K.edit_event_id?{...V,...K}:V);m(P),s?.(P)},T=gA.useMemo(()=>({...i,...g&&{is_showing_pcb_groups:!1}}),[i,g]);return iA.jsxs("div",{ref:u,style:{position:"relative"},onContextMenu:K=>K.preventDefault(),children:[iA.jsx("div",{ref:l,children:iA.jsxs(u6e,{initialState:T,disablePcbGroups:g,children:[iA.jsx(JXe,{transform:C,height:t,width:B.width,allowEditing:n,focusOnHover:r,cancelPanDrag:p,onCreateEditEvent:M,onModifyEditEvent:N,grid:{spacing:1,view_window:{left:0,right:B.width||500,top:t,bottom:0}},elements:b,debugGraphics:A},B.width),iA.jsx(d6e,{})]})}),a&&!c&&iA.jsx("div",{onClick:()=>{I(!0),D()},onTouchStart:K=>{const P=K.touches[0];_.current={x:P.clientX,y:P.clientY}},onTouchEnd:K=>{const P=K.changedTouches[0],V=_.current;if(!V)return;const z=Math.abs(P.clientX-V.x),nA=Math.abs(P.clientY-V.y);z<10&&nA<10&&(K.preventDefault(),I(!0),D()),_.current=null},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:EQ.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",touchAction:"pan-x pan-y pinch-zoom"},children:iA.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})})]})};/*! Bundled license information:
5834
5834
 
5835
5835
  svgson/dist/svgson.umd.js:
5836
5836
  (*!
@@ -5879,7 +5879,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function Yut(e,A,t){if(!A||!t)retu
5879
5879
  * Copyright (c) 2013-2015, 2017, Jon Schlinkert.
5880
5880
  * Released under the MIT License.
5881
5881
  *)
5882
- */const OXe=({containerClassName:e,...A})=>{const t=gA.useRef(null),[i,n]=gA.useState(620);return gA.useLayoutEffect(()=>{const o=()=>{if(t.current){const r=t.current.clientHeight,a=window.innerHeight;n(Math.min(Math.max(r,620),a))}};o();const s=new ResizeObserver(o);return t.current&&s.observe(t.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),iA.jsx("div",{ref:t,className:e||"rf-w-full rf-h-full",children:iA.jsx(PXe,{...A,height:i})})},WXe='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-6{margin-left:1.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[calc\\(100vh-60px\\)\\]{height:calc(100vh - 60px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-20{max-height:5rem}.rf-max-h-24{max-height:6rem}.rf-max-h-28{max-height:7rem}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[100px\\]{min-height:100px}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.\\!rf-w-\\[95vw\\]{width:95vw!important}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[600px\\]{min-width:600px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[95vw\\]{max-width:95vw!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[1000px\\]{max-width:1000px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[200px\\]{max-width:200px}.rf-max-w-\\[40\\%\\]{max-width:40%}.rf-max-w-\\[600px\\]{max-width:600px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-rotate-90{--tw-rotate:90deg}.rf-rotate-90,.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-baseline{align-items:baseline}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.\\!rf-overflow-hidden{overflow:hidden!important}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-l-2{border-left-width:2px}.rf-border-l-4{border-left-width:4px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-border-t-blue-600{--tw-border-opacity:1;border-top-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-50\\/30{background-color:rgba(239,246,255,.3)}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-orange-50\\/50{background-color:rgba(255,247,237,.5)}.rf-bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-50\\/50{background-color:hsla(0,86%,97%,.5)}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pb-px{padding-bottom:1px}.rf-pl-10{padding-left:2.5rem}.rf-pl-11{padding-left:2.75rem}.rf-pl-12{padding-left:3rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-1{padding-top:.25rem}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-\\[0\\.95rem\\]{line-height:.95rem}.rf-leading-\\[1rem\\]{line-height:1rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-70{opacity:.7}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-150{transition-duration:.15s}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-150{animation-duration:.15s}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.rf-peer:disabled~.peer-disabled\\:rf-cursor-not-allowed{cursor:not-allowed}.rf-peer:disabled~.peer-disabled\\:rf-opacity-70{opacity:.7}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-mt-4{margin-top:1rem}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-h-5{height:1.25rem}.sm\\:rf-w-1\\/2{width:50%}.sm\\:rf-w-5{width:1.25rem}.sm\\:rf-w-\\[90vw\\]{width:90vw}.sm\\:rf-w-auto{width:auto}.sm\\:rf-max-w-\\[500px\\]{max-width:500px}.sm\\:rf-max-w-md{max-width:28rem}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-gap-4{gap:1rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-p-3{padding:.75rem}.sm\\:rf-p-6{padding:1.5rem}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-2xl{font-size:1.5rem;line-height:2rem}.sm\\:rf-text-base{font-size:1rem;line-height:1.5rem}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-w-auto{width:auto}.md\\:rf-max-w-\\[660px\\]{max-width:660px}.md\\:rf-max-w-lg{max-width:32rem}.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:rf-p-8{padding:2rem}.md\\:rf-py-8{padding-bottom:2rem;padding-top:2rem}.md\\:rf-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width:1024px){.lg\\:rf-max-w-\\[720px\\]{max-width:720px}.lg\\:rf-max-w-xl{max-width:36rem}}@media (min-width:1280px){.xl\\:rf-max-w-\\[800px\\]{max-width:800px}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',xz=()=>{gA.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const A=document.createElement("style");A.setAttribute("data-styles","tscircuit-runframe"),A.textContent=WXe,document.head.appendChild(A)},[])},ZXe=e=>{gA.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e])};function DL(e,A){const[t,i]=gA.useState(()=>{try{const n=window.localStorage.getItem(e);return n?JSON.parse(n):A}catch(n){return console.error("Error reading from localStorage:",n),A}});return gA.useEffect(()=>{try{window.localStorage.setItem(e,JSON.stringify(t))}catch(n){console.error("Error writing to localStorage:",n)}},[e,t]),[t,i]}const oEt=e=>`hsl(${Om.indexOf(e)*137.5%360}, 70%, 50%)`,VXe=({phaseTimings:e})=>{if(!e)return null;const A=Object.values(e).reduce((t,i)=>t+i,0);return iA.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[iA.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:Om.map(t=>{const i=e[t]||0,n=i/A*100;return iA.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${n}%`,backgroundColor:oEt(t)},children:iA.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",i.toFixed(1),"ms"]})},t)})}),iA.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",A.toFixed(2),"ms"]})]})},jXe=e=>{if(e instanceof Blob)return e;if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="object")try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)},zXe=({renderLog:e,onRerunWithDebug:A})=>{const[t,i]=gA.useState("chronological"),[n,o]=gA.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!e)return iA.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[iA.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),A&&iA.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[iA.jsx("select",{value:n,onChange:g=>o(g.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(g=>iA.jsx("option",{value:g.value,children:g.label},g.value))}),iA.jsx(uC,{onClick:()=>A(n),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const r=Object.entries(e?.phaseTimings??{});t==="chronological"?r.sort((g,c)=>Om.indexOf(g[0])-Om.indexOf(c[0])):r.sort((g,c)=>c[1]-g[1]);const a=r.reduce((g,[c,I])=>g+I,0);return iA.jsxs("div",{className:"rf-bg-white",children:[iA.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[iA.jsx("div",{children:"Render Logs"}),iA.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[A&&iA.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[iA.jsx("select",{value:n,onChange:g=>o(g.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(g=>iA.jsx("option",{value:g.value,children:g.label},g.value))}),iA.jsx(uC,{onClick:()=>A(n),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),iA.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:iA.jsxs("select",{onChange:g=>{if(g.target.value){const c=e?.debugOutputs?.find(I=>I.name===g.target.value);if(c){const I=jXe(c.content),l=I instanceof Blob?I:new Blob([I],{type:"text/plain"}),B=URL.createObjectURL(l),C=document.createElement("a");C.href=B,C.download=`debug-${c.name}.txt`,document.body.appendChild(C),C.click(),document.body.removeChild(C),URL.revokeObjectURL(B)}g.target.value=""}},disabled:!e?.debugOutputs||e.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[iA.jsx("option",{value:"",children:"Download Debug Output"}),e?.debugOutputs?.map(g=>iA.jsx("option",{value:g.name,children:g.name},g.name))]})}),iA.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[iA.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),iA.jsxs("select",{value:t,onChange:g=>i(g.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[iA.jsx("option",{value:"chronological",children:"Phase Order"}),iA.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),iA.jsx(VXe,{phaseTimings:e.phaseTimings}),iA.jsxs("table",{className:"rf-w-full rf-text-xs",children:[iA.jsx("thead",{children:iA.jsxs("tr",{children:[iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),iA.jsx("tbody",{children:r.map(([g,c])=>iA.jsxs("tr",{children:[iA.jsx("td",{className:"rf-p-2",children:Om.indexOf(g)}),iA.jsx("td",{className:"rf-p-2",children:g}),iA.jsx("td",{className:"rf-p-2",children:iA.jsx("div",{className:"rf-w-8",children:iA.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:oEt(g),width:`${c/a*100}%`}})})}),iA.jsx("td",{className:"rf-p-2",children:iA.jsxs("div",{className:"rf-flex w-full",children:[iA.jsxs("span",{className:"rf-flex-grow",children:[c,"ms"]}),iA.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(c/a*100).toFixed(1),"%"]})]})})]},g))})]})]})},sEt=({errorMessage:e,errorStack:A,circuitJsonErrors:t})=>{gA.useEffect(()=>{if(e){const i=new Error(e);A&&(i.stack=A);try{$9.captureException(i)}catch{}}},[e,A]),gA.useEffect(()=>{if(t&&t.length>0)for(const i of t){const n=new Error(i.message||"Circuit JSON Error");i.stack&&(n.stack=i.stack);try{$9.captureException(n,{error_type:i.type})}catch{}}},[t])},rEt="0.0.1346",XXe={version:rEt},bz=A8A()(t8A(e=>({lastRunEvalVersion:void 0,setLastRunEvalVersion:A=>{e({lastRunEvalVersion:A})}}),{name:"runframe-runner-store"})),$Xe=e=>{const[A,t]=gA.useState([]),[i,n]=gA.useState(null),[o,s]=gA.useState(""),[r,a]=DL("eval-version-selection",null),g=bz(B=>B.setLastRunEvalVersion),c=bz(B=>B.lastRunEvalVersion);return gA.useEffect(()=>{e&&fetch("https://data.jsdelivr.com/v1/package/npm/@tscircuit/eval").then(B=>B.json()).then(B=>{if(Array.isArray(B?.versions)){let C=[...B.versions];B.tags?.latest&&(n(B.tags.latest),C=C.filter(h=>h!==B.tags.latest)),t(C)}}).catch(()=>{})},[e]),gA.useEffect(()=>{e&&(r?(window.TSCIRCUIT_LATEST_EVAL_VERSION=r,g(r)):i&&(window.TSCIRCUIT_LATEST_EVAL_VERSION=i,g(i)))},[e,r,i]),{versions:gA.useMemo(()=>A.filter(B=>B.includes(o)).slice(0,50),[A,o]),latestVersion:i,lastRunEvalVersion:c,search:o,setSearch:s,selectVersion:B=>{a(B),s("")}}},A7e=({snippetNames:e,onSelect:A,onCancel:t,isOpen:i})=>{const[n,o]=gA.useState(""),[s,r]=gA.useState("");if(!i)return null;const a=e.filter(I=>I.toLowerCase().includes(s.toLowerCase())),g=s&&!e.includes(s),c=I=>{I.key==="Enter"&&(a.length===1?o(a[0]):g&&o(s))};return iA.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-items-center rf-justify-center rf-z-[100]",children:iA.jsxs("div",{className:"rf-bg-white rf-rounded-lg rf-p-6 rf-w-96",children:[iA.jsx("h2",{className:"rf-text-lg rf-font-semibold rf-mb-4",children:"Select Snippet"}),iA.jsx("input",{type:"text",className:"rf-w-full rf-px-4 rf-py-2 rf-border rf-rounded rf-mb-4",placeholder:"Search snippets or new snippet name...",value:s,onChange:I=>r(I.target.value),onKeyDown:c}),iA.jsxs("div",{className:"rf-h-60 rf-overflow-y-auto",children:[a.map(I=>iA.jsx("button",{type:"button",className:`w-full text-left px-4 py-2 rounded hover:bg-gray-100 ${n===I?"bg-blue-50":""}`,onClick:()=>o(I),children:I},I)),g&&iA.jsxs("button",{type:"button",className:`w-full text-left px-4 py-2 rounded hover:bg-gray-100 text-blue-500 ${n===s?"bg-blue-50":""}`,onClick:()=>o(s),children:['Create new "',s,'"']})]}),iA.jsxs("div",{className:"rf-mt-4 rf-flex rf-justify-end rf-gap-2",children:[iA.jsx("button",{type:"button",className:"rf-px-4 rf-py-2 rf-text-gray-600 rf-hover:text-gray-800",onClick:t,children:"Cancel"}),iA.jsx("button",{type:"button",className:"rf-px-4 rf-py-2 rf-bg-blue-500 rf-text-white rf-rounded rf-hover:bg-blue-600 rf-disabled:opacity-50",onClick:()=>n&&A(n),disabled:!n,children:n===s?`Create "${n}"`:`Save to ${n}`})]})]})})},t7e=e=>{const A=gA.useRef(null),t=ku(i=>i.recentEvents);gA.useEffect(()=>{if(t.length===0)return;const i=t[0];i.event_id!==A.current&&(e(i),A.current=i.event_id)},[t,e])};var Sz="Dialog",[aEt,gEt]=Zx(Sz),[e7e,ox]=aEt(Sz),cEt=e=>{const{__scopeDialog:A,children:t,open:i,defaultOpen:n,onOpenChange:o,modal:s=!0}=e,r=gA.useRef(null),a=gA.useRef(null),[g,c]=VR({prop:i,defaultProp:n??!1,onChange:o,caller:Sz});return iA.jsx(e7e,{scope:A,triggerRef:r,contentRef:a,contentId:wy(),titleId:wy(),descriptionId:wy(),open:g,onOpenChange:c,onOpenToggle:gA.useCallback(()=>c(I=>!I),[c]),modal:s,children:t})};cEt.displayName=Sz;var IEt="DialogTrigger",lEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(IEt,t),o=lE(A,n.triggerRef);return iA.jsx(Dc.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":CDA(n.open),...i,ref:o,onClick:Qr(e.onClick,n.onOpenToggle)})});lEt.displayName=IEt;var lDA="DialogPortal",[i7e,BEt]=aEt(lDA,{forceMount:void 0}),CEt=e=>{const{__scopeDialog:A,forceMount:t,children:i,container:n}=e,o=ox(lDA,A);return iA.jsx(i7e,{scope:A,forceMount:t,children:gA.Children.map(i,s=>iA.jsx(UD,{present:t||o.open,children:iA.jsx($V,{asChild:!0,container:n,children:s})}))})};CEt.displayName=lDA;var vz="DialogOverlay",hEt=gA.forwardRef((e,A)=>{const t=BEt(vz,e.__scopeDialog),{forceMount:i=t.forceMount,...n}=e,o=ox(vz,e.__scopeDialog);return o.modal?iA.jsx(UD,{present:i||o.open,children:iA.jsx(o7e,{...n,ref:A})}):null});hEt.displayName=vz;var n7e=ZR("DialogOverlay.RemoveScroll"),o7e=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(vz,t);return iA.jsx(rj,{as:n7e,allowPinchZoom:!0,shards:[n.contentRef],children:iA.jsx(Dc.div,{"data-state":CDA(n.open),...i,ref:A,style:{pointerEvents:"auto",...i.style}})})}),iN="DialogContent",QEt=gA.forwardRef((e,A)=>{const t=BEt(iN,e.__scopeDialog),{forceMount:i=t.forceMount,...n}=e,o=ox(iN,e.__scopeDialog);return iA.jsx(UD,{present:i||o.open,children:o.modal?iA.jsx(s7e,{...n,ref:A}):iA.jsx(r7e,{...n,ref:A})})});QEt.displayName=iN;var s7e=gA.forwardRef((e,A)=>{const t=ox(iN,e.__scopeDialog),i=gA.useRef(null),n=lE(A,t.contentRef,i);return gA.useEffect(()=>{const o=i.current;if(o)return nmA(o)},[]),iA.jsx(uEt,{...e,ref:n,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Qr(e.onCloseAutoFocus,o=>{o.preventDefault(),t.triggerRef.current?.focus()}),onPointerDownOutside:Qr(e.onPointerDownOutside,o=>{const s=o.detail.originalEvent,r=s.button===0&&s.ctrlKey===!0;(s.button===2||r)&&o.preventDefault()}),onFocusOutside:Qr(e.onFocusOutside,o=>o.preventDefault())})}),r7e=gA.forwardRef((e,A)=>{const t=ox(iN,e.__scopeDialog),i=gA.useRef(!1),n=gA.useRef(!1);return iA.jsx(uEt,{...e,ref:A,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(i.current||t.triggerRef.current?.focus(),o.preventDefault()),i.current=!1,n.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(i.current=!0,o.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const s=o.target;t.triggerRef.current?.contains(s)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&n.current&&o.preventDefault()}})}),uEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,trapFocus:i,onOpenAutoFocus:n,onCloseAutoFocus:o,...s}=e,r=ox(iN,t),a=gA.useRef(null),g=lE(A,a);return HyA(),iA.jsxs(iA.Fragment,{children:[iA.jsx(JV,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:n,onUnmountAutoFocus:o,children:iA.jsx(YV,{role:"dialog",id:r.contentId,"aria-describedby":r.descriptionId,"aria-labelledby":r.titleId,"data-state":CDA(r.open),...s,ref:g,onDismiss:()=>r.onOpenChange(!1)})}),iA.jsxs(iA.Fragment,{children:[iA.jsx(g7e,{titleId:r.titleId}),iA.jsx(I7e,{contentRef:a,descriptionId:r.descriptionId})]})]})}),BDA="DialogTitle",EEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(BDA,t);return iA.jsx(Dc.h2,{id:n.titleId,...i,ref:A})});EEt.displayName=BDA;var dEt="DialogDescription",pEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(dEt,t);return iA.jsx(Dc.p,{id:n.descriptionId,...i,ref:A})});pEt.displayName=dEt;var fEt="DialogClose",yEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(fEt,t);return iA.jsx(Dc.button,{type:"button",...i,ref:A,onClick:Qr(e.onClick,()=>n.onOpenChange(!1))})});yEt.displayName=fEt;function CDA(e){return e?"open":"closed"}var mEt="DialogTitleWarning",[a7e,wEt]=pae(mEt,{contentName:iN,titleName:BDA,docsSlug:"dialog"}),g7e=({titleId:e})=>{const A=wEt(mEt),t=`\`${A.contentName}\` requires a \`${A.titleName}\` for the component to be accessible for screen reader users.
5882
+ */const OXe=({containerClassName:e,...A})=>{const t=gA.useRef(null),[i,n]=gA.useState(620);return gA.useLayoutEffect(()=>{const o=()=>{if(t.current){const r=t.current.clientHeight,a=window.innerHeight;n(Math.min(Math.max(r,620),a))}};o();const s=new ResizeObserver(o);return t.current&&s.observe(t.current),window.addEventListener("resize",o),()=>{s.disconnect(),window.removeEventListener("resize",o)}},[]),iA.jsx("div",{ref:t,className:e||"rf-w-full rf-h-full",children:iA.jsx(PXe,{...A,height:i})})},WXe='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-6{margin-left:1.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[calc\\(100vh-60px\\)\\]{height:calc(100vh - 60px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-20{max-height:5rem}.rf-max-h-24{max-height:6rem}.rf-max-h-28{max-height:7rem}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[100px\\]{min-height:100px}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.\\!rf-w-\\[95vw\\]{width:95vw!important}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[600px\\]{min-width:600px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[95vw\\]{max-width:95vw!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[1000px\\]{max-width:1000px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[200px\\]{max-width:200px}.rf-max-w-\\[40\\%\\]{max-width:40%}.rf-max-w-\\[600px\\]{max-width:600px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-rotate-90{--tw-rotate:90deg}.rf-rotate-90,.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-baseline{align-items:baseline}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.\\!rf-overflow-hidden{overflow:hidden!important}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-l-2{border-left-width:2px}.rf-border-l-4{border-left-width:4px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-border-t-blue-600{--tw-border-opacity:1;border-top-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-50\\/30{background-color:rgba(239,246,255,.3)}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-orange-50\\/50{background-color:rgba(255,247,237,.5)}.rf-bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-50\\/50{background-color:hsla(0,86%,97%,.5)}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pb-px{padding-bottom:1px}.rf-pl-10{padding-left:2.5rem}.rf-pl-11{padding-left:2.75rem}.rf-pl-12{padding-left:3rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-1{padding-top:.25rem}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-\\[0\\.95rem\\]{line-height:.95rem}.rf-leading-\\[1rem\\]{line-height:1rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-70{opacity:.7}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-150{transition-duration:.15s}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-150{animation-duration:.15s}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.rf-peer:disabled~.peer-disabled\\:rf-cursor-not-allowed{cursor:not-allowed}.rf-peer:disabled~.peer-disabled\\:rf-opacity-70{opacity:.7}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-mt-4{margin-top:1rem}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-h-5{height:1.25rem}.sm\\:rf-w-1\\/2{width:50%}.sm\\:rf-w-5{width:1.25rem}.sm\\:rf-w-\\[90vw\\]{width:90vw}.sm\\:rf-w-auto{width:auto}.sm\\:rf-max-w-\\[500px\\]{max-width:500px}.sm\\:rf-max-w-md{max-width:28rem}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-gap-4{gap:1rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-p-3{padding:.75rem}.sm\\:rf-p-6{padding:1.5rem}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-2xl{font-size:1.5rem;line-height:2rem}.sm\\:rf-text-base{font-size:1rem;line-height:1.5rem}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-w-auto{width:auto}.md\\:rf-max-w-\\[660px\\]{max-width:660px}.md\\:rf-max-w-lg{max-width:32rem}.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:rf-p-8{padding:2rem}.md\\:rf-py-8{padding-bottom:2rem;padding-top:2rem}.md\\:rf-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width:1024px){.lg\\:rf-max-w-\\[720px\\]{max-width:720px}.lg\\:rf-max-w-xl{max-width:36rem}}@media (min-width:1280px){.xl\\:rf-max-w-\\[800px\\]{max-width:800px}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',xz=()=>{gA.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const A=document.createElement("style");A.setAttribute("data-styles","tscircuit-runframe"),A.textContent=WXe,document.head.appendChild(A)},[])},ZXe=e=>{gA.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e])};function DL(e,A){const[t,i]=gA.useState(()=>{try{const n=window.localStorage.getItem(e);return n?JSON.parse(n):A}catch(n){return console.error("Error reading from localStorage:",n),A}});return gA.useEffect(()=>{try{window.localStorage.setItem(e,JSON.stringify(t))}catch(n){console.error("Error writing to localStorage:",n)}},[e,t]),[t,i]}const oEt=e=>`hsl(${Om.indexOf(e)*137.5%360}, 70%, 50%)`,VXe=({phaseTimings:e})=>{if(!e)return null;const A=Object.values(e).reduce((t,i)=>t+i,0);return iA.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[iA.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:Om.map(t=>{const i=e[t]||0,n=i/A*100;return iA.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${n}%`,backgroundColor:oEt(t)},children:iA.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",i.toFixed(1),"ms"]})},t)})}),iA.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",A.toFixed(2),"ms"]})]})},jXe=e=>{if(e instanceof Blob)return e;if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="object")try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)},zXe=({renderLog:e,onRerunWithDebug:A})=>{const[t,i]=gA.useState("chronological"),[n,o]=gA.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!e)return iA.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[iA.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),A&&iA.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[iA.jsx("select",{value:n,onChange:g=>o(g.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(g=>iA.jsx("option",{value:g.value,children:g.label},g.value))}),iA.jsx(uC,{onClick:()=>A(n),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const r=Object.entries(e?.phaseTimings??{});t==="chronological"?r.sort((g,c)=>Om.indexOf(g[0])-Om.indexOf(c[0])):r.sort((g,c)=>c[1]-g[1]);const a=r.reduce((g,[c,I])=>g+I,0);return iA.jsxs("div",{className:"rf-bg-white",children:[iA.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[iA.jsx("div",{children:"Render Logs"}),iA.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[A&&iA.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[iA.jsx("select",{value:n,onChange:g=>o(g.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(g=>iA.jsx("option",{value:g.value,children:g.label},g.value))}),iA.jsx(uC,{onClick:()=>A(n),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),iA.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:iA.jsxs("select",{onChange:g=>{if(g.target.value){const c=e?.debugOutputs?.find(I=>I.name===g.target.value);if(c){const I=jXe(c.content),l=I instanceof Blob?I:new Blob([I],{type:"text/plain"}),B=URL.createObjectURL(l),C=document.createElement("a");C.href=B,C.download=`debug-${c.name}.txt`,document.body.appendChild(C),C.click(),document.body.removeChild(C),URL.revokeObjectURL(B)}g.target.value=""}},disabled:!e?.debugOutputs||e.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[iA.jsx("option",{value:"",children:"Download Debug Output"}),e?.debugOutputs?.map(g=>iA.jsx("option",{value:g.name,children:g.name},g.name))]})}),iA.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[iA.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),iA.jsxs("select",{value:t,onChange:g=>i(g.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[iA.jsx("option",{value:"chronological",children:"Phase Order"}),iA.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),iA.jsx(VXe,{phaseTimings:e.phaseTimings}),iA.jsxs("table",{className:"rf-w-full rf-text-xs",children:[iA.jsx("thead",{children:iA.jsxs("tr",{children:[iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),iA.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),iA.jsx("tbody",{children:r.map(([g,c])=>iA.jsxs("tr",{children:[iA.jsx("td",{className:"rf-p-2",children:Om.indexOf(g)}),iA.jsx("td",{className:"rf-p-2",children:g}),iA.jsx("td",{className:"rf-p-2",children:iA.jsx("div",{className:"rf-w-8",children:iA.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:oEt(g),width:`${c/a*100}%`}})})}),iA.jsx("td",{className:"rf-p-2",children:iA.jsxs("div",{className:"rf-flex w-full",children:[iA.jsxs("span",{className:"rf-flex-grow",children:[c,"ms"]}),iA.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(c/a*100).toFixed(1),"%"]})]})})]},g))})]})]})},sEt=({errorMessage:e,errorStack:A,circuitJsonErrors:t})=>{gA.useEffect(()=>{if(e){const i=new Error(e);A&&(i.stack=A);try{$9.captureException(i)}catch{}}},[e,A]),gA.useEffect(()=>{if(t&&t.length>0)for(const i of t){const n=new Error(i.message||"Circuit JSON Error");i.stack&&(n.stack=i.stack);try{$9.captureException(n,{error_type:i.type})}catch{}}},[t])},rEt="0.0.1348",XXe={version:rEt},bz=A8A()(t8A(e=>({lastRunEvalVersion:void 0,setLastRunEvalVersion:A=>{e({lastRunEvalVersion:A})}}),{name:"runframe-runner-store"})),$Xe=e=>{const[A,t]=gA.useState([]),[i,n]=gA.useState(null),[o,s]=gA.useState(""),[r,a]=DL("eval-version-selection",null),g=bz(B=>B.setLastRunEvalVersion),c=bz(B=>B.lastRunEvalVersion);return gA.useEffect(()=>{e&&fetch("https://data.jsdelivr.com/v1/package/npm/@tscircuit/eval").then(B=>B.json()).then(B=>{if(Array.isArray(B?.versions)){let C=[...B.versions];B.tags?.latest&&(n(B.tags.latest),C=C.filter(h=>h!==B.tags.latest)),t(C)}}).catch(()=>{})},[e]),gA.useEffect(()=>{e&&(r?(window.TSCIRCUIT_LATEST_EVAL_VERSION=r,g(r)):i&&(window.TSCIRCUIT_LATEST_EVAL_VERSION=i,g(i)))},[e,r,i]),{versions:gA.useMemo(()=>A.filter(B=>B.includes(o)).slice(0,50),[A,o]),latestVersion:i,lastRunEvalVersion:c,search:o,setSearch:s,selectVersion:B=>{a(B),s("")}}},A7e=({snippetNames:e,onSelect:A,onCancel:t,isOpen:i})=>{const[n,o]=gA.useState(""),[s,r]=gA.useState("");if(!i)return null;const a=e.filter(I=>I.toLowerCase().includes(s.toLowerCase())),g=s&&!e.includes(s),c=I=>{I.key==="Enter"&&(a.length===1?o(a[0]):g&&o(s))};return iA.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-items-center rf-justify-center rf-z-[100]",children:iA.jsxs("div",{className:"rf-bg-white rf-rounded-lg rf-p-6 rf-w-96",children:[iA.jsx("h2",{className:"rf-text-lg rf-font-semibold rf-mb-4",children:"Select Snippet"}),iA.jsx("input",{type:"text",className:"rf-w-full rf-px-4 rf-py-2 rf-border rf-rounded rf-mb-4",placeholder:"Search snippets or new snippet name...",value:s,onChange:I=>r(I.target.value),onKeyDown:c}),iA.jsxs("div",{className:"rf-h-60 rf-overflow-y-auto",children:[a.map(I=>iA.jsx("button",{type:"button",className:`w-full text-left px-4 py-2 rounded hover:bg-gray-100 ${n===I?"bg-blue-50":""}`,onClick:()=>o(I),children:I},I)),g&&iA.jsxs("button",{type:"button",className:`w-full text-left px-4 py-2 rounded hover:bg-gray-100 text-blue-500 ${n===s?"bg-blue-50":""}`,onClick:()=>o(s),children:['Create new "',s,'"']})]}),iA.jsxs("div",{className:"rf-mt-4 rf-flex rf-justify-end rf-gap-2",children:[iA.jsx("button",{type:"button",className:"rf-px-4 rf-py-2 rf-text-gray-600 rf-hover:text-gray-800",onClick:t,children:"Cancel"}),iA.jsx("button",{type:"button",className:"rf-px-4 rf-py-2 rf-bg-blue-500 rf-text-white rf-rounded rf-hover:bg-blue-600 rf-disabled:opacity-50",onClick:()=>n&&A(n),disabled:!n,children:n===s?`Create "${n}"`:`Save to ${n}`})]})]})})},t7e=e=>{const A=gA.useRef(null),t=ku(i=>i.recentEvents);gA.useEffect(()=>{if(t.length===0)return;const i=t[0];i.event_id!==A.current&&(e(i),A.current=i.event_id)},[t,e])};var Sz="Dialog",[aEt,gEt]=Zx(Sz),[e7e,ox]=aEt(Sz),cEt=e=>{const{__scopeDialog:A,children:t,open:i,defaultOpen:n,onOpenChange:o,modal:s=!0}=e,r=gA.useRef(null),a=gA.useRef(null),[g,c]=VR({prop:i,defaultProp:n??!1,onChange:o,caller:Sz});return iA.jsx(e7e,{scope:A,triggerRef:r,contentRef:a,contentId:wy(),titleId:wy(),descriptionId:wy(),open:g,onOpenChange:c,onOpenToggle:gA.useCallback(()=>c(I=>!I),[c]),modal:s,children:t})};cEt.displayName=Sz;var IEt="DialogTrigger",lEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(IEt,t),o=lE(A,n.triggerRef);return iA.jsx(Dc.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":CDA(n.open),...i,ref:o,onClick:Qr(e.onClick,n.onOpenToggle)})});lEt.displayName=IEt;var lDA="DialogPortal",[i7e,BEt]=aEt(lDA,{forceMount:void 0}),CEt=e=>{const{__scopeDialog:A,forceMount:t,children:i,container:n}=e,o=ox(lDA,A);return iA.jsx(i7e,{scope:A,forceMount:t,children:gA.Children.map(i,s=>iA.jsx(UD,{present:t||o.open,children:iA.jsx($V,{asChild:!0,container:n,children:s})}))})};CEt.displayName=lDA;var vz="DialogOverlay",hEt=gA.forwardRef((e,A)=>{const t=BEt(vz,e.__scopeDialog),{forceMount:i=t.forceMount,...n}=e,o=ox(vz,e.__scopeDialog);return o.modal?iA.jsx(UD,{present:i||o.open,children:iA.jsx(o7e,{...n,ref:A})}):null});hEt.displayName=vz;var n7e=ZR("DialogOverlay.RemoveScroll"),o7e=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(vz,t);return iA.jsx(rj,{as:n7e,allowPinchZoom:!0,shards:[n.contentRef],children:iA.jsx(Dc.div,{"data-state":CDA(n.open),...i,ref:A,style:{pointerEvents:"auto",...i.style}})})}),iN="DialogContent",QEt=gA.forwardRef((e,A)=>{const t=BEt(iN,e.__scopeDialog),{forceMount:i=t.forceMount,...n}=e,o=ox(iN,e.__scopeDialog);return iA.jsx(UD,{present:i||o.open,children:o.modal?iA.jsx(s7e,{...n,ref:A}):iA.jsx(r7e,{...n,ref:A})})});QEt.displayName=iN;var s7e=gA.forwardRef((e,A)=>{const t=ox(iN,e.__scopeDialog),i=gA.useRef(null),n=lE(A,t.contentRef,i);return gA.useEffect(()=>{const o=i.current;if(o)return nmA(o)},[]),iA.jsx(uEt,{...e,ref:n,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Qr(e.onCloseAutoFocus,o=>{o.preventDefault(),t.triggerRef.current?.focus()}),onPointerDownOutside:Qr(e.onPointerDownOutside,o=>{const s=o.detail.originalEvent,r=s.button===0&&s.ctrlKey===!0;(s.button===2||r)&&o.preventDefault()}),onFocusOutside:Qr(e.onFocusOutside,o=>o.preventDefault())})}),r7e=gA.forwardRef((e,A)=>{const t=ox(iN,e.__scopeDialog),i=gA.useRef(!1),n=gA.useRef(!1);return iA.jsx(uEt,{...e,ref:A,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(i.current||t.triggerRef.current?.focus(),o.preventDefault()),i.current=!1,n.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(i.current=!0,o.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const s=o.target;t.triggerRef.current?.contains(s)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&n.current&&o.preventDefault()}})}),uEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,trapFocus:i,onOpenAutoFocus:n,onCloseAutoFocus:o,...s}=e,r=ox(iN,t),a=gA.useRef(null),g=lE(A,a);return HyA(),iA.jsxs(iA.Fragment,{children:[iA.jsx(JV,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:n,onUnmountAutoFocus:o,children:iA.jsx(YV,{role:"dialog",id:r.contentId,"aria-describedby":r.descriptionId,"aria-labelledby":r.titleId,"data-state":CDA(r.open),...s,ref:g,onDismiss:()=>r.onOpenChange(!1)})}),iA.jsxs(iA.Fragment,{children:[iA.jsx(g7e,{titleId:r.titleId}),iA.jsx(I7e,{contentRef:a,descriptionId:r.descriptionId})]})]})}),BDA="DialogTitle",EEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(BDA,t);return iA.jsx(Dc.h2,{id:n.titleId,...i,ref:A})});EEt.displayName=BDA;var dEt="DialogDescription",pEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(dEt,t);return iA.jsx(Dc.p,{id:n.descriptionId,...i,ref:A})});pEt.displayName=dEt;var fEt="DialogClose",yEt=gA.forwardRef((e,A)=>{const{__scopeDialog:t,...i}=e,n=ox(fEt,t);return iA.jsx(Dc.button,{type:"button",...i,ref:A,onClick:Qr(e.onClick,()=>n.onOpenChange(!1))})});yEt.displayName=fEt;function CDA(e){return e?"open":"closed"}var mEt="DialogTitleWarning",[a7e,wEt]=pae(mEt,{contentName:iN,titleName:BDA,docsSlug:"dialog"}),g7e=({titleId:e})=>{const A=wEt(mEt),t=`\`${A.contentName}\` requires a \`${A.titleName}\` for the component to be accessible for screen reader users.
5883
5883
 
5884
5884
  If you want to hide the \`${A.titleName}\`, you can wrap it with our VisuallyHidden component.
5885
5885