@nice2dev/ui-printing 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),_=require("@nice2dev/ui"),j=require("react"),Oe=require("react-dom"),qe="_root_19f1m_3",We="_dark_19f1m_27",Ye="_toolbar_19f1m_39",Ue="_toolbarGroup_19f1m_75",Ve="_toolbarBtn_19f1m_107",Xe="_toolbarBtnActive_19f1m_171",Ke="_toolbarBtnDanger_19f1m_195",Je="_toolbarSelect_19f1m_207",Qe="_toolbarSep_19f1m_237",Ze="_insertWrapper_19f1m_263",et="_insertBtn_19f1m_271",tt="_insertDropdown_19f1m_293",st="_insertCategory_19f1m_333",nt="_insertItem_19f1m_351",at="_insertIcon_19f1m_395",it="_zoomSelect_19f1m_409",rt="_saveBtn_19f1m_441",ot="_editorBody_19f1m_477",lt="_leftPanel_19f1m_493",ct="_leftTabs_19f1m_523",dt="_leftTab_19f1m_523",mt="_leftTabActive_19f1m_601",pt="_leftTabIcon_19f1m_621",ut="_leftTabLabel_19f1m_629",ht="_leftContent_19f1m_639",_t="_panelHeader_19f1m_653",gt="_panelHeaderIcon_19f1m_677",bt="_panelHeaderName_19f1m_685",xt="_searchBox_19f1m_699",yt="_searchInput_19f1m_707",ft="_fieldList_19f1m_753",jt="_fieldItem_19f1m_763",vt="_fieldItemIcon_19f1m_807",Nt="_fieldItemInfo_19f1m_821",wt="_fieldItemLabel_19f1m_831",kt="_fieldItemPath_19f1m_847",St="_fieldItemType_19f1m_863",It="_layerList_19f1m_883",Ct="_layerItem_19f1m_895",Bt="_layerItemSelected_19f1m_931",Lt="_layerIcon_19f1m_949",Tt="_layerName_19f1m_961",zt="_layerActions_19f1m_977",Dt="_layerBtn_19f1m_999",$t="_wmList_19f1m_1031",Rt="_wmItem_19f1m_1039",Et="_wmRow_19f1m_1065",At="_wmLabel_19f1m_1079",Mt="_wmInput_19f1m_1091",Pt="_wmInputNum_19f1m_1123",Ft="_wmSelect_19f1m_1143",Ht="_wmSlider_19f1m_1175",Gt="_wmValue_19f1m_1185",Ot="_wmUnit_19f1m_1199",qt="_wmDelete_19f1m_1209",Wt="_addBtn_19f1m_1241",Yt="_settingsForm_19f1m_1277",Ut="_settingsRow_19f1m_1285",Vt="_settingsLabel_19f1m_1299",Xt="_settingsInput_19f1m_1311",Kt="_settingsInputNum_19f1m_1343",Jt="_settingsTextarea_19f1m_1375",Qt="_settingsDivider_19f1m_1409",Zt="_settingsUnit_19f1m_1429",es="_emptyMsg_19f1m_1441",ts="_canvasArea_19f1m_1459",ss="_testDataBar_19f1m_1485",ns="_testDataLabel_19f1m_1517",as="_testDataSelect_19f1m_1527",is="_rulerWrapper_19f1m_1547",rs="_rulerCorner_19f1m_1563",os="_ruler_19f1m_1547",ls="_ruler_h_19f1m_1621",cs="_ruler_v_19f1m_1631",ds="_rulerTick_19f1m_1651",ms="_rulerTickMajor_19f1m_1691",ps="_rulerLabel_19f1m_1711",us="_paperScroll_19f1m_1749",hs="_paperShadow_19f1m_1767",_s="_marginGuide_19f1m_1803",gs="_watermark_19f1m_1819",bs="_sectionCanvas_19f1m_1845",xs="_sectionCanvasOver_19f1m_1859",ys="_sectionTypeChip_19f1m_1867",fs="_sectionResizeBar_19f1m_1899",js="_sectionResizeGrip_19f1m_1933",vs="_fieldImagePlaceholder_19f1m_1949",Ns="_fieldBarcodePlaceholder_19f1m_1971",ws="_fieldSignaturePlaceholder_19f1m_1999",ks="_resizeHandle_19f1m_2031",Ss="_handle_n_19f1m_2051",Is="_handle_s_19f1m_2063",Cs="_handle_e_19f1m_2075",Bs="_handle_w_19f1m_2087",Ls="_handle_ne_19f1m_2099",Ts="_handle_nw_19f1m_2109",zs="_handle_se_19f1m_2119",Ds="_handle_sw_19f1m_2129",$s="_rightPanel_19f1m_2143",Rs="_rightTabs_19f1m_2173",Es="_rightTab_19f1m_2173",As="_rightTabActive_19f1m_2243",Ms="_propsBody_19f1m_2255",Ps="_propsEmpty_19f1m_2267",Fs="_propsEmptyIcon_19f1m_2289",Hs="_propsEmptyText_19f1m_2299",Gs="_posGrid_19f1m_2311",Os="_posCell_19f1m_2325",qs="_posLabel_19f1m_2337",Ws="_posInput_19f1m_2349",Ys="_posUnit_19f1m_2391",Us="_snapSection_19f1m_2403",Vs="_snapTitle_19f1m_2411",Xs="_snapRow_19f1m_2429",Ks="_snapBtn_19f1m_2439",Js="_styleGroup_19f1m_2473",Qs="_styleGroupTitle_19f1m_2481",Zs="_styleRow_19f1m_2511",en="_styleLabel_19f1m_2525",tn="_styleSelect_19f1m_2539",sn="_styleSelectFull_19f1m_2569",nn="_styleSelectSm_19f1m_2601",an="_styleSelectXs_19f1m_2621",rn="_styleInput_19f1m_2653",on="_styleInputFull_19f1m_2685",ln="_styleUnit_19f1m_2717",cn="_styleValue_19f1m_2729",dn="_toggleGroup_19f1m_2743",mn="_toggleBtn_19f1m_2753",pn="_toggleBtnActive_19f1m_2787",un="_colorPicker_19f1m_2801",hn="_colorHex_19f1m_2819",_n="_clearBtn_19f1m_2853",gn="_sliderInput_19f1m_2885",bn="_conditionalHint_19f1m_2897",xn="_clearConditionalBtn_19f1m_2929",yn="_shortcutGrid_19f1m_2961",fn="_shortcutChip_19f1m_2975",jn="_shortcutKeys_19f1m_3007",vn="_shortcutLabel_19f1m_3027",t={root:qe,dark:We,toolbar:Ye,toolbarGroup:Ue,toolbarBtn:Ve,toolbarBtnActive:Xe,toolbarBtnDanger:Ke,toolbarSelect:Je,toolbarSep:Qe,insertWrapper:Ze,insertBtn:et,insertDropdown:tt,insertCategory:st,insertItem:nt,insertIcon:at,zoomSelect:it,saveBtn:rt,editorBody:ot,leftPanel:lt,leftTabs:ct,leftTab:dt,leftTabActive:mt,leftTabIcon:pt,leftTabLabel:ut,leftContent:ht,panelHeader:_t,panelHeaderIcon:gt,panelHeaderName:bt,searchBox:xt,searchInput:yt,fieldList:ft,fieldItem:jt,fieldItemIcon:vt,fieldItemInfo:Nt,fieldItemLabel:wt,fieldItemPath:kt,fieldItemType:St,layerList:It,layerItem:Ct,layerItemSelected:Bt,layerIcon:Lt,layerName:Tt,layerActions:zt,layerBtn:Dt,wmList:$t,wmItem:Rt,wmRow:Et,wmLabel:At,wmInput:Mt,wmInputNum:Pt,wmSelect:Ft,wmSlider:Ht,wmValue:Gt,wmUnit:Ot,wmDelete:qt,addBtn:Wt,settingsForm:Yt,settingsRow:Ut,settingsLabel:Vt,settingsInput:Xt,settingsInputNum:Kt,settingsTextarea:Jt,settingsDivider:Qt,settingsUnit:Zt,emptyMsg:es,canvasArea:ts,testDataBar:ss,testDataLabel:ns,testDataSelect:as,rulerWrapper:is,rulerCorner:rs,ruler:os,ruler_h:ls,ruler_v:cs,rulerTick:ds,rulerTickMajor:ms,rulerLabel:ps,paperScroll:us,paperShadow:hs,marginGuide:_s,watermark:gs,sectionCanvas:bs,sectionCanvasOver:xs,sectionTypeChip:ys,sectionResizeBar:fs,sectionResizeGrip:js,fieldImagePlaceholder:vs,fieldBarcodePlaceholder:Ns,fieldSignaturePlaceholder:ws,resizeHandle:ks,handle_n:Ss,handle_s:Is,handle_e:Cs,handle_w:Bs,handle_ne:Ls,handle_nw:Ts,handle_se:zs,handle_sw:Ds,rightPanel:$s,rightTabs:Rs,rightTab:Es,rightTabActive:As,propsBody:Ms,propsEmpty:Ps,propsEmptyIcon:Fs,propsEmptyText:Hs,posGrid:Gs,posCell:Os,posLabel:qs,posInput:Ws,posUnit:Ys,snapSection:Us,snapTitle:Vs,snapRow:Xs,snapBtn:Ks,styleGroup:Js,styleGroupTitle:Qs,styleRow:Zs,styleLabel:en,styleSelect:tn,styleSelectFull:sn,styleSelectSm:nn,styleSelectXs:an,styleInput:rn,styleInputFull:on,styleUnit:ln,styleValue:cn,toggleGroup:dn,toggleBtn:mn,toggleBtnActive:pn,colorPicker:un,colorHex:hn,clearBtn:_n,sliderInput:gn,conditionalHint:bn,clearConditionalBtn:xn,shortcutGrid:yn,shortcutChip:fn,shortcutKeys:jn,shortcutLabel:vn},G=3.78,ve={A3:[297,420],A4:[210,297],A5:[148,210],A6:[105,148],Letter:[216,279],Legal:[216,356],Tabloid:[279,432],custom:[210,297]},Nn=["sans-serif","serif","monospace","Arial","Times New Roman","Courier New","Georgia","Verdana","Tahoma"],Ne=[6,7,8,9,10,11,12,14,16,18,20,24,28,32,36,48,60,72],ce={text:"type",number:"hash",currency:"dollar",date:"calendar",datetime:"clock",boolean:"check-square",image:"image",barcode:"barcode",qr:"qr-code",signature:"pen",static_text:"type",static_image:"image",line:"line",rect:"square",page_number:"hash",total_pages:"layers",print_date:"calendar"},de={text:"Text",number:"Number",currency:"Currency",date:"Date",datetime:"Date and time",boolean:"Yes/No",image:"Image",barcode:"Barcode",qr:"QR",signature:"Signature",static_text:"Static text",static_image:"Static image",line:"Line",rect:"Rectangle",page_number:"Page number",total_pages:"Total pages",print_date:"Print date"},be=(s,r)=>de[r]?s(`printing.fieldType.${r}`,de[r]):r;function wn(s,r){switch(r.type){case"UPDATE":return{past:[...s.past.slice(-50),s.present],present:r.payload,future:[]};case"UNDO":return s.past.length?{past:s.past.slice(0,-1),present:s.past[s.past.length-1],future:[s.present,...s.future]}:s;case"REDO":return s.future.length?{past:[...s.past,s.present],present:s.future[0],future:s.future.slice(1)}:s;default:return s}}const te="#000000",pe="#94a3b8";function ie(){return`f-${Date.now()}-${Math.floor(Math.random()*1e3)}`}function we(s,r){const d={id:ie(),name:(r==null?void 0:r.label)??de[s]??s,label:(r==null?void 0:r.label)??de[s]??s,type:s,dataPath:(r==null?void 0:r.path)??"",fallback:s==="static_text"?"Static text":void 0,format:s==="date"||s==="datetime"?"DD.MM.YYYY":void 0,position:{x:15,y:15,width:s==="line"?80:60,height:s==="line"?1:s==="image"?30:8},style:{fontSize:10,color:te,fontFamily:"sans-serif"}};return s==="rect"&&(d.style.backgroundColor="var(--nice-bg-secondary, #f1f5f9)"),s==="line"&&(d.style={...d.style,borderWidth:.5,borderColor:te,borderStyle:"solid"}),d}const ke=({lengthMm:s,zoom:r,orientation:d})=>{const o=[],k=r<.6?20:r<1?10:5;for(let f=0;f<=s;f+=k){const g=f*r*G,h=f%(k*2)===0;o.push(e.jsx("div",{className:`${t.rulerTick} ${h?t.rulerTickMajor:""}`,style:d==="h"?{left:g}:{top:g},children:h&&e.jsx("span",{className:t.rulerLabel,children:f})},f))}return e.jsx("div",{className:`${t.ruler} ${t[`ruler_${d}`]}`,children:o})},kn=["n","s","e","w","ne","nw","se","sw"],Sn=({onResizeStart:s})=>e.jsx(e.Fragment,{children:kn.map(r=>e.jsx("div",{className:`${t.resizeHandle} ${t[`handle_${r}`]}`,onMouseDown:d=>{d.stopPropagation(),s(r,d)}},r))});function In(s,r){if(s.type==="static_text")return s.fallback??"Text";if(s.type==="page_number")return"1";if(s.type==="total_pages")return"3";if(s.type==="print_date")return new Date().toLocaleDateString("pl-PL");if(r&&s.dataPath){const d=s.dataPath.split(".").reduce((o,k)=>o&&typeof o=="object"?o[k]:null,r);if(d!=null)return String(d)}return s.label?`{${s.label}}`:`{${s.dataPath}}`}const Cn=({field:s,zoom:r,selected:d,sampleData:o,onClick:k,onDragStart:f,onResizeStart:g,readOnly:h})=>{const{t:b}=_.useNiceTranslation(),N=s.position,u=s.style,i=c=>c*r*G,w=s.type==="line",I=s.type==="rect",B=s.type==="image"||s.type==="static_image",a=s.type==="barcode"||s.type==="qr",n={position:"absolute",left:i(N.x),top:i(N.y),width:i(N.width),height:i(N.height),zIndex:N.zIndex??1,transform:u.rotation?`rotate(${u.rotation}deg)`:void 0,boxSizing:"border-box",overflow:"hidden",...!w&&!I?{fontSize:(u.fontSize??10)*r,fontFamily:u.fontFamily??"sans-serif",fontWeight:u.fontWeight??"normal",fontStyle:u.fontStyle??"normal",color:u.color??te,textAlign:u.textAlign??"left",lineHeight:u.lineHeight??1.4,letterSpacing:u.letterSpacing?`${u.letterSpacing}em`:void 0,padding:u.padding?i(u.padding):0}:{},backgroundColor:u.backgroundColor,borderWidth:u.borderWidth??0,borderColor:u.borderColor??"transparent",borderStyle:u.borderStyle??"solid",borderRadius:u.borderRadius,opacity:u.opacity,outline:d?"1.5px solid var(--nice-primary-hover, #2563eb)":"1px dashed transparent",outlineOffset:1,cursor:h?"default":"move"};return e.jsxs("div",{style:n,onClick:k,onMouseDown:h?void 0:f,children:[w?e.jsx("div",{style:{width:"100%",borderBottom:`${(u.borderWidth??.5)*r}px ${u.borderStyle??"solid"} ${u.borderColor??te}`}}):I?null:B?e.jsx("div",{className:t.fieldImagePlaceholder,children:e.jsx(_.NiceIcon,{name:"image",size:24})}):a?e.jsxs("div",{className:t.fieldBarcodePlaceholder,children:[e.jsx(_.NiceIcon,{name:s.type==="qr"?"qr-code":"barcode",size:14})," ",s.type==="qr"?"QR":b("templateEditor.barcode","Barcode")]}):s.type==="signature"?e.jsxs("div",{className:t.fieldSignaturePlaceholder,children:[e.jsx(_.NiceIcon,{name:"pen",size:14})," ",s.label]}):e.jsx("span",{style:{display:"block",width:"100%"},children:In(s,o)}),d&&!h&&e.jsx(Sn,{onResizeStart:g})]})},Bn=({section:s,zoom:r,paperWidthMm:d,selectedIds:o,sampleData:k,readOnly:f,showGrid:g,onFieldClick:h,onFieldDragStart:b,onResizeStart:N,onSectionHeightChange:u,onDropField:i})=>{const w=(s.heightMm??(s.type==="body"?200:40))*r*G,I=d*r*G,[B,a]=j.useState(!1),n={header:"rgba(219,234,254,0.35)",footer:"rgba(220,252,231,0.35)",background:"rgba(254,249,195,0.35)",body:"transparent"};return e.jsxs("div",{className:`${t.sectionCanvas} ${B?t.sectionCanvasOver:""}`,style:{width:I,height:w,position:"relative",background:n[s.type]??"transparent",backgroundImage:g?`repeating-linear-gradient(0deg, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 0, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 1px, transparent 1px, transparent ${5*r*G}px),
|
|
2
|
-
repeating-linear-gradient(90deg, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 0, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 1px, transparent 1px, transparent ${5*r*G}px)`:void 0},onDragOver:c=>{c.preventDefault(),a(!0)},onDragLeave:()=>a(!1),onDrop:c=>{c.preventDefault(),a(!1);const p=c.dataTransfer.getData("fieldPath");if(!p)return;const L=c.currentTarget.getBoundingClientRect(),x=(c.clientX-L.left)/(r*G),$=(c.clientY-L.top)/(r*G);i(s.id,p,Math.max(0,x),Math.max(0,$))},children:[e.jsx("div",{className:t.sectionTypeChip,children:s.type}),s.fields.map(c=>e.jsx(Cn,{field:c,zoom:r,selected:o.has(c.id),sampleData:k,readOnly:f,onClick:p=>h(c.id,p),onDragStart:p=>b(c.id,p),onResizeStart:(p,L)=>N(c.id,p,L)},c.id)),!f&&s.type!=="body"&&e.jsx("div",{className:t.sectionResizeBar,onMouseDown:c=>{c.preventDefault();const p=c.clientY,L=s.heightMm??40,x=T=>{const z=(T.clientY-p)/(r*G);u(s.id,Math.max(10,L+z))},$=()=>{document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",$)};document.addEventListener("mousemove",x),document.addEventListener("mouseup",$)},children:e.jsx("div",{className:t.sectionResizeGrip})})]})},ae=({keys:s,label:r})=>e.jsxs("div",{className:t.shortcutChip,children:[e.jsx("span",{className:t.shortcutKeys,children:s}),e.jsx("span",{className:t.shortcutLabel,children:r})]}),Ln=[{id:"fields",icon:"list",key:"printing.editor.tabFields",label:"Fields"},{id:"layers",icon:"layers",key:"printing.editor.tabLayers",label:"Layers"},{id:"watermarks",icon:"droplet",key:"printing.editor.tabWatermarks",label:"Watermarks"},{id:"signatures",icon:"pen",key:"printing.editor.tabSignatures",label:"Signatures"},{id:"settings",icon:"settings",key:"printing.editor.tabSettings",label:"Settings"}],Tn=[{id:"position",key:"printing.editor.tabPosition",label:"Position"},{id:"style",key:"printing.editor.tabStyle",label:"Style"},{id:"data",key:"printing.editor.tabData",label:"Data"},{id:"conditional",key:"printing.editor.tabConditional",label:"Conditions"}],zn=({tpl:s,zoom:r,canUndo:d,canRedo:o,showGrid:k,showRulers:f,readOnly:g,selectedCount:h,onPaperChange:b,onZoom:N,onUndo:u,onRedo:i,onToggleGrid:w,onToggleRulers:I,onInsert:B,onDelete:a,onDuplicate:n,onAlignH:c,onAlignV:p,onBringForward:L,onSendBackward:x,onSave:$})=>{const{t:T}=_.useNiceTranslation(),{t:z}=_.useNiceTranslation(),[E,O]=j.useState(!1),X=[.5,.75,1,1.25,1.5,2];return e.jsxs("div",{className:t.toolbar,children:[e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("select",{className:t.toolbarSelect,value:s.paperSize,onChange:y=>b(y.target.value,s.orientation),children:["A4","A5","A3","Letter","Legal","Tabloid","custom"].map(y=>e.jsx("option",{value:y,children:y},y))}),e.jsx("button",{className:`${t.toolbarBtn} ${s.orientation==="portrait"?t.toolbarBtnActive:""}`,onClick:()=>b(s.paperSize,"portrait"),title:T("templateEditor.portrait","Portrait"),children:e.jsx(_.NiceIcon,{name:"file",size:14})}),e.jsx("button",{className:`${t.toolbarBtn} ${s.orientation==="landscape"?t.toolbarBtnActive:""}`,onClick:()=>b(s.paperSize,"landscape"),title:T("templateEditor.landscape","Landscape"),children:e.jsx(_.NiceIcon,{name:"file",size:14,style:{transform:"rotate(90deg)"}})})]}),!g&&e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,disabled:!d,onClick:u,title:`${z("printing.editor.undo","Undo")} (Ctrl+Z)`,children:e.jsx(_.NiceIcon,{name:"undo",size:14})}),e.jsx("button",{className:t.toolbarBtn,disabled:!o,onClick:i,title:`${z("printing.editor.redo","Redo")} (Ctrl+Y)`,children:e.jsx(_.NiceIcon,{name:"redo",size:14})})]}),!g&&e.jsxs("div",{className:t.insertWrapper,children:[e.jsxs("button",{className:`${t.toolbarBtn} ${t.insertBtn}`,onClick:()=>O(y=>!y),children:[e.jsx(_.NiceIcon,{name:"plus",size:14})," ",z("printing.editor.insert","Insert")," ",e.jsx(_.NiceIcon,{name:"chevron-down",size:12})]}),E&&e.jsxs("div",{className:t.insertDropdown,onMouseLeave:()=>O(!1),children:[e.jsx("div",{className:t.insertCategory,children:z("printing.editor.dataFields","Data fields")}),["text","number","currency","date","image","barcode","qr"].map(y=>e.jsxs("button",{className:t.insertItem,onClick:()=>{B(y),O(!1)},children:[e.jsx("span",{className:t.insertIcon,children:ce[y]}),be(z,y)]},y)),e.jsx("div",{className:t.insertCategory,children:T("templateEditor.staticElements","Static elements")}),["static_text","static_image","line","rect","page_number","total_pages","print_date"].map(y=>e.jsxs("button",{className:t.insertItem,onClick:()=>{B(y),O(!1)},children:[e.jsx("span",{className:t.insertIcon,children:ce[y]}),be(z,y)]},y)),e.jsx("div",{className:t.insertCategory,children:T("templateEditor.special","Special")}),e.jsxs("button",{className:t.insertItem,onClick:()=>{B("watermark"),O(!1)},children:[e.jsx("span",{className:t.insertIcon,children:e.jsx(_.NiceIcon,{name:"droplet",size:14})}),z("printing.editor.watermark","Watermark")]}),e.jsxs("button",{className:t.insertItem,onClick:()=>{B("signature"),O(!1)},children:[e.jsx("span",{className:t.insertIcon,children:e.jsx(_.NiceIcon,{name:"pen",size:14})}),z("printing.editor.signature","Signature")]})]})]}),!g&&h>0&&e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,onClick:n,title:`${z("printing.editor.duplicate","Duplicate")} (Ctrl+D)`,children:e.jsx(_.NiceIcon,{name:"copy",size:14})}),e.jsx("button",{className:`${t.toolbarBtn} ${t.toolbarBtnDanger}`,onClick:a,title:`${z("printing.action.remove","Remove")} (Del)`,children:e.jsx(_.NiceIcon,{name:"trash",size:14})}),e.jsx("span",{className:t.toolbarSep}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>c("left"),title:z("printing.editor.alignLeft","Align left"),children:e.jsx(_.NiceIcon,{name:"align-left",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>c("center"),title:z("printing.editor.alignCenter","Align centre"),children:e.jsx(_.NiceIcon,{name:"align-center",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>c("right"),title:z("printing.editor.alignRight","Align right"),children:e.jsx(_.NiceIcon,{name:"align-right",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>p("top"),title:z("printing.editor.alignTop","Align top"),children:"⊤"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>p("center"),title:z("printing.editor.alignMiddle","Align middle"),children:"⊕"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>p("bottom"),title:z("printing.editor.alignBottom","Align bottom"),children:"⊥"}),e.jsx("span",{className:t.toolbarSep}),e.jsx("button",{className:t.toolbarBtn,onClick:L,title:T("templateEditor.bringForward","Bring forward"),children:e.jsx(_.NiceIcon,{name:"arrow-up",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:x,title:z("printing.editor.sendBackward","Send backward"),children:e.jsx(_.NiceIcon,{name:"arrow-down",size:14})})]}),e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:`${t.toolbarBtn} ${k?t.toolbarBtnActive:""}`,onClick:w,title:z("printing.editor.grid","Grid"),children:"⊞"}),e.jsx("button",{className:`${t.toolbarBtn} ${f?t.toolbarBtnActive:""}`,onClick:I,title:z("printing.editor.rulers","Rulers"),children:e.jsx(_.NiceIcon,{name:"ruler",size:14})})]}),e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(Math.max(.25,r-.1)),children:"−"}),e.jsx("select",{className:t.zoomSelect,value:X.includes(r)?r:"",onChange:y=>N(+y.target.value),children:X.map(y=>e.jsxs("option",{value:y,children:[Math.round(y*100),"%"]},y))}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(Math.min(3,r+.1)),children:"+"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(1),title:"100%",children:"⊡"})]}),!g&&$&&e.jsxs("button",{className:t.saveBtn,onClick:$,children:[e.jsx(_.NiceIcon,{name:"save",size:14})," ",z("printing.editor.save","Save")]})]})},Dn=({activeTab:s,onTabChange:r,schema:d,tpl:o,allFields:k,selectedIds:f,onInsertSchemaField:g,onSelectField:h,onUpdateTpl:b,onReorderField:N})=>{const{t:u}=_.useNiceTranslation(),{t:i}=_.useNiceTranslation(),[w,I]=j.useState(""),B=d==null?void 0:d.fields.filter(a=>a.label.toLowerCase().includes(w.toLowerCase())||a.path.toLowerCase().includes(w.toLowerCase()));return e.jsxs("div",{className:t.leftPanel,children:[e.jsx("div",{className:t.leftTabs,children:Ln.map(a=>e.jsxs("button",{className:`${t.leftTab} ${s===a.id?t.leftTabActive:""}`,onClick:()=>r(a.id),title:i(a.key,a.label),children:[e.jsx("span",{className:t.leftTabIcon,children:e.jsx(_.NiceIcon,{name:a.icon,size:16})}),e.jsx("span",{className:t.leftTabLabel,children:i(a.key,a.label)})]},a.id))}),e.jsxs("div",{className:t.leftContent,children:[s==="fields"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:i("printing.editor.dataFields","Data fields")}),e.jsx("div",{className:t.searchBox,children:e.jsx("input",{className:t.searchInput,placeholder:i("printing.editor.search","Search…"),value:w,onChange:a=>I(a.target.value)})}),d?e.jsxs("div",{className:t.fieldList,children:[(B??[]).map(a=>e.jsxs("div",{className:t.fieldItem,draggable:!0,onDragStart:n=>{n.dataTransfer.setData("fieldPath",a.path),n.dataTransfer.setData("fieldLabel",a.label),n.dataTransfer.setData("fieldType",a.type)},onClick:()=>g(a),children:[e.jsx("span",{className:t.fieldItemIcon,children:e.jsx(_.NiceIcon,{name:ce[a.type]??"type",size:14})}),e.jsxs("div",{className:t.fieldItemInfo,children:[e.jsx("div",{className:t.fieldItemLabel,children:a.label}),e.jsx("div",{className:t.fieldItemPath,children:a.path})]}),e.jsx("span",{className:t.fieldItemType,children:a.type})]},a.path)),(B==null?void 0:B.length)===0&&e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noMatches","No matches")})]}):e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noSchema","No data schema. Assign an entity in the Settings tab.")})]}),s==="layers"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:t.panelHeader,children:[i("printing.editor.layers","Layers")," (",k.length,")"]}),e.jsxs("div",{className:t.layerList,children:[k.length===0&&e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noElements","No elements")}),k.slice().reverse().map(a=>e.jsxs("div",{className:`${t.layerItem} ${f.has(a.id)?t.layerItemSelected:""}`,onClick:()=>h(a.id),children:[e.jsx("span",{className:t.layerIcon,children:e.jsx(_.NiceIcon,{name:ce[a.type]??"type",size:14})}),e.jsx("span",{className:t.layerName,children:a.name||a.label}),e.jsxs("div",{className:t.layerActions,children:[e.jsx("button",{className:t.layerBtn,onClick:n=>{n.stopPropagation(),N(a.id,-1)},title:i("printing.editor.bringForward","Bring forward"),children:e.jsx(_.NiceIcon,{name:"arrow-up",size:12})}),e.jsx("button",{className:t.layerBtn,onClick:n=>{n.stopPropagation(),N(a.id,1)},title:i("printing.editor.sendBackward","Send backward"),children:e.jsx(_.NiceIcon,{name:"arrow-down",size:12})})]})]},a.id))]})]}),s==="watermarks"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:u("templateEditor.watermarks","Watermarks")}),e.jsxs("div",{className:t.wmList,children:[(o.watermarks??[]).map(a=>e.jsxs("div",{className:t.wmItem,children:[e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.type","Type")}),e.jsxs("select",{className:t.wmSelect,value:a.type,onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,type:n.target.value}:p)})},children:[e.jsx("option",{value:"text",children:i("printing.fieldType.text","Text")}),e.jsx("option",{value:"image",children:i("printing.fieldType.image","Image")})]})]}),a.type==="text"&&e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.fieldType.text","Text")}),e.jsx("input",{className:t.wmInput,value:a.text??"",onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,text:n.target.value}:p)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:u("templateEditor.opacity","Opacity")}),e.jsx("input",{type:"range",min:.02,max:.5,step:.01,className:t.wmSlider,value:a.opacity,onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,opacity:+n.target.value}:p)})}}),e.jsxs("span",{className:t.wmValue,children:[Math.round(a.opacity*100),"%"]})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.angle","Angle")}),e.jsx("input",{type:"range",min:-90,max:90,step:5,className:t.wmSlider,value:a.angle,onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,angle:+n.target.value}:p)})}}),e.jsxs("span",{className:t.wmValue,children:[a.angle,"°"]})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.size","Size")}),e.jsx("input",{type:"number",min:8,max:200,className:t.wmInputNum,value:a.fontSize??48,onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,fontSize:+n.target.value}:p)})}}),e.jsx("span",{className:t.wmUnit,children:"pt"})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.colour","Colour")}),e.jsx("input",{type:"color",className:t.colorPicker,value:a.color??pe,onChange:n=>{var c;return b({watermarks:(c=o.watermarks)==null?void 0:c.map(p=>p.id===a.id?{...p,color:n.target.value}:p)})}})]}),e.jsx("button",{className:t.wmDelete,onClick:()=>{var n;return b({watermarks:(n=o.watermarks)==null?void 0:n.filter(c=>c.id!==a.id)})},children:i("printing.action.remove","Remove")})]},a.id)),e.jsxs("button",{className:t.addBtn,onClick:()=>b({watermarks:[...o.watermarks??[],{id:ie(),type:"text",text:u("templateEditor.copy","COPY"),opacity:.12,angle:-45,fontSize:60,color:pe}]}),children:[e.jsx(_.NiceIcon,{name:"plus",size:12})," ",i("printing.editor.addWatermark","Add watermark")]})]})]}),s==="signatures"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:u("templateEditor.signatures","Signatures")}),e.jsxs("div",{className:t.wmList,children:[(o.signatures??[]).map(a=>e.jsxs("div",{className:t.wmItem,children:[e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:u("templateEditor.label","Label")}),e.jsx("input",{className:t.wmInput,value:a.label,onChange:n=>{var c;return b({signatures:(c=o.signatures)==null?void 0:c.map(p=>p.id===a.id?{...p,label:n.target.value}:p)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:u("templateEditor.signerName","Name")}),e.jsx("input",{className:t.wmInput,value:a.signerName??"",onChange:n=>{var c;return b({signatures:(c=o.signatures)==null?void 0:c.map(p=>p.id===a.id?{...p,signerName:n.target.value}:p)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.fieldType.line","Line")}),e.jsx("input",{type:"checkbox",checked:a.showLine??!0,onChange:n=>{var c;return b({signatures:(c=o.signatures)==null?void 0:c.map(p=>p.id===a.id?{...p,showLine:n.target.checked}:p)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.showDate","Show date")}),e.jsx("input",{type:"checkbox",checked:a.showDate??!1,onChange:n=>{var c;return b({signatures:(c=o.signatures)==null?void 0:c.map(p=>p.id===a.id?{...p,showDate:n.target.checked}:p)})}})]}),e.jsx("button",{className:t.wmDelete,onClick:()=>{var n;return b({signatures:(n=o.signatures)==null?void 0:n.filter(c=>c.id!==a.id)})},children:i("printing.action.remove","Remove")})]},a.id)),e.jsxs("button",{className:t.addBtn,onClick:()=>b({signatures:[...o.signatures??[],{id:ie(),label:i("printing.editor.signature","Signature"),position:{x:10,y:5,width:70,height:22},showLine:!0,showDate:!1}]}),children:[e.jsx(_.NiceIcon,{name:"plus",size:12})," ",i("printing.editor.addSignature","Add signature")]})]})]}),s==="settings"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:i("printing.editor.templateSettings","Template settings")}),e.jsxs("div",{className:t.settingsForm,children:[e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:i("printing.editor.name","Name")}),e.jsx("input",{className:t.settingsInput,value:o.name,onChange:a=>b({name:a.target.value})})]}),e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:i("printing.editor.description","Description")}),e.jsx("textarea",{className:t.settingsTextarea,value:o.description??"",onChange:a=>b({description:a.target.value}),rows:2})]}),e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:u("templateEditor.category","Category")}),e.jsx("input",{className:t.settingsInput,value:o.category??"",onChange:a=>b({category:a.target.value})})]}),e.jsx("div",{className:t.settingsDivider,children:i("printing.editor.margins","Margins (mm)")}),["top","right","bottom","left"].map(a=>e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:a==="top"?i("printing.editor.marginTop","Top"):a==="right"?i("printing.editor.marginRight","Right"):a==="bottom"?i("printing.editor.marginBottom","Bottom"):i("printing.editor.marginLeft","Left")}),e.jsx("input",{type:"number",min:0,max:50,step:1,className:t.settingsInputNum,value:o.margins[a],onChange:n=>b({margins:{...o.margins,[a]:+n.target.value}})}),e.jsx("span",{className:t.settingsUnit,children:u("templateEditor.mm","mm")})]},a))]})]})]})]})},$n=({field:s,activeTab:r,onTabChange:d,onChange:o,paperWidthMm:k,paperHeightMm:f})=>{var w,I,B,a;const{t:g}=_.useNiceTranslation(),{t:h}=_.useNiceTranslation(),b=j.useCallback(n=>s&&o({position:{...s.position,...n}}),[s,o]),N=j.useCallback(n=>s&&o({style:{...(s==null?void 0:s.style)??{},...n}}),[s,o]);if(!s)return e.jsxs("div",{className:t.rightPanel,children:[e.jsx("div",{className:t.panelHeader,children:h("printing.editor.properties","Properties")}),e.jsxs("div",{className:t.propsEmpty,children:[e.jsx("div",{className:t.propsEmptyIcon,children:e.jsx(_.NiceIcon,{name:"cursor",size:28})}),e.jsx("div",{className:t.propsEmptyText,children:h("printing.editor.selectElement","Select an element on the template")}),e.jsxs("div",{className:t.shortcutGrid,children:[e.jsx(ae,{keys:"Del",label:h("printing.action.remove","Remove")}),e.jsx(ae,{keys:"Ctrl+D",label:h("printing.editor.duplicate","Duplicate")}),e.jsx(ae,{keys:"↑↓←→",label:h("printing.editor.move","Move")}),e.jsx(ae,{keys:"Ctrl+Z",label:h("printing.editor.undo","Undo")}),e.jsx(ae,{keys:"Ctrl+A",label:h("printing.editor.selectAll","Select all")}),e.jsx(ae,{keys:"Shift+↑",label:h("printing.editor.move5mm","Move 5 mm")})]})]})]});const u=!["line","rect","image","static_image","barcode","qr","signature"].includes(s.type),i=!["static_text","static_image","line","rect","page_number","total_pages","print_date"].includes(s.type);return e.jsxs("div",{className:t.rightPanel,children:[e.jsxs("div",{className:t.panelHeader,children:[e.jsx("span",{className:t.panelHeaderIcon,children:ce[s.type]}),e.jsx("span",{className:t.panelHeaderName,children:s.name})]}),e.jsx("div",{className:t.rightTabs,children:Tn.map(n=>n.id==="data"&&!i?null:e.jsx("button",{className:`${t.rightTab} ${r===n.id?t.rightTabActive:""}`,onClick:()=>d(n.id),children:h(n.key,n.label)},n.id))}),e.jsxs("div",{className:t.propsBody,children:[r==="position"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:t.posGrid,children:[[{key:"x",label:"X",unit:"mm"},{key:"y",label:"Y",unit:"mm"},{key:"width",label:g("templateEditor.widthShort","W"),unit:"mm"},{key:"height",label:g("templateEditor.heightShort","H"),unit:"mm"}].map(({key:n,label:c,unit:p})=>e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:c}),e.jsx("input",{type:"number",step:.5,className:t.posInput,value:Math.round(s.position[n]*10)/10,onChange:L=>b({[n]:+L.target.value})}),e.jsx("span",{className:t.posUnit,children:p})]},n)),e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:h("printing.editor.rotation","Rotation")}),e.jsx("input",{type:"number",step:5,className:t.posInput,value:s.style.rotation??0,onChange:n=>N({rotation:+n.target.value})}),e.jsx("span",{className:t.posUnit,children:"°"})]}),e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:g("templateEditor.zIdx","Z-idx")}),e.jsx("input",{type:"number",step:1,min:1,className:t.posInput,value:s.position.zIndex??1,onChange:n=>b({zIndex:+n.target.value})})]})]}),e.jsxs("div",{className:t.snapSection,children:[e.jsx("div",{className:t.snapTitle,children:h("printing.editor.snapToPage","Snap to page")}),e.jsxs("div",{className:t.snapRow,children:[e.jsx("button",{className:t.snapBtn,onClick:()=>b({x:0}),title:h("printing.editor.leftEdge","Left edge"),children:e.jsx(_.NiceIcon,{name:"align-left",size:14})}),e.jsx("button",{className:t.snapBtn,onClick:()=>b({x:(k-s.position.width)/2}),title:h("printing.editor.horizontalCentre","Horizontal centre"),children:"⊕"}),e.jsx("button",{className:t.snapBtn,onClick:()=>b({x:k-s.position.width}),title:h("printing.editor.rightEdge","Right edge"),children:e.jsx(_.NiceIcon,{name:"align-right",size:14})})]})]})]}),r==="style"&&e.jsxs(e.Fragment,{children:[u&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:g("templateEditor.font","Font")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.fontFamily","Family")}),e.jsx("select",{className:t.styleSelectFull,value:s.style.fontFamily??"sans-serif",onChange:n=>N({fontFamily:n.target.value}),children:Nn.map(n=>e.jsx("option",{value:n,children:n},n))})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.size","Size")}),e.jsx("select",{className:t.styleSelectSm,value:Ne.includes(s.style.fontSize??10)?s.style.fontSize??10:"",onChange:n=>N({fontSize:+n.target.value}),children:Ne.map(n=>e.jsx("option",{value:n,children:n},n))}),e.jsx("input",{type:"number",step:.5,min:4,max:200,className:t.styleInput,value:s.style.fontSize??10,onChange:n=>N({fontSize:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"pt"})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.colour","Colour")}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.color??te,onChange:n=>N({color:n.target.value})}),e.jsx("input",{className:t.colorHex,value:s.style.color??te,onChange:n=>N({color:n.target.value}),maxLength:7})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.style","Style")}),e.jsxs("div",{className:t.toggleGroup,children:[e.jsx("button",{className:`${t.toggleBtn} ${s.style.fontWeight==="bold"?t.toggleBtnActive:""}`,onClick:()=>N({fontWeight:s.style.fontWeight==="bold"?"normal":"bold"}),children:e.jsx("b",{children:"B"})}),e.jsx("button",{className:`${t.toggleBtn} ${s.style.fontStyle==="italic"?t.toggleBtnActive:""}`,onClick:()=>N({fontStyle:s.style.fontStyle==="italic"?"normal":"italic"}),children:e.jsx("i",{children:"I"})})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.align","Align")}),e.jsx("div",{className:t.toggleGroup,children:["left","center","right","justify"].map(n=>e.jsx("button",{title:n,className:`${t.toggleBtn} ${(s.style.textAlign??"left")===n?t.toggleBtnActive:""}`,onClick:()=>N({textAlign:n}),children:n==="left"?"≡L":n==="center"?"≡C":n==="right"?"≡R":"≡J"},n))})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.lineHeight","Line h.")}),e.jsx("input",{type:"number",step:.1,min:1,max:4,className:t.styleInput,value:s.style.lineHeight??1.4,onChange:n=>N({lineHeight:+n.target.value})})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.spacing","Spacing")}),e.jsx("input",{type:"number",step:.01,min:-.1,max:.5,className:t.styleInput,value:s.style.letterSpacing??0,onChange:n=>N({letterSpacing:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"em"})]})]}),e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:h("printing.editor.background","Background and border")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.fill","Fill")}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.backgroundColor??"var(--nice-bg, #fff)",onChange:n=>N({backgroundColor:n.target.value})}),e.jsx("button",{className:t.clearBtn,onClick:()=>N({backgroundColor:void 0}),title:h("printing.editor.clearFill","Clear fill"),children:e.jsx(_.NiceIcon,{name:"close",size:12})})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.border","Border")}),e.jsx("input",{type:"number",step:.5,min:0,max:10,className:t.styleInput,value:s.style.borderWidth??0,onChange:n=>N({borderWidth:+n.target.value})}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.borderColor??te,onChange:n=>N({borderColor:n.target.value})}),e.jsxs("select",{className:t.styleSelectXs,value:s.style.borderStyle??"solid",onChange:n=>N({borderStyle:n.target.value}),children:[e.jsx("option",{value:"solid",children:"─"}),e.jsx("option",{value:"dashed",children:"- -"}),e.jsx("option",{value:"dotted",children:"···"})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.radius","Radius")}),e.jsx("input",{type:"number",step:1,min:0,max:50,className:t.styleInput,value:s.style.borderRadius??0,onChange:n=>N({borderRadius:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"px"})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.padding","Padding")}),e.jsx("input",{type:"number",step:.5,min:0,max:20,className:t.styleInput,value:s.style.padding??0,onChange:n=>N({padding:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:g("templateEditor.mm","mm")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.opacity","Opacity")}),e.jsx("input",{type:"range",min:.1,max:1,step:.05,className:t.sliderInput,value:s.style.opacity??1,onChange:n=>N({opacity:+n.target.value})}),e.jsxs("span",{className:t.styleValue,children:[Math.round((s.style.opacity??1)*100),"%"]})]})]})]}),r==="data"&&i&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:h("printing.editor.dataSource","Data source")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.path","Path")}),e.jsx("input",{className:t.styleInputFull,value:s.dataPath,onChange:n=>o({dataPath:n.target.value}),placeholder:g("templateEditor.egInvoiceNumber","e.g. invoice.number")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.format","Format")}),e.jsx("input",{className:t.styleInputFull,value:s.format??"",onChange:n=>o({format:n.target.value}),placeholder:g("templateEditor.ddMmYyyy000","DD.MM.YYYY / #,##0.00")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.default","Default")}),e.jsx("input",{className:t.styleInputFull,value:s.fallback??"",onChange:n=>o({fallback:n.target.value}),placeholder:h("printing.editor.whenEmpty","When there is no value")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.type","Type")}),e.jsx("select",{className:t.styleSelectFull,value:s.type,onChange:n=>o({type:n.target.value}),children:Object.keys(de).map(n=>e.jsx("option",{value:n,children:be(h,n)},n))})]}),(s.type==="barcode"||s.type==="qr")&&e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.codeFormat","Code format")}),e.jsx("select",{className:t.styleSelectFull,value:s.barcodeType??"code128",onChange:n=>o({barcodeType:n.target.value}),children:["ean13","ean8","code128","code39","upc","itf14","datamatrix"].map(n=>e.jsx("option",{value:n,children:n.toUpperCase()},n))})]})]}),r==="conditional"&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:h("printing.editor.conditionalVisibility","Conditional visibility")}),e.jsx("div",{className:t.conditionalHint,children:h("printing.editor.conditionalHint","The element is hidden when the condition is not met.")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.conditionalField","Field")}),e.jsx("input",{className:t.styleInputFull,value:((w=s.conditional)==null?void 0:w.field)??"",onChange:n=>{var c,p;return o({conditional:{field:n.target.value,operator:((c=s.conditional)==null?void 0:c.operator)??"eq",value:(p=s.conditional)==null?void 0:p.value}})},placeholder:g("templateEditor.egInvoiceIsPaid","e.g. invoice.isPaid")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("templateEditor.operator","Operator")}),e.jsxs("select",{className:t.styleSelectFull,value:((I=s.conditional)==null?void 0:I.operator)??"eq",onChange:n=>{var c,p;return o({conditional:{field:((c=s.conditional)==null?void 0:c.field)??"",operator:n.target.value,value:(p=s.conditional)==null?void 0:p.value}})},children:[e.jsxs("option",{value:"eq",children:["= ",h("printing.editor.opEqual","equal")]}),e.jsxs("option",{value:"neq",children:["≠ ",h("printing.editor.opNotEqual","not equal")]}),e.jsx("option",{value:"gt",children:g("templateEditor.greaterThan","> greater than")}),e.jsx("option",{value:"lt",children:g("templateEditor.lessThan","< less than")}),e.jsx("option",{value:"contains",children:g("templateEditor.contains","contains")})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:h("printing.editor.value","Value")}),e.jsx("input",{className:t.styleInputFull,value:String(((B=s.conditional)==null?void 0:B.value)??""),onChange:n=>{var c,p;return o({conditional:{field:((c=s.conditional)==null?void 0:c.field)??"",operator:((p=s.conditional)==null?void 0:p.operator)??"eq",value:n.target.value}})},placeholder:g("templateEditor.egTruePaid",'e.g. true / "PAID"')})]}),((a=s.conditional)==null?void 0:a.field)&&e.jsx("button",{className:t.clearConditionalBtn,onClick:()=>o({conditional:void 0}),children:h("printing.editor.clearCondition","Clear condition")})]})]})]})};function Rn(){return{id:`tpl-${Date.now()}`,name:"New template",description:"",paperSize:"A4",orientation:"portrait",margins:{top:20,right:15,bottom:20,left:15},sections:[{id:"sec-header",type:"header",heightMm:35,fields:[]},{id:"sec-body",type:"body",fields:[]},{id:"sec-footer",type:"footer",heightMm:20,fields:[]}],watermarks:[],signatures:[]}}const En=({template:s,dataSchema:r,sampleData:d=[],onChange:o,onSave:k,readOnly:f=!1,className:g,style:h,theme:b="light"})=>{const{t:N}=_.useNiceTranslation(),[{past:u,present:i,future:w},I]=j.useReducer(wn,{past:[],present:s??Rn(),future:[]}),{t:B}=_.useNiceTranslation(),[a,n]=j.useState(new Set),[c,p]=j.useState("sec-body"),[L,x]=j.useState(1),[$,T]=j.useState(0),[z,E]=j.useState("fields"),[O,X]=j.useState("position"),[y,Y]=j.useState(!1),[me,Ce]=j.useState(!0),A=j.useCallback(l=>{const m={...i,...l};I({type:"UPDATE",payload:m}),o==null||o(m)},[i,o]),[K,ue]=j.useMemo(()=>{const[l,m]=ve[i.paperSize]??ve.A4;return i.orientation==="landscape"?[m,l]:[l,m]},[i.paperSize,i.orientation]),J=j.useMemo(()=>i.sections.flatMap(l=>l.fields),[i]),P=j.useMemo(()=>J.find(l=>a.has(l.id))??null,[J,a]),he=j.useCallback((l,m)=>{A({sections:i.sections.map(C=>({...C,fields:C.fields.map(S=>S.id===l?{...S,...m,style:{...S.style,...m.style??{}}}:S)}))})},[i,A]),re=j.useCallback(l=>{A({sections:i.sections.map(m=>({...m,fields:m.fields.map(C=>a.has(C.id)?{...C,...l,style:{...C.style,...l.style??{}}}:C)}))})},[i,a,A]),ye=j.useCallback((l,m)=>{if(l==="watermark"){A({watermarks:[...i.watermarks??[],{id:ie(),type:"text",text:N("templateEditor.copy","COPY"),opacity:.12,angle:-45,fontSize:60,color:pe}]}),E("watermarks");return}if(l==="signature"){A({signatures:[...i.signatures??[],{id:ie(),label:B("printing.editor.signature","Signature"),position:{x:10,y:5,width:70,height:22},showLine:!0,showDate:!1}]}),E("signatures");return}const C=i.sections.find(F=>F.id===c)??i.sections.find(F=>F.type==="body");if(!C)return;const S=we(l,m),M={sections:i.sections.map(F=>F.id===C.id?{...F,fields:[...F.fields,S]}:F)};I({type:"UPDATE",payload:{...i,...M}}),o==null||o({...i,...M}),n(new Set([S.id]))},[i,c,o,N,B,A]),Be=j.useCallback((l,m,C,S)=>{const M=r==null?void 0:r.fields.find(q=>q.path===m),F=we((M==null?void 0:M.type)??"text",M);F.position.x=Math.round(C*2)/2,F.position.y=Math.round(S*2)/2;const Q={sections:i.sections.map(q=>q.id===l?{...q,fields:[...q.fields,F]}:q)};I({type:"UPDATE",payload:{...i,...Q}}),o==null||o({...i,...Q}),n(new Set([F.id]))},[i,r,o]),Le=j.useCallback((l,m)=>{m.ctrlKey||m.metaKey?n(C=>{const S=new Set(C);return S.has(l)?S.delete(l):S.add(l),S}):m.shiftKey?n(C=>new Set([...C,l])):n(new Set([l]))},[]),Te=j.useCallback((l,m)=>{if(f)return;m.preventDefault(),a.has(l)||n(new Set([l]));const C=m.clientX,S=m.clientY,M=i.sections.map(q=>({id:q.id,fields:q.fields.map(Z=>({id:Z.id,pos:{...Z.position}}))})),F=q=>{const Z=(q.clientX-C)/(L*G),se=(q.clientY-S)/(L*G),oe=a.has(l)?a:new Set([l]),le=i.sections.map(ee=>{const U=M.find(W=>W.id===ee.id);return{...ee,fields:ee.fields.map(W=>{var je;if(!oe.has(W.id))return W;const fe=((je=U==null?void 0:U.fields.find(Ge=>Ge.id===W.id))==null?void 0:je.pos)??W.position;return{...W,position:{...W.position,x:Math.max(0,Math.round((fe.x+Z)*2)/2),y:Math.max(0,Math.round((fe.y+se)*2)/2)}}})}}),ne={...i,sections:le};o==null||o(ne),I({type:"UPDATE",payload:ne})},Q=()=>{document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",Q)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",Q)},[i,L,a,f,o]),ze=j.useCallback((l,m,C)=>{if(f)return;C.preventDefault();const S=J.find(se=>se.id===l);if(!S)return;const M={...S.position},F=C.clientX,Q=C.clientY,q=se=>{const oe=(se.clientX-F)/(L*G),le=(se.clientY-Q)/(L*G);let{x:ne,y:ee,width:U,height:W}=M;m.includes("e")&&(U=Math.max(5,U+oe)),m.includes("s")&&(W=Math.max(3,W+le)),m.includes("w")&&(ne=ne+oe,U=Math.max(5,U-oe)),m.includes("n")&&(ee=ee+le,W=Math.max(3,W-le)),he(l,{position:{...M,x:Math.round(ne*2)/2,y:Math.round(ee*2)/2,width:Math.round(U*2)/2,height:Math.round(W*2)/2}})},Z=()=>{document.removeEventListener("mousemove",q),document.removeEventListener("mouseup",Z)};document.addEventListener("mousemove",q),document.addEventListener("mouseup",Z)},[J,L,f,he]),_e=j.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.filter(m=>!a.has(m.id))}))}),n(new Set)},[i,a,A]),ge=j.useCallback(()=>{const l=new Set;A({sections:i.sections.map(m=>{const C=m.fields.filter(S=>a.has(S.id)).map(S=>{const M={...S,id:ie(),position:{...S.position,x:S.position.x+5,y:S.position.y+5}};return l.add(M.id),M});return{...m,fields:[...m.fields,...C]}})}),n(l)},[i,a,A]),De=j.useCallback(l=>{A({sections:i.sections.map(m=>({...m,fields:m.fields.map(C=>{if(!a.has(C.id))return C;const S=l==="left"?i.margins.left:l==="right"?K-i.margins.right-C.position.width:(K-C.position.width)/2;return{...C,position:{...C.position,x:S}}})}))})},[i,a,K,A]),$e=j.useCallback(l=>{const m=i.sections.find(S=>S.id===c);if(!m)return;const C=m.heightMm??200;A({sections:i.sections.map(S=>S.id!==c?S:{...S,fields:S.fields.map(M=>{if(!a.has(M.id))return M;const F=l==="top"?0:l==="bottom"?C-M.position.height:(C-M.position.height)/2;return{...M,position:{...M.position,y:F}}})})})},[i,a,c,A]),Re=j.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.map(m=>a.has(m.id)?{...m,position:{...m.position,zIndex:(m.position.zIndex??1)+1}}:m)}))})},[i,a,A]),Ee=j.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.map(m=>a.has(m.id)?{...m,position:{...m.position,zIndex:Math.max(1,(m.position.zIndex??1)-1)}}:m)}))})},[i,a,A]),Ae=j.useCallback((l,m)=>{A({sections:i.sections.map(C=>({...C,fields:C.fields.map(S=>S.id===l?{...S,position:{...S.position,zIndex:Math.max(1,(S.position.zIndex??1)-m)}}:S)}))})},[i,A]);j.useEffect(()=>{const l=m=>{const C=m.target.tagName;if(C==="INPUT"||C==="TEXTAREA"||C==="SELECT")return;const S=m.shiftKey?5:.5;m.key==="Delete"||m.key==="Backspace"?a.size&&(m.preventDefault(),_e()):m.ctrlKey&&m.key==="z"?(m.preventDefault(),I({type:"UNDO"})):m.ctrlKey&&(m.key==="y"||m.key==="Y")?(m.preventDefault(),I({type:"REDO"})):m.ctrlKey&&(m.key==="d"||m.key==="D")?(m.preventDefault(),a.size&&ge()):m.ctrlKey&&m.key==="a"?(m.preventDefault(),n(new Set(J.map(M=>M.id)))):m.key==="ArrowLeft"?(m.preventDefault(),re({position:{...P.position,x:((P==null?void 0:P.position.x)??0)-S}})):m.key==="ArrowRight"?(m.preventDefault(),re({position:{...P.position,x:((P==null?void 0:P.position.x)??0)+S}})):m.key==="ArrowUp"?(m.preventDefault(),re({position:{...P.position,y:((P==null?void 0:P.position.y)??0)-S}})):m.key==="ArrowDown"&&(m.preventDefault(),re({position:{...P.position,y:((P==null?void 0:P.position.y)??0)+S}}))};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[a,J,P,_e,ge,re]);const Me=j.useCallback((l,m)=>{A({sections:i.sections.map(C=>C.id===l?{...C,heightMm:Math.round(m*2)/2}:C)})},[i,A]),Pe=j.useMemo(()=>{const l=Array.isArray(d)?d[$]:d;return l?"data"in l?l.data:l:{}},[d,$]),Fe=K*L*G,He=ue*L*G;return e.jsx(_.NiceAppShell,{flush:!0,className:`${t.root} ${b==="dark"?t.dark:""} ${g??""}`,style:h,toolbar:e.jsx(zn,{tpl:i,zoom:L,canUndo:u.length>0,canRedo:w.length>0,showGrid:y,showRulers:me,readOnly:f,selectedCount:a.size,onPaperChange:(l,m)=>A({paperSize:l,orientation:m}),onZoom:x,onUndo:()=>I({type:"UNDO"}),onRedo:()=>I({type:"REDO"}),onToggleGrid:()=>Y(l=>!l),onToggleRulers:()=>Ce(l=>!l),onInsert:ye,onDelete:_e,onDuplicate:ge,onAlignH:De,onAlignV:$e,onBringForward:Re,onSendBackward:Ee,onSave:k?()=>k(i):void 0}),sidebar:e.jsx(Dn,{activeTab:z,onTabChange:E,schema:r,tpl:i,allFields:J,selectedIds:a,onInsertSchemaField:l=>ye(l.type,l),onSelectField:l=>n(new Set([l])),onUpdateTpl:l=>A(l),onReorderField:Ae}),rightSidebar:e.jsx($n,{field:P,activeTab:O,onTabChange:X,onChange:l=>P&&he(P.id,l),paperWidthMm:K,paperHeightMm:ue}),children:e.jsxs("div",{className:t.canvasArea,onClick:()=>n(new Set),children:[Array.isArray(d)&&d.length>0&&e.jsxs("div",{className:t.testDataBar,children:[e.jsxs("span",{className:t.testDataLabel,children:[B("printing.editor.testData","Sample data"),":"]}),e.jsx("select",{className:t.testDataSelect,value:$,onChange:l=>T(+l.target.value),children:d.map((l,m)=>e.jsxs("option",{value:m,children:[B("printing.editor.record","Record")," ",m+1]},m))})]}),me&&e.jsxs("div",{className:t.rulerWrapper,children:[e.jsx("div",{className:t.rulerCorner}),e.jsx(ke,{lengthMm:K,zoom:L,orientation:"h"}),e.jsx(ke,{lengthMm:ue,zoom:L,orientation:"v"})]}),e.jsx("div",{className:t.paperScroll,onClick:l=>l.stopPropagation(),children:e.jsxs("div",{className:t.paperShadow,style:{width:Fe,minHeight:He},children:[e.jsx("div",{className:t.marginGuide,style:{top:i.margins.top*L*G,right:i.margins.right*L*G,bottom:i.margins.bottom*L*G,left:i.margins.left*L*G}}),(i.watermarks??[]).map(l=>e.jsx("div",{className:t.watermark,style:{fontSize:(l.fontSize??60)*L,color:l.color??pe,opacity:l.opacity,transform:`translate(-50%, -50%) rotate(${l.angle}deg)`},children:l.type==="text"?l.text:e.jsx(_.NiceIcon,{name:"image",size:(l.fontSize??60)*L})},l.id)),i.sections.map(l=>e.jsx("div",{children:e.jsx(Bn,{section:l,zoom:L,paperWidthMm:K,selectedIds:a,sampleData:Pe,readOnly:f,showGrid:y,onFieldClick:Le,onFieldDragStart:Te,onResizeStart:ze,onSectionHeightChange:Me,onDropField:Be})},l.id))]})})]})})},An="_root_7m4s0_1",Mn="_dark_7m4s0_25",Pn="_topBar_7m4s0_39",Fn="_searchInput_7m4s0_69",Hn="_actionBtn_7m4s0_111",Gn="_categoryRow_7m4s0_157",On="_catChip_7m4s0_187",qn="_catChipActive_7m4s0_217",Wn="_grid_7m4s0_231",Yn="_card_7m4s0_253",Un="_cardSelected_7m4s0_285",Vn="_thumbnail_7m4s0_307",Xn="_thumbnailImg_7m4s0_321",Kn="_thumbnailPlaceholder_7m4s0_333",Jn="_paperMini_7m4s0_347",Qn="_paperLine_7m4s0_371",Zn="_cardOverlay_7m4s0_385",ea="_overlayBtn_7m4s0_405",ta="_overlayBtnDanger_7m4s0_441",sa="_cardBody_7m4s0_481",na="_cardName_7m4s0_489",aa="_cardDesc_7m4s0_517",ia="_cardMeta_7m4s0_539",ra="_cardSize_7m4s0_553",oa="_cardCat_7m4s0_569",la="_cardTags_7m4s0_585",ca="_cardTag_7m4s0_585",da="_emptyState_7m4s0_617",ma="_emptyIcon_7m4s0_639",D={root:An,dark:Mn,topBar:Pn,searchInput:Fn,actionBtn:Hn,categoryRow:Gn,catChip:On,catChipActive:qn,grid:Wn,card:Yn,cardSelected:Un,thumbnail:Vn,thumbnailImg:Xn,thumbnailPlaceholder:Kn,paperMini:Jn,paperLine:Qn,cardOverlay:Zn,overlayBtn:ea,overlayBtnDanger:ta,cardBody:sa,cardName:na,cardDesc:aa,cardMeta:ia,cardSize:ra,cardCat:oa,cardTags:la,cardTag:ca,emptyState:da,emptyIcon:ma},pa=[],ua=[{key:"printing.category.invoices",fallback:"Invoices"},{key:"printing.category.reports",fallback:"Reports"},{key:"printing.category.labels",fallback:"Labels"},{key:"printing.category.letters",fallback:"Letters"},{key:"printing.category.contracts",fallback:"Contracts"},{key:"printing.category.other",fallback:"Other"}];function ha(s){return new Promise((r,d)=>{const o=new FileReader;o.onload=k=>{var f;try{r(JSON.parse((f=k.target)==null?void 0:f.result))}catch(g){d(g)}},o.readAsText(s)})}function _a(s){const r=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),d=URL.createObjectURL(r),o=document.createElement("a");o.href=d,o.download=`${s.name.replace(/\s+/g,"_")}.json`,o.click(),URL.revokeObjectURL(d)}const ga=({templates:s=pa,selectedId:r,onSelect:d,onImport:o,onExport:k,onDelete:f,onNew:g,className:h,style:b,theme:N="light"})=>{const{t:u}=_.useNiceTranslation(),[i,w]=j.useState(""),[I,B]=j.useState(null),[a,n]=j.useState(null),c=j.useRef(null),p=async x=>{var T;const $=(T=x.target.files)==null?void 0:T[0];if($){try{const z=await ha($);o==null||o(z)}catch{}x.target.value=""}},L=s.filter(x=>{const $=!i||x.name.toLowerCase().includes(i.toLowerCase())||(x.description??"").toLowerCase().includes(i.toLowerCase())||(x.tags??[]).some(z=>z.toLowerCase().includes(i.toLowerCase())),T=!I||x.category===I;return $&&T});return e.jsxs("div",{className:`${D.root} ${N==="dark"?D.dark:""} ${h??""}`,style:b,children:[e.jsxs("div",{className:D.topBar,children:[e.jsx("input",{type:"search",className:D.searchInput,placeholder:u("printing.searchTemplates","Search templates…"),value:i,onChange:x=>w(x.target.value)}),e.jsxs("button",{className:D.actionBtn,onClick:g,title:u("printing.newTemplate","New template"),children:[e.jsx(_.NiceIcon,{name:"plus",size:14})," ",u("printing.new","New")]}),e.jsxs("button",{className:D.actionBtn,onClick:()=>{var x;return(x=c.current)==null?void 0:x.click()},title:u("printing.importJson","Import JSON"),children:[e.jsx(_.NiceIcon,{name:"upload",size:14})," ",u("printing.import","Import")]}),e.jsx("input",{ref:c,type:"file",accept:".json",hidden:!0,onChange:p})]}),e.jsxs("div",{className:D.categoryRow,children:[e.jsx("button",{className:`${D.catChip} ${I?"":D.catChipActive}`,onClick:()=>B(null),children:u("printing.filter.all","All")}),ua.map(x=>e.jsx("button",{className:`${D.catChip} ${I===x.fallback?D.catChipActive:""}`,onClick:()=>B($=>$===x.fallback?null:x.fallback),children:u(x.key,x.fallback)},x.key))]}),e.jsxs("div",{className:D.grid,children:[L.map(x=>e.jsxs("div",{className:`${D.card} ${r===x.id?D.cardSelected:""}`,onClick:()=>d==null?void 0:d(x),onMouseEnter:()=>n(x.id),onMouseLeave:()=>n(null),children:[e.jsxs("div",{className:D.thumbnail,children:[x.previewImageUrl?e.jsx("img",{src:x.previewImageUrl,alt:x.name,className:D.thumbnailImg}):e.jsx("div",{className:D.thumbnailPlaceholder,children:e.jsxs("div",{className:D.paperMini,children:[e.jsx("div",{className:D.paperLine,style:{width:"80%"}}),e.jsx("div",{className:D.paperLine,style:{width:"60%"}}),e.jsx("div",{className:D.paperLine,style:{width:"90%"}}),e.jsx("div",{className:D.paperLine,style:{width:"50%"}})]})}),a===x.id&&e.jsxs("div",{className:D.cardOverlay,children:[e.jsx("button",{className:D.overlayBtn,onClick:$=>{$.stopPropagation(),k==null||k(x),_a(x)},title:u("printing.export","Export"),children:e.jsx(_.NiceIcon,{name:"download",size:14})}),f&&e.jsx("button",{className:D.overlayBtnDanger,onClick:$=>{$.stopPropagation(),f(x.id)},title:u("printing.action.remove","Remove"),children:e.jsx(_.NiceIcon,{name:"trash",size:14})})]})]}),e.jsxs("div",{className:D.cardBody,children:[e.jsx("div",{className:D.cardName,children:x.name}),x.description&&e.jsx("div",{className:D.cardDesc,children:x.description}),e.jsxs("div",{className:D.cardMeta,children:[e.jsxs("span",{className:D.cardSize,children:[x.paperSize," ",x.orientation==="landscape"?u("printing.orientation.landscape","landscape"):u("printing.orientation.portrait","portrait")]}),x.category&&e.jsx("span",{className:D.cardCat,children:x.category})]}),x.tags&&x.tags.length>0&&e.jsx("div",{className:D.cardTags,children:x.tags.slice(0,3).map($=>e.jsx("span",{className:D.cardTag,children:$},$))})]})]},x.id)),L.length===0&&e.jsxs("div",{className:D.emptyState,children:[e.jsx("span",{className:D.emptyIcon,children:e.jsx(_.NiceIcon,{name:"file",size:32})}),e.jsx("span",{children:i?`${u("printing.noMatches","No matches for")} "${i}"`:u("printing.noTemplates","No templates yet.")})]})]})]})},ba="_root_18ja1_1",xa="_dark_18ja1_19",ya="_headerBar_18ja1_31",fa="_entityNav_18ja1_59",ja="_navBtn_18ja1_69",va="_navLabel_18ja1_103",Na="_sampleBadge_18ja1_117",wa="_zoomBar_18ja1_135",ka="_zoomBtn_18ja1_147",Sa="_zoomLabel_18ja1_179",Ia="_printBtn_18ja1_193",Ca="_canvas_18ja1_223",Ba="_page_18ja1_243",La="_watermark_18ja1_269",Ta="_footerBar_18ja1_299",H={root:ba,dark:xa,headerBar:ya,entityNav:fa,navBtn:ja,navLabel:va,sampleBadge:Na,zoomBar:wa,zoomBtn:ka,zoomLabel:Sa,printBtn:Ia,canvas:Ca,page:Ba,watermark:La,footerBar:Ta},V=3.78,Se={A3:[297,420],A4:[210,297],A5:[148,210],A6:[105,148],Letter:[216,279],Legal:[216,356],Tabloid:[279,432]};function za(s,r){try{return s.split(".").reduce((d,o)=>d&&typeof d=="object"?d[o]:null,r)}catch{return null}}function Da(s,r,d){if(s==null)return"";if(r==="date"&&d)try{const o=new Date(s);if(d==="DD.MM.YYYY"){const k=String(o.getDate()).padStart(2,"0"),f=String(o.getMonth()+1).padStart(2,"0");return`${k}.${f}.${o.getFullYear()}`}return o.toLocaleDateString()}catch{return String(s)}if(r==="currency"&&d){const o=Number(s);if(!isNaN(o))return`${o.toFixed(2)} ${d}`}return r==="number"&&typeof s=="number"?s.toLocaleString("pl-PL"):String(s)}const $a=({field:s,data:r,zoom:d})=>{const o=s.dataPath?za(s.dataPath,r):null,k=o!=null?Da(o,s.type,s.format):s.fallback??"",f=h=>h*d*V,g={position:"absolute",left:f(s.position.x),top:f(s.position.y),width:f(s.position.width),height:f(s.position.height),fontSize:(s.style.fontSize??10)*d,fontWeight:s.style.fontWeight??"normal",fontStyle:s.style.fontStyle??"normal",color:s.style.color??"var(--nice-text-primary, #0f172a)",textAlign:s.style.textAlign??"left",backgroundColor:s.style.backgroundColor,transform:s.style.rotation?`rotate(${s.style.rotation}deg)`:void 0,overflow:"hidden",display:"flex",alignItems:s.style.verticalAlign==="middle"?"center":s.style.verticalAlign==="bottom"?"flex-end":"flex-start",lineHeight:s.style.lineHeight??1.4,padding:s.style.padding?f(s.style.padding):0,boxSizing:"border-box",borderWidth:s.style.borderWidth,borderColor:s.style.borderColor,borderStyle:s.style.borderStyle,borderRadius:s.style.borderRadius,zIndex:s.position.zIndex??1};return s.type==="image"&&o?e.jsx("div",{style:g,children:e.jsx("img",{src:String(o),alt:"",style:{width:"100%",height:"100%",objectFit:"contain"}})}):s.type==="barcode"||s.type==="qr"?e.jsxs("div",{style:{...g,background:"var(--nice-bg-secondary, #f8fafc)",border:"1px dashed var(--nice-border-color, #e2e8f0)",alignItems:"center",justifyContent:"center",fontSize:10*d},children:[e.jsx(_.NiceIcon,{name:s.type==="qr"?"qr-code":"barcode",size:12*d})," ",k]}):s.type==="signature"?e.jsx("div",{style:{...g,borderBottom:"1px solid var(--nice-border-color, #0f172a)",alignItems:"flex-end"},children:e.jsx("span",{style:{fontSize:8*d,color:"var(--nice-text-muted, #94a3b8)"},children:s.label})}):s.type==="line"?e.jsx("div",{style:{...g,borderBottom:`${s.style.borderWidth??1}px ${s.style.borderStyle??"solid"} ${s.style.borderColor??"var(--nice-text-primary, #0f172a)"}`}}):e.jsx("div",{style:g,children:k})},Ra=({template:s,data:r,zoom:d})=>{var h;const[o,k]=(()=>{const[b,N]=Se[s.paperSize]??Se.A4;return s.orientation==="landscape"?[N*V*d,b*V*d]:[b*V*d,N*V*d]})(),f=s.margins,g=s.sections.flatMap(b=>b.fields);return e.jsxs("div",{className:H.page,style:{width:o,minHeight:k},children:[e.jsx("div",{style:{position:"absolute",top:f.top*d*V,left:f.left*d*V,right:f.right*d*V,bottom:f.bottom*d*V},children:g.map(b=>e.jsx($a,{field:b,data:r,zoom:d},b.id))}),(h=s.watermarks)==null?void 0:h.map(b=>e.jsx("div",{className:H.watermark,style:{opacity:b.opacity,transform:`rotate(${b.angle}deg)`,fontSize:(b.fontSize??48)*d},children:b.type==="text"?b.text:e.jsx("img",{src:b.imageUrl,alt:"wm",style:{maxWidth:200*d}})},b.id))]})},Ea=({template:s,entities:r=[],sampleData:d,onPrint:o,className:k,style:f,theme:g="light",asPopup:h=!0,open:b,onClose:N})=>{const{t:u}=_.useNiceTranslation(),[i,w]=j.useState(0),[I,B]=j.useState(.8),[a,n]=j.useState(!0),c=b!==void 0,p=c?b:a,L=()=>{c||n(!1),N==null||N()};j.useEffect(()=>{if(!h||!p)return;const E=O=>{O.key==="Escape"&&L()};return document.addEventListener("keydown",E),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",E),document.body.style.overflow=""}},[h,p]);const x=j.useMemo(()=>r.length>0?r:d?[d.data]:[{}],[r,d]),$=x[i]??{};if(h&&!p)return null;const T=e.jsxs("div",{className:`${H.root} ${g==="dark"?H.dark:""} ${k??""}`,style:f,children:[e.jsxs("div",{className:H.headerBar,children:[e.jsxs("div",{className:H.entityNav,children:[x.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:H.navBtn,disabled:i===0,onClick:()=>w(E=>E-1),children:"‹"}),e.jsxs("span",{className:H.navLabel,children:[i+1," / ",x.length]}),e.jsx("button",{className:H.navBtn,disabled:i>=x.length-1,onClick:()=>w(E=>E+1),children:"›"})]}),r.length===0&&d&&e.jsx("span",{className:H.sampleBadge,children:u("printing.sampleData","Sample data")})]}),e.jsxs("div",{className:H.zoomBar,children:[e.jsx("button",{className:H.zoomBtn,onClick:()=>B(E=>Math.max(.3,E-.1)),children:"−"}),e.jsxs("span",{className:H.zoomLabel,children:[Math.round(I*100),"%"]}),e.jsx("button",{className:H.zoomBtn,onClick:()=>B(E=>Math.min(2.5,E+.1)),children:"+"}),e.jsx("button",{className:H.zoomBtn,onClick:()=>B(.8),title:u("printing.fit","Fit"),children:"⊡"})]}),e.jsxs("div",{style:{display:"flex",gap:8},children:[e.jsx("button",{className:H.printBtn,onClick:()=>o==null?void 0:o({copies:1,printerId:""}),children:u("printPreview.print","Print")}),h&&e.jsx("button",{type:"button",className:H.zoomBtn,onClick:L,"aria-label":u("close","Close"),title:u("close","Close"),children:e.jsx(_.NiceIcon,{name:"close",size:16})})]})]}),e.jsx("div",{className:H.canvas,children:e.jsx(Ra,{template:s,data:$,zoom:I})}),e.jsxs("div",{className:H.footerBar,children:[e.jsx("span",{children:s.name}),e.jsxs("span",{children:[s.paperSize," ·"," ",s.orientation==="portrait"?u("printing.portrait","Portrait"):u("printing.landscape","Landscape")]}),s.sections.reduce((E,O)=>E+O.fields.length,0)," ",u("printing.fields","fields")]})]});if(!h)return T;const z=e.jsx("div",{style:{position:"fixed",inset:0,background:"color-mix(in srgb, var(--nice-text-primary, #000) 50%, transparent)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,padding:24},onMouseDown:E=>{E.target===E.currentTarget&&L()},role:"presentation",children:e.jsx("div",{role:"dialog","aria-modal":"true",style:{background:"var(--nice-bg-elevated, var(--nice-bg-primary, #ffffff))",borderRadius:12,boxShadow:"0 20px 60px color-mix(in srgb, var(--nice-text-primary, #000) 30%, transparent)",maxWidth:"90vw",maxHeight:"90vh",overflow:"auto"},children:T})});return Oe.createPortal(z,document.body)},Aa="_root_1f4bm_1",Ma="_dark_1f4bm_23",Pa="_statsBar_1f4bm_37",Fa="_stat_1f4bm_37",Ha="_dot_1f4bm_75",Ga="_statPrinting_1f4bm_87",Oa="_statQueued_1f4bm_93",qa="_statDone_1f4bm_99",Wa="_statError_1f4bm_105",Ya="_toolbar_1f4bm_115",Ua="_filterTabs_1f4bm_139",Va="_filterTab_1f4bm_139",Xa="_filterTabActive_1f4bm_177",Ka="_filterCount_1f4bm_187",Ja="_bulkActions_1f4bm_211",Qa="_bulkCount_1f4bm_223",Za="_bulkBtn_1f4bm_231",ei="_bulkBtnRemove_1f4bm_255",ti="_jobList_1f4bm_273",si="_listHeader_1f4bm_281",ni="_headerLabel_1f4bm_313",ai="_jobRow_1f4bm_323",ii="_jobRowSelected_1f4bm_359",ri="_jobCheckbox_1f4bm_373",oi="_statusBadge_1f4bm_387",li="_pulse_1f4bm_1",ci="_jobInfo_1f4bm_479",di="_jobName_1f4bm_485",mi="_jobMeta_1f4bm_497",pi="_jobTime_1f4bm_513",ui="_jobDuration_1f4bm_519",hi="_jobError_1f4bm_525",_i="_progressBar_1f4bm_539",gi="_progressFill_1f4bm_553",bi="_copiesEditor_1f4bm_569",xi="_copiesBtn_1f4bm_581",yi="_copiesValue_1f4bm_621",fi="_jobActions_1f4bm_635",ji="_actionBtn_1f4bm_645",vi="_removeBtn_1f4bm_677",Ni="_emptyState_1f4bm_695",v={root:Aa,dark:Ma,statsBar:Pa,stat:Fa,dot:Ha,statPrinting:Ga,statQueued:Oa,statDone:qa,statError:Wa,toolbar:Ya,filterTabs:Ua,filterTab:Va,filterTabActive:Xa,filterCount:Ka,bulkActions:Ja,bulkCount:Qa,bulkBtn:Za,bulkBtnRemove:ei,jobList:ti,listHeader:si,headerLabel:ni,jobRow:ai,jobRowSelected:ii,jobCheckbox:ri,statusBadge:oi,"badge-queued":"_badge-queued_1f4bm_405","badge-printing":"_badge-printing_1f4bm_413",pulse:li,"badge-done":"_badge-done_1f4bm_423","badge-error":"_badge-error_1f4bm_431","badge-paused":"_badge-paused_1f4bm_439","badge-cancelled":"_badge-cancelled_1f4bm_447",jobInfo:ci,jobName:di,jobMeta:mi,jobTime:pi,jobDuration:ui,jobError:hi,progressBar:_i,progressFill:gi,copiesEditor:bi,copiesBtn:xi,copiesValue:yi,jobActions:fi,actionBtn:ji,removeBtn:vi,emptyState:Ni},wi=[],Ie={queued:"Queued",printing:"Printing",done:"Printed",error:"Error",paused:"Paused",cancelled:"Cancelled"},xe=(s,r)=>Ie[r]?s(`printing.status.${r}`,Ie[r]):r;function ki(s,r){try{return new Date(r).toLocaleTimeString(s,{hour:"2-digit",minute:"2-digit"})}catch{return r}}function Si(s){const r=Math.floor((Date.now()-new Date(s).getTime())/1e3);if(r<60)return`${r}s`;const d=Math.floor(r/60);if(d<60)return`${d}m ${r%60}s`;const o=Math.floor(d/60);return o<24?`${o}h ${d%60}m`:`${Math.floor(o/24)}d ${o%24}h`}const Ii=({jobs:s})=>{const{t:r}=_.useNiceTranslation(),d=s.filter(g=>g.status==="printing").length,o=s.filter(g=>g.status==="queued").length,k=s.filter(g=>g.status==="done").length,f=s.filter(g=>g.status==="error").length;return e.jsxs("div",{className:v.statsBar,children:[e.jsxs("span",{className:`${v.stat} ${v.statPrinting}`,children:[e.jsx("span",{className:v.dot}),r("printing.stats.active","Printing"),": ",e.jsx("strong",{children:d})]}),e.jsxs("span",{className:`${v.stat} ${v.statQueued}`,children:[e.jsx("span",{className:v.dot}),r("printing.stats.queued","In queue"),": ",e.jsx("strong",{children:o})]}),e.jsxs("span",{className:`${v.stat} ${v.statDone}`,children:[e.jsx("span",{className:v.dot}),r("printing.stats.done","Done"),": ",e.jsx("strong",{children:k})]}),f>0&&e.jsxs("span",{className:`${v.stat} ${v.statError}`,children:[e.jsx("span",{className:v.dot}),r("printing.stats.errors","Errors"),": ",e.jsx("strong",{children:f})]})]})},Ci=({job:s,index:r,total:d,printers:o,selected:k,onSelect:f,onUpdate:g,onRemove:h,onPrint:b,onReorder:N})=>{const{t:u,lang:i}=_.useNiceTranslation(),w=o.find(a=>a.id===s.options.printerId),I=r>0&&s.status==="queued",B=r<d-1&&s.status==="queued";return e.jsxs("div",{className:`${v.jobRow} ${k?v.jobRowSelected:""} ${v[`status-${s.status}`]??""}`,children:[e.jsx("input",{type:"checkbox",className:v.jobCheckbox,checked:k,onChange:()=>f(s.id)}),e.jsx("span",{className:`${v.statusBadge} ${v[`badge-${s.status}`]}`,children:xe(u,s.status)}),e.jsxs("div",{className:v.jobInfo,children:[e.jsx("div",{className:v.jobName,children:s.templateName??s.templateId}),e.jsxs("div",{className:v.jobMeta,children:[s.entityLabel&&e.jsx("span",{children:s.entityLabel}),w&&e.jsxs("span",{children:[e.jsx(_.NiceIcon,{name:"printer",size:12})," ",w.name]}),e.jsxs("span",{children:["×",s.options.copies]}),s.createdAt&&e.jsx("span",{className:v.jobTime,children:ki(i,s.createdAt)}),s.startedAt&&s.status!=="done"&&e.jsx("span",{className:v.jobDuration,children:Si(s.startedAt)})]}),s.status==="printing"&&s.progress!=null&&e.jsx("div",{className:v.progressBar,children:e.jsx("div",{className:v.progressFill,style:{width:`${s.progress}%`}})}),s.status==="error"&&s.errorMessage&&e.jsx("div",{className:v.jobError,children:s.errorMessage})]}),e.jsxs("div",{className:v.copiesEditor,children:[e.jsx("button",{className:v.copiesBtn,disabled:s.options.copies<=1,"aria-label":u("printing.copies.decrease","One copy fewer"),onClick:()=>g(s.id,{options:{...s.options,copies:s.options.copies-1}}),children:e.jsx(_.NiceIcon,{name:"minus",size:12})}),e.jsx("span",{className:v.copiesValue,children:s.options.copies}),e.jsx("button",{className:v.copiesBtn,"aria-label":u("printing.copies.increase","One copy more"),onClick:()=>g(s.id,{options:{...s.options,copies:s.options.copies+1}}),children:e.jsx(_.NiceIcon,{name:"plus",size:12})})]}),e.jsxs("div",{className:v.jobActions,children:[I&&e.jsx("button",{className:v.actionBtn,title:u("printing.action.moveUp","Move up"),onClick:()=>N(r,r-1),children:e.jsx(_.NiceIcon,{name:"arrow-up",size:14})}),B&&e.jsx("button",{className:v.actionBtn,title:u("printing.action.moveDown","Move down"),onClick:()=>N(r,r+1),children:e.jsx(_.NiceIcon,{name:"arrow-down",size:14})}),s.status==="queued"&&e.jsx("button",{className:v.actionBtn,title:u("printing.action.printNow","Print now"),onClick:()=>b(s.id),children:e.jsx(_.NiceIcon,{name:"play",size:14})}),s.status==="printing"&&e.jsx("button",{className:v.actionBtn,title:u("printing.action.pause","Pause"),onClick:()=>g(s.id,{status:"paused"}),children:e.jsx(_.NiceIcon,{name:"pause",size:14})}),s.status==="paused"&&e.jsx("button",{className:v.actionBtn,title:u("printing.action.resume","Resume"),onClick:()=>g(s.id,{status:"queued"}),children:e.jsx(_.NiceIcon,{name:"play",size:14})}),e.jsx("button",{className:`${v.actionBtn} ${v.removeBtn}`,title:u("printing.action.remove","Remove"),onClick:()=>h(s.id),children:e.jsx(_.NiceIcon,{name:"close",size:14})})]})]})},Bi=({jobs:s=wi,printers:r=[],onJobUpdate:d,onJobRemove:o,onJobReorder:k,onJobPrint:f,onBulkRemove:g,onBulkPrint:h,maxHeight:b=500,className:N,style:u,theme:i="light"})=>{const{t:w}=_.useNiceTranslation(),[I,B]=j.useState(new Set),[a,n]=j.useState("all"),c=a==="all"?s:s.filter(T=>T.status===a),p=j.useCallback(T=>{B(z=>{const E=new Set(z);return E.has(T)?E.delete(T):E.add(T),E})},[]),L=j.useCallback(()=>{I.size===c.length?B(new Set):B(new Set(c.map(T=>T.id)))},[c,I.size]),x=j.useCallback(()=>{g==null||g(Array.from(I)),B(new Set)},[I,g]),$=j.useCallback(()=>{h==null||h(Array.from(I)),B(new Set)},[I,h]);return e.jsxs("div",{className:`${v.root} ${i==="dark"?v.dark:""} ${N??""}`,style:u,children:[e.jsx(Ii,{jobs:s}),e.jsxs("div",{className:v.toolbar,children:[e.jsx("div",{className:v.filterTabs,children:["all","queued","printing","done","error"].map(T=>e.jsxs("button",{className:`${v.filterTab} ${a===T?v.filterTabActive:""}`,onClick:()=>n(T),children:[T==="all"?w("printing.filter.all","All"):xe(w,T),e.jsx("span",{className:v.filterCount,children:T==="all"?s.length:s.filter(z=>z.status===T).length})]},T))}),I.size>0&&e.jsxs("div",{className:v.bulkActions,children:[e.jsxs("span",{className:v.bulkCount,children:[I.size," ",w("printing.bulk.selected","selected")]}),h&&e.jsxs("button",{className:v.bulkBtn,onClick:$,children:[e.jsx(_.NiceIcon,{name:"printer",size:14})," ",w("printing.bulk.print","Print selected")]}),g&&e.jsxs("button",{className:`${v.bulkBtn} ${v.bulkBtnRemove}`,onClick:x,children:[e.jsx(_.NiceIcon,{name:"trash",size:14})," ",w("printing.bulk.remove","Remove selected")]})]})]}),e.jsx("div",{className:v.jobList,style:{maxHeight:b},children:c.length===0?e.jsx("div",{className:v.emptyState,children:a==="all"?w("printing.empty.queue","No jobs in the queue"):`${w("printing.empty.filtered","No jobs with status")} "${xe(w,a)}"`}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:v.listHeader,children:[e.jsx("input",{type:"checkbox",onChange:L,checked:I.size===c.length&&c.length>0}),e.jsx("span",{className:v.headerLabel,children:w("printing.col.job","Job")}),e.jsx("span",{className:v.headerLabel,children:w("printing.col.copies","Copies")}),e.jsx("span",{className:v.headerLabel,children:w("printing.col.actions","Actions")})]}),c.map((T,z)=>e.jsx(Ci,{job:T,index:s.indexOf(T),total:s.length,printers:r,selected:I.has(T.id),onSelect:p,onUpdate:d,onRemove:o,onPrint:f,onReorder:k},T.id))]})})]})},Li="_container_1f76z_1",Ti="_buttonGroup_1f76z_19",zi="_trigger_1f76z_31",Di="_triggerDisabled_1f76z_57",$i="_mainAction_1f76z_151",Ri="_dropdownToggle_1f76z_175",Ei="_chevron_1f76z_201",Ai="_chevronUp_1f76z_211",Mi="_dropdown_1f76z_175",Pi="_dark_1f76z_245",Fi="_section_1f76z_257",Hi="_sectionLabel_1f76z_263",Gi="_divider_1f76z_283",Oi="_copiesRow_1f76z_301",qi="_copiesBtn_1f76z_311",Wi="_copiesValue_1f76z_351",Yi="_printerSelect_1f76z_375",Ui="_printerStatus_1f76z_415",Vi="_printerDot_1f76z_429",Xi="_printerStatusLabel_1f76z_463",Ki="_submitBtn_1f76z_473",Ji="_spinner_1f76z_515",Qi="_spin_1f76z_515",R={container:Li,buttonGroup:Ti,trigger:zi,triggerDisabled:Di,"variant-primary":"_variant-primary_1f76z_69","variant-secondary":"_variant-secondary_1f76z_83","variant-ghost":"_variant-ghost_1f76z_99","size-sm":"_size-sm_1f76z_117","size-md":"_size-md_1f76z_127","size-lg":"_size-lg_1f76z_137",mainAction:$i,dropdownToggle:Ri,chevron:Ei,chevronUp:Ai,dropdown:Mi,dark:Pi,section:Fi,sectionLabel:Hi,divider:Gi,copiesRow:Oi,copiesBtn:qi,copiesValue:Wi,printerSelect:Yi,printerStatus:Ui,printerDot:Vi,"dot-ready":"_dot-ready_1f76z_439","dot-busy":"_dot-busy_1f76z_445","dot-offline":"_dot-offline_1f76z_451","dot-error":"_dot-error_1f76z_457",printerStatusLabel:Xi,submitBtn:Ki,spinner:Ji,spin:Qi},Zi=({onPrint:s,printers:r=[],defaultPrinterId:d,defaultCopies:o=1,disabled:k=!1,loading:f=!1,variant:g="primary",size:h="md",label:b,className:N,style:u,theme:i="light"})=>{var X;const{t:w}=_.useNiceTranslation(),I=b??w("printing.print","Print"),[B,a]=j.useState(!1),[n,c]=j.useState(o),[p,L]=j.useState(d??((X=r[0])==null?void 0:X.id)??""),x=j.useRef(null);j.useEffect(()=>{if(!B)return;const y=Y=>{x.current&&!x.current.contains(Y.target)&&a(!1)};return document.addEventListener("mousedown",y),()=>document.removeEventListener("mousedown",y)},[B]);const $=j.useCallback(()=>{s({copies:n,printerId:p}),a(!1)},[n,p,s]),T=j.useCallback(()=>c(y=>Math.min(99,y+1)),[]),z=j.useCallback(()=>c(y=>Math.max(1,y-1)),[]),E=[R.container,i==="dark"?R.dark:"",N??""].filter(Boolean).join(" "),O=[R.trigger,R[`variant-${g}`],R[`size-${h}`],k||f?R.triggerDisabled:""].filter(Boolean).join(" ");return e.jsxs("div",{ref:x,className:E,style:u,children:[e.jsxs("div",{className:R.buttonGroup,children:[e.jsxs("button",{className:`${O} ${R.mainAction}`,disabled:k||f,onClick:$,"aria-label":I,children:[f?e.jsx("span",{className:R.spinner}):e.jsx(_.NiceIcon,{name:"printer",size:16}),e.jsx("span",{children:I})]}),e.jsx("button",{className:`${O} ${R.dropdownToggle}`,disabled:k||f,onClick:()=>a(y=>!y),"aria-label":w("printing.options","Print options"),"aria-expanded":B,children:e.jsx("span",{className:`${R.chevron} ${B?R.chevronUp:""}`,children:e.jsx(_.NiceIcon,{name:"chevron-down",size:12})})})]}),B&&e.jsxs("div",{className:R.dropdown,children:[e.jsxs("div",{className:R.section,children:[e.jsx("label",{className:R.sectionLabel,children:w("printing.copies.label","Copies")}),e.jsxs("div",{className:R.copiesRow,children:[e.jsx("button",{className:R.copiesBtn,onClick:z,disabled:n<=1,"aria-label":w("printing.copies.decrease","One copy fewer"),children:e.jsx(_.NiceIcon,{name:"minus",size:12})}),e.jsx("span",{className:R.copiesValue,children:n}),e.jsx("button",{className:R.copiesBtn,onClick:T,disabled:n>=99,"aria-label":w("printing.copies.increase","One copy more"),children:e.jsx(_.NiceIcon,{name:"plus",size:12})})]})]}),e.jsx("div",{className:R.divider}),r.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:R.section,children:[e.jsx("label",{className:R.sectionLabel,children:w("printing.printer","Printer")}),e.jsx("select",{className:R.printerSelect,value:p,onChange:y=>L(y.target.value),children:r.map(y=>e.jsxs("option",{value:y.id,disabled:y.status==="offline"||!y.isOnline&&y.status==null,children:[y.name," ",y.status==="offline"||!y.isOnline&&y.status==null?w("printing.offline","(Offline)"):y.status==="busy"?`(${w("printing.printerBusyLabel","Busy")})`:""]},y.id))}),r.find(y=>y.id===p)&&e.jsx("div",{className:R.printerStatus,children:(()=>{const y=r.find(me=>me.id===p),Y=y.status??(y.isOnline?"ready":"offline");return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:`${R.printerDot} ${R[`dot-${Y}`]}`}),e.jsx("span",{className:R.printerStatusLabel,children:Y==="ready"?w("printing.printerReady","Ready"):Y==="busy"?w("printing.printerBusyLabel","Busy"):Y==="offline"?w("printing.offline2","Offline"):w("printing.printerError","Error")})]})})()})]}),e.jsx("div",{className:R.divider})]}),e.jsx("div",{className:R.section,children:e.jsx("button",{className:R.submitBtn,onClick:$,disabled:k||f||r.length>0&&(()=>{const y=r.find(Y=>Y.id===p);return y!=null&&(y.status==="offline"||!y.isOnline&&y.status==null)})(),children:f?w("printing.printing","Printing…"):e.jsxs(e.Fragment,{children:[e.jsx(_.NiceIcon,{name:"printer",size:14})," ",I,n>1?` (${n})`:""]})})})]})]})};exports.NicePrintButton=Zi;exports.NicePrintPreview=Ea;exports.NicePrintQueue=Bi;exports.NiceTemplateBrowser=ga;exports.NiceTemplateEditor=En;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("@nice2dev/ui"),f=require("react"),Oe=require("react-dom"),qe="_root_19f1m_3",We="_dark_19f1m_27",Ye="_toolbar_19f1m_39",Ue="_toolbarGroup_19f1m_75",Ve="_toolbarBtn_19f1m_107",Ke="_toolbarBtnActive_19f1m_171",Xe="_toolbarBtnDanger_19f1m_195",Je="_toolbarSelect_19f1m_207",Ze="_toolbarSep_19f1m_237",Qe="_insertWrapper_19f1m_263",et="_insertBtn_19f1m_271",tt="_insertDropdown_19f1m_293",st="_insertCategory_19f1m_333",nt="_insertItem_19f1m_351",at="_insertIcon_19f1m_395",it="_zoomSelect_19f1m_409",rt="_saveBtn_19f1m_441",ot="_editorBody_19f1m_477",lt="_leftPanel_19f1m_493",ct="_leftTabs_19f1m_523",dt="_leftTab_19f1m_523",mt="_leftTabActive_19f1m_601",pt="_leftTabIcon_19f1m_621",ut="_leftTabLabel_19f1m_629",ht="_leftContent_19f1m_639",gt="_panelHeader_19f1m_653",_t="_panelHeaderIcon_19f1m_677",bt="_panelHeaderName_19f1m_685",xt="_searchBox_19f1m_699",yt="_searchInput_19f1m_707",ft="_fieldList_19f1m_753",vt="_fieldItem_19f1m_763",jt="_fieldItemIcon_19f1m_807",Nt="_fieldItemInfo_19f1m_821",wt="_fieldItemLabel_19f1m_831",kt="_fieldItemPath_19f1m_847",St="_fieldItemType_19f1m_863",It="_layerList_19f1m_883",Ct="_layerItem_19f1m_895",Bt="_layerItemSelected_19f1m_931",Lt="_layerIcon_19f1m_949",Tt="_layerName_19f1m_961",zt="_layerActions_19f1m_977",Dt="_layerBtn_19f1m_999",Rt="_wmList_19f1m_1031",$t="_wmItem_19f1m_1039",Pt="_wmRow_19f1m_1065",At="_wmLabel_19f1m_1079",Et="_wmInput_19f1m_1091",Mt="_wmInputNum_19f1m_1123",Ft="_wmSelect_19f1m_1143",Ht="_wmSlider_19f1m_1175",Gt="_wmValue_19f1m_1185",Ot="_wmUnit_19f1m_1199",qt="_wmDelete_19f1m_1209",Wt="_addBtn_19f1m_1241",Yt="_settingsForm_19f1m_1277",Ut="_settingsRow_19f1m_1285",Vt="_settingsLabel_19f1m_1299",Kt="_settingsInput_19f1m_1311",Xt="_settingsInputNum_19f1m_1343",Jt="_settingsTextarea_19f1m_1375",Zt="_settingsDivider_19f1m_1409",Qt="_settingsUnit_19f1m_1429",es="_emptyMsg_19f1m_1441",ts="_canvasArea_19f1m_1459",ss="_testDataBar_19f1m_1485",ns="_testDataLabel_19f1m_1517",as="_testDataSelect_19f1m_1527",is="_rulerWrapper_19f1m_1547",rs="_rulerCorner_19f1m_1563",os="_ruler_19f1m_1547",ls="_ruler_h_19f1m_1621",cs="_ruler_v_19f1m_1631",ds="_rulerTick_19f1m_1651",ms="_rulerTickMajor_19f1m_1691",ps="_rulerLabel_19f1m_1711",us="_paperScroll_19f1m_1749",hs="_paperShadow_19f1m_1767",gs="_marginGuide_19f1m_1803",_s="_watermark_19f1m_1819",bs="_sectionCanvas_19f1m_1845",xs="_sectionCanvasOver_19f1m_1859",ys="_sectionTypeChip_19f1m_1867",fs="_sectionResizeBar_19f1m_1899",vs="_sectionResizeGrip_19f1m_1933",js="_fieldImagePlaceholder_19f1m_1949",Ns="_fieldBarcodePlaceholder_19f1m_1971",ws="_fieldSignaturePlaceholder_19f1m_1999",ks="_resizeHandle_19f1m_2031",Ss="_handle_n_19f1m_2051",Is="_handle_s_19f1m_2063",Cs="_handle_e_19f1m_2075",Bs="_handle_w_19f1m_2087",Ls="_handle_ne_19f1m_2099",Ts="_handle_nw_19f1m_2109",zs="_handle_se_19f1m_2119",Ds="_handle_sw_19f1m_2129",Rs="_rightPanel_19f1m_2143",$s="_rightTabs_19f1m_2173",Ps="_rightTab_19f1m_2173",As="_rightTabActive_19f1m_2243",Es="_propsBody_19f1m_2255",Ms="_propsEmpty_19f1m_2267",Fs="_propsEmptyIcon_19f1m_2289",Hs="_propsEmptyText_19f1m_2299",Gs="_posGrid_19f1m_2311",Os="_posCell_19f1m_2325",qs="_posLabel_19f1m_2337",Ws="_posInput_19f1m_2349",Ys="_posUnit_19f1m_2391",Us="_snapSection_19f1m_2403",Vs="_snapTitle_19f1m_2411",Ks="_snapRow_19f1m_2429",Xs="_snapBtn_19f1m_2439",Js="_styleGroup_19f1m_2473",Zs="_styleGroupTitle_19f1m_2481",Qs="_styleRow_19f1m_2511",en="_styleLabel_19f1m_2525",tn="_styleSelect_19f1m_2539",sn="_styleSelectFull_19f1m_2569",nn="_styleSelectSm_19f1m_2601",an="_styleSelectXs_19f1m_2621",rn="_styleInput_19f1m_2653",on="_styleInputFull_19f1m_2685",ln="_styleUnit_19f1m_2717",cn="_styleValue_19f1m_2729",dn="_toggleGroup_19f1m_2743",mn="_toggleBtn_19f1m_2753",pn="_toggleBtnActive_19f1m_2787",un="_colorPicker_19f1m_2801",hn="_colorHex_19f1m_2819",gn="_clearBtn_19f1m_2853",_n="_sliderInput_19f1m_2885",bn="_conditionalHint_19f1m_2897",xn="_clearConditionalBtn_19f1m_2929",yn="_shortcutGrid_19f1m_2961",fn="_shortcutChip_19f1m_2975",vn="_shortcutKeys_19f1m_3007",jn="_shortcutLabel_19f1m_3027",t={root:qe,dark:We,toolbar:Ye,toolbarGroup:Ue,toolbarBtn:Ve,toolbarBtnActive:Ke,toolbarBtnDanger:Xe,toolbarSelect:Je,toolbarSep:Ze,insertWrapper:Qe,insertBtn:et,insertDropdown:tt,insertCategory:st,insertItem:nt,insertIcon:at,zoomSelect:it,saveBtn:rt,editorBody:ot,leftPanel:lt,leftTabs:ct,leftTab:dt,leftTabActive:mt,leftTabIcon:pt,leftTabLabel:ut,leftContent:ht,panelHeader:gt,panelHeaderIcon:_t,panelHeaderName:bt,searchBox:xt,searchInput:yt,fieldList:ft,fieldItem:vt,fieldItemIcon:jt,fieldItemInfo:Nt,fieldItemLabel:wt,fieldItemPath:kt,fieldItemType:St,layerList:It,layerItem:Ct,layerItemSelected:Bt,layerIcon:Lt,layerName:Tt,layerActions:zt,layerBtn:Dt,wmList:Rt,wmItem:$t,wmRow:Pt,wmLabel:At,wmInput:Et,wmInputNum:Mt,wmSelect:Ft,wmSlider:Ht,wmValue:Gt,wmUnit:Ot,wmDelete:qt,addBtn:Wt,settingsForm:Yt,settingsRow:Ut,settingsLabel:Vt,settingsInput:Kt,settingsInputNum:Xt,settingsTextarea:Jt,settingsDivider:Zt,settingsUnit:Qt,emptyMsg:es,canvasArea:ts,testDataBar:ss,testDataLabel:ns,testDataSelect:as,rulerWrapper:is,rulerCorner:rs,ruler:os,ruler_h:ls,ruler_v:cs,rulerTick:ds,rulerTickMajor:ms,rulerLabel:ps,paperScroll:us,paperShadow:hs,marginGuide:gs,watermark:_s,sectionCanvas:bs,sectionCanvasOver:xs,sectionTypeChip:ys,sectionResizeBar:fs,sectionResizeGrip:vs,fieldImagePlaceholder:js,fieldBarcodePlaceholder:Ns,fieldSignaturePlaceholder:ws,resizeHandle:ks,handle_n:Ss,handle_s:Is,handle_e:Cs,handle_w:Bs,handle_ne:Ls,handle_nw:Ts,handle_se:zs,handle_sw:Ds,rightPanel:Rs,rightTabs:$s,rightTab:Ps,rightTabActive:As,propsBody:Es,propsEmpty:Ms,propsEmptyIcon:Fs,propsEmptyText:Hs,posGrid:Gs,posCell:Os,posLabel:qs,posInput:Ws,posUnit:Ys,snapSection:Us,snapTitle:Vs,snapRow:Ks,snapBtn:Xs,styleGroup:Js,styleGroupTitle:Zs,styleRow:Qs,styleLabel:en,styleSelect:tn,styleSelectFull:sn,styleSelectSm:nn,styleSelectXs:an,styleInput:rn,styleInputFull:on,styleUnit:ln,styleValue:cn,toggleGroup:dn,toggleBtn:mn,toggleBtnActive:pn,colorPicker:un,colorHex:hn,clearBtn:gn,sliderInput:_n,conditionalHint:bn,clearConditionalBtn:xn,shortcutGrid:yn,shortcutChip:fn,shortcutKeys:vn,shortcutLabel:jn},G=3.78,je={A3:[297,420],A4:[210,297],A5:[148,210],A6:[105,148],Letter:[216,279],Legal:[216,356],Tabloid:[279,432],custom:[210,297]},Nn=["sans-serif","serif","monospace","Arial","Times New Roman","Courier New","Georgia","Verdana","Tahoma"],Ne=[6,7,8,9,10,11,12,14,16,18,20,24,28,32,36,48,60,72],ce={text:"type",number:"hash",currency:"dollar",date:"calendar",datetime:"clock",boolean:"check-square",image:"image",barcode:"barcode",qr:"qr-code",signature:"pen",static_text:"type",static_image:"image",line:"line",rect:"square",page_number:"hash",total_pages:"layers",print_date:"calendar"},de={text:"Text",number:"Number",currency:"Currency",date:"Date",datetime:"Date and time",boolean:"Yes/No",image:"Image",barcode:"Barcode",qr:"QR",signature:"Signature",static_text:"Static text",static_image:"Static image",line:"Line",rect:"Rectangle",page_number:"Page number",total_pages:"Total pages",print_date:"Print date"},be=(s,r)=>de[r]?s(`printing.fieldType.${r}`,de[r]):r;function wn(s,r){switch(r.type){case"UPDATE":return{past:[...s.past.slice(-50),s.present],present:r.payload,future:[]};case"UNDO":return s.past.length?{past:s.past.slice(0,-1),present:s.past[s.past.length-1],future:[s.present,...s.future]}:s;case"REDO":return s.future.length?{past:[...s.past,s.present],present:s.future[0],future:s.future.slice(1)}:s;default:return s}}const te="#000000",pe="#94a3b8";function ie(){return`f-${Date.now()}-${Math.floor(Math.random()*1e3)}`}function we(s,r){const c={id:ie(),name:(r==null?void 0:r.label)??de[s]??s,label:(r==null?void 0:r.label)??de[s]??s,type:s,dataPath:(r==null?void 0:r.path)??"",fallback:s==="static_text"?"Static text":void 0,format:s==="date"||s==="datetime"?"DD.MM.YYYY":void 0,position:{x:15,y:15,width:s==="line"?80:60,height:s==="line"?1:s==="image"?30:8},style:{fontSize:10,color:te,fontFamily:"sans-serif"}};return s==="rect"&&(c.style.backgroundColor="var(--nice-bg-secondary, #f1f5f9)"),s==="line"&&(c.style={...c.style,borderWidth:.5,borderColor:te,borderStyle:"solid"}),c}const ke=({lengthMm:s,zoom:r,orientation:c})=>{const o=[],k=r<.6?20:r<1?10:5;for(let v=0;v<=s;v+=k){const _=v*r*G,g=v%(k*2)===0;o.push(e.jsx("div",{className:`${t.rulerTick} ${g?t.rulerTickMajor:""}`,style:c==="h"?{left:_}:{top:_},children:g&&e.jsx("span",{className:t.rulerLabel,children:v})},v))}return e.jsx("div",{className:`${t.ruler} ${t[`ruler_${c}`]}`,children:o})},kn=["n","s","e","w","ne","nw","se","sw"],Sn=({onResizeStart:s})=>e.jsx(e.Fragment,{children:kn.map(r=>e.jsx("div",{className:`${t.resizeHandle} ${t[`handle_${r}`]}`,onMouseDown:c=>{c.stopPropagation(),s(r,c)}},r))});function In(s,r){if(s.type==="static_text")return s.fallback??"Text";if(s.type==="page_number")return"1";if(s.type==="total_pages")return"3";if(s.type==="print_date")return new Date().toLocaleDateString("pl-PL");if(r&&s.dataPath){const c=s.dataPath.split(".").reduce((o,k)=>o&&typeof o=="object"?o[k]:null,r);if(c!=null)return String(c)}return s.label?`{${s.label}}`:`{${s.dataPath}}`}const Cn=({field:s,zoom:r,selected:c,sampleData:o,onClick:k,onDragStart:v,onResizeStart:_,readOnly:g})=>{const{t:y}=h.useNiceTranslation(),N=s.position,p=s.style,i=d=>d*r*G,w=s.type==="line",I=s.type==="rect",B=s.type==="image"||s.type==="static_image",a=s.type==="barcode"||s.type==="qr",n={position:"absolute",left:i(N.x),top:i(N.y),width:i(N.width),height:i(N.height),zIndex:N.zIndex??1,transform:p.rotation?`rotate(${p.rotation}deg)`:void 0,boxSizing:"border-box",overflow:"hidden",...!w&&!I?{fontSize:(p.fontSize??10)*r,fontFamily:p.fontFamily??"sans-serif",fontWeight:p.fontWeight??"normal",fontStyle:p.fontStyle??"normal",color:p.color??te,textAlign:p.textAlign??"left",lineHeight:p.lineHeight??1.4,letterSpacing:p.letterSpacing?`${p.letterSpacing}em`:void 0,padding:p.padding?i(p.padding):0}:{},backgroundColor:p.backgroundColor,borderWidth:p.borderWidth??0,borderColor:p.borderColor??"transparent",borderStyle:p.borderStyle??"solid",borderRadius:p.borderRadius,opacity:p.opacity,outline:c?"1.5px solid var(--nice-primary-hover, #2563eb)":"1px dashed transparent",outlineOffset:1,cursor:g?"default":"move"};return e.jsxs("div",{role:"presentation",style:n,onClick:k,onMouseDown:g?void 0:v,children:[w?e.jsx("div",{style:{width:"100%",borderBottom:`${(p.borderWidth??.5)*r}px ${p.borderStyle??"solid"} ${p.borderColor??te}`}}):I?null:B?e.jsx("div",{className:t.fieldImagePlaceholder,children:e.jsx(h.NiceIcon,{name:"image",size:24})}):a?e.jsxs("div",{className:t.fieldBarcodePlaceholder,children:[e.jsx(h.NiceIcon,{name:s.type==="qr"?"qr-code":"barcode",size:14})," ",s.type==="qr"?"QR":y("templateEditor.barcode","Barcode")]}):s.type==="signature"?e.jsxs("div",{className:t.fieldSignaturePlaceholder,children:[e.jsx(h.NiceIcon,{name:"pen",size:14})," ",s.label]}):e.jsx("span",{style:{display:"block",width:"100%"},children:In(s,o)}),c&&!g&&e.jsx(Sn,{onResizeStart:_})]})},Bn=({section:s,zoom:r,paperWidthMm:c,selectedIds:o,sampleData:k,readOnly:v,showGrid:_,onFieldClick:g,onFieldDragStart:y,onResizeStart:N,onSectionHeightChange:p,onDropField:i})=>{const w=(s.heightMm??(s.type==="body"?200:40))*r*G,I=c*r*G,[B,a]=f.useState(!1),n={header:"rgba(219,234,254,0.35)",footer:"rgba(220,252,231,0.35)",background:"rgba(254,249,195,0.35)",body:"transparent"};return e.jsxs("div",{className:`${t.sectionCanvas} ${B?t.sectionCanvasOver:""}`,style:{width:I,height:w,position:"relative",background:n[s.type]??"transparent",backgroundImage:_?`repeating-linear-gradient(0deg, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 0, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 1px, transparent 1px, transparent ${5*r*G}px),
|
|
2
|
+
repeating-linear-gradient(90deg, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 0, var(--nice-overlay-15, rgba(148, 163, 184, 0.15)) 1px, transparent 1px, transparent ${5*r*G}px)`:void 0},onDragOver:d=>{d.preventDefault(),a(!0)},onDragLeave:()=>a(!1),onDrop:d=>{d.preventDefault(),a(!1);const u=d.dataTransfer.getData("fieldPath");if(!u)return;const L=d.currentTarget.getBoundingClientRect(),x=(d.clientX-L.left)/(r*G),R=(d.clientY-L.top)/(r*G);i(s.id,u,Math.max(0,x),Math.max(0,R))},children:[e.jsx("div",{className:t.sectionTypeChip,children:s.type}),s.fields.map(d=>e.jsx(Cn,{field:d,zoom:r,selected:o.has(d.id),sampleData:k,readOnly:v,onClick:u=>g(d.id,u),onDragStart:u=>y(d.id,u),onResizeStart:(u,L)=>N(d.id,u,L)},d.id)),!v&&s.type!=="body"&&e.jsx("div",{className:t.sectionResizeBar,onMouseDown:d=>{d.preventDefault();const u=d.clientY,L=s.heightMm??40,x=T=>{const z=(T.clientY-u)/(r*G);p(s.id,Math.max(10,L+z))},R=()=>{document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",R)};document.addEventListener("mousemove",x),document.addEventListener("mouseup",R)},children:e.jsx("div",{className:t.sectionResizeGrip})})]})},ae=({keys:s,label:r})=>e.jsxs("div",{className:t.shortcutChip,children:[e.jsx("span",{className:t.shortcutKeys,children:s}),e.jsx("span",{className:t.shortcutLabel,children:r})]}),Ln=[{id:"fields",icon:"list",key:"printing.editor.tabFields",label:"Fields"},{id:"layers",icon:"layers",key:"printing.editor.tabLayers",label:"Layers"},{id:"watermarks",icon:"droplet",key:"printing.editor.tabWatermarks",label:"Watermarks"},{id:"signatures",icon:"pen",key:"printing.editor.tabSignatures",label:"Signatures"},{id:"settings",icon:"settings",key:"printing.editor.tabSettings",label:"Settings"}],Tn=[{id:"position",key:"printing.editor.tabPosition",label:"Position"},{id:"style",key:"printing.editor.tabStyle",label:"Style"},{id:"data",key:"printing.editor.tabData",label:"Data"},{id:"conditional",key:"printing.editor.tabConditional",label:"Conditions"}],zn=({tpl:s,zoom:r,canUndo:c,canRedo:o,showGrid:k,showRulers:v,readOnly:_,selectedCount:g,onPaperChange:y,onZoom:N,onUndo:p,onRedo:i,onToggleGrid:w,onToggleRulers:I,onInsert:B,onDelete:a,onDuplicate:n,onAlignH:d,onAlignV:u,onBringForward:L,onSendBackward:x,onSave:R})=>{const{t:T}=h.useNiceTranslation(),{t:z}=h.useNiceTranslation(),[O,U]=f.useState(!1),P=[.5,.75,1,1.25,1.5,2];return e.jsxs("div",{className:t.toolbar,children:[e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("select",{className:t.toolbarSelect,value:s.paperSize,onChange:b=>y(b.target.value,s.orientation),children:["A4","A5","A3","Letter","Legal","Tabloid","custom"].map(b=>e.jsx("option",{value:b,children:b},b))}),e.jsx("button",{className:`${t.toolbarBtn} ${s.orientation==="portrait"?t.toolbarBtnActive:""}`,onClick:()=>y(s.paperSize,"portrait"),title:T("templateEditor.portrait","Portrait"),children:e.jsx(h.NiceIcon,{name:"file",size:14})}),e.jsx("button",{className:`${t.toolbarBtn} ${s.orientation==="landscape"?t.toolbarBtnActive:""}`,onClick:()=>y(s.paperSize,"landscape"),title:T("templateEditor.landscape","Landscape"),children:e.jsx(h.NiceIcon,{name:"file",size:14,style:{transform:"rotate(90deg)"}})})]}),!_&&e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,disabled:!c,onClick:p,title:`${z("printing.editor.undo","Undo")} (Ctrl+Z)`,children:e.jsx(h.NiceIcon,{name:"undo",size:14})}),e.jsx("button",{className:t.toolbarBtn,disabled:!o,onClick:i,title:`${z("printing.editor.redo","Redo")} (Ctrl+Y)`,children:e.jsx(h.NiceIcon,{name:"redo",size:14})})]}),!_&&e.jsxs("div",{className:t.insertWrapper,children:[e.jsxs("button",{className:`${t.toolbarBtn} ${t.insertBtn}`,onClick:()=>U(b=>!b),children:[e.jsx(h.NiceIcon,{name:"plus",size:14})," ",z("printing.editor.insert","Insert")," ",e.jsx(h.NiceIcon,{name:"chevron-down",size:12})]}),O&&e.jsxs("div",{className:t.insertDropdown,onMouseLeave:()=>U(!1),children:[e.jsx("div",{className:t.insertCategory,children:z("printing.editor.dataFields","Data fields")}),["text","number","currency","date","image","barcode","qr"].map(b=>e.jsxs("button",{className:t.insertItem,onClick:()=>{B(b),U(!1)},children:[e.jsx("span",{className:t.insertIcon,children:ce[b]}),be(z,b)]},b)),e.jsx("div",{className:t.insertCategory,children:T("templateEditor.staticElements","Static elements")}),["static_text","static_image","line","rect","page_number","total_pages","print_date"].map(b=>e.jsxs("button",{className:t.insertItem,onClick:()=>{B(b),U(!1)},children:[e.jsx("span",{className:t.insertIcon,children:ce[b]}),be(z,b)]},b)),e.jsx("div",{className:t.insertCategory,children:T("templateEditor.special","Special")}),e.jsxs("button",{className:t.insertItem,onClick:()=>{B("watermark"),U(!1)},children:[e.jsx("span",{className:t.insertIcon,children:e.jsx(h.NiceIcon,{name:"droplet",size:14})}),z("printing.editor.watermark","Watermark")]}),e.jsxs("button",{className:t.insertItem,onClick:()=>{B("signature"),U(!1)},children:[e.jsx("span",{className:t.insertIcon,children:e.jsx(h.NiceIcon,{name:"pen",size:14})}),z("printing.editor.signature","Signature")]})]})]}),!_&&g>0&&e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,onClick:n,title:`${z("printing.editor.duplicate","Duplicate")} (Ctrl+D)`,children:e.jsx(h.NiceIcon,{name:"copy",size:14})}),e.jsx("button",{className:`${t.toolbarBtn} ${t.toolbarBtnDanger}`,onClick:a,title:`${z("printing.action.remove","Remove")} (Del)`,children:e.jsx(h.NiceIcon,{name:"trash",size:14})}),e.jsx("span",{className:t.toolbarSep}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>d("left"),title:z("printing.editor.alignLeft","Align left"),children:e.jsx(h.NiceIcon,{name:"align-left",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>d("center"),title:z("printing.editor.alignCenter","Align centre"),children:e.jsx(h.NiceIcon,{name:"align-center",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>d("right"),title:z("printing.editor.alignRight","Align right"),children:e.jsx(h.NiceIcon,{name:"align-right",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>u("top"),title:z("printing.editor.alignTop","Align top"),children:"⊤"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>u("center"),title:z("printing.editor.alignMiddle","Align middle"),children:"⊕"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>u("bottom"),title:z("printing.editor.alignBottom","Align bottom"),children:"⊥"}),e.jsx("span",{className:t.toolbarSep}),e.jsx("button",{className:t.toolbarBtn,onClick:L,title:T("templateEditor.bringForward","Bring forward"),children:e.jsx(h.NiceIcon,{name:"arrow-up",size:14})}),e.jsx("button",{className:t.toolbarBtn,onClick:x,title:z("printing.editor.sendBackward","Send backward"),children:e.jsx(h.NiceIcon,{name:"arrow-down",size:14})})]}),e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:`${t.toolbarBtn} ${k?t.toolbarBtnActive:""}`,onClick:w,title:z("printing.editor.grid","Grid"),children:"⊞"}),e.jsx("button",{className:`${t.toolbarBtn} ${v?t.toolbarBtnActive:""}`,onClick:I,title:z("printing.editor.rulers","Rulers"),children:e.jsx(h.NiceIcon,{name:"ruler",size:14})})]}),e.jsxs("div",{className:t.toolbarGroup,children:[e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(Math.max(.25,r-.1)),children:"−"}),e.jsx("select",{className:t.zoomSelect,value:P.includes(r)?r:"",onChange:b=>N(+b.target.value),children:P.map(b=>e.jsxs("option",{value:b,children:[Math.round(b*100),"%"]},b))}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(Math.min(3,r+.1)),children:"+"}),e.jsx("button",{className:t.toolbarBtn,onClick:()=>N(1),title:"100%",children:"⊡"})]}),!_&&R&&e.jsxs("button",{className:t.saveBtn,onClick:R,children:[e.jsx(h.NiceIcon,{name:"save",size:14})," ",z("printing.editor.save","Save")]})]})},Dn=({activeTab:s,onTabChange:r,schema:c,tpl:o,allFields:k,selectedIds:v,onInsertSchemaField:_,onSelectField:g,onUpdateTpl:y,onReorderField:N})=>{const{t:p}=h.useNiceTranslation(),{t:i}=h.useNiceTranslation(),[w,I]=f.useState(""),B=c==null?void 0:c.fields.filter(a=>a.label.toLowerCase().includes(w.toLowerCase())||a.path.toLowerCase().includes(w.toLowerCase()));return e.jsxs("div",{className:t.leftPanel,children:[e.jsx("div",{className:t.leftTabs,children:Ln.map(a=>e.jsxs("button",{className:`${t.leftTab} ${s===a.id?t.leftTabActive:""}`,onClick:()=>r(a.id),title:i(a.key,a.label),children:[e.jsx("span",{className:t.leftTabIcon,children:e.jsx(h.NiceIcon,{name:a.icon,size:16})}),e.jsx("span",{className:t.leftTabLabel,children:i(a.key,a.label)})]},a.id))}),e.jsxs("div",{className:t.leftContent,children:[s==="fields"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:i("printing.editor.dataFields","Data fields")}),e.jsx("div",{className:t.searchBox,children:e.jsx("input",{className:t.searchInput,placeholder:i("printing.editor.search","Search…"),value:w,onChange:a=>I(a.target.value)})}),c?e.jsxs("div",{className:t.fieldList,children:[(B??[]).map(a=>e.jsxs("div",{role:"button",tabIndex:0,onKeyDown:h.clickOnActivationKey,className:t.fieldItem,draggable:!0,onDragStart:n=>{n.dataTransfer.setData("fieldPath",a.path),n.dataTransfer.setData("fieldLabel",a.label),n.dataTransfer.setData("fieldType",a.type)},onClick:()=>_(a),children:[e.jsx("span",{className:t.fieldItemIcon,children:e.jsx(h.NiceIcon,{name:ce[a.type]??"type",size:14})}),e.jsxs("div",{className:t.fieldItemInfo,children:[e.jsx("div",{className:t.fieldItemLabel,children:a.label}),e.jsx("div",{className:t.fieldItemPath,children:a.path})]}),e.jsx("span",{className:t.fieldItemType,children:a.type})]},a.path)),(B==null?void 0:B.length)===0&&e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noMatches","No matches")})]}):e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noSchema","No data schema. Assign an entity in the Settings tab.")})]}),s==="layers"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:t.panelHeader,children:[i("printing.editor.layers","Layers")," (",k.length,")"]}),e.jsxs("div",{className:t.layerList,children:[k.length===0&&e.jsx("div",{className:t.emptyMsg,children:i("printing.editor.noElements","No elements")}),k.slice().reverse().map(a=>e.jsxs("div",{role:"button",tabIndex:0,onKeyDown:h.clickOnActivationKey,className:`${t.layerItem} ${v.has(a.id)?t.layerItemSelected:""}`,onClick:()=>g(a.id),children:[e.jsx("span",{className:t.layerIcon,children:e.jsx(h.NiceIcon,{name:ce[a.type]??"type",size:14})}),e.jsx("span",{className:t.layerName,children:a.name||a.label}),e.jsxs("div",{className:t.layerActions,children:[e.jsx("button",{className:t.layerBtn,onClick:n=>{n.stopPropagation(),N(a.id,-1)},title:i("printing.editor.bringForward","Bring forward"),children:e.jsx(h.NiceIcon,{name:"arrow-up",size:12})}),e.jsx("button",{className:t.layerBtn,onClick:n=>{n.stopPropagation(),N(a.id,1)},title:i("printing.editor.sendBackward","Send backward"),children:e.jsx(h.NiceIcon,{name:"arrow-down",size:12})})]})]},a.id))]})]}),s==="watermarks"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:p("templateEditor.watermarks","Watermarks")}),e.jsxs("div",{className:t.wmList,children:[(o.watermarks??[]).map(a=>e.jsxs("div",{className:t.wmItem,children:[e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.type","Type")}),e.jsxs("select",{className:t.wmSelect,value:a.type,onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,type:n.target.value}:u)})},children:[e.jsx("option",{value:"text",children:i("printing.fieldType.text","Text")}),e.jsx("option",{value:"image",children:i("printing.fieldType.image","Image")})]})]}),a.type==="text"&&e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.fieldType.text","Text")}),e.jsx("input",{className:t.wmInput,value:a.text??"",onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,text:n.target.value}:u)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:p("templateEditor.opacity","Opacity")}),e.jsx("input",{type:"range",min:.02,max:.5,step:.01,className:t.wmSlider,value:a.opacity,onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,opacity:+n.target.value}:u)})}}),e.jsxs("span",{className:t.wmValue,children:[Math.round(a.opacity*100),"%"]})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.angle","Angle")}),e.jsx("input",{type:"range",min:-90,max:90,step:5,className:t.wmSlider,value:a.angle,onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,angle:+n.target.value}:u)})}}),e.jsxs("span",{className:t.wmValue,children:[a.angle,"°"]})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.size","Size")}),e.jsx("input",{type:"number",min:8,max:200,className:t.wmInputNum,value:a.fontSize??48,onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,fontSize:+n.target.value}:u)})}}),e.jsx("span",{className:t.wmUnit,children:"pt"})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.colour","Colour")}),e.jsx("input",{type:"color",className:t.colorPicker,value:a.color??pe,onChange:n=>{var d;return y({watermarks:(d=o.watermarks)==null?void 0:d.map(u=>u.id===a.id?{...u,color:n.target.value}:u)})}})]}),e.jsx("button",{className:t.wmDelete,onClick:()=>{var n;return y({watermarks:(n=o.watermarks)==null?void 0:n.filter(d=>d.id!==a.id)})},children:i("printing.action.remove","Remove")})]},a.id)),e.jsxs("button",{className:t.addBtn,onClick:()=>y({watermarks:[...o.watermarks??[],{id:ie(),type:"text",text:p("templateEditor.copy","COPY"),opacity:.12,angle:-45,fontSize:60,color:pe}]}),children:[e.jsx(h.NiceIcon,{name:"plus",size:12})," ",i("printing.editor.addWatermark","Add watermark")]})]})]}),s==="signatures"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:p("templateEditor.signatures","Signatures")}),e.jsxs("div",{className:t.wmList,children:[(o.signatures??[]).map(a=>e.jsxs("div",{className:t.wmItem,children:[e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:p("templateEditor.label","Label")}),e.jsx("input",{className:t.wmInput,value:a.label,onChange:n=>{var d;return y({signatures:(d=o.signatures)==null?void 0:d.map(u=>u.id===a.id?{...u,label:n.target.value}:u)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:p("templateEditor.signerName","Name")}),e.jsx("input",{className:t.wmInput,value:a.signerName??"",onChange:n=>{var d;return y({signatures:(d=o.signatures)==null?void 0:d.map(u=>u.id===a.id?{...u,signerName:n.target.value}:u)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.fieldType.line","Line")}),e.jsx("input",{type:"checkbox",checked:a.showLine??!0,onChange:n=>{var d;return y({signatures:(d=o.signatures)==null?void 0:d.map(u=>u.id===a.id?{...u,showLine:n.target.checked}:u)})}})]}),e.jsxs("div",{className:t.wmRow,children:[e.jsx("span",{className:t.wmLabel,children:i("printing.editor.showDate","Show date")}),e.jsx("input",{type:"checkbox",checked:a.showDate??!1,onChange:n=>{var d;return y({signatures:(d=o.signatures)==null?void 0:d.map(u=>u.id===a.id?{...u,showDate:n.target.checked}:u)})}})]}),e.jsx("button",{className:t.wmDelete,onClick:()=>{var n;return y({signatures:(n=o.signatures)==null?void 0:n.filter(d=>d.id!==a.id)})},children:i("printing.action.remove","Remove")})]},a.id)),e.jsxs("button",{className:t.addBtn,onClick:()=>y({signatures:[...o.signatures??[],{id:ie(),label:i("printing.editor.signature","Signature"),position:{x:10,y:5,width:70,height:22},showLine:!0,showDate:!1}]}),children:[e.jsx(h.NiceIcon,{name:"plus",size:12})," ",i("printing.editor.addSignature","Add signature")]})]})]}),s==="settings"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:t.panelHeader,children:i("printing.editor.templateSettings","Template settings")}),e.jsxs("div",{className:t.settingsForm,children:[e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:i("printing.editor.name","Name")}),e.jsx("input",{className:t.settingsInput,value:o.name,onChange:a=>y({name:a.target.value})})]}),e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:i("printing.editor.description","Description")}),e.jsx("textarea",{className:t.settingsTextarea,value:o.description??"",onChange:a=>y({description:a.target.value}),rows:2})]}),e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:p("templateEditor.category","Category")}),e.jsx("input",{className:t.settingsInput,value:o.category??"",onChange:a=>y({category:a.target.value})})]}),e.jsx("div",{className:t.settingsDivider,children:i("printing.editor.margins","Margins (mm)")}),["top","right","bottom","left"].map(a=>e.jsxs("div",{className:t.settingsRow,children:[e.jsx("label",{className:t.settingsLabel,children:a==="top"?i("printing.editor.marginTop","Top"):a==="right"?i("printing.editor.marginRight","Right"):a==="bottom"?i("printing.editor.marginBottom","Bottom"):i("printing.editor.marginLeft","Left")}),e.jsx("input",{type:"number",min:0,max:50,step:1,className:t.settingsInputNum,value:o.margins[a],onChange:n=>y({margins:{...o.margins,[a]:+n.target.value}})}),e.jsx("span",{className:t.settingsUnit,children:p("templateEditor.mm","mm")})]},a))]})]})]})]})},Rn=({field:s,activeTab:r,onTabChange:c,onChange:o,paperWidthMm:k,paperHeightMm:v})=>{var w,I,B,a;const{t:_}=h.useNiceTranslation(),{t:g}=h.useNiceTranslation(),y=f.useCallback(n=>s&&o({position:{...s.position,...n}}),[s,o]),N=f.useCallback(n=>s&&o({style:{...(s==null?void 0:s.style)??{},...n}}),[s,o]);if(!s)return e.jsxs("div",{className:t.rightPanel,children:[e.jsx("div",{className:t.panelHeader,children:g("printing.editor.properties","Properties")}),e.jsxs("div",{className:t.propsEmpty,children:[e.jsx("div",{className:t.propsEmptyIcon,children:e.jsx(h.NiceIcon,{name:"cursor",size:28})}),e.jsx("div",{className:t.propsEmptyText,children:g("printing.editor.selectElement","Select an element on the template")}),e.jsxs("div",{className:t.shortcutGrid,children:[e.jsx(ae,{keys:"Del",label:g("printing.action.remove","Remove")}),e.jsx(ae,{keys:"Ctrl+D",label:g("printing.editor.duplicate","Duplicate")}),e.jsx(ae,{keys:"↑↓←→",label:g("printing.editor.move","Move")}),e.jsx(ae,{keys:"Ctrl+Z",label:g("printing.editor.undo","Undo")}),e.jsx(ae,{keys:"Ctrl+A",label:g("printing.editor.selectAll","Select all")}),e.jsx(ae,{keys:"Shift+↑",label:g("printing.editor.move5mm","Move 5 mm")})]})]})]});const p=!["line","rect","image","static_image","barcode","qr","signature"].includes(s.type),i=!["static_text","static_image","line","rect","page_number","total_pages","print_date"].includes(s.type);return e.jsxs("div",{className:t.rightPanel,children:[e.jsxs("div",{className:t.panelHeader,children:[e.jsx("span",{className:t.panelHeaderIcon,children:ce[s.type]}),e.jsx("span",{className:t.panelHeaderName,children:s.name})]}),e.jsx("div",{className:t.rightTabs,children:Tn.map(n=>n.id==="data"&&!i?null:e.jsx("button",{className:`${t.rightTab} ${r===n.id?t.rightTabActive:""}`,onClick:()=>c(n.id),children:g(n.key,n.label)},n.id))}),e.jsxs("div",{className:t.propsBody,children:[r==="position"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:t.posGrid,children:[[{key:"x",label:"X",unit:"mm"},{key:"y",label:"Y",unit:"mm"},{key:"width",label:_("templateEditor.widthShort","W"),unit:"mm"},{key:"height",label:_("templateEditor.heightShort","H"),unit:"mm"}].map(({key:n,label:d,unit:u})=>e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:d}),e.jsx("input",{type:"number",step:.5,className:t.posInput,value:Math.round(s.position[n]*10)/10,onChange:L=>y({[n]:+L.target.value})}),e.jsx("span",{className:t.posUnit,children:u})]},n)),e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:g("printing.editor.rotation","Rotation")}),e.jsx("input",{type:"number",step:5,className:t.posInput,value:s.style.rotation??0,onChange:n=>N({rotation:+n.target.value})}),e.jsx("span",{className:t.posUnit,children:"°"})]}),e.jsxs("div",{className:t.posCell,children:[e.jsx("label",{className:t.posLabel,children:_("templateEditor.zIdx","Z-idx")}),e.jsx("input",{type:"number",step:1,min:1,className:t.posInput,value:s.position.zIndex??1,onChange:n=>y({zIndex:+n.target.value})})]})]}),e.jsxs("div",{className:t.snapSection,children:[e.jsx("div",{className:t.snapTitle,children:g("printing.editor.snapToPage","Snap to page")}),e.jsxs("div",{className:t.snapRow,children:[e.jsx("button",{className:t.snapBtn,onClick:()=>y({x:0}),title:g("printing.editor.leftEdge","Left edge"),children:e.jsx(h.NiceIcon,{name:"align-left",size:14})}),e.jsx("button",{className:t.snapBtn,onClick:()=>y({x:(k-s.position.width)/2}),title:g("printing.editor.horizontalCentre","Horizontal centre"),children:"⊕"}),e.jsx("button",{className:t.snapBtn,onClick:()=>y({x:k-s.position.width}),title:g("printing.editor.rightEdge","Right edge"),children:e.jsx(h.NiceIcon,{name:"align-right",size:14})})]})]})]}),r==="style"&&e.jsxs(e.Fragment,{children:[p&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:_("templateEditor.font","Font")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.fontFamily","Family")}),e.jsx("select",{className:t.styleSelectFull,value:s.style.fontFamily??"sans-serif",onChange:n=>N({fontFamily:n.target.value}),children:Nn.map(n=>e.jsx("option",{value:n,children:n},n))})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.size","Size")}),e.jsx("select",{className:t.styleSelectSm,value:Ne.includes(s.style.fontSize??10)?s.style.fontSize??10:"",onChange:n=>N({fontSize:+n.target.value}),children:Ne.map(n=>e.jsx("option",{value:n,children:n},n))}),e.jsx("input",{type:"number",step:.5,min:4,max:200,className:t.styleInput,value:s.style.fontSize??10,onChange:n=>N({fontSize:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"pt"})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.colour","Colour")}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.color??te,onChange:n=>N({color:n.target.value})}),e.jsx("input",{className:t.colorHex,value:s.style.color??te,onChange:n=>N({color:n.target.value}),maxLength:7})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.style","Style")}),e.jsxs("div",{className:t.toggleGroup,children:[e.jsx("button",{className:`${t.toggleBtn} ${s.style.fontWeight==="bold"?t.toggleBtnActive:""}`,onClick:()=>N({fontWeight:s.style.fontWeight==="bold"?"normal":"bold"}),children:e.jsx("b",{children:"B"})}),e.jsx("button",{className:`${t.toggleBtn} ${s.style.fontStyle==="italic"?t.toggleBtnActive:""}`,onClick:()=>N({fontStyle:s.style.fontStyle==="italic"?"normal":"italic"}),children:e.jsx("i",{children:"I"})})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.align","Align")}),e.jsx("div",{className:t.toggleGroup,children:["left","center","right","justify"].map(n=>e.jsx("button",{title:n,className:`${t.toggleBtn} ${(s.style.textAlign??"left")===n?t.toggleBtnActive:""}`,onClick:()=>N({textAlign:n}),children:n==="left"?"≡L":n==="center"?"≡C":n==="right"?"≡R":"≡J"},n))})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.lineHeight","Line h.")}),e.jsx("input",{type:"number",step:.1,min:1,max:4,className:t.styleInput,value:s.style.lineHeight??1.4,onChange:n=>N({lineHeight:+n.target.value})})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.spacing","Spacing")}),e.jsx("input",{type:"number",step:.01,min:-.1,max:.5,className:t.styleInput,value:s.style.letterSpacing??0,onChange:n=>N({letterSpacing:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"em"})]})]}),e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:g("printing.editor.background","Background and border")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.fill","Fill")}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.backgroundColor??"var(--nice-bg, #fff)",onChange:n=>N({backgroundColor:n.target.value})}),e.jsx("button",{className:t.clearBtn,onClick:()=>N({backgroundColor:void 0}),title:g("printing.editor.clearFill","Clear fill"),children:e.jsx(h.NiceIcon,{name:"close",size:12})})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.border","Border")}),e.jsx("input",{type:"number",step:.5,min:0,max:10,className:t.styleInput,value:s.style.borderWidth??0,onChange:n=>N({borderWidth:+n.target.value})}),e.jsx("input",{type:"color",className:t.colorPicker,value:s.style.borderColor??te,onChange:n=>N({borderColor:n.target.value})}),e.jsxs("select",{className:t.styleSelectXs,value:s.style.borderStyle??"solid",onChange:n=>N({borderStyle:n.target.value}),children:[e.jsx("option",{value:"solid",children:"─"}),e.jsx("option",{value:"dashed",children:"- -"}),e.jsx("option",{value:"dotted",children:"···"})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.radius","Radius")}),e.jsx("input",{type:"number",step:1,min:0,max:50,className:t.styleInput,value:s.style.borderRadius??0,onChange:n=>N({borderRadius:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:"px"})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.padding","Padding")}),e.jsx("input",{type:"number",step:.5,min:0,max:20,className:t.styleInput,value:s.style.padding??0,onChange:n=>N({padding:+n.target.value})}),e.jsx("span",{className:t.styleUnit,children:_("templateEditor.mm","mm")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.opacity","Opacity")}),e.jsx("input",{type:"range",min:.1,max:1,step:.05,className:t.sliderInput,value:s.style.opacity??1,onChange:n=>N({opacity:+n.target.value})}),e.jsxs("span",{className:t.styleValue,children:[Math.round((s.style.opacity??1)*100),"%"]})]})]})]}),r==="data"&&i&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:g("printing.editor.dataSource","Data source")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.path","Path")}),e.jsx("input",{className:t.styleInputFull,value:s.dataPath,onChange:n=>o({dataPath:n.target.value}),placeholder:_("templateEditor.egInvoiceNumber","e.g. invoice.number")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.format","Format")}),e.jsx("input",{className:t.styleInputFull,value:s.format??"",onChange:n=>o({format:n.target.value}),placeholder:_("templateEditor.ddMmYyyy000","DD.MM.YYYY / #,##0.00")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.default","Default")}),e.jsx("input",{className:t.styleInputFull,value:s.fallback??"",onChange:n=>o({fallback:n.target.value}),placeholder:g("printing.editor.whenEmpty","When there is no value")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.type","Type")}),e.jsx("select",{className:t.styleSelectFull,value:s.type,onChange:n=>o({type:n.target.value}),children:Object.keys(de).map(n=>e.jsx("option",{value:n,children:be(g,n)},n))})]}),(s.type==="barcode"||s.type==="qr")&&e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.codeFormat","Code format")}),e.jsx("select",{className:t.styleSelectFull,value:s.barcodeType??"code128",onChange:n=>o({barcodeType:n.target.value}),children:["ean13","ean8","code128","code39","upc","itf14","datamatrix"].map(n=>e.jsx("option",{value:n,children:n.toUpperCase()},n))})]})]}),r==="conditional"&&e.jsxs("div",{className:t.styleGroup,children:[e.jsx("div",{className:t.styleGroupTitle,children:g("printing.editor.conditionalVisibility","Conditional visibility")}),e.jsx("div",{className:t.conditionalHint,children:g("printing.editor.conditionalHint","The element is hidden when the condition is not met.")}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.conditionalField","Field")}),e.jsx("input",{className:t.styleInputFull,value:((w=s.conditional)==null?void 0:w.field)??"",onChange:n=>{var d,u;return o({conditional:{field:n.target.value,operator:((d=s.conditional)==null?void 0:d.operator)??"eq",value:(u=s.conditional)==null?void 0:u.value}})},placeholder:_("templateEditor.egInvoiceIsPaid","e.g. invoice.isPaid")})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:_("templateEditor.operator","Operator")}),e.jsxs("select",{className:t.styleSelectFull,value:((I=s.conditional)==null?void 0:I.operator)??"eq",onChange:n=>{var d,u;return o({conditional:{field:((d=s.conditional)==null?void 0:d.field)??"",operator:n.target.value,value:(u=s.conditional)==null?void 0:u.value}})},children:[e.jsxs("option",{value:"eq",children:["= ",g("printing.editor.opEqual","equal")]}),e.jsxs("option",{value:"neq",children:["≠ ",g("printing.editor.opNotEqual","not equal")]}),e.jsx("option",{value:"gt",children:_("templateEditor.greaterThan","> greater than")}),e.jsx("option",{value:"lt",children:_("templateEditor.lessThan","< less than")}),e.jsx("option",{value:"contains",children:_("templateEditor.contains","contains")})]})]}),e.jsxs("div",{className:t.styleRow,children:[e.jsx("label",{className:t.styleLabel,children:g("printing.editor.value","Value")}),e.jsx("input",{className:t.styleInputFull,value:String(((B=s.conditional)==null?void 0:B.value)??""),onChange:n=>{var d,u;return o({conditional:{field:((d=s.conditional)==null?void 0:d.field)??"",operator:((u=s.conditional)==null?void 0:u.operator)??"eq",value:n.target.value}})},placeholder:_("templateEditor.egTruePaid",'e.g. true / "PAID"')})]}),((a=s.conditional)==null?void 0:a.field)&&e.jsx("button",{className:t.clearConditionalBtn,onClick:()=>o({conditional:void 0}),children:g("printing.editor.clearCondition","Clear condition")})]})]})]})};function $n(){return{id:`tpl-${Date.now()}`,name:"New template",description:"",paperSize:"A4",orientation:"portrait",margins:{top:20,right:15,bottom:20,left:15},sections:[{id:"sec-header",type:"header",heightMm:35,fields:[]},{id:"sec-body",type:"body",fields:[]},{id:"sec-footer",type:"footer",heightMm:20,fields:[]}],watermarks:[],signatures:[]}}const Pn=({template:s,dataSchema:r,sampleData:c=[],onChange:o,onSave:k,readOnly:v=!1,className:_,style:g,theme:y="light"})=>{const{t:N}=h.useNiceTranslation(),[{past:p,present:i,future:w},I]=f.useReducer(wn,{past:[],present:s??$n(),future:[]}),{t:B}=h.useNiceTranslation(),[a,n]=f.useState(new Set),[d,u]=f.useState("sec-body"),[L,x]=f.useState(1),[R,T]=f.useState(0),[z,O]=f.useState("fields"),[U,P]=f.useState("position"),[b,W]=f.useState(!1),[me,Ce]=f.useState(!0),A=f.useCallback(l=>{const m={...i,...l};I({type:"UPDATE",payload:m}),o==null||o(m)},[i,o]),[X,ue]=f.useMemo(()=>{const[l,m]=je[i.paperSize]??je.A4;return i.orientation==="landscape"?[m,l]:[l,m]},[i.paperSize,i.orientation]),J=f.useMemo(()=>i.sections.flatMap(l=>l.fields),[i]),M=f.useMemo(()=>J.find(l=>a.has(l.id))??null,[J,a]),he=f.useCallback((l,m)=>{A({sections:i.sections.map(C=>({...C,fields:C.fields.map(S=>S.id===l?{...S,...m,style:{...S.style,...m.style??{}}}:S)}))})},[i,A]),re=f.useCallback(l=>{A({sections:i.sections.map(m=>({...m,fields:m.fields.map(C=>a.has(C.id)?{...C,...l,style:{...C.style,...l.style??{}}}:C)}))})},[i,a,A]),ye=f.useCallback((l,m)=>{if(l==="watermark"){A({watermarks:[...i.watermarks??[],{id:ie(),type:"text",text:N("templateEditor.copy","COPY"),opacity:.12,angle:-45,fontSize:60,color:pe}]}),O("watermarks");return}if(l==="signature"){A({signatures:[...i.signatures??[],{id:ie(),label:B("printing.editor.signature","Signature"),position:{x:10,y:5,width:70,height:22},showLine:!0,showDate:!1}]}),O("signatures");return}const C=i.sections.find(F=>F.id===d)??i.sections.find(F=>F.type==="body");if(!C)return;const S=we(l,m),E={sections:i.sections.map(F=>F.id===C.id?{...F,fields:[...F.fields,S]}:F)};I({type:"UPDATE",payload:{...i,...E}}),o==null||o({...i,...E}),n(new Set([S.id]))},[i,d,o,N,B,A]),Be=f.useCallback((l,m,C,S)=>{const E=r==null?void 0:r.fields.find(q=>q.path===m),F=we((E==null?void 0:E.type)??"text",E);F.position.x=Math.round(C*2)/2,F.position.y=Math.round(S*2)/2;const Z={sections:i.sections.map(q=>q.id===l?{...q,fields:[...q.fields,F]}:q)};I({type:"UPDATE",payload:{...i,...Z}}),o==null||o({...i,...Z}),n(new Set([F.id]))},[i,r,o]),Le=f.useCallback((l,m)=>{m.ctrlKey||m.metaKey?n(C=>{const S=new Set(C);return S.has(l)?S.delete(l):S.add(l),S}):m.shiftKey?n(C=>new Set([...C,l])):n(new Set([l]))},[]),Te=f.useCallback((l,m)=>{if(v)return;m.preventDefault(),a.has(l)||n(new Set([l]));const C=m.clientX,S=m.clientY,E=i.sections.map(q=>({id:q.id,fields:q.fields.map(Q=>({id:Q.id,pos:{...Q.position}}))})),F=q=>{const Q=(q.clientX-C)/(L*G),se=(q.clientY-S)/(L*G),oe=a.has(l)?a:new Set([l]),le=i.sections.map(ee=>{const V=E.find(Y=>Y.id===ee.id);return{...ee,fields:ee.fields.map(Y=>{var ve;if(!oe.has(Y.id))return Y;const fe=((ve=V==null?void 0:V.fields.find(Ge=>Ge.id===Y.id))==null?void 0:ve.pos)??Y.position;return{...Y,position:{...Y.position,x:Math.max(0,Math.round((fe.x+Q)*2)/2),y:Math.max(0,Math.round((fe.y+se)*2)/2)}}})}}),ne={...i,sections:le};o==null||o(ne),I({type:"UPDATE",payload:ne})},Z=()=>{document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",Z)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",Z)},[i,L,a,v,o]),ze=f.useCallback((l,m,C)=>{if(v)return;C.preventDefault();const S=J.find(se=>se.id===l);if(!S)return;const E={...S.position},F=C.clientX,Z=C.clientY,q=se=>{const oe=(se.clientX-F)/(L*G),le=(se.clientY-Z)/(L*G);let{x:ne,y:ee,width:V,height:Y}=E;m.includes("e")&&(V=Math.max(5,V+oe)),m.includes("s")&&(Y=Math.max(3,Y+le)),m.includes("w")&&(ne=ne+oe,V=Math.max(5,V-oe)),m.includes("n")&&(ee=ee+le,Y=Math.max(3,Y-le)),he(l,{position:{...E,x:Math.round(ne*2)/2,y:Math.round(ee*2)/2,width:Math.round(V*2)/2,height:Math.round(Y*2)/2}})},Q=()=>{document.removeEventListener("mousemove",q),document.removeEventListener("mouseup",Q)};document.addEventListener("mousemove",q),document.addEventListener("mouseup",Q)},[J,L,v,he]),ge=f.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.filter(m=>!a.has(m.id))}))}),n(new Set)},[i,a,A]),_e=f.useCallback(()=>{const l=new Set;A({sections:i.sections.map(m=>{const C=m.fields.filter(S=>a.has(S.id)).map(S=>{const E={...S,id:ie(),position:{...S.position,x:S.position.x+5,y:S.position.y+5}};return l.add(E.id),E});return{...m,fields:[...m.fields,...C]}})}),n(l)},[i,a,A]),De=f.useCallback(l=>{A({sections:i.sections.map(m=>({...m,fields:m.fields.map(C=>{if(!a.has(C.id))return C;const S=l==="left"?i.margins.left:l==="right"?X-i.margins.right-C.position.width:(X-C.position.width)/2;return{...C,position:{...C.position,x:S}}})}))})},[i,a,X,A]),Re=f.useCallback(l=>{const m=i.sections.find(S=>S.id===d);if(!m)return;const C=m.heightMm??200;A({sections:i.sections.map(S=>S.id!==d?S:{...S,fields:S.fields.map(E=>{if(!a.has(E.id))return E;const F=l==="top"?0:l==="bottom"?C-E.position.height:(C-E.position.height)/2;return{...E,position:{...E.position,y:F}}})})})},[i,a,d,A]),$e=f.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.map(m=>a.has(m.id)?{...m,position:{...m.position,zIndex:(m.position.zIndex??1)+1}}:m)}))})},[i,a,A]),Pe=f.useCallback(()=>{A({sections:i.sections.map(l=>({...l,fields:l.fields.map(m=>a.has(m.id)?{...m,position:{...m.position,zIndex:Math.max(1,(m.position.zIndex??1)-1)}}:m)}))})},[i,a,A]),Ae=f.useCallback((l,m)=>{A({sections:i.sections.map(C=>({...C,fields:C.fields.map(S=>S.id===l?{...S,position:{...S.position,zIndex:Math.max(1,(S.position.zIndex??1)-m)}}:S)}))})},[i,A]);f.useEffect(()=>{const l=m=>{const C=m.target.tagName;if(C==="INPUT"||C==="TEXTAREA"||C==="SELECT")return;const S=m.shiftKey?5:.5;m.key==="Delete"||m.key==="Backspace"?a.size&&(m.preventDefault(),ge()):m.ctrlKey&&m.key==="z"?(m.preventDefault(),I({type:"UNDO"})):m.ctrlKey&&(m.key==="y"||m.key==="Y")?(m.preventDefault(),I({type:"REDO"})):m.ctrlKey&&(m.key==="d"||m.key==="D")?(m.preventDefault(),a.size&&_e()):m.ctrlKey&&m.key==="a"?(m.preventDefault(),n(new Set(J.map(E=>E.id)))):m.key==="ArrowLeft"?(m.preventDefault(),re({position:{...M.position,x:((M==null?void 0:M.position.x)??0)-S}})):m.key==="ArrowRight"?(m.preventDefault(),re({position:{...M.position,x:((M==null?void 0:M.position.x)??0)+S}})):m.key==="ArrowUp"?(m.preventDefault(),re({position:{...M.position,y:((M==null?void 0:M.position.y)??0)-S}})):m.key==="ArrowDown"&&(m.preventDefault(),re({position:{...M.position,y:((M==null?void 0:M.position.y)??0)+S}}))};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[a,J,M,ge,_e,re]);const Ee=f.useCallback((l,m)=>{A({sections:i.sections.map(C=>C.id===l?{...C,heightMm:Math.round(m*2)/2}:C)})},[i,A]),Me=f.useMemo(()=>{const l=Array.isArray(c)?c[R]:c;return l?"data"in l?l.data:l:{}},[c,R]),Fe=X*L*G,He=ue*L*G;return e.jsx(h.NiceAppShell,{flush:!0,className:`${t.root} ${y==="dark"?t.dark:""} ${_??""}`,style:g,toolbar:e.jsx(zn,{tpl:i,zoom:L,canUndo:p.length>0,canRedo:w.length>0,showGrid:b,showRulers:me,readOnly:v,selectedCount:a.size,onPaperChange:(l,m)=>A({paperSize:l,orientation:m}),onZoom:x,onUndo:()=>I({type:"UNDO"}),onRedo:()=>I({type:"REDO"}),onToggleGrid:()=>W(l=>!l),onToggleRulers:()=>Ce(l=>!l),onInsert:ye,onDelete:ge,onDuplicate:_e,onAlignH:De,onAlignV:Re,onBringForward:$e,onSendBackward:Pe,onSave:k?()=>k(i):void 0}),sidebar:e.jsx(Dn,{activeTab:z,onTabChange:O,schema:r,tpl:i,allFields:J,selectedIds:a,onInsertSchemaField:l=>ye(l.type,l),onSelectField:l=>n(new Set([l])),onUpdateTpl:l=>A(l),onReorderField:Ae}),rightSidebar:e.jsx(Rn,{field:M,activeTab:U,onTabChange:P,onChange:l=>M&&he(M.id,l),paperWidthMm:X,paperHeightMm:ue}),children:e.jsxs("div",{role:"presentation",className:t.canvasArea,onClick:()=>n(new Set),children:[Array.isArray(c)&&c.length>0&&e.jsxs("div",{className:t.testDataBar,children:[e.jsxs("span",{className:t.testDataLabel,children:[B("printing.editor.testData","Sample data"),":"]}),e.jsx("select",{className:t.testDataSelect,value:R,onChange:l=>T(+l.target.value),children:c.map((l,m)=>e.jsxs("option",{value:m,children:[B("printing.editor.record","Record")," ",m+1]},m))})]}),me&&e.jsxs("div",{className:t.rulerWrapper,children:[e.jsx("div",{className:t.rulerCorner}),e.jsx(ke,{lengthMm:X,zoom:L,orientation:"h"}),e.jsx(ke,{lengthMm:ue,zoom:L,orientation:"v"})]}),e.jsx("div",{role:"presentation",className:t.paperScroll,onClick:l=>l.stopPropagation(),children:e.jsxs("div",{className:t.paperShadow,style:{width:Fe,minHeight:He},children:[e.jsx("div",{className:t.marginGuide,style:{top:i.margins.top*L*G,right:i.margins.right*L*G,bottom:i.margins.bottom*L*G,left:i.margins.left*L*G}}),(i.watermarks??[]).map(l=>e.jsx("div",{className:t.watermark,style:{fontSize:(l.fontSize??60)*L,color:l.color??pe,opacity:l.opacity,transform:`translate(-50%, -50%) rotate(${l.angle}deg)`},children:l.type==="text"?l.text:e.jsx(h.NiceIcon,{name:"image",size:(l.fontSize??60)*L})},l.id)),i.sections.map(l=>e.jsx("div",{children:e.jsx(Bn,{section:l,zoom:L,paperWidthMm:X,selectedIds:a,sampleData:Me,readOnly:v,showGrid:b,onFieldClick:Le,onFieldDragStart:Te,onResizeStart:ze,onSectionHeightChange:Ee,onDropField:Be})},l.id))]})})]})})},An="_root_7m4s0_1",En="_dark_7m4s0_25",Mn="_topBar_7m4s0_39",Fn="_searchInput_7m4s0_69",Hn="_actionBtn_7m4s0_111",Gn="_categoryRow_7m4s0_157",On="_catChip_7m4s0_187",qn="_catChipActive_7m4s0_217",Wn="_grid_7m4s0_231",Yn="_card_7m4s0_253",Un="_cardSelected_7m4s0_285",Vn="_thumbnail_7m4s0_307",Kn="_thumbnailImg_7m4s0_321",Xn="_thumbnailPlaceholder_7m4s0_333",Jn="_paperMini_7m4s0_347",Zn="_paperLine_7m4s0_371",Qn="_cardOverlay_7m4s0_385",ea="_overlayBtn_7m4s0_405",ta="_overlayBtnDanger_7m4s0_441",sa="_cardBody_7m4s0_481",na="_cardName_7m4s0_489",aa="_cardDesc_7m4s0_517",ia="_cardMeta_7m4s0_539",ra="_cardSize_7m4s0_553",oa="_cardCat_7m4s0_569",la="_cardTags_7m4s0_585",ca="_cardTag_7m4s0_585",da="_emptyState_7m4s0_617",ma="_emptyIcon_7m4s0_639",D={root:An,dark:En,topBar:Mn,searchInput:Fn,actionBtn:Hn,categoryRow:Gn,catChip:On,catChipActive:qn,grid:Wn,card:Yn,cardSelected:Un,thumbnail:Vn,thumbnailImg:Kn,thumbnailPlaceholder:Xn,paperMini:Jn,paperLine:Zn,cardOverlay:Qn,overlayBtn:ea,overlayBtnDanger:ta,cardBody:sa,cardName:na,cardDesc:aa,cardMeta:ia,cardSize:ra,cardCat:oa,cardTags:la,cardTag:ca,emptyState:da,emptyIcon:ma},pa=[],ua=[{key:"printing.category.invoices",fallback:"Invoices"},{key:"printing.category.reports",fallback:"Reports"},{key:"printing.category.labels",fallback:"Labels"},{key:"printing.category.letters",fallback:"Letters"},{key:"printing.category.contracts",fallback:"Contracts"},{key:"printing.category.other",fallback:"Other"}];function ha(s){return new Promise((r,c)=>{const o=new FileReader;o.onload=k=>{var v;try{r(JSON.parse((v=k.target)==null?void 0:v.result))}catch(_){c(_)}},o.readAsText(s)})}function ga(s){const r=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),c=URL.createObjectURL(r),o=document.createElement("a");o.href=c,o.download=`${s.name.replace(/\s+/g,"_")}.json`,o.click(),URL.revokeObjectURL(c)}const _a=({templates:s=pa,selectedId:r,onSelect:c,onImport:o,onExport:k,onDelete:v,onNew:_,className:g,style:y,theme:N="light"})=>{const{t:p}=h.useNiceTranslation(),[i,w]=f.useState(""),[I,B]=f.useState(null),[a,n]=f.useState(null),d=f.useRef(null),u=async x=>{var T;const R=(T=x.target.files)==null?void 0:T[0];if(R){try{const z=await ha(R);o==null||o(z)}catch{}x.target.value=""}},L=s.filter(x=>{const R=!i||x.name.toLowerCase().includes(i.toLowerCase())||(x.description??"").toLowerCase().includes(i.toLowerCase())||(x.tags??[]).some(z=>z.toLowerCase().includes(i.toLowerCase())),T=!I||x.category===I;return R&&T});return e.jsxs("div",{className:`${D.root} ${N==="dark"?D.dark:""} ${g??""}`,style:y,children:[e.jsxs("div",{className:D.topBar,children:[e.jsx("input",{type:"search",className:D.searchInput,placeholder:p("printing.searchTemplates","Search templates…"),value:i,onChange:x=>w(x.target.value)}),e.jsxs("button",{className:D.actionBtn,onClick:_,title:p("printing.newTemplate","New template"),children:[e.jsx(h.NiceIcon,{name:"plus",size:14})," ",p("printing.new","New")]}),e.jsxs("button",{className:D.actionBtn,onClick:()=>{var x;return(x=d.current)==null?void 0:x.click()},title:p("printing.importJson","Import JSON"),children:[e.jsx(h.NiceIcon,{name:"upload",size:14})," ",p("printing.import","Import")]}),e.jsx("input",{ref:d,type:"file",accept:".json",hidden:!0,onChange:u})]}),e.jsxs("div",{className:D.categoryRow,children:[e.jsx("button",{className:`${D.catChip} ${I?"":D.catChipActive}`,onClick:()=>B(null),children:p("printing.filter.all","All")}),ua.map(x=>e.jsx("button",{className:`${D.catChip} ${I===x.fallback?D.catChipActive:""}`,onClick:()=>B(R=>R===x.fallback?null:x.fallback),children:p(x.key,x.fallback)},x.key))]}),e.jsxs("div",{className:D.grid,children:[L.map(x=>e.jsxs("div",{role:c?"button":void 0,tabIndex:c?0:void 0,onKeyDown:c?h.clickOnActivationKey:void 0,className:`${D.card} ${r===x.id?D.cardSelected:""}`,onClick:()=>c==null?void 0:c(x),onMouseEnter:()=>n(x.id),onMouseLeave:()=>n(null),children:[e.jsxs("div",{className:D.thumbnail,children:[x.previewImageUrl?e.jsx("img",{src:x.previewImageUrl,alt:x.name,className:D.thumbnailImg}):e.jsx("div",{className:D.thumbnailPlaceholder,children:e.jsxs("div",{className:D.paperMini,children:[e.jsx("div",{className:D.paperLine,style:{width:"80%"}}),e.jsx("div",{className:D.paperLine,style:{width:"60%"}}),e.jsx("div",{className:D.paperLine,style:{width:"90%"}}),e.jsx("div",{className:D.paperLine,style:{width:"50%"}})]})}),a===x.id&&e.jsxs("div",{className:D.cardOverlay,children:[e.jsx("button",{className:D.overlayBtn,onClick:R=>{R.stopPropagation(),k==null||k(x),ga(x)},title:p("printing.export","Export"),children:e.jsx(h.NiceIcon,{name:"download",size:14})}),v&&e.jsx("button",{className:D.overlayBtnDanger,onClick:R=>{R.stopPropagation(),v(x.id)},title:p("printing.action.remove","Remove"),children:e.jsx(h.NiceIcon,{name:"trash",size:14})})]})]}),e.jsxs("div",{className:D.cardBody,children:[e.jsx("div",{className:D.cardName,children:x.name}),x.description&&e.jsx("div",{className:D.cardDesc,children:x.description}),e.jsxs("div",{className:D.cardMeta,children:[e.jsxs("span",{className:D.cardSize,children:[x.paperSize," ",x.orientation==="landscape"?p("printing.orientation.landscape","landscape"):p("printing.orientation.portrait","portrait")]}),x.category&&e.jsx("span",{className:D.cardCat,children:x.category})]}),x.tags&&x.tags.length>0&&e.jsx("div",{className:D.cardTags,children:x.tags.slice(0,3).map(R=>e.jsx("span",{className:D.cardTag,children:R},R))})]})]},x.id)),L.length===0&&e.jsxs("div",{className:D.emptyState,children:[e.jsx("span",{className:D.emptyIcon,children:e.jsx(h.NiceIcon,{name:"file",size:32})}),e.jsx("span",{children:i?`${p("printing.noMatches","No matches for")} "${i}"`:p("printing.noTemplates","No templates yet.")})]})]})]})},ba="_root_18ja1_1",xa="_dark_18ja1_19",ya="_headerBar_18ja1_31",fa="_entityNav_18ja1_59",va="_navBtn_18ja1_69",ja="_navLabel_18ja1_103",Na="_sampleBadge_18ja1_117",wa="_zoomBar_18ja1_135",ka="_zoomBtn_18ja1_147",Sa="_zoomLabel_18ja1_179",Ia="_printBtn_18ja1_193",Ca="_canvas_18ja1_223",Ba="_page_18ja1_243",La="_watermark_18ja1_269",Ta="_footerBar_18ja1_299",H={root:ba,dark:xa,headerBar:ya,entityNav:fa,navBtn:va,navLabel:ja,sampleBadge:Na,zoomBar:wa,zoomBtn:ka,zoomLabel:Sa,printBtn:Ia,canvas:Ca,page:Ba,watermark:La,footerBar:Ta},K=3.78,Se={A3:[297,420],A4:[210,297],A5:[148,210],A6:[105,148],Letter:[216,279],Legal:[216,356],Tabloid:[279,432]};function za(s,r){try{return s.split(".").reduce((c,o)=>c&&typeof c=="object"?c[o]:null,r)}catch{return null}}function Da(s,r,c){if(s==null)return"";if(r==="date"&&c)try{const o=new Date(s);if(c==="DD.MM.YYYY"){const k=String(o.getDate()).padStart(2,"0"),v=String(o.getMonth()+1).padStart(2,"0");return`${k}.${v}.${o.getFullYear()}`}return o.toLocaleDateString()}catch{return String(s)}if(r==="currency"&&c){const o=Number(s);if(!isNaN(o))return`${o.toFixed(2)} ${c}`}return r==="number"&&typeof s=="number"?s.toLocaleString("pl-PL"):String(s)}const Ra=({field:s,data:r,zoom:c})=>{const o=s.dataPath?za(s.dataPath,r):null,k=o!=null?Da(o,s.type,s.format):s.fallback??"",v=g=>g*c*K,_={position:"absolute",left:v(s.position.x),top:v(s.position.y),width:v(s.position.width),height:v(s.position.height),fontSize:(s.style.fontSize??10)*c,fontWeight:s.style.fontWeight??"normal",fontStyle:s.style.fontStyle??"normal",color:s.style.color??"var(--nice-text-primary, #0f172a)",textAlign:s.style.textAlign??"left",backgroundColor:s.style.backgroundColor,transform:s.style.rotation?`rotate(${s.style.rotation}deg)`:void 0,overflow:"hidden",display:"flex",alignItems:s.style.verticalAlign==="middle"?"center":s.style.verticalAlign==="bottom"?"flex-end":"flex-start",lineHeight:s.style.lineHeight??1.4,padding:s.style.padding?v(s.style.padding):0,boxSizing:"border-box",borderWidth:s.style.borderWidth,borderColor:s.style.borderColor,borderStyle:s.style.borderStyle,borderRadius:s.style.borderRadius,zIndex:s.position.zIndex??1};return s.type==="image"&&o?e.jsx("div",{style:_,children:e.jsx("img",{src:String(o),alt:"",style:{width:"100%",height:"100%",objectFit:"contain"}})}):s.type==="barcode"||s.type==="qr"?e.jsxs("div",{style:{..._,background:"var(--nice-bg-secondary, #f8fafc)",border:"1px dashed var(--nice-border-color, #e2e8f0)",alignItems:"center",justifyContent:"center",fontSize:10*c},children:[e.jsx(h.NiceIcon,{name:s.type==="qr"?"qr-code":"barcode",size:12*c})," ",k]}):s.type==="signature"?e.jsx("div",{style:{..._,borderBottom:"1px solid var(--nice-border-color, #0f172a)",alignItems:"flex-end"},children:e.jsx("span",{style:{fontSize:8*c,color:"var(--nice-text-muted, #94a3b8)"},children:s.label})}):s.type==="line"?e.jsx("div",{style:{..._,borderBottom:`${s.style.borderWidth??1}px ${s.style.borderStyle??"solid"} ${s.style.borderColor??"var(--nice-text-primary, #0f172a)"}`}}):e.jsx("div",{style:_,children:k})},$a=({template:s,data:r,zoom:c})=>{var g;const[o,k]=(()=>{const[y,N]=Se[s.paperSize]??Se.A4;return s.orientation==="landscape"?[N*K*c,y*K*c]:[y*K*c,N*K*c]})(),v=s.margins,_=s.sections.flatMap(y=>y.fields);return e.jsxs("div",{className:H.page,style:{width:o,minHeight:k},children:[e.jsx("div",{style:{position:"absolute",top:v.top*c*K,left:v.left*c*K,right:v.right*c*K,bottom:v.bottom*c*K},children:_.map(y=>e.jsx(Ra,{field:y,data:r,zoom:c},y.id))}),(g=s.watermarks)==null?void 0:g.map(y=>e.jsx("div",{className:H.watermark,style:{opacity:y.opacity,transform:`rotate(${y.angle}deg)`,fontSize:(y.fontSize??48)*c},children:y.type==="text"?y.text:e.jsx("img",{src:y.imageUrl,alt:"wm",style:{maxWidth:200*c}})},y.id))]})},Pa=({template:s,entities:r=[],sampleData:c,onPrint:o,className:k,style:v,theme:_="light",asPopup:g=!0,open:y,onClose:N})=>{const{t:p}=h.useNiceTranslation(),[i,w]=f.useState(0),[I,B]=f.useState(.8),[a,n]=f.useState(!0),d=y!==void 0,u=d?y:a,L=()=>{d||n(!1),N==null||N()};f.useEffect(()=>{if(!(!g||!u))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[g,u]);const x=f.useMemo(()=>r.length>0?r:c?[c.data]:[{}],[r,c]),R=x[i]??{},T=f.useRef(null),z=f.useRef(null);if(h.useOverlayFocus(T,{open:g&&u,onClose:L}),h.useIntent(["sectionPrev","sectionNext","pagePrev","pageNext"],P=>{if(P.intent==="sectionPrev"||P.intent==="sectionNext"){const b=P.intent==="sectionNext"?1:-1;w(W=>Math.min(Math.max(W+b,0),x.length-1))}else{if(P.source==="keyboard")return!1;{const b=P.intent==="pageNext"?.1:-.1;B(W=>Math.min(2.5,Math.max(.3,W+b)))}}},{ref:z,enabled:!g||u}),h.useInputHints(z,!g||u?[...x.length>1?[{intent:"sectionPrev",label:p("printPreview.previousPage","Previous page")},{intent:"sectionNext",label:p("printPreview.nextPage","Next page")}]:[],{intent:"pageNext",label:p("printPreview.zoomIn","Zoom in")},{intent:"pagePrev",label:p("printPreview.zoomOut","Zoom out")}]:[]),g&&!u)return null;const O=e.jsxs("div",{ref:z,className:`${H.root} ${_==="dark"?H.dark:""} ${k??""}`,style:v,children:[e.jsxs("div",{className:H.headerBar,children:[e.jsxs("div",{className:H.entityNav,children:[x.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:H.navBtn,disabled:i===0,onClick:()=>w(P=>P-1),"aria-label":p("printPreview.previousPage","Previous page"),children:e.jsx(h.NiceIcon,{name:"chevron-left",size:14})}),e.jsxs("span",{className:H.navLabel,children:[i+1," / ",x.length]}),e.jsx("button",{className:H.navBtn,disabled:i>=x.length-1,onClick:()=>w(P=>P+1),"aria-label":p("printPreview.nextPage","Next page"),children:e.jsx(h.NiceIcon,{name:"chevron-right",size:14})})]}),r.length===0&&c&&e.jsx("span",{className:H.sampleBadge,children:p("printing.sampleData","Sample data")})]}),e.jsxs("div",{className:H.zoomBar,children:[e.jsx("button",{className:H.zoomBtn,onClick:()=>B(P=>Math.max(.3,P-.1)),"aria-label":p("printPreview.zoomOut","Zoom out"),children:e.jsx(h.NiceIcon,{name:"minus",size:14})}),e.jsxs("span",{className:H.zoomLabel,children:[Math.round(I*100),"%"]}),e.jsx("button",{className:H.zoomBtn,onClick:()=>B(P=>Math.min(2.5,P+.1)),"aria-label":p("printPreview.zoomIn","Zoom in"),children:e.jsx(h.NiceIcon,{name:"plus",size:14})}),e.jsx("button",{className:H.zoomBtn,onClick:()=>B(.8),title:p("printing.fit","Fit"),"aria-label":p("printing.fit","Fit"),children:e.jsx(h.NiceIcon,{name:"expand",size:14})})]}),e.jsxs("div",{style:{display:"flex",gap:8},children:[e.jsx("button",{className:H.printBtn,onClick:()=>o==null?void 0:o({copies:1,printerId:""}),children:p("printPreview.print","Print")}),g&&e.jsx("button",{type:"button",className:H.zoomBtn,onClick:L,"aria-label":p("close","Close"),title:p("close","Close"),children:e.jsx(h.NiceIcon,{name:"close",size:16})})]})]}),e.jsx("div",{className:H.canvas,children:e.jsx($a,{template:s,data:R,zoom:I})}),e.jsxs("div",{className:H.footerBar,children:[e.jsx("span",{children:s.name}),e.jsxs("span",{children:[s.paperSize," ·"," ",s.orientation==="portrait"?p("printing.portrait","Portrait"):p("printing.landscape","Landscape")]}),s.sections.reduce((P,b)=>P+b.fields.length,0)," ",p("printing.fields","fields")]})]});if(!g)return O;const U=e.jsx("div",{style:{position:"fixed",inset:0,background:"color-mix(in srgb, var(--nice-text-primary, #000) 50%, transparent)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,padding:24},onMouseDown:P=>{P.target===P.currentTarget&&L()},role:"presentation",children:e.jsx("div",{ref:T,role:"dialog","aria-modal":"true","aria-label":s.name,style:{background:"var(--nice-bg-elevated, var(--nice-bg-primary, #ffffff))",borderRadius:12,boxShadow:"0 20px 60px color-mix(in srgb, var(--nice-text-primary, #000) 30%, transparent)",maxWidth:"90vw",maxHeight:"90vh",overflow:"auto"},children:O})});return Oe.createPortal(U,document.body)},Aa="_root_1f4bm_1",Ea="_dark_1f4bm_23",Ma="_statsBar_1f4bm_37",Fa="_stat_1f4bm_37",Ha="_dot_1f4bm_75",Ga="_statPrinting_1f4bm_87",Oa="_statQueued_1f4bm_93",qa="_statDone_1f4bm_99",Wa="_statError_1f4bm_105",Ya="_toolbar_1f4bm_115",Ua="_filterTabs_1f4bm_139",Va="_filterTab_1f4bm_139",Ka="_filterTabActive_1f4bm_177",Xa="_filterCount_1f4bm_187",Ja="_bulkActions_1f4bm_211",Za="_bulkCount_1f4bm_223",Qa="_bulkBtn_1f4bm_231",ei="_bulkBtnRemove_1f4bm_255",ti="_jobList_1f4bm_273",si="_listHeader_1f4bm_281",ni="_headerLabel_1f4bm_313",ai="_jobRow_1f4bm_323",ii="_jobRowSelected_1f4bm_359",ri="_jobCheckbox_1f4bm_373",oi="_statusBadge_1f4bm_387",li="_pulse_1f4bm_1",ci="_jobInfo_1f4bm_479",di="_jobName_1f4bm_485",mi="_jobMeta_1f4bm_497",pi="_jobTime_1f4bm_513",ui="_jobDuration_1f4bm_519",hi="_jobError_1f4bm_525",gi="_progressBar_1f4bm_539",_i="_progressFill_1f4bm_553",bi="_copiesEditor_1f4bm_569",xi="_copiesBtn_1f4bm_581",yi="_copiesValue_1f4bm_621",fi="_jobActions_1f4bm_635",vi="_actionBtn_1f4bm_645",ji="_removeBtn_1f4bm_677",Ni="_emptyState_1f4bm_695",j={root:Aa,dark:Ea,statsBar:Ma,stat:Fa,dot:Ha,statPrinting:Ga,statQueued:Oa,statDone:qa,statError:Wa,toolbar:Ya,filterTabs:Ua,filterTab:Va,filterTabActive:Ka,filterCount:Xa,bulkActions:Ja,bulkCount:Za,bulkBtn:Qa,bulkBtnRemove:ei,jobList:ti,listHeader:si,headerLabel:ni,jobRow:ai,jobRowSelected:ii,jobCheckbox:ri,statusBadge:oi,"badge-queued":"_badge-queued_1f4bm_405","badge-printing":"_badge-printing_1f4bm_413",pulse:li,"badge-done":"_badge-done_1f4bm_423","badge-error":"_badge-error_1f4bm_431","badge-paused":"_badge-paused_1f4bm_439","badge-cancelled":"_badge-cancelled_1f4bm_447",jobInfo:ci,jobName:di,jobMeta:mi,jobTime:pi,jobDuration:ui,jobError:hi,progressBar:gi,progressFill:_i,copiesEditor:bi,copiesBtn:xi,copiesValue:yi,jobActions:fi,actionBtn:vi,removeBtn:ji,emptyState:Ni},wi=[],Ie={queued:"Queued",printing:"Printing",done:"Printed",error:"Error",paused:"Paused",cancelled:"Cancelled"},xe=(s,r)=>Ie[r]?s(`printing.status.${r}`,Ie[r]):r;function ki(s,r){try{return new Date(r).toLocaleTimeString(s,{hour:"2-digit",minute:"2-digit"})}catch{return r}}function Si(s){const r=Math.floor((Date.now()-new Date(s).getTime())/1e3);if(r<60)return`${r}s`;const c=Math.floor(r/60);if(c<60)return`${c}m ${r%60}s`;const o=Math.floor(c/60);return o<24?`${o}h ${c%60}m`:`${Math.floor(o/24)}d ${o%24}h`}const Ii=({jobs:s})=>{const{t:r}=h.useNiceTranslation(),c=s.filter(_=>_.status==="printing").length,o=s.filter(_=>_.status==="queued").length,k=s.filter(_=>_.status==="done").length,v=s.filter(_=>_.status==="error").length;return e.jsxs("div",{className:j.statsBar,children:[e.jsxs("span",{className:`${j.stat} ${j.statPrinting}`,children:[e.jsx("span",{className:j.dot}),r("printing.stats.active","Printing"),": ",e.jsx("strong",{children:c})]}),e.jsxs("span",{className:`${j.stat} ${j.statQueued}`,children:[e.jsx("span",{className:j.dot}),r("printing.stats.queued","In queue"),": ",e.jsx("strong",{children:o})]}),e.jsxs("span",{className:`${j.stat} ${j.statDone}`,children:[e.jsx("span",{className:j.dot}),r("printing.stats.done","Done"),": ",e.jsx("strong",{children:k})]}),v>0&&e.jsxs("span",{className:`${j.stat} ${j.statError}`,children:[e.jsx("span",{className:j.dot}),r("printing.stats.errors","Errors"),": ",e.jsx("strong",{children:v})]})]})},Ci=({job:s,index:r,total:c,printers:o,selected:k,onSelect:v,onUpdate:_,onRemove:g,onPrint:y,onReorder:N})=>{const{t:p,lang:i}=h.useNiceTranslation(),w=o.find(a=>a.id===s.options.printerId),I=r>0&&s.status==="queued",B=r<c-1&&s.status==="queued";return e.jsxs("div",{className:`${j.jobRow} ${k?j.jobRowSelected:""} ${j[`status-${s.status}`]??""}`,children:[e.jsx("input",{type:"checkbox",className:j.jobCheckbox,checked:k,onChange:()=>v(s.id)}),e.jsx("span",{className:`${j.statusBadge} ${j[`badge-${s.status}`]}`,children:xe(p,s.status)}),e.jsxs("div",{className:j.jobInfo,children:[e.jsx("div",{className:j.jobName,children:s.templateName??s.templateId}),e.jsxs("div",{className:j.jobMeta,children:[s.entityLabel&&e.jsx("span",{children:s.entityLabel}),w&&e.jsxs("span",{children:[e.jsx(h.NiceIcon,{name:"printer",size:12})," ",w.name]}),e.jsxs("span",{children:["×",s.options.copies]}),s.createdAt&&e.jsx("span",{className:j.jobTime,children:ki(i,s.createdAt)}),s.startedAt&&s.status!=="done"&&e.jsx("span",{className:j.jobDuration,children:Si(s.startedAt)})]}),s.status==="printing"&&s.progress!=null&&e.jsx("div",{className:j.progressBar,children:e.jsx("div",{className:j.progressFill,style:{width:`${s.progress}%`}})}),s.status==="error"&&s.errorMessage&&e.jsx("div",{className:j.jobError,children:s.errorMessage})]}),e.jsxs("div",{className:j.copiesEditor,children:[e.jsx("button",{className:j.copiesBtn,disabled:s.options.copies<=1,"aria-label":p("printing.copies.decrease","One copy fewer"),onClick:()=>_(s.id,{options:{...s.options,copies:s.options.copies-1}}),children:e.jsx(h.NiceIcon,{name:"minus",size:12})}),e.jsx("span",{className:j.copiesValue,children:s.options.copies}),e.jsx("button",{className:j.copiesBtn,"aria-label":p("printing.copies.increase","One copy more"),onClick:()=>_(s.id,{options:{...s.options,copies:s.options.copies+1}}),children:e.jsx(h.NiceIcon,{name:"plus",size:12})})]}),e.jsxs("div",{className:j.jobActions,children:[I&&e.jsx("button",{className:j.actionBtn,title:p("printing.action.moveUp","Move up"),onClick:()=>N(r,r-1),children:e.jsx(h.NiceIcon,{name:"arrow-up",size:14})}),B&&e.jsx("button",{className:j.actionBtn,title:p("printing.action.moveDown","Move down"),onClick:()=>N(r,r+1),children:e.jsx(h.NiceIcon,{name:"arrow-down",size:14})}),s.status==="queued"&&e.jsx("button",{className:j.actionBtn,title:p("printing.action.printNow","Print now"),onClick:()=>y(s.id),children:e.jsx(h.NiceIcon,{name:"play",size:14})}),s.status==="printing"&&e.jsx("button",{className:j.actionBtn,title:p("printing.action.pause","Pause"),onClick:()=>_(s.id,{status:"paused"}),children:e.jsx(h.NiceIcon,{name:"pause",size:14})}),s.status==="paused"&&e.jsx("button",{className:j.actionBtn,title:p("printing.action.resume","Resume"),onClick:()=>_(s.id,{status:"queued"}),children:e.jsx(h.NiceIcon,{name:"play",size:14})}),e.jsx("button",{className:`${j.actionBtn} ${j.removeBtn}`,title:p("printing.action.remove","Remove"),onClick:()=>g(s.id),children:e.jsx(h.NiceIcon,{name:"close",size:14})})]})]})},Bi=({jobs:s=wi,printers:r=[],onJobUpdate:c,onJobRemove:o,onJobReorder:k,onJobPrint:v,onBulkRemove:_,onBulkPrint:g,maxHeight:y=500,className:N,style:p,theme:i="light"})=>{const{t:w}=h.useNiceTranslation(),[I,B]=f.useState(new Set),[a,n]=f.useState("all"),d=a==="all"?s:s.filter(T=>T.status===a),u=f.useCallback(T=>{B(z=>{const O=new Set(z);return O.has(T)?O.delete(T):O.add(T),O})},[]),L=f.useCallback(()=>{I.size===d.length?B(new Set):B(new Set(d.map(T=>T.id)))},[d,I.size]),x=f.useCallback(()=>{_==null||_(Array.from(I)),B(new Set)},[I,_]),R=f.useCallback(()=>{g==null||g(Array.from(I)),B(new Set)},[I,g]);return e.jsxs("div",{className:`${j.root} ${i==="dark"?j.dark:""} ${N??""}`,style:p,children:[e.jsx(Ii,{jobs:s}),e.jsxs("div",{className:j.toolbar,children:[e.jsx("div",{className:j.filterTabs,children:["all","queued","printing","done","error"].map(T=>e.jsxs("button",{className:`${j.filterTab} ${a===T?j.filterTabActive:""}`,onClick:()=>n(T),children:[T==="all"?w("printing.filter.all","All"):xe(w,T),e.jsx("span",{className:j.filterCount,children:T==="all"?s.length:s.filter(z=>z.status===T).length})]},T))}),I.size>0&&e.jsxs("div",{className:j.bulkActions,children:[e.jsxs("span",{className:j.bulkCount,children:[I.size," ",w("printing.bulk.selected","selected")]}),g&&e.jsxs("button",{className:j.bulkBtn,onClick:R,children:[e.jsx(h.NiceIcon,{name:"printer",size:14})," ",w("printing.bulk.print","Print selected")]}),_&&e.jsxs("button",{className:`${j.bulkBtn} ${j.bulkBtnRemove}`,onClick:x,children:[e.jsx(h.NiceIcon,{name:"trash",size:14})," ",w("printing.bulk.remove","Remove selected")]})]})]}),e.jsx("div",{className:j.jobList,style:{maxHeight:y},children:d.length===0?e.jsx("div",{className:j.emptyState,children:a==="all"?w("printing.empty.queue","No jobs in the queue"):`${w("printing.empty.filtered","No jobs with status")} "${xe(w,a)}"`}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:j.listHeader,children:[e.jsx("input",{type:"checkbox",onChange:L,checked:I.size===d.length&&d.length>0}),e.jsx("span",{className:j.headerLabel,children:w("printing.col.job","Job")}),e.jsx("span",{className:j.headerLabel,children:w("printing.col.copies","Copies")}),e.jsx("span",{className:j.headerLabel,children:w("printing.col.actions","Actions")})]}),d.map((T,z)=>e.jsx(Ci,{job:T,index:s.indexOf(T),total:s.length,printers:r,selected:I.has(T.id),onSelect:u,onUpdate:c,onRemove:o,onPrint:v,onReorder:k},T.id))]})})]})},Li="_container_1f76z_1",Ti="_buttonGroup_1f76z_19",zi="_trigger_1f76z_31",Di="_triggerDisabled_1f76z_57",Ri="_mainAction_1f76z_151",$i="_dropdownToggle_1f76z_175",Pi="_chevron_1f76z_201",Ai="_chevronUp_1f76z_211",Ei="_dropdown_1f76z_175",Mi="_dark_1f76z_245",Fi="_section_1f76z_257",Hi="_sectionLabel_1f76z_263",Gi="_divider_1f76z_283",Oi="_copiesRow_1f76z_301",qi="_copiesBtn_1f76z_311",Wi="_copiesValue_1f76z_351",Yi="_printerSelect_1f76z_375",Ui="_printerStatus_1f76z_415",Vi="_printerDot_1f76z_429",Ki="_printerStatusLabel_1f76z_463",Xi="_submitBtn_1f76z_473",Ji="_spinner_1f76z_515",Zi="_spin_1f76z_515",$={container:Li,buttonGroup:Ti,trigger:zi,triggerDisabled:Di,"variant-primary":"_variant-primary_1f76z_69","variant-secondary":"_variant-secondary_1f76z_83","variant-ghost":"_variant-ghost_1f76z_99","size-sm":"_size-sm_1f76z_117","size-md":"_size-md_1f76z_127","size-lg":"_size-lg_1f76z_137",mainAction:Ri,dropdownToggle:$i,chevron:Pi,chevronUp:Ai,dropdown:Ei,dark:Mi,section:Fi,sectionLabel:Hi,divider:Gi,copiesRow:Oi,copiesBtn:qi,copiesValue:Wi,printerSelect:Yi,printerStatus:Ui,printerDot:Vi,"dot-ready":"_dot-ready_1f76z_439","dot-busy":"_dot-busy_1f76z_445","dot-offline":"_dot-offline_1f76z_451","dot-error":"_dot-error_1f76z_457",printerStatusLabel:Ki,submitBtn:Xi,spinner:Ji,spin:Zi},Qi=({onPrint:s,printers:r=[],defaultPrinterId:c,defaultCopies:o=1,disabled:k=!1,loading:v=!1,variant:_="primary",size:g="md",label:y,className:N,style:p,theme:i="light"})=>{var P;const{t:w}=h.useNiceTranslation(),I=y??w("printing.print","Print"),[B,a]=f.useState(!1),[n,d]=f.useState(o),[u,L]=f.useState(c??((P=r[0])==null?void 0:P.id)??""),x=f.useRef(null);f.useEffect(()=>{if(!B)return;const b=W=>{x.current&&!x.current.contains(W.target)&&a(!1)};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[B]);const R=f.useCallback(()=>{s({copies:n,printerId:u}),a(!1)},[n,u,s]),T=f.useCallback(()=>d(b=>Math.min(99,b+1)),[]),z=f.useCallback(()=>d(b=>Math.max(1,b-1)),[]),O=[$.container,i==="dark"?$.dark:"",N??""].filter(Boolean).join(" "),U=[$.trigger,$[`variant-${_}`],$[`size-${g}`],k||v?$.triggerDisabled:""].filter(Boolean).join(" ");return e.jsxs("div",{ref:x,className:O,style:p,children:[e.jsxs("div",{className:$.buttonGroup,children:[e.jsxs("button",{className:`${U} ${$.mainAction}`,disabled:k||v,onClick:R,"aria-label":I,children:[v?e.jsx("span",{className:$.spinner}):e.jsx(h.NiceIcon,{name:"printer",size:16}),e.jsx("span",{children:I})]}),e.jsx("button",{className:`${U} ${$.dropdownToggle}`,disabled:k||v,onClick:()=>a(b=>!b),"aria-label":w("printing.options","Print options"),"aria-expanded":B,children:e.jsx("span",{className:`${$.chevron} ${B?$.chevronUp:""}`,children:e.jsx(h.NiceIcon,{name:"chevron-down",size:12})})})]}),B&&e.jsxs("div",{className:$.dropdown,children:[e.jsxs("div",{className:$.section,children:[e.jsx("label",{className:$.sectionLabel,children:w("printing.copies.label","Copies")}),e.jsxs("div",{className:$.copiesRow,children:[e.jsx("button",{className:$.copiesBtn,onClick:z,disabled:n<=1,"aria-label":w("printing.copies.decrease","One copy fewer"),children:e.jsx(h.NiceIcon,{name:"minus",size:12})}),e.jsx("span",{className:$.copiesValue,children:n}),e.jsx("button",{className:$.copiesBtn,onClick:T,disabled:n>=99,"aria-label":w("printing.copies.increase","One copy more"),children:e.jsx(h.NiceIcon,{name:"plus",size:12})})]})]}),e.jsx("div",{className:$.divider}),r.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:$.section,children:[e.jsx("label",{className:$.sectionLabel,children:w("printing.printer","Printer")}),e.jsx("select",{className:$.printerSelect,value:u,onChange:b=>L(b.target.value),children:r.map(b=>e.jsxs("option",{value:b.id,disabled:b.status==="offline"||!b.isOnline&&b.status==null,children:[b.name," ",b.status==="offline"||!b.isOnline&&b.status==null?w("printing.offline","(Offline)"):b.status==="busy"?`(${w("printing.printerBusyLabel","Busy")})`:""]},b.id))}),r.find(b=>b.id===u)&&e.jsx("div",{className:$.printerStatus,children:(()=>{const b=r.find(me=>me.id===u),W=b.status??(b.isOnline?"ready":"offline");return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:`${$.printerDot} ${$[`dot-${W}`]}`}),e.jsx("span",{className:$.printerStatusLabel,children:W==="ready"?w("printing.printerReady","Ready"):W==="busy"?w("printing.printerBusyLabel","Busy"):W==="offline"?w("printing.offline2","Offline"):w("printing.printerError","Error")})]})})()})]}),e.jsx("div",{className:$.divider})]}),e.jsx("div",{className:$.section,children:e.jsx("button",{className:$.submitBtn,onClick:R,disabled:k||v||r.length>0&&(()=>{const b=r.find(W=>W.id===u);return b!=null&&(b.status==="offline"||!b.isOnline&&b.status==null)})(),children:v?w("printing.printing","Printing…"):e.jsxs(e.Fragment,{children:[e.jsx(h.NiceIcon,{name:"printer",size:14})," ",I,n>1?` (${n})`:""]})})})]})]})};exports.NicePrintButton=Qi;exports.NicePrintPreview=Pa;exports.NicePrintQueue=Bi;exports.NiceTemplateBrowser=_a;exports.NiceTemplateEditor=Pn;
|