@opengis/form 0.0.144 → 0.0.145
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-BnGSvQ97.js → index-2PgkAh9S.js} +24 -8
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/src/components/inputs/map/map-search.vue.d.ts.map +1 -1
- package/dist/{vs-richtext-Ds-1fLZD.js → vs-richtext-jAxu4iP2.js} +1 -1
- package/package.json +1 -1
package/dist/index.umd.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(function(me,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):(me=typeof globalThis<"u"?globalThis:me||self,e(me.FormBuilder={},me.Vue,me.OpenGISCore,me.lucide))})(this,(function(me,e,pe,P){"use strict";const yo=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 c=s.currentTarget.getBoundingClientRect();r.value={top:`${c.bottom+4}px`,left:`${Math.min(c.left,window.innerWidth-230)}px`},n.value=!0}function a(){n.value=!1}return(s,c)=>(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&&o.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(o.text),5)):e.createCommentVNode("",!0)]))],64))}}),qr={class:"w-full relative"},Kr={key:0,class:"text-[14px] font-medium text-gray-900 mb-2 flex items-center gap-1"},Wr={class:"opacity-100"},Gr={key:0,class:"text-red-500 text-[14px]"},Yr={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},Xr=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,c)=>(e.openBlock(),e.createElementBlock("div",qr,[r.value?(e.openBlock(),e.createElementBlock("div",Kr,[e.createElementVNode("span",Wr,e.toDisplayString(n.value),1),l.value?(e.openBlock(),e.createElementBlock("span",Gr,"*")):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(yo,{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":o.item.disabled}})),o.error?(e.openBlock(),e.createElementBlock("span",Yr,e.toDisplayString(o.error),1)):e.createCommentVNode("",!0)]))}}),Zr={class:"w-full relative flex flex-row items-center gap-2"},Jr={key:0,class:"text-red-500 text-[14px]"},Qr={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},el=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),c=e.computed(()=>{if(!s.value)return{};const d=`${a.value*100}%`;return{flexBasis:d,maxWidth:d}}),i=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 f=Math.max(d-Math.max(u??0,0),0)/d;if(!f)return{};const h=`${f*100}%`;return{flexBasis:h,maxWidth:h}});return(d,u)=>(e.openBlock(),e.createElementBlock("div",Zr,[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(c.value)},[e.createTextVNode(e.toDisplayString(n.value)+" ",1),o.item?.rules?.includes("required")&&n.value?(e.openBlock(),e.createElementBlock("span",Jr,"*")):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(yo,{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(i.value)},[e.renderSlot(d.$slots,"default",e.normalizeProps(e.guardReactiveProps(d.$attrs)))],4),o.error?(e.openBlock(),e.createElementBlock("span",Qr,e.toDisplayString(o.error),1)):e.createCommentVNode("",!0)]))}}),tl={class:"w-full relative"},nl={key:0,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},ol=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",tl,[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps(t.$attrs))),o.error?(e.openBlock(),e.createElementBlock("span",nl,e.toDisplayString(o.error),1)):e.createCommentVNode("",!0)]))}}),rl={class:"flex-1 min-w-0"},ll={key:0,class:"text-sm font-medium text-slate-700 dark:text-slate-200 flex items-center gap-1"},al={class:"truncate"},sl={key:0,class:"text-red-500 text-[14px]"},il=["innerHTML"],cl={key:0,class:"mt-1 text-xs text-red-500"},dl={default:Xr,horizontal:el,inline:ol,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 c=typeof localStorage<"u"?localStorage.getItem("locale"):null;n.value=c||"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)}),(c,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-full relative",{"opacity-60":o.item?.disabled}])},[e.createElementVNode("div",{class:e.normalizeClass(["gap-2 md:flex-row md:items-center md:justify-between",[["switcher","native-select"].includes(o.item.type)?"flex flex-col":""]])},[e.createElementVNode("div",rl,[o.ua||o.label?(e.openBlock(),e.createElementBlock("p",ll,[e.createElementVNode("span",al,e.toDisplayString(o.item[n.value]||o.ua||o.label),1),l.value?(e.openBlock(),e.createElementBlock("span",sl,"*")):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,il)):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:e.normalizeClass(["w-full",["select","native-select"].includes(o.item.type)?"md:w-[30%]":"md:w-auto"])},[e.renderSlot(c.$slots,"default",e.normalizeProps(e.guardReactiveProps(c.$attrs)))],2)],2),a.value?(e.openBlock(),e.createElementBlock("p",cl,e.toDisplayString(a.value),1)):e.createCommentVNode("",!0)],2))}})};function Oe(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 ul=["placeholder","disabled"],pl=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}=Oe(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??"");return(s,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"password","onUpdate:modelValue":c[0]||(c[0]=i=>r.value=i),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":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,ul)),[[e.vModelText,r.value]])}}),fl=["placeholder","disabled","maxlength","minlength"],Ft=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}=Oe(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>!!t.disabled),a=e.computed(()=>t.placeholder??""),s=e.computed(()=>t.maxlength??void 0),c=e.computed(()=>t.minlength??void 0);function i(){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]=f=>r.value=f),placeholder:a.value,disabled:l.value,maxlength:s.value,minlength:c.value,onBlur:i,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[o.customClass,e.unref(n),{"!border-red-600":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,fl)),[[e.vModelText,r.value]])}}),ml=["step","placeholder","disabled","min","max"],bo=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}=Oe(t.style),r=e.useAttrs(),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!t.disabled),s=u=>{if(u==null||u==="")return;const f=typeof u=="string"?u.trim().replace(",","."):u,h=Number(f);return Number.isFinite(h)?h:void 0},c=e.computed(()=>s(t.min??r.min)),i=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,f)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:"number",step:d.value,"onUpdate:modelValue":f[0]||(f[0]=h=>l.value=h),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:c.value,max:i.value},null,10,ml)),[[e.vModelText,l.value]])}}),Fn=o=>!!String(o??"").trim(),Mt=o=>o?.color?String(o.color):"",Pt=o=>{const t=o?.icon;if(typeof t=="string")return t;const n=o?.imgUrl;return typeof n=="string"?n:""},jt=o=>{const t=o?.icon;return t&&typeof t!="string"?t:null},hl={class:"flex items-center gap-[4px]"},gl=["value","id","disabled"],yl=["for"],bl=["innerHTML"],kl={key:1,class:"text-[14px] text-gray-700 flex items-center gap-2 dark:text-neutral-400"},xl=["src"],wl=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:y=>n("update:modelValue",y)}),a=e.computed(()=>!!r.disabled),s=e.computed(()=>Pt(r.option)),c=e.computed(()=>jt(r.option)),i=e.computed(()=>Mt(r.option)),d=e.computed(()=>!!(i.value&&!s.value&&!c.value)),u=e.computed(()=>!!(s.value&&i.value)),f=e.computed(()=>i.value?{color:i.value}:void 0),h=e.computed(()=>{if(!(!s.value||!i.value))return{backgroundColor:i.value,WebkitMaskImage:`url(${s.value})`,maskImage:`url(${s.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(y,m)=>(e.openBlock(),e.createElementBlock("div",hl,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",value:o.value,"onUpdate:modelValue":m[0]||(m[0]=x=>l.value=x),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:o.id,disabled:a.value},null,10,gl),[[e.vModelCheckbox,l.value]]),e.createElementVNode("label",{for:o.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",o.error?"border-red-600":""]])},[e.createVNode(e.unref(P.Check),{class:"h-4 w-4"})],2),o.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:o.html},null,8,bl)):(e.openBlock(),e.createElementBlock("span",kl,[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:i.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(h.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,xl)):c.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{key:3,class:"h-4 w-4",style:e.normalizeStyle(f.value)},null,8,["style"])):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(o.label),1)])]))],10,yl)]))}}),Cl=["name","value","disabled"],vl=["innerHTML"],El={key:1,class:"flex items-center gap-[6px] text-[14px]"},Bl={key:2,class:"text-[16px] inline-flex items-center justify-center"},_l=["src"],Vl=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:x=>{r("update:modelValue",x)}}),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"),c=e.computed(()=>({...n.option??{},icon:n.option?.icon??n.icon,imgUrl:n.option?.imgUrl??n.imgUrl,color:n.option?.color})),i=e.computed(()=>Pt(c.value)),d=e.computed(()=>jt(c.value)),u=e.computed(()=>Mt(c.value)),f=e.computed(()=>!!(u.value&&!i.value&&!d.value)),h=e.computed(()=>!!(i.value&&u.value)),y=e.computed(()=>u.value?{color:u.value}:void 0),m=e.computed(()=>{if(!(!i.value||!u.value))return{backgroundColor:u.value,WebkitMaskImage:`url(${i.value})`,maskImage:`url(${i.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(x,b)=>(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:o.id,value:o.value,"onUpdate:modelValue":b[0]||(b[0]=E=>l.value=E),disabled:o.disabled},null,8,Cl),[[e.vModelCheckbox,l.value]]),o.html?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-full",innerHTML:o.html},null,8,vl)):(e.openBlock(),e.createElementBlock("span",El,[f.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),h.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:e.normalizeStyle(m.value)},null,4)):i.value||d.value?(e.openBlock(),e.createElementBlock("span",Bl,[i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:i.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(y.value)},null,8,["style"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(x.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(o.label),1)])]))],2))}}),Sl={class:"flex items-center"},Mn=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:c=>{if(Array.isArray(n.modelValue)){let i=[...n.modelValue];c?i.includes(n.value)||i.push(n.value):i=i.filter(d=>d!==n.value),r("update:modelValue",i)}else r("update:modelValue",c)}}),s=e.ref(`vs-checkbox-${n.view||"default"}`);return(c,i)=>(e.openBlock(),e.createElementBlock("div",Sl,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value==="vs-checkbox-buttons"?e.unref(Vl):e.unref(wl)),{value:o.value,label:o.label,html:o.labelHtml,info:o.option?.info,disabled:o.disabled,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=d=>a.value=d),id:l,icon:o.icon,imgUrl:o.imgUrl,option:o.option,style:e.normalizeStyle(o.style),error:o.error},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]),_:1},8,["value","label","html","info","disabled","modelValue","icon","imgUrl","option","style","error"]))]))}}),$l={key:0,class:"flex items-start gap-x-1"},Nl={key:0,class:"text-red-500 text-[14px]"},Al=["title"],Fl=["disabled"],Dn=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",$l,[e.createVNode(Mn,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=a=>n.value=a),error:o.error||""},null,8,["modelValue","error"]),o.rules?.includes("required")?(e.openBlock(),e.createElementBlock("span",Nl,"*")):e.createCommentVNode("",!0),o.i?(e.openBlock(),e.createElementBlock("button",{key:1,class:"cursor-pointer",title:o.i,onClick:l[1]||(l[1]=e.withModifiers(()=>{},["prevent"]))},[e.createVNode(e.unref(P.Info),{class:"h-4 w-4 text-gray-500"})],8,Al)):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-${o.style?.primaryColor||"blue"}-500`:"bg-stone-200",o.customClass]]),disabled:o.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,Fl))}}),Ml=["id","innerHTML"],Ln=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:o.name,class:e.normalizeClass(["text-gray-900",o.customClass]),innerHTML:o.html?o.html:o.text},null,10,Ml))}}),Dl=["placeholder","disabled","name"],rn=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}=Oe(t.style),r=e.useModel(o,"modelValue"),l=e.ref(null);let a=null;function s(c){const i={9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},d=new Set;let u=!1;for(let h=0;h<c.length;h+=1){const y=c[h];y==="{"?u=!0:y==="}"?u=!1:u&&d.add(y)}const f={};return Object.keys(i).forEach(h=>{d.has(h)||(f[h]=i[h])}),{mask:c,definitions:f,lazy:!1}}return e.onMounted(async()=>{if(l.value){const{default:c}=await Promise.resolve().then(()=>no),i=s(t.mask||"");a=c(l.value,i),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,c=>{if(a){const i=s(c||"");a.updateOptions(i)}}),e.watch(r,c=>{a&&a.unmaskedValue!==c&&(a.value=c!=null?String(c):"")}),(c,i)=>(e.openBlock(),e.createElementBlock("input",{type:"text",ref_key:"inputEl",ref:l,placeholder:o.placeholder,disabled:o.disabled,name:o.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,Dl))}}),Ll={class:"relative w-full bg-white rounded-lg"},Tl={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},Il=["placeholder","disabled"],Tn=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}=Oe(t.style),r=e.useModel(o,"modelValue");return(l,a)=>(e.openBlock(),e.createElementBlock("div",Ll,[e.createElementVNode("div",Tl,[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:o.placeholder,disabled:o.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":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,Il),[[e.vModelText,r.value]])]))}}),Rl={class:"relative w-full bg-white rounded-lg"},Ol={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},zl=["value","placeholder","disabled"],In=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}=Oe(t.style),r=e.useModel(o,"modelValue"),l=e.computed(()=>r.value?r.value.startsWith("+")?r.value.slice(1):r.value:""),a=c=>{let{value:i}=c.target;i=i.replace(/^\+/,""),r.value=i?`+${i}`:""},s=c=>{const i=c,{data:d,inputType:u}=i;u&&u.startsWith("delete")||d&&/\D/.test(d)&&i.preventDefault()};return e.watch(()=>r.value,c=>{c&&!c.startsWith("+")?r.value=`+${c.replace(/^\+/,"")}`:c||(r.value="")},{immediate:!0}),(c,i)=>(e.openBlock(),e.createElementBlock("div",Rl,[e.createElementVNode("div",Ol,[e.createVNode(e.unref(P.Phone),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),i[0]||(i[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:o.placeholder,disabled:o.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":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,zl)]))}}),Pl=["value","disabled"],jl=["innerHTML"],Ul={key:1,class:"flex items-center gap-2"},Hl=["src"],ql={class:"text-[13px] text-gray-700"},Kl=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(()=>Pt(t.option)),a=e.computed(()=>jt(t.option)),s=e.computed(()=>Mt(t.option)),c=e.computed(()=>!!(s.value&&!l.value&&!a.value)),i=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(f,h)=>(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":h[0]||(h[0]=y=>n.value=y),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Pl),[[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,jl)):(e.openBlock(),e.createElementBlock("div",Ul,[c.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),i.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,Hl)):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",ql,e.toDisplayString(t.text),1)]))],2))}}),Wl=["value","disabled"],Gl=["innerHTML"],Yl={key:1,class:"flex items-center gap-2"},Xl=["src"],Zl={class:"text-[13px] text-gray-700"},Jl={"vs-input-radio-default":Kl,"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(()=>Pt(t.option)),a=e.computed(()=>jt(t.option)),s=e.computed(()=>Mt(t.option)),c=e.computed(()=>!!(s.value&&!l.value&&!a.value)),i=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(f,h)=>(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":h[0]||(h[0]=y=>n.value=y),type:"radio",value:t.value,disabled:r.value,class:"hidden"},null,8,Wl),[[e.vModelRadio,n.value]]),t.html?(e.openBlock(),e.createElementBlock("div",{key:0,class:"w-full",innerHTML:t.html},null,8,Gl)):(e.openBlock(),e.createElementBlock("div",Yl,[c.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),i.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,Xl)):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",Zl,e.toDisplayString(t.text),1)]))],2))}})},ko=o=>Array.isArray(o)?o:Array.isArray(o?.data)?o.data:[],xo=o=>{const t=o.host??"",n=o.prefix??"api",r=o.api??`/${n}/suggest/${o.data}`;return`${t}${r}`},Ql=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 c=await(await fetch(`${xo(l)}?${a.toString()}`)).json();return ko(c)}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 c=await(await fetch(`${xo(l)}?${a.toString()}`)).json();return ko(c)[0]??null}catch{return null}}}),Rn=({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}=Ql(()=>({data:o.data,options:o.options,api:o.api,prefix:o.prefix,host:o.host,start:o.start,parentValue:l.value})),c=async(i="")=>{const d=o.data?await a(i):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:c}},ea=/\{\{\s*([^}]+?)\s*\}\}/g,ta=o=>(o?String(o):"").replace(/<[^>]*>/g,"").trim(),na=(o,t)=>t.split(".").reduce((n,r)=>n==null?n:n[r.trim()],o),ln=(o,t)=>{if(!o)return"";const n=(t??"").trim();return n?n.replace(ea,(r,l)=>{const a=String(l).trim(),s=o,i=(a.includes(".")?na(s,a):void 0)??s[a];return i!=null?String(i):""}):o.text??""},On=(o,t)=>{if(!o)return"";const n=ln(o,t);return ta(n)||o.text||""},zn=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(()=>Jl[`vs-input-radio-${t.view}`]),l=e.computed(()=>t.slot??t?.optionTemplate??""),a=e.computed(()=>Fn(l.value)),s=y=>ln(y,l.value),c=y=>On(y,l.value),i=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:f,loadOptions:h}=Rn({props:t,formValues:u});return e.onMounted(async()=>{await h()}),(y,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f),x=>(e.openBlock(),e.createElementBlock("div",{key:x?.id,class:e.normalizeClass(["flex items-stretch",o.position==="horizontal"?t.customClass:""]),style:e.normalizeStyle(d.value)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps({text:c(x),html:a.value?s(x):"",option:x,value:x.id.toString(),checked:n.value?.toString?.()===x.id?.toString?.(),"custom-class":o.position==="horizontal"?"":t.customClass,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=b=>n.value=b)},{ref_for:!0},y.$attrs),null,16,["text","html","option","value","checked","custom-class","modelValue"]))],6))),128))],2))}}),oa={key:1,class:"w-full flex flex-col gap-4"},ra={key:0,class:"text-sm font-medium text-muted-foreground my-2"},la="Без категорії",aa=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:c}=Rn({props:{...n,options:n.options},formValues:a}),i=e.computed(()=>s.value),d=k=>k?.value||k?.id||k?.text||k,u=e.computed(()=>n.slot??n?.optionTemplate??""),f=e.computed(()=>Fn(u.value)),h=k=>ln(k,u.value),y=k=>On(k,u.value),m=k=>`lg:col-span-${k||12}`,x=e.computed(()=>[n.position==="vertical"?"flex flex-col":"",n.colSpan?"grid":"flex justify-start"]),b=k=>k==null||k===""?null:typeof k=="string"||typeof k=="number"?k:String(k),E=e.computed(()=>{if(!n.group)return[];const k=new Map;i.value.forEach(N=>{const B=N[n.group],V=b(B);k.has(V)||k.set(V,[]),k.get(V)?.push(N)});const C=[];n.values?.length&&n.values.forEach(N=>{const B=b(N);C.push(B)});const w=new Set,L=N=>{const B=k.get(N)||[];if(!B.length)return null;const V=N===null?"group-null":`group-${String(N)}`,S=N===null?la:String(N);return w.add(N),{key:V,label:S,options:B}},z=[];return C.forEach(N=>{const B=L(N);B&&z.push(B)}),k.forEach((N,B)=>{if(w.has(B))return;const V=L(B);V&&z.push(V)}),z});return e.watch(()=>n.modelValue,k=>{if(typeof k=="boolean"&&i.value.length===1){const C=d(i.value[0]);l[C]=k}else if(Array.isArray(k)){const C=new Set(k);i.value.forEach(w=>{if(!w.disabled){const L=d(w);l[L]=C.has(L)}})}},{immediate:!0}),e.watch(l,()=>{if(!i.value.length){r("update:modelValue",null);return}const k=Object.entries(l).filter(([,C])=>C).map(([C])=>C);r("update:modelValue",k.length===0?[]:k)},{deep:!0}),e.onMounted(async()=>{if(await c(),typeof n.modelValue=="boolean"&&i.value.length===1){const k=d(i.value[0]);l[k]=n.modelValue}else if(Array.isArray(n.modelValue)){const k=new Set(n.modelValue);i.value.forEach(C=>{if(!C.disabled){const w=d(C);l[w]=k.has(w)}})}}),(k,C)=>n.group?(e.openBlock(),e.createElementBlock("div",oa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,w=>(e.openBlock(),e.createElementBlock("div",{key:w.key,class:"flex flex-col gap-2"},[w.label?(e.openBlock(),e.createElementBlock("span",ra,e.toDisplayString(w.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["p-0 w-full gap-[12px]",x.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.options,L=>(e.openBlock(),e.createBlock(Mn,{modelValue:l[d(L)],"onUpdate:modelValue":z=>l[d(L)]=z,value:d(L),class:e.normalizeClass(m(o.colSpan)),disabled:n.disabled||L.disabled,label:y(L),labelHtml:f.value?h(L):"",key:`${w.key}-${d(L)}`,icon:L?.icon,imgUrl:L?.imgUrl,option:L,view:o.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]",x.value])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,w=>(e.openBlock(),e.createBlock(Mn,{modelValue:l[d(w)],"onUpdate:modelValue":L=>l[d(w)]=L,value:d(w),class:e.normalizeClass(m(o.colSpan)),disabled:n.disabled||w.disabled,label:y(w),labelHtml:f.value?h(w):"",key:d(w),icon:w?.icon,imgUrl:w?.imgUrl,option:w,view:o.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2))}}),ye=(o,t)=>{const n=o.__vccOpts||o;for(const[r,l]of t)n[r]=l;return n},wo=ye(aa,[["__scopeId","data-v-16c6c9cd"]]),sa=["type","placeholder","disabled"],ia=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}=Oe(n.style),a=t,s=e.computed({get:()=>r(n.modelValue),set:u=>a("update:modelValue",u)}),c=e.computed(()=>n.mode==="datetime"?"datetime-local":n.mode),i=e.computed(()=>!!n.disabled),d=e.computed(()=>n.placeholder??"");return(u,f)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{type:c.value,"onUpdate:modelValue":f[0]||(f[0]=h=>s.value=h),placeholder:d.value,disabled:i.value,ref:"date",class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[o.modelValue?"":"text-opacity-50",e.unref(l)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,sa)),[[e.vModelDynamic,s.value]])}}),ca=(o,t)=>{if(!t||!Object.keys(t).length)return o;const[n,r=""]=o.split("?"),l=new URLSearchParams(r);Object.entries(t).forEach(([s,c])=>{c==null||c===""||l.set(s,String(c))});const a=l.toString();return a?`${n}?${a}`:n},Co=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:c}=t,i=r||`/file/upload/uploads?id=${l||""}&form=${a||""}&table=${s||""}`,d=ca(i,c);return(await fetch(d,{method:"POST",body:n}).then(f=>f.json()))?.result}catch(n){return pe.notify({type:"error",title:"Помилка!",message:"Сталась помилка під час завантаження файлу",position:"right-bottom"}),console.error("Сталась помилка завантаження файлу",n),null}},da=async o=>{try{return await fetch(`file/delete${o}`),!0}catch(t){return console.error(t),!1}},vo=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",c=a||s,i=document.createElement("a");i.setAttribute("download",c),i.href=window.URL.createObjectURL(n),i.click(),window.URL.revokeObjectURL(i.href)}catch(t){console.error(t.message)}},ua=o=>{if(!o)return"";const t=o?.split(".");return t[t.length-1]},pa=o=>{const t=ua(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},fa=["title"],ma={class:"absolute hidden top-0 right-0 flex items-center gap-x-2 w-full h-full justify-center"},Pn=ye(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=i=>typeof i=="string"?i:i?.file_path||"",s=()=>{const i=l.value;da(i),r.multiple&&Array.isArray(t.value)?t.value=t.value.filter(d=>a(d)!==i):t.value=""},c=()=>{l.value&&window.open(l.value,"_blank")};return(i,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(pa)(l.value)),{src:l.value,alt:"file",class:"w-full h-full object-cover cursor-pointer",onClick:d[0]||(d[0]=u=>e.unref(vo)(l.value))},null,8,["src"])),e.createElementVNode("div",ma,[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:c,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(vo)(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,fa))}}),[["__scopeId","data-v-21affae7"]]),ha={class:"flex items-center gap-x-2"},ga=["accept","multiple","disabled"],ya={key:1,class:"flex items-center flex-wrap gap-2"},ba={key:1,class:"loader"},ka={key:1,class:"loader"},Eo=ye(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 k=r.value;return!n.multiple||!Array.isArray(k)?[]:k}),s=e.ref(null),c=e.ref(!1),i=e.inject("values"),d=e.computed(()=>n.format?n.format.split(",").map(k=>k.trim().toLowerCase()).filter(Boolean):[]),u=k=>{if(n.max_size&&k.size>n.max_size*1024*1024){const C=(k.size/1048576).toFixed(2);return pe.notify({type:"error",title:"Помилка!",message:`Файл "${k.name}" занадто великий. Максимальний розмір: ${n.max_size} МБ, розмір файлу: ${C} МБ`,position:"right-bottom"}),!1}return!0},f=k=>{if(!d.value.length)return!0;const C=`.${k.name.split(".").pop()?.toLowerCase()||""}`,w=d.value.includes(C);return w||pe.notify({type:"error",title:"Помилка!",message:`Неприпустимий формат файлу "${k.name}". Дозволені формати: ${d.value.join(", ")}`,position:"right-bottom"}),w},h=e.computed(()=>{const k={},C=[];if(!n.customParams?.length)return{params:k,missingSources:C};const w=i?.value??{};return n.customParams.forEach(L=>{if(!L)return;const[z,N]=L.split("="),B=z?.trim(),V=N?.trim();if(!B||!V)return;const S=w[V];if(S==null||S===""){C.push(V);return}k[B]=S}),{params:k,missingSources:C}}),y=()=>{const{params:k}=h.value;return{api:n.api,customParams:Object.keys(k).length?k:void 0}},m=()=>{const k=h.value.missingSources;if(!k.length)return!0;const C=k.join(", ");return pe.notify({type:"warning",title:"Заповніть поля",message:`Поля (${C}) необхідні для завантаження файлу`,position:"right-bottom"}),!1},x=k=>{pe.notify({type:"error",title:"Помилка завантаження",message:k||"Не вдалося завантажити файл. Спробуйте ще раз.",position:"right-bottom"})},b=()=>{n.disabled||c.value||m()&&s.value?.click()},E=async k=>{const{files:C}=k.target;if(!C||C.length===0)return;if(!m()){s.value&&(s.value.value="");return}const w=Array.from(C);if(n.max_size&&w.filter(N=>!u(N)).length>0){s.value&&(s.value.value="");return}if(w.filter(z=>!f(z)).length>0){s.value&&(s.value.value="");return}c.value=!0;try{if(n.multiple){const z=Array.from(C).map(async M=>await Co(M,y())),N=await Promise.all(z),B=N.filter(M=>M?.file_path);if(B.length===0){x();return}B.length<N.length&&x("Деякі файли не вдалося завантажити. Перевірте їх та спробуйте знову.");const V=B.map(M=>M.file_path),S=Array.isArray(r.value)?r.value:[];r.value=[...S,...V],l("change",r.value)}else{const z=C[0],N=await Co(z,y());if(!N?.file_path){x();return}const B=N.file_path;r.value=B,l("change",B)}}catch(z){const N=z?.message||void 0;x(N)}finally{c.value=!1,s.value&&(s.value.value="")}};return(k,C)=>(e.openBlock(),e.createElementBlock("div",ha,[e.createElementVNode("input",{class:"hidden",ref_key:"fileInput",ref:s,type:"file",accept:n.format,multiple:o.multiple,onChange:E,disabled:c.value||o.disabled},null,40,ga),!o.multiple&&r.value&&!Array.isArray(r.value)?(e.openBlock(),e.createBlock(Pn,{key:0,item:r.value,value:r.value,"onUpdate:value":C[0]||(C[0]=w=>r.value=w)},null,8,["item","value"])):o.multiple?(e.openBlock(),e.createElementBlock("div",ya,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(w,L)=>(e.openBlock(),e.createBlock(Pn,{multiple:o.multiple,key:L,value:r.value,"onUpdate:value":C[1]||(C[1]=z=>r.value=z),item:w},null,8,["multiple","value","item"]))),128)),e.createElementVNode("div",{onClick:b,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",o.disabled||c.value?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-blue-500 hover:bg-blue-50"])},[c.value?(e.openBlock(),e.createElementBlock("div",ba)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2)])):e.createCommentVNode("",!0),o.multiple?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:2,onClick:b,class:e.normalizeClass([o.disabled||c.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"])},[c.value?(e.openBlock(),e.createElementBlock("div",ka)):(e.openBlock(),e.createBlock(e.unref(P.Plus),{key:0,class:"h-4 w-4"}))],2))]))}}),[["__scopeId","data-v-f452b969"]]),xa={class:"vs-input-file2 flex flex-col gap-4"},wa={class:"flex items-center gap-x-2"},Ca=["accept","disabled"],va={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"},Ea={key:0,class:"rounded-lg border border-[#CFD9E0] bg-white p-4 shadow-sm"},Ba={class:"flex items-center justify-between text-sm"},_a={class:"truncate pr-4"},Va={class:"font-medium text-slate-800 truncate"},Sa={class:"text-slate-500"},$a={class:"text-slate-500 whitespace-nowrap"},Na={class:"mt-3 h-2 rounded-full bg-slate-100 overflow-hidden"},Aa={class:"mt-3 flex flex-wrap gap-2 text-sm"},Fa={key:0,class:"mt-2 text-sm text-rose-600"},Ma=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),c=e.ref(!1),i=e.ref(""),d=e.ref(null),u=e.inject("values"),f=e.computed(()=>t.format?t.format.split(",").map(R=>R.trim().toLowerCase()).filter(Boolean):[]),h=e.computed(()=>!l.value||!l.value.size?0:Math.min(100,Math.round(s.value/l.value.size*100))),y=e.computed(()=>l.value?`${b(s.value)} / ${b(l.value.size)}`:""),m=e.computed(()=>t.disabled?"opacity-50 cursor-not-allowed":c.value?"cursor-default text-blue-500":"cursor-pointer hover:border-blue-500 hover:bg-blue-50 hover:text-blue-500"),x=()=>{t.disabled||c.value||w()&&r.value?.click()},b=R=>{if(!Number.isFinite(R))return"0 B";const q=["B","KB","MB","GB"];let $=0,T=R;for(;T>=1024&&$<q.length-1;)T/=1024,$+=1;return`${T.toFixed($===0?0:1)} ${q[$]}`},E=R=>{if(!t.max_size)return!0;const q=t.max_size*1024*1024;return R.size>q?(pe.notify({type:"error",title:"Файл занадто великий",message:`Максимальний розмір ${t.max_size} МБ`,position:"right-bottom"}),!1):!0},k=R=>{if(!f.value.length)return!0;const q=`.${R.name.split(".").pop()?.toLowerCase()||""}`;return f.value.includes(q)?!0:(pe.notify({type:"error",title:"Непідтримуваний формат",message:`Дозволені формати: ${f.value.join(", ")}`,position:"right-bottom"}),!1)},C=e.computed(()=>{const R={},q=[];if(!t.customParams?.length)return{params:R,missing:q};const $=u?.value??{};return t.customParams.forEach(T=>{if(!T)return;const[D,Y]=T.split("="),W=D?.trim(),Z=Y?.trim();if(!W||!Z)return;const le=$[Z];le==null||le===""?q.push(Z):R[W]=le}),{params:R,missing:q}}),w=()=>C.value.missing.length?(pe.notify({type:"warning",title:"Заповніть поля",message:`Потрібні значення: ${C.value.missing.join(", ")}`,position:"right-bottom"}),!1):!0,L=R=>{const q=R.target,$=q.files?.[0];if($){if(!w()){q.value="";return}if(!E($)||!k($)){q.value="";return}l.value=$,s.value=0,a.value="",i.value=""}},z=async()=>{if(!l.value){x();return}try{i.value="";const R={id:a.value||"",fileName:l.value.name,subdir:t.subdir,size:l.value.size,...C.value.params},q=await fetch("/api/file/upload2/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)});if(!q.ok)throw new Error("Не вдалося ініціалізувати завантаження");const $=await q.json();a.value=$.id||a.value,s.value=$.uploaded||0,await N()}catch(R){i.value=R?.message||"Помилка при старті завантаження"}},N=async()=>{if(!(!l.value||!a.value)){c.value=!0;try{for(;s.value<l.value.size;){const R=s.value,q=Math.min(R+t.chunkSize,l.value.size),$=l.value.slice(R,q);d.value=new AbortController;const T=await fetch(`/api/file/upload2/${a.value}`,{method:"PATCH",headers:{"Content-Range":`bytes ${R}-${q-1}/${l.value.size}`},body:$,signal:d.value.signal});if(!T.ok)throw new Error("Помилка завантаження частини");const D=await T.json().catch(()=>({}));if(D.uploaded!=null?s.value=Number(D.uploaded):s.value=q,D.finished||s.value>=l.value.size){c.value=!1;const Y=D.file_path||D.url||a.value;n.value={file_id:D.file_id??a.value??Y,file_path:Y},pe.notify({type:"success",title:"Файл завантажено",message:l.value.name,position:"right-bottom"}),M();return}}}catch(R){if(R?.name==="AbortError")return;i.value=R?.message||"Помилка при завантаженні",c.value=!1}finally{d.value=null,c.value=!1}}},B=()=>{c.value&&(d.value?.abort(),d.value=null,c.value=!1)},V=async()=>{if(l.value){if(!a.value){await z();return}await N()}},S=()=>{d.value?.abort(),d.value=null,M()},M=()=>{const R=r.value;R&&(R.value=""),l.value=null,a.value="",s.value=0,i.value=""};return(R,q)=>(e.openBlock(),e.createElementBlock("div",xa,[e.createElementVNode("div",wa,[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",class:"hidden",accept:t.format,disabled:c.value||t.disabled,onChange:L},null,40,Ca),n.value?(e.openBlock(),e.createBlock(Pn,{key:0,item:n.value,"onUpdate:item":q[0]||(q[0]=$=>n.value=$),value:n.value,"onUpdate:value":q[1]||(q[1]=$=>n.value=$)},null,8,["item","value"])):(e.openBlock(),e.createElementBlock("div",{key:1,onClick:x,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])},[c.value?(e.openBlock(),e.createElementBlock("div",va,[q[2]||(q[2]=e.createElementVNode("div",{class:"loader"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(h.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",Ea,[e.createElementVNode("div",Ba,[e.createElementVNode("div",_a,[e.createElementVNode("div",Va,e.toDisplayString(l.value.name),1),e.createElementVNode("div",Sa,e.toDisplayString(b(l.value.size)),1)]),e.createElementVNode("div",$a,e.toDisplayString(y.value),1)]),e.createElementVNode("div",Na,[e.createElementVNode("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-300",style:e.normalizeStyle({width:`${h.value}%`})},null,4)]),e.createElementVNode("div",Aa,[!c.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),c.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:B}," Pause ")):e.createCommentVNode("",!0),!c.value&&s.value===0?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"rounded border border-slate-300 px-3 py-1",onClick:z}," Upload ")):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"rounded border border-rose-200 px-3 py-1 text-rose-600",onClick:S}," Cancel ")]),i.value?(e.openBlock(),e.createElementBlock("p",Fa,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),jn=ye(Ma,[["__scopeId","data-v-19ea2129"]]),Da={class:"flex items-center justify-center h-[30px] w-[30px]"},La={class:"max-w-[55vw]"},Ta={class:"text-sm font-semibold text-gray-800 truncate dark:text-neutral-200"},Ia={class:"flex items-center text-xs text-gray-500 truncate dark:text-neutral-500"},Ra={class:"px-[5px]"},Oa={class:""},an=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",Da,[e.createVNode(e.unref(P.FileText),{class:"icon icon-tabler icons-tabler-outline icon-tabler-file h-4 w-4"})]),e.createElementVNode("div",La,[e.createElementVNode("p",Ta,e.toDisplayString(o.item?.uploaded_name),1),e.createElementVNode("p",Ia,[e.createElementVNode("span",null,e.toDisplayString(o.item?.username),1),e.withDirectives(e.createElementVNode("span",Ra,"|",512),[[e.vShow,o.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",Oa,e.toDisplayString(r(o.item?.size)),1)])])],64))}}),za={class:"p-3 relative group flex items-center gap-x-3 border border-gray-200 bg-white rounded-md w-full"},Pa={key:0,class:"flex w-full gap-x-3 items-center"},ja={key:1,class:"flex gap-x-3 w-full items-center"},Ua={key:2,class:"flex gap-x-3 w-full items-center"},Ha=["href"],qa={key:3,class:"flex gap-x-3 w-full items-center"},Ka={class:"lg:absolute lg:top-3 lg:end-1 opacity-100"},Wa={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"},Ga={class:"inline-block"},Ya={class:"inline-block"},Xa={class:"inline-block"},Za=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(f){return["pdf","json"].includes(f.ext)}function a(f){return["ppt","pptx","doc","docx","xls","xlsx"].includes(f.ext)}function s(f){const h=document.createElement("a");h.setAttribute("download",f?.uploaded_name),h.href=f?.file_path,h.click()}function c(f){f?.file_path&&window.open(f.file_path,"_blank")}async function i(){try{await fetch(`${n.prefix}/widget/file/${n.item.entity_id}/${n.item.file_id}`),r("update")}catch(f){console.error(f)}}function d(){r("openModal",{title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати",confirm:i,updateListOnConfirm:!0})}function u(f){(n.item.ext==="jpg"||n.item.ext==="png")&&r("openLightbox",{item:n.item,index:f})}return(f,h)=>(e.openBlock(),e.createElementBlock("div",za,[o.item.ext==="jpg"||o.item.ext==="png"?(e.openBlock(),e.createElementBlock("div",Pa,[e.createElementVNode("div",{class:"max-w-[55vw] cursor-pointer flex gap-x-3 w-full items-center",onClick:h[0]||(h[0]=y=>u(o.index))},[e.createVNode(an,{item:o.item},null,8,["item"])])])):l(o.item)?(e.openBlock(),e.createElementBlock("div",ja,[e.createVNode(an,{item:o.item},null,8,["item"])])):a(o.item)?(e.openBlock(),e.createElementBlock("div",Ua,[e.createElementVNode("a",{href:`/api/file-preview?id=${o.item.file_id}`,target:"_blank",class:"flex gap-x-3 w-full items-center"},[e.createVNode(an,{item:o.item},null,8,["item"])],8,Ha)])):(e.openBlock(),e.createElementBlock("div",qa,[e.createVNode(an,{item:o.item},null,8,["item"])])),e.createElementVNode("div",Ka,[e.createElementVNode("div",Wa,[e.createElementVNode("div",Ga,[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:h[1]||(h[1]=y=>c(o.item))},[e.createVNode(e.unref(P.Eye),{class:"h-4 w-4"})])]),e.createElementVNode("div",Ya,[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:h[2]||(h[2]=y=>s(o.item))},[e.createVNode(e.unref(P.Download),{class:"h-4 w-4"})])]),h[4]||(h[4]=e.createElementVNode("div",{class:"w-px h-5 mx-1 bg-gray-200 dark:bg-neutral-700"},null,-1)),e.createElementVNode("div",Xa,[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:h[3]||(h[3]=y=>d())},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})])])])])]))}}),Ja={class:"flex flex-col widget-file xl:bg-white xl:rounded-xl dark:xl:bg-neutral-800 dark:xl:border-neutral-700 w-full"},Qa={class:"flex w-full mb-[12px] items-center gap-x-2"},es={class:"font-semibold text-gray-800 dark:text-neutral-200 text-[14px]"},ts={class1:"ml-auto"},ns={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"},os={key:0,class:"py-4 mb-4 space-y-4 border-gray-200 border-y dark:border-neutral-700"},rs={class:"relative"},ls={class:"absolute inset-y-0 start-0 flex items-center pointer-events-none z-[1] ps-3.5"},as={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"},ss={key:0},Bo=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),c=t,i=e.ref(!1),d=e.ref({}),u=e.ref([]),f=e.ref(""),h=e.computed(()=>Array.isArray(u.value)?u.value.filter(C=>C.ext==="jpg"||C.ext==="png").map(C=>C?.file_path):[]),y=e.computed(()=>f.value===""?u.value:u.value.filter(C=>C?.uploaded_name?.includes(f.value))),m=C=>{const w=h.value.findIndex(L=>L===C.item.file_path);w!==-1&&(a.value=!0,s.value=w)},x=async()=>{try{const C=await fetch(`${n.prefix}/widget/file/${l.value}`).then(w=>w.json());u.value=C?.rows}catch(C){console.error(C)}},b=async C=>{await Promise.all(Array.from(C.target.files).map(async w=>{const L=new FormData;L.append("file",w);try{const z=`${n.prefix}/widget/file/${l.value}`,N=await fetch(z,{method:"POST",body:L});return N.ok?(c("update","file-list"),w):(pe.notify({type:N.status>=400&&N.status<500?"warning":"error",title:"Error",message:`Error code: ${N.status}`}),null)}catch(z){return pe.notify({type:"error",title:"Error",message:z.message||"Unknown error"}),console.error(z),null}})),await x()},E=C=>{const w={...C};return C.cancel||(w.cancel=()=>{i.value=!1}),C.updateListOnConfirm&&(w.confirm=async()=>{await C.confirm(),i.value=!1,x()}),w},k=C=>{d.value=E(C),i.value=!0};return e.watch(l,C=>{C&&x()}),e.onMounted(()=>{l.value&&x()}),(C,w)=>{const L=e.resolveComponent("Lightbox"),z=e.resolveComponent("MessageBox");return e.openBlock(),e.createElementBlock("div",Ja,[e.createElementVNode("div",Qa,[e.createElementVNode("h2",es," Файлів: "+e.toDisplayString(u.value?.length),1),e.createElementVNode("div",ts,[e.createElementVNode("label",null,[e.createElementVNode("input",{type:"file",class:"hidden",onChange:w[0]||(w[0]=N=>b(N))},null,32),e.createElementVNode("div",ns,[e.createVNode(e.unref(P.Upload),{class:"h-4 w-4"})])])])]),u.value?.length>4?(e.openBlock(),e.createElementBlock("div",os,[e.createElementVNode("div",null,[e.createElementVNode("div",rs,[e.createElementVNode("div",ls,[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=>f.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,f.value,void 0,{trim:!0}]])])])])):e.createCommentVNode("",!0),u.value?.length?(e.openBlock(),e.createElementBlock("div",as,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,(N,B)=>(e.openBlock(),e.createBlock(Za,{key:B,prefix:o.prefix,item:N,index:B,onUpdate:w[2]||(w[2]=V=>C.$emit("update","file-list")),onOpenModal:w[3]||(w[3]=V=>k(V)),onOpenLightbox:w[4]||(w[4]=V=>m(V))},null,8,["prefix","item","index"]))),128)),y.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ss,[...w[8]||(w[8]=[e.createElementVNode("p",{class:"text-sm text-gray-600 font-sm"}," Файлів з такою назвою не існує, введіть інше пошукове слово ",-1)])]))])):e.createCommentVNode("",!0),e.createVNode(L,{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:h.value},null,8,["modelValue","startIndex","images"]),e.createVNode(z,e.mergeProps({modelValue:i.value,"onUpdate:modelValue":w[7]||(w[7]=N=>i.value=N),onConfirm:d.value.confirm},d.value),null,16,["modelValue","onConfirm"])])}}}),is={class:"flex items-center justify-between"},cs={class:"text-[16px] text-gray-900 font-medium"},ds={class:"grid gap-3"},us=ye(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",is,[e.createElementVNode("p",cs,e.toDisplayString(o.title),1),e.createVNode(Dn,{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",ds,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,n.value]])]),_:3})]))}}),[["__scopeId","data-v-00f2f0fc"]]),ps={class:"text-[16px] text-gray-900 font-medium"},fs={class:"grid gap-3"},ms=ye(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",ps,e.toDisplayString(o.title),1)]),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-dde48964"]]),hs={class:"flex items-center justify-between"},gs={switcher:us,accordion:ms,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",hs,[e.createElementVNode("p",null,e.toDisplayString(o.title),1)]),e.renderSlot(t.$slots,"default")]))}})},Ze={Equal:"==",Inequal:"!=",Higer:">",HigerOrEqual:">=",Lower:"<",LowerOrEqual:"<=",Between:"between",StartWith:"^",EndWith:"$",Contain:"*",In:"in",NotIn:"not_in"},ys=(o,t)=>String(o)===String(t),bs=(o,t)=>String(o)!==String(t),ks=(o,t)=>o>t,xs=(o,t)=>o>=t,ws=(o,t)=>o<t,Cs=(o,t)=>o<=t,vs=(o,t)=>Array.isArray(t)&&t.length===2?o>=t[0]&&o<=t[1]:!1,Es=(o,t)=>String(o).startsWith(String(t)),Bs=(o,t)=>String(o).endsWith(String(t)),_s=(o,t)=>String(o).includes(String(t)),Vs=(o,t)=>Array.isArray(t)?t.includes(o):!1,Ss=(o,t)=>Array.isArray(t)?!t.includes(o):!0,_o=(o,t)=>{if(!t)return!0;switch(t?.[1]){case Ze.Equal:return ys(o,t?.[2]);case Ze.Inequal:return bs(o,t?.[2]);case Ze.Higer:return ks(o,t?.[2]);case Ze.HigerOrEqual:return xs(o,t?.[2]);case Ze.Lower:return ws(o,t?.[2]);case Ze.LowerOrEqual:return Cs(o,t?.[2]);case Ze.Between:return vs(o,t?.[2]);case Ze.StartWith:return Es(o,t?.[2]);case Ze.EndWith:return Bs(o,t?.[2]);case Ze.Contain:return _s(o,t?.[2]);case Ze.In:return Vs(o,t?.[2]);case Ze.NotIn:return Ss(o,t?.[2]);default:return!0}},Vo=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(c=>{const i=c?.conditions;if(!i)return!0;const d=Array.isArray(i)?i[0]:i,u=t.name?n.value?.[t.name]?.[d]??n.value?.[d]:n.value?.[d];return _o(u,i)})),a=e.computed(()=>gs[t.view]),s=e.computed(()=>{if(n.value||(n.value={}),!t.name)return n.value;const c=n.value[t.name];if(c)return c;const i={};return n.value={...n.value,[t.name]:i},i});return(c,i)=>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(Xo,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)}}),$s=({props:o,fetchOptionByValue:t,optionsList:n,selectedOption:r,modelValue:l})=>{const a=e.ref(!1),s=e.ref({}),c=e.ref([]),i=e.ref(null);return{isOpenAdd:a,addData:s,addSchema:c,addForm:i,addOption:async()=>{if(!(!o.add?.token||i?.value.validate()))try{const h=o.add.api??`/api/table/${o.add.token}`,y=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s.value)}),m=await y.json().catch(()=>({})),x=m?.error||m?.message,b=Number(m?.code)>=400;if(!y.ok||b){pe.notify({title:"Помилка",type:"error",message:x||`Код помилки: ${m?.code||y.status}`});return}const E=m?.id;if(!E){pe.notify({title:"Помилка",type:"error",message:"Обʼєкт створено, але в відповіді відсутній ID."});return}if(!o.options?.length&&o.data){const k=await t(E);k&&(r.value=k,n.value.push(k),l.value=E)}a.value=!1,pe.notify({title:"Успіх",message:"Обʼєкт успішно створено."})}catch(h){pe.notify({title:"Помилка",type:"error",message:h?.message||"Не вдалося створити обʼєкт."})}},onAddValue:async()=>{if(!o.add)return null;const f=await fetch(`/api/template/form/${o.add.form}`).then(h=>h.json());return c.value=f.schema,a.value=!0,null}}},Ns=["aria-expanded","data-focus"],As={class:"relative flex flex-1 items-center gap-1 py-0.5 pl-1 pr-0 overflow-hidden h-full min-w-0"},Fs={key:0,class:"flex flex-nowrap items-center gap-1 overflow-x-auto overflow-y-hidden min-w-0 flex-1 py-0.5"},Ms={class:"flex items-center gap-1 min-w-0"},Ds=["title"],Ls=["innerHTML"],Ts=["onClick"],Is={class:"flex-1 min-w-[2px]"},Rs=["placeholder"],Os=["title"],zs=["innerHTML"],Ps={key:3,class:"truncate flex-1 min-w-0"},js={key:2,class:"flex-1 min-w-[2px]"},Us=["placeholder"],Hs={class:"flex items-center shrink-0"},qs=["disabled"],Ks={key:1,class:"self-stretch w-px bg-[#ccc] my-[1px]"},Ws=["disabled","title"],Gs=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",o.disabled?"bg-gray-100 text-gray-400 cursor-not-allowed":""]),role:"combobox","aria-expanded":o.isOpen,"aria-haspopup":"listbox",onKeydown:s[10]||(s[10]=(...c)=>o.onControlKeydown&&o.onControlKeydown(...c)),onClick:s[11]||(s[11]=(...c)=>o.onControlClick&&o.onControlClick(...c)),"data-focus":o.isOpen||o.inputFocus?"true":"false",ref:o.setTriggerRef},[e.createElementVNode("div",As,[o.isMulti?(e.openBlock(),e.createElementBlock("div",Fs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.selectedOptions,c=>(e.openBlock(),e.createElementBlock("div",{key:c.id,class:"flex min-w-0 bg-[rgb(230,230,230)] rounded-[2px] m-[2px] box-border max-w-full"},[e.createElementVNode("div",Ms,[o.shouldShowColorDot(c)?(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:c?.color})},null,4)):e.createCommentVNode("",!0),!o.optionTemplate&&o.optionHasIcon(c)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(o.iconWrapperClass),style:e.normalizeStyle(o.getIconColorStyle(c)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.resolveOptionIcon(c)),{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:o.getLabel(c)},[o.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:o.renderTemplate(c)},null,8,Ls)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(c.text),1)],64))],8,Ds)]),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(i=>o.onRemoveSelected(c.id),["stop"])},[e.createVNode(e.unref(P.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,Ts)]))),128)),e.createElementVNode("div",Is,[!o.disabled&&o.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:o.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:o.selectedIds.length?" ":o.placeholder,"onUpdate:modelValue":s[0]||(s[0]=c=>l.value=c),onFocus:s[1]||(s[1]=(...c)=>o.onInputFocus&&o.onInputFocus(...c)),onBlur:s[2]||(s[2]=(...c)=>o.onInputBlur&&o.onInputBlur(...c)),onKeydown:s[3]||(s[3]=(...c)=>o.onInputKeydown&&o.onInputKeydown(...c))},null,40,Rs)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)])])):!o.isMulti&&o.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:o.selectedOptionLabel},[o.shouldShowColorDot(o.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:0,class:"w-[14px] h-[14px] rounded-md block flex-shrink-0",style:e.normalizeStyle({backgroundColor:o.selectedOption?.color})},null,4)):e.createCommentVNode("",!0),!o.optionTemplate&&o.optionHasIcon(o.selectedOption)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(o.iconWrapperClass),style:e.normalizeStyle(o.getIconColorStyle(o.selectedOption)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.resolveOptionIcon(o.selectedOption)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),o.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:2,class:"truncate flex-1 min-w-0",innerHTML:o.renderTemplate(o.selectedOption)},null,8,zs)):(e.openBlock(),e.createElementBlock("span",Ps,e.toDisplayString(o.selectedOption?.text),1))],8,Os)):e.createCommentVNode("",!0),o.isMulti?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",js,[!o.disabled&&o.search?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,ref:o.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:o.selectedOptionLabel?" ":o.placeholder,"onUpdate:modelValue":s[4]||(s[4]=c=>l.value=c),onFocus:s[5]||(s[5]=(...c)=>o.onInputFocus&&o.onInputFocus(...c)),onBlur:s[6]||(s[6]=(...c)=>o.onInputBlur&&o.onInputBlur(...c)),onKeydown:s[7]||(s[7]=(...c)=>o.onInputKeydown&&o.onInputKeydown(...c))},null,40,Us)),[[e.vModelText,l.value]]):e.createCommentVNode("",!0)]))]),e.createElementVNode("div",Hs,[o.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:o.disabled,onClick:s[8]||(s[8]=e.withModifiers((...c)=>o.onClearSelected&&o.onClearSelected(...c),["stop"]))},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,qs)):e.createCommentVNode("",!0),o.showClear?(e.openBlock(),e.createElementBlock("div",Ks)):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:o.disabled,onClick:s[9]||(s[9]=e.withModifiers((...c)=>o.onToggleSelect&&o.onToggleSelect(...c),["stop"])),title:o.isOpen?"Закрити список":"Відкрити список"},[e.createVNode(e.unref(P.ChevronDown),{class:"h-4 w-4"})],8,Ws)])],42,Ns))}}),Ys=["aria-disabled","onClick"],Xs={class:"leading-[19px]"},Zs=["innerHTML"],Js={key:1,class:"px-3 py-2 text-center text-gray-500"},Qs=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"},[o.isOpen?(e.openBlock(),e.createElementBlock("div",{key:0,ref:o.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(o.dropdownStyle),role:"listbox"},[e.createElementVNode("div",{class:"overflow-y-auto py-1",style:e.normalizeStyle({maxHeight:o.dropdownStyle.maxHeight||"300px"}),ref:o.setListRef},[o.filteredOptionsList.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o.filteredOptionsList,(r,l)=>(e.openBlock(),e.createElementBlock("div",{key:r.id,ref_for:!0,ref:a=>o.setItemRef(a,l),class:e.normalizeClass(["flex px-3 py-2 gap-2 cursor-pointer select-none text-gray-900",o.isSelected(r.id)?"bg-[#2684ff] text-white":"bg-white hover:bg-[#deebff] hover:text-[#172b4d]",o.selectedNavIndex===l&&!o.isSelected(r.id)?"bg-[#deebff] text-[#172b4d]":""]),"aria-disabled":o.isSelected(r.id)?"true":"false",role:"option",tabindex:"-1",onClick:a=>o.onOptionClick(r)},[o.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),!o.optionTemplate&&o.optionHasIcon(r)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(o.iconWrapperClass),style:e.normalizeStyle(o.getIconColorStyle(r)),"aria-hidden":"true"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.resolveOptionIcon(r)),{class:"w-full h-full",focusable:"false"}))],6)):e.createCommentVNode("",!0),e.createElementVNode("div",Xs,[o.optionTemplate?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:o.renderTemplate(r)},null,8,Zs)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(r.text),1)],64))])],10,Ys))),128)):(e.openBlock(),e.createElementBlock("div",Js," No options "))],4)],4)):e.createCommentVNode("",!0)]))}}),ei=["disabled"],So="w-[16px] h-[16px] flex items-center justify-center flex-shrink-0 text-current",Un=ye(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);Oe(n.style);const c=e.computed({get:()=>n.modelValue,set:j=>r("update:modelValue",j)});!c.value&&n.defaultValue&&(c.value=n.defaultValue);const i=e.ref(null),d=e.ref(null),u=e.ref(null),f=e.ref(null),h=e.ref(!1),y=e.ref(!1),m=e.ref(null),x=e.ref(-1),b=e.ref([]),E=e.ref(""),k=e.ref(null),C=j=>{d.value=j},w=j=>{k.value=j},L=j=>{f.value=j},z=j=>{u.value=j},N=(j,J)=>{b.value[J]=j},B=e.ref({}),V=e.ref([]),S=e.computed(()=>{if(!V.value.length)return[];const j=Be.value,J=new Map(j.map(ae=>[ae.id?.toString(),ae]));return V.value.map(ae=>J.get(ae?.toString())).filter(ae=>!!ae)}),M=e.computed(()=>n.placeholder||"Select..."),R=e.computed(()=>le(m.value)),q=e.computed(()=>a.value?!1:l.value?V.value.length>0:!!c.value),$=j=>l.value?V.value.some(J=>J?.toString()===j?.toString()):c.value?.toString()===j?.toString(),T=e.computed(()=>{let j=Be.value??[];if(!n.data&&E.value.trim()!==""){const J=E.value.toLowerCase();j=j.filter(ae=>{const Ee=le(ae).toLowerCase(),Fe=ae.text?.toLowerCase?.()||"";return Ee.includes(J)||Fe.includes(J)})}if(l.value&&V.value.length){const J=new Set(V.value.map(ae=>ae?.toString()));j=j.filter(ae=>!J.has(ae.id?.toString()))}return j}),D=e.inject("values"),Y=e.inject("field-props"),W=e.computed(()=>n.slot??n?.optionTemplate??""),Z=j=>ln(j,W.value),le=j=>On(j,W.value),Ce=e.computed(()=>Fn(W.value)),ge=j=>jt(j),Q=j=>!!(!Ce.value&&Mt(j)&&!ge(j)),se=j=>{const J=Mt(j);return J?{color:J}:void 0},xe=j=>!!(!Ce.value&&(Pt(j)||ge(j))),fe=(j,J,ae)=>{if(!Y)return!1;const Ee=Y.value?.[j]??{},Fe=(Le,Qe,lt)=>{if(!Qe.length)return Le;const[et,...ft]=Qe,tt={...Le};if(!ft.length)return tt[et]=lt,tt;const Ot=typeof Le[et]=="object"&&Le[et]!==null?Le[et]:{};return tt[et]=Fe(Ot,ft,lt),tt},je=Fe(Ee,J,ae);return Y.value={...Y.value||{},[j]:je},!0},be=j=>{if(!n.set)return;const J=D?.value;!J&&!Y||Object.entries(n.set).forEach(([ae,Ee])=>{if(!ae)return;const Fe=j?j[Ee]:null,je=ae.split(".").map(lt=>lt.trim()).filter(Boolean);if(!je.length)return;const[Le,...Qe]=je;Qe.length&&fe(Le,Qe,Fe??null)||J&&(J[Le]=Fe??null)})},{optionsList:Be,parentValue:Ne,fetchOptions:Pe,fetchOptionByValue:rt,loadOptions:Ge}=Rn({props:n,formValues:D,watchParent:!1}),ve=async()=>n.data?Ge(E.value):Ge(),G=async j=>{if(j==null||j==="")return null;const J=Be.value?.find(ae=>ae?.id?.toString()===String(j));return J||rt(j)},ee=async j=>{const J=new Set(Be.value.map(Ee=>Ee.id?.toString())),ae=j.filter(Ee=>!J.has(Ee?.toString()));ae.length&&await ae.reduce(async(Ee,Fe)=>{await Ee;const je=await G(Fe);je&&Be.value.push(je)},Promise.resolve())},te=()=>{if(!T.value.length){x.value=-1;return}let j=0;if(!l.value&&m.value){const J=m.value.id?.toString(),ae=T.value.findIndex(Ee=>Ee.id?.toString()===J);ae>=0&&(j=ae)}x.value=j,e.nextTick(()=>{H(b.value[j],u.value)})},de=async()=>{a.value||(h.value=!0,await ve(),await e.nextTick(()=>{oe(),k.value?.focus()}),te())},ue=()=>{h.value=!1,x.value=-1,e.nextTick(()=>{k.value?.blur()})},_e=async j=>{if(a.value)return;(j!==void 0?j:!h.value)?await de():ue()},$e=async()=>{if(!a.value){if(h.value){ue();return}await de()}},O=()=>{l.value?(V.value=[],c.value=[],r("change",[]),F(null,[])):(m.value=null,c.value=null,r("change",null),F(null,null)),be(null),E.value="",e.nextTick(()=>{k.value?.focus(),h.value||de()})},ne=j=>{l.value&&(V.value=V.value.filter(J=>J?.toString()!==j?.toString()),c.value=[...V.value],r("change",c.value),F(null),e.nextTick(()=>k.value?.focus()))},F=(j,J)=>{const ae=J??(l.value?[...V.value]:j?.id??null);r("value-selected",{name:n.name,value:ae,option:j})},X=j=>{l.value?($(j.id)||(V.value=[...V.value,j.id],c.value=[...V.value],r("change",c.value),F(j)),E.value="",e.nextTick(()=>{k.value?.focus(),x.value=Math.min(x.value,T.value.length-1)}),be(null)):(m.value=j,c.value=j.id,r("change",c.value),F(j),E.value="",ue(),be(j))},I=j=>{if($(j.id)){l.value||ue();return}X(j)},H=(j,J)=>{if(!j||!J)return;const ae=j.offsetTop,Ee=ae+j.offsetHeight,Fe=J.scrollTop,je=Fe+J.clientHeight;let Le=J.scrollTop;ae<Fe?Le=ae-80:Ee>je&&(Le=Ee-J.clientHeight+4);const Qe=J;Qe.scrollTop=Le},U=j=>{let J=j.parentElement;for(;J;){if(J.classList.contains("ui-dialog__content"))return J;const ae=window.getComputedStyle(J),Ee=ae.overflow+ae.overflowY+ae.overflowX;if(Ee.includes("auto")||Ee.includes("scroll")||J===document.body||J===document.documentElement)return J;J=J.parentElement}return document.body},oe=()=>{if(!d.value)return;const j=d.value.getBoundingClientRect(),J=window.innerHeight||document.documentElement.clientHeight,ae=window.innerWidth||document.documentElement.clientWidth,Ee=8,Fe=8,je=n.maxHeight||300,Le=J-j.bottom-Fe-Ee,Qe=j.top-Fe-Ee,lt=Le>=Qe,et=Math.max(ae-Ee*2,0);let{width:ft}=j;et>0&&ft>et&&(ft=et);let{left:tt}=j;tt+ft+Ee>ae&&(tt=ae-ft-Ee),tt=Math.max(tt,Ee);const Ot=Math.min(je,Math.max(lt?Le:Qe,50));B.value={position:"fixed",left:`${tt}px`,width:`${ft}px`,maxHeight:`${Ot}px`,transform:lt?"none":"translateY(-100%)",top:lt?`${j.bottom+Fe}px`:`${j.top-Fe}px`}},we=async j=>{a.value||!h.value&&(j.key==="ArrowDown"||j.key==="ArrowUp")&&(j.preventDefault(),await de())},Ve=j=>{if(!h.value)return;const{key:J}=j;if(J==="ArrowDown")j.preventDefault(),x.value+1<T.value.length&&(x.value+=1,H(b.value[x.value],u.value));else if(J==="ArrowUp")j.preventDefault(),x.value>0&&(x.value-=1,H(b.value[x.value],u.value));else if(J==="Enter"){j.preventDefault();const ae=T.value[x.value];ae&&X(ae),k.value?.blur()}else J==="Escape"?(j.preventDefault(),ue()):J==="Backspace"?l.value&&E.value===""&&V.value.length&&(V.value=V.value.slice(0,-1),c.value=[...V.value],r("change",c.value)):J==="Home"?(x.value=0,H(b.value[0],u.value)):J==="End"?(x.value=T.value.length-1,H(b.value[x.value],u.value)):J==="Tab"&&ue()},Ae=()=>{a.value||(y.value=!0)},Se=()=>{y.value=!1,E.value=""},Ye=j=>{j.key==="Escape"&&h.value&&ue()},Et=j=>{const J=j.target;i.value?.contains(J)||f.value?.contains(J)||ue()},Bt=j=>{h.value&&u.value&&!u.value.contains(j.target)&&oe()},Je=()=>{h.value&&oe()},Tt=()=>{h.value&&oe()};async function ut(){if(l.value)Array.isArray(c.value)?V.value=[...c.value]:(V.value=c.value==null?[]:[c.value],c.value=[...V.value]),n.data&&V.value.length&&(await ee(V.value),await e.nextTick());else{if(Array.isArray(c.value)){const j=c.value[0]??null;c.value=j??null}c.value!=null&&(m.value=await G(c.value)),be(m.value??null)}}e.watch(c,()=>{ut()}),e.onMounted(async()=>{addEventListener("keydown",Ye),addEventListener("scroll",Bt,!0),addEventListener("resize",Je),document.addEventListener("click",Et,!0),d.value&&U(d.value).addEventListener("scroll",Tt,!0),n.options?.length&&!n.data?Be.value=[...n.options]:n.data&&(Be.value=await Pe("")),await ut(),pt.value=!1}),e.onUnmounted(()=>{removeEventListener("keydown",Ye),removeEventListener("scroll",Bt,!0),removeEventListener("resize",Je),document.removeEventListener("click",Et,!0),d.value&&U(d.value).removeEventListener("scroll",Tt,!0)});const{isOpenAdd:tn,addData:It,addSchema:co,addForm:Rt,addOption:uo,onAddValue:bt}=$s({props:n,fetchOptionByValue:rt,optionsList:Be,selectedOption:m,modelValue:c});function At(j,J=200){let ae;return(...Ee)=>{ae&&clearTimeout(ae),ae=window.setTimeout(()=>j(...Ee),J)}}const po=At(async j=>{Be.value=await Pe(j)},200);e.watch(E,j=>{n.data&&po(j.trim())}),e.watch(()=>n.options,j=>{!n.data&&j?.length&&(Be.value=[...j],ut())},{immediate:!0});const pt=e.ref(!0);return e.watch(Ne,async()=>{if(n.data&&(pt.value||(l.value?(V.value=[],c.value=[],r("change",[])):(m.value=null,c.value=null,r("change",null))),await ve(),n.auto===1&&Ne.value&&Be.value.length>0)){const j=Be.value[0];j&&X(j)}}),(j,J)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(pe.VsModal),{visible:e.unref(tn),"onUpdate:visible":J[1]||(J[1]=ae=>e.isRef(tn)?tn.value=ae:null),class:"z-[1000]",title:"Додати",buttonText:"Додати",onDone:e.unref(uo),teleport:o.teleport},{default:e.withCtx(()=>[e.createVNode(nt,{schema:e.unref(co),modelValue:e.unref(It),"onUpdate:modelValue":J[0]||(J[0]=ae=>e.isRef(It)?It.value=ae:null),ref_key:"addForm",ref:Rt},null,8,["schema","modelValue"])]),_:1},8,["visible","onDone","teleport"]),e.createElementVNode("div",{class:"flex gap-1 w-full",ref_key:"selectRoot",ref:i,onClick:J[4]||(J[4]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:e.normalizeClass(["relative w-full font-sans",n.customClass])},[J[5]||(J[5]=e.createElementVNode("span",{id:"react-select-live-region",class:"sr-only"},null,-1)),J[6]||(J[6]=e.createElementVNode("span",{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",role:"log",class:"sr-only"},null,-1)),e.createVNode(Gs,{keyWord:E.value,"onUpdate:keyWord":J[2]||(J[2]=ae=>E.value=ae),disabled:a.value,"is-open":h.value,"input-focus":y.value,"is-multi":l.value,"selected-options":S.value,"selected-ids":V.value,placeholder:M.value,search:s.value,"option-template":W.value,"icon-wrapper-class":So,"selected-option-label":R.value,"selected-option":m.value,"show-clear":q.value,"set-trigger-ref":C,"set-input-ref":w,"should-show-color-dot":Q,"option-has-icon":xe,"get-icon-color-style":se,"resolve-option-icon":ge,"render-template":Z,"get-label":le,"on-control-keydown":we,"on-control-click":$e,"on-input-focus":Ae,"on-input-blur":Se,"on-input-keydown":Ve,"on-remove-selected":ne,"on-clear-selected":O,"on-toggle-select":_e},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(Qs,{"is-open":h.value,"dropdown-style":B.value,"filtered-options-list":T.value,"selected-nav-index":x.value,"option-template":W.value,"icon-wrapper-class":So,"set-dropdown-ref":L,"set-list-ref":z,"set-item-ref":N,"is-selected":$,"on-option-click":I,"should-show-color-dot":Q,"option-has-icon":xe,"get-icon-color-style":se,"resolve-option-icon":ge,"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:J[3]||(J[3]=(...ae)=>e.unref(bt)&&e.unref(bt)(...ae)),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"}),J[7]||(J[7]=e.createElementVNode("span",null,"Додати",-1))],8,ei)):e.createCommentVNode("",!0)],512)],64))}}),[["__scopeId","data-v-7027f25e"]]),ti=["placeholder","disabled"],$o=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}=Oe(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(c,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{"onUpdate:modelValue":i[0]||(i[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,ti)),[[e.vModelText,r.value]])}}),No=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(()=>Ug)),n=o,{inputClass:r}=Oe(n.style),l=e.useModel(o,"modelValue"),a=e.computed(()=>!!n.disabled),s=e.computed(()=>n.placeholder??""),c=e.computed(()=>({height:"300px",format:n.format,...n.richtextProps}));return(i,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["!h-full",[o.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},c.value),null,16,["modelValue","placeholder"])],6))}}),ni={},oi={viewBox:"0 0 178 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function ri(o,t){return e.openBlock(),e.createElementBlock("svg",oi,[...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 li=ye(ni,[["render",ri]]),ai={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden flex flex-col"},si={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"},ii={key:0,class:"relative flex-1 min-w-0"},ci={class:"flex flex-nowrap items-center justify-end gap-2 shrink-0"},di={class:"w-full overflow-x-auto"},ui={class:"w-full min-w-[640px] table-auto divide-y divide-gray-200"},pi={class:"bg-gray-50"},fi={class:"border-b border-gray-200"},mi={class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 w-12 text-center"},hi=["onClick"],gi={key:0,class:"text-gray-400"},yi={key:0,colspan:"100%",class:"text-center"},bi={class:"w-full"},ki={class:"p-5 min-h-[200px] flex flex-col justify-center items-center text-center"},xi=["onDragstart","onDragover","onDrop"],wi={class:"px-4 py-3 text-center align-middle"},Ci={class:"flex items-center justify-center"},vi=["innerHTML"],Ei={key:0,class:"flex items-center gap-3 text-sm text-gray-700"},Bi={key:0},_i=["src"],Vi={key:1,class:"rounded-md max-w-[45px] w-[45px] max-h-[45px] h-[45px] bg-gray-200 flex items-center justify-center"},Si={key:1,class:"flex items-center justify-center"},$i={key:2,class:"text-sm font-medium text-gray-900"},Ni={class:"px-4 py-3 text-right whitespace-nowrap"},Ai={class:"flex items-center justify-end gap-2"},Fi=["onClick"],Mi=["onClick"],Di={class:"vs-form__head mr-5 mt-3 flex items-center justify-end sticky top-0 left-0 z-[60] bg-white"},Ao=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=G=>t.actions===void 0?!0:t.actions.includes(G),l=["search","import","export","add"],a=e.computed(()=>l.some(G=>r(G))),s=e.useModel(o,"modelValue"),c=e.ref({}),i=e.ref(""),d=e.ref(null),u=e.ref("asc"),f=e.computed(()=>{const G=s.value??[],ee=i.value?G.filter(ue=>h.value?.some(_e=>{const $e=_e.key||_e.name;if(!$e)return!1;const O=ue[$e];return O?Array.isArray(O)?O.join(", ").toLowerCase().includes(i.value.toLowerCase()):String(O).toLowerCase().includes(i.value.toLowerCase()):!1})):G;if(!d.value)return ee;const te=d.value,de=[...ee].sort((ue,_e)=>{const $e=se(ue?.[te]),O=se(_e?.[te]);return typeof $e=="number"&&typeof O=="number"?$e-O:String($e).localeCompare(String(O))});return u.value==="asc"?de:de.reverse()}),h=e.computed(()=>(t.colModel??[]).filter(G=>!G.tableHidden)),y=e.ref(null),m=e.ref(null),x=e.ref(null),b=G=>{y.value=G},E=G=>{m.value=G},k=G=>{if(y.value===null||y.value===G){y.value=null,m.value=null;return}const ee=[...s.value],[te]=ee.splice(y.value,1);ee.splice(G,0,te),s.value=ee,y.value=null,m.value=null},C=()=>{x.value&&x.value.click()},w=G=>{const ee=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico",".tiff",".tif"],te=G.toLowerCase();return ee.some(de=>te.endsWith(de))},L=G=>{const te=G.target.files?.[0];if(!te)return;const de=new FileReader;de.onload=ue=>{try{const _e=ue.target?.result;if(typeof _e=="string"){const $e=JSON.parse(_e);Array.isArray($e)&&s.value.push(...$e)}}catch(_e){console.error("Error parsing file:",_e)}},de.readAsText(te)},z=()=>{const G=JSON.stringify(s.value,null,2),ee=new Blob([G],{type:"application/json"}),te=URL.createObjectURL(ee),de=document.createElement("a");de.href=te,de.download="data.json",de.click(),URL.revokeObjectURL(te)},N=new Set(["autocomplete","select","radio","checkbox","combobox"]),B=new Map,V=(G,ee)=>{const te=`/api/suggest/${G}`,de=te.includes("?")?"&":"?",ue=ee?`&val=${ee}`:"";return`${te}${de}json=1${ue}`},S=G=>G==null||G===""?null:typeof G=="object"?G?.id!==void 0&&G.id!==null&&G.id!==""?G.id:null:G,M=G=>{const ee=new Set;return Array.isArray(s.value)&&s.value.forEach(te=>{const de=te?.[G];if(de==null||de==="")return;if(Array.isArray(de)){de.forEach(_e=>{const $e=S(_e);$e!==null&&ee.add($e)});return}const ue=S(de);ue!==null&&ee.add(ue)}),ee},R=async()=>{if(!t.colModel?.length)return;const G=t.colModel.filter(ee=>ee.data&&N.has(ee.type?.toLowerCase()||""));G.length&&await Promise.all(G.map(async ee=>{const te=ee.key||ee.name;if(!te)return;const de=M(te),ue=Array.from(de).map(O=>String(O)).sort(),_e=ue.join(",");if(!ue.length||B.get(te)===_e)return;B.set(te,_e);const $e=ue.map(encodeURIComponent).join(",");try{const ne=await(await fetch(V(ee.data,$e))).json();c.value[te]=ne?.data??ne}catch(O){console.error("Failed to fetch column values",O)}}))};e.watch([()=>t.colModel,()=>s.value],()=>{R()},{immediate:!0,deep:!0});const q=e.ref(""),$=e.ref(!1);let T="edit",D=0;const Y=G=>(G?.format||G?.type||"").toString().toLowerCase(),W=e.computed(()=>t.colModel?.filter(G=>Y(G)!=="slot")??[]),Z=e.ref({}),le=e.ref({}),Ce=G=>typeof G!="string"?!1:!!n[G],ge=(G,ee)=>ee?ee.split(".").reduce((te,de)=>te==null?te:te[de.trim()],G):G,Q=(G,ee)=>typeof G!="string"?"":G.replace(/{{\s*([^}]+)\s*}}/g,(te,de)=>{const ue=ge(ee,de.trim());return ue??""}),se=G=>{if(G==null||G==="")return"";if(typeof G=="number")return G;if(typeof G=="boolean")return G?1:0;if(typeof G=="string")return G.toLowerCase();if(Array.isArray(G))return G.map(ee=>se(ee)).join(", ");if(typeof G=="object"){if(G.text!==void 0)return String(G.text).toLowerCase();if(G.label!==void 0)return String(G.label).toLowerCase();if(G.id!==void 0)return String(G.id).toLowerCase()}return String(G).toLowerCase()},xe=G=>{const ee=G.key||G.name;if(ee){if(d.value===ee){u.value=u.value==="asc"?"desc":"asc";return}d.value=ee,u.value="asc"}};async function fe(){q.value="Додати",$.value=!0,T="add",Z.value={}}function be(G,ee){if(!G?.length)return null;const te=typeof ee=="object"?ee?.id:ee;return te==null||te===""?null:G.find(de=>de?.id?.toString()===te.toString())?.text??null}function Be(G){return G==null||G===""?"-":Array.isArray(G)?G.map(ee=>typeof ee=="object"?ee?.text??ee?.id??"-":ee).join(", "):typeof G=="object"?G?.text??G?.id??"-":G}function Ne(G,ee){const te=ee.key||ee.name,de=G?.[te],ue=c.value[te];if(!de)return"-";if(Array.isArray(de)){const $e=de.map(O=>be(ue,O)).filter(Boolean);return $e.length?$e.join(", "):Be(de)}const _e=be(ue,de);return _e||Be(de)}async function Pe(G,ee){q.value="Редагувати",$.value=!0,T="edit",D=ee,Z.value={...G}}function rt(){const G=le.value.validate();if(G){pe.notify({type:"warning",title:"Помилка валідації",message:Object.entries(G).map(([ee,te])=>`${ee}: ${te}`).join(`
|
|
2
|
-
`)});return}T==="add"?Array.isArray(s.value)?s.value=[...s.value,Z.value]:s.value=[Z.value]:s.value=s.value.map((ee,te)=>te===D?Z.value:ee),$.value=!1}function Ge(G){s.value=s.value.filter((ee,te)=>te!==G)}function ve(){$.value=!1}return(G,ee)=>(e.openBlock(),e.createElementBlock("div",ai,[a.value?(e.openBlock(),e.createElementBlock("div",si,[r("search")?(e.openBlock(),e.createElementBlock("div",ii,[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":ee[0]||(ee[0]=te=>i.value=te),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,i.value]])])):e.createCommentVNode("",!0),e.createElementVNode("div",ci,[r("import")?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInput",ref:x,onChange:L,class:"hidden",accept:".json",type:"file"},null,544)):e.createCommentVNode("",!0),r("import")?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:C,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"}),ee[4]||(ee[4]=e.createTextVNode(" Імпорт ",-1))])):e.createCommentVNode("",!0),r("export")?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",onClick:z,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"}),ee[5]||(ee[5]=e.createTextVNode(" Експорт ",-1))])):e.createCommentVNode("",!0),r("add")?(e.openBlock(),e.createElementBlock("button",{key:3,onClick:fe,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"}),ee[6]||(ee[6]=e.createTextVNode(" Додати ",-1))])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",di,[e.createElementVNode("table",ui,[e.createElementVNode("thead",pi,[e.createElementVNode("tr",fi,[e.createElementVNode("th",mi,[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(h.value,te=>(e.openBlock(),e.createElementBlock("th",{key:te.key,class:"px-4 py-3 text-left text-xs font-semibold text-gray-900"},[e.createElementVNode("button",{type:"button",onClick:de=>xe(te),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(te.ua||te.label),1),d.value===(te.key||te.name)?(e.openBlock(),e.createElementBlock("span",gi,e.toDisplayString(u.value==="asc"?"▲":"▼"),1)):e.createCommentVNode("",!0)],8,hi)]))),128)),ee[7]||(ee[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}])},[f.value.length===0?(e.openBlock(),e.createElementBlock("td",yi,[e.createElementVNode("div",bi,[e.createElementVNode("div",ki,[e.createVNode(li,{class:"w-48 mx-auto"}),ee[8]||(ee[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(f.value,(te,de)=>(e.openBlock(),e.createElementBlock("tr",{key:te.id,class:e.normalizeClass(["border-b transition-colors hover:bg-gray-50 cursor-move text-sm text-gray-700",{"opacity-50":y.value===de,"border-t-2 border-b-2 border-blue-500 bg-blue-50 dark:bg-blue-900/20":m.value===de}]),draggable:"true",onDragstart:ue=>b(de),onDragover:e.withModifiers(ue=>E(de),["prevent"]),onDrop:ue=>k(de)},[e.createElementVNode("td",wi,[e.createElementVNode("div",Ci,[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(h.value,ue=>(e.openBlock(),e.createElementBlock("td",{key:ue.key,class:"px-4 py-3 align-middle"},[Y(ue)==="slot"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Ce(ue.slot)?e.renderSlot(G.$slots,ue.slot,{key:0,row:te,value:te[ue.key],column:ue}):(e.openBlock(),e.createElementBlock("div",{key:1,class:"text-sm text-gray-900",innerHTML:Q(ue.slot,te)},null,8,vi))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[Y(ue)==="file"?(e.openBlock(),e.createElementBlock("div",Ei,[w(Ne(te,ue))?(e.openBlock(),e.createElementBlock("div",Bi,[e.createElementVNode("img",{src:Ne(te,ue),alt:"alt",width:"45",class:"rounded-md max-w-[45px] h-[45px] object-cover"},null,8,_i)])):(e.openBlock(),e.createElementBlock("div",Vi,[e.createVNode(e.unref(P.FileText),{class:"h-4 w-4 min-w-4"})]))])):Y(ue)==="color"?(e.openBlock(),e.createElementBlock("div",Si,[e.createElementVNode("span",{class:"inline-flex h-6 w-6 rounded border border-gray-200",style:e.normalizeStyle({backgroundColor:Ne(te,ue)||"#ffffff"})},null,4)])):(e.openBlock(),e.createElementBlock("div",$i,e.toDisplayString(Ne(te,ue)),1))],64))]))),128)),e.createElementVNode("td",Ni,[e.createElementVNode("div",Ai,[e.createElementVNode("button",{onClick:ue=>Pe(te,de),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,Fi),e.createElementVNode("button",{onClick:ue=>Ge(de),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,Mi)])])],42,xi))),128))],2)])]),e.createVNode(e.unref(pe.VsModal),{visible:$.value,title:q.value,size:"lg",onClose:ve,teleport:"#modal"},{default:e.withCtx(()=>[e.createVNode(nt,{schema:W.value,values:Z.value,"onUpdate:values":ee[1]||(ee[1]=te=>Z.value=te),form:le.value,"onUpdate:form":ee[2]||(ee[2]=te=>le.value=te)},null,8,["schema","values","form"]),e.createElementVNode("div",Di,[e.createElementVNode("button",{type:"button",onClick:ee[3]||(ee[3]=te=>$.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:rt,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"])]))}}),Li={},Ti={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 Ii(o,t){return e.openBlock(),e.createElementBlock("svg",Ti,[...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 Ri=ye(Li,[["render",Ii]]),Oi={},zi={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 Pi(o,t){return e.openBlock(),e.createElementBlock("svg",zi,[...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 ji=ye(Oi,[["render",Pi]]),Ui={},Hi={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 qi(o,t){return e.openBlock(),e.createElementBlock("svg",Hi,[...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 Ki=ye(Ui,[["render",qi]]),Wi={class:"bg-white/30 p-1 rounded-md shadow w-fit"},Gi={class:"flex gap-2"},Yi=["onClick","title"],Xi=["src"],Zi=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(i){l("onLayerChange",i),r.value=i}const s={z:13,x:4790,y:2762};function c(i){if(i?.preview)return i.preview;if(!i?.url)return;const d={"{z}":s.z,"{x}":s.x,"{y}":s.y};let u=i.url;return Object.entries(d).forEach(([f,h])=>{u=u.replace(new RegExp(f,"gi"),String(h))}),u}return(i,d)=>(e.openBlock(),e.createElementBlock("div",Wi,[e.createElementVNode("div",Gi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.basemaps,(u,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:e.normalizeClass(["cursor-pointer border rounded-lg overflow-hidden hover:shadow-sm",{"ring-2 ring-blue-500 border-blue-300":r.value===f}]),onClick:h=>a(f),title:u.name||f,role:"button",tabindex:"0"},[e.createElementVNode("img",{src:c(u),alt:"",class:"w-10 h-10 object-cover"},null,8,Xi)],10,Yi))),128))])]))}}),Vt=1e-10,sn=/([+-]?\d{1,3})\s*[°º˚]\s*(\d{1,2})\s*['’′`]\s*(\d{1,2}(?:\.\d+)?)\s*["”″]\s*([NSEW])/gi,Ji=/^[+-]?\d+(?:\.\d+)?$/;function Qi(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 f=u+1,h=t==="decimal"?ec(d,f,n):Mo(d,f,n);if(!h.ok){l.push(...h.errors);return}const y=a[a.length-1];if(y&&Lo(y,h.point)){l.push({line:f,message:"Послідовні точки не повинні дублюватися."});return}a.push(h.point)}),l.length)return{ok:!1,errors:l};if(new Set(a.map(nc)).size<3)return{ok:!1,errors:[{line:0,message:"Полігон повинен містити мінімум 3 унікальні точки."}]};const c=[...a];let i=!1;return Lo(c[0],c[c.length-1])||(c.push(c[0]),i=!0),oc(c)?{ok:!1,errors:[{line:0,message:"Полігон має самоперетин."}]}:{ok:!0,ring:c,wasClosedAutomatically:i}}function ec(o,t,n){return Fo(o,"decimal",n,t)}function Fo(o,t,n,r=1){return t==="decimal"?tc(o,r,n):Mo(o,r,n)}function tc(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=>Ji.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 c=n==="lat-lon"?a:s,i=n==="lat-lon"?s:a;return(c<-90||c>90)&&r.push({line:t,message:"Широта поза діапазоном (-90..90)."}),(i<-180||i>180)&&r.push({line:t,message:"Довгота поза діапазоном (-180..180)."}),r.length?{ok:!1,errors:r}:{ok:!0,point:[i,c]}}function Mo(o,t,n){sn.lastIndex=0;const r=[...o.matchAll(sn)];if(r.length<2)return{ok:!1,errors:[{line:t,message:"Не вдалося розпізнати DMS-координати."}]};if(r.length>2)return{ok:!1,errors:[{line:t,message:"У рядку дозволено лише одну пару координат."}]};if(sn.lastIndex=0,o.replace(sn," ").replace(/[\s,;]+/g,"").trim().length)return{ok:!1,errors:[{line:t,message:"У рядку виявлено зайві символи або значення."}]};const a=Do(r[0],t,n==="lat-lon"?"lat":"lon"),s=Do(r[1],t,n==="lat-lon"?"lon":"lat"),c=[];if(a.ok||c.push(a.error),s.ok||c.push(s.error),c.length)return{ok:!1,errors:c};const i=n==="lat-lon"?a.value:s.value;return{ok:!0,point:[n==="lat-lon"?s.value:a.value,i]}}function Do(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 f=d+l/60+a/3600;return{ok:!0,value:s==="S"||s==="W"?-f:f}}function nc(o){return`${o[0].toFixed(12)}:${o[1].toFixed(12)}`}function Lo(o,t){return Math.abs(o[0]-t[0])<Vt&&Math.abs(o[1]-t[1])<Vt}function oc(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(rc(n,r,a,s))return!0}}return!1}function rc(o,t,n,r){const l=cn(o,t,n),a=cn(o,t,r),s=cn(n,r,o),c=cn(n,r,t);return!!(l!==a&&s!==c||l===0&&dn(o,n,t)||a===0&&dn(o,r,t)||s===0&&dn(n,o,r)||c===0&&dn(n,t,r))}function cn(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)<Vt?0:r>0?1:2}function dn(o,t,n){return t[0]<=Math.max(o[0],n[0])+Vt&&t[0]+Vt>=Math.min(o[0],n[0])&&t[1]<=Math.max(o[1],n[1])+Vt&&t[1]+Vt>=Math.min(o[1],n[1])}const lc=["title"],ac={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"},sc=["onClick"],ic=["placeholder"],cc={class:"absolute inset-y-0 right-2 flex items-center gap-1"},dc={class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-gray-100"},uc={class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},pc={class:"max-h-[260px] overflow-auto"},fc={key:0,class:"divide-y divide-gray-100"},mc=["onClick"],hc={key:1,class:"px-3 py-3 text-xs text-gray-500"},To="formMapSearchAddressHistory",gc=12,yc="https://geo.rv.ua/api-user/dzk.api",bc="https://nominatim.openstreetmap.org/search",kc=ye(e.defineComponent({__name:"map-search",props:{config:{}},emits:["goToCoordinates"],setup(o,{emit:t}){const n={mounted(I,H){if(typeof document>"u")return;let U=null;const oe=8,we=()=>{const Ae=String(H?.value??"");if(!Ae)return;U=document.createElement("div"),U.textContent=Ae,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=I.getBoundingClientRect();U.style.left=`${Se.right+window.scrollX+oe}px`,U.style.top=`${Se.top+window.scrollY+(Se.height-U.offsetHeight)/2}px`},Ve=()=>{U?.parentNode&&U.parentNode.removeChild(U),U=null};I.addEventListener("mouseenter",we),I.addEventListener("mouseleave",Ve),Object.assign(I,{tooltipRightHandlers:{show:we,hide:Ve}})},unmounted(I){if(typeof document>"u")return;const H=I.tooltipRightHandlers;H&&(I.removeEventListener("mouseenter",H.show),I.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 c(){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 i(){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=!!i(),u=e.computed(()=>{const I=["nominatim","xy","parcel"];return d&&I.unshift("address"),I}),f=e.computed(()=>{const I=u.value,H=r.config?.tools?.filter(U=>I.includes(U));return H&&H.length?H:I}),h=e.computed(()=>r.config?.placeholder?.trim()||"Пошук…"),y=e.ref(f.value[0]);e.watch(f,I=>{I.includes(y.value)||(y.value=I[0])});const m=e.ref(""),x=e.ref(!1),b=e.ref(null),E=e.ref(null),k=e.ref(null),C=e.ref(null),w=e.ref([]),L=e.ref(null),z=e.ref(!1),N=e.ref([]),B=e.computed(()=>(y.value==="address"||y.value==="nominatim")&&z.value),V=e.computed(()=>r.config?.addressDebounceMs??1e3);let S=null;const M=e.ref(!1),R=e.computed(()=>m.value.trim().length>0?w.value:N.value),q=e.computed(()=>m.value.trim().length?`Знайдено ${w.value.length}`:"Історія пошуку"),$=e.computed(()=>m.value.trim().length?"Нічого не знайдено":"Історія порожня");function T(){if(typeof window>"u")return[];try{const I=window.localStorage?.getItem?.(To);if(!I)return[];const H=JSON.parse(I);return Array.isArray(H)?H:[]}catch{return[]}}function D(I){typeof window>"u"||window.localStorage?.setItem?.(To,JSON.stringify(I))}function Y(I){const U=[I,...N.value.filter(oe=>oe.id!==I.id)].slice(0,10);N.value=U,D(U)}const W=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function Z(){if(!C.value)return;const I=C.value.getBoundingClientRect(),H=k.value?.getBoundingClientRect(),U=H?.width??I.width,oe=(H?.left??I.left)+window.scrollX,we=I.bottom+window.scrollY+gc;W.left=`${oe}px`,W.top=`${we}px`,W.width=`${U}px`,W.display="block"}const le=()=>{B.value&&Z()};function Ce(){S&&(clearTimeout(S),S=null)}e.watch(y,()=>{m.value="",x.value=!1,w.value=[],z.value=!1,Ce(),M.value=!1}),e.watch(B,I=>{I?e.nextTick(()=>{Z()}):W.display="none"}),e.watch(m,I=>{if(y.value!=="address"&&y.value!=="nominatim"){w.value=[],Ce();return}if(!I.trim()){w.value=[],z.value=N.value.length>0,Ce();return}Ce(),z.value=!0,S=window.setTimeout(()=>{_e(I).catch(H=>{const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})})},V.value)});function ge(I){const H=[];E.value&&H.push(E.value),I instanceof HTMLElement&&H.push(I),b.value?.querySelectorAll("li")?.forEach(oe=>{H.push(oe)}),H.forEach(oe=>{oe.dispatchEvent(new MouseEvent("mouseleave",{bubbles:!0}))})}function Q(I){x.value&&ge(I.target),x.value=!x.value}function se(I,H){ge(H?.target),y.value=I}function xe(){m.value="",w.value=[],z.value=!1,M.value=!1}function fe(I){const H=I.target;if(x.value){const U=b.value;U&&!U.contains(H)&&(ge(H),x.value=!1)}if(B.value){const U=L.value,oe=C.value;U&&!U.contains(H)&&(!oe||!oe.contains(H))&&(z.value=!1)}}e.onMounted(()=>{N.value=T(),window.addEventListener("click",fe,!0),window.addEventListener("scroll",le,!0),window.addEventListener("resize",le)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",fe,!0),window.removeEventListener("scroll",le,!0),window.removeEventListener("resize",le),Ce()});function be(I){return I==="xy"?"Координати":I==="parcel"?"Кадастр":I==="nominatim"?"Nominatim":"Адресний"}function Be(I){switch(I){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(I){const H=Fo(I.trim(),"dms","lat-lon");if(H.ok){const[Je,Tt]=H.point;return{lat:Tt,lng:Je}}const U=I.replace(/[,]+/g," ").trim();if(!U)return null;const oe=U.split(/\s+/).filter(Boolean);if(oe.length<2)return null;const we=oe.slice(0,2).map(Number);if(!we.every(Je=>Number.isFinite(Je)))return null;let[Ve,Ae]=we,Se=Ve,Ye=Ae;const Et=Je=>Math.abs(Je)<=90,Bt=Je=>Math.abs(Je)<=180;if(!Et(Se)||!Bt(Ye))if(Et(Ye)&&Bt(Se))Se=Ae,Ye=Ve;else return null;return{lat:Se,lng:Ye}}function Pe(I){const H=I?.result||I?.data||I;if(!H)return[];const U=H.geom_centroid;if(!U||!Array.isArray(U.coordinates))return[];const[oe,we]=U.coordinates;return!Number.isFinite(we)||!Number.isFinite(oe)?[]:[{id:"parcel",title:H.cadnum||H.cad_num||"Земельна ділянка",lat:we,lng:oe}]}function rt(I){return(Array.isArray(I?.features)?I.features:[]).map((U,oe)=>{const we=U?.geometry?.coordinates,Ve=Number(we?.[0]),Ae=Number(we?.[1]);if(!Number.isFinite(Ae)||!Number.isFinite(Ve))return null;const Se=U?.properties||{},Ye=Se?.geocoding?.label||Se?.display_name||Se?.label||"Адреса";return{id:String(Se?.geocoding?.place_id||Se?.place_id||oe),title:Ye,lat:Ae,lng:Ve}}).filter(U=>!!U)}function Ge(I){return Number.isFinite(I.lat)&&Number.isFinite(I.lng)}function ve(I){const H=Number(I);return Number.isFinite(H)?H:null}function G(I){const H=ve(I.lng)??ve(I.lon)??ve(I.longitude)??ve(I.x),U=ve(I.lat)??ve(I.latitude)??ve(I.y);if(H!=null&&U!=null)return{lat:U,lng:H};const oe=I?.geometry?.coordinates??I?.geom_centroid?.coordinates??I?.centroid?.coordinates??I?.geojson?.geometry?.coordinates??I?.geom?.coordinates;if(Array.isArray(oe)&&oe.length>=2){const we=ve(oe[0]),Ve=ve(oe[1]);if(we!=null&&Ve!=null)return{lat:Ve,lng:we}}return null}function ee(I){return(Array.isArray(I?.data)?I.data:[]).map((U,oe)=>{const we=G(U),Ve=String(U.text??U.title??U.label??U.name??U.address??U.display_name??U.id??"Адреса"),Ae=String(U.id??U.code??U.value??oe);return we?{id:Ae,title:Ve,...we}:{id:Ae,title:Ve}}).filter(U=>!!U?.title)}function te(I){const H=i();if(!H)return null;if(H.includes(":name"))return H.replace(":name",encodeURIComponent(I));try{const U=new URL(H,window.location.origin);return I.trim()&&U.searchParams.set("q",I),U.toString()}catch{return H}}async function de(I){const H=te(I);if(!H)return[];const U=await fetch(H);if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json();return ee(oe)}async function ue(I){const H=new URL(bc);H.searchParams.set("format","geojson"),H.searchParams.set("q",I),H.searchParams.set("addressdetails","1");const U=c();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 we=await oe.json();return rt(we)}async function _e(I){if(w.value=[],Ce(),y.value==="address"){if(!i()){pe.notify({type:"warning",title:"Пошук адреси",message:"Не налаштовано addressSuggest"});return}const oe=await de(I);if(!oe.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=oe;return}const H=await ue(I);if(!H.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=H}async function $e(I){if(Ge(I)){F(I),Y(I);return}try{const U=(await ue(I.title))[0];if(!U||!Ge(U)){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено координати адреси"});return}F(U),Y(U)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}}function O(){y.value!=="address"&&y.value!=="nominatim"||!m.value.trim().length&&!N.value.length||(z.value=!0,e.nextTick(()=>{Z()}))}function ne(I){const U=I.replace(/\s+/g,"").split(":");if(U.length!==4)return!1;const oe=[10,2,3,4];return U.every((we,Ve)=>we.length===oe[Ve]&&/^\d+$/.test(we))}function F(I){l("goToCoordinates",[I.lat,I.lng]),M.value=!0}async function X(){const I=m.value.trim();if(I){if(y.value==="xy"){const H=Ne(I);if(!H){pe.notify({type:"warning",title:"Пошук координат",message:"Використайте `lat lon` або DMS у форматі `50°27'00\"N 30°31'24\"E`."});return}F(H);return}if(y.value==="address"||y.value==="nominatim"){try{await _e(I)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}return}try{if(!ne(I)){pe.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}const H=new URL(yc);H.searchParams.set("cad_num",I);const U=await fetch(H.toString());if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json(),we=Pe(oe);if(!we.length)pe.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const Ve=we[0];F(Ve)}}catch(H){const U=H?.message||"Помилка пошуку";pe.notify({type:"error",title:"Пошук",message:U})}}}return(I,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"widgetRef",ref:k,class:"map-search-widget flex flex-col gap-2 rounded-xl widget min-w-[200px]"},[e.createElementVNode("form",{class:"flex gap-2",onSubmit:e.withModifiers(X,["prevent"])},[f.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:b,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:Q},[e.withDirectives((e.openBlock(),e.createElementBlock("span",{ref_key:"selectedToolLabelRef",ref:E,class:"block w-full truncate",title:be(y.value)},[e.createTextVNode(e.toDisplayString(be(y.value)),1)],8,lc)),[[n,Be(y.value)]]),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":x.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))]),x.value?(e.openBlock(),e.createElementBlock("div",ac,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.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=>se(U,oe)},[e.createTextVNode(e.toDisplayString(be(U)),1)],8,sc)),[[n,Be(U)]])),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:C,class:"relative flex-1 min-w-[140px]"},[y.value==="parcel"?(e.openBlock(),e.createBlock(rn,{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:h.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:O},null,42,ic)),[[e.vModelText,m.value,void 0,{trim:!0}]]),e.createElementVNode("div",cc,[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:xe},[...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))]),B.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:L,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(W)},[e.createElementVNode("div",dc,[e.createElementVNode("span",uc,e.toDisplayString(q.value),1),e.createElementVNode("button",{type:"button",class:"text-gray-400 hover:text-gray-600","aria-label":"Закрити",onClick:H[2]||(H[2]=U=>z.value=!1)}," ✕ ")]),e.createElementVNode("div",pc,[R.value.length?(e.openBlock(),e.createElementBlock("ul",fc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,U=>(e.openBlock(),e.createElementBlock("li",{key:U.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:oe=>$e(U)},e.toDisplayString(U.title),9,mc))),128))])):(e.openBlock(),e.createElementBlock("div",hc,e.toDisplayString($.value),1))])],4)])):e.createCommentVNode("",!0)],512)],32)],512))}}),[["__scopeId","data-v-f64a89a8"]]),xc={class:"pt-1 border-t border-gray-100"},wc={class:"space-y-1"},Cc=e.defineComponent({__name:"AddCoordinates",emits:["submit","cancel"],setup(o,{emit:t}){const n=t,r=e.ref(null),l=e.ref(null),a=(i,d,u)=>Math.min(Math.max(i,d),u),s=()=>{if(r.value===null||l.value===null||!Number.isFinite(r.value)||!Number.isFinite(l.value))return;const i=a(r.value,-90,90),d=a(l.value,-180,180);n("submit",{lat:i,lng:d}),r.value=null,l.value=null},c=()=>{r.value=null,l.value=null,n("cancel")};return(i,d)=>(e.openBlock(),e.createElementBlock("div",xc,[d[2]||(d[2]=e.createElementVNode("p",{class:"text-xs text-gray-600 mb-1"},"Додати точку за координатами:",-1)),e.createElementVNode("div",wc,[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:c}," Скасувати ")])])]))}}),vc=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))]))}}),Ec=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))]))}}),Bc=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))]))}}),_c=new Intl.NumberFormat("uk-UA",{minimumFractionDigits:2,maximumFractionDigits:2});function St(o){return _c.format(o)}function Io(o){return o>=1e3?`${St(o/1e3)} км`:`${St(o)} м`}const Vc={class:"flex items-center gap-1.5 text-xs bg-gray-50 rounded p-1.5"},Sc={key:0,class:"flex-1 flex gap-1"},$c={key:1,class:"flex-1 font-mono text-gray-700"},Nc=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),c=e.ref(n.coords.lng);e.watch(()=>n.coords,h=>{s.value=h.lat,c.value=h.lng},{deep:!0,immediate:!0});const i=(h,y,m)=>Math.min(Math.max(h,y),m),d=()=>{a.value=!0},u=()=>{if(!Number.isFinite(s.value)||!Number.isFinite(c.value))return;const h=i(s.value,-90,90),y=i(c.value,-180,180);r("update",{id:n.id,coords:{lat:h,lng:y}}),a.value=!1},f=()=>{r("delete",n.id)};return(h,y)=>(e.openBlock(),e.createElementBlock("div",Vc,[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",Sc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[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":y[1]||(y[1]=m=>c.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,c.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",$c,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:f}," ✕ ")]))}}),Ac={class:"ruler-control px-3 py-2.5 space-y-2"},Fc={type:"button",class:"ruler-row w-full flex items-center gap-2 cursor-pointer group text-left"},Mc={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"},Dc={class:"text-sm font-semibold text-slate-700"},Lc={class:"ruler-row"},Tc={type:"button",class:"w-full flex items-center gap-2 cursor-pointer group text-left"},Ic={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"},Rc={class:"inline-flex rounded-md overflow-hidden border border-gray-200 bg-gray-100"},Oc=["onClick"],zc={class:"flex items-center gap-2 mt-0.5 pl-7"},Pc={key:0,class:"text-base font-semibold text-green-600"},jc={key:1,class:"text-xs text-gray-400"},Uc={class:"ruler-row flex items-center gap-2 cursor-pointer"},Hc={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"},qc={class:"text-xs font-medium text-gray-600 flex-1"},Kc={key:0,class:"pt-1.5 border-t border-gray-100 max-h-32 overflow-y-auto space-y-1"},Wc=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,x)=>{const b=V=>V*Math.PI/180,E=b(x.lat-m.lat),k=b(x.lng-m.lng),C=b(m.lat),w=b(x.lat),L=Math.sin(E/2),z=Math.sin(k/2);return 6371e3*(2*Math.asin(Math.sqrt(L*L+Math.cos(C)*Math.cos(w)*z*z)))},c=e.computed(()=>{if(t.points.length<2)return 0;let m=0;for(let x=1;x<t.points.length;x+=1)m+=s(t.points[x-1].coords,t.points[x].coords);return t.isShapeClosed&&t.points.length>=2&&(m+=s(t.points[t.points.length-1].coords,t.points[0].coords)),m}),i=e.computed(()=>c.value>=1e3?`${St(c.value/1e3)} км`:`${St(c.value)} м`);function d(m){if(m.length<3)return 0;const x=m[0].lat,b=m[0].lng,E=(C,w)=>{const L=(C-x)*110574;return{x:(w-b)*111320*Math.cos(x*Math.PI/180),y:L}};let k=0;for(let C=0;C<m.length;C++){const w=(C+1)%m.length,L=E(m[C].lat,m[C].lng),z=E(m[w].lat,m[w].lng);k+=L.x*z.y-L.y*z.x}return Math.abs(k)*.5}const u=e.computed(()=>{if(!t.isShapeClosed||t.points.length<3)return 0;const m=t.points.map(x=>x.coords);return d(m)}),f=e.computed(()=>u.value>0),h=e.computed(()=>{const m=u.value;if(m===0)return"—";if(r.value==="km2"){const b=m/1e6;return`${St(b)} км²`}if(r.value==="ha"){const b=m/1e4;return`${St(b)} га`}const x=m>=1?Math.round(m):m;return`${St(x)} м²`}),y=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,x)=>(e.openBlock(),e.createElementBlock("div",Ac,[e.createElementVNode("button",Fc,[e.createElementVNode("span",Mc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),x[1]||(x[1]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Загальна відстань",-1)),e.createElementVNode("span",Dc,e.toDisplayString(i.value),1)]),e.createElementVNode("div",Lc,[e.createElementVNode("button",Tc,[e.createElementVNode("span",Ic,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),x[2]||(x[2]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Площа",-1)),e.createElementVNode("div",Rc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,(b,E)=>e.createElementVNode("button",{key:b.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",E===0&&"rounded-l-md",E===l.length-1&&"rounded-r-md",r.value===b.id?"bg-white text-green-600 font-semibold shadow-sm":"text-gray-600 hover:bg-gray-50"]),onClick:e.withModifiers(k=>r.value=b.id,["stop"])},e.toDisplayString(b.label),11,Oc)),64))])]),e.createElementVNode("div",zc,[f.value?(e.openBlock(),e.createElementBlock("span",Pc,e.toDisplayString(h.value),1)):(e.openBlock(),e.createElementBlock("span",jc,"—"))])]),e.createElementVNode("div",Uc,[e.createElementVNode("span",Hc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),e.createElementVNode("span",qc,e.toDisplayString(y.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",Kc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.points,(b,E)=>(e.openBlock(),e.createBlock(Nc,{key:b.id,id:b.id,index:E+1,coords:b.coords,onUpdate:x[0]||(x[0]=k=>m.$emit("update-point",k)),onDelete:k=>m.$emit("delete-point",b.id)},null,8,["id","index","coords","onDelete"]))),128))])):e.createCommentVNode("",!0)]))}}),Gc={class:"px-3 py-3 bg-blue-50/50 border-b border-blue-100"},Yc={class:"flex items-start gap-2"},Xc=e.defineComponent({__name:"InfoHint",setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",Gc,[e.createElementVNode("div",Yc,[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))])]))}}),Zc={class:"space-y-1.5"},Jc={class:"space-y-1 max-h-40 overflow-y-auto"},Qc={class:"text-gray-700"},ed={class:"font-semibold text-slate-800"},td=e.defineComponent({__name:"ToPointList",props:{points:{},isShapeClosed:{type:Boolean}},setup(o){const t=o;function n(a,s){const c=y=>y*Math.PI/180,i=c(s.lat-a.lat),d=c(s.lng-a.lng),u=c(a.lat),f=c(s.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(i/2)**2+Math.cos(u)*Math.cos(f)*Math.sin(d/2)**2)))}function r(a){return Io(a)}const l=e.computed(()=>{const a=[],s=t.points;if(s.length<2)return a;for(let c=0;c<s.length;c++){const i=c===s.length-1&&t.isShapeClosed?0:c+1;if(i>=s.length)break;const d=n(s[c].coords,s[i].coords);a.push({from:c+1,to:i+1,label:r(d)})}return a});return(a,s)=>(e.openBlock(),e.createElementBlock("div",Zc,[s[0]||(s[0]=e.createElementVNode("p",{class:"text-xs font-medium text-gray-600 mb-1.5"},"Відстань між точками:",-1)),e.createElementVNode("div",Jc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(c,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"flex items-center justify-between text-xs py-1 px-2 rounded bg-gray-50"},[e.createElementVNode("span",Qc,"Точка "+e.toDisplayString(c.from)+" → Точка "+e.toDisplayString(c.to),1),e.createElementVNode("span",ed,e.toDisplayString(c.label),1)]))),128))])]))}}),nd={class:"ruler-panel-wrap absolute bottom-12 right-4 z-[1001] animate-slide-up"},od={class:"bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden w-72"},rd={class:"bg-gradient-to-r from-blue-400 to-blue-500 px-3 py-2 flex items-center justify-between"},ld={class:"flex items-center gap-2"},ad={class:"w-6 h-6 bg-white/20 rounded-lg flex items-center justify-center"},sd={class:"flex border-b border-gray-200"},id={key:1,class:"px-3 py-2.5"},cd={key:1,class:"text-xs text-gray-500"},dd={class:"px-2.5 py-1.5 bg-gray-50 border-t border-gray-200 space-y-1.5"},ud={class:"flex gap-1.5"},pd=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),c=e.ref(!1),i=e.ref("general");function d(S){i.value=S,r("tab-change",S)}e.onMounted(()=>{r("tab-change",i.value)});const u=e.computed(()=>l.value.length>=3&&!c.value);let f=1;const h=()=>l.value.map(S=>({id:S.id,coords:{...S.coords}})),y=()=>{l.value.length<3&&c.value&&(c.value=!1,r("shape-closed-change",!1)),r("points-change",h())},m=()=>{const S=f;return f+=1,S},x=S=>{l.value=[...l.value,{id:m(),coords:{lat:S.lat,lng:S.lng}}],y()},b=({id:S,coords:M})=>{const R=l.value.findIndex($=>$.id===S);if(R===-1)return;const q=[...l.value];q[R]={id:S,coords:{...M}},l.value=q,y()},E=S=>{l.value=l.value.filter(M=>M.id!==S),y()},k=()=>{l.value=[],c.value&&(c.value=!1,r("shape-closed-change",!1)),y()},C=S=>{b(S)},w=S=>{E(S)},L=()=>{s.value=!0,r("add-request")},z=S=>{x(S),s.value=!1},N=()=>{s.value=!1},B=()=>{u.value&&(c.value=!0,r("complete"),r("shape-closed-change",!0))},V=()=>{k(),s.value=!1,r("close")};return t({addPoint:x,clearPoints:k}),(S,M)=>(e.openBlock(),e.createElementBlock("div",nd,[e.createElementVNode("div",od,[e.createElementVNode("div",rd,[e.createElementVNode("div",ld,[e.createElementVNode("div",ad,[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",sd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",i.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]=R=>d("general"))}," Загальна ",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",i.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]=R=>d("topoint"))}," До точки ",2)]),i.value==="general"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[a.value?(e.openBlock(),e.createBlock(Wc,{key:1,points:l.value,"is-shape-closed":c.value,onUpdatePoint:C,onDeletePoint:w},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createBlock(Xc,{key:0}))],64)):(e.openBlock(),e.createElementBlock("div",id,[a.value?(e.openBlock(),e.createBlock(td,{key:0,points:l.value,"is-shape-closed":c.value},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createElementBlock("p",cd,"Додайте точки на карті, щоб бачити відстані між ними."))])),e.createElementVNode("div",dd,[e.createElementVNode("div",ud,[s.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(vc,{key:0,onClick:L})),u.value?(e.openBlock(),e.createBlock(Bc,{key:1,onClick:B})):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createBlock(Cc,{key:0,onSubmit:z,onCancel:N})):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(Ec,{key:1,onClick:k})):e.createCommentVNode("",!0)])])]))}}),Ue="ruler-points",ht="ruler-line",gt="ruler-polygon",yt="ruler-segments",fd=e.defineComponent({__name:"RulerLayer",props:{map:{},points:{},isShapeClosed:{type:Boolean},labelMode:{}},setup(o){function t(m,x){const b=z=>z*Math.PI/180,E=b(x.lat-m.lat),k=b(x.lng-m.lng),C=b(m.lat),w=b(x.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(E/2)**2+Math.cos(C)*Math.cos(w)*Math.sin(k/2)**2)))}function n(m){return Io(m)}const r=o;function l(){return{type:"FeatureCollection",features:[]}}function a(m,x,b){const E=b??"general",k=[];let C=0;k.push(0);for(let w=1;w<m.length;w++)C+=t(m[w-1].coords,m[w].coords),k.push(C);return x&&m.length>=2&&(C+=t(m[m.length-1].coords,m[0].coords)),{type:"FeatureCollection",features:m.map((w,L)=>{const z=E==="general"?L===0?"0":n(k[L]):L===0?"0":n(t(m[L-1].coords,m[L].coords));return{type:"Feature",geometry:{type:"Point",coordinates:[w.coords.lng,w.coords.lat]},properties:{id:w.id,index:L+1,label:z}}})}}function s(m,x){if(m.length<2)return l();const b=[];for(let E=0;E<m.length;E++){const k=E===m.length-1&&x?0:E+1;if(k>=m.length)break;const C=m[E].coords,w=m[k].coords,L=t(C,w);b.push({type:"Feature",geometry:{type:"LineString",coordinates:[[C.lng,C.lat],[w.lng,w.lat]]},properties:{distance:n(L)}})}return{type:"FeatureCollection",features:b}}function c(m,x){if(m.length<2)return l();const b=m.map(E=>[E.coords.lng,E.coords.lat]);return x&&b.push(b[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:b},properties:{}}]}}function i(m){if(m.length<3)return l();const x=m.map(b=>[b.coords.lng,b.coords.lat]);return x.push(x[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[x]},properties:{}}]}}let d=!1;function u(m){m.getSource(Ue)||(m.addSource(Ue,{type:"geojson",data:l()}),m.addLayer({id:`${Ue}-circle`,type:"circle",source:Ue,paint:{"circle-radius":5,"circle-color":"#1e293b","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}}),m.addLayer({id:`${Ue}-labels`,type:"symbol",source:Ue,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(yt)||(m.addSource(yt,{type:"geojson",data:l()}),m.addLayer({id:`${yt}-labels`,type:"symbol",source:yt,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(ht)||(m.addSource(ht,{type:"geojson",data:l()}),m.addLayer({id:`${ht}-layer`,type:"line",source:ht,paint:{"line-color":"#3b82f6","line-width":2}})),m.getSource(gt)||(m.addSource(gt,{type:"geojson",data:l()}),m.addLayer({id:`${gt}-layer`,type:"fill",source:gt,paint:{"fill-color":"#93c5fd","fill-opacity":.25}})),d=!0}function f(m){if(m){try{m.getLayer(`${gt}-layer`)&&m.removeLayer(`${gt}-layer`),m.getSource(gt)&&m.removeSource(gt),m.getLayer(`${ht}-layer`)&&m.removeLayer(`${ht}-layer`),m.getSource(ht)&&m.removeSource(ht),m.getLayer(`${yt}-labels`)&&m.removeLayer(`${yt}-labels`),m.getSource(yt)&&m.removeSource(yt),m.getLayer(`${Ue}-labels`)&&m.removeLayer(`${Ue}-labels`),m.getLayer(`${Ue}-circle`)&&m.removeLayer(`${Ue}-circle`),m.getSource(Ue)&&m.removeSource(Ue)}catch{}d=!1}}function h(m){if(!m)return;const x=m.getSource(Ue),b=m.getSource(ht),E=m.getSource(gt),k=m.getSource(yt),C=r.points,w=r.labelMode??"general";x&&x.setData(a(C,r.isShapeClosed,w)),b&&b.setData(c(C,r.isShapeClosed)),E&&E.setData(i(C)),k&&k.setData(w==="topoint"?s(C,r.isShapeClosed):l())}function y(){const m=r.map;m&&(d||u(m),h(m))}return e.watch(()=>[r.points,r.isShapeClosed,r.labelMode],()=>y(),{deep:!0,immediate:!0}),e.watch(()=>r.map,()=>y(),{immediate:!0}),e.onBeforeUnmount(()=>{f(r.map)}),(m,x)=>null}});function md(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?c():(t.value=!0,o.onActivate?.())}function c(){t.value=!1,n.value=[],r.value=!1,a.value?.clearPoints(),o.onDeactivate?.()}function i(y){n.value=y}function d(y){l.value=y}function u(y){r.value=y}function f(y){t.value&&a.value?.addPoint({lat:y.lat,lng:y.lng})}const h=e.computed(()=>n.value.length>0);return{isRulerActive:t,rulerPoints:n,rulerShapeClosed:r,rulerActiveTab:l,rulerPanelRef:a,hasRulerPoints:h,toggleRuler:s,closeRuler:c,onRulerPointsChange:i,onRulerTabChange:d,onRulerShapeClosedChange:u,handleRulerMapClick:f}}const hd={key:0,class:"absolute top-4 left-4 z-[1000] w-[calc(100%-20px)] sm:w-[350px]"},gd={key:1,class:"form-geom__panel flex gap-1 items-start mt-2"},yd={class:"flex items-center gap-1"},bd=["disabled"],kd={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"},xd=["disabled"],wd=["disabled"],Cd={class:"mt-4 flex justify-end gap-2"},vd=["disabled"],Ed={class:"absolute top-4 right-4 z-[1000]"},Bd={class:"flex flex-col gap-[2px]"},_d=["disabled"],Vd=["disabled"],Sd=["disabled"],$d=["disabled"],Nd={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"},Ad={class:"space-y-0.5"},Fd={class:"text-gray-500"},Md={class:"text-gray-900 text-right break-all"},Dd={class:"absolute left-4 bottom-[36px] z-[1000]"},Ld={class:"flex flex-col gap-2"},Td={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]"},Id={class:"flex flex-col gap-1"},Rd=["checked","disabled","onChange"],Od={class:"text-gray-700 text-xs font-medium"},zd={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"},Pd={key:0,class:"form-geom__feature flex items-center text-xs transition-all gap-2 w-full px-2 pb-1"},jd={class:"mr-auto flex items-center gap-2 min-w-0 relative"},Ud={class:"shrink-0"},Hd={key:0,class:"font-bold"},qd=["onClick","disabled"],Kd={key:0},Wd={class:"flex items-center"},Gd={class:"text-xs mr-2"},Yd={key:0},Xd={key:1},Zd={key:0,class:"text-xs mr-2"},Jd={key:1,class:"text-xs mr-2"},Qd=["disabled"],eu=["disabled"],un="__vs_form_maplibre_loader__",pn="vs-global-bounds-src",fn="vs-global-bounds-line",Ro=ye(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 p=l?.multiple,g=l?.multi,v=_=>_===""||_===!0||_==="true"||_===1||_==="1";return!!n.multi||!!n.multiple||v(g)||v(p)}),s=e.computed(()=>!!n.disabled),c=e.ref(!1),i=e.ref(null),d=e.ref(0),u=e.ref(""),f=e.ref(null),h=e.ref([]),y=e.ref(null),m=e.ref(null),x=md({onActivate(){if(X)try{X.changeMode("simple_select",{featureIds:[]})}catch{}u.value=""},onDeactivate(){}});function b(){x.toggleRuler()}const E=e.getCurrentInstance(),k=E?.appContext?.config?.globalProperties?.$settings??{},C=k?.map??{},w=E?.vnode?.props??{};function L(p){return Object.prototype.hasOwnProperty.call(w,p)||Object.prototype.hasOwnProperty.call(w,p.replace(/[A-Z]/g,g=>`-${g.toLowerCase()}`))}const z=Array.isArray(C.center)&&C.center.length===2?C.center:Array.isArray(k.center)&&k.center.length===2?k.center:[30,50],N=typeof C.zoom=="number"?C.zoom:typeof k.zoom=="number"?k.zoom:typeof k.defaultZoom=="number"?k.defaultZoom:10,B=e.computed(()=>L("center")?n.center:C.center??n.center),V=e.computed(()=>L("zoom")?n.zoom:C.zoom??n.zoom),S=e.computed(()=>L("katottg")?String(n.katottg??""):String(C.katottg??n.katottg??"")),M=e.computed(()=>L("layers")?n.layers??[]:C.layers??n.layers??[]),R=e.computed(()=>L("bounds")?n.bounds:C.bounds??n.bounds),q=e.ref(Array.isArray(B.value)&&B.value.length===2?[...B.value]:z),$=e.ref(typeof V.value=="number"?V.value:N),T=e.ref(n.modelValue),D=e.ref(null),Y=e.ref(null),W=e.ref([]),Z=e.ref(!1),le=e.ref(!1),Ce=e.ref([]),ge=e.ref({coordinates:"",format:"decimal",order:"lat-lon"}),Q={coordinates:{type:"Textarea",label:"Координати вершин полігону (3-100 точок)",placeholder:`50.4501, 30.5234
|
|
2
|
+
`)});return}T==="add"?Array.isArray(s.value)?s.value=[...s.value,Z.value]:s.value=[Z.value]:s.value=s.value.map((ee,te)=>te===D?Z.value:ee),$.value=!1}function Ge(G){s.value=s.value.filter((ee,te)=>te!==G)}function ve(){$.value=!1}return(G,ee)=>(e.openBlock(),e.createElementBlock("div",ai,[a.value?(e.openBlock(),e.createElementBlock("div",si,[r("search")?(e.openBlock(),e.createElementBlock("div",ii,[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":ee[0]||(ee[0]=te=>i.value=te),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,i.value]])])):e.createCommentVNode("",!0),e.createElementVNode("div",ci,[r("import")?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"fileInput",ref:x,onChange:L,class:"hidden",accept:".json",type:"file"},null,544)):e.createCommentVNode("",!0),r("import")?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:C,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"}),ee[4]||(ee[4]=e.createTextVNode(" Імпорт ",-1))])):e.createCommentVNode("",!0),r("export")?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",onClick:z,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"}),ee[5]||(ee[5]=e.createTextVNode(" Експорт ",-1))])):e.createCommentVNode("",!0),r("add")?(e.openBlock(),e.createElementBlock("button",{key:3,onClick:fe,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"}),ee[6]||(ee[6]=e.createTextVNode(" Додати ",-1))])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",di,[e.createElementVNode("table",ui,[e.createElementVNode("thead",pi,[e.createElementVNode("tr",fi,[e.createElementVNode("th",mi,[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(h.value,te=>(e.openBlock(),e.createElementBlock("th",{key:te.key,class:"px-4 py-3 text-left text-xs font-semibold text-gray-900"},[e.createElementVNode("button",{type:"button",onClick:de=>xe(te),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(te.ua||te.label),1),d.value===(te.key||te.name)?(e.openBlock(),e.createElementBlock("span",gi,e.toDisplayString(u.value==="asc"?"▲":"▼"),1)):e.createCommentVNode("",!0)],8,hi)]))),128)),ee[7]||(ee[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}])},[f.value.length===0?(e.openBlock(),e.createElementBlock("td",yi,[e.createElementVNode("div",bi,[e.createElementVNode("div",ki,[e.createVNode(li,{class:"w-48 mx-auto"}),ee[8]||(ee[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(f.value,(te,de)=>(e.openBlock(),e.createElementBlock("tr",{key:te.id,class:e.normalizeClass(["border-b transition-colors hover:bg-gray-50 cursor-move text-sm text-gray-700",{"opacity-50":y.value===de,"border-t-2 border-b-2 border-blue-500 bg-blue-50 dark:bg-blue-900/20":m.value===de}]),draggable:"true",onDragstart:ue=>b(de),onDragover:e.withModifiers(ue=>E(de),["prevent"]),onDrop:ue=>k(de)},[e.createElementVNode("td",wi,[e.createElementVNode("div",Ci,[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(h.value,ue=>(e.openBlock(),e.createElementBlock("td",{key:ue.key,class:"px-4 py-3 align-middle"},[Y(ue)==="slot"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Ce(ue.slot)?e.renderSlot(G.$slots,ue.slot,{key:0,row:te,value:te[ue.key],column:ue}):(e.openBlock(),e.createElementBlock("div",{key:1,class:"text-sm text-gray-900",innerHTML:Q(ue.slot,te)},null,8,vi))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[Y(ue)==="file"?(e.openBlock(),e.createElementBlock("div",Ei,[w(Ne(te,ue))?(e.openBlock(),e.createElementBlock("div",Bi,[e.createElementVNode("img",{src:Ne(te,ue),alt:"alt",width:"45",class:"rounded-md max-w-[45px] h-[45px] object-cover"},null,8,_i)])):(e.openBlock(),e.createElementBlock("div",Vi,[e.createVNode(e.unref(P.FileText),{class:"h-4 w-4 min-w-4"})]))])):Y(ue)==="color"?(e.openBlock(),e.createElementBlock("div",Si,[e.createElementVNode("span",{class:"inline-flex h-6 w-6 rounded border border-gray-200",style:e.normalizeStyle({backgroundColor:Ne(te,ue)||"#ffffff"})},null,4)])):(e.openBlock(),e.createElementBlock("div",$i,e.toDisplayString(Ne(te,ue)),1))],64))]))),128)),e.createElementVNode("td",Ni,[e.createElementVNode("div",Ai,[e.createElementVNode("button",{onClick:ue=>Pe(te,de),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,Fi),e.createElementVNode("button",{onClick:ue=>Ge(de),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,Mi)])])],42,xi))),128))],2)])]),e.createVNode(e.unref(pe.VsModal),{visible:$.value,title:q.value,size:"lg",onClose:ve,teleport:"#modal"},{default:e.withCtx(()=>[e.createVNode(nt,{schema:W.value,values:Z.value,"onUpdate:values":ee[1]||(ee[1]=te=>Z.value=te),form:le.value,"onUpdate:form":ee[2]||(ee[2]=te=>le.value=te)},null,8,["schema","values","form"]),e.createElementVNode("div",Di,[e.createElementVNode("button",{type:"button",onClick:ee[3]||(ee[3]=te=>$.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:rt,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"])]))}}),Li={},Ti={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 Ii(o,t){return e.openBlock(),e.createElementBlock("svg",Ti,[...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 Ri=ye(Li,[["render",Ii]]),Oi={},zi={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 Pi(o,t){return e.openBlock(),e.createElementBlock("svg",zi,[...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 ji=ye(Oi,[["render",Pi]]),Ui={},Hi={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 qi(o,t){return e.openBlock(),e.createElementBlock("svg",Hi,[...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 Ki=ye(Ui,[["render",qi]]),Wi={class:"bg-white/30 p-1 rounded-md shadow w-fit"},Gi={class:"flex gap-2"},Yi=["onClick","title"],Xi=["src"],Zi=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(i){l("onLayerChange",i),r.value=i}const s={z:13,x:4790,y:2762};function c(i){if(i?.preview)return i.preview;if(!i?.url)return;const d={"{z}":s.z,"{x}":s.x,"{y}":s.y};let u=i.url;return Object.entries(d).forEach(([f,h])=>{u=u.replace(new RegExp(f,"gi"),String(h))}),u}return(i,d)=>(e.openBlock(),e.createElementBlock("div",Wi,[e.createElementVNode("div",Gi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.basemaps,(u,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:e.normalizeClass(["cursor-pointer border rounded-lg overflow-hidden hover:shadow-sm",{"ring-2 ring-blue-500 border-blue-300":r.value===f}]),onClick:h=>a(f),title:u.name||f,role:"button",tabindex:"0"},[e.createElementVNode("img",{src:c(u),alt:"",class:"w-10 h-10 object-cover"},null,8,Xi)],10,Yi))),128))])]))}}),Vt=1e-10,sn=/([+-]?\d{1,3})\s*[°º˚]\s*(\d{1,2})\s*['’′`]\s*(\d{1,2}(?:\.\d+)?)\s*["”″]\s*([NSEW])/gi,Ji=/^[+-]?\d+(?:\.\d+)?$/;function Qi(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 f=u+1,h=t==="decimal"?ec(d,f,n):Mo(d,f,n);if(!h.ok){l.push(...h.errors);return}const y=a[a.length-1];if(y&&Lo(y,h.point)){l.push({line:f,message:"Послідовні точки не повинні дублюватися."});return}a.push(h.point)}),l.length)return{ok:!1,errors:l};if(new Set(a.map(nc)).size<3)return{ok:!1,errors:[{line:0,message:"Полігон повинен містити мінімум 3 унікальні точки."}]};const c=[...a];let i=!1;return Lo(c[0],c[c.length-1])||(c.push(c[0]),i=!0),oc(c)?{ok:!1,errors:[{line:0,message:"Полігон має самоперетин."}]}:{ok:!0,ring:c,wasClosedAutomatically:i}}function ec(o,t,n){return Fo(o,"decimal",n,t)}function Fo(o,t,n,r=1){return t==="decimal"?tc(o,r,n):Mo(o,r,n)}function tc(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=>Ji.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 c=n==="lat-lon"?a:s,i=n==="lat-lon"?s:a;return(c<-90||c>90)&&r.push({line:t,message:"Широта поза діапазоном (-90..90)."}),(i<-180||i>180)&&r.push({line:t,message:"Довгота поза діапазоном (-180..180)."}),r.length?{ok:!1,errors:r}:{ok:!0,point:[i,c]}}function Mo(o,t,n){sn.lastIndex=0;const r=[...o.matchAll(sn)];if(r.length<2)return{ok:!1,errors:[{line:t,message:"Не вдалося розпізнати DMS-координати."}]};if(r.length>2)return{ok:!1,errors:[{line:t,message:"У рядку дозволено лише одну пару координат."}]};if(sn.lastIndex=0,o.replace(sn," ").replace(/[\s,;]+/g,"").trim().length)return{ok:!1,errors:[{line:t,message:"У рядку виявлено зайві символи або значення."}]};const a=Do(r[0],t,n==="lat-lon"?"lat":"lon"),s=Do(r[1],t,n==="lat-lon"?"lon":"lat"),c=[];if(a.ok||c.push(a.error),s.ok||c.push(s.error),c.length)return{ok:!1,errors:c};const i=n==="lat-lon"?a.value:s.value;return{ok:!0,point:[n==="lat-lon"?s.value:a.value,i]}}function Do(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 f=d+l/60+a/3600;return{ok:!0,value:s==="S"||s==="W"?-f:f}}function nc(o){return`${o[0].toFixed(12)}:${o[1].toFixed(12)}`}function Lo(o,t){return Math.abs(o[0]-t[0])<Vt&&Math.abs(o[1]-t[1])<Vt}function oc(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(rc(n,r,a,s))return!0}}return!1}function rc(o,t,n,r){const l=cn(o,t,n),a=cn(o,t,r),s=cn(n,r,o),c=cn(n,r,t);return!!(l!==a&&s!==c||l===0&&dn(o,n,t)||a===0&&dn(o,r,t)||s===0&&dn(n,o,r)||c===0&&dn(n,t,r))}function cn(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)<Vt?0:r>0?1:2}function dn(o,t,n){return t[0]<=Math.max(o[0],n[0])+Vt&&t[0]+Vt>=Math.min(o[0],n[0])&&t[1]<=Math.max(o[1],n[1])+Vt&&t[1]+Vt>=Math.min(o[1],n[1])}const lc=["title"],ac={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"},sc=["onClick"],ic=["placeholder"],cc={class:"absolute inset-y-0 right-2 flex items-center gap-1"},dc={class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-gray-100"},uc={class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},pc={class:"max-h-[260px] overflow-auto"},fc={key:0,class:"divide-y divide-gray-100"},mc=["onClick"],hc={key:1,class:"px-3 py-3 text-xs text-gray-500"},To="formMapSearchAddressHistory",gc=12,yc="https://geo.rv.ua/api-user/dzk.api",bc="https://nominatim.openstreetmap.org/search",kc=ye(e.defineComponent({__name:"map-search",props:{config:{}},emits:["goToCoordinates"],setup(o,{emit:t}){const n={mounted(I,H){if(typeof document>"u")return;let U=null;const oe=8,we=()=>{const Ae=String(H?.value??"");if(!Ae)return;U=document.createElement("div"),U.textContent=Ae,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=I.getBoundingClientRect();U.style.left=`${Se.right+window.scrollX+oe}px`,U.style.top=`${Se.top+window.scrollY+(Se.height-U.offsetHeight)/2}px`},Ve=()=>{U?.parentNode&&U.parentNode.removeChild(U),U=null};I.addEventListener("mouseenter",we),I.addEventListener("mouseleave",Ve),Object.assign(I,{tooltipRightHandlers:{show:we,hide:Ve}})},unmounted(I){if(typeof document>"u")return;const H=I.tooltipRightHandlers;H&&(I.removeEventListener("mouseenter",H.show),I.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 c(){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 i(){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=!!i(),u=e.computed(()=>{const I=["nominatim","xy","parcel"];return d&&I.unshift("address"),I}),f=e.computed(()=>{const I=u.value,H=r.config?.tools?.filter(U=>I.includes(U));return H&&H.length?H:I}),h=e.computed(()=>r.config?.placeholder?.trim()||"Пошук…"),y=e.ref(f.value[0]);e.watch(f,I=>{I.includes(y.value)||(y.value=I[0])});const m=e.ref(""),x=e.ref(!1),b=e.ref(null),E=e.ref(null),k=e.ref(null),C=e.ref(null),w=e.ref([]),L=e.ref(null),z=e.ref(!1),N=e.ref([]),B=e.computed(()=>(y.value==="address"||y.value==="nominatim")&&z.value),V=e.computed(()=>r.config?.addressDebounceMs??1e3);let S=null;const M=e.ref(!1),R=e.computed(()=>m.value.trim().length>0?w.value:N.value),q=e.computed(()=>m.value.trim().length?`Знайдено ${w.value.length}`:"Історія пошуку"),$=e.computed(()=>m.value.trim().length?"Нічого не знайдено":"Історія порожня");function T(){if(typeof window>"u")return[];try{const I=window.localStorage?.getItem?.(To);if(!I)return[];const H=JSON.parse(I);return Array.isArray(H)?H:[]}catch{return[]}}function D(I){typeof window>"u"||window.localStorage?.setItem?.(To,JSON.stringify(I))}function Y(I){const U=[I,...N.value.filter(oe=>oe.id!==I.id)].slice(0,10);N.value=U,D(U)}const W=e.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function Z(){if(!C.value)return;const I=C.value.getBoundingClientRect(),H=k.value?.getBoundingClientRect(),U=H?.width??I.width,oe=(H?.left??I.left)+window.scrollX,we=I.bottom+window.scrollY+gc;W.left=`${oe}px`,W.top=`${we}px`,W.width=`${U}px`,W.display="block"}const le=()=>{B.value&&Z()};function Ce(){S&&(clearTimeout(S),S=null)}e.watch(y,()=>{m.value="",x.value=!1,w.value=[],z.value=!1,Ce(),M.value=!1}),e.watch(B,I=>{I?e.nextTick(()=>{Z()}):W.display="none"}),e.watch(m,I=>{if(y.value!=="address"&&y.value!=="nominatim"){w.value=[],Ce();return}if(!I.trim()){w.value=[],z.value=N.value.length>0,Ce();return}Ce(),z.value=!0,S=window.setTimeout(()=>{_e(I).catch(H=>{const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})})},V.value)});function ge(I){const H=[];E.value&&H.push(E.value),I instanceof HTMLElement&&H.push(I),b.value?.querySelectorAll("li")?.forEach(oe=>{H.push(oe)}),H.forEach(oe=>{oe.dispatchEvent(new MouseEvent("mouseleave",{bubbles:!0}))})}function Q(I){x.value&&ge(I.target),x.value=!x.value}function se(I,H){ge(H?.target),y.value=I}function xe(){m.value="",w.value=[],z.value=!1,M.value=!1}function fe(I){const H=I.target;if(x.value){const U=b.value;U&&!U.contains(H)&&(ge(H),x.value=!1)}if(B.value){const U=L.value,oe=C.value;U&&!U.contains(H)&&(!oe||!oe.contains(H))&&(z.value=!1)}}e.onMounted(()=>{N.value=T(),window.addEventListener("click",fe,!0),window.addEventListener("scroll",le,!0),window.addEventListener("resize",le)}),e.onBeforeUnmount(()=>{window.removeEventListener("click",fe,!0),window.removeEventListener("scroll",le,!0),window.removeEventListener("resize",le),Ce()});function be(I){return I==="xy"?"Координати":I==="parcel"?"Кадастр":I==="nominatim"?"Nominatim":"Адресний"}function Be(I){switch(I){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(I){const H=Fo(I.trim(),"dms","lat-lon");if(H.ok){const[Je,Tt]=H.point;return{lat:Tt,lng:Je}}const U=I.replace(/[,]+/g," ").trim();if(!U)return null;const oe=U.split(/\s+/).filter(Boolean);if(oe.length<2)return null;const we=oe.slice(0,2).map(Number);if(!we.every(Je=>Number.isFinite(Je)))return null;let[Ve,Ae]=we,Se=Ve,Ye=Ae;const Et=Je=>Math.abs(Je)<=90,Bt=Je=>Math.abs(Je)<=180;if(!Et(Se)||!Bt(Ye))if(Et(Ye)&&Bt(Se))Se=Ae,Ye=Ve;else return null;return{lat:Se,lng:Ye}}function Pe(I){const H=I?.result||I?.data||I;if(!H)return[];const U=H.geom_centroid;if(!U||!Array.isArray(U.coordinates))return[];const[oe,we]=U.coordinates;return!Number.isFinite(we)||!Number.isFinite(oe)?[]:[{id:"parcel",title:H.cadnum||H.cad_num||"Земельна ділянка",lat:we,lng:oe}]}function rt(I){return(Array.isArray(I?.features)?I.features:[]).map((U,oe)=>{const we=U?.geometry?.coordinates,Ve=Number(we?.[0]),Ae=Number(we?.[1]);if(!Number.isFinite(Ae)||!Number.isFinite(Ve))return null;const Se=U?.properties||{},Ye=Se?.geocoding?.label||Se?.display_name||Se?.label||"Адреса";return{id:String(Se?.geocoding?.place_id||Se?.place_id||oe),title:Ye,lat:Ae,lng:Ve}}).filter(U=>!!U)}function Ge(I){return Number.isFinite(I.lat)&&Number.isFinite(I.lng)}function ve(I){const H=Number(I);return Number.isFinite(H)?H:null}function G(I){const H=ve(I.lng)??ve(I.lon)??ve(I.longitude)??ve(I.x),U=ve(I.lat)??ve(I.latitude)??ve(I.y);if(H!=null&&U!=null)return{lat:U,lng:H};const oe=I?.geometry?.coordinates??I?.geom_centroid?.coordinates??I?.centroid?.coordinates??I?.geojson?.geometry?.coordinates??I?.geom?.coordinates;if(Array.isArray(oe)&&oe.length>=2){const we=ve(oe[0]),Ve=ve(oe[1]);if(we!=null&&Ve!=null)return{lat:Ve,lng:we}}return null}function ee(I){return(Array.isArray(I?.data)?I.data:[]).map((U,oe)=>{const we=G(U),Ve=String(U.text??U.title??U.label??U.name??U.address??U.display_name??U.id??"Адреса"),Ae=String(U.id??U.code??U.value??oe);return we?{id:Ae,title:Ve,...we}:{id:Ae,title:Ve}}).filter(U=>!!U?.title)}function te(I){const H=i();if(!H)return null;if(H.includes(":name"))return H.replace(":name",encodeURIComponent(I));try{const U=new URL(H,window.location.origin);return I.trim()&&U.searchParams.set("q",I),U.toString()}catch{return H}}async function de(I){const H=te(I);if(!H)return[];const U=await fetch(H);if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json();return ee(oe)}async function ue(I){const H=new URL(bc);H.searchParams.set("format","geojson"),H.searchParams.set("q",I),H.searchParams.set("addressdetails","1");const U=c();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 we=await oe.json();return rt(we)}async function _e(I){if(w.value=[],Ce(),y.value==="address"){if(!i()){pe.notify({type:"warning",title:"Пошук адреси",message:"Не налаштовано addressSuggest"});return}const oe=await de(I);if(!oe.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=oe;return}const H=await ue(I);if(!H.length){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}w.value=H}async function $e(I){if(Ge(I)){F(I),Y(I);return}try{const U=(await ue(I.title))[0];if(!U||!Ge(U)){pe.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено координати адреси"});return}F(U),Y(U)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}}function O(){y.value!=="address"&&y.value!=="nominatim"||!m.value.trim().length&&!N.value.length||(z.value=!0,e.nextTick(()=>{Z()}))}function ne(I){const U=I.replace(/\s+/g,"").split(":");if(U.length!==4)return!1;const oe=[10,2,3,4];return U.every((we,Ve)=>we.length===oe[Ve]&&/^\d+$/.test(we))}function F(I){l("goToCoordinates",[I.lat,I.lng]),M.value=!0}async function X(){const I=m.value.trim();if(I){if(y.value==="xy"){const H=Ne(I);if(!H){pe.notify({type:"warning",title:"Пошук координат",message:"Використайте `lat lon` або DMS у форматі `50°27'00\"N 30°31'24\"E`."});return}F(H);return}if(y.value==="address"||y.value==="nominatim"){try{await _e(I)}catch(H){const U=H?.message||"Помилка пошуку адреси";pe.notify({type:"error",title:"Пошук адреси",message:U})}return}try{if(!ne(I)){pe.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}const H=new URL(yc);H.searchParams.set("cad_num",I);const U=await fetch(H.toString());if(!U.ok)throw new Error(`HTTP ${U.status}`);const oe=await U.json(),we=Pe(oe);if(!we.length)pe.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const Ve=we[0];F(Ve)}}catch(H){const U=H?.message||"Помилка пошуку";pe.notify({type:"error",title:"Пошук",message:U})}}}return(I,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"widgetRef",ref:k,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(X,["prevent"])},[f.value.length>1?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:b,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:Q},[e.withDirectives((e.openBlock(),e.createElementBlock("span",{ref_key:"selectedToolLabelRef",ref:E,class:"block w-full truncate",title:be(y.value)},[e.createTextVNode(e.toDisplayString(be(y.value)),1)],8,lc)),[[n,Be(y.value)]]),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":x.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))]),x.value?(e.openBlock(),e.createElementBlock("div",ac,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.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=>se(U,oe)},[e.createTextVNode(e.toDisplayString(be(U)),1)],8,sc)),[[n,Be(U)]])),128))])])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"searchWrapperRef",ref:C,class:"relative flex-1 min-w-[140px]"},[y.value==="parcel"?(e.openBlock(),e.createBlock(rn,{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:h.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:O},null,42,ic)),[[e.vModelText,m.value,void 0,{trim:!0}]]),e.createElementVNode("div",cc,[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:xe},[...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))]),B.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:"body"},[e.createElementVNode("div",{ref_key:"addressResultsRef",ref:L,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(W)},[e.createElementVNode("div",dc,[e.createElementVNode("span",uc,e.toDisplayString(q.value),1),e.createElementVNode("button",{type:"button",class:"text-gray-400 hover:text-gray-600","aria-label":"Закрити",onClick:H[2]||(H[2]=U=>z.value=!1)}," ✕ ")]),e.createElementVNode("div",pc,[R.value.length?(e.openBlock(),e.createElementBlock("ul",fc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,U=>(e.openBlock(),e.createElementBlock("li",{key:U.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:oe=>$e(U)},e.toDisplayString(U.title),9,mc))),128))])):(e.openBlock(),e.createElementBlock("div",hc,e.toDisplayString($.value),1))])],4)])):e.createCommentVNode("",!0)],512)],32)],512))}}),[["__scopeId","data-v-1e7cfcf4"]]),xc={class:"pt-1 border-t border-gray-100"},wc={class:"space-y-1"},Cc=e.defineComponent({__name:"AddCoordinates",emits:["submit","cancel"],setup(o,{emit:t}){const n=t,r=e.ref(null),l=e.ref(null),a=(i,d,u)=>Math.min(Math.max(i,d),u),s=()=>{if(r.value===null||l.value===null||!Number.isFinite(r.value)||!Number.isFinite(l.value))return;const i=a(r.value,-90,90),d=a(l.value,-180,180);n("submit",{lat:i,lng:d}),r.value=null,l.value=null},c=()=>{r.value=null,l.value=null,n("cancel")};return(i,d)=>(e.openBlock(),e.createElementBlock("div",xc,[d[2]||(d[2]=e.createElementVNode("p",{class:"text-xs text-gray-600 mb-1"},"Додати точку за координатами:",-1)),e.createElementVNode("div",wc,[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:c}," Скасувати ")])])]))}}),vc=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))]))}}),Ec=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))]))}}),Bc=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))]))}}),_c=new Intl.NumberFormat("uk-UA",{minimumFractionDigits:2,maximumFractionDigits:2});function St(o){return _c.format(o)}function Io(o){return o>=1e3?`${St(o/1e3)} км`:`${St(o)} м`}const Vc={class:"flex items-center gap-1.5 text-xs bg-gray-50 rounded p-1.5"},Sc={key:0,class:"flex-1 flex gap-1"},$c={key:1,class:"flex-1 font-mono text-gray-700"},Nc=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),c=e.ref(n.coords.lng);e.watch(()=>n.coords,h=>{s.value=h.lat,c.value=h.lng},{deep:!0,immediate:!0});const i=(h,y,m)=>Math.min(Math.max(h,y),m),d=()=>{a.value=!0},u=()=>{if(!Number.isFinite(s.value)||!Number.isFinite(c.value))return;const h=i(s.value,-90,90),y=i(c.value,-180,180);r("update",{id:n.id,coords:{lat:h,lng:y}}),a.value=!1},f=()=>{r("delete",n.id)};return(h,y)=>(e.openBlock(),e.createElementBlock("div",Vc,[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",Sc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[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":y[1]||(y[1]=m=>c.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,c.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",$c,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:f}," ✕ ")]))}}),Ac={class:"ruler-control px-3 py-2.5 space-y-2"},Fc={type:"button",class:"ruler-row w-full flex items-center gap-2 cursor-pointer group text-left"},Mc={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"},Dc={class:"text-sm font-semibold text-slate-700"},Lc={class:"ruler-row"},Tc={type:"button",class:"w-full flex items-center gap-2 cursor-pointer group text-left"},Ic={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"},Rc={class:"inline-flex rounded-md overflow-hidden border border-gray-200 bg-gray-100"},Oc=["onClick"],zc={class:"flex items-center gap-2 mt-0.5 pl-7"},Pc={key:0,class:"text-base font-semibold text-green-600"},jc={key:1,class:"text-xs text-gray-400"},Uc={class:"ruler-row flex items-center gap-2 cursor-pointer"},Hc={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"},qc={class:"text-xs font-medium text-gray-600 flex-1"},Kc={key:0,class:"pt-1.5 border-t border-gray-100 max-h-32 overflow-y-auto space-y-1"},Wc=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,x)=>{const b=V=>V*Math.PI/180,E=b(x.lat-m.lat),k=b(x.lng-m.lng),C=b(m.lat),w=b(x.lat),L=Math.sin(E/2),z=Math.sin(k/2);return 6371e3*(2*Math.asin(Math.sqrt(L*L+Math.cos(C)*Math.cos(w)*z*z)))},c=e.computed(()=>{if(t.points.length<2)return 0;let m=0;for(let x=1;x<t.points.length;x+=1)m+=s(t.points[x-1].coords,t.points[x].coords);return t.isShapeClosed&&t.points.length>=2&&(m+=s(t.points[t.points.length-1].coords,t.points[0].coords)),m}),i=e.computed(()=>c.value>=1e3?`${St(c.value/1e3)} км`:`${St(c.value)} м`);function d(m){if(m.length<3)return 0;const x=m[0].lat,b=m[0].lng,E=(C,w)=>{const L=(C-x)*110574;return{x:(w-b)*111320*Math.cos(x*Math.PI/180),y:L}};let k=0;for(let C=0;C<m.length;C++){const w=(C+1)%m.length,L=E(m[C].lat,m[C].lng),z=E(m[w].lat,m[w].lng);k+=L.x*z.y-L.y*z.x}return Math.abs(k)*.5}const u=e.computed(()=>{if(!t.isShapeClosed||t.points.length<3)return 0;const m=t.points.map(x=>x.coords);return d(m)}),f=e.computed(()=>u.value>0),h=e.computed(()=>{const m=u.value;if(m===0)return"—";if(r.value==="km2"){const b=m/1e6;return`${St(b)} км²`}if(r.value==="ha"){const b=m/1e4;return`${St(b)} га`}const x=m>=1?Math.round(m):m;return`${St(x)} м²`}),y=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,x)=>(e.openBlock(),e.createElementBlock("div",Ac,[e.createElementVNode("button",Fc,[e.createElementVNode("span",Mc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),x[1]||(x[1]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Загальна відстань",-1)),e.createElementVNode("span",Dc,e.toDisplayString(i.value),1)]),e.createElementVNode("div",Lc,[e.createElementVNode("button",Tc,[e.createElementVNode("span",Ic,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),x[2]||(x[2]=e.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Площа",-1)),e.createElementVNode("div",Rc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,(b,E)=>e.createElementVNode("button",{key:b.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",E===0&&"rounded-l-md",E===l.length-1&&"rounded-r-md",r.value===b.id?"bg-white text-green-600 font-semibold shadow-sm":"text-gray-600 hover:bg-gray-50"]),onClick:e.withModifiers(k=>r.value=b.id,["stop"])},e.toDisplayString(b.label),11,Oc)),64))])]),e.createElementVNode("div",zc,[f.value?(e.openBlock(),e.createElementBlock("span",Pc,e.toDisplayString(h.value),1)):(e.openBlock(),e.createElementBlock("span",jc,"—"))])]),e.createElementVNode("div",Uc,[e.createElementVNode("span",Hc,[e.createVNode(e.unref(P.Info),{size:12,"stroke-width":2.5})]),e.createElementVNode("span",qc,e.toDisplayString(y.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",Kc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.points,(b,E)=>(e.openBlock(),e.createBlock(Nc,{key:b.id,id:b.id,index:E+1,coords:b.coords,onUpdate:x[0]||(x[0]=k=>m.$emit("update-point",k)),onDelete:k=>m.$emit("delete-point",b.id)},null,8,["id","index","coords","onDelete"]))),128))])):e.createCommentVNode("",!0)]))}}),Gc={class:"px-3 py-3 bg-blue-50/50 border-b border-blue-100"},Yc={class:"flex items-start gap-2"},Xc=e.defineComponent({__name:"InfoHint",setup(o){return(t,n)=>(e.openBlock(),e.createElementBlock("div",Gc,[e.createElementVNode("div",Yc,[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))])]))}}),Zc={class:"space-y-1.5"},Jc={class:"space-y-1 max-h-40 overflow-y-auto"},Qc={class:"text-gray-700"},ed={class:"font-semibold text-slate-800"},td=e.defineComponent({__name:"ToPointList",props:{points:{},isShapeClosed:{type:Boolean}},setup(o){const t=o;function n(a,s){const c=y=>y*Math.PI/180,i=c(s.lat-a.lat),d=c(s.lng-a.lng),u=c(a.lat),f=c(s.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(i/2)**2+Math.cos(u)*Math.cos(f)*Math.sin(d/2)**2)))}function r(a){return Io(a)}const l=e.computed(()=>{const a=[],s=t.points;if(s.length<2)return a;for(let c=0;c<s.length;c++){const i=c===s.length-1&&t.isShapeClosed?0:c+1;if(i>=s.length)break;const d=n(s[c].coords,s[i].coords);a.push({from:c+1,to:i+1,label:r(d)})}return a});return(a,s)=>(e.openBlock(),e.createElementBlock("div",Zc,[s[0]||(s[0]=e.createElementVNode("p",{class:"text-xs font-medium text-gray-600 mb-1.5"},"Відстань між точками:",-1)),e.createElementVNode("div",Jc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(c,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"flex items-center justify-between text-xs py-1 px-2 rounded bg-gray-50"},[e.createElementVNode("span",Qc,"Точка "+e.toDisplayString(c.from)+" → Точка "+e.toDisplayString(c.to),1),e.createElementVNode("span",ed,e.toDisplayString(c.label),1)]))),128))])]))}}),nd={class:"ruler-panel-wrap absolute bottom-12 right-4 z-[1001] animate-slide-up"},od={class:"bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden w-72"},rd={class:"bg-gradient-to-r from-blue-400 to-blue-500 px-3 py-2 flex items-center justify-between"},ld={class:"flex items-center gap-2"},ad={class:"w-6 h-6 bg-white/20 rounded-lg flex items-center justify-center"},sd={class:"flex border-b border-gray-200"},id={key:1,class:"px-3 py-2.5"},cd={key:1,class:"text-xs text-gray-500"},dd={class:"px-2.5 py-1.5 bg-gray-50 border-t border-gray-200 space-y-1.5"},ud={class:"flex gap-1.5"},pd=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),c=e.ref(!1),i=e.ref("general");function d(S){i.value=S,r("tab-change",S)}e.onMounted(()=>{r("tab-change",i.value)});const u=e.computed(()=>l.value.length>=3&&!c.value);let f=1;const h=()=>l.value.map(S=>({id:S.id,coords:{...S.coords}})),y=()=>{l.value.length<3&&c.value&&(c.value=!1,r("shape-closed-change",!1)),r("points-change",h())},m=()=>{const S=f;return f+=1,S},x=S=>{l.value=[...l.value,{id:m(),coords:{lat:S.lat,lng:S.lng}}],y()},b=({id:S,coords:M})=>{const R=l.value.findIndex($=>$.id===S);if(R===-1)return;const q=[...l.value];q[R]={id:S,coords:{...M}},l.value=q,y()},E=S=>{l.value=l.value.filter(M=>M.id!==S),y()},k=()=>{l.value=[],c.value&&(c.value=!1,r("shape-closed-change",!1)),y()},C=S=>{b(S)},w=S=>{E(S)},L=()=>{s.value=!0,r("add-request")},z=S=>{x(S),s.value=!1},N=()=>{s.value=!1},B=()=>{u.value&&(c.value=!0,r("complete"),r("shape-closed-change",!0))},V=()=>{k(),s.value=!1,r("close")};return t({addPoint:x,clearPoints:k}),(S,M)=>(e.openBlock(),e.createElementBlock("div",nd,[e.createElementVNode("div",od,[e.createElementVNode("div",rd,[e.createElementVNode("div",ld,[e.createElementVNode("div",ad,[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",sd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",i.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]=R=>d("general"))}," Загальна ",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",i.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]=R=>d("topoint"))}," До точки ",2)]),i.value==="general"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[a.value?(e.openBlock(),e.createBlock(Wc,{key:1,points:l.value,"is-shape-closed":c.value,onUpdatePoint:C,onDeletePoint:w},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createBlock(Xc,{key:0}))],64)):(e.openBlock(),e.createElementBlock("div",id,[a.value?(e.openBlock(),e.createBlock(td,{key:0,points:l.value,"is-shape-closed":c.value},null,8,["points","is-shape-closed"])):(e.openBlock(),e.createElementBlock("p",cd,"Додайте точки на карті, щоб бачити відстані між ними."))])),e.createElementVNode("div",dd,[e.createElementVNode("div",ud,[s.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(vc,{key:0,onClick:L})),u.value?(e.openBlock(),e.createBlock(Bc,{key:1,onClick:B})):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createBlock(Cc,{key:0,onSubmit:z,onCancel:N})):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createBlock(Ec,{key:1,onClick:k})):e.createCommentVNode("",!0)])])]))}}),Ue="ruler-points",ht="ruler-line",gt="ruler-polygon",yt="ruler-segments",fd=e.defineComponent({__name:"RulerLayer",props:{map:{},points:{},isShapeClosed:{type:Boolean},labelMode:{}},setup(o){function t(m,x){const b=z=>z*Math.PI/180,E=b(x.lat-m.lat),k=b(x.lng-m.lng),C=b(m.lat),w=b(x.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(E/2)**2+Math.cos(C)*Math.cos(w)*Math.sin(k/2)**2)))}function n(m){return Io(m)}const r=o;function l(){return{type:"FeatureCollection",features:[]}}function a(m,x,b){const E=b??"general",k=[];let C=0;k.push(0);for(let w=1;w<m.length;w++)C+=t(m[w-1].coords,m[w].coords),k.push(C);return x&&m.length>=2&&(C+=t(m[m.length-1].coords,m[0].coords)),{type:"FeatureCollection",features:m.map((w,L)=>{const z=E==="general"?L===0?"0":n(k[L]):L===0?"0":n(t(m[L-1].coords,m[L].coords));return{type:"Feature",geometry:{type:"Point",coordinates:[w.coords.lng,w.coords.lat]},properties:{id:w.id,index:L+1,label:z}}})}}function s(m,x){if(m.length<2)return l();const b=[];for(let E=0;E<m.length;E++){const k=E===m.length-1&&x?0:E+1;if(k>=m.length)break;const C=m[E].coords,w=m[k].coords,L=t(C,w);b.push({type:"Feature",geometry:{type:"LineString",coordinates:[[C.lng,C.lat],[w.lng,w.lat]]},properties:{distance:n(L)}})}return{type:"FeatureCollection",features:b}}function c(m,x){if(m.length<2)return l();const b=m.map(E=>[E.coords.lng,E.coords.lat]);return x&&b.push(b[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:b},properties:{}}]}}function i(m){if(m.length<3)return l();const x=m.map(b=>[b.coords.lng,b.coords.lat]);return x.push(x[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[x]},properties:{}}]}}let d=!1;function u(m){m.getSource(Ue)||(m.addSource(Ue,{type:"geojson",data:l()}),m.addLayer({id:`${Ue}-circle`,type:"circle",source:Ue,paint:{"circle-radius":5,"circle-color":"#1e293b","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}}),m.addLayer({id:`${Ue}-labels`,type:"symbol",source:Ue,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(yt)||(m.addSource(yt,{type:"geojson",data:l()}),m.addLayer({id:`${yt}-labels`,type:"symbol",source:yt,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(ht)||(m.addSource(ht,{type:"geojson",data:l()}),m.addLayer({id:`${ht}-layer`,type:"line",source:ht,paint:{"line-color":"#3b82f6","line-width":2}})),m.getSource(gt)||(m.addSource(gt,{type:"geojson",data:l()}),m.addLayer({id:`${gt}-layer`,type:"fill",source:gt,paint:{"fill-color":"#93c5fd","fill-opacity":.25}})),d=!0}function f(m){if(m){try{m.getLayer(`${gt}-layer`)&&m.removeLayer(`${gt}-layer`),m.getSource(gt)&&m.removeSource(gt),m.getLayer(`${ht}-layer`)&&m.removeLayer(`${ht}-layer`),m.getSource(ht)&&m.removeSource(ht),m.getLayer(`${yt}-labels`)&&m.removeLayer(`${yt}-labels`),m.getSource(yt)&&m.removeSource(yt),m.getLayer(`${Ue}-labels`)&&m.removeLayer(`${Ue}-labels`),m.getLayer(`${Ue}-circle`)&&m.removeLayer(`${Ue}-circle`),m.getSource(Ue)&&m.removeSource(Ue)}catch{}d=!1}}function h(m){if(!m)return;const x=m.getSource(Ue),b=m.getSource(ht),E=m.getSource(gt),k=m.getSource(yt),C=r.points,w=r.labelMode??"general";x&&x.setData(a(C,r.isShapeClosed,w)),b&&b.setData(c(C,r.isShapeClosed)),E&&E.setData(i(C)),k&&k.setData(w==="topoint"?s(C,r.isShapeClosed):l())}function y(){const m=r.map;m&&(d||u(m),h(m))}return e.watch(()=>[r.points,r.isShapeClosed,r.labelMode],()=>y(),{deep:!0,immediate:!0}),e.watch(()=>r.map,()=>y(),{immediate:!0}),e.onBeforeUnmount(()=>{f(r.map)}),(m,x)=>null}});function md(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?c():(t.value=!0,o.onActivate?.())}function c(){t.value=!1,n.value=[],r.value=!1,a.value?.clearPoints(),o.onDeactivate?.()}function i(y){n.value=y}function d(y){l.value=y}function u(y){r.value=y}function f(y){t.value&&a.value?.addPoint({lat:y.lat,lng:y.lng})}const h=e.computed(()=>n.value.length>0);return{isRulerActive:t,rulerPoints:n,rulerShapeClosed:r,rulerActiveTab:l,rulerPanelRef:a,hasRulerPoints:h,toggleRuler:s,closeRuler:c,onRulerPointsChange:i,onRulerTabChange:d,onRulerShapeClosedChange:u,handleRulerMapClick:f}}const hd={key:0,class:"absolute top-4 left-4 z-[1000] w-[calc(100%-20px)] sm:w-[350px]"},gd={key:1,class:"form-geom__panel flex gap-1 items-start mt-2"},yd={class:"flex items-center gap-1"},bd=["disabled"],kd={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"},xd=["disabled"],wd=["disabled"],Cd={class:"mt-4 flex justify-end gap-2"},vd=["disabled"],Ed={class:"absolute top-4 right-4 z-[1000]"},Bd={class:"flex flex-col gap-[2px]"},_d=["disabled"],Vd=["disabled"],Sd=["disabled"],$d=["disabled"],Nd={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"},Ad={class:"space-y-0.5"},Fd={class:"text-gray-500"},Md={class:"text-gray-900 text-right break-all"},Dd={class:"absolute left-4 bottom-[36px] z-[1000]"},Ld={class:"flex flex-col gap-2"},Td={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]"},Id={class:"flex flex-col gap-1"},Rd=["checked","disabled","onChange"],Od={class:"text-gray-700 text-xs font-medium"},zd={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"},Pd={key:0,class:"form-geom__feature flex items-center text-xs transition-all gap-2 w-full px-2 pb-1"},jd={class:"mr-auto flex items-center gap-2 min-w-0 relative"},Ud={class:"shrink-0"},Hd={key:0,class:"font-bold"},qd=["onClick","disabled"],Kd={key:0},Wd={class:"flex items-center"},Gd={class:"text-xs mr-2"},Yd={key:0},Xd={key:1},Zd={key:0,class:"text-xs mr-2"},Jd={key:1,class:"text-xs mr-2"},Qd=["disabled"],eu=["disabled"],un="__vs_form_maplibre_loader__",pn="vs-global-bounds-src",fn="vs-global-bounds-line",Ro=ye(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 p=l?.multiple,g=l?.multi,v=_=>_===""||_===!0||_==="true"||_===1||_==="1";return!!n.multi||!!n.multiple||v(g)||v(p)}),s=e.computed(()=>!!n.disabled),c=e.ref(!1),i=e.ref(null),d=e.ref(0),u=e.ref(""),f=e.ref(null),h=e.ref([]),y=e.ref(null),m=e.ref(null),x=md({onActivate(){if(X)try{X.changeMode("simple_select",{featureIds:[]})}catch{}u.value=""},onDeactivate(){}});function b(){x.toggleRuler()}const E=e.getCurrentInstance(),k=E?.appContext?.config?.globalProperties?.$settings??{},C=k?.map??{},w=E?.vnode?.props??{};function L(p){return Object.prototype.hasOwnProperty.call(w,p)||Object.prototype.hasOwnProperty.call(w,p.replace(/[A-Z]/g,g=>`-${g.toLowerCase()}`))}const z=Array.isArray(C.center)&&C.center.length===2?C.center:Array.isArray(k.center)&&k.center.length===2?k.center:[30,50],N=typeof C.zoom=="number"?C.zoom:typeof k.zoom=="number"?k.zoom:typeof k.defaultZoom=="number"?k.defaultZoom:10,B=e.computed(()=>L("center")?n.center:C.center??n.center),V=e.computed(()=>L("zoom")?n.zoom:C.zoom??n.zoom),S=e.computed(()=>L("katottg")?String(n.katottg??""):String(C.katottg??n.katottg??"")),M=e.computed(()=>L("layers")?n.layers??[]:C.layers??n.layers??[]),R=e.computed(()=>L("bounds")?n.bounds:C.bounds??n.bounds),q=e.ref(Array.isArray(B.value)&&B.value.length===2?[...B.value]:z),$=e.ref(typeof V.value=="number"?V.value:N),T=e.ref(n.modelValue),D=e.ref(null),Y=e.ref(null),W=e.ref([]),Z=e.ref(!1),le=e.ref(!1),Ce=e.ref([]),ge=e.ref({coordinates:"",format:"decimal",order:"lat-lon"}),Q={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 se=!1,xe=!1;const fe=e.reactive({}),be=e.ref([]),Be=e.computed(()=>be.value.map(p=>fe[p]).filter(Boolean)),Ne=e.ref(null),Pe=e.computed(()=>Ne.value?.entries??[]),rt=e.computed(()=>{if(Ne.value)return{left:`${Ne.value.point.x+12}px`,top:`${Ne.value.point.y+12}px`}}),Ge=e.computed(()=>{if(Array.isArray(n.tools)&&n.tools.length)return n.tools;const p=l?.tools;return Array.isArray(p)?p.map(g=>String(g)):typeof p=="string"?p.split(",").map(g=>g.trim()).filter(Boolean):[]}),ve=e.computed(()=>{const p={search:!1,import:!1,export:!1,point:!1,line:!1,polygon:!1,rectangle:!1,ruler:!1};if(!Ge.value.length)return{...p,import:!0,export:!0,point:!0,line:!0,polygon:!0,rectangle:!0};const g=new Set(Ge.value.map(v=>v.toLowerCase()));return{search:g.has("search"),import:g.has("import"),export:g.has("export"),point:g.has("point"),line:g.has("line"),polygon:g.has("polygon"),rectangle:g.has("rectangle"),ruler:g.has("ruler")}});function G(p){if(typeof p!="string"||!p.trim())return"";if(/^https?:\/\//i.test(p))return p;const g=window?.location?.origin??"",v=p.replace(/^\/+/,"");return v?g?`${g}/${v}`:`/${v}`:g}function ee(){const p=Array.isArray(C.basemaps)&&C.basemaps.length?C.basemaps:k.basemaps;if(Array.isArray(p)&&p.length){const v=p.map((_,A)=>{const K=String(_?.key??_?.id??_?.name??`b${A}`),re=G(String(_?.url??""));if(!re)return null;const ie=typeof _?.preview=="string"&&_.preview?G(_.preview):"";return[K,{..._,url:re,preview:ie}]}).filter(_=>Array.isArray(_)&&_.length===2).reduce((_,[A,K])=>(_[A]=K,_),{});if(Object.keys(v).length)return v}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 te=ee(),de=Object.keys(te),ue=e.ref(de.length?de[0]:"");async function _e(){if(typeof window>"u")return null;const p=window;if(p[un])return p[un];const g=K=>{if(Array.from(document.styleSheets).some(Me=>Me?.href?.includes(K)))return;const ie=document.createElement("link");ie.rel="stylesheet",ie.href=K,document.head.appendChild(ie)},v=async()=>{const K=new Function("u","return import(u)"),re=await K("https://esm.sh/maplibre-gl@3.6.2"),ie=re?.default??re;if(!ie)throw new Error("maplibre esm fallback failed");window.maplibregl=ie,window.mapboxgl=ie;const Me=await K("https://esm.sh/@mapbox/mapbox-gl-draw@1.5.0"),Xe=Me?.default??Me;if(!Xe)throw new Error("mapbox draw esm fallback failed");window.MapboxDraw=Xe},A=(async()=>{g("https://unpkg.com/maplibre-gl@3.6.2/dist/maplibre-gl.css"),g("https://unpkg.com/@mapbox/mapbox-gl-draw@1.5.0/dist/mapbox-gl-draw.css"),(!window.maplibregl||!window.MapboxDraw)&&await v();const K=window.maplibregl,re=window.MapboxDraw;if(!K)throw new Error("maplibregl not available after load");if(!re)throw new Error("MapboxDraw not available after load");return{maplibregl:K,MapboxDraw:re}})().catch(K=>{throw delete p[un],K});return p[un]=A,A}function $e(p){return{version:8,sources:{rasterSource:{type:"raster",tiles:[p],tileSize:256}},layers:[{id:"rasterLayer",type:"raster",source:"rasterSource"}]}}let O=null,ne=null,F=null,X=null,I=[],H=null,U=null,oe=null,we=!1,Ve=!1,Ae=!1,Se=null;function Ye(){return{onSetup(){const p=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]}});return this.addFeature(p),this.clearSelectedFeatures(),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:!0}),{rectangle:p,startPoint:null,hasCoordinates:!1}},onMouseMove(p,g){if(!p.startPoint)return;const[v,_]=p.startPoint,A=g.lngLat.lng,K=g.lngLat.lat;p.rectangle.setCoordinates([[[v,_],[A,_],[A,K],[v,K],[v,_]]])},onClick(p,g){if(!p.startPoint){p.startPoint=[g.lngLat.lng,g.lngLat.lat],p.hasCoordinates=!0,p.rectangle.setCoordinates([[[g.lngLat.lng,g.lngLat.lat],[g.lngLat.lng,g.lngLat.lat],[g.lngLat.lng,g.lngLat.lat],[g.lngLat.lng,g.lngLat.lat],[g.lngLat.lng,g.lngLat.lat]]]);return}const[v,_]=p.startPoint,A=g.lngLat.lng,K=g.lngLat.lat;return Math.abs(v-A)>0&&Math.abs(_-K)>0?(p.rectangle.setCoordinates([[[v,_],[A,_],[A,K],[v,K],[v,_]]]),this.map.fire("draw.create",{features:[p.rectangle.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[p.rectangle.id]})):(this.deleteFeature([p.rectangle.id],{silent:!0}),p.hasCoordinates=!1,this.changeMode("simple_select"))},onStop(){},onTrash(p){this.deleteFeature([p.rectangle.id],{silent:!0}),this.changeMode("simple_select")},toDisplayFeatures(p,g,v){const _=g.properties.id===p.rectangle.id;_&&!p.hasCoordinates||(g.properties.active=_?"true":"false",v(g))}}}const Et=[{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 Bt(){const p=ue.value;return!p||!te[p]?.url?"":te[p].url}function Je(p,g){return p?.id?String(p.id):p?.url?`${p.url}-${g}`:`layer-${g}`}function Tt(p){const g=String(p?.url??"").trim();if(!g)return"";if(/^https?:\/\//i.test(g))return g;const v=window.location?.origin??"",_=g.replace(/^\/+/,"");return`${v}/${_}`}function ut(p){p&&Ne.value?.layerId!==p||(Ne.value=null)}function tn(p,g={}){return p.popup===!1?[]:Array.isArray(p.popup)?p.popup.length?p.popup.map(v=>{const _=v?.field||v?.name;if(!_)return null;const A=g[_];return A==null||A===""?null:{key:v.label||_,value:String(A)}}).filter(Boolean):[]:Object.entries(g).slice(0,5).map(([v,_])=>({key:v,value:_==null?"—":String(_)}))}function It(p){if(!Array.isArray(p))return[];const g=_=>Array.isArray(_)&&_.length>=2&&Number.isFinite(Number(_[0]))&&Number.isFinite(Number(_[1])),v=_=>{if(!_.length)return _;const A=_[0],K=_[_.length-1];return!K||A[0]!==K[0]||A[1]!==K[1]?[..._,A]:_};if(p.length&&g(p[0])){const _=p.map(A=>[Number(A[0]),Number(A[1])]).filter(g);return _.length?[v(_)]:[]}return p.length&&Array.isArray(p[0])&&g(p[0][0])?p.map(A=>Array.isArray(A)?A.map(K=>[Number(K[0]),Number(K[1])]):[]).filter(A=>A.length).map(v):p.length&&Array.isArray(p[0])&&Array.isArray(p[0][0])&&g(p[0][0][0])?p.flatMap(A=>Array.isArray(A)?A:[]).map(A=>Array.isArray(A)?A.map(K=>[Number(K[0]),Number(K[1])]):[]).filter(A=>A.length).map(v):[]}function co(p){const g=p.style??{},v=g.color??"#3b82f6";if(!g.colorAttr||!g.colorSet)return v;const _=Object.keys(g.colorSet);if(!_.length)return v;const A=["match",["to-string",["get",g.colorAttr]]];return _.forEach(K=>{A.push(String(K),g.colorSet?.[K]??v)}),A.push(v),A}function Rt(p){if(!F)return;p.handlers.forEach(v=>{try{F.off(v.type,v.layerId,v.handler)}catch{}}),p.handlers=[],[...p.layerIds,...p.boundsIds].forEach(v=>{F.getLayer(v)&&F.removeLayer(v)}),F.getSource(p.sourceId)&&F.removeSource(p.sourceId);const g=`vs-ov-bounds-src-${p.id}`;F.getSource(g)&&F.removeSource(g),ut(p.id)}function uo(p,g){if(!F)return[];const v=`vs-ov-bounds-src-${g}`,_=`vs-ov-bounds-line-${g}`,A=p.bounds??R.value??W.value,K=It(A);if(!K.length)return[];const re={type:"FeatureCollection",features:K.map(ie=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:ie}}))};return F.getSource(v)&&F.removeSource(v),F.addSource(v,{type:"geojson",data:re}),F.addLayer({id:_,type:"line",source:v,paint:{"line-color":p.style?.stroke??p.style?.color??"#2563eb","line-width":p.style?.width??2,"line-opacity":p.style?.opacity??.8,"line-dasharray":[2,2]}}),[_]}function bt(p){if(!F)return;Rt(p);const g=p.config,v=Tt(g);if(!v)return;const _=[],A=[];if(/\.v(?:m)?t(?:\?|$)/i.test(v)||/\.pbf(?:\?|$)/i.test(v)){const ie=g.sourceLayer||g.layer||g.service_layer||g.dataset?.layer||g.id;F.addSource(p.sourceId,{type:"vector",tiles:[v]});const Me=String(g.style?.type??"polygon").toLowerCase(),Xe=co(g),at=g.style?.opacity??.5;if(Me==="point"){const mt=`vs-ov-point-${p.id}`;F.addLayer({id:mt,type:"circle",source:p.sourceId,"source-layer":ie,paint:{"circle-color":Xe,"circle-radius":5,"circle-opacity":at}}),_.push(mt)}else if(Me==="polyline"||Me==="line"){const mt=`vs-ov-line-${p.id}`;F.addLayer({id:mt,type:"line",source:p.sourceId,"source-layer":ie,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":Xe,"line-width":g.style?.width??2,"line-opacity":at}}),_.push(mt)}else{const mt=`vs-ov-fill-${p.id}`,on=`vs-ov-border-${p.id}`;F.addLayer({id:mt,type:"fill",source:p.sourceId,"source-layer":ie,paint:{"fill-color":Xe,"fill-opacity":at}}),F.addLayer({id:on,type:"line",source:p.sourceId,"source-layer":ie,paint:{"line-color":g.style?.stroke??g.style?.color??"#2563eb","line-width":g.style?.width??1,"line-opacity":at}}),_.push(mt,on)}}else{F.addSource(p.sourceId,{type:"raster",tiles:[v],tileSize:256});const ie=`vs-ov-raster-${p.id}`;F.addLayer({id:ie,type:"raster",source:p.sourceId,paint:{"raster-opacity":g.style?.opacity??1}}),_.push(ie)}_.forEach(ie=>{const Me=at=>{if(!at?.features?.length){ut(p.id);return}const mt=at.features[0]?.properties??{},on=tn(p.config,mt);if(!on.length){ut(p.id);return}Ne.value={layerId:p.id,entries:on,point:{x:at.point.x,y:at.point.y}}},Xe=()=>ut(p.id);F.on("mousemove",ie,Me),F.on("mouseleave",ie,Xe),A.push({layerId:ie,type:"mousemove",handler:Me},{layerId:ie,type:"mouseleave",handler:Xe})}),p.layerIds=_,p.boundsIds=uo(p.config,p.id),p.handlers=A;const re=p.visible?"visible":"none";[...p.layerIds,...p.boundsIds].forEach(ie=>{F.getLayer(ie)&&F.setLayoutProperty(ie,"visibility",re)})}function At(){if(!F)return;const g={type:"FeatureCollection",features:It(R.value??W.value).map(v=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:v}}))};F.getSource(pn)?F.getSource(pn).setData(g):F.addSource(pn,{type:"geojson",data:g}),F.getLayer(fn)||F.addLayer({id:fn,type:"line",source:pn,paint:{"line-color":"#2563eb","line-width":2,"line-opacity":.8,"line-dasharray":[2,2]}})}function po(p){if(!F||s.value)return;const g=fe[p];if(!g)return;g.visible=!g.visible;const v=g.visible?"visible":"none";[...g.layerIds,...g.boundsIds].forEach(_=>{F.getLayer(_)&&F.setLayoutProperty(_,"visibility",v)}),pt(),g.visible||ut(p)}function pt(){if(!F)return;const p=[],g=[],v=[],_=[];be.value.forEach(re=>{const ie=fe[re];if(!ie)return;const Me=String(ie.config?.url??""),Xe=/\.v(?:m)?t(?:\?|$)/i.test(Me),at=/\.png(?:\?|$)/i.test(Me);Xe?v.push(...ie.layerIds):at?p.push(...ie.layerIds):g.push(...ie.layerIds),_.push(...ie.boundsIds)}),[...p,...g,...v,..._].forEach(re=>{F.getLayer(re)&&F.moveLayer(re)}),F.getLayer(fn)&&F.moveLayer(fn),(F.getStyle?.()?.layers??[]).map(re=>String(re?.id??"")).filter(re=>re.startsWith("gl-draw-")).forEach(re=>{F.getLayer(re)&&F.moveLayer(re)})}function j(p){if(!te[p]||(ue.value=p,!F))return;const g=Bt();if(!g)return;const v=F.getCenter?.(),_=F.getZoom?.(),A=X?.getAll?.();F.setStyle($e(g)),F.once("style.load",()=>{if(F&&(v&&Number.isFinite(_)&&F.jumpTo({center:[v.lng,v.lat],zoom:_}),At(),be.value.forEach(K=>{const re=fe[K];re&&bt(re)}),pt(),A?.features?.length&&X))try{A.features.forEach(K=>X.add(K)),d.value=A.features.length}catch{d.value=0}})}function J(p){return{type:"Feature",properties:{},geometry:p}}function ae(p){if(!p)return null;try{return JSON.parse(JSON.stringify(p))}catch{return null}}function Ee(p){if(!p)return null;const g=ae(p.geometry);return g?{...p.id!==void 0?{id:p.id}:{},type:"Feature",properties:{...p.properties??{}},geometry:g}:null}function Fe(p){if(!p)return[];const g=(A,K)=>{if(!A?.type)return[];const re={...K??{}};return A.type==="MultiPoint"&&Array.isArray(A.coordinates)?A.coordinates.map(ie=>J({type:"Point",coordinates:ie})).map(ie=>({...ie,properties:re})):A.type==="MultiLineString"&&Array.isArray(A.coordinates)?A.coordinates.map(ie=>J({type:"LineString",coordinates:ie})).map(ie=>({...ie,properties:re})):A.type==="MultiPolygon"&&Array.isArray(A.coordinates)?A.coordinates.map(ie=>J({type:"Polygon",coordinates:ie})).map(ie=>({...ie,properties:re})):A.type==="GeometryCollection"&&Array.isArray(A.geometries)?A.geometries.flatMap(ie=>g(ie,re)):[{type:"Feature",properties:re,geometry:ae(A)}]},v=A=>{if(!A)return null;if(A.type==="Feature"){const K=Ee(A);return K?g(K.geometry,K.properties):null}return A.geom?.type&&Array.isArray(A.geom.coordinates)?g({type:A.geom.type,coordinates:A.geom.coordinates},A.properties??{}):A.type==="GeometryCollection"&&Array.isArray(A.geometries)?g(A,A.properties??{}):typeof A.type=="string"&&Array.isArray(A.coordinates)?g(ae(A),A.properties??{}):null};if(p.type==="FeatureCollection")return(p.features??[]).flatMap(v).filter(Boolean);if(Array.isArray(p))return p.flatMap(A=>A?.type==="FeatureCollection"?Fe(A):[v(A)]).flat().filter(Boolean);const _=v(p);return _?Array.isArray(_)?_:[_]:[]}function je(p){if(!p.length)return null;if(!a.value)return ae(p[0]?.geometry??null);const g=p.map(K=>ae(K?.geometry)).filter(Boolean);return g.every(K=>K?.type==="Point")?{type:"MultiPoint",coordinates:g.map(K=>K.coordinates)}:g.every(K=>K?.type==="LineString")?{type:"MultiLineString",coordinates:g.map(K=>K.coordinates)}:g.every(K=>K?.type==="Polygon")?{type:"MultiPolygon",coordinates:g.map(K=>K.coordinates)}:{type:"GeometryCollection",geometries:g}}function Le(p){if(!p)return"__null__";try{return JSON.stringify(p)}catch{return"__invalid__"}}function Qe(p,g){if(!Array.isArray(p)||!Array.isArray(g)||p.length<2||g.length<2)return!1;const v=1e-12;return Math.abs(Number(p[0])-Number(g[0]))<v&&Math.abs(Number(p[1])-Number(g[1]))<v}function lt(p,g){if(!Array.isArray(p)||p.length<4)return null;const _=Qe(p[0],p[p.length-1])?p.slice(0,-1):p.slice();return!Number.isInteger(g)||g<0||g>=_.length||_.length<=3||(_.splice(g,1),_.length<3)?null:[..._,[..._[0]]]}function et(p,g){if(!Array.isArray(p)||p.length<2||!Number.isInteger(g)||g<0||g>=p.length||p.length<=2)return null;const v=p.slice();return v.splice(g,1),v.length<2?null:v}function ft(p,g){const v=ae(p);if(!v||!Array.isArray(g))return null;if(v.type==="LineString"){const[_]=g,A=et(v.coordinates,_);return A?(v.coordinates=A,v):null}if(v.type==="MultiLineString"){const[_,A]=g,K=v.coordinates?.[_],re=et(K,A);return re?(v.coordinates[_]=re,v):null}if(v.type==="Polygon"){const[_,A]=g,K=v.coordinates?.[_],re=lt(K,A);return re?(v.coordinates[_]=re,v):null}if(v.type==="MultiPolygon"){const[_,A,K]=g,re=v.coordinates?.[_]?.[A],ie=lt(re,K);return ie?(v.coordinates[_][A]=ie,v):null}return null}function tt(p){return p?p.split(".").map(g=>Number(g)).filter(g=>Number.isInteger(g)&&g>=0):[]}function Ot(p){return!X||!p?null:typeof X.get=="function"?X.get(p)??null:X.getAll?.()?.features?.find(v=>String(v?.id??"")===p)??null}function Rr(p){const g=p?.properties?.id??p?.id;return g==null||g===""?null:String(g)}function Hg(p){if(!F||!p)return null;const g=[[p.x-8,p.y-8],[p.x+8,p.y+8]],_=F.queryRenderedFeatures(g).find(A=>{const K=String(A?.properties?.meta??"");return K&&K!=="feature"?!1:!!Rr(A)});return Rr(_)}function qg(p,g){if(!X||!p||!g.length)return;const v=Ot(p);if(!v?.geometry)return;const _=ft(v.geometry,g);if(!_)return;const A={...v,id:v.id??p,geometry:_};xe=!0,se=!0;try{X.delete(p),X.add(A)}finally{se=!1,xe=!1}_t(),kt()}function Kg(p){if(!F||!X||s.value||x.isRulerActive.value||u.value!=="edit")return;const g=p?.point;if(!g)return;const v=[[g.x-8,g.y-8],[g.x+8,g.y+8]],A=F.queryRenderedFeatures(v).find(re=>re?.properties?.meta==="vertex"&&re?.properties?.parent&&re?.properties?.coord_path);if(!A)return;p?.originalEvent?.preventDefault?.(),p?.originalEvent?.stopPropagation?.();const K=tt(String(A.properties.coord_path));K.length&&qg(String(A.properties.parent),K)}function Wg(p){const g=jr(p);if(!g)return null;const[[v,_],[A,K]]=g;return{lat:(_+K)/2,lng:(v+A)/2}}function Or(p){if(!Array.isArray(p)||p.length<3)return 0;const g=(_,A)=>{const K=_*2003750834e-2/180,re=Math.log(Math.tan((90+A)*Math.PI/360))/(Math.PI/180);return[K,re*2003750834e-2/180]};let v=0;for(let _=0;_<p.length-1;_+=1){const[A,K]=g(Number(p[_][0]),Number(p[_][1])),[re,ie]=g(Number(p[_+1][0]),Number(p[_+1][1]));v+=A*ie-re*K}return Math.abs(v/2)/1e6}function Gg(p){if(!p?.type||!p?.coordinates)return null;if(p.type==="Polygon"){const g=p.coordinates?.[0];return Array.isArray(g)?Or(g):null}return p.type==="MultiPolygon"?p.coordinates.reduce((g,v)=>{const _=v?.[0];return Array.isArray(_)?g+Or(_):g},0):null}function fo(p){if(!p){f.value=null;return}const g=Wg(p);if(!g){f.value=null;return}f.value={type:String(p.type??"Feature"),center:g,areaKm2:Gg(p)}}function mo(p){if(!p){const _=I[I.length-1],A=ae(_?.geometry??null);H=A,fo(A);return}const g=I.find(_=>String(_?.id??"")===String(p))??null,v=ae(g?.geometry??null);H=v,fo(v)}function ho(p){h.value=(p??[]).map((g,v)=>{const _=String(g?.id??`feature-${v+1}`),A=zr(String(g?.geometry?.type??"Feature"));return{id:_,label:`${A} ${v+1}`}})}function zr(p){switch(String(p)){case"Point":return"Точка";case"MultiPoint":return"Мультиточка";case"LineString":return"Лінія";case"MultiLineString":return"Мультилінія";case"Polygon":return"Полігон";case"MultiPolygon":return"Мультиполігон";case"GeometryCollection":return"Колекція геометрій";default:return String(p||"Невідомо")}}function Pr(p,g){if(!Array.isArray(p)||!Array.isArray(g)||p.length!==2||g.length!==2)return!1;const v=1e-9;return Math.abs(Number(p[0])-Number(g[0]))<v&&Math.abs(Number(p[1])-Number(g[1]))<v}function jr(p){if(!p)return null;let g=1/0,v=1/0,_=-1/0,A=-1/0;const K=re=>{if(Array.isArray(re)){if(re.length>=2&&Number.isFinite(re[0])&&Number.isFinite(re[1])){const ie=Number(re[0]),Me=Number(re[1]);g=Math.min(g,ie),v=Math.min(v,Me),_=Math.max(_,ie),A=Math.max(A,Me);return}re.forEach(K)}};return K(p.coordinates),!Number.isFinite(g)||!Number.isFinite(v)?null:[[g,v],[_,A]]}function Ur(p){if(!F||!p)return;const g=jr(p);if(!g)return;const[[v,_],[A,K]]=g;if(v===A&&_===K){F.easeTo({center:[v,_],zoom:Math.max($.value,14)});return}F.fitBounds(g,{padding:30,duration:250,maxZoom:18})}function go(){if(!X){d.value=0;return}const p=X.getAll();d.value=p?.features?.length??0}function nn(){if(!X)return null;const g=X.getAll?.()?.features??[],v=K=>!!K&&g.some(re=>String(re?.id??"")===String(K??"")),_=X.getSelectedIds?.();if(Array.isArray(_)&&_.length>0){const K=_[0];return K!=null?String(K):null}if(v(oe))return String(oe);if(!g.length)return null;const A=a.value?g[g.length-1]:g[0];return A?.id!==void 0&&A?.id!==null?String(A.id):null}function _t(){if(!X)return;const p=X.getAll();if(d.value=p?.features?.length??0,!p?.features?.length){I=[],h.value=[],H=null,oe=null,f.value=null,se||(U="__null__",r("update:modelValue",null));return}const g=(p.features??[]).map(Ee).filter(Boolean);if(I=g,ho(g),oe=nn(),mo(oe),!se){const v=je(g);U=Le(v),r("update:modelValue",v)}}function $n(){if(!X)return;(X.getAll()?.features||[]).forEach(g=>X.delete(g.id)),h.value=[],go()}function Nn(p){if(!X)return;const g=Fe(p),v=a.value?g:g.slice(0,1);se=!0,$n(),v.forEach(K=>{try{X.add(K)}catch{}}),se=!1,I=(X.getAll?.()?.features??v).map(Ee).filter(Boolean),ho(I),oe=null;const A=ae(I[I.length-1]?.geometry??null);H=ae(A),go(),fo(A),A&&(Ur(A),s.value||kt())}function Yg(){X&&(se=!0,$n(),I.forEach(p=>{try{X.add(p)}catch{}}),se=!1,ho(I),go(),mo(oe))}function zt(){if(X){try{X.changeMode("simple_select",{featureIds:[]})}catch{}u.value=""}}function An(p){if(s.value||!X)return;x.isRulerActive.value&&x.closeRuler(),Ae=!0,zt(),u.value=p;const g=p==="marker"?"draw_point":p==="polyline"?"draw_line_string":p==="rectangle"?"draw_rectangle":"draw_polygon";a.value||(se=!0,$n(),se=!1);try{X.changeMode(g)}catch{u.value=""}finally{requestAnimationFrame(()=>{Ae=!1})}}function kt(p){if(s.value||!X||!X.getAll()?.features?.length)return;const v=p||nn();if(v)try{X.changeMode("direct_select",{featureId:v}),oe=v,mo(oe),u.value="edit"}catch{u.value=""}}function Xg(p){s.value||!X||!p||kt(p)}function Zg(){if(!(s.value||!X)){if(a.value){const p=nn();if(p)try{we=!0,X.delete(p),we=!1,_t();const g=nn();g?kt(g):zt();return}catch{we=!1}}zt(),$n(),I=[],h.value=[],oe=null,U="__null__",f.value=null,r("update:modelValue",null)}}function Jg(){s.value||!H||Ur(H)}function Qg(p){if(!F||!O)return;const g=[p[1],p[0]];Se||(Se=new O.Marker({color:"#2563eb"})),Se.setLngLat(g).addTo(F),F.easeTo({center:g,zoom:13,duration:250})}function e0(){s.value||D.value?.click()}function t0(){s.value||(Z.value=!Z.value)}function Hr(p){if(!Z.value)return;const g=Y.value;g&&!g.contains(p.target)&&(Z.value=!1)}function n0(){Z.value=!1,e0()}function o0(){s.value||(Ce.value=[],Z.value=!1,le.value=!0)}function r0(){le.value=!1,Ce.value=[]}function l0(){if(s.value||!X)return;const p=Qi(ge.value.coordinates??"",ge.value.format||"decimal",ge.value.order||"lat-lon");if(!p.ok){Ce.value=p.errors,a0(p.errors);return}Ce.value=[],Nn({type:"Polygon",coordinates:[p.ring]}),_t(),le.value=!1,p.wasClosedAutomatically&&pe.notify({type:"info",title:"Імпорт координат",message:"Полігон був автоматично замкнений (перша і остання точки різнилися)."})}function a0(p){if(!p.length)return;const g=5;p.slice(0,g).forEach(v=>{const _=v.line>0?`Рядок ${v.line}`:"Загальна помилка";pe.notify({type:"warning",title:"Імпорт координат",message:`${_} — ${v.message}`})}),p.length>g&&pe.notify({type:"warning",title:"Імпорт координат",message:`Ще помилок: ${p.length-g}`})}function s0(p){if(s.value||!X)return;Z.value=!1;const g=p.target,v=g.files?.[0];if(!v)return;const _=new FileReader;_.onload=()=>{try{const A=JSON.parse(String(_.result));if(!Fe(A).length){pe.notify({type:"warning",title:"Імпорт файлу",message:"Файл не містить коректний GeoJSON-обʼєкт."});return}Nn(A),_t()}catch{pe.notify({type:"error",title:"Імпорт файлу",message:"Не вдалося прочитати файл. Перевірте формат GeoJSON/JSON."})}finally{g.value=""}},_.onerror=()=>{pe.notify({type:"error",title:"Імпорт файлу",message:"Помилка читання файлу."}),g.value=""},_.readAsText(v)}function i0(){if(s.value||!X)return;const p=X.getAll(),g=new Blob([JSON.stringify(p,null,2)],{type:"application/json"}),v=URL.createObjectURL(g),_=document.createElement("a");_.href=v,_.download="data.geojson",_.click(),URL.revokeObjectURL(v)}return e.onMounted(async()=>{if(window.addEventListener("click",Hr,!0),!i.value)return;const p=await _e();O=p.maplibregl,ne=p.MapboxDraw;const g=Bt();g&&(F=new O.Map({container:i.value,style:$e(g),center:[q.value[0],q.value[1]],zoom:$.value,attributionControl:!1}),y.value=F,F.addControl(new O.NavigationControl({showCompass:!0}),"bottom-right"),F.on("load",()=>{if(!(!ne||!F)){if(X=new ne({displayControlsDefault:!1,modes:{...ne.modes,draw_rectangle:Ye()},controls:{point:!1,line_string:!1,polygon:!1,trash:!1},styles:Et}),F.addControl(X),F.on("click",v=>{if(x.isRulerActive.value){const A=v?.lngLat;if(!A)return;m.value?.addPoint?.({lat:A.lat,lng:A.lng});return}if(!X||s.value||u.value!=="edit")return;const _=Hg(v?.point);!_||_===oe||requestAnimationFrame(()=>{!X||s.value||kt(_)})}),F.on("draw.create",()=>{if(X&&!x.isRulerActive.value){if(!a.value){const v=X.getAll();if(v.features.length>1){const _=v.features[v.features.length-1];se=!0,v.features.slice(0,-1).forEach(A=>X.delete(A.id)),se=!1,_&&(se=!0,X.add(_),se=!1)}}_t(),kt()}}),F.on("draw.update",v=>{if(Ve||x.isRulerActive.value)return;const _=Array.isArray(v?.features)?v.features:[],A=v?.action==="move"&&_.length>0&&_.every(K=>K?.geometry?.type==="Point");if(v?.action==="move"){if(A){_t();return}if(Ve=!0,Yg(),Ve=!1,u.value==="edit"){const K=nn(),re=K?Ot(K):X?.getAll?.()?.features?.[0];if(re?.id)try{X.changeMode("direct_select",{featureId:re.id}),oe=String(re.id)}catch{u.value=""}}return}_t()}),F.on("draw.delete",()=>{xe||we||x.isRulerActive.value||u.value==="marker"||u.value==="polyline"||u.value==="polygon"||u.value==="rectangle"||(_t(),X?.getAll?.()?.features?.length||(oe=null),u.value="",zt())}),F.on("draw.selectionchange",v=>{if(!X||Ve||x.isRulerActive.value||u.value==="marker"||u.value==="polyline"||u.value==="polygon"||u.value==="rectangle")return;const _=v?.features?.[0]?.id!==void 0&&v?.features?.[0]?.id!==null?String(v.features[0].id):null;if(!s.value&&_){if(u.value==="edit"&&oe===_)return;requestAnimationFrame(()=>{!X||s.value||kt(_)});return}const A=X.getSelectedIds?.(),K=Array.isArray(A)&&A.length>0?String(A[0]):null;if(!s.value&&K){if(u.value==="edit"&&oe===K)return;requestAnimationFrame(()=>{!X||s.value||kt(K)});return}try{X.changeMode("simple_select",{featureIds:[]})}catch{}}),T.value!==void 0){const v=T.value;T.value=void 0,requestAnimationFrame(()=>{X&&Nn(v)})}At(),be.value.forEach(v=>{const _=fe[v];_&&bt(_)}),pt()}}),F.on("contextmenu",Kg),F.on("zoomend",()=>{F&&($.value=F.getZoom())}))}),e.onUnmounted(()=>{x.isRulerActive.value&&x.closeRuler(),window.removeEventListener("click",Hr,!0),Object.values(fe).forEach(p=>{F&&Rt(p)}),ut(),Se?.remove&&Se.remove(),Se=null,F?.remove&&F.remove(),F=null,X=null,y.value=null}),e.watch(()=>n.modelValue,p=>{if(!X){T.value=p;return}const g=je((a.value?Fe(p):Fe(p).slice(0,1))||[]),v=Le(g);if(U&&v===U){U=null;return}U=null,Nn(p)},{deep:!0}),e.watch(()=>M.value,p=>{const g=Array.isArray(p)?p:[],v=[],_=new Set;g.forEach((A,K)=>{if(!A)return;const re=Je(A,K);v.push(re),_.add(re);const ie={...A,id:re},Me=fe[re],Xe=Me?.visible??!!ie.visible;Me&&F&&Rt(Me),fe[re]={id:re,config:ie,visible:Xe,sourceId:`vs-ov-src-${re}`,layerIds:[],boundsIds:[],handlers:[]}}),Object.keys(fe).forEach(A=>{if(_.has(A))return;const K=fe[A];K&&F&&Rt(K),delete fe[A]}),be.value=v,F&&(be.value.forEach(A=>{const K=fe[A];K&&bt(K)}),pt())},{immediate:!0,deep:!0}),e.watch(()=>R.value,()=>{F&&(At(),be.value.forEach(p=>{const g=fe[p];g&&bt(g)}),pt())},{deep:!0}),e.watch(()=>S.value,async p=>{if(W.value=[],!p){F&&(At(),be.value.forEach(g=>{const v=fe[g];v&&bt(v)}),pt());return}try{const g=await fetch(`https://data.gki.com.ua/api-user/atu/${p}`);if(!g?.ok)return;const _=(await g.json())?.geometry?.coordinates;Array.isArray(_)&&_.length&&(W.value=_)}catch(g){console.error("Failed to fetch KATOTTG bounds",g)}finally{if(!F)return;At(),be.value.forEach(g=>{const v=fe[g];v&&bt(v)}),pt()}},{immediate:!0}),e.watch(()=>B.value,p=>{if(!Array.isArray(p)||p.length!==2)return;const g=[Number(p[0]),Number(p[1])];if(Pr(q.value,g)||(q.value=[...g],!F))return;const v=F.getCenter?.();v&&Pr([v.lng,v.lat],q.value)||F.easeTo({center:[q.value[0],q.value[1]]})},{deep:!0}),e.watch(()=>V.value,p=>{typeof p=="number"&&($.value=p,F&&F.setZoom(p))}),e.watch(s,p=>{p&&zt()}),e.watch(d,p=>{if(p>0){s.value||kt();return}Ae||zt()}),e.watch(c,()=>{setTimeout(()=>{F?.resize&&F.resize()},50)}),(p,g)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:!c.value},[e.createElementVNode("div",{class:e.normalizeClass(["vs-map-wrapper relative w-full h-[400px]",{fullscreen:c.value}])},[e.createElementVNode("div",{ref_key:"mapContainer",ref:i,class:"w-full h-[calc(100%-28px)]"},null,512),ve.value.search||ve.value.import||ve.value.export?(e.openBlock(),e.createElementBlock("div",hd,[ve.value.search?(e.openBlock(),e.createBlock(kc,{key:0,onGoToCoordinates:Qg})):e.createCommentVNode("",!0),ve.value.import||ve.value.export?(e.openBlock(),e.createElementBlock("div",gd,[e.createElementVNode("div",yd,[ve.value.import?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"importMenuRef",ref:Y,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:t0,disabled:s.value},[g[8]||(g[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,bd),Z.value?(e.openBlock(),e.createElementBlock("div",kd,[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:n0}," З файлу ")):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:o0}," З координат ")])):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:i0,disabled:s.value||d.value===0}," Експорт ",8,xd)):e.createCommentVNode("",!0)]),e.createElementVNode("input",{ref_key:"importRef",ref:D,type:"file",onChange:s0,accept:".json,.geojson",class:"hidden",disabled:s.value},null,40,wd)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createVNode(e.unref(pe.VsModal),{visible:le.value,"onUpdate:visible":g[1]||(g[1]=v=>le.value=v),title:"Імпорт координат полігону",size:"lg",teleport:"#modal"},{default:e.withCtx(()=>[e.createVNode(nt,{schema:Q,values:ge.value,"onUpdate:values":g[0]||(g[0]=v=>ge.value=v)},null,8,["values"]),e.createElementVNode("div",Cd,[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:r0}," Скасувати "),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:l0,disabled:s.value}," Побудувати ",8,vd)])]),_:1},8,["visible"]),e.createElementVNode("div",Ed,[e.createElementVNode("div",Bd,[ve.value.point?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["vs-btn",{"vs-active":u.value==="marker"}]),title:"Point",onClick:g[2]||(g[2]=v=>An("marker")),disabled:s.value},[e.createVNode(e.unref(P.MapPin),{class:"h-4 w-4"})],10,_d)):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:g[3]||(g[3]=v=>An("polyline")),disabled:s.value},[e.createVNode(Ri)],10,Vd)):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:g[4]||(g[4]=v=>An("polygon")),disabled:s.value},[e.createVNode(ji)],10,Sd)):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:g[5]||(g[5]=v=>An("rectangle")),disabled:s.value},[e.createVNode(Ki)],10,$d)):e.createCommentVNode("",!0),ve.value.ruler?(e.openBlock(),e.createElementBlock("button",{key:4,class:e.normalizeClass(["vs-btn mt-3",{"vs-active":e.unref(x).isRulerActive.value}]),title:"Ruler",onClick:b},[e.createVNode(e.unref(P.Ruler),{class:"h-4 w-4"})],2)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"vs-btn mt-5",onClick:g[6]||(g[6]=v=>c.value=!c.value),title:"Full Screen"},[e.createVNode(e.unref(P.Maximize),{class:"h-4 w-4"})])])]),ve.value.ruler&&e.unref(x).isRulerActive.value?(e.openBlock(),e.createBlock(pd,{key:1,ref_key:"rulerPanelRefEl",ref:m,onClose:g[7]||(g[7]=v=>e.unref(x).closeRuler()),onTabChange:e.unref(x).onRulerTabChange,onPointsChange:e.unref(x).onRulerPointsChange,onShapeClosedChange:e.unref(x).onRulerShapeClosedChange},null,8,["onTabChange","onPointsChange","onShapeClosedChange"])):e.createCommentVNode("",!0),ve.value.ruler&&e.unref(x).isRulerActive.value&&e.unref(x).hasRulerPoints.value?(e.openBlock(),e.createBlock(fd,{key:2,map:y.value,points:e.unref(x).rulerPoints.value,"is-shape-closed":e.unref(x).rulerShapeClosed.value,"label-mode":e.unref(x).rulerActiveTab.value},null,8,["map","points","is-shape-closed","label-mode"])):e.createCommentVNode("",!0),Pe.value.length?(e.openBlock(),e.createElementBlock("div",{key:3,class:"absolute z-[1500] pointer-events-none",style:e.normalizeStyle(rt.value)},[e.createElementVNode("div",Nd,[e.createElementVNode("dl",Ad,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Pe.value,v=>(e.openBlock(),e.createElementBlock("div",{key:`${v.key}-${v.value}`,class:"flex justify-between gap-2"},[e.createElementVNode("dt",Fd,e.toDisplayString(v.key),1),e.createElementVNode("dd",Md,e.toDisplayString(v.value),1)]))),128))])])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",Dd,[e.createElementVNode("div",Ld,[e.createVNode(Zi,{basemaps:e.unref(te),onOnLayerChange:j},null,8,["basemaps"]),Be.value.length?(e.openBlock(),e.createElementBlock("div",Td,[g[9]||(g[9]=e.createElementVNode("p",{class:"font-semibold text-[11px] uppercase tracking-wide text-gray-500 mb-2"},"Шари",-1)),e.createElementVNode("div",Id,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Be.value,v=>(e.openBlock(),e.createElementBlock("label",{key:v.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:v.visible,disabled:s.value,onChange:_=>po(v.id)},null,40,Rd),e.createElementVNode("span",Od,e.toDisplayString(v.config.title||v.config.name||v.id),1)]))),128))])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",zd,[h.value.length||f.value?(e.openBlock(),e.createElementBlock("div",Pd,[e.createElementVNode("div",jd,[e.createElementVNode("div",Ud,[g[10]||(g[10]=e.createTextVNode(" Тип: ",-1)),h.value.length<=1?(e.openBlock(),e.createElementBlock("span",Hd,e.toDisplayString(f.value?zr(f.value.type):h.value[0]?.label||"—"),1)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(h.value,(v,_)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:v.id},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["font-bold underline-offset-2",v.id===e.unref(oe)?"text-blue-700 underline":"text-gray-700 hover:text-blue-700 hover:underline"]),onClick:A=>Xg(v.id),disabled:s.value},e.toDisplayString(v.label),11,qd),_<h.value.length-1?(e.openBlock(),e.createElementBlock("span",Kd,", ")):e.createCommentVNode("",!0)],64))),128))])]),e.createElementVNode("div",Wd,[e.createElementVNode("div",Gd,[g[11]||(g[11]=e.createTextVNode(" Центр: ",-1)),f.value?(e.openBlock(),e.createElementBlock("b",Yd,e.toDisplayString(f.value.center.lng.toFixed(5))+", "+e.toDisplayString(f.value.center.lat.toFixed(5)),1)):(e.openBlock(),e.createElementBlock("b",Xd,"—"))]),f.value&&f.value.areaKm2!==null?(e.openBlock(),e.createElementBlock("div",Zd,[g[12]||(g[12]=e.createTextVNode(" Площа: ",-1)),e.createElementVNode("b",null,e.toDisplayString(f.value.areaKm2.toFixed(1))+" km²",1)])):(e.openBlock(),e.createElementBlock("div",Jd,[...g[13]||(g[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:Jg,disabled:s.value},[e.createVNode(e.unref(P.ZoomIn),{class:"h-3 w-3"})],8,Qd),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:Zg,disabled:s.value},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,eu)])])):e.createCommentVNode("",!0)])],2)],8,["disabled"]))}}),[["__scopeId","data-v-d18ff937"]]),tu=["data-focus"],nu={class:"flex items-center"},ou={class:"overflow-hidden text-ellipsis whitespace-nowrap rounded-sm text-[#333] text-[85%] px-0.5 py-[3px] pl-1.5 box-border"},ru=["onClick","aria-label"],lu={key:0,class:"absolute text-gray-500 truncate pl-2"},au={class:"flex-1 min-w-[2px]"},su=["placeholder"],iu={class:"flex items-center shrink-0"},cu=["disabled"],Oo=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;Oe(n.style);const l=e.ref(null),a=e.ref(null),s=e.ref(null),c=e.ref(!1),i=e.ref(""),d=e.useModel(o,"modelValue"),u=e.computed(()=>n.placeholder||"Add tag…"),f=e.computed(()=>d.value?.length===0&&i.value===""),h=e.computed(()=>!n.disabled&&d.value?.length>0),y=e.computed(()=>n.disabled),m=async()=>{y.value||await e.nextTick(()=>s.value?.focus())},x=z=>{const N=z.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],i.value="")},b=()=>{const z=i.value;z.trim()!==""&&x(z),i.value=""},E=z=>{const N=d.value.slice();N.splice(z,1),r("update:modelValue",N)},k=()=>{r("update:modelValue",[])},C=()=>{y.value||(c.value=!0)},w=()=>{c.value=!1,!y.value&&b()},L=z=>{const{key:N}=z;N==="Enter"?(z.preventDefault(),b()):N==="Backspace"&&i.value===""&&d.value.length>0&&E(d.value.length-1)};return(z,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",c.value?"border-blue-500 ring-1 ring-blue-500":"",y.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),"data-focus":c.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,(B,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",nu,[e.createElementVNode("div",ou,e.toDisplayString(B),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(S=>E(V),["stop"]),"aria-label":`Remove ${B}`},[e.createVNode(e.unref(P.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,ru)]))),128)),f.value?(e.openBlock(),e.createElementBlock("div",lu,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",au,[y.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]=B=>i.value=B),onFocus:C,onBlur:w,onKeydown:L,placeholder:d.value&&d.value.length?"":void 0},null,40,su)),[[e.vModelText,i.value]])])],512),e.createElementVNode("div",iu,[h.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:y.value,onClick:e.withModifiers(k,["stop"])},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,cu)):e.createCommentVNode("",!0)])],10,tu)],2)],512))}}),du={class:"relative flex gap-1 bg-white w-full"},uu=["disabled","placeholder"],zo=ye(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 c={а:"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(i=>c[i]||i).join("").replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}const a=()=>{const s=t?.value?.[n.parent||""]?.toString(),c=l(s);r.value=c.toString()};return(s,c)=>(e.openBlock(),e.createElementBlock("div",du,[e.withDirectives(e.createElementVNode("input",{ref:"vsText",disabled:o.disabled,placeholder:o.placeholder,"onUpdate:modelValue":c[0]||(c[0]=i=>r.value=i),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,uu),[[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-cb7b2b74"]]),pu={class:"relative flex gap-1 bg-white w-full"},fu=["disabled","placeholder"],mu=["disabled"],hu={key:0},gu={key:1},Po=ye(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}`},c=async()=>{if(!a.value||r.value)return;const d=s();if(d){r.value=!0;try{const f=await(await fetch(d)).text();n.value=f}finally{r.value=!1}}},i=()=>{l.value&&(n.value||c())};return e.onMounted(()=>{i()}),e.watch(()=>[t.table,t.code,t.init],()=>{i()}),(d,u)=>(e.openBlock(),e.createElementBlock("div",pu,[e.withDirectives(e.createElementVNode("input",{disabled:o.disabled,placeholder:o.placeholder,"onUpdate:modelValue":u[0]||(u[0]=f=>n.value=f),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,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||o.disabled||!a.value,onClick:c},[r.value?(e.openBlock(),e.createElementBlock("span",gu,"...")):(e.openBlock(),e.createElementBlock("span",hu,"Gen"))],8,mu)]))}}),[["__scopeId","data-v-8f88fb66"]]),yu={class:"w-full"},bu={ref:"sortableContainer",class:"flex flex-col gap-1"},ku=["onDragstart","onDrop"],xu={class:"cursor-move",type:"button"},wu={class:"w-1/3"},Cu={class:"w-2/3"},vu=["onClick"],Eu={key:0,class:"text-[14px] text-gray-700"},Bu={class:"mt-2 w-full flex items-center"},_u=["disabled"],jo=ye(e.defineComponent({__name:"vs-input-key-value",props:{parent:{},ignore:{},addButtonText:{},modelValue:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=b=>`${b}-${Math.random().toString(36).substring(2,15)}`,r=e.inject("values"),l=o,a=t,s=l.addButtonText??"Додати",c=l.ignore??[],i=e.ref([]),d=e.ref(null);(()=>{const b=l.parent&&r?.value?.[l.parent]||l.modelValue||{};i.value=Object.entries(b).filter(([E])=>!c.includes(E)).map(([E,k])=>({id:n("key-value-"),key:E,value:k}))})();function f(b){d.value=b}function h(b){if(d.value===null||d.value===b)return;const E=i.value.splice(d.value,1)[0];i.value.splice(b,0,E),d.value=null}const y=e.computed(()=>i.value.some(b=>b.key&&!b.value||!b.key&&b.value)),m=()=>{i.value.push({id:n("key-value-"),key:"",value:""})},x=b=>{i.value=i.value.filter(E=>E.id!==b)};return e.watch(i,b=>{const E={};b.forEach(C=>{C.key&&C.value!==void 0&&(E[C.key]=C.value)});const k={};c.length&&c.forEach(C=>{k[C]=l.parent?r?.value?.[l.parent]?.[C]:void 0}),r?.value&&l.parent&&(r.value[l.parent]={...k,...E}),a("update:modelValue",E)},{deep:!0}),(b,E)=>(e.openBlock(),e.createElementBlock("div",yu,[e.createElementVNode("div",bu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(k,C)=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:e.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":d.value===C}]),draggable:"true",onDragstart:w=>f(C),onDragover:E[0]||(E[0]=e.withModifiers(()=>{},["prevent"])),onDrop:w=>h(C)},[e.createElementVNode("button",xu,[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})]),e.createElementVNode("div",wu,[e.createVNode(Ft,{modelValue:k.key,"onUpdate:modelValue":w=>k.key=w,placeholder:"Ключ"},null,8,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Cu,[e.createVNode(Ft,{modelValue:k.value,"onUpdate:modelValue":w=>k.value=w,placeholder:"Значення"},null,8,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("button",{onClick:w=>x(k.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,vu)],42,ku))),128))],512),i.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Eu," Дані для відображення відсутні ")),e.createElementVNode("div",Bu,[e.createElementVNode("button",{type:"button",onClick:m,disabled:y.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,_u)])]))}}),[["__scopeId","data-v-ac321a0f"]]),Vu={class:"w-full"},Su={ref:"sortableContainer",class:"flex flex-col gap-1"},$u=["onDragstart","onDrop"],Nu=["disabled"],Au={class:"flex-1"},Fu=["onClick","disabled"],Mu={key:0,class:"text-[14px] text-gray-700"},Du={class:"mt-2 w-full flex items-center"},Lu=["disabled"],Uo=ye(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??""),c=e.computed(()=>t.addButtonText??"Додати");let i=!1;const d=b=>`${b}-${Math.random().toString(36).substring(2,15)}`,u=b=>{const E=b??n.value??[];r.value=E.map((k,C)=>({id:r.value[C]?.id??d("text-array"),value:k??""}))};u(),e.watch(()=>n.value,b=>{if(i){i=!1;return}u(b||[])},{deep:!0}),e.watch(r,b=>{i=!0,n.value=b.map(E=>E.value).filter(E=>E!=null&&E!=="")},{deep:!0});const f=e.computed(()=>a.value||r.value.some(b=>!b.value));function h(){f.value||(r.value=[...r.value,{id:d("text-array"),value:""}])}function y(b){a.value||(r.value=r.value.filter(E=>E.id!==b))}function m(b){a.value||(l.value=b)}function x(b){if(a.value||l.value===null||l.value===b)return;const E=[...r.value],[k]=E.splice(l.value,1);E.splice(b,0,k),r.value=E,l.value=null}return(b,E)=>(e.openBlock(),e.createElementBlock("div",Vu,[e.createElementVNode("div",Su,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,C)=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:e.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":l.value===C}]),draggable:"true",onDragstart:w=>m(C),onDragover:E[0]||(E[0]=e.withModifiers(()=>{},["prevent"])),onDrop:w=>x(C)},[e.createElementVNode("button",{class:"cursor-move",type:"button",disabled:a.value},[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})],8,Nu),e.createElementVNode("div",Au,[o.inputType==="text"?(e.openBlock(),e.createBlock(Ft,{key:0,modelValue:k.value,"onUpdate:modelValue":w=>k.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),o.inputType==="tel"?(e.openBlock(),e.createBlock(In,{key:1,modelValue:k.value,"onUpdate:modelValue":w=>k.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),o.inputType==="email"?(e.openBlock(),e.createBlock(Tn,{key:2,modelValue:k.value,"onUpdate:modelValue":w=>k.value=w,disabled:a.value,placeholder:s.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):e.createCommentVNode("",!0),o.inputType==="mask"?(e.openBlock(),e.createBlock(rn,{key:3,modelValue:k.value,"onUpdate:modelValue":w=>k.value=w,mask:o.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=>y(k.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,Fu)],42,$u))),128))],512),r.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Mu," Дані для відображення відсутні ")),e.createElementVNode("div",Du,[e.createElementVNode("button",{type:"button",onClick:h,disabled:f.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(c.value),1)],8,Lu)])]))}}),[["__scopeId","data-v-972a598a"]]),Tu={class:"flex items-center gap-2 w-full"},Iu=["disabled"],Ru=["disabled"],Ho=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}=Oe(n.style),l=t,a=e.computed({get:()=>n.modelValue||"#000000",set:c=>l("update:modelValue",c)}),s=e.computed(()=>!!n.disabled);return(c,i)=>(e.openBlock(),e.createElementBlock("div",Tu,[e.withDirectives(e.createElementVNode("input",{type:"color","onUpdate:modelValue":i[0]||(i[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]",[o.modelValue?"":"text-opacity-50",e.unref(r)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,Iu),[[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":i[1]||(i[1]=d=>a.value=d),disabled:s.value},null,8,Ru),[[e.vModelText,a.value]])]))}}),Ou={class:"flex items-center gap-2 w-full"},zu=["min","max","step","disabled"],Pu=["value","min","max","step","disabled"],qo=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}=Oe(n.style),l=t,a=u=>{const f=Number(u),h=Number(n.min),y=Number(n.max);return Number.isNaN(f)?h:Math.min(y,Math.max(h,f))},s=e.computed({get:()=>a(n.modelValue??n.min),set:u=>l("update:modelValue",a(u))}),c=u=>{const f=u.target,h=a(f.value);f.value=String(h),l("update:modelValue",h)},i=u=>{Number(n.min)>=0&&u.key==="-"&&u.preventDefault()},d=e.computed(()=>!!n.disabled);return(u,f)=>(e.openBlock(),e.createElementBlock("div",Ou,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":f[0]||(f[0]=h=>s.value=h),min:o.min,max:o.max,step:o.step,disabled:d.value,ref:"range",class:e.normalizeClass(["w-full cursor-pointer accent-blue-500",[o.modelValue?"":"text-opacity-50",e.unref(r)].join(" ")])},null,10,zu),[[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:o.min,max:o.max,step:o.step,onInput:c,onKeydown:i,disabled:d.value},null,40,Pu)]))}}),ju=["placeholder","disabled","name"],Uu=["type","value","onInput","placeholder","disabled"],Hu=["onClick"],Ko=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}=Oe(t.style),a=e.useModel(o,"modelValue"),s=e.computed(()=>!!t.disabled),c=e.computed(()=>t.placeholder??"");e.watchEffect(()=>{const x=a.value?.length??0;x<n.value&&(a.value=[...a.value??[],...Array(n.value-x)])});const i=e.ref({}),d=e.ref({});function u(x,b){x&&(i.value[b]=x)}async function f(x,b){if(!x||t.inputType!=="mask")return;const{default:E}=await Promise.resolve().then(()=>no);d.value[b]&&d.value[b].destroy(),d.value[b]=E(x,{mask:t.mask||"",definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},lazy:!1}),d.value[b].on("accept",()=>{const k=[...a.value||[]];k[b]=t.unmask?d.value[b].unmaskedValue:d.value[b].value,a.value=k}),d.value[b].on("complete",()=>{const k=[...a.value||[]];k[b]=t.unmask?d.value[b].unmaskedValue:d.value[b].value,a.value=k}),a.value?.[b]&&(d.value[b].value=a.value[b])}function h(x,b){if(s.value)return;const E=x.target.value??null,k=[...a.value];k[b]=t.inputType==="text"?E:Number(E),a.value=k}function y(){n.value+=1;const x=t.inputType==="text"||t.inputType==="mask"?null:0;a.value=[...a.value,x],t.inputType==="mask"&&setTimeout(()=>{const b=n.value-1;i.value[b]&&f(i.value[b],b)},0)}function m(x){if(n.value>1){d.value[x]&&(d.value[x].destroy(),delete d.value[x]),n.value-=1,a.value=a.value.filter((E,k)=>k!==x);const b={};Object.keys(d.value).forEach(E=>{const k=parseInt(E,10);k>x?b[k-1]=d.value[k]:k<x&&(b[k]=d.value[k])}),d.value=b}}return e.onMounted(()=>{if(t.inputType==="mask")for(let x=0;x<n.value;x+=1)i.value[x]&&f(i.value[x],x)}),e.onBeforeUnmount(()=>{Object.values(d.value).forEach(x=>{x&&x.destroy()})}),e.watch(()=>t.mask,x=>{t.inputType==="mask"&&Object.values(d.value).forEach(b=>{b&&b.updateOptions({mask:x,definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}})})}),e.watch(a,x=>{t.inputType==="mask"&&x&&x.forEach((b,E)=>{d.value[E]&&d.value[E].value!==b&&(d.value[E].value=b||"")})},{deep:!0}),(x,b)=>(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,E=>(e.openBlock(),e.createElementBlock("div",{key:E,class:"flex items-center gap-2 w-full"},[o.inputType==="mask"?(e.openBlock(),e.createElementBlock("input",{key:0,type:"text",ref_for:!0,ref:k=>u(k,E-1),placeholder:o.placeholder,disabled:o.disabled,name:`${o.name}[${E-1}]`,class:e.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[e.unref(l),{"!border-red-600":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,ju)):(e.openBlock(),e.createElementBlock("input",{key:1,type:o.inputType,value:a.value?.[E-1],onInput:k=>h(k,E-1),placeholder:c.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":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,Uu)),!o.disabled&&E===n.value&&o.isAdded?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",onClick:e.withModifiers(y,["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),!o.disabled&&n.value>1&&o.isAdded?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",onClick:e.withModifiers(k=>m(E-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,Hu)):e.createCommentVNode("",!0)]))),128))],2))}}),qu=["aria-expanded","data-focus"],Ku=["placeholder","disabled","readonly"],Wu={class:"max-h-full"},Gu=["onClick","disabled"],Yu={key:0,class:"px-3 py-2 text-sm text-stone-500"},Xu={class:"flex flex-col gap-1"},Zu=["onDragstart","onDrop"],Ju=["disabled"],Qu=["title"],ep=["disabled","onClick","aria-label"],tp={key:0,class:"text-xs text-stone-500"},mn=ye(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},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??[]),c=e.ref({}),i=e.ref({}),d=e.ref({keyword:"",parent:null}),u=e.ref(""),f=e.ref(!1),h=e.ref(null),y=e.ref(null),m=e.ref(null),x=e.ref(null),b=e.ref(null),E=e.ref({});let k=!1,C=!1;const w=e.inject("values"),L=e.computed(()=>!!n.disabled),z=e.computed(()=>n.placeholder??"Оберіть значення"),N=e.computed(()=>n.search!==!1),B=e.computed(()=>{const O=n.parent??n.parentValue;return O?String(O):""}),V=e.computed(()=>B.value?w?.value?.[B.value]??null:null),S=O=>O==null?"__null__":String(O),M=O=>{if(!O)return"";const ne=O.label??O.text??O.name??O.ua??O.en;return ne?String(ne):O.id!==void 0&&O.id!==null?String(O.id):""},R=O=>{const ne=S(O);return i.value[ne]||(i.value[ne]=`array-select-${ne}-${Math.random().toString(36).slice(2,8)}`),i.value[ne]},q=e.computed(()=>new Set(a.value.map(O=>S(O.id)))),$=e.computed(()=>{const O=q.value;let ne=[...s.value];if(!n.data&&u.value.trim()){const F=u.value.toLowerCase();ne=ne.filter(X=>M(X).toLowerCase().includes(F))}return ne.filter(F=>!O.has(S(F.id)))}),T=()=>{if(!n.data)return"";const O=n.prefix??"api",ne=n.api??`/${O}/suggest/${n.data}`;return`${n.host??""}${ne}`},D=()=>{a.value.length&&(k=!0,a.value=a.value.map(O=>({...O,text:c.value[S(O.id)]??O.text})))},Y=O=>{const ne=S(O.id),F=M(O);F&&(c.value[ne]=F)},W=O=>{s.value=O?[...O]:[],O?.forEach(Y),D()},Z=O=>{if(!O.length)return;const ne=new Map(s.value.map(F=>[S(F.id),F]));O.forEach(F=>{const X=S(F.id);ne.set(X,F),Y(F)}),s.value=Array.from(ne.values()),D()},le=async(O="")=>{if(!n.data)return[];const ne=T();if(!ne)return[];const F=new URLSearchParams;F.set("json","1"),O&&F.set("key",O),n.start===1&&F.set("start","1"),V.value!==null&&V.value!==void 0&&V.value!==""&&F.set("parent",String(V.value));try{return(await(await fetch(`${ne}?${F.toString()}`)).json())?.data??[]}catch{return[]}},Ce=async O=>{if(!n.data||!O.length)return[];const ne=T();if(!ne)return[];const F=Array.from(new Set(O.map(I=>S(I)))),X=new URLSearchParams;X.set("json","1"),X.set("val",F.join(",")),n.start===1&&X.set("start","1"),V.value!==null&&V.value!==void 0&&V.value!==""&&X.set("parent",String(V.value));try{const U=(await(await fetch(`${ne}?${X.toString()}`)).json())?.data??[];return Z(U),U}catch{return[]}},ge=async(O="",{force:ne=!1}={})=>{if(!n.data)return;const F=V.value??null;if(!ne&&d.value.keyword===O&&d.value.parent===F&&s.value.length>0)return;d.value={keyword:O,parent:F};const I=await le(O);W(I)},se=((O,ne=200)=>{let F;return(...X)=>{F&&clearTimeout(F),F=setTimeout(()=>O(...X),ne)}})(async O=>{n.data&&await ge(O,{force:!0})},250),xe=e.ref(null),fe=()=>{if(!m.value)return;const O=m.value.getBoundingClientRect(),ne=window.innerHeight??document.documentElement.clientHeight,F=window.innerWidth??document.documentElement.clientWidth,X=8,I=8,H=n.maxHeight??280,U=ne-O.bottom-I-X,oe=O.top-I-X,we=U>=oe,Ve=Math.max(F-X*2,0);let{width:Ae}=O;Ve>0&&Ae>Ve&&(Ae=Ve);let{left:Se}=O;Se+Ae+X>F&&(Se=F-Ae-X),Se=Math.max(Se,X);const Ye=Math.min(H,Math.max(we?U:oe,50));E.value={position:"fixed",left:`${Se}px`,width:`${Ae}px`,maxHeight:`${Ye}px`,transform:we?"none":"translateY(-100%)",top:we?`${O.bottom+I}px`:`${O.top-I}px`}},be=async(O="click")=>{L.value||f.value||(xe.value=O,await ge(u.value.trim()),f.value=!0,await e.nextTick(),fe(),b.value?.focus())},Be=()=>{f.value=!1,xe.value=null,e.nextTick(()=>{b.value?.blur()})},Ne=async O=>{if(O.stopPropagation(),!L.value){if(f.value){if(xe.value==="focus"){xe.value=null;return}Be();return}await be("click")}},Pe=O=>{O.key==="Escape"&&Be()},rt=O=>{if(!f.value)return;const ne=O.target;x.value?.contains(ne)||Be()},Ge=O=>{const ne=O.target;y.value?.contains(ne)||x.value?.contains(ne)||Be()},ve=O=>{if(O.key==="Escape"){O.preventDefault(),Be();return}if(O.key==="Enter"){O.preventDefault();const ne=$.value[0];ne&&G(ne)}},G=O=>{if(!O)return;const ne=S(O.id);if(q.value.has(ne))return;Y(O);const F={id:O.id,text:M(O)||String(O.id??""),key:R(O.id)};a.value=[...a.value,F],ee(O),u.value="",e.nextTick(()=>{b.value?.focus()})},ee=O=>{const ne=a.value.map(F=>F.id);r("value-selected",{name:n.name,value:ne,option:O})},te=O=>{if(L.value)return;const ne=a.value.filter(F=>S(F.id)!==S(O));a.value=ne},de=O=>{L.value||(h.value=O)},ue=O=>{if(L.value||h.value===null||h.value===O)return;const ne=[...a.value],[F]=ne.splice(h.value,1);ne.splice(O,0,F),h.value=null,a.value=ne},_e=async()=>{const ne=(Array.isArray(l.value)?[...l.value]:[]).filter(X=>X!=null);if(n.data&&ne.length){const X=ne.filter(I=>!c.value[S(I)]);X.length&&await Ce(X)}const F=ne.map(X=>({id:X,text:c.value[S(X)]??String(X),key:R(X)}));k=!0,a.value=F};e.watch(a,O=>{if(k){k=!1;return}const ne=O.map(F=>F.id);C=!0,l.value=ne,r("change",ne)},{deep:!0}),e.watch(l,()=>{if(C){C=!1;return}_e()},{deep:!0}),e.watch(u,O=>{!n.data||!f.value||se(O.trim())}),e.watch(L,O=>{O&&Be()}),e.watch(()=>n.options,async O=>{n.data||(W(O??[]),await _e())},{immediate:!0,deep:!0}),e.watch(()=>n.data,async O=>{O&&(await ge(u.value.trim()),await _e())},{immediate:!0});const $e=e.ref(!1);return e.watch(V,async()=>{if(n.data){if(!$e.value){$e.value=!0;return}a.value=[],await ge(u.value.trim()),await _e()}}),e.onMounted(async()=>{document.addEventListener("click",Ge,!0),window.addEventListener("keydown",Pe),window.addEventListener("scroll",rt,!0),await _e()}),e.onUnmounted(()=>{document.removeEventListener("click",Ge,!0),window.removeEventListener("keydown",Pe),window.removeEventListener("scroll",rt,!0)}),(O,ne)=>(e.openBlock(),e.createElementBlock("div",{class:"flex flex-col gap-2 w-full",ref_key:"rootRef",ref:y},[e.createElementVNode("div",{class:"relative",onClick:ne[2]||(ne[2]=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]",f.value?"border-[#2684ff] ring-1 ring-[#2684ff] shadow-[0_0_0_1px_rgba(38,132,255,0.5)]":"",L.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),role:"combobox","aria-expanded":f.value,"aria-haspopup":"listbox","data-focus":f.value?"true":"false",onClick:Ne},[e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:b,"onUpdate:modelValue":ne[0]||(ne[0]=F=>u.value=F),placeholder:z.value,disabled:L.value,readonly:!N.value,onFocus:ne[1]||(ne[1]=()=>be("focus")),onKeydown:ve,class:"flex-1 bg-transparent border-0 outline-none px-0 py-1 text-sm text-stone-900 placeholder:text-stone-400"},null,40,Ku),[[e.vModelText,u.value]]),e.createElementVNode("span",{class:e.normalizeClass(["text-stone-400 transition-transform duration-150",f.value?"rotate-180":""]),"aria-hidden":"true"},[e.createVNode(e.unref(P.ChevronDown),{class:"h-4 w-4"})],2)],10,qu),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:x,class:"fixed z-[3000] rounded-md border border-stone-200 bg-white shadow-lg overflow-auto",style:e.normalizeStyle(E.value)},[e.createElementVNode("div",Wu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,F=>(e.openBlock(),e.createElementBlock("button",{key:S(F.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(X=>G(F),["stop"]),disabled:L.value},e.toDisplayString(M(F)),9,Gu))),128)),$.value.length===0?(e.openBlock(),e.createElementBlock("p",Yu," Немає варіантів ")):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0)]),_:1})]))]),e.createElementVNode("div",Xu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(F,X)=>(e.openBlock(),e.createElementBlock("div",{key:F.key,class:e.normalizeClass(["flex items-center gap-2 rounded-md border border-stone-200 bg-white px-2 py-2",{"opacity-60":h.value===X}]),draggable:"true",onDragstart:I=>de(X),onDragover:ne[3]||(ne[3]=e.withModifiers(()=>{},["prevent"])),onDrop:I=>ue(X),onDragend:ne[4]||(ne[4]=I=>h.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:L.value,"aria-label":"Перетягнути"},[e.createVNode(e.unref(P.GripVertical),{class:"h-4 w-4"})],8,Ju),e.createElementVNode("div",{class:"flex-1 text-sm text-stone-900",title:F.text},e.toDisplayString(F.text),9,Qu),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:L.value,onClick:e.withModifiers(I=>te(F.id),["stop"]),"aria-label":`Видалити ${F.text}`},[e.createVNode(e.unref(P.X),{class:"h-4 w-4"})],8,ep)],42,Zu))),128)),a.value.length===0?(e.openBlock(),e.createElementBlock("p",tp,"Немає вибраних значень")):e.createCommentVNode("",!0)])],512))}}),[["__scopeId","data-v-5fa5a4b9"]]),np={class:"flex items-center gap-2 w-full"},op={class:"relative flex-1"},rp=["placeholder","disabled","onKeydown"],lp=["disabled"],ap={key:0,class:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/50"},sp={class:"bg-white text-gray-900 rounded-lg shadow-lg w-[480px] max-h-[80vh] overflow-y-auto"},ip={class:"p-3 border-b font-semibold text-gray-900 flex justify-between items-center"},cp=["onClick"],dp={key:0,class:"p-4 text-sm text-gray-500"},Wo=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}=Oe(r.style),s=e.useModel(o,"modelValue"),c=e.computed({get:()=>s.value,set:N=>{s.value=N}}),i=e.ref(!1),d=e.ref([]),u=e.ref(!1),f=e.ref(null);e.watch(u,N=>{typeof document>"u"||(N?(f.value=document.body.style.overflow,document.body.style.overflow="hidden"):f.value!=null?(document.body.style.overflow=f.value,f.value=null):document.body.style.removeProperty("overflow"))}),e.onBeforeUnmount(()=>{typeof document>"u"||(f.value!=null?document.body.style.overflow=f.value:document.body.style.removeProperty("overflow"))});const h=e.computed(()=>r.placeholder??""),y=e.computed(()=>!!r.disabled),m=N=>{if(!N)return null;if(Array.isArray(N))return N;if(typeof N=="string"){const B=N.split(",").map(V=>V.trim()).filter(Boolean);return B.length!==4?null:B.map(Number)}return null},x=e.computed(()=>{const N=m(r.bbox);if(!N||N.length!==4)return null;const B=N.map(Number);return B.some(V=>Number.isNaN(V))?null:B}),b=e.computed(()=>{const N=x.value;if(!N)return"";const[B,V,S,M]=N;return`${B},${Math.max(V,M)},${S},${Math.min(V,M)}`});e.computed(()=>b.value?"1":"0");const E=e.inject("values");function k(){!y.value&&c.value.trim()&&C()}async function C(){const N=(c.value||"").trim();if(!N)return;let B=N;if(r.includes?.length&&E?.value){const S=r.includes.map(M=>E.value?.[M]).filter(Boolean);S.length&&(B=`${S.join(", ")}, ${N}`)}const V=z(B);if(V){i.value=!0;try{const M=await(await fetch(V)).json();d.value=Array.isArray(M)?M:[],u.value=!0}catch(S){console.error("Address search error:",S)}finally{i.value=!1}}}function w(){u.value=!u.value}function L(N){if(!N)return;u.value=!1;const B=parseFloat(N.lat),S={type:"Point",coordinates:[parseFloat(N.lon),B]};r.geom&&E?.value&&(E.value[r.geom]=S),l("update:geom",S)}function z(N){if(!r.api)return"";const B={value:encodeURIComponent(N),bbox:x.value?x.value.join(","):""};return r.api.replace(n,(V,S)=>B[S.trim()]??"")}return(N,B)=>(e.openBlock(),e.createElementBlock("div",np,[e.createElementVNode("div",op,[e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":B[0]||(B[0]=V=>c.value=V),placeholder:h.value,disabled:y.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(k,["prevent"]),["enter"])},null,42,rp),[[e.vModelText,c.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:C,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:i.value||!c.value?.trim()},[i.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,lp),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[u.value?(e.openBlock(),e.createElementBlock("div",ap,[e.createElementVNode("div",sp,[e.createElementVNode("div",ip,[B[2]||(B[2]=e.createElementVNode("span",null,"Search results",-1)),e.createElementVNode("button",{class:"text-gray-500 hover:text-blue-600",onClick:B[1]||(B[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,S)=>(e.openBlock(),e.createElementBlock("li",{key:S,onClick:M=>L(V),class:"px-3 py-2 cursor-pointer hover:bg-gray-100 border-b text-sm"},e.toDisplayString(V.display_name),9,cp))),128))]),d.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",dp," No results found "))])])):e.createCommentVNode("",!0)]))]))}}),Go=(o="")=>`${o}${Math.floor(Math.random()*1e4)}`,up={class:"vs-datalist space-y-3"},pp={class:"space-y-3"},fp=["onClick","disabled"],mp={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},hp=["disabled"],gp=ye(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(x=>({...x,disabled:t.disabled||x.disabled}))??[]),s=e.computed(()=>a.value.map(x=>m(x))),c=e.computed(()=>t.disabled?!1:t.maxItems?r.value.length<t.maxItems:!0),i=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 x=r.value.length;l.value.length<x?l.value=[...l.value,...Array.from({length:x-l.value.length},()=>Go())]:l.value.length>x&&l.value.splice(x)}function u(){if(!t.minItems||r.value.length>=t.minItems)return;const x=t.minItems-r.value.length,b=Array.from({length:x},f);n.value=[...r.value,...b]}function f(){const x={};return a.value.forEach(b=>{x[b.name]=b?.default??null}),x}function h(){c.value&&(n.value=[...r.value,f()],d())}function y(x){i.value||(n.value=r.value.filter((b,E)=>E!==x),d(),u())}function m(x){return{...x}}return(x,b)=>(e.openBlock(),e.createElementBlock("div",up,[e.createElementVNode("div",pp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(E,k)=>(e.openBlock(),e.createElementBlock("div",{key:l.value[k],class:"flex items-center gap-3"},[e.createVNode(nt,{schema:s.value,layout:"inline",navigation:!1,values:r.value[k],"onUpdate:values":C=>r.value[k]=C,"form-id":l.value[k]},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:C=>y(k),disabled:i.value},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,fp)]))),128)),r.value.length===0?(e.openBlock(),e.createElementBlock("div",mp,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:h,disabled:!c.value},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(t.addButtonText),1)],8,hp)]))}}),[["__scopeId","data-v-b4dfd331"]]),yp={class:"vs-dataform space-y-4"},bp=["draggable","onDragstart","onDragover","onDragenter","onDrop"],kp={class:"flex items-center gap-2"},xp=["onClick"],wp={class:"text-sm font-medium text-gray-700"},Cp={class:"flex items-center gap-2"},vp=["title","onClick","disabled"],Ep=["title","onClick","disabled"],Bp={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},_p=["disabled"],Vp=ye(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),c=e.ref(null),i=e.ref(null),d=e.computed(()=>t.groupLabel??"Group"),u=e.computed(()=>t.emptyLabel??"Ще немає груп"),f=e.computed(()=>t.schema?.map(Q=>({...Q,disabled:t.disabled||Q.disabled}))??[]),h=e.computed(()=>f.value.map(Q=>V(Q))),y=e.computed(()=>t.view==="accordion"),m=e.computed(()=>!!(t.collapsible||y.value)),x=e.computed(()=>t.draggable!==!1),b=e.computed(()=>t.disabled?!1:t.maxGroups?n.value.length<t.maxGroups:!0),E=e.computed(()=>t.disabled||n.value.length<=(t.minGroups||0));e.watch(()=>n.value.length,()=>{k(),C(),w()},{immediate:!0}),e.watch(()=>t.schema,w,{immediate:!0,deep:!0}),e.watch(()=>t.view,()=>{C()},{immediate:!0});function k(){const Q=n.value.length;r.value.length<Q?r.value=[...r.value,...Array.from({length:Q-r.value.length},()=>Go())]:r.value.length>Q&&r.value.splice(Q)}function C(){const Q=n.value.length;y.value?Q===0?a.value=-1:a.value>=Q?a.value=Q-1:a.value<0&&(a.value=0):l.value.length<Q?l.value=[...l.value,...Array.from({length:Q-l.value.length},()=>!1)]:l.value.length>Q&&l.value.splice(Q)}function w(){if(!t.minGroups||n.value.length>=t.minGroups)return;const Q=t.minGroups-n.value.length,se=Array.from({length:Q},L);n.value=[...n.value,...se],C()}function L(){const Q={};return f.value.forEach(se=>{Q[se.name]=se?.default??null}),Q}function z(){b.value&&(n.value=[...n.value,L()],k(),C())}function N(Q){E.value||(n.value=n.value.filter((se,xe)=>xe!==Q),k(),y.value?a.value>=n.value.length&&(a.value=n.value.length-1):l.value.splice(Q,1),w())}function B(Q){if(t.disabled)return;const se=JSON.parse(JSON.stringify(n.value[Q]??{}));n.value=[...n.value.slice(0,Q+1),se,...n.value.slice(Q+1)],k(),y.value?a.value>Q&&(a.value+=1):l.value.splice(Q+1,0,l.value[Q]??!1)}function V(Q){return{...Q}}function S(Q){return y.value?a.value===-1&&Q===0?!1:a.value!==Q:!!l.value[Q]}function M(Q){if(m.value){if(y.value){a.value=Q;return}l.value[Q]=!l.value[Q]}}function R(Q,se){if(!x.value||t.disabled){se.preventDefault();return}s.value=Q,c.value=Q,i.value={groups:JSON.parse(JSON.stringify(n.value)),keys:[...r.value],states:[...l.value]},se.dataTransfer?.setData("text/plain",String(Q)),se.dataTransfer?.setDragImage?.(se.currentTarget,0,0)}function q(Q,se){!x.value||t.disabled||s.value!==null&&Z(Q,se)}function $(Q,se){Z(Q,se)}function T(Q){!x.value||t.disabled||ge()}function D(){i.value&&W(),s.value=null,c.value=null,i.value=null}function Y(Q,se){const xe=[...n.value],[fe]=xe.splice(Q,1);xe.splice(se,0,fe),n.value=xe;const be=[...r.value],[Be]=be.splice(Q,1);if(be.splice(se,0,Be),r.value=be,y.value)a.value===Q&&(a.value=se);else{const Ne=[...l.value],[Pe]=Ne.splice(Q,1);Ne.splice(se,0,Pe),l.value=Ne}}function W(){i.value&&(n.value=i.value.groups,r.value=i.value.keys,l.value=i.value.states,i.value=null,c.value=null)}function Z(Q,se){if(s.value===null)return;const xe=le(Q,se);c.value=xe,Ce(xe)}function le(Q,se){if(!se?.currentTarget)return Q;const xe=se.currentTarget.getBoundingClientRect(),be=se.clientY-xe.top>xe.height/2?Q+1:Q;return Math.max(0,Math.min(be,n.value.length))}function Ce(Q){const se=s.value;if(se===null)return;let xe=Q;if(xe>n.value.length&&(xe=n.value.length),xe===se||xe===se+1)return;const fe=xe>se?xe-1:xe;Y(se,fe),s.value=fe,c.value=xe>se?fe+1:fe}function ge(){i.value=null,s.value=null,c.value=null}return(Q,se)=>(e.openBlock(),e.createElementBlock("div",yp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(xe,fe)=>(e.openBlock(),e.createElementBlock("div",{key:r.value[fe],class:e.normalizeClass(["relative border border-gray-200 rounded-lg bg-white transition vs-dataform__group",[t.view==="accordion"?"overflow-hidden":S(fe)?"pt-6 px-6":"p-6"]]),draggable:x.value&&!t.disabled,onDragstart:be=>R(fe,be),onDragend:D,onDragover:e.withModifiers(be=>q(fe,be),["prevent"]),onDragenter:e.withModifiers(be=>$(fe,be),["prevent"]),onDrop:e.withModifiers(be=>T(),["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"&&!S(fe)?"rounded-t-lg":"rounded-lg"]])},[e.createElementVNode("div",kp,[x.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:be=>M(fe)},[e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["h-4 w-4 transition",S(fe)?"-rotate-90":"rotate-0"])},null,8,["class"])],8,xp)):e.createCommentVNode("",!0),e.createElementVNode("div",wp,e.toDisplayString(`${d.value} (${fe+1})`),1)]),e.createElementVNode("div",Cp,[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:be=>B(fe),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:be=>N(fe),disabled:E.value,draggable:"false"},[e.createVNode(e.unref(P.Trash2),{class:"h-4 w-4"})],8,Ep)])],2),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(t.view==="accordion"?"p-6":"pt-6")},[e.createVNode(nt,{class:"vs-dataform__form",schema:h.value,layout:"inline",navigation:!1,values:n.value[fe],"onUpdate:values":be=>n.value[fe]=be,"form-id":r.value[fe],disabled:t.disabled},null,8,["schema","values","onUpdate:values","form-id","disabled"])],2),[[e.vShow,!S(fe)]])],42,bp))),128)),n.value.length===0?(e.openBlock(),e.createElementBlock("div",Bp,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:z,disabled:!b.value},[e.createVNode(e.unref(P.Plus),{class:"h-4 w-4"}),e.createTextVNode(" "+e.toDisplayString(t.addButtonText),1)],8,_p)]))}}),[["__scopeId","data-v-accd044e"]]),hn="__vs_form_monaco_loader__",$t="__vs_form_monaco_script_loader__",gn="__vs_form_monaco_editor_loader__",Hn=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,c=null,i=!1;const d=()=>{if(c)return Promise.resolve(c);if(typeof window>"u")return Promise.resolve(null);const m=window;if(m.monaco?.editor?.create)return c=m.monaco,Promise.resolve(c);if(m[hn])return m[hn];const b=(async()=>{const E=w=>{if(Array.from(document.styleSheets||[]).some(N=>N?.href?.includes(w)))return;const z=document.createElement("link");z.rel="stylesheet",z.href=w,document.head.appendChild(z)},k=w=>{if(m[$t]?.[w])return m[$t][w];m[$t]||={};const L=Array.from(document.scripts).find(z=>z.src===w);return L?(m[$t][w]=new Promise((z,N)=>{const B=L.readyState;if(L.dataset.loaded==="true"||B==="loaded"||B==="complete"){z();return}L.addEventListener("load",()=>{L.dataset.loaded="true",z()},{once:!0}),L.addEventListener("error",V=>N(V),{once:!0})}),m[$t][w]):(m[$t][w]=new Promise((z,N)=>{const B=document.createElement("script");B.src=w,B.async=!0,B.onload=()=>{B.dataset.loaded="true",z()},B.onerror=V=>N(V),document.body.appendChild(B)}),m[$t][w])},C="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs";return E(`${C}/editor/editor.main.min.css`),await k(`${C}/loader.min.js`),m[gn]||(m[gn]=new Promise((w,L)=>{window.require.config({paths:{vs:C}}),window.require(["vs/editor/editor.main"],()=>{c=window.monaco,m.monaco=c,w(c)},z=>L(z))}).catch(w=>{throw delete m[gn],w})),m[gn]})().catch(E=>{throw delete m[hn],E});return m[hn]=b,b},u=()=>{!l.value||!c||(s&&(s.dispose(),s=null),s=c.editor.create(l.value,{value:r.value||"",language:n.syntax,theme:n.theme,automaticLayout:!0,minimap:{enabled:!!n.minimap},readOnly:!!n.disabled}),s.onDidChangeModelContent(()=>{i||(r.value=s.getValue())}))},f=()=>{s?.focus()},h=()=>s,y=()=>c;return e.watch(()=>r.value,m=>{if(!s)return;const x=s.getValue();m!==x&&(i=!0,s.setValue(m||""),i=!1)}),e.watch(()=>n.syntax,m=>{!s||!c||c.editor.setModelLanguage(s.getModel(),m||"xml")}),e.watch(()=>n.theme,m=>{c&&c.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;c=m,u()}catch(m){console.error("Failed to load Monaco editor",m)}}),e.onBeforeUnmount(()=>{s&&(s.dispose(),s=null)}),t({focus:f,getEditor:h,getMonaco:y}),(m,x)=>(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))}}),Yo={VsInputText:Ft,VsInputRadio:zn,"vs-input-text":Ft,"vs-input-password":pl,"vs-input-textarea":$o,"vs-input-richtext":No,"vs-input-mask":rn,"vs-input-number":bo,"vs-input-radio":zn,"vs-input-select":Un,"vs-input-switcher":Dn,"vs-input-static":Ln,"vs-input-container":Vo,"vs-input-date":ia,"vs-input-checkbox":wo,"vs-input-file":Eo,"vs-input-file2":jn,file2:jn,File2:jn,"vs-input-html":Ln,"vs-input-email":Tn,"vs-input-tel":In,"vs-input-datatable":Ao,"vs-input-map":Ro,"vs-input-file-list":Bo,"vs-input-tags":Oo,"vs-input-slug":zo,"vs-input-codegen":Po,"vs-input-key-value":jo,"vs-input-text[]":Uo,"vs-input-range":qo,"vs-input-color":Ho,"vs-input-native-select":Un,VsInputArraySelect:mn,"vs-input-array":Ko,"vs-input-array-select":mn,"array-select":mn,"vs-input-address":Wo,"vs-input-datalist":gp,"vs-input-dataform":Vp,"vs-input-monaco":Hn},Sp=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[c,i]of Object.entries(t.set))n.value[c]=s.result[i]}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(o.button),1))}}),$p={class:"flex flex-col gap-1 w-full"},Np=["innerHTML"],Xo=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(()=>dl[`${n.layout}`]),s=["label","placeholder","info","description","text","html"],c=e.ref(k()),i=e.computed(()=>x(n.item,c.value)),d=e.computed(()=>Yo?.[`vs-input-${n.item.type}`]),u=e.inject("field-props"),f=e.computed(()=>{const w=e.unref(d);if(!w)return new Set;const L=w.props??w.__vccOpts?.props;if(!L)return new Set;const z=Array.isArray(L)?L:Object.keys(L);return new Set(z)}),h=["min","max","step"],y=e.computed(()=>{const w={...i.value??{}},L=n.item?.name;L&&u?.value?.[L]&&Object.assign(w,u.value[L]);const z=f.value;let N;return z.size?N=Object.fromEntries(Object.entries(w).filter(([B])=>z.has(B))):N=w,h.forEach(B=>{const V=w[B];V!=null&&(N[B]=V)}),N}),m=w=>{const L=typeof w=="object"&&w!==null?w:{value:w};l("value-selected",{...L,name:L.name??n.item?.name})};e.onMounted(()=>{c.value=k(),window.addEventListener("storage",C)}),e.onUnmounted(()=>{window.removeEventListener("storage",C)});function x(w,L){if(!w)return{};const z={...w};return s.forEach(N=>{const B=E(w,N,L);B!=null&&(z[N]=B)}),Array.isArray(w.options)&&(z.options=w.options.map(N=>b(N,L))),z}function b(w,L){if(!w)return w;const z={...w},N=E(w,"label",L),B=E(w,"text",L);return N!=null&&(z.label=N),B!=null?z.text=B:N!=null&&(z.text=N),z}function E(w,L,z){const N=`${L}:${z}`;if(w?.[N]!=null)return w[N];if(L==="label"&&w?.[z]!=null)return w[z];if(w?.[L]!=null)return w[L];if(L==="label"){if(w?.ua!=null)return w.ua;if(w?.en!=null)return w.en}if(L==="text"||L==="html"){if(w?.ua!=null)return w.ua;if(w?.en!=null)return w.en}return null}function k(){return typeof window>"u"?"uk":localStorage.getItem("locale")||"uk"}function C(){c.value=k()}return(w,L)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{ua:i.value.ua,error:n.error||"",item:i.value,columns:n.columns,label:i.value.label},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["flex w-full",`${n.item.type}-component`])},[e.createElementVNode("div",$p,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.value),e.mergeProps(y.value,{modelValue:r.value,"onUpdate:modelValue":L[0]||(L[0]=z=>r.value=z),onValueSelected:m}),null,16,["modelValue"])),i.value.description&&n.layout!=="settings"?(e.openBlock(),e.createElementBlock("p",{key:0,class:"text-sm text-gray-500",innerHTML:i.value.description},null,8,Np)):e.createCommentVNode("",!0)]),i.value.behavior?.api&&i.value.behavior?.button?(e.openBlock(),e.createBlock(Sp,e.mergeProps({key:0},i.value.behavior,{value:r.value}),null,16,["value"])):e.createCommentVNode("",!0)],2)]),_:1},8,["ua","error","item","columns","label"]))}}),Ap={class:"text-sm text-gray-800 mb-[4px] font-medium dark:text-neutral-300"},Fp={class:"vs-compact-form-navigation__rail mt-[6px]"},Mp=["onClick"],Dp=ye(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),c=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"]),i=e.computed(()=>{const M=n.width;if(M==null)return{};const R=typeof M=="number"?`${M}px`:`${M}`;return{width:R,minWidth:R}});let d=null,u=0,f=0,h=null,y=null,m=null;const x=()=>V(),b=()=>k();e.watch(()=>n.target,async M=>{if(z(),!M){h=null,r.value=[],l.value="";return}h=M,s.value&&(await e.nextTick(),L(M),k())},{immediate:!0}),e.watch(()=>n.scrollContainer,M=>{if(!s.value){y=M??null;return}E(M??null),e.nextTick(()=>k())},{immediate:!0}),e.onMounted(()=>{n.scrollContainer||E(null),k()}),e.onBeforeUnmount(()=>{z(),E(null,!0),h=null,typeof window<"u"&&(u&&window.cancelAnimationFrame(u),f&&window.cancelAnimationFrame(f))});function E(M,R=!1){if(m&&(m(),m=null),R){y=null;return}if(y=M??null,typeof window>"u")return;const q=M??window,$=window;q.addEventListener("scroll",x,{passive:!0}),$.addEventListener("resize",b),m=()=>{q.removeEventListener("scroll",x),$.removeEventListener("resize",b)}}function k(){if(!s.value||!h)return;u&&typeof window<"u"&&window.cancelAnimationFrame(u);const M=()=>{C(),u=0};typeof window>"u"?M():u=window.requestAnimationFrame(M)}function C(){if(!s.value||!h)return;const M=Array.from(h.querySelectorAll("h1, h2")),R=new Set,q=[];M.forEach(($,T)=>{const D=$.textContent?.trim()??"";if(!D)return;let Y=($.getAttribute("id")??"").trim();Y||(Y=w(D)||`heading-${T+1}`);let W=Y,Z=1;for(;R.has(W);)W=`${Y}-${Z+=1}`;$.id!==W&&Object.assign($,{id:W}),R.add(W),q.push({id:W,text:D,level:$.tagName.toLowerCase()==="h1"?1:2})}),r.value=q,q.length||(l.value=""),B()}function w(M){return M.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-")}function L(M){!M||!s.value||typeof MutationObserver>"u"||(z(),d=new MutationObserver(()=>k()),d.observe(M,{childList:!0,subtree:!0}))}function z(){d&&(d.disconnect(),d=null)}function N(M){const R=y;if(!R)return typeof window>"u"?M.offsetTop:M.getBoundingClientRect().top+window.scrollY;const q=M.getBoundingClientRect(),$=R.getBoundingClientRect();return q.top-$.top+R.scrollTop}function B(){if(!s.value||!r.value.length)return;const M=y,R=(M?M.scrollTop:null)||(typeof window<"u"?window.scrollY:0),q=(M?M.clientHeight:null)||(typeof window<"u"?window.innerHeight:0),$=R+q;let T=null;for(let Y=0;Y<r.value.length;Y+=1){const W=r.value[Y],Z=document.getElementById(W.id);if(Z){const le=N(Z);le+Z.offsetHeight>R&&le<$&&(T=W.id)}}!T&&a.value&&(T=a.value),T&&(a.value=T);const D=M?M.scrollHeight-M.clientHeight:document.documentElement.scrollHeight-window.innerHeight;R+5>=D&&(T=r.value[r.value.length-1].id),T&&(l.value=T)}function V(){s.value&&(f&&window.cancelAnimationFrame(f),f=window.requestAnimationFrame(()=>{B(),f=0}))}function S(M){if(!s.value)return;const R=document.getElementById(M);if(!R)return;const q=y,$=Math.max(0,N(R));q?q.scrollTo({top:$,behavior:"smooth"}):typeof window<"u"&&window.scrollTo({top:$,behavior:"smooth"})}return t({refresh:k}),(M,R)=>s.value&&r.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(c.value),style:e.normalizeStyle(i.value)},[e.createElementVNode("h2",Ap,e.toDisplayString(o.title),1),e.createElementVNode("div",Fp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,q=>(e.openBlock(),e.createElementBlock("div",{key:q.id,class:e.normalizeClass(["vs-compact-form-navigation__item relative",q.level===2?"vs-compact-form-navigation__item--nested":"",q.id===l.value?"vs-compact-form-navigation__item--active":""])},[e.createElementVNode("button",{type:"button",onClick:$=>S(q.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",q.level===2?"pl-[15px]":"pl-[18px]",q.id===l.value?"text-gray-800":"text-gray-500"])},[e.createElementVNode("span",null,e.toDisplayString(q.text),1)],10,Mp)],2))),128))])],6)):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-b3e16a91"]]),st={required:"Це поле є обов’язковим",email:"Неправильний email",tel:"Неправильний телефон",minlength:o=>`Мінімальна довжина — ${o} символів`,maxlength:o=>`Максимальна довжина — ${o} символів`,min:o=>`Значення має бути не менше ${o}`,max:o=>`Значення має бути не більше ${o}`},Lp=o=>typeof o=="string"?o.trim()?!1:st.required:Array.isArray(o)?o.map(n=>typeof n=="string"?n.trim():n).filter(n=>n!=null&&n!=="").length?!1:st.required:typeof o=="number"?Number?.isNaN(o)?st?.required:!1:o?!1:st.required,Tp=o=>{const t=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return o?t.test(o)?!1:st.email:!1},Ip=o=>{const t=/^\+[1-9]\d{1,14}$/;return o?t.test(o)?!1:st.tel:!1},Zo=o=>o==null?0:typeof o=="string"?o.trim().length:Array.isArray(o)?o.length:typeof o=="number"?o.toString().length:String(o).length,Rp=(o,t)=>{if(o==null)return!1;const n=Number(t?.value??t?.length);return Number.isFinite(n)&&Zo(o)<n?t?.message||st.minlength(n):!1},Op=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value??t?.length);return Number.isFinite(n)&&Zo(o)>n?t?.message||st.maxlength(n):!1},Jo=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)},zp=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value);if(!Number.isFinite(n))return!1;const r=Jo(o);return Number.isFinite(r)&&r<n?t?.message||st.min(n):!1},Pp=(o,t)=>{if(o==null||o==="")return!1;const n=Number(t?.value);if(!Number.isFinite(n))return!1;const r=Jo(o);return Number.isFinite(r)&&r>n?t?.message||st.max(n):!1},jp=(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},Up=(o,t)=>!1,Hp=(o,t)=>{switch(typeof t=="string"?t:t.type){case"required":return Lp(o);case"email":return Tp(o);case"tel":return Ip(o);case"regexp":return jp(o,t);case"minlength":return Rp(o,t);case"maxlength":return Op(o,t);case"min":return zp(o,t);case"max":return Pp(o,t);case"custom":return Up();default:return!1}},qp={autocomplete:"select",combobox:"select",datepicker:"date",markedtext:"mask",html:"static",geom:"map",filelist:"file-list",file:"file",dropzone:"file"};function Qo(o){const t=o?.toLowerCase();return qp[t]||t}function qn(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=Qo(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=qn(a.schema,a.disabled)),r.push(a)}),r}const n=[];return Object.entries(o).forEach(r=>{const l={name:r[0],...r[1],type:Qo(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=qn(l.schema,l.disabled)),n.push(l)}),n}function Kp(o,t,n=!1){const r=e.computed(()=>qn((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 f=Array.isArray(u)?u[0]:u,h=o?.value?.[f];return _o(h,u)}const s=(d=r.value,u=!0)=>(d.forEach(f=>{const h=[],y=Number(f?.minlength),m=Number(f?.maxlength),x=Number(f?.min),b=Number(f?.max);!Number.isNaN(y)&&Number.isFinite(y)&&h.push({type:"minlength",value:y}),!Number.isNaN(m)&&Number.isFinite(m)&&h.push({type:"maxlength",value:m}),!Number.isNaN(x)&&Number.isFinite(x)&&h.push({type:"min",value:x}),!Number.isNaN(b)&&Number.isFinite(b)&&h.push({type:"max",value:b});const E=[...h,...f.rules||[]];if(E.length){if(!a(f)){delete l.value[f.name];return}let k=!1,C=null;E.forEach(w=>{const L=Hp(o.value[f.name],w);L&&(k=!0,!C&&typeof L=="string"&&(C=L))}),k&&C?l.value[f.name]=C:delete l.value[f.name]}f.schema&&s(f.schema,!1)}),u&&Object.values(l.value).some(Boolean)?l.value:null),c=e.computed(()=>r.value?.filter(d=>d.hidden!==!0&&a(d)));return{errors:l,validate:s,reset:()=>{o.value={},l.value={}},visibleSchema:c}}const Wp={class:"flex w-full h-full min-h-0 gap-6"},Gp={key:0,"data-orientation":"horizontal",role:"none",class:"mt-1 shrink-0 h-[1px] w-full bg-slate-100 dark:bg-slate-600"},nt=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"),c=e.useModel(o,"values"),i=e.computed({get:()=>c.value??s.value,set:$=>{s.value=$,c.value=$}}),{errors:d,validate:u,reset:f,visibleSchema:h}=Kp(i,l.schema,e.toRef(l,"disabled")),y=e.ref(null),m=e.ref(null),x=e.ref({}),b=e.computed(()=>l.navigation),E=e.computed(()=>l.navWidth),k=e.computed(()=>l.style?.columns),C=Object.freeze({container:12,label:3}),w=e.computed(()=>l.columns??k.value??C),L=e.computed(()=>l.columns!=null||k.value!=null),z=e.computed(()=>L.value?"horizontal":l.layout),N=$=>$?.columns?"horizontal":z.value,B=$=>$?.columns??w.value,V=()=>{!l.formId&&i.value&&delete i.value.id,r("update:modelValue",i.value),u(),r("handle-submit",i.value)},S=$=>{r("value-selected",$)};t({validate:u,reset:f,errors:d}),e.onMounted(()=>{a.value={value:i.value,errors:d.value,reset:f,validate:u,formId:l.formId}});function M($,T){if($===T)return!0;if(typeof $!="object"||typeof T!="object"||!$||!T)return!1;const D=Object.keys($),Y=Object.keys(T);return D.length!==Y.length?!1:D.every(W=>$[W]===T[W])}function R($){return Array.isArray($)?[...$]:$&&typeof $=="object"?{...$}:$}function q($){Array.isArray($)&&$.forEach(T=>{if(!T)return;const D=T.name,Y=T.default!==void 0;D&&Y&&i.value[D]===void 0&&(i.value[D]=R(T.default)),Array.isArray(T.schema)&&q(T.schema)})}return e.watch(h,$=>{q($)},{immediate:!0,deep:!0}),e.provide("form",a),e.provide("values",i),e.provide("field-props",x),($,T)=>(e.openBlock(),e.createElementBlock("div",Wp,[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:y,onSubmit:e.withModifiers(V,["prevent"]),class:e.normalizeClass(["grid grid-cols-12 p-1",z.value==="default"?"gap-6":"gap-4"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),(D,Y)=>(e.openBlock(),e.createElementBlock("div",{key:D.name,class:e.normalizeClass(N(D)==="horizontal"?"col-span-12":`col-span-${D.col||12}`)},[e.createVNode(Xo,{style:e.normalizeStyle(o.style),item:D,layout:N(D),columns:B(D),"model-value":i.value[D.name],"onUpdate:modelValue":W=>{if(D.name==="id"&&!o.formId)return;const Z=i.value[D.name];M(Z,W)||(i.value[D.name]=W)},error:e.unref(d)[D.name],onValueSelected:S},null,8,["style","item","layout","columns","model-value","onUpdate:modelValue","error"]),N(D)==="settings"&&Y+1!==e.unref(h).length?(e.openBlock(),e.createElementBlock("div",Gp)):e.createCommentVNode("",!0)],2))),128))],34)],512),e.createVNode(Dp,{target:y.value,"scroll-container":m.value,enabled:b.value,width:E.value},null,8,["target","scroll-container","enabled","width"])]))}}),Yp={class:"relative"},Xp={class:"w-full h-full fixed top-0 start-0 bg-black bg-opacity-50"},Zp={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"},Jp={class:"py-2.5 px-4 flex justify-between items-center border-0 border-b border-solid border-gray-200 dark:border-b-[#454545]"},Qp={class:"font-medium text-gray-800 dark:text-[#ffffff]"},ef={class:"p-4 mim-h-0 h-full overflow-auto"},er=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({}),c=e.ref(n.token||""),i=e.ref(n.token||""),d=e.ref(n.mode),u=()=>{const b=n.method?.trim().toUpperCase();return b==="GET"||b==="POST"||b==="PUT"?b:d.value==="add"?"POST":"PUT"},f=()=>{pe.notify({type:"success",title:"Успішно",message:`Дані успішно ${d.value==="add"?"збережено":"оновлено"}`})},h=b=>{const E={};b.id!==void 0&&b.id!==null&&(E.id=b.id,i.value=b.id.toString()),b.obj&&typeof b.obj=="object"&&Object.assign(E,b.obj),Object.keys(E).length&&(a.value={...a.value,...E})},y=async b=>{if(console.log(b),b.ok){await b.json().catch(()=>({})),f(),r("save",a.value);return}const E=await b.json().catch(()=>({})),k=E.message||E.error;if(b.status===400){pe.notify({type:"warning",title:"Помилка валідації",message:k||"Некоректні дані (400)"});return}if(b.status===500){pe.notify({type:"error",title:"Серверна помилка",message:k||"Виникла помилка на сервері (500)"});return}pe.notify({type:"error",title:"Помилка",message:`Статус: ${b.status}`})};async function m(){const b=s.value.validate();if(b){pe.notify({type:"warning",title:"Помилка валідації",message:Object.entries(b).map(([k,C])=>`${k}: ${C}`).join(`
|
|
5
5
|
`)});return}d.value==="add"&&a.value&&delete a.value.id;const E=n.api?.trim();if(E){const k=u();try{const C=await fetch(E,{method:k,headers:k==="GET"?void 0:{"Content-Type":"application/json"},body:k==="GET"?void 0:JSON.stringify(a.value)});await y(C)}catch(C){pe.notify({type:"error",title:"Помилка з’єднання",message:C.message||"Не вдалося виконати запит"})}return}if(c.value)try{const k=await fetch(`/api/table/${c.value}`,{method:d.value==="add"?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a.value)});await y(k)}catch(k){pe.notify({type:"error",title:"Помилка з’єднання",message:k.message||"Не вдалося виконати запит"})}else r("edit",a.value),x()}function x(){r("close")}return e.onMounted(async()=>{try{if(n.form&&!n.schema){const b=await fetch(`/api/template/form/${n.form}`);if(!b.ok){pe.notify({type:b.status>=400&&b.status<500?"warning":"error",title:"Error",message:`Error code: ${b.status}`});return}const E=await b.json();l.value=E.schema,E.id&&(i.value=E.id),E.token&&(c.value=E.token,i.value||(i.value=E.token))}else if(n.token&&!n.defaultValue){c.value=n.token;const b=await fetch(`/api/form/${c.value}`);if(!b.ok){pe.notify({type:b.status>=400&&b.status<500?"warning":"error",title:"Error",message:`Error code: ${b.status}`});return}const E=await b.json();l.value=E.schema,E.data?a.value=E.data:d.value="add",h({id:E.id,obj:E.obj})}}catch(b){pe.notify({type:"error",title:"Error",message:b.message||"Unexpected error"}),console.error(b)}}),(b,E)=>(e.openBlock(),e.createElementBlock("div",Yp,[e.createElementVNode("div",Xp,[e.createElementVNode("div",Zp,[e.createElementVNode("div",Jp,[e.createElementVNode("h3",Qp,e.toDisplayString(d.value==="add"?"Додати":"Змінити"),1),e.createElementVNode("button",{onClick:x,type:"button",class:"size-8 inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent bg-gray-100 text-gray-800 hover:bg-gray-200 focus:outline-none focus:bg-gray-200 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-700 dark:hover:bg-neutral-600 dark:text-neutral-400 dark:focus:bg-neutral-600"},[E[2]||(E[2]=e.createElementVNode("span",{class:"sr-only"},"Close",-1)),e.createVNode(e.unref(P.X),{class:"h-4 w-4 flex-shrink-0"})])]),e.createElementVNode("div",ef,[l.value?(e.openBlock(),e.createBlock(nt,{key:0,schema:l.value,values:a.value,"onUpdate:values":E[0]||(E[0]=k=>a.value=k),form:s.value,"onUpdate:form":E[1]||(E[1]=k=>s.value=k),formId:i.value},null,8,["schema","values","form","formId"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"vs-form__head mr-5 mb-5 mt-3 flex items-center justify-end sticky top-0 left-0 z-[60] bg-white"},[e.createElementVNode("button",{type:"button",onClick:x,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:m,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"}," Зберегти ")])])])]))}}),tf=1440*60*1e3,nf=["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"],of=["січ","лют","бер","квіт","трав","черв","лип","серп","вер","жовт","лист","груд"],rf=["нд","пн","вт","ср","чт","пт","сб"];function Te(o){return o instanceof Date&&!Number.isNaN(o.getTime())}const Dt=o=>new Date(o.getTime());function Nt(o){const t=Dt(o);return t.setHours(0,0,0,0),t}function Ut(o){const t=Dt(o);return t.setHours(23,59,59,999),t}function Kn(o){return Nt(new Date(o.getFullYear(),o.getMonth(),1))}function Wn(o){return Ut(new Date(o.getFullYear(),o.getMonth()+1,0))}function Gn(o,t){const n=new Date(o),r=n.getDate();n.setDate(1),n.setMonth(n.getMonth()+t);const l=new Date(n.getFullYear(),n.getMonth()+1,0).getDate();return n.setDate(Math.min(r,l)),n}function lf(o,t){return Gn(o,-1)}function yn(o,t){const n=new Date(o);return n.setFullYear(n.getFullYear()+t),n}function tr(o,t){return yn(o,-t)}function nr(o){return Nt(new Date(o.getFullYear(),0,1))}function or(o){return Ut(new Date(o.getFullYear(),11,31))}function af(o){const t=Math.floor(o.getFullYear()/10)*10;return Nt(new Date(t,0,1))}function sf(o){const t=Math.floor(o.getFullYear()/10)*10+9;return Ut(new Date(t,11,31))}const ot=o=>o.getFullYear(),bn=o=>Math.floor(o.getFullYear()/10)*10;function cf(o){const t=[];let n=Nt(o.start);const r=Nt(o.end);for(;n<=r;)t.push(Dt(n)),n=new Date(n.getTime()+tf);return t}function df(o){const t=[];let n=Kn(o.start);const r=Wn(o.end);for(;n<=r;)t.push(Dt(n)),n=Gn(n,1);return t}function uf(o){const t=[];let n=nr(o.start);const r=or(o.end);for(;n<=r;)t.push(Dt(n)),n=yn(n,1);return t}function Yn(o,t=1){const n=Nt(o),r=(n.getDay()-t+7)%7;return n.setDate(n.getDate()-r),n}function pf(o,t=1){const n=Yn(o,t);return n.setDate(n.getDate()+6),Ut(n)}function ff(o,t,n=0){const r=Yn(o,n),l=(t-n+7)%7;return r.setDate(r.getDate()+l),r}const kn=(o,t)=>!!o&&!!t&&o.getFullYear()===t.getFullYear()&&o.getMonth()===t.getMonth()&&o.getDate()===t.getDate(),Xn=(o,t)=>!!o&&!!t&&o.getFullYear()===t.getFullYear()&&o.getMonth()===t.getMonth(),rr=(o,t)=>!!o&&!!t&&o.getFullYear()===t.getFullYear(),lr=(o,t)=>!!o&&!!t&&kn(o,t)&&o.getHours()===t.getHours(),mf=(o,t)=>!!o&&!!t&&lr(o,t)&&o.getMinutes()===t.getMinutes();function hf(o,t){const n=o.getTime();return n>=t.start.getTime()&&n<=t.end.getTime()}const Ht=(o,t)=>!!o&&!!t&&o.getTime()<t.getTime(),qt=(o,t)=>!!o&&!!t&&o.getTime()>t.getTime();function gf(o){const t=o.filter(n=>Te(n));if(t.length)return t.reduce((n,r)=>n.getTime()>=r.getTime()?n:r)}function yf(o){const t=o.filter(n=>Te(n));if(t.length)return t.reduce((n,r)=>n.getTime()<=r.getTime()?n:r)}function ar(o,t){const n=Dt(o);return typeof t.year=="number"&&n.setFullYear(t.year),typeof t.month=="number"&&n.setMonth(t.month),typeof t.date=="number"&&n.setDate(t.date),typeof t.hours=="number"&&n.setHours(t.hours),typeof t.minutes=="number"&&n.setMinutes(t.minutes),typeof t.seconds=="number"&&n.setSeconds(t.seconds),typeof t.milliseconds=="number"&&n.setMilliseconds(t.milliseconds),n}const xn=(o,t=2)=>String(o).padStart(t,"0");function sr(o,t){return t==="wide"?nf[o]:of[o]}function bf(o){return rf[o]}const kf=[{token:"LLLL",format:o=>sr(o.getMonth(),"wide")},{token:"LLL",format:o=>sr(o.getMonth(),"abbreviated")},{token:"EE",format:o=>bf(o.getDay())},{token:"yyyy",format:o=>String(o.getFullYear())},{token:"MM",format:o=>xn(o.getMonth()+1)},{token:"dd",format:o=>xn(o.getDate())},{token:"HH",format:o=>xn(o.getHours())},{token:"mm",format:o=>xn(o.getMinutes())}];function wn(o,t){if(!Te(o))return"";let n="",r=0;for(;r<t.length;){const l=kf.find(a=>t.startsWith(a.token,r));l?(n+=l.format(o),r+=l.token.length):(n+=t[r],r+=1)}return n}const xf={"yyyy-MM-dd":/^(\d{4})-(\d{2})-(\d{2})$/,"dd.MM.yyyy":/^(\d{2})\.(\d{2})\.(\d{4})$/,"dd.MM.yyyy HH:mm":/^(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})$/,"HH:mm":/^(\d{2}):(\d{2})$/,"MM.yyyy":/^(\d{2})\.(\d{4})$/,yyyy:/^(\d{4})$/};function ir(o,t){const n=xf[t];if(!n){const l=new Date(o);return Te(l)?l:null}const r=o.match(n);if(!r)return null;switch(t){case"yyyy-MM-dd":{const[,l,a,s]=r,c=new Date(Number(l),Number(a)-1,Number(s));return Te(c)?c:null}case"dd.MM.yyyy":{const[,l,a,s]=r,c=new Date(Number(s),Number(a)-1,Number(l));return Te(c)?c:null}case"dd.MM.yyyy HH:mm":{const[,l,a,s,c,i]=r,d=new Date(Number(s),Number(a)-1,Number(l),Number(c),Number(i));return Te(d)?d:null}case"HH:mm":{const[,l,a]=r,s=new Date;return s.setHours(Number(l),Number(a),0,0),s}case"MM.yyyy":{const[,l,a]=r;return new Date(Number(a),Number(l)-1,1)}case"yyyy":{const[,l]=r;return new Date(Number(l),0,1)}default:return null}}const wf=["year","month","day","time","custom"],Cf=e.defineComponent({components:{ChevronLeft:P.ChevronLeft,ChevronRight:P.ChevronRight},emits:{elementClick:o=>Te(o),left:()=>!0,right:()=>!0,heading:()=>!0},props:{headingClickable:{type:Boolean,default:!1},leftDisabled:{type:Boolean,default:!1},rightDisabled:{type:Boolean,default:!1},columnCount:{type:Number,default:7},items:{type:Array,default:()=>[]},viewMode:{type:String,required:!0,validate:o=>typeof o=="string"&&wf.includes(o)}}}),vf={class:"v3dp__heading"},Ef=["disabled"],Bf=["disabled"],_f={class:"v3dp__body"},Vf={class:"v3dp__subheading"},Sf={class:"v3dp__elements"},$f=["disabled","onClick"];function Nf(o,t,n,r,l,a){const s=e.resolveComponent("ChevronLeft"),c=e.resolveComponent("ChevronRight");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["v3dp__popout",`v3dp__popout-${o.viewMode}`]),style:e.normalizeStyle({"--popout-column-definition":`repeat(${o.columnCount}, 1fr)`}),onMousedown:t[3]||(t[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",vf,[e.createElementVNode("button",{class:"v3dp__heading__button v3dp__heading__button__left",disabled:o.leftDisabled,onClick:t[0]||(t[0]=e.withModifiers(i=>o.$emit("left"),["stop","prevent"]))},[e.renderSlot(o.$slots,"arrow-left",{},()=>[e.createVNode(s,{class:"v3dp__heading__icon h-4 w-4"})],!0)],8,Ef),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.headingClickable?"button":"span"),{class:"v3dp__heading__center",onClick:t[1]||(t[1]=e.withModifiers(i=>o.$emit("heading"),["stop","prevent"]))},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"heading",{},void 0,!0)]),_:3})),e.createElementVNode("button",{class:"v3dp__heading__button v3dp__heading__button__right",disabled:o.rightDisabled,onClick:t[2]||(t[2]=e.withModifiers(i=>o.$emit("right"),["stop","prevent"]))},[e.renderSlot(o.$slots,"arrow-right",{},()=>[e.createVNode(c,{class:"v3dp__heading__icon h-4 w-4"})],!0)],8,Bf)]),e.createElementVNode("div",_f,["subheading"in o.$slots?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Vf,[e.renderSlot(o.$slots,"subheading",{},void 0,!0)]),t[4]||(t[4]=e.createElementVNode("hr",{class:"v3dp__divider"},null,-1))],64)):e.createCommentVNode("",!0),e.createElementVNode("div",Sf,[e.renderSlot(o.$slots,"body",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.items,i=>(e.openBlock(),e.createElementBlock("button",{key:i.key,disabled:i.disabled,class:e.normalizeClass([{selected:i.selected,current:i.current},`v3dp__element__button__${o.viewMode}`]),onClick:e.withModifiers(d=>o.$emit("elementClick",i.value),["stop","prevent"])},[e.createElementVNode("span",null,e.toDisplayString(i.display),1)],10,$f))),128))],!0)])])],38)}const Cn=ye(Cf,[["render",Nf],["__scopeId","data-v-744d2ba4"]]),Af=e.defineComponent({components:{PickerPopup:Cn},emits:{"update:pageDate":o=>Te(o),select:o=>Te(o)},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},lowerLimit:{type:Date,required:!1},upperLimit:{type:Date,required:!1}},setup(o,{emit:t}){const n=e.computed(()=>af(o.pageDate)),r=e.computed(()=>sf(o.pageDate)),l=(f,h,y)=>!h&&!y?!0:!(h&&ot(f)<ot(h)||y&&ot(f)>ot(y)),a=e.computed(()=>uf({start:n.value,end:r.value}).map(f=>({value:f,key:String(ot(f)),display:ot(f),selected:!!o.selected&&ot(f)===ot(o.selected),disabled:!l(f,o.lowerLimit,o.upperLimit)}))),s=e.computed(()=>{const f=ot(n.value),h=ot(r.value);return`${f} - ${h}`}),c=e.computed(()=>o.lowerLimit&&(bn(o.lowerLimit)===bn(o.pageDate)||Ht(o.pageDate,o.lowerLimit))),i=e.computed(()=>o.upperLimit&&(bn(o.upperLimit)===bn(o.pageDate)||qt(o.pageDate,o.upperLimit)));return{years:a,heading:s,leftDisabled:c,rightDisabled:i,previousPage:()=>t("update:pageDate",tr(o.pageDate,10)),nextPage:()=>t("update:pageDate",yn(o.pageDate,10))}}});function Ff(o,t,n,r,l,a){const s=e.resolveComponent("picker-popup");return e.openBlock(),e.createBlock(s,{columnCount:3,leftDisabled:o.leftDisabled,rightDisabled:o.rightDisabled,items:o.years,viewMode:"year",onLeft:o.previousPage,onRight:o.nextPage,onElementClick:t[0]||(t[0]=c=>o.$emit("select",c))},{heading:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.heading),1)]),_:1},8,["leftDisabled","rightDisabled","items","onLeft","onRight"])}const Mf=ye(Af,[["render",Ff]]),Df=e.defineComponent({components:{PickerPopup:Cn},emits:{"update:pageDate":o=>Te(o),select:o=>Te(o),back:()=>!0},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},format:{type:String,required:!1,default:"LLL"},lowerLimit:{type:Date,required:!1},upperLimit:{type:Date,required:!1}},setup(o,{emit:t}){const n=e.computed(()=>nr(o.pageDate)),r=e.computed(()=>or(o.pageDate)),l=e.computed(()=>h=>wn(h,o.format)),a=(h,y,m)=>!y&&!m?!0:!(y&&Ht(h,Kn(y))||m&&qt(h,Wn(m))),s=e.computed(()=>df({start:n.value,end:r.value}).map(h=>({value:h,display:l.value(h),key:l.value(h),selected:!!o.selected&&Xn(o.selected,h),disabled:!a(h,o.lowerLimit,o.upperLimit)}))),c=e.computed(()=>ot(n.value)),i=e.computed(()=>o.lowerLimit&&(rr(o.lowerLimit,o.pageDate)||Ht(o.pageDate,o.lowerLimit))),d=e.computed(()=>o.upperLimit&&(rr(o.upperLimit,o.pageDate)||qt(o.pageDate,o.upperLimit)));return{months:s,heading:c,leftDisabled:i,rightDisabled:d,previousPage:()=>t("update:pageDate",tr(o.pageDate,1)),nextPage:()=>t("update:pageDate",yn(o.pageDate,1))}}});function Lf(o,t,n,r,l,a){const s=e.resolveComponent("picker-popup");return e.openBlock(),e.createBlock(s,{headingClickable:"",columnCount:3,items:o.months,leftDisabled:o.leftDisabled,rightDisabled:o.rightDisabled,viewMode:"month",onLeft:o.previousPage,onRight:o.nextPage,onHeading:t[0]||(t[0]=c=>o.$emit("back")),onElementClick:t[1]||(t[1]=c=>o.$emit("select",c))},{heading:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.heading),1)]),_:1},8,["items","leftDisabled","rightDisabled","onLeft","onRight"])}const Tf=ye(Df,[["render",Lf]]),If=e.defineComponent({components:{PickerPopup:Cn},emits:{"update:pageDate":o=>Te(o),select:o=>Te(o),back:()=>!0},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},format:{type:String,required:!1,default:"dd"},headingFormat:{type:String,required:!1,default:"LLLL yyyy"},weekdayFormat:{type:String,required:!1,default:"EE"},weekStartsOn:{type:Number,required:!1,default:1,validator:o=>typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<=6},customWeekdays:{type:Array,required:!1},lowerLimit:{type:Date,required:!1},upperLimit:{type:Date,required:!1},disabledDates:{type:Object,required:!1},allowOutsideInterval:{type:Boolean,required:!1,default:!1}},setup(o,{emit:t}){const n=e.computed(()=>b=>E=>wn(E,b)),r=e.computed(()=>Kn(o.pageDate)),l=e.computed(()=>Wn(o.pageDate)),a=e.computed(()=>({start:r.value,end:l.value})),s=e.computed(()=>({start:Yn(r.value,o.weekStartsOn),end:pf(l.value,o.weekStartsOn)})),c=e.computed(()=>o.customWeekdays?.length===7?o.customWeekdays:null),i=e.computed(()=>{const b=o.weekStartsOn,E=c.value;if(E)return Array.from({length:7}).map((C,w)=>E[(b+w)%7]);const k=n.value(o.weekdayFormat);return Array.from(Array(7)).map((C,w)=>(b+w)%7).map(C=>ff(new Date,C,o.weekStartsOn)).map(k)}),d=(b,E,k,C)=>C?.dates?.some(w=>kn(b,w))||C?.predicate?.(b)?!1:!E&&!k?!0:!(E&&Ht(b,Nt(E))||k&&qt(b,Ut(k))),u=e.computed(()=>{const b=new Date,E=n.value(o.format);return cf(s.value).map(k=>({value:k,display:E(k),selected:!!o.selected&&kn(o.selected,k),current:kn(b,k),disabled:!o.allowOutsideInterval&&!hf(k,a.value)||!d(k,o.lowerLimit,o.upperLimit,o.disabledDates),key:n.value("yyyy-MM-dd")(k)}))}),f=e.computed(()=>n.value(o.headingFormat)(o.pageDate)),h=e.computed(()=>o.lowerLimit&&(Xn(o.lowerLimit,o.pageDate)||Ht(o.pageDate,o.lowerLimit))),y=e.computed(()=>o.upperLimit&&(Xn(o.upperLimit,o.pageDate)||qt(o.pageDate,o.upperLimit)));return{weekDays:i,days:u,heading:f,leftDisabled:h,rightDisabled:y,previousPage:()=>t("update:pageDate",lf(o.pageDate)),nextPage:()=>t("update:pageDate",Gn(o.pageDate,1))}}});function Rf(o,t,n,r,l,a){const s=e.resolveComponent("picker-popup");return e.openBlock(),e.createBlock(s,{headingClickable:"",leftDisabled:o.leftDisabled,rightDisabled:o.rightDisabled,items:o.days,viewMode:"day",onLeft:o.previousPage,onRight:o.nextPage,onHeading:t[0]||(t[0]=c=>o.$emit("back")),onElementClick:t[1]||(t[1]=c=>o.$emit("select",c))},{heading:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.heading),1)]),subheading:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.weekDays,(c,i)=>(e.openBlock(),e.createElementBlock("span",{key:c,class:e.normalizeClass(`v3dp__subheading__weekday__${i}`)},e.toDisplayString(c),3))),128))]),_:1},8,["leftDisabled","rightDisabled","items","onLeft","onRight"])}const Of=ye(If,[["render",Rf]]);function cr(o,t){const n=o.getBoundingClientRect(),r={height:o.clientHeight,width:o.clientWidth},l=t.getBoundingClientRect();if(!(l.top>=n.top&&l.bottom<=n.top+r.height)){const s=l.top-n.top,c=l.bottom-n.bottom;Math.abs(s)<Math.abs(c)?o.scrollTop+=s:o.scrollTop+=c}}const zf=e.defineComponent({components:{PickerPopup:Cn},emits:{select:o=>Te(o),back:()=>!0},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},visible:{type:Boolean,required:!0},disabledTime:{type:Object,required:!1}},setup(o,{emit:t}){const n=e.ref(null),r=e.ref(null),l=e.computed(()=>o.pageDate??o.selected),a=e.ref(l.value.getHours()),s=e.ref(l.value.getMinutes());e.watch(()=>o.selected,y=>{let m=0,x=0;y&&(m=y.getHours(),x=y.getMinutes()),a.value=m,s.value=x});const c=e.computed(()=>[...Array(24).keys()].map(y=>({value:y,date:ar(new Date(l.value.getTime()),{hours:y,minutes:s.value,seconds:0}),selected:a.value===y,ref:e.ref(null)}))),i=e.computed(()=>[...Array(60).keys()].map(y=>({value:y,date:ar(new Date(l.value.getTime()),{hours:a.value,minutes:y,seconds:0}),selected:s.value===y,ref:e.ref(null)}))),d=y=>{s.value=y.value,t("select",y.date)},u=()=>{const y=c.value.find(x=>x.ref.value?.classList?.contains("selected")??!1),m=i.value.find(x=>x.ref.value?.classList?.contains("selected")??!1);y&&m&&(cr(n.value,y.ref.value),cr(r.value,m.ref.value))};return e.watch(()=>o.visible,y=>{y&&e.nextTick(u)}),{hoursListRef:n,minutesListRef:r,hours:a,minutes:s,hoursList:c,minutesList:i,padStartZero:y=>`0${y}`.substr(-2),selectMinutes:d,isEnabled:y=>!(o.disabledTime?.dates?.some(m=>lr(y,m)&&mf(y,m))||o.disabledTime?.predicate?.(y)),scroll:u}}}),Pf={ref:"hoursListRef",class:"v3dp__column"},jf=["disabled","onClick"],Uf={ref:"minutesListRef",class:"v3dp__column"},Hf=["disabled","onClick"];function qf(o,t,n,r,l,a){const s=e.resolveComponent("picker-popup");return e.openBlock(),e.createBlock(s,{headingClickable:"",columnCount:2,leftDisabled:!0,rightDisabled:!0,viewMode:"time",onHeading:t[0]||(t[0]=c=>o.$emit("back"))},{heading:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.padStartZero(o.hours))+":"+e.toDisplayString(o.padStartZero(o.minutes)),1)]),body:e.withCtx(()=>[e.createElementVNode("div",Pf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.hoursList,c=>(e.openBlock(),e.createElementBlock("button",{key:c.value,ref_for:!0,ref:c.ref,class:e.normalizeClass([{selected:c.selected},"v3dp__element_button__hour"]),disabled:!o.isEnabled(c.date),onClick:e.withModifiers(i=>o.hours=c.value,["stop","prevent"])},[e.createElementVNode("span",null,e.toDisplayString(o.padStartZero(c.value)),1)],10,jf))),128))],512),e.createElementVNode("div",Uf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.minutesList,c=>(e.openBlock(),e.createElementBlock("button",{key:c.value,ref_for:!0,ref:c.ref,class:e.normalizeClass([{selected:c.selected},"v3dp__element_button__minute"]),disabled:!o.isEnabled(c.date),onClick:e.withModifiers(i=>o.selectMinutes(c),["stop","prevent"])},[e.createElementVNode("span",null,e.toDisplayString(o.padStartZero(c.value)),1)],10,Hf))),128))],512)]),_:1})}const Kf=ye(zf,[["render",qf],["__scopeId","data-v-43e01bf7"]]),vn=["time","day","month","year"],Wf=(o,t,n=void 0)=>{let r=n||new Date;const l=gf([o,r]);l&&(r=l);const a=yf([t,r]);return a&&(r=a),r},Gf=e.defineComponent({components:{YearPicker:Mf,MonthPicker:Tf,DayPicker:Of,TimePicker:Kf},inheritAttrs:!1,props:{placeholder:{type:String,default:""},modelValue:{type:Date,required:!1},disabledDates:{type:Object,required:!1},allowOutsideInterval:{type:Boolean,required:!1,default:!1},disabledTime:{type:Object,required:!1},upperLimit:{type:Date,required:!1},lowerLimit:{type:Date,required:!1},startingView:{type:String,required:!1,default:"day",validate:o=>typeof o=="string"&&vn.includes(o)},startingViewDate:{type:Date,required:!1,default:()=>new Date},dayPickerHeadingFormat:{type:String,required:!1,default:"LLLL yyyy"},monthListFormat:{type:String,required:!1,default:"LLL"},weekdayFormat:{type:String,required:!1,default:"EE"},dayFormat:{type:String,required:!1,default:"dd"},inputFormat:{type:String,required:!1,default:"yyyy-MM-dd"},weekDayNames:{type:Array,required:!1},weekStartsOn:{type:Number,required:!1,default:1,validator:o=>[0,1,2,3,4,5,6].includes(o)},disabled:{type:Boolean,required:!1,default:!1},clearable:{type:Boolean,required:!1,default:!1},typeable:{type:Boolean,required:!1,default:!1},minimumView:{type:String,required:!1,default:"day",validate:o=>typeof o=="string"&&vn.includes(o)}},emits:{"update:modelValue":o=>o==null||Te(o),decadePageChanged:o=>!0,yearPageChanged:o=>!0,monthPageChanged:o=>!0,opened:()=>!0,closed:()=>!0},setup(o,{emit:t,attrs:n}){const r=e.ref("none"),l=e.ref(o.startingViewDate),a=e.ref(null),s=e.ref(!1),c=e.ref(""),i=T=>{const D=T.replace(/[a-zA-Z]/g,"0");return/0/.test(D)?D:""},d=e.computed(()=>i(o.inputFormat));let u=null,f=null;const h=()=>{u?.destroy(),u=null},y=async()=>{if(!f){const{default:T}=await Promise.resolve().then(()=>no);f=T}return f},m=()=>{u&&u.value!==c.value&&(u.value=c.value??"")},x=async()=>{if(h(),!a.value||!d.value)return;u=(await y())(a.value,{mask:d.value,lazy:!0,overwrite:!0}),m()};e.watchEffect(()=>{if(!c.value)return;const T=ir(c.value,o.inputFormat);T&&(l.value=T)}),e.watchEffect(()=>{c.value=o.modelValue&&Te(o.modelValue)?wn(o.modelValue,o.inputFormat):""}),e.onMounted(()=>{d.value&&e.nextTick(()=>{x()})}),e.onBeforeUnmount(()=>{h()}),e.watch(d,T=>{T?e.nextTick(()=>{x()}):h()}),e.watch(c,()=>{m()});const b=(T="none")=>{o.disabled||(T!=="none"&&r.value==="none"&&(l.value=o.modelValue||Wf(o.lowerLimit,o.upperLimit,l.value)),r.value=T,t(T!=="none"?"opened":"closed"))};e.watchEffect(()=>{o.disabled&&(r.value="none")});const E=(T,D)=>{l.value=D,T==="year"?t("decadePageChanged",D):T==="month"?t("yearPageChanged",D):T==="day"&&t("monthPageChanged",D)},k=T=>{l.value=T,o.minimumView==="year"?(b("none"),t("update:modelValue",T)):r.value="month"},C=T=>{l.value=T,o.minimumView==="month"?(b("none"),t("update:modelValue",T)):r.value="day"},w=T=>{l.value=T,o.minimumView==="day"?(b("none"),t("update:modelValue",T)):r.value="time"},L=T=>{b("none"),t("update:modelValue",T)},z=()=>{o.clearable&&(b("none"),t("update:modelValue",null),l.value=o.startingViewDate)},N=()=>s.value=!0,B=()=>b(M.value),V=()=>{s.value=!1,b()},S=T=>{const D=T.keyCode?T.keyCode:T.which;if([27,13].includes(D)&&a.value.blur(),o.typeable){const W=ir(a.value.value,o.inputFormat);W&&c.value===wn(W,o.inputFormat)&&(c.value=a.value.value,t("update:modelValue",W))}},M=e.computed(()=>{const T=vn.indexOf(o.startingView),D=vn.indexOf(o.minimumView);return T<D?o.minimumView:o.startingView}),R=T=>Object.fromEntries(Object.entries(T??{}).filter(([D,Y])=>D.startsWith("--"))),q=e.computed(()=>o.weekDayNames?.length===7?o.weekDayNames:void 0);return{blur:V,focus:B,click:N,input:c,inputRef:a,pageDate:l,renderView:b,updatePageDate:E,selectYear:k,selectMonth:C,selectDay:w,selectTime:L,keyUp:S,normalizedWeekdayNames:q,viewShown:r,goBackFromTimepicker:()=>o.startingView==="time"&&o.minimumView==="time"?null:r.value="day",clearModelValue:z,initialView:M,log:T=>console.log(T),variables:R}}}),Yf={class:"v3dp__input_wrapper"},Xf=["readonly","placeholder","disabled","tabindex"],Zf={class:"v3dp__clearable"};function Jf(o,t,n,r,l,a){const s=e.resolveComponent("year-picker"),c=e.resolveComponent("month-picker"),i=e.resolveComponent("day-picker"),d=e.resolveComponent("time-picker");return e.openBlock(),e.createElementBlock("div",{class:"v3dp__datepicker",style:e.normalizeStyle(o.variables(o.$attrs.style))},[e.createElementVNode("div",Yf,[e.withDirectives(e.createElementVNode("input",e.mergeProps({type:"text",ref:"inputRef",readonly:!o.typeable,"onUpdate:modelValue":t[0]||(t[0]=u=>o.input=u)},o.$attrs,{placeholder:o.placeholder,disabled:o.disabled,tabindex:o.disabled?-1:0,onKeyup:t[1]||(t[1]=(...u)=>o.keyUp&&o.keyUp(...u)),onBlur:t[2]||(t[2]=(...u)=>o.blur&&o.blur(...u)),onFocus:t[3]||(t[3]=(...u)=>o.focus&&o.focus(...u)),onClick:t[4]||(t[4]=(...u)=>o.click&&o.click(...u))}),null,16,Xf),[[e.vModelText,o.input]]),e.withDirectives(e.createElementVNode("div",Zf,[e.renderSlot(o.$slots,"clear",{onClear:o.clearModelValue},()=>[e.createElementVNode("i",{onClick:t[5]||(t[5]=u=>o.clearModelValue())},"x")])],512),[[e.vShow,o.clearable&&o.modelValue]])]),e.withDirectives(e.createVNode(s,{pageDate:o.pageDate,"onUpdate:pageDate":t[6]||(t[6]=u=>o.updatePageDate("year",u)),selected:o.modelValue,lowerLimit:o.lowerLimit,upperLimit:o.upperLimit,onSelect:o.selectYear},null,8,["pageDate","selected","lowerLimit","upperLimit","onSelect"]),[[e.vShow,o.viewShown==="year"]]),e.withDirectives(e.createVNode(c,{pageDate:o.pageDate,"onUpdate:pageDate":t[7]||(t[7]=u=>o.updatePageDate("month",u)),selected:o.modelValue,onSelect:o.selectMonth,lowerLimit:o.lowerLimit,upperLimit:o.upperLimit,format:o.monthListFormat,onBack:t[8]||(t[8]=u=>o.viewShown="year")},null,8,["pageDate","selected","onSelect","lowerLimit","upperLimit","format"]),[[e.vShow,o.viewShown==="month"]]),e.withDirectives(e.createVNode(i,{pageDate:o.pageDate,"onUpdate:pageDate":t[9]||(t[9]=u=>o.updatePageDate("day",u)),selected:o.modelValue,weekStartsOn:o.weekStartsOn,lowerLimit:o.lowerLimit,upperLimit:o.upperLimit,headingFormat:o.dayPickerHeadingFormat,disabledDates:o.disabledDates,weekdayFormat:o.weekdayFormat,"allow-outside-interval":o.allowOutsideInterval,format:o.dayFormat,"custom-weekdays":o.normalizedWeekdayNames,onSelect:o.selectDay,onBack:t[10]||(t[10]=u=>o.viewShown="month")},null,8,["pageDate","selected","weekStartsOn","lowerLimit","upperLimit","headingFormat","disabledDates","weekdayFormat","allow-outside-interval","format","custom-weekdays","onSelect"]),[[e.vShow,o.viewShown==="day"]]),e.withDirectives(e.createVNode(d,{pageDate:o.pageDate,visible:o.viewShown==="time",selected:o.modelValue,disabledTime:o.disabledTime,onSelect:o.selectTime,onBack:o.goBackFromTimepicker},null,8,["pageDate","visible","selected","disabledTime","onSelect","onBack"]),[[e.vShow,o.viewShown==="time"]])],4)}const Qf=ye(Gf,[["render",Jf]]),em=ye(e.defineComponent({__name:"vs-input-date2",props:{clearable:{type:Boolean,default:!0},now:{type:Boolean},editable:{type:Boolean,default:!0},time:{type:Boolean},isInfinity:{type:Boolean},mode:{default:"date"},weekStart:{},dayNames:{},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},emits:["update:modelValue"],setup(o,{emit:t}){const n=o,r=t,{inputClass:l}=Oe(n.style),a=e.computed(()=>n.mode?n.mode:n.time?"datetime":"date"),s={date:"дд.мм.рррр",datetime:"дд.мм.рррр гг:хх",month:"мм.рррр",week:"рррр-тиждень",time:"гг:хх",year:"рррр"},c=e.computed(()=>n.placeholder||s[a.value]||""),i=e.computed(()=>["py-1.5 px-3 block w-full placeholder:text-[#767f8f] bg-white",l.value,n.customClass,{"!border-red-600":n.error}]),d=e.computed(()=>!n.modelValue&&n.now?new Date:null),u=e.computed({get:()=>C(n.modelValue??d.value,a.value)||void 0,set:D=>r("update:modelValue",w(D,a.value))}),f=["Пн","Вт","Ср","Чт","Пт","Сб","Нд"],h=e.computed(()=>{if(n.dayNames?.length)return n.dayNames.length===7?n.dayNames:f}),y=e.computed(()=>{const D=n.weekStart,Y=typeof D=="string"?Number(D):D;return Y===void 0||Number.isNaN(Y)?1:Math.min(6,Math.max(0,Y))}),m=e.computed(()=>{switch(a.value){case"time":return{startingView:"time",minimumView:"time"};case"month":return{startingView:"month",minimumView:"month"};case"year":return{startingView:"year",minimumView:"year"};case"datetime":return{startingView:"day",minimumView:"time"};default:return{startingView:"day",minimumView:"day"}}}),x={date:"dd.MM.yyyy",datetime:"dd.MM.yyyy HH:mm",month:"MM.yyyy",time:"HH:mm",week:"dd.MM.yyyy",year:"yyyy"},b=e.computed(()=>x[a.value]||"dd.MM.yyyy"),E=e.computed(()=>({"--vdp-selected-bg-color":n.style?.primaryColor||"#2563eb","--vdp-hover-bg-color":n.style?.primaryColor||"#2563eb","--vdp-selected-color":"#ffffff","--vdp-hover-color":"#ffffff","--vdp-border-radius":n.style?.size==="sm"?"6px":"8px","--vdp-elem-font-size":n.style?.size==="sm"?"0.75em":"0.85em"})),k=e.ref(!1);e.watch(()=>n.modelValue,D=>{D?k.value=!0:n.now||(k.value=!1)},{immediate:!0}),e.watchEffect(()=>{n.now&&!n.modelValue&&!k.value&&(r("update:modelValue",w(new Date,a.value)),k.value=!0)});function C(D,Y){if(!D)return null;if(D instanceof Date&&!Number.isNaN(D.getTime()))return D;if(typeof D!="string")return null;switch(Y){case"datetime":return B(D);case"time":return M(D);case"month":return V(D);case"year":return S(D);case"week":return R(D);default:return N(D)}}function w(D,Y){if(!D)return null;const W=D instanceof Date?D:C(D,Y);if(!W)return null;switch(Y){case"datetime":return`${L(W)}T${z(W)}`;case"time":return z(W);case"month":return`${W.getFullYear()}-${T(W.getMonth()+1)}`;case"year":return`${W.getFullYear()}`;case"week":{const{year:Z,week:le}=q(W);return`${Z}-W${T(le)}`}default:return L(W)}}function L(D){return`${D.getFullYear()}-${T(D.getMonth()+1)}-${T(D.getDate())}`}function z(D){return`${T(D.getHours())}:${T(D.getMinutes())}`}function N(D){const Y=D.split("-");if(Y.length<3)return null;const[W,Z,le]=Y.map(Number);return!W||!Z||!le?null:new Date(W,Z-1,le)}function B(D){const Y=D.includes("T")?D:D.replace(" ","T"),W=new Date(Y);return Number.isNaN(W.getTime())?null:W}function V(D){const[Y,W]=D.split("-").map(Number);return!Y||Number.isNaN(W)?null:new Date(Y,(W||1)-1,1)}function S(D){const Y=Number(D);return Y?new Date(Y,0,1):null}function M(D){const Y=D.match(/^(\d{1,2}):(\d{2})$/);if(!Y)return null;const[,W,Z]=Y,le=new Date;return le.setHours(Number(W),Number(Z),0,0),le}function R(D){const Y=D.match(/^(\d{4})-W(\d{2})$/);if(!Y)return null;const[,W,Z]=Y,le=Number(Z);return $(Number(W),le)}function q(D){const Y=new Date(Date.UTC(D.getFullYear(),D.getMonth(),D.getDate())),W=Y.getUTCDay()||7;Y.setUTCDate(Y.getUTCDate()+4-W);const Z=new Date(Date.UTC(Y.getUTCFullYear(),0,1)),le=Math.ceil(((Y.getTime()-Z.getTime())/864e5+1)/7);return{year:Y.getUTCFullYear(),week:le}}function $(D,Y){if(!D||!Y)return null;const W=new Date(D,0,1+(Y-1)*7),Z=W.getDay(),le=W;return Z<=4?le.setDate(W.getDate()-W.getDay()+1):le.setDate(W.getDate()+8-W.getDay()),le}function T(D){return String(D).padStart(2,"0")}return(D,Y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vs-date-picker",n.customClass]),style:e.normalizeStyle(E.value)},[e.createVNode(Qf,{modelValue:u.value,"onUpdate:modelValue":Y[0]||(Y[0]=W=>u.value=W),placeholder:c.value,disabled:n.disabled,clearable:n.clearable,typeable:n.editable,"week-day-names":h.value,"week-starts-on":y.value,"starting-view":m.value.startingView,"minimum-view":m.value.minimumView,"input-format":b.value,name:n.name,class:e.normalizeClass(i.value)},null,8,["modelValue","placeholder","disabled","clearable","typeable","week-day-names","week-starts-on","starting-view","minimum-view","input-format","name","class"])],6))}}),[["__scopeId","data-v-97661afe"]]),tm={form:{richtext:{paragraph:"Paragraph",heading1:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",heading4:"Heading 4",heading5:"Heading 5",heading6:"Heading 6",createTable:"Create Table",addColumn:"Add Column",addRow:"Add Row",deleteColumn:"Delete Column",deleteRow:"Delete Row",deleteTable:"Delete Table",mergeCells:"Merge Cells",splitCells:"Split Cells",linkTitle:"Enter Link",link:"Link",linkUrl:"Enter URL",editLink:"Edit Link",openLink:"Open Link",removeLink:"Remove Link",openInNewTab:"Open in New Tab",editor:"Editor",html:"HTML",markdown:"Markdown",create:"Create",update:"Update",cancel:"Cancel"}}},nm={form:{richtext:{paragraph:"Звичайний текст",heading1:"Заголовок 1",heading2:"Заголовок 2",heading3:"Заголовок 3",heading4:"Заголовок 4",heading5:"Заголовок 5",heading6:"Заголовок 6",createTable:"Створити таблицю",addColumn:"Додати колонку",addRow:"Додати рядок",deleteColumn:"Видалити колонку",deleteRow:"Видалити рядок",deleteTable:"Видалити таблицю",mergeCells:"Об'єднати комірки",splitCells:"Розділити комірки",linkTitle:"Додати посилання",link:"Посилання",linkUrl:"Введіть URL",editLink:"Редагувати посилання",openLink:"Відкрити посилання",removeLink:"Видалити посилання",openInNewTab:"Відкривати в новій вкладці",editor:"Редактор",html:"HTML",markdown:"Markdown",create:"Створити",update:"Оновити",cancel:"Скасувати"}}},dr=tm.form.richtext,ur=nm.form.richtext,Zn={en:{form:{richtext:dr}},uk:{form:{richtext:ur}}},pr=(o={mode:"edit",schema:null})=>new Promise(t=>{const{close:n}=pe.modal({title:o.mode==="add"?"Додати":"Редагувати",template:"",visible:!0,size:"medium",closeClickBack:!0,content:er,contentProps:{...o,onClose:()=>{t(null),n()},onSave:r=>{t(r),n()}}})});nt.install=function(t){t.component("VForm",nt),Object.assign(t.config.globalProperties,{$form:pr}),t.provide("form",pr),window.v3plugin||(window.v3plugin={})};function xt(o){return typeof o=="string"||o instanceof String}function fr(o){var t;return typeof o=="object"&&o!=null&&(o==null||(t=o.constructor)==null?void 0:t.name)==="Object"}function mr(o,t){return Array.isArray(t)?mr(o,(n,r)=>t.includes(r)):Object.entries(o).reduce((n,r)=>{let[l,a]=r;return t(a,l)&&(n[l]=a),n},{})}const ce={NONE:"NONE",LEFT:"LEFT",FORCE_LEFT:"FORCE_LEFT",RIGHT:"RIGHT",FORCE_RIGHT:"FORCE_RIGHT"};function hr(o){switch(o){case ce.LEFT:return ce.FORCE_LEFT;case ce.RIGHT:return ce.FORCE_RIGHT;default:return o}}function Jn(o){return o.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function En(o,t){if(t===o)return!0;const n=Array.isArray(t),r=Array.isArray(o);let l;if(n&&r){if(t.length!=o.length)return!1;for(l=0;l<t.length;l++)if(!En(t[l],o[l]))return!1;return!0}if(n!=r)return!1;if(t&&o&&typeof t=="object"&&typeof o=="object"){const a=t instanceof Date,s=o instanceof Date;if(a&&s)return t.getTime()==o.getTime();if(a!=s)return!1;const c=t instanceof RegExp,i=o instanceof RegExp;if(c&&i)return t.toString()==o.toString();if(c!=i)return!1;const d=Object.keys(t);for(l=0;l<d.length;l++)if(!Object.prototype.hasOwnProperty.call(o,d[l]))return!1;for(l=0;l<d.length;l++)if(!En(o[d[l]],t[d[l]]))return!1;return!0}else if(t&&o&&typeof t=="function"&&typeof o=="function")return t.toString()===o.toString();return!1}class om{constructor(t){for(Object.assign(this,t);this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start;if(this.insertedCount)for(;this.value.slice(this.cursorPos)!==this.oldValue.slice(this.oldSelection.end);)this.value.length-this.cursorPos<this.oldValue.length-this.oldSelection.end?++this.oldSelection.end:++this.cursorPos}get startChangePos(){return Math.min(this.cursorPos,this.oldSelection.start)}get insertedCount(){return this.cursorPos-this.startChangePos}get inserted(){return this.value.substr(this.startChangePos,this.insertedCount)}get removedCount(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}get removed(){return this.oldValue.substr(this.startChangePos,this.removedCount)}get head(){return this.value.substring(0,this.startChangePos)}get tail(){return this.value.substring(this.startChangePos+this.insertedCount)}get removeDirection(){return!this.removedCount||this.insertedCount?ce.NONE:(this.oldSelection.end===this.cursorPos||this.oldSelection.start===this.cursorPos)&&this.oldSelection.end===this.oldSelection.start?ce.RIGHT:ce.LEFT}}function he(o,t){return new he.InputMask(o,t)}function gr(o){if(o==null)throw new Error("mask property should be defined");return o instanceof RegExp?he.MaskedRegExp:xt(o)?he.MaskedPattern:o===Date?he.MaskedDate:o===Number?he.MaskedNumber:Array.isArray(o)||o===Array?he.MaskedDynamic:he.Masked&&o.prototype instanceof he.Masked?o:he.Masked&&o instanceof he.Masked?o.constructor:o instanceof Function?he.MaskedFunction:(console.warn("Mask not found for mask",o),he.Masked)}function Lt(o){if(!o)throw new Error("Options in not defined");if(he.Masked){if(o.prototype instanceof he.Masked)return{mask:o};const{mask:t=void 0,...n}=o instanceof he.Masked?{mask:o}:fr(o)&&o.mask instanceof he.Masked?o:{};if(t){const r=t.mask;return{...mr(t,(l,a)=>!a.startsWith("_")),mask:t.constructor,_mask:r,...n}}}return fr(o)?{...o}:{mask:o}}function it(o){if(he.Masked&&o instanceof he.Masked)return o;const t=Lt(o),n=gr(t.mask);if(!n)throw new Error("Masked class is not found for provided mask "+t.mask+", appropriate module needs to be imported manually before creating mask.");return t.mask===n&&delete t.mask,t._mask&&(t.mask=t._mask,delete t._mask),new n(t)}he.createMask=it;class Bn{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch{}return t??this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch{}return t??this.value.length}select(t,n){if(!(t==null||n==null||t===this.selectionStart&&n===this.selectionEnd))try{this._unsafeSelect(t,n)}catch{}}get isActive(){return!1}}he.MaskElement=Bn;const yr=90,rm=89;class Kt extends Bn{constructor(t){super(),this.input=t,this._onKeydown=this._onKeydown.bind(this),this._onInput=this._onInput.bind(this),this._onBeforeinput=this._onBeforeinput.bind(this),this._onCompositionEnd=this._onCompositionEnd.bind(this)}get rootElement(){var t,n,r;return(t=(n=(r=this.input).getRootNode)==null?void 0:n.call(r))!=null?t:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(t){this.input.addEventListener("keydown",this._onKeydown),this.input.addEventListener("input",this._onInput),this.input.addEventListener("beforeinput",this._onBeforeinput),this.input.addEventListener("compositionend",this._onCompositionEnd),this.input.addEventListener("drop",t.drop),this.input.addEventListener("click",t.click),this.input.addEventListener("focus",t.focus),this.input.addEventListener("blur",t.commit),this._handlers=t}_onKeydown(t){if(this._handlers.redo&&(t.keyCode===yr&&t.shiftKey&&(t.metaKey||t.ctrlKey)||t.keyCode===rm&&t.ctrlKey))return t.preventDefault(),this._handlers.redo(t);if(this._handlers.undo&&t.keyCode===yr&&(t.metaKey||t.ctrlKey))return t.preventDefault(),this._handlers.undo(t);t.isComposing||this._handlers.selectionChange(t)}_onBeforeinput(t){if(t.inputType==="historyUndo"&&this._handlers.undo)return t.preventDefault(),this._handlers.undo(t);if(t.inputType==="historyRedo"&&this._handlers.redo)return t.preventDefault(),this._handlers.redo(t)}_onCompositionEnd(t){this._handlers.input(t)}_onInput(t){t.isComposing||this._handlers.input(t)}unbindEvents(){this.input.removeEventListener("keydown",this._onKeydown),this.input.removeEventListener("input",this._onInput),this.input.removeEventListener("beforeinput",this._onBeforeinput),this.input.removeEventListener("compositionend",this._onCompositionEnd),this.input.removeEventListener("drop",this._handlers.drop),this.input.removeEventListener("click",this._handlers.click),this.input.removeEventListener("focus",this._handlers.focus),this.input.removeEventListener("blur",this._handlers.commit),this._handlers={}}}he.HTMLMaskElement=Kt;class br extends Kt{constructor(t){super(t),this.input=t}get _unsafeSelectionStart(){return this.input.selectionStart!=null?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,n){this.input.setSelectionRange(t,n)}get value(){return this.input.value}set value(t){this.input.value=t}}he.HTMLMaskElement=Kt;class Qn extends Kt{get _unsafeSelectionStart(){const t=this.rootElement,n=t.getSelection&&t.getSelection(),r=n&&n.anchorOffset,l=n&&n.focusOffset;return l==null||r==null||r<l?r:l}get _unsafeSelectionEnd(){const t=this.rootElement,n=t.getSelection&&t.getSelection(),r=n&&n.anchorOffset,l=n&&n.focusOffset;return l==null||r==null||r>l?r:l}_unsafeSelect(t,n){if(!this.rootElement.createRange)return;const r=this.rootElement.createRange();r.setStart(this.input.firstChild||this.input,t),r.setEnd(this.input.lastChild||this.input,n);const l=this.rootElement,a=l.getSelection&&l.getSelection();a&&(a.removeAllRanges(),a.addRange(r))}get value(){return this.input.textContent||""}set value(t){this.input.textContent=t}}he.HTMLContenteditableMaskElement=Qn;class _n{constructor(){this.states=[],this.currentIndex=0}get currentState(){return this.states[this.currentIndex]}get isEmpty(){return this.states.length===0}push(t){this.currentIndex<this.states.length-1&&(this.states.length=this.currentIndex+1),this.states.push(t),this.states.length>_n.MAX_LENGTH&&this.states.shift(),this.currentIndex=this.states.length-1}go(t){return this.currentIndex=Math.min(Math.max(this.currentIndex+t,0),this.states.length-1),this.currentState}undo(){return this.go(-1)}redo(){return this.go(1)}clear(){this.states.length=0,this.currentIndex=0}}_n.MAX_LENGTH=100;class kr{constructor(t,n){this.el=t instanceof Bn?t:t.isContentEditable&&t.tagName!=="INPUT"&&t.tagName!=="TEXTAREA"?new Qn(t):new br(t),this.masked=it(n),this._listeners={},this._value="",this._unmaskedValue="",this._rawInputValue="",this.history=new _n,this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this._onUndo=this._onUndo.bind(this),this._onRedo=this._onRedo.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}maskEquals(t){var n;return t==null||((n=this.masked)==null?void 0:n.maskEquals(t))}get mask(){return this.masked.mask}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof he.Masked)&&this.masked.constructor===gr(t)){this.masked.updateOptions({mask:t});return}const n=t instanceof he.Masked?t:it({mask:t});n.unmaskedValue=this.masked.unmaskedValue,this.masked=n}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl("auto"))}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl("auto"))}get rawInputValue(){return this._rawInputValue}set rawInputValue(t){this.rawInputValue!==t&&(this.masked.rawInputValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl("auto"))}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange,undo:this._onUndo,redo:this._onRedo})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t,n){const r=this._listeners[t];r&&r.forEach(l=>l(n))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){!this.el||!this.el.isActive||(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value,this._unmaskedValue=this.masked.unmaskedValue,this._rawInputValue=this.masked.rawInputValue}updateControl(t){const n=this.masked.unmaskedValue,r=this.masked.value,l=this.masked.rawInputValue,a=this.displayValue,s=this.unmaskedValue!==n||this.value!==r||this._rawInputValue!==l;this._unmaskedValue=n,this._value=r,this._rawInputValue=l,this.el.value!==a&&(this.el.value=a),t==="auto"?this.alignCursor():t!=null&&(this.cursorPos=t),s&&this._fireChangeEvents(),!this._historyChanging&&(s||this.history.isEmpty)&&this.history.push({unmaskedValue:n,selection:{start:this.selectionStart,end:this.cursorPos}})}updateOptions(t){const{mask:n,...r}=t,l=!this.maskEquals(n),a=this.masked.optionsIsChanged(r);l&&(this.mask=n),a&&this.masked.updateOptions(r),(l||a)&&this.updateControl()}updateCursor(t){t!=null&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout(()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())},10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,ce.LEFT))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,n){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(n),this}off(t,n){if(!this._listeners[t])return this;if(!n)return delete this._listeners[t],this;const r=this._listeners[t].indexOf(n);return r>=0&&this._listeners[t].splice(r,1),this}_onInput(t){this._inputEvent=t,this._abortUpdateCursor();const n=new om({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),r=this.masked.rawInputValue,l=this.masked.splice(n.startChangePos,n.removed.length,n.inserted,n.removeDirection,{input:!0,raw:!0}).offset,a=r===this.masked.rawInputValue?n.removeDirection:ce.NONE;let s=this.masked.nearestInputPos(n.startChangePos+l,a);a!==ce.NONE&&(s=this.masked.nearestInputPos(s,ce.NONE)),this.updateControl(s),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}_onUndo(){this._applyHistoryState(this.history.undo())}_onRedo(){this._applyHistoryState(this.history.redo())}_applyHistoryState(t){t&&(this._historyChanging=!0,this.unmaskedValue=t.unmaskedValue,this.el.select(t.selection.start,t.selection.end),this._saveSelection(),this._historyChanging=!1)}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}}he.InputMask=kr;class ke{static normalize(t){return Array.isArray(t)?t:[t,new ke]}constructor(t){Object.assign(this,{inserted:"",rawInserted:"",tailShift:0,skip:!1},t)}aggregate(t){return this.inserted+=t.inserted,this.rawInserted+=t.rawInserted,this.tailShift+=t.tailShift,this.skip=this.skip||t.skip,this}get offset(){return this.tailShift+this.inserted.length}get consumed(){return!!this.rawInserted||this.skip}equals(t){return this.inserted===t.inserted&&this.tailShift===t.tailShift&&this.rawInserted===t.rawInserted&&this.skip===t.skip}}he.ChangeDetails=ke;class ct{constructor(t,n,r){t===void 0&&(t=""),n===void 0&&(n=0),this.value=t,this.from=n,this.stop=r}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||t!=null&&this.from>=t)return"";const n=this.value[0];return this.value=this.value.slice(1),n}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class Ie{constructor(t){this._value="",this._update({...Ie.DEFAULTS,...t}),this._initialized=!0}updateOptions(t){this.optionsIsChanged(t)&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t,{input:!0})}resolve(t,n){n===void 0&&(n={input:!0}),this.reset(),this.append(t,n,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(t){this.resolve(t,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(t){this.format?this.value=this.format(t,this):this.unmaskedValue=String(t)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(t){this.resolve(t,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,n){return t}totalInputPositions(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),Math.min(this.displayValue.length,n-t)}extractInput(t,n,r){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),this.displayValue.slice(t,n)}extractTail(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),new ct(this.extractInput(t,n),t)}appendTail(t){return xt(t)&&(t=new ct(String(t))),t.appendTo(this)}_appendCharRaw(t,n){return t?(this._value+=t,new ke({inserted:t,rawInserted:t})):new ke}_appendChar(t,n,r){n===void 0&&(n={});const l=this.state;let a;if([t,a]=this.doPrepareChar(t,n),t&&(a=a.aggregate(this._appendCharRaw(t,n)),!a.rawInserted&&this.autofix==="pad")){const s=this.state;this.state=l;let c=this.pad(n);const i=this._appendCharRaw(t,n);c=c.aggregate(i),i.rawInserted||c.equals(a)?a=c:this.state=s}if(a.inserted){let s,c=this.doValidate(n)!==!1;if(c&&r!=null){const i=this.state;if(this.overwrite===!0){s=r.state;for(let u=0;u<a.rawInserted.length;++u)r.unshift(this.displayValue.length-a.tailShift)}let d=this.appendTail(r);if(c=d.rawInserted.length===r.toString().length,!(c&&d.inserted)&&this.overwrite==="shift"){this.state=i,s=r.state;for(let u=0;u<a.rawInserted.length;++u)r.shift();d=this.appendTail(r),c=d.rawInserted.length===r.toString().length}c&&d.inserted&&(this.state=i)}c||(a=new ke,this.state=l,r&&s&&(r.state=s))}return a}_appendPlaceholder(){return new ke}_appendEager(){return new ke}append(t,n,r){if(!xt(t))throw new Error("value should be string");const l=xt(r)?new ct(String(r)):r;n!=null&&n.tail&&(n._beforeTailState=this.state);let a;[t,a]=this.doPrepare(t,n);for(let s=0;s<t.length;++s){const c=this._appendChar(t[s],n,l);if(!c.rawInserted&&!this.doSkipInvalid(t[s],n,l))break;a.aggregate(c)}return(this.eager===!0||this.eager==="append")&&n!=null&&n.input&&t&&a.aggregate(this._appendEager()),l!=null&&(a.tailShift+=this.appendTail(l).tailShift),a}remove(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),this._value=this.displayValue.slice(0,t)+this.displayValue.slice(n),new ke}withValueRefresh(t){if(this._refreshing||!this._initialized)return t();this._refreshing=!0;const n=this.rawInputValue,r=this.value,l=t();return this.rawInputValue=n,this.value&&this.value!==r&&r.indexOf(this.value)===0&&(this.append(r.slice(this.displayValue.length),{},""),this.doCommit()),delete this._refreshing,l}runIsolated(t){if(this._isolated||!this._initialized)return t(this);this._isolated=!0;const n=this.state,r=t(this);return this.state=n,delete this._isolated,r}doSkipInvalid(t,n,r){return!!this.skipInvalid}doPrepare(t,n){return n===void 0&&(n={}),ke.normalize(this.prepare?this.prepare(t,this,n):t)}doPrepareChar(t,n){return n===void 0&&(n={}),ke.normalize(this.prepareChar?this.prepareChar(t,this,n):t)}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}splice(t,n,r,l,a){r===void 0&&(r=""),l===void 0&&(l=ce.NONE),a===void 0&&(a={input:!0});const s=t+n,c=this.extractTail(s),i=this.eager===!0||this.eager==="remove";let d;i&&(l=hr(l),d=this.extractInput(0,s,{raw:!0}));let u=t;const f=new ke;if(l!==ce.NONE&&(u=this.nearestInputPos(t,n>1&&t!==0&&!i?ce.NONE:l),f.tailShift=u-t),f.aggregate(this.remove(u)),i&&l!==ce.NONE&&d===this.rawInputValue)if(l===ce.FORCE_LEFT){let h;for(;d===this.rawInputValue&&(h=this.displayValue.length);)f.aggregate(new ke({tailShift:-1})).aggregate(this.remove(h-1))}else l===ce.FORCE_RIGHT&&c.unshift();return f.aggregate(this.append(r,a,c))}maskEquals(t){return this.mask===t}optionsIsChanged(t){return!En(this,t)}typedValueEquals(t){const n=this.typedValue;return t===n||Ie.EMPTY_VALUES.includes(t)&&Ie.EMPTY_VALUES.includes(n)||(this.format?this.format(t,this)===this.format(this.typedValue,this):!1)}pad(t){return new ke}}Ie.DEFAULTS={skipInvalid:!0},Ie.EMPTY_VALUES=[void 0,null,""],he.Masked=Ie;class wt{constructor(t,n){t===void 0&&(t=[]),n===void 0&&(n=0),this.chunks=t,this.from=n}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;t=xt(t)?new ct(String(t)):t;const n=this.chunks[this.chunks.length-1],r=n&&(n.stop===t.stop||t.stop==null)&&t.from===n.from+n.toString().length;if(t instanceof ct)r?n.extend(t.toString()):this.chunks.push(t);else if(t instanceof wt){if(t.stop==null){let l;for(;t.chunks.length&&t.chunks[0].stop==null;)l=t.chunks.shift(),l.from+=t.from,this.extend(l)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof he.MaskedPattern))return new ct(this.toString()).appendTo(t);const n=new ke;for(let r=0;r<this.chunks.length;++r){const l=this.chunks[r],a=t._mapPosToBlock(t.displayValue.length),s=l.stop;let c;if(s!=null&&(!a||a.index<=s)&&((l instanceof wt||t._stops.indexOf(s)>=0)&&n.aggregate(t._appendPlaceholder(s)),c=l instanceof wt&&t._blocks[s]),c){const i=c.appendTail(l);n.aggregate(i);const d=l.toString().slice(i.rawInserted.length);d&&n.aggregate(t.append(d,{tail:!0}))}else n.aggregate(t.append(l.toString(),{tail:!0}))}return n}get state(){return{chunks:this.chunks.map(t=>t.state),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:n,...r}=t;Object.assign(this,r),this.chunks=n.map(l=>{const a="chunks"in l?new wt:new ct;return a.state=l,a})}unshift(t){if(!this.chunks.length||t!=null&&this.from>=t)return"";const n=t!=null?t-this.from:t;let r=0;for(;r<this.chunks.length;){const l=this.chunks[r],a=l.unshift(n);if(l.toString()){if(!a)break;++r}else this.chunks.splice(r,1);if(a)return a}return""}shift(){if(!this.chunks.length)return"";let t=this.chunks.length-1;for(;0<=t;){const n=this.chunks[t],r=n.shift();if(n.toString()){if(!r)break;--t}else this.chunks.splice(t,1);if(r)return r}return""}}class lm{constructor(t,n){this.masked=t,this._log=[];const{offset:r,index:l}=t._mapPosToBlock(n)||(n<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=r,this.index=l,this.ok=!1}get block(){return this.masked._blocks[this.index]}get pos(){return this.masked._blockStartPos(this.index)+this.offset}get state(){return{index:this.index,offset:this.offset,ok:this.ok}}set state(t){Object.assign(this,t)}pushState(){this._log.push(this.state)}popState(){const t=this._log.pop();return t&&(this.state=t),t}bindBlock(){this.block||(this.index<0&&(this.index=0,this.offset=0),this.index>=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.displayValue.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=((n=this.block)==null?void 0:n.displayValue.length)||0){var n;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(t())return this.ok=!0;return this.ok=!1}pushLeftBeforeFilled(){return this._pushLeft(()=>{if(!(this.block.isFixed||!this.block.value)&&(this.offset=this.block.nearestInputPos(this.offset,ce.FORCE_LEFT),this.offset!==0))return!0})}pushLeftBeforeInput(){return this._pushLeft(()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,ce.LEFT),!0})}pushLeftBeforeRequired(){return this._pushLeft(()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,ce.LEFT),!0})}pushRightBeforeFilled(){return this._pushRight(()=>{if(!(this.block.isFixed||!this.block.value)&&(this.offset=this.block.nearestInputPos(this.offset,ce.FORCE_RIGHT),this.offset!==this.block.value.length))return!0})}pushRightBeforeInput(){return this._pushRight(()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,ce.NONE),!0})}pushRightBeforeRequired(){return this._pushRight(()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,ce.NONE),!0})}}class eo{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get rawInputValue(){return this._isRawInput?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(t,n){return t===void 0&&(t=0),n===void 0&&(n=this._value.length),this._value=this._value.slice(0,t)+this._value.slice(n),this._value||(this._isRawInput=!1),new ke}nearestInputPos(t,n){n===void 0&&(n=ce.NONE);const r=0,l=this._value.length;switch(n){case ce.LEFT:case ce.FORCE_LEFT:return r;case ce.NONE:case ce.RIGHT:case ce.FORCE_RIGHT:default:return l}}totalInputPositions(t,n){return t===void 0&&(t=0),n===void 0&&(n=this._value.length),this._isRawInput?n-t:0}extractInput(t,n,r){return t===void 0&&(t=0),n===void 0&&(n=this._value.length),r===void 0&&(r={}),r.raw&&this._isRawInput&&this._value.slice(t,n)||""}get isComplete(){return!0}get isFilled(){return!!this._value}_appendChar(t,n){if(n===void 0&&(n={}),this.isFilled)return new ke;const r=this.eager===!0||this.eager==="append",a=this.char===t&&(this.isUnmasking||n.input||n.raw)&&(!n.raw||!r)&&!n.tail,s=new ke({inserted:this.char,rawInserted:a?this.char:""});return this._value=this.char,this._isRawInput=a&&(n.raw||n.input),s}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new ke;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return new ct("")}appendTail(t){return xt(t)&&(t=new ct(String(t))),t.appendTo(this)}append(t,n,r){const l=this._appendChar(t[0],n);return r!=null&&(l.tailShift+=this.appendTail(r).tailShift),l}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value,this._isRawInput=!!t._rawInputValue}pad(t){return this._appendPlaceholder()}}class Wt{constructor(t){const{parent:n,isOptional:r,placeholderChar:l,displayChar:a,lazy:s,eager:c,...i}=t;this.masked=it(i),Object.assign(this,{parent:n,isOptional:r,placeholderChar:l,displayChar:a,lazy:s,eager:c})}reset(){this.isFilled=!1,this.masked.reset()}remove(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.value.length),t===0&&n>=1?(this.isFilled=!1,this.masked.remove(t,n)):new ke}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get rawInputValue(){return this.masked.rawInputValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return!!this.masked.value||this.isOptional}_appendChar(t,n){if(n===void 0&&(n={}),this.isFilled)return new ke;const r=this.masked.state;let l=this.masked._appendChar(t,this.currentMaskFlags(n));return l.inserted&&this.doValidate(n)===!1&&(l=new ke,this.masked.state=r),!l.inserted&&!this.isOptional&&!this.lazy&&!n.input&&(l.inserted=this.placeholderChar),l.skip=!l.inserted&&!this.isOptional,this.isFilled=!!l.inserted,l}append(t,n,r){return this.masked.append(t,this.currentMaskFlags(n),r)}_appendPlaceholder(){return this.isFilled||this.isOptional?new ke:(this.isFilled=!0,new ke({inserted:this.placeholderChar}))}_appendEager(){return new ke}extractTail(t,n){return this.masked.extractTail(t,n)}appendTail(t){return this.masked.appendTail(t)}extractInput(t,n,r){return t===void 0&&(t=0),n===void 0&&(n=this.value.length),this.masked.extractInput(t,n,r)}nearestInputPos(t,n){n===void 0&&(n=ce.NONE);const r=0,l=this.value.length,a=Math.min(Math.max(t,r),l);switch(n){case ce.LEFT:case ce.FORCE_LEFT:return this.isComplete?a:r;case ce.RIGHT:case ce.FORCE_RIGHT:return this.isComplete?a:l;case ce.NONE:default:return a}}totalInputPositions(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.value.length),this.value.slice(t,n).length}doValidate(t){return this.masked.doValidate(this.currentMaskFlags(t))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(t)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}currentMaskFlags(t){var n;return{...t,_beforeTailState:(t==null||(n=t._beforeTailState)==null?void 0:n.masked)||t?._beforeTailState}}pad(t){return new ke}}Wt.DEFAULT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./};class xr extends Ie{updateOptions(t){super.updateOptions(t)}_update(t){const n=t.mask;n&&(t.validate=r=>r.search(n)>=0),super._update(t)}}he.MaskedRegExp=xr;class Re extends Ie{constructor(t){super({...Re.DEFAULTS,...t,definitions:Object.assign({},Wt.DEFAULT_DEFINITIONS,t?.definitions)})}updateOptions(t){super.updateOptions(t)}_update(t){t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const n=this.mask;if(!n||!t)return;let r=!1,l=!1;for(let a=0;a<n.length;++a){if(this.blocks){const d=n.slice(a),u=Object.keys(this.blocks).filter(h=>d.indexOf(h)===0);u.sort((h,y)=>y.length-h.length);const f=u[0];if(f){const{expose:h,repeat:y,...m}=Lt(this.blocks[f]),x={lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,autofix:this.autofix,...m,repeat:y,parent:this},b=y!=null?new he.RepeatBlock(x):it(x);b&&(this._blocks.push(b),h&&(this.exposeBlock=b),this._maskedBlocks[f]||(this._maskedBlocks[f]=[]),this._maskedBlocks[f].push(this._blocks.length-1)),a+=f.length-1;continue}}let s=n[a],c=s in t;if(s===Re.STOP_CHAR){this._stops.push(this._blocks.length);continue}if(s==="{"||s==="}"){r=!r;continue}if(s==="["||s==="]"){l=!l;continue}if(s===Re.ESCAPE_CHAR){if(++a,s=n[a],!s)break;c=!1}const i=c?new Wt({isOptional:l,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...Lt(t[s]),parent:this}):new eo({char:s,eager:this.eager,isUnmasking:r});this._blocks.push(i)}}get state(){return{...super.state,_blocks:this._blocks.map(t=>t.state)}}set state(t){if(!t){this.reset();return}const{_blocks:n,...r}=t;this._blocks.forEach((l,a)=>l.state=n[a]),super.state=r}reset(){super.reset(),this._blocks.forEach(t=>t.reset())}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every(t=>t.isComplete)}get isFilled(){return this._blocks.every(t=>t.isFilled)}get isFixed(){return this._blocks.every(t=>t.isFixed)}get isOptional(){return this._blocks.every(t=>t.isOptional)}doCommit(){this._blocks.forEach(t=>t.doCommit()),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce((t,n)=>t+=n.unmaskedValue,"")}set unmaskedValue(t){if(this.exposeBlock){const n=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=t,this.appendTail(n),this.doCommit()}else super.unmaskedValue=t}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce((t,n)=>t+=n.value,"")}set value(t){if(this.exposeBlock){const n=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=t,this.appendTail(n),this.doCommit()}else super.value=t}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(t){if(this.exposeBlock){const n=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=t,this.appendTail(n),this.doCommit()}else super.typedValue=t}get displayValue(){return this._blocks.reduce((t,n)=>t+=n.displayValue,"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const n=new ke;let r=(t=this._mapPosToBlock(this.displayValue.length))==null?void 0:t.index;if(r==null)return n;this._blocks[r].isFilled&&++r;for(let l=r;l<this._blocks.length;++l){const a=this._blocks[l]._appendEager();if(!a.inserted)break;n.aggregate(a)}return n}_appendCharRaw(t,n){n===void 0&&(n={});const r=this._mapPosToBlock(this.displayValue.length),l=new ke;if(!r)return l;for(let s=r.index,c;c=this._blocks[s];++s){var a;const i=c._appendChar(t,{...n,_beforeTailState:(a=n._beforeTailState)==null||(a=a._blocks)==null?void 0:a[s]});if(l.aggregate(i),i.consumed)break}return l}extractTail(t,n){t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length);const r=new wt;return t===n||this._forEachBlocksInRange(t,n,(l,a,s,c)=>{const i=l.extractTail(s,c);i.stop=this._findStopBefore(a),i.from=this._blockStartPos(a),i instanceof wt&&(i.blockIndex=a),r.extend(i)}),r}extractInput(t,n,r){if(t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),r===void 0&&(r={}),t===n)return"";let l="";return this._forEachBlocksInRange(t,n,(a,s,c,i)=>{l+=a.extractInput(c,i,r)}),l}_findStopBefore(t){let n;for(let r=0;r<this._stops.length;++r){const l=this._stops[r];if(l<=t)n=l;else break}return n}_appendPlaceholder(t){const n=new ke;if(this.lazy&&t==null)return n;const r=this._mapPosToBlock(this.displayValue.length);if(!r)return n;const l=r.index,a=t??this._blocks.length;return this._blocks.slice(l,a).forEach(s=>{if(!s.lazy||t!=null){var c;n.aggregate(s._appendPlaceholder((c=s._blocks)==null?void 0:c.length))}}),n}_mapPosToBlock(t){let n="";for(let r=0;r<this._blocks.length;++r){const l=this._blocks[r],a=n.length;if(n+=l.displayValue,t<=n.length)return{index:r,offset:t-a}}}_blockStartPos(t){return this._blocks.slice(0,t).reduce((n,r)=>n+=r.displayValue.length,0)}_forEachBlocksInRange(t,n,r){n===void 0&&(n=this.displayValue.length);const l=this._mapPosToBlock(t);if(l){const a=this._mapPosToBlock(n),s=a&&l.index===a.index,c=l.offset,i=a&&s?a.offset:this._blocks[l.index].displayValue.length;if(r(this._blocks[l.index],l.index,c,i),a&&!s){for(let d=l.index+1;d<a.index;++d)r(this._blocks[d],d,0,this._blocks[d].displayValue.length);r(this._blocks[a.index],a.index,0,a.offset)}}}remove(t,n){t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length);const r=super.remove(t,n);return this._forEachBlocksInRange(t,n,(l,a,s,c)=>{r.aggregate(l.remove(s,c))}),r}nearestInputPos(t,n){if(n===void 0&&(n=ce.NONE),!this._blocks.length)return 0;const r=new lm(this,t);if(n===ce.NONE)return r.pushRightBeforeInput()||(r.popState(),r.pushLeftBeforeInput())?r.pos:this.displayValue.length;if(n===ce.LEFT||n===ce.FORCE_LEFT){if(n===ce.LEFT){if(r.pushRightBeforeFilled(),r.ok&&r.pos===t)return t;r.popState()}if(r.pushLeftBeforeInput(),r.pushLeftBeforeRequired(),r.pushLeftBeforeFilled(),n===ce.LEFT){if(r.pushRightBeforeInput(),r.pushRightBeforeRequired(),r.ok&&r.pos<=t||(r.popState(),r.ok&&r.pos<=t))return r.pos;r.popState()}return r.ok?r.pos:n===ce.FORCE_LEFT?0:(r.popState(),r.ok||(r.popState(),r.ok)?r.pos:0)}return n===ce.RIGHT||n===ce.FORCE_RIGHT?(r.pushRightBeforeInput(),r.pushRightBeforeRequired(),r.pushRightBeforeFilled()?r.pos:n===ce.FORCE_RIGHT?this.displayValue.length:(r.popState(),r.ok||(r.popState(),r.ok)?r.pos:this.nearestInputPos(t,ce.LEFT))):t}totalInputPositions(t,n){t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length);let r=0;return this._forEachBlocksInRange(t,n,(l,a,s,c)=>{r+=l.totalInputPositions(s,c)}),r}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const n=this._maskedBlocks[t];return n?n.map(r=>this._blocks[r]):[]}pad(t){const n=new ke;return this._forEachBlocksInRange(0,this.displayValue.length,r=>n.aggregate(r.pad(t))),n}}Re.DEFAULTS={...Ie.DEFAULTS,lazy:!0,placeholderChar:"_"},Re.STOP_CHAR="`",Re.ESCAPE_CHAR="\\",Re.InputDefinition=Wt,Re.FixedDefinition=eo,he.MaskedPattern=Re;class Gt extends Re{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:n=this.to||0,from:r=this.from||0,maxLength:l=this.maxLength||0,autofix:a=this.autofix,...s}=t;this.to=n,this.from=r,this.maxLength=Math.max(String(n).length,l),this.autofix=a;const c=String(this.from).padStart(this.maxLength,"0"),i=String(this.to).padStart(this.maxLength,"0");let d=0;for(;d<i.length&&i[d]===c[d];)++d;s.mask=i.slice(0,d).replace(/0/g,"\\0")+"0".repeat(this.maxLength-d),super._update(s)}get isComplete(){return super.isComplete&&!!this.value}boundaries(t){let n="",r="";const[,l,a]=t.match(/^(\D*)(\d*)(\D*)/)||[];return a&&(n="0".repeat(l.length)+a,r="9".repeat(l.length)+a),n=n.padEnd(this.maxLength,"0"),r=r.padEnd(this.maxLength,"9"),[n,r]}doPrepareChar(t,n){n===void 0&&(n={});let r;return[t,r]=super.doPrepareChar(t.replace(/\D/g,""),n),t||(r.skip=!this.isComplete),[t,r]}_appendCharRaw(t,n){if(n===void 0&&(n={}),!this.autofix||this.value.length+1>this.maxLength)return super._appendCharRaw(t,n);const r=String(this.from).padStart(this.maxLength,"0"),l=String(this.to).padStart(this.maxLength,"0"),[a,s]=this.boundaries(this.value+t);return Number(s)<this.from?super._appendCharRaw(r[this.value.length],n):Number(a)>this.to?!n.tail&&this.autofix==="pad"&&this.value.length+1<this.maxLength?super._appendCharRaw(r[this.value.length],n).aggregate(this._appendCharRaw(t,n)):super._appendCharRaw(l[this.value.length],n):super._appendCharRaw(t,n)}doValidate(t){const n=this.value;if(n.search(/[^0]/)===-1&&n.length<=this._matchFrom)return!0;const[l,a]=this.boundaries(n);return this.from<=Number(a)&&Number(l)<=this.to&&super.doValidate(t)}pad(t){const n=new ke;if(this.value.length===this.maxLength)return n;const r=this.value,l=this.maxLength-this.value.length;if(l){this.reset();for(let a=0;a<l;++a)n.aggregate(super._appendCharRaw("0",t));r.split("").forEach(a=>this._appendCharRaw(a))}return n}}he.MaskedRange=Gt;const am="d{.}`m{.}`Y";class dt extends Re{static extractPatternOptions(t){const{mask:n,pattern:r,...l}=t;return{...l,mask:xt(n)?n:r}}constructor(t){super(dt.extractPatternOptions({...dt.DEFAULTS,...t}))}updateOptions(t){super.updateOptions(t)}_update(t){const{mask:n,pattern:r,blocks:l,...a}={...dt.DEFAULTS,...t},s=Object.assign({},dt.GET_DEFAULT_BLOCKS());t.min&&(s.Y.from=t.min.getFullYear()),t.max&&(s.Y.to=t.max.getFullYear()),t.min&&t.max&&s.Y.from===s.Y.to&&(s.m.from=t.min.getMonth()+1,s.m.to=t.max.getMonth()+1,s.m.from===s.m.to&&(s.d.from=t.min.getDate(),s.d.to=t.max.getDate())),Object.assign(s,this.blocks,l),super._update({...a,mask:xt(n)?n:r,blocks:s})}doValidate(t){const n=this.date;return super.doValidate(t)&&(!this.isComplete||this.isDateExist(this.value)&&n!=null&&(this.min==null||this.min<=n)&&(this.max==null||n<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}optionsIsChanged(t){return super.optionsIsChanged(dt.extractPatternOptions(t))}}dt.GET_DEFAULT_BLOCKS=()=>({d:{mask:Gt,from:1,to:31,maxLength:2},m:{mask:Gt,from:1,to:12,maxLength:2},Y:{mask:Gt,from:1900,to:9999}}),dt.DEFAULTS={...Re.DEFAULTS,mask:Date,pattern:am,format:(o,t)=>{if(!o)return"";const n=String(o.getDate()).padStart(2,"0"),r=String(o.getMonth()+1).padStart(2,"0"),l=o.getFullYear();return[n,r,l].join(".")},parse:(o,t)=>{const[n,r,l]=o.split(".").map(Number);return new Date(l,r-1,n)}},he.MaskedDate=dt;class Yt extends Ie{constructor(t){super({...Yt.DEFAULTS,...t}),this.currentMask=void 0}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),"mask"in t&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(t.mask)?t.mask.map(n=>{const{expose:r,...l}=Lt(n),a=it({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...l});return r&&(this.exposeMask=a),a}):[])}_appendCharRaw(t,n){n===void 0&&(n={});const r=this._applyDispatch(t,n);return this.currentMask&&r.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(n))),r}_applyDispatch(t,n,r){t===void 0&&(t=""),n===void 0&&(n={}),r===void 0&&(r="");const l=n.tail&&n._beforeTailState!=null?n._beforeTailState._value:this.value,a=this.rawInputValue,s=n.tail&&n._beforeTailState!=null?n._beforeTailState._rawInputValue:a,c=a.slice(s.length),i=this.currentMask,d=new ke,u=i?.state;return this.currentMask=this.doDispatch(t,{...n},r),this.currentMask&&(this.currentMask!==i?(this.currentMask.reset(),s&&(this.currentMask.append(s,{raw:!0}),d.tailShift=this.currentMask.value.length-l.length),c&&(d.tailShift+=this.currentMask.append(c,{raw:!0,tail:!0}).tailShift)):u&&(this.currentMask.state=u)),d}_appendPlaceholder(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const n=new ke;return t&&n.aggregate(this._applyDispatch("",{},t)),n.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var n,r;return{...t,_beforeTailState:((n=t._beforeTailState)==null?void 0:n.currentMaskRef)===this.currentMask&&((r=t._beforeTailState)==null?void 0:r.currentMask)||t._beforeTailState}}doDispatch(t,n,r){return n===void 0&&(n={}),r===void 0&&(r=""),this.dispatch(t,this,n,r)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t,n){n===void 0&&(n={});let[r,l]=super.doPrepare(t,n);if(this.currentMask){let a;[r,a]=super.doPrepare(r,this.currentMaskFlags(n)),l=l.aggregate(a)}return[r,l]}doPrepareChar(t,n){n===void 0&&(n={});let[r,l]=super.doPrepareChar(t,n);if(this.currentMask){let a;[r,a]=super.doPrepareChar(r,this.currentMaskFlags(n)),l=l.aggregate(a)}return[r,l]}reset(){var t;(t=this.currentMask)==null||t.reset(),this.compiledMasks.forEach(n=>n.reset())}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(t){this.exposeMask?(this.exposeMask.value=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=t}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){this.exposeMask?(this.exposeMask.unmaskedValue=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=t}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(t){if(this.exposeMask){this.exposeMask.typedValue=t,this.currentMask=this.exposeMask,this._applyDispatch();return}let n=String(t);this.currentMask&&(this.currentMask.typedValue=t,n=this.currentMask.unmaskedValue),this.unmaskedValue=n}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return!!((t=this.currentMask)!=null&&t.isComplete)}get isFilled(){var t;return!!((t=this.currentMask)!=null&&t.isFilled)}remove(t,n){const r=new ke;return this.currentMask&&r.aggregate(this.currentMask.remove(t,n)).aggregate(this._applyDispatch()),r}get state(){var t;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map(n=>n.state),currentMaskRef:this.currentMask,currentMask:(t=this.currentMask)==null?void 0:t.state}}set state(t){const{compiledMasks:n,currentMaskRef:r,currentMask:l,...a}=t;n&&this.compiledMasks.forEach((s,c)=>s.state=n[c]),r!=null&&(this.currentMask=r,this.currentMask.state=l),super.state=a}extractInput(t,n,r){return this.currentMask?this.currentMask.extractInput(t,n,r):""}extractTail(t,n){return this.currentMask?this.currentMask.extractTail(t,n):super.extractTail(t,n)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(t,n){return this.currentMask?this.currentMask.nearestInputPos(t,n):super.nearestInputPos(t,n)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(t){this._overwrite=t}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(t){this._eager=t}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(t){this._skipInvalid=t}get autofix(){return this.currentMask?this.currentMask.autofix:this._autofix}set autofix(t){this._autofix=t}maskEquals(t){return Array.isArray(t)?this.compiledMasks.every((n,r)=>{if(!t[r])return;const{mask:l,...a}=t[r];return En(n,a)&&n.maskEquals(l)}):super.maskEquals(t)}typedValueEquals(t){var n;return!!((n=this.currentMask)!=null&&n.typedValueEquals(t))}}Yt.DEFAULTS={...Ie.DEFAULTS,dispatch:(o,t,n,r)=>{if(!t.compiledMasks.length)return;const l=t.rawInputValue,a=t.compiledMasks.map((s,c)=>{const i=t.currentMask===s,d=i?s.displayValue.length:s.nearestInputPos(s.displayValue.length,ce.FORCE_LEFT);return s.rawInputValue!==l?(s.reset(),s.append(l,{raw:!0})):i||s.remove(d),s.append(o,t.currentMaskFlags(n)),s.appendTail(r),{index:c,weight:s.rawInputValue.length,totalInputPositions:s.totalInputPositions(0,Math.max(d,s.nearestInputPos(s.displayValue.length,ce.FORCE_LEFT)))}});return a.sort((s,c)=>c.weight-s.weight||c.totalInputPositions-s.totalInputPositions),t.compiledMasks[a[0].index]}},he.MaskedDynamic=Yt;class Xt extends Re{constructor(t){super({...Xt.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){const{enum:n,...r}=t;if(n){const l=n.map(c=>c.length),a=Math.min(...l),s=Math.max(...l)-a;r.mask="*".repeat(a),s&&(r.mask+="["+"*".repeat(s)+"]"),this.enum=n}super._update(r)}_appendCharRaw(t,n){n===void 0&&(n={});const r=Math.min(this.nearestInputPos(0,ce.FORCE_RIGHT),this.value.length),l=this.enum.filter(a=>this.matchValue(a,this.unmaskedValue+t,r));if(l.length){l.length===1&&this._forEachBlocksInRange(0,this.value.length,(s,c)=>{const i=l[0][c];c>=this.value.length||i===s.value||(s.reset(),s._appendChar(i,n))});const a=super._appendCharRaw(l[0][this.value.length],n);return l.length===1&&l[0].slice(this.unmaskedValue.length).split("").forEach(s=>a.aggregate(super._appendCharRaw(s))),a}return new ke({skip:!this.isComplete})}extractTail(t,n){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),new ct("",t)}remove(t,n){if(t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),t===n)return new ke;const r=Math.min(super.nearestInputPos(0,ce.FORCE_RIGHT),this.value.length);let l;for(l=t;l>=0&&!(this.enum.filter(c=>this.matchValue(c,this.value.slice(r,l),r)).length>1);--l);const a=super.remove(l,n);return a.tailShift+=l-t,a}get isComplete(){return this.enum.indexOf(this.value)>=0}}Xt.DEFAULTS={...Re.DEFAULTS,matchValue:(o,t,n)=>o.indexOf(t,n)===n},he.MaskedEnum=Xt;class wr extends Ie{updateOptions(t){super.updateOptions(t)}_update(t){super._update({...t,validate:t.mask})}}he.MaskedFunction=wr;var Cr;class ze extends Ie{constructor(t){super({...ze.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){const t="^"+(this.allowNegative?"[+|\\-]?":""),n="\\d*",r=(this.scale?"("+Jn(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(t+n+r),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(Jn).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(Jn(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const n=t.split(this.radix);return n[0]=n[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),n.join(this.radix)}doPrepareChar(t,n){n===void 0&&(n={});const[r,l]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(n.input&&n.raw||!n.input&&!n.raw)?t.replace(this._mapToRadixRegExp,this.radix):t),n);return t&&!r&&(l.skip=!0),r&&!this.allowPositive&&!this.value&&r!=="-"&&l.aggregate(this._appendChar("-")),[r,l]}_separatorsCount(t,n){n===void 0&&(n=!1);let r=0;for(let l=0;l<t;++l)this._value.indexOf(this.thousandsSeparator,l)===l&&(++r,n&&(t+=this.thousandsSeparator.length));return r}_separatorsCountFromSlice(t){return t===void 0&&(t=this._value),this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(t,n,r){return t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),[t,n]=this._adjustRangeWithSeparators(t,n),this._removeThousandsSeparators(super.extractInput(t,n,r))}_appendCharRaw(t,n){n===void 0&&(n={});const r=n.tail&&n._beforeTailState?n._beforeTailState._value:this._value,l=this._separatorsCountFromSlice(r);this._value=this._removeThousandsSeparators(this.value);const a=this._value;this._value+=t;const s=this.number;let c=!isNaN(s),i=!1;if(c){let h;this.min!=null&&this.min<0&&this.number<this.min&&(h=this.min),this.max!=null&&this.max>0&&this.number>this.max&&(h=this.max),h!=null&&(this.autofix?(this._value=this.format(h,this).replace(ze.UNMASKED_RADIX,this.radix),i||(i=a===this._value&&!n.tail)):c=!1),c&&(c=!!this._value.match(this._numberRegExp))}let d;c?d=new ke({inserted:this._value.slice(a.length),rawInserted:i?"":t,skip:i}):(this._value=a,d=new ke),this._value=this._insertThousandsSeparators(this._value);const u=n.tail&&n._beforeTailState?n._beforeTailState._value:this._value,f=this._separatorsCountFromSlice(u);return d.tailShift+=(f-l)*this.thousandsSeparator.length,d}_findSeparatorAround(t){if(this.thousandsSeparator){const n=t-this.thousandsSeparator.length+1,r=this.value.indexOf(this.thousandsSeparator,n);if(r<=t)return r}return-1}_adjustRangeWithSeparators(t,n){const r=this._findSeparatorAround(t);r>=0&&(t=r);const l=this._findSeparatorAround(n);return l>=0&&(n=l+this.thousandsSeparator.length),[t,n]}remove(t,n){t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length),[t,n]=this._adjustRangeWithSeparators(t,n);const r=this.value.slice(0,t),l=this.value.slice(n),a=this._separatorsCount(r.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(r+l));const s=this._separatorsCountFromSlice(r);return new ke({tailShift:(s-a)*this.thousandsSeparator.length})}nearestInputPos(t,n){if(!this.thousandsSeparator)return t;switch(n){case ce.NONE:case ce.LEFT:case ce.FORCE_LEFT:{const r=this._findSeparatorAround(t-1);if(r>=0){const l=r+this.thousandsSeparator.length;if(t<l||this.value.length<=l||n===ce.FORCE_LEFT)return r}break}case ce.RIGHT:case ce.FORCE_RIGHT:{const r=this._findSeparatorAround(t);if(r>=0)return r+this.thousandsSeparator.length}}return t}doCommit(){if(this.value){const t=this.number;let n=t;this.min!=null&&(n=Math.max(n,this.min)),this.max!=null&&(n=Math.min(n,this.max)),n!==t&&(this.unmaskedValue=this.format(n,this));let r=this.value;this.normalizeZeros&&(r=this._normalizeZeros(r)),this.padFractionalZeros&&this.scale>0&&(r=this._padFractionalZeros(r)),this._value=r}super.doCommit()}_normalizeZeros(t){const n=this._removeThousandsSeparators(t).split(this.radix);return n[0]=n[0].replace(/^(\D*)(0*)(\d*)/,(r,l,a,s)=>l+s),t.length&&!/\d$/.test(n[0])&&(n[0]=n[0]+"0"),n.length>1&&(n[1]=n[1].replace(/0*$/,""),n[1].length||(n.length=1)),this._insertThousandsSeparators(n.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const n=t.split(this.radix);return n.length<2&&n.push(""),n[1]=n[1].padEnd(this.scale,"0"),n.join(this.radix)}doSkipInvalid(t,n,r){n===void 0&&(n={});const l=this.scale===0&&t!==this.thousandsSeparator&&(t===this.radix||t===ze.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,n,r)&&!l}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,ze.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(t){this.rawInputValue=this.format(t,this).replace(ze.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return this.min!=null&&this.min<0||this.max!=null&&this.max<0}get allowPositive(){return this.min!=null&&this.min>0||this.max!=null&&this.max>0}typedValueEquals(t){return(super.typedValueEquals(t)||ze.EMPTY_VALUES.includes(t)&&ze.EMPTY_VALUES.includes(this.typedValue))&&!(t===0&&this.value==="")}}Cr=ze,ze.UNMASKED_RADIX=".",ze.EMPTY_VALUES=[...Ie.EMPTY_VALUES,0],ze.DEFAULTS={...Ie.DEFAULTS,mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[Cr.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:o=>o.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},he.MaskedNumber=ze;const Vn={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function to(o,t,n){t===void 0&&(t=Vn.MASKED),n===void 0&&(n=Vn.MASKED);const r=it(o);return l=>r.runIsolated(a=>(a[t]=l,a[n]))}function vr(o,t,n,r){return to(t,n,r)(o)}he.PIPE_TYPE=Vn,he.createPipe=to,he.pipe=vr;class Er extends Re{get repeatFrom(){var t;return(t=Array.isArray(this.repeat)?this.repeat[0]:this.repeat===1/0?0:this.repeat)!=null?t:0}get repeatTo(){var t;return(t=Array.isArray(this.repeat)?this.repeat[1]:this.repeat)!=null?t:1/0}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){var n,r,l;const{repeat:a,...s}=Lt(t);this._blockOpts=Object.assign({},this._blockOpts,s);const c=it(this._blockOpts);this.repeat=(n=(r=a??c.repeat)!=null?r:this.repeat)!=null?n:1/0,super._update({mask:"m".repeat(Math.max(this.repeatTo===1/0&&((l=this._blocks)==null?void 0:l.length)||0,this.repeatFrom)),blocks:{m:c},eager:c.eager,overwrite:c.overwrite,skipInvalid:c.skipInvalid,lazy:c.lazy,placeholderChar:c.placeholderChar,displayChar:c.displayChar})}_allocateBlock(t){if(t<this._blocks.length)return this._blocks[t];if(this.repeatTo===1/0||this._blocks.length<this.repeatTo)return this._blocks.push(it(this._blockOpts)),this.mask+="m",this._blocks[this._blocks.length-1]}_appendCharRaw(t,n){n===void 0&&(n={});const r=new ke;for(let i=(l=(a=this._mapPosToBlock(this.displayValue.length))==null?void 0:a.index)!=null?l:Math.max(this._blocks.length-1,0),d,u;d=(s=this._blocks[i])!=null?s:u=!u&&this._allocateBlock(i);++i){var l,a,s,c;const f=d._appendChar(t,{...n,_beforeTailState:(c=n._beforeTailState)==null||(c=c._blocks)==null?void 0:c[i]});if(f.skip&&u){this._blocks.pop(),this.mask=this.mask.slice(1);break}if(r.aggregate(f),f.consumed)break}return r}_trimEmptyTail(t,n){var r,l;t===void 0&&(t=0);const a=Math.max(((r=this._mapPosToBlock(t))==null?void 0:r.index)||0,this.repeatFrom,0);let s;n!=null&&(s=(l=this._mapPosToBlock(n))==null?void 0:l.index),s==null&&(s=this._blocks.length-1);let c=0;for(let i=s;a<=i&&!this._blocks[i].unmaskedValue;--i,++c);c&&(this._blocks.splice(s-c+1,c),this.mask=this.mask.slice(c))}reset(){super.reset(),this._trimEmptyTail()}remove(t,n){t===void 0&&(t=0),n===void 0&&(n=this.displayValue.length);const r=super.remove(t,n);return this._trimEmptyTail(t,n),r}totalInputPositions(t,n){return t===void 0&&(t=0),n==null&&this.repeatTo===1/0?1/0:super.totalInputPositions(t,n)}get state(){return super.state}set state(t){this._blocks.length=t._blocks.length,this.mask=this.mask.slice(0,this._blocks.length),super.state=t}}he.RepeatBlock=Er;try{globalThis.IMask=he}catch{}const no=Object.freeze(Object.defineProperty({__proto__:null,ChangeDetails:ke,ChunksTailDetails:wt,DIRECTION:ce,HTMLContenteditableMaskElement:Qn,HTMLInputMaskElement:br,HTMLMaskElement:Kt,InputMask:kr,MaskElement:Bn,Masked:Ie,MaskedDate:dt,MaskedDynamic:Yt,MaskedEnum:Xt,MaskedFunction:wr,MaskedNumber:ze,MaskedPattern:Re,MaskedRange:Gt,MaskedRegExp:xr,PIPE_TYPE:Vn,PatternFixedDefinition:eo,PatternInputDefinition:Wt,RepeatBlock:Er,createMask:it,createPipe:to,default:he,forceDirection:hr,normalizeOpts:Lt,pipe:vr},Symbol.toStringTag,{value:"Module"})),sm=async o=>{try{const t=new FormData;return t.append("unique","true"),t.append("file",o),(await(await fetch("/file/upload/uploads?id=&form=&table=",{method:"POST",body:t})).json())?.result}catch(t){console.error(t)}},im=async(o,t,n)=>{const r=t.clipboardData?.items;if(r){const l=t.clipboardData?.getData("text/html"),a=t.clipboardData?.getData("text/plain");if(l){const{state:s,dispatch:c}=o,{tr:i}=s,d=n.fromSchema(o.state.schema),u=new DOMParser().parseFromString(l,"text/html").body,f=d.parse(u),h=i.replaceSelectionWith(f);return c(h),t.preventDefault(),!0}if(a){const{state:s,dispatch:c}=o,{tr:i}=s,d=i.insertText(a,s.selection.from,s.selection.to);return c(d),t.preventDefault(),!0}for(let s=0;s<r.length;s++){const c=r[s];if(c.type.startsWith("image/")){const i=c.getAsFile();if(i){const d=await sm(i),{schema:u}=o.state,f=u.nodes.image.create({src:d?.file_path}),h=o.state.tr.replaceSelectionWith(f);return o.dispatch(h),t.preventDefault(),!0}}}}return!1},cm="https://esm.sh",He="3.7.2",Br="3.7.2",dm=`?deps=@tiptap/core@${He},@tiptap/pm@${Br}`,qe=o=>`${cm}/${o}${dm}`,Ke={core:qe(`@tiptap/core@${He}`),starterKit:qe(`@tiptap/starter-kit@${He}`),textStyle:qe(`@tiptap/extension-text-style@${He}`),table:qe(`@tiptap/extension-table@${He}`),highlight:qe(`@tiptap/extension-highlight@${He}`),subscript:qe(`@tiptap/extension-subscript@${He}`),superscript:qe(`@tiptap/extension-superscript@${He}`),link:qe(`@tiptap/extension-link@${He}`),image:qe(`@tiptap/extension-image@${He}`),textAlign:qe(`@tiptap/extension-text-align@${He}`),heading:qe(`@tiptap/extension-heading@${He}`),paragraph:qe(`@tiptap/extension-paragraph@${He}`),pmModel:qe(`@tiptap/pm@${Br}/model`)},Zt="__vs_form_tiptap_loader__",We=o=>import(o),De=(o,t)=>o?.[t]||o?.default?.[t]||o?.default?.default?.[t]||o?.default||o,_r={1:"font-weight:700; font-size:30px;",2:"font-weight:700; font-size:26px;",3:"font-weight:700; font-size:22px;",4:"font-weight:700; font-size:18px;",5:"font-weight:500; font-size:16px;",6:"font-weight:400; font-size:14px;"},um=o=>o.extend({addOptions(){return{...this.parent?.(),levels:[1,2,3,4,5,6]}}}).extend({addAttributes(){return{...this.parent?.(),level:{default:1,renderHTML:t=>{const n=t.level||1;return{class:`heading-level-${n}`,style:_r[n]||_r[1]}}}}}}),pm=o=>o.configure({HTMLAttributes:{style:"min-height: 1rem;"}}),fm=(o,t,n,r,l)=>{const a=t.extend({renderHTML({HTMLAttributes:s}){return["div",{style:"overflow-x: auto;"},["table",s,0]]},parseHTML(){return[{tag:"div.table-wrapper table",priority:100},{tag:"table"}]}});return o.extend({addExtensions(){return[a.configure({HTMLAttributes:{class:"editor-content"},resizable:!0}),n,r,l]}})},mm=o=>o.extend({addAttributes(){return{...this.parent?.(),fontFamily:{default:null,parseHTML:t=>t.style.fontFamily?.replace(/['"]/g,""),renderHTML:t=>t.fontFamily?{style:`font-family: ${t.fontFamily}`}:{}},fontSize:{default:null,parseHTML:t=>t.style.fontSize?.replace(/['"]/g,""),renderHTML:t=>t.fontSize?{style:`font-size: ${t.fontSize}`}:{}},color:{default:null,parseHTML:t=>t.style.color?.replace(/['"]/g,""),renderHTML:t=>t.color?{style:`color: ${t.color}`}:{}},backgroundColor:{default:null,parseHTML:t=>t.style.backgroundColor?.replace(/['"]/g,""),renderHTML:t=>!t.backgroundColor||t.backgroundColor==="transparent"?{}:{style:`background-color: ${t.backgroundColor}`}}}},addCommands(){return{setFontFamily:t=>({chain:n})=>n().setMark("textStyle",{fontFamily:t}).run(),unsetFontFamily:()=>({chain:t})=>t().setMark("textStyle",{fontFamily:null}).removeEmptyTextStyle().run(),setFontSize:t=>({chain:n})=>n().setMark("textStyle",{fontSize:t}).run(),unsetFontSize:()=>({chain:t})=>t().setMark("textStyle",{fontSize:null}).removeEmptyTextStyle().run(),setColor:t=>({chain:n})=>n().setMark("textStyle",{color:t}).run(),unsetColor:()=>({chain:t})=>t().setMark("textStyle",{color:null}).removeEmptyTextStyle().run(),setBackgroundColor:t=>({chain:n})=>n().setMark("textStyle",{backgroundColor:t}).run(),unsetBackgroundColor:()=>({chain:t})=>t().setMark("textStyle",{backgroundColor:null}).removeEmptyTextStyle().run()}}}),hm=o=>o.create({name:"iframe",group:"block",inline:!1,atom:!0,selectable:!0,addAttributes(){return{src:{default:null},width:{default:"100%"},height:{default:"280"},frameborder:{default:"0"},allow:{default:null},allowfullscreen:{default:null},referrerpolicy:{default:null},loading:{default:null},class:{default:null},title:{default:null},style:{default:null}}},parseHTML(){return[{tag:"iframe"}]},renderHTML({HTMLAttributes:t}){return["iframe",t]}});async function gm(){if(typeof window>"u")return null;const o=window;return o[Zt]||(o[Zt]=Promise.all([We(Ke.core),We(Ke.starterKit),We(Ke.textStyle),We(Ke.table),We(Ke.highlight),We(Ke.subscript),We(Ke.superscript),We(Ke.link),We(Ke.image),We(Ke.textAlign),We(Ke.heading),We(Ke.paragraph),We(Ke.pmModel)]).then(([t,n,r,l,a,s,c,i,d,u,f,h,y])=>{const m=De(t,"Editor"),x=De(t,"Node"),b=De(t,"Extension"),E=De(n,"StarterKit"),k=De(r,"TextStyle"),C=De(l,"TableKit"),w=De(l,"Table"),L=De(l,"TableRow"),z=De(l,"TableCell"),N=De(l,"TableHeader"),B=De(a,"Highlight"),V=De(s,"Subscript"),S=De(c,"Superscript"),M=De(i,"Link"),R=De(d,"Image"),q=De(u,"TextAlign"),$=De(f,"Heading"),T=De(h,"Paragraph"),D=De(y,"DOMParser");if(!m||!x||!E||!k||!C||!w||!L||!z||!N||!B||!V||!S||!M||!R||!q||!$||!T||!D)throw new Error("Failed to resolve one or more Tiptap modules");return{Editor:m,Extension:b,ProseMirrorDOMParser:D,StarterKit:E,ExtendedTextStyle:mm(k),Highlight:B,Subscript:V,Superscript:S,Link:M,Image:R,TextAlign:q,CustomHeading:um($),CustomParagraph:pm(T),CustomTableKit:fm(C,w,L,z,N),Iframe:hm(x)}}).catch(t=>{throw delete o[Zt],t})),o[Zt]}function ym(o){let t=!1;const n=e.shallowRef(null),r=e.ref(!1),l=e.ref(""),a=async(d,u="")=>{if(!d)return null;r.value=!0,l.value="";try{const f=await gm();if(!f)return null;const h=new f.Editor({element:d,content:u,extensions:[f.StarterKit.configure({history:{depth:100,newGroupDelay:500},code:{HTMLAttributes:{class:"editor-code"}},codeBlock:{HTMLAttributes:{class:"editor-codeblock"}},paragraph:!1,heading:!1,link:!1}),f.Superscript,f.Subscript,f.ExtendedTextStyle,f.CustomParagraph,f.CustomHeading,f.Highlight,f.Image.configure({inline:!0,allowBase64:!0,HTMLAttributes:{class:"editor-image"}}),f.TextAlign.configure({types:["heading","paragraph"]}),f.Link.configure({HTMLAttributes:{class:"editor-link"},openOnClick:!1,autolink:!0}),f.CustomTableKit,f.Iframe],editorProps:{handlePaste:(y,m)=>im(y,m,f.ProseMirrorDOMParser),handleKeyDown:(y,m)=>{if(m.key==="Tab"){const x=y.state,{$anchor:b}=x.selection;let E=!1;for(let k=b.depth;k>0;k--){const C=b.node(k);if(C&&(C.type.name==="bulletList"||C.type.name==="orderedList")){E=!0;break}}return E?!1:(m.preventDefault(),!0)}return!1}}});return n.value=e.markRaw(h),h}catch(f){return l.value="Failed to load rich text editor dependencies.",console.error("Failed to initialize rich text editor",f),null}finally{r.value=!1}},s=e.computed(()=>n.value||null);return e.watch(n,d=>{d&&n.value.on("update",u=>{if(!t){t=!0;const f=u.editor.getHTML();o.modelValue,setTimeout(()=>{t=!1},10)}})}),{editor:n,editorInstance:s,focusEditor:()=>{n.value&&!n.value.isFocused&&n.value.commands.focus()},createEditor:a,destroyEditor:()=>{n.value&&(n.value.destroy(),n.value=null)},isLoading:r,loadError:l}}function bm(o,t,n,{toEditorContent:r,toSourceContent:l}={}){const a=e.ref(!1),s=e.ref(""),c=e.ref(null);return{isHtmlMode:a,htmlContent:s,htmlTextarea:c,toggleHtmlMode:async u=>{if(a.value=u,u)o.value&&(s.value=l?await l(o.value.getHTML(),t):o.value.getHTML()),e.nextTick(()=>{c.value&&c.value.focus?.()});else if(o.value){const f=r?await r(s.value,t):s.value;o.value.commands.setContent(f,!0),e.nextTick(()=>{o.value?.commands?.focus?.()})}},onHtmlInput:u=>{s.value=u,n&&n("update:modelValue",u)}}}function km(){const o=e.ref(!1);return{isFullscreen:o,toggleFullscreen:()=>{o.value=!o.value}}}const Ct=o=>o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),Jt=o=>{let t=Ct(o||"");return t=t.replace(/!\[([^\]]*)]\(([^)\s]+)(?:\s+"([^"]+)")?\)/g,(n,r,l,a)=>{const s=a?` title="${Ct(a)}"`:"";return`<img src="${Ct(l)}" alt="${Ct(r)}"${s}>`}),t=t.replace(/\[([^\]]+)]\(([^)\s]+)(?:\s+"([^"]+)")?\)/g,(n,r,l,a)=>{const s=a?` title="${Ct(a)}"`:"";return`<a href="${Ct(l)}"${s} target="_blank" rel="noopener noreferrer">${r}</a>`}),t=t.replace(/`([^`]+)`/g,"<code>$1</code>"),t=t.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),t=t.replace(/__([^_]+)__/g,"<strong>$1</strong>"),t=t.replace(/~~([^~]+)~~/g,"<del>$1</del>"),t=t.replace(/\*([^*\n]+)\*/g,"<em>$1</em>"),t=t.replace(/_([^_\n]+)_/g,"<em>$1</em>"),t},Qt=o=>/^\s*\d+\.\s+/.test(o),oo=o=>/^\s*[-*+]\s+/.test(o),Vr=o=>/^\s*[-*+]\s+\[[ xX]\]\s+/.test(o),ro=o=>/^\s*>\s?/.test(o),lo=o=>/^\s*\|?(?:\s*:?-{3,}:?\s*\|)+\s*:?-{3,}:?\s*\|?\s*$/.test(o),Sr=o=>o.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(t=>Jt(t.trim())),xm=(o,t)=>{const n=o[t],r=o[t+1];if(!n||!r||!n.includes("|")||!lo(r))return null;const l=Sr(n),a=[];let s=t+2;for(;s<o.length&&o[s].includes("|")&&o[s].trim()!=="";){const d=Sr(o[s]);a.push(`<tr>${d.map(u=>`<td>${u}</td>`).join("")}</tr>`),s+=1}const c=`<thead><tr>${l.map(d=>`<th>${d}</th>`).join("")}</tr></thead>`,i=a.length?`<tbody>${a.join("")}</tbody>`:"";return{html:`<table>${c}${i}</table>`,nextIndex:s}},wm=(o,t)=>{const n=Qt(o[t]),r=n?"ol":"ul",l=[];let a=t;for(;a<o.length;){const s=o[a];if(s.trim()===""||!(n?Qt(s):(oo(s)||Vr(s))&&!Qt(s)))break;const i=s.match(/^\s*[-*+]\s+\[([ xX])\]\s+(.*)$/);if(i){const d=i[1].toLowerCase()==="x";l.push(`<li><input type="checkbox" disabled${d?" checked":""}> ${Jt(i[2])}</li>`)}else{const d=s.replace(/^\s*(?:[-*+]|\d+\.)\s+/,"");l.push(`<li>${Jt(d)}</li>`)}a+=1}return{html:`<${r}>${l.join("")}</${r}>`,nextIndex:a}},Cm=(o,t)=>{const r=o[t].replace(/^```/,"").trim(),l=[];let a=t+1;for(;a<o.length&&!o[a].startsWith("```");)l.push(o[a]),a+=1;return{html:`<pre><code${r?` class="language-${Ct(r)}"`:""}>${Ct(l.join(`
|