@opengis/form 0.0.148 → 0.0.149
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.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(ge,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core"),require("lucide-vue-next")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core","lucide-vue-next"],e):(ge=typeof globalThis<"u"?globalThis:ge||self,e(ge.FormBuilder={},ge.Vue,ge.OpenGISCore,ge.lucide))})(this,function(ge,e,pe,P){"use strict";const xo=e.defineComponent({__name:"vs-info-tooltip",props:{text:{}},setup(o){const t=o,n=e.ref(!1),r=e.ref({top:"0px",left:"0px"});function l(s){if(!t.text)return;const i=s.currentTarget.getBoundingClientRect();r.value={top:`${i.bottom+4}px`,left:`${Math.min(i.left,window.innerWidth-230)}px`},n.value=!0}function a(){n.value=!1}return(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("span",{class:"inline-flex items-center",onMouseenter:l,onMouseleave:a},[e.renderSlot(s.$slots,"default",{},()=>[e.createVNode(e.unref(P.Info),{class:"h-4 w-4 text-gray-400 cursor-help"})])],32),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[n.value&&s.text?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(r.value),class:"fixed z-[9999] max-w-xs p-2 bg-gray-900 text-white text-xs rounded-lg shadow-lg pointer-events-none"},e.toDisplayString(s.text),5)):e.createCommentVNode("",!0)]))],64))}}),Gr={class:"w-full relative"},Yr={key:0,class:"text-[14px] font-medium text-gray-900 mb-2 flex items-center gap-1"},Xr={class:"opacity-100"},Zr={key:0,class:"text-red-500 text-[14px]"},Jr={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},Qr=e.defineComponent({__name:"vs-layout-default",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){const t=o,n=e.computed(()=>typeof t.item?.label=="string"&&t.item.label?t.item.label:t.item?.ua||t.label||t.ua),r=e.computed(()=>!!n.value),l=e.computed(()=>!!t.item?.rules?.includes("required")),a=e.computed(()=>t.item?.info||"");return(s,i)=>(e.openBlock(),e.createElementBlock("div",Gr,[r.value?(e.openBlock(),e.createElementBlock("div",Yr,[e.createElementVNode("span",Xr,e.toDisplayString(n.value),1),l.value?(e.openBlock(),e.createElementBlock("span",Zr,"*")):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(xo,{key:1,text:a.value},null,8,["text"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"default",e.mergeProps(s.$attrs,{class:{"opacity-60":s.item.disabled}})),s.error?(e.openBlock(),e.createElementBlock("span",Jr,e.toDisplayString(s.error),1)):e.createCommentVNode("",!0)]))}}),el={class:"w-full relative flex flex-row items-center gap-2"},tl={key:0,class:"text-red-500 text-[14px]"},nl={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},ol=e.defineComponent({__name:"vs-layout-horizontal",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{default:()=>({container:12,label:3})}},setup(o){const t=o,n=e.computed(()=>t.item?.label||t.label||t.ua),r=e.computed(()=>t.item?.info||""),l=e.computed(()=>t.columns??{container:12,label:3}),a=e.computed(()=>{const{container:d,label:u}=l.value;return!d||d<=0?0:Math.min(Math.max(u??0,0),d)/d}),s=e.computed(()=>t.item?.type==="html"||a.value<=0?!1:!!n.value),i=e.computed(()=>{if(!s.value)return{};const d=`${a.value*100}%`;return{flexBasis:d,maxWidth:d}}),c=e.computed(()=>{const{container:d,label:u}=l.value;if(!d||d<=0)return{};if(t.item?.type==="html")return{flexBasis:"100%",maxWidth:"100%"};if(!s.value)return{flexBasis:"100%",maxWidth:"100%"};const p=Math.max(d-Math.max(u??0,0),0)/d;if(!p)return{};const g=`${p*100}%`;return{flexBasis:g,maxWidth:g}});return(d,u)=>(e.openBlock(),e.createElementBlock("div",el,[s.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-sm text-gray-900 font-medium flex shrink-0 items-center gap-1",style:e.normalizeStyle(i.value)},[e.createTextVNode(e.toDisplayString(n.value)+" ",1),d.item?.rules?.includes("required")&&n.value?(e.openBlock(),e.createElementBlock("span",tl,"*")):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(xo,{key:1,text:r.value},null,8,["text"])):e.createCommentVNode("",!0)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"flex-1 min-w-0",style:e.normalizeStyle(c.value)},[e.renderSlot(d.$slots,"default",e.normalizeProps(e.guardReactiveProps(d.$attrs)))],4),d.error?(e.openBlock(),e.createElementBlock("span",nl,e.toDisplayString(d.error),1)):e.createCommentVNode("",!0)]))}}),rl={class:"w-full relative"},ll={key:0,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},al=e.defineComponent({__name:"vs-layout-inline",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",rl,[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps(t.$attrs))),t.error?(e.openBlock(),e.createElementBlock("span",ll,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0)]))}}),sl={class:"flex-1 min-w-0"},il={key:0,class:"text-sm font-medium text-slate-700 dark:text-slate-200 flex items-center gap-1"},cl={class:"truncate"},dl={key:0,class:"text-red-500 text-[14px]"},ul=["innerHTML"],pl={key:0,class:"mt-1 text-xs text-red-500"},fl={default:Qr,horizontal:ol,inline:al,settings:e.defineComponent({__name:"vs-layout-settings",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){const t=o,n=e.ref("uk");e.computed(()=>(t.item??{})?.[n.value]??t.ua??t.label??"");const r=e.computed(()=>t.item?.description??""),l=e.computed(()=>Array.isArray(t.item?.rules)&&t.item.rules.includes("required")),a=e.computed(()=>(typeof t.error=="string"?t.error:"")??""),s=()=>{const i=typeof localStorage<"u"?localStorage.getItem("locale"):null;n.value=i||"uk"};return e.onMounted(()=>{try{typeof localStorage<"u"&&localStorage.locale&&(n.value=localStorage.locale)}catch{}window.addEventListener("storage",s)}),e.onUnmounted(()=>{window.removeEventListener("storage",s)}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-full relative",{"opacity-60":i.item?.disabled}])},[e.createElementVNode("div",{class:e.normalizeClass(["gap-2 md:flex-row md:items-center md:justify-between",[["switcher","native-select"].includes(i.item.type)?"flex flex-col":""]])},[e.createElementVNode("div",sl,[i.ua||i.label?(e.openBlock(),e.createElementBlock("p",il,[e.createElementVNode("span",cl,e.toDisplayString(i.item[n.value]||i.ua||i.label),1),l.value?(e.openBlock(),e.createElementBlock("span",dl,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",{key:1,class:"text-xs text-slate-500 dark:text-slate-400",innerHTML:r.value},null,8,ul)):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:e.normalizeClass(["w-full",["select","native-select"].includes(i.item.type)?"md:w-[30%]":"md:w-auto"])},[e.renderSlot(i.$slots,"default",e.normalizeProps(e.guardReactiveProps(i.$attrs)))],2)],2),a.value?(e.openBlock(),e.createElementBlock("p",pl,e.toDisplayString(a.value),1)):e.createCommentVNode("",!0)],2))}})};function ze(o){return{inputClass:e.computed(()=>{const n=`disabled:opacity-50 disabled:cursor-not-allowed outline-none focus:ring-2 focus:ring-ring focus:ring-${o?.primaryColor||"blue"}-500 border border-solid border-stone-200 rounded-md text-sm text-stone-800 placeholder:text-stone-400 `;return o?.size==="sm"?`${n}h-[32px]`:`${n}h-[38px]`})}}const ml=["placeholder","disabled"],hl=e.defineComponent({__name:"vs-input-password",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??"");return(s,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"password","onUpdate:modelValue":i[0]||(i[0]=c=>r.value=c),placeholder:a.value,disabled:l.value,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":s.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,ml)),[[e.vModelText,r.value]])}}),gl=["placeholder","disabled","maxlength","minlength"],Rt=e.defineComponent({__name:"vs-input-text",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??""),s=e.computed(()=>t.maxlength??void 0),i=e.computed(()=>t.minlength??void 0);function c(){typeof r.value=="string"&&(r.value=r.value.trim())}return(d,u)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"text","onUpdate:modelValue":u[0]||(u[0]=p=>r.value=p),placeholder:a.value,disabled:l.value,maxlength:s.value,minlength:i.value,onBlur:c,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[d.customClass,e.unref(n),{"!border-red-600":d.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,gl)),[[e.vModelText,r.value]])}}),yl=["step","placeholder","disabled","min","max"],wo=e.defineComponent({__name:"vs-input-number",props:e.mergeModels({style:{type:Object,default:()=>({})},placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1},min:{type:Number,default:void 0},max:{type:Number,default:void 0},step:{type:[Number,String],default:void 0}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useAttrs(),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!t.disabled),s=u=>{if(u==null||u==="")return;const p=typeof u=="string"?u.trim().replace(",","."):u,g=Number(p);return Number.isFinite(g)?g:void 0},i=e.computed(()=>s(t.min??r.min)),c=e.computed(()=>s(t.max??r.max)),d=e.computed(()=>{if(t.step!==void 0&&t.step!==null&&t.step!=="")return t.step;const u=r.step;return typeof u=="number"||typeof u=="string"?u:"any"});return(u,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"number",step:d.value,"onUpdate:modelValue":p[0]||(p[0]=g=>l.value=g),placeholder:o.placeholder,disabled:a.value,class:e.normalizeClass(["py-1.5 px-3 block w-full bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"},min:i.value,max:c.value},null,10,yl)),[[e.vModelText,l.value]])}}),Tn=o=>!!String(o??"").trim(),Ot=o=>o?.color?String(o.color):"",Ut=o=>{const t=o?.icon;if(typeof t=="string")return t;const n=o?.imgUrl;return typeof n=="string"?n:""},Ht=o=>{const t=o?.icon;return t&&typeof t!="string"?t:null},bl={class:"flex items-center gap-[4px]"},kl=["value","id","disabled"],xl=["for"],wl=["innerHTML"],_l={key:1,class:"text-[14px] text-gray-700 flex items-center gap-2 dark:text-neutral-400"},Cl=["src"],vl=e.defineComponent({__name:"vs-checkbox-default",props:{value:{default:""},label:{default:""},html:{default:""},disabled:{type:Boolean,default:!1},id:{},modelValue:{default:""},info:{},error:{},option:{default:null}},emits:["update:modelValue"],setup(o,{emit:t}){const n=t,r=o,l=e.computed({get:()=>r.modelValue,set:h=>n("update:modelValue",h)}),a=e.computed(()=>!!r.disabled),s=e.computed(()=>Ut(r.option)),i=e.computed(()=>Ht(r.option)),c=e.computed(()=>Ot(r.option)),d=e.computed(()=>!!(c.value&&!s.value&&!i.value)),u=e.computed(()=>!!(s.value&&c.value)),p=e.computed(()=>c.value?{color:c.value}:void 0),g=e.computed(()=>{if(!(!s.value||!c.value))return{backgroundColor:c.value,WebkitMaskImage:`url(${s.value})`,maskImage:`url(${s.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(h,m)=>(e.openBlock(),e.createElementBlock("div",bl,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",value:h.value,"onUpdate:modelValue":m[0]||(m[0]=b=>l.value=b),class:e.normalizeClass(["shrink-0 border border-solid hidden border-gray-700 w-3.5 h-3.5 rounded text-blue-600 focus:ring-offset-0 dark:bg-neutral-800 dark:border-neutral-700 cursor-pointer",{"!cursor-not-allowed":a.value}]),id:h.id,disabled:a.value},null,10,kl),[[e.vModelCheckbox,l.value]]),e.createElementVNode("label",{for:h.id,class:e.normalizeClass(["flex flex-1 checkbox-label items-center gap-x-2 cursor-pointer text-sm text-gray-800 dark:text-neutral-300",{"!cursor-not-allowed":a.value}])},[e.createElementVNode("div",{class:e.normalizeClass(["h-[16px] text-white w-[16px] flex items-center justify-center shrink-0 border rounded",[l.value?"bg-blue-600 border-blue-600":"bg-white border-gray-600",h.error?"border-red-600":""]])},[e.createVNode(e.unref(P.Check),{class:"h-4 w-4"})],2),h.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:h.html},null,8,wl)):(e.openBlock(),e.createElementBlock("span",_l,[d.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:c.value})},null,4)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(g.value)},null,4)):s.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:s.value,alt:"icon"},null,8,Cl)):i.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(p.value)},null,8,["style"])):e.createCommentVNode("",!0),e.renderSlot(h.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(h.label),1)])]))],10,xl)]))}}),El=["name","value","disabled"],Bl=["innerHTML"],Vl={key:1,class:"flex items-center gap-[6px] text-[14px]"},Sl={key:2,class:"text-[16px] inline-flex items-center justify-center"},$l=["src"],Nl=e.defineComponent({__name:"vs-checkbox-buttons",props:{value:{type:[String,Number,Boolean],default:""},label:{default:""},html:{default:""},modelValue:{default:""},disabled:{type:Boolean},id:{},icon:{},imgUrl:{},style:{},option:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=e.computed({get:()=>n.modelValue,set:b=>{r("update:modelValue",b)}}),a=e.computed(()=>Array.isArray(l.value)?l.value.includes(n.value):l.value===!0||l.value===n.value),s=e.computed(()=>n.style?.size==="xs"?"p-1.5 text-xs":n.style?.size==="lg"?"p-3.5 text-[20px]":"p-2.5 text-xs"),i=e.computed(()=>({...n.option??{},icon:n.option?.icon??n.icon,imgUrl:n.option?.imgUrl??n.imgUrl,color:n.option?.color})),c=e.computed(()=>Ut(i.value)),d=e.computed(()=>Ht(i.value)),u=e.computed(()=>Ot(i.value)),p=e.computed(()=>!!(u.value&&!c.value&&!d.value)),g=e.computed(()=>!!(c.value&&u.value)),h=e.computed(()=>u.value?{color:u.value}:void 0),m=e.computed(()=>{if(!(!c.value||!u.value))return{backgroundColor:u.value,WebkitMaskImage:`url(${c.value})`,maskImage:`url(${c.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(b,k)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["group relative flex justify-center items-center gap-x-3 text-center bg-white text-gray-800 ring-ring ring-2 cursor-pointer rounded-lg",[s.value,a.value?"ring-blue-500":"border border-gray-200 ring-transparent"]])},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"hidden",name:b.id,value:b.value,"onUpdate:modelValue":k[0]||(k[0]=v=>l.value=v),disabled:b.disabled},null,8,El),[[e.vModelCheckbox,l.value]]),b.html?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-full",innerHTML:b.html},null,8,Bl)):(e.openBlock(),e.createElementBlock("span",Vl,[p.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:u.value})},null,4)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(m.value)},null,4)):c.value||d.value?(e.openBlock(),e.createElementBlock("span",Sl,[c.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.value,width:"16",height:"16",alt:"icon"},null,8,$l)):d.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.value),{key:1,class:"h-4 w-4",style:e.normalizeStyle(h.value)},null,8,["style"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(b.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(b.label),1)])]))],2))}}),Al={class:"flex items-center"},Ln=e.defineComponent({__name:"vs-input-checkbox-item",props:{value:{default:""},label:{default:""},labelHtml:{default:""},disabled:{type:Boolean,default:!1},view:{default:"default"},modelValue:{type:[Boolean,Array],default:!1},icon:{},imgUrl:{},slots:{},option:{},style:{},error:{default:""}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=`radio-${Math.floor(Math.random()*1e4)}`,a=e.computed({get:()=>Array.isArray(n.modelValue)?Array.isArray(n.modelValue)&&n.modelValue.includes(n.value):n.modelValue,set:i=>{if(Array.isArray(n.modelValue)){let c=[...n.modelValue];i?c.includes(n.value)||c.push(n.value):c=c.filter(d=>d!==n.value),r("update:modelValue",c)}else r("update:modelValue",i)}}),s=e.ref(`vs-checkbox-${n.view||"default"}`);return(i,c)=>(e.openBlock(),e.createElementBlock("div",Al,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value==="vs-checkbox-buttons"?e.unref(Nl):e.unref(vl)),{value:i.value,label:i.label,html:i.labelHtml,info:i.option?.info,disabled:i.disabled,modelValue:a.value,"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),id:l,icon:i.icon,imgUrl:i.imgUrl,option:i.option,style:e.normalizeStyle(i.style),error:i.error},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label),1)]),_:1},8,["value","label","html","info","disabled","modelValue","icon","imgUrl","option","style","error"]))]))}}),Fl={key:0,class:"flex items-start gap-x-1"},Ml={key:0,class:"text-red-500 text-[14px]"},Dl=["title"],Tl=["disabled"],In=e.defineComponent({__name:"vs-input-switcher",props:e.mergeModels({rules:{default:()=>[]},view:{default:"checkbox"},label:{default:""},i:{default:""},text:{default:""},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue");return(r,l)=>t.view==="checkbox"?(e.openBlock(),e.createElementBlock("div",Fl,[e.createVNode(Ln,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=a=>n.value=a),error:r.error||""},null,8,["modelValue","error"]),r.rules?.includes("required")?(e.openBlock(),e.createElementBlock("span",Ml,"*")):e.createCommentVNode("",!0),r.i?(e.openBlock(),e.createElementBlock("button",{key:1,class:"cursor-pointer",title:r.i,onClick:l[1]||(l[1]=e.withModifiers(()=>{},["prevent"]))},[e.createVNode(e.unref(P.Info),{class:"h-4 w-4 text-gray-500"})],8,Dl)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:e.normalizeClass(["inline-flex h-5 w-9 shrink-0 px-[2px] cursor-pointer items-center rounded-full shadow-sm disabled:cursor-not-allowed disabled:opacity-50",[n.value?`bg-${r.style?.primaryColor||"blue"}-500`:"bg-stone-200",r.customClass]]),disabled:r.disabled,onClick:l[2]||(l[2]=a=>n.value=!n.value)},[e.createElementVNode("span",{"data-state":"checked",class:e.normalizeClass(["pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform",[n.value?"translate-x-4":"translate-x-0"]])},null,2)],10,Tl))}}),Ll=["id","innerHTML"],Rn=e.defineComponent({__name:"vs-input-static",props:{text:{default:""},html:{default:""},style:{},customClass:{default:""},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",{id:t.name,class:e.normalizeClass(["text-gray-900",t.customClass]),innerHTML:t.html?t.html:t.text},null,10,Ll))}}),Il=["placeholder","disabled","name"],sn=e.defineComponent({__name:"vs-input-mask",props:e.mergeModels({name:{},mask:{default:""},unmask:{type:Boolean,default:!1},placeholder:{default:"_"},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.ref(null);let a=null;function s(i){const c={9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},d=new Set;let u=!1;for(let g=0;g<i.length;g+=1){const h=i[g];h==="{"?u=!0:h==="}"?u=!1:u&&d.add(h)}const p={};return Object.keys(c).forEach(g=>{d.has(g)||(p[g]=c[g])}),{mask:i,definitions:p,lazy:!1}}return e.onMounted(async()=>{if(l.value){const{default:i}=await Promise.resolve().then(()=>lo),c=s(t.mask||"");a=i(l.value,c),a.on("accept",()=>{r.value=t.unmask?a.unmaskedValue:a.value}),a.on("complete",()=>{r.value=t.unmask?a.unmaskedValue:a.value}),a.value=r.value!=null?String(r.value):""}}),e.onBeforeUnmount(()=>{a?.destroy()}),e.watch(()=>t.mask,i=>{if(a){const c=s(i||"");a.updateOptions(c)}}),e.watch(r,i=>{a&&a.unmaskedValue!==i&&(a.value=i!=null?String(i):"")}),(i,c)=>(e.openBlock(),e.createElementBlock("input",{type:"text",ref_key:"inputEl",ref:l,placeholder:i.placeholder,disabled:i.disabled,name:i.name,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"}},null,10,Il))}}),Rl={class:"relative w-full bg-white rounded-lg"},Ol={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},zl=["placeholder","disabled"],On=e.defineComponent({__name:"vs-input-email",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:null},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue");return(l,a)=>(e.openBlock(),e.createElementBlock("div",Rl,[e.createElementVNode("div",Ol,[e.createVNode(e.unref(P.Mail),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),e.withDirectives(e.createElementVNode("input",{type:"email","onUpdate:modelValue":a[0]||(a[0]=s=>r.value=s),placeholder:l.placeholder,disabled:l.disabled,class:e.normalizeClass(["!pl-8 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":l.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,zl),[[e.vModelText,r.value]])]))}}),Pl={class:"relative w-full bg-white rounded-lg"},jl={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},Ul=["value","placeholder","disabled"],zn=e.defineComponent({__name:"vs-input-tel",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:null},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>r.value?r.value.startsWith("+")?r.value.slice(1):r.value:""),a=i=>{let{value:c}=i.target;c=c.replace(/^\+/,""),r.value=c?`+${c}`:""},s=i=>{const c=i,{data:d,inputType:u}=c;u&&u.startsWith("delete")||d&&/\D/.test(d)&&c.preventDefault()};return e.watch(()=>r.value,i=>{i&&!i.startsWith("+")?r.value=`+${i.replace(/^\+/,"")}`:i||(r.value="")},{immediate:!0}),(i,c)=>(e.openBlock(),e.createElementBlock("div",Pl,[e.createElementVNode("div",jl,[e.createVNode(e.unref(P.Phone),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),c[0]||(c[0]=e.createElementVNode("div",{class:"absolute bottom-2/4 translate-y-2/4 left-[30px] text-gray-500 select-none pointer-events-none"}," + ",-1)),e.createElementVNode("input",{type:"tel",value:l.value,onInput:a,onBeforeinput:s,pattern:"^\\+[1-9]\\d{1,14}$",maxlength:"15",placeholder:i.placeholder,disabled:i.disabled,class:e.normalizeClass(["!pl-10 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":i.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,Ul)]))}}),Hl=["value","disabled"],ql=["innerHTML"],Kl={key:1,class:"flex items-center gap-2"},Wl=["src"],Gl={class:"text-[13px] text-gray-700"},Yl=e.defineComponent({__name:"vs-input-radio-default",props:e.mergeModels({style:{},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{},value:{},text:{},html:{default:""},option:{default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>!!t.disabled),l=e.computed(()=>Ut(t.option)),a=e.computed(()=>Ht(t.option)),s=e.computed(()=>Ot(t.option)),i=e.computed(()=>!!(s.value&&!l.value&&!a.value)),c=e.computed(()=>!!(l.value&&s.value)),d=e.computed(()=>s.value?{color:s.value}:void 0),u=e.computed(()=>{if(!(!l.value||!s.value))return{backgroundColor:s.value,WebkitMaskImage:`url(${l.value})`,maskImage:`url(${l.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(p,g)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["flex items-center gap-0",[t.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Hl),[[e.vModelRadio,n.value]]),e.createElementVNode("span",{class:e.normalizeClass(["w-[16px] shrink-0 h-[16px] border rounded-full flex items-center justify-center mr-[10px]",[`border-${t.style?.primaryColor||"blue"}-500`,r.value?"opacity-50 cursor-not-allowed":""]])},[n.value==t.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["w-[12px] h-[12px] shrink-0 rounded-full",[`bg-${t.style?.primaryColor||"blue"}-500`]])},null,2)):e.createCommentVNode("",!0)],2),t.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:t.html},null,8,ql)):(e.openBlock(),e.createElementBlock("div",Kl,[i.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:s.value})},null,4)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(u.value)},null,4)):l.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:l.value,alt:"icon"},null,8,Wl)):a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(d.value)},null,8,["style"])):e.createCommentVNode("",!0),e.createElementVNode("span",Gl,e.toDisplayString(t.text),1)]))],2))}}),Xl=["value","disabled"],Zl=["innerHTML"],Jl={key:1,class:"flex items-center gap-2"},Ql=["src"],ea={class:"text-[13px] text-gray-700"},ta={"vs-input-radio-default":Yl,"vs-input-radio-buttons":e.defineComponent({__name:"vs-input-radio-buttons",props:e.mergeModels({style:{},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{},value:{},text:{},html:{default:""},option:{default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>!!t.disabled),l=e.computed(()=>Ut(t.option)),a=e.computed(()=>Ht(t.option)),s=e.computed(()=>Ot(t.option)),i=e.computed(()=>!!(s.value&&!l.value&&!a.value)),c=e.computed(()=>!!(l.value&&s.value)),d=e.computed(()=>s.value?{color:s.value}:void 0),u=e.computed(()=>{if(!(!l.value||!s.value))return{backgroundColor:s.value,WebkitMaskImage:`url(${l.value})`,maskImage:`url(${l.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(p,g)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["flex h-full w-full items-center border rounded-lg px-2 py-1",[n.value==t.value?`ring-2 ring-ring ring-${t.style?.primaryColor||"blue"}-500`:"",t.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Xl),[[e.vModelRadio,n.value]]),t.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:t.html},null,8,Zl)):(e.openBlock(),e.createElementBlock("div",Jl,[i.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:s.value})},null,4)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(u.value)},null,4)):l.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:l.value,alt:"icon"},null,8,Ql)):a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(d.value)},null,8,["style"])):e.createCommentVNode("",!0),e.createElementVNode("span",ea,e.toDisplayString(t.text),1)]))],2))}})},_o=o=>Array.isArray(o)?o:Array.isArray(o?.data)?o.data:[],Co=o=>{const t=o.host??"",n=o.prefix??"api",r=o.api??`/${n}/suggest/${o.data}`;return`${t}${r}`},na=o=>({fetchOptions:async(r="")=>{const l=o();if(!l.data)return l.options?[...l.options]:[];try{const a=new URLSearchParams;a.set("json","1"),r&&a.set("key",r),l.parentValue!==void 0&&l.parentValue!==null&&l.parentValue!==""&&a.set("parent",String(l.parentValue)),l.start===1&&a.set("start","1");const i=await(await fetch(`${Co(l)}?${a.toString()}`)).json();return _o(i)}catch{return[]}},fetchOptionByValue:async r=>{if(r==null||r==="")return null;const l=o();if(!l.data)return(l.options??[]).find(s=>s?.id?.toString()===String(r))??null;try{const a=new URLSearchParams;a.set("json","1"),a.set("val",String(r)),l.parentValue!==void 0&&l.parentValue!==null&&l.parentValue!==""&&a.set("parent",String(l.parentValue)),l.start===1&&a.set("start","1");const i=await(await fetch(`${Co(l)}?${a.toString()}`)).json();return _o(i)[0]??null}catch{return null}}}),Pn=({props:o,formValues:t=null,watchParent:n=!0})=>{const r=e.ref([]),l=e.computed(()=>o.parent?t?.value?.[o.parent]?.toString?.()??null:null),{fetchOptions:a,fetchOptionByValue:s}=na(()=>({data:o.data,options:o.options,api:o.api,prefix:o.prefix,host:o.host,start:o.start,parentValue:l.value})),i=async(c="")=>{const d=o.data?await a(c):o.options?[...o.options]:[];return r.value=d,r.value};return e.watch(()=>o.options,()=>{o.data||(r.value=o.options?[...o.options]:[])},{immediate:!0,deep:!0}),n&&e.watch(l,async()=>{o.data&&(r.value=await a())},{immediate:!1}),{optionsList:r,parentValue:l,fetchOptions:a,fetchOptionByValue:s,loadOptions:i}},oa=/\{\{\s*([^}]+?)\s*\}\}/g,ra=o=>(o?String(o):"").replace(/<[^>]*>/g,"").trim(),la=(o,t)=>t.split(".").reduce((n,r)=>n==null?n:n[r.trim()],o),cn=(o,t)=>{if(!o)return"";const n=(t??"").trim();return n?n.replace(oa,(r,l)=>{const a=String(l).trim(),s=o,c=(a.includes(".")?la(s,a):void 0)??s[a];return c!=null?String(c):""}):o.text??""},jn=(o,t)=>{if(!o)return"";const n=cn(o,t);return ra(n)||o.text||""},Un=e.defineComponent({__name:"vs-input-radio",props:e.mergeModels({options:{},slot:{},data:{},api:{},prefix:{},host:{},start:{},parent:{},position:{default:"vertical"},view:{default:"default"},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>ta[`vs-input-radio-${t.view}`]),l=e.computed(()=>t.slot??t?.optionTemplate??""),a=e.computed(()=>Tn(l.value)),s=h=>cn(h,l.value),i=h=>jn(h,l.value),c=e.computed(()=>t.position==="horizontal"?"flex w-full flex-row flex-wrap gap-[10px]":"flex w-full flex-col gap-2"),d=e.computed(()=>{if(t.position==="horizontal"&&t.customClass?.includes("50%"))return{flex:"0 0 calc(50% - 5px)"}}),u=e.inject("values",null),{optionsList:p,loadOptions:g}=Pn({props:t,formValues:u});return e.onMounted(async()=>{await g()}),(h,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(c.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),b=>(e.openBlock(),e.createElementBlock("div",{key:b?.id,class:e.normalizeClass(["flex items-stretch",h.position==="horizontal"?t.customClass:""]),style:e.normalizeStyle(d.value)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps({text:i(b),html:a.value?s(b):"",option:b,value:b.id.toString(),checked:n.value?.toString?.()===b.id?.toString?.(),"custom-class":h.position==="horizontal"?"":t.customClass,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=k=>n.value=k)},{ref_for:!0},h.$attrs),null,16,["text","html","option","value","checked","custom-class","modelValue"]))],6))),128))],2))}}),aa={key:1,class:"w-full flex flex-col gap-4"},sa={key:0,class:"text-sm font-medium text-muted-foreground my-2"},ia="Без категорії",ca=e.defineComponent({__name:"vs-input-checkbox",props:{options:{default:()=>[]},position:{default:"vertical"},slots:{default:null},slot:{},colSpan:{default:0},data:{},api:{},prefix:{},host:{},start:{},parent:{},view:{},group:{default:void 0},values:{default:()=>[]},style:{},customClass:{},disabled:{type:Boolean},modelValue:{default:!1},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=e.reactive({}),a=e.inject("values",null),{optionsList:s,loadOptions:i}=Pn({props:{...n,options:n.options},formValues:a}),c=e.computed(()=>s.value),d=x=>x?.value||x?.id||x?.text||x,u=e.computed(()=>n.slot??n?.optionTemplate??""),p=e.computed(()=>Tn(u.value)),g=x=>cn(x,u.value),h=x=>jn(x,u.value),m=x=>`lg:col-span-${x||12}`,b=e.computed(()=>[n.position==="vertical"?"flex flex-col":"",n.colSpan?"grid":"flex justify-start"]),k=x=>x==null||x===""?null:typeof x=="string"||typeof x=="number"?x:String(x),v=e.computed(()=>{if(!n.group)return[];const x=new Map;c.value.forEach(N=>{const E=N[n.group],V=k(E);x.has(V)||x.set(V,[]),x.get(V)?.push(N)});const _=[];n.values?.length&&n.values.forEach(N=>{const E=k(N);_.push(E)});const w=new Set,F=N=>{const E=x.get(N)||[];if(!E.length)return null;const V=N===null?"group-null":`group-${String(N)}`,B=N===null?ia:String(N);return w.add(N),{key:V,label:B,options:E}},O=[];return _.forEach(N=>{const E=F(N);E&&O.push(E)}),x.forEach((N,E)=>{if(w.has(E))return;const V=F(E);V&&O.push(V)}),O});return e.watch(()=>n.modelValue,x=>{if(typeof x=="boolean"&&c.value.length===1){const _=d(c.value[0]);l[_]=x}else if(Array.isArray(x)){const _=new Set(x);c.value.forEach(w=>{if(!w.disabled){const F=d(w);l[F]=_.has(F)}})}},{immediate:!0}),e.watch(l,()=>{if(!c.value.length){r("update:modelValue",null);return}const x=Object.entries(l).filter(([,_])=>_).map(([_])=>_);r("update:modelValue",x.length===0?[]:x)},{deep:!0}),e.onMounted(async()=>{if(await i(),typeof n.modelValue=="boolean"&&c.value.length===1){const x=d(c.value[0]);l[x]=n.modelValue}else if(Array.isArray(n.modelValue)){const x=new Set(n.modelValue);c.value.forEach(_=>{if(!_.disabled){const w=d(_);l[w]=x.has(w)}})}}),(x,_)=>n.group?(e.openBlock(),e.createElementBlock("div",aa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,w=>(e.openBlock(),e.createElementBlock("div",{key:w.key,class:"flex flex-col gap-2"},[w.label?(e.openBlock(),e.createElementBlock("span",sa,e.toDisplayString(w.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["p-0 w-full gap-[12px]",b.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.options,F=>(e.openBlock(),e.createBlock(Ln,{modelValue:l[d(F)],"onUpdate:modelValue":O=>l[d(F)]=O,value:d(F),class:e.normalizeClass(m(x.colSpan)),disabled:n.disabled||F.disabled,label:h(F),labelHtml:p.value?g(F):"",key:`${w.key}-${d(F)}`,icon:F?.icon,imgUrl:F?.imgUrl,option:F,view:x.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2)]))),128))])):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["p-0 w-full gap-[10px]",b.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,w=>(e.openBlock(),e.createBlock(Ln,{modelValue:l[d(w)],"onUpdate:modelValue":F=>l[d(w)]=F,value:d(w),class:e.normalizeClass(m(x.colSpan)),disabled:n.disabled||w.disabled,label:h(w),labelHtml:p.value?g(w):"",key:d(w),icon:w?.icon,imgUrl:w?.imgUrl,option:w,view:x.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2))}}),be=(o,t)=>{const n=o.__vccOpts||o;for(const[r,l]of t)n[r]=l;return n},vo=be(ca,[["__scopeId","data-v-9056e0ec"]]),da=["type","placeholder","disabled"],ua=e.defineComponent({__name:"vs-input-date1",props:{style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{},mode:{default:"date"}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o;function r(u){return u?n.mode==="datetime"?(u.includes("T")?u:null)||u+(u.includes(" ")?"":"T00:00"):u?.split(" ")[0]:null}const{inputClass:l}=ze(n.style),a=t,s=e.computed({get:()=>r(n.modelValue),set:u=>a("update:modelValue",u)}),i=e.computed(()=>n.mode==="datetime"?"datetime-local":n.mode),c=e.computed(()=>!!n.disabled),d=e.computed(()=>n.placeholder??"");return(u,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:i.value,"onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g),placeholder:d.value,disabled:c.value,ref:"date",class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[u.modelValue?"":"text-opacity-50",e.unref(l)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,da)),[[e.vModelDynamic,s.value]])}}),pa=(o,t)=>{if(!t||!Object.keys(t).length)return o;const[n,r=""]=o.split("?"),l=new URLSearchParams(r);Object.entries(t).forEach(([s,i])=>{i==null||i===""||l.set(s,String(i))});const a=l.toString();return a?`${n}?${a}`:n},Eo=async(o,t={})=>{try{const n=new FormData;n.append("unique","true"),n.append("file",o);const{api:r,id:l="1",form:a="form",table:s="table",customParams:i}=t,c=r||`/file/upload/uploads?id=${l||""}&form=${a||""}&table=${s||""}`,d=pa(c,i);return(await fetch(d,{method:"POST",body:n}).then(p=>p.json()))?.result}catch(n){return pe.notify({type:"error",title:"Помилка!",message:"Сталась помилка під час завантаження файлу",position:"right-bottom"}),console.error("Сталась помилка завантаження файлу",n),null}},fa=async o=>{try{return await fetch(`file/delete${o}`),!0}catch(t){return console.error(t),!1}},Bo=async o=>{try{const t=await fetch(`/file/download${o}`);if(!t.ok)throw new Error(`Download failed with status ${t.status}`);const n=await t.blob(),l=(t.headers.get("content-disposition")||"").match(/filename\*?=(?:UTF-8''|")?([^\";]+)/i),a=l?.[1]?decodeURIComponent(l[1].replace(/"/g,"").trim()):"",s=o.split("/").filter(Boolean).pop()||"download",i=a||s,c=document.createElement("a");c.setAttribute("download",i),c.href=window.URL.createObjectURL(n),c.click(),window.URL.revokeObjectURL(c.href)}catch(t){console.error(t.message)}},ma=o=>{if(!o)return"";const t=o?.split(".");return t[t.length-1]},ha=o=>{const t=ma(o),n={imageFormat:["tiff","jpg","jpeg","png","svg","ico","webp"],sheetsFormat:["xls","csv","xlsx"],archivesFormat:["zip","rar"],textsFormat:["json","geojson","txt","yml","yaml","shp"],documentsFormat:["pdf"]};return n.imageFormat.includes(t)?"img":n.sheetsFormat.includes(t)?P.Table:n.textsFormat.includes(t)?P.FileCode:n.documentsFormat.includes(t)?P.FileText:n.archivesFormat.includes(t)?P.FileArchive:P.FileText},ga=["title"],ya={class:"absolute hidden top-0 right-0 flex items-center gap-x-2 w-full h-full justify-center"},Hn=be(e.defineComponent({__name:"vs-input-file-list-item",props:e.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{value:{},valueModifiers:{},item:{},itemModifiers:{}}),emits:["update:value","update:item"],setup(o){const t=e.useModel(o,"value"),n=e.useModel(o,"item"),r=o,l=e.computed(()=>n.value?typeof n.value=="string"?n.value:n.value.file_path:""),a=c=>typeof c=="string"?c:c?.file_path||"",s=()=>{const c=l.value;fa(c),r.multiple&&Array.isArray(t.value)?t.value=t.value.filter(d=>a(d)!==c):t.value=""},i=()=>{l.value&&window.open(l.value,"_blank")};return(c,d)=>(e.openBlock(),e.createElementBlock("div",{title:l.value,class:"h-[120px] w-[120px] border text-gray-300 border-dashed border-[#CFD9E0] rounded-lg overflow-hidden relative item-file"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(ha)(l.value)),{src:l.value,alt:"file",class:"w-full h-full object-cover cursor-pointer",onClick:d[0]||(d[0]=u=>e.unref(Bo)(l.value))},null,8,["src"])),e.createElementVNode("div",ya,[e.createElementVNode("button",{type:"button",onClick:s,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-red-500"},[e.createVNode(e.unref(P.Trash2),{class:"w-4 h-4"})]),e.createElementVNode("button",{type:"button",onClick:i,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-emerald-600"},[e.createVNode(e.unref(P.Eye),{class:"w-4 h-4"})]),e.createElementVNode("button",{type:"button",onClick:d[1]||(d[1]=u=>e.unref(Bo)(l.value)),class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-blue-500"},[e.createVNode(e.unref(P.Download),{class:"w-4 h-4"})])])],8,ga))}}),[["__scopeId","data-v-89357cbb"]]),ba={class:"flex items-center gap-x-2"},ka=["accept","multiple","disabled"],xa={key:1,class:"flex items-center flex-wrap gap-2"},wa={key:1,class:"loader"},_a={key:1,class:"loader"},Vo=be(e.defineComponent({__name:"vs-input-file",props:e.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["change"],["update:modelValue"]),setup(o,{emit:t}){const n=o,r=e.useModel(o,"modelValue"),l=t,a=e.computed(()=>{const x=r.value;return!n.multiple||!Array.isArray(x)?[]:x}),s=e.ref(null),i=e.ref(!1),c=e.inject("values"),d=e.computed(()=>n.format?n.format.split(",").map(x=>x.trim().toLowerCase()).filter(Boolean):[]),u=x=>{if(n.max_size&&x.size>n.max_size*1024*1024){const _=(x.size/1048576).toFixed(2);return pe.notify({type:"error",title:"Помилка!",message:`Файл "${x.name}" занадто великий. Максимальний розмір: ${n.max_size} МБ, розмір файлу: ${_} МБ`,position:"right-bottom"}),!1}return!0},p=x=>{if(!d.value.length)return!0;const _=`.${x.name.split(".").pop()?.toLowerCase()||""}`,w=d.value.includes(_);return w||pe.notify({type:"error",title:"Помилка!",message:`Неприпустимий формат файлу "${x.name}". Дозволені формати: ${d.value.join(", ")}`,position:"right-bottom"}),w},g=e.computed(()=>{const x={},_=[];if(!n.customParams?.length)return{params:x,missingSources:_};const w=c?.value??{};return n.customParams.forEach(F=>{if(!F)return;const[O,N]=F.split("="),E=O?.trim(),V=N?.trim();if(!E||!V)return;const B=w[V];if(B==null||B===""){_.push(V);return}x[E]=B}),{params:x,missingSources:_}}),h=()=>{const{params:x}=g.value;return{api:n.api,customParams:Object.keys(x).length?x:void 0}},m=()=>{const x=g.value.missingSources;if(!x.length)return!0;const _=x.join(", ");return pe.notify({type:"warning",title:"Заповніть поля",message:`Поля (${_}) необхідні для завантаження файлу`,position:"right-bottom"}),!1},b=x=>{pe.notify({type:"error",title:"Помилка завантаження",message:x||"Не вдалося завантажити файл. Спробуйте ще раз.",position:"right-bottom"})},k=()=>{n.disabled||i.value||m()&&s.value?.click()},v=async x=>{const{files:_}=x.target;if(!_||_.length===0)return;if(!m()){s.value&&(s.value.value="");return}const w=Array.from(_);if(n.max_size&&w.filter(N=>!u(N)).length>0){s.value&&(s.value.value="");return}if(w.filter(O=>!p(O)).length>0){s.value&&(s.value.value="");return}i.value=!0;try{if(n.multiple){const O=Array.from(_).map(async M=>await Eo(M,h())),N=await Promise.all(O),E=N.filter(M=>M?.file_path);if(E.length===0){b();return}E.length<N.length&&b("Деякі файли не вдалося завантажити. Перевірте їх та спробуйте знову.");const V=E.map(M=>M.file_path),B=Array.isArray(r.value)?r.value:[];r.value=[...B,...V],l("change",r.value)}else{const O=_[0],N=await Eo(O,h());if(!N?.file_path){b();return}const E=N.file_path;r.value=E,l("change",E)}}catch(O){const N=O?.message||void 0;b(N)}finally{i.value=!1,s.value&&(s.value.value="")}};return(x,_)=>(e.openBlock(),e.createElementBlock("div",ba,[e.createElementVNode("input",{class:"hidden",ref_key:"fileInput",ref:s,type:"file",accept:n.format,multiple:x.multiple,onChange:v,disabled:i.value||x.disabled},null,40,ka),!x.multiple&&r.value&&!Array.isArray(r.value)?(e.openBlock(),e.createBlock(Hn,{key:0,item:r.value,value:r.value,"onUpdate:value":_[0]||(_[0]=w=>r.value=w)},null,8,["item","value"])):x.multiple?(e.openBlock(),e.createElementBlock("div",xa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(w,F)=>(e.openBlock(),e.createBlock(Hn,{multiple:x.multiple,key:F,value:r.value,"onUpdate:value":_[1]||(_[1]=O=>r.value=O),item:w},null,8,["multiple","value","item"]))),128)),e.createElementVNode("div",{onClick:k,class:e.normalizeClass(["relative h-[120px] w-[120px] border text-gray-300 hover:text-blue-500 border-dashed border-[#CFD9E0] rounded-lg flex items-center justify-center transition-all duration-300",x.disabled||i.value?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-blue-500 hover:bg-blue-50"])},[i.value?(e.openBlock(),e.createElementBlock("div",wa)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2)])):e.createCommentVNode("",!0),x.multiple?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:2,onClick:k,class:e.normalizeClass([x.disabled||i.value?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-blue-500","relative h-[120px] w-[120px] border text-gray-300 hover:text-blue-500 border-dashed border-gray-300 rounded-lg flex items-center justify-center cursor-pointer hover:border-blue-500 transition-all duration-300 hover:bg-blue-50"])},[i.value?(e.openBlock(),e.createElementBlock("div",_a)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2))]))}}),[["__scopeId","data-v-dda91e05"]]),Ca={class:"vs-input-file2 flex flex-col gap-4"},va={class:"flex items-center gap-x-2"},Ea=["accept","disabled"],Ba={key:0,class:"absolute inset-0 flex flex-col items-center justify-center gap-1 rounded-lg bg-white/90 text-xs font-medium text-slate-600"},Va={key:0,class:"rounded-lg border border-[#CFD9E0] bg-white p-4 shadow-sm"},Sa={class:"flex items-center justify-between text-sm"},$a={class:"truncate pr-4"},Na={class:"font-medium text-slate-800 truncate"},Aa={class:"text-slate-500"},Fa={class:"text-slate-500 whitespace-nowrap"},Ma={class:"mt-3 h-2 rounded-full bg-slate-100 overflow-hidden"},Da={class:"mt-3 flex flex-wrap gap-2 text-sm"},Ta={key:0,class:"mt-2 text-sm text-rose-600"},La=e.defineComponent({__name:"vs-input-file2",props:e.mergeModels({format:{},max_size:{},api:{},chunkSize:{default:5*1024*1024},subdir:{default:""},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.ref(null),l=e.ref(null),a=e.ref(""),s=e.ref(0),i=e.ref(!1),c=e.ref(""),d=e.ref(null),u=e.inject("values"),p=e.computed(()=>t.format?t.format.split(",").map(I=>I.trim().toLowerCase()).filter(Boolean):[]),g=e.computed(()=>!l.value||!l.value.size?0:Math.min(100,Math.round(s.value/l.value.size*100))),h=e.computed(()=>l.value?`${k(s.value)} / ${k(l.value.size)}`:""),m=e.computed(()=>t.disabled?"opacity-50 cursor-not-allowed":i.value?"cursor-default text-blue-500":"cursor-pointer hover:border-blue-500 hover:bg-blue-50 hover:text-blue-500"),b=()=>{t.disabled||i.value||w()&&r.value?.click()},k=I=>{if(!Number.isFinite(I))return"0 B";const j=["B","KB","MB","GB"];let $=0,L=I;for(;L>=1024&&$<j.length-1;)L/=1024,$+=1;return`${L.toFixed($===0?0:1)} ${j[$]}`},v=I=>{if(!t.max_size)return!0;const j=t.max_size*1024*1024;return I.size>j?(pe.notify({type:"error",title:"Файл занадто великий",message:`Максимальний розмір ${t.max_size} МБ`,position:"right-bottom"}),!1):!0},x=I=>{if(!p.value.length)return!0;const j=`.${I.name.split(".").pop()?.toLowerCase()||""}`;return p.value.includes(j)?!0:(pe.notify({type:"error",title:"Непідтримуваний формат",message:`Дозволені формати: ${p.value.join(", ")}`,position:"right-bottom"}),!1)},_=e.computed(()=>{const I={},j=[];if(!t.customParams?.length)return{params:I,missing:j};const $=u?.value??{};return t.customParams.forEach(L=>{if(!L)return;const[D,G]=L.split("="),K=D?.trim(),Z=G?.trim();if(!K||!Z)return;const le=$[Z];le==null||le===""?j.push(Z):I[K]=le}),{params:I,missing:j}}),w=()=>_.value.missing.length?(pe.notify({type:"warning",title:"Заповніть поля",message:`Потрібні значення: ${_.value.missing.join(", ")}`,position:"right-bottom"}),!1):!0,F=I=>{const j=I.target,$=j.files?.[0];if($){if(!w()){j.value="";return}if(!v($)||!x($)){j.value="";return}l.value=$,s.value=0,a.value="",c.value=""}},O=async()=>{if(!l.value){b();return}try{c.value="";const I={id:a.value||"",fileName:l.value.name,subdir:t.subdir,size:l.value.size,..._.value.params},j=await fetch("/api/file/upload2/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(I)});if(!j.ok)throw new Error("Не вдалося ініціалізувати завантаження");const $=await j.json();a.value=$.id||a.value,s.value=$.uploaded||0,await N()}catch(I){c.value=I?.message||"Помилка при старті завантаження"}},N=async()=>{if(!(!l.value||!a.value)){i.value=!0;try{for(;s.value<l.value.size;){const I=s.value,j=Math.min(I+t.chunkSize,l.value.size),$=l.value.slice(I,j);d.value=new AbortController;const L=await fetch(`/api/file/upload2/${a.value}`,{method:"PATCH",headers:{"Content-Range":`bytes ${I}-${j-1}/${l.value.size}`},body:$,signal:d.value.signal});if(!L.ok)throw new Error("Помилка завантаження частини");const D=await L.json().catch(()=>({}));if(D.uploaded!=null?s.value=Number(D.uploaded):s.value=j,D.finished||s.value>=l.value.size){i.value=!1;const G=D.file_path||D.url||a.value;n.value={file_id:D.file_id??a.value??G,file_path:G},pe.notify({type:"success",title:"Файл завантажено",message:l.value.name,position:"right-bottom"}),M();return}}}catch(I){if(I?.name==="AbortError")return;c.value=I?.message||"Помилка при завантаженні",i.value=!1}finally{d.value=null,i.value=!1}}},E=()=>{i.value&&(d.value?.abort(),d.value=null,i.value=!1)},V=async()=>{if(l.value){if(!a.value){await O();return}await N()}},B=()=>{d.value?.abort(),d.value=null,M()},M=()=>{const I=r.value;I&&(I.value=""),l.value=null,a.value="",s.value=0,c.value=""};return(I,j)=>(e.openBlock(),e.createElementBlock("div",Ca,[e.createElementVNode("div",va,[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",class:"hidden",accept:t.format,disabled:i.value||t.disabled,onChange:F},null,40,Ea),n.value?(e.openBlock(),e.createBlock(Hn,{key:0,item:n.value,"onUpdate:item":j[0]||(j[0]=$=>n.value=$),value:n.value,"onUpdate:value":j[1]||(j[1]=$=>n.value=$)},null,8,["item","value"])):(e.openBlock(),e.createElementBlock("div",{key:1,onClick:b,class:e.normalizeClass(["relative h-[120px] w-[120px] border text-gray-300 border-dashed border-[#CFD9E0] rounded-lg flex items-center justify-center transition-all duration-300",m.value])},[i.value?(e.openBlock(),e.createElementBlock("div",Ba,[j[2]||(j[2]=e.createElementVNode("div",{class:"loader"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(g.value)+"%",1)])):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:1,class:"h-4 w-4"}))],2))]),l.value&&!n.value?(e.openBlock(),e.createElementBlock("div",Va,[e.createElementVNode("div",Sa,[e.createElementVNode("div",$a,[e.createElementVNode("div",Na,e.toDisplayString(l.value.name),1),e.createElementVNode("div",Aa,e.toDisplayString(k(l.value.size)),1)]),e.createElementVNode("div",Fa,e.toDisplayString(h.value),1)]),e.createElementVNode("div",Ma,[e.createElementVNode("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-300",style:e.normalizeStyle({width:`${g.value}%`})},null,4)]),e.createElementVNode("div",Da,[!i.value&&s.value>0&&s.value<(l.value?.size||0)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:V}," Resume ")):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:E}," Pause ")):e.createCommentVNode("",!0),!i.value&&s.value===0?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:O}," Upload ")):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"rounded border border-rose-200 px-3 py-1 text-rose-600",onClick:B}," Cancel ")]),c.value?(e.openBlock(),e.createElementBlock("p",Ta,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),qn=be(La,[["__scopeId","data-v-19ea2129"]]),Ia={class:"flex items-center justify-center h-[30px] w-[30px]"},Ra={class:"max-w-[55vw]"},Oa={class:"text-sm font-semibold text-gray-800 truncate dark:text-neutral-200"},za={class:"flex items-center text-xs text-gray-500 truncate dark:text-neutral-500"},Pa={class:"px-[5px]"},ja={class:""},dn=e.defineComponent({__name:"vs-widget-file-info",props:{item:{default:null}},setup(o){const t=o,n=e.computed(()=>{try{return new Date(t.item.cdate).toLocaleDateString("uk-UA",{day:"2-digit",month:"long",year:"numeric"})}catch{return""}});function r(l){if(l<1024)return`${l} B`;const a=l/1024;return a<1024?`${a.toFixed(2)} KB`:`${(a/1024).toFixed(2)} MB`}return(l,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Ia,[e.createVNode(e.unref(P.FileText),{class:"icon icon-tabler icons-tabler-outline icon-tabler-file h-4 w-4"})]),e.createElementVNode("div",Ra,[e.createElementVNode("p",Oa,e.toDisplayString(l.item?.uploaded_name),1),e.createElementVNode("p",za,[e.createElementVNode("span",null,e.toDisplayString(l.item?.username),1),e.withDirectives(e.createElementVNode("span",Pa,"|",512),[[e.vShow,l.item?.username]]),e.createElementVNode("span",null,e.toDisplayString(n.value),1),a[0]||(a[0]=e.createElementVNode("span",{class:"px-[5px]"},"|",-1)),e.createElementVNode("span",ja,e.toDisplayString(r(l.item?.size)),1)])])],64))}}),Ua={class:"p-3 relative group flex items-center gap-x-3 border border-gray-200 bg-white rounded-md w-full"},Ha={key:0,class:"flex w-full gap-x-3 items-center"},qa={key:1,class:"flex gap-x-3 w-full items-center"},Ka={key:2,class:"flex gap-x-3 w-full items-center"},Wa=["href"],Ga={key:3,class:"flex gap-x-3 w-full items-center"},Ya={class:"lg:absolute lg:top-3 lg:end-1 opacity-100"},Xa={class:"p-0.5 sm:p-1 inline-flex items-center gap-0.5 bg-white rounded-lg dark:bg-neutral-800 dark:border-neutral-700"},Za={class:"inline-block"},Ja={class:"inline-block"},Qa={class:"inline-block"},es=e.defineComponent({__name:"vs-widget-file-item",props:{item:{default:null},index:{default:0},prefix:{default:"/api"}},emits:["update","openModal","openLightbox"],setup(o,{emit:t}){const n=o,r=t;function l(p){return["pdf","json"].includes(p.ext)}function a(p){return["ppt","pptx","doc","docx","xls","xlsx"].includes(p.ext)}function s(p){const g=document.createElement("a");g.setAttribute("download",p?.uploaded_name),g.href=p?.file_path,g.click()}function i(p){p?.file_path&&window.open(p.file_path,"_blank")}async function c(){try{await fetch(`${n.prefix}/widget/file/${n.item.entity_id}/${n.item.file_id}`),r("update")}catch(p){console.error(p)}}function d(){r("openModal",{title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати",confirm:c,updateListOnConfirm:!0})}function u(p){(n.item.ext==="jpg"||n.item.ext==="png")&&r("openLightbox",{item:n.item,index:p})}return(p,g)=>(e.openBlock(),e.createElementBlock("div",Ua,[p.item.ext==="jpg"||p.item.ext==="png"?(e.openBlock(),e.createElementBlock("div",Ha,[e.createElementVNode("div",{class:"max-w-[55vw] cursor-pointer flex gap-x-3 w-full items-center",onClick:g[0]||(g[0]=h=>u(p.index))},[e.createVNode(dn,{item:p.item},null,8,["item"])])])):l(p.item)?(e.openBlock(),e.createElementBlock("div",qa,[e.createVNode(dn,{item:p.item},null,8,["item"])])):a(p.item)?(e.openBlock(),e.createElementBlock("div",Ka,[e.createElementVNode("a",{href:`/api/file-preview?id=${p.item.file_id}`,target:"_blank",class:"flex gap-x-3 w-full items-center"},[e.createVNode(dn,{item:p.item},null,8,["item"])],8,Wa)])):(e.openBlock(),e.createElementBlock("div",Ga,[e.createVNode(dn,{item:p.item},null,8,["item"])])),e.createElementVNode("div",Ya,[e.createElementVNode("div",Xa,[e.createElementVNode("div",Za,[e.createElementVNode("button",{class:"inline-flex p-[6px] justify-center items-center gap-x-2 rounded-lg border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none dark:text-neutral-400 focus:outline-none focus:bg-gray-100 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700",onClick:g[1]||(g[1]=h=>i(p.item))},[e.createVNode(e.unref(P.Eye),{class:"h-4 w-4"})])]),e.createElementVNode("div",Ja,[e.createElementVNode("button",{class:"inline-flex p-[6px] justify-center items-center gap-x-2 rounded-lg border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none dark:text-neutral-400 focus:outline-none focus:bg-gray-100 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700",onClick:g[2]||(g[2]=h=>s(p.item))},[e.createVNode(e.unref(P.Download),{class:"h-4 w-4"})])]),g[4]||(g[4]=e.createElementVNode("div",{class:"w-px h-5 mx-1 bg-gray-200 dark:bg-neutral-700"},null,-1)),e.createElementVNode("div",Qa,[e.createElementVNode("button",{type:"button",class:"size-[30px] inline-flex justify-center items-center gap-x-2 rounded-lg border border-transparent text-red-600 hover:bg-red-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-red-100 dark:text-red-500 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",onClick:g[3]||(g[3]=h=>d())},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})])])])])]))}}),ts={class:"flex flex-col widget-file xl:bg-white xl:rounded-xl dark:xl:bg-neutral-800 dark:xl:border-neutral-700 w-full"},ns={class:"flex w-full mb-[12px] items-center gap-x-2"},os={class:"font-semibold text-gray-800 dark:text-neutral-200 text-[14px]"},rs={class1:"ml-auto"},ls={class:"py-1.5 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg bg-gray-100 cursor-pointer hover:bg-gray-200 text-gray-800 shadow-2xs hover:bg-gray-50 focus:outline-hidden focus:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-800 dark:border-neutral-700 dark:text-white dark:hover:bg-neutral-700 dark:focus:bg-neutral-700"},as={key:0,class:"py-4 mb-4 space-y-4 border-gray-200 border-y dark:border-neutral-700"},ss={class:"relative"},is={class:"absolute inset-y-0 start-0 flex items-center pointer-events-none z-[1] ps-3.5"},cs={key:1,class:"space-y-3 max-h-[300px] overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500"},ds={key:0},So=e.defineComponent({__name:"vs-input-file-list",props:{id:{default:""},prefix:{default:"/api"},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update"],setup(o,{emit:t}){const n=o,r=e.inject("form"),l=e.computed(()=>r.value.formId),a=e.ref(!1),s=e.ref(0),i=t,c=e.ref(!1),d=e.ref({}),u=e.ref([]),p=e.ref(""),g=e.computed(()=>Array.isArray(u.value)?u.value.filter(_=>_.ext==="jpg"||_.ext==="png").map(_=>_?.file_path):[]),h=e.computed(()=>p.value===""?u.value:u.value.filter(_=>_?.uploaded_name?.includes(p.value))),m=_=>{const w=g.value.findIndex(F=>F===_.item.file_path);w!==-1&&(a.value=!0,s.value=w)},b=async()=>{try{const _=await fetch(`${n.prefix}/widget/file/${l.value}`).then(w=>w.json());u.value=_?.rows}catch(_){console.error(_)}},k=async _=>{await Promise.all(Array.from(_.target.files).map(async w=>{const F=new FormData;F.append("file",w);try{const O=`${n.prefix}/widget/file/${l.value}`,N=await fetch(O,{method:"POST",body:F});return N.ok?(i("update","file-list"),w):(pe.notify({type:N.status>=400&&N.status<500?"warning":"error",title:"Error",message:`Error code: ${N.status}`}),null)}catch(O){return pe.notify({type:"error",title:"Error",message:O.message||"Unknown error"}),console.error(O),null}})),await b()},v=_=>{const w={..._};return _.cancel||(w.cancel=()=>{c.value=!1}),_.updateListOnConfirm&&(w.confirm=async()=>{await _.confirm(),c.value=!1,b()}),w},x=_=>{d.value=v(_),c.value=!0};return e.watch(l,_=>{_&&b()}),e.onMounted(()=>{l.value&&b()}),(_,w)=>{const F=e.resolveComponent("Lightbox"),O=e.resolveComponent("MessageBox");return e.openBlock(),e.createElementBlock("div",ts,[e.createElementVNode("div",ns,[e.createElementVNode("h2",os," Файлів: "+e.toDisplayString(u.value?.length),1),e.createElementVNode("div",rs,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:w[0]||(w[0]=N=>k(N))},null,32),e.createElementVNode("div",ls,[e.createVNode(e.unref(P.Upload),{class:"h-4 w-4"})])])])]),u.value?.length>4?(e.openBlock(),e.createElementBlock("div",as,[e.createElementVNode("div",null,[e.createElementVNode("div",ss,[e.createElementVNode("div",is,[e.createVNode(e.unref(P.Search),{class:"flex-shrink-0 text-gray-500 size-4 dark:text-neutral-400"})]),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":w[1]||(w[1]=N=>p.value=N),class:"py-2 px-3 ps-10 pe-16 block w-full bg-gray-200 xl:bg-gray-100 rounded-lg text-sm focus:border-blue-500 h-[40px] focus:border-2 focus:outline-none disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:border-transparent dark:text-neutral-400 dark:placeholder:text-neutral-400 dark:focus:ring-neutral-600",placeholder:"Введіть назву файлу"},null,512),[[e.vModelText,p.value,void 0,{trim:!0}]])])])])):e.createCommentVNode("",!0),u.value?.length?(e.openBlock(),e.createElementBlock("div",cs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(N,E)=>(e.openBlock(),e.createBlock(es,{key:E,prefix:_.prefix,item:N,index:E,onUpdate:w[2]||(w[2]=V=>_.$emit("update","file-list")),onOpenModal:w[3]||(w[3]=V=>x(V)),onOpenLightbox:w[4]||(w[4]=V=>m(V))},null,8,["prefix","item","index"]))),128)),h.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ds,w[8]||(w[8]=[e.createElementVNode("p",{class:"text-sm text-gray-600 font-sm"}," Файлів з такою назвою не існує, введіть інше пошукове слово ",-1)])))])):e.createCommentVNode("",!0),e.createVNode(F,{modelValue:a.value,"onUpdate:modelValue":w[5]||(w[5]=N=>a.value=N),startIndex:s.value,"onUpdate:index":w[6]||(w[6]=N=>s.value=N),images:g.value},null,8,["modelValue","startIndex","images"]),e.createVNode(O,e.mergeProps({modelValue:c.value,"onUpdate:modelValue":w[7]||(w[7]=N=>c.value=N),onConfirm:d.value.confirm},d.value),null,16,["modelValue","onConfirm"])])}}}),us={class:"flex items-center justify-between"},ps={class:"text-[16px] text-gray-900 font-medium"},fs={class:"grid gap-3"},ms=be(e.defineComponent({__name:"vs-container-switcher",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(o){const t=o,n=e.ref(t.isOpen);return e.watch(()=>t.isOpen,r=>{n.value=r}),(r,l)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",us,[e.createElementVNode("p",ps,e.toDisplayString(o.title),1),e.createVNode(In,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=a=>n.value=a),style:e.normalizeStyle(o.style)},null,8,["modelValue","style"])]),e.createVNode(e.Transition,{name:"slide-fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",fs,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,n.value]])]),_:3})]))}}),[["__scopeId","data-v-90320b87"]]),hs={class:"text-[16px] text-gray-900 font-medium"},gs={class:"grid gap-3"},ys=be(e.defineComponent({__name:"vs-container-accordion",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(o){const t=o,n=e.ref(t.isOpen);return e.watch(()=>t.isOpen,r=>{n.value=r}),(r,l)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("button",{type:"button",onClick:l[0]||(l[0]=a=>n.value=!n.value),class:"flex items-center gap-2"},[e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["h-4 w-4 duration-300",[n.value?"-rotate-180":""]])},null,8,["class"]),e.createElementVNode("span",hs,e.toDisplayString(o.title),1)]),e.createVNode(e.Transition,{name:"slide-fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",gs,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,n.value]])]),_:3})]))}}),[["__scopeId","data-v-0c825d65"]]),bs={class:"flex items-center justify-between"},ks={switcher:ms,accordion:ys,default:e.defineComponent({__name:"vs-container-default",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",bs,[e.createElementVNode("p",null,e.toDisplayString(o.title),1)]),e.renderSlot(t.$slots,"default")]))}})},et={Equal:"==",Inequal:"!=",Higer:">",HigerOrEqual:">=",Lower:"<",LowerOrEqual:"<=",Between:"between",StartWith:"^",EndWith:"$",Contain:"*",In:"in",NotIn:"not_in"},xs=(o,t)=>String(o)===String(t),ws=(o,t)=>String(o)!==String(t),_s=(o,t)=>o>t,Cs=(o,t)=>o>=t,vs=(o,t)=>o<t,Es=(o,t)=>o<=t,Bs=(o,t)=>Array.isArray(t)&&t.length===2?o>=t[0]&&o<=t[1]:!1,Vs=(o,t)=>String(o).startsWith(String(t)),Ss=(o,t)=>String(o).endsWith(String(t)),$s=(o,t)=>String(o).includes(String(t)),Ns=(o,t)=>Array.isArray(t)?t.includes(o):!1,As=(o,t)=>Array.isArray(t)?!t.includes(o):!0,$o=(o,t)=>{if(!t)return!0;switch(t?.[1]){case et.Equal:return xs(o,t?.[2]);case et.Inequal:return ws(o,t?.[2]);case et.Higer:return _s(o,t?.[2]);case et.HigerOrEqual:return Cs(o,t?.[2]);case et.Lower:return vs(o,t?.[2]);case et.LowerOrEqual:return Es(o,t?.[2]);case et.Between:return Bs(o,t?.[2]);case et.StartWith:return Vs(o,t?.[2]);case et.EndWith:return Ss(o,t?.[2]);case et.Contain:return $s(o,t?.[2]);case et.In:return Ns(o,t?.[2]);case et.NotIn:return As(o,t?.[2]);default:return!0}},No=e.defineComponent({__name:"vs-input-container",props:{style:{type:Object,default:()=>({})},title:{type:String,default:""},view:{type:String,default:"default"},name:{type:String,default:""},schema:{type:Array,default:()=>[]}},setup(o){const t=o,n=e.inject("values",e.ref({})),r=e.inject("form"),l=e.computed(()=>t.schema?.filter(i=>{const c=i?.conditions;if(!c)return!0;const d=Array.isArray(c)?c[0]:c,u=t.name?n.value?.[t.name]?.[d]??n.value?.[d]:n.value?.[d];return $o(u,c)})),a=e.computed(()=>ks[t.view]),s=e.computed(()=>{if(n.value||(n.value={}),!t.name)return n.value;const i=n.value[t.name];if(i)return i;const c={};return n.value={...n.value,[t.name]:c},c});return(i,c)=>o.schema?.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:0,title:o.title,style:e.normalizeStyle(o.style)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createBlock(er,e.mergeProps({key:d.name},{ref_for:!0},d,{item:d,modelValue:s.value[d.name],"onUpdate:modelValue":u=>s.value[d.name]=u,style:o.style,error:e.unref(r)?.errors?.[d.name]}),null,16,["item","modelValue","onUpdate:modelValue","style","error"]))),128))]),_:1},8,["title","style"])):e.createCommentVNode("",!0)}}),Ao=({props:o,fetchOptionByValue:t,optionsList:n,selectedOption:r,modelValue:l,onCreated:a})=>{const s=e.ref(!1),i=e.ref({}),c=e.ref([]),d=e.ref(null),u=e.computed(()=>o.add?.title||"Додати"),p=e.computed(()=>o.add?.token||o.add?.model||""),g=e.computed(()=>o.add?.pk||"id");return{isOpenAdd:s,addData:i,addSchema:c,addForm:d,addTitle:u,addOption:async()=>{if(!(!p.value||d?.value.validate()))try{const k=o.add?.api??`/api/table/${p.value}`,v=await fetch(k,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i.value)}),x=await v.json().catch(()=>({})),_=x?.error||x?.message,w=Number(x?.code)>=400;if(!v.ok||w){pe.notify({title:"Помилка",type:"error",message:_||`Код помилки: ${x?.code||v.status}`});return}const F=x?.[g.value]??x?.id;if(!F){pe.notify({title:"Помилка",type:"error",message:"Обʼєкт створено, але в відповіді відсутній ID."});return}const O=await t(F);O&&(n.value.some(E=>String(E?.id)===String(O.id))||n.value.push(O)),a?await a(O,F):O&&(r.value=O,l.value=F),s.value=!1,pe.notify({title:"Успіх",message:"Обʼєкт успішно створено."})}catch(k){pe.notify({title:"Помилка",type:"error",message:k?.message||"Не вдалося створити обʼєкт."})}},onAddValue:async()=>{if(!o.add)return null;const b=await fetch(`/api/template/form/${o.add.form}`).then(k=>k.json());return c.value=b.schema,i.value={},s.value=!0,null}}},Fs=["aria-expanded","data-focus"],Ms={class:"relative flex flex-1 items-center gap-1 py-0.5 pl-1 pr-0 overflow-hidden h-full min-w-0"},Ds={key:0,class:"flex flex-nowrap items-center gap-1 overflow-x-auto overflow-y-hidden min-w-0 flex-1 py-0.5"},Ts={class:"flex items-center gap-1 min-w-0"},Ls=["title"],Is=["innerHTML"],Rs=["onClick"],Os={class:"flex-1 min-w-[2px]"},zs=["placeholder"],Ps=["title"],js=["innerHTML"],Us={key:3,class:"truncate flex-1 min-w-0"},Hs={key:2,class:"flex-1 min-w-[2px]"},qs=["placeholder"],Ks={class:"flex items-center shrink-0"},Ws=["disabled"],Gs={key:1,class:"self-stretch w-px bg-[#ccc] my-[1px]"},Ys=["disabled","title"],Xs=e.defineComponent({__name:"vs-select-control",props:{disabled:{type:Boolean},isOpen:{type:Boolean},inputFocus:{type:Boolean},isMulti:{type:Boolean},selectedOptions:{},selectedIds:{},placeholder:{},search:{type:Boolean},optionTemplate:{default:""},iconWrapperClass:{},selectedOptionLabel:{},selectedOption:{},showClear:{type:Boolean},keyWord:{default:""},setTriggerRef:{},setInputRef:{},shouldShowColorDot:{},optionHasIcon:{},getIconColorStyle:{},resolveOptionIcon:{},renderTemplate:{},getLabel:{},onControlKeydown:{},onControlClick:{},onInputFocus:{},onInputBlur:{},onInputKeydown:{},onRemoveSelected:{},onClearSelected:{},onToggleSelect:{}},emits:["update:keyWord"],setup(o,{emit:t}){const n=o,r=t,l=e.computed({get:()=>n.keyWord,set:a=>r("update:keyWord",a)});return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vs-input-select__control flex min-h-[38px] items-center justify-between rounded transition-colors bg-white",a.disabled?"bg-gray-100 text-gray-400 cursor-not-allowed":""]),role:"combobox","aria-expanded":a.isOpen,"aria-haspopup":"listbox",onKeydown:s[10]||(s[10]=(...i)=>a.onControlKeydown&&a.onControlKeydown(...i)),onClick:s[11]||(s[11]=(...i)=>a.onControlClick&&a.onControlClick(...i)),"data-focus":a.isOpen||a.inputFocus?"true":"false",ref:a.setTriggerRef},[e.createElementVNode("div",Ms,[a.isMulti?(e.openBlock(),e.createElementBlock("div",Ds,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.selectedOptions,i=>(e.openBlock(),e.createElementBlock("div",{key:i.id,class:"flex min-w-0 bg-[rgb(230,230,230)] rounded-[2px] m-[2px] box-border max-w-full"},[e.createElementVNode("div",Ts,[a.shouldShowColorDot(i)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[16px] h-[16px] rounded-md block ml-1.5 flex-shrink-0",style:e.normalizeStyle({backgroundColor:i?.color})},null,4)):e.createCommentVNode("",!0),!a.optionTemplate&&a.optionHasIcon(i)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(a.iconWrapperClass),style:e.normalizeStyle(a.getIconColorStyle(i)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.resolveOptionIcon(i)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"truncate text-[#172b4d] overflow-hidden max-w-[200px] px-0.5 pl-1.5",title:a.getLabel(i)},[a.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:a.renderTemplate(i)},null,8,Is)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i.text),1)],64))],8,Ls)]),e.createElementVNode("div",{role:"button",class:"flex items-center rounded-sm px-1 box-border text-[#172b4d] hover:bg-[rgb(255,189,173)] hover:text-[rgb(222,53,11)] flex-shrink-0",onClick:e.withModifiers(c=>a.onRemoveSelected(i.id),["stop"])},[e.createVNode(e.unref(P.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,Rs)]))),128)),e.createElementVNode("div",Os,[!a.disabled&&a.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:a.setInputRef,class:"w-full bg-transparent outline-none border-0 m-0 p-0 text-gray-900 hover:cursor-pointer",autocapitalize:"none",autocomplete:"off",autocorrect:"off",spellcheck:"false",type:"text",tabindex:"0","aria-autocomplete":"list",placeholder:a.selectedIds.length?" ":a.placeholder,"onUpdate:modelValue":s[0]||(s[0]=i=>l.value=i),onFocus:s[1]||(s[1]=(...i)=>a.onInputFocus&&a.onInputFocus(...i)),onBlur:s[2]||(s[2]=(...i)=>a.onInputBlur&&a.onInputBlur(...i)),onKeydown:s[3]||(s[3]=(...i)=>a.onInputKeydown&&a.onInputKeydown(...i))},null,40,zs)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)])])):!a.isMulti&&a.selectedOptionLabel&&l.value===""?(e.openBlock(),e.createElementBlock("div",{key:1,class:"truncate text-gray-900 absolute inset-x-0 pl-2 flex items-center gap-1 min-w-0",title:a.selectedOptionLabel},[a.shouldShowColorDot(a.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[14px] h-[14px] rounded-md block flex-shrink-0",style:e.normalizeStyle({backgroundColor:a.selectedOption?.color})},null,4)):e.createCommentVNode("",!0),!a.optionTemplate&&a.optionHasIcon(a.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(a.iconWrapperClass),style:e.normalizeStyle(a.getIconColorStyle(a.selectedOption)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.resolveOptionIcon(a.selectedOption)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),a.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:2,class:"truncate flex-1 min-w-0",innerHTML:a.renderTemplate(a.selectedOption)},null,8,js)):(e.openBlock(),e.createElementBlock("span",Us,e.toDisplayString(a.selectedOption?.text),1))],8,Ps)):e.createCommentVNode("",!0),a.isMulti?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Hs,[!a.disabled&&a.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:a.setInputRef,class:"w-full bg-transparent outline-none border-0 m-0 p-0 text-gray-900 hover:cursor-pointer",autocapitalize:"none",autocomplete:"off",autocorrect:"off",spellcheck:"false",type:"text",tabindex:"0","aria-autocomplete":"list",placeholder:a.selectedOptionLabel?" ":a.placeholder,"onUpdate:modelValue":s[4]||(s[4]=i=>l.value=i),onFocus:s[5]||(s[5]=(...i)=>a.onInputFocus&&a.onInputFocus(...i)),onBlur:s[6]||(s[6]=(...i)=>a.onInputBlur&&a.onInputBlur(...i)),onKeydown:s[7]||(s[7]=(...i)=>a.onInputKeydown&&a.onInputKeydown(...i))},null,40,qs)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)]))]),e.createElementVNode("div",Ks,[a.showClear?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-hidden":"true",disabled:a.disabled,onClick:s[8]||(s[8]=e.withModifiers((...i)=>a.onClearSelected&&a.onClearSelected(...i),["stop"]))},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,Ws)):e.createCommentVNode("",!0),a.showClear?(e.openBlock(),e.createElementBlock("div",Gs)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-hidden":"true",disabled:a.disabled,onClick:s[9]||(s[9]=e.withModifiers((...i)=>a.onToggleSelect&&a.onToggleSelect(...i),["stop"])),title:a.isOpen?"Закрити список":"Відкрити список"},[e.createVNode(e.unref(P.ChevronDown),{class:"h-4 w-4"})],8,Ys)])],42,Fs))}}),Zs=["aria-disabled","onClick"],Js={class:"leading-[19px]"},Qs=["innerHTML"],ei={key:1,class:"px-3 py-2 text-center text-gray-500"},ti=e.defineComponent({__name:"vs-select-dropdown",props:{isOpen:{type:Boolean},dropdownStyle:{},filteredOptionsList:{},selectedNavIndex:{},optionTemplate:{},iconWrapperClass:{},setDropdownRef:{type:Function},setListRef:{type:Function},setItemRef:{type:Function},isSelected:{type:Function},onOptionClick:{type:Function},shouldShowColorDot:{type:Function},optionHasIcon:{type:Function},getIconColorStyle:{type:Function},resolveOptionIcon:{type:Function},renderTemplate:{type:Function}},setup(o){return(t,n)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.isOpen?(e.openBlock(),e.createElementBlock("div",{key:0,ref:t.setDropdownRef,class:"fixed z-[3000] rounded bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.1),0_4px_11px_rgba(0,0,0,0.1)]",style:e.normalizeStyle(t.dropdownStyle),role:"listbox"},[e.createElementVNode("div",{class:"overflow-y-auto py-1",style:e.normalizeStyle({maxHeight:t.dropdownStyle.maxHeight||"300px"}),ref:t.setListRef},[t.filteredOptionsList.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.filteredOptionsList,(r,l)=>(e.openBlock(),e.createElementBlock("div",{key:r.id,ref_for:!0,ref:a=>t.setItemRef(a,l),class:e.normalizeClass(["flex px-3 py-2 gap-2 cursor-pointer select-none text-gray-900",t.isSelected(r.id)?"bg-[#2684ff] text-white":"bg-white hover:bg-[#deebff] hover:text-[#172b4d]",t.selectedNavIndex===l&&!t.isSelected(r.id)?"bg-[#deebff] text-[#172b4d]":""]),"aria-disabled":t.isSelected(r.id)?"true":"false",role:"option",tabindex:"-1",onClick:a=>t.onOptionClick(r)},[t.shouldShowColorDot(r)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[11px] h-[11px] rounded-full block flex-shrink-0",style:e.normalizeStyle({backgroundColor:r?.color})},null,4)):e.createCommentVNode("",!0),!t.optionTemplate&&t.optionHasIcon(r)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(t.iconWrapperClass),style:e.normalizeStyle(t.getIconColorStyle(r)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.resolveOptionIcon(r)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),e.createElementVNode("div",Js,[t.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:t.renderTemplate(r)},null,8,Qs)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(r.text),1)],64))])],10,Zs))),128)):(e.openBlock(),e.createElementBlock("div",ei," No options "))],4)],4)):e.createCommentVNode("",!0)]))}}),ni=["disabled"],Fo="w-[16px] h-[16px] flex items-center justify-center flex-shrink-0 text-current",Kn=be(e.defineComponent({__name:"vs-input-select",props:{multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},mode:{},defaultValue:{},search:{type:Boolean,default:!0},placeholder:{default:"Оберіть значення"},prefix:{default:"api"},host:{default:""},data:{default:""},options:{default:()=>[]},api:{default:null},maxHeight:{default:400},parent:{},set:{},slot:{},add:{},teleport:{default:"body"},auto:{default:0},start:{default:0},style:{default:()=>({})},customClass:{default:""},modelValue:{},error:{default:null},name:{},maxlength:{},minlength:{}},emits:["change","update:modelValue","value-selected"],setup(o,{emit:t}){const n=o,r=t,l=e.computed(()=>n.multiple),a=e.computed(()=>n.disabled),s=e.computed(()=>n.search);ze(n.style);const i=e.computed({get:()=>n.modelValue,set:R=>r("update:modelValue",R)});!i.value&&n.defaultValue&&(i.value=n.defaultValue);const c=e.ref(null),d=e.ref(null),u=e.ref(null),p=e.ref(null),g=e.ref(!1),h=e.ref(!1),m=e.ref(null),b=e.ref(-1),k=e.ref([]),v=e.ref(""),x=e.ref(null),_=R=>{d.value=R},w=R=>{x.value=R},F=R=>{p.value=R},O=R=>{u.value=R},N=(R,Q)=>{k.value[Q]=R},E=e.ref({}),V=e.ref([]),B=e.computed(()=>{if(!V.value.length)return[];const R=Ve.value,Q=new Map(R.map(ce=>[ce.id?.toString(),ce]));return V.value.map(ce=>Q.get(ce?.toString())).filter(ce=>!!ce)}),M=e.computed(()=>n.placeholder||"Select..."),I=e.computed(()=>le(m.value)),j=e.computed(()=>a.value?!1:l.value?V.value.length>0:!!i.value),$=R=>l.value?V.value.some(Q=>Q?.toString()===R?.toString()):i.value?.toString()===R?.toString(),L=e.computed(()=>{let R=Ve.value??[];if(!n.data&&v.value.trim()!==""){const Q=v.value.toLowerCase();R=R.filter(ce=>{const Ee=le(ce).toLowerCase(),Me=ce.text?.toLowerCase?.()||"";return Ee.includes(Q)||Me.includes(Q)})}if(l.value&&V.value.length){const Q=new Set(V.value.map(ce=>ce?.toString()));R=R.filter(ce=>!Q.has(ce.id?.toString()))}return R}),D=e.inject("values"),G=e.inject("field-props"),K=e.computed(()=>n.slot??n?.optionTemplate??""),Z=R=>cn(R,K.value),le=R=>jn(R,K.value),Ce=e.computed(()=>Tn(K.value)),ke=R=>Ht(R),ee=R=>!!(!Ce.value&&Ot(R)&&!ke(R)),ie=R=>{const Q=Ot(R);return Q?{color:Q}:void 0},_e=R=>!!(!Ce.value&&(Ut(R)||ke(R))),me=(R,Q,ce)=>{if(!G)return!1;const Ee=G.value?.[R]??{},Me=(Fe,rt,kt)=>{if(!rt.length)return Fe;const[lt,...ct]=rt,at={...Fe};if(!ct.length)return at[lt]=kt,at;const rn=typeof Fe[lt]=="object"&&Fe[lt]!==null?Fe[lt]:{};return at[lt]=Me(rn,ct,kt),at},Le=Me(Ee,Q,ce);return G.value={...G.value||{},[R]:Le},!0},we=R=>{if(!n.set)return;const Q=D?.value;!Q&&!G||Object.entries(n.set).forEach(([ce,Ee])=>{if(!ce)return;const Me=R?R[Ee]:null,Le=ce.split(".").map(kt=>kt.trim()).filter(Boolean);if(!Le.length)return;const[Fe,...rt]=Le;rt.length&&me(Fe,rt,Me??null)||Q&&(Q[Fe]=Me??null)})},{optionsList:Ve,parentValue:Ne,fetchOptions:Ue,fetchOptionByValue:it,loadOptions:nt}=Pn({props:n,formValues:D,watchParent:!1}),ve=R=>R==null?"":String(R),W=R=>{if(l.value){if(!V.value.length){Ve.value=R;return}}else if(!m.value){Ve.value=R;return}const Q=new Set(R.map(Ee=>ve(Ee.id)).filter(Boolean));if(l.value){const Ee=new Set(V.value.map(Le=>ve(Le)).filter(Boolean)),Me=(Ve.value??[]).filter(Le=>{const Fe=ve(Le.id);return!Fe||!Ee.has(Fe)?!1:!Q.has(Fe)});Ve.value=[...Me,...R];return}const ce=ve(m.value?.id);if(ce&&!Q.has(ce)){Ve.value=[m.value,...R];return}Ve.value=R},te=async()=>{if(n.data){const R=await Ue(v.value);return W(R),Ve.value}return nt()},ne=async R=>{if(R==null||R==="")return null;const Q=Ve.value?.find(ce=>ce?.id?.toString()===String(R));return Q||it(R)},fe=async R=>{const Q=new Set(Ve.value.map(Ee=>Ee.id?.toString())),ce=R.filter(Ee=>!Q.has(Ee?.toString()));ce.length&&await ce.reduce(async(Ee,Me)=>{await Ee;const Le=await ne(Me);Le&&Ve.value.push(Le)},Promise.resolve())},he=()=>{if(!L.value.length){b.value=-1;return}let R=0;if(!l.value&&m.value){const Q=m.value.id?.toString(),ce=L.value.findIndex(Ee=>Ee.id?.toString()===Q);ce>=0&&(R=ce)}b.value=R,e.nextTick(()=>{oe(k.value[R],u.value)})},Se=async()=>{a.value||(g.value=!0,await te(),await e.nextTick(()=>{Y(),x.value?.focus()}),he())},Be=()=>{g.value=!1,b.value=-1,e.nextTick(()=>{x.value?.blur()})},Ae=async R=>{if(a.value)return;(R!==void 0?R:!g.value)?await Se():Be()},Xe=async()=>{if(!a.value){if(g.value){Be();return}await Se()}},X=()=>{l.value?(V.value=[],i.value=[],r("change",[]),z(null,[])):(m.value=null,i.value=null,r("change",null),z(null,null)),we(null),v.value="",e.nextTick(()=>{x.value?.focus(),g.value||Se()})},ae=R=>{l.value&&(V.value=V.value.filter(Q=>Q?.toString()!==R?.toString()),i.value=[...V.value],r("change",i.value),z(null),e.nextTick(()=>x.value?.focus()))},z=(R,Q)=>{const ce=Q??(l.value?[...V.value]:R?.id??null);r("value-selected",{name:n.name,value:ce,option:R})},H=R=>{l.value?($(R.id)||(V.value=[...V.value,R.id],i.value=[...V.value],r("change",i.value),z(R)),v.value="",e.nextTick(()=>{x.value?.focus(),b.value=Math.min(b.value,L.value.length-1)}),we(null)):(m.value=R,i.value=R.id,r("change",i.value),z(R),v.value="",Be(),we(R))},U=R=>{if($(R.id)){l.value||Be();return}H(R)},oe=(R,Q)=>{if(!R||!Q)return;const ce=R.offsetTop,Ee=ce+R.offsetHeight,Me=Q.scrollTop,Le=Me+Q.clientHeight;let Fe=Q.scrollTop;ce<Me?Fe=ce-80:Ee>Le&&(Fe=Ee-Q.clientHeight+4);const rt=Q;rt.scrollTop=Fe},T=R=>{let Q=R.parentElement;for(;Q;){if(Q.classList.contains("ui-dialog__content"))return Q;const ce=window.getComputedStyle(Q),Ee=ce.overflow+ce.overflowY+ce.overflowX;if(Ee.includes("auto")||Ee.includes("scroll")||Q===document.body||Q===document.documentElement)return Q;Q=Q.parentElement}return document.body},Y=()=>{if(!d.value)return;const R=d.value.getBoundingClientRect(),Q=window.innerHeight||document.documentElement.clientHeight,ce=window.innerWidth||document.documentElement.clientWidth,Ee=8,Me=8,Le=n.maxHeight||300,Fe=Q-R.bottom-Me-Ee,rt=R.top-Me-Ee,kt=Fe>=rt,lt=Math.max(ce-Ee*2,0);let{width:ct}=R;lt>0&&ct>lt&&(ct=lt);let{left:at}=R;at+ct+Ee>ce&&(at=ce-ct-Ee),at=Math.max(at,Ee);const rn=Math.min(Le,Math.max(kt?Fe:rt,50));E.value={position:"fixed",left:`${at}px`,width:`${ct}px`,maxHeight:`${rn}px`,transform:kt?"none":"translateY(-100%)",top:kt?`${R.bottom+Me}px`:`${R.top-Me}px`}},J=async R=>{a.value||!g.value&&(R.key==="ArrowDown"||R.key==="ArrowUp")&&(R.preventDefault(),await Se())},se=R=>{if(!g.value)return;const{key:Q}=R;if(Q==="ArrowDown")R.preventDefault(),b.value+1<L.value.length&&(b.value+=1,oe(k.value[b.value],u.value));else if(Q==="ArrowUp")R.preventDefault(),b.value>0&&(b.value-=1,oe(k.value[b.value],u.value));else if(Q==="Enter"){R.preventDefault();const ce=L.value[b.value];ce&&H(ce),x.value?.blur()}else Q==="Escape"?(R.preventDefault(),Be()):Q==="Backspace"?l.value&&v.value===""&&V.value.length&&(V.value=V.value.slice(0,-1),i.value=[...V.value],r("change",i.value)):Q==="Home"?(b.value=0,oe(k.value[0],u.value)):Q==="End"?(b.value=L.value.length-1,oe(k.value[b.value],u.value)):Q==="Tab"&&Be()},$e=()=>{a.value||(h.value=!0)},ht=()=>{h.value=!1,v.value=""},He=R=>{R.key==="Escape"&&g.value&&Be()},Pe=R=>{const Q=R.target;c.value?.contains(Q)||p.value?.contains(Q)||Be()},gt=R=>{g.value&&u.value&&!u.value.contains(R.target)&&Y()},Ze=()=>{g.value&&Y()},yt=()=>{g.value&&Y()};async function ot(){if(l.value)Array.isArray(i.value)?V.value=[...i.value]:(V.value=i.value==null?[]:[i.value],i.value=[...V.value]),n.data&&V.value.length&&(await fe(V.value),await e.nextTick());else{if(Array.isArray(i.value)){const R=i.value[0]??null;i.value=R??null}i.value!=null&&(m.value=await ne(i.value)),we(m.value??null)}}e.watch(i,()=>{ot()}),e.onMounted(async()=>{addEventListener("keydown",He),addEventListener("scroll",gt,!0),addEventListener("resize",Ze),document.addEventListener("click",Pe,!0),d.value&&T(d.value).addEventListener("scroll",yt,!0),n.options?.length&&!n.data?Ve.value=[...n.options]:n.data&&W(await Ue("")),await ot(),Je.value=!1}),e.onUnmounted(()=>{removeEventListener("keydown",He),removeEventListener("scroll",gt,!0),removeEventListener("resize",Ze),document.removeEventListener("click",Pe,!0),d.value&&T(d.value).removeEventListener("scroll",yt,!0)});const{isOpenAdd:Lt,addData:$t,addSchema:fo,addForm:Nt,addTitle:It,addOption:mo,onAddValue:bt}=Ao({props:n,fetchOptionByValue:it,optionsList:Ve,selectedOption:m,modelValue:i});function ho(R,Q=200){let ce;return(...Ee)=>{ce&&clearTimeout(ce),ce=window.setTimeout(()=>R(...Ee),Q)}}const on=ho(async R=>{W(await Ue(R))},200);e.watch(v,R=>{n.data&&on(R.trim())}),e.watch(()=>n.options,R=>{!n.data&&R?.length&&(Ve.value=[...R],ot())},{immediate:!0});const Je=e.ref(!0);return e.watch(Ne,async()=>{if(n.data&&(Je.value||(l.value?(V.value=[],i.value=[],r("change",[])):(m.value=null,i.value=null,r("change",null))),await te(),n.auto===1&&Ne.value&&Ve.value.length>0)){const R=Ve.value[0];R&&H(R)}}),(R,Q)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(pe.VsModal),{visible:e.unref(Lt),"onUpdate:visible":Q[1]||(Q[1]=ce=>e.isRef(Lt)?Lt.value=ce:null),class:"z-[1000]",title:e.unref(It),buttonText:"Додати",onDone:e.unref(mo),teleport:R.teleport},{default:e.withCtx(()=>[e.createVNode(tt,{schema:e.unref(fo),modelValue:e.unref($t),"onUpdate:modelValue":Q[0]||(Q[0]=ce=>e.isRef($t)?$t.value=ce:null),ref_key:"addForm",ref:Nt},null,8,["schema","modelValue"])]),_:1},8,["visible","title","onDone","teleport"]),e.createElementVNode("div",{class:"flex gap-1 w-full",ref_key:"selectRoot",ref:c,onClick:Q[4]||(Q[4]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:e.normalizeClass(["relative w-full font-sans",n.customClass])},[Q[5]||(Q[5]=e.createElementVNode("span",{id:"react-select-live-region",class:"sr-only"},null,-1)),Q[6]||(Q[6]=e.createElementVNode("span",{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",role:"log",class:"sr-only"},null,-1)),e.createVNode(Xs,{keyWord:v.value,"onUpdate:keyWord":Q[2]||(Q[2]=ce=>v.value=ce),disabled:a.value,"is-open":g.value,"input-focus":h.value,"is-multi":l.value,"selected-options":B.value,"selected-ids":V.value,placeholder:M.value,search:s.value,"option-template":K.value,"icon-wrapper-class":Fo,"selected-option-label":I.value,"selected-option":m.value,"show-clear":j.value,"set-trigger-ref":_,"set-input-ref":w,"should-show-color-dot":ee,"option-has-icon":_e,"get-icon-color-style":ie,"resolve-option-icon":ke,"render-template":Z,"get-label":le,"on-control-keydown":J,"on-control-click":Xe,"on-input-focus":$e,"on-input-blur":ht,"on-input-keydown":se,"on-remove-selected":ae,"on-clear-selected":X,"on-toggle-select":Ae},null,8,["keyWord","disabled","is-open","input-focus","is-multi","selected-options","selected-ids","placeholder","search","option-template","selected-option-label","selected-option","show-clear"]),e.createVNode(ti,{"is-open":g.value,"dropdown-style":E.value,"filtered-options-list":L.value,"selected-nav-index":b.value,"option-template":K.value,"icon-wrapper-class":Fo,"set-dropdown-ref":F,"set-list-ref":O,"set-item-ref":N,"is-selected":$,"on-option-click":U,"should-show-color-dot":ee,"option-has-icon":_e,"get-icon-color-style":ie,"resolve-option-icon":ke,"render-template":Z},null,8,["is-open","dropdown-style","filtered-options-list","selected-nav-index","option-template"])],2),n.add?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:Q[3]||(Q[3]=(...ce)=>e.unref(bt)&&e.unref(bt)(...ce)),class:"bg-white hover:bg-gray-100 text-sm text-gray-900 py-[10px] px-3 border border-stone-200 rounded-md h-[38px] flex items-center gap-2",disabled:a.value,type:"button"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),Q[7]||(Q[7]=e.createElementVNode("span",null,"Додати",-1))],8,ni)):e.createCommentVNode("",!0)],512)],64))}}),[["__scopeId","data-v-3fdc60cb"]]),oi=["placeholder","disabled"],Mo=e.defineComponent({__name:"vs-input-textarea",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??"");function s(){typeof r.value=="string"&&(r.value=r.value.trim())}return(i,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{"onUpdate:modelValue":c[0]||(c[0]=d=>r.value=d),placeholder:a.value,disabled:l.value,row:"2",onBlur:s,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] h-auto bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"}},null,42,oi)),[[e.vModelText,r.value]])}}),Do=e.defineComponent({__name:"vs-input-richtext",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{},format:{default:"html"},richtextProps:{default:()=>({})}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.defineAsyncComponent(()=>Promise.resolve().then(()=>Wg)),n=o,{inputClass:r}=ze(n.style),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!n.disabled),s=e.computed(()=>n.placeholder??""),i=e.computed(()=>({height:"300px",format:n.format,...n.richtextProps}));return(c,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["!h-full",[c.customClass,e.unref(r)]]),style:e.normalizeStyle(a.value?{pointerEvents:"none",opacity:.6}:{})},[e.createVNode(e.unref(t),e.mergeProps({modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=u=>l.value=u),placeholder:s.value},i.value),null,16,["modelValue","placeholder"])],6))}}),ri={},li={viewBox:"0 0 178 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function ai(o,t){return e.openBlock(),e.createElementBlock("svg",li,t[0]||(t[0]=[e.createStaticVNode('<rect x="27" y="50.5" width="124" height="39" rx="7.5" fill="currentColor" class="fill-white dark:fill-neutral-800"></rect><rect x="27" y="50.5" width="124" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-50 dark:stroke-neutral-700/10"></rect><rect x="34.5" y="58" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="66.5" y="61" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="66.5" y="73" width="77" height="6" rx="3" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="19.5" y="28.5" width="139" height="39" rx="7.5" fill="currentColor" class="fill-white dark:fill-neutral-800"></rect><rect x="19.5" y="28.5" width="139" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-100 dark:stroke-neutral-700/30"></rect><rect x="27" y="36" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><rect x="59" y="39" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><rect x="59" y="51" width="92" height="6" rx="3" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><g filter="url(#filter1)"><rect x="12" y="6" width="154" height="40" rx="8" fill="currentColor" class="fill-white dark:fill-neutral-800" shape-rendering="crispEdges"></rect><rect x="12.5" y="6.5" width="153" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-100 dark:stroke-neutral-700/60" shape-rendering="crispEdges"></rect><rect x="20" y="14" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect><rect x="52" y="17" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect><rect x="52" y="29" width="106" height="6" rx="3" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect></g><defs><filter id="filter1" x="0" y="0" width="178" height="64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix><feOffset dy="6"></feOffset><feGaussianBlur stdDeviation="6"></feGaussianBlur><feComposite in2="hardAlpha" operator="out"></feComposite><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0"></feColorMatrix><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1187_14810"></feBlend><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1187_14810" result="shape"></feBlend></filter></defs>',12)]))}const si=be(ri,[["render",ai]]),ii={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden flex flex-col"},ci={key:0,class:"flex flex-col gap-2 !p-4 border-b border-gray-200 md:flex-row md:items-center md:justify-between bg-gray-50"},di={key:0,class:"relative flex-1 min-w-0"},ui={class:"flex flex-nowrap items-center justify-end gap-2 shrink-0"},pi={class:"w-full overflow-x-auto"},fi={class:"w-full min-w-[640px] table-auto divide-y divide-gray-200"},mi={class:"bg-gray-50"},hi={class:"border-b border-gray-200"},gi={class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 w-12 text-center"},yi=["onClick"],bi={key:0,class:"text-gray-400"},ki={key:0,colspan:"100%",class:"text-center"},xi={class:"w-full"},wi={class:"p-5 min-h-[200px] flex flex-col justify-center items-center text-center"},_i=["onDragstart","onDragover","onDrop"],Ci={class:"px-4 py-3 text-center align-middle"},vi={class:"flex items-center justify-center"},Ei=["innerHTML"],Bi={key:0,class:"flex items-center gap-3 text-sm text-gray-700"},Vi={key:0},Si=["src"],$i={key:1,class:"rounded-md max-w-[45px] w-[45px] max-h-[45px] h-[45px] bg-gray-200 flex items-center justify-center"},Ni={key:1,class:"flex items-center justify-center"},Ai={key:2,class:"text-sm font-medium text-gray-900"},Fi={class:"px-4 py-3 text-right whitespace-nowrap"},Mi={class:"flex items-center justify-end gap-2"},Di=["onClick"],Ti=["onClick"],Li={class:"vs-form__head mr-5 mt-3 flex items-center justify-end sticky top-0 left-0 z-[60] bg-white"},To=e.defineComponent({__name:"vs-input-datatable",props:e.mergeModels({actions:{},colModel:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useSlots(),r=W=>t.actions===void 0?!0:t.actions.includes(W),l=["search","import","export","add"],a=e.computed(()=>l.some(W=>r(W))),s=e.useModel(o,"modelValue"),i=e.ref({}),c=e.ref(""),d=e.ref(null),u=e.ref("asc"),p=e.computed(()=>{const W=s.value??[],te=c.value?W.filter(he=>g.value?.some(Se=>{const Be=Se.key||Se.name;if(!Be)return!1;const Ae=he[Be];return Ae?Array.isArray(Ae)?Ae.join(", ").toLowerCase().includes(c.value.toLowerCase()):String(Ae).toLowerCase().includes(c.value.toLowerCase()):!1})):W;if(!d.value)return te;const ne=d.value,fe=[...te].sort((he,Se)=>{const Be=ie(he?.[ne]),Ae=ie(Se?.[ne]);return typeof Be=="number"&&typeof Ae=="number"?Be-Ae:String(Be).localeCompare(String(Ae))});return u.value==="asc"?fe:fe.reverse()}),g=e.computed(()=>(t.colModel??[]).filter(W=>!W.tableHidden)),h=e.ref(null),m=e.ref(null),b=e.ref(null),k=W=>{h.value=W},v=W=>{m.value=W},x=W=>{if(h.value===null||h.value===W){h.value=null,m.value=null;return}const te=[...s.value],[ne]=te.splice(h.value,1);te.splice(W,0,ne),s.value=te,h.value=null,m.value=null},_=()=>{b.value&&b.value.click()},w=W=>{const te=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico",".tiff",".tif"],ne=W.toLowerCase();return te.some(fe=>ne.endsWith(fe))},F=W=>{const ne=W.target.files?.[0];if(!ne)return;const fe=new FileReader;fe.onload=he=>{try{const Se=he.target?.result;if(typeof Se=="string"){const Be=JSON.parse(Se);Array.isArray(Be)&&s.value.push(...Be)}}catch(Se){console.error("Error parsing file:",Se)}},fe.readAsText(ne)},O=()=>{const W=JSON.stringify(s.value,null,2),te=new Blob([W],{type:"application/json"}),ne=URL.createObjectURL(te),fe=document.createElement("a");fe.href=ne,fe.download="data.json",fe.click(),URL.revokeObjectURL(ne)},N=new Set(["autocomplete","select","radio","checkbox","combobox"]),E=new Map,V=(W,te)=>{const ne=`/api/suggest/${W}`,fe=ne.includes("?")?"&":"?",he=te?`&val=${te}`:"";return`${ne}${fe}json=1${he}`},B=W=>W==null||W===""?null:typeof W=="object"?W?.id!==void 0&&W.id!==null&&W.id!==""?W.id:null:W,M=W=>{const te=new Set;return Array.isArray(s.value)&&s.value.forEach(ne=>{const fe=ne?.[W];if(fe==null||fe==="")return;if(Array.isArray(fe)){fe.forEach(Se=>{const Be=B(Se);Be!==null&&te.add(Be)});return}const he=B(fe);he!==null&&te.add(he)}),te},I=async()=>{if(!t.colModel?.length)return;const W=t.colModel.filter(te=>te.data&&N.has(te.type?.toLowerCase()||""));W.length&&await Promise.all(W.map(async te=>{const ne=te.key||te.name;if(!ne)return;const fe=M(ne),he=Array.from(fe).map(Ae=>String(Ae)).sort(),Se=he.join(",");if(!he.length||E.get(ne)===Se)return;E.set(ne,Se);const Be=he.map(encodeURIComponent).join(",");try{const Xe=await(await fetch(V(te.data,Be))).json();i.value[ne]=Xe?.data??Xe}catch(Ae){console.error("Failed to fetch column values",Ae)}}))};e.watch([()=>t.colModel,()=>s.value],()=>{I()},{immediate:!0,deep:!0});const j=e.ref(""),$=e.ref(!1);let L="edit",D=0;const G=W=>(W?.format||W?.type||"").toString().toLowerCase(),K=e.computed(()=>t.colModel?.filter(W=>G(W)!=="slot")??[]),Z=e.ref({}),le=e.ref({}),Ce=W=>typeof W!="string"?!1:!!n[W],ke=(W,te)=>te?te.split(".").reduce((ne,fe)=>ne==null?ne:ne[fe.trim()],W):W,ee=(W,te)=>typeof W!="string"?"":W.replace(/{{\s*([^}]+)\s*}}/g,(ne,fe)=>{const he=ke(te,fe.trim());return he??""}),ie=W=>{if(W==null||W==="")return"";if(typeof W=="number")return W;if(typeof W=="boolean")return W?1:0;if(typeof W=="string")return W.toLowerCase();if(Array.isArray(W))return W.map(te=>ie(te)).join(", ");if(typeof W=="object"){if(W.text!==void 0)return String(W.text).toLowerCase();if(W.label!==void 0)return String(W.label).toLowerCase();if(W.id!==void 0)return String(W.id).toLowerCase()}return String(W).toLowerCase()},_e=W=>{const te=W.key||W.name;if(te){if(d.value===te){u.value=u.value==="asc"?"desc":"asc";return}d.value=te,u.value="asc"}};async function me(){j.value="Додати",$.value=!0,L="add",Z.value={}}function we(W,te){if(!W?.length)return null;const ne=typeof te=="object"?te?.id:te;return ne==null||ne===""?null:W.find(fe=>fe?.id?.toString()===ne.toString())?.text??null}function Ve(W){return W==null||W===""?"-":Array.isArray(W)?W.map(te=>typeof te=="object"?te?.text??te?.id??"-":te).join(", "):typeof W=="object"?W?.text??W?.id??"-":W}function Ne(W,te){const ne=te.key||te.name,fe=W?.[ne],he=i.value[ne];if(!fe)return"-";if(Array.isArray(fe)){const Be=fe.map(Ae=>we(he,Ae)).filter(Boolean);return Be.length?Be.join(", "):Ve(fe)}const Se=we(he,fe);return Se||Ve(fe)}async function Ue(W,te){j.value="Редагувати",$.value=!0,L="edit",D=te,Z.value={...W}}function it(){const W=le.value.validate();if(W){pe.notify({type:"warning",title:"Помилка валідації",message:Object.entries(W).map(([te,ne])=>`${te}: ${ne}`).join(`
|
|
1
|
+
(function(ge,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@opengis/core"),require("lucide-vue-next")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core","lucide-vue-next"],e):(ge=typeof globalThis<"u"?globalThis:ge||self,e(ge.FormBuilder={},ge.Vue,ge.OpenGISCore,ge.lucide))})(this,(function(ge,e,pe,P){"use strict";const xo=e.defineComponent({__name:"vs-info-tooltip",props:{text:{}},setup(o){const t=o,n=e.ref(!1),r=e.ref({top:"0px",left:"0px"});function l(s){if(!t.text)return;const i=s.currentTarget.getBoundingClientRect();r.value={top:`${i.bottom+4}px`,left:`${Math.min(i.left,window.innerWidth-230)}px`},n.value=!0}function a(){n.value=!1}return(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("span",{class:"inline-flex items-center",onMouseenter:l,onMouseleave:a},[e.renderSlot(s.$slots,"default",{},()=>[e.createVNode(e.unref(P.Info),{class:"h-4 w-4 text-gray-400 cursor-help"})])],32),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[n.value&&s.text?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(r.value),class:"fixed z-[9999] max-w-xs p-2 bg-gray-900 text-white text-xs rounded-lg shadow-lg pointer-events-none"},e.toDisplayString(s.text),5)):e.createCommentVNode("",!0)]))],64))}}),Gr={class:"w-full relative"},Yr={key:0,class:"text-[14px] font-medium text-gray-900 mb-2 flex items-center gap-1"},Xr={class:"opacity-100"},Zr={key:0,class:"text-red-500 text-[14px]"},Jr={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},Qr=e.defineComponent({__name:"vs-layout-default",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){const t=o,n=e.computed(()=>typeof t.item?.label=="string"&&t.item.label?t.item.label:t.item?.ua||t.label||t.ua),r=e.computed(()=>!!n.value),l=e.computed(()=>!!t.item?.rules?.includes("required")),a=e.computed(()=>t.item?.info||"");return(s,i)=>(e.openBlock(),e.createElementBlock("div",Gr,[r.value?(e.openBlock(),e.createElementBlock("div",Yr,[e.createElementVNode("span",Xr,e.toDisplayString(n.value),1),l.value?(e.openBlock(),e.createElementBlock("span",Zr,"*")):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(xo,{key:1,text:a.value},null,8,["text"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"default",e.mergeProps(s.$attrs,{class:{"opacity-60":s.item.disabled}})),s.error?(e.openBlock(),e.createElementBlock("span",Jr,e.toDisplayString(s.error),1)):e.createCommentVNode("",!0)]))}}),el={class:"w-full relative flex flex-row items-center gap-2"},tl={key:0,class:"text-red-500 text-[14px]"},nl={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},ol=e.defineComponent({__name:"vs-layout-horizontal",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{default:()=>({container:12,label:3})}},setup(o){const t=o,n=e.computed(()=>t.item?.label||t.label||t.ua),r=e.computed(()=>t.item?.info||""),l=e.computed(()=>t.columns??{container:12,label:3}),a=e.computed(()=>{const{container:d,label:u}=l.value;return!d||d<=0?0:Math.min(Math.max(u??0,0),d)/d}),s=e.computed(()=>t.item?.type==="html"||a.value<=0?!1:!!n.value),i=e.computed(()=>{if(!s.value)return{};const d=`${a.value*100}%`;return{flexBasis:d,maxWidth:d}}),c=e.computed(()=>{const{container:d,label:u}=l.value;if(!d||d<=0)return{};if(t.item?.type==="html")return{flexBasis:"100%",maxWidth:"100%"};if(!s.value)return{flexBasis:"100%",maxWidth:"100%"};const p=Math.max(d-Math.max(u??0,0),0)/d;if(!p)return{};const g=`${p*100}%`;return{flexBasis:g,maxWidth:g}});return(d,u)=>(e.openBlock(),e.createElementBlock("div",el,[s.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"text-sm text-gray-900 font-medium flex shrink-0 items-center gap-1",style:e.normalizeStyle(i.value)},[e.createTextVNode(e.toDisplayString(n.value)+" ",1),d.item?.rules?.includes("required")&&n.value?(e.openBlock(),e.createElementBlock("span",tl,"*")):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(xo,{key:1,text:r.value},null,8,["text"])):e.createCommentVNode("",!0)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"flex-1 min-w-0",style:e.normalizeStyle(c.value)},[e.renderSlot(d.$slots,"default",e.normalizeProps(e.guardReactiveProps(d.$attrs)))],4),d.error?(e.openBlock(),e.createElementBlock("span",nl,e.toDisplayString(d.error),1)):e.createCommentVNode("",!0)]))}}),rl={class:"w-full relative"},ll={key:0,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},al=e.defineComponent({__name:"vs-layout-inline",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",rl,[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps(t.$attrs))),t.error?(e.openBlock(),e.createElementBlock("span",ll,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0)]))}}),sl={class:"flex-1 min-w-0"},il={key:0,class:"text-sm font-medium text-slate-700 dark:text-slate-200 flex items-center gap-1"},cl={class:"truncate"},dl={key:0,class:"text-red-500 text-[14px]"},ul=["innerHTML"],pl={key:0,class:"mt-1 text-xs text-red-500"},fl={default:Qr,horizontal:ol,inline:al,settings:e.defineComponent({__name:"vs-layout-settings",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(o){const t=o,n=e.ref("uk");e.computed(()=>(t.item??{})?.[n.value]??t.ua??t.label??"");const r=e.computed(()=>t.item?.description??""),l=e.computed(()=>Array.isArray(t.item?.rules)&&t.item.rules.includes("required")),a=e.computed(()=>(typeof t.error=="string"?t.error:"")??""),s=()=>{const i=typeof localStorage<"u"?localStorage.getItem("locale"):null;n.value=i||"uk"};return e.onMounted(()=>{try{typeof localStorage<"u"&&localStorage.locale&&(n.value=localStorage.locale)}catch{}window.addEventListener("storage",s)}),e.onUnmounted(()=>{window.removeEventListener("storage",s)}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-full relative",{"opacity-60":i.item?.disabled}])},[e.createElementVNode("div",{class:e.normalizeClass(["gap-2 md:flex-row md:items-center md:justify-between",[["switcher","native-select"].includes(i.item.type)?"flex flex-col":""]])},[e.createElementVNode("div",sl,[i.ua||i.label?(e.openBlock(),e.createElementBlock("p",il,[e.createElementVNode("span",cl,e.toDisplayString(i.item[n.value]||i.ua||i.label),1),l.value?(e.openBlock(),e.createElementBlock("span",dl,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",{key:1,class:"text-xs text-slate-500 dark:text-slate-400",innerHTML:r.value},null,8,ul)):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:e.normalizeClass(["w-full",["select","native-select"].includes(i.item.type)?"md:w-[30%]":"md:w-auto"])},[e.renderSlot(i.$slots,"default",e.normalizeProps(e.guardReactiveProps(i.$attrs)))],2)],2),a.value?(e.openBlock(),e.createElementBlock("p",pl,e.toDisplayString(a.value),1)):e.createCommentVNode("",!0)],2))}})};function ze(o){return{inputClass:e.computed(()=>{const n=`disabled:opacity-50 disabled:cursor-not-allowed outline-none focus:ring-2 focus:ring-ring focus:ring-${o?.primaryColor||"blue"}-500 border border-solid border-stone-200 rounded-md text-sm text-stone-800 placeholder:text-stone-400 `;return o?.size==="sm"?`${n}h-[32px]`:`${n}h-[38px]`})}}const ml=["placeholder","disabled"],hl=e.defineComponent({__name:"vs-input-password",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??"");return(s,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"password","onUpdate:modelValue":i[0]||(i[0]=c=>r.value=c),placeholder:a.value,disabled:l.value,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":s.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,ml)),[[e.vModelText,r.value]])}}),gl=["placeholder","disabled","maxlength","minlength"],Rt=e.defineComponent({__name:"vs-input-text",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??""),s=e.computed(()=>t.maxlength??void 0),i=e.computed(()=>t.minlength??void 0);function c(){typeof r.value=="string"&&(r.value=r.value.trim())}return(d,u)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"text","onUpdate:modelValue":u[0]||(u[0]=p=>r.value=p),placeholder:a.value,disabled:l.value,maxlength:s.value,minlength:i.value,onBlur:c,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[d.customClass,e.unref(n),{"!border-red-600":d.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,gl)),[[e.vModelText,r.value]])}}),yl=["step","placeholder","disabled","min","max"],wo=e.defineComponent({__name:"vs-input-number",props:e.mergeModels({style:{type:Object,default:()=>({})},placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1},min:{type:Number,default:void 0},max:{type:Number,default:void 0},step:{type:[Number,String],default:void 0}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useAttrs(),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!t.disabled),s=u=>{if(u==null||u==="")return;const p=typeof u=="string"?u.trim().replace(",","."):u,g=Number(p);return Number.isFinite(g)?g:void 0},i=e.computed(()=>s(t.min??r.min)),c=e.computed(()=>s(t.max??r.max)),d=e.computed(()=>{if(t.step!==void 0&&t.step!==null&&t.step!=="")return t.step;const u=r.step;return typeof u=="number"||typeof u=="string"?u:"any"});return(u,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"number",step:d.value,"onUpdate:modelValue":p[0]||(p[0]=g=>l.value=g),placeholder:o.placeholder,disabled:a.value,class:e.normalizeClass(["py-1.5 px-3 block w-full bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"},min:i.value,max:c.value},null,10,yl)),[[e.vModelText,l.value]])}}),Tn=o=>!!String(o??"").trim(),Ot=o=>o?.color?String(o.color):"",Ut=o=>{const t=o?.icon;if(typeof t=="string")return t;const n=o?.imgUrl;return typeof n=="string"?n:""},Ht=o=>{const t=o?.icon;return t&&typeof t!="string"?t:null},bl={class:"flex items-center gap-[4px]"},kl=["value","id","disabled"],xl=["for"],wl=["innerHTML"],_l={key:1,class:"text-[14px] text-gray-700 flex items-center gap-2 dark:text-neutral-400"},Cl=["src"],vl=e.defineComponent({__name:"vs-checkbox-default",props:{value:{default:""},label:{default:""},html:{default:""},disabled:{type:Boolean,default:!1},id:{},modelValue:{default:""},info:{},error:{},option:{default:null}},emits:["update:modelValue"],setup(o,{emit:t}){const n=t,r=o,l=e.computed({get:()=>r.modelValue,set:h=>n("update:modelValue",h)}),a=e.computed(()=>!!r.disabled),s=e.computed(()=>Ut(r.option)),i=e.computed(()=>Ht(r.option)),c=e.computed(()=>Ot(r.option)),d=e.computed(()=>!!(c.value&&!s.value&&!i.value)),u=e.computed(()=>!!(s.value&&c.value)),p=e.computed(()=>c.value?{color:c.value}:void 0),g=e.computed(()=>{if(!(!s.value||!c.value))return{backgroundColor:c.value,WebkitMaskImage:`url(${s.value})`,maskImage:`url(${s.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(h,m)=>(e.openBlock(),e.createElementBlock("div",bl,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",value:h.value,"onUpdate:modelValue":m[0]||(m[0]=b=>l.value=b),class:e.normalizeClass(["shrink-0 border border-solid hidden border-gray-700 w-3.5 h-3.5 rounded text-blue-600 focus:ring-offset-0 dark:bg-neutral-800 dark:border-neutral-700 cursor-pointer",{"!cursor-not-allowed":a.value}]),id:h.id,disabled:a.value},null,10,kl),[[e.vModelCheckbox,l.value]]),e.createElementVNode("label",{for:h.id,class:e.normalizeClass(["flex flex-1 checkbox-label items-center gap-x-2 cursor-pointer text-sm text-gray-800 dark:text-neutral-300",{"!cursor-not-allowed":a.value}])},[e.createElementVNode("div",{class:e.normalizeClass(["h-[16px] text-white w-[16px] flex items-center justify-center shrink-0 border rounded",[l.value?"bg-blue-600 border-blue-600":"bg-white border-gray-600",h.error?"border-red-600":""]])},[e.createVNode(e.unref(P.Check),{class:"h-4 w-4"})],2),h.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:h.html},null,8,wl)):(e.openBlock(),e.createElementBlock("span",_l,[d.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:c.value})},null,4)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(g.value)},null,4)):s.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:s.value,alt:"icon"},null,8,Cl)):i.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(p.value)},null,8,["style"])):e.createCommentVNode("",!0),e.renderSlot(h.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(h.label),1)])]))],10,xl)]))}}),El=["name","value","disabled"],Bl=["innerHTML"],Vl={key:1,class:"flex items-center gap-[6px] text-[14px]"},Sl={key:2,class:"text-[16px] inline-flex items-center justify-center"},$l=["src"],Nl=e.defineComponent({__name:"vs-checkbox-buttons",props:{value:{type:[String,Number,Boolean],default:""},label:{default:""},html:{default:""},modelValue:{default:""},disabled:{type:Boolean},id:{},icon:{},imgUrl:{},style:{},option:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=e.computed({get:()=>n.modelValue,set:b=>{r("update:modelValue",b)}}),a=e.computed(()=>Array.isArray(l.value)?l.value.includes(n.value):l.value===!0||l.value===n.value),s=e.computed(()=>n.style?.size==="xs"?"p-1.5 text-xs":n.style?.size==="lg"?"p-3.5 text-[20px]":"p-2.5 text-xs"),i=e.computed(()=>({...n.option??{},icon:n.option?.icon??n.icon,imgUrl:n.option?.imgUrl??n.imgUrl,color:n.option?.color})),c=e.computed(()=>Ut(i.value)),d=e.computed(()=>Ht(i.value)),u=e.computed(()=>Ot(i.value)),p=e.computed(()=>!!(u.value&&!c.value&&!d.value)),g=e.computed(()=>!!(c.value&&u.value)),h=e.computed(()=>u.value?{color:u.value}:void 0),m=e.computed(()=>{if(!(!c.value||!u.value))return{backgroundColor:u.value,WebkitMaskImage:`url(${c.value})`,maskImage:`url(${c.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(b,k)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["group relative flex justify-center items-center gap-x-3 text-center bg-white text-gray-800 ring-ring ring-2 cursor-pointer rounded-lg",[s.value,a.value?"ring-blue-500":"border border-gray-200 ring-transparent"]])},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"hidden",name:b.id,value:b.value,"onUpdate:modelValue":k[0]||(k[0]=v=>l.value=v),disabled:b.disabled},null,8,El),[[e.vModelCheckbox,l.value]]),b.html?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-full",innerHTML:b.html},null,8,Bl)):(e.openBlock(),e.createElementBlock("span",Vl,[p.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:u.value})},null,4)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(m.value)},null,4)):c.value||d.value?(e.openBlock(),e.createElementBlock("span",Sl,[c.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:c.value,width:"16",height:"16",alt:"icon"},null,8,$l)):d.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.value),{key:1,class:"h-4 w-4",style:e.normalizeStyle(h.value)},null,8,["style"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(b.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(b.label),1)])]))],2))}}),Al={class:"flex items-center"},Ln=e.defineComponent({__name:"vs-input-checkbox-item",props:{value:{default:""},label:{default:""},labelHtml:{default:""},disabled:{type:Boolean,default:!1},view:{default:"default"},modelValue:{type:[Boolean,Array],default:!1},icon:{},imgUrl:{},slots:{},option:{},style:{},error:{default:""}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=`radio-${Math.floor(Math.random()*1e4)}`,a=e.computed({get:()=>Array.isArray(n.modelValue)?Array.isArray(n.modelValue)&&n.modelValue.includes(n.value):n.modelValue,set:i=>{if(Array.isArray(n.modelValue)){let c=[...n.modelValue];i?c.includes(n.value)||c.push(n.value):c=c.filter(d=>d!==n.value),r("update:modelValue",c)}else r("update:modelValue",i)}}),s=e.ref(`vs-checkbox-${n.view||"default"}`);return(i,c)=>(e.openBlock(),e.createElementBlock("div",Al,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value==="vs-checkbox-buttons"?e.unref(Nl):e.unref(vl)),{value:i.value,label:i.label,html:i.labelHtml,info:i.option?.info,disabled:i.disabled,modelValue:a.value,"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),id:l,icon:i.icon,imgUrl:i.imgUrl,option:i.option,style:e.normalizeStyle(i.style),error:i.error},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label),1)]),_:1},8,["value","label","html","info","disabled","modelValue","icon","imgUrl","option","style","error"]))]))}}),Fl={key:0,class:"flex items-start gap-x-1"},Ml={key:0,class:"text-red-500 text-[14px]"},Dl=["title"],Tl=["disabled"],In=e.defineComponent({__name:"vs-input-switcher",props:e.mergeModels({rules:{default:()=>[]},view:{default:"checkbox"},label:{default:""},i:{default:""},text:{default:""},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue");return(r,l)=>t.view==="checkbox"?(e.openBlock(),e.createElementBlock("div",Fl,[e.createVNode(Ln,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=a=>n.value=a),error:r.error||""},null,8,["modelValue","error"]),r.rules?.includes("required")?(e.openBlock(),e.createElementBlock("span",Ml,"*")):e.createCommentVNode("",!0),r.i?(e.openBlock(),e.createElementBlock("button",{key:1,class:"cursor-pointer",title:r.i,onClick:l[1]||(l[1]=e.withModifiers(()=>{},["prevent"]))},[e.createVNode(e.unref(P.Info),{class:"h-4 w-4 text-gray-500"})],8,Dl)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:e.normalizeClass(["inline-flex h-5 w-9 shrink-0 px-[2px] cursor-pointer items-center rounded-full shadow-sm disabled:cursor-not-allowed disabled:opacity-50",[n.value?`bg-${r.style?.primaryColor||"blue"}-500`:"bg-stone-200",r.customClass]]),disabled:r.disabled,onClick:l[2]||(l[2]=a=>n.value=!n.value)},[e.createElementVNode("span",{"data-state":"checked",class:e.normalizeClass(["pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform",[n.value?"translate-x-4":"translate-x-0"]])},null,2)],10,Tl))}}),Ll=["id","innerHTML"],Rn=e.defineComponent({__name:"vs-input-static",props:{text:{default:""},html:{default:""},style:{},customClass:{default:""},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",{id:t.name,class:e.normalizeClass(["text-gray-900",t.customClass]),innerHTML:t.html?t.html:t.text},null,10,Ll))}}),Il=["placeholder","disabled","name"],sn=e.defineComponent({__name:"vs-input-mask",props:e.mergeModels({name:{},mask:{default:""},unmask:{type:Boolean,default:!1},placeholder:{default:"_"},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.ref(null);let a=null;function s(i){const c={9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},d=new Set;let u=!1;for(let g=0;g<i.length;g+=1){const h=i[g];h==="{"?u=!0:h==="}"?u=!1:u&&d.add(h)}const p={};return Object.keys(c).forEach(g=>{d.has(g)||(p[g]=c[g])}),{mask:i,definitions:p,lazy:!1}}return e.onMounted(async()=>{if(l.value){const{default:i}=await Promise.resolve().then(()=>lo),c=s(t.mask||"");a=i(l.value,c),a.on("accept",()=>{r.value=t.unmask?a.unmaskedValue:a.value}),a.on("complete",()=>{r.value=t.unmask?a.unmaskedValue:a.value}),a.value=r.value!=null?String(r.value):""}}),e.onBeforeUnmount(()=>{a?.destroy()}),e.watch(()=>t.mask,i=>{if(a){const c=s(i||"");a.updateOptions(c)}}),e.watch(r,i=>{a&&a.unmaskedValue!==i&&(a.value=i!=null?String(i):"")}),(i,c)=>(e.openBlock(),e.createElementBlock("input",{type:"text",ref_key:"inputEl",ref:l,placeholder:i.placeholder,disabled:i.disabled,name:i.name,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"}},null,10,Il))}}),Rl={class:"relative w-full bg-white rounded-lg"},Ol={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},zl=["placeholder","disabled"],On=e.defineComponent({__name:"vs-input-email",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:null},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue");return(l,a)=>(e.openBlock(),e.createElementBlock("div",Rl,[e.createElementVNode("div",Ol,[e.createVNode(e.unref(P.Mail),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),e.withDirectives(e.createElementVNode("input",{type:"email","onUpdate:modelValue":a[0]||(a[0]=s=>r.value=s),placeholder:l.placeholder,disabled:l.disabled,class:e.normalizeClass(["!pl-8 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":l.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,zl),[[e.vModelText,r.value]])]))}}),Pl={class:"relative w-full bg-white rounded-lg"},jl={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},Ul=["value","placeholder","disabled"],zn=e.defineComponent({__name:"vs-input-tel",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:null},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>r.value?r.value.startsWith("+")?r.value.slice(1):r.value:""),a=i=>{let{value:c}=i.target;c=c.replace(/^\+/,""),r.value=c?`+${c}`:""},s=i=>{const c=i,{data:d,inputType:u}=c;u&&u.startsWith("delete")||d&&/\D/.test(d)&&c.preventDefault()};return e.watch(()=>r.value,i=>{i&&!i.startsWith("+")?r.value=`+${i.replace(/^\+/,"")}`:i||(r.value="")},{immediate:!0}),(i,c)=>(e.openBlock(),e.createElementBlock("div",Pl,[e.createElementVNode("div",jl,[e.createVNode(e.unref(P.Phone),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),c[0]||(c[0]=e.createElementVNode("div",{class:"absolute bottom-2/4 translate-y-2/4 left-[30px] text-gray-500 select-none pointer-events-none"}," + ",-1)),e.createElementVNode("input",{type:"tel",value:l.value,onInput:a,onBeforeinput:s,pattern:"^\\+[1-9]\\d{1,14}$",maxlength:"15",placeholder:i.placeholder,disabled:i.disabled,class:e.normalizeClass(["!pl-10 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(n),{"!border-red-600":i.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,Ul)]))}}),Hl=["value","disabled"],ql=["innerHTML"],Kl={key:1,class:"flex items-center gap-2"},Wl=["src"],Gl={class:"text-[13px] text-gray-700"},Yl=e.defineComponent({__name:"vs-input-radio-default",props:e.mergeModels({style:{},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{},value:{},text:{},html:{default:""},option:{default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>!!t.disabled),l=e.computed(()=>Ut(t.option)),a=e.computed(()=>Ht(t.option)),s=e.computed(()=>Ot(t.option)),i=e.computed(()=>!!(s.value&&!l.value&&!a.value)),c=e.computed(()=>!!(l.value&&s.value)),d=e.computed(()=>s.value?{color:s.value}:void 0),u=e.computed(()=>{if(!(!l.value||!s.value))return{backgroundColor:s.value,WebkitMaskImage:`url(${l.value})`,maskImage:`url(${l.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(p,g)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["flex items-center gap-0",[t.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Hl),[[e.vModelRadio,n.value]]),e.createElementVNode("span",{class:e.normalizeClass(["w-[16px] shrink-0 h-[16px] border rounded-full flex items-center justify-center mr-[10px]",[`border-${t.style?.primaryColor||"blue"}-500`,r.value?"opacity-50 cursor-not-allowed":""]])},[n.value==t.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["w-[12px] h-[12px] shrink-0 rounded-full",[`bg-${t.style?.primaryColor||"blue"}-500`]])},null,2)):e.createCommentVNode("",!0)],2),t.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:t.html},null,8,ql)):(e.openBlock(),e.createElementBlock("div",Kl,[i.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:s.value})},null,4)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(u.value)},null,4)):l.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:l.value,alt:"icon"},null,8,Wl)):a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(d.value)},null,8,["style"])):e.createCommentVNode("",!0),e.createElementVNode("span",Gl,e.toDisplayString(t.text),1)]))],2))}}),Xl=["value","disabled"],Zl=["innerHTML"],Jl={key:1,class:"flex items-center gap-2"},Ql=["src"],ea={class:"text-[13px] text-gray-700"},ta={"vs-input-radio-default":Yl,"vs-input-radio-buttons":e.defineComponent({__name:"vs-input-radio-buttons",props:e.mergeModels({style:{},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{},value:{},text:{},html:{default:""},option:{default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>!!t.disabled),l=e.computed(()=>Ut(t.option)),a=e.computed(()=>Ht(t.option)),s=e.computed(()=>Ot(t.option)),i=e.computed(()=>!!(s.value&&!l.value&&!a.value)),c=e.computed(()=>!!(l.value&&s.value)),d=e.computed(()=>s.value?{color:s.value}:void 0),u=e.computed(()=>{if(!(!l.value||!s.value))return{backgroundColor:s.value,WebkitMaskImage:`url(${l.value})`,maskImage:`url(${l.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(p,g)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["flex h-full w-full items-center border rounded-lg px-2 py-1",[n.value==t.value?`ring-2 ring-ring ring-${t.style?.primaryColor||"blue"}-500`:"",t.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=h=>n.value=h),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Xl),[[e.vModelRadio,n.value]]),t.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:t.html},null,8,Zl)):(e.openBlock(),e.createElementBlock("div",Jl,[i.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:e.normalizeStyle({background:s.value})},null,4)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(u.value)},null,4)):l.value?(e.openBlock(),e.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:l.value,alt:"icon"},null,8,Ql)):a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(d.value)},null,8,["style"])):e.createCommentVNode("",!0),e.createElementVNode("span",ea,e.toDisplayString(t.text),1)]))],2))}})},_o=o=>Array.isArray(o)?o:Array.isArray(o?.data)?o.data:[],Co=o=>{const t=o.host??"",n=o.prefix??"api",r=o.api??`/${n}/suggest/${o.data}`;return`${t}${r}`},na=o=>({fetchOptions:async(r="")=>{const l=o();if(!l.data)return l.options?[...l.options]:[];try{const a=new URLSearchParams;a.set("json","1"),r&&a.set("key",r),l.parentValue!==void 0&&l.parentValue!==null&&l.parentValue!==""&&a.set("parent",String(l.parentValue)),l.start===1&&a.set("start","1");const i=await(await fetch(`${Co(l)}?${a.toString()}`)).json();return _o(i)}catch{return[]}},fetchOptionByValue:async r=>{if(r==null||r==="")return null;const l=o();if(!l.data)return(l.options??[]).find(s=>s?.id?.toString()===String(r))??null;try{const a=new URLSearchParams;a.set("json","1"),a.set("val",String(r)),l.parentValue!==void 0&&l.parentValue!==null&&l.parentValue!==""&&a.set("parent",String(l.parentValue)),l.start===1&&a.set("start","1");const i=await(await fetch(`${Co(l)}?${a.toString()}`)).json();return _o(i)[0]??null}catch{return null}}}),Pn=({props:o,formValues:t=null,watchParent:n=!0})=>{const r=e.ref([]),l=e.computed(()=>o.parent?t?.value?.[o.parent]?.toString?.()??null:null),{fetchOptions:a,fetchOptionByValue:s}=na(()=>({data:o.data,options:o.options,api:o.api,prefix:o.prefix,host:o.host,start:o.start,parentValue:l.value})),i=async(c="")=>{const d=o.data?await a(c):o.options?[...o.options]:[];return r.value=d,r.value};return e.watch(()=>o.options,()=>{o.data||(r.value=o.options?[...o.options]:[])},{immediate:!0,deep:!0}),n&&e.watch(l,async()=>{o.data&&(r.value=await a())},{immediate:!1}),{optionsList:r,parentValue:l,fetchOptions:a,fetchOptionByValue:s,loadOptions:i}},oa=/\{\{\s*([^}]+?)\s*\}\}/g,ra=o=>(o?String(o):"").replace(/<[^>]*>/g,"").trim(),la=(o,t)=>t.split(".").reduce((n,r)=>n==null?n:n[r.trim()],o),cn=(o,t)=>{if(!o)return"";const n=(t??"").trim();return n?n.replace(oa,(r,l)=>{const a=String(l).trim(),s=o,c=(a.includes(".")?la(s,a):void 0)??s[a];return c!=null?String(c):""}):o.text??""},jn=(o,t)=>{if(!o)return"";const n=cn(o,t);return ra(n)||o.text||""},Un=e.defineComponent({__name:"vs-input-radio",props:e.mergeModels({options:{},slot:{},data:{},api:{},prefix:{},host:{},start:{},parent:{},position:{default:"vertical"},view:{default:"default"},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>ta[`vs-input-radio-${t.view}`]),l=e.computed(()=>t.slot??t?.optionTemplate??""),a=e.computed(()=>Tn(l.value)),s=h=>cn(h,l.value),i=h=>jn(h,l.value),c=e.computed(()=>t.position==="horizontal"?"flex w-full flex-row flex-wrap gap-[10px]":"flex w-full flex-col gap-2"),d=e.computed(()=>{if(t.position==="horizontal"&&t.customClass?.includes("50%"))return{flex:"0 0 calc(50% - 5px)"}}),u=e.inject("values",null),{optionsList:p,loadOptions:g}=Pn({props:t,formValues:u});return e.onMounted(async()=>{await g()}),(h,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(c.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),b=>(e.openBlock(),e.createElementBlock("div",{key:b?.id,class:e.normalizeClass(["flex items-stretch",h.position==="horizontal"?t.customClass:""]),style:e.normalizeStyle(d.value)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps({text:i(b),html:a.value?s(b):"",option:b,value:b.id.toString(),checked:n.value?.toString?.()===b.id?.toString?.(),"custom-class":h.position==="horizontal"?"":t.customClass,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=k=>n.value=k)},{ref_for:!0},h.$attrs),null,16,["text","html","option","value","checked","custom-class","modelValue"]))],6))),128))],2))}}),aa={key:1,class:"w-full flex flex-col gap-4"},sa={key:0,class:"text-sm font-medium text-muted-foreground my-2"},ia="Без категорії",ca=e.defineComponent({__name:"vs-input-checkbox",props:{options:{default:()=>[]},position:{default:"vertical"},slots:{default:null},slot:{},colSpan:{default:0},data:{},api:{},prefix:{},host:{},start:{},parent:{},view:{},group:{default:void 0},values:{default:()=>[]},style:{},customClass:{},disabled:{type:Boolean},modelValue:{default:!1},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,l=e.reactive({}),a=e.inject("values",null),{optionsList:s,loadOptions:i}=Pn({props:{...n,options:n.options},formValues:a}),c=e.computed(()=>s.value),d=x=>x?.value||x?.id||x?.text||x,u=e.computed(()=>n.slot??n?.optionTemplate??""),p=e.computed(()=>Tn(u.value)),g=x=>cn(x,u.value),h=x=>jn(x,u.value),m=x=>`lg:col-span-${x||12}`,b=e.computed(()=>[n.position==="vertical"?"flex flex-col":"",n.colSpan?"grid":"flex justify-start"]),k=x=>x==null||x===""?null:typeof x=="string"||typeof x=="number"?x:String(x),v=e.computed(()=>{if(!n.group)return[];const x=new Map;c.value.forEach(N=>{const E=N[n.group],V=k(E);x.has(V)||x.set(V,[]),x.get(V)?.push(N)});const _=[];n.values?.length&&n.values.forEach(N=>{const E=k(N);_.push(E)});const w=new Set,F=N=>{const E=x.get(N)||[];if(!E.length)return null;const V=N===null?"group-null":`group-${String(N)}`,B=N===null?ia:String(N);return w.add(N),{key:V,label:B,options:E}},O=[];return _.forEach(N=>{const E=F(N);E&&O.push(E)}),x.forEach((N,E)=>{if(w.has(E))return;const V=F(E);V&&O.push(V)}),O});return e.watch(()=>n.modelValue,x=>{if(typeof x=="boolean"&&c.value.length===1){const _=d(c.value[0]);l[_]=x}else if(Array.isArray(x)){const _=new Set(x);c.value.forEach(w=>{if(!w.disabled){const F=d(w);l[F]=_.has(F)}})}},{immediate:!0}),e.watch(l,()=>{if(!c.value.length){r("update:modelValue",null);return}const x=Object.entries(l).filter(([,_])=>_).map(([_])=>_);r("update:modelValue",x.length===0?[]:x)},{deep:!0}),e.onMounted(async()=>{if(await i(),typeof n.modelValue=="boolean"&&c.value.length===1){const x=d(c.value[0]);l[x]=n.modelValue}else if(Array.isArray(n.modelValue)){const x=new Set(n.modelValue);c.value.forEach(_=>{if(!_.disabled){const w=d(_);l[w]=x.has(w)}})}}),(x,_)=>n.group?(e.openBlock(),e.createElementBlock("div",aa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,w=>(e.openBlock(),e.createElementBlock("div",{key:w.key,class:"flex flex-col gap-2"},[w.label?(e.openBlock(),e.createElementBlock("span",sa,e.toDisplayString(w.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["p-0 w-full gap-[12px]",b.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.options,F=>(e.openBlock(),e.createBlock(Ln,{modelValue:l[d(F)],"onUpdate:modelValue":O=>l[d(F)]=O,value:d(F),class:e.normalizeClass(m(x.colSpan)),disabled:n.disabled||F.disabled,label:h(F),labelHtml:p.value?g(F):"",key:`${w.key}-${d(F)}`,icon:F?.icon,imgUrl:F?.imgUrl,option:F,view:x.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2)]))),128))])):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["p-0 w-full gap-[10px]",b.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,w=>(e.openBlock(),e.createBlock(Ln,{modelValue:l[d(w)],"onUpdate:modelValue":F=>l[d(w)]=F,value:d(w),class:e.normalizeClass(m(x.colSpan)),disabled:n.disabled||w.disabled,label:h(w),labelHtml:p.value?g(w):"",key:d(w),icon:w?.icon,imgUrl:w?.imgUrl,option:w,view:x.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2))}}),be=(o,t)=>{const n=o.__vccOpts||o;for(const[r,l]of t)n[r]=l;return n},vo=be(ca,[["__scopeId","data-v-9056e0ec"]]),da=["type","placeholder","disabled"],ua=e.defineComponent({__name:"vs-input-date1",props:{style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{},mode:{default:"date"}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o;function r(u){return u?n.mode==="datetime"?(u.includes("T")?u:null)||u+(u.includes(" ")?"":"T00:00"):u?.split(" ")[0]:null}const{inputClass:l}=ze(n.style),a=t,s=e.computed({get:()=>r(n.modelValue),set:u=>a("update:modelValue",u)}),i=e.computed(()=>n.mode==="datetime"?"datetime-local":n.mode),c=e.computed(()=>!!n.disabled),d=e.computed(()=>n.placeholder??"");return(u,p)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:i.value,"onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g),placeholder:d.value,disabled:c.value,ref:"date",class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[u.modelValue?"":"text-opacity-50",e.unref(l)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,da)),[[e.vModelDynamic,s.value]])}}),pa=(o,t)=>{if(!t||!Object.keys(t).length)return o;const[n,r=""]=o.split("?"),l=new URLSearchParams(r);Object.entries(t).forEach(([s,i])=>{i==null||i===""||l.set(s,String(i))});const a=l.toString();return a?`${n}?${a}`:n},Eo=async(o,t={})=>{try{const n=new FormData;n.append("unique","true"),n.append("file",o);const{api:r,id:l="1",form:a="form",table:s="table",customParams:i}=t,c=r||`/file/upload/uploads?id=${l||""}&form=${a||""}&table=${s||""}`,d=pa(c,i);return(await fetch(d,{method:"POST",body:n}).then(p=>p.json()))?.result}catch(n){return pe.notify({type:"error",title:"Помилка!",message:"Сталась помилка під час завантаження файлу",position:"right-bottom"}),console.error("Сталась помилка завантаження файлу",n),null}},fa=async o=>{try{return await fetch(`file/delete${o}`),!0}catch(t){return console.error(t),!1}},Bo=async o=>{try{const t=await fetch(`/file/download${o}`);if(!t.ok)throw new Error(`Download failed with status ${t.status}`);const n=await t.blob(),l=(t.headers.get("content-disposition")||"").match(/filename\*?=(?:UTF-8''|")?([^\";]+)/i),a=l?.[1]?decodeURIComponent(l[1].replace(/"/g,"").trim()):"",s=o.split("/").filter(Boolean).pop()||"download",i=a||s,c=document.createElement("a");c.setAttribute("download",i),c.href=window.URL.createObjectURL(n),c.click(),window.URL.revokeObjectURL(c.href)}catch(t){console.error(t.message)}},ma=o=>{if(!o)return"";const t=o?.split(".");return t[t.length-1]},ha=o=>{const t=ma(o),n={imageFormat:["tiff","jpg","jpeg","png","svg","ico","webp"],sheetsFormat:["xls","csv","xlsx"],archivesFormat:["zip","rar"],textsFormat:["json","geojson","txt","yml","yaml","shp"],documentsFormat:["pdf"]};return n.imageFormat.includes(t)?"img":n.sheetsFormat.includes(t)?P.Table:n.textsFormat.includes(t)?P.FileCode:n.documentsFormat.includes(t)?P.FileText:n.archivesFormat.includes(t)?P.FileArchive:P.FileText},ga=["title"],ya={class:"absolute hidden top-0 right-0 flex items-center gap-x-2 w-full h-full justify-center"},Hn=be(e.defineComponent({__name:"vs-input-file-list-item",props:e.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{value:{},valueModifiers:{},item:{},itemModifiers:{}}),emits:["update:value","update:item"],setup(o){const t=e.useModel(o,"value"),n=e.useModel(o,"item"),r=o,l=e.computed(()=>n.value?typeof n.value=="string"?n.value:n.value.file_path:""),a=c=>typeof c=="string"?c:c?.file_path||"",s=()=>{const c=l.value;fa(c),r.multiple&&Array.isArray(t.value)?t.value=t.value.filter(d=>a(d)!==c):t.value=""},i=()=>{l.value&&window.open(l.value,"_blank")};return(c,d)=>(e.openBlock(),e.createElementBlock("div",{title:l.value,class:"h-[120px] w-[120px] border text-gray-300 border-dashed border-[#CFD9E0] rounded-lg overflow-hidden relative item-file"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(ha)(l.value)),{src:l.value,alt:"file",class:"w-full h-full object-cover cursor-pointer",onClick:d[0]||(d[0]=u=>e.unref(Bo)(l.value))},null,8,["src"])),e.createElementVNode("div",ya,[e.createElementVNode("button",{type:"button",onClick:s,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-red-500"},[e.createVNode(e.unref(P.Trash2),{class:"w-4 h-4"})]),e.createElementVNode("button",{type:"button",onClick:i,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-emerald-600"},[e.createVNode(e.unref(P.Eye),{class:"w-4 h-4"})]),e.createElementVNode("button",{type:"button",onClick:d[1]||(d[1]=u=>e.unref(Bo)(l.value)),class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-blue-500"},[e.createVNode(e.unref(P.Download),{class:"w-4 h-4"})])])],8,ga))}}),[["__scopeId","data-v-89357cbb"]]),ba={class:"flex items-center gap-x-2"},ka=["accept","multiple","disabled"],xa={key:1,class:"flex items-center flex-wrap gap-2"},wa={key:1,class:"loader"},_a={key:1,class:"loader"},Vo=be(e.defineComponent({__name:"vs-input-file",props:e.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["change"],["update:modelValue"]),setup(o,{emit:t}){const n=o,r=e.useModel(o,"modelValue"),l=t,a=e.computed(()=>{const x=r.value;return!n.multiple||!Array.isArray(x)?[]:x}),s=e.ref(null),i=e.ref(!1),c=e.inject("values"),d=e.computed(()=>n.format?n.format.split(",").map(x=>x.trim().toLowerCase()).filter(Boolean):[]),u=x=>{if(n.max_size&&x.size>n.max_size*1024*1024){const _=(x.size/1048576).toFixed(2);return pe.notify({type:"error",title:"Помилка!",message:`Файл "${x.name}" занадто великий. Максимальний розмір: ${n.max_size} МБ, розмір файлу: ${_} МБ`,position:"right-bottom"}),!1}return!0},p=x=>{if(!d.value.length)return!0;const _=`.${x.name.split(".").pop()?.toLowerCase()||""}`,w=d.value.includes(_);return w||pe.notify({type:"error",title:"Помилка!",message:`Неприпустимий формат файлу "${x.name}". Дозволені формати: ${d.value.join(", ")}`,position:"right-bottom"}),w},g=e.computed(()=>{const x={},_=[];if(!n.customParams?.length)return{params:x,missingSources:_};const w=c?.value??{};return n.customParams.forEach(F=>{if(!F)return;const[O,N]=F.split("="),E=O?.trim(),V=N?.trim();if(!E||!V)return;const B=w[V];if(B==null||B===""){_.push(V);return}x[E]=B}),{params:x,missingSources:_}}),h=()=>{const{params:x}=g.value;return{api:n.api,customParams:Object.keys(x).length?x:void 0}},m=()=>{const x=g.value.missingSources;if(!x.length)return!0;const _=x.join(", ");return pe.notify({type:"warning",title:"Заповніть поля",message:`Поля (${_}) необхідні для завантаження файлу`,position:"right-bottom"}),!1},b=x=>{pe.notify({type:"error",title:"Помилка завантаження",message:x||"Не вдалося завантажити файл. Спробуйте ще раз.",position:"right-bottom"})},k=()=>{n.disabled||i.value||m()&&s.value?.click()},v=async x=>{const{files:_}=x.target;if(!_||_.length===0)return;if(!m()){s.value&&(s.value.value="");return}const w=Array.from(_);if(n.max_size&&w.filter(N=>!u(N)).length>0){s.value&&(s.value.value="");return}if(w.filter(O=>!p(O)).length>0){s.value&&(s.value.value="");return}i.value=!0;try{if(n.multiple){const O=Array.from(_).map(async M=>await Eo(M,h())),N=await Promise.all(O),E=N.filter(M=>M?.file_path);if(E.length===0){b();return}E.length<N.length&&b("Деякі файли не вдалося завантажити. Перевірте їх та спробуйте знову.");const V=E.map(M=>M.file_path),B=Array.isArray(r.value)?r.value:[];r.value=[...B,...V],l("change",r.value)}else{const O=_[0],N=await Eo(O,h());if(!N?.file_path){b();return}const E=N.file_path;r.value=E,l("change",E)}}catch(O){const N=O?.message||void 0;b(N)}finally{i.value=!1,s.value&&(s.value.value="")}};return(x,_)=>(e.openBlock(),e.createElementBlock("div",ba,[e.createElementVNode("input",{class:"hidden",ref_key:"fileInput",ref:s,type:"file",accept:n.format,multiple:x.multiple,onChange:v,disabled:i.value||x.disabled},null,40,ka),!x.multiple&&r.value&&!Array.isArray(r.value)?(e.openBlock(),e.createBlock(Hn,{key:0,item:r.value,value:r.value,"onUpdate:value":_[0]||(_[0]=w=>r.value=w)},null,8,["item","value"])):x.multiple?(e.openBlock(),e.createElementBlock("div",xa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(w,F)=>(e.openBlock(),e.createBlock(Hn,{multiple:x.multiple,key:F,value:r.value,"onUpdate:value":_[1]||(_[1]=O=>r.value=O),item:w},null,8,["multiple","value","item"]))),128)),e.createElementVNode("div",{onClick:k,class:e.normalizeClass(["relative h-[120px] w-[120px] border text-gray-300 hover:text-blue-500 border-dashed border-[#CFD9E0] rounded-lg flex items-center justify-center transition-all duration-300",x.disabled||i.value?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-blue-500 hover:bg-blue-50"])},[i.value?(e.openBlock(),e.createElementBlock("div",wa)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2)])):e.createCommentVNode("",!0),x.multiple?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:2,onClick:k,class:e.normalizeClass([x.disabled||i.value?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-blue-500","relative h-[120px] w-[120px] border text-gray-300 hover:text-blue-500 border-dashed border-gray-300 rounded-lg flex items-center justify-center cursor-pointer hover:border-blue-500 transition-all duration-300 hover:bg-blue-50"])},[i.value?(e.openBlock(),e.createElementBlock("div",_a)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2))]))}}),[["__scopeId","data-v-dda91e05"]]),Ca={class:"vs-input-file2 flex flex-col gap-4"},va={class:"flex items-center gap-x-2"},Ea=["accept","disabled"],Ba={key:0,class:"absolute inset-0 flex flex-col items-center justify-center gap-1 rounded-lg bg-white/90 text-xs font-medium text-slate-600"},Va={key:0,class:"rounded-lg border border-[#CFD9E0] bg-white p-4 shadow-sm"},Sa={class:"flex items-center justify-between text-sm"},$a={class:"truncate pr-4"},Na={class:"font-medium text-slate-800 truncate"},Aa={class:"text-slate-500"},Fa={class:"text-slate-500 whitespace-nowrap"},Ma={class:"mt-3 h-2 rounded-full bg-slate-100 overflow-hidden"},Da={class:"mt-3 flex flex-wrap gap-2 text-sm"},Ta={key:0,class:"mt-2 text-sm text-rose-600"},La=e.defineComponent({__name:"vs-input-file2",props:e.mergeModels({format:{},max_size:{},api:{},chunkSize:{default:5*1024*1024},subdir:{default:""},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.ref(null),l=e.ref(null),a=e.ref(""),s=e.ref(0),i=e.ref(!1),c=e.ref(""),d=e.ref(null),u=e.inject("values"),p=e.computed(()=>t.format?t.format.split(",").map(I=>I.trim().toLowerCase()).filter(Boolean):[]),g=e.computed(()=>!l.value||!l.value.size?0:Math.min(100,Math.round(s.value/l.value.size*100))),h=e.computed(()=>l.value?`${k(s.value)} / ${k(l.value.size)}`:""),m=e.computed(()=>t.disabled?"opacity-50 cursor-not-allowed":i.value?"cursor-default text-blue-500":"cursor-pointer hover:border-blue-500 hover:bg-blue-50 hover:text-blue-500"),b=()=>{t.disabled||i.value||w()&&r.value?.click()},k=I=>{if(!Number.isFinite(I))return"0 B";const j=["B","KB","MB","GB"];let $=0,L=I;for(;L>=1024&&$<j.length-1;)L/=1024,$+=1;return`${L.toFixed($===0?0:1)} ${j[$]}`},v=I=>{if(!t.max_size)return!0;const j=t.max_size*1024*1024;return I.size>j?(pe.notify({type:"error",title:"Файл занадто великий",message:`Максимальний розмір ${t.max_size} МБ`,position:"right-bottom"}),!1):!0},x=I=>{if(!p.value.length)return!0;const j=`.${I.name.split(".").pop()?.toLowerCase()||""}`;return p.value.includes(j)?!0:(pe.notify({type:"error",title:"Непідтримуваний формат",message:`Дозволені формати: ${p.value.join(", ")}`,position:"right-bottom"}),!1)},_=e.computed(()=>{const I={},j=[];if(!t.customParams?.length)return{params:I,missing:j};const $=u?.value??{};return t.customParams.forEach(L=>{if(!L)return;const[D,G]=L.split("="),K=D?.trim(),Z=G?.trim();if(!K||!Z)return;const le=$[Z];le==null||le===""?j.push(Z):I[K]=le}),{params:I,missing:j}}),w=()=>_.value.missing.length?(pe.notify({type:"warning",title:"Заповніть поля",message:`Потрібні значення: ${_.value.missing.join(", ")}`,position:"right-bottom"}),!1):!0,F=I=>{const j=I.target,$=j.files?.[0];if($){if(!w()){j.value="";return}if(!v($)||!x($)){j.value="";return}l.value=$,s.value=0,a.value="",c.value=""}},O=async()=>{if(!l.value){b();return}try{c.value="";const I={id:a.value||"",fileName:l.value.name,subdir:t.subdir,size:l.value.size,..._.value.params},j=await fetch("/api/file/upload2/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(I)});if(!j.ok)throw new Error("Не вдалося ініціалізувати завантаження");const $=await j.json();a.value=$.id||a.value,s.value=$.uploaded||0,await N()}catch(I){c.value=I?.message||"Помилка при старті завантаження"}},N=async()=>{if(!(!l.value||!a.value)){i.value=!0;try{for(;s.value<l.value.size;){const I=s.value,j=Math.min(I+t.chunkSize,l.value.size),$=l.value.slice(I,j);d.value=new AbortController;const L=await fetch(`/api/file/upload2/${a.value}`,{method:"PATCH",headers:{"Content-Range":`bytes ${I}-${j-1}/${l.value.size}`},body:$,signal:d.value.signal});if(!L.ok)throw new Error("Помилка завантаження частини");const D=await L.json().catch(()=>({}));if(D.uploaded!=null?s.value=Number(D.uploaded):s.value=j,D.finished||s.value>=l.value.size){i.value=!1;const G=D.file_path||D.url||a.value;n.value={file_id:D.file_id??a.value??G,file_path:G},pe.notify({type:"success",title:"Файл завантажено",message:l.value.name,position:"right-bottom"}),M();return}}}catch(I){if(I?.name==="AbortError")return;c.value=I?.message||"Помилка при завантаженні",i.value=!1}finally{d.value=null,i.value=!1}}},E=()=>{i.value&&(d.value?.abort(),d.value=null,i.value=!1)},V=async()=>{if(l.value){if(!a.value){await O();return}await N()}},B=()=>{d.value?.abort(),d.value=null,M()},M=()=>{const I=r.value;I&&(I.value=""),l.value=null,a.value="",s.value=0,c.value=""};return(I,j)=>(e.openBlock(),e.createElementBlock("div",Ca,[e.createElementVNode("div",va,[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",class:"hidden",accept:t.format,disabled:i.value||t.disabled,onChange:F},null,40,Ea),n.value?(e.openBlock(),e.createBlock(Hn,{key:0,item:n.value,"onUpdate:item":j[0]||(j[0]=$=>n.value=$),value:n.value,"onUpdate:value":j[1]||(j[1]=$=>n.value=$)},null,8,["item","value"])):(e.openBlock(),e.createElementBlock("div",{key:1,onClick:b,class:e.normalizeClass(["relative h-[120px] w-[120px] border text-gray-300 border-dashed border-[#CFD9E0] rounded-lg flex items-center justify-center transition-all duration-300",m.value])},[i.value?(e.openBlock(),e.createElementBlock("div",Ba,[j[2]||(j[2]=e.createElementVNode("div",{class:"loader"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(g.value)+"%",1)])):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:1,class:"h-4 w-4"}))],2))]),l.value&&!n.value?(e.openBlock(),e.createElementBlock("div",Va,[e.createElementVNode("div",Sa,[e.createElementVNode("div",$a,[e.createElementVNode("div",Na,e.toDisplayString(l.value.name),1),e.createElementVNode("div",Aa,e.toDisplayString(k(l.value.size)),1)]),e.createElementVNode("div",Fa,e.toDisplayString(h.value),1)]),e.createElementVNode("div",Ma,[e.createElementVNode("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-300",style:e.normalizeStyle({width:`${g.value}%`})},null,4)]),e.createElementVNode("div",Da,[!i.value&&s.value>0&&s.value<(l.value?.size||0)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:V}," Resume ")):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:E}," Pause ")):e.createCommentVNode("",!0),!i.value&&s.value===0?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:O}," Upload ")):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"rounded border border-rose-200 px-3 py-1 text-rose-600",onClick:B}," Cancel ")]),c.value?(e.openBlock(),e.createElementBlock("p",Ta,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),qn=be(La,[["__scopeId","data-v-62ba7299"]]),Ia={class:"flex items-center justify-center h-[30px] w-[30px]"},Ra={class:"max-w-[55vw]"},Oa={class:"text-sm font-semibold text-gray-800 truncate dark:text-neutral-200"},za={class:"flex items-center text-xs text-gray-500 truncate dark:text-neutral-500"},Pa={class:"px-[5px]"},ja={class:""},dn=e.defineComponent({__name:"vs-widget-file-info",props:{item:{default:null}},setup(o){const t=o,n=e.computed(()=>{try{return new Date(t.item.cdate).toLocaleDateString("uk-UA",{day:"2-digit",month:"long",year:"numeric"})}catch{return""}});function r(l){if(l<1024)return`${l} B`;const a=l/1024;return a<1024?`${a.toFixed(2)} KB`:`${(a/1024).toFixed(2)} MB`}return(l,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Ia,[e.createVNode(e.unref(P.FileText),{class:"icon icon-tabler icons-tabler-outline icon-tabler-file h-4 w-4"})]),e.createElementVNode("div",Ra,[e.createElementVNode("p",Oa,e.toDisplayString(l.item?.uploaded_name),1),e.createElementVNode("p",za,[e.createElementVNode("span",null,e.toDisplayString(l.item?.username),1),e.withDirectives(e.createElementVNode("span",Pa,"|",512),[[e.vShow,l.item?.username]]),e.createElementVNode("span",null,e.toDisplayString(n.value),1),a[0]||(a[0]=e.createElementVNode("span",{class:"px-[5px]"},"|",-1)),e.createElementVNode("span",ja,e.toDisplayString(r(l.item?.size)),1)])])],64))}}),Ua={class:"p-3 relative group flex items-center gap-x-3 border border-gray-200 bg-white rounded-md w-full"},Ha={key:0,class:"flex w-full gap-x-3 items-center"},qa={key:1,class:"flex gap-x-3 w-full items-center"},Ka={key:2,class:"flex gap-x-3 w-full items-center"},Wa=["href"],Ga={key:3,class:"flex gap-x-3 w-full items-center"},Ya={class:"lg:absolute lg:top-3 lg:end-1 opacity-100"},Xa={class:"p-0.5 sm:p-1 inline-flex items-center gap-0.5 bg-white rounded-lg dark:bg-neutral-800 dark:border-neutral-700"},Za={class:"inline-block"},Ja={class:"inline-block"},Qa={class:"inline-block"},es=e.defineComponent({__name:"vs-widget-file-item",props:{item:{default:null},index:{default:0},prefix:{default:"/api"}},emits:["update","openModal","openLightbox"],setup(o,{emit:t}){const n=o,r=t;function l(p){return["pdf","json"].includes(p.ext)}function a(p){return["ppt","pptx","doc","docx","xls","xlsx"].includes(p.ext)}function s(p){const g=document.createElement("a");g.setAttribute("download",p?.uploaded_name),g.href=p?.file_path,g.click()}function i(p){p?.file_path&&window.open(p.file_path,"_blank")}async function c(){try{await fetch(`${n.prefix}/widget/file/${n.item.entity_id}/${n.item.file_id}`),r("update")}catch(p){console.error(p)}}function d(){r("openModal",{title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати",confirm:c,updateListOnConfirm:!0})}function u(p){(n.item.ext==="jpg"||n.item.ext==="png")&&r("openLightbox",{item:n.item,index:p})}return(p,g)=>(e.openBlock(),e.createElementBlock("div",Ua,[p.item.ext==="jpg"||p.item.ext==="png"?(e.openBlock(),e.createElementBlock("div",Ha,[e.createElementVNode("div",{class:"max-w-[55vw] cursor-pointer flex gap-x-3 w-full items-center",onClick:g[0]||(g[0]=h=>u(p.index))},[e.createVNode(dn,{item:p.item},null,8,["item"])])])):l(p.item)?(e.openBlock(),e.createElementBlock("div",qa,[e.createVNode(dn,{item:p.item},null,8,["item"])])):a(p.item)?(e.openBlock(),e.createElementBlock("div",Ka,[e.createElementVNode("a",{href:`/api/file-preview?id=${p.item.file_id}`,target:"_blank",class:"flex gap-x-3 w-full items-center"},[e.createVNode(dn,{item:p.item},null,8,["item"])],8,Wa)])):(e.openBlock(),e.createElementBlock("div",Ga,[e.createVNode(dn,{item:p.item},null,8,["item"])])),e.createElementVNode("div",Ya,[e.createElementVNode("div",Xa,[e.createElementVNode("div",Za,[e.createElementVNode("button",{class:"inline-flex p-[6px] justify-center items-center gap-x-2 rounded-lg border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none dark:text-neutral-400 focus:outline-none focus:bg-gray-100 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700",onClick:g[1]||(g[1]=h=>i(p.item))},[e.createVNode(e.unref(P.Eye),{class:"h-4 w-4"})])]),e.createElementVNode("div",Ja,[e.createElementVNode("button",{class:"inline-flex p-[6px] justify-center items-center gap-x-2 rounded-lg border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none dark:text-neutral-400 focus:outline-none focus:bg-gray-100 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700",onClick:g[2]||(g[2]=h=>s(p.item))},[e.createVNode(e.unref(P.Download),{class:"h-4 w-4"})])]),g[4]||(g[4]=e.createElementVNode("div",{class:"w-px h-5 mx-1 bg-gray-200 dark:bg-neutral-700"},null,-1)),e.createElementVNode("div",Qa,[e.createElementVNode("button",{type:"button",class:"size-[30px] inline-flex justify-center items-center gap-x-2 rounded-lg border border-transparent text-red-600 hover:bg-red-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-red-100 dark:text-red-500 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",onClick:g[3]||(g[3]=h=>d())},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})])])])])]))}}),ts={class:"flex flex-col widget-file xl:bg-white xl:rounded-xl dark:xl:bg-neutral-800 dark:xl:border-neutral-700 w-full"},ns={class:"flex w-full mb-[12px] items-center gap-x-2"},os={class:"font-semibold text-gray-800 dark:text-neutral-200 text-[14px]"},rs={class1:"ml-auto"},ls={class:"py-1.5 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg bg-gray-100 cursor-pointer hover:bg-gray-200 text-gray-800 shadow-2xs hover:bg-gray-50 focus:outline-hidden focus:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-800 dark:border-neutral-700 dark:text-white dark:hover:bg-neutral-700 dark:focus:bg-neutral-700"},as={key:0,class:"py-4 mb-4 space-y-4 border-gray-200 border-y dark:border-neutral-700"},ss={class:"relative"},is={class:"absolute inset-y-0 start-0 flex items-center pointer-events-none z-[1] ps-3.5"},cs={key:1,class:"space-y-3 max-h-[300px] overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500"},ds={key:0},So=e.defineComponent({__name:"vs-input-file-list",props:{id:{default:""},prefix:{default:"/api"},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update"],setup(o,{emit:t}){const n=o,r=e.inject("form"),l=e.computed(()=>r.value.formId),a=e.ref(!1),s=e.ref(0),i=t,c=e.ref(!1),d=e.ref({}),u=e.ref([]),p=e.ref(""),g=e.computed(()=>Array.isArray(u.value)?u.value.filter(_=>_.ext==="jpg"||_.ext==="png").map(_=>_?.file_path):[]),h=e.computed(()=>p.value===""?u.value:u.value.filter(_=>_?.uploaded_name?.includes(p.value))),m=_=>{const w=g.value.findIndex(F=>F===_.item.file_path);w!==-1&&(a.value=!0,s.value=w)},b=async()=>{try{const _=await fetch(`${n.prefix}/widget/file/${l.value}`).then(w=>w.json());u.value=_?.rows}catch(_){console.error(_)}},k=async _=>{await Promise.all(Array.from(_.target.files).map(async w=>{const F=new FormData;F.append("file",w);try{const O=`${n.prefix}/widget/file/${l.value}`,N=await fetch(O,{method:"POST",body:F});return N.ok?(i("update","file-list"),w):(pe.notify({type:N.status>=400&&N.status<500?"warning":"error",title:"Error",message:`Error code: ${N.status}`}),null)}catch(O){return pe.notify({type:"error",title:"Error",message:O.message||"Unknown error"}),console.error(O),null}})),await b()},v=_=>{const w={..._};return _.cancel||(w.cancel=()=>{c.value=!1}),_.updateListOnConfirm&&(w.confirm=async()=>{await _.confirm(),c.value=!1,b()}),w},x=_=>{d.value=v(_),c.value=!0};return e.watch(l,_=>{_&&b()}),e.onMounted(()=>{l.value&&b()}),(_,w)=>{const F=e.resolveComponent("Lightbox"),O=e.resolveComponent("MessageBox");return e.openBlock(),e.createElementBlock("div",ts,[e.createElementVNode("div",ns,[e.createElementVNode("h2",os," Файлів: "+e.toDisplayString(u.value?.length),1),e.createElementVNode("div",rs,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:w[0]||(w[0]=N=>k(N))},null,32),e.createElementVNode("div",ls,[e.createVNode(e.unref(P.Upload),{class:"h-4 w-4"})])])])]),u.value?.length>4?(e.openBlock(),e.createElementBlock("div",as,[e.createElementVNode("div",null,[e.createElementVNode("div",ss,[e.createElementVNode("div",is,[e.createVNode(e.unref(P.Search),{class:"flex-shrink-0 text-gray-500 size-4 dark:text-neutral-400"})]),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":w[1]||(w[1]=N=>p.value=N),class:"py-2 px-3 ps-10 pe-16 block w-full bg-gray-200 xl:bg-gray-100 rounded-lg text-sm focus:border-blue-500 h-[40px] focus:border-2 focus:outline-none disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:border-transparent dark:text-neutral-400 dark:placeholder:text-neutral-400 dark:focus:ring-neutral-600",placeholder:"Введіть назву файлу"},null,512),[[e.vModelText,p.value,void 0,{trim:!0}]])])])])):e.createCommentVNode("",!0),u.value?.length?(e.openBlock(),e.createElementBlock("div",cs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(N,E)=>(e.openBlock(),e.createBlock(es,{key:E,prefix:_.prefix,item:N,index:E,onUpdate:w[2]||(w[2]=V=>_.$emit("update","file-list")),onOpenModal:w[3]||(w[3]=V=>x(V)),onOpenLightbox:w[4]||(w[4]=V=>m(V))},null,8,["prefix","item","index"]))),128)),h.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ds,w[8]||(w[8]=[e.createElementVNode("p",{class:"text-sm text-gray-600 font-sm"}," Файлів з такою назвою не існує, введіть інше пошукове слово ",-1)])))])):e.createCommentVNode("",!0),e.createVNode(F,{modelValue:a.value,"onUpdate:modelValue":w[5]||(w[5]=N=>a.value=N),startIndex:s.value,"onUpdate:index":w[6]||(w[6]=N=>s.value=N),images:g.value},null,8,["modelValue","startIndex","images"]),e.createVNode(O,e.mergeProps({modelValue:c.value,"onUpdate:modelValue":w[7]||(w[7]=N=>c.value=N),onConfirm:d.value.confirm},d.value),null,16,["modelValue","onConfirm"])])}}}),us={class:"flex items-center justify-between"},ps={class:"text-[16px] text-gray-900 font-medium"},fs={class:"grid gap-3"},ms=be(e.defineComponent({__name:"vs-container-switcher",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(o){const t=o,n=e.ref(t.isOpen);return e.watch(()=>t.isOpen,r=>{n.value=r}),(r,l)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",us,[e.createElementVNode("p",ps,e.toDisplayString(o.title),1),e.createVNode(In,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=a=>n.value=a),style:e.normalizeStyle(o.style)},null,8,["modelValue","style"])]),e.createVNode(e.Transition,{name:"slide-fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",fs,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,n.value]])]),_:3})]))}}),[["__scopeId","data-v-90320b87"]]),hs={class:"text-[16px] text-gray-900 font-medium"},gs={class:"grid gap-3"},ys=be(e.defineComponent({__name:"vs-container-accordion",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(o){const t=o,n=e.ref(t.isOpen);return e.watch(()=>t.isOpen,r=>{n.value=r}),(r,l)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("button",{type:"button",onClick:l[0]||(l[0]=a=>n.value=!n.value),class:"flex items-center gap-2"},[e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["h-4 w-4 duration-300",[n.value?"-rotate-180":""]])},null,8,["class"]),e.createElementVNode("span",hs,e.toDisplayString(o.title),1)]),e.createVNode(e.Transition,{name:"slide-fade"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",gs,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,n.value]])]),_:3})]))}}),[["__scopeId","data-v-0c825d65"]]),bs={class:"flex items-center justify-between"},ks={switcher:ms,accordion:ys,default:e.defineComponent({__name:"vs-container-default",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})}},setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",bs,[e.createElementVNode("p",null,e.toDisplayString(o.title),1)]),e.renderSlot(t.$slots,"default")]))}})},et={Equal:"==",Inequal:"!=",Higer:">",HigerOrEqual:">=",Lower:"<",LowerOrEqual:"<=",Between:"between",StartWith:"^",EndWith:"$",Contain:"*",In:"in",NotIn:"not_in"},xs=(o,t)=>String(o)===String(t),ws=(o,t)=>String(o)!==String(t),_s=(o,t)=>o>t,Cs=(o,t)=>o>=t,vs=(o,t)=>o<t,Es=(o,t)=>o<=t,Bs=(o,t)=>Array.isArray(t)&&t.length===2?o>=t[0]&&o<=t[1]:!1,Vs=(o,t)=>String(o).startsWith(String(t)),Ss=(o,t)=>String(o).endsWith(String(t)),$s=(o,t)=>String(o).includes(String(t)),Ns=(o,t)=>Array.isArray(t)?t.includes(o):!1,As=(o,t)=>Array.isArray(t)?!t.includes(o):!0,$o=(o,t)=>{if(!t)return!0;switch(t?.[1]){case et.Equal:return xs(o,t?.[2]);case et.Inequal:return ws(o,t?.[2]);case et.Higer:return _s(o,t?.[2]);case et.HigerOrEqual:return Cs(o,t?.[2]);case et.Lower:return vs(o,t?.[2]);case et.LowerOrEqual:return Es(o,t?.[2]);case et.Between:return Bs(o,t?.[2]);case et.StartWith:return Vs(o,t?.[2]);case et.EndWith:return Ss(o,t?.[2]);case et.Contain:return $s(o,t?.[2]);case et.In:return Ns(o,t?.[2]);case et.NotIn:return As(o,t?.[2]);default:return!0}},No=e.defineComponent({__name:"vs-input-container",props:{style:{type:Object,default:()=>({})},title:{type:String,default:""},view:{type:String,default:"default"},name:{type:String,default:""},schema:{type:Array,default:()=>[]}},setup(o){const t=o,n=e.inject("values",e.ref({})),r=e.inject("form"),l=e.computed(()=>t.schema?.filter(i=>{const c=i?.conditions;if(!c)return!0;const d=Array.isArray(c)?c[0]:c,u=t.name?n.value?.[t.name]?.[d]??n.value?.[d]:n.value?.[d];return $o(u,c)})),a=e.computed(()=>ks[t.view]),s=e.computed(()=>{if(n.value||(n.value={}),!t.name)return n.value;const i=n.value[t.name];if(i)return i;const c={};return n.value={...n.value,[t.name]:c},c});return(i,c)=>o.schema?.length?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:0,title:o.title,style:e.normalizeStyle(o.style)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createBlock(er,e.mergeProps({key:d.name},{ref_for:!0},d,{item:d,modelValue:s.value[d.name],"onUpdate:modelValue":u=>s.value[d.name]=u,style:o.style,error:e.unref(r)?.errors?.[d.name]}),null,16,["item","modelValue","onUpdate:modelValue","style","error"]))),128))]),_:1},8,["title","style"])):e.createCommentVNode("",!0)}}),Ao=({props:o,fetchOptionByValue:t,optionsList:n,selectedOption:r,modelValue:l,onCreated:a})=>{const s=e.ref(!1),i=e.ref({}),c=e.ref([]),d=e.ref(null),u=e.computed(()=>o.add?.title||"Додати"),p=e.computed(()=>o.add?.token||o.add?.model||""),g=e.computed(()=>o.add?.pk||"id");return{isOpenAdd:s,addData:i,addSchema:c,addForm:d,addTitle:u,addOption:async()=>{if(!(!p.value||d?.value.validate()))try{const k=o.add?.api??`/api/table/${p.value}`,v=await fetch(k,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i.value)}),x=await v.json().catch(()=>({})),_=x?.error||x?.message,w=Number(x?.code)>=400;if(!v.ok||w){pe.notify({title:"Помилка",type:"error",message:_||`Код помилки: ${x?.code||v.status}`});return}const F=x?.[g.value]??x?.id;if(!F){pe.notify({title:"Помилка",type:"error",message:"Обʼєкт створено, але в відповіді відсутній ID."});return}const O=await t(F);O&&(n.value.some(E=>String(E?.id)===String(O.id))||n.value.push(O)),a?await a(O,F):O&&(r.value=O,l.value=F),s.value=!1,pe.notify({title:"Успіх",message:"Обʼєкт успішно створено."})}catch(k){pe.notify({title:"Помилка",type:"error",message:k?.message||"Не вдалося створити обʼєкт."})}},onAddValue:async()=>{if(!o.add)return null;const b=await fetch(`/api/template/form/${o.add.form}`).then(k=>k.json());return c.value=b.schema,i.value={},s.value=!0,null}}},Fs=["aria-expanded","data-focus"],Ms={class:"relative flex flex-1 items-center gap-1 py-0.5 pl-1 pr-0 overflow-hidden h-full min-w-0"},Ds={key:0,class:"flex flex-nowrap items-center gap-1 overflow-x-auto overflow-y-hidden min-w-0 flex-1 py-0.5"},Ts={class:"flex items-center gap-1 min-w-0"},Ls=["title"],Is=["innerHTML"],Rs=["onClick"],Os={class:"flex-1 min-w-[2px]"},zs=["placeholder"],Ps=["title"],js=["innerHTML"],Us={key:3,class:"truncate flex-1 min-w-0"},Hs={key:2,class:"flex-1 min-w-[2px]"},qs=["placeholder"],Ks={class:"flex items-center shrink-0"},Ws=["disabled"],Gs={key:1,class:"self-stretch w-px bg-[#ccc] my-[1px]"},Ys=["disabled","title"],Xs=e.defineComponent({__name:"vs-select-control",props:{disabled:{type:Boolean},isOpen:{type:Boolean},inputFocus:{type:Boolean},isMulti:{type:Boolean},selectedOptions:{},selectedIds:{},placeholder:{},search:{type:Boolean},optionTemplate:{default:""},iconWrapperClass:{},selectedOptionLabel:{},selectedOption:{},showClear:{type:Boolean},keyWord:{default:""},setTriggerRef:{},setInputRef:{},shouldShowColorDot:{},optionHasIcon:{},getIconColorStyle:{},resolveOptionIcon:{},renderTemplate:{},getLabel:{},onControlKeydown:{},onControlClick:{},onInputFocus:{},onInputBlur:{},onInputKeydown:{},onRemoveSelected:{},onClearSelected:{},onToggleSelect:{}},emits:["update:keyWord"],setup(o,{emit:t}){const n=o,r=t,l=e.computed({get:()=>n.keyWord,set:a=>r("update:keyWord",a)});return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vs-input-select__control flex min-h-[38px] items-center justify-between rounded transition-colors bg-white",a.disabled?"bg-gray-100 text-gray-400 cursor-not-allowed":""]),role:"combobox","aria-expanded":a.isOpen,"aria-haspopup":"listbox",onKeydown:s[10]||(s[10]=(...i)=>a.onControlKeydown&&a.onControlKeydown(...i)),onClick:s[11]||(s[11]=(...i)=>a.onControlClick&&a.onControlClick(...i)),"data-focus":a.isOpen||a.inputFocus?"true":"false",ref:a.setTriggerRef},[e.createElementVNode("div",Ms,[a.isMulti?(e.openBlock(),e.createElementBlock("div",Ds,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.selectedOptions,i=>(e.openBlock(),e.createElementBlock("div",{key:i.id,class:"flex min-w-0 bg-[rgb(230,230,230)] rounded-[2px] m-[2px] box-border max-w-full"},[e.createElementVNode("div",Ts,[a.shouldShowColorDot(i)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[16px] h-[16px] rounded-md block ml-1.5 flex-shrink-0",style:e.normalizeStyle({backgroundColor:i?.color})},null,4)):e.createCommentVNode("",!0),!a.optionTemplate&&a.optionHasIcon(i)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(a.iconWrapperClass),style:e.normalizeStyle(a.getIconColorStyle(i)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.resolveOptionIcon(i)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"truncate text-[#172b4d] overflow-hidden max-w-[200px] px-0.5 pl-1.5",title:a.getLabel(i)},[a.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:a.renderTemplate(i)},null,8,Is)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(i.text),1)],64))],8,Ls)]),e.createElementVNode("div",{role:"button",class:"flex items-center rounded-sm px-1 box-border text-[#172b4d] hover:bg-[rgb(255,189,173)] hover:text-[rgb(222,53,11)] flex-shrink-0",onClick:e.withModifiers(c=>a.onRemoveSelected(i.id),["stop"])},[e.createVNode(e.unref(P.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,Rs)]))),128)),e.createElementVNode("div",Os,[!a.disabled&&a.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:a.setInputRef,class:"w-full bg-transparent outline-none border-0 m-0 p-0 text-gray-900 hover:cursor-pointer",autocapitalize:"none",autocomplete:"off",autocorrect:"off",spellcheck:"false",type:"text",tabindex:"0","aria-autocomplete":"list",placeholder:a.selectedIds.length?" ":a.placeholder,"onUpdate:modelValue":s[0]||(s[0]=i=>l.value=i),onFocus:s[1]||(s[1]=(...i)=>a.onInputFocus&&a.onInputFocus(...i)),onBlur:s[2]||(s[2]=(...i)=>a.onInputBlur&&a.onInputBlur(...i)),onKeydown:s[3]||(s[3]=(...i)=>a.onInputKeydown&&a.onInputKeydown(...i))},null,40,zs)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)])])):!a.isMulti&&a.selectedOptionLabel&&l.value===""?(e.openBlock(),e.createElementBlock("div",{key:1,class:"truncate text-gray-900 absolute inset-x-0 pl-2 flex items-center gap-1 min-w-0",title:a.selectedOptionLabel},[a.shouldShowColorDot(a.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[14px] h-[14px] rounded-md block flex-shrink-0",style:e.normalizeStyle({backgroundColor:a.selectedOption?.color})},null,4)):e.createCommentVNode("",!0),!a.optionTemplate&&a.optionHasIcon(a.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(a.iconWrapperClass),style:e.normalizeStyle(a.getIconColorStyle(a.selectedOption)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.resolveOptionIcon(a.selectedOption)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),a.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:2,class:"truncate flex-1 min-w-0",innerHTML:a.renderTemplate(a.selectedOption)},null,8,js)):(e.openBlock(),e.createElementBlock("span",Us,e.toDisplayString(a.selectedOption?.text),1))],8,Ps)):e.createCommentVNode("",!0),a.isMulti?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Hs,[!a.disabled&&a.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:a.setInputRef,class:"w-full bg-transparent outline-none border-0 m-0 p-0 text-gray-900 hover:cursor-pointer",autocapitalize:"none",autocomplete:"off",autocorrect:"off",spellcheck:"false",type:"text",tabindex:"0","aria-autocomplete":"list",placeholder:a.selectedOptionLabel?" ":a.placeholder,"onUpdate:modelValue":s[4]||(s[4]=i=>l.value=i),onFocus:s[5]||(s[5]=(...i)=>a.onInputFocus&&a.onInputFocus(...i)),onBlur:s[6]||(s[6]=(...i)=>a.onInputBlur&&a.onInputBlur(...i)),onKeydown:s[7]||(s[7]=(...i)=>a.onInputKeydown&&a.onInputKeydown(...i))},null,40,qs)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)]))]),e.createElementVNode("div",Ks,[a.showClear?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-hidden":"true",disabled:a.disabled,onClick:s[8]||(s[8]=e.withModifiers((...i)=>a.onClearSelected&&a.onClearSelected(...i),["stop"]))},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,Ws)):e.createCommentVNode("",!0),a.showClear?(e.openBlock(),e.createElementBlock("div",Gs)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-hidden":"true",disabled:a.disabled,onClick:s[9]||(s[9]=e.withModifiers((...i)=>a.onToggleSelect&&a.onToggleSelect(...i),["stop"])),title:a.isOpen?"Закрити список":"Відкрити список"},[e.createVNode(e.unref(P.ChevronDown),{class:"h-4 w-4"})],8,Ys)])],42,Fs))}}),Zs=["aria-disabled","onClick"],Js={class:"leading-[19px]"},Qs=["innerHTML"],ei={key:1,class:"px-3 py-2 text-center text-gray-500"},ti=e.defineComponent({__name:"vs-select-dropdown",props:{isOpen:{type:Boolean},dropdownStyle:{},filteredOptionsList:{},selectedNavIndex:{},optionTemplate:{},iconWrapperClass:{},setDropdownRef:{type:Function},setListRef:{type:Function},setItemRef:{type:Function},isSelected:{type:Function},onOptionClick:{type:Function},shouldShowColorDot:{type:Function},optionHasIcon:{type:Function},getIconColorStyle:{type:Function},resolveOptionIcon:{type:Function},renderTemplate:{type:Function}},setup(o){return(t,n)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.isOpen?(e.openBlock(),e.createElementBlock("div",{key:0,ref:t.setDropdownRef,class:"fixed z-[3000] rounded bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.1),0_4px_11px_rgba(0,0,0,0.1)]",style:e.normalizeStyle(t.dropdownStyle),role:"listbox"},[e.createElementVNode("div",{class:"overflow-y-auto py-1",style:e.normalizeStyle({maxHeight:t.dropdownStyle.maxHeight||"300px"}),ref:t.setListRef},[t.filteredOptionsList.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.filteredOptionsList,(r,l)=>(e.openBlock(),e.createElementBlock("div",{key:r.id,ref_for:!0,ref:a=>t.setItemRef(a,l),class:e.normalizeClass(["flex px-3 py-2 gap-2 cursor-pointer select-none text-gray-900",t.isSelected(r.id)?"bg-[#2684ff] text-white":"bg-white hover:bg-[#deebff] hover:text-[#172b4d]",t.selectedNavIndex===l&&!t.isSelected(r.id)?"bg-[#deebff] text-[#172b4d]":""]),"aria-disabled":t.isSelected(r.id)?"true":"false",role:"option",tabindex:"-1",onClick:a=>t.onOptionClick(r)},[t.shouldShowColorDot(r)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[11px] h-[11px] rounded-full block flex-shrink-0",style:e.normalizeStyle({backgroundColor:r?.color})},null,4)):e.createCommentVNode("",!0),!t.optionTemplate&&t.optionHasIcon(r)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(t.iconWrapperClass),style:e.normalizeStyle(t.getIconColorStyle(r)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.resolveOptionIcon(r)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),e.createElementVNode("div",Js,[t.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:t.renderTemplate(r)},null,8,Qs)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(r.text),1)],64))])],10,Zs))),128)):(e.openBlock(),e.createElementBlock("div",ei," No options "))],4)],4)):e.createCommentVNode("",!0)]))}}),ni=["disabled"],Fo="w-[16px] h-[16px] flex items-center justify-center flex-shrink-0 text-current",Kn=be(e.defineComponent({__name:"vs-input-select",props:{multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},mode:{},defaultValue:{},search:{type:Boolean,default:!0},placeholder:{default:"Оберіть значення"},prefix:{default:"api"},host:{default:""},data:{default:""},options:{default:()=>[]},api:{default:null},maxHeight:{default:400},parent:{},set:{},slot:{},add:{},teleport:{default:"body"},auto:{default:0},start:{default:0},style:{default:()=>({})},customClass:{default:""},modelValue:{},error:{default:null},name:{},maxlength:{},minlength:{}},emits:["change","update:modelValue","value-selected"],setup(o,{emit:t}){const n=o,r=t,l=e.computed(()=>n.multiple),a=e.computed(()=>n.disabled),s=e.computed(()=>n.search);ze(n.style);const i=e.computed({get:()=>n.modelValue,set:R=>r("update:modelValue",R)});!i.value&&n.defaultValue&&(i.value=n.defaultValue);const c=e.ref(null),d=e.ref(null),u=e.ref(null),p=e.ref(null),g=e.ref(!1),h=e.ref(!1),m=e.ref(null),b=e.ref(-1),k=e.ref([]),v=e.ref(""),x=e.ref(null),_=R=>{d.value=R},w=R=>{x.value=R},F=R=>{p.value=R},O=R=>{u.value=R},N=(R,Q)=>{k.value[Q]=R},E=e.ref({}),V=e.ref([]),B=e.computed(()=>{if(!V.value.length)return[];const R=Ve.value,Q=new Map(R.map(ce=>[ce.id?.toString(),ce]));return V.value.map(ce=>Q.get(ce?.toString())).filter(ce=>!!ce)}),M=e.computed(()=>n.placeholder||"Select..."),I=e.computed(()=>le(m.value)),j=e.computed(()=>a.value?!1:l.value?V.value.length>0:!!i.value),$=R=>l.value?V.value.some(Q=>Q?.toString()===R?.toString()):i.value?.toString()===R?.toString(),L=e.computed(()=>{let R=Ve.value??[];if(!n.data&&v.value.trim()!==""){const Q=v.value.toLowerCase();R=R.filter(ce=>{const Ee=le(ce).toLowerCase(),Me=ce.text?.toLowerCase?.()||"";return Ee.includes(Q)||Me.includes(Q)})}if(l.value&&V.value.length){const Q=new Set(V.value.map(ce=>ce?.toString()));R=R.filter(ce=>!Q.has(ce.id?.toString()))}return R}),D=e.inject("values"),G=e.inject("field-props"),K=e.computed(()=>n.slot??n?.optionTemplate??""),Z=R=>cn(R,K.value),le=R=>jn(R,K.value),Ce=e.computed(()=>Tn(K.value)),ke=R=>Ht(R),ee=R=>!!(!Ce.value&&Ot(R)&&!ke(R)),ie=R=>{const Q=Ot(R);return Q?{color:Q}:void 0},_e=R=>!!(!Ce.value&&(Ut(R)||ke(R))),me=(R,Q,ce)=>{if(!G)return!1;const Ee=G.value?.[R]??{},Me=(Fe,rt,kt)=>{if(!rt.length)return Fe;const[lt,...ct]=rt,at={...Fe};if(!ct.length)return at[lt]=kt,at;const rn=typeof Fe[lt]=="object"&&Fe[lt]!==null?Fe[lt]:{};return at[lt]=Me(rn,ct,kt),at},Le=Me(Ee,Q,ce);return G.value={...G.value||{},[R]:Le},!0},we=R=>{if(!n.set)return;const Q=D?.value;!Q&&!G||Object.entries(n.set).forEach(([ce,Ee])=>{if(!ce)return;const Me=R?R[Ee]:null,Le=ce.split(".").map(kt=>kt.trim()).filter(Boolean);if(!Le.length)return;const[Fe,...rt]=Le;rt.length&&me(Fe,rt,Me??null)||Q&&(Q[Fe]=Me??null)})},{optionsList:Ve,parentValue:Ne,fetchOptions:Ue,fetchOptionByValue:it,loadOptions:nt}=Pn({props:n,formValues:D,watchParent:!1}),ve=R=>R==null?"":String(R),W=R=>{if(l.value){if(!V.value.length){Ve.value=R;return}}else if(!m.value){Ve.value=R;return}const Q=new Set(R.map(Ee=>ve(Ee.id)).filter(Boolean));if(l.value){const Ee=new Set(V.value.map(Le=>ve(Le)).filter(Boolean)),Me=(Ve.value??[]).filter(Le=>{const Fe=ve(Le.id);return!Fe||!Ee.has(Fe)?!1:!Q.has(Fe)});Ve.value=[...Me,...R];return}const ce=ve(m.value?.id);if(ce&&!Q.has(ce)){Ve.value=[m.value,...R];return}Ve.value=R},te=async()=>{if(n.data){const R=await Ue(v.value);return W(R),Ve.value}return nt()},ne=async R=>{if(R==null||R==="")return null;const Q=Ve.value?.find(ce=>ce?.id?.toString()===String(R));return Q||it(R)},fe=async R=>{const Q=new Set(Ve.value.map(Ee=>Ee.id?.toString())),ce=R.filter(Ee=>!Q.has(Ee?.toString()));ce.length&&await ce.reduce(async(Ee,Me)=>{await Ee;const Le=await ne(Me);Le&&Ve.value.push(Le)},Promise.resolve())},he=()=>{if(!L.value.length){b.value=-1;return}let R=0;if(!l.value&&m.value){const Q=m.value.id?.toString(),ce=L.value.findIndex(Ee=>Ee.id?.toString()===Q);ce>=0&&(R=ce)}b.value=R,e.nextTick(()=>{oe(k.value[R],u.value)})},Se=async()=>{a.value||(g.value=!0,await te(),await e.nextTick(()=>{Y(),x.value?.focus()}),he())},Be=()=>{g.value=!1,b.value=-1,e.nextTick(()=>{x.value?.blur()})},Ae=async R=>{if(a.value)return;(R!==void 0?R:!g.value)?await Se():Be()},Xe=async()=>{if(!a.value){if(g.value){Be();return}await Se()}},X=()=>{l.value?(V.value=[],i.value=[],r("change",[]),z(null,[])):(m.value=null,i.value=null,r("change",null),z(null,null)),we(null),v.value="",e.nextTick(()=>{x.value?.focus(),g.value||Se()})},ae=R=>{l.value&&(V.value=V.value.filter(Q=>Q?.toString()!==R?.toString()),i.value=[...V.value],r("change",i.value),z(null),e.nextTick(()=>x.value?.focus()))},z=(R,Q)=>{const ce=Q??(l.value?[...V.value]:R?.id??null);r("value-selected",{name:n.name,value:ce,option:R})},H=R=>{l.value?($(R.id)||(V.value=[...V.value,R.id],i.value=[...V.value],r("change",i.value),z(R)),v.value="",e.nextTick(()=>{x.value?.focus(),b.value=Math.min(b.value,L.value.length-1)}),we(null)):(m.value=R,i.value=R.id,r("change",i.value),z(R),v.value="",Be(),we(R))},U=R=>{if($(R.id)){l.value||Be();return}H(R)},oe=(R,Q)=>{if(!R||!Q)return;const ce=R.offsetTop,Ee=ce+R.offsetHeight,Me=Q.scrollTop,Le=Me+Q.clientHeight;let Fe=Q.scrollTop;ce<Me?Fe=ce-80:Ee>Le&&(Fe=Ee-Q.clientHeight+4);const rt=Q;rt.scrollTop=Fe},T=R=>{let Q=R.parentElement;for(;Q;){if(Q.classList.contains("ui-dialog__content"))return Q;const ce=window.getComputedStyle(Q),Ee=ce.overflow+ce.overflowY+ce.overflowX;if(Ee.includes("auto")||Ee.includes("scroll")||Q===document.body||Q===document.documentElement)return Q;Q=Q.parentElement}return document.body},Y=()=>{if(!d.value)return;const R=d.value.getBoundingClientRect(),Q=window.innerHeight||document.documentElement.clientHeight,ce=window.innerWidth||document.documentElement.clientWidth,Ee=8,Me=8,Le=n.maxHeight||300,Fe=Q-R.bottom-Me-Ee,rt=R.top-Me-Ee,kt=Fe>=rt,lt=Math.max(ce-Ee*2,0);let{width:ct}=R;lt>0&&ct>lt&&(ct=lt);let{left:at}=R;at+ct+Ee>ce&&(at=ce-ct-Ee),at=Math.max(at,Ee);const rn=Math.min(Le,Math.max(kt?Fe:rt,50));E.value={position:"fixed",left:`${at}px`,width:`${ct}px`,maxHeight:`${rn}px`,transform:kt?"none":"translateY(-100%)",top:kt?`${R.bottom+Me}px`:`${R.top-Me}px`}},J=async R=>{a.value||!g.value&&(R.key==="ArrowDown"||R.key==="ArrowUp")&&(R.preventDefault(),await Se())},se=R=>{if(!g.value)return;const{key:Q}=R;if(Q==="ArrowDown")R.preventDefault(),b.value+1<L.value.length&&(b.value+=1,oe(k.value[b.value],u.value));else if(Q==="ArrowUp")R.preventDefault(),b.value>0&&(b.value-=1,oe(k.value[b.value],u.value));else if(Q==="Enter"){R.preventDefault();const ce=L.value[b.value];ce&&H(ce),x.value?.blur()}else Q==="Escape"?(R.preventDefault(),Be()):Q==="Backspace"?l.value&&v.value===""&&V.value.length&&(V.value=V.value.slice(0,-1),i.value=[...V.value],r("change",i.value)):Q==="Home"?(b.value=0,oe(k.value[0],u.value)):Q==="End"?(b.value=L.value.length-1,oe(k.value[b.value],u.value)):Q==="Tab"&&Be()},$e=()=>{a.value||(h.value=!0)},ht=()=>{h.value=!1,v.value=""},He=R=>{R.key==="Escape"&&g.value&&Be()},Pe=R=>{const Q=R.target;c.value?.contains(Q)||p.value?.contains(Q)||Be()},gt=R=>{g.value&&u.value&&!u.value.contains(R.target)&&Y()},Ze=()=>{g.value&&Y()},yt=()=>{g.value&&Y()};async function ot(){if(l.value)Array.isArray(i.value)?V.value=[...i.value]:(V.value=i.value==null?[]:[i.value],i.value=[...V.value]),n.data&&V.value.length&&(await fe(V.value),await e.nextTick());else{if(Array.isArray(i.value)){const R=i.value[0]??null;i.value=R??null}i.value!=null&&(m.value=await ne(i.value)),we(m.value??null)}}e.watch(i,()=>{ot()}),e.onMounted(async()=>{addEventListener("keydown",He),addEventListener("scroll",gt,!0),addEventListener("resize",Ze),document.addEventListener("click",Pe,!0),d.value&&T(d.value).addEventListener("scroll",yt,!0),n.options?.length&&!n.data?Ve.value=[...n.options]:n.data&&W(await Ue("")),await ot(),Je.value=!1}),e.onUnmounted(()=>{removeEventListener("keydown",He),removeEventListener("scroll",gt,!0),removeEventListener("resize",Ze),document.removeEventListener("click",Pe,!0),d.value&&T(d.value).removeEventListener("scroll",yt,!0)});const{isOpenAdd:Lt,addData:$t,addSchema:fo,addForm:Nt,addTitle:It,addOption:mo,onAddValue:bt}=Ao({props:n,fetchOptionByValue:it,optionsList:Ve,selectedOption:m,modelValue:i});function ho(R,Q=200){let ce;return(...Ee)=>{ce&&clearTimeout(ce),ce=window.setTimeout(()=>R(...Ee),Q)}}const on=ho(async R=>{W(await Ue(R))},200);e.watch(v,R=>{n.data&&on(R.trim())}),e.watch(()=>n.options,R=>{!n.data&&R?.length&&(Ve.value=[...R],ot())},{immediate:!0});const Je=e.ref(!0);return e.watch(Ne,async()=>{if(n.data&&(Je.value||(l.value?(V.value=[],i.value=[],r("change",[])):(m.value=null,i.value=null,r("change",null))),await te(),n.auto===1&&Ne.value&&Ve.value.length>0)){const R=Ve.value[0];R&&H(R)}}),(R,Q)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(pe.VsModal),{visible:e.unref(Lt),"onUpdate:visible":Q[1]||(Q[1]=ce=>e.isRef(Lt)?Lt.value=ce:null),class:"z-[1000]",title:e.unref(It),buttonText:"Додати",onDone:e.unref(mo),teleport:R.teleport},{default:e.withCtx(()=>[e.createVNode(tt,{schema:e.unref(fo),modelValue:e.unref($t),"onUpdate:modelValue":Q[0]||(Q[0]=ce=>e.isRef($t)?$t.value=ce:null),ref_key:"addForm",ref:Nt},null,8,["schema","modelValue"])]),_:1},8,["visible","title","onDone","teleport"]),e.createElementVNode("div",{class:"flex gap-1 w-full",ref_key:"selectRoot",ref:c,onClick:Q[4]||(Q[4]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:e.normalizeClass(["relative w-full font-sans",n.customClass])},[Q[5]||(Q[5]=e.createElementVNode("span",{id:"react-select-live-region",class:"sr-only"},null,-1)),Q[6]||(Q[6]=e.createElementVNode("span",{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",role:"log",class:"sr-only"},null,-1)),e.createVNode(Xs,{keyWord:v.value,"onUpdate:keyWord":Q[2]||(Q[2]=ce=>v.value=ce),disabled:a.value,"is-open":g.value,"input-focus":h.value,"is-multi":l.value,"selected-options":B.value,"selected-ids":V.value,placeholder:M.value,search:s.value,"option-template":K.value,"icon-wrapper-class":Fo,"selected-option-label":I.value,"selected-option":m.value,"show-clear":j.value,"set-trigger-ref":_,"set-input-ref":w,"should-show-color-dot":ee,"option-has-icon":_e,"get-icon-color-style":ie,"resolve-option-icon":ke,"render-template":Z,"get-label":le,"on-control-keydown":J,"on-control-click":Xe,"on-input-focus":$e,"on-input-blur":ht,"on-input-keydown":se,"on-remove-selected":ae,"on-clear-selected":X,"on-toggle-select":Ae},null,8,["keyWord","disabled","is-open","input-focus","is-multi","selected-options","selected-ids","placeholder","search","option-template","selected-option-label","selected-option","show-clear"]),e.createVNode(ti,{"is-open":g.value,"dropdown-style":E.value,"filtered-options-list":L.value,"selected-nav-index":b.value,"option-template":K.value,"icon-wrapper-class":Fo,"set-dropdown-ref":F,"set-list-ref":O,"set-item-ref":N,"is-selected":$,"on-option-click":U,"should-show-color-dot":ee,"option-has-icon":_e,"get-icon-color-style":ie,"resolve-option-icon":ke,"render-template":Z},null,8,["is-open","dropdown-style","filtered-options-list","selected-nav-index","option-template"])],2),n.add?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:Q[3]||(Q[3]=(...ce)=>e.unref(bt)&&e.unref(bt)(...ce)),class:"bg-white hover:bg-gray-100 text-sm text-gray-900 py-[10px] px-3 border border-stone-200 rounded-md h-[38px] flex items-center gap-2",disabled:a.value,type:"button"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),Q[7]||(Q[7]=e.createElementVNode("span",null,"Додати",-1))],8,ni)):e.createCommentVNode("",!0)],512)],64))}}),[["__scopeId","data-v-3fdc60cb"]]),oi=["placeholder","disabled"],Mo=e.defineComponent({__name:"vs-input-textarea",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,{inputClass:n}=ze(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??"");function s(){typeof r.value=="string"&&(r.value=r.value.trim())}return(i,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{"onUpdate:modelValue":c[0]||(c[0]=d=>r.value=d),placeholder:a.value,disabled:l.value,row:"2",onBlur:s,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] h-auto bg-white",[e.unref(n)]]),style:{border:"1px solid #CFD9E0"}},null,42,oi)),[[e.vModelText,r.value]])}}),Do=e.defineComponent({__name:"vs-input-richtext",props:e.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{},format:{default:"html"},richtextProps:{default:()=>({})}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.defineAsyncComponent(()=>Promise.resolve().then(()=>Wg)),n=o,{inputClass:r}=ze(n.style),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!n.disabled),s=e.computed(()=>n.placeholder??""),i=e.computed(()=>({height:n.richtextProps.height||"300px",format:n.format,...n.richtextProps}));return(c,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["!h-full",[c.customClass,e.unref(r)]]),style:e.normalizeStyle(a.value?{pointerEvents:"none",opacity:.6}:{})},[e.createVNode(e.unref(t),e.mergeProps({modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=u=>l.value=u),placeholder:s.value},i.value),null,16,["modelValue","placeholder"])],6))}}),ri={},li={viewBox:"0 0 178 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function ai(o,t){return e.openBlock(),e.createElementBlock("svg",li,t[0]||(t[0]=[e.createStaticVNode('<rect x="27" y="50.5" width="124" height="39" rx="7.5" fill="currentColor" class="fill-white dark:fill-neutral-800"></rect><rect x="27" y="50.5" width="124" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-50 dark:stroke-neutral-700/10"></rect><rect x="34.5" y="58" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="66.5" y="61" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="66.5" y="73" width="77" height="6" rx="3" fill="currentColor" class="fill-gray-50 dark:fill-neutral-700/30"></rect><rect x="19.5" y="28.5" width="139" height="39" rx="7.5" fill="currentColor" class="fill-white dark:fill-neutral-800"></rect><rect x="19.5" y="28.5" width="139" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-100 dark:stroke-neutral-700/30"></rect><rect x="27" y="36" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><rect x="59" y="39" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><rect x="59" y="51" width="92" height="6" rx="3" fill="currentColor" class="fill-gray-100 dark:fill-neutral-700/70"></rect><g filter="url(#filter1)"><rect x="12" y="6" width="154" height="40" rx="8" fill="currentColor" class="fill-white dark:fill-neutral-800" shape-rendering="crispEdges"></rect><rect x="12.5" y="6.5" width="153" height="39" rx="7.5" stroke="currentColor" class="stroke-gray-100 dark:stroke-neutral-700/60" shape-rendering="crispEdges"></rect><rect x="20" y="14" width="24" height="24" rx="4" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect><rect x="52" y="17" width="60" height="6" rx="3" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect><rect x="52" y="29" width="106" height="6" rx="3" fill="currentColor" class="fill-gray-200 dark:fill-neutral-700"></rect></g><defs><filter id="filter1" x="0" y="0" width="178" height="64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix><feOffset dy="6"></feOffset><feGaussianBlur stdDeviation="6"></feGaussianBlur><feComposite in2="hardAlpha" operator="out"></feComposite><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0"></feColorMatrix><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1187_14810"></feBlend><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1187_14810" result="shape"></feBlend></filter></defs>',12)]))}const si=be(ri,[["render",ai]]),ii={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden flex flex-col"},ci={key:0,class:"flex flex-col gap-2 !p-4 border-b border-gray-200 md:flex-row md:items-center md:justify-between bg-gray-50"},di={key:0,class:"relative flex-1 min-w-0"},ui={class:"flex flex-nowrap items-center justify-end gap-2 shrink-0"},pi={class:"w-full overflow-x-auto"},fi={class:"w-full min-w-[640px] table-auto divide-y divide-gray-200"},mi={class:"bg-gray-50"},hi={class:"border-b border-gray-200"},gi={class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 w-12 text-center"},yi=["onClick"],bi={key:0,class:"text-gray-400"},ki={key:0,colspan:"100%",class:"text-center"},xi={class:"w-full"},wi={class:"p-5 min-h-[200px] flex flex-col justify-center items-center text-center"},_i=["onDragstart","onDragover","onDrop"],Ci={class:"px-4 py-3 text-center align-middle"},vi={class:"flex items-center justify-center"},Ei=["innerHTML"],Bi={key:0,class:"flex items-center gap-3 text-sm text-gray-700"},Vi={key:0},Si=["src"],$i={key:1,class:"rounded-md max-w-[45px] w-[45px] max-h-[45px] h-[45px] bg-gray-200 flex items-center justify-center"},Ni={key:1,class:"flex items-center justify-center"},Ai={key:2,class:"text-sm font-medium text-gray-900"},Fi={class:"px-4 py-3 text-right whitespace-nowrap"},Mi={class:"flex items-center justify-end gap-2"},Di=["onClick"],Ti=["onClick"],Li={class:"vs-form__head mr-5 mt-3 flex items-center justify-end sticky top-0 left-0 z-[60] bg-white"},To=e.defineComponent({__name:"vs-input-datatable",props:e.mergeModels({actions:{},colModel:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useSlots(),r=W=>t.actions===void 0?!0:t.actions.includes(W),l=["search","import","export","add"],a=e.computed(()=>l.some(W=>r(W))),s=e.useModel(o,"modelValue"),i=e.ref({}),c=e.ref(""),d=e.ref(null),u=e.ref("asc"),p=e.computed(()=>{const W=s.value??[],te=c.value?W.filter(he=>g.value?.some(Se=>{const Be=Se.key||Se.name;if(!Be)return!1;const Ae=he[Be];return Ae?Array.isArray(Ae)?Ae.join(", ").toLowerCase().includes(c.value.toLowerCase()):String(Ae).toLowerCase().includes(c.value.toLowerCase()):!1})):W;if(!d.value)return te;const ne=d.value,fe=[...te].sort((he,Se)=>{const Be=ie(he?.[ne]),Ae=ie(Se?.[ne]);return typeof Be=="number"&&typeof Ae=="number"?Be-Ae:String(Be).localeCompare(String(Ae))});return u.value==="asc"?fe:fe.reverse()}),g=e.computed(()=>(t.colModel??[]).filter(W=>!W.tableHidden)),h=e.ref(null),m=e.ref(null),b=e.ref(null),k=W=>{h.value=W},v=W=>{m.value=W},x=W=>{if(h.value===null||h.value===W){h.value=null,m.value=null;return}const te=[...s.value],[ne]=te.splice(h.value,1);te.splice(W,0,ne),s.value=te,h.value=null,m.value=null},_=()=>{b.value&&b.value.click()},w=W=>{const te=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico",".tiff",".tif"],ne=W.toLowerCase();return te.some(fe=>ne.endsWith(fe))},F=W=>{const ne=W.target.files?.[0];if(!ne)return;const fe=new FileReader;fe.onload=he=>{try{const Se=he.target?.result;if(typeof Se=="string"){const Be=JSON.parse(Se);Array.isArray(Be)&&s.value.push(...Be)}}catch(Se){console.error("Error parsing file:",Se)}},fe.readAsText(ne)},O=()=>{const W=JSON.stringify(s.value,null,2),te=new Blob([W],{type:"application/json"}),ne=URL.createObjectURL(te),fe=document.createElement("a");fe.href=ne,fe.download="data.json",fe.click(),URL.revokeObjectURL(ne)},N=new Set(["autocomplete","select","radio","checkbox","combobox"]),E=new Map,V=(W,te)=>{const ne=`/api/suggest/${W}`,fe=ne.includes("?")?"&":"?",he=te?`&val=${te}`:"";return`${ne}${fe}json=1${he}`},B=W=>W==null||W===""?null:typeof W=="object"?W?.id!==void 0&&W.id!==null&&W.id!==""?W.id:null:W,M=W=>{const te=new Set;return Array.isArray(s.value)&&s.value.forEach(ne=>{const fe=ne?.[W];if(fe==null||fe==="")return;if(Array.isArray(fe)){fe.forEach(Se=>{const Be=B(Se);Be!==null&&te.add(Be)});return}const he=B(fe);he!==null&&te.add(he)}),te},I=async()=>{if(!t.colModel?.length)return;const W=t.colModel.filter(te=>te.data&&N.has(te.type?.toLowerCase()||""));W.length&&await Promise.all(W.map(async te=>{const ne=te.key||te.name;if(!ne)return;const fe=M(ne),he=Array.from(fe).map(Ae=>String(Ae)).sort(),Se=he.join(",");if(!he.length||E.get(ne)===Se)return;E.set(ne,Se);const Be=he.map(encodeURIComponent).join(",");try{const Xe=await(await fetch(V(te.data,Be))).json();i.value[ne]=Xe?.data??Xe}catch(Ae){console.error("Failed to fetch column values",Ae)}}))};e.watch([()=>t.colModel,()=>s.value],()=>{I()},{immediate:!0,deep:!0});const j=e.ref(""),$=e.ref(!1);let L="edit",D=0;const G=W=>(W?.format||W?.type||"").toString().toLowerCase(),K=e.computed(()=>t.colModel?.filter(W=>G(W)!=="slot")??[]),Z=e.ref({}),le=e.ref({}),Ce=W=>typeof W!="string"?!1:!!n[W],ke=(W,te)=>te?te.split(".").reduce((ne,fe)=>ne==null?ne:ne[fe.trim()],W):W,ee=(W,te)=>typeof W!="string"?"":W.replace(/{{\s*([^}]+)\s*}}/g,(ne,fe)=>{const he=ke(te,fe.trim());return he??""}),ie=W=>{if(W==null||W==="")return"";if(typeof W=="number")return W;if(typeof W=="boolean")return W?1:0;if(typeof W=="string")return W.toLowerCase();if(Array.isArray(W))return W.map(te=>ie(te)).join(", ");if(typeof W=="object"){if(W.text!==void 0)return String(W.text).toLowerCase();if(W.label!==void 0)return String(W.label).toLowerCase();if(W.id!==void 0)return String(W.id).toLowerCase()}return String(W).toLowerCase()},_e=W=>{const te=W.key||W.name;if(te){if(d.value===te){u.value=u.value==="asc"?"desc":"asc";return}d.value=te,u.value="asc"}};async function me(){j.value="Додати",$.value=!0,L="add",Z.value={}}function we(W,te){if(!W?.length)return null;const ne=typeof te=="object"?te?.id:te;return ne==null||ne===""?null:W.find(fe=>fe?.id?.toString()===ne.toString())?.text??null}function Ve(W){return W==null||W===""?"-":Array.isArray(W)?W.map(te=>typeof te=="object"?te?.text??te?.id??"-":te).join(", "):typeof W=="object"?W?.text??W?.id??"-":W}function Ne(W,te){const ne=te.key||te.name,fe=W?.[ne],he=i.value[ne];if(!fe)return"-";if(Array.isArray(fe)){const Be=fe.map(Ae=>we(he,Ae)).filter(Boolean);return Be.length?Be.join(", "):Ve(fe)}const Se=we(he,fe);return Se||Ve(fe)}async function Ue(W,te){j.value="Редагувати",$.value=!0,L="edit",D=te,Z.value={...W}}function it(){const W=le.value.validate();if(W){pe.notify({type:"warning",title:"Помилка валідації",message:Object.entries(W).map(([te,ne])=>`${te}: ${ne}`).join(`
|
|
2
2
|
`)});return}L==="add"?Array.isArray(s.value)?s.value=[...s.value,Z.value]:s.value=[Z.value]:s.value=s.value.map((te,ne)=>ne===D?Z.value:te),$.value=!1}function nt(W){s.value=s.value.filter((te,ne)=>ne!==W)}function ve(){$.value=!1}return(W,te)=>(e.openBlock(),e.createElementBlock("div",ii,[a.value?(e.openBlock(),e.createElementBlock("div",ci,[r("search")?(e.openBlock(),e.createElementBlock("div",di,[e.createVNode(e.unref(P.Search),{class:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"}),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":te[0]||(te[0]=ne=>c.value=ne),placeholder:"Пошук",class:"w-full rounded-md border border-gray-200 bg-white pl-10 pr-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-100"},null,512),[[e.vModelText,c.value]])])):e.createCommentVNode("",!0),e.createElementVNode("div",ui,[r("import")?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInput",ref:b,onChange:F,class:"hidden",accept:".json",type:"file"},null,544)):e.createCommentVNode("",!0),r("import")?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:_,class:"inline-flex items-center gap-2 rounded-md border border-gray-200 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:border-gray-300 hover:bg-gray-50 transition-colors"},[e.createVNode(e.unref(P.Upload),{class:"h-4 w-4 text-gray-700"}),te[4]||(te[4]=e.createTextVNode(" Імпорт ",-1))])):e.createCommentVNode("",!0),r("export")?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",onClick:O,class:"inline-flex items-center gap-2 rounded-md border border-gray-200 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:border-gray-300 hover:bg-gray-50 transition-colors"},[e.createVNode(e.unref(P.Download),{class:"h-4 w-4 text-gray-700"}),te[5]||(te[5]=e.createTextVNode(" Експорт ",-1))])):e.createCommentVNode("",!0),r("add")?(e.openBlock(),e.createElementBlock("button",{key:3,onClick:me,type:"button",class:"inline-flex items-center gap-2 rounded-md bg-blue-500 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-blue-600 transition-colors"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4 text-white"}),te[6]||(te[6]=e.createTextVNode(" Додати ",-1))])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",pi,[e.createElementVNode("table",fi,[e.createElementVNode("thead",mi,[e.createElementVNode("tr",hi,[e.createElementVNode("th",gi,[e.createVNode(e.unref(P.GripVertical),{class:"mx-auto h-4 w-4 text-gray-400"})]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,ne=>(e.openBlock(),e.createElementBlock("th",{key:ne.key,class:"px-4 py-3 text-left text-xs font-semibold text-gray-900"},[e.createElementVNode("button",{type:"button",onClick:fe=>_e(ne),class:"flex items-center gap-1 text-xs font-semibold text-gray-700 hover:text-gray-900 transition-colors"},[e.createElementVNode("span",null,e.toDisplayString(ne.ua||ne.label),1),d.value===(ne.key||ne.name)?(e.openBlock(),e.createElementBlock("span",bi,e.toDisplayString(u.value==="asc"?"▲":"▼"),1)):e.createCommentVNode("",!0)],8,yi)]))),128)),te[7]||(te[7]=e.createElementVNode("th",{class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 text-center w-[1%] whitespace-nowrap"}," Дії ",-1))])]),e.createElementVNode("tbody",{class:e.normalizeClass(["divide-y divide-gray-200",{"[&_tr:last-child]:border-0":!m.value}])},[p.value.length===0?(e.openBlock(),e.createElementBlock("td",ki,[e.createElementVNode("div",xi,[e.createElementVNode("div",wi,[e.createVNode(si,{class:"w-48 mx-auto"}),te[8]||(te[8]=e.createElementVNode("div",{class:"max-w-sm mx-auto mt-6"},[e.createElementVNode("p",{class:"font-medium text-gray-800 dark:text-neutral-200"},"Нічого не знайдено"),e.createElementVNode("p",{class:"mt-2 text-sm text-gray-500 dark:text-neutral-500"})],-1))])])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(ne,fe)=>(e.openBlock(),e.createElementBlock("tr",{key:ne.id,class:e.normalizeClass(["border-b transition-colors hover:bg-gray-50 cursor-move text-sm text-gray-700",{"opacity-50":h.value===fe,"border-t-2 border-b-2 border-blue-500 bg-blue-50 dark:bg-blue-900/20":m.value===fe}]),draggable:"true",onDragstart:he=>k(fe),onDragover:e.withModifiers(he=>v(fe),["prevent"]),onDrop:he=>x(fe)},[e.createElementVNode("td",Ci,[e.createElementVNode("div",vi,[e.createVNode(e.unref(P.GripVertical),{class:"mx-auto h-4 w-4 text-slate-400 dark:text-slate-500"})])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,he=>(e.openBlock(),e.createElementBlock("td",{key:he.key,class:"px-4 py-3 align-middle"},[G(he)==="slot"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Ce(he.slot)?e.renderSlot(W.$slots,he.slot,{key:0,row:ne,value:ne[he.key],column:he}):(e.openBlock(),e.createElementBlock("div",{key:1,class:"text-sm text-gray-900",innerHTML:ee(he.slot,ne)},null,8,Ei))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[G(he)==="file"?(e.openBlock(),e.createElementBlock("div",Bi,[w(Ne(ne,he))?(e.openBlock(),e.createElementBlock("div",Vi,[e.createElementVNode("img",{src:Ne(ne,he),alt:"alt",width:"45",class:"rounded-md max-w-[45px] h-[45px] object-cover"},null,8,Si)])):(e.openBlock(),e.createElementBlock("div",$i,[e.createVNode(e.unref(P.FileText),{class:"h-4 w-4 min-w-4"})]))])):G(he)==="color"?(e.openBlock(),e.createElementBlock("div",Ni,[e.createElementVNode("span",{class:"inline-flex h-6 w-6 rounded border border-gray-200",style:e.normalizeStyle({backgroundColor:Ne(ne,he)||"#ffffff"})},null,4)])):(e.openBlock(),e.createElementBlock("div",Ai,e.toDisplayString(Ne(ne,he)),1))],64))]))),128)),e.createElementVNode("td",Fi,[e.createElementVNode("div",Mi,[e.createElementVNode("button",{onClick:he=>Ue(ne,fe),class:"p-1.5 text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded transition-colors"},[e.createVNode(e.unref(P.Pencil),{class:"h-4 w-4"})],8,Di),e.createElementVNode("button",{onClick:he=>nt(fe),class:"p-1.5 text-gray-600 hover:text-red-600 hover:bg-red-50 rounded transition-colors"},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,Ti)])])],42,_i))),128))],2)])]),e.createVNode(e.unref(pe.VsModal),{visible:$.value,title:j.value,size:"lg",onClose:ve,teleport:"#modal"},{default:e.withCtx(()=>[e.createVNode(tt,{schema:K.value,values:Z.value,"onUpdate:values":te[1]||(te[1]=ne=>Z.value=ne),form:le.value,"onUpdate:form":te[2]||(te[2]=ne=>le.value=ne)},null,8,["schema","values","form"]),e.createElementVNode("div",Li,[e.createElementVNode("button",{type:"button",onClick:te[3]||(te[3]=ne=>$.value=!1),class:"vs-button inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border !border-gray-200 hover:text-white bg-white text-red-500 hover:border-red-500 hover:bg-red-500 focus:ring-red-500 py-1.5 px-5 focus:ring-1 focus:ring-offset-1 mr-2"}," Скасувати "),e.createElementVNode("button",{onClick:it,type:"button",class:"vs-button inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border-1 border-transparent text-white bg-blue-500 hover:bg-blue-600 focus:ring-blue-500 py-1.5 px-5 focus:ring-1 focus:ring-offset-1"}," Зберегти ")])]),_:1},8,["visible","title"])]))}}),Ii={},Ri={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none","stroke-width":"2",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round",class:"icon icon-tabler icons-tabler-outline icon-tabler-line"};function Oi(o,t){return e.openBlock(),e.createElementBlock("svg",Ri,t[0]||(t[0]=[e.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),e.createElementVNode("path",{d:"M6 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"},null,-1),e.createElementVNode("path",{d:"M18 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"},null,-1),e.createElementVNode("path",{d:"M7.5 16.5l9 -9"},null,-1)]))}const zi=be(Ii,[["render",Oi]]),Pi={},ji={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"icon icon-tabler icons-tabler-outline icon-tabler-polygon"};function Ui(o,t){return e.openBlock(),e.createElementBlock("svg",ji,t[0]||(t[0]=[e.createStaticVNode('<path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M19 8m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M5 11m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M15 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M6.5 9.5l3.5 -3"></path><path d="M14 5.5l3 1.5"></path><path d="M18.5 10l-2.5 7"></path><path d="M13.5 17.5l-7 -5"></path>',9)]))}const Hi=be(Pi,[["render",Ui]]),qi={},Ki={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"icon icon-tabler icons-tabler-outline icon-tabler-topology-ring-3"};function Wi(o,t){return e.openBlock(),e.createElementBlock("svg",Ki,t[0]||(t[0]=[e.createStaticVNode('<path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 18a2 2 0 1 0 -4 0a2 2 0 0 0 4 0z"></path><path d="M20 18a2 2 0 1 0 -4 0a2 2 0 0 0 4 0z"></path><path d="M20 6a2 2 0 1 0 -4 0a2 2 0 0 0 4 0z"></path><path d="M8 6a2 2 0 1 0 -4 0a2 2 0 0 0 4 0z"></path><path d="M6 8v8"></path><path d="M18 16v-8"></path><path d="M8 6h8"></path><path d="M16 18h-8"></path>',9)]))}const Gi=be(qi,[["render",Wi]]),Yi={class:"bg-white/30 p-1 rounded-md shadow w-fit"},Xi={class:"flex gap-2"},Zi=["onClick","title"],Ji=["src"],Qi=e.defineComponent({__name:"map-layers",props:{basemaps:{}},emits:["onLayerChange"],setup(o,{emit:t}){const n=o,r=e.ref(Object.keys(n.basemaps)[0]),l=t;function a(c){l("onLayerChange",c),r.value=c}const s={z:13,x:4790,y:2762};function i(c){if(c?.preview)return c.preview;if(!c?.url)return;const d={"{z}":s.z,"{x}":s.x,"{y}":s.y};let u=c.url;return Object.entries(d).forEach(([p,g])=>{u=u.replace(new RegExp(p,"gi"),String(g))}),u}return(c,d)=>(e.openBlock(),e.createElementBlock("div",Yi,[e.createElementVNode("div",Xi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.basemaps,(u,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:e.normalizeClass(["cursor-pointer border rounded-lg overflow-hidden hover:shadow-sm",{"ring-2 ring-blue-500 border-blue-300":r.value===p}]),onClick:g=>a(p),title:u.name||p,role:"button",tabindex:"0"},[e.createElementVNode("img",{src:i(u),alt:"",class:"w-10 h-10 object-cover"},null,8,Ji)],10,Zi))),128))])]))}}),Ft=1e-10,un=/([+-]?\d{1,3})\s*[°º˚]\s*(\d{1,2})\s*['’′`]\s*(\d{1,2}(?:\.\d+)?)\s*["”″]\s*([NSEW])/gi,ec=/^[+-]?\d+(?:\.\d+)?$/;function tc(o,t,n){const r=o.split(/\r?\n/).map(d=>d.trim()).filter(Boolean);if(r.length<3)return{ok:!1,errors:[{line:0,message:"Має бути щонайменше 3 рядки координат."}]};if(r.length>100)return{ok:!1,errors:[{line:0,message:"Допускається не більше 100 рядків координат."}]};const l=[],a=[];if(r.forEach((d,u)=>{const p=u+1,g=t==="decimal"?nc(d,p,n):Io(d,p,n);if(!g.ok){l.push(...g.errors);return}const h=a[a.length-1];if(h&&Oo(h,g.point)){l.push({line:p,message:"Послідовні точки не повинні дублюватися."});return}a.push(g.point)}),l.length)return{ok:!1,errors:l};if(new Set(a.map(rc)).size<3)return{ok:!1,errors:[{line:0,message:"Полігон повинен містити мінімум 3 унікальні точки."}]};const i=[...a];let c=!1;return Oo(i[0],i[i.length-1])||(i.push(i[0]),c=!0),lc(i)?{ok:!1,errors:[{line:0,message:"Полігон має самоперетин."}]}:{ok:!0,ring:i,wasClosedAutomatically:c}}function nc(o,t,n){return Lo(o,"decimal",n,t)}function Lo(o,t,n,r=1){return t==="decimal"?oc(o,r,n):Io(o,r,n)}function oc(o,t,n){const r=[];if(/[A-Za-zА-Яа-яІіЇїЄєҐґ]/.test(o))return{ok:!1,errors:[{line:t,message:"У десятковому форматі не допускаються літери."}]};const l=o.split(/[\s,;]+/).filter(Boolean);if(l.length<2)return{ok:!1,errors:[{line:t,message:"Кожен рядок має містити дві координати."}]};if(l.length>2)return{ok:!1,errors:[{line:t,message:"У рядку дозволено лише одну пару координат."}]};if(!l.every(d=>ec.test(d)))return{ok:!1,errors:[{line:t,message:"Не вдалося розпізнати десяткові координати."}]};const a=Number(l[0]),s=Number(l[1]);if(!Number.isFinite(a)||!Number.isFinite(s))return{ok:!1,errors:[{line:t,message:"Не вдалося розпізнати десяткові координати."}]};const i=n==="lat-lon"?a:s,c=n==="lat-lon"?s:a;return(i<-90||i>90)&&r.push({line:t,message:"Широта поза діапазоном (-90..90)."}),(c<-180||c>180)&&r.push({line:t,message:"Довгота поза діапазоном (-180..180)."}),r.length?{ok:!1,errors:r}:{ok:!0,point:[c,i]}}function Io(o,t,n){un.lastIndex=0;const r=[...o.matchAll(un)];if(r.length<2)return{ok:!1,errors:[{line:t,message:"Не вдалося розпізнати DMS-координати."}]};if(r.length>2)return{ok:!1,errors:[{line:t,message:"У рядку дозволено лише одну пару координат."}]};if(un.lastIndex=0,o.replace(un," ").replace(/[\s,;]+/g,"").trim().length)return{ok:!1,errors:[{line:t,message:"У рядку виявлено зайві символи або значення."}]};const a=Ro(r[0],t,n==="lat-lon"?"lat":"lon"),s=Ro(r[1],t,n==="lat-lon"?"lon":"lat"),i=[];if(a.ok||i.push(a.error),s.ok||i.push(s.error),i.length)return{ok:!1,errors:i};const c=n==="lat-lon"?a.value:s.value;return{ok:!0,point:[n==="lat-lon"?s.value:a.value,c]}}function Ro(o,t,n){const r=Number(o[1]),l=Number(o[2]),a=Number(o[3]),s=String(o[4]).toUpperCase();if(!Number.isFinite(r)||!Number.isFinite(l)||!Number.isFinite(a))return{ok:!1,error:{line:t,message:"Невірні значення DMS-координат."}};if(n==="lat"&&!(s==="N"||s==="S")||n==="lon"&&!(s==="E"||s==="W"))return{ok:!1,error:{line:t,message:n==="lat"?"Для широти напрям повинен бути N або S.":"Для довготи напрям повинен бути E або W."}};if(l<0||l>59)return{ok:!1,error:{line:t,message:"Хвилини повинні бути в діапазоні 0..59."}};if(a<0||a>60)return{ok:!1,error:{line:t,message:"Секунди повинні бути в діапазоні 0..60."}};const d=Math.abs(r),u=n==="lat"?90:180;if(d>u)return{ok:!1,error:{line:t,message:n==="lat"?"Градуси широти повинні бути в діапазоні 0..90.":"Градуси довготи повинні бути в діапазоні 0..180."}};if(d===u&&(l!==0||a!==0))return{ok:!1,error:{line:t,message:n==="lat"?"Для 90° широти хвилини й секунди мають бути 0.":"Для 180° довготи хвилини й секунди мають бути 0."}};const p=d+l/60+a/3600;return{ok:!0,value:s==="S"||s==="W"?-p:p}}function rc(o){return`${o[0].toFixed(12)}:${o[1].toFixed(12)}`}function Oo(o,t){return Math.abs(o[0]-t[0])<Ft&&Math.abs(o[1]-t[1])<Ft}function lc(o){if(o.length<4)return!1;for(let t=0;t<o.length-1;t+=1){const n=o[t],r=o[t+1];for(let l=t+1;l<o.length-1;l+=1){if(Math.abs(t-l)<=1||t===0&&l===o.length-2)continue;const a=o[l],s=o[l+1];if(ac(n,r,a,s))return!0}}return!1}function ac(o,t,n,r){const l=pn(o,t,n),a=pn(o,t,r),s=pn(n,r,o),i=pn(n,r,t);return!!(l!==a&&s!==i||l===0&&fn(o,n,t)||a===0&&fn(o,r,t)||s===0&&fn(n,o,r)||i===0&&fn(n,t,r))}function pn(o,t,n){const r=(t[1]-o[1])*(n[0]-t[0])-(t[0]-o[0])*(n[1]-t[1]);return Math.abs(r)<Ft?0:r>0?1:2}function fn(o,t,n){return t[0]<=Math.max(o[0],n[0])+Ft&&t[0]+Ft>=Math.min(o[0],n[0])&&t[1]<=Math.max(o[1],n[1])+Ft&&t[1]+Ft>=Math.min(o[1],n[1])}const sc=["title"],ic={key:0,class:"vs-select__options absolute z-50 mt-1 w-auto min-w-full bg-white border border-gray-300 shadow-lg rounded-lg text-sm text-gray-900"},cc=["onClick"],dc=["placeholder"],uc={class:"absolute inset-y-0 right-2 flex items-center gap-1"},pc={class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-gray-100"},fc={class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},mc={class:"max-h-[260px] overflow-auto"},hc={key:0,class:"divide-y divide-gray-100"},gc=["onClick"],yc={key:1,class:"px-3 py-3 text-xs text-gray-500"},zo="formMapSearchAddressHistory",bc=12,kc="https://geo.rv.ua/api-user/dzk.api",xc="https://nominatim.openstreetmap.org/search",wc=be(e.defineComponent({__name:"map-search",props:{config:{}},emits:["goToCoordinates"],setup(o,{emit:t}){const n={mounted(z,H){if(typeof document>"u")return;let U=null;const oe=8,T=()=>{const J=String(H?.value??"");if(!J)return;U=document.createElement("div"),U.textContent=J,Object.assign(U.style,{position:"absolute",background:"#333",color:"#fff",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:"9999"}),document.body.appendChild(U);const se=z.getBoundingClientRect();U.style.left=`${se.right+window.scrollX+oe}px`,U.style.top=`${se.top+window.scrollY+(se.height-U.offsetHeight)/2}px`},Y=()=>{U?.parentNode&&U.parentNode.removeChild(U),U=null};z.addEventListener("mouseenter",T),z.addEventListener("mouseleave",Y),Object.assign(z,{tooltipRightHandlers:{show:T,hide:Y}})},unmounted(z){if(typeof document>"u")return;const H=z.tooltipRightHandlers;H&&(z.removeEventListener("mouseenter",H.show),z.removeEventListener("mouseleave",H.hide))}},r=o,l=t,a=e.getCurrentInstance();function s(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function i(){const H=a?.appContext.config.globalProperties?.$settings?.map?.searchViewbox;if(H)return Array.isArray(H)?H.join(","):String(H);const oe=s()?.map?.searchViewbox;if(oe)return Array.isArray(oe)?oe.join(","):String(oe)}function c(){const H=a?.appContext.config.globalProperties?.$settings?.map?.addressSuggest;if(typeof H=="string"&&H.trim())return H.trim();const oe=s()?.map?.addressSuggest;if(typeof oe=="string"&&oe.trim())return oe.trim()}const d=!!c(),u=e.computed(()=>{const z=["nominatim","xy","parcel"];return d&&z.unshift("address"),z}),p=e.computed(()=>{const z=u.value,H=r.config?.tools?.filter(U=>z.includes(U));return H&&H.length?H:z}),g=e.computed(()=>r.config?.placeholder?.trim()||"Пошук…"),h=e.ref(p.value[0]);e.watch(p,z=>{z.includes(h.value)||(h.value=z[0])});const m=e.ref(""),b=e.ref(!1),k=e.ref(null),v=e.ref(null),x=e.ref(null),_=e.ref(null),w=e.ref([]),F=e.ref(null),O=e.ref(!1),N=e.ref([]),E=e.computed(()=>(h.value==="address"||h.value==="nominatim")&&O.value),V=e.computed(()=>r.config?.addressDebounceMs??1e3);let B=null;const M=e.ref(!1),I=e.computed(()=>m.value.trim().length>0?w.value:N.value),j=e.computed(()=>m.value.trim().length?`Знайдено ${w.value.length}`:"Історія пошуку"),$=e.computed(()=>m.value.trim().length?"Нічого не знайдено":"Історія порожня");function L(){if(typeof window>"u")return[];try{const z=window.localStorage?.getItem?.(zo);if(!z)return[];const H=JSON.parse(z);return Array.isArray(H)?H:[]}catch{return[]}}function D(z){typeof window>"u"||window.localStorage?.setItem?.(zo,JSON.stringify(z))}function G(z){const U=[z,...N.value.filter(oe=>oe.id!==z.id)].slice(0,10);N.value=U,D(U)}const K=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function Z(){if(!_.value)return;const z=_.value.getBoundingClientRect(),H=x.value?.getBoundingClientRect(),U=H?.width??z.width,oe=(H?.left??z.left)+window.scrollX,T=z.bottom+window.scrollY+bc;K.left=`${oe}px`,K.top=`${T}px`,K.width=`${U}px`,K.display="block"}const le=()=>{E.value&&Z()};function Ce(){B&&(clearTimeout(B),B=null)}e.watch(h,()=>{m.value="",b.value=!1,w.value=[],O.value=!1,Ce(),M.value=!1}),e.watch(E,z=>{z?e.nextTick(()=>{Z()}):K.display="none"}),e.watch(m,z=>{if(h.value!=="address"&&h.value!=="nominatim"){w.value=[],Ce();return}if(!z.trim()){w.value=[],O.value=N.value.length>0,Ce();return}Ce(),O.value=!0,B=window.setTimeout(()=>{Se(z).catch(H=>{const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})})},V.value)});function ke(z){const H=[];v.value&&H.push(v.value),z instanceof HTMLElement&&H.push(z),k.value?.querySelectorAll("li")?.forEach(oe=>{H.push(oe)}),H.forEach(oe=>{oe.dispatchEvent(new MouseEvent("mouseleave",{bubbles:!0}))})}function ee(z){b.value&&ke(z.target),b.value=!b.value}function ie(z,H){ke(H?.target),h.value=z}function _e(){m.value="",w.value=[],O.value=!1,M.value=!1}function me(z){const H=z.target;if(b.value){const U=k.value;U&&!U.contains(H)&&(ke(H),b.value=!1)}if(E.value){const U=F.value,oe=_.value;U&&!U.contains(H)&&(!oe||!oe.contains(H))&&(O.value=!1)}}e.onMounted(()=>{N.value=L(),window.addEventListener("click",me,!0),window.addEventListener("scroll",le,!0),window.addEventListener("resize",le)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",me,!0),window.removeEventListener("scroll",le,!0),window.removeEventListener("resize",le),Ce()});function we(z){return z==="xy"?"Координати":z==="parcel"?"Кадастр":z==="nominatim"?"Nominatim":"Адресний"}function Ve(z){switch(z){case"xy":return"Пошук за географічними координатами. Введіть широту і довготу через пробіл або кому (lat lng або lng lat).";case"parcel":return"Пошук земельної ділянки за кадастровим номером у форматі 0000000000:00:000:0000.";case"nominatim":return"Пошук адрес та обʼєктів через Nominatim.";case"address":return"Пошук адрес через локальний сервіс addressSuggest.";default:return""}}function Ne(z){const H=Lo(z.trim(),"dms","lat-lon");if(H.ok){const[Pe,gt]=H.point;return{lat:gt,lng:Pe}}const U=z.replace(/[,]+/g," ").trim();if(!U)return null;const oe=U.split(/\s+/).filter(Boolean);if(oe.length<2)return null;const T=oe.slice(0,2).map(Number);if(!T.every(Pe=>Number.isFinite(Pe)))return null;let[Y,J]=T,se=Y,$e=J;const ht=Pe=>Math.abs(Pe)<=90,He=Pe=>Math.abs(Pe)<=180;if(!ht(se)||!He($e))if(ht($e)&&He(se))se=J,$e=Y;else return null;return{lat:se,lng:$e}}function Ue(z){const H=z?.result||z?.data||z;if(!H)return[];const U=H.geom_centroid;if(!U||!Array.isArray(U.coordinates))return[];const[oe,T]=U.coordinates;return!Number.isFinite(T)||!Number.isFinite(oe)?[]:[{id:"parcel",title:H.cadnum||H.cad_num||"Земельна ділянка",lat:T,lng:oe}]}function it(z){return(Array.isArray(z?.features)?z.features:[]).map((U,oe)=>{const T=U?.geometry?.coordinates,Y=Number(T?.[0]),J=Number(T?.[1]);if(!Number.isFinite(J)||!Number.isFinite(Y))return null;const se=U?.properties||{},$e=se?.geocoding?.label||se?.display_name||se?.label||"Адреса";return{id:String(se?.geocoding?.place_id||se?.place_id||oe),title:$e,lat:J,lng:Y}}).filter(U=>!!U)}function nt(z){return Number.isFinite(z.lat)&&Number.isFinite(z.lng)}function ve(z){const H=Number(z);return Number.isFinite(H)?H:null}function W(z){const H=ve(z.lng)??ve(z.lon)??ve(z.longitude)??ve(z.x),U=ve(z.lat)??ve(z.latitude)??ve(z.y);if(H!=null&&U!=null)return{lat:U,lng:H};const oe=z?.geometry?.coordinates??z?.geom_centroid?.coordinates??z?.centroid?.coordinates??z?.geojson?.geometry?.coordinates??z?.geom?.coordinates;if(Array.isArray(oe)&&oe.length>=2){const T=ve(oe[0]),Y=ve(oe[1]);if(T!=null&&Y!=null)return{lat:Y,lng:T}}return null}function te(z){return(Array.isArray(z?.data)?z.data:[]).map((U,oe)=>{const T=W(U),Y=String(U.text??U.title??U.label??U.name??U.address??U.display_name??U.id??"Адреса"),J=String(U.id??U.code??U.value??oe);return T?{id:J,title:Y,...T}:{id:J,title:Y}}).filter(U=>!!U?.title)}function ne(z){const H=c();if(!H)return null;if(H.includes(":name"))return H.replace(":name",encodeURIComponent(z));try{const U=new URL(H,window.location.origin);return z.trim()&&U.searchParams.set("q",z),U.toString()}catch{return H}}async function fe(z){const H=ne(z);if(!H)return[];const U=await fetch(H);if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json();return te(oe)}async function he(z){const H=new URL(xc);H.searchParams.set("format","geojson"),H.searchParams.set("q",z),H.searchParams.set("addressdetails","1");const U=i();U&&(H.searchParams.set("bounded","1"),H.searchParams.set("viewbox",U));const oe=await fetch(H.toString());if(!oe.ok)throw new Error(`HTTP ${oe.status}`);const T=await oe.json();return it(T)}async function Se(z){if(w.value=[],Ce(),h.value==="address"){if(!c()){pe.notify({type:"warning",title:"Пошук адреси",message:"Не налаштовано addressSuggest"});return}const oe=await fe(z);if(!oe.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=oe;return}const H=await he(z);if(!H.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=H}async function Be(z){if(nt(z)){X(z),G(z);return}try{const U=(await he(z.title))[0];if(!U||!nt(U)){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено координати адреси"});return}X(U),G(U)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}}function Ae(){h.value!=="address"&&h.value!=="nominatim"||!m.value.trim().length&&!N.value.length||(O.value=!0,e.nextTick(()=>{Z()}))}function Xe(z){const U=z.replace(/\s+/g,"").split(":");if(U.length!==4)return!1;const oe=[10,2,3,4];return U.every((T,Y)=>T.length===oe[Y]&&/^\d+$/.test(T))}function X(z){l("goToCoordinates",[z.lat,z.lng]),M.value=!0}async function ae(){const z=m.value.trim();if(z){if(h.value==="xy"){const H=Ne(z);if(!H){pe.notify({type:"warning",title:"Пошук координат",message:"Використайте `lat lon` або DMS у форматі `50°27'00\"N 30°31'24\"E`."});return}X(H);return}if(h.value==="address"||h.value==="nominatim"){try{await Se(z)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}return}try{if(!Xe(z)){pe.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}const H=new URL(kc);H.searchParams.set("cad_num",z);const U=await fetch(H.toString());if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json(),T=Ue(oe);if(!T.length)pe.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const Y=T[0];X(Y)}}catch(H){const U=H?.message||"Помилка пошуку";pe.notify({type:"error",title:"Пошук",message:U})}}}return(z,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"widgetRef",ref:x,class:"map-search-widget flex flex-col gap-2 rounded-xl widget min-w-[200px]"},[e.createElementVNode("form",{class:"flex gap-2 text-gray-900",onSubmit:e.withModifiers(ae,["prevent"])},[p.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:k,class:"relative search-type w-[100px]"},[e.createElementVNode("button",{type:"button",class:"vstSelect-input transition-all text-left bg-white border border-gray-200 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-100 block w-full py-1.5 px-3 text-sm cursor-pointer flex items-center justify-between gap-2",onClick:ee},[e.withDirectives((e.openBlock(),e.createElementBlock("span",{ref_key:"selectedToolLabelRef",ref:v,class:"block w-full truncate",title:we(h.value)},[e.createTextVNode(e.toDisplayString(we(h.value)),1)],8,sc)),[[n,Ve(h.value)]]),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":b.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},H[3]||(H[3]=[e.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)]),2))]),b.value?(e.openBlock(),e.createElementBlock("div",ic,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,U=>e.withDirectives((e.openBlock(),e.createElementBlock("li",{key:U,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:oe=>ie(U,oe)},[e.createTextVNode(e.toDisplayString(we(U)),1)],8,cc)),[[n,Ve(U)]])),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:_,class:"relative flex-1 min-w-[140px]"},[h.value==="parcel"?(e.openBlock(),e.createBlock(sn,{key:0,modelValue:m.value,"onUpdate:modelValue":H[0]||(H[0]=U=>m.value=U),mask:"0000000000:00:000:0000",class:e.normalizeClass(["vs-input !h-[34px] transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",M.value?"!pr-14":"!pr-8"])},null,8,["modelValue","class"])):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":H[1]||(H[1]=U=>m.value=U),placeholder:g.value,type:"text",class:e.normalizeClass(["vs-input transition-all border block w-full border-gray-200 rounded-md focus:border-blue-100 border-solid py-1.5 pl-3 text-sm",M.value?"!pr-14":"!pr-8"]),onFocus:Ae},null,42,dc)),[[e.vModelText,m.value,void 0,{trim:!0}]]),e.createElementVNode("div",uc,[M.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Очистити",onClick:_e},H[4]||(H[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})],-1)]))):e.createCommentVNode("",!0),H[5]||(H[5]=e.createElementVNode("button",{type:"submit",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Пошук"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-4.35-4.35m0 0A7.5 7.5 0 1 0 5 5a7.5 7.5 0 0 0 11.65 11.65Z"})])],-1))]),E.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:F,class:"vs-select__options mt-1 bg-white border border-gray-300 rounded-lg shadow-lg text-sm text-gray-900 z-50",style:e.normalizeStyle(K)},[e.createElementVNode("div",pc,[e.createElementVNode("span",fc,e.toDisplayString(j.value),1),e.createElementVNode("button",{type:"button",class:"text-gray-400 hover:text-gray-600","aria-label":"Закрити",onClick:H[2]||(H[2]=U=>O.value=!1)}," ✕ ")]),e.createElementVNode("div",mc,[I.value.length?(e.openBlock(),e.createElementBlock("ul",hc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,U=>(e.openBlock(),e.createElementBlock("li",{key:U.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:oe=>Be(U)},e.toDisplayString(U.title),9,gc))),128))])):(e.openBlock(),e.createElementBlock("div",yc,e.toDisplayString($.value),1))])],4)])):e.createCommentVNode("",!0)],512)],32)],512))}}),[["__scopeId","data-v-21c61781"]]),_c={class:"pt-1 border-t border-gray-100"},Cc={class:"space-y-1"},vc=e.defineComponent({__name:"AddCoordinates",emits:["submit","cancel"],setup(o,{emit:t}){const n=t,r=e.ref(null),l=e.ref(null),a=(c,d,u)=>Math.min(Math.max(c,d),u),s=()=>{if(r.value===null||l.value===null||!Number.isFinite(r.value)||!Number.isFinite(l.value))return;const c=a(r.value,-90,90),d=a(l.value,-180,180);n("submit",{lat:c,lng:d}),r.value=null,l.value=null},i=()=>{r.value=null,l.value=null,n("cancel")};return(c,d)=>(e.openBlock(),e.createElementBlock("div",_c,[d[2]||(d[2]=e.createElementVNode("p",{class:"text-xs text-gray-600 mb-1"},"Додати точку за координатами:",-1)),e.createElementVNode("div",Cc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[0]||(d[0]=u=>r.value=u),type:"number",step:"0.0001",class:"w-full px-2 py-1 text-xs border border-gray-300 rounded focus:outline-none focus:border-blue-500",placeholder:"Широта (50.4501)"},null,512),[[e.vModelText,r.value,void 0,{number:!0}]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[1]||(d[1]=u=>l.value=u),type:"number",step:"0.0001",class:"w-full px-2 py-1 text-xs border border-gray-300 rounded focus:outline-none focus:border-blue-500",placeholder:"Довгота (30.5234)"},null,512),[[e.vModelText,l.value,void 0,{number:!0}]]),e.createElementVNode("div",{class:"flex gap-1.5"},[e.createElementVNode("button",{class:"flex-1 px-2 py-1 bg-blue-500 hover:bg-blue-600 text-white text-xs font-medium rounded transition-colors",type:"button",onClick:s}," Додати "),e.createElementVNode("button",{class:"px-2 py-1 bg-gray-200 hover:bg-gray-300 text-gray-700 text-xs font-medium rounded transition-colors",type:"button",onClick:i}," Скасувати ")])])]))}}),Ec=e.defineComponent({__name:"BtnAdd",emits:["click"],setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("button",{class:"flex-1 px-2 py-1.5 bg-blue-500 hover:bg-blue-600 text-white text-xs font-medium rounded transition-colors duration-150 flex items-center justify-center gap-1",onClick:n[0]||(n[0]=r=>t.$emit("click"))},[e.createVNode(e.unref(P.Plus),{size:12,"stroke-width":2}),n[1]||(n[1]=e.createTextVNode(" Додати ",-1))]))}}),Bc=e.defineComponent({__name:"BtnClear",emits:["click"],setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("button",{class:"w-full px-2 py-1.5 bg-rose-500 hover:bg-rose-600 text-white text-xs font-medium rounded transition-colors duration-150 flex items-center justify-center gap-1",onClick:n[0]||(n[0]=r=>t.$emit("click"))},[e.createVNode(e.unref(P.Trash2),{size:12,"stroke-width":2}),n[1]||(n[1]=e.createTextVNode(" Очистити ",-1))]))}}),Vc=e.defineComponent({__name:"BtnComplete",emits:["click"],setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("button",{class:"flex-1 px-2 py-1.5 bg-emerald-500 hover:bg-emerald-600 text-white text-xs font-medium rounded transition-colors duration-150 flex items-center justify-center gap-1",onClick:n[0]||(n[0]=r=>t.$emit("click"))},[e.createVNode(e.unref(P.Circle),{size:12,"stroke-width":2}),n[1]||(n[1]=e.createTextVNode("Замкнути ",-1))]))}}),Sc=new Intl.NumberFormat("uk-UA",{minimumFractionDigits:2,maximumFractionDigits:2});function Mt(o){return Sc.format(o)}function Po(o){return o>=1e3?`${Mt(o/1e3)} км`:`${Mt(o)} м`}const $c={class:"flex items-center gap-1.5 text-xs bg-gray-50 rounded p-1.5"},Nc={key:0,class:"flex-1 flex gap-1"},Ac={key:1,class:"flex-1 font-mono text-gray-700"},Fc=e.defineComponent({__name:"DotListItem",props:{id:{},index:{},coords:{}},emits:["update","delete"],setup(o,{emit:t}){const n=o,r=t,l=e.computed(()=>`${n.coords.lat.toFixed(4)}°, ${n.coords.lng.toFixed(4)}°`),a=e.ref(!1),s=e.ref(n.coords.lat),i=e.ref(n.coords.lng);e.watch(()=>n.coords,g=>{s.value=g.lat,i.value=g.lng},{deep:!0,immediate:!0});const c=(g,h,m)=>Math.min(Math.max(g,h),m),d=()=>{a.value=!0},u=()=>{if(!Number.isFinite(s.value)||!Number.isFinite(i.value))return;const g=c(s.value,-90,90),h=c(i.value,-180,180);r("update",{id:n.id,coords:{lat:g,lng:h}}),a.value=!1},p=()=>{r("delete",n.id)};return(g,h)=>(e.openBlock(),e.createElementBlock("div",$c,[e.createVNode(e.unref(P.MapPin),{size:12,"stroke-width":2,class:"text-gray-400 flex-shrink-0"}),a.value?(e.openBlock(),e.createElementBlock("div",Nc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=m=>s.value=m),type:"number",step:"0.0001",min:"-90",max:"90",class:"flex-1 px-1.5 py-0.5 text-xs border border-gray-300 rounded focus:outline-none focus:border-blue-500",placeholder:"Широта"},null,512),[[e.vModelText,s.value,void 0,{number:!0}]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[1]||(h[1]=m=>i.value=m),type:"number",step:"0.0001",min:"-180",max:"180",class:"flex-1 px-1.5 py-0.5 text-xs border border-gray-300 rounded focus:outline-none focus:border-blue-500",placeholder:"Довгота"},null,512),[[e.vModelText,i.value,void 0,{number:!0}]]),e.createElementVNode("button",{class:"px-1.5 py-0.5 bg-emerald-500 text-white rounded hover:bg-emerald-600 text-xs",type:"button",onClick:u}," ✓ ")])):(e.openBlock(),e.createElementBlock("span",Ac,e.toDisplayString(l.value),1)),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:2,class:"text-blue-500 hover:text-blue-600 px-0.5",type:"button",onClick:d}," ✎ ")),e.createElementVNode("button",{class:"text-rose-500 hover:text-rose-600 px-0.5",type:"button",onClick:p}," ✕ ")]))}}),Mc={class:"ruler-control px-3 py-2.5 space-y-2"},Dc={type:"button",class:"ruler-row w-full flex items-center gap-2 cursor-pointer group text-left"},Tc={class:e.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Сумарна довжина всіх відрізків","aria-hidden":"true"},Lc={class:"text-sm font-semibold text-slate-700"},Ic={class:"ruler-row"},Rc={type:"button",class:"w-full flex items-center gap-2 cursor-pointer group text-left"},Oc={class:e.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Площа замкнутого контуру","aria-hidden":"true"},zc={class:"inline-flex rounded-md overflow-hidden border border-gray-200 bg-gray-100"},Pc=["onClick"],jc={class:"flex items-center gap-2 mt-0.5 pl-7"},Uc={key:0,class:"text-base font-semibold text-green-600"},Hc={key:1,class:"text-xs text-gray-400"},qc={class:"ruler-row flex items-center gap-2 cursor-pointer"},Kc={class:e.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Список точок","aria-hidden":"true"},Wc={class:"text-xs font-medium text-gray-600 flex-1"},Gc={key:0,class:"pt-1.5 border-t border-gray-100 max-h-32 overflow-y-auto space-y-1"},Yc=e.defineComponent({__name:"ControlPanel",props:{points:{},isShapeClosed:{type:Boolean}},emits:["update-point","delete-point"],setup(o){const t=o,n=e.ref(!1),r=e.ref("km2"),l=[{id:"km2",label:"км²"},{id:"ha",label:"га"},{id:"m2",label:"м²"}],a=()=>{n.value=!n.value},s=(m,b)=>{const k=V=>V*Math.PI/180,v=k(b.lat-m.lat),x=k(b.lng-m.lng),_=k(m.lat),w=k(b.lat),F=Math.sin(v/2),O=Math.sin(x/2);return 6371e3*(2*Math.asin(Math.sqrt(F*F+Math.cos(_)*Math.cos(w)*O*O)))},i=e.computed(()=>{if(t.points.length<2)return 0;let m=0;for(let b=1;b<t.points.length;b+=1)m+=s(t.points[b-1].coords,t.points[b].coords);return t.isShapeClosed&&t.points.length>=2&&(m+=s(t.points[t.points.length-1].coords,t.points[0].coords)),m}),c=e.computed(()=>i.value>=1e3?`${Mt(i.value/1e3)} км`:`${Mt(i.value)} м`);function d(m){if(m.length<3)return 0;const b=m[0].lat,k=m[0].lng,v=(_,w)=>{const F=(_-b)*110574;return{x:(w-k)*111320*Math.cos(b*Math.PI/180),y:F}};let x=0;for(let _=0;_<m.length;_++){const w=(_+1)%m.length,F=v(m[_].lat,m[_].lng),O=v(m[w].lat,m[w].lng);x+=F.x*O.y-F.y*O.x}return Math.abs(x)*.5}const u=e.computed(()=>{if(!t.isShapeClosed||t.points.length<3)return 0;const m=t.points.map(b=>b.coords);return d(m)}),p=e.computed(()=>u.value>0),g=e.computed(()=>{const m=u.value;if(m===0)return"—";if(r.value==="km2"){const k=m/1e6;return`${Mt(k)} км²`}if(r.value==="ha"){const k=m/1e4;return`${Mt(k)} га`}const b=m>=1?Math.round(m):m;return`${Mt(b)} м²`}),h=e.computed(()=>{const m=t.points.length;return m===1?"1 точка":m>=2&&m<=4?`${m} точки`:`${m} точок`});return e.watch(()=>t.points.length,()=>{t.points.length===0&&(n.value=!1)}),(m,b)=>(e.openBlock(),e.createElementBlock("div",Mc,[e.createElementVNode("button",Dc,[e.createElementVNode("span",Tc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),b[1]||(b[1]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Загальна відстань",-1)),e.createElementVNode("span",Lc,e.toDisplayString(c.value),1)]),e.createElementVNode("div",Ic,[e.createElementVNode("button",Rc,[e.createElementVNode("span",Oc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),b[2]||(b[2]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Площа",-1)),e.createElementVNode("div",zc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,(k,v)=>e.createElementVNode("button",{key:k.id,type:"button",class:e.normalizeClass(["px-2.5 py-1 text-xs font-medium transition-colors border-r border-gray-200 last:border-r-0",v===0&&"rounded-l-md",v===l.length-1&&"rounded-r-md",r.value===k.id?"bg-white text-green-600 font-semibold shadow-sm":"text-gray-600 hover:bg-gray-50"]),onClick:e.withModifiers(x=>r.value=k.id,["stop"])},e.toDisplayString(k.label),11,Pc)),64))])]),e.createElementVNode("div",jc,[p.value?(e.openBlock(),e.createElementBlock("span",Uc,e.toDisplayString(g.value),1)):(e.openBlock(),e.createElementBlock("span",Hc,"—"))])]),e.createElementVNode("div",qc,[e.createElementVNode("span",Kc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),e.createElementVNode("span",Wc,e.toDisplayString(h.value),1),e.createElementVNode("button",{type:"button",class:"text-xs text-blue-500 hover:text-blue-600 font-medium transition-colors",onClick:e.withModifiers(a,["stop"])}," Координати ")]),n.value?(e.openBlock(),e.createElementBlock("div",Gc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.points,(k,v)=>(e.openBlock(),e.createBlock(Fc,{key:k.id,id:k.id,index:v+1,coords:k.coords,onUpdate:b[0]||(b[0]=x=>m.$emit("update-point",x)),onDelete:x=>m.$emit("delete-point",k.id)},null,8,["id","index","coords","onDelete"]))),128))])):e.createCommentVNode("",!0)]))}}),Xc={class:"px-3 py-3 bg-blue-50/50 border-b border-blue-100"},Zc={class:"flex items-start gap-2"},Jc=e.defineComponent({__name:"InfoHint",setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",Xc,[e.createElementVNode("div",Zc,[e.createVNode(e.unref(P.Info),{size:16,"stroke-width":2,class:"text-blue-600 flex-shrink-0 mt-0.5"}),n[0]||(n[0]=e.createElementVNode("div",{class:"space-y-1"},[e.createElementVNode("p",{class:"text-xs font-medium text-blue-900"}," Натискайте на карту, щоб додати точки вимірювання "),e.createElementVNode("p",{class:"text-[10px] text-blue-700"},' Або скористайтесь кнопкою "Додати" внизу для введення координат вручну ')],-1))])]))}}),Qc={class:"space-y-1.5"},ed={class:"space-y-1 max-h-40 overflow-y-auto"},td={class:"text-gray-700"},nd={class:"font-semibold text-slate-800"},od=e.defineComponent({__name:"ToPointList",props:{points:{},isShapeClosed:{type:Boolean}},setup(o){const t=o;function n(a,s){const i=h=>h*Math.PI/180,c=i(s.lat-a.lat),d=i(s.lng-a.lng),u=i(a.lat),p=i(s.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(c/2)**2+Math.cos(u)*Math.cos(p)*Math.sin(d/2)**2)))}function r(a){return Po(a)}const l=e.computed(()=>{const a=[],s=t.points;if(s.length<2)return a;for(let i=0;i<s.length;i++){const c=i===s.length-1&&t.isShapeClosed?0:i+1;if(c>=s.length)break;const d=n(s[i].coords,s[c].coords);a.push({from:i+1,to:c+1,label:r(d)})}return a});return(a,s)=>(e.openBlock(),e.createElementBlock("div",Qc,[s[0]||(s[0]=e.createElementVNode("p",{class:"text-xs font-medium text-gray-600 mb-1.5"},"Відстань між точками:",-1)),e.createElementVNode("div",ed,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(i,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"flex items-center justify-between text-xs py-1 px-2 rounded bg-gray-50"},[e.createElementVNode("span",td,"Точка "+e.toDisplayString(i.from)+" → Точка "+e.toDisplayString(i.to),1),e.createElementVNode("span",nd,e.toDisplayString(i.label),1)]))),128))])]))}}),rd={class:"ruler-panel-wrap absolute bottom-12 right-4 z-[1001] animate-slide-up"},ld={class:"bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden w-72"},ad={class:"bg-gradient-to-r from-blue-400 to-blue-500 px-3 py-2 flex items-center justify-between"},sd={class:"flex items-center gap-2"},id={class:"w-6 h-6 bg-white/20 rounded-lg flex items-center justify-center"},cd={class:"flex border-b border-gray-200"},dd={key:1,class:"px-3 py-2.5"},ud={key:1,class:"text-xs text-gray-500"},pd={class:"px-2.5 py-1.5 bg-gray-50 border-t border-gray-200 space-y-1.5"},fd={class:"flex gap-1.5"},md=e.defineComponent({name:"RulerPanel",__name:"RulerPanel",emits:["close","tab-change","points-change","add-request","complete","shape-closed-change"],setup(o,{expose:t,emit:n}){const r=n,l=e.ref([]),a=e.computed(()=>l.value.length>0),s=e.ref(!1),i=e.ref(!1),c=e.ref("general");function d(B){c.value=B,r("tab-change",B)}e.onMounted(()=>{r("tab-change",c.value)});const u=e.computed(()=>l.value.length>=3&&!i.value);let p=1;const g=()=>l.value.map(B=>({id:B.id,coords:{...B.coords}})),h=()=>{l.value.length<3&&i.value&&(i.value=!1,r("shape-closed-change",!1)),r("points-change",g())},m=()=>{const B=p;return p+=1,B},b=B=>{l.value=[...l.value,{id:m(),coords:{lat:B.lat,lng:B.lng}}],h()},k=({id:B,coords:M})=>{const I=l.value.findIndex($=>$.id===B);if(I===-1)return;const j=[...l.value];j[I]={id:B,coords:{...M}},l.value=j,h()},v=B=>{l.value=l.value.filter(M=>M.id!==B),h()},x=()=>{l.value=[],i.value&&(i.value=!1,r("shape-closed-change",!1)),h()},_=B=>{k(B)},w=B=>{v(B)},F=()=>{s.value=!0,r("add-request")},O=B=>{b(B),s.value=!1},N=()=>{s.value=!1},E=()=>{u.value&&(i.value=!0,r("complete"),r("shape-closed-change",!0))},V=()=>{x(),s.value=!1,r("close")};return t({addPoint:b,clearPoints:x}),(B,M)=>(e.openBlock(),e.createElementBlock("div",rd,[e.createElementVNode("div",ld,[e.createElementVNode("div",ad,[e.createElementVNode("div",sd,[e.createElementVNode("div",id,[e.createVNode(e.unref(P.Ruler),{size:14,"stroke-width":2,class:"text-white"})]),M[2]||(M[2]=e.createElementVNode("h3",{class:"text-white font-semibold text-xs"},"Вимірювання",-1))]),e.createElementVNode("button",{class:"w-5 h-5 flex items-center justify-center rounded hover:bg-white/20 transition-colors","aria-label":"Закрити",onClick:V},[e.createVNode(e.unref(P.X),{size:14,"stroke-width":2,class:"text-white"})])]),e.createElementVNode("div",cd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",c.value==="general"?"text-blue-600 border-b-2 border-blue-500 bg-blue-50/50":"text-gray-500 hover:text-gray-700"]),onClick:M[0]||(M[0]=I=>d("general"))}," Загальна ",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",c.value==="topoint"?"text-blue-600 border-b-2 border-blue-500 bg-blue-50/50":"text-gray-500 hover:text-gray-700"]),onClick:M[1]||(M[1]=I=>d("topoint"))}," До точки ",2)]),c.value==="general"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[a.value?(e.openBlock(),e.createBlock(Yc,{key:1,points:l.value,"is-shape-closed":i.value,onUpdatePoint:_,onDeletePoint:w},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createBlock(Jc,{key:0}))],64)):(e.openBlock(),e.createElementBlock("div",dd,[a.value?(e.openBlock(),e.createBlock(od,{key:0,points:l.value,"is-shape-closed":i.value},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createElementBlock("p",ud,"Додайте точки на карті, щоб бачити відстані між ними."))])),e.createElementVNode("div",pd,[e.createElementVNode("div",fd,[s.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Ec,{key:0,onClick:F})),u.value?(e.openBlock(),e.createBlock(Vc,{key:1,onClick:E})):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createBlock(vc,{key:0,onSubmit:O,onCancel:N})):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(Bc,{key:1,onClick:x})):e.createCommentVNode("",!0)])])]))}}),qe="ruler-points",wt="ruler-line",_t="ruler-polygon",Ct="ruler-segments",hd=e.defineComponent({__name:"RulerLayer",props:{map:{},points:{},isShapeClosed:{type:Boolean},labelMode:{}},setup(o){function t(m,b){const k=O=>O*Math.PI/180,v=k(b.lat-m.lat),x=k(b.lng-m.lng),_=k(m.lat),w=k(b.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(v/2)**2+Math.cos(_)*Math.cos(w)*Math.sin(x/2)**2)))}function n(m){return Po(m)}const r=o;function l(){return{type:"FeatureCollection",features:[]}}function a(m,b,k){const v=k??"general",x=[];let _=0;x.push(0);for(let w=1;w<m.length;w++)_+=t(m[w-1].coords,m[w].coords),x.push(_);return b&&m.length>=2&&(_+=t(m[m.length-1].coords,m[0].coords)),{type:"FeatureCollection",features:m.map((w,F)=>{const O=v==="general"?F===0?"0":n(x[F]):F===0?"0":n(t(m[F-1].coords,m[F].coords));return{type:"Feature",geometry:{type:"Point",coordinates:[w.coords.lng,w.coords.lat]},properties:{id:w.id,index:F+1,label:O}}})}}function s(m,b){if(m.length<2)return l();const k=[];for(let v=0;v<m.length;v++){const x=v===m.length-1&&b?0:v+1;if(x>=m.length)break;const _=m[v].coords,w=m[x].coords,F=t(_,w);k.push({type:"Feature",geometry:{type:"LineString",coordinates:[[_.lng,_.lat],[w.lng,w.lat]]},properties:{distance:n(F)}})}return{type:"FeatureCollection",features:k}}function i(m,b){if(m.length<2)return l();const k=m.map(v=>[v.coords.lng,v.coords.lat]);return b&&k.push(k[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:k},properties:{}}]}}function c(m){if(m.length<3)return l();const b=m.map(k=>[k.coords.lng,k.coords.lat]);return b.push(b[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[b]},properties:{}}]}}let d=!1;function u(m){m.getSource(qe)||(m.addSource(qe,{type:"geojson",data:l()}),m.addLayer({id:`${qe}-circle`,type:"circle",source:qe,paint:{"circle-radius":5,"circle-color":"#1e293b","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}}),m.addLayer({id:`${qe}-labels`,type:"symbol",source:qe,layout:{"text-field":["get","label"],"text-size":14,"text-offset":[0,1.3]},paint:{"text-color":"#0f172a","text-halo-color":"#ffffff","text-halo-width":1}})),m.getSource(Ct)||(m.addSource(Ct,{type:"geojson",data:l()}),m.addLayer({id:`${Ct}-labels`,type:"symbol",source:Ct,layout:{"text-field":["get","distance"],"text-size":13,"symbol-placement":"line-center","text-rotation-alignment":"map","text-pitch-alignment":"map"},paint:{"text-color":"#1e293b","text-halo-color":"#ffffff","text-halo-width":1.5}})),m.getSource(wt)||(m.addSource(wt,{type:"geojson",data:l()}),m.addLayer({id:`${wt}-layer`,type:"line",source:wt,paint:{"line-color":"#3b82f6","line-width":2}})),m.getSource(_t)||(m.addSource(_t,{type:"geojson",data:l()}),m.addLayer({id:`${_t}-layer`,type:"fill",source:_t,paint:{"fill-color":"#93c5fd","fill-opacity":.25}})),d=!0}function p(m){if(m){try{m.getLayer(`${_t}-layer`)&&m.removeLayer(`${_t}-layer`),m.getSource(_t)&&m.removeSource(_t),m.getLayer(`${wt}-layer`)&&m.removeLayer(`${wt}-layer`),m.getSource(wt)&&m.removeSource(wt),m.getLayer(`${Ct}-labels`)&&m.removeLayer(`${Ct}-labels`),m.getSource(Ct)&&m.removeSource(Ct),m.getLayer(`${qe}-labels`)&&m.removeLayer(`${qe}-labels`),m.getLayer(`${qe}-circle`)&&m.removeLayer(`${qe}-circle`),m.getSource(qe)&&m.removeSource(qe)}catch{}d=!1}}function g(m){if(!m)return;const b=m.getSource(qe),k=m.getSource(wt),v=m.getSource(_t),x=m.getSource(Ct),_=r.points,w=r.labelMode??"general";b&&b.setData(a(_,r.isShapeClosed,w)),k&&k.setData(i(_,r.isShapeClosed)),v&&v.setData(c(_)),x&&x.setData(w==="topoint"?s(_,r.isShapeClosed):l())}function h(){const m=r.map;m&&(d||u(m),g(m))}return e.watch(()=>[r.points,r.isShapeClosed,r.labelMode],()=>h(),{deep:!0,immediate:!0}),e.watch(()=>r.map,()=>h(),{immediate:!0}),e.onBeforeUnmount(()=>{p(r.map)}),(m,b)=>null}});function gd(o={}){const t=e.ref(!1),n=e.ref([]),r=e.ref(!1),l=e.ref("general"),a=e.ref(null);function s(){t.value?i():(t.value=!0,o.onActivate?.())}function i(){t.value=!1,n.value=[],r.value=!1,a.value?.clearPoints(),o.onDeactivate?.()}function c(h){n.value=h}function d(h){l.value=h}function u(h){r.value=h}function p(h){t.value&&a.value?.addPoint({lat:h.lat,lng:h.lng})}const g=e.computed(()=>n.value.length>0);return{isRulerActive:t,rulerPoints:n,rulerShapeClosed:r,rulerActiveTab:l,rulerPanelRef:a,hasRulerPoints:g,toggleRuler:s,closeRuler:i,onRulerPointsChange:c,onRulerTabChange:d,onRulerShapeClosedChange:u,handleRulerMapClick:p}}const yd={key:0,class:"absolute top-4 left-4 z-[1000] w-[calc(100%-20px)] sm:w-[350px]"},bd={key:1,class:"form-geom__panel flex gap-1 items-start mt-2"},kd={class:"flex items-center gap-1"},xd=["disabled"],wd={key:0,class:"absolute z-[1600] mt-1 min-w-[120px] bg-white border border-gray-300 shadow-lg rounded-lg text-sm overflow-hidden"},_d=["disabled"],Cd=["disabled"],vd={class:"mt-4 flex justify-end gap-2"},Ed=["disabled"],Bd={class:"absolute top-4 right-4 z-[1000]"},Vd={class:"flex flex-col gap-[2px]"},Sd=["disabled"],$d=["disabled"],Nd=["disabled"],Ad=["disabled"],Fd={class:"bg-white/95 border border-gray-200 rounded-md shadow-xl px-3 py-2 max-w-[240px] text-[11px] sm:text-xs text-gray-900"},Md={class:"space-y-0.5"},Dd={class:"text-gray-500"},Td={class:"text-gray-900 text-right break-all"},Ld={class:"absolute left-4 bottom-[36px] z-[1000]"},Id={class:"flex flex-col gap-2"},Rd={key:0,class:"bg-white/95 border border-gray-200 rounded-md shadow-sm px-3 py-2 text-xs text-gray-700 min-w-[200px]"},Od={class:"flex flex-col gap-1"},zd=["checked","disabled","onChange"],Pd={class:"text-gray-700 text-xs font-medium"},jd={class:"absolute bottom-0 left-0 right-0 z-[1000] min-h-[28px] bg-white/95 border-t border-gray-200 text-xs text-gray-700 flex items-center gap-4 pt-1"},Ud={key:0,class:"form-geom__feature flex items-center text-xs transition-all gap-2 w-full px-2 pb-1"},Hd={class:"mr-auto flex items-center gap-2 min-w-0 relative"},qd={class:"shrink-0"},Kd={key:0,class:"font-bold"},Wd=["onClick","disabled"],Gd={key:0},Yd={class:"flex items-center"},Xd={class:"text-xs mr-2"},Zd={key:0},Jd={key:1},Qd={key:0,class:"text-xs mr-2"},eu={key:1,class:"text-xs mr-2"},tu=["disabled"],nu=["disabled"],mn="__vs_form_maplibre_loader__",hn="vs-global-bounds-src",gn="vs-global-bounds-line",jo=be(e.defineComponent({__name:"vs-input-map",props:{tools:{},multi:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},handleZoom:{type:Boolean,default:!0},ctrlZoom:{type:Boolean,default:!0},geomType:{default:()=>[]},prefix:{default:""},katottg:{default:""},layers:{default:()=>[]},bounds:{},api:{},center:{default:void 0},zoom:{default:void 0},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update:modelValue","valueSelected"],setup(o,{emit:t}){const n=o,r=t,l=e.useAttrs(),a=e.computed(()=>{const f=l?.multiple,y=l?.multi,C=S=>S===""||S===!0||S==="true"||S===1||S==="1";return!!n.multi||!!n.multiple||C(y)||C(f)}),s=e.computed(()=>!!n.disabled),i=e.ref(!1),c=e.ref(null),d=e.ref(0),u=e.ref(""),p=e.ref(null),g=e.ref([]),h=e.ref(null),m=e.ref(null),b=gd({onActivate(){if(ae)try{ae.changeMode("simple_select",{featureIds:[]})}catch{}u.value=""},onDeactivate(){}});function k(){b.toggleRuler()}const v=e.getCurrentInstance(),x=v?.appContext?.config?.globalProperties?.$settings??{},_=x?.map??{},w=v?.vnode?.props??{};function F(f){return Object.prototype.hasOwnProperty.call(w,f)||Object.prototype.hasOwnProperty.call(w,f.replace(/[A-Z]/g,y=>`-${y.toLowerCase()}`))}const O=Array.isArray(_.center)&&_.center.length===2?_.center:Array.isArray(x.center)&&x.center.length===2?x.center:[30,50],N=typeof _.zoom=="number"?_.zoom:typeof x.zoom=="number"?x.zoom:typeof x.defaultZoom=="number"?x.defaultZoom:10,E=e.computed(()=>F("center")?n.center:_.center??n.center),V=e.computed(()=>F("zoom")?n.zoom:_.zoom??n.zoom),B=e.computed(()=>F("katottg")?String(n.katottg??""):String(_.katottg??n.katottg??"")),M=e.computed(()=>F("layers")?n.layers??[]:_.layers??n.layers??[]),I=e.computed(()=>F("bounds")?n.bounds:_.bounds??n.bounds),j=e.ref(Array.isArray(E.value)&&E.value.length===2?[...E.value]:O),$=e.ref(typeof V.value=="number"?V.value:N),L=e.ref(n.modelValue),D=e.ref(null),G=e.ref(null),K=e.ref([]),Z=e.ref(!1),le=e.ref(!1),Ce=e.ref([]),ke=e.ref({coordinates:"",format:"decimal",order:"lat-lon"}),ee={coordinates:{type:"Textarea",label:"Координати вершин полігону (3-100 точок)",placeholder:`50.4501, 30.5234
|
|
3
3
|
50.4510, 30.5242
|
|
4
4
|
50.4494, 30.5260`},format:{type:"Radio",label:"Формат координат",options:[{id:"decimal",text:"Десяткові (Decimal)"},{id:"dms",text:"Градуси-хвилини-секунди (DMS)"}]},order:{type:"Radio",label:"Порядок координат",options:[{id:"lat-lon",text:"lat, lon"},{id:"lon-lat",text:"lon, lat"}]}};let ie=!1,_e=!1;const me=e.reactive({}),we=e.ref([]),Ve=e.computed(()=>we.value.map(f=>me[f]).filter(Boolean)),Ne=e.ref(null),Ue=e.computed(()=>Ne.value?.entries??[]),it=e.computed(()=>{if(Ne.value)return{left:`${Ne.value.point.x+12}px`,top:`${Ne.value.point.y+12}px`}}),nt=e.computed(()=>{if(Array.isArray(n.tools)&&n.tools.length)return n.tools;const f=l?.tools;return Array.isArray(f)?f.map(y=>String(y)):typeof f=="string"?f.split(",").map(y=>y.trim()).filter(Boolean):[]}),ve=e.computed(()=>{const f={search:!1,import:!1,export:!1,point:!1,line:!1,polygon:!1,rectangle:!1,ruler:!1};if(!nt.value.length)return{...f,import:!0,export:!0,point:!0,line:!0,polygon:!0,rectangle:!0};const y=new Set(nt.value.map(C=>C.toLowerCase()));return{search:y.has("search"),import:y.has("import"),export:y.has("export"),point:y.has("point"),line:y.has("line"),polygon:y.has("polygon"),rectangle:y.has("rectangle"),ruler:y.has("ruler")}});function W(f){if(typeof f!="string"||!f.trim())return"";if(/^https?:\/\//i.test(f))return f;const y=window?.location?.origin??"",C=f.replace(/^\/+/,"");return C?y?`${y}/${C}`:`/${C}`:y}function te(){const f=Array.isArray(_.basemaps)&&_.basemaps.length?_.basemaps:x.basemaps;if(Array.isArray(f)&&f.length){const C=f.map((S,A)=>{const q=String(S?.key??S?.id??S?.name??`b${A}`),re=W(String(S?.url??""));if(!re)return null;const de=typeof S?.preview=="string"&&S.preview?W(S.preview):"";return[q,{...S,url:re,preview:de}]}).filter(S=>Array.isArray(S)&&S.length===2).reduce((S,[A,q])=>(S[A]=q,S),{});if(Object.keys(C).length)return C}return{voyager:{name:"Оглядова карта",url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"},orto10:{name:"Ортофото 1:10K",url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"},osmb:{name:"Open Street Maps",url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",preview:"https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"}}}const ne=te(),fe=Object.keys(ne),he=e.ref(fe.length?fe[0]:"");async function Se(){if(typeof window>"u")return null;const f=window;if(f[mn])return f[mn];const y=q=>{if(Array.from(document.styleSheets).some(De=>De?.href?.includes(q)))return;const de=document.createElement("link");de.rel="stylesheet",de.href=q,document.head.appendChild(de)},C=async()=>{const q=new Function("u","return import(u)"),re=await q("https://esm.sh/maplibre-gl@3.6.2"),de=re?.default??re;if(!de)throw new Error("maplibre esm fallback failed");window.maplibregl=de,window.mapboxgl=de;const De=await q("https://esm.sh/@mapbox/mapbox-gl-draw@1.5.0"),Qe=De?.default??De;if(!Qe)throw new Error("mapbox draw esm fallback failed");window.MapboxDraw=Qe},A=(async()=>{y("https://unpkg.com/maplibre-gl@3.6.2/dist/maplibre-gl.css"),y("https://unpkg.com/@mapbox/mapbox-gl-draw@1.5.0/dist/mapbox-gl-draw.css"),(!window.maplibregl||!window.MapboxDraw)&&await C();const q=window.maplibregl,re=window.MapboxDraw;if(!q)throw new Error("maplibregl not available after load");if(!re)throw new Error("MapboxDraw not available after load");return{maplibregl:q,MapboxDraw:re}})().catch(q=>{throw delete f[mn],q});return f[mn]=A,A}function Be(f){return{version:8,sources:{rasterSource:{type:"raster",tiles:[f],tileSize:256}},layers:[{id:"rasterLayer",type:"raster",source:"rasterSource"}]}}let Ae=null,Xe=null,X=null,ae=null,z=[],H=null,U=null,oe=null,T=!1,Y=!1,J=!1,se=null;function $e(){return{onSetup(){const f=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]}});return this.addFeature(f),this.clearSelectedFeatures(),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:!0}),{rectangle:f,startPoint:null,hasCoordinates:!1}},onMouseMove(f,y){if(!f.startPoint)return;const[C,S]=f.startPoint,A=y.lngLat.lng,q=y.lngLat.lat;f.rectangle.setCoordinates([[[C,S],[A,S],[A,q],[C,q],[C,S]]])},onClick(f,y){if(!f.startPoint){f.startPoint=[y.lngLat.lng,y.lngLat.lat],f.hasCoordinates=!0,f.rectangle.setCoordinates([[[y.lngLat.lng,y.lngLat.lat],[y.lngLat.lng,y.lngLat.lat],[y.lngLat.lng,y.lngLat.lat],[y.lngLat.lng,y.lngLat.lat],[y.lngLat.lng,y.lngLat.lat]]]);return}const[C,S]=f.startPoint,A=y.lngLat.lng,q=y.lngLat.lat;return Math.abs(C-A)>0&&Math.abs(S-q)>0?(f.rectangle.setCoordinates([[[C,S],[A,S],[A,q],[C,q],[C,S]]]),this.map.fire("draw.create",{features:[f.rectangle.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[f.rectangle.id]})):(this.deleteFeature([f.rectangle.id],{silent:!0}),f.hasCoordinates=!1,this.changeMode("simple_select"))},onStop(){},onTrash(f){this.deleteFeature([f.rectangle.id],{silent:!0}),this.changeMode("simple_select")},toDisplayFeatures(f,y,C){const S=y.properties.id===f.rectangle.id;S&&!f.hasCoordinates||(y.properties.active=S?"true":"false",C(y))}}}const ht=[{id:"gl-draw-polygon-fill-inactive",type:"fill",filter:["all",["==","$type","Polygon"],["!=","active","true"]],paint:{"fill-color":"#3b82f6","fill-outline-color":"#3b82f6","fill-opacity":.1}},{id:"gl-draw-polygon-fill-active",type:"fill",filter:["all",["==","$type","Polygon"],["==","active","true"]],paint:{"fill-color":"#2563eb","fill-outline-color":"#2563eb","fill-opacity":.2}},{id:"gl-draw-polygon-stroke-inactive",type:"line",filter:["all",["==","$type","Polygon"],["!=","active","true"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#3b82f6","line-width":2}},{id:"gl-draw-polygon-stroke-active",type:"line",filter:["all",["==","$type","Polygon"],["==","active","true"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#2563eb","line-width":2}},{id:"gl-draw-lines-inactive",type:"line",filter:["all",["==","$type","LineString"],["!=","active","true"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#3b82f6","line-width":2}},{id:"gl-draw-lines-active",type:"line",filter:["all",["==","$type","LineString"],["==","active","true"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#2563eb","line-width":2}},{id:"gl-draw-point-inactive",type:"circle",filter:["all",["==","$type","Point"],["!=","meta","midpoint"],["!=","active","true"]],paint:{"circle-radius":5,"circle-color":"#3b82f6"}},{id:"gl-draw-point-active",type:"circle",filter:["all",["==","$type","Point"],["!=","meta","midpoint"],["==","active","true"]],paint:{"circle-radius":6,"circle-color":"#2563eb"}},{id:"gl-draw-polygon-and-line-vertex-halo-active",type:"circle",filter:["all",["==","meta","vertex"],["==","$type","Point"]],paint:{"circle-radius":7,"circle-color":"#fff"}},{id:"gl-draw-polygon-and-line-vertex-active",type:"circle",filter:["all",["==","meta","vertex"],["==","$type","Point"]],paint:{"circle-radius":5,"circle-color":"#2563eb"}},{id:"gl-draw-polygon-midpoint",type:"circle",filter:["all",["==","meta","midpoint"],["==","$type","Point"]],paint:{"circle-radius":4,"circle-color":"#1d4ed8"}}];function He(){const f=he.value;return!f||!ne[f]?.url?"":ne[f].url}function Pe(f,y){return f?.id?String(f.id):f?.url?`${f.url}-${y}`:`layer-${y}`}function gt(f){const y=String(f?.url??"").trim();if(!y)return"";if(/^https?:\/\//i.test(y))return y;const C=window.location?.origin??"",S=y.replace(/^\/+/,"");return`${C}/${S}`}function Ze(f){f&&Ne.value?.layerId!==f||(Ne.value=null)}function yt(f,y={}){return f.popup===!1?[]:Array.isArray(f.popup)?f.popup.length?f.popup.map(C=>{const S=C?.field||C?.name;if(!S)return null;const A=y[S];return A==null||A===""?null:{key:C.label||S,value:String(A)}}).filter(Boolean):[]:Object.entries(y).slice(0,5).map(([C,S])=>({key:C,value:S==null?"—":String(S)}))}function ot(f){if(!Array.isArray(f))return[];const y=S=>Array.isArray(S)&&S.length>=2&&Number.isFinite(Number(S[0]))&&Number.isFinite(Number(S[1])),C=S=>{if(!S.length)return S;const A=S[0],q=S[S.length-1];return!q||A[0]!==q[0]||A[1]!==q[1]?[...S,A]:S};if(f.length&&y(f[0])){const S=f.map(A=>[Number(A[0]),Number(A[1])]).filter(y);return S.length?[C(S)]:[]}return f.length&&Array.isArray(f[0])&&y(f[0][0])?f.map(A=>Array.isArray(A)?A.map(q=>[Number(q[0]),Number(q[1])]):[]).filter(A=>A.length).map(C):f.length&&Array.isArray(f[0])&&Array.isArray(f[0][0])&&y(f[0][0][0])?f.flatMap(A=>Array.isArray(A)?A:[]).map(A=>Array.isArray(A)?A.map(q=>[Number(q[0]),Number(q[1])]):[]).filter(A=>A.length).map(C):[]}function Lt(f){const y=f.style??{},C=y.color??"#3b82f6";if(!y.colorAttr||!y.colorSet)return C;const S=Object.keys(y.colorSet);if(!S.length)return C;const A=["match",["to-string",["get",y.colorAttr]]];return S.forEach(q=>{A.push(String(q),y.colorSet?.[q]??C)}),A.push(C),A}function $t(f){if(!X)return;f.handlers.forEach(C=>{try{X.off(C.type,C.layerId,C.handler)}catch{}}),f.handlers=[],[...f.layerIds,...f.boundsIds].forEach(C=>{X.getLayer(C)&&X.removeLayer(C)}),X.getSource(f.sourceId)&&X.removeSource(f.sourceId);const y=`vs-ov-bounds-src-${f.id}`;X.getSource(y)&&X.removeSource(y),Ze(f.id)}function fo(f,y){if(!X)return[];const C=`vs-ov-bounds-src-${y}`,S=`vs-ov-bounds-line-${y}`,A=f.bounds??I.value??K.value,q=ot(A);if(!q.length)return[];const re={type:"FeatureCollection",features:q.map(de=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:de}}))};return X.getSource(C)&&X.removeSource(C),X.addSource(C,{type:"geojson",data:re}),X.addLayer({id:S,type:"line",source:C,paint:{"line-color":f.style?.stroke??f.style?.color??"#2563eb","line-width":f.style?.width??2,"line-opacity":f.style?.opacity??.8,"line-dasharray":[2,2]}}),[S]}function Nt(f){if(!X)return;$t(f);const y=f.config,C=gt(y);if(!C)return;const S=[],A=[];if(/\.v(?:m)?t(?:\?|$)/i.test(C)||/\.pbf(?:\?|$)/i.test(C)){const de=y.sourceLayer||y.layer||y.service_layer||y.dataset?.layer||y.id;X.addSource(f.sourceId,{type:"vector",tiles:[C]});const De=String(y.style?.type??"polygon").toLowerCase(),Qe=Lt(y),dt=y.style?.opacity??.5;if(De==="point"){const xt=`vs-ov-point-${f.id}`;X.addLayer({id:xt,type:"circle",source:f.sourceId,"source-layer":de,paint:{"circle-color":Qe,"circle-radius":5,"circle-opacity":dt}}),S.push(xt)}else if(De==="polyline"||De==="line"){const xt=`vs-ov-line-${f.id}`;X.addLayer({id:xt,type:"line",source:f.sourceId,"source-layer":de,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":Qe,"line-width":y.style?.width??2,"line-opacity":dt}}),S.push(xt)}else{const xt=`vs-ov-fill-${f.id}`,an=`vs-ov-border-${f.id}`;X.addLayer({id:xt,type:"fill",source:f.sourceId,"source-layer":de,paint:{"fill-color":Qe,"fill-opacity":dt}}),X.addLayer({id:an,type:"line",source:f.sourceId,"source-layer":de,paint:{"line-color":y.style?.stroke??y.style?.color??"#2563eb","line-width":y.style?.width??1,"line-opacity":dt}}),S.push(xt,an)}}else{X.addSource(f.sourceId,{type:"raster",tiles:[C],tileSize:256});const de=`vs-ov-raster-${f.id}`;X.addLayer({id:de,type:"raster",source:f.sourceId,paint:{"raster-opacity":y.style?.opacity??1}}),S.push(de)}S.forEach(de=>{const De=dt=>{if(!dt?.features?.length){Ze(f.id);return}const xt=dt.features[0]?.properties??{},an=yt(f.config,xt);if(!an.length){Ze(f.id);return}Ne.value={layerId:f.id,entries:an,point:{x:dt.point.x,y:dt.point.y}}},Qe=()=>Ze(f.id);X.on("mousemove",de,De),X.on("mouseleave",de,Qe),A.push({layerId:de,type:"mousemove",handler:De},{layerId:de,type:"mouseleave",handler:Qe})}),f.layerIds=S,f.boundsIds=fo(f.config,f.id),f.handlers=A;const re=f.visible?"visible":"none";[...f.layerIds,...f.boundsIds].forEach(de=>{X.getLayer(de)&&X.setLayoutProperty(de,"visibility",re)})}function It(){if(!X)return;const y={type:"FeatureCollection",features:ot(I.value??K.value).map(C=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:C}}))};X.getSource(hn)?X.getSource(hn).setData(y):X.addSource(hn,{type:"geojson",data:y}),X.getLayer(gn)||X.addLayer({id:gn,type:"line",source:hn,paint:{"line-color":"#2563eb","line-width":2,"line-opacity":.8,"line-dasharray":[2,2]}})}function mo(f){if(!X||s.value)return;const y=me[f];if(!y)return;y.visible=!y.visible;const C=y.visible?"visible":"none";[...y.layerIds,...y.boundsIds].forEach(S=>{X.getLayer(S)&&X.setLayoutProperty(S,"visibility",C)}),bt(),y.visible||Ze(f)}function bt(){if(!X)return;const f=[],y=[],C=[],S=[];we.value.forEach(re=>{const de=me[re];if(!de)return;const De=String(de.config?.url??""),Qe=/\.v(?:m)?t(?:\?|$)/i.test(De),dt=/\.png(?:\?|$)/i.test(De);Qe?C.push(...de.layerIds):dt?f.push(...de.layerIds):y.push(...de.layerIds),S.push(...de.boundsIds)}),[...f,...y,...C,...S].forEach(re=>{X.getLayer(re)&&X.moveLayer(re)}),X.getLayer(gn)&&X.moveLayer(gn),(X.getStyle?.()?.layers??[]).map(re=>String(re?.id??"")).filter(re=>re.startsWith("gl-draw-")).forEach(re=>{X.getLayer(re)&&X.moveLayer(re)})}function ho(f){if(!ne[f]||(he.value=f,!X))return;const y=He();if(!y)return;const C=X.getCenter?.(),S=X.getZoom?.(),A=ae?.getAll?.();X.setStyle(Be(y)),X.once("style.load",()=>{if(X&&(C&&Number.isFinite(S)&&X.jumpTo({center:[C.lng,C.lat],zoom:S}),It(),we.value.forEach(q=>{const re=me[q];re&&Nt(re)}),bt(),A?.features?.length&&ae))try{A.features.forEach(q=>ae.add(q)),d.value=A.features.length}catch{d.value=0}})}function on(f){return{type:"Feature",properties:{},geometry:f}}function Je(f){if(!f)return null;try{return JSON.parse(JSON.stringify(f))}catch{return null}}function R(f){if(!f)return null;const y=Je(f.geometry);return y?{...f.id!==void 0?{id:f.id}:{},type:"Feature",properties:{...f.properties??{}},geometry:y}:null}function Q(f){if(!f)return[];const y=(A,q)=>{if(!A?.type)return[];const re={...q??{}};return A.type==="MultiPoint"&&Array.isArray(A.coordinates)?A.coordinates.map(de=>on({type:"Point",coordinates:de})).map(de=>({...de,properties:re})):A.type==="MultiLineString"&&Array.isArray(A.coordinates)?A.coordinates.map(de=>on({type:"LineString",coordinates:de})).map(de=>({...de,properties:re})):A.type==="MultiPolygon"&&Array.isArray(A.coordinates)?A.coordinates.map(de=>on({type:"Polygon",coordinates:de})).map(de=>({...de,properties:re})):A.type==="GeometryCollection"&&Array.isArray(A.geometries)?A.geometries.flatMap(de=>y(de,re)):[{type:"Feature",properties:re,geometry:Je(A)}]},C=A=>{if(!A)return null;if(A.type==="Feature"){const q=R(A);return q?y(q.geometry,q.properties):null}return A.geom?.type&&Array.isArray(A.geom.coordinates)?y({type:A.geom.type,coordinates:A.geom.coordinates},A.properties??{}):A.type==="GeometryCollection"&&Array.isArray(A.geometries)?y(A,A.properties??{}):typeof A.type=="string"&&Array.isArray(A.coordinates)?y(Je(A),A.properties??{}):null};if(f.type==="FeatureCollection")return(f.features??[]).flatMap(C).filter(Boolean);if(Array.isArray(f))return f.flatMap(A=>A?.type==="FeatureCollection"?Q(A):[C(A)]).flat().filter(Boolean);const S=C(f);return S?Array.isArray(S)?S:[S]:[]}function ce(f){if(!f.length)return null;if(!a.value)return Je(f[0]?.geometry??null);const y=f.map(q=>Je(q?.geometry)).filter(Boolean);return y.every(q=>q?.type==="Point")?{type:"MultiPoint",coordinates:y.map(q=>q.coordinates)}:y.every(q=>q?.type==="LineString")?{type:"MultiLineString",coordinates:y.map(q=>q.coordinates)}:y.every(q=>q?.type==="Polygon")?{type:"MultiPolygon",coordinates:y.map(q=>q.coordinates)}:{type:"GeometryCollection",geometries:y}}function Ee(f){if(!f)return"__null__";try{return JSON.stringify(f)}catch{return"__invalid__"}}function Me(f,y){if(!Array.isArray(f)||!Array.isArray(y)||f.length<2||y.length<2)return!1;const C=1e-12;return Math.abs(Number(f[0])-Number(y[0]))<C&&Math.abs(Number(f[1])-Number(y[1]))<C}function Le(f,y){if(!Array.isArray(f)||f.length<4)return null;const S=Me(f[0],f[f.length-1])?f.slice(0,-1):f.slice();return!Number.isInteger(y)||y<0||y>=S.length||S.length<=3||(S.splice(y,1),S.length<3)?null:[...S,[...S[0]]]}function Fe(f,y){if(!Array.isArray(f)||f.length<2||!Number.isInteger(y)||y<0||y>=f.length||f.length<=2)return null;const C=f.slice();return C.splice(y,1),C.length<2?null:C}function rt(f,y){const C=Je(f);if(!C||!Array.isArray(y))return null;if(C.type==="LineString"){const[S]=y,A=Fe(C.coordinates,S);return A?(C.coordinates=A,C):null}if(C.type==="MultiLineString"){const[S,A]=y,q=C.coordinates?.[S],re=Fe(q,A);return re?(C.coordinates[S]=re,C):null}if(C.type==="Polygon"){const[S,A]=y,q=C.coordinates?.[S],re=Le(q,A);return re?(C.coordinates[S]=re,C):null}if(C.type==="MultiPolygon"){const[S,A,q]=y,re=C.coordinates?.[S]?.[A],de=Le(re,q);return de?(C.coordinates[S][A]=de,C):null}return null}function kt(f){return f?f.split(".").map(y=>Number(y)).filter(y=>Number.isInteger(y)&&y>=0):[]}function lt(f){return!ae||!f?null:typeof ae.get=="function"?ae.get(f)??null:ae.getAll?.()?.features?.find(C=>String(C?.id??"")===f)??null}function ct(f){const y=f?.properties?.id??f?.id;return y==null||y===""?null:String(y)}function at(f){if(!X||!f)return null;const y=[[f.x-8,f.y-8],[f.x+8,f.y+8]],S=X.queryRenderedFeatures(y).find(A=>{const q=String(A?.properties?.meta??"");return q&&q!=="feature"?!1:!!ct(A)});return ct(S)}function rn(f,y){if(!ae||!f||!y.length)return;const C=lt(f);if(!C?.geometry)return;const S=rt(C.geometry,y);if(!S)return;const A={...C,id:C.id??f,geometry:S};_e=!0,ie=!0;try{ae.delete(f),ae.add(A)}finally{ie=!1,_e=!1}At(),vt()}function Gg(f){if(!X||!ae||s.value||b.isRulerActive.value||u.value!=="edit")return;const y=f?.point;if(!y)return;const C=[[y.x-8,y.y-8],[y.x+8,y.y+8]],A=X.queryRenderedFeatures(C).find(re=>re?.properties?.meta==="vertex"&&re?.properties?.parent&&re?.properties?.coord_path);if(!A)return;f?.originalEvent?.preventDefault?.(),f?.originalEvent?.stopPropagation?.();const q=kt(String(A.properties.coord_path));q.length&&rn(String(A.properties.parent),q)}function Yg(f){const y=qr(f);if(!y)return null;const[[C,S],[A,q]]=y;return{lat:(S+q)/2,lng:(C+A)/2}}function jr(f){if(!Array.isArray(f)||f.length<3)return 0;const y=(S,A)=>{const q=S*2003750834e-2/180,re=Math.log(Math.tan((90+A)*Math.PI/360))/(Math.PI/180);return[q,re*2003750834e-2/180]};let C=0;for(let S=0;S<f.length-1;S+=1){const[A,q]=y(Number(f[S][0]),Number(f[S][1])),[re,de]=y(Number(f[S+1][0]),Number(f[S+1][1]));C+=A*de-re*q}return Math.abs(C/2)/1e6}function Xg(f){if(!f?.type||!f?.coordinates)return null;if(f.type==="Polygon"){const y=f.coordinates?.[0];return Array.isArray(y)?jr(y):null}return f.type==="MultiPolygon"?f.coordinates.reduce((y,C)=>{const S=C?.[0];return Array.isArray(S)?y+jr(S):y},0):null}function go(f){if(!f){p.value=null;return}const y=Yg(f);if(!y){p.value=null;return}p.value={type:String(f.type??"Feature"),center:y,areaKm2:Xg(f)}}function yo(f){if(!f){const S=z[z.length-1],A=Je(S?.geometry??null);H=A,go(A);return}const y=z.find(S=>String(S?.id??"")===String(f))??null,C=Je(y?.geometry??null);H=C,go(C)}function bo(f){g.value=(f??[]).map((y,C)=>{const S=String(y?.id??`feature-${C+1}`),A=Ur(String(y?.geometry?.type??"Feature"));return{id:S,label:`${A} ${C+1}`}})}function Ur(f){switch(String(f)){case"Point":return"Точка";case"MultiPoint":return"Мультиточка";case"LineString":return"Лінія";case"MultiLineString":return"Мультилінія";case"Polygon":return"Полігон";case"MultiPolygon":return"Мультиполігон";case"GeometryCollection":return"Колекція геометрій";default:return String(f||"Невідомо")}}function Hr(f,y){if(!Array.isArray(f)||!Array.isArray(y)||f.length!==2||y.length!==2)return!1;const C=1e-9;return Math.abs(Number(f[0])-Number(y[0]))<C&&Math.abs(Number(f[1])-Number(y[1]))<C}function qr(f){if(!f)return null;let y=1/0,C=1/0,S=-1/0,A=-1/0;const q=re=>{if(Array.isArray(re)){if(re.length>=2&&Number.isFinite(re[0])&&Number.isFinite(re[1])){const de=Number(re[0]),De=Number(re[1]);y=Math.min(y,de),C=Math.min(C,De),S=Math.max(S,de),A=Math.max(A,De);return}re.forEach(q)}};return q(f.coordinates),!Number.isFinite(y)||!Number.isFinite(C)?null:[[y,C],[S,A]]}function Kr(f){if(!X||!f)return;const y=qr(f);if(!y)return;const[[C,S],[A,q]]=y;if(C===A&&S===q){X.easeTo({center:[C,S],zoom:Math.max($.value,14)});return}X.fitBounds(y,{padding:30,duration:250,maxZoom:18})}function ko(){if(!ae){d.value=0;return}const f=ae.getAll();d.value=f?.features?.length??0}function ln(){if(!ae)return null;const y=ae.getAll?.()?.features??[],C=q=>!!q&&y.some(re=>String(re?.id??"")===String(q??"")),S=ae.getSelectedIds?.();if(Array.isArray(S)&&S.length>0){const q=S[0];return q!=null?String(q):null}if(C(oe))return String(oe);if(!y.length)return null;const A=a.value?y[y.length-1]:y[0];return A?.id!==void 0&&A?.id!==null?String(A.id):null}function At(){if(!ae)return;const f=ae.getAll();if(d.value=f?.features?.length??0,!f?.features?.length){z=[],g.value=[],H=null,oe=null,p.value=null,ie||(U="__null__",r("update:modelValue",null));return}const y=(f.features??[]).map(R).filter(Boolean);if(z=y,bo(y),oe=ln(),yo(oe),!ie){const C=ce(y);U=Ee(C),r("update:modelValue",C)}}function Fn(){if(!ae)return;(ae.getAll()?.features||[]).forEach(y=>ae.delete(y.id)),g.value=[],ko()}function Mn(f){if(!ae)return;const y=Q(f),C=a.value?y:y.slice(0,1);ie=!0,Fn(),C.forEach(q=>{try{ae.add(q)}catch{}}),ie=!1,z=(ae.getAll?.()?.features??C).map(R).filter(Boolean),bo(z),oe=null;const A=Je(z[z.length-1]?.geometry??null);H=Je(A),ko(),go(A),A&&(Kr(A),s.value||vt())}function Zg(){ae&&(ie=!0,Fn(),z.forEach(f=>{try{ae.add(f)}catch{}}),ie=!1,bo(z),ko(),yo(oe))}function jt(){if(ae){try{ae.changeMode("simple_select",{featureIds:[]})}catch{}u.value=""}}function Dn(f){if(s.value||!ae)return;b.isRulerActive.value&&b.closeRuler(),J=!0,jt(),u.value=f;const y=f==="marker"?"draw_point":f==="polyline"?"draw_line_string":f==="rectangle"?"draw_rectangle":"draw_polygon";a.value||(ie=!0,Fn(),ie=!1);try{ae.changeMode(y)}catch{u.value=""}finally{requestAnimationFrame(()=>{J=!1})}}function vt(f){if(s.value||!ae||!ae.getAll()?.features?.length)return;const C=f||ln();if(C)try{ae.changeMode("direct_select",{featureId:C}),oe=C,yo(oe),u.value="edit"}catch{u.value=""}}function Jg(f){s.value||!ae||!f||vt(f)}function Qg(){if(!(s.value||!ae)){if(a.value){const f=ln();if(f)try{T=!0,ae.delete(f),T=!1,At();const y=ln();y?vt(y):jt();return}catch{T=!1}}jt(),Fn(),z=[],g.value=[],oe=null,U="__null__",p.value=null,r("update:modelValue",null)}}function e0(){s.value||!H||Kr(H)}function t0(f){if(!X||!Ae)return;const y=[f[1],f[0]];se||(se=new Ae.Marker({color:"#2563eb"})),se.setLngLat(y).addTo(X),X.easeTo({center:y,zoom:13,duration:250})}function n0(){s.value||D.value?.click()}function o0(){s.value||(Z.value=!Z.value)}function Wr(f){if(!Z.value)return;const y=G.value;y&&!y.contains(f.target)&&(Z.value=!1)}function r0(){Z.value=!1,n0()}function l0(){s.value||(Ce.value=[],Z.value=!1,le.value=!0)}function a0(){le.value=!1,Ce.value=[]}function s0(){if(s.value||!ae)return;const f=tc(ke.value.coordinates??"",ke.value.format||"decimal",ke.value.order||"lat-lon");if(!f.ok){Ce.value=f.errors,i0(f.errors);return}Ce.value=[],Mn({type:"Polygon",coordinates:[f.ring]}),At(),le.value=!1,f.wasClosedAutomatically&&pe.notify({type:"info",title:"Імпорт координат",message:"Полігон був автоматично замкнений (перша і остання точки різнилися)."})}function i0(f){if(!f.length)return;const y=5;f.slice(0,y).forEach(C=>{const S=C.line>0?`Рядок ${C.line}`:"Загальна помилка";pe.notify({type:"warning",title:"Імпорт координат",message:`${S} — ${C.message}`})}),f.length>y&&pe.notify({type:"warning",title:"Імпорт координат",message:`Ще помилок: ${f.length-y}`})}function c0(f){if(s.value||!ae)return;Z.value=!1;const y=f.target,C=y.files?.[0];if(!C)return;const S=new FileReader;S.onload=()=>{try{const A=JSON.parse(String(S.result));if(!Q(A).length){pe.notify({type:"warning",title:"Імпорт файлу",message:"Файл не містить коректний GeoJSON-обʼєкт."});return}Mn(A),At()}catch{pe.notify({type:"error",title:"Імпорт файлу",message:"Не вдалося прочитати файл. Перевірте формат GeoJSON/JSON."})}finally{y.value=""}},S.onerror=()=>{pe.notify({type:"error",title:"Імпорт файлу",message:"Помилка читання файлу."}),y.value=""},S.readAsText(C)}function d0(){if(s.value||!ae)return;const f=ae.getAll(),y=new Blob([JSON.stringify(f,null,2)],{type:"application/json"}),C=URL.createObjectURL(y),S=document.createElement("a");S.href=C,S.download="data.geojson",S.click(),URL.revokeObjectURL(C)}return e.onMounted(async()=>{if(window.addEventListener("click",Wr,!0),!c.value)return;const f=await Se();Ae=f.maplibregl,Xe=f.MapboxDraw;const y=He();y&&(X=new Ae.Map({container:c.value,style:Be(y),center:[j.value[0],j.value[1]],zoom:$.value,attributionControl:!1}),h.value=X,X.addControl(new Ae.NavigationControl({showCompass:!0}),"bottom-right"),X.on("load",()=>{if(!(!Xe||!X)){if(ae=new Xe({displayControlsDefault:!1,modes:{...Xe.modes,draw_rectangle:$e()},controls:{point:!1,line_string:!1,polygon:!1,trash:!1},styles:ht}),X.addControl(ae),X.on("click",C=>{if(b.isRulerActive.value){const A=C?.lngLat;if(!A)return;m.value?.addPoint?.({lat:A.lat,lng:A.lng});return}if(!ae||s.value||u.value!=="edit")return;const S=at(C?.point);!S||S===oe||requestAnimationFrame(()=>{!ae||s.value||vt(S)})}),X.on("draw.create",()=>{if(ae&&!b.isRulerActive.value){if(!a.value){const C=ae.getAll();if(C.features.length>1){const S=C.features[C.features.length-1];ie=!0,C.features.slice(0,-1).forEach(A=>ae.delete(A.id)),ie=!1,S&&(ie=!0,ae.add(S),ie=!1)}}At(),vt()}}),X.on("draw.update",C=>{if(Y||b.isRulerActive.value)return;const S=Array.isArray(C?.features)?C.features:[],A=C?.action==="move"&&S.length>0&&S.every(q=>q?.geometry?.type==="Point");if(C?.action==="move"){if(A){At();return}if(Y=!0,Zg(),Y=!1,u.value==="edit"){const q=ln(),re=q?lt(q):ae?.getAll?.()?.features?.[0];if(re?.id)try{ae.changeMode("direct_select",{featureId:re.id}),oe=String(re.id)}catch{u.value=""}}return}At()}),X.on("draw.delete",()=>{_e||T||b.isRulerActive.value||u.value==="marker"||u.value==="polyline"||u.value==="polygon"||u.value==="rectangle"||(At(),ae?.getAll?.()?.features?.length||(oe=null),u.value="",jt())}),X.on("draw.selectionchange",C=>{if(!ae||Y||b.isRulerActive.value||u.value==="marker"||u.value==="polyline"||u.value==="polygon"||u.value==="rectangle")return;const S=C?.features?.[0]?.id!==void 0&&C?.features?.[0]?.id!==null?String(C.features[0].id):null;if(!s.value&&S){if(u.value==="edit"&&oe===S)return;requestAnimationFrame(()=>{!ae||s.value||vt(S)});return}const A=ae.getSelectedIds?.(),q=Array.isArray(A)&&A.length>0?String(A[0]):null;if(!s.value&&q){if(u.value==="edit"&&oe===q)return;requestAnimationFrame(()=>{!ae||s.value||vt(q)});return}try{ae.changeMode("simple_select",{featureIds:[]})}catch{}}),L.value!==void 0){const C=L.value;L.value=void 0,requestAnimationFrame(()=>{ae&&Mn(C)})}It(),we.value.forEach(C=>{const S=me[C];S&&Nt(S)}),bt()}}),X.on("contextmenu",Gg),X.on("zoomend",()=>{X&&($.value=X.getZoom())}))}),e.onUnmounted(()=>{b.isRulerActive.value&&b.closeRuler(),window.removeEventListener("click",Wr,!0),Object.values(me).forEach(f=>{X&&$t(f)}),Ze(),se?.remove&&se.remove(),se=null,X?.remove&&X.remove(),X=null,ae=null,h.value=null}),e.watch(()=>n.modelValue,f=>{if(!ae){L.value=f;return}const y=ce((a.value?Q(f):Q(f).slice(0,1))||[]),C=Ee(y);if(U&&C===U){U=null;return}U=null,Mn(f)},{deep:!0}),e.watch(()=>M.value,f=>{const y=Array.isArray(f)?f:[],C=[],S=new Set;y.forEach((A,q)=>{if(!A)return;const re=Pe(A,q);C.push(re),S.add(re);const de={...A,id:re},De=me[re],Qe=De?.visible??!!de.visible;De&&X&&$t(De),me[re]={id:re,config:de,visible:Qe,sourceId:`vs-ov-src-${re}`,layerIds:[],boundsIds:[],handlers:[]}}),Object.keys(me).forEach(A=>{if(S.has(A))return;const q=me[A];q&&X&&$t(q),delete me[A]}),we.value=C,X&&(we.value.forEach(A=>{const q=me[A];q&&Nt(q)}),bt())},{immediate:!0,deep:!0}),e.watch(()=>I.value,()=>{X&&(It(),we.value.forEach(f=>{const y=me[f];y&&Nt(y)}),bt())},{deep:!0}),e.watch(()=>B.value,async f=>{if(K.value=[],!f){X&&(It(),we.value.forEach(y=>{const C=me[y];C&&Nt(C)}),bt());return}try{const y=await fetch(`https://data.gki.com.ua/api-user/atu/${f}`);if(!y?.ok)return;const S=(await y.json())?.geometry?.coordinates;Array.isArray(S)&&S.length&&(K.value=S)}catch(y){console.error("Failed to fetch KATOTTG bounds",y)}finally{if(!X)return;It(),we.value.forEach(y=>{const C=me[y];C&&Nt(C)}),bt()}},{immediate:!0}),e.watch(()=>E.value,f=>{if(!Array.isArray(f)||f.length!==2)return;const y=[Number(f[0]),Number(f[1])];if(Hr(j.value,y)||(j.value=[...y],!X))return;const C=X.getCenter?.();C&&Hr([C.lng,C.lat],j.value)||X.easeTo({center:[j.value[0],j.value[1]]})},{deep:!0}),e.watch(()=>V.value,f=>{typeof f=="number"&&($.value=f,X&&X.setZoom(f))}),e.watch(s,f=>{f&&jt()}),e.watch(d,f=>{if(f>0){s.value||vt();return}J||jt()}),e.watch(i,()=>{setTimeout(()=>{X?.resize&&X.resize()},50)}),(f,y)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:!i.value},[e.createElementVNode("div",{class:e.normalizeClass(["vs-map-wrapper relative w-full h-[400px]",{fullscreen:i.value}])},[e.createElementVNode("div",{ref_key:"mapContainer",ref:c,class:"w-full h-[calc(100%-28px)]"},null,512),ve.value.search||ve.value.import||ve.value.export?(e.openBlock(),e.createElementBlock("div",yd,[ve.value.search?(e.openBlock(),e.createBlock(wc,{key:0,onGoToCoordinates:t0})):e.createCommentVNode("",!0),ve.value.import||ve.value.export?(e.openBlock(),e.createElementBlock("div",bd,[e.createElementVNode("div",kd,[ve.value.import?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"importMenuRef",ref:G,class:"relative"},[e.createElementVNode("button",{type:"button",class:"inline-flex items-center gap-2 text-sm font-medium border rounded-md px-3 py-2 bg-white text-blue-600 border-stone-200 hover:bg-blue-500 hover:text-white transition",onClick:o0,disabled:s.value},[y[8]||(y[8]=e.createTextVNode(" Імпорт ",-1)),e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["h-4 w-4 transition-transform",{"rotate-180":Z.value}])},null,8,["class"])],8,xd),Z.value?(e.openBlock(),e.createElementBlock("div",wd,[ve.value.import?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:r0}," З файлу ")):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:l0}," З координат ")])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),ve.value.export?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"inline-flex items-center gap-2 text-sm font-medium border rounded-md px-3 py-2 bg-white text-blue-600 border-stone-200 hover:bg-blue-500 hover:text-white transition",onClick:d0,disabled:s.value||d.value===0}," Експорт ",8,_d)):e.createCommentVNode("",!0)]),e.createElementVNode("input",{ref_key:"importRef",ref:D,type:"file",onChange:c0,accept:".json,.geojson",class:"hidden",disabled:s.value},null,40,Cd)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createVNode(e.unref(pe.VsModal),{visible:le.value,"onUpdate:visible":y[1]||(y[1]=C=>le.value=C),title:"Імпорт координат полігону",size:"lg",teleport:"#modal"},{default:e.withCtx(()=>[e.createVNode(tt,{schema:ee,values:ke.value,"onUpdate:values":y[0]||(y[0]=C=>ke.value=C)},null,8,["values"]),e.createElementVNode("div",vd,[e.createElementVNode("button",{type:"button",class:"px-3 py-2 rounded-md border border-gray-300 text-gray-700 text-sm hover:bg-gray-100",onClick:a0}," Скасувати "),e.createElementVNode("button",{type:"button",class:"px-3 py-2 rounded-md bg-blue-600 text-white text-sm hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed",onClick:s0,disabled:s.value}," Побудувати ",8,Ed)])]),_:1},8,["visible"]),e.createElementVNode("div",Bd,[e.createElementVNode("div",Vd,[ve.value.point?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["vs-btn",{"vs-active":u.value==="marker"}]),title:"Point",onClick:y[2]||(y[2]=C=>Dn("marker")),disabled:s.value},[e.createVNode(e.unref(P.MapPin),{class:"h-4 w-4"})],10,Sd)):e.createCommentVNode("",!0),ve.value.line?(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["vs-btn",{"vs-active":u.value==="polyline"}]),title:"Line",onClick:y[3]||(y[3]=C=>Dn("polyline")),disabled:s.value},[e.createVNode(zi)],10,$d)):e.createCommentVNode("",!0),ve.value.polygon?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(["vs-btn",{"vs-active":u.value==="polygon"}]),title:"Polygon",onClick:y[4]||(y[4]=C=>Dn("polygon")),disabled:s.value},[e.createVNode(Hi)],10,Nd)):e.createCommentVNode("",!0),ve.value.rectangle?(e.openBlock(),e.createElementBlock("button",{key:3,class:e.normalizeClass(["vs-btn",{"vs-active":u.value==="rectangle"}]),title:"Rectangle",onClick:y[5]||(y[5]=C=>Dn("rectangle")),disabled:s.value},[e.createVNode(Gi)],10,Ad)):e.createCommentVNode("",!0),ve.value.ruler?(e.openBlock(),e.createElementBlock("button",{key:4,class:e.normalizeClass(["vs-btn mt-3",{"vs-active":e.unref(b).isRulerActive.value}]),title:"Ruler",onClick:k},[e.createVNode(e.unref(P.Ruler),{class:"h-4 w-4"})],2)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"vs-btn mt-5",onClick:y[6]||(y[6]=C=>i.value=!i.value),title:"Full Screen"},[e.createVNode(e.unref(P.Maximize),{class:"h-4 w-4"})])])]),ve.value.ruler&&e.unref(b).isRulerActive.value?(e.openBlock(),e.createBlock(md,{key:1,ref_key:"rulerPanelRefEl",ref:m,onClose:y[7]||(y[7]=C=>e.unref(b).closeRuler()),onTabChange:e.unref(b).onRulerTabChange,onPointsChange:e.unref(b).onRulerPointsChange,onShapeClosedChange:e.unref(b).onRulerShapeClosedChange},null,8,["onTabChange","onPointsChange","onShapeClosedChange"])):e.createCommentVNode("",!0),ve.value.ruler&&e.unref(b).isRulerActive.value&&e.unref(b).hasRulerPoints.value?(e.openBlock(),e.createBlock(hd,{key:2,map:h.value,points:e.unref(b).rulerPoints.value,"is-shape-closed":e.unref(b).rulerShapeClosed.value,"label-mode":e.unref(b).rulerActiveTab.value},null,8,["map","points","is-shape-closed","label-mode"])):e.createCommentVNode("",!0),Ue.value.length?(e.openBlock(),e.createElementBlock("div",{key:3,class:"absolute z-[1500] pointer-events-none",style:e.normalizeStyle(it.value)},[e.createElementVNode("div",Fd,[e.createElementVNode("dl",Md,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ue.value,C=>(e.openBlock(),e.createElementBlock("div",{key:`${C.key}-${C.value}`,class:"flex justify-between gap-2"},[e.createElementVNode("dt",Dd,e.toDisplayString(C.key),1),e.createElementVNode("dd",Td,e.toDisplayString(C.value),1)]))),128))])])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",Ld,[e.createElementVNode("div",Id,[e.createVNode(Qi,{basemaps:e.unref(ne),onOnLayerChange:ho},null,8,["basemaps"]),Ve.value.length?(e.openBlock(),e.createElementBlock("div",Rd,[y[9]||(y[9]=e.createElementVNode("p",{class:"font-semibold text-[11px] uppercase tracking-wide text-gray-500 mb-2"},"Шари",-1)),e.createElementVNode("div",Od,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ve.value,C=>(e.openBlock(),e.createElementBlock("label",{key:C.id,class:"flex items-center gap-2 cursor-pointer select-none"},[e.createElementVNode("input",{type:"checkbox",class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500",checked:C.visible,disabled:s.value,onChange:S=>mo(C.id)},null,40,zd),e.createElementVNode("span",Pd,e.toDisplayString(C.config.title||C.config.name||C.id),1)]))),128))])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",jd,[g.value.length||p.value?(e.openBlock(),e.createElementBlock("div",Ud,[e.createElementVNode("div",Hd,[e.createElementVNode("div",qd,[y[10]||(y[10]=e.createTextVNode(" Тип: ",-1)),g.value.length<=1?(e.openBlock(),e.createElementBlock("span",Kd,e.toDisplayString(p.value?Ur(p.value.type):g.value[0]?.label||"—"),1)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(g.value,(C,S)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:C.id},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["font-bold underline-offset-2",C.id===e.unref(oe)?"text-blue-700 underline":"text-gray-700 hover:text-blue-700 hover:underline"]),onClick:A=>Jg(C.id),disabled:s.value},e.toDisplayString(C.label),11,Wd),S<g.value.length-1?(e.openBlock(),e.createElementBlock("span",Gd,", ")):e.createCommentVNode("",!0)],64))),128))])]),e.createElementVNode("div",Yd,[e.createElementVNode("div",Xd,[y[11]||(y[11]=e.createTextVNode(" Центр: ",-1)),p.value?(e.openBlock(),e.createElementBlock("b",Zd,e.toDisplayString(p.value.center.lng.toFixed(5))+", "+e.toDisplayString(p.value.center.lat.toFixed(5)),1)):(e.openBlock(),e.createElementBlock("b",Jd,"—"))]),p.value&&p.value.areaKm2!==null?(e.openBlock(),e.createElementBlock("div",Qd,[y[12]||(y[12]=e.createTextVNode(" Площа: ",-1)),e.createElementVNode("b",null,e.toDisplayString(p.value.areaKm2.toFixed(1))+" km²",1)])):(e.openBlock(),e.createElementBlock("div",eu,y[13]||(y[13]=[e.createTextVNode("Площа: ",-1),e.createElementVNode("b",null,"—",-1)]))),e.createElementVNode("button",{class:"tool bg-gray-100 py-1.5 px-2 rounded-lg text-md mr-1 cursor-pointer hover:bg-blue-500 hover:text-white transition-all",title:"Zoom to feature",onClick:e0,disabled:s.value},[e.createVNode(e.unref(P.ZoomIn),{class:"h-3 w-3"})],8,tu),e.createElementVNode("button",{class:"tool bg-gray-100 py-1.5 px-2 rounded-lg text-md cursor-pointer hover:bg-blue-500 hover:text-white transition-all",title:"Delete feature",onClick:Qg,disabled:s.value},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,nu)])])):e.createCommentVNode("",!0)])],2)],8,["disabled"]))}}),[["__scopeId","data-v-33669cd5"]]),ou=["data-focus"],ru={class:"flex items-center"},lu={class:"overflow-hidden text-ellipsis whitespace-nowrap rounded-sm text-[#333] text-[85%] px-0.5 py-[3px] pl-1.5 box-border"},au=["onClick","aria-label"],su={key:0,class:"absolute text-gray-500 truncate pl-2"},iu={class:"flex-1 min-w-[2px]"},cu=["placeholder"],du={class:"flex items-center shrink-0"},uu=["disabled"],Uo=e.defineComponent({__name:"vs-input-tag",props:e.mergeModels({unique:{type:Boolean,default:!0},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:"Введіть тег"},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:e.mergeModels(["update:modelValue"],["update:modelValue"]),setup(o,{emit:t}){const n=o,r=t;ze(n.style);const l=e.ref(null),a=e.ref(null),s=e.ref(null),i=e.ref(!1),c=e.ref(""),d=e.useModel(o,"modelValue"),u=e.computed(()=>n.placeholder||"Add tag…"),p=e.computed(()=>d.value?.length===0&&c.value===""),g=e.computed(()=>!n.disabled&&d.value?.length>0),h=e.computed(()=>n.disabled),m=async()=>{h.value||await e.nextTick(()=>s.value?.focus())},b=O=>{const N=O.trim();N!==""&&(!d.value||!Array.isArray(d.value)?d.value=[N]:n.unique?d.value.includes(N)||(d.value=[...d.value,N]):d.value=[...d.value,N],c.value="")},k=()=>{const O=c.value;O.trim()!==""&&b(O),c.value=""},v=O=>{const N=d.value.slice();N.splice(O,1),r("update:modelValue",N)},x=()=>{r("update:modelValue",[])},_=()=>{h.value||(i.value=!0)},w=()=>{i.value=!1,!h.value&&k()},F=O=>{const{key:N}=O;N==="Enter"?(O.preventDefault(),k()):N==="Backspace"&&c.value===""&&d.value.length>0&&v(d.value.length-1)};return(O,N)=>(e.openBlock(),e.createElementBlock("div",{class:"flex gap-1 w-full",ref_key:"root",ref:l,onClick:N[1]||(N[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:e.normalizeClass(["relative w-full font-sans",n.customClass]),role:"group","aria-label":"Tag input"},[e.createElementVNode("div",{class:e.normalizeClass(["flex min-h-[38px] items-center justify-between rounded border transition-colors bg-white","border-gray-300 hover:border-gray-400",i.value?"border-blue-500 ring-1 ring-blue-500":"",h.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),"data-focus":i.value?"true":"false",onClick:m},[e.createElementVNode("div",{class:"flex flex-1 flex-wrap items-center gap-1 py-0.5 pl-2 pr-0 overflow-hidden",ref_key:"chipsRef",ref:a},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(E,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"flex min-w-0 bg-[#e6e6e6] rounded-sm m-0.5 box-border"},[e.createElementVNode("div",ru,[e.createElementVNode("div",lu,e.toDisplayString(E),1)]),e.createElementVNode("div",{role:"button",class:"flex items-center rounded-sm px-1 box-border hover:bg-[#ffbdad] hover:text-[#de350b]",onClick:e.withModifiers(B=>v(V),["stop"]),"aria-label":`Remove ${E}`},[e.createVNode(e.unref(P.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,au)]))),128)),p.value?(e.openBlock(),e.createElementBlock("div",su,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",iu,[h.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"inputRef",ref:s,class:"pl-2 w-full bg-transparent outline-none border-0 m-0 p-0 text-gray-900",autocapitalize:"none",autocomplete:"off",autocorrect:"off",spellcheck:"false",type:"text",tabindex:"0","aria-label":"Add tag","onUpdate:modelValue":N[0]||(N[0]=E=>c.value=E),onFocus:_,onBlur:w,onKeydown:F,placeholder:d.value&&d.value.length?"":void 0},null,40,cu)),[[e.vModelText,c.value]])])],512),e.createElementVNode("div",du,[g.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-label":"Clear all tags",disabled:h.value,onClick:e.withModifiers(x,["stop"])},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,uu)):e.createCommentVNode("",!0)])],10,ou)],2)],512))}}),pu={class:"relative flex gap-1 bg-white w-full"},fu=["disabled","placeholder"],Ho=be(e.defineComponent({__name:"vs-input-slug",props:e.mergeModels({disabled:{type:Boolean},placeholder:{},parent:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.inject("values"),n=o,r=e.useModel(o,"modelValue");function l(s){const i={а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"e",ж:"zh",з:"z",и:"i",й:"y",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"ts",ч:"ch",ш:"sh",щ:"shch",ы:"y",э:"e",ю:"yu",я:"ya",ь:"",ъ:"",є:"ye",і:"i",ї:"yi",ґ:"g"};return s.toLowerCase().split("").map(c=>i[c]||c).join("").replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}const a=()=>{const s=t?.value?.[n.parent||""]?.toString(),i=l(s);r.value=i.toString()};return(s,i)=>(e.openBlock(),e.createElementBlock("div",pu,[e.withDirectives(e.createElementVNode("input",{ref:"vsText",disabled:s.disabled,placeholder:s.placeholder,"onUpdate:modelValue":i[0]||(i[0]=c=>r.value=c),class:"block w-full px-3 py-2 text-sm border border-solid rounded-lg placeholder:text-nowrap border-stone-200 text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,8,fu),[[e.vModelText,r.value]]),e.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200",onClick:a}," Gen ")]))}}),[["__scopeId","data-v-b0eba370"]]),mu={class:"relative flex gap-1 bg-white w-full"},hu=["disabled","placeholder"],gu=["disabled"],yu={key:0},bu={key:1},qo=be(e.defineComponent({__name:"vs-input-codegen",props:e.mergeModels({table:{},code:{},init:{type:Boolean},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.ref(!1),l=e.computed(()=>t.init!==!1),a=e.computed(()=>!!t.table&&!!t.code),s=()=>{if(!a.value)return"";const d=encodeURIComponent(String(t.table)),u=encodeURIComponent(String(t.code));return`/api/code-gen/${d}/${u}`},i=async()=>{if(!a.value||r.value)return;const d=s();if(d){r.value=!0;try{const p=await(await fetch(d)).text();n.value=p}finally{r.value=!1}}},c=()=>{l.value&&(n.value||i())};return e.onMounted(()=>{c()}),e.watch(()=>[t.table,t.code,t.init],()=>{c()}),(d,u)=>(e.openBlock(),e.createElementBlock("div",mu,[e.withDirectives(e.createElementVNode("input",{disabled:d.disabled,placeholder:d.placeholder,"onUpdate:modelValue":u[0]||(u[0]=p=>n.value=p),class:"block w-full px-3 py-2 text-sm border border-solid rounded-lg placeholder:text-nowrap border-stone-200 text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,8,hu),[[e.vModelText,n.value]]),e.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed",disabled:r.value||d.disabled||!a.value,onClick:i},[r.value?(e.openBlock(),e.createElementBlock("span",bu,"...")):(e.openBlock(),e.createElementBlock("span",yu,"Gen"))],8,gu)]))}}),[["__scopeId","data-v-6ee5237d"]]),ku={class:"w-full"},xu={ref:"sortableContainer",class:"flex flex-col gap-1"},wu=["onDragstart","onDrop"],_u={class:"cursor-move",type:"button"},Cu={class:"w-1/3"},vu={class:"w-2/3"},Eu=["onClick"],Bu={key:0,class:"text-[14px] text-gray-700"},Vu={class:"mt-2 w-full flex items-center"},Su=["disabled"],Ko=be(e.defineComponent({__name:"vs-input-key-value",props:{parent:{},ignore:{},addButtonText:{},modelValue:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=k=>`${k}-${Math.random().toString(36).substring(2,15)}`,r=e.inject("values"),l=o,a=t,s=l.addButtonText??"Додати",i=l.ignore??[],c=e.ref([]),d=e.ref(null);(()=>{const k=l.parent&&r?.value?.[l.parent]||l.modelValue||{};c.value=Object.entries(k).filter(([v])=>!i.includes(v)).map(([v,x])=>({id:n("key-value-"),key:v,value:x}))})();function p(k){d.value=k}function g(k){if(d.value===null||d.value===k)return;const v=c.value.splice(d.value,1)[0];c.value.splice(k,0,v),d.value=null}const h=e.computed(()=>c.value.some(k=>k.key&&!k.value||!k.key&&k.value)),m=()=>{c.value.push({id:n("key-value-"),key:"",value:""})},b=k=>{c.value=c.value.filter(v=>v.id!==k)};return e.watch(c,k=>{const v={};k.forEach(_=>{_.key&&_.value!==void 0&&(v[_.key]=_.value)});const x={};i.length&&i.forEach(_=>{x[_]=l.parent?r?.value?.[l.parent]?.[_]:void 0}),r?.value&&l.parent&&(r.value[l.parent]={...x,...v}),a("update:modelValue",v)},{deep:!0}),(k,v)=>(e.openBlock(),e.createElementBlock("div",ku,[e.createElementVNode("div",xu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:e.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":d.value===_}]),draggable:"true",onDragstart:w=>p(_),onDragover:v[0]||(v[0]=e.withModifiers(()=>{},["prevent"])),onDrop:w=>g(_)},[e.createElementVNode("button",_u,[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})]),e.createElementVNode("div",Cu,[e.createVNode(Rt,{modelValue:x.key,"onUpdate:modelValue":w=>x.key=w,placeholder:"Ключ"},null,8,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",vu,[e.createVNode(Rt,{modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,placeholder:"Значення"},null,8,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("button",{onClick:w=>b(x.id),class:"shrink-0 w-[30px] text-gray-600 h-[30px] rounded-full flex items-center justify-center bg-gray-100 hover:bg-gray-200"},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,Eu)],42,wu))),128))],512),c.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Bu," Дані для відображення відсутні ")),e.createElementVNode("div",Vu,[e.createElementVNode("button",{type:"button",onClick:m,disabled:h.value,class:"py-1.5 px-2 flex items-center gap-x-1 text-xs font-medium rounded-full border border-dashed border-gray-200 bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(e.unref(s)),1)],8,Su)])]))}}),[["__scopeId","data-v-d8c3f9d6"]]),$u={class:"w-full"},Nu={ref:"sortableContainer",class:"flex flex-col gap-1"},Au=["onDragstart","onDrop"],Fu=["disabled"],Mu={class:"flex-1"},Du=["onClick","disabled"],Tu={key:0,class:"text-[14px] text-gray-700"},Lu={class:"mt-2 w-full flex items-center"},Iu=["disabled"],Wo=be(e.defineComponent({__name:"vs-input-text-array",props:e.mergeModels({addButtonText:{default:"Додати"},inputType:{default:"text"},placeholder:{default:"Значення"},mask:{default:""},disabled:{type:Boolean,default:!1}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.ref([]),l=e.ref(null),a=e.computed(()=>!!t.disabled),s=e.computed(()=>t.placeholder??""),i=e.computed(()=>t.addButtonText??"Додати");let c=!1;const d=k=>`${k}-${Math.random().toString(36).substring(2,15)}`,u=k=>{const v=k??n.value??[];r.value=v.map((x,_)=>({id:r.value[_]?.id??d("text-array"),value:x??""}))};u(),e.watch(()=>n.value,k=>{if(c){c=!1;return}u(k||[])},{deep:!0}),e.watch(r,k=>{c=!0,n.value=k.map(v=>v.value).filter(v=>v!=null&&v!=="")},{deep:!0});const p=e.computed(()=>a.value||r.value.some(k=>!k.value));function g(){p.value||(r.value=[...r.value,{id:d("text-array"),value:""}])}function h(k){a.value||(r.value=r.value.filter(v=>v.id!==k))}function m(k){a.value||(l.value=k)}function b(k){if(a.value||l.value===null||l.value===k)return;const v=[...r.value],[x]=v.splice(l.value,1);v.splice(k,0,x),r.value=v,l.value=null}return(k,v)=>(e.openBlock(),e.createElementBlock("div",$u,[e.createElementVNode("div",Nu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:x.id,class:e.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":l.value===_}]),draggable:"true",onDragstart:w=>m(_),onDragover:v[0]||(v[0]=e.withModifiers(()=>{},["prevent"])),onDrop:w=>b(_)},[e.createElementVNode("button",{class:"cursor-move",type:"button",disabled:a.value},[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})],8,Fu),e.createElementVNode("div",Mu,[k.inputType==="text"?(e.openBlock(),e.createBlock(Rt,{key:0,modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),k.inputType==="tel"?(e.openBlock(),e.createBlock(zn,{key:1,modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),k.inputType==="email"?(e.openBlock(),e.createBlock(On,{key:2,modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),k.inputType==="mask"?(e.openBlock(),e.createBlock(sn,{key:3,modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,mask:k.mask,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","mask","disabled","placeholder"])):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",onClick:w=>h(x.id),disabled:a.value,class:"shrink-0 w-[30px] text-gray-600 h-[30px] rounded-full flex items-center justify-center bg-gray-100 hover:bg-gray-200 disabled:opacity-50"},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,Du)],42,Au))),128))],512),r.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Tu," Дані для відображення відсутні ")),e.createElementVNode("div",Lu,[e.createElementVNode("button",{type:"button",onClick:g,disabled:p.value,class:"py-1.5 px-2 flex items-center gap-x-1 text-xs font-medium rounded-full border border-dashed border-gray-200 bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(i.value),1)],8,Iu)])]))}}),[["__scopeId","data-v-2c229b1f"]]),Ru={class:"flex items-center gap-2 w-full"},Ou=["disabled"],zu=["disabled"],Go=e.defineComponent({__name:"vs-input-color",props:{style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,{inputClass:r}=ze(n.style),l=t,a=e.computed({get:()=>n.modelValue||"#000000",set:i=>l("update:modelValue",i)}),s=e.computed(()=>!!n.disabled);return(i,c)=>(e.openBlock(),e.createElementBlock("div",Ru,[e.withDirectives(e.createElementVNode("input",{type:"color","onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),disabled:s.value,ref:"color",class:e.normalizeClass(["py-1.5 px-1 block w-full bg-white cursor-pointer max-w-[50px]",[i.modelValue?"":"text-opacity-50",e.unref(r)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,Ou),[[e.vModelText,a.value]]),e.withDirectives(e.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2","onUpdate:modelValue":c[1]||(c[1]=d=>a.value=d),disabled:s.value},null,8,zu),[[e.vModelText,a.value]])]))}}),Pu={class:"flex items-center gap-2 w-full"},ju=["min","max","step","disabled"],Uu=["value","min","max","step","disabled"],Yo=e.defineComponent({__name:"vs-input-range",props:{style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{},min:{default:0},max:{default:100},step:{default:1}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,{inputClass:r}=ze(n.style),l=t,a=u=>{const p=Number(u),g=Number(n.min),h=Number(n.max);return Number.isNaN(p)?g:Math.min(h,Math.max(g,p))},s=e.computed({get:()=>a(n.modelValue??n.min),set:u=>l("update:modelValue",a(u))}),i=u=>{const p=u.target,g=a(p.value);p.value=String(g),l("update:modelValue",g)},c=u=>{Number(n.min)>=0&&u.key==="-"&&u.preventDefault()},d=e.computed(()=>!!n.disabled);return(u,p)=>(e.openBlock(),e.createElementBlock("div",Pu,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g),min:u.min,max:u.max,step:u.step,disabled:d.value,ref:"range",class:e.normalizeClass(["w-full cursor-pointer accent-blue-500",[u.modelValue?"":"text-opacity-50",e.unref(r)].join(" ")])},null,10,ju),[[e.vModelText,s.value]]),e.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2 max-w-[100px]",type:"number",value:s.value,min:u.min,max:u.max,step:u.step,onInput:i,onKeydown:c,disabled:d.value},null,40,Uu)]))}}),Hu=["placeholder","disabled","name"],qu=["type","value","onInput","placeholder","disabled"],Ku=["onClick"],Xo=e.defineComponent({__name:"vs-input-array",props:e.mergeModels({count:{default:1},limit:{default:1},mask:{default:""},unmask:{type:Boolean,default:!1},inputType:{default:"text"},isAdded:{type:Boolean,default:!1},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.ref(t.count),r=e.computed(()=>t.limit),{inputClass:l}=ze(t.style),a=e.useModel(o,"modelValue"),s=e.computed(()=>!!t.disabled),i=e.computed(()=>t.placeholder??"");e.watchEffect(()=>{const b=a.value?.length??0;b<n.value&&(a.value=[...a.value??[],...Array(n.value-b)])});const c=e.ref({}),d=e.ref({});function u(b,k){b&&(c.value[k]=b)}async function p(b,k){if(!b||t.inputType!=="mask")return;const{default:v}=await Promise.resolve().then(()=>lo);d.value[k]&&d.value[k].destroy(),d.value[k]=v(b,{mask:t.mask||"",definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},lazy:!1}),d.value[k].on("accept",()=>{const x=[...a.value||[]];x[k]=t.unmask?d.value[k].unmaskedValue:d.value[k].value,a.value=x}),d.value[k].on("complete",()=>{const x=[...a.value||[]];x[k]=t.unmask?d.value[k].unmaskedValue:d.value[k].value,a.value=x}),a.value?.[k]&&(d.value[k].value=a.value[k])}function g(b,k){if(s.value)return;const v=b.target.value??null,x=[...a.value];x[k]=t.inputType==="text"?v:Number(v),a.value=x}function h(){n.value+=1;const b=t.inputType==="text"||t.inputType==="mask"?null:0;a.value=[...a.value,b],t.inputType==="mask"&&setTimeout(()=>{const k=n.value-1;c.value[k]&&p(c.value[k],k)},0)}function m(b){if(n.value>1){d.value[b]&&(d.value[b].destroy(),delete d.value[b]),n.value-=1,a.value=a.value.filter((v,x)=>x!==b);const k={};Object.keys(d.value).forEach(v=>{const x=parseInt(v,10);x>b?k[x-1]=d.value[x]:x<b&&(k[x]=d.value[x])}),d.value=k}}return e.onMounted(()=>{if(t.inputType==="mask")for(let b=0;b<n.value;b+=1)c.value[b]&&p(c.value[b],b)}),e.onBeforeUnmount(()=>{Object.values(d.value).forEach(b=>{b&&b.destroy()})}),e.watch(()=>t.mask,b=>{t.inputType==="mask"&&Object.values(d.value).forEach(k=>{k&&k.updateOptions({mask:b,definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}})})}),e.watch(a,b=>{t.inputType==="mask"&&b&&b.forEach((k,v)=>{d.value[v]&&d.value[v].value!==k&&(d.value[v].value=k||"")})},{deep:!0}),(b,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["grid gap-2",`grid-cols-${r.value}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,v=>(e.openBlock(),e.createElementBlock("div",{key:v,class:"flex items-center gap-2 w-full"},[b.inputType==="mask"?(e.openBlock(),e.createElementBlock("input",{key:0,type:"text",ref_for:!0,ref:x=>u(x,v-1),placeholder:b.placeholder,disabled:b.disabled,name:`${b.name}[${v-1}]`,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(l),{"!border-red-600":b.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,Hu)):(e.openBlock(),e.createElementBlock("input",{key:1,type:b.inputType,value:a.value?.[v-1],onInput:x=>g(x,v-1),placeholder:i.value,disabled:s.value,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(l),{"!border-red-600":b.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,qu)),!b.disabled&&v===n.value&&b.isAdded?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",onClick:e.withModifiers(h,["stop"]),class:"cursor-pointer shrink-0 w-[38px] text-green-600 h-[38px] rounded-md flex items-center justify-center border border-stone-200 hover:bg-stone-100"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"})])):e.createCommentVNode("",!0),!b.disabled&&n.value>1&&b.isAdded?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",onClick:e.withModifiers(x=>m(v-1),["stop"]),class:"cursor-pointer shrink-0 w-[38px] text-red-600 h-[38px] rounded-md flex items-center justify-center border border-stone-200 hover:bg-stone-100"},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,Ku)):e.createCommentVNode("",!0)]))),128))],2))}}),Wu={class:"flex gap-1 w-full"},Gu=["aria-expanded","data-focus"],Yu=["placeholder","disabled","readonly"],Xu={class:"max-h-full"},Zu=["onClick","disabled"],Ju={key:0,class:"px-3 py-2 text-sm text-stone-500"},Qu=["disabled"],ep={class:"flex flex-col gap-1"},tp=["onDragstart","onDrop"],np=["disabled"],op=["title"],rp=["disabled","onClick","aria-label"],lp={key:0,class:"text-xs text-stone-500"},yn=be(e.defineComponent({__name:"vs-input-array-select",props:e.mergeModels({options:{default:()=>[]},data:{default:""},api:{default:""},prefix:{default:"api"},host:{default:""},parent:{},search:{type:Boolean,default:!0},maxHeight:{default:280},start:{default:0},slot:{},disabled:{type:Boolean,default:!1},add:{},style:{},customClass:{},modelValue:{},error:{},name:{},placeholder:{default:"Оберіть значення"},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:e.mergeModels(["change","update:modelValue","value-selected"],["update:modelValue"]),setup(o,{emit:t}){const n=o,r=t,l=e.useModel(o,"modelValue"),a=e.ref([]),s=e.ref(n.options??[]),i=e.ref({}),c=e.ref({}),d=e.ref({keyword:"",parent:null}),u=e.ref(""),p=e.ref(!1),g=e.ref(null),h=e.ref(null),m=e.ref(null),b=e.ref(null),k=e.ref(null),v=e.ref({});let x=!1,_=!1;const w=e.inject("values"),F=e.computed(()=>!!n.disabled),O=e.computed(()=>n.placeholder??"Оберіть значення"),N=e.computed(()=>n.search!==!1),E=e.computed(()=>{const T=n.parent??n.parentValue;return T?String(T):""}),V=e.computed(()=>E.value?w?.value?.[E.value]??null:null),B=T=>T==null?"__null__":String(T),M=T=>{if(!T)return"";const Y=T.label??T.text??T.name??T.ua??T.en;return Y?String(Y):T.id!==void 0&&T.id!==null?String(T.id):""},I=T=>{const Y=B(T);return c.value[Y]||(c.value[Y]=`array-select-${Y}-${Math.random().toString(36).slice(2,8)}`),c.value[Y]},j=e.computed(()=>new Set(a.value.map(T=>B(T.id)))),$=e.computed(()=>{const T=j.value;let Y=[...s.value];if(!n.data&&u.value.trim()){const J=u.value.toLowerCase();Y=Y.filter(se=>M(se).toLowerCase().includes(J))}return Y.filter(J=>!T.has(B(J.id)))}),L=()=>{if(!n.data)return"";const T=n.prefix??"api",Y=n.api??`/${T}/suggest/${n.data}`;return`${n.host??""}${Y}`},D=()=>{a.value.length&&(x=!0,a.value=a.value.map(T=>({...T,text:i.value[B(T.id)]??T.text})))},G=T=>{const Y=B(T.id),J=M(T);J&&(i.value[Y]=J)},K=T=>{s.value=T?[...T]:[],T?.forEach(G),D()},Z=T=>{if(!T.length)return;const Y=new Map(s.value.map(J=>[B(J.id),J]));T.forEach(J=>{const se=B(J.id);Y.set(se,J),G(J)}),s.value=Array.from(Y.values()),D()},le=async(T="")=>{if(!n.data)return[];const Y=L();if(!Y)return[];const J=new URLSearchParams;J.set("json","1"),T&&J.set("key",T),n.start===1&&J.set("start","1"),V.value!==null&&V.value!==void 0&&V.value!==""&&J.set("parent",String(V.value));try{return(await(await fetch(`${Y}?${J.toString()}`)).json())?.data??[]}catch{return[]}},Ce=async T=>{if(!n.data||!T.length)return[];const Y=L();if(!Y)return[];const J=Array.from(new Set(T.map($e=>B($e)))),se=new URLSearchParams;se.set("json","1"),se.set("val",J.join(",")),n.start===1&&se.set("start","1"),V.value!==null&&V.value!==void 0&&V.value!==""&&se.set("parent",String(V.value));try{const He=(await(await fetch(`${Y}?${se.toString()}`)).json())?.data??[];return Z(He),He}catch{return[]}},ke=async T=>{if(T==null||T==="")return null;const Y=B(T),J=s.value.find($e=>B($e.id)===Y);if(J)return J;const[se]=await Ce([T]);return se??null},ee=async(T="",{force:Y=!1}={})=>{if(!n.data)return;const J=V.value??null;if(!Y&&d.value.keyword===T&&d.value.parent===J&&s.value.length>0)return;d.value={keyword:T,parent:J};const $e=await le(T);K($e)},_e=((T,Y=200)=>{let J;return(...se)=>{J&&clearTimeout(J),J=setTimeout(()=>T(...se),Y)}})(async T=>{n.data&&await ee(T,{force:!0})},250),me=e.ref(null),we=()=>{if(!m.value)return;const T=m.value.getBoundingClientRect(),Y=window.innerHeight??document.documentElement.clientHeight,J=window.innerWidth??document.documentElement.clientWidth,se=8,$e=8,ht=n.maxHeight??280,He=Y-T.bottom-$e-se,Pe=T.top-$e-se,gt=He>=Pe,Ze=Math.max(J-se*2,0);let{width:yt}=T;Ze>0&&yt>Ze&&(yt=Ze);let{left:ot}=T;ot+yt+se>J&&(ot=J-yt-se),ot=Math.max(ot,se);const Lt=Math.min(ht,Math.max(gt?He:Pe,50));v.value={position:"fixed",left:`${ot}px`,width:`${yt}px`,maxHeight:`${Lt}px`,transform:gt?"none":"translateY(-100%)",top:gt?`${T.bottom+$e}px`:`${T.top-$e}px`}},Ve=async(T="click")=>{F.value||p.value||(me.value=T,await ee(u.value.trim()),p.value=!0,await e.nextTick(),we(),k.value?.focus())},Ne=()=>{p.value=!1,me.value=null,e.nextTick(()=>{k.value?.blur()})},Ue=async T=>{if(T.stopPropagation(),!F.value){if(p.value){if(me.value==="focus"){me.value=null;return}Ne();return}await Ve("click")}},it=T=>{T.key==="Escape"&&Ne()},nt=T=>{if(!p.value)return;const Y=T.target;b.value?.contains(Y)||Ne()},ve=T=>{const Y=T.target;h.value?.contains(Y)||b.value?.contains(Y)||Ne()},W=T=>{if(T.key==="Escape"){T.preventDefault(),Ne();return}if(T.key==="Enter"){T.preventDefault();const Y=$.value[0];Y&&te(Y)}},te=T=>{if(!T)return;const Y=B(T.id);if(j.value.has(Y))return;G(T);const J={id:T.id,text:M(T)||String(T.id??""),key:I(T.id)};a.value=[...a.value,J],ne(T),u.value="",e.nextTick(()=>{k.value?.focus()})},ne=T=>{const Y=a.value.map(J=>J.id);r("value-selected",{name:n.name,value:Y,option:T})},fe=T=>{if(F.value)return;const Y=a.value.filter(J=>B(J.id)!==B(T));a.value=Y},{isOpenAdd:he,addData:Se,addSchema:Be,addForm:Ae,addTitle:Xe,addOption:X,onAddValue:ae}=Ao({props:n,fetchOptionByValue:ke,optionsList:s,selectedOption:e.ref(null),modelValue:l,onCreated:async(T,Y)=>{const J=T??await ke(Y),se=J?.id??Y;j.value.has(B(se))||(J&&G(J),a.value=[...a.value,{id:se,text:J?M(J):String(se),key:I(se)}],ne(J??null))}}),z=T=>{F.value||(g.value=T)},H=T=>{if(F.value||g.value===null||g.value===T)return;const Y=[...a.value],[J]=Y.splice(g.value,1);Y.splice(T,0,J),g.value=null,a.value=Y},U=async()=>{const Y=(Array.isArray(l.value)?[...l.value]:[]).filter(se=>se!=null);if(n.data&&Y.length){const se=Y.filter($e=>!i.value[B($e)]);se.length&&await Ce(se)}const J=Y.map(se=>({id:se,text:i.value[B(se)]??String(se),key:I(se)}));x=!0,a.value=J};e.watch(a,T=>{if(x){x=!1;return}const Y=T.map(J=>J.id);_=!0,l.value=Y,r("change",Y)},{deep:!0}),e.watch(l,()=>{if(_){_=!1;return}U()},{deep:!0}),e.watch(u,T=>{!n.data||!p.value||_e(T.trim())}),e.watch(F,T=>{T&&Ne()}),e.watch(()=>n.options,async T=>{n.data||(K(T??[]),await U())},{immediate:!0,deep:!0}),e.watch(()=>n.data,async T=>{T&&(await ee(u.value.trim()),await U())},{immediate:!0});const oe=e.ref(!1);return e.watch(V,async()=>{if(n.data){if(!oe.value){oe.value=!0;return}a.value=[],await ee(u.value.trim()),await U()}}),e.onMounted(async()=>{document.addEventListener("click",ve,!0),window.addEventListener("keydown",it),window.addEventListener("scroll",nt,!0),await U()}),e.onUnmounted(()=>{document.removeEventListener("click",ve,!0),window.removeEventListener("keydown",it),window.removeEventListener("scroll",nt,!0)}),(T,Y)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(pe.VsModal),{visible:e.unref(he),"onUpdate:visible":Y[1]||(Y[1]=J=>e.isRef(he)?he.value=J:null),class:"z-[1000]",title:e.unref(Xe),buttonText:"Додати",onDone:e.unref(X)},{default:e.withCtx(()=>[e.createVNode(tt,{schema:e.unref(Be),modelValue:e.unref(Se),"onUpdate:modelValue":Y[0]||(Y[0]=J=>e.isRef(Se)?Se.value=J:null),ref_key:"addForm",ref:Ae},null,8,["schema","modelValue"])]),_:1},8,["visible","title","onDone"]),e.createElementVNode("div",{class:"flex flex-col gap-2 w-full",ref_key:"rootRef",ref:h},[e.createElementVNode("div",Wu,[e.createElementVNode("div",{class:"relative flex-1",onClick:Y[4]||(Y[4]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{ref_key:"triggerRef",ref:m,class:e.normalizeClass(["flex min-h-[38px] items-center justify-between rounded border transition-colors bg-white px-3","border-gray-300 hover:border-[#b3d4ff]",p.value?"border-[#2684ff] ring-1 ring-[#2684ff] shadow-[0_0_0_1px_rgba(38,132,255,0.5)]":"",F.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),role:"combobox","aria-expanded":p.value,"aria-haspopup":"listbox","data-focus":p.value?"true":"false",onClick:Ue},[e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:k,"onUpdate:modelValue":Y[2]||(Y[2]=J=>u.value=J),placeholder:O.value,disabled:F.value,readonly:!N.value,onFocus:Y[3]||(Y[3]=()=>Ve("focus")),onKeydown:W,class:"flex-1 bg-transparent border-0 outline-none px-0 py-1 text-sm text-stone-900 placeholder:text-stone-400"},null,40,Yu),[[e.vModelText,u.value]]),e.createElementVNode("span",{class:e.normalizeClass(["text-stone-400 transition-transform duration-150",p.value?"rotate-180":""]),"aria-hidden":"true"},[e.createVNode(e.unref(P.ChevronDown),{class:"h-4 w-4"})],2)],10,Gu),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:b,class:"fixed z-[3000] rounded-md border border-stone-200 bg-white shadow-lg overflow-auto",style:e.normalizeStyle(v.value)},[e.createElementVNode("div",Xu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,J=>(e.openBlock(),e.createElementBlock("button",{key:B(J.id),type:"button",class:"w-full px-3 py-2 text-left text-sm text-stone-900 hover:bg-stone-100 disabled:opacity-50",onClick:e.withModifiers(se=>te(J),["stop"]),disabled:F.value},e.toDisplayString(M(J)),9,Zu))),128)),$.value.length===0?(e.openBlock(),e.createElementBlock("p",Ju," Немає варіантів ")):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0)]),_:1})]))]),n.add?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:Y[5]||(Y[5]=(...J)=>e.unref(ae)&&e.unref(ae)(...J)),class:"bg-white hover:bg-gray-100 text-sm text-gray-900 py-[10px] px-3 border border-stone-200 rounded-md h-[38px] flex items-center gap-2",disabled:F.value,type:"button"},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),Y[8]||(Y[8]=e.createElementVNode("span",null,"Додати",-1))],8,Qu)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ep,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(J,se)=>(e.openBlock(),e.createElementBlock("div",{key:J.key,class:e.normalizeClass(["flex items-center gap-2 rounded-md border border-stone-200 bg-white px-2 py-2",{"opacity-60":g.value===se}]),draggable:"true",onDragstart:$e=>z(se),onDragover:Y[6]||(Y[6]=e.withModifiers(()=>{},["prevent"])),onDrop:$e=>H(se),onDragend:Y[7]||(Y[7]=$e=>g.value=null)},[e.createElementVNode("button",{type:"button",class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-stone-500 hover:text-stone-900",disabled:F.value,"aria-label":"Перетягнути"},[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})],8,np),e.createElementVNode("div",{class:"flex-1 text-sm text-stone-900",title:J.text},e.toDisplayString(J.text),9,op),e.createElementVNode("button",{type:"button",class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-stone-400 hover:text-stone-900",disabled:F.value,onClick:e.withModifiers($e=>fe(J.id),["stop"]),"aria-label":`Видалити ${J.text}`},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,rp)],42,tp))),128)),a.value.length===0?(e.openBlock(),e.createElementBlock("p",lp,"Немає вибраних значень")):e.createCommentVNode("",!0)])],512)],64))}}),[["__scopeId","data-v-da4b4da7"]]),ap={class:"flex items-center gap-2 w-full"},sp={class:"relative flex-1"},ip=["placeholder","disabled","onKeydown"],cp=["disabled"],dp={key:0,class:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/50"},up={class:"bg-white text-gray-900 rounded-lg shadow-lg w-[480px] max-h-[80vh] overflow-y-auto"},pp={class:"p-3 border-b font-semibold text-gray-900 flex justify-between items-center"},fp=["onClick"],mp={key:0,class:"p-4 text-sm text-gray-500"},Zo=e.defineComponent({__name:"vs-input-address",props:e.mergeModels({api:{default:""},geom:{default:""},includes:{default:()=>[]},bbox:{},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:e.mergeModels(["update:modelValue","update:geom"],["update:modelValue"]),setup(o,{emit:t}){const n=/{{\s*([^}]+?)\s*}}/g,r=o,l=t,{inputClass:a}=ze(r.style),s=e.useModel(o,"modelValue"),i=e.computed({get:()=>s.value,set:N=>{s.value=N}}),c=e.ref(!1),d=e.ref([]),u=e.ref(!1),p=e.ref(null);e.watch(u,N=>{typeof document>"u"||(N?(p.value=document.body.style.overflow,document.body.style.overflow="hidden"):p.value!=null?(document.body.style.overflow=p.value,p.value=null):document.body.style.removeProperty("overflow"))}),e.onBeforeUnmount(()=>{typeof document>"u"||(p.value!=null?document.body.style.overflow=p.value:document.body.style.removeProperty("overflow"))});const g=e.computed(()=>r.placeholder??""),h=e.computed(()=>!!r.disabled),m=N=>{if(!N)return null;if(Array.isArray(N))return N;if(typeof N=="string"){const E=N.split(",").map(V=>V.trim()).filter(Boolean);return E.length!==4?null:E.map(Number)}return null},b=e.computed(()=>{const N=m(r.bbox);if(!N||N.length!==4)return null;const E=N.map(Number);return E.some(V=>Number.isNaN(V))?null:E}),k=e.computed(()=>{const N=b.value;if(!N)return"";const[E,V,B,M]=N;return`${E},${Math.max(V,M)},${B},${Math.min(V,M)}`});e.computed(()=>k.value?"1":"0");const v=e.inject("values");function x(){!h.value&&i.value.trim()&&_()}async function _(){const N=(i.value||"").trim();if(!N)return;let E=N;if(r.includes?.length&&v?.value){const B=r.includes.map(M=>v.value?.[M]).filter(Boolean);B.length&&(E=`${B.join(", ")}, ${N}`)}const V=O(E);if(V){c.value=!0;try{const M=await(await fetch(V)).json();d.value=Array.isArray(M)?M:[],u.value=!0}catch(B){console.error("Address search error:",B)}finally{c.value=!1}}}function w(){u.value=!u.value}function F(N){if(!N)return;u.value=!1;const E=parseFloat(N.lat),B={type:"Point",coordinates:[parseFloat(N.lon),E]};r.geom&&v?.value&&(v.value[r.geom]=B),l("update:geom",B)}function O(N){if(!r.api)return"";const E={value:encodeURIComponent(N),bbox:b.value?b.value.join(","):""};return r.api.replace(n,(V,B)=>E[B.trim()]??"")}return(N,E)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("div",sp,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":E[0]||(E[0]=V=>i.value=V),placeholder:g.value,disabled:h.value,class:e.normalizeClass(["py-1.5 px-3 block w-full bg-white border rounded-md placeholder:text-gray-400 focus:ring-2 focus:ring-blue-500",[e.unref(a),{"!border-red-600":r.error}]]),style:{border:"1px solid #CFD9E0"},onKeydown:e.withKeys(e.withModifiers(x,["prevent"]),["enter"])},null,42,ip),[[e.vModelText,i.value]]),d.value.length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-500 hover:text-blue-600",onClick:w,title:"Show search results"},[e.createVNode(e.unref(P.Info),{class:"h-4 w-4"})])):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",onClick:_,class:"flex items-center justify-center px-2 py-2 border rounded-md bg-white hover:bg-gray-50 text-gray-600 hover:text-blue-600 disabled:opacity-50 h-[38px]",disabled:c.value||!i.value?.trim()},[c.value?(e.openBlock(),e.createBlock(e.unref(P.LoaderCircle),{key:1,class:"h-5 w-5 animate-spin text-gray-400"})):(e.openBlock(),e.createBlock(e.unref(P.Search),{key:0,class:"h-4 w-4"}))],8,cp),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[u.value?(e.openBlock(),e.createElementBlock("div",dp,[e.createElementVNode("div",up,[e.createElementVNode("div",pp,[E[2]||(E[2]=e.createElementVNode("span",null,"Результати пошуку",-1)),e.createElementVNode("button",{class:"text-gray-500 hover:text-blue-600",onClick:E[1]||(E[1]=V=>u.value=!1),title:"Close"},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})])]),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(V,B)=>(e.openBlock(),e.createElementBlock("li",{key:B,onClick:M=>F(V),class:"px-3 py-2 cursor-pointer hover:bg-gray-100 border-b text-sm"},e.toDisplayString(V.display_name),9,fp))),128))]),d.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",mp," Не знайдено результатів "))])])):e.createCommentVNode("",!0)]))]))}}),Jo=(o="")=>`${o}${Math.floor(Math.random()*1e4)}`,hp={class:"vs-datalist space-y-3"},gp={class:"space-y-3"},yp=["onClick","disabled"],bp={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},kp=["disabled"],xp=be(e.defineComponent({__name:"vs-input-datalist",props:e.mergeModels({schema:{default:()=>[]},minItems:{default:0},maxItems:{default:void 0},addButtonText:{default:"Додати позицію"},emptyLabel:{default:"Немає рядків"},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.computed(()=>Array.isArray(n.value)?n.value:[]),l=e.ref([]),a=e.computed(()=>t.schema?.map(b=>({...b,disabled:t.disabled||b.disabled}))??[]),s=e.computed(()=>a.value.map(b=>m(b))),i=e.computed(()=>t.disabled?!1:t.maxItems?r.value.length<t.maxItems:!0),c=e.computed(()=>t.disabled||r.value.length<=(t.minItems||0));e.watch(()=>r.value.length,()=>{d(),u()},{immediate:!0}),e.watch(()=>t.schema,u,{immediate:!0,deep:!0});function d(){const b=r.value.length;l.value.length<b?l.value=[...l.value,...Array.from({length:b-l.value.length},()=>Jo())]:l.value.length>b&&l.value.splice(b)}function u(){if(!t.minItems||r.value.length>=t.minItems)return;const b=t.minItems-r.value.length,k=Array.from({length:b},p);n.value=[...r.value,...k]}function p(){const b={};return a.value.forEach(k=>{b[k.name]=k?.default??null}),b}function g(){i.value&&(n.value=[...r.value,p()],d())}function h(b){c.value||(n.value=r.value.filter((k,v)=>v!==b),d(),u())}function m(b){return{...b}}return(b,k)=>(e.openBlock(),e.createElementBlock("div",hp,[e.createElementVNode("div",gp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(v,x)=>(e.openBlock(),e.createElementBlock("div",{key:l.value[x],class:"flex items-center gap-3"},[e.createVNode(tt,{schema:s.value,layout:"inline",navigation:!1,values:r.value[x],"onUpdate:values":_=>r.value[x]=_,"form-id":l.value[x]},null,8,["schema","values","onUpdate:values","form-id"]),e.createElementVNode("button",{type:"button",class:"h-[38px] w-[38px] flex items-center justify-center text-gray-400 hover:text-gray-600 hover:bg-gray-50 rounded-lg transition-all disabled:opacity-40",onClick:_=>h(x),disabled:c.value},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,yp)]))),128)),r.value.length===0?(e.openBlock(),e.createElementBlock("div",bp,e.toDisplayString(t.emptyLabel),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"flex items-center gap-2 text-gray-600 hover:text-gray-900 font-medium transition-colors text-sm",onClick:g,disabled:!i.value},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(t.addButtonText),1)],8,kp)]))}}),[["__scopeId","data-v-260e3e66"]]),wp={class:"vs-dataform space-y-4"},_p=["draggable","onDragstart","onDragover","onDragenter","onDrop"],Cp={class:"flex items-center gap-2"},vp=["onClick"],Ep={class:"text-sm font-medium text-gray-700"},Bp={class:"flex items-center gap-2"},Vp=["title","onClick","disabled"],Sp=["title","onClick","disabled"],$p={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},Np=["disabled"],Ap=be(e.defineComponent({__name:"vs-input-dataform",props:e.mergeModels({schema:{default:()=>[]},minGroups:{default:0},maxGroups:{default:void 0},addButtonText:{default:"Додати групу фільтрів"},groupLabel:{default:void 0},duplicateTitle:{default:"Дублювати групу"},removeTitle:{default:"Видалити групу"},emptyLabel:{},view:{default:"default"},collapsible:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),r=e.ref([]),l=e.ref([]),a=e.ref(0),s=e.ref(null),i=e.ref(null),c=e.ref(null),d=e.computed(()=>t.groupLabel??"Group"),u=e.computed(()=>t.emptyLabel??"Ще немає груп"),p=e.computed(()=>t.schema?.map(ee=>({...ee,disabled:t.disabled||ee.disabled}))??[]),g=e.computed(()=>p.value.map(ee=>V(ee))),h=e.computed(()=>t.view==="accordion"),m=e.computed(()=>!!(t.collapsible||h.value)),b=e.computed(()=>t.draggable!==!1),k=e.computed(()=>t.disabled?!1:t.maxGroups?n.value.length<t.maxGroups:!0),v=e.computed(()=>t.disabled||n.value.length<=(t.minGroups||0));e.watch(()=>n.value.length,()=>{x(),_(),w()},{immediate:!0}),e.watch(()=>t.schema,w,{immediate:!0,deep:!0}),e.watch(()=>t.view,()=>{_()},{immediate:!0});function x(){const ee=n.value.length;r.value.length<ee?r.value=[...r.value,...Array.from({length:ee-r.value.length},()=>Jo())]:r.value.length>ee&&r.value.splice(ee)}function _(){const ee=n.value.length;h.value?ee===0?a.value=-1:a.value>=ee?a.value=ee-1:a.value<0&&(a.value=0):l.value.length<ee?l.value=[...l.value,...Array.from({length:ee-l.value.length},()=>!1)]:l.value.length>ee&&l.value.splice(ee)}function w(){if(!t.minGroups||n.value.length>=t.minGroups)return;const ee=t.minGroups-n.value.length,ie=Array.from({length:ee},F);n.value=[...n.value,...ie],_()}function F(){const ee={};return p.value.forEach(ie=>{ee[ie.name]=ie?.default??null}),ee}function O(){k.value&&(n.value=[...n.value,F()],x(),_())}function N(ee){v.value||(n.value=n.value.filter((ie,_e)=>_e!==ee),x(),h.value?a.value>=n.value.length&&(a.value=n.value.length-1):l.value.splice(ee,1),w())}function E(ee){if(t.disabled)return;const ie=JSON.parse(JSON.stringify(n.value[ee]??{}));n.value=[...n.value.slice(0,ee+1),ie,...n.value.slice(ee+1)],x(),h.value?a.value>ee&&(a.value+=1):l.value.splice(ee+1,0,l.value[ee]??!1)}function V(ee){return{...ee}}function B(ee){return h.value?a.value===-1&&ee===0?!1:a.value!==ee:!!l.value[ee]}function M(ee){if(m.value){if(h.value){a.value=ee;return}l.value[ee]=!l.value[ee]}}function I(ee,ie){if(!b.value||t.disabled){ie.preventDefault();return}s.value=ee,i.value=ee,c.value={groups:JSON.parse(JSON.stringify(n.value)),keys:[...r.value],states:[...l.value]},ie.dataTransfer?.setData("text/plain",String(ee)),ie.dataTransfer?.setDragImage?.(ie.currentTarget,0,0)}function j(ee,ie){!b.value||t.disabled||s.value!==null&&Z(ee,ie)}function $(ee,ie){Z(ee,ie)}function L(ee){!b.value||t.disabled||ke()}function D(){c.value&&K(),s.value=null,i.value=null,c.value=null}function G(ee,ie){const _e=[...n.value],[me]=_e.splice(ee,1);_e.splice(ie,0,me),n.value=_e;const we=[...r.value],[Ve]=we.splice(ee,1);if(we.splice(ie,0,Ve),r.value=we,h.value)a.value===ee&&(a.value=ie);else{const Ne=[...l.value],[Ue]=Ne.splice(ee,1);Ne.splice(ie,0,Ue),l.value=Ne}}function K(){c.value&&(n.value=c.value.groups,r.value=c.value.keys,l.value=c.value.states,c.value=null,i.value=null)}function Z(ee,ie){if(s.value===null)return;const _e=le(ee,ie);i.value=_e,Ce(_e)}function le(ee,ie){if(!ie?.currentTarget)return ee;const _e=ie.currentTarget.getBoundingClientRect(),we=ie.clientY-_e.top>_e.height/2?ee+1:ee;return Math.max(0,Math.min(we,n.value.length))}function Ce(ee){const ie=s.value;if(ie===null)return;let _e=ee;if(_e>n.value.length&&(_e=n.value.length),_e===ie||_e===ie+1)return;const me=_e>ie?_e-1:_e;G(ie,me),s.value=me,i.value=_e>ie?me+1:me}function ke(){c.value=null,s.value=null,i.value=null}return(ee,ie)=>(e.openBlock(),e.createElementBlock("div",wp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(_e,me)=>(e.openBlock(),e.createElementBlock("div",{key:r.value[me],class:e.normalizeClass(["relative border border-gray-200 rounded-lg bg-white transition vs-dataform__group",[t.view==="accordion"?"overflow-hidden":B(me)?"pt-6 px-6":"p-6"]]),draggable:b.value&&!t.disabled,onDragstart:we=>I(me,we),onDragend:D,onDragover:e.withModifiers(we=>j(me,we),["prevent"]),onDragenter:e.withModifiers(we=>$(me,we),["prevent"]),onDrop:e.withModifiers(we=>L(),["prevent"])},[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center justify-between gap-2 border-b border-gray-100 px-4 py-3",[t.view!=="accordion"?"-mx-6 -mt-6 px-6":"",t.view!=="accordion"&&!B(me)?"rounded-t-lg":"rounded-lg"]])},[e.createElementVNode("div",Cp,[b.value?(e.openBlock(),e.createBlock(e.unref(P.GripVertical),{key:0,class:"h-4 w-4 text-gray-400","aria-hidden":"true"})):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"rounded-full p-1 text-gray-500 transition hover:bg-gray-100",onClick:we=>M(me)},[e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["h-4 w-4 transition",B(me)?"-rotate-90":"rotate-0"])},null,8,["class"])],8,vp)):e.createCommentVNode("",!0),e.createElementVNode("div",Ep,e.toDisplayString(`${d.value} (${me+1})`),1)]),e.createElementVNode("div",Bp,[e.createElementVNode("button",{type:"button",class:"p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-50 rounded-lg transition-all disabled:opacity-40",title:t.duplicateTitle,onClick:we=>E(me),disabled:t.disabled,draggable:"false"},[e.createVNode(e.unref(P.Copy),{class:"h-4 w-4"})],8,Vp),e.createElementVNode("button",{type:"button",class:"p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-50 rounded-lg transition-all disabled:opacity-40",title:t.removeTitle,onClick:we=>N(me),disabled:v.value,draggable:"false"},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,Sp)])],2),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(t.view==="accordion"?"p-6":"pt-6")},[e.createVNode(tt,{class:"vs-dataform__form",schema:g.value,layout:"inline",navigation:!1,values:n.value[me],"onUpdate:values":we=>n.value[me]=we,"form-id":r.value[me],disabled:t.disabled},null,8,["schema","values","onUpdate:values","form-id","disabled"])],2),[[e.vShow,!B(me)]])],42,_p))),128)),n.value.length===0?(e.openBlock(),e.createElementBlock("div",$p,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"flex items-center gap-2 text-gray-600 hover:text-gray-900 font-medium transition-colors text-sm",onClick:O,disabled:!k.value},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(t.addButtonText),1)],8,Np)]))}}),[["__scopeId","data-v-cfbcfed8"]]),bn="__vs_form_monaco_loader__",Dt="__vs_form_monaco_script_loader__",kn="__vs_form_monaco_editor_loader__",Wn=e.defineComponent({__name:"vs-input-monaco",props:e.mergeModels({syntax:{default:"xml"},theme:{default:"vs-light"},height:{default:280},minimap:{type:Boolean,default:!1},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(o,{expose:t}){const n=o,r=e.useModel(o,"modelValue"),l=e.ref(null),a=e.computed(()=>typeof n.height=="number"?`${n.height}px`:n.height||"280px");let s=null,i=null,c=!1;const d=()=>{if(i)return Promise.resolve(i);if(typeof window>"u")return Promise.resolve(null);const m=window;if(m.monaco?.editor?.create)return i=m.monaco,Promise.resolve(i);if(m[bn])return m[bn];const k=(async()=>{const v=w=>{if(Array.from(document.styleSheets||[]).some(N=>N?.href?.includes(w)))return;const O=document.createElement("link");O.rel="stylesheet",O.href=w,document.head.appendChild(O)},x=w=>{if(m[Dt]?.[w])return m[Dt][w];m[Dt]||={};const F=Array.from(document.scripts).find(O=>O.src===w);return F?(m[Dt][w]=new Promise((O,N)=>{const E=F.readyState;if(F.dataset.loaded==="true"||E==="loaded"||E==="complete"){O();return}F.addEventListener("load",()=>{F.dataset.loaded="true",O()},{once:!0}),F.addEventListener("error",V=>N(V),{once:!0})}),m[Dt][w]):(m[Dt][w]=new Promise((O,N)=>{const E=document.createElement("script");E.src=w,E.async=!0,E.onload=()=>{E.dataset.loaded="true",O()},E.onerror=V=>N(V),document.body.appendChild(E)}),m[Dt][w])},_="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs";return v(`${_}/editor/editor.main.min.css`),await x(`${_}/loader.min.js`),m[kn]||(m[kn]=new Promise((w,F)=>{window.require.config({paths:{vs:_}}),window.require(["vs/editor/editor.main"],()=>{i=window.monaco,m.monaco=i,w(i)},O=>F(O))}).catch(w=>{throw delete m[kn],w})),m[kn]})().catch(v=>{throw delete m[bn],v});return m[bn]=k,k},u=()=>{!l.value||!i||(s&&(s.dispose(),s=null),s=i.editor.create(l.value,{value:r.value||"",language:n.syntax,theme:n.theme,automaticLayout:!0,minimap:{enabled:!!n.minimap},readOnly:!!n.disabled}),s.onDidChangeModelContent(()=>{c||(r.value=s.getValue())}))},p=()=>{s?.focus()},g=()=>s,h=()=>i;return e.watch(()=>r.value,m=>{if(!s)return;const b=s.getValue();m!==b&&(c=!0,s.setValue(m||""),c=!1)}),e.watch(()=>n.syntax,m=>{!s||!i||i.editor.setModelLanguage(s.getModel(),m||"xml")}),e.watch(()=>n.theme,m=>{i&&i.editor.setTheme(m||"vs-light")}),e.watch(()=>n.disabled,m=>{s&&s.updateOptions({readOnly:!!m})}),e.watch(()=>n.minimap,m=>{s&&s.updateOptions({minimap:{enabled:!!m}})}),e.onMounted(async()=>{try{const m=await d();if(!m||!m.editor)return;i=m,u()}catch(m){console.error("Failed to load Monaco editor",m)}}),e.onBeforeUnmount(()=>{s&&(s.dispose(),s=null)}),t({focus:p,getEditor:g,getMonaco:h}),(m,b)=>(e.openBlock(),e.createElementBlock("div",{class:"w-full",style:e.normalizeStyle({height:a.value})},[e.createElementVNode("div",{ref_key:"editorContainer",ref:l,class:"w-full h-full overflow-hidden border border-[#CFD9E0] rounded"},null,512)],4))}}),Qo={VsInputText:Rt,VsInputRadio:Un,"vs-input-text":Rt,"vs-input-password":hl,"vs-input-textarea":Mo,"vs-input-richtext":Do,"vs-input-mask":sn,"vs-input-number":wo,"vs-input-radio":Un,"vs-input-select":Kn,"vs-input-switcher":In,"vs-input-static":Rn,"vs-input-container":No,"vs-input-date":ua,"vs-input-checkbox":vo,"vs-input-file":Vo,"vs-input-file2":qn,file2:qn,File2:qn,"vs-input-html":Rn,"vs-input-email":On,"vs-input-tel":zn,"vs-input-datatable":To,"vs-input-map":jo,"vs-input-file-list":So,"vs-input-tags":Uo,"vs-input-slug":Ho,"vs-input-codegen":qo,"vs-input-key-value":Ko,"vs-input-text[]":Wo,"vs-input-range":Yo,"vs-input-color":Go,"vs-input-native-select":Kn,VsInputArraySelect:yn,"vs-input-array":Xo,"vs-input-array-select":yn,"array-select":yn,"vs-input-address":Zo,"vs-input-datalist":xp,"vs-input-dataform":Ap,"vs-input-monaco":Wn},Fp=e.defineComponent({__name:"behavior",props:{api:{},set:{},button:{},error:{},value:{}},setup(o){const t=o,n=e.inject("values");async function r(){try{if(!t.api)return;const l=t.api.replace("{{value}}",t.value),a=await fetch(l);if(!a.ok){pe.notify({type:"warning",title:"Validation",message:"При спробі завантажити дані виникла помилка."});return}const s=await a.json();if(!t.set||!n)return;for(const[i,c]of Object.entries(t.set))n.value[i]=s.result[c]}catch(l){console.error(t.error,l)}}return(l,a)=>(e.openBlock(),e.createElementBlock("button",{onClick:r,class:"vs-button relative inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border !border-gray-200 hover:text-white bg-white text-blue-500 hover:border-blue-500 hover:bg-blue-500 focus:ring-blue-500 py-1.5 px-5 focus:ring-1 focus:ring-offset-1 ml-0 md:ml-2 mt-2 md:mt-0 py-[8px] md:w-2/4 whitespace-nowrap w-full"},e.toDisplayString(l.button),1))}}),Mp={class:"flex flex-col gap-1 w-full"},Dp=["innerHTML"],er=e.defineComponent({__name:"vs-compact-form-layout",props:e.mergeModels({item:{default:{}},layout:{default:"default"},style:{default:{}},type:{default:""},error:{type:[String,Boolean]},columns:{default:()=>({container:12,label:3})}},{modelValue:{default:null},modelModifiers:{}}),emits:e.mergeModels(["value-selected"],["update:modelValue"]),setup(o,{emit:t}){const n=o,r=e.useModel(o,"modelValue"),l=t,a=e.computed(()=>fl[`${n.layout}`]),s=["label","placeholder","info","description","text","html"],i=e.ref(x()),c=e.computed(()=>b(n.item,i.value)),d=e.computed(()=>Qo?.[`vs-input-${n.item.type}`]),u=e.inject("field-props"),p=e.computed(()=>{const w=e.unref(d);if(!w)return new Set;const F=w.props??w.__vccOpts?.props;if(!F)return new Set;const O=Array.isArray(F)?F:Object.keys(F);return new Set(O)}),g=["min","max","step"],h=e.computed(()=>{const w={...c.value??{}},F=n.item?.name;F&&u?.value?.[F]&&Object.assign(w,u.value[F]);const O=p.value;let N;return O.size?N=Object.fromEntries(Object.entries(w).filter(([E])=>O.has(E))):N=w,g.forEach(E=>{const V=w[E];V!=null&&(N[E]=V)}),N}),m=w=>{const F=typeof w=="object"&&w!==null?w:{value:w};l("value-selected",{...F,name:F.name??n.item?.name})};e.onMounted(()=>{i.value=x(),window.addEventListener("storage",_)}),e.onUnmounted(()=>{window.removeEventListener("storage",_)});function b(w,F){if(!w)return{};const O={...w};return s.forEach(N=>{const E=v(w,N,F);E!=null&&(O[N]=E)}),Array.isArray(w.options)&&(O.options=w.options.map(N=>k(N,F))),O}function k(w,F){if(!w)return w;const O={...w},N=v(w,"label",F),E=v(w,"text",F);return N!=null&&(O.label=N),E!=null?O.text=E:N!=null&&(O.text=N),O}function v(w,F,O){const N=`${F}:${O}`;if(w?.[N]!=null)return w[N];if(F==="label"&&w?.[O]!=null)return w[O];if(w?.[F]!=null)return w[F];if(F==="label"){if(w?.ua!=null)return w.ua;if(w?.en!=null)return w.en}if(F==="text"||F==="html"){if(w?.ua!=null)return w.ua;if(w?.en!=null)return w.en}return null}function x(){return typeof window>"u"?"uk":localStorage.getItem("locale")||"uk"}function _(){i.value=x()}return(w,F)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{ua:c.value.ua,error:n.error||"",item:c.value,columns:n.columns,label:c.value.label},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["flex w-full",`${n.item.type}-component`])},[e.createElementVNode("div",Mp,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.value),e.mergeProps(h.value,{modelValue:r.value,"onUpdate:modelValue":F[0]||(F[0]=O=>r.value=O),onValueSelected:m}),null,16,["modelValue"])),c.value.description&&n.layout!=="settings"?(e.openBlock(),e.createElementBlock("p",{key:0,class:"text-sm text-gray-500",innerHTML:c.value.description},null,8,Dp)):e.createCommentVNode("",!0)]),c.value.behavior?.api&&c.value.behavior?.button?(e.openBlock(),e.createBlock(Fp,e.mergeProps({key:0},c.value.behavior,{value:r.value}),null,16,["value"])):e.createCommentVNode("",!0)],2)]),_:1},8,["ua","error","item","columns","label"]))}}),Tp={class:"text-sm text-gray-800 mb-[4px] font-medium dark:text-neutral-300"},Lp={class:"vs-compact-form-navigation__rail mt-[6px]"},Ip=["onClick"],Rp=be(e.defineComponent({__name:"vs-compact-form-navigation",props:{target:{},scrollContainer:{},title:{default:"Навігація"},enabled:{type:Boolean,default:!0},width:{default:400}},setup(o,{expose:t}){const n=o,r=e.ref([]),l=e.ref(""),a=e.ref(""),s=e.computed(()=>!!n.enabled),i=e.computed(()=>["vs-compact-form-navigation flex flex-col pl-[6px] pt-[8px] pr-[8px]","sticky top-0 self-start shrink-0","max-h-full min-h-0 overflow-y-auto"]),c=e.computed(()=>{const M=n.width;if(M==null)return{};const I=typeof M=="number"?`${M}px`:`${M}`;return{width:I,minWidth:I}});let d=null,u=0,p=0,g=null,h=null,m=null;const b=()=>V(),k=()=>x();e.watch(()=>n.target,async M=>{if(O(),!M){g=null,r.value=[],l.value="";return}g=M,s.value&&(await e.nextTick(),F(M),x())},{immediate:!0}),e.watch(()=>n.scrollContainer,M=>{if(!s.value){h=M??null;return}v(M??null),e.nextTick(()=>x())},{immediate:!0}),e.onMounted(()=>{n.scrollContainer||v(null),x()}),e.onBeforeUnmount(()=>{O(),v(null,!0),g=null,typeof window<"u"&&(u&&window.cancelAnimationFrame(u),p&&window.cancelAnimationFrame(p))});function v(M,I=!1){if(m&&(m(),m=null),I){h=null;return}if(h=M??null,typeof window>"u")return;const j=M??window,$=window;j.addEventListener("scroll",b,{passive:!0}),$.addEventListener("resize",k),m=()=>{j.removeEventListener("scroll",b),$.removeEventListener("resize",k)}}function x(){if(!s.value||!g)return;u&&typeof window<"u"&&window.cancelAnimationFrame(u);const M=()=>{_(),u=0};typeof window>"u"?M():u=window.requestAnimationFrame(M)}function _(){if(!s.value||!g)return;const M=Array.from(g.querySelectorAll("h1, h2")),I=new Set,j=[];M.forEach(($,L)=>{const D=$.textContent?.trim()??"";if(!D)return;let G=($.getAttribute("id")??"").trim();G||(G=w(D)||`heading-${L+1}`);let K=G,Z=1;for(;I.has(K);)K=`${G}-${Z+=1}`;$.id!==K&&Object.assign($,{id:K}),I.add(K),j.push({id:K,text:D,level:$.tagName.toLowerCase()==="h1"?1:2})}),r.value=j,j.length||(l.value=""),E()}function w(M){return M.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-")}function F(M){!M||!s.value||typeof MutationObserver>"u"||(O(),d=new MutationObserver(()=>x()),d.observe(M,{childList:!0,subtree:!0}))}function O(){d&&(d.disconnect(),d=null)}function N(M){const I=h;if(!I)return typeof window>"u"?M.offsetTop:M.getBoundingClientRect().top+window.scrollY;const j=M.getBoundingClientRect(),$=I.getBoundingClientRect();return j.top-$.top+I.scrollTop}function E(){if(!s.value||!r.value.length)return;const M=h,I=(M?M.scrollTop:null)||(typeof window<"u"?window.scrollY:0),j=(M?M.clientHeight:null)||(typeof window<"u"?window.innerHeight:0),$=I+j;let L=null;for(let G=0;G<r.value.length;G+=1){const K=r.value[G],Z=document.getElementById(K.id);if(Z){const le=N(Z);le+Z.offsetHeight>I&&le<$&&(L=K.id)}}!L&&a.value&&(L=a.value),L&&(a.value=L);const D=M?M.scrollHeight-M.clientHeight:document.documentElement.scrollHeight-window.innerHeight;I+5>=D&&(L=r.value[r.value.length-1].id),L&&(l.value=L)}function V(){s.value&&(p&&window.cancelAnimationFrame(p),p=window.requestAnimationFrame(()=>{E(),p=0}))}function B(M){if(!s.value)return;const I=document.getElementById(M);if(!I)return;const j=h,$=Math.max(0,N(I));j?j.scrollTo({top:$,behavior:"smooth"}):typeof window<"u"&&window.scrollTo({top:$,behavior:"smooth"})}return t({refresh:x}),(M,I)=>s.value&&r.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(i.value),style:e.normalizeStyle(c.value)},[e.createElementVNode("h2",Tp,e.toDisplayString(M.title),1),e.createElementVNode("div",Lp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,j=>(e.openBlock(),e.createElementBlock("div",{key:j.id,class:e.normalizeClass(["vs-compact-form-navigation__item relative",j.level===2?"vs-compact-form-navigation__item--nested":"",j.id===l.value?"vs-compact-form-navigation__item--active":""])},[e.createElementVNode("button",{type:"button",onClick:$=>B(j.id),class:e.normalizeClass(["vs-compact-form-navigation__button flex gap-x-3 py-[6px] pr-3 text-sm duration-200 hover:text-gray-800",j.level===2?"pl-[15px]":"pl-[18px]",j.id===l.value?"text-gray-800":"text-gray-500"])},[e.createElementVNode("span",null,e.toDisplayString(j.text),1)],10,Ip)],2))),128))])],6)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-1584a562"]]),ut={required:"Це поле є обов’язковим",email:"Неправильний email",tel:"Неправильний телефон",minlength:o=>`Мінімальна довжина — ${o} символів`,maxlength:o=>`Максимальна довжина — ${o} символів`,min:o=>`Значення має бути не менше ${o}`,max:o=>`Значення має бути не більше ${o}`},Op=o=>typeof o=="string"?o.trim()?!1:ut.required:Array.isArray(o)?o.map(n=>typeof n=="string"?n.trim():n).filter(n=>n!=null&&n!=="").length?!1:ut.required:typeof o=="number"?Number?.isNaN(o)?ut?.required:!1:o?!1:ut.required,zp=o=>{const t=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return o?t.test(o)?!1:ut.email:!1},Pp=o=>{const t=/^\+[1-9]\d{1,14}$/;return o?t.test(o)?!1:ut.tel:!1},tr=o=>o==null?0:typeof o=="string"?o.trim().length:Array.isArray(o)?o.length:typeof o=="number"?o.toString().length:String(o).length,jp=(o,t)=>{if(o==null)return!1;const n=Number(t?.value??t?.length);return Number.isFinite(n)&&tr(o)<n?t?.message||ut.minlength(n):!1},Up=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value??t?.length);return Number.isFinite(n)&&tr(o)>n?t?.message||ut.maxlength(n):!1},nr=o=>{if(typeof o=="number")return o;if(typeof o=="string"){const t=o.trim().replace(",",".");return t?Number(t):Number.NaN}return Number(o)},Hp=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value);if(!Number.isFinite(n))return!1;const r=nr(o);return Number.isFinite(r)&&r<n?t?.message||ut.min(n):!1},qp=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value);if(!Number.isFinite(n))return!1;const r=nr(o);return Number.isFinite(r)&&r>n?t?.message||ut.max(n):!1},Kp=(o,t)=>{const n=t.pattern??t.regexp,r=typeof n=="string"?new RegExp(n):n;if(Array.isArray(o)){const l=o.filter(Boolean);return l.length===0||l.every(a=>r.test(a))?!1:t.message}return!r.test(o)&&o?t.message:!1},Wp=(o,t)=>!1,Gp=(o,t)=>{switch(typeof t=="string"?t:t.type){case"required":return Op(o);case"email":return zp(o);case"tel":return Pp(o);case"regexp":return Kp(o,t);case"minlength":return jp(o,t);case"maxlength":return Up(o,t);case"min":return Hp(o,t);case"max":return qp(o,t);case"custom":return Wp();default:return!1}},Yp={autocomplete:"select",combobox:"select",datepicker:"date",markedtext:"mask",html:"static",geom:"map",filelist:"file-list",file:"file",dropzone:"file"};function or(o){const t=o?.toLowerCase();return Yp[t]||t}function Gn(o,t=!1){if(Array.isArray(o)){const r=[];return o.forEach(l=>{const a={...l};a.name=(l.name||l.id||l.key||"").toString(),a.type=or(l.type),a.label=l.label||l.ua,a.rules=l.rules||l.validators,a.type==="email"&&!a.rules&&(a.rules=["email"]),l.data&&(a.api=`/api/suggest/${l.data}`),a.disabled=a.disabled??t,Array.isArray(a.schema)&&(a.schema=Gn(a.schema,a.disabled)),r.push(a)}),r}const n=[];return Object.entries(o).forEach(r=>{const l={name:r[0],...r[1],type:or(r[1].type),label:r[1].label||r[1].ua,rules:r[1].rules||r[1].validators,disabled:r[1].disabled??t};l.type==="email"&&!l.rules&&(l.rules=["email"]),r[1].type?.includes("list")&&(l.multiple=!0),!l.api&&r[1].data&&(l.api=`/api/suggest/${r[1].data}`),Array.isArray(l.schema)&&(l.schema=Gn(l.schema,l.disabled)),n.push(l)}),n}function Xp(o,t,n=!1){const r=e.computed(()=>Gn((Array.isArray(t),t),typeof n=="boolean"?n:n.value)),l=e.ref({});function a(d){const u=d?.conditions;if(!u)return!0;const p=Array.isArray(u)?u[0]:u,g=o?.value?.[p];return $o(g,u)}const s=(d=r.value,u=!0)=>(d.forEach(p=>{const g=[],h=Number(p?.minlength),m=Number(p?.maxlength),b=Number(p?.min),k=Number(p?.max);!Number.isNaN(h)&&Number.isFinite(h)&&g.push({type:"minlength",value:h}),!Number.isNaN(m)&&Number.isFinite(m)&&g.push({type:"maxlength",value:m}),!Number.isNaN(b)&&Number.isFinite(b)&&g.push({type:"min",value:b}),!Number.isNaN(k)&&Number.isFinite(k)&&g.push({type:"max",value:k});const v=[...g,...p.rules||[]];if(v.length){if(!a(p)){delete l.value[p.name];return}let x=!1,_=null;v.forEach(w=>{const F=Gp(o.value[p.name],w);F&&(x=!0,!_&&typeof F=="string"&&(_=F))}),x&&_?l.value[p.name]=_:delete l.value[p.name]}p.schema&&s(p.schema,!1)}),u&&Object.values(l.value).some(Boolean)?l.value:null),i=e.computed(()=>r.value?.filter(d=>d.hidden!==!0&&a(d)));return{errors:l,validate:s,reset:()=>{o.value={},l.value={}},visibleSchema:i}}const Zp={class:"flex w-full h-full min-h-0 gap-6"},Jp={key:0,"data-orientation":"horizontal",role:"none",class:"mt-1 shrink-0 h-[1px] w-full bg-slate-100 dark:bg-slate-600"},tt=e.defineComponent({__name:"vs-compact-form",props:e.mergeModels({schema:{default:()=>[]},style:{default:()=>({})},modelValue:{},layout:{default:()=>"default"},formId:{default:()=>""},disabled:{type:Boolean,default:!1},navigation:{type:Boolean,default:!1},navWidth:{default:400},columns:{}},{form:{default:()=>({})},formModifiers:{},modelValue:{default:()=>({})},modelModifiers:{},values:{default:void 0},valuesModifiers:{}}),emits:e.mergeModels(["handle-submit","update:modelValue","value-selected"],["update:form","update:modelValue","update:values"]),setup(o,{expose:t,emit:n}){const r=n,l=o,a=e.useModel(o,"form"),s=e.useModel(o,"modelValue"),i=e.useModel(o,"values"),c=e.computed({get:()=>i.value??s.value,set:$=>{s.value=$,i.value=$}}),{errors:d,validate:u,reset:p,visibleSchema:g}=Xp(c,l.schema,e.toRef(l,"disabled")),h=e.ref(null),m=e.ref(null),b=e.ref({}),k=e.computed(()=>l.navigation),v=e.computed(()=>l.navWidth),x=e.computed(()=>l.style?.columns),_=Object.freeze({container:12,label:3}),w=e.computed(()=>l.columns??x.value??_),F=e.computed(()=>l.columns!=null||x.value!=null),O=e.computed(()=>F.value?"horizontal":l.layout),N=$=>$?.columns?"horizontal":O.value,E=$=>$?.columns??w.value,V=()=>{!l.formId&&c.value&&delete c.value.id,r("update:modelValue",c.value),u(),r("handle-submit",c.value)},B=$=>{r("value-selected",$)};t({validate:u,reset:p,errors:d}),e.onMounted(()=>{a.value={value:c.value,errors:d.value,reset:p,validate:u,formId:l.formId}});function M($,L){if($===L)return!0;if(typeof $!="object"||typeof L!="object"||!$||!L)return!1;const D=Object.keys($),G=Object.keys(L);return D.length!==G.length?!1:D.every(K=>$[K]===L[K])}function I($){return Array.isArray($)?[...$]:$&&typeof $=="object"?{...$}:$}function j($){Array.isArray($)&&$.forEach(L=>{if(!L)return;const D=L.name,G=L.default!==void 0;D&&G&&c.value[D]===void 0&&(c.value[D]=I(L.default)),Array.isArray(L.schema)&&j(L.schema)})}return e.watch(g,$=>{j($)},{immediate:!0,deep:!0}),e.provide("form",a),e.provide("values",c),e.provide("field-props",b),($,L)=>(e.openBlock(),e.createElementBlock("div",Zp,[e.createElementVNode("div",{class:"flex-1 min-h-0 overflow-y-auto overflow-x-visible",ref_key:"formScrollContainer",ref:m},[e.createElementVNode("form",{ref_key:"formRef",ref:h,onSubmit:e.withModifiers(V,["prevent"]),class:e.normalizeClass(["grid grid-cols-12 p-1",O.value==="default"?"gap-6":"gap-4"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),(D,G)=>(e.openBlock(),e.createElementBlock("div",{key:D.name,class:e.normalizeClass(N(D)==="horizontal"?"col-span-12":`col-span-${D.col||12}`)},[e.createVNode(er,{style:e.normalizeStyle($.style),item:D,layout:N(D),columns:E(D),"model-value":c.value[D.name],"onUpdate:modelValue":K=>{if(D.name==="id"&&!$.formId)return;const Z=c.value[D.name];M(Z,K)||(c.value[D.name]=K)},error:e.unref(d)[D.name],onValueSelected:B},null,8,["style","item","layout","columns","model-value","onUpdate:modelValue","error"]),N(D)==="settings"&&G+1!==e.unref(g).length?(e.openBlock(),e.createElementBlock("div",Jp)):e.createCommentVNode("",!0)],2))),128))],34)],512),e.createVNode(Rp,{target:h.value,"scroll-container":m.value,enabled:k.value,width:v.value},null,8,["target","scroll-container","enabled","width"])]))}}),Qp={class:"relative"},ef={class:"w-full h-full fixed top-0 start-0 bg-black bg-opacity-50"},tf={class:"m-[10px] fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 min-h-0 h-fit max-h-[80vh] overflow-hidden opacity-1 flex flex-col bg-white dark:bg-[#1A1A1A] border dark:border-[#454545] pointer-events-auto shadow-[0_10px_40px_10px_rgba(0,0,0,0.08)] rounded-xl lg:w-7/12 w-11/12"},nf={class:"py-2.5 px-4 flex justify-between items-center border-0 border-b border-solid border-gray-200 dark:border-b-[#454545]"},of={class:"font-medium text-gray-800 dark:text-[#ffffff]"},rf={class:"p-4 mim-h-0 h-full overflow-auto"},rr=e.defineComponent({__name:"modal-edit",props:{schema:{},defaultValue:{},mode:{},token:{},form:{},api:{},method:{}},emits:["close","save","edit"],setup(o,{emit:t}){const n=o,r=t,l=e.ref(n.schema),a=e.ref(n.defaultValue?JSON.parse(JSON.stringify(n.defaultValue)):{}),s=e.ref({}),i=e.ref(n.token||""),c=e.ref(n.token||""),d=e.ref(n.mode),u=()=>{const k=n.method?.trim().toUpperCase();return k==="GET"||k==="POST"||k==="PUT"?k:d.value==="add"?"POST":"PUT"},p=()=>{pe.notify({type:"success",title:"Успішно",message:`Дані успішно ${d.value==="add"?"збережено":"оновлено"}`})},g=k=>{const v={};k.id!==void 0&&k.id!==null&&(v.id=k.id,c.value=k.id.toString()),k.obj&&typeof k.obj=="object"&&Object.assign(v,k.obj),Object.keys(v).length&&(a.value={...a.value,...v})},h=async k=>{if(console.log(k),k.ok){await k.json().catch(()=>({})),p(),r("save",a.value);return}const v=await k.json().catch(()=>({})),x=v.message||v.error;if(k.status===400){pe.notify({type:"warning",title:"Помилка валідації",message:x||"Некоректні дані (400)"});return}if(k.status===500){pe.notify({type:"error",title:"Серверна помилка",message:x||"Виникла помилка на сервері (500)"});return}pe.notify({type:"error",title:"Помилка",message:`Статус: ${k.status}`})};async function m(){const k=s.value.validate();if(k){pe.notify({type:"warning",title:"Помилка валідації",message:Object.entries(k).map(([x,_])=>`${x}: ${_}`).join(`
|
|
@@ -48,4 +48,4 @@ ${c}
|
|
|
48
48
|
min-width: auto !important;
|
|
49
49
|
min-height: auto !important;
|
|
50
50
|
object-fit: fill !important;
|
|
51
|
-
`.replace(/\s+/g," ").trim())}})};return e.watch(i,N=>{N&&(e.nextTick(()=>{O(i.value)}),i.value.on("update",async E=>{const V=E.editor.getHTML(),B=await Fm(V,t.format);B!==t.modelValue&&V!=="<p></p>"&&(n.value=B),setTimeout(()=>{O(E.editor)},10)}))}),e.onMounted(async()=>{const N=await po(t.modelValue||"",t.format);await u(r.value,N),e.nextTick(()=>{i.value&&setTimeout(()=>{O(i.value)},100)})}),e.onBeforeUnmount(()=>{p()}),(N,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["bg-white rounded-md w-full",{"fixed left-0 right-0 top-0 bottom-0 z-[100000]":e.unref(x)}])},[e.createElementVNode("div",zg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,V=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:V},[e.unref(i)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(V),{key:0,editor:e.unref(c),onToggleFullscreen:e.unref(_)},null,40,["editor","onToggleFullscreen"])):e.createCommentVNode("",!0)],64))),128))]),e.createElementVNode("div",{onClick:E[1]||(E[1]=(...V)=>e.unref(d)&&e.unref(d)(...V)),class:"relative w-full px-4 py-2 bg-white rounded-b-lg editor-content",style:e.normalizeStyle({height:e.unref(x)?"calc(95vh - 44px)":o.height})},[e.withDirectives(e.createElementVNode("div",Pg,[e.createElementVNode("div",{ref_key:"editorElement",ref:r,class:"relative w-full"},null,512),e.unref(g)?(e.openBlock(),e.createElementBlock("div",jg,"Loading editor...")):e.createCommentVNode("",!0),e.unref(h)?(e.openBlock(),e.createElementBlock("div",Ug,e.toDisplayString(e.unref(h)),1)):e.createCommentVNode("",!0)],512),[[e.vShow,!e.unref(m)]]),e.withDirectives(e.createElementVNode("div",Hg,[e.createVNode(Wn,{ref_key:"htmlTextarea",ref:k,modelValue:e.unref(b),"onUpdate:modelValue":E[0]||(E[0]=V=>e.isRef(b)?b.value=V:null),height:"100%",syntax:a.value,theme:"vs-light"},null,8,["modelValue","syntax"])],512),[[e.vShow,e.unref(m)]])],4),e.createElementVNode("div",qg,[e.createElementVNode("div",Kg,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["min-w-[96px] h-[30px] px-[14px] border border-[#cfd6e0] bg-[#f3f5f8] text-[8px] font-bold uppercase tracking-[0.06em] leading-none cursor-pointer transition-colors duration-200 border-b-[1px] border-b-[#cfd6e0] rounded-none rounded-bl-[8px] hover:bg-[#eef1f5] hover:text-[#667284]",e.unref(m)?"text-[#8f99aa]":"!bg-white text-[#49556a] border-[#cfd6e0] border-t-transparent relative z-[1]"]),onClick:E[2]||(E[2]=V=>e.unref(v)(!1))},e.toDisplayString(e.unref(l)("form.richtext.editor")),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["min-w-[96px] h-[30px] px-[14px] border border-[#cfd6e0] border-l-0 bg-[#f3f5f8] text-[8px] font-bold uppercase tracking-[0.06em] leading-none cursor-pointer transition-colors duration-200 border-b-[1px] border-b-[#cfd6e0] rounded-none rounded-br-[8px] hover:bg-[#eef1f5] hover:text-[#667284]",e.unref(m)?"!bg-white text-[#49556a] border-[#cfd6e0] border-t-transparent relative z-[1]":"text-[#8f99aa]"]),onClick:E[3]||(E[3]=V=>e.unref(v)(!0))},e.toDisplayString(s.value),3)])])],2))}})},Symbol.toStringTag,{value:"Module"}));ge.ModalEdit=rr,ge.VForm=tt,ge.VsInputAddress=Zo,ge.VsInputArray=Xo,ge.VsInputArraySelect=yn,ge.VsInputCheckbox=vo,ge.VsInputCodegen=qo,ge.VsInputColor=Go,ge.VsInputContainer=No,ge.VsInputDate=rm,ge.VsInputEmail=On,ge.VsInputFile=Vo,ge.VsInputFileList=So,ge.VsInputKeyValue=Ko,ge.VsInputMask=sn,ge.VsInputMonaco=Wn,ge.VsInputNumber=wo,ge.VsInputRadio=Un,ge.VsInputRange=Yo,ge.VsInputRichtext=Do,ge.VsInputSelect=Kn,ge.VsInputSlug=Ho,ge.VsInputStatic=Rn,ge.VsInputSwitcher=In,ge.VsInputTag=Uo,ge.VsInputTel=zn,ge.VsInputText=Rt,ge.VsInputTextArray=Wo,ge.VsInputTextarea=Mo,ge.default=tt,ge.inputs=Qo,ge.richtextLocaleEn=mr,ge.richtextLocaleUk=hr,ge.richtextMessages=eo,ge.vsInputDatatable=To,ge.vsInputMap=jo,Object.defineProperties(ge,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
51
|
+
`.replace(/\s+/g," ").trim())}})};return e.watch(i,N=>{N&&(e.nextTick(()=>{O(i.value)}),i.value.on("update",async E=>{const V=E.editor.getHTML(),B=await Fm(V,t.format);B!==t.modelValue&&V!=="<p></p>"&&(n.value=B),setTimeout(()=>{O(E.editor)},10)}))}),e.onMounted(async()=>{const N=await po(t.modelValue||"",t.format);await u(r.value,N),e.nextTick(()=>{i.value&&setTimeout(()=>{O(i.value)},100)})}),e.onBeforeUnmount(()=>{p()}),(N,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["bg-white rounded-md w-full",{"fixed left-0 right-0 top-0 bottom-0 z-[100000]":e.unref(x)}])},[e.createElementVNode("div",zg,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,V=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:V},[e.unref(i)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(V),{key:0,editor:e.unref(c),onToggleFullscreen:e.unref(_)},null,40,["editor","onToggleFullscreen"])):e.createCommentVNode("",!0)],64))),128))]),e.createElementVNode("div",{onClick:E[1]||(E[1]=(...V)=>e.unref(d)&&e.unref(d)(...V)),class:"relative w-full px-4 py-2 bg-white rounded-b-lg editor-content",style:e.normalizeStyle({height:e.unref(x)?"calc(95vh - 44px)":o.height})},[e.withDirectives(e.createElementVNode("div",Pg,[e.createElementVNode("div",{ref_key:"editorElement",ref:r,class:"relative w-full"},null,512),e.unref(g)?(e.openBlock(),e.createElementBlock("div",jg,"Loading editor...")):e.createCommentVNode("",!0),e.unref(h)?(e.openBlock(),e.createElementBlock("div",Ug,e.toDisplayString(e.unref(h)),1)):e.createCommentVNode("",!0)],512),[[e.vShow,!e.unref(m)]]),e.withDirectives(e.createElementVNode("div",Hg,[e.createVNode(Wn,{ref_key:"htmlTextarea",ref:k,modelValue:e.unref(b),"onUpdate:modelValue":E[0]||(E[0]=V=>e.isRef(b)?b.value=V:null),height:"100%",syntax:a.value,theme:"vs-light"},null,8,["modelValue","syntax"])],512),[[e.vShow,e.unref(m)]])],4),e.createElementVNode("div",qg,[e.createElementVNode("div",Kg,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["min-w-[96px] h-[30px] px-[14px] border border-[#cfd6e0] bg-[#f3f5f8] text-[8px] font-bold uppercase tracking-[0.06em] leading-none cursor-pointer transition-colors duration-200 border-b-[1px] border-b-[#cfd6e0] rounded-none rounded-bl-[8px] hover:bg-[#eef1f5] hover:text-[#667284]",e.unref(m)?"text-[#8f99aa]":"!bg-white text-[#49556a] border-[#cfd6e0] border-t-transparent relative z-[1]"]),onClick:E[2]||(E[2]=V=>e.unref(v)(!1))},e.toDisplayString(e.unref(l)("form.richtext.editor")),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["min-w-[96px] h-[30px] px-[14px] border border-[#cfd6e0] border-l-0 bg-[#f3f5f8] text-[8px] font-bold uppercase tracking-[0.06em] leading-none cursor-pointer transition-colors duration-200 border-b-[1px] border-b-[#cfd6e0] rounded-none rounded-br-[8px] hover:bg-[#eef1f5] hover:text-[#667284]",e.unref(m)?"!bg-white text-[#49556a] border-[#cfd6e0] border-t-transparent relative z-[1]":"text-[#8f99aa]"]),onClick:E[3]||(E[3]=V=>e.unref(v)(!0))},e.toDisplayString(s.value),3)])])],2))}})},Symbol.toStringTag,{value:"Module"}));ge.ModalEdit=rr,ge.VForm=tt,ge.VsInputAddress=Zo,ge.VsInputArray=Xo,ge.VsInputArraySelect=yn,ge.VsInputCheckbox=vo,ge.VsInputCodegen=qo,ge.VsInputColor=Go,ge.VsInputContainer=No,ge.VsInputDate=rm,ge.VsInputEmail=On,ge.VsInputFile=Vo,ge.VsInputFileList=So,ge.VsInputKeyValue=Ko,ge.VsInputMask=sn,ge.VsInputMonaco=Wn,ge.VsInputNumber=wo,ge.VsInputRadio=Un,ge.VsInputRange=Yo,ge.VsInputRichtext=Do,ge.VsInputSelect=Kn,ge.VsInputSlug=Ho,ge.VsInputStatic=Rn,ge.VsInputSwitcher=In,ge.VsInputTag=Uo,ge.VsInputTel=zn,ge.VsInputText=Rt,ge.VsInputTextArray=Wo,ge.VsInputTextarea=Mo,ge.default=tt,ge.inputs=Qo,ge.richtextLocaleEn=mr,ge.richtextLocaleUk=hr,ge.richtextMessages=eo,ge.vsInputDatatable=To,ge.vsInputMap=jo,Object.defineProperties(ge,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|