PageSourceSearch

https://cutlistevo.com/assets/Machining-B3c_tFZa.js

js cutlistevo.com collected 2026-10-02 05:35:56 UTC 34,040 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ObjectViewer-miDfdKDx.css"])))=>i.map(i=>d[i]);
2import{_ as e}from"./vendor-jspdf-D24f0F5F.js";import{d as t,a0 as s,S as a,H as i,w as n,I as l,J as r,U as o,e as h,o as d,f as c,g as p,j as u,q as g,l as v,t as m,n as b,k as x,N as f,F as y,h as S,L as w,M as H,V as C,R as k,W as D,O as L,r as P,c as Y,a2 as A}from"./vendor-vue-DGxDErk5.js";import{u as E}from"./NestingShape-_tQLr3X2.js";import{M as G}from"./side-E266Utm1.js";import{e as W,h as T}from"./MaterialList-DGHC_Pq3.js";import{s as z,a as M}from"./helpers-B4I30X3N.js";import{c as q}from"./numbers-HfY_Jqy4.js";import{g as B}from"./CLO-ChzoWMH3.js";import{I as j}from"./InputField-CGiJo9sp.js";import{t as _}from"./i18n-Dnw6wEjT.js";import{u as F}from"./BaseDialog.vue_vue_type_style_index_0_lang-CVzArtHO.js";import"./guards-BZgibnzC.js";import{v as V}from"./value-set-DxPUDjAp.js";class Vis{HTMLElement;HTMLElementWidth;el;numberFormat;decimalPlaces;vueComponent;shape;h;w;shapeL;shapeW;edgePadding=15;axisPadding=30;minSizeForAxes=400;xScale=W.scaleLinear();yScale=W.scaleLinear();yScaleFlipped=W.scaleLinear();measurementScale=W.scaleLinear();xAxis;yAxis;formatDp;svgCanvas;currentSide=0;bandingStrokeWidth=4;shapeGroup;bandingGroup;holeGroup;hingeHoleGroup;edgeHoleGroup;grooveGroup;cornerGroup;legendGroup;pointGroup;loaded=!1;constructor({HTMLElement:e,vueComponent:t=null,shape:s,numberFormat:a="decimal",decimalPlaces:i=2}){this.HTMLElement=e,this.numberFormat=a,this.decimalPlaces=i,this.HTMLElementWidth=this.HTMLElement.offsetWidth,this.vueComponent=t,this.shape=s,this.w=0,this.h=0}init(){if(!this.loaded){if(!this.HTMLElement)return!1;if(!this.shape)return!1;if(!this.shape.l||!this.shape.w)return!1;if(this.el=W.select(this.HTMLElement),(null===this.decimalPlaces||void 0===this.decimalPlaces||isNaN(this.decimalPlaces))&&(this.decimalPlaces=2),this.formatDp=W.format(`.${this.decimalPlaces}f`),this.shapeL=this.shape.longSide,this.shapeW=this.shape.shortSide,!this.svgCanvas)if(this.svgCanvas=this.HTMLElement.querySelector("svg"),null===this.svgCanvas){const e=this.el.append("svg").attr("class","vis").attr("width","100%").attr("height","100%");if(null===e)return;this.svgCanvas=e}else this.svgCanvas=W.select(this.svgCanvas);this.loaded=!0}}create(){if(!this.shape)return!1;const e=this.shouldShowAxes(),t=e?this.edgePadding:0,s=e?this.edgePadding:0,a=e?this.axisPadding:0,i=e?this.axisPadding:0;if(!this.shape.l||!this.shape.w||!this.w||!this.h||this.w-(t+a)<0||this.h-(i+s)<0)return!1;this.svgCanvas.append("defs").append("pattern").attr("patternUnits","userSpaceOnUse").attr("patternTransform","rotate(45)").attr("id","stripes").attr("width",6).attr("height",6).append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",6).attr("stroke","#a1a1a1").attr("stroke-width","2"),this.shapeGroup=this.svgCanvas.append("g").attr("class","shape-group"),this.pointGroup=this.svgCanvas.append("g").attr("class","point-group"),this.bandingGroup=this.svgCanvas.append("g").attr("class","banding-group"),this.holeGroup=this.svgCanvas.append("g").attr("class","hole-group"),this.hingeHoleGroup=this.svgCanvas.append("g").attr("class","hinge-hole-group"),this.edgeHoleGroup=this.svgCanvas.append("g").attr("class","edge-hole-group"),this.grooveGroup=this.svgCanvas.append("g").attr("class","groove-group"),this.createShape(),this.createHoles(),this.createHingeHoles(),this.createEdgeHoles(),this.createGrooves(),this.createBanding(),e&&(this.xAxis=this.svgCanvas.append("g").attr("transform",`translate(0, ${i})`).attr("class","axis x"),this.xAxis.call(W.axisTop(this.xScale).ticks(10).tickSize(-this.h+(i+s))),this.svgCanvas.selectAll(".axis.x .tick").each(function(e,t,s){0!==t&&t!==s.length-1||W.select(this).select("line").style("display","none")}),this.svgCanvas.selectAll(".axis.x text").attr("dy","-5px"),this.yAxis=this.svgCanvas.append("g").attr("transform",`translate(${this.w-a}, 0)`).attr("class","axis y"),this.yAxis.call(W.axisRight(this.yScale).ticks(Math.ceil(this.shapeW/this.shapeL*10)).tickSize(-this.w+(t+a))),this.svgCanvas.selectAll(".axis.y .tick").each(function(e,t,s){0!==t&&t!==s.length-1||W.select(this).select("line").style("display","none")}),this.svgCanvas.selectAll(".axis.y text").attr("dx","5px")),this.legendGroup=this.svgCanvas.append("g").attr("class","legend-group"),this.cornerGroup=this.svgCanvas.append("g").attr("class","corner-group"),this.createLegend()}addPoint(e,t){this.pointGroup.append("circle").attr("cx",this.xScale(e)).attr("cy",this.getYScale()(t)).attr("r",3).attr("fill","magenta")}
2createShape(){if(this.svgCanvas.selectAll(".shape-group > *").remove(),this.svgCanvas.selectAll(".point-group > *").remove(),!this.shape)return!1;if(!(this.shape.l&&this.shape.w&&this.w&&this.h))return!1;const e=this.shouldShowAxes(),t=e?this.edgePadding:0,s=e?this.edgePadding:0,a=e?this.axisPadding:0,i=e?this.axisPadding:0;this.shapeGroup.append("rect").attr("class","shape-background-fill").attr("x",t).attr("y",i).attr("width",this.w-(t+a)).attr("height",this.h-(i+s)),this.shapeGroup.append("rect").attr("class","shape-background").attr("x",t).attr("y",i).attr("width",this.w-(t+a)).attr("height",this.h-(i+s)).style("fill","url(#stripes)");const n=W.path(),l=[],r=[];[0,1,2,3].forEach(e=>{const t=this.shape.machining.getCorner(e);t&&t.type?(l.push(t.size?q({v:t.size??0,o:this}):0),r.push(t.type)):(l.push(0),r.push(null))});const o=(e,t,s,a,i)=>{"radius"===r[e]?n.arcTo(this.xScale(t),this.getYScale()(s),this.xScale(a),this.getYScale()(i),this.measurementScale(l[e])):("bevel"===r[e]||n.lineTo(this.xScale(t),this.getYScale()(s)),n.lineTo(this.xScale(a),this.getYScale()(i)))};n.moveTo(this.xScale(0),this.getYScale()(l[0])),o(0,0,0,l[0],0),"bevel"!==r[0]&&"bevel"!==r[1]||n.lineTo(this.xScale(this.shapeL-l[1]),this.getYScale()(0)),o(1,this.shapeL,0,this.shapeL,l[1]),"bevel"!==r[1]&&"bevel"!==r[2]||n.lineTo(this.xScale(this.shapeL),this.getYScale()(this.shapeW-l[2])),o(2,this.shapeL,this.shapeW,this.shapeL-l[2],this.shapeW),"bevel"!==r[2]&&"bevel"!==r[3]||n.lineTo(this.xScale(l[3]),this.getYScale()(this.shapeW)),o(3,0,this.shapeW,0,this.shapeW-l[3]),n.closePath(),this.shapeGroup.append("path").attr("id","shape").attr("d",n.toString())}createLegend(){let e;this.legendGroup.selectAll("*").remove(),e=this.legendGroup.append("text").text("L1").attr("class","side").attr("dominant-baseline","middle").attr("text-anchor","middle").attr("x",this.xScale(this.shapeL/2)).attr("y",this.getYScale()(0)),e.attr("dy",e.node().getBBox().height/2*(1===this.currentSide?2:-1.5)+"px"),e=this.legendGroup.append("text").text("L2").attr("class","side").attr("dominant-baseline","middle").attr("text-anchor","middle").attr("x",this.xScale(this.shapeL/2)).attr("y",this.getYScale()(this.shapeW)),e.attr("dy",e.node().getBBox().height/2*(0===this.currentSide?2:-1.5)+"px"),this.legendGroup.append("text").text("W1").attr("class","side").attr("dominant-baseline","middle").attr("text-anchor","start").attr("x",this.xScale(0)).attr("y",this.yScale(this.shapeW/2)).attr("dx","5px"),this.legendGroup.append("text").text("W2").attr("class","side").attr("dominant-baseline","middle").attr("text-anchor","end").attr("x",this.xScale(this.shapeL)).attr("dx","-5px").attr("y",this.yScale(this.shapeW/2)),e=this.legendGroup.append("text").text("A").attr("class","corner").attr("dominant-baseline","middle").attr("text-anchor","start").attr("x",this.xScale(0)).attr("dx","5px").attr("y",this.getYScale()(0)),e.attr("dy",e.node().getBBox().height/2*(1===this.currentSide?2:-1.5)+"px"),e=this.legendGroup.append("text").text("B").attr("class","corner").attr("dominant-baseline","middle").attr("text-anchor","end").attr("x",this.xScale(this.shapeL)).attr("dx","-5px").attr("y",this.getYScale()(0)),e.attr("dy",e.node().getBBox().height/2*(1===this.currentSide?2:-1.5)+"px"),e=this.legendGroup.append("text").text("C").attr("class","corner").attr("dominant-baseline","middle").attr("text-anchor","end").attr("x",this.xScale(this.shapeL)).attr("dx","-5px").attr("y",this.getYScale()(this.shapeW)),e.attr("dy",e.node().getBBox().height/2*(0===this.currentSide?2:-1.5)+"px"),e=this.legendGroup.append("text").text("D").attr("class","corner").attr("dominant-baseline","middle").attr("text-anchor","start").attr("x",this.xScale(0)).attr("dx","5px").attr("y",this.getYScale()(this.shapeW)),e.attr("dy",e.node().getBBox().height/2*(0===this.currentSide?2:-1.5)+"px")}createHoles(){this.svgCanvas.selectAll(".hole-group > *").remove(),this.holeGroup.selectAll("circle").data(this.shape.machining.holes.filter(e=>!e.isEdgeHole()&&e.shouldShow(this.shape,this.currentSide))).join("circle").attr("class","hole").classed("invalid",e=>!1===e.isValid).classed("partial",e=>!e.isThroughShape(this.shape)).attr("cx",e=>this.xScale(e.x)).attr("cy",e=>{const t=e.getYDrawPosition(this.shape,this.currentSide);return this.getYScale()(t)}).attr("r",e=>this.measurementScale(e.diameter/2))}createHingeHoles(){this.svgCanvas.selectAll(".hinge-hole-group > *").remove();const e=this.shape.machining.getAllHingeHoles(this.shape).filter(e=>e.shouldShow(this.shape,this.currentSide));this.hingeHoleGroup.selectAll("circle").data(e).join("circle").attr("class","hole").classed("invalid",e=>!1===e.isValid).classed("partial",e=>!e.isThroughShape(this.shape)).attr("cx",e=>this.xScale(e.x)).attr("cy",e=>this.getYScale()(e.getYDrawPosition(this.shape,this.currentSide))).attr("r",e=>this.measurementScale(e.diameter/2))}createEdgeHoles(){this.svgCanvas.selectAll(".edge-hole-group > *").remove();this.shape.machining.holes.filter(e=>
2e.isEdgeHole()).forEach(e=>{const t=e.getEdgeBoreRect(this.shape);t&&this.edgeHoleGroup.append("rect").attr("class","edge-hole").classed("invalid",!1===e.isValid).attr("x",this.xScale(t.x)).attr("y",this.getYScale()(t.y+t.h)).attr("width",Math.abs(this.xScale(t.x+t.w)-this.xScale(t.x))).attr("height",Math.abs(this.getYScale()(t.y)-this.getYScale()(t.y+t.h))).attr("rx",1)})}createGrooves(){this.svgCanvas.selectAll(".groove-group > *").remove();(this.shape.machining?.grooves??[]).filter(e=>e.shouldShow(this.currentSide)).forEach(e=>{const t=e.getDrawRect(this.shape);this.grooveGroup.append("rect").attr("class","groove").classed("invalid",!1===e.isValid).attr("x",this.xScale(t.x)).attr("y",this.getYScale()(t.y+t.h)).attr("width",Math.abs(this.xScale(t.x+t.w)-this.xScale(t.x))).attr("height",Math.abs(this.getYScale()(t.y)-this.getYScale()(t.y+t.h)))})}createBanding(){this.svgCanvas.selectAll(".banding-group > *").remove();const e=this.shape.banding;if(!e)return;const t=-1,s=this.shouldShowAxes(),a=s?this.edgePadding:0,i=s?this.axisPadding:0,n=[];for(const r of G)if(e.getSide(r))switch(r){case"l1":n.push({x1:a-t,x2:a-t,y1:this.getYScale()(this.shape.machining.getCorner(0)?.size??0),y2:this.getYScale()(this.shapeW-(this.shape.machining.getCorner(3)?.size??0))});break;case"l2":n.push({x1:this.w-i+t,x2:this.w-i+t,y1:this.getYScale()(this.shape.machining.getCorner(1)?.size??0),y2:this.getYScale()(this.shapeW-(this.shape.machining.getCorner(2)?.size??0))});break;case"w1":n.push({x1:a+this.getCornerBandingSize(0),x2:this.w-i-this.getCornerBandingSize(1),y1:this.getYScale()(0)+(0===this.currentSide?t:1),y2:this.getYScale()(0)+(0===this.currentSide?t:1)});break;case"w2":n.push({x1:a+this.getCornerBandingSize(3),x2:this.w-i-this.getCornerBandingSize(2),y1:this.getYScale()(this.shapeW)+(0===this.currentSide?1:t),y2:this.getYScale()(this.shapeW)+(0===this.currentSide?1:t)})}this.bandingGroup.selectAll("line").data(n).join("line").attr("class","banding").attr("x1",e=>e.x1).attr("x2",e=>e.x2).attr("y1",e=>e.y1).attr("y2",e=>e.y2).attr("stroke-width",this.bandingStrokeWidth);const l=W.path();[0,1,2,3].forEach(s=>{const a=this.shape.machining.getCorner(s);if(!a?.type)return;let i,n,r;switch(s){case 0:if(!V(e.sides.a)||!1===e.sides.a)return;i={x:this.xScale(0)-t,y:this.getYScale()(q({v:a.size??0,o:this}))},n={x:this.xScale(0),y:this.getYScale()(0)},r={x:this.xScale(q({v:a.size??0,o:this})),y:this.getYScale()(0)+(0===this.currentSide?t:1)};break;case 1:if(!V(e.sides.b)||!1===e.sides.b)return;i={x:this.xScale(this.shapeL-q({v:a.size??0,o:this})),y:this.getYScale()(0)+(0===this.currentSide?t:1)},n={x:this.xScale(this.shapeL)-t,y:this.getYScale()(0)},r={x:this.xScale(this.shapeL)+t,y:this.getYScale()(q({v:a.size??0,o:this}))};break;case 2:if(!V(e.sides.c)||!1===e.sides.c)return;i={x:this.xScale(this.shapeL)+t,y:this.getYScale()(this.shapeW-q({v:a.size??0,o:this}))},n={x:this.xScale(this.shapeL),y:this.getYScale()(this.shapeW)},r={x:this.xScale(this.shapeL-q({v:a.size??0,o:this}))-t,y:this.getYScale()(this.shapeW)+(1===this.currentSide?t:1)};break;case 3:if(!V(e.sides.d)||!1===e.sides.d)return;i={x:this.xScale(q({v:a.size??0,o:this})),y:this.getYScale()(this.shapeW)+(1===this.currentSide?t:1)},n={x:this.xScale(0),y:this.getYScale()(this.shapeW)},r={x:this.xScale(0)-t,y:this.getYScale()(this.shapeW-q({v:a.size??0,o:this}))+t};break;default:return}if(l.moveTo(i.x,i.y),"radius"===a.type)switch(l.arcTo(n.x,n.y,r.x,r.y,this.measurementScale(a.size??0)),s){case 0:case 2:l.lineTo(r.x+t,r.y);break;case 1:case 3:l.lineTo(r.x,r.y-(0===this.currentSide?t:-1))}else"bevel"===a.type&&l.lineTo(r.x,r.y);this.bandingGroup.append("path").attr("class",()=>`banding corner ${["a","b","c","d"][s]}`).attr("stroke-width",this.bandingStrokeWidth).attr("d",l.toString())})}getYScale(){return 0===this.currentSide?this.yScale:this.yScaleFlipped}reset(){this.svgCanvas&&this.svgCanvas.selectAll("*").remove()}shouldShowAxes(){return this.w>=this.minSizeForAxes}flip(){this.currentSide=0===this.currentSide?1:0;const e=this.shouldShowAxes(),t=e?this.edgePadding:0,s=e?this.axisPadding:0;if(e&&this.yAxis){const e=0===this.currentSide?this.yScale:this.yScaleFlipped;this.yAxis.call(W.axisRight(e).ticks(Math.ceil(this.shapeW/this.shapeL*10)).tickSize(-this.w+(t+s))),this.svgCanvas.selectAll(".axis.y .tick").each(function(e,t,s){0!==t&&t!==s.length-1||W.select(this).select("line").style("display","none")}),this.svgCanvas.selectAll(".axis.y text").attr("dx","5px")}this.createShape(),this.createHoles(),this.createHingeHoles(),this.createEdgeHoles(),this.createGrooves(),this.createLegend(),this.createBanding()}getCornerBandingSize(e){const t=this.shape.machining.getCorner(e);return t?.type?this.measurementScale(t.size??0):0}updateSize(){if(this.HTMLElementWidth=this.HTMLElement.offsetWidth,0===this.HTMLElementWidth)return;this.reset();let e=this.shape.shortSide/this.shape.longSide;this.w=this.HTMLElementWidth;const t=this.shouldShowAxes(),s=t?this.edgePadding:0,a=t?this.edgePadding:0,i=t?this.axisPadding:0,n=t?this.axisPadding:0;if(this.w-(s+i)<0)return;let l=window.innerHeight-(n+a)-20;l>600&&(l=600),this.xScale.domain([0,this.shapeL]).range([s,this.w-i]),e>.3?this.h=this.xScale(this.shape.shortSide)+n:(e=.3,this.h=this.w*e),this.h>l&&(this.h=l,this.w=this.h/e,this.xScale.domain([0,this.shapeL]).range([s,this.w-i])),this.yScale.domain([this.shapeW,0]).range([n,this.h-a]),this.yScaleFlipped.domain([0,this.shapeW]).range([n,this.h-a]),this.measurementScale.domain([0,this.shapeL]).range([0,this.w-(s+i)]),this.HTMLElement.style.height=this.h+"px",this.HTMLElement.style.width=this.w+"px",this.svgCanvas&&this.svgCanvas.attr("width",this.w).attr("height",this.h).attr("viewBox",`0 0 ${this.w} ${this.h}`),this.create()}}const O={class:"inputs"},R={key:1,class:"shape-name"},U={class:"shape-dimensions"},$={key:2,class:"sides-wrapper"},N={class:"menu"},I={key:4,class:"button-wrapper"},Q={class:"grid-table"},X={class:"row table-heading"},J={key:0,class:"cell id"},K={key:0,class:"row"},Z={key:0,class:"cell"},ee={class:"id"},te={class:"cell"},se=["onClick"],ae={key:6,class:"menu-prompt"},ie=t({__name:"Machining",props:D({env:{default:"production"},inputShape:{default:null},translate:{type:Boolean,default:!1},findExtrasPrice:{type:Function,default:()=>null},getExtrasPrice:{type:Function,default:()=>null},getAvailablePricingOptions:{type:Function,default:()=>[]},formatPrice:{type:Function,default:()=>""},options:{default:()=>({numberFormat:"decimal",decimalPlaces:2,fractionRoundTo:0,faces:{enabled:!0},holes:{enabled:!0,defaultDiameter:10,diameters:[],minDiameter:0,maxDiameter:100,enableDepth:!0,depths:[],defaultDepth:0,minDepth:0,maxDepth:100},hingeHoles:{enabled:!0,minimumHoleDistance:0,defaultDistanceFromEdge:22,defaultOuterSpacing:10,defaultHingeLength:50},shelfHoles:{enabled:!1,diameters:[],depths:[]},corners:{enabled:!0,minValue:0,types:["bevel","radius"]},grooves:{enabled:!0,defaultWidth:5,defaultDepth:5},banding:{enabled:!1,options:[[]],labels:[],pricing:{},enableCorners:!1}})},customMachiningProducts:{default:()=>[]}},{inputShape:{required:!0},inputShapeModifiers:{}}),emits:D(["update:shape","close"],["update:inputShape"]),setup(t,{emit:D}){L(()=>e(()=>import("./ObjectViewer-DkxXW1l5.js"),__vite__mapDeps([0])));const W=t,V=D,ie=P(),ne=P(),{show:le,close:re,onToggle:oe,onClosed:he,cleanup:de,isShown:ce}=F(ie),pe=Y(()=>T(Ke.value)),ue=Y(()=>(W.customMachiningProducts?.length??0)>0),ge=Y(()=>{const e=new Set;for(const t of W.customMachiningProducts??[])(t.labels??[]).forEac
2h(t=>e.add(t));return[...e]}),ve=Y(()=>{const e=(W.customMachiningProducts??[]).map(e=>e.name).filter(e=>!!e),t=[];e.length&&t.push(e);for(const s of ge.value){const e=new Set;for(const t of W.customMachiningProducts??[])if(t.labels?.includes(s)&&t.pricing){const a=t.labels.indexOf(s);Object.keys(t.pricing).forEach(t=>{const s=t.split("|");s[a]&&e.add(s[a])})}t.push([...e])}return t}),me=Y(()=>{const e={};for(const t of W.customMachiningProducts??[])if(t.price&&t.name&&(e[t.name]=t.price),t.pricing&&t.name)for(const[s,a]of Object.entries(t.pricing))e[`${t.name}|${s}`]=a;return e}),be=Y(()=>{if(!ye.value?.length)return 0;if("banding"===at.value)return 1;let e=Object.values(fe.value).filter(e=>e.enabled).length;return e+=2,e}),xe=Y(()=>{if(!ye.value.length)return;if("banding"===at.value)return;const e="34px",t="30px",s=[];return ye.value.forEach(e=>{const t=fe.value[e];t.enabled&&s.push(t.w??"1fr")}),s.unshift(e),s.push(t),s.join(" ")}),fe=Y(()=>at.value&&"banding"!==at.value?nt[at.value]:null),ye=Y(()=>at.value&&"banding"!==at.value?Object.keys(nt[at.value]).filter(e=>nt[at.value][e].enabled):[]),Se=Y(()=>at.value?Ee():[]),we=Y(()=>{const e=Ke.value?.machining?.corners?.map(e=>e?.isPresent?.()?e.getCorner():null)?.filter(e=>e)??[];return[...G,...e]}),He=Y(()=>{const e=W.options.banding?.options?.[0];return e&&Array.isArray(e)?e.filter(e=>"string"==typeof e):[]}),Ce=Y(()=>{const e=Ke.value?.extras?.banding;if(!e)return[];const t=[],s=e=>{e&&Object.values(e).forEach(e=>{"string"==typeof e&&e.trim()&&e.split("|").forEach(e=>{e.trim()&&!t.includes(e.trim())&&t.push(e.trim())})})};return e.faces&&s(e.faces),e.sides&&s(e.sides),t}),ke=(e=!0)=>{e?tt.value=e:r(()=>tt.value=!1)},De=()=>{Fe(),Ve(),Oe(),Ue(),Re()},Le=e=>{if("corners"===at.value)switch(e){case 0:return"a";case 1:return"b";case 2:return"c";case 3:return"d";default:return e}return e+1},Pe=()=>"banding"!==at.value,Ye=e=>"corners"===at.value||(!("holes"!==at.value||!e?.edge)||(null==e?.face||e.face===st.value)),Ae=(e,t=null)=>{if(!e?.length)return[];let s="None";"depth"===t&&(s="Through");const a=[{label:s,value:null}];return e.forEach(e=>{const t=e.toString().charAt(0).toUpperCase()+e.toString().slice(1);a.push({label:t,value:e})}),a},Ee=()=>{if(!at.value)return[];if("banding"===at.value)return[];const e=Ke.value.machining[at.value];return e?Array.isArray(e)?e:[e]:[]};let Ge=null;const We=()=>{Ke.value&&ne.value&&(Ge=new Vis({HTMLElement:ne.value,shape:Ke.value,vueComponent:null}),Ge.init(),Ge.updateSize(),et.value=!0)},Te=A(()=>{et.value&&Ge&&Ge.updateSize()},10);s(ne,()=>{Te()});const ze=()=>{st.value=0===st.value?1:0,Ge.flip()},Me=()=>{switch(at.value){case"holes":qe();break;case"hingeHoles":Be();break;case"corners":je();break;case"grooves":_e()}},qe=()=>{Ke.value.machining.addHole({x:q({v:Ke.value.longSide})/2,y:q({v:Ke.value.shortSide})/2,diameter:W.options.holes.defaultDiameter??1,depth:W.options.holes.defaultDepth??q({v:Ke.value.t})??0,face:st.value,edge:null}),Ge.createHoles()},Be=()=>{Ke.value.machining.addHingeHole({numHoles:3,position:0,diameter:W.options.holes.defaultDiameter??0,depth:W.options.holes.defaultDepth??0,side:"w1",face:st.value,distanceFromEdge:W.options.hingeHoles.defaultDistanceFromEdge,outerSpacing:W.options.hingeHoles.defaultOuterSpacing,minimumHoleDistance:W.options.hingeHoles.minimumHoleDistance,hingeLength:W.options.hingeHoles.defaultHingeLength}),Ge.createHingeHoles()},je=()=>{const e=W.options.corners.types?.[0]||"radius",t=W.options.corners.minValue||5;for(let s=0;s<4;s++)Ke.value.machining.setCorner({index:s,type:e,size:t});Ge.createCorners()},_e=()=>{Ke.value.machining.addGroove({direction:"l",position:q({v:Ke.value.shortSide})/2,width:W.options.grooves?.defaultWidth??5,depth:W.options.grooves?.defaultDepth??5,start:0,face:st.value}),Ge.createGrooves()},Fe=()=>{Ke.value.machining.holes.length=0},Ve=()=>{Ke.value.machining.hingeHoles.length=0},Oe=()=>{Ke.value.machining.corners.forEach(e=>{e.size=null,e.type=null}),Ke.value.banding.sides.a=!1,Ke.value.banding.sides.b=!1,Ke.value.banding.sides.c=!1,Ke.value.banding.sides.d=!1},Re=()=>{Ke.value.banding={sides:{a:"",b:"",c:"",d:"",y1:"",y2:"",x1:"",x2:""}}},Ue=()=>{Ke.value.machining.grooves.length=0},$e=()=>{switch(at.value){case"holes":return Fe();case"hingeHoles":return Ve();case"corners":return Oe();case"grooves":return Ue()}},Ne=()=>{if(it.value=[],W.options.banding.enabled){ke();for(const e in Ke.value.banding.sides){Ke.value.banding.sides[e]?W.options.banding.enableTypes&&W.options.banding.types?.length&&(Ke.value.banding.sides[e]||it.value.push({index:e,message:"Please select a type"})):Ke.value.banding.sides[e]=""}ke(!1)}},Ie=e=>(e??[]).map((e,t)=>({index:e?.index?.[0]??t,message:e?.message||"Validation error",fields:(e?.field??[]).flat()})),Qe=e=>{const t=it.value.filter(t=>t.index===e);return t.length?t.map(e=>e.message):[]},Xe=(e,t)=>{const s=(e=>{const t=it.value.filter(t=>t.index===e&&t?.fields),s=t.flatMap(e=>e.fields);return t.length?s:[]})(e);return!!s?.length&&s.includes(t)},Je=()=>{re(),V("close")},Ke=a(t,"inputShape");if(!Ke.value?.machining)throw new Error("Machining component requires a shape with machining initialized");const Ze=P(!1),et=P(!1),tt=P(!1),st=P(0),at=P(null),it=P([]),nt=i({holes:{x:{enabled:!0,type:"unitDependent",label:_("woodwork.x"),required:!0},y:{enabled:!0,type:"unitDependent",label:_("woodwork.y"),required:!0},diameter:{enabled:!0,type:W.options.holes.diameters?.length?"select":"unitDependent",label:_("machining.diameter"),output:W.options.holes.diameters?.length?"float":void 0,options:W.options.holes.diameters?.length?Ae(W.options.holes.diameters):void 0,required:!0},depth:{enabled:W.options.holes.enableDepth&&void 0!==Ke.value.t&&q({v:Ke.value.t})>0,required:!1,type:W.options.holes.depths?.length?"select":"unitDependent",output:W.options.holes.depths?.length?"float":void 0,options:W.options.holes.depths?.length?Ae(W.options.holes.depths):void 0},face:{required:!0,enabled:!1,type:"select",output:"integer",options:[{label:_("faces.a"),value:0},{label:_("faces.b"),value:1}]},edge:{enabled:!0,required:!1,label:_("machining.edge"),type:"select",output:"string",options:[{label:"None",value:null},{label:_("sides.l1"),value:"l1"},{label:_("sides.l2"),value:"l2"},{label:_("sides.w1"),value:"w1"},{label:_("sides.w2"),value:"w2"}]}},hingeHoles:{position:{enabled:!0,required:!0,type:"unitDependent",min:0},hingeLength:{enabled:!0,required:!0,type:"unitDependent",label:_("machining.hinge_length"),min:0},outerSpacing:{enabled:!0,required:!0,type:"unitDependent",label:_("machining.outer_spacing"),min:0},distanceFromEdge:{enabled:!0,required:!0,type:"unitDependent",label:_("machining.distance_from_edge"),min:0},depth:{enabled:W.options.holes.enableDepth&&void 0!==Ke.value.t&&q({v:Ke.value.t})>0,required:!1,type:W.options.holes.depths?.length?"select":"unitDependent",output:W.options.holes.depths?.length?"float":void 0,options:W.options.holes.depths?.length?Ae(W.options.holes.depths):void 0},diameter:{enabled:!0,required:!0,type:W.options.holes.diameters?.length?"select":"unitDependent",label:_("machining.diameter"),output:W.options.holes.diameters?.length?"float":void 0,options:W.options.holes.diameters?.length?Ae(W.options.holes.diameters):void 0},numHoles:{enabled:!0,required:!0,type:"integer",label:_("machining.num_holes"),min:2},face:{enabled:!1,type:"select",required:!0,output:"integer",options:[{label:_("faces.a"),value:0},{label:_("faces.b"),value:1}]},side:{enabled:!0,required:!0,label:_("machining.edge"),type:"select",output:"string",options:[{label:_("sides.w1"),value:"w1"},{label:_("sides.w2"),value:"w2"},{label:_("sides.l1"),value:"l1"},{label:_("sides.l2"),value:"l2"}]}},shelfHoles:{x:{enabled:!0,required:!0,type:"unitDependent"},y:{enabled:!0,required:!0,type:"unitDependent"},depth:{required:!1,enabled:!0,type:"unitDependent"}},corners:{type:{enabled:!0,required:!0,label:_("machining.type"),type:"select",output:"string",options:Ae(W.options.corners.types)},size:{enabled:!0,required:!0,label:_("machining.size"),type:"unitDependent",min:()=>void 0!==W.options.corners.minValue?q({v:W.options.corners.minValue,o:W.options}):0,max:()=>void 0!==W.options.corners.maxValue?q({v:W.options.corners.maxValue,o:W.options}):q({v:Ke.value.shortSide,o:W.options})/2}},grooves:{direction:{enabled:!0,required:!0,label:_("machining.direction"),type:"select",output:"string",options:[{label:_("machining.groove_direction_horizontal"),value:"l"},{label:_("machining.groove_direction_vertical"),value:"w"}]},position:{enabled:!0,required:!0,label:_("machining.position"),type:"unitDependent",min:0}
2,width:{enabled:!0,required:!0,label:_("machining.width"),type:W.options.grooves?.widths?.length?"select":"unitDependent",output:W.options.grooves?.widths?.length?"float":void 0,options:W.options.grooves?.widths?.length?Ae(W.options.grooves.widths):void 0,min:0},depth:{enabled:!0,required:!0,label:_("machining.depth"),type:W.options.grooves?.depths?.length?"select":"unitDependent",output:W.options.grooves?.depths?.length?"float":void 0,options:W.options.grooves?.depths?.length?Ae(W.options.grooves.depths):void 0,min:0},start:{enabled:!0,required:!1,label:_("machining.start_offset"),type:"unitDependent",min:0},length:{enabled:!0,required:!1,label:_("machining.length"),type:"unitDependent",min:0},face:{enabled:!1,required:!0,type:"select",output:"integer",options:[{label:_("faces.a"),value:0},{label:_("faces.b"),value:1}]}}}),lt=i({holes:{diameter:{min:W.options.holes.minDiameter,max:W.options.holes.maxDiameter},depth:{min:W.options.holes.minDepth,max:W.options.holes.maxDepth}},hingeHoles:{holeDistance:{min:W.options.hingeHoles.minimumHoleDistance}},corners:{size:{min:W.options.corners.minValue,max:W.options.corners.maxValue}},grooves:{depth:{min:W.options.grooves?.minDepth,max:W.options.grooves?.maxDepth}}}),rt=e=>{const t=ie.value;if(!t)return;const s=t.getBoundingClientRect();e.clientX>=s.left&&e.clientX<=s.right&&e.clientY>=s.top&&e.clientY<=s.bottom||Je()},ot=()=>!(!Ke?.value?.machining||!Ze.value||tt.value);return n(()=>Ke.value?.autoId,()=>{ot()&&We()}),n(()=>Ke.value?.id,()=>{ot()&&We()}),n(at,e=>{if(!ot())return;if("banding"===e)return ke(),Ne(),void ke(!1);if(!e)return void(it.value=[]);ke();const t=Ke.value.machining.validate(Ke.value,e,lt?.[e]);it.value=Ie(t),ke(!1)},{deep:!0,immediate:!0}),n(()=>Ke?.value?.machining?.holes,()=>{if(!ot())return;ke();const e=Ke.value.machining.validate(Ke.value,"holes",lt?.holes);it.value=Ie(e),Ge.createHoles(),Ge.createEdgeHoles(),ke(!1)},{deep:!0,immediate:!0}),n(()=>Ke?.value?.machining?.hingeHoles,()=>{if(!ot())return;ke();const e=Ke.value.machining.validate(Ke.value,"hingeHoles",lt?.hingeHoles);it.value=Ie(e),Ge.createHingeHoles(),ke(!1)},{deep:!0,immediate:!0}),n(()=>Ke?.value?.machining?.corners,()=>{if(!ot())return;ke();const e=Ke.value.machining.validate(Ke.value,"corners",lt?.corners);it.value=Ie(e),Ke.value.machining.validate(Ke.value,"holes"),Ke.value.machining.validate(Ke.value,"hingeHoles"),Ge.createShape(),Ge.createHoles(),Ge.createEdgeHoles(),Ge.createHingeHoles();for(const t of Ke.value.machining.corners)Ke.value.banding&&t?.getCorner&&(Ke.value.banding.sides[t.getCorner()]="");Ge.createBanding(),ke(!1)},{deep:!0,immediate:!0}),n(()=>Ke?.value?.machining?.grooves,()=>{if(!ot())return;ke();const e=Ke.value.machining.validate(Ke.value,"grooves",lt?.grooves);it.value=Ie(e),Ge.createGrooves(),ke(!1)},{deep:!0,immediate:!0}),n(()=>Ke?.value?.banding,()=>{ot()&&(Ne(),Ge.createBanding())},{deep:!0,immediate:!0}),l(()=>{ce(ie.value)||le(),Ke.value&&Ke.value.l&&Ke.value.w&&(r(()=>We()),Ze.value=!0)}),o(()=>de()),(e,s)=>{const a=h("Icon");return d(),c("dialog",{id:"machining",ref_key:"dialogRef",ref:ie,popover:"manual",onCancel:k(Je,["prevent"]),onClick:rt,onToggle:s[9]||(s[9]=(...e)=>
2u(oe)&&u(oe)(...e)),onClose:s[10]||(s[10]=(...e)=>u(he)&&u(he)(...e)),onKeydown:C(Je,["esc"])},[p("div",O,[(u("production"),v("",!0)),p("button",{class:"c-btn close",type:"button",onClick:s[0]||(s[0]=e=>Je())},"×"),Ke.value?.name?(d(),c("div",R,m(Ke.value.name),1)):v("",!0),p("div",U,m(Ke.value?.l)+" x "+m(Ke.value?.w)+" "+m(Ke.value?.t?"x "+Ke.value?.t:null),1),t.options.faces.enabled?(d(),c("div",$,[p("div",{ref:"sides",class:b(["sides",{flipped:1===st.value}]),onClick:ze},[...s[11]||(s[11]=[p("div",{class:"side-a"}," A ",-1),p("div",{class:"side-b"}," B ",-1)])],2),s[12]||(s[12]=p("div",{class:"text"}," [Click to flip] ",-1))])):v("",!0),pe.value?(d(),c("button",{key:3,class:"c-btn c-btn--delete",type:"button",onClick:De}," Delete all machining ")):v("",!0),p("div",N,[t.options.holes.enabled?(d(),c("div",{key:0,class:b({selected:"holes"===at.value}),onClick:s[1]||(s[1]=e=>at.value="holes")}," Holes ",2)):v("",!0),t.options.hingeHoles.enabled?(d(),c("div",{key:1,class:b({selected:"hingeHoles"===at.value}),onClick:s[2]||(s[2]=e=>at.value="hingeHoles")}," Hinge holes ",2)):v("",!0),t.options.corners.enabled?(d(),c("div",{key:2,class:b({selected:"corners"===at.value}),onClick:s[3]||(s[3]=e=>at.value="corners")}," Corners ",2)):v("",!0),t.options.grooves?.enabled?(d(),c("div",{key:3,class:b({selected:"grooves"===at.value}),onClick:s[4]||(s[4]=e=>at.value="grooves")}," Grooves ",2)):v("",!0),t.options.banding.enabled?(d(),c("div",{key:4,class:b({selected:"banding"===at.value}),onClick:s[5]||(s[5]=e=>at.value="banding")}," Banding ",2)):v("",!0),ue.value?(d(),c("div",{key:5,class:b({selected:"custom"===at.value}),onClick:s[6]||(s[6]=e=>at.value="custom")}," Custom ",2)):v("",!0)]),at.value&&"banding"!==at.value?(d(),c("div",I,["holes"===at.value||"hingeHoles"===at.value||"corners"===at.value||"grooves"===at.value?(d(),c("button",{key:0,class:"c-btn",type:"button",onClick:Me}," Create ")):v("",!0),at.value&&"banding"!==at.value?(d(),c("button",{key:1,class:"c-btn c-btn--delete",type:"button",onClick:$e}," Delete all ")):v("",!0)])):v("",!0),p("div",Q,["banding"===at.value&&Ke.value?(d(),x(B,{key:0,shape:Ke.value,"onUpdate:shape":s[7]||(s[7]=e=>Ke.value=e),"extra-type":"banding","extra-label":"Banding","extra-keys":we.value,labels:t.options.banding.labels,"all-options":t.options.banding.options,"user-friendly-field-map":u(E),"part-columns":1,"allow-custom-names":!0,"custom-names":He.value,"used-names":Ce.value,"enable-pricing":!0,pricing:t.options.banding.pricing,"get-price":t.getExtrasPrice,"format-price":t.formatPrice,"get-available-pricing-options":t.getAvailablePricingOptions},null,8,["shape","extra-keys","labels","all-options","user-friendly-field-map","custom-names","used-names","pricing","get-price","format-price","get-available-pricing-options"])):v("",!0),"custom"===at.value&&Ke.value&&ue.value?(d(),x(B,{key:1,shape:Ke.value,"onUpdate:shape":s[8]||(s[8]=e=>Ke.value=e),"extra-type":"machining","extra-label":"Custom",labels:ge.value,"all-options":ve.value,"user-friendly-field-map":u(E),"part-columns":1,"enable-pricing":!0,pricing:me.value,"get-price":t.getExtrasPrice,"format-price":t.formatPrice,"get-available-pricing-options":t.getAvailablePricingOptions},null,8,["shape","labels","all-options","user-friendly-field-map","pricing","get-price","format-price","get-available-pricing-options"])):v("",!0)]),"banding"!==at.value&&Se.value.length?(d(),c("div",{key:5,class:b(["grid-table",at.value]),style:f({"grid-template-columns":xe.value})},[p("div",X,[Pe()?(d(),c("div",J)):v("",!0),(d(!0),c(y,null,S(fe.value,(e,t)=>w((d(),c("div",{key:t,class:"cell"},m(e.label??t),1)),[[H,e.enabled]])),128)),s[13]||(s[13]=p("div",{class:"cell"},null,-1))]),(d(!0),c(y,null,S(Se.value,(e,t)=>(d(),c(y,{key:t},[Ye(e)?(d(),c("div",K,[Pe()?(d(),c("div",Z,[p("div",ee,m(Le(t)),1)])):v("",!0),(d(!0),c(y,null,S(ye.value,(s,a)=>{return d(),c("div",{key:a,class:"cell"},[g(j,{type:fe.value[s].type,id:s+"-"+a,warning:Xe(t,s),"enable-label":!1,placeholder:fe.value[s].label??s,disabled:(i=fe.value[s],!!i&&("function"==typeof i.disabled?i.disabled():!!i.disabled)),value:u(M)(e,s
2),output:fe.value[s].output,options:fe.value[s].options,"onUpdate:value":t=>u(z)(e,s,t)},null,8,["type","id","warning","placeholder","disabled","value","output","options","onUpdate:value"])]);var i}),128)),p("div",te,[p("button",{class:"c-btn delete",type:"button",onClick:e=>(e=>{switch(at.value){case"holes":return Ke.value.machining.holes.splice(e,1);case"hingeHoles":return Ke.value.machining.hingeHoles.splice(e,1);case"corners":return Ke.value.machining.corners[e].size=null,void(Ke.value.machining.corners[e].type=null);case"grooves":return Ke.value.machining.grooves.splice(e,1)}})(t)},[g(a,{icon:["fass","trash"]})],8,se)]),(d(!0),c(y,null,S(Qe(t),(e,t)=>(d(),c("div",{key:t,class:"group validation",style:f({"grid-column-end":"span "+be.value})},m(e),5))),128))])):v("",!0)],64))),128))],6)):at.value?v("",!0):(d(),c("div",ae,"Please select from the menu above"))]),p("div",{id:"machining-diagram",class:b(["diagram",{flipped:1===st.value}]),ref_key:"diagramRef",ref:ne},null,2)],544)}}});export{ie as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.