@opengis/form 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function(Se,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("vue"),require("@opengis/core"),require("lucide-vue-next")):typeof define=="function"&&define.amd?define(["exports","vue","@opengis/core","lucide-vue-next"],s):(Se=typeof globalThis<"u"?globalThis:Se||self,s(Se.FormBuilder={},Se.Vue,Se.OpenGISCore,Se.lucide))})(this,function(Se,s,ke,Y){"use strict";function Us(n,e,t){if(!Array.isArray(t)||!t.length)return null;const r=String(n?.preset??n?.renderer??"").trim().toLowerCase();if(r){const o=t.find(i=>String(i.id).trim().toLowerCase()===r);if(o)return o}return t.find(o=>typeof o.match=="function"&&o.match(n,e))??null}function Tu(n,e,t){return!!Us(n,e,t)}const Ws=6,An=8,Bu=s.defineComponent({__name:"vs-info-tooltip",props:{text:{}},setup(n){const e=n,t=s.ref(!1),r=s.ref(null),o=s.ref(null),i=s.ref({top:"0px",left:"0px",visibility:"hidden"});let l=null;const a=()=>typeof window<"u";function c(m,g){if(!a())return null;const y=window.innerWidth,b=window.innerHeight,{top:w,bottom:v,left:S,right:N}=m,{width:F,height:T}=g,E=b-v-Ws-An,_=w-Ws-An;let I=E>=T||E>=_?v+Ws:w-Ws-T,U=S;return U+F>y-An&&(U=N-F),U<An&&(U=An),U+F>y-An&&(U=y-An-F),I=Math.max(An,Math.min(I,b-An-T)),{top:I,left:U}}function d(){if(!a())return;const m=r.value,g=o.value;if(!m||!g)return;const y=m.getBoundingClientRect(),b=g.getBoundingClientRect(),w=c(y,b);if(!w)return;const{top:v,left:S}=w;i.value={top:`${Math.round(v)}px`,left:`${Math.round(S)}px`,visibility:"visible"}}function u(){a()&&(l!==null&&cancelAnimationFrame(l),l=requestAnimationFrame(()=>{d(),l=null}))}async function f(){!e.text||!a()||(i.value={top:"0px",left:"0px",visibility:"hidden"},t.value=!0,await s.nextTick(),u())}function p(){t.value=!1,i.value={top:"0px",left:"0px",visibility:"hidden"}}function h(){t.value&&u()}return s.onMounted(()=>{window.addEventListener("scroll",h,!0),window.addEventListener("resize",h)}),s.onBeforeUnmount(()=>{l!==null&&(cancelAnimationFrame(l),l=null),window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h)}),(m,g)=>(s.openBlock(),s.createElementBlock(s.Fragment,null,[s.createElementVNode("span",{ref_key:"triggerRef",ref:r,class:"inline-flex items-center",onMouseenter:f,onMouseleave:p},[s.renderSlot(m.$slots,"default",{},()=>[s.createVNode(s.unref(Y.Info),{class:"h-4 w-4 text-gray-400 cursor-help"})])],544),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[t.value&&m.text?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"tooltipRef",ref:o,style:s.normalizeStyle(i.value),class:"fixed z-[9999] max-w-xs p-2 bg-gray-900 text-white text-xs rounded-lg shadow-lg pointer-events-none",role:"tooltip"},s.toDisplayString(m.text),5)):s.createCommentVNode("",!0)]))],64))}}),pa={form:{autofillFrom:"Filled from",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"}}},ha={form:{autofillFrom:"Підставлено з",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:"Скасувати"}}},mb={class:"w-full relative"},gb={key:0,class:"text-[14px] font-medium text-gray-900 mb-2 flex items-center gap-1"},yb={class:"opacity-100"},bb={key:0,class:"text-red-500 text-[14px]"},kb={key:2,class:"text-[11px] text-slate-500 font-normal"},wb={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},xb=s.defineComponent({__name:"vs-layout-default",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(n){const e=n,t=s.computed(()=>typeof e.item?.label=="string"&&e.item.label?e.item.label:e.item?.ua||e.label||e.ua),r=s.computed(()=>!!t.value),o=s.computed(()=>!!e.item?.rules?.includes("required")),i=s.computed(()=>e.item?.info||""),l=s.inject("schema-by-name"),a={en:pa?.form?.autofillFrom,uk:ha?.form?.autofillFrom},c=s.computed(()=>{const d=e.item?.__autoMeta;if(!d||d?.source!=="parent-auto"||!d?.parentField)return"";const u=String(e.item?.__locale||"uk"),f=String(d.parentField),p=l?.value?.[f],h=p?.[`label:${u}`]||(u!=="uk"?p?.[u]:void 0)||p?.label||p?.ua||p?.en||f;return`${a[u]||a.uk}: ${h}`});return(d,u)=>(s.openBlock(),s.createElementBlock("div",mb,[r.value?(s.openBlock(),s.createElementBlock("div",gb,[s.createElementVNode("span",yb,s.toDisplayString(t.value),1),o.value?(s.openBlock(),s.createElementBlock("span",bb,"*")):s.createCommentVNode("",!0),i.value?(s.openBlock(),s.createBlock(Bu,{key:1,text:i.value},null,8,["text"])):s.createCommentVNode("",!0),c.value?(s.openBlock(),s.createElementBlock("span",kb," ("+s.toDisplayString(c.value)+") ",1)):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.renderSlot(d.$slots,"default",s.mergeProps(d.$attrs,{class:{"opacity-60":d.item.disabled}})),d.error?(s.openBlock(),s.createElementBlock("span",wb,s.toDisplayString(d.error),1)):s.createCommentVNode("",!0)]))}}),vb={class:"w-full relative flex flex-row items-center gap-2"},Cb={key:0,class:"text-red-500 text-[14px]"},Sb={key:2,class:"text-[11px] text-slate-500 font-normal"},Eb={key:1,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},Mb=s.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(n){const e=n,t=s.computed(()=>e.item?.label||e.label||e.ua),r=s.computed(()=>e.item?.info||""),o=s.inject("schema-by-name"),i={en:pa?.form?.autofillFrom,uk:ha?.form?.autofillFrom},l=s.computed(()=>{const p=e.item?.__autoMeta;if(!p||p?.source!=="parent-auto"||!p?.parentField)return"";const h=String(e.item?.__locale||"uk"),m=String(p.parentField),g=o?.value?.[m],y=g?.[`label:${h}`]||(h!=="uk"?g?.[h]:void 0)||g?.label||g?.ua||g?.en||m;return`${i[h]||i.uk}: ${y}`}),a=s.computed(()=>e.columns??{container:12,label:3}),c=s.computed(()=>{const{container:p,label:h}=a.value;return!p||p<=0?0:Math.min(Math.max(h??0,0),p)/p}),d=s.computed(()=>e.item?.type==="html"||c.value<=0?!1:!!t.value),u=s.computed(()=>{if(!d.value)return{};const p=`${c.value*100}%`;return{flexBasis:p,maxWidth:p}}),f=s.computed(()=>{const{container:p,label:h}=a.value;if(!p||p<=0)return{};if(e.item?.type==="html")return{flexBasis:"100%",maxWidth:"100%"};if(!d.value)return{flexBasis:"100%",maxWidth:"100%"};const m=Math.max(p-Math.max(h??0,0),0)/p;if(!m)return{};const g=`${m*100}%`;return{flexBasis:g,maxWidth:g}});return(p,h)=>(s.openBlock(),s.createElementBlock("div",vb,[d.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:"text-sm text-gray-900 font-medium flex shrink-0 items-center gap-1",style:s.normalizeStyle(u.value)},[s.createTextVNode(s.toDisplayString(t.value)+" ",1),p.item?.rules?.includes("required")&&t.value?(s.openBlock(),s.createElementBlock("span",Cb,"*")):s.createCommentVNode("",!0),r.value?(s.openBlock(),s.createBlock(Bu,{key:1,text:r.value},null,8,["text"])):s.createCommentVNode("",!0),l.value?(s.openBlock(),s.createElementBlock("span",Sb," ("+s.toDisplayString(l.value)+") ",1)):s.createCommentVNode("",!0)],4)):s.createCommentVNode("",!0),s.createElementVNode("div",{class:"flex-1 min-w-0",style:s.normalizeStyle(f.value)},[s.renderSlot(p.$slots,"default",s.normalizeProps(s.guardReactiveProps(p.$attrs)))],4),p.error?(s.openBlock(),s.createElementBlock("span",Eb,s.toDisplayString(p.error),1)):s.createCommentVNode("",!0)]))}}),Ab={class:"w-full relative"},_b={key:0,class:"text-red-500 text-[10px] absolute bottom-[-14px]"},Tb=s.defineComponent({__name:"vs-layout-inline",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",Ab,[s.renderSlot(e.$slots,"default",s.normalizeProps(s.guardReactiveProps(e.$attrs))),e.error?(s.openBlock(),s.createElementBlock("span",_b,s.toDisplayString(e.error),1)):s.createCommentVNode("",!0)]))}}),Bb={class:"flex-1 min-w-0"},Nb={key:0,class:"text-sm font-medium text-slate-700 dark:text-slate-200 flex items-center gap-1"},Db={class:"truncate"},Vb={key:0,class:"text-red-500 text-[14px]"},$b=["innerHTML"],Lb={key:0,class:"mt-1 text-xs text-red-500"},Ib={default:xb,horizontal:Mb,inline:Tb,settings:s.defineComponent({__name:"vs-layout-settings",props:{ua:{default:""},uk:{},en:{},de:{},es:{},fr:{},item:{default:()=>({})},error:{type:[String,Boolean],default:""},label:{default:""},columns:{}},setup(n){const e=n,t=s.ref("uk");s.computed(()=>(e.item??{})?.[t.value]??e.ua??e.label??"");const r=s.computed(()=>e.item?.description??""),o=s.computed(()=>Array.isArray(e.item?.rules)&&e.item.rules.includes("required")),i=s.computed(()=>(typeof e.error=="string"?e.error:"")??""),l=()=>{const a=typeof localStorage<"u"?localStorage.getItem("locale"):null;t.value=a||"uk"};return s.onMounted(()=>{try{typeof localStorage<"u"&&localStorage.locale&&(t.value=localStorage.locale)}catch{}window.addEventListener("storage",l)}),s.onUnmounted(()=>{window.removeEventListener("storage",l)}),(a,c)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["w-full relative",{"opacity-60":a.item?.disabled}])},[s.createElementVNode("div",{class:s.normalizeClass(["gap-2 md:flex-row md:items-center md:justify-between",[["switcher","native-select"].includes(a.item.type)?"flex flex-col":""]])},[s.createElementVNode("div",Bb,[a.ua||a.label?(s.openBlock(),s.createElementBlock("p",Nb,[s.createElementVNode("span",Db,s.toDisplayString(a.item[t.value]||a.ua||a.label),1),o.value?(s.openBlock(),s.createElementBlock("span",Vb,"*")):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),r.value?(s.openBlock(),s.createElementBlock("p",{key:1,class:"text-xs text-slate-500 dark:text-slate-400",innerHTML:r.value},null,8,$b)):s.createCommentVNode("",!0)]),s.createElementVNode("div",{class:s.normalizeClass(["w-full",["select","native-select"].includes(a.item.type)?"md:w-[30%]":"md:w-auto"])},[s.renderSlot(a.$slots,"default",s.normalizeProps(s.guardReactiveProps(a.$attrs)))],2)],2),i.value?(s.openBlock(),s.createElementBlock("p",Lb,s.toDisplayString(i.value),1)):s.createCommentVNode("",!0)],2))}})};function Bt(n){return{inputClass:s.computed(()=>{const t=`disabled:opacity-50 disabled:cursor-not-allowed outline-none focus:ring-2 focus:ring-ring focus:ring-${n?.primaryColor||"blue"}-500 border border-solid border-stone-200 rounded-md text-sm text-stone-800 placeholder:text-stone-400 `;return n?.size==="sm"?`${t}h-[32px]`:`${t}h-[38px]`})}}const Ob=["placeholder","disabled"],Rb=s.defineComponent({__name:"vs-input-password",props:s.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(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useModel(n,"modelValue"),o=s.computed(()=>!!e.disabled),i=s.computed(()=>e.placeholder??"");return(l,a)=>s.withDirectives((s.openBlock(),s.createElementBlock("input",{type:"password","onUpdate:modelValue":a[0]||(a[0]=c=>r.value=c),placeholder:i.value,disabled:o.value,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(t),{"!border-red-600":l.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,Ob)),[[s.vModelText,r.value]])}}),Fb=["placeholder","disabled","maxlength","minlength"],Yr=s.defineComponent({__name:"vs-input-text",props:s.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useModel(n,"modelValue"),o=s.computed({get:()=>r.value??"",set:u=>{r.value=u===""?null:u}}),i=s.computed(()=>!!e.disabled),l=s.computed(()=>e.placeholder??""),a=s.computed(()=>e.maxlength??void 0),c=s.computed(()=>e.minlength??void 0);function d(){if(typeof r.value=="string"){const u=r.value.trim();r.value=u===""?null:u}}return(u,f)=>s.withDirectives((s.openBlock(),s.createElementBlock("input",{type:"text","onUpdate:modelValue":f[0]||(f[0]=p=>o.value=p),placeholder:l.value,disabled:i.value,maxlength:a.value,minlength:c.value,onBlur:d,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[u.customClass,s.unref(t),{"!border-red-600":u.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,Fb)),[[s.vModelText,o.value]])}}),Pb=["step","placeholder","disabled","min","max"],Nu=s.defineComponent({__name:"vs-input-number",props:s.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(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useAttrs(),o=s.useModel(n,"modelValue"),i=s.computed(()=>!!e.disabled),l=u=>{if(u==null||u==="")return;const f=typeof u=="string"?u.trim().replace(",","."):u,p=Number(f);return Number.isFinite(p)?p:void 0},a=s.computed(()=>l(e.min??r.min)),c=s.computed(()=>l(e.max??r.max)),d=s.computed(()=>{if(e.step!==void 0&&e.step!==null&&e.step!=="")return e.step;const u=r.step;return typeof u=="number"||typeof u=="string"?u:"any"});return(u,f)=>s.withDirectives((s.openBlock(),s.createElementBlock("input",{type:"number",step:d.value,"onUpdate:modelValue":f[0]||(f[0]=p=>o.value=p),placeholder:n.placeholder,disabled:i.value,class:s.normalizeClass(["py-1.5 px-3 block w-full bg-white",[s.unref(t)]]),style:{border:"1px solid #CFD9E0"},min:a.value,max:c.value},null,10,Pb)),[[s.vModelText,o.value]])}}),Ks=n=>!!String(n??"").trim(),Kn=n=>n?.color?String(n.color):"",Eo=n=>{const e=n?.icon;if(typeof e=="string")return e;const t=n?.imgUrl;return typeof t=="string"?t:""},Mo=n=>{const e=n?.icon;return e&&typeof e!="string"?e:null},zb={class:"flex items-center gap-[4px]"},Hb=["value","id","disabled"],jb=["for"],Ub=["innerHTML"],Wb={key:1,class:"text-[14px] text-gray-700 flex items-center gap-2 dark:text-neutral-400"},Kb=["src"],qb=s.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(n,{emit:e}){const t=e,r=n,o=s.computed({get:()=>r.modelValue,set:h=>t("update:modelValue",h)}),i=s.computed(()=>!!r.disabled),l=s.computed(()=>Eo(r.option)),a=s.computed(()=>Mo(r.option)),c=s.computed(()=>Kn(r.option)),d=s.computed(()=>!!(c.value&&!l.value&&!a.value)),u=s.computed(()=>!!(l.value&&c.value)),f=s.computed(()=>c.value?{color:c.value}:void 0),p=s.computed(()=>{if(!(!l.value||!c.value))return{backgroundColor:c.value,WebkitMaskImage:`url(${l.value})`,maskImage:`url(${l.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(h,m)=>(s.openBlock(),s.createElementBlock("div",zb,[s.withDirectives(s.createElementVNode("input",{type:"checkbox",value:h.value,"onUpdate:modelValue":m[0]||(m[0]=g=>o.value=g),class:s.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":i.value}]),id:h.id,disabled:i.value},null,10,Hb),[[s.vModelCheckbox,o.value]]),s.createElementVNode("label",{for:h.id,class:s.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":i.value}])},[s.createElementVNode("div",{class:s.normalizeClass(["h-[16px] text-white w-[16px] flex items-center justify-center shrink-0 border rounded",[o.value?"bg-blue-600 border-blue-600":"bg-white border-gray-600",h.error?"border-red-600":""]])},[s.createVNode(s.unref(Y.Check),{class:"h-4 w-4"})],2),h.html?(s.openBlock(),s.createElementBlock("div",{key:0,class:"w-full",innerHTML:h.html},null,8,Ub)):(s.openBlock(),s.createElementBlock("span",Wb,[d.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:s.normalizeStyle({background:c.value})},null,4)):s.createCommentVNode("",!0),u.value?(s.openBlock(),s.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:s.normalizeStyle(p.value)},null,4)):l.value?(s.openBlock(),s.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:l.value,alt:"icon"},null,8,Kb)):a.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(a.value),{key:3,class:"h-4 w-4",style:s.normalizeStyle(f.value)},null,8,["style"])):s.createCommentVNode("",!0),s.renderSlot(h.$slots,"default",{},()=>[s.createTextVNode(s.toDisplayString(h.label),1)])]))],10,jb)]))}}),Gb=["name","value","disabled"],Jb=["innerHTML"],Yb={key:1,class:"flex items-center gap-[6px] text-[14px]"},Xb={key:2,class:"text-[16px] inline-flex items-center justify-center"},Zb=["src"],Qb=s.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(n,{emit:e}){const t=n,r=e,o=s.computed({get:()=>t.modelValue,set:g=>{r("update:modelValue",g)}}),i=s.computed(()=>Array.isArray(o.value)?o.value.includes(t.value):o.value===!0||o.value===t.value),l=s.computed(()=>t.style?.size==="xs"?"p-1.5 text-xs":t.style?.size==="lg"?"p-3.5 text-[20px]":"p-2.5 text-xs"),a=s.computed(()=>({...t.option??{},icon:t.option?.icon??t.icon,imgUrl:t.option?.imgUrl??t.imgUrl,color:t.option?.color})),c=s.computed(()=>Eo(a.value)),d=s.computed(()=>Mo(a.value)),u=s.computed(()=>Kn(a.value)),f=s.computed(()=>!!(u.value&&!c.value&&!d.value)),p=s.computed(()=>!!(c.value&&u.value)),h=s.computed(()=>u.value?{color:u.value}:void 0),m=s.computed(()=>{if(!(!c.value||!u.value))return{backgroundColor:u.value,WebkitMaskImage:`url(${c.value})`,maskImage:`url(${c.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(g,y)=>(s.openBlock(),s.createElementBlock("label",{class:s.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",[l.value,i.value?"ring-blue-500":"border border-gray-200 ring-transparent"]])},[s.withDirectives(s.createElementVNode("input",{type:"checkbox",class:"hidden",name:g.id,value:g.value,"onUpdate:modelValue":y[0]||(y[0]=b=>o.value=b),disabled:g.disabled},null,8,Gb),[[s.vModelCheckbox,o.value]]),g.html?(s.openBlock(),s.createElementBlock("span",{key:0,class:"w-full",innerHTML:g.html},null,8,Jb)):(s.openBlock(),s.createElementBlock("span",Yb,[f.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:s.normalizeStyle({background:u.value})},null,4)):s.createCommentVNode("",!0),p.value?(s.openBlock(),s.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:s.normalizeStyle(m.value)},null,4)):c.value||d.value?(s.openBlock(),s.createElementBlock("span",Xb,[c.value?(s.openBlock(),s.createElementBlock("img",{key:0,src:c.value,width:"16",height:"16",alt:"icon"},null,8,Zb)):d.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(d.value),{key:1,class:"h-4 w-4",style:s.normalizeStyle(h.value)},null,8,["style"])):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.renderSlot(g.$slots,"default",{},()=>[s.createTextVNode(s.toDisplayString(g.label),1)])]))],2))}}),ek={class:"flex items-center"},ma=s.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(n,{emit:e}){const t=n,r=e,o=`radio-${Math.floor(Math.random()*1e4)}`,i=s.computed({get:()=>Array.isArray(t.modelValue)?Array.isArray(t.modelValue)&&t.modelValue.includes(t.value):t.modelValue,set:a=>{if(Array.isArray(t.modelValue)){let c=[...t.modelValue];a?c.includes(t.value)||c.push(t.value):c=c.filter(d=>d!==t.value),r("update:modelValue",c)}else r("update:modelValue",a)}}),l=s.ref(`vs-checkbox-${t.view||"default"}`);return(a,c)=>(s.openBlock(),s.createElementBlock("div",ek,[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(l.value==="vs-checkbox-buttons"?s.unref(Qb):s.unref(qb)),{value:a.value,label:a.label,html:a.labelHtml,info:a.option?.info,disabled:a.disabled,modelValue:i.value,"onUpdate:modelValue":c[0]||(c[0]=d=>i.value=d),id:o,icon:a.icon,imgUrl:a.imgUrl,option:a.option,style:s.normalizeStyle(a.style),error:a.error},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(a.label),1)]),_:1},8,["value","label","html","info","disabled","modelValue","icon","imgUrl","option","style","error"]))]))}}),tk={key:0,class:"flex items-start gap-x-1"},nk={key:0,class:"text-red-500 text-[14px]"},rk=["title"],ok=["disabled"],ga=s.defineComponent({__name:"vs-input-switcher",props:s.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(n){const e=n,t=s.useModel(n,"modelValue");return(r,o)=>e.view==="checkbox"?(s.openBlock(),s.createElementBlock("div",tk,[s.createVNode(ma,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=i=>t.value=i),error:r.error||""},null,8,["modelValue","error"]),r.rules?.includes("required")?(s.openBlock(),s.createElementBlock("span",nk,"*")):s.createCommentVNode("",!0),r.i?(s.openBlock(),s.createElementBlock("button",{key:1,class:"cursor-pointer",title:r.i,onClick:o[1]||(o[1]=s.withModifiers(()=>{},["prevent"]))},[s.createVNode(s.unref(Y.Info),{class:"h-4 w-4 text-gray-500"})],8,rk)):s.createCommentVNode("",!0)])):(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",class:s.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",[t.value?`bg-${r.style?.primaryColor||"blue"}-500`:"bg-stone-200",r.customClass]]),disabled:r.disabled,onClick:o[2]||(o[2]=i=>t.value=!t.value)},[s.createElementVNode("span",{"data-state":"checked",class:s.normalizeClass(["pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform",[t.value?"translate-x-4":"translate-x-0"]])},null,2)],10,ok))}}),sk=["id","innerHTML"],ya=s.defineComponent({__name:"vs-input-static",props:{text:{default:""},html:{default:""},style:{},customClass:{default:""},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",{id:e.name,class:s.normalizeClass(["text-gray-900",e.customClass]),innerHTML:e.html?e.html:e.text},null,10,sk))}}),ik=["placeholder","disabled","name"],qs=s.defineComponent({__name:"vs-input-mask",props:s.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(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useModel(n,"modelValue"),o=s.ref(null);let i=null;function l(a){const c=a==null?"":String(a),d={9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},u=new Set;let f=!1;for(let h=0;h<c.length;h+=1){const m=c[h];m==="{"?f=!0:m==="}"?f=!1:f&&u.add(m)}const p={};return Object.keys(d).forEach(h=>{u.has(h)||(p[h]=d[h])}),{mask:c,definitions:p,lazy:!1}}return s.onMounted(async()=>{if(o.value){const{default:a}=await Promise.resolve().then(()=>xi),c=l(e.mask||"");i=a(o.value,c),i.on("accept",()=>{r.value=e.unmask?i.unmaskedValue:i.value}),i.on("complete",()=>{r.value=e.unmask?i.unmaskedValue:i.value}),i.value=r.value!=null?String(r.value):""}}),s.onBeforeUnmount(()=>{i?.destroy()}),s.watch(()=>e.mask,a=>{if(i){const c=l(a||"");i.updateOptions(c)}}),s.watch(r,a=>{i&&i.unmaskedValue!==a&&(i.value=a!=null?String(a):"")}),(a,c)=>(s.openBlock(),s.createElementBlock("input",{type:"text",ref_key:"inputEl",ref:o,placeholder:a.placeholder,disabled:a.disabled,name:a.name,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(t)]]),style:{border:"1px solid #CFD9E0"}},null,10,ik))}}),lk={class:"relative w-full bg-white rounded-lg"},ak={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] cursor-pointer"},ck=["placeholder","disabled"],ba=s.defineComponent({__name:"vs-input-email",props:s.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(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useModel(n,"modelValue");return(o,i)=>(s.openBlock(),s.createElementBlock("div",lk,[s.createElementVNode("div",ak,[s.createVNode(s.unref(Y.Mail),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),s.withDirectives(s.createElementVNode("input",{type:"email","onUpdate:modelValue":i[0]||(i[0]=l=>r.value=l),placeholder:o.placeholder,disabled:o.disabled,class:s.normalizeClass(["!pl-8 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(t),{"!border-red-600":o.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,ck),[[s.vModelText,r.value]])]))}}),_n="+99(999)-999-99-99";function qn(n){if(!n?.trim())return 0;const e=new Set(["9","0","a","A","*"]);let t=!1,r=0;for(let o=0;o<n.length;o+=1){const i=n[o];if(i==="{"){t=!0;continue}if(i==="}"){t=!1;continue}!t&&e.has(i)&&(r+=1)}return r}const dk={class:"relative w-full bg-white rounded-lg"},uk={class:"absolute bottom-2/4 translate-y-2/4 left-[10px] pointer-events-none"},fk=["name","placeholder","disabled","pattern"],ka=s.defineComponent({__name:"vs-input-tel",props:s.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:null},name:{},placeholder:{default:""},maxlength:{},minlength:{},mask:{default:_n}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.computed(()=>`^\\+[1-9]\\d{${(qn(e.mask||_n)||qn(_n))-1}}$`),{inputClass:r}=Bt(e.style),o=s.useModel(n,"modelValue"),i=s.ref(null);let l=null;function a(u){const f={9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},p=new Set;let h=!1;for(let g=0;g<u.length;g+=1){const y=u[g];y==="{"?h=!0:y==="}"?h=!1:h&&p.add(y)}const m={};return Object.keys(f).forEach(g=>{p.has(g)||(m[g]=f[g])}),{mask:u,definitions:m,lazy:!1,disabled:e.disabled}}function c(u){if(u==null||u==="")return"";const f=String(u).trim();return f?f.replace(/\D/g,""):""}function d(){if(!l)return;const u=l.unmaskedValue??"";o.value=u?`+${u}`:""}return s.onMounted(async()=>{if(!i.value)return;const{default:u}=await Promise.resolve().then(()=>xi),f=a(e.mask||"");l=u(i.value,f),l.on("accept",d),l.on("complete",d);const p=c(o.value);l.unmaskedValue=p}),s.onBeforeUnmount(()=>{l?.destroy(),l=null}),s.watch(()=>e.mask,u=>{l&&l.updateOptions(a(u||""))}),s.watch(()=>e.disabled,u=>{l&&l.updateOptions({disabled:u})}),s.watch(o,u=>{if(!l)return;const f=c(u);l.unmaskedValue!==f&&(l.unmaskedValue=f)}),(u,f)=>(s.openBlock(),s.createElementBlock("div",dk,[s.createElementVNode("div",uk,[s.createVNode(s.unref(Y.Phone),{class:"h-4 w-4 stroke-gray-500 transition-all"})]),s.createElementVNode("input",{ref_key:"inputEl",ref:i,type:"tel",name:u.name,placeholder:u.placeholder,disabled:u.disabled,pattern:t.value,title:"Міжнародний номер (E.164), наприклад +380XXXXXXXXX",autocomplete:"tel",class:s.normalizeClass(["!pl-10 py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(r),{"!border-red-600":u.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,fk)]))}}),pk=["value","disabled"],hk=["innerHTML"],mk={key:1,class:"flex items-center gap-2"},gk=["src"],yk={class:"text-[13px] text-gray-700"},bk=s.defineComponent({__name:"vs-input-radio-default",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.computed(()=>!!e.disabled),o=s.computed(()=>Eo(e.option)),i=s.computed(()=>Mo(e.option)),l=s.computed(()=>Kn(e.option)),a=s.computed(()=>!!(l.value&&!o.value&&!i.value)),c=s.computed(()=>!!(o.value&&l.value)),d=s.computed(()=>l.value?{color:l.value}:void 0),u=s.computed(()=>{if(!(!o.value||!l.value))return{backgroundColor:l.value,WebkitMaskImage:`url(${o.value})`,maskImage:`url(${o.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(f,p)=>(s.openBlock(),s.createElementBlock("label",{class:s.normalizeClass(["flex items-center gap-0",[e.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[s.withDirectives(s.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=h=>t.value=h),type:"radio",value:e.value,disabled:r.value,class:"hidden"},null,8,pk),[[s.vModelRadio,t.value]]),s.createElementVNode("span",{class:s.normalizeClass(["w-[16px] shrink-0 h-[16px] border rounded-full flex items-center justify-center mr-[10px]",[`border-${e.style?.primaryColor||"blue"}-500`,r.value?"opacity-50 cursor-not-allowed":""]])},[t.value==e.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:s.normalizeClass(["w-[12px] h-[12px] shrink-0 rounded-full",[`bg-${e.style?.primaryColor||"blue"}-500`]])},null,2)):s.createCommentVNode("",!0)],2),e.html?(s.openBlock(),s.createElementBlock("div",{key:0,class:"w-full",innerHTML:e.html},null,8,hk)):(s.openBlock(),s.createElementBlock("div",mk,[a.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:s.normalizeStyle({background:l.value})},null,4)):s.createCommentVNode("",!0),c.value?(s.openBlock(),s.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:s.normalizeStyle(u.value)},null,4)):o.value?(s.openBlock(),s.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:o.value,alt:"icon"},null,8,gk)):i.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.value),{key:3,class:"h-4 w-4",style:s.normalizeStyle(d.value)},null,8,["style"])):s.createCommentVNode("",!0),s.createElementVNode("span",yk,s.toDisplayString(e.text),1)]))],2))}}),kk=["value","disabled"],wk=["innerHTML"],xk={key:1,class:"flex items-center gap-2"},vk=["src"],Ck={class:"text-[13px] text-gray-700"},Sk={"vs-input-radio-default":bk,"vs-input-radio-buttons":s.defineComponent({__name:"vs-input-radio-buttons",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.computed(()=>!!e.disabled),o=s.computed(()=>Eo(e.option)),i=s.computed(()=>Mo(e.option)),l=s.computed(()=>Kn(e.option)),a=s.computed(()=>!!(l.value&&!o.value&&!i.value)),c=s.computed(()=>!!(o.value&&l.value)),d=s.computed(()=>l.value?{color:l.value}:void 0),u=s.computed(()=>{if(!(!o.value||!l.value))return{backgroundColor:l.value,WebkitMaskImage:`url(${o.value})`,maskImage:`url(${o.value})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"contain",maskSize:"contain",WebkitMaskPosition:"center",maskPosition:"center"}});return(f,p)=>(s.openBlock(),s.createElementBlock("label",{class:s.normalizeClass(["flex h-full w-full items-center border rounded-lg px-2 py-1",[t.value==e.value?`ring-2 ring-ring ring-${e.style?.primaryColor||"blue"}-500`:"",e.customClass,r.value?"cursor-not-allowed opacity-60":""]])},[s.withDirectives(s.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=h=>t.value=h),type:"radio",value:e.value,disabled:r.value,class:"hidden"},null,8,kk),[[s.vModelRadio,t.value]]),e.html?(s.openBlock(),s.createElementBlock("div",{key:0,class:"w-full",innerHTML:e.html},null,8,wk)):(s.openBlock(),s.createElementBlock("div",xk,[a.value?(s.openBlock(),s.createElementBlock("span",{key:0,class:"inline-flex h-3 w-3 rounded-full border border-gray-200",style:s.normalizeStyle({background:l.value})},null,4)):s.createCommentVNode("",!0),c.value?(s.openBlock(),s.createElementBlock("span",{key:1,class:"inline-block h-4 w-4",style:s.normalizeStyle(u.value)},null,4)):o.value?(s.openBlock(),s.createElementBlock("img",{key:2,class:"block",height:"16",width:"16",src:o.value,alt:"icon"},null,8,vk)):i.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.value),{key:3,class:"h-4 w-4",style:s.normalizeStyle(d.value)},null,8,["style"])):s.createCommentVNode("",!0),s.createElementVNode("span",Ck,s.toDisplayString(e.text),1)]))],2))}})},Du=n=>Array.isArray(n)?n:Array.isArray(n?.data)?n.data:[],Vu=n=>{const e=n.host??"",t=n.prefix??"api",r=n.api??`/${t}/suggest/${n.data}`;return`${e}${r}`},Ek=n=>({fetchOptions:async(r="")=>{const o=n();if(!o.data)return o.options?[...o.options]:[];try{const i=new URLSearchParams;r&&i.set("key",r),o.parentValue!==void 0&&o.parentValue!==null&&o.parentValue!==""&&i.set("parent",String(o.parentValue)),o.start===1&&i.set("start","1");const a=await(await fetch(`${Vu(o)}?${i.toString()}`)).json();return Du(a)}catch{return[]}},fetchOptionByValue:async r=>{if(r==null||r==="")return null;const o=n();if(!o.data)return(o.options??[]).find(l=>l?.id?.toString()===String(r))??null;try{const i=new URLSearchParams;i.set("val",String(r)),o.parentValue!==void 0&&o.parentValue!==null&&o.parentValue!==""&&i.set("parent",String(o.parentValue)),o.start===1&&i.set("start","1");const a=await(await fetch(`${Vu(o)}?${i.toString()}`)).json();return Du(a)[0]??null}catch{return null}}}),Gs=({props:n,formValues:e=null,watchParent:t=!0})=>{const r=s.ref([]),o=s.computed(()=>n.parent?e?.value?.[n.parent]?.toString?.()??null:null),{fetchOptions:i,fetchOptionByValue:l}=Ek(()=>({data:n.data,options:n.options,api:n.api,prefix:n.prefix,host:n.host,start:n.start,parentValue:o.value})),a=async(c="")=>{const d=n.data?await i(c):n.options?[...n.options]:[];return r.value=d,r.value};return s.watch(()=>n.options,()=>{n.data||(r.value=n.options?[...n.options]:[])},{immediate:!0,deep:!0}),t&&s.watch(o,async()=>{n.data&&(r.value=await i())},{immediate:!1}),{optionsList:r,parentValue:o,fetchOptions:i,fetchOptionByValue:l,loadOptions:a}},Mk=/\{\{\s*([^}]+?)\s*\}\}/g,Ak=n=>(n?String(n):"").replace(/<[^>]*>/g,"").trim(),_k=(n,e)=>e.split(".").reduce((t,r)=>t==null?t:t[r.trim()],n),Js=(n,e)=>{if(!n)return"";const t=(e??"").trim();return t?t.replace(Mk,(r,o)=>{const i=String(o).trim(),l=n,c=(i.includes(".")?_k(l,i):void 0)??l[i];return c!=null?String(c):""}):n.text??""},Ys=(n,e)=>{if(!n)return"";const t=Js(n,e);return Ak(t)||n.text||""},wa=s.defineComponent({__name:"vs-input-radio",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.computed(()=>Sk[`vs-input-radio-${e.view}`]),o=s.computed(()=>e.slot??e?.optionTemplate??""),i=s.computed(()=>Ks(o.value)),l=h=>Js(h,o.value),a=h=>Ys(h,o.value),c=s.computed(()=>e.position==="horizontal"?"flex w-full flex-row flex-wrap gap-[10px]":"flex w-full flex-col gap-2"),d=s.computed(()=>{if(e.position==="horizontal"&&e.customClass?.includes("50%"))return{flex:"0 0 calc(50% - 5px)"}}),u=s.inject("values",null),{optionsList:f,loadOptions:p}=Gs({props:e,formValues:u});return s.onMounted(async()=>{await p()}),(h,m)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(c.value)},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(f),g=>(s.openBlock(),s.createElementBlock("div",{key:g?.id,class:s.normalizeClass(["flex items-stretch",h.position==="horizontal"?e.customClass:""]),style:s.normalizeStyle(d.value)},[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(r.value),s.mergeProps({text:a(g),html:i.value?l(g):"",option:g,value:g.id.toString(),checked:t.value?.toString?.()===g.id?.toString?.(),"custom-class":h.position==="horizontal"?"":e.customClass,modelValue:t.value,"onUpdate:modelValue":m[0]||(m[0]=y=>t.value=y)},{ref_for:!0},h.$attrs),null,16,["text","html","option","value","checked","custom-class","modelValue"]))],6))),128))],2))}}),Tk={key:1,class:"w-full flex flex-col gap-4"},Bk={key:0,class:"text-sm font-medium text-muted-foreground my-2"},Nk="Без категорії",Dk=s.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(n,{emit:e}){const t=n,r=e,o=s.reactive({}),i=s.inject("values",null),{optionsList:l,loadOptions:a}=Gs({props:{...t,options:t.options},formValues:i}),c=s.computed(()=>l.value),d=w=>w?.value||w?.id||w?.text||w,u=s.computed(()=>t.slot??t?.optionTemplate??""),f=s.computed(()=>Ks(u.value)),p=w=>Js(w,u.value),h=w=>Ys(w,u.value),m=w=>`lg:col-span-${w||12}`,g=s.computed(()=>[t.position==="vertical"?"flex flex-col":"",t.colSpan?"grid":"flex justify-start"]),y=w=>w==null||w===""?null:typeof w=="string"||typeof w=="number"?w:String(w),b=s.computed(()=>{if(!t.group)return[];const w=new Map;c.value.forEach(T=>{const E=T[t.group],_=y(E);w.has(_)||w.set(_,[]),w.get(_)?.push(T)});const v=[];t.values?.length&&t.values.forEach(T=>{const E=y(T);v.push(E)});const S=new Set,N=T=>{const E=w.get(T)||[];if(!E.length)return null;const _=T===null?"group-null":`group-${String(T)}`,A=T===null?Nk:String(T);return S.add(T),{key:_,label:A,options:E}},F=[];return v.forEach(T=>{const E=N(T);E&&F.push(E)}),w.forEach((T,E)=>{if(S.has(E))return;const _=N(E);_&&F.push(_)}),F});return s.watch(()=>t.modelValue,w=>{if(typeof w=="boolean"&&c.value.length===1){const v=d(c.value[0]);o[v]=w}else if(Array.isArray(w)){const v=new Set(w);c.value.forEach(S=>{if(!S.disabled){const N=d(S);o[N]=v.has(N)}})}},{immediate:!0}),s.watch(o,()=>{if(!c.value.length){r("update:modelValue",null);return}const w=Object.entries(o).filter(([,v])=>v).map(([v])=>v);r("update:modelValue",w.length===0?[]:w)},{deep:!0}),s.onMounted(async()=>{if(await a(),typeof t.modelValue=="boolean"&&c.value.length===1){const w=d(c.value[0]);o[w]=t.modelValue}else if(Array.isArray(t.modelValue)){const w=new Set(t.modelValue);c.value.forEach(v=>{if(!v.disabled){const S=d(v);o[S]=w.has(S)}})}}),(w,v)=>t.group?(s.openBlock(),s.createElementBlock("div",Tk,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(b.value,S=>(s.openBlock(),s.createElementBlock("div",{key:S.key,class:"flex flex-col gap-2"},[S.label?(s.openBlock(),s.createElementBlock("span",Bk,s.toDisplayString(S.label),1)):s.createCommentVNode("",!0),s.createElementVNode("div",{class:s.normalizeClass(["p-0 w-full gap-[12px]",g.value])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(S.options,N=>(s.openBlock(),s.createBlock(ma,{modelValue:o[d(N)],"onUpdate:modelValue":F=>o[d(N)]=F,value:d(N),class:s.normalizeClass(m(w.colSpan)),disabled:t.disabled||N.disabled,label:h(N),labelHtml:f.value?p(N):"",key:`${S.key}-${d(N)}`,icon:N?.icon,imgUrl:N?.imgUrl,option:N,view:w.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2)]))),128))])):(s.openBlock(),s.createElementBlock("div",{key:0,class:s.normalizeClass(["p-0 w-full gap-[10px]",g.value])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(c.value,S=>(s.openBlock(),s.createBlock(ma,{modelValue:o[d(S)],"onUpdate:modelValue":N=>o[d(S)]=N,value:d(S),class:s.normalizeClass(m(w.colSpan)),disabled:t.disabled||S.disabled,label:h(S),labelHtml:f.value?p(S):"",key:d(S),icon:S?.icon,imgUrl:S?.imgUrl,option:S,view:w.view},null,8,["modelValue","onUpdate:modelValue","value","class","disabled","label","labelHtml","icon","imgUrl","option","view"]))),128))],2))}}),Be=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},$u=Be(Dk,[["__scopeId","data-v-9056e0ec"]]),Vk=1440*60*1e3,$k=["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"],Lk=["січ","лют","бер","квіт","трав","черв","лип","серп","вер","жовт","лист","груд"],Ik=["нд","пн","вт","ср","чт","пт","сб"];function gt(n){return n instanceof Date&&!Number.isNaN(n.getTime())}const Xr=n=>new Date(n.getTime());function yr(n){const e=Xr(n);return e.setHours(0,0,0,0),e}function Ao(n){const e=Xr(n);return e.setHours(23,59,59,999),e}function xa(n){return yr(new Date(n.getFullYear(),n.getMonth(),1))}function va(n){return Ao(new Date(n.getFullYear(),n.getMonth()+1,0))}function Ca(n,e){const t=new Date(n),r=t.getDate();t.setDate(1),t.setMonth(t.getMonth()+e);const o=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return t.setDate(Math.min(r,o)),t}function Ok(n,e){return Ca(n,-1)}function Xs(n,e){const t=new Date(n);return t.setFullYear(t.getFullYear()+e),t}function Lu(n,e){return Xs(n,-e)}function Iu(n){return yr(new Date(n.getFullYear(),0,1))}function Ou(n){return Ao(new Date(n.getFullYear(),11,31))}function Rk(n){const e=Math.floor(n.getFullYear()/10)*10;return yr(new Date(e,0,1))}function Fk(n){const e=Math.floor(n.getFullYear()/10)*10+9;return Ao(new Date(e,11,31))}const nn=n=>n.getFullYear(),Zs=n=>Math.floor(n.getFullYear()/10)*10;function Pk(n){const e=[];let t=yr(n.start);const r=yr(n.end);for(;t<=r;)e.push(Xr(t)),t=new Date(t.getTime()+Vk);return e}function zk(n){const e=[];let t=xa(n.start);const r=va(n.end);for(;t<=r;)e.push(Xr(t)),t=Ca(t,1);return e}function Hk(n){const e=[];let t=Iu(n.start);const r=Ou(n.end);for(;t<=r;)e.push(Xr(t)),t=Xs(t,1);return e}function Sa(n,e=1){const t=yr(n),r=(t.getDay()-e+7)%7;return t.setDate(t.getDate()-r),t}function jk(n,e=1){const t=Sa(n,e);return t.setDate(t.getDate()+6),Ao(t)}function Uk(n,e,t=0){const r=Sa(n,t),o=(e-t+7)%7;return r.setDate(r.getDate()+o),r}const Qs=(n,e)=>!!n&&!!e&&n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth()&&n.getDate()===e.getDate(),Ea=(n,e)=>!!n&&!!e&&n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth(),Ru=(n,e)=>!!n&&!!e&&n.getFullYear()===e.getFullYear(),Fu=(n,e)=>!!n&&!!e&&Qs(n,e)&&n.getHours()===e.getHours(),Wk=(n,e)=>!!n&&!!e&&Fu(n,e)&&n.getMinutes()===e.getMinutes();function Kk(n,e){const t=n.getTime();return t>=e.start.getTime()&&t<=e.end.getTime()}const _o=(n,e)=>!!n&&!!e&&n.getTime()<e.getTime(),To=(n,e)=>!!n&&!!e&&n.getTime()>e.getTime();function qk(n){const e=n.filter(t=>gt(t));if(e.length)return e.reduce((t,r)=>t.getTime()>=r.getTime()?t:r)}function Gk(n){const e=n.filter(t=>gt(t));if(e.length)return e.reduce((t,r)=>t.getTime()<=r.getTime()?t:r)}function Jk(n,e){const t=Xr(n);return typeof e.year=="number"&&t.setFullYear(e.year),typeof e.month=="number"&&t.setMonth(e.month),typeof e.date=="number"&&t.setDate(e.date),typeof e.hours=="number"&&t.setHours(e.hours),typeof e.minutes=="number"&&t.setMinutes(e.minutes),typeof e.seconds=="number"&&t.setSeconds(e.seconds),typeof e.milliseconds=="number"&&t.setMilliseconds(e.milliseconds),t}const ei=(n,e=2)=>String(n).padStart(e,"0");function Pu(n,e){return e==="wide"?$k[n]:Lk[n]}function Yk(n){return Ik[n]}const Xk=[{token:"LLLL",format:n=>Pu(n.getMonth(),"wide")},{token:"LLL",format:n=>Pu(n.getMonth(),"abbreviated")},{token:"EE",format:n=>Yk(n.getDay())},{token:"yyyy",format:n=>String(n.getFullYear())},{token:"MM",format:n=>ei(n.getMonth()+1)},{token:"dd",format:n=>ei(n.getDate())},{token:"HH",format:n=>ei(n.getHours())},{token:"mm",format:n=>ei(n.getMinutes())}];function Bo(n,e){if(!gt(n))return"";let t="",r=0;for(;r<e.length;){const o=Xk.find(i=>e.startsWith(i.token,r));o?(t+=o.format(n),r+=o.token.length):(t+=e[r],r+=1)}return t}const Zk={"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{1,2}):(\d{2})(?::(\d{2}))?$/,"HH:mm":/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/,"MM.yyyy":/^(\d{2})\.(\d{4})$/,yyyy:/^(\d{4})$/};function zu(n,e){const t=Zk[e];if(!t){const o=new Date(n);return gt(o)?o:null}const r=n.match(t);if(!r)return null;switch(e){case"yyyy-MM-dd":{const[,o,i,l]=r,a=new Date(Number(o),Number(i)-1,Number(l));return gt(a)?a:null}case"dd.MM.yyyy":{const[,o,i,l]=r,a=new Date(Number(l),Number(i)-1,Number(o));return gt(a)?a:null}case"dd.MM.yyyy HH:mm":{const[,o,i,l,a,c,d]=r,u=new Date(Number(l),Number(i)-1,Number(o),Number(a),Number(c),Number(d||0));return gt(u)?u:null}case"HH:mm":{const[,o,i,l]=r,a=new Date;return a.setHours(Number(o),Number(i),Number(l||0),0),a}case"MM.yyyy":{const[,o,i]=r;return new Date(Number(i),Number(o)-1,1)}case"yyyy":{const[,o]=r;return new Date(Number(o),0,1)}default:return null}}const Qk=["year","month","day","time","custom"],ew=s.defineComponent({components:{ChevronLeft:Y.ChevronLeft,ChevronRight:Y.ChevronRight},emits:{elementClick:n=>gt(n),left:()=>!0,right:()=>!0,heading:()=>!0,today:()=>!0,clear:()=>!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:n=>typeof n=="string"&&Qk.includes(n)},showButtonBar:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1}},setup(){const e=s.getCurrentInstance()?.appContext?.config?.globalProperties?.$t,t=s.computed(()=>{const o=e?.("form.date.today");return o&&o!=="form.date.today"?o:"Сьогодні"}),r=s.computed(()=>{const o=e?.("form.date.clear");return o&&o!=="form.date.clear"?o:"Очистити"});return{todayLabel:t,clearLabel:r}}}),tw={key:0,class:"p-datepicker-header flex items-center justify-between mb-1.5"},nw=["disabled"],rw=["disabled"],ow={key:0,class:"p-datepicker-weekheader grid [grid-template-columns:var(--popout-column-definition)] text-[12px] text-slate-400 font-medium mb-1.5"},sw=["disabled","onClick"],iw={key:1,class:"p-datepicker-buttonbar mt-2 pt-2 border-t border-slate-200 flex items-center justify-between"};function lw(n,e,t,r,o,i){const l=s.resolveComponent("ChevronLeft"),a=s.resolveComponent("ChevronRight");return s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["p-datepicker-panel p-component text-center text-slate-700 overflow-x-hidden bg-white border border-slate-200 rounded-xl shadow-[0_4px_12px_rgba(0,0,0,0.1)] p-2",n.viewMode==="month"||n.viewMode==="year"?"w-[182px] min-w-[182px]":"w-[268px] min-w-[182px]"]),style:s.normalizeStyle({"--popout-column-definition":`repeat(${n.columnCount}, 1fr)`}),onMousedown:e[5]||(e[5]=s.withModifiers(()=>{},["prevent"]))},[n.hideHeader?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("div",tw,[s.createElementVNode("button",{class:"p-datepicker-prev-button inline-flex items-center justify-center size-8 rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300 disabled:hover:bg-transparent",disabled:n.leftDisabled,onClick:e[0]||(e[0]=s.withModifiers(c=>n.$emit("left"),["stop","prevent"]))},[s.renderSlot(n.$slots,"arrow-left",{},()=>[s.createVNode(l,{class:"h-3.5 w-3.5"})])],8,nw),(s.openBlock(),s.createBlock(s.resolveDynamicComponent(n.headingClickable?"button":"span"),{class:s.normalizeClass(["p-datepicker-title min-w-0 rounded-md px-2 py-1 text-sm font-semibold leading-snug text-slate-700",n.headingClickable?"hover:bg-slate-100":"",n.viewMode==="month"?"p-datepicker-select-year":"",n.viewMode==="year"?"p-datepicker-decade whitespace-nowrap text-xs px-1":""]),onClick:e[1]||(e[1]=s.withModifiers(c=>n.$emit("heading"),["stop","prevent"]))},{default:s.withCtx(()=>[s.renderSlot(n.$slots,"heading")]),_:3},8,["class"])),s.createElementVNode("button",{class:"p-datepicker-next-button inline-flex items-center justify-center size-8 rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300 disabled:hover:bg-transparent",disabled:n.rightDisabled,onClick:e[2]||(e[2]=s.withModifiers(c=>n.$emit("right"),["stop","prevent"]))},[s.renderSlot(n.$slots,"arrow-right",{},()=>[s.createVNode(a,{class:"h-3.5 w-3.5"})])],8,rw)])),s.createElementVNode("div",null,["subheading"in n.$slots?(s.openBlock(),s.createElementBlock("div",ow,[s.renderSlot(n.$slots,"subheading")])):s.createCommentVNode("",!0),s.createElementVNode("div",{class:s.normalizeClass(["p-datepicker-calendar grid [grid-template-columns:var(--popout-column-definition)] text-[12px] text-slate-700",n.viewMode==="month"?"p-datepicker-month-view":"",n.viewMode==="year"?"p-datepicker-year-view":"",n.viewMode==="month"?"gap-y-1":""])},[s.renderSlot(n.$slots,"body",{},()=>[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(n.items,c=>(s.openBlock(),s.createElementBlock("button",{key:c.key,disabled:c.disabled,class:s.normalizeClass(["p-[2px] disabled:text-slate-300"]),onClick:s.withModifiers(d=>n.$emit("elementClick",c.value),["stop","prevent"])},[s.createElementVNode("span",{class:s.normalizeClass([n.viewMode==="month"||n.viewMode==="year"?"inline-flex w-full h-8 items-center justify-center rounded-md text-[13px] font-normal transition-colors":"inline-flex w-8 h-8 items-center justify-center rounded-full text-[13px] font-normal transition-colors",n.viewMode==="month"?"p-datepicker-month":"",n.viewMode==="year"?"p-datepicker-year":"",n.viewMode==="day"?"p-datepicker-day":"",c.selected?"bg-blue-500 text-white font-semibold":"",c.current&&!c.selected&&n.viewMode!=="month"&&n.viewMode!=="year"?"border border-slate-300 font-medium":"",!c.disabled&&!c.selected?"hover:bg-slate-100 hover:text-slate-700":"",!c.current&&!c.selected&&c.disabled?"text-slate-300":""])},s.toDisplayString(c.display),3)],8,sw))),128))])],2),s.renderSlot(n.$slots,"after-calendar"),n.showButtonBar?(s.openBlock(),s.createElementBlock("div",iw,[s.createElementVNode("button",{type:"button",class:"p-datepicker-today-button text-xs font-medium text-slate-500 hover:text-slate-700 transition-colors px-1.5 py-1 rounded-md hover:bg-slate-100",onClick:e[3]||(e[3]=s.withModifiers(c=>n.$emit("today"),["stop","prevent"]))},s.toDisplayString(n.todayLabel),1),s.createElementVNode("button",{type:"button",class:"p-datepicker-clear-button text-xs font-medium text-slate-500 hover:text-slate-700 transition-colors px-1.5 py-1 rounded-md hover:bg-slate-100",onClick:e[4]||(e[4]=s.withModifiers(c=>n.$emit("clear"),["stop","prevent"]))},s.toDisplayString(n.clearLabel),1)])):s.createCommentVNode("",!0)])],38)}const ti=Be(ew,[["render",lw]]),aw=s.defineComponent({components:{PickerPopup:ti},emits:{"update:pageDate":n=>gt(n),select:n=>gt(n)},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},lowerLimit:{type:Date,required:!1},upperLimit:{type:Date,required:!1}},setup(n,{emit:e}){const t=s.computed(()=>Rk(n.pageDate)),r=s.computed(()=>Fk(n.pageDate)),o=(f,p,h)=>!p&&!h?!0:!(p&&nn(f)<nn(p)||h&&nn(f)>nn(h)),i=s.computed(()=>Hk({start:t.value,end:r.value}).map(f=>({value:f,key:String(nn(f)),display:nn(f),selected:!!n.selected&&nn(f)===nn(n.selected),disabled:!o(f,n.lowerLimit,n.upperLimit)}))),l=s.computed(()=>{const f=nn(t.value),p=nn(r.value);return`${f} - ${p}`}),a=s.computed(()=>n.lowerLimit&&(Zs(n.lowerLimit)===Zs(n.pageDate)||_o(n.pageDate,n.lowerLimit))),c=s.computed(()=>n.upperLimit&&(Zs(n.upperLimit)===Zs(n.pageDate)||To(n.pageDate,n.upperLimit)));return{years:i,heading:l,leftDisabled:a,rightDisabled:c,previousPage:()=>e("update:pageDate",Lu(n.pageDate,10)),nextPage:()=>e("update:pageDate",Xs(n.pageDate,10))}}});function cw(n,e,t,r,o,i){const l=s.resolveComponent("picker-popup");return s.openBlock(),s.createBlock(l,{columnCount:2,leftDisabled:n.leftDisabled,rightDisabled:n.rightDisabled,items:n.years,viewMode:"year",onLeft:n.previousPage,onRight:n.nextPage,onElementClick:e[0]||(e[0]=a=>n.$emit("select",a))},{heading:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(n.heading),1)]),_:1},8,["leftDisabled","rightDisabled","items","onLeft","onRight"])}const dw=Be(aw,[["render",cw]]),uw=s.defineComponent({components:{PickerPopup:ti},emits:{"update:pageDate":n=>gt(n),select:n=>gt(n),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(n,{emit:e}){const t=s.computed(()=>Iu(n.pageDate)),r=s.computed(()=>Ou(n.pageDate)),o=s.computed(()=>p=>Bo(p,n.format)),i=(p,h,m)=>!h&&!m?!0:!(h&&_o(p,xa(h))||m&&To(p,va(m))),l=s.computed(()=>zk({start:t.value,end:r.value}).map(p=>({value:p,display:o.value(p),key:o.value(p),selected:!!n.selected&&Ea(n.selected,p),disabled:!i(p,n.lowerLimit,n.upperLimit)}))),a=s.computed(()=>nn(t.value)),c=s.computed(()=>n.lowerLimit&&(Ru(n.lowerLimit,n.pageDate)||_o(n.pageDate,n.lowerLimit))),d=s.computed(()=>n.upperLimit&&(Ru(n.upperLimit,n.pageDate)||To(n.pageDate,n.upperLimit)));return{months:l,heading:a,leftDisabled:c,rightDisabled:d,previousPage:()=>e("update:pageDate",Lu(n.pageDate,1)),nextPage:()=>e("update:pageDate",Xs(n.pageDate,1))}}});function fw(n,e,t,r,o,i){const l=s.resolveComponent("picker-popup");return s.openBlock(),s.createBlock(l,{headingClickable:"",columnCount:3,items:n.months,leftDisabled:n.leftDisabled,rightDisabled:n.rightDisabled,viewMode:"month",onLeft:n.previousPage,onRight:n.nextPage,onHeading:e[0]||(e[0]=a=>n.$emit("back")),onElementClick:e[1]||(e[1]=a=>n.$emit("select",a))},{heading:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(n.heading),1)]),_:1},8,["items","leftDisabled","rightDisabled","onLeft","onRight"])}const pw=Be(uw,[["render",fw]]),hw=s.defineComponent({components:{PickerPopup:ti},emits:{"update:pageDate":n=>gt(n),select:n=>gt(n),back:()=>!0,today:()=>!0,clear:()=>!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:n=>typeof n=="number"&&Number.isInteger(n)&&n>=0&&n<=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(n,{emit:e}){const t=s.computed(()=>y=>b=>Bo(b,y)),r=s.computed(()=>xa(n.pageDate)),o=s.computed(()=>va(n.pageDate)),i=s.computed(()=>({start:r.value,end:o.value})),l=s.computed(()=>({start:Sa(r.value,n.weekStartsOn),end:jk(o.value,n.weekStartsOn)})),a=s.computed(()=>n.customWeekdays?.length===7?n.customWeekdays:null),c=s.computed(()=>{const y=n.weekStartsOn,b=a.value;if(b)return Array.from({length:7}).map((v,S)=>b[(y+S)%7]);const w=t.value(n.weekdayFormat);return Array.from(Array(7)).map((v,S)=>(y+S)%7).map(v=>Uk(new Date,v,n.weekStartsOn)).map(w)}),d=(y,b,w,v)=>v?.dates?.some(S=>Qs(y,S))||v?.predicate?.(y)?!1:!b&&!w?!0:!(b&&_o(y,yr(b))||w&&To(y,Ao(w))),u=s.computed(()=>{const y=new Date,b=t.value(n.format);return Pk(l.value).map(w=>({value:w,display:b(w),selected:!!n.selected&&Qs(n.selected,w),current:Qs(y,w),disabled:!n.allowOutsideInterval&&!Kk(w,i.value)||!d(w,n.lowerLimit,n.upperLimit,n.disabledDates),key:t.value("yyyy-MM-dd")(w)}))}),f=s.computed(()=>t.value(n.headingFormat)(n.pageDate)),p=s.computed(()=>n.lowerLimit&&(Ea(n.lowerLimit,n.pageDate)||_o(n.pageDate,n.lowerLimit))),h=s.computed(()=>n.upperLimit&&(Ea(n.upperLimit,n.pageDate)||To(n.pageDate,n.upperLimit)));return{weekDays:c,days:u,heading:f,leftDisabled:p,rightDisabled:h,previousPage:()=>e("update:pageDate",Ok(n.pageDate)),nextPage:()=>e("update:pageDate",Ca(n.pageDate,1))}}});function mw(n,e,t,r,o,i){const l=s.resolveComponent("picker-popup");return s.openBlock(),s.createBlock(l,{headingClickable:"",leftDisabled:n.leftDisabled,rightDisabled:n.rightDisabled,items:n.days,showButtonBar:!0,viewMode:"day",onLeft:n.previousPage,onRight:n.nextPage,onHeading:e[0]||(e[0]=a=>n.$emit("back")),onElementClick:e[1]||(e[1]=a=>n.$emit("select",a)),onToday:e[2]||(e[2]=a=>n.$emit("today")),onClear:e[3]||(e[3]=a=>n.$emit("clear"))},s.createSlots({heading:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(n.heading),1)]),subheading:s.withCtx(()=>[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(n.weekDays,(a,c)=>(s.openBlock(),s.createElementBlock("span",{key:a,class:s.normalizeClass(`v3dp__subheading__weekday__${c}`)},s.toDisplayString(a),3))),128))]),_:2},[n.$slots["after-calendar"]?{name:"after-calendar",fn:s.withCtx(()=>[s.renderSlot(n.$slots,"after-calendar")]),key:"0"}:void 0]),1032,["leftDisabled","rightDisabled","items","onLeft","onRight"])}const gw=Be(hw,[["render",mw]]),yw=s.defineComponent({components:{PickerPopup:ti,ChevronUp:Y.ChevronUp,ChevronDown:Y.ChevronDown},emits:{select:n=>gt(n),back:()=>!0},props:{selected:{type:Date,required:!1},pageDate:{type:Date,required:!0},visible:{type:Boolean,required:!0},disabledTime:{type:Object,required:!1},embedded:{type:Boolean,default:!1}},setup(n,{emit:e}){const t=s.computed(()=>n.pageDate??n.selected),r=s.ref(t.value.getHours()),o=s.ref(t.value.getMinutes());s.watch(()=>n.selected,h=>{let m=0,g=0;h&&(m=h.getHours(),g=h.getMinutes()),r.value=m,o.value=g});const i=(h,m)=>{const g=Jk(new Date(t.value.getTime()),{hours:h,minutes:m,seconds:0});f(g)&&(r.value=h,o.value=m,e("select",g))},l=(h,m)=>h<0?m:h>m?0:h,a=()=>i(l(r.value+1,23),o.value),c=()=>i(l(r.value-1,23),o.value),d=()=>i(r.value,l(o.value+1,59)),u=()=>i(r.value,l(o.value-1,59)),f=h=>!(n.disabledTime?.dates?.some(m=>Fu(h,m)&&Wk(h,m))||n.disabledTime?.predicate?.(h));return{hours:r,minutes:o,padStartZero:h=>`0${h}`.substr(-2),isEnabled:f,incrementHours:a,decrementHours:c,incrementMinutes:d,decrementMinutes:u}}}),bw={key:0,class:"p-datepicker-time-picker mt-2 pt-2 border-t border-slate-200 flex items-center justify-center gap-2 py-1"},kw={class:"p-datepicker-hour-picker flex flex-col items-center gap-1"},ww={class:"min-w-8 text-center text-sm font-medium text-slate-700"},xw={class:"p-datepicker-minute-picker flex flex-col items-center gap-1"},vw={class:"min-w-8 text-center text-sm font-medium text-slate-700"},Cw={class:"col-span-2"},Sw={class:"p-datepicker-time-picker flex items-center justify-center gap-2 py-1"},Ew={class:"p-datepicker-hour-picker flex flex-col items-center gap-1"},Mw={class:"min-w-8 text-center text-sm font-medium text-slate-700"},Aw={class:"p-datepicker-minute-picker flex flex-col items-center gap-1"},_w={class:"min-w-8 text-center text-sm font-medium text-slate-700"};function Tw(n,e,t,r,o,i){const l=s.resolveComponent("ChevronUp"),a=s.resolveComponent("ChevronDown"),c=s.resolveComponent("picker-popup");return n.embedded?(s.openBlock(),s.createElementBlock("div",bw,[s.createElementVNode("div",kw,[s.createElementVNode("button",{type:"button",class:"p-datepicker-increment-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[0]||(e[0]=s.withModifiers((...d)=>n.incrementHours&&n.incrementHours(...d),["stop","prevent"]))},[s.createVNode(l,{class:"h-3.5 w-3.5"})]),s.createElementVNode("span",ww,s.toDisplayString(n.padStartZero(n.hours)),1),s.createElementVNode("button",{type:"button",class:"p-datepicker-decrement-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[1]||(e[1]=s.withModifiers((...d)=>n.decrementHours&&n.decrementHours(...d),["stop","prevent"]))},[s.createVNode(a,{class:"h-3.5 w-3.5"})])]),e[8]||(e[8]=s.createElementVNode("div",{class:"text-base font-medium text-slate-500"},":",-1)),s.createElementVNode("div",xw,[s.createElementVNode("button",{type:"button",class:"p-datepicker-increment-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[2]||(e[2]=s.withModifiers((...d)=>n.incrementMinutes&&n.incrementMinutes(...d),["stop","prevent"]))},[s.createVNode(l,{class:"h-3.5 w-3.5"})]),s.createElementVNode("span",vw,s.toDisplayString(n.padStartZero(n.minutes)),1),s.createElementVNode("button",{type:"button",class:"p-datepicker-decrement-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[3]||(e[3]=s.withModifiers((...d)=>n.decrementMinutes&&n.decrementMinutes(...d),["stop","prevent"]))},[s.createVNode(a,{class:"h-3.5 w-3.5"})])])])):(s.openBlock(),s.createBlock(c,{key:1,hideHeader:!0,columnCount:2,viewMode:"time"},{body:s.withCtx(()=>[s.createElementVNode("div",Cw,[s.createElementVNode("div",Sw,[s.createElementVNode("div",Ew,[s.createElementVNode("button",{type:"button",class:"p-datepicker-increment-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[4]||(e[4]=s.withModifiers((...d)=>n.incrementHours&&n.incrementHours(...d),["stop","prevent"]))},[s.createVNode(l,{class:"h-3.5 w-3.5"})]),s.createElementVNode("span",Mw,s.toDisplayString(n.padStartZero(n.hours)),1),s.createElementVNode("button",{type:"button",class:"p-datepicker-decrement-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[5]||(e[5]=s.withModifiers((...d)=>n.decrementHours&&n.decrementHours(...d),["stop","prevent"]))},[s.createVNode(a,{class:"h-3.5 w-3.5"})])]),e[9]||(e[9]=s.createElementVNode("div",{class:"text-base font-medium text-slate-500"},":",-1)),s.createElementVNode("div",Aw,[s.createElementVNode("button",{type:"button",class:"p-datepicker-increment-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[6]||(e[6]=s.withModifiers((...d)=>n.incrementMinutes&&n.incrementMinutes(...d),["stop","prevent"]))},[s.createVNode(l,{class:"h-3.5 w-3.5"})]),s.createElementVNode("span",_w,s.toDisplayString(n.padStartZero(n.minutes)),1),s.createElementVNode("button",{type:"button",class:"p-datepicker-decrement-button inline-flex size-8 items-center justify-center rounded-full text-slate-500 transition-colors hover:bg-slate-100 hover:text-slate-700 disabled:text-slate-300",onClick:e[7]||(e[7]=s.withModifiers((...d)=>n.decrementMinutes&&n.decrementMinutes(...d),["stop","prevent"]))},[s.createVNode(a,{class:"h-3.5 w-3.5"})])])])])]),_:1}))}const Bw=Be(yw,[["render",Tw]]),ni=["time","day","month","year"],Nw=(n,e,t=void 0)=>{let r=t||new Date;const o=qk([n,r]);o&&(r=o);const i=Gk([e,r]);return i&&(r=i),r},Dw=s.defineComponent({components:{YearPicker:dw,MonthPicker:pw,DayPicker:gw,TimePicker:Bw,CalendarDays:Y.CalendarDays,Clock3:Y.Clock3,X:Y.X},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:n=>typeof n=="string"&&ni.includes(n)},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:n=>[0,1,2,3,4,5,6].includes(n)},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:n=>typeof n=="string"&&ni.includes(n)}},emits:{"update:modelValue":n=>n==null||gt(n),decadePageChanged:n=>!0,yearPageChanged:n=>!0,monthPageChanged:n=>!0,opened:()=>!0,closed:()=>!0},setup(n,{emit:e}){const t=s.ref("none"),r=s.ref(n.startingViewDate),o=s.ref(null),i=s.ref(null),l=s.ref(null),a=s.ref({}),c=s.ref(!1),d=s.ref(!1),u=s.ref(!1);let f=null;const p=s.ref(""),h=se=>{const me=se.replace(/[a-zA-Z]/g,"0");return/0/.test(me)?me:""},m=s.computed(()=>h(n.inputFormat));let g=null,y=null;const b=()=>{g?.destroy(),g=null},w=async()=>{if(!y){const{default:se}=await Promise.resolve().then(()=>xi);y=se}return y},v=()=>{g&&g.value!==p.value&&(g.value=p.value??"")},S=se=>{const me=se&>(se)?Bo(se,n.inputFormat):"";p.value!==me&&(p.value=me),v()},N=async()=>{if(b(),!i.value||!m.value)return;g=(await w())(i.value,{mask:m.value,lazy:!0,overwrite:!1}),v()};s.watch(()=>n.modelValue,se=>{d.value&&n.typeable||S(se)},{immediate:!0}),s.watch(()=>n.inputFormat,()=>{d.value&&n.typeable||S(n.modelValue)}),s.onMounted(()=>{u.value=!0,m.value&&s.nextTick(()=>{N()})}),s.onBeforeUnmount(()=>{b()}),s.watch(m,se=>{se?s.nextTick(()=>{N()}):b()});const F=s.computed(()=>t.value!=="none"),T=s.computed(()=>n.startingView==="time"&&n.minimumView==="time"),E=s.computed(()=>n.startingView==="day"&&n.minimumView==="time"),_=se=>{n.disabled||(F.value||(r.value=n.modelValue||Nw(n.lowerLimit,n.upperLimit,r.value),e("opened")),t.value=se,s.nextTick(()=>Qe()))},A=()=>{F.value&&(f!==null&&(cancelAnimationFrame(f),f=null),t.value="none",e("closed"))},I=(se="none")=>{se==="none"?A():_(se)};s.watchEffect(()=>{n.disabled&&A()});const U=(se,me)=>{r.value=me,se==="year"?e("decadePageChanged",me):se==="month"?e("yearPageChanged",me):se==="day"&&e("monthPageChanged",me)},Z=se=>{r.value=se,n.minimumView==="year"?(A(),S(se),e("update:modelValue",se)):_("month")},V=se=>{r.value=se,n.minimumView==="month"?(A(),S(se),e("update:modelValue",se)):_("day")},z=se=>{const me=E.value?(()=>{const Ee=n.modelValue||r.value||new Date,Me=new Date(se);return Me.setHours(Ee.getHours(),Ee.getMinutes(),0,0),Me})():se;r.value=me,n.minimumView==="day"?(A(),S(me),e("update:modelValue",me)):E.value?(S(me),e("update:modelValue",me),_("day")):_("time")},oe=se=>{S(se),e("update:modelValue",se)},K=()=>{z(new Date)},G=()=>{n.clearable&&(A(),S(null),e("update:modelValue",null),r.value=n.startingViewDate)},X=()=>{F.value||_(ae.value)},ce=()=>{d.value=!0,c.value=!1,_(ae.value)},j=()=>{d.value=!1,n.typeable&&O({closeOnSuccess:!1,revertOnInvalid:!0})},L=se=>{const me=se.target;if(p.value=me?.value??"",!n.typeable)return;const Ee=zu(p.value,n.inputFormat);Ee&&p.value===Bo(Ee,n.inputFormat)&&(r.value=Ee)},O=({closeOnSuccess:se,revertOnInvalid:me})=>{const Ee=i.value?.value??p.value,Me=zu(Ee,n.inputFormat);return!!Me&&Ee===Bo(Me,n.inputFormat)&&Me?(r.value=Me,S(Me),e("update:modelValue",Me),se&&A(),!0):(S(n.modelValue),!1)},ne=se=>{const me=se.keyCode?se.keyCode:se.which,Ee=me===27,Me=me===13;if(Ee){A(),i.value?.blur();return}n.typeable&&Me&&(O({closeOnSuccess:!0,revertOnInvalid:!0})||i.value?.focus())},ae=s.computed(()=>{const se=ni.indexOf(n.startingView),me=ni.indexOf(n.minimumView);return se<me?n.minimumView:n.startingView}),re=s.computed(()=>n.weekDayNames?.length===7?n.weekDayNames:void 0),he=()=>n.startingView==="time"&&n.minimumView==="time"?null:_("day"),Ae=()=>{if(!i.value||!l.value)return;const se=4,me=8,Ee=i.value.getBoundingClientRect(),Me=l.value.getBoundingClientRect(),Ct=l.value.firstElementChild?.getBoundingClientRect(),et=window.innerWidth,Xe=window.innerHeight,ft=window.scrollX||window.pageXOffset,Vt=window.scrollY||window.pageYOffset,W=Math.max(160,Xe-me*2),ee=Math.min(Me.height||0,W),ue=Xe-Ee.bottom-se-me,R=Ee.top-se-me,M=ue<ee&&R>ue;let D=M?Ee.top-se-ee:Ee.bottom+se;D=Math.max(me,Math.min(D,Xe-me-ee));const H=Ct?.width||Me.width||268;let te=Ee.left;te+H>et-me&&(te=et-me-H),te<me&&(te=me);const we=M?Math.max(120,Ee.top-se-me):Math.max(120,Xe-Ee.bottom-se-me);a.value={position:"absolute",top:`${Math.round(D+Vt)}px`,left:`${Math.round(te+ft)}px`,maxHeight:`${Math.round(Math.min(W,we))}px`,overflowX:"hidden",overflowY:"auto",zIndex:"2147483000"},E.value&&t.value==="day"&&(a.value.minWidth="345px")},Ce=(se,me)=>se.bottom>me.top&&se.top<me.bottom&&se.right>me.left&&se.left<me.right,$e=se=>{const me=[];let Ee=se.parentElement;for(;Ee;){const Me=window.getComputedStyle(Ee),Ye=Me.overflowY,Ct=Me.overflowX,et=["auto","scroll","hidden","clip"].includes(Ye),Xe=["auto","scroll","hidden","clip"].includes(Ct);(et||Xe)&&me.push(Ee),Ee=Ee.parentElement}return me},it=()=>{if(!i.value)return!1;const se=i.value.getBoundingClientRect(),me=new DOMRect(0,0,window.innerWidth,window.innerHeight);return Ce(se,me)?$e(i.value).every(Me=>Ce(se,Me.getBoundingClientRect())):!1},Fe=()=>{if(F.value){if(!it()){c.value=!0,A();return}Qe();return}c.value&&document.activeElement===i.value&&it()&&(c.value=!1,_(ae.value))};s.watch(t,()=>{F.value&&s.nextTick(()=>Qe())});const Qe=()=>{Ae(),f!==null&&cancelAnimationFrame(f),f=requestAnimationFrame(()=>{Ae(),f=null})};s.onMounted(()=>{window.addEventListener("resize",Fe),window.addEventListener("scroll",Fe,!0),document.addEventListener("pointerdown",We,!0)}),s.onBeforeUnmount(()=>{f!==null&&(cancelAnimationFrame(f),f=null),window.removeEventListener("resize",Fe),window.removeEventListener("scroll",Fe,!0),document.removeEventListener("pointerdown",We,!0)});const We=se=>{if(t.value==="none")return;const me=se.target;if(!me)return;const Ee=!!o.value?.contains(me),Me=!!l.value?.contains(me);!Ee&&!Me&&(c.value=!1,A())};return{rootRef:o,blur:j,focus:ce,click:X,input:p,inputRef:i,pageDate:r,renderView:I,updatePageDate:U,selectYear:Z,selectMonth:V,selectDay:z,selectToday:K,selectTime:oe,keyUp:ne,onInput:L,isTimeOnlyMode:T,isDateTimeMode:E,normalizedWeekdayNames:re,viewShown:t,goBackFromTimepicker:he,clearModelValue:G,initialView:ae,log:se=>console.log(se),popupAnchorStyle:a,popupRef:l,isMounted:u}}}),Vw={ref:"rootRef",class:"relative"},$w={class:"p-datepicker p-component p-inputwrapper relative"},Lw=["readonly","value","placeholder","disabled","tabindex"],Iw={class:"p-datepicker-input-icon-container absolute right-2 top-1/2 -translate-y-1/2 pointer-events-none text-slate-400"},Ow={class:"absolute right-8 top-1/2 -translate-y-1/2"};function Rw(n,e,t,r,o,i){const l=s.resolveComponent("Clock3"),a=s.resolveComponent("CalendarDays"),c=s.resolveComponent("X"),d=s.resolveComponent("year-picker"),u=s.resolveComponent("month-picker"),f=s.resolveComponent("time-picker"),p=s.resolveComponent("day-picker");return s.openBlock(),s.createElementBlock("div",Vw,[s.createElementVNode("div",$w,[s.createElementVNode("input",s.mergeProps({type:"text",ref:"inputRef",class:"p-inputtext p-component p-datepicker-input",readonly:!n.typeable,value:n.input},n.$attrs,{placeholder:n.placeholder,disabled:n.disabled,tabindex:n.disabled?-1:0,onInput:e[0]||(e[0]=(...h)=>n.onInput&&n.onInput(...h)),onKeyup:e[1]||(e[1]=(...h)=>n.keyUp&&n.keyUp(...h)),onBlur:e[2]||(e[2]=(...h)=>n.blur&&n.blur(...h)),onFocus:e[3]||(e[3]=(...h)=>n.focus&&n.focus(...h)),onClick:e[4]||(e[4]=(...h)=>n.click&&n.click(...h))}),null,16,Lw),s.createElementVNode("span",Iw,[n.isTimeOnlyMode?(s.openBlock(),s.createBlock(l,{key:0,class:"h-4 w-4"})):(s.openBlock(),s.createBlock(a,{key:1,class:"h-4 w-4"}))]),s.withDirectives(s.createElementVNode("div",Ow,[s.renderSlot(n.$slots,"clear",{onClear:n.clearModelValue},()=>[s.createElementVNode("button",{type:"button",class:"inline-flex h-5 w-5 items-center justify-center rounded-full text-slate-400 transition-colors hover:bg-slate-100 hover:text-slate-600 focus:outline-none focus:ring-2 focus:ring-blue-500/30","aria-label":"Очистити дату",onClick:e[5]||(e[5]=h=>n.clearModelValue())},[s.createVNode(c,{class:"h-3 w-3"})])])],512),[[s.vShow,n.clearable&&n.modelValue]])]),n.isMounted?(s.openBlock(),s.createBlock(s.Teleport,{key:0,to:"body"},[s.withDirectives(s.createElementVNode("div",{ref:"popupRef",style:s.normalizeStyle(n.popupAnchorStyle)},[s.withDirectives(s.createVNode(d,{pageDate:n.pageDate,"onUpdate:pageDate":e[6]||(e[6]=h=>n.updatePageDate("year",h)),selected:n.modelValue,lowerLimit:n.lowerLimit,upperLimit:n.upperLimit,onSelect:n.selectYear},null,8,["pageDate","selected","lowerLimit","upperLimit","onSelect"]),[[s.vShow,n.viewShown==="year"]]),s.withDirectives(s.createVNode(u,{pageDate:n.pageDate,"onUpdate:pageDate":e[7]||(e[7]=h=>n.updatePageDate("month",h)),selected:n.modelValue,onSelect:n.selectMonth,lowerLimit:n.lowerLimit,upperLimit:n.upperLimit,format:n.monthListFormat,onBack:e[8]||(e[8]=h=>n.viewShown="year")},null,8,["pageDate","selected","onSelect","lowerLimit","upperLimit","format"]),[[s.vShow,n.viewShown==="month"]]),s.withDirectives(s.createVNode(p,{pageDate:n.pageDate,"onUpdate:pageDate":e[9]||(e[9]=h=>n.updatePageDate("day",h)),selected:n.modelValue,weekStartsOn:n.weekStartsOn,lowerLimit:n.lowerLimit,upperLimit:n.upperLimit,headingFormat:n.dayPickerHeadingFormat,disabledDates:n.disabledDates,weekdayFormat:n.weekdayFormat,"allow-outside-interval":n.allowOutsideInterval,format:n.dayFormat,"custom-weekdays":n.normalizedWeekdayNames,onSelect:n.selectDay,onToday:n.selectToday,onClear:n.clearModelValue,onBack:e[10]||(e[10]=h=>n.viewShown="month")},s.createSlots({_:2},[n.isDateTimeMode?{name:"after-calendar",fn:s.withCtx(()=>[s.createVNode(f,{embedded:!0,pageDate:n.pageDate,visible:n.viewShown==="day"&&n.isDateTimeMode,selected:n.modelValue,disabledTime:n.disabledTime,onSelect:n.selectTime,onBack:n.goBackFromTimepicker},null,8,["pageDate","visible","selected","disabledTime","onSelect","onBack"])]),key:"0"}:void 0]),1032,["pageDate","selected","weekStartsOn","lowerLimit","upperLimit","headingFormat","disabledDates","weekdayFormat","allow-outside-interval","format","custom-weekdays","onSelect","onToday","onClear"]),[[s.vShow,n.viewShown==="day"]]),s.withDirectives(s.createVNode(f,{pageDate:n.pageDate,visible:n.viewShown==="time",selected:n.modelValue,disabledTime:n.disabledTime,onSelect:n.selectTime,onBack:n.goBackFromTimepicker},null,8,["pageDate","visible","selected","disabledTime","onSelect","onBack"]),[[s.vShow,n.viewShown==="time"&&!n.isDateTimeMode]])],4),[[s.vShow,n.viewShown!=="none"]])])):s.createCommentVNode("",!0)],512)}const Fw=Be(Dw,[["render",Rw]]),Hu=Be(s.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},dateFormat:{},mode:{default:"date"},weekStart:{},dayNames:{},maxDaysFromNow:{},style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{default:""},name:{},placeholder:{default:""},maxlength:{},minlength:{}},emits:["update:modelValue"],setup(n,{emit:e}){const t=n,r=e,{inputClass:o}=Bt(t.style),i=s.getCurrentInstance(),l=s.computed(()=>t.mode?t.mode:t.time?"datetime":"date"),a=s.computed(()=>["py-1.5 px-3 block w-full placeholder:text-[#767f8f] bg-white",o.value,t.customClass,{"!border-red-600":t.error}]),c=s.computed(()=>!t.modelValue&&t.now?new Date:null),d=s.computed({get:()=>E(t.modelValue??c.value,l.value)||void 0,set:j=>r("update:modelValue",_(j,l.value))}),u=["Пн","Вт","Ср","Чт","Пт","Сб","Нд"],f=s.computed(()=>{if(t.dayNames?.length)return t.dayNames.length===7?t.dayNames:u}),p=s.computed(()=>{const j=t.weekStart,L=typeof j=="string"?Number(j):j;return L===void 0||Number.isNaN(L)?1:Math.min(6,Math.max(0,L))}),h=s.computed(()=>{const j=t.maxDaysFromNow;if(j==null||j==="")return;const L=typeof j=="string"?Number(j):j;if(!Number.isFinite(L)||L<0)return;const O=new Date;return O.setHours(0,0,0,0),O.setDate(O.getDate()+L),O.setHours(23,59,59,999),O}),m=s.computed(()=>{switch(l.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"}}}),g={date:"dd.MM.yyyy",datetime:"dd.MM.yyyy HH:mm",month:"MM.yyyy",time:"HH:mm",week:"dd.MM.yyyy",year:"yyyy"};function y(){const j=i?.appContext?.config?.globalProperties?.$i18n?.locale;if(typeof j=="string"&&j)return j;if(j&&typeof j=="object"&&"value"in j&&j.value)return String(j.value);if(typeof localStorage<"u"){const L=localStorage.getItem("locale")||localStorage.getItem("language");if(L)return L}return"uk"}function b(){const L=i?.appContext?.config?.globalProperties?.$settings?.dateFormat;if(!L)return"";if(typeof L=="string")return L;if(typeof L=="object"){const O=y();return L[O]||L[O.split("-")[0]]||L.uk||L.en||""}return""}function w(j){return j?j.replaceAll("dd","__DAY2__").replaceAll("d","__DAY1__").replaceAll("mm","__MONTH2__").replaceAll("m","__MONTH1__").replaceAll("yy","__YEAR2__").replaceAll("y","__YEAR1__").replaceAll("__DAY2__","dd").replaceAll("__DAY1__","d").replaceAll("__MONTH2__","MM").replaceAll("__MONTH1__","M").replaceAll("__YEAR2__","yy").replaceAll("__YEAR1__","yyyy"):""}const v=s.computed(()=>{const j=g[l.value]||"dd.MM.yyyy";if(l.value==="time")return j;const L=t.dateFormat||b();if(!L)return j;const O=w(L);return O?l.value==="datetime"?`${O} HH:mm`:O:j});function S(j,L){return j?L==="week"?"рррр-тиждень":j.replaceAll("yyyy","рррр").replaceAll("yy","рр").replaceAll("MM","мм").replaceAll("M","м").replaceAll("dd","дд").replaceAll("d","д").replaceAll("HH","гг").replaceAll("H","г").replaceAll("mm",L==="time"||L==="datetime"?"хх":"мм"):""}const N={date:"дд.мм.рррр",datetime:"дд.мм.рррр гг:хх",month:"мм.рррр",week:"рррр-тиждень",time:"гг:хх",year:"рррр"},F=s.computed(()=>{if(t.placeholder)return t.placeholder;const j=l.value;return S(v.value,j)||N[j]||""}),T=s.ref(!1);s.watch(()=>t.modelValue,j=>{j?T.value=!0:t.now||(T.value=!1)},{immediate:!0}),s.watchEffect(()=>{t.now&&!t.modelValue&&!T.value&&(r("update:modelValue",_(new Date,l.value)),T.value=!0)}),s.watch(v,()=>{r("update:modelValue",_(d.value,l.value))});function E(j,L){if(!j)return null;if(j instanceof Date&&!Number.isNaN(j.getTime()))return j;if(typeof j!="string")return null;switch(L){case"datetime":return Z(j);case"time":return oe(j);case"month":return V(j);case"year":return z(j);case"week":return K(j);case"date":default:return U(j)}}function _(j,L){if(!j)return null;const O=j instanceof Date?j:E(j,L);if(!O)return null;switch(L){case"datetime":return`${A(O)}T${I(O)}`;case"time":return I(O);case"month":return`${O.getFullYear()}-${ce(O.getMonth()+1)}`;case"year":return`${O.getFullYear()}`;case"week":{const{year:ne,week:ae}=G(O);return`${ne}-W${ce(ae)}`}case"date":default:return A(O)}}function A(j){return`${j.getFullYear()}-${ce(j.getMonth()+1)}-${ce(j.getDate())}`}function I(j){return`${ce(j.getHours())}:${ce(j.getMinutes())}`}function U(j){const L=j.split("-");if(L.length<3)return null;const O=Number(L[0]),ne=Number(L[1]),ae=parseInt(L[2],10);return!O||!ne||!ae?null:new Date(O,ne-1,ae)}function Z(j){const L=j.includes("T")?j:j.replace(" ","T"),O=new Date(L);return Number.isNaN(O.getTime())?null:O}function V(j){const[L,O]=j.split("-").map(Number);return!L||Number.isNaN(O)?null:new Date(L,(O||1)-1,1)}function z(j){const L=Number(j);return L?new Date(L,0,1):null}function oe(j){const L=j.trim().match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/);if(!L)return null;const[,O,ne,ae]=L,re=new Date;return re.setHours(Number(O),Number(ne),Number(ae||0),0),re}function K(j){const L=j.match(/^(\d{4})-W(\d{2})$/);if(!L)return null;const[,O,ne]=L,ae=Number(ne);return X(Number(O),ae)}function G(j){const L=new Date(Date.UTC(j.getFullYear(),j.getMonth(),j.getDate())),O=L.getUTCDay()||7;L.setUTCDate(L.getUTCDate()+4-O);const ne=new Date(Date.UTC(L.getUTCFullYear(),0,1)),ae=Math.ceil(((L.getTime()-ne.getTime())/864e5+1)/7);return{year:L.getUTCFullYear(),week:ae}}function X(j,L){if(!j||!L)return null;const O=new Date(j,0,1+(L-1)*7),ne=O.getDay(),ae=O;return ne<=4?ae.setDate(O.getDate()-O.getDay()+1):ae.setDate(O.getDate()+8-O.getDay()),ae}function ce(j){return String(j).padStart(2,"0")}return(j,L)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["vs-date-picker",t.customClass])},[s.createVNode(Fw,{modelValue:d.value,"onUpdate:modelValue":L[0]||(L[0]=O=>d.value=O),placeholder:F.value,disabled:t.disabled,clearable:t.clearable,typeable:t.editable,"week-day-names":f.value,"week-starts-on":p.value,"starting-view":m.value.startingView,"minimum-view":m.value.minimumView,"input-format":v.value,"upper-limit":h.value,name:t.name,class:s.normalizeClass(a.value)},null,8,["modelValue","placeholder","disabled","clearable","typeable","week-day-names","week-starts-on","starting-view","minimum-view","input-format","upper-limit","name","class"])],2))}}),[["__scopeId","data-v-637c8950"]]),Pw=(n,e)=>{if(!e||!Object.keys(e).length)return n;const[t,r=""]=n.split("?"),o=new URLSearchParams(r);Object.entries(e).forEach(([l,a])=>{a==null||a===""||o.set(l,String(a))});const i=o.toString();return i?`${t}?${i}`:t},zw=(n,e,t)=>new Promise((r,o)=>{const i=new FormData;i.append("unique","true"),i.append("file",n);const l=new XMLHttpRequest;l.open("POST",e),l.upload.addEventListener("progress",a=>{if(t){if(a.lengthComputable&&a.total>0){t(Math.min(100,Math.round(a.loaded/a.total*100)));return}t(0)}}),l.addEventListener("load",()=>{try{const a=l.responseText?JSON.parse(l.responseText):{};if(l.status>=200&&l.status<300){r(a?.result??null);return}o(new Error(a?.message||a?.error||`Код помилки: ${l.status}`))}catch(a){o(a)}}),l.addEventListener("error",()=>o(new Error("Помилка мережі під час завантаження файлу"))),l.addEventListener("abort",()=>o(new Error("Завантаження файлу скасовано"))),l.send(i)}),Hw=async(n,e={})=>{try{const{api:t,id:r="1",form:o="form",table:i="table",customParams:l,onProgress:a}=e,c=t||`/file/upload/uploads?id=${r||""}&form=${o||""}&table=${i||""}`,d=Pw(c,l);if(n instanceof File)return await zw(n,d,a);const u=new FormData;return u.append("unique","true"),u.append("file",n),(await fetch(d,{method:"POST",body:u}).then(p=>p.json()))?.result}catch(t){return ke.notify({type:"error",title:"Помилка!",message:"Сталась помилка під час завантаження файлу",position:"right-bottom"}),console.error("Сталась помилка завантаження файлу",t),null}},jw=async n=>{try{return await fetch(`file/delete/${n}`),!0}catch(e){return console.error(e),!1}},ju=async n=>{try{const e=await fetch(`/file/download/${n}`);if(!e.ok)throw new Error(`Download failed with status ${e.status}`);const t=await e.blob(),o=(e.headers.get("content-disposition")||"").match(/filename\*?=(?:UTF-8''|")?([^\";]+)/i),i=o?.[1]?decodeURIComponent(o[1].replace(/"/g,"").trim()):"",l=n.split("/").filter(Boolean).pop()||"download",a=i||l,c=document.createElement("a");c.setAttribute("download",a),c.href=window.URL.createObjectURL(t),c.click(),window.URL.revokeObjectURL(c.href)}catch(e){console.error(e.message)}},Uw=n=>{if(!n)return"";const e=n?.split(".");return e[e.length-1]},Ma=n=>{const e=Uw(n),t={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 t.imageFormat.includes(e)?"img":t.sheetsFormat.includes(e)?Y.Table:t.textsFormat.includes(e)?Y.FileCode:t.documentsFormat.includes(e)?Y.FileText:t.archivesFormat.includes(e)?Y.FileArchive:Y.FileText},Ww=["title"],Kw={key:0,class:"absolute inset-0 flex flex-col items-center justify-center gap-1 rounded-lg bg-white/90 px-2 text-center text-xs font-medium text-slate-600"},qw=["title"],Gw={class:"absolute hidden top-0 right-0 flex items-center gap-x-2 w-full h-full justify-center"},rn=Be(s.defineComponent({__name:"vs-input-file-list-item",props:s.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{},action:{type:Boolean,default:!1},isUploading:{type:Boolean,default:!1},progressPercent:{default:0},title:{default:""}},{value:{},valueModifiers:{},item:{},itemModifiers:{}}),emits:s.mergeModels(["click"],["update:value","update:item"]),setup(n,{emit:e}){const t=s.useModel(n,"value"),r=s.useModel(n,"item"),o=e,i=n,l=s.computed(()=>i.action),a=s.computed(()=>r.value?typeof r.value=="string"?r.value:r.value.file_path:""),c=s.computed(()=>i.disabled?"opacity-50 cursor-not-allowed":i.isUploading?"cursor-default text-blue-500":"cursor-pointer hover:border-blue-500 hover:bg-blue-50 hover:text-blue-500"),d=s.computed(()=>i.progressPercent>0?`${i.progressPercent}%`:"Завантаження..."),u=m=>typeof m=="string"?m:m?.file_path||"",f=()=>{const m=a.value;jw(m),i.multiple&&Array.isArray(t.value)?t.value=t.value.filter(g=>u(g)!==m):t.value=""},p=()=>{a.value&&window.open(a.value,"_blank")},h=()=>{i.disabled||i.isUploading||o("click")};return(m,g)=>l.value?(s.openBlock(),s.createElementBlock("div",{key:0,title:m.title,class:s.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",c.value]),onClick:h},[m.isUploading?(s.openBlock(),s.createElementBlock("div",Kw,[g[2]||(g[2]=s.createElementVNode("div",{class:"loader"},null,-1)),s.createElementVNode("span",null,s.toDisplayString(d.value),1)])):(s.openBlock(),s.createBlock(s.unref(Y.Plus),{key:1,class:"h-4 w-4"}))],10,Ww)):(s.openBlock(),s.createElementBlock("div",{key:1,title:a.value,class:"h-[120px] w-[120px] border text-gray-300 border-dashed border-[#CFD9E0] rounded-lg overflow-hidden relative item-file"},[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(s.unref(Ma)(a.value)),{src:`${s.unref(Ma)(a.value)} === 'img'`?`/file/resize?filepath=${a.value}&format=webp`:a.value,alt:"file",class:"w-full h-full object-cover cursor-pointer",onClick:g[0]||(g[0]=y=>s.unref(ju)(a.value))},null,8,["src"])),s.createElementVNode("div",Gw,[s.createElementVNode("button",{type:"button",onClick:f,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-red-500"},[s.createVNode(s.unref(Y.Trash2),{class:"w-4 h-4"})]),s.createElementVNode("button",{type:"button",onClick:p,class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-emerald-600"},[s.createVNode(s.unref(Y.Eye),{class:"w-4 h-4"})]),s.createElementVNode("button",{type:"button",onClick:g[1]||(g[1]=y=>s.unref(ju)(a.value)),class:"w-6 h-6 flex items-center justify-center text-gray-500 bg-gray-200 rounded-lg hover:text-blue-500"},[s.createVNode(s.unref(Y.Download),{class:"w-4 h-4"})])])],8,qw))}}),[["__scopeId","data-v-b03cac5c"]]),Aa=n=>n?n.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).map(e=>e.startsWith(".")?e.slice(1):e):[],_a=(n,e)=>!e||n.size<=e*1024*1024?!0:(ke.notify({type:"error",title:"Помилка!",message:`Файл "${n.name}" занадто великий. Максимальний розмір: ${e} МБ`,position:"right-bottom"}),!1),Ta=(n,e)=>{if(!e.length)return!0;const t=n.name.split(".").pop()?.toLowerCase()||"";return e.includes(t)?!0:(ke.notify({type:"error",title:"Помилка!",message:`Неприпустимий формат файлу "${n.name}". Дозволені формати: ${e.map(r=>`.${r}`).join(", ")}`,position:"right-bottom"}),!1)},Uu=(n,e)=>{const t={},r=[];if(!n?.length)return{ok:!0,params:t,missingSources:r};const o=e?.value??{};return n.forEach(i=>{if(!i)return;const[l,a]=i.split("="),c=l?.trim(),d=a?.trim();if(!c||!d)return;const u=o[d];if(u==null||u===""){r.push(d);return}t[c]=u}),r.length?(ke.notify({type:"warning",title:"Заповніть поля",message:`Поля (${r.join(", ")}) необхідні для завантаження файлу`,position:"right-bottom"}),{ok:!1,params:t,missingSources:r}):{ok:!0,params:t,missingSources:r}},Wu=(n,e)=>!e||!Array.isArray(n)?[]:n,Ku=(n,e)=>e||Array.isArray(n)?null:n,qu=n=>{if(!n)return"";const e=n.split(/[/\\]/).pop()||"",t=e.lastIndexOf(".");return t<=0||t===e.length-1?"":e.slice(t+1).toLowerCase()},Jw={class:"flex items-center flex-wrap gap-2"},Yw=["accept","multiple","disabled"],Gu=s.defineComponent({__name:"vs-input-file",props:s.mergeModels({format:{},multiple:{type:Boolean},max_size:{},api:{},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{},modelModifiers:{}}),emits:s.mergeModels(["change"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=s.useModel(n,"modelValue"),o=e,i=s.ref(null),l=s.ref(!1),a=s.ref([]),c=s.inject("values"),d=s.inject("map-file-import-uploading",null),u=s.computed(()=>Wu(r.value,!!t.multiple)),f=s.computed(()=>Ku(r.value,!!t.multiple)),p=s.computed(()=>Aa(t.format)),h=s.computed(()=>Uu(t.customParams,c)),m=F=>{ke.notify({type:"error",title:"Помилка завантаження",message:F||"Не вдалося завантажити файл. Спробуйте ще раз.",position:"right-bottom"})},g=()=>{t.disabled||l.value||h.value.ok&&i.value?.click()},y=async(F,T)=>{const E={api:t.api,customParams:Object.keys(h.value.params).length?h.value.params:void 0,onProgress:A=>{T&&(T.status="uploading",T.progressPercent=A)}},_=await Hw(F,E);return _?.file_path?_.file_path:null};s.watch(l,F=>{d&&(d.value=F)},{immediate:!0});const b=s.computed(()=>a.value.filter(F=>F.status!=="done")),w=s.computed(()=>b.value[0]||null),v=F=>typeof F=="string"?F:F?.file_path||"",S=(F,T)=>({key:`${Date.now()}-${T}-${F.name}`,file:F,size:F.size,uploaded:0,status:"pending",error:null,path:null,progressPercent:0}),N=async F=>{const{files:T}=F.target;if(!T||T.length===0)return;if(!h.value.ok){i.value&&(i.value.value="");return}const E=Array.from(T);if(t.max_size&&E.filter(I=>!_a(I,t.max_size)).length>0){i.value&&(i.value.value="");return}if(E.filter(A=>!Ta(A,p.value)).length>0){i.value&&(i.value.value="");return}l.value=!0,a.value=E.map((A,I)=>S(A,I));try{if(t.multiple){const Z=await Promise.all(E.map(async(K,G)=>{const X=a.value[G];X.status="uploading",X.progressPercent=0;const ce=await y(K,X);return ce?(X.status="done",X.path=ce,X.uploaded=X.size,X.progressPercent=100):(X.status="error",X.error="Помилка при завантаженні"),ce})),V=Z.filter(K=>!!K);if(V.length===0){m();return}V.length<Z.length&&m("Деякі файли не вдалося завантажити. Перевірте їх та спробуйте знову.");const z=V,oe=Array.isArray(r.value)?r.value:r.value?[r.value]:[];r.value=[...oe,...z],o("change",r.value);return}const A=E[0],I=a.value[0];I.status="uploading",I.progressPercent=0;const U=await y(A,I);if(!U){I.status="error",I.error="Помилка при завантаженні",m();return}I.status="done",I.path=U,I.uploaded=I.size,I.progressPercent=100,r.value=U,o("change",U)}catch(A){m(A?.message||void 0)}finally{l.value=!1,a.value=[],i.value&&(i.value.value="")}};return(F,T)=>(s.openBlock(),s.createElementBlock("div",Jw,[s.createElementVNode("input",{class:"hidden",ref_key:"fileInput",ref:i,type:"file",accept:t.format,multiple:t.multiple,onChange:N,disabled:l.value||F.disabled},null,40,Yw),f.value?(s.openBlock(),s.createBlock(rn,{key:0,item:f.value,value:r.value,"onUpdate:value":T[0]||(T[0]=E=>r.value=E)},null,8,["item","value"])):s.createCommentVNode("",!0),t.multiple?(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(u.value,(E,_)=>(s.openBlock(),s.createBlock(rn,{key:`${_}-${v(E)}`,multiple:!0,item:E,value:r.value,"onUpdate:value":T[1]||(T[1]=A=>r.value=A)},null,8,["item","value"]))),128)),(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(b.value,E=>(s.openBlock(),s.createBlock(rn,{key:E.key,action:"","is-uploading":!0,disabled:!0,"progress-percent":E.progressPercent,title:E.file.name},null,8,["progress-percent","title"]))),128)),s.createVNode(rn,{action:"","is-uploading":!1,disabled:F.disabled||l.value,title:"Додати файли",onClick:g},null,8,["disabled"])],64)):!t.multiple&&!w.value?(s.openBlock(),s.createBlock(rn,{key:2,action:"","is-uploading":!1,disabled:F.disabled||l.value,title:"Оновити файл",onClick:g},null,8,["disabled"])):w.value?(s.openBlock(),s.createBlock(rn,{key:3,action:"","is-uploading":!0,disabled:!0,"progress-percent":w.value.progressPercent,title:w.value.file.name},null,8,["progress-percent","title"])):s.createCommentVNode("",!0)]))}}),Xw={class:"vs-input-file2 flex flex-col gap-4"},Zw={class:"flex items-center flex-wrap gap-2"},Qw=["multiple","accept","disabled"],e1={key:0,class:"text-sm text-rose-600"},ri=s.defineComponent({__name:"vs-input-file2",props:s.mergeModels({format:{},max_size:{},api:{},multiple:{type:Boolean,default:!1},chunkSize:{default:5*1024*1024},subdir:{default:""},customParams:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref(null),o=s.ref(!1),i=s.ref(""),l=s.ref([]),a=s.inject("values"),c=s.computed(()=>!!e.multiple),d=s.computed(()=>Aa(e.format)),u=s.computed(()=>{if(d.value.length)return d.value.map(E=>`.${E}`).join(",")}),f=s.computed(()=>Wu(t.value,c.value)),p=s.computed(()=>Ku(t.value,c.value)),h=s.computed(()=>Uu(e.customParams,a)),m=s.computed(()=>l.value.filter(E=>E.status!=="done")),g=s.computed(()=>c.value?null:m.value[0]||null),y=s.computed(()=>{const E=m.value,_=E.reduce((I,U)=>I+U.size,0);if(!_)return 0;const A=E.reduce((I,U)=>I+Math.min(U.uploaded,U.size),0);return Math.min(100,Math.round(A/_*100))}),b=()=>{e.disabled||o.value||h.value.ok&&r.value?.click()},w=async(E,_)=>{const A=_||F(E,0);try{A.status="uploading";const I={id:"",fileName:A.file.name,subdir:e.subdir,size:A.file.size,...h.value.params},U=await fetch(`${e.api||"/file/upload2"}/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(I)});if(!U.ok)throw new Error("Не вдалося ініціалізувати завантаження");const Z=await U.json().catch(()=>({}));A.uploadId=Z.id||"",A.uploaded=Number(Z.uploaded)||0,A.progressPercent=A.size?Math.min(100,Math.round(A.uploaded/A.size*100)):0;const V=e.chunkSize??5*1024*1024;for(;A.uploaded<A.size;){const K=A.uploaded,G=Math.min(K+V,A.size),ce=await A.file.slice(K,G).arrayBuffer(),j=await fetch(`${e.api||"/file/upload2"}/${A.uploadId}`,{method:"PATCH",headers:{"Content-Range":`bytes ${K}-${G-1}/${A.size}`,"Content-Type":"application/octet-stream"},body:ce});if(!j.ok)throw new Error("Помилка завантаження частини");const L=await j.json().catch(()=>({})),O=L.uploaded!=null?Number(L.uploaded):G;if(A.uploaded=O,A.progressPercent=A.size?Math.min(100,Math.round(A.uploaded/A.size*100)):0,L.finished||O>=A.size){const ne=qu(A.file.name),ae=L.file_path||L.filepath||L.url||(ne?`/files/uploads/${A.uploadId}.${ne}`:`/files/uploads/${A.uploadId}`);return A.path=ae,A.status="done",N(ae),ae}}const z=qu(A.file.name),oe=`/files/uploads/${A.uploadId}${z?`.${z}`:""}`;return A.path=oe,A.status="done",N(oe),oe}catch(I){return A.status="error",A.error=I?.message||"Помилка при завантаженні",i.value=I?.message||"Помилка при завантаженні",null}},v=E=>typeof E=="string"?E:E?.file_path||"",S=E=>!E||E.length===0?[]:Array.from(E),N=E=>{if(c.value){const _=Array.isArray(t.value)?[...t.value]:t.value?[t.value]:[];_.push(E),t.value=_;return}t.value=E},F=(E,_)=>({key:`${Date.now()}-${_}-${E.name}`,file:E,size:E.size,uploaded:0,uploadId:"",status:"pending",error:null,path:null,progressPercent:0}),T=async E=>{const _=E.target,A=S(_.files);if(!A.length)return;if(!h.value.ok){_.value="";return}const I=A.filter(U=>_a(U,e.max_size)&&Ta(U,d.value));if(!I.length){_.value="";return}try{o.value=!0,i.value="",l.value=I.map((z,oe)=>F(z,oe));const Z=(await Promise.allSettled(l.value.map(z=>w(z.file,z)))).filter(z=>z.status==="fulfilled").map(z=>z.value).filter(z=>!!z),V=l.value.filter(z=>z.status==="error").map(z=>z.file.name);if(Z.length===0){i.value="Не вдалося завантажити файл";return}V.length>0?ke.notify({type:"warning",title:"Частина файлів не завантажилась",message:V.join(", "),position:"right-bottom"}):ke.notify({type:"success",title:"Файл завантажено",message:I.length>1?`Завантажено ${Z.length} файлів`:I[0].name,position:"right-bottom"})}finally{o.value=!1,l.value=[],_.value=""}};return(E,_)=>(s.openBlock(),s.createElementBlock("div",Xw,[s.createElementVNode("div",Zw,[s.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",class:"hidden",multiple:c.value,accept:u.value,disabled:o.value||e.disabled,onChange:T},null,40,Qw),c.value?(s.openBlock(!0),s.createElementBlock(s.Fragment,{key:0},s.renderList(f.value,(A,I)=>(s.openBlock(),s.createBlock(rn,{key:`${I}-${v(A)}`,multiple:!0,item:A,value:t.value,"onUpdate:value":_[0]||(_[0]=U=>t.value=U)},null,8,["item","value"]))),128)):p.value?(s.openBlock(),s.createBlock(rn,{key:1,item:p.value,value:t.value,"onUpdate:value":_[1]||(_[1]=A=>t.value=A)},null,8,["item","value"])):s.createCommentVNode("",!0),c.value?(s.openBlock(!0),s.createElementBlock(s.Fragment,{key:2},s.renderList(m.value,A=>(s.openBlock(),s.createBlock(rn,{key:A.key,action:"","is-uploading":!0,disabled:!0,"progress-percent":A.progressPercent,title:A.file.name},null,8,["progress-percent","title"]))),128)):g.value?(s.openBlock(),s.createBlock(rn,{key:3,action:"","is-uploading":!0,disabled:!0,"progress-percent":g.value.progressPercent,title:g.value.file.name},null,8,["progress-percent","title"])):s.createCommentVNode("",!0),s.createVNode(rn,{action:"","is-uploading":!1,disabled:e.disabled||o.value,"progress-percent":y.value,title:c.value?"Додати файли":"Оновити файл",onClick:b},null,8,["disabled","progress-percent","title"])]),i.value?(s.openBlock(),s.createElementBlock("p",e1,s.toDisplayString(i.value),1)):s.createCommentVNode("",!0)]))}});function t1(n){let e="";for(let r=0;r<n.length;r+=32768)e+=String.fromCharCode(...n.subarray(r,r+32768));return btoa(e)}async function Ju(n){const e=await n.arrayBuffer();return{name:n.name,content:t1(new Uint8Array(e))}}function Ba(n,e="application/octet-stream"){const t=atob(n),r=new Uint8Array(t.length);for(let o=0;o<t.length;o++)r[o]=t.charCodeAt(o);return new Blob([r],{type:e})}function Yu(n,e="application/octet-stream"){return URL.createObjectURL(Ba(n,e))}function Xu(n){const e=Ba(n.content),t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.setAttribute("download",n.name),t.click(),window.URL.revokeObjectURL(t.href)}function Na(n){if(!n||typeof n!="object"||Array.isArray(n))return!1;const e=n;return typeof e.name=="string"&&typeof e.content=="string"&&!!e.content}const n1={class:"vs-input-file64 flex flex-col gap-2"},r1={class:"flex items-center flex-wrap gap-2"},o1=["multiple","accept","disabled"],s1=["title"],i1=["src"],l1={key:1,class:"flex h-full w-full flex-col items-center justify-center gap-1 px-2 text-slate-500"},a1={class:"line-clamp-2 text-center text-[10px] text-slate-600"},c1={class:"absolute inset-0 hidden items-center justify-center gap-x-2 bg-black/50 group-hover:flex"},d1=["disabled","onClick"],u1=["onClick"],f1=["onClick"],p1=["title"],h1={class:"line-clamp-2 max-w-full break-words text-center text-[11px] font-semibold leading-snug"},m1=["title"],g1={key:0,class:"text-sm text-rose-600"},oi=s.defineComponent({__name:"vs-input-file64",props:s.mergeModels({format:{},multiple:{type:Boolean,default:!1},multi:{type:Boolean},max_size:{default:10},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=new Set(["tiff","jpg","jpeg","png","svg","ico","webp"]),t=n,r=s.useModel(n,"modelValue"),o=s.ref(null),i=s.ref(!1),l=s.ref("Обробка…"),a=s.ref(""),c=s.ref([]),d=s.ref([]),u=s.computed(()=>!!(t.multiple||t.multi)),f=s.computed(()=>Aa(t.format)),p=s.computed(()=>{if(f.value.length)return f.value.map(T=>`.${T}`).join(",")});function h(){c.value.forEach(T=>URL.revokeObjectURL(T)),c.value=[]}function m(T){return c.value.push(T),T}function g(T){const E=T.name.split(".").pop()?.toLowerCase()||"",_=Ma(T.name);return{...T,url:m(Yu(T.content)),isImage:e.has(E),icon:_==="img"?"img":_}}function y(){if(h(),u.value){const T=Array.isArray(r.value)?r.value.filter(Na):[];d.value=T.map(g);return}d.value=Na(r.value)?[g(r.value)]:[]}async function b(){await s.nextTick(),await new Promise(T=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>T())})})}s.watch([()=>r.value,u],()=>y(),{immediate:!0,deep:!0}),s.onBeforeUnmount(()=>{h()});const w=()=>{t.disabled||i.value||o.value?.click()},v=T=>{if(u.value&&Array.isArray(r.value)){r.value=r.value.filter((E,_)=>_!==T);return}r.value=null},S=T=>{T.url&&window.open(T.url,"_blank")},N=T=>{Xu({name:T.name,content:T.content})},F=async T=>{const E=T.target,_=E.files?Array.from(E.files):[];if(!_.length)return;const A=_.filter(I=>_a(I,t.max_size)&&Ta(I,f.value));if(!A.length){E.value="";return}i.value=!0,l.value=A.length>1?`Обробка… (${A.length})`:`Обробка… ${A[0].name}`,a.value="",await b();try{const I=await Promise.all(A.map(U=>Ju(U)));if(u.value){const U=Array.isArray(r.value)?r.value.filter(Na):[];r.value=[...U,...I]}else r.value=I[0]||null;ke.notify({type:"success",title:"Файл додано",message:I.length>1?`Додано ${I.length} файлів`:I[0].name,position:"right-bottom"})}catch(I){console.error(I),a.value="Помилка при обробці файлу",ke.notify({type:"error",title:"Помилка!",message:"Помилка при обробці файлу",position:"right-bottom"})}finally{i.value=!1,E.value=""}};return(T,E)=>(s.openBlock(),s.createElementBlock("div",n1,[s.createElementVNode("div",r1,[s.createElementVNode("input",{ref_key:"fileInput",ref:o,type:"file",class:"hidden",multiple:u.value,accept:p.value,disabled:T.disabled||i.value,onChange:F},null,40,o1),(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(d.value,(_,A)=>(s.openBlock(),s.createElementBlock("div",{key:`${A}-${_.name}`,class:"group relative h-[120px] w-[120px] overflow-hidden rounded-lg border border-dashed border-[#CFD9E0] text-gray-300",title:_.name},[_.isImage?(s.openBlock(),s.createElementBlock("img",{key:0,src:_.url,alt:"",class:"h-full w-full object-cover"},null,8,i1)):(s.openBlock(),s.createElementBlock("div",l1,[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(_.icon),{class:"h-8 w-8"})),s.createElementVNode("span",a1,s.toDisplayString(_.name),1)])),s.createElementVNode("div",c1,[s.createElementVNode("button",{type:"button",class:"flex h-6 w-6 items-center justify-center rounded-lg bg-gray-200 text-gray-500 hover:text-red-500",disabled:T.disabled||i.value,onClick:I=>v(A)},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,d1),s.createElementVNode("button",{type:"button",class:"flex h-6 w-6 items-center justify-center rounded-lg bg-gray-200 text-gray-500 hover:text-emerald-600",onClick:I=>S(_)},[s.createVNode(s.unref(Y.Eye),{class:"h-4 w-4"})],8,u1),s.createElementVNode("button",{type:"button",class:"flex h-6 w-6 items-center justify-center rounded-lg bg-gray-200 text-gray-500 hover:text-blue-500",onClick:I=>N(_)},[s.createVNode(s.unref(Y.Download),{class:"h-4 w-4"})],8,f1)])],8,s1))),128)),i.value?(s.openBlock(),s.createElementBlock("div",{key:0,class:"box-border flex h-[120px] w-[120px] flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-blue-400 bg-blue-50 p-2 text-blue-600",title:l.value},[E[0]||(E[0]=s.createElementVNode("div",{class:"h-6 w-6 shrink-0 animate-spin rounded-full border-[3px] border-blue-100 border-t-blue-600"},null,-1)),s.createElementVNode("span",h1,s.toDisplayString(l.value),1)],8,p1)):!T.disabled&&(u.value||!d.value.length)?(s.openBlock(),s.createElementBlock("div",{key:1,class:"flex h-[120px] w-[120px] cursor-pointer items-center justify-center rounded-lg border border-dashed border-[#CFD9E0] text-gray-300 transition-all hover:border-blue-500 hover:bg-blue-50 hover:text-blue-500",title:u.value?"Додати файли":"Обрати файл",onClick:w},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"})],8,m1)):s.createCommentVNode("",!0)]),a.value?(s.openBlock(),s.createElementBlock("p",g1,s.toDisplayString(a.value),1)):s.createCommentVNode("",!0)]))}}),y1={class:"flex items-center justify-center h-[30px] w-[30px]"},b1={class:"min-w-0 flex-1"},k1={class:"text-sm font-semibold text-gray-800 truncate dark:text-neutral-200"},w1={class:"flex items-center text-xs text-gray-500 truncate dark:text-neutral-500"},x1={class:"px-[5px]"},v1={class:""},si=s.defineComponent({__name:"vs-widget-file-info",props:{item:{default:null}},setup(n){const e=n,t=s.computed(()=>{try{return new Date(e.item.cdate).toLocaleDateString("uk-UA",{day:"2-digit",month:"long",year:"numeric"})}catch{return""}});function r(o){if(o<1024)return`${o} B`;const i=o/1024;return i<1024?`${i.toFixed(2)} KB`:`${(i/1024).toFixed(2)} MB`}return(o,i)=>(s.openBlock(),s.createElementBlock(s.Fragment,null,[s.createElementVNode("div",y1,[s.createVNode(s.unref(Y.FileText),{class:"icon icon-tabler icons-tabler-outline icon-tabler-file h-4 w-4"})]),s.createElementVNode("div",b1,[s.createElementVNode("p",k1,s.toDisplayString(o.item?.uploaded_name),1),s.createElementVNode("p",w1,[s.createElementVNode("span",null,s.toDisplayString(o.item?.username),1),s.withDirectives(s.createElementVNode("span",x1,"|",512),[[s.vShow,o.item?.username]]),s.createElementVNode("span",null,s.toDisplayString(t.value),1),i[0]||(i[0]=s.createElementVNode("span",{class:"px-[5px]"},"|",-1)),s.createElementVNode("span",v1,s.toDisplayString(r(o.item?.size)),1)])])],64))}}),C1={class:"p-3 relative group flex items-center gap-x-3 border border-gray-200 bg-white rounded-md w-full min-w-0"},S1={key:0,class:"flex w-full min-w-0 gap-x-3 items-center"},E1={key:1,class:"flex min-w-0 gap-x-3 w-full items-center"},M1={key:2,class:"flex min-w-0 gap-x-3 w-full items-center"},A1=["href"],_1={key:3,class:"flex min-w-0 gap-x-3 w-full items-center"},T1={class:"lg:absolute lg:top-3 lg:end-1 opacity-100"},B1={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"},N1={class:"inline-block"},D1={class:"inline-block"},V1={class:"inline-block"},$1=s.defineComponent({__name:"vs-widget-file-item",props:{item:{default:null},index:{default:0},prefix:{default:"/api"}},emits:["update","openModal","openLightbox"],setup(n,{emit:e}){const t=n,r=e;function o(f){return["pdf","json"].includes(f.ext)}function i(f){return["ppt","pptx","doc","docx","xls","xlsx"].includes(f.ext)}function l(f){const p=document.createElement("a");p.setAttribute("download",f?.uploaded_name),p.href=f?.file_path,p.click()}function a(f){f?.file_path&&window.open(f.file_path,"_blank")}async function c(){try{await fetch(`${t.prefix}/widget/file/${t.item.entity_id}/${t.item.file_id}`,{method:"DELETE"}),r("update")}catch(f){console.error(f)}}function d(){r("openModal",{title:"Ви впевнені?",message:"Ви впевнені, що хочете видалити цей файл?",confirmButtonText:"Так, я впевнена/ий",cancelButtonText:"Скасувати",confirm:c,updateListOnConfirm:!0})}function u(f){(t.item.ext==="jpg"||t.item.ext==="png")&&r("openLightbox",{item:t.item,index:f})}return(f,p)=>(s.openBlock(),s.createElementBlock("div",C1,[f.item.ext==="jpg"||f.item.ext==="png"?(s.openBlock(),s.createElementBlock("div",S1,[s.createElementVNode("div",{class:"min-w-0 flex-1 cursor-pointer flex gap-x-3 w-full items-center",onClick:p[0]||(p[0]=h=>u(f.index))},[s.createVNode(si,{item:f.item},null,8,["item"])])])):o(f.item)?(s.openBlock(),s.createElementBlock("div",E1,[s.createVNode(si,{item:f.item},null,8,["item"])])):i(f.item)?(s.openBlock(),s.createElementBlock("div",M1,[s.createElementVNode("a",{href:`/api/file-preview?id=${f.item.file_id}`,target:"_blank",class:"flex min-w-0 gap-x-3 w-full items-center"},[s.createVNode(si,{item:f.item},null,8,["item"])],8,A1)])):(s.openBlock(),s.createElementBlock("div",_1,[s.createVNode(si,{item:f.item},null,8,["item"])])),s.createElementVNode("div",T1,[s.createElementVNode("div",B1,[s.createElementVNode("div",N1,[s.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:p[1]||(p[1]=h=>a(f.item))},[s.createVNode(s.unref(Y.Eye),{class:"h-4 w-4"})])]),s.createElementVNode("div",D1,[s.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:p[2]||(p[2]=h=>l(f.item))},[s.createVNode(s.unref(Y.Download),{class:"h-4 w-4"})])]),p[4]||(p[4]=s.createElementVNode("div",{class:"w-px h-5 mx-1 bg-gray-200 dark:bg-neutral-700"},null,-1)),s.createElementVNode("div",V1,[s.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:p[3]||(p[3]=h=>d())},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})])])])])]))}}),L1={class:"flex flex-col widget-file min-w-0 w-full xl:bg-white xl:rounded-xl dark:xl:bg-neutral-800 dark:xl:border-neutral-700"},I1={class:"flex w-full mb-[12px] items-center gap-x-2"},O1={class:"font-semibold text-gray-800 dark:text-neutral-200 text-[14px]"},R1={class1:"ml-auto"},F1={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"},P1={key:0,class:"py-4 mb-4 space-y-4 border-gray-200 border-y dark:border-neutral-700"},z1={class:"relative"},H1={class:"absolute inset-y-0 start-0 flex items-center pointer-events-none z-[1] ps-3.5"},j1={key:1,class:"space-y-3 max-h-[300px] min-w-0 overflow-x-hidden 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"},U1={key:0},Zu=s.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(n,{emit:e}){const t=n,r=s.inject("form"),o=s.computed(()=>r.value.formId),i=s.ref(!1),l=s.ref(0),a=e,c=s.ref(!1),d=s.ref({}),u=s.ref([]),f=s.ref(""),p=s.computed(()=>Array.isArray(u.value)?u.value.filter(v=>v.ext==="jpg"||v.ext==="png").map(v=>v?.file_path):[]),h=s.computed(()=>f.value===""?u.value:u.value.filter(v=>v?.uploaded_name?.includes(f.value))),m=v=>{const S=p.value.findIndex(N=>N===v.item.file_path);S!==-1&&(i.value=!0,l.value=S)},g=async()=>{try{const v=await fetch(`${t.prefix}/widget/file/${o.value}`).then(S=>S.json());u.value=v?.rows}catch(v){console.error(v)}},y=async v=>{await Promise.all(Array.from(v.target.files).map(async S=>{const N=new FormData;N.append("file",S);try{const F=`${t.prefix}/widget/file/${o.value}`,T=await fetch(F,{method:"POST",body:N});return T.ok?(a("update","file-list"),S):(ke.notify({type:T.status>=400&&T.status<500?"warning":"error",title:"Error",message:`Error code: ${T.status}`}),null)}catch(F){return ke.notify({type:"error",title:"Error",message:F.message||"Unknown error"}),console.error(F),null}})),await g()},b=v=>{const S={...v};return v.cancel||(S.cancel=()=>{c.value=!1}),v.updateListOnConfirm&&(S.confirm=async()=>{await v.confirm(),c.value=!1,g()}),S},w=v=>{d.value=b(v),c.value=!0};return s.watch(o,v=>{v&&g()}),s.onMounted(()=>{o.value&&g()}),(v,S)=>{const N=s.resolveComponent("Lightbox"),F=s.resolveComponent("MessageBox");return s.openBlock(),s.createElementBlock("div",L1,[s.createElementVNode("div",I1,[s.createElementVNode("h2",O1," Файлів: "+s.toDisplayString(u.value?.length),1),s.createElementVNode("div",R1,[s.createElementVNode("label",null,[s.createElementVNode("input",{type:"file",class:"hidden",onChange:S[0]||(S[0]=T=>y(T))},null,32),s.createElementVNode("div",F1,[s.createVNode(s.unref(Y.Upload),{class:"h-4 w-4"})])])])]),u.value?.length>4?(s.openBlock(),s.createElementBlock("div",P1,[s.createElementVNode("div",null,[s.createElementVNode("div",z1,[s.createElementVNode("div",H1,[s.createVNode(s.unref(Y.Search),{class:"flex-shrink-0 text-gray-500 size-4 dark:text-neutral-400"})]),s.withDirectives(s.createElementVNode("input",{type:"text","onUpdate:modelValue":S[1]||(S[1]=T=>f.value=T),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),[[s.vModelText,f.value,void 0,{trim:!0}]])])])])):s.createCommentVNode("",!0),u.value?.length?(s.openBlock(),s.createElementBlock("div",j1,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(h.value,(T,E)=>(s.openBlock(),s.createBlock($1,{key:E,prefix:v.prefix,item:T,index:E,onUpdate:S[2]||(S[2]=_=>v.$emit("update","file-list")),onOpenModal:S[3]||(S[3]=_=>w(_)),onOpenLightbox:S[4]||(S[4]=_=>m(_))},null,8,["prefix","item","index"]))),128)),h.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("div",U1,S[8]||(S[8]=[s.createElementVNode("p",{class:"text-sm text-gray-600 font-sm"}," Файлів з такою назвою не існує, введіть інше пошукове слово ",-1)])))])):s.createCommentVNode("",!0),s.createVNode(N,{modelValue:i.value,"onUpdate:modelValue":S[5]||(S[5]=T=>i.value=T),startIndex:l.value,"onUpdate:index":S[6]||(S[6]=T=>l.value=T),images:p.value},null,8,["modelValue","startIndex","images"]),s.createVNode(F,s.mergeProps({modelValue:c.value,"onUpdate:modelValue":S[7]||(S[7]=T=>c.value=T),onConfirm:d.value.confirm},d.value),null,16,["modelValue","onConfirm"])])}}}),W1={class:"flex items-center justify-between"},K1={class:"text-[16px] text-gray-900 font-medium"},q1={class:"grid gap-3"},G1=Be(s.defineComponent({__name:"vs-container-switcher",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(n){const e=n,t=s.ref(e.isOpen);return s.watch(()=>e.isOpen,r=>{t.value=r}),(r,o)=>(s.openBlock(),s.createElementBlock("div",null,[s.createElementVNode("div",W1,[s.createElementVNode("p",K1,s.toDisplayString(n.title),1),s.createVNode(ga,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=i=>t.value=i),style:s.normalizeStyle(n.style)},null,8,["modelValue","style"])]),s.createVNode(s.Transition,{name:"slide-fade"},{default:s.withCtx(()=>[s.withDirectives(s.createElementVNode("div",q1,[s.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[s.vShow,t.value]])]),_:3})]))}}),[["__scopeId","data-v-90320b87"]]),J1={class:"text-[16px] text-gray-900 font-medium"},Y1={class:"grid gap-3"},X1=Be(s.defineComponent({__name:"vs-container-accordion",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})},isOpen:{type:Boolean,default:!1}},setup(n){const e=n,t=s.ref(e.isOpen);return s.watch(()=>e.isOpen,r=>{t.value=r}),(r,o)=>(s.openBlock(),s.createElementBlock("div",null,[s.createElementVNode("button",{type:"button",onClick:o[0]||(o[0]=i=>t.value=!t.value),class:"flex items-center gap-2"},[s.createVNode(s.unref(Y.ChevronDown),{class:s.normalizeClass(["h-4 w-4 duration-300",[t.value?"-rotate-180":""]])},null,8,["class"]),s.createElementVNode("span",J1,s.toDisplayString(n.title),1)]),s.createVNode(s.Transition,{name:"slide-fade"},{default:s.withCtx(()=>[s.withDirectives(s.createElementVNode("div",Y1,[s.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[s.vShow,t.value]])]),_:3})]))}}),[["__scopeId","data-v-0c825d65"]]),Z1={class:"flex items-center justify-between"},Q1={switcher:G1,accordion:X1,default:s.defineComponent({__name:"vs-container-default",props:{title:{type:String,default:""},style:{type:Object,default:()=>({})}},setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",null,[s.createElementVNode("div",Z1,[s.createElementVNode("p",null,s.toDisplayString(n.title),1)]),s.renderSlot(e.$slots,"default")]))}})},Kt={Equal:"==",Inequal:"!=",Higer:">",HigerOrEqual:">=",Lower:"<",LowerOrEqual:"<=",Between:"between",StartWith:"^",EndWith:"$",Contain:"*",In:"in",NotIn:"not_in"},ex=(n,e)=>String(n)===String(e),tx=(n,e)=>String(n)!==String(e),nx=(n,e)=>n>e,rx=(n,e)=>n>=e,ox=(n,e)=>n<e,sx=(n,e)=>n<=e,ix=(n,e)=>Array.isArray(e)&&e.length===2?n>=e[0]&&n<=e[1]:!1,lx=(n,e)=>String(n).startsWith(String(e)),ax=(n,e)=>String(n).endsWith(String(e)),cx=(n,e)=>String(n).includes(String(e)),dx=(n,e)=>Array.isArray(e)?e.includes(n):!1,ux=(n,e)=>Array.isArray(e)?!e.includes(n):!0,fx=(n,e)=>{if(!e)return!0;switch(e?.[1]){case Kt.Equal:return ex(n,e?.[2]);case Kt.Inequal:return tx(n,e?.[2]);case Kt.Higer:return nx(n,e?.[2]);case Kt.HigerOrEqual:return rx(n,e?.[2]);case Kt.Lower:return ox(n,e?.[2]);case Kt.LowerOrEqual:return sx(n,e?.[2]);case Kt.Between:return ix(n,e?.[2]);case Kt.StartWith:return lx(n,e?.[2]);case Kt.EndWith:return ax(n,e?.[2]);case Kt.Contain:return cx(n,e?.[2]);case Kt.In:return dx(n,e?.[2]);case Kt.NotIn:return ux(n,e?.[2]);default:return!0}};function Qu(n,e,t){return e==null||!Array.isArray(e)||e.length===0?!0:(Array.isArray(e[0])?e:[e]).every(o=>{if(!Array.isArray(o)||o.length<2)return!0;const i=o[0],l=t?n?.[t]?.[i]??n?.[i]:n?.[i];return fx(l,o)})}const ef={1:"col-span-12 md:col-span-1",2:"col-span-12 md:col-span-2",3:"col-span-12 md:col-span-3",4:"col-span-12 md:col-span-4",5:"col-span-12 md:col-span-5",6:"col-span-12 md:col-span-6",7:"col-span-12 md:col-span-7",8:"col-span-12 md:col-span-8",9:"col-span-12 md:col-span-9",10:"col-span-12 md:col-span-10",11:"col-span-12 md:col-span-11",12:"col-span-12 md:col-span-12"};function px(n,e=!1){if(e)return ef[12];const t=Number(n),r=Number.isFinite(t)&&t>=1&&t<=12?Math.round(t):12;return ef[r]}const hx={class:"grid grid-cols-12 gap-6 w-full"},tf=s.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(n){const e=n,t=s.inject("values",s.ref({})),r=s.inject("form"),o=s.computed(()=>e.schema?.filter(a=>Qu(t.value,a?.conditions,e.name||void 0))),i=s.computed(()=>Q1[e.view]),l=s.computed(()=>{if(t.value||(t.value={}),!e.name)return t.value;const a=t.value[e.name];if(a)return a;const c={};return t.value={...t.value,[e.name]:c},c});return(a,c)=>n.schema?.length?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.value),{key:0,title:n.title,style:s.normalizeStyle(n.style)},{default:s.withCtx(()=>[s.createElementVNode("div",hx,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(o.value,d=>(s.openBlock(),s.createElementBlock("div",{key:d.name,class:s.normalizeClass(s.unref(px)(d.col))},[s.createVNode(_f,s.mergeProps({ref_for:!0},d,{item:d,modelValue:l.value[d.name],"onUpdate:modelValue":u=>l.value[d.name]=u,style:n.style,error:s.unref(r)?.errors?.[d.name]}),null,16,["item","modelValue","onUpdate:modelValue","style","error"])],2))),128))])]),_:1},8,["title","style"])):s.createCommentVNode("",!0)}});function mx(n){return!n||typeof n!="string"?{}:n.split("#").reduce((e,t)=>{const[r,...o]=t.split("=");return!r||!o.length||(e[r]=o.join("=")),e},{})}function gx(n,e){const t=Array.isArray(n)?n.find(r=>(r?.name??r?.id??r?.key)===e):n?.[e];return!t||typeof t!="object"?e:t["label:uk"]||t.label||t.ua||t.uk||e}const nf=({props:n,fetchOptionByValue:e,optionsList:t,selectedOption:r,modelValue:o,onCreated:i})=>{const l=s.ref(!1),a=s.ref({}),c=s.ref([]),d=s.ref(null),u=s.computed(()=>n.add?.title||"Додати"),f=s.computed(()=>n.add?.token||n.add?.model||""),p=s.computed(()=>n.add?.pk||"id");return{isOpenAdd:l,addData:a,addSchema:c,addForm:d,addTitle:u,addOption:async()=>{if(!f.value)return;const g=d?.value.validate();if(g){ke.notify({title:"Помилка валідації",type:"warning",message:`Перевірте поля: ${Object.keys(g).map(y=>gx(c.value,y)).join(", ")}`});return}try{const y={...mx(n.add?.obj),...a.value},b=n.add?.api??`/api/table/${f.value}`,w=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),v=await w.json().catch(()=>({})),S=v?.error||v?.message,N=Number(v?.code)>=400;if(!w.ok||N){ke.notify({title:"Помилка",type:"error",message:S||`Код помилки: ${v?.code||w.status}`});return}const F=v?.rows?.[0],T=v?.[p.value]??v?.id??F?.[p.value]??F?.id;if(!T){ke.notify({title:"Помилка",type:"error",message:"Обʼєкт створено, але в відповіді відсутній ID."});return}const E=await e(T);E&&(t.value.some(A=>String(A?.id)===String(E.id))||t.value.push(E)),i?await i(E,T):E&&(r.value=E,o.value=T),l.value=!1,ke.notify({title:"Успіх",message:"Обʼєкт успішно створено."})}catch(y){ke.notify({title:"Помилка",type:"error",message:y?.message||"Не вдалося створити обʼєкт."})}},onAddValue:async()=>{if(!n.add)return null;const g=await fetch(`/api/template/form/${n.add.form}`).then(y=>y.json());return c.value=g.schema,a.value={},l.value=!0,null}}},yx=["aria-expanded","data-focus"],bx={class:"vs-input-select__value-area relative flex flex-1 items-center gap-1 py-0.5 pl-1 pr-0 overflow-hidden h-full min-w-0"},kx={key:0,class:"flex flex-nowrap items-center gap-1 overflow-x-auto overflow-y-hidden min-w-0 flex-1 py-0.5"},wx={class:"flex items-center gap-1 min-w-0"},xx=["title"],vx=["innerHTML"],Cx=["onClick"],Sx={class:"flex-1 min-w-[2px]"},Ex=["placeholder"],Mx=["title"],Ax=["innerHTML"],_x={key:3,class:"truncate flex-1 min-w-0"},Tx={key:2,class:"flex-1 min-w-[2px]"},Bx=["placeholder"],Nx={key:3,class:"flex-1 flex items-center min-h-[30px] py-0.5 pl-2 text-sm truncate text-inherit"},Dx={class:"vs-input-select__actions relative z-10 flex items-center shrink-0 bg-white"},Vx=["disabled"],$x={key:1,class:"self-stretch w-px bg-[#ccc] my-[1px]"},Lx=["disabled","title"],Ix=s.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(n,{emit:e}){const t=n,r=e,o=s.computed({get:()=>t.keyWord,set:i=>r("update:keyWord",i)});return(i,l)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["vs-input-select__control flex min-h-[38px] items-center justify-between rounded transition-colors bg-white",i.disabled?"bg-gray-100 text-gray-400 cursor-not-allowed":""]),role:"combobox","aria-expanded":i.isOpen,"aria-haspopup":"listbox",onKeydown:l[10]||(l[10]=(...a)=>i.onControlKeydown&&i.onControlKeydown(...a)),onClick:l[11]||(l[11]=(...a)=>i.onControlClick&&i.onControlClick(...a)),"data-focus":i.isOpen||i.inputFocus?"true":"false",ref:i.setTriggerRef},[s.createElementVNode("div",bx,[i.isMulti?(s.openBlock(),s.createElementBlock("div",kx,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.selectedOptions,a=>(s.openBlock(),s.createElementBlock("div",{key:a.id,class:"flex min-w-0 bg-[rgb(230,230,230)] rounded-[2px] m-[2px] box-border max-w-full"},[s.createElementVNode("div",wx,[i.shouldShowColorDot(a)?(s.openBlock(),s.createElementBlock("span",{key:0,class:"w-[16px] h-[16px] rounded-md block ml-1.5 flex-shrink-0",style:s.normalizeStyle({backgroundColor:a?.color})},null,4)):s.createCommentVNode("",!0),!i.optionTemplate&&i.optionHasIcon(a)?(s.openBlock(),s.createElementBlock("span",{key:1,class:s.normalizeClass(i.iconWrapperClass),style:s.normalizeStyle(i.getIconColorStyle(a)),"aria-hidden":"true"},[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.resolveOptionIcon(a)),{class:"w-full h-full",focusable:"false"}))],6)):s.createCommentVNode("",!0),s.createElementVNode("div",{class:"truncate text-[#172b4d] overflow-hidden max-w-[200px] px-0.5 pl-1.5",title:i.getLabel(a)},[i.optionTemplate?(s.openBlock(),s.createElementBlock("div",{key:0,innerHTML:i.renderTemplate(a)},null,8,vx)):(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[s.createTextVNode(s.toDisplayString(a.text),1)],64))],8,xx)]),s.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:s.withModifiers(c=>i.onRemoveSelected(a.id),["stop"])},[s.createVNode(s.unref(Y.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,Cx)]))),128)),s.createElementVNode("div",Sx,[!i.disabled&&i.search?s.withDirectives((s.openBlock(),s.createElementBlock("input",{key:0,ref:i.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:i.selectedIds.length?" ":i.placeholder,"onUpdate:modelValue":l[0]||(l[0]=a=>o.value=a),onFocus:l[1]||(l[1]=(...a)=>i.onInputFocus&&i.onInputFocus(...a)),onBlur:l[2]||(l[2]=(...a)=>i.onInputBlur&&i.onInputBlur(...a)),onKeydown:l[3]||(l[3]=(...a)=>i.onInputKeydown&&i.onInputKeydown(...a))},null,40,Ex)),[[s.vModelText,o.value]]):s.createCommentVNode("",!0)])])):!i.isMulti&&i.selectedOptionLabel&&o.value===""?(s.openBlock(),s.createElementBlock("div",{key:1,class:s.normalizeClass(["truncate flex items-center gap-1 min-w-0 pl-2",i.disabled||!i.search?"relative z-0 flex-1 min-h-[30px] py-0.5 text-inherit":"absolute inset-x-0 top-0 bottom-0 z-[1] text-gray-900 pointer-events-none"]),title:i.selectedOptionLabel},[i.shouldShowColorDot(i.selectedOption)?(s.openBlock(),s.createElementBlock("span",{key:0,class:"w-[14px] h-[14px] rounded-md block flex-shrink-0",style:s.normalizeStyle({backgroundColor:i.selectedOption?.color})},null,4)):s.createCommentVNode("",!0),!i.optionTemplate&&i.optionHasIcon(i.selectedOption)?(s.openBlock(),s.createElementBlock("span",{key:1,class:s.normalizeClass(i.iconWrapperClass),style:s.normalizeStyle(i.getIconColorStyle(i.selectedOption)),"aria-hidden":"true"},[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.resolveOptionIcon(i.selectedOption)),{class:"w-full h-full",focusable:"false"}))],6)):s.createCommentVNode("",!0),i.optionTemplate?(s.openBlock(),s.createElementBlock("div",{key:2,class:"truncate flex-1 min-w-0",innerHTML:i.renderTemplate(i.selectedOption)},null,8,Ax)):(s.openBlock(),s.createElementBlock("span",_x,s.toDisplayString(i.selectedOption?.text),1))],10,Mx)):s.createCommentVNode("",!0),!i.isMulti&&!i.disabled&&i.search?(s.openBlock(),s.createElementBlock("div",Tx,[s.withDirectives(s.createElementVNode("input",{ref:i.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:i.selectedOptionLabel?" ":i.placeholder,"onUpdate:modelValue":l[4]||(l[4]=a=>o.value=a),onFocus:l[5]||(l[5]=(...a)=>i.onInputFocus&&i.onInputFocus(...a)),onBlur:l[6]||(l[6]=(...a)=>i.onInputBlur&&i.onInputBlur(...a)),onKeydown:l[7]||(l[7]=(...a)=>i.onInputKeydown&&i.onInputKeydown(...a))},null,40,Bx),[[s.vModelText,o.value]])])):!i.isMulti&&i.disabled&&(!i.selectedOptionLabel||o.value!=="")?(s.openBlock(),s.createElementBlock("div",Nx,s.toDisplayString(i.placeholder),1)):s.createCommentVNode("",!0)]),s.createElementVNode("div",Dx,[i.showClear?(s.openBlock(),s.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:i.disabled,onClick:l[8]||(l[8]=s.withModifiers((...a)=>i.onClearSelected&&i.onClearSelected(...a),["stop"]))},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,Vx)):s.createCommentVNode("",!0),i.showClear?(s.openBlock(),s.createElementBlock("div",$x)):s.createCommentVNode("",!0),s.createElementVNode("button",{type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-hidden":"true",disabled:i.disabled,onClick:l[9]||(l[9]=s.withModifiers((...a)=>i.onToggleSelect&&i.onToggleSelect(...a),["stop"])),title:i.isOpen?"Закрити список":"Відкрити список"},[s.createVNode(s.unref(Y.ChevronDown),{class:"h-4 w-4"})],8,Lx)])],42,yx))}}),Ox=["aria-disabled","onMousedown"],Rx={class:"leading-[19px]"},Fx=["innerHTML"],Px={key:1,class:"px-3 py-2 text-center text-gray-500"},zx=s.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(n){return(e,t)=>(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[e.isOpen?(s.openBlock(),s.createElementBlock("div",{key:0,ref:e.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:s.normalizeStyle(e.dropdownStyle),role:"listbox"},[s.createElementVNode("div",{class:"overflow-y-auto py-1",style:s.normalizeStyle({maxHeight:e.dropdownStyle.maxHeight||"300px"}),ref:e.setListRef},[e.filteredOptionsList.length?(s.openBlock(!0),s.createElementBlock(s.Fragment,{key:0},s.renderList(e.filteredOptionsList,(r,o)=>(s.openBlock(),s.createElementBlock("div",{key:r.id,ref_for:!0,ref:i=>e.setItemRef(i,o),class:s.normalizeClass(["flex px-3 py-2 gap-2 cursor-pointer select-none text-gray-900",e.isSelected(r.id)?"bg-[#2684ff] text-white":"bg-white hover:bg-[#deebff] hover:text-[#172b4d]",e.selectedNavIndex===o&&!e.isSelected(r.id)?"bg-[#deebff] text-[#172b4d]":""]),"aria-disabled":e.isSelected(r.id)?"true":"false",role:"option",tabindex:"-1",onMousedown:s.withModifiers(i=>e.onOptionClick(r),["prevent","stop"])},[e.shouldShowColorDot(r)?(s.openBlock(),s.createElementBlock("span",{key:0,class:"w-[11px] h-[11px] rounded-full block flex-shrink-0",style:s.normalizeStyle({backgroundColor:r?.color})},null,4)):s.createCommentVNode("",!0),!e.optionTemplate&&e.optionHasIcon(r)?(s.openBlock(),s.createElementBlock("span",{key:1,class:s.normalizeClass(e.iconWrapperClass),style:s.normalizeStyle(e.getIconColorStyle(r)),"aria-hidden":"true"},[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(e.resolveOptionIcon(r)),{class:"w-full h-full",focusable:"false"}))],6)):s.createCommentVNode("",!0),s.createElementVNode("div",Rx,[e.optionTemplate?(s.openBlock(),s.createElementBlock("div",{key:0,innerHTML:e.renderTemplate(r)},null,8,Fx)):(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[s.createTextVNode(s.toDisplayString(r.text),1)],64))])],42,Ox))),128)):(s.openBlock(),s.createElementBlock("div",Px," No options "))],4)],4)):s.createCommentVNode("",!0)]))}}),Hx={class:"flex justify-end items-center gap-x-2 py-3 px-4 border-t border-gray-200 w-full"},jx=["onClick"],Ux=["disabled"],Wx="__autoMeta",rf="w-[16px] h-[16px] flex items-center justify-center flex-shrink-0 text-current",Da=Be(s.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(n,{emit:e}){const t=n,r=e,o=s.computed(()=>t.multiple),i=s.computed(()=>t.disabled),l=s.computed(()=>t.search);Bt(t.style);const a=s.computed({get:()=>t.modelValue,set:q=>r("update:modelValue",q)});(a.value===null||a.value===void 0||a.value==="")&&t.defaultValue!=null&&(a.value=t.defaultValue);const c=s.ref(null),d=s.ref(null),u=s.ref(null),f=s.ref(null),p=s.ref(!1),h=s.ref(!1),m=s.ref(null),g=s.ref(-1),y=s.ref([]),b=s.ref(""),w=s.ref(null),v=q=>{d.value=q},S=q=>{w.value=q},N=q=>{f.value=q},F=q=>{u.value=q},T=(q,ie)=>{y.value[ie]=q},E=s.ref({}),_=s.ref([]),A=s.computed(()=>{if(!_.value.length)return[];const q=Ce.value,ie=new Map(q.map($=>[$.id?.toString(),$]));return _.value.map($=>ie.get($?.toString())).filter($=>!!$)}),I=s.computed(()=>t.placeholder||"Select..."),U=s.computed(()=>ce(m.value)),Z=s.computed(()=>i.value?!1:o.value?_.value.length>0:a.value!==null&&a.value!==void 0&&a.value!==""),V=q=>o.value?_.value.some(ie=>ie?.toString()===q?.toString()):a.value?.toString()===q?.toString(),z=s.computed(()=>{let q=Ce.value??[];if(!t.data&&b.value.trim()!==""){const ie=b.value.toLowerCase();q=q.filter($=>{const le=ce($).toLowerCase(),Pe=$.text?.toLowerCase?.()||"";return le.includes(ie)||Pe.includes(ie)})}if(o.value&&_.value.length){const ie=new Set(_.value.map($=>$?.toString()));q=q.filter($=>!ie.has($.id?.toString()))}return q}),oe=s.inject("values"),K=s.inject("field-props"),G=s.computed(()=>t.slot??t?.optionTemplate??""),X=q=>Js(q,G.value),ce=q=>Ys(q,G.value),j=s.computed(()=>Ks(G.value)),L=q=>Mo(q),O=q=>!!(!j.value&&Kn(q)&&!L(q)),ne=q=>{const ie=Kn(q);return ie?{color:ie}:void 0},ae=q=>!!(!j.value&&(Eo(q)||L(q))),re=(q,ie,$)=>{if(!K)return!1;const le=K.value?.[q]??{},Pe=(Ke,qe,Ut)=>{if(!qe.length)return Ke;const[Rt,...Wt]=qe,pt={...Ke};if(!Wt.length)return pt[Rt]=Ut,pt;const Jr=typeof Ke[Rt]=="object"&&Ke[Rt]!==null?Ke[Rt]:{};return pt[Rt]=Pe(Jr,Wt,Ut),pt},lt=Pe(le,ie,$);return K.value={...K.value||{},[q]:lt},!0},he=q=>{if(!K||!t.name)return;const ie=K.value?.[t.name]??{};K.value={...K.value||{},[t.name]:{...ie,[Wx]:q}}},Ae=q=>{if(!t.set)return;const ie=oe?.value;!ie&&!K||Object.entries(t.set).forEach(([$,le])=>{if(!$)return;const Pe=q?q[le]:null,lt=$.split(".").map(Ut=>Ut.trim()).filter(Boolean);if(!lt.length)return;const[Ke,...qe]=lt;qe.length&&re(Ke,qe,Pe??null)||ie&&(ie[Ke]=Pe??null)})},{optionsList:Ce,parentValue:$e,fetchOptions:it,fetchOptionByValue:Fe,loadOptions:Qe}=Gs({props:t,formValues:oe,watchParent:!1}),We=q=>q==null?"":String(q),se=q=>{if(o.value){if(!_.value.length){Ce.value=q;return}}else if(!m.value){Ce.value=q;return}const ie=new Set(q.map(le=>We(le.id)).filter(Boolean));if(o.value){const le=new Set(_.value.map(lt=>We(lt)).filter(Boolean)),Pe=(Ce.value??[]).filter(lt=>{const Ke=We(lt.id);return!Ke||!le.has(Ke)?!1:!ie.has(Ke)});Ce.value=[...Pe,...q];return}const $=We(m.value?.id);if($&&!ie.has($)){Ce.value=[m.value,...q];return}Ce.value=q},me=s.ref(0),Ee=async q=>{const ie=++me.value,$=await it(q);return ie!==me.value?null:$},Me=async()=>{if(t.data){const q=await Ee(b.value);return q&&se(q),Ce.value}return Qe()},Ye=async q=>{if(q==null||q==="")return null;const ie=Ce.value?.find($=>$?.id?.toString()===String(q));return ie||Fe(q)},Ct=async q=>{const ie=new Set(Ce.value.map(le=>le.id?.toString())),$=q.filter(le=>!ie.has(le?.toString()));$.length&&await $.reduce(async(le,Pe)=>{await le;const lt=await Ye(Pe);lt&&Ce.value.push(lt)},Promise.resolve())},et=()=>{if(!z.value.length){g.value=-1;return}let q=0;if(!o.value&&m.value){const ie=m.value.id?.toString(),$=z.value.findIndex(le=>le.id?.toString()===ie);$>=0&&(q=$)}g.value=q,s.nextTick(()=>{H(y.value[q],u.value)})},Xe=async()=>{i.value||(p.value=!0,await s.nextTick(()=>{we()}),await Me(),await s.nextTick(()=>{we(),w.value?.focus()}),et())},ft=()=>{p.value=!1,g.value=-1,s.nextTick(()=>{w.value?.blur()})},Vt=async q=>{if(i.value)return;(q!==void 0?q:!p.value)?await Xe():ft()},W=async()=>{if(!i.value){if(p.value){ft();return}await Xe()}},ee=()=>{o.value?(_.value=[],a.value=[],r("change",[]),R(null,[])):(m.value=null,a.value=null,r("change",null),R(null,null)),Ae(null),he(null),b.value="",ft(),s.nextTick(()=>{w.value?.focus()})},ue=q=>{o.value&&(_.value=_.value.filter(ie=>ie?.toString()!==q?.toString()),a.value=[..._.value],r("change",a.value),R(null),s.nextTick(()=>w.value?.focus()))},R=(q,ie)=>{const $=ie??(o.value?[..._.value]:q?.id??null);r("value-selected",{name:t.name,value:$,option:q})},M=(q,ie="manual")=>{o.value?(V(q.id)||(_.value=[..._.value,q.id],a.value=[..._.value],r("change",a.value),R(q)),b.value="",s.nextTick(()=>{w.value?.focus(),g.value=Math.min(g.value,z.value.length-1)}),Ae(null)):(m.value=q,a.value=q.id,r("change",a.value),R(q),b.value="",ft(),Ae(q),ie==="parent-auto"&&he({source:ie,parentField:t.parent??null,parentValue:$e.value??null}))},D=q=>{if(V(q.id)){o.value||ft();return}M(q)},H=(q,ie)=>{if(!q||!ie)return;const $=q.offsetTop,le=$+q.offsetHeight,Pe=ie.scrollTop,lt=Pe+ie.clientHeight;let Ke=ie.scrollTop;$<Pe?Ke=$-80:le>lt&&(Ke=le-ie.clientHeight+4);const qe=ie;qe.scrollTop=Ke},te=q=>{let ie=q.parentElement;for(;ie;){if(ie.classList.contains("ui-dialog__content"))return ie;const $=window.getComputedStyle(ie),le=$.overflow+$.overflowY+$.overflowX;if(le.includes("auto")||le.includes("scroll")||ie===document.body||ie===document.documentElement)return ie;ie=ie.parentElement}return document.body},we=()=>{if(!d.value)return;const q=d.value.getBoundingClientRect(),ie=window.innerHeight||document.documentElement.clientHeight,$=window.innerWidth||document.documentElement.clientWidth,le=8,Pe=8,lt=t.maxHeight||300,Ke=ie-q.bottom-Pe-le,qe=q.top-Pe-le,Ut=Ke>=qe,Rt=Math.max($-le*2,0);let{width:Wt}=q;Rt>0&&Wt>Rt&&(Wt=Rt);let{left:pt}=q;pt+Wt+le>$&&(pt=$-Wt-le),pt=Math.max(pt,le);const Jr=Math.min(lt,Math.max(Ut?Ke:qe,50));E.value={position:"fixed",left:`${pt}px`,width:`${Wt}px`,maxHeight:`${Jr}px`,transform:Ut?"none":"translateY(-100%)",top:Ut?`${q.bottom+Pe}px`:`${q.top-Pe}px`}},tt=async q=>{i.value||!p.value&&(q.key==="ArrowDown"||q.key==="ArrowUp")&&(q.preventDefault(),await Xe())},Re=q=>{if(!p.value)return;const{key:ie}=q;if(ie==="ArrowDown")q.preventDefault(),g.value+1<z.value.length&&(g.value+=1,H(y.value[g.value],u.value));else if(ie==="ArrowUp")q.preventDefault(),g.value>0&&(g.value-=1,H(y.value[g.value],u.value));else if(ie==="Enter"){q.preventDefault();const $=z.value[g.value];$&&M($),w.value?.blur()}else ie==="Escape"?(q.preventDefault(),ft()):ie==="Backspace"?o.value&&b.value===""&&_.value.length&&(_.value=_.value.slice(0,-1),a.value=[..._.value],r("change",a.value)):ie==="Home"?(g.value=0,H(y.value[0],u.value)):ie==="End"?(g.value=z.value.length-1,H(y.value[g.value],u.value)):ie==="Tab"&&ft()},St=()=>{i.value||(h.value=!0)},cn=()=>{h.value=!1,b.value=""},tn=q=>{q.key==="Escape"&&p.value&&ft()},Le=q=>{const ie=q.target;c.value?.contains(ie)||f.value?.contains(ie)||ft()},$t=q=>{p.value&&u.value&&!u.value.contains(q.target)&&we()},wo=()=>{p.value&&we()},mr=()=>{p.value&&we()};async function xo(){if(o.value)Array.isArray(a.value)?_.value=[...a.value]:(_.value=a.value==null?[]:[a.value],a.value=[..._.value]),t.data&&_.value.length&&(await Ct(_.value),await s.nextTick());else{if(Array.isArray(a.value)){const q=a.value[0]??null;a.value=q??null}a.value!=null&&a.value!==""?m.value=await Ye(a.value):m.value=null,Ae(m.value??null)}}s.watch(a,()=>{xo()}),s.onMounted(async()=>{if(addEventListener("keydown",tn),addEventListener("scroll",$t,!0),addEventListener("resize",wo),document.addEventListener("click",Le,!0),d.value&&te(d.value).addEventListener("scroll",mr,!0),t.options?.length&&!t.data)Ce.value=[...t.options];else if(t.data){const q=await Ee("");q&&se(q)}await xo(),Rs.value=!1}),s.onUnmounted(()=>{removeEventListener("keydown",tn),removeEventListener("scroll",$t,!0),removeEventListener("resize",wo),document.removeEventListener("click",Le,!0),d.value&&te(d.value).removeEventListener("scroll",mr,!0)});const{isOpenAdd:qr,addData:Ls,addSchema:Gr,addForm:Sn,addTitle:sa,addOption:ia,onAddValue:Is}=nf({props:t,fetchOptionByValue:Fe,optionsList:Ce,selectedOption:m,modelValue:a});function Os(q,ie=200){let $;return(...le)=>{$&&clearTimeout($),$=window.setTimeout(()=>q(...le),ie)}}const fu=Os(async q=>{const ie=await Ee(q);ie&&se(ie)},200);s.watch(b,q=>{t.data&&fu(q.trim())}),s.watch(()=>t.options,q=>{!t.data&&q?.length&&(Ce.value=[...q],xo())},{immediate:!0});const Rs=s.ref(!0);return s.watch($e,async()=>{if(t.data&&(Rs.value||(o.value?(_.value=[],a.value=[],r("change",[])):(m.value=null,a.value=null,r("change",null))),await Me(),t.auto===1&&$e.value&&Ce.value.length>0)){const q=Ce.value[0];q&&M(q,"parent-auto")}}),(q,ie)=>(s.openBlock(),s.createElementBlock(s.Fragment,null,[s.createVNode(s.unref(ke.VsModal),{visible:s.unref(qr),"onUpdate:visible":ie[2]||(ie[2]=$=>s.isRef(qr)?qr.value=$:null),class:"z-[1000]",title:s.unref(sa),teleport:q.teleport},{footer:s.withCtx(({handleClose:$})=>[s.createElementVNode("div",Hx,[s.createElementVNode("button",{type:"button",class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 hover:bg-gray-50",onClick:$}," Скасувати ",8,jx),s.createElementVNode("button",{type:"button",class:"py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-600 text-white hover:bg-blue-700",onClick:ie[1]||(ie[1]=(...le)=>s.unref(ia)&&s.unref(ia)(...le))}," Додати ")])]),default:s.withCtx(()=>[s.createVNode(Pt,{schema:s.unref(Gr),modelValue:s.unref(Ls),"onUpdate:modelValue":ie[0]||(ie[0]=$=>s.isRef(Ls)?Ls.value=$:null),ref_key:"addForm",ref:Sn,"allow-id-field":""},null,8,["schema","modelValue"])]),_:1},8,["visible","title","teleport"]),s.createElementVNode("div",{class:"flex gap-1 w-full",ref_key:"selectRoot",ref:c,onClick:ie[5]||(ie[5]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("div",{class:s.normalizeClass(["relative w-full font-sans",t.customClass])},[ie[6]||(ie[6]=s.createElementVNode("span",{id:"react-select-live-region",class:"sr-only"},null,-1)),ie[7]||(ie[7]=s.createElementVNode("span",{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",role:"log",class:"sr-only"},null,-1)),s.createVNode(Ix,{keyWord:b.value,"onUpdate:keyWord":ie[3]||(ie[3]=$=>b.value=$),disabled:i.value,"is-open":p.value,"input-focus":h.value,"is-multi":o.value,"selected-options":A.value,"selected-ids":_.value,placeholder:I.value,search:l.value,"option-template":G.value,"icon-wrapper-class":rf,"selected-option-label":U.value,"selected-option":m.value,"show-clear":Z.value,"set-trigger-ref":v,"set-input-ref":S,"should-show-color-dot":O,"option-has-icon":ae,"get-icon-color-style":ne,"resolve-option-icon":L,"render-template":X,"get-label":ce,"on-control-keydown":tt,"on-control-click":W,"on-input-focus":St,"on-input-blur":cn,"on-input-keydown":Re,"on-remove-selected":ue,"on-clear-selected":ee,"on-toggle-select":Vt},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"]),s.createVNode(zx,{"is-open":p.value,"dropdown-style":E.value,"filtered-options-list":z.value,"selected-nav-index":g.value,"option-template":G.value,"icon-wrapper-class":rf,"set-dropdown-ref":N,"set-list-ref":F,"set-item-ref":T,"is-selected":V,"on-option-click":D,"should-show-color-dot":O,"option-has-icon":ae,"get-icon-color-style":ne,"resolve-option-icon":L,"render-template":X},null,8,["is-open","dropdown-style","filtered-options-list","selected-nav-index","option-template"])],2),t.add?(s.openBlock(),s.createElementBlock("button",{key:0,onClick:ie[4]||(ie[4]=(...$)=>s.unref(Is)&&s.unref(Is)(...$)),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:i.value,type:"button"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),ie[8]||(ie[8]=s.createElementVNode("span",null,"Додати",-1))],8,Ux)):s.createCommentVNode("",!0)],512)],64))}}),[["__scopeId","data-v-29653ef8"]]),Va=(n="")=>`${n}${Math.floor(Math.random()*1e4)}`,Kx=["disabled","aria-expanded"],qx={class:"truncate"},Gx={class:"py-2 px-4"},Jx={class:"block font-medium text-[13px] text-foreground"},Yx={class:"truncate"},Xx={class:"p-1 border-t border-gray-200"},Zx={class:"space-y-0.5 max-h-48 overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-none [&::-webkit-scrollbar-track]:bg-scrollbar-track [&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb"},Qx=["onClick"],ev=["checked"],tv={class:"shrink-0 size-3.5 flex justify-center items-center"},nv={key:1,class:"shrink-0 size-2 block mx-auto rounded-full bg-secondary/60"},rv={class:"truncate"},ov={key:0,class:"px-3 py-2 text-xs text-stone-500"},ii=s.defineComponent({__name:"vs-input-inline-select",props:{multiple:{type:Boolean},disabled:{type:Boolean,default:!1},mode:{},defaultValue:{},search:{type:Boolean},placeholder:{default:"Оберіть значення"},prefix:{default:"api"},host:{default:""},data:{default:""},options:{default:()=>[]},api:{default:null},maxHeight:{},parent:{},set:{},slot:{},add:{},teleport:{default:"body"},auto:{},start:{default:0},style:{default:()=>({})},customClass:{default:""},modelValue:{},error:{default:null},name:{},maxlength:{},minlength:{}},emits:["change","update:modelValue","value-selected"],setup(n,{emit:e}){const t=n,r=e;Bt(t.style);const o=s.computed({get:()=>Array.isArray(t.modelValue)?t.modelValue[0]??null:t.modelValue??null,set:re=>r("update:modelValue",re)});o.value==null&&t.defaultValue!=null&&(o.value=t.defaultValue);const i=s.inject("values"),l=s.inject("field-props"),a=s.computed(()=>!!t.disabled),c=s.ref(null),d=s.ref(!1),u=s.ref(null),f=s.ref(null),p=s.ref(null),h=s.ref({}),m=`vs-input-inline-select-${Va()}`,g=s.computed(()=>t.placeholder||"Оберіть значення"),y=s.computed(()=>N(c.value)||t.placeholder||"Оберіть значення"),b=s.computed(()=>t.slot??""),w=s.computed(()=>Ks(b.value)),v=s.computed(()=>t.teleport||"body"),S=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6}|[\da-fA-F]{8})$/,N=re=>Ys(re,b.value),F=re=>!!(!w.value&&Kn(re)),T=s.computed(()=>{const re=Kn(c.value).trim();return re?S.test(re)?`bg-[${re}] border-[${re}]`:`bg-${re.toLowerCase()}-500 border-${re.toLowerCase()}-500`:""}),{optionsList:E,parentValue:_,fetchOptions:A,fetchOptionByValue:I,loadOptions:U}=Gs({props:t,formValues:i,watchParent:!1}),Z=(re,he,Ae)=>{if(!l)return!1;const Ce=l.value?.[re]??{},$e=(Fe,Qe,We)=>{if(!Qe.length)return Fe;const[se,...me]=Qe,Ee={...Fe};if(!me.length)return Ee[se]=We,Ee;const Me=typeof Fe[se]=="object"&&Fe[se]!==null?Fe[se]:{};return Ee[se]=$e(Me,me,We),Ee},it=$e(Ce,he,Ae);return l.value={...l.value||{},[re]:it},!0},V=re=>{if(!t.set)return;const he=i?.value;!he&&!l||Object.entries(t.set).forEach(([Ae,Ce])=>{if(!Ae)return;const $e=re?re[Ce]:null,it=Ae.split(".").map(We=>We.trim()).filter(Boolean);if(!it.length)return;const[Fe,...Qe]=it;Qe.length&&Z(Fe,Qe,$e??null)||he&&(he[Fe]=$e??null)})},z=re=>o.value?.toString?.()===re?.toString?.(),oe=()=>{if(!f.value||typeof window>"u")return;const re=f.value.getBoundingClientRect(),he=8,Ae=8,Ce=window.innerHeight||document.documentElement.clientHeight,$e=window.innerWidth||document.documentElement.clientWidth,it=p.value?.offsetHeight||260,Fe=Math.max(re.width,176),Qe=Math.max($e-he*2,120),We=Math.min(Fe,Qe);let se=re.left;se+We+he>$e&&(se=$e-We-he),se=Math.max(se,he);const me=Ce-re.bottom-Ae-he,Ee=re.top-Ae-he,Me=me<Math.min(it,260)&&Ee>me,Ye=Math.max(120,Math.min(320,Me?Ee:me));h.value={position:"fixed",left:`${se}px`,top:Me?`${re.top-Ae}px`:`${re.bottom+Ae}px`,transform:Me?"translateY(-100%)":"none",width:`${We}px`,maxHeight:`${Ye}px`}},K=async()=>{if(t.data){E.value=await A("");return}await U()},G=async()=>{if(o.value==null||o.value===""){c.value=null,V(null);return}const re=E.value.find(he=>he.id?.toString()===String(o.value));if(re){c.value=re,V(re);return}c.value=await I(o.value),V(c.value??null)},X=async()=>{a.value||(d.value=!0,await s.nextTick(),oe(),await K(),await s.nextTick(),oe())},ce=()=>{d.value=!1},j=async()=>{if(d.value){ce();return}await X()},L=re=>{r("value-selected",{name:t.name,value:re?.id??null,option:re})},O=re=>{c.value=re,o.value=re.id,r("change",re.id),L(re),V(re),ce()},ne=re=>{const he=re.target;u.value?.contains(he)||p.value?.contains(he)||ce()},ae=()=>{d.value&&oe()};return s.watch(()=>t.options,re=>{t.data||(E.value=re?[...re]:[],G())},{immediate:!0,deep:!0}),s.watch(o,()=>{G()}),s.watch(_,async()=>{t.data&&(await K(),c.value&&!E.value.some(re=>re.id?.toString()===c.value?.id?.toString())&&(c.value=null,o.value=null,r("change",null),L(null),V(null)))}),s.onMounted(async()=>{document.addEventListener("click",ne,!0),window.addEventListener("resize",ae),window.addEventListener("scroll",ae,!0),await K(),await G()}),s.onUnmounted(()=>{document.removeEventListener("click",ne,!0),window.removeEventListener("resize",ae),window.removeEventListener("scroll",ae,!0)}),(re,he)=>(s.openBlock(),s.createElementBlock("div",{class:"relative inline-flex w-full max-w-full",ref_key:"rootRef",ref:u,onClick:he[0]||(he[0]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("button",{ref_key:"triggerRef",ref:f,type:"button",disabled:a.value,"aria-expanded":d.value?"true":"false","aria-haspopup":"menu",class:s.normalizeClass(["py-1.5 px-2.5 inline-flex items-center gap-2 text-nowrap text-xs sm:text-[13px] rounded-lg focus:outline-hidden disabled:opacity-50 disabled:pointer-events-none max-w-full border",T.value?`${T.value} text-white`:"bg-secondary text-secondary-foreground hover:bg-secondary-hover focus:bg-secondary-focus border-gray-300 hover:border-gray-400"]),onClick:j},[s.createElementVNode("span",qx,s.toDisplayString(y.value),1)],10,Kx),(s.openBlock(),s.createBlock(s.Teleport,{to:v.value},[d.value?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:p,class:"z-[3000] w-44 transition-[opacity,margin] duration-150 bg-white text-gray-900 border border-gray-200 rounded-xl shadow-lg",style:s.normalizeStyle(h.value),role:"menu","aria-orientation":"vertical"},[s.createElementVNode("div",Gx,[s.createElementVNode("span",Jx,[s.createElementVNode("span",Yx,s.toDisplayString(g.value),1)])]),s.createElementVNode("div",Xx,[s.createElementVNode("div",Zx,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(E),Ae=>(s.openBlock(),s.createElementBlock("label",{key:Ae.id,class:"py-1.5 px-3 group flex items-center gap-x-3 rounded-lg cursor-pointer text-[13px] text-gray-800 hover:bg-gray-100",onClick:s.withModifiers(Ce=>O(Ae),["prevent"])},[s.createElementVNode("input",{type:"radio",class:"hidden",name:m,checked:z(Ae.id),tabindex:"-1"},null,8,ev),s.createElementVNode("span",tv,[F(Ae)?(s.openBlock(),s.createElementBlock("span",{key:0,class:"shrink-0 size-2 block mx-auto rounded-full",style:s.normalizeStyle({backgroundColor:Ae.color})},null,4)):(s.openBlock(),s.createElementBlock("span",nv))]),s.createElementVNode("span",rv,s.toDisplayString(N(Ae)),1),s.createVNode(s.unref(Y.Check),{class:s.normalizeClass(["shrink-0 size-3.5 ms-auto transition-opacity",z(Ae.id)?"opacity-100":"opacity-0"])},null,8,["class"])],8,Qx))),128))]),s.unref(E).length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("p",ov,"Немає варіантів"))])],4)):s.createCommentVNode("",!0)],8,["to"]))],512))}}),sv=["placeholder","disabled"],of=s.defineComponent({__name:"vs-input-textarea",props:s.mergeModels({style:{default:()=>({})},customClass:{default:""},disabled:{type:Boolean,default:!1},modelValue:{},error:{},name:{},placeholder:{default:""},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,{inputClass:t}=Bt(e.style),r=s.useModel(n,"modelValue"),o=s.computed(()=>!!e.disabled),i=s.computed(()=>e.placeholder??"");function l(){typeof r.value=="string"&&(r.value=r.value.trim())}return(a,c)=>s.withDirectives((s.openBlock(),s.createElementBlock("textarea",{"onUpdate:modelValue":c[0]||(c[0]=d=>r.value=d),placeholder:i.value,disabled:o.value,row:"2",onBlur:l,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] h-auto bg-white",[s.unref(t)]]),style:{border:"1px solid #CFD9E0"}},null,42,sv)),[[s.vModelText,r.value]])}}),sf=s.defineComponent({__name:"vs-input-richtext",props:s.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(n){const e=s.defineAsyncComponent(()=>Promise.resolve().then(()=>VT)),t=n,r=s.useModel(n,"modelValue"),o=s.computed(()=>!!t.disabled),i=s.computed(()=>t.placeholder??""),l=s.computed(()=>({height:t.richtextProps.height||"300px",format:t.format,...t.richtextProps}));return(a,c)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["!h-full overflow-hidden rounded-md border border-solid border-stone-200 disabled:opacity-50 disabled:cursor-not-allowed",a.customClass]),style:s.normalizeStyle(o.value?{pointerEvents:"none",opacity:.6}:{})},[s.createVNode(s.unref(e),s.mergeProps({modelValue:r.value,"onUpdate:modelValue":c[0]||(c[0]=d=>r.value=d),placeholder:i.value},l.value),null,16,["modelValue","placeholder"])],6))}}),iv={},lv={viewBox:"0 0 178 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function av(n,e){return s.openBlock(),s.createElementBlock("svg",lv,e[0]||(e[0]=[s.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 cv=Be(iv,[["render",av]]),dv={class:"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden flex flex-col"},uv={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"},fv={key:0,class:"relative flex-1 min-w-0"},pv={class:"flex md:flex-nowrap flex-wrap items-center md:justify-end justify-start gap-2 shrink-0"},hv={class:"w-full overflow-x-auto"},mv={class:"w-full min-w-[640px] table-auto divide-y divide-gray-200"},gv={class:"bg-gray-50"},yv={class:"border-b border-gray-200"},bv={class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 w-12 text-center"},kv=["onClick"],wv={key:0,class:"text-gray-400"},xv={key:0,colspan:"100%",class:"text-center"},vv={class:"w-full"},Cv={class:"p-5 min-h-[200px] flex flex-col justify-center items-center text-center"},Sv=["data-row-index","onDragstart","onDragover","onDrop"],Ev=["onPointerdown"],Mv={class:"flex items-center justify-center"},Av=["innerHTML"],_v={key:0,class:"flex items-center gap-3 text-sm text-gray-700"},Tv={key:0},Bv=["src"],Nv={key:1,class:"rounded-md max-w-[45px] w-[45px] max-h-[45px] h-[45px] bg-gray-200 flex items-center justify-center"},Dv={key:1,class:"flex items-center justify-center"},Vv=["innerHTML"],$v={key:3,class:"text-sm font-medium text-gray-900"},Lv={class:"px-4 py-3 text-right whitespace-nowrap"},Iv={class:"flex items-center justify-end gap-2"},Ov=["onClick"],Rv=["onClick"],Fv={class:"vs-form__head mr-5 mt-3 flex items-center justify-end sticky top-0 left-0 z-[60] bg-white"},lf=Be(s.defineComponent({__name:"vs-input-datatable",props:s.mergeModels({actions:{},colModel:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useSlots(),r=s.inject("values",null),o=s.inject("form-root-values",null),i=W=>e.actions===void 0?!0:e.actions.includes(W),l=["search","import","export","add"],a=s.computed(()=>l.some(W=>i(W))),c=s.useModel(n,"modelValue"),d=s.ref({}),u=s.ref(""),f=s.ref(null),p=s.ref("asc"),h=s.computed(()=>{const W=c.value??[],ee=u.value?W.filter(M=>m.value?.some(D=>{const H=D.key||D.name;if(!H)return!1;const te=M[H];return te?Array.isArray(te)?te.join(", ").toLowerCase().includes(u.value.toLowerCase()):String(te).toLowerCase().includes(u.value.toLowerCase()):!1})):W;if(!f.value)return ee;const ue=f.value,R=[...ee].sort((M,D)=>{const H=Fe(M?.[ue]),te=Fe(D?.[ue]);return typeof H=="number"&&typeof te=="number"?H-te:String(H).localeCompare(String(te))});return p.value==="asc"?R:R.reverse()}),m=s.computed(()=>(e.colModel??[]).filter(W=>!W.tableHidden)),g=s.ref(null),y=s.ref(null),b=s.ref(null);function w(W){return W.pointerType==="touch"||W.pointerType==="pen"}function v(W,ee){const R=document.elementFromPoint(W,ee)?.closest?.("[data-row-index]")??null;if(!R)return null;const M=R.getAttribute("data-row-index");if(M==null)return null;const D=Number.parseInt(M,10);return Number.isNaN(D)?null:D}function S(W,ee){w(W)&&(W.preventDefault(),W.currentTarget.setPointerCapture(W.pointerId),g.value=ee,y.value=ee)}function N(W){if(g.value===null||!w(W))return;W.preventDefault();const ee=v(W.clientX,W.clientY);ee!==null&&(y.value=ee)}function F(W){if(g.value===null||!w(W))return;W.preventDefault();const ee=v(W.clientX,W.clientY);A(ee??g.value);try{W.currentTarget.releasePointerCapture(W.pointerId)}catch{}}function T(W){if(w(W)){g.value=null,y.value=null;try{W.currentTarget.releasePointerCapture(W.pointerId)}catch{}}}const E=W=>{g.value=W},_=W=>{y.value=W},A=W=>{if(g.value===null||g.value===W){g.value=null,y.value=null;return}const ee=[...c.value],[ue]=ee.splice(g.value,1);ee.splice(W,0,ue),c.value=ee,g.value=null,y.value=null},I=()=>{b.value&&b.value.click()},U=W=>{const ee=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico",".tiff",".tif"],ue=W.toLowerCase();return ee.some(R=>ue.endsWith(R))},Z=W=>{const ue=W.target.files?.[0];if(!ue)return;const R=new FileReader;R.onload=M=>{try{const D=M.target?.result;if(typeof D=="string"){const H=JSON.parse(D);Array.isArray(H)&&c.value.push(...H)}}catch(D){console.error("Error parsing file:",D)}},R.readAsText(ue)},V=()=>{const W=JSON.stringify(c.value,null,2),ee=new Blob([W],{type:"application/json"}),ue=URL.createObjectURL(ee),R=document.createElement("a");R.href=ue,R.download="data.json",R.click(),URL.revokeObjectURL(ue)},z=new Set(["autocomplete","select","radio","checkbox","combobox"]),oe=new Map,K=(W,ee)=>{const ue=`/api/suggest/${W}`,R=ue.includes("?")?"&":"?",M=ee?`&val=${ee}`:"";return`${ue}${R}${M}`},G=W=>W==null||W===""?null:typeof W=="object"?W?.id!==void 0&&W.id!==null&&W.id!==""?W.id:null:W,X=W=>{const ee=new Set;return Array.isArray(c.value)&&c.value.forEach(ue=>{const R=ue?.[W];if(R==null||R==="")return;if(Array.isArray(R)){R.forEach(D=>{const H=G(D);H!==null&&ee.add(H)});return}const M=G(R);M!==null&&ee.add(M)}),ee},ce=async()=>{if(!e.colModel?.length)return;const W=e.colModel.filter(ee=>ee.data&&z.has(ee.type?.toLowerCase()||""));W.length&&await Promise.all(W.map(async ee=>{const ue=ee.key||ee.name;if(!ue)return;const R=X(ue),M=Array.from(R).map(te=>String(te)).sort(),D=M.join(",");if(!M.length||oe.get(ue)===D)return;oe.set(ue,D);const H=M.map(encodeURIComponent).join(",");try{const we=await(await fetch(K(ee.data,H))).json();d.value[ue]=we?.data??we}catch(te){console.error("Failed to fetch column values",te)}}))};s.watch([()=>e.colModel,()=>c.value],()=>{ce()},{immediate:!0,deep:!0});const j=s.ref(""),L=s.ref(!1);let O="edit",ne=0;const ae=W=>(W?.format||W?.type||"").toString().toLowerCase(),re=s.computed(()=>(e.colModel?.filter(ee=>ae(ee)!=="slot")??[]).map(ee=>{const ue=ee.key||ee.name;return ue?{...ee,name:ue,key:ue}:ee})),he=s.ref({}),Ae=s.ref({}),Ce=W=>typeof W!="string"?!1:!!t[W],$e=(W,ee)=>ee?ee.split(".").reduce((ue,R)=>ue==null?ue:ue[R.trim()],W):W,it=(W,ee)=>typeof W!="string"?"":W.replace(/{{\s*([^}]+)\s*}}/g,(ue,R)=>{const M=$e(ee,R.trim());return M??""}),Fe=W=>{if(W==null||W==="")return"";if(typeof W=="number")return W;if(typeof W=="boolean")return W?1:0;if(typeof W=="string")return W.toLowerCase();if(Array.isArray(W))return W.map(ee=>Fe(ee)).join(", ");if(typeof W=="object"){if(W.text!==void 0)return String(W.text).toLowerCase();if(W.label!==void 0)return String(W.label).toLowerCase();if(W.id!==void 0)return String(W.id).toLowerCase()}return String(W).toLowerCase()},Qe=W=>{const ee=W.key||W.name;if(ee){if(f.value===ee){p.value=p.value==="asc"?"desc":"asc";return}f.value=ee,p.value="asc"}};async function We(){j.value="Додати",L.value=!0,O="add",he.value=Ye({})}function se(W,ee){if(!W?.length)return null;const ue=typeof ee=="object"?ee?.id:ee;if(ue==null||ue==="")return null;const R=W.find(M=>M?.id?.toString()===ue.toString());return R?R.text??R.label??null:null}function me(W){return W==null||W===""?"-":Array.isArray(W)?W.map(ee=>typeof ee=="object"?ee?.text??ee?.label??ee?.id??"-":ee).join(", "):typeof W=="object"?W?.text??W?.label??W?.id??"-":W}function Ee(W){const ee=W.key||W.name,ue=ee?d.value[ee]:null;return Array.isArray(ue)&&ue.length?ue:Array.isArray(W?.options)&&W.options.length?W.options:null}function Me(W,ee){const ue=ee.key||ee.name,R=W?.[ue],M=Ee(ee);if(R==null||R==="")return"-";if(Array.isArray(R)){const H=R.map(te=>se(M,te)).filter(Boolean);return H.length?H.join(", "):me(R)}const D=se(M,R);return D||me(R)}function Ye(W){const ee=r?.value?.content_id??o?.value?.id??o?.value?.content_id??r?.value?.id??null;return{...W,content_id:ee}}function Ct(W){if(!W||typeof W!="object")return W;const{content_id:ee,...ue}=W;return ue}async function et(W,ee){j.value="Редагувати",L.value=!0,O="edit",ne=ee,he.value=Ye({...W})}function Xe(){const W=Ae.value.validate();if(W){ke.notify({type:"warning",title:"Помилка валідації",message:Object.entries(W).map(([ue,R])=>`${ue}: ${R}`).join(`
|
|
2
2
|
`)});return}const ee=Ct(he.value);O==="add"?Array.isArray(c.value)?c.value=[...c.value,ee]:c.value=[ee]:c.value=c.value.map((ue,R)=>R===ne?ee:ue),L.value=!1}function ft(W){c.value=c.value.filter((ee,ue)=>ue!==W)}function Vt(){L.value=!1}return(W,ee)=>(s.openBlock(),s.createElementBlock("div",dv,[a.value?(s.openBlock(),s.createElementBlock("div",uv,[i("search")?(s.openBlock(),s.createElementBlock("div",fv,[s.createVNode(s.unref(Y.Search),{class:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"}),s.withDirectives(s.createElementVNode("input",{type:"text","onUpdate:modelValue":ee[0]||(ee[0]=ue=>u.value=ue),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),[[s.vModelText,u.value]])])):s.createCommentVNode("",!0),s.createElementVNode("div",pv,[i("import")?(s.openBlock(),s.createElementBlock("input",{key:0,ref_key:"fileInput",ref:b,onChange:Z,class:"hidden",accept:".json",type:"file"},null,544)):s.createCommentVNode("",!0),i("import")?(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",onClick:I,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"},[s.createVNode(s.unref(Y.Upload),{class:"h-4 w-4 text-gray-700"}),ee[4]||(ee[4]=s.createTextVNode(" Імпорт ",-1))])):s.createCommentVNode("",!0),i("export")?(s.openBlock(),s.createElementBlock("button",{key:2,type:"button",onClick:V,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"},[s.createVNode(s.unref(Y.Download),{class:"h-4 w-4 text-gray-700"}),ee[5]||(ee[5]=s.createTextVNode(" Експорт ",-1))])):s.createCommentVNode("",!0),i("add")?(s.openBlock(),s.createElementBlock("button",{key:3,onClick:We,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"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4 text-white"}),ee[6]||(ee[6]=s.createTextVNode(" Додати ",-1))])):s.createCommentVNode("",!0)])])):s.createCommentVNode("",!0),s.createElementVNode("div",hv,[s.createElementVNode("table",mv,[s.createElementVNode("thead",gv,[s.createElementVNode("tr",yv,[s.createElementVNode("th",bv,[s.createVNode(s.unref(Y.GripVertical),{class:"mx-auto h-4 w-4 text-gray-400"})]),(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(m.value,ue=>(s.openBlock(),s.createElementBlock("th",{key:ue.key,class:"px-4 py-3 text-left text-xs font-semibold text-gray-900"},[s.createElementVNode("button",{type:"button",onClick:R=>Qe(ue),class:"flex items-center gap-1 text-xs font-semibold text-gray-700 hover:text-gray-900 transition-colors"},[s.createElementVNode("span",null,s.toDisplayString(ue.ua||ue.label),1),f.value===(ue.key||ue.name)?(s.openBlock(),s.createElementBlock("span",wv,s.toDisplayString(p.value==="asc"?"▲":"▼"),1)):s.createCommentVNode("",!0)],8,kv)]))),128)),ee[7]||(ee[7]=s.createElementVNode("th",{class:"px-4 py-3 text-left text-xs font-semibold text-gray-900 text-center w-[1%] whitespace-nowrap"}," Дії ",-1))])]),s.createElementVNode("tbody",{class:s.normalizeClass(["divide-y divide-gray-200",{"[&_tr:last-child]:border-0":!y.value}])},[h.value.length===0?(s.openBlock(),s.createElementBlock("td",xv,[s.createElementVNode("div",vv,[s.createElementVNode("div",Cv,[s.createVNode(cv,{class:"w-48 mx-auto"}),ee[8]||(ee[8]=s.createElementVNode("div",{class:"max-w-sm mx-auto mt-6"},[s.createElementVNode("p",{class:"font-medium text-gray-800 dark:text-neutral-200"},"Нічого не знайдено"),s.createElementVNode("p",{class:"mt-2 text-sm text-gray-500 dark:text-neutral-500"})],-1))])])])):s.createCommentVNode("",!0),(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(h.value,(ue,R)=>(s.openBlock(),s.createElementBlock("tr",{key:ue.id,"data-row-index":R,class:s.normalizeClass(["border-b transition-colors hover:bg-gray-50 cursor-move text-sm text-gray-700",{"opacity-50":g.value===R,"border-t-2 border-b-2 border-blue-500 bg-blue-50 dark:bg-blue-900/20":y.value===R}]),draggable:"true",onDragstart:M=>E(R),onDragover:s.withModifiers(M=>_(R),["prevent"]),onDrop:M=>A(R)},[s.createElementVNode("td",{class:"px-4 py-3 text-center align-middle touch-none select-none",onPointerdown:M=>S(M,R),onPointermove:N,onPointerup:F,onPointercancel:T},[s.createElementVNode("div",Mv,[s.createVNode(s.unref(Y.GripVertical),{class:"mx-auto h-4 w-4 text-slate-400 dark:text-slate-500"})])],40,Ev),(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(m.value,M=>(s.openBlock(),s.createElementBlock("td",{key:M.key,class:"px-4 py-3 align-middle"},[ae(M)==="slot"?(s.openBlock(),s.createElementBlock(s.Fragment,{key:0},[Ce(M.slot)?s.renderSlot(W.$slots,M.slot,{key:0,row:ue,value:ue[M.key],column:M},void 0,!0):(s.openBlock(),s.createElementBlock("div",{key:1,class:"text-sm text-gray-900",innerHTML:it(M.slot,ue)},null,8,Av))],64)):(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[ae(M)==="file"?(s.openBlock(),s.createElementBlock("div",_v,[U(Me(ue,M))?(s.openBlock(),s.createElementBlock("div",Tv,[s.createElementVNode("img",{src:`/file/resize?filepath=${Me(ue,M)}&format=webp`,alt:"alt",width:"45",class:"rounded-md max-w-[45px] h-[45px] object-cover"},null,8,Bv)])):(s.openBlock(),s.createElementBlock("div",Nv,[s.createVNode(s.unref(Y.FileText),{class:"h-4 w-4 min-w-4"})]))])):ae(M)==="color"?(s.openBlock(),s.createElementBlock("div",Dv,[s.createElementVNode("span",{class:"inline-flex h-6 w-6 rounded border border-gray-200",style:s.normalizeStyle({backgroundColor:Me(ue,M)||"#ffffff"})},null,4)])):ae(M)==="tiptap-editor"?(s.openBlock(),s.createElementBlock("div",{key:2,class:"text-sm font-medium text-gray-900 datatable-tiptap-editor line-clamp-4",innerHTML:Me(ue,M)},null,8,Vv)):(s.openBlock(),s.createElementBlock("div",$v,s.toDisplayString(Me(ue,M)),1))],64))]))),128)),s.createElementVNode("td",Lv,[s.createElementVNode("div",Iv,[s.createElementVNode("button",{onClick:M=>et(ue,R),class:"p-1.5 text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded transition-colors"},[s.createVNode(s.unref(Y.Pencil),{class:"h-4 w-4"})],8,Ov),s.createElementVNode("button",{onClick:M=>ft(R),class:"p-1.5 text-gray-600 hover:text-red-600 hover:bg-red-50 rounded transition-colors"},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,Rv)])])],42,Sv))),128))],2)])]),s.createVNode(s.unref(ke.VsModal),{visible:L.value,title:j.value,size:"lg",onClose:Vt,teleport:"#modal"},{default:s.withCtx(()=>[s.createVNode(Pt,{schema:re.value,"allow-id-field":"",values:he.value,"onUpdate:values":ee[1]||(ee[1]=ue=>he.value=ue),form:Ae.value,"onUpdate:form":ee[2]||(ee[2]=ue=>Ae.value=ue)},null,8,["schema","values","form"]),s.createElementVNode("div",Fv,[s.createElementVNode("button",{type:"button",onClick:ee[3]||(ee[3]=ue=>L.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"}," Скасувати "),s.createElementVNode("button",{onClick:Xe,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"])]))}}),[["__scopeId","data-v-ef50558b"]]),Pv={},zv={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 Hv(n,e){return s.openBlock(),s.createElementBlock("svg",zv,e[0]||(e[0]=[s.createElementVNode("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),s.createElementVNode("path",{d:"M6 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"},null,-1),s.createElementVNode("path",{d:"M18 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"},null,-1),s.createElementVNode("path",{d:"M7.5 16.5l9 -9"},null,-1)]))}const jv=Be(Pv,[["render",Hv]]),Uv={},Wv={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 Kv(n,e){return s.openBlock(),s.createElementBlock("svg",Wv,e[0]||(e[0]=[s.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 qv=Be(Uv,[["render",Kv]]),Gv={},Jv={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 Yv(n,e){return s.openBlock(),s.createElementBlock("svg",Jv,e[0]||(e[0]=[s.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 Xv=Be(Gv,[["render",Yv]]);function Zv(n,e,t){const r=Math.max(0,Math.min(22,Math.floor(t))),o=2**r,i=Math.floor((n+180)/360*o),l=e*Math.PI/180,a=Math.floor((1-Math.log(Math.tan(l)+1/Math.cos(l))/Math.PI)/2*o);return{z:r,x:i,y:a}}function Qv(n,e){if(typeof n!="string"||!n.trim()||!/\{z\}/i.test(n))return;const t={"{z}":e.z,"{x}":e.x,"{y}":e.y,"{-y}":2**e.z-e.y-1,"{s}":"a"};let r=n;return Object.entries(t).forEach(([o,i])=>{r=r.replace(new RegExp(o.replace(/[{}-]/g,"\\$&"),"gi"),String(i))}),r}const af=/\/(\d+)\/(\d+)\/(\d+)(\.(?:png|jpe?g|webp))(?:\?.*)?$/i;function cf(n,e){if(typeof n!="string"||!n.trim()||!af.test(n))return;const t=n.replace(af,`/${e.z}/${e.x}/${e.y}$4`);return t!==n?t:void 0}function eC(n,e){if(n?.url){const t=Qv(n.url,e);if(t)return t;const r=cf(n.url,e);if(r)return r}if(n?.preview){const t=cf(n.preview,e);return t||n.preview}}const tC=["title","aria-expanded"],nC=["src"],rC={class:"map-layers__header"},oC={class:"map-layers__body"},sC={key:0,class:"map-layers__section"},iC={class:"map-layers__grid map-layers__grid--4"},lC=["disabled","title","onClick"],aC={class:"map-layers__thumb"},cC=["src"],dC={class:"map-layers__option-label"},uC={key:1,class:"map-layers__section"},fC={class:"map-layers__grid map-layers__grid--4"},pC=["title","onClick"],hC={class:"map-layers__thumb"},mC=["src"],gC={class:"map-layers__option-label"},yC={key:2,class:"map-layers__section map-layers__section--vector"},bC={class:"map-layers__vector-list"},kC=["checked","disabled","onChange"],li=.8,wC=Be(s.defineComponent({__name:"map-layers",props:{basemaps:{},activeBaseKey:{},tileOverlays:{},activeTileOverlayKeys:{},vectorOverlays:{},previewTile:{},disabled:{type:Boolean},compact:{type:Boolean}},emits:["onLayerChange","onOverlayToggle","onVectorOverlayToggle"],setup(n,{emit:e}){const t=n,r=e,o=10*li,i=400*li,l=400*li,a=320*li,c=s.ref(null),d=s.ref(null),u=s.ref(null),f=s.ref(!1),p=s.ref({}),h=s.computed(()=>Object.keys(t.basemaps||{}).length>0),m=s.computed(()=>Object.keys(t.tileOverlays||{}).length>0),g=s.computed(()=>t.vectorOverlays??[]),y=s.computed(()=>g.value.length>0),b=s.computed(()=>h.value||m.value||y.value),w=s.computed(()=>t.basemaps?.[t.activeBaseKey]?.name||t.activeBaseKey||"Шари"),v=s.computed(()=>N(t.basemaps)),S=s.computed(()=>N(t.tileOverlays||{}));function N(G){const X=t.previewTile;return X?Object.fromEntries(Object.entries(G).map(([ce,j])=>[String(ce),eC(j,X)??j.preview??""])):{}}function F(G){return v.value[G]||t.basemaps?.[G]?.preview||""}function T(G){return S.value[G]||t.tileOverlays?.[G]?.preview||""}const E=s.computed(()=>F(t.activeBaseKey));function _(G){return Array.isArray(t.activeTileOverlayKeys)&&t.activeTileOverlayKeys.includes(G)}function A(){const G=d.value;if(!G)return;const X=G.getBoundingClientRect(),ce=Math.min(i,window.innerWidth-16);let j=X.left;j+ce>window.innerWidth-8&&(j=window.innerWidth-ce-8),j=Math.max(8,j);const L=X.top-o-8,O=t.compact?a:l,ne=Math.min(O,Math.max(96,L));p.value={position:"fixed",left:`${j}px`,bottom:`${window.innerHeight-X.top+o}px`,width:`${ce}px`,maxHeight:`${ne}px`,zIndex:"10050"}}async function I(){f.value=!f.value,f.value&&(await s.nextTick(),A())}function U(){f.value=!1}function Z(G){G!==t.activeBaseKey&&r("onLayerChange",G)}function V(G){t.disabled||r("onOverlayToggle",G)}function z(G){t.disabled||r("onVectorOverlayToggle",G)}function oe(G){if(!f.value)return;const X=G.target;c.value?.contains(X)||u.value?.contains(X)||U()}function K(G){G.key==="Escape"&&U()}return s.watch(f,async G=>{G&&(await s.nextTick(),A())}),s.onMounted(()=>{document.addEventListener("click",oe),document.addEventListener("keydown",K),window.addEventListener("resize",A),window.addEventListener("scroll",A,!0)}),s.onBeforeUnmount(()=>{document.removeEventListener("click",oe),document.removeEventListener("keydown",K),window.removeEventListener("resize",A),window.removeEventListener("scroll",A,!0)}),(G,X)=>b.value?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"rootRef",ref:c,class:s.normalizeClass(["map-layers relative",{"map-layers--compact":G.compact}])},[s.createElementVNode("button",{ref_key:"triggerRef",ref:d,type:"button",class:"map-layers__trigger",title:w.value,"aria-haspopup":"dialog","aria-expanded":f.value,onClick:s.withModifiers(I,["stop"])},[E.value?(s.openBlock(),s.createElementBlock("img",{key:0,src:E.value,alt:"",class:"map-layers__trigger-img"},null,8,nC)):s.createCommentVNode("",!0)],8,tC),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[s.createVNode(s.Transition,{name:"map-layers-panel"},{default:s.withCtx(()=>[f.value?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"panelRef",ref:u,class:"map-layers__panel",style:s.normalizeStyle(p.value),role:"dialog","aria-label":"Шари карти"},[s.createElementVNode("header",rC,[X[0]||(X[0]=s.createElementVNode("h3",{class:"map-layers__title"},"Шари карти",-1)),s.createElementVNode("button",{type:"button",class:"map-layers__close","aria-label":"Закрити",onClick:U},[s.createVNode(s.unref(Y.X),{class:"map-layers__close-icon"})])]),s.createElementVNode("div",oC,[m.value?(s.openBlock(),s.createElementBlock("section",sC,[X[1]||(X[1]=s.createElementVNode("h4",{class:"map-layers__section-title"},"Додаткові шари",-1)),s.createElementVNode("div",iC,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(G.tileOverlays,(ce,j)=>(s.openBlock(),s.createElementBlock("button",{key:`tile-${j}`,type:"button",class:s.normalizeClass(["map-layers__option",{"map-layers__option--active":_(String(j))}]),disabled:G.disabled,title:ce.name||String(j),onClick:L=>V(String(j))},[s.createElementVNode("span",aC,[s.createElementVNode("img",{src:T(String(j)),alt:""},null,8,cC)]),s.createElementVNode("span",dC,s.toDisplayString(ce.name||j),1)],10,lC))),128))])])):s.createCommentVNode("",!0),h.value?(s.openBlock(),s.createElementBlock("section",uC,[X[2]||(X[2]=s.createElementVNode("h4",{class:"map-layers__section-title"},"Базові шари",-1)),s.createElementVNode("div",fC,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(G.basemaps,(ce,j)=>(s.openBlock(),s.createElementBlock("button",{key:`base-${j}`,type:"button",class:s.normalizeClass(["map-layers__option",{"map-layers__option--active":G.activeBaseKey===String(j)}]),title:ce.name||String(j),onClick:L=>Z(String(j))},[s.createElementVNode("span",hC,[s.createElementVNode("img",{src:F(String(j)),alt:""},null,8,mC)]),s.createElementVNode("span",gC,s.toDisplayString(ce.name||j),1)],10,pC))),128))])])):s.createCommentVNode("",!0),y.value?(s.openBlock(),s.createElementBlock("section",yC,[X[3]||(X[3]=s.createElementVNode("h4",{class:"map-layers__section-title"},"Дані",-1)),s.createElementVNode("div",bC,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(g.value,ce=>(s.openBlock(),s.createElementBlock("label",{key:ce.id,class:"map-layers__vector-item"},[s.createElementVNode("input",{type:"checkbox",class:"map-layers__checkbox",checked:ce.visible,disabled:G.disabled,onChange:j=>z(ce.id)},null,40,kC),s.createElementVNode("span",null,s.toDisplayString(ce.label),1)]))),128))])])):s.createCommentVNode("",!0)])],4)):s.createCommentVNode("",!0)]),_:1})]))],2)):s.createCommentVNode("",!0)}}),[["__scopeId","data-v-c1206d48"]]),br=1e-10,ai=/([+-]?\d{1,3})\s*[°º˚]\s*(\d{1,2})\s*['’′`]\s*(\d{1,2}(?:\.\d+)?)\s*["”″]\s*([NSEW])/gi,xC=/^[+-]?\d+(?:\.\d+)?$/;function vC(n,e,t){const r=n.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 o=[],i=[];if(r.forEach((d,u)=>{const f=u+1,p=e==="decimal"?CC(d,f,t):uf(d,f,t);if(!p.ok){o.push(...p.errors);return}const h=i[i.length-1];if(h&&pf(h,p.point)){o.push({line:f,message:"Послідовні точки не повинні дублюватися."});return}i.push(p.point)}),o.length)return{ok:!1,errors:o};if(new Set(i.map(EC)).size<3)return{ok:!1,errors:[{line:0,message:"Полігон повинен містити мінімум 3 унікальні точки."}]};const a=[...i];let c=!1;return pf(a[0],a[a.length-1])||(a.push(a[0]),c=!0),MC(a)?{ok:!1,errors:[{line:0,message:"Полігон має самоперетин."}]}:{ok:!0,ring:a,wasClosedAutomatically:c}}function CC(n,e,t){return df(n,"decimal",t,e)}function df(n,e,t,r=1){return e==="decimal"?SC(n,r,t):uf(n,r,t)}function SC(n,e,t){const r=[];if(/[A-Za-zА-Яа-яІіЇїЄєҐґ]/.test(n))return{ok:!1,errors:[{line:e,message:"У десятковому форматі не допускаються літери."}]};const o=n.split(/[\s,;]+/).filter(Boolean);if(o.length<2)return{ok:!1,errors:[{line:e,message:"Кожен рядок має містити дві координати."}]};if(o.length>2)return{ok:!1,errors:[{line:e,message:"У рядку дозволено лише одну пару координат."}]};if(!o.every(d=>xC.test(d)))return{ok:!1,errors:[{line:e,message:"Не вдалося розпізнати десяткові координати."}]};const i=Number(o[0]),l=Number(o[1]);if(!Number.isFinite(i)||!Number.isFinite(l))return{ok:!1,errors:[{line:e,message:"Не вдалося розпізнати десяткові координати."}]};const a=t==="lat-lon"?i:l,c=t==="lat-lon"?l:i;return(a<-90||a>90)&&r.push({line:e,message:"Широта поза діапазоном (-90..90)."}),(c<-180||c>180)&&r.push({line:e,message:"Довгота поза діапазоном (-180..180)."}),r.length?{ok:!1,errors:r}:{ok:!0,point:[c,a]}}function uf(n,e,t){ai.lastIndex=0;const r=[...n.matchAll(ai)];if(r.length<2)return{ok:!1,errors:[{line:e,message:"Не вдалося розпізнати DMS-координати."}]};if(r.length>2)return{ok:!1,errors:[{line:e,message:"У рядку дозволено лише одну пару координат."}]};if(ai.lastIndex=0,n.replace(ai," ").replace(/[\s,;]+/g,"").trim().length)return{ok:!1,errors:[{line:e,message:"У рядку виявлено зайві символи або значення."}]};const i=ff(r[0],e,t==="lat-lon"?"lat":"lon"),l=ff(r[1],e,t==="lat-lon"?"lon":"lat"),a=[];if(i.ok||a.push(i.error),l.ok||a.push(l.error),a.length)return{ok:!1,errors:a};const c=t==="lat-lon"?i.value:l.value;return{ok:!0,point:[t==="lat-lon"?l.value:i.value,c]}}function ff(n,e,t){const r=Number(n[1]),o=Number(n[2]),i=Number(n[3]),l=String(n[4]).toUpperCase();if(!Number.isFinite(r)||!Number.isFinite(o)||!Number.isFinite(i))return{ok:!1,error:{line:e,message:"Невірні значення DMS-координат."}};if(t==="lat"&&!(l==="N"||l==="S")||t==="lon"&&!(l==="E"||l==="W"))return{ok:!1,error:{line:e,message:t==="lat"?"Для широти напрям повинен бути N або S.":"Для довготи напрям повинен бути E або W."}};if(o<0||o>59)return{ok:!1,error:{line:e,message:"Хвилини повинні бути в діапазоні 0..59."}};if(i<0||i>60)return{ok:!1,error:{line:e,message:"Секунди повинні бути в діапазоні 0..60."}};const d=Math.abs(r),u=t==="lat"?90:180;if(d>u)return{ok:!1,error:{line:e,message:t==="lat"?"Градуси широти повинні бути в діапазоні 0..90.":"Градуси довготи повинні бути в діапазоні 0..180."}};if(d===u&&(o!==0||i!==0))return{ok:!1,error:{line:e,message:t==="lat"?"Для 90° широти хвилини й секунди мають бути 0.":"Для 180° довготи хвилини й секунди мають бути 0."}};const f=d+o/60+i/3600;return{ok:!0,value:l==="S"||l==="W"?-f:f}}function EC(n){return`${n[0].toFixed(12)}:${n[1].toFixed(12)}`}function pf(n,e){return Math.abs(n[0]-e[0])<br&&Math.abs(n[1]-e[1])<br}function MC(n){if(n.length<4)return!1;for(let e=0;e<n.length-1;e+=1){const t=n[e],r=n[e+1];for(let o=e+1;o<n.length-1;o+=1){if(Math.abs(e-o)<=1||e===0&&o===n.length-2)continue;const i=n[o],l=n[o+1];if(AC(t,r,i,l))return!0}}return!1}function AC(n,e,t,r){const o=ci(n,e,t),i=ci(n,e,r),l=ci(t,r,n),a=ci(t,r,e);return!!(o!==i&&l!==a||o===0&&di(n,t,e)||i===0&&di(n,r,e)||l===0&&di(t,n,r)||a===0&&di(t,e,r))}function ci(n,e,t){const r=(e[1]-n[1])*(t[0]-e[0])-(e[0]-n[0])*(t[1]-e[1]);return Math.abs(r)<br?0:r>0?1:2}function di(n,e,t){return e[0]<=Math.max(n[0],t[0])+br&&e[0]+br>=Math.min(n[0],t[0])&&e[1]<=Math.max(n[1],t[1])+br&&e[1]+br>=Math.min(n[1],t[1])}const _C=["title"],TC={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"},BC=["onClick"],NC=["placeholder"],DC={class:"absolute inset-y-0 right-2 flex items-center gap-1"},VC={class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-gray-100"},$C={class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},LC={class:"max-h-[260px] overflow-auto"},IC={key:0,class:"divide-y divide-gray-100"},OC=["onClick"],RC={key:1,class:"px-3 py-3 text-xs text-gray-500"},hf="formMapSearchAddressHistory",FC=12,PC="https://geo.rv.ua/api-user/dzk.api",zC="https://nominatim.openstreetmap.org/search",HC=Be(s.defineComponent({__name:"map-search",props:{config:{}},emits:["goToCoordinates"],setup(n,{emit:e}){const t={mounted(R,M){if(typeof document>"u")return;let D=null;const H=8,te=()=>{const tt=String(M?.value??"");if(!tt)return;D=document.createElement("div"),D.textContent=tt,Object.assign(D.style,{position:"absolute",background:"#333",color:"#fff",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",whiteSpace:"nowrap",pointerEvents:"none",zIndex:"9999"}),document.body.appendChild(D);const Re=R.getBoundingClientRect();D.style.left=`${Re.right+window.scrollX+H}px`,D.style.top=`${Re.top+window.scrollY+(Re.height-D.offsetHeight)/2}px`},we=()=>{D?.parentNode&&D.parentNode.removeChild(D),D=null};R.addEventListener("mouseenter",te),R.addEventListener("mouseleave",we),Object.assign(R,{tooltipRightHandlers:{show:te,hide:we}})},unmounted(R){if(typeof document>"u")return;const M=R.tooltipRightHandlers;M&&(R.removeEventListener("mouseenter",M.show),R.removeEventListener("mouseleave",M.hide))}},r=n,o=e,i=s.getCurrentInstance();function l(){return typeof globalThis<"u"&&globalThis.proxy?globalThis.proxy:typeof window<"u"&&window.proxy?window.proxy:null}function a(){const M=i?.appContext.config.globalProperties?.$settings?.map?.searchViewbox;if(M)return Array.isArray(M)?M.join(","):String(M);const H=l()?.map?.searchViewbox;if(H)return Array.isArray(H)?H.join(","):String(H)}function c(){const M=i?.appContext.config.globalProperties?.$settings?.map?.addressSuggest;if(typeof M=="string"&&M.trim())return M.trim();const H=l()?.map?.addressSuggest;if(typeof H=="string"&&H.trim())return H.trim()}function d(){if(typeof r.config?.cadastreSuggest=="string"&&r.config.cadastreSuggest.trim())return r.config.cadastreSuggest.trim();const R=i?.appContext.config.globalProperties?.$settings,M=R?.map?.cadastreSuggest??R?.map?.parcelSuggest??R?.map?.parcelSearch;if(typeof M=="string"&&M.trim())return M.trim();const D=l(),H=D?.map?.cadastreSuggest??D?.map?.parcelSuggest??D?.map?.parcelSearch;if(typeof H=="string"&&H.trim())return H.trim()}const u=!!c(),f=!!a(),p=s.computed(()=>{const R=["nominatim","xy","parcel"];return u&&R.unshift("address"),f?R:R.filter(M=>M!=="nominatim")}),h=s.computed(()=>{const R=p.value,M=r.config?.tools?.filter(D=>R.includes(D));return M&&M.length?M:R}),m=s.computed(()=>r.config?.placeholder?.trim()||"Пошук…"),g=s.ref(h.value[0]);s.watch(h,R=>{R.includes(g.value)||(g.value=R[0])});const y=s.ref(""),b=s.ref(!1),w=s.ref(null),v=s.ref(null),S=s.ref(null),N=s.ref(null),F=s.ref([]),T=s.ref(null),E=s.ref(!1),_=s.ref([]),A=s.computed(()=>(g.value==="address"||g.value==="nominatim")&&E.value),I=s.computed(()=>r.config?.addressDebounceMs??1e3);let U=null;const Z=s.ref(!1),V=s.computed(()=>y.value.trim().length>0?F.value:_.value),z=s.computed(()=>y.value.trim().length?`Знайдено ${F.value.length}`:"Історія пошуку"),oe=s.computed(()=>y.value.trim().length?"Нічого не знайдено":"Історія порожня");function K(){if(typeof window>"u")return[];try{const R=window.localStorage?.getItem?.(hf);if(!R)return[];const M=JSON.parse(R);return Array.isArray(M)?M:[]}catch{return[]}}function G(R){typeof window>"u"||window.localStorage?.setItem?.(hf,JSON.stringify(R))}function X(R){const D=[R,..._.value.filter(H=>H.id!==R.id)].slice(0,10);_.value=D,G(D)}const ce=s.reactive({position:"absolute",left:"0px",top:"0px",width:"100%",display:"none"});function j(){if(!N.value)return;const R=N.value.getBoundingClientRect(),M=S.value?.getBoundingClientRect(),D=M?.width??R.width,H=(M?.left??R.left)+window.scrollX,te=R.bottom+window.scrollY+FC;ce.left=`${H}px`,ce.top=`${te}px`,ce.width=`${D}px`,ce.display="block"}const L=()=>{A.value&&j()};function O(){U&&(clearTimeout(U),U=null)}s.watch(g,()=>{y.value="",b.value=!1,F.value=[],E.value=!1,O(),Z.value=!1}),s.watch(A,R=>{R?s.nextTick(()=>{j()}):ce.display="none"}),s.watch(y,R=>{if(g.value!=="address"&&g.value!=="nominatim"){F.value=[],O();return}if(!R.trim()){F.value=[],E.value=_.value.length>0,O();return}O(),E.value=!0,U=window.setTimeout(()=>{Xe(R).catch(M=>{const D=M?.message||"Помилка пошуку адреси";ke.notify({type:"error",title:"Пошук адреси",message:D})})},I.value)});function ne(R){const M=[];v.value&&M.push(v.value),R instanceof HTMLElement&&M.push(R),w.value?.querySelectorAll("li")?.forEach(H=>{M.push(H)}),M.forEach(H=>{H.dispatchEvent(new MouseEvent("mouseleave",{bubbles:!0}))})}function ae(R){b.value&&ne(R.target),b.value=!b.value}function re(R,M){ne(M?.target),g.value=R}function he(){y.value="",F.value=[],E.value=!1,Z.value=!1}function Ae(R){const M=R.target;if(b.value){const D=w.value;D&&!D.contains(M)&&(ne(M),b.value=!1)}if(A.value){const D=T.value,H=N.value;D&&!D.contains(M)&&(!H||!H.contains(M))&&(E.value=!1)}}s.onMounted(()=>{_.value=K(),window.addEventListener("click",Ae,!0),window.addEventListener("scroll",L,!0),window.addEventListener("resize",L)}),s.onBeforeUnmount(()=>{window.removeEventListener("click",Ae,!0),window.removeEventListener("scroll",L,!0),window.removeEventListener("resize",L),O()});function Ce(R){return R==="xy"?"Координати":R==="parcel"?"Кадастр":R==="nominatim"?"Адреса":"Адресний"}function $e(R){switch(R){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 it(R){const M=df(R.trim(),"dms","lat-lon");if(M.ok){const[Le,$t]=M.point;return{lat:$t,lng:Le}}const D=R.replace(/[,]+/g," ").trim();if(!D)return null;const H=D.split(/\s+/).filter(Boolean);if(H.length<2)return null;const te=H.slice(0,2).map(Number);if(!te.every(Le=>Number.isFinite(Le)))return null;let[we,tt]=te,Re=we,St=tt;const cn=Le=>Math.abs(Le)<=90,tn=Le=>Math.abs(Le)<=180;if(!cn(Re)||!tn(St))if(cn(St)&&tn(Re))Re=tt,St=we;else return null;return{lat:Re,lng:St}}function Fe(R){const M=R?.result||R?.data||R;return(Array.isArray(M)?M:M?[M]:[]).map((H,te)=>{const we=H?.geom_centroid,tt=Array.isArray(we?.coordinates)?we.coordinates:null;if(!tt||tt.length<2)return null;const Re=Number(tt[0]),St=Number(tt[1]);return!Number.isFinite(St)||!Number.isFinite(Re)?null:{id:String(H?.parcel_id??H?.cad_num??te),title:H?.cadnum||H?.cad_num||"Земельна ділянка",lat:St,lng:Re,geom:H?.geom||null}}).filter(H=>!!H)}function Qe(R){return(Array.isArray(R?.features)?R.features:[]).map((D,H)=>{const te=D?.geometry?.coordinates,we=Number(te?.[0]),tt=Number(te?.[1]);if(!Number.isFinite(tt)||!Number.isFinite(we))return null;const Re=D?.properties||{},St=Re?.geocoding?.label||Re?.display_name||Re?.label||"Адреса";return{id:String(Re?.geocoding?.place_id||Re?.place_id||H),title:St,lat:tt,lng:we}}).filter(D=>!!D)}function We(R){return Number.isFinite(R.lat)&&Number.isFinite(R.lng)}function se(R){if(R==null||typeof R=="string"&&!R.trim())return null;const M=Number(R);return Number.isFinite(M)?M:null}function me(R){const M=se(R.lng)??se(R.lon)??se(R.longitude)??se(R.x),D=se(R.lat)??se(R.latitude)??se(R.y);if(M!=null&&D!=null)return{lat:D,lng:M};const H=R?.geometry?.coordinates??R?.geom_centroid?.coordinates??R?.centroid?.coordinates??R?.geojson?.geometry?.coordinates??R?.geom?.coordinates;if(Array.isArray(H)&&H.length>=2){const te=se(H[0]),we=se(H[1]);if(te!=null&&we!=null)return{lat:we,lng:te}}return null}function Ee(R){return(Array.isArray(R?.data)?R.data:[]).map((D,H)=>{const te=me(D),we=String(D.text??D.title??D.label??D.name??D.address??D.display_name??D.id??"Адреса"),tt=String(D.id??D.code??D.value??H);return te?{id:tt,title:we,...te}:{id:tt,title:we}}).filter(D=>!!D?.title)}function Me(R){const M=d()||PC;if(M.includes(":id"))return M.replace(":id",encodeURIComponent(R));if(M.includes(":name"))return M.replace(":name",encodeURIComponent(R));try{const D=new URL(M,window.location.origin),H=r.config?.parcelQueryParam?.trim()||"cad_num";return D.searchParams.set(H,R),D.toString()}catch{return M}}function Ye(R){const M=c();if(!M)return null;if(M.includes(":name"))return M.replace(":name",encodeURIComponent(R));try{const D=new URL(M,window.location.origin);return R.trim()&&D.searchParams.set("q",R),D.toString()}catch{return M}}async function Ct(R){const M=Ye(R);if(!M)return[];const D=await fetch(M);if(!D.ok)throw new Error(`HTTP ${D.status}`);const H=await D.json();return Ee(H)}async function et(R){const M=new URL(zC);M.searchParams.set("format","geojson"),M.searchParams.set("q",R),M.searchParams.set("addressdetails","1"),M.searchParams.set("bounded","1");const D=a();D&&M.searchParams.set("viewbox",D);const H=await fetch(M.toString());if(!H.ok)throw new Error(`HTTP ${H.status}`);const te=await H.json();return Qe(te)}async function Xe(R){if(F.value=[],O(),g.value==="address"){if(!c()){ke.notify({type:"warning",title:"Пошук адреси",message:"Не налаштовано addressSuggest"});return}const H=await Ct(R);if(!H.length){ke.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}F.value=H;return}const M=await et(R);if(!M.length){ke.notify({type:"warning",title:"Пошук адреси",message:"Не знайдено результатів"});return}F.value=M}async function ft(R){if(We(R)){ee(R),X(R);return}ke.notify({type:"warning",title:"Пошук адреси",message:"Геометрія для обраної адреси відсутня"})}function Vt(){g.value!=="address"&&g.value!=="nominatim"||(E.value=!0,s.nextTick(()=>{j()}))}function W(R){const D=R.replace(/\s+/g,"").split(":");if(D.length!==4)return!1;const H=[10,2,3,4];return D.every((te,we)=>te.length===H[we]&&/^\d+$/.test(te))}function ee(R){o("goToCoordinates",[R.lat,R.lng],{geom:R.geom,zoom:r.config?.zoom}),Z.value=!0}async function ue(){const R=y.value.trim();if(R){if(g.value==="xy"){const M=it(R);if(!M){ke.notify({type:"warning",title:"Пошук координат",message:"Використайте `lat lon` або DMS у форматі `50°27'00\"N 30°31'24\"E`."});return}ee(M);return}if(g.value==="address"||g.value==="nominatim"){try{await Xe(R)}catch(M){const D=M?.message||"Помилка пошуку адреси";ke.notify({type:"error",title:"Пошук адреси",message:D})}return}try{if(!W(R)){ke.notify({type:"warning",title:"Пошук кадастру",message:"Кадастровий номер має формат ХХХХХХХХХХ:ХХ:ХХХ:ХХХХ"});return}const M=await fetch(Me(R));if(!M.ok)throw new Error(`HTTP ${M.status}`);const D=await M.json(),H=Fe(D);if(!H.length)ke.notify({type:"warning",title:"Пошук",message:"Не знайдено результатів"});else{const te=H.find(We);if(!te){ke.notify({type:"warning",title:"Пошук",message:"Геометрія ділянки відсутня"});return}ee(te)}}catch(M){const D=M?.message||"Помилка пошуку";ke.notify({type:"error",title:"Пошук",message:D})}}}return(R,M)=>(s.openBlock(),s.createElementBlock("div",{ref_key:"widgetRef",ref:S,class:"map-search-widget flex flex-col gap-2 rounded-xl widget min-w-[200px]"},[s.createElementVNode("form",{class:"flex gap-2 text-gray-900",onSubmit:s.withModifiers(ue,["prevent"])},[h.value.length>1?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:w,class:"relative search-type w-[100px]"},[s.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:ae},[s.withDirectives((s.openBlock(),s.createElementBlock("span",{ref_key:"selectedToolLabelRef",ref:v,class:"block w-full truncate",title:Ce(g.value)},[s.createTextVNode(s.toDisplayString(Ce(g.value)),1)],8,_C)),[[t,$e(g.value)]]),(s.openBlock(),s.createElementBlock("svg",{class:s.normalizeClass(["w-4 h-4 text-gray-500 transition-transform",{"rotate-180":b.value}]),viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},M[3]||(M[3]=[s.createElementVNode("path",{d:"M6 9l6 6 6-6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)]),2))]),b.value?(s.openBlock(),s.createElementBlock("div",TC,[s.createElementVNode("ul",null,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(h.value,D=>s.withDirectives((s.openBlock(),s.createElementBlock("li",{key:D,class:"px-3 py-2 cursor-pointer hover:bg-gray-100 text-gray-900",onClick:H=>re(D,H)},[s.createTextVNode(s.toDisplayString(Ce(D)),1)],8,BC)),[[t,$e(D)]])),128))])])):s.createCommentVNode("",!0)],512)):s.createCommentVNode("",!0),s.createElementVNode("div",{ref_key:"searchWrapperRef",ref:N,class:"relative flex-1 min-w-[140px]"},[g.value==="parcel"?(s.openBlock(),s.createBlock(qs,{key:0,modelValue:y.value,"onUpdate:modelValue":M[0]||(M[0]=D=>y.value=D),mask:"0000000000:00:000:0000",class:s.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",Z.value?"!pr-14":"!pr-8"])},null,8,["modelValue","class"])):s.withDirectives((s.openBlock(),s.createElementBlock("input",{key:1,"onUpdate:modelValue":M[1]||(M[1]=D=>y.value=D),placeholder:m.value,type:"text",class:s.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",Z.value?"!pr-14":"!pr-8"]),onFocus:Vt},null,42,NC)),[[s.vModelText,y.value,void 0,{trim:!0}]]),s.createElementVNode("div",DC,[Z.value?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Очистити",onClick:he},M[4]||(M[4]=[s.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"},[s.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})],-1)]))):s.createCommentVNode("",!0),M[5]||(M[5]=s.createElementVNode("button",{type:"submit",class:"flex items-center text-gray-400 hover:text-gray-600","aria-label":"Пошук"},[s.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"},[s.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))]),A.value?(s.openBlock(),s.createBlock(s.Teleport,{key:2,to:"body"},[s.createElementVNode("div",{ref_key:"addressResultsRef",ref:T,class:"vs-select__options mt-1 bg-white border border-gray-300 rounded-lg shadow-lg text-sm text-gray-900 z-50",style:s.normalizeStyle(ce)},[s.createElementVNode("div",VC,[s.createElementVNode("span",$C,s.toDisplayString(z.value),1),s.createElementVNode("button",{type:"button",class:"text-gray-400 hover:text-gray-600","aria-label":"Закрити",onClick:M[2]||(M[2]=D=>E.value=!1)}," ✕ ")]),s.createElementVNode("div",LC,[V.value.length?(s.openBlock(),s.createElementBlock("ul",IC,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(V.value,D=>(s.openBlock(),s.createElementBlock("li",{key:D.id,class:"px-3 py-2 cursor-pointer hover:bg-gray-50",onClick:H=>ft(D)},s.toDisplayString(D.title),9,OC))),128))])):(s.openBlock(),s.createElementBlock("div",RC,s.toDisplayString(oe.value),1))])],4)])):s.createCommentVNode("",!0)],512)],32)],512))}}),[["__scopeId","data-v-d9026eaa"]]),jC={class:"pt-1 border-t border-gray-100"},UC={class:"space-y-1"},WC=s.defineComponent({__name:"AddCoordinates",emits:["submit","cancel"],setup(n,{emit:e}){const t=e,r=s.ref(null),o=s.ref(null),i=(c,d,u)=>Math.min(Math.max(c,d),u),l=()=>{if(r.value===null||o.value===null||!Number.isFinite(r.value)||!Number.isFinite(o.value))return;const c=i(r.value,-90,90),d=i(o.value,-180,180);t("submit",{lat:c,lng:d}),r.value=null,o.value=null},a=()=>{r.value=null,o.value=null,t("cancel")};return(c,d)=>(s.openBlock(),s.createElementBlock("div",jC,[d[2]||(d[2]=s.createElementVNode("p",{class:"text-xs text-gray-600 mb-1"},"Додати точку за координатами:",-1)),s.createElementVNode("div",UC,[s.withDirectives(s.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),[[s.vModelText,r.value,void 0,{number:!0}]]),s.withDirectives(s.createElementVNode("input",{"onUpdate:modelValue":d[1]||(d[1]=u=>o.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),[[s.vModelText,o.value,void 0,{number:!0}]]),s.createElementVNode("div",{class:"flex gap-1.5"},[s.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:l}," Додати "),s.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:a}," Скасувати ")])])]))}}),KC=s.defineComponent({__name:"BtnAdd",emits:["click"],setup(n){return(e,t)=>(s.openBlock(),s.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:t[0]||(t[0]=r=>e.$emit("click"))},[s.createVNode(s.unref(Y.Plus),{size:12,"stroke-width":2}),t[1]||(t[1]=s.createTextVNode(" Додати ",-1))]))}}),qC=s.defineComponent({__name:"BtnClear",emits:["click"],setup(n){return(e,t)=>(s.openBlock(),s.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:t[0]||(t[0]=r=>e.$emit("click"))},[s.createVNode(s.unref(Y.Trash2),{size:12,"stroke-width":2}),t[1]||(t[1]=s.createTextVNode(" Очистити ",-1))]))}}),GC=s.defineComponent({__name:"BtnComplete",emits:["click"],setup(n){return(e,t)=>(s.openBlock(),s.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:t[0]||(t[0]=r=>e.$emit("click"))},[s.createVNode(s.unref(Y.Circle),{size:12,"stroke-width":2}),t[1]||(t[1]=s.createTextVNode("Замкнути ",-1))]))}}),JC=new Intl.NumberFormat("uk-UA",{minimumFractionDigits:2,maximumFractionDigits:2});function kr(n){return JC.format(n)}function mf(n){return n>=1e3?`${kr(n/1e3)} км`:`${kr(n)} м`}const YC={class:"flex items-center gap-1.5 text-xs bg-gray-50 rounded p-1.5"},XC={key:0,class:"flex-1 flex gap-1"},ZC={key:1,class:"flex-1 font-mono text-gray-700"},QC=s.defineComponent({__name:"DotListItem",props:{id:{},index:{},coords:{}},emits:["update","delete"],setup(n,{emit:e}){const t=n,r=e,o=s.computed(()=>`${t.coords.lat.toFixed(4)}°, ${t.coords.lng.toFixed(4)}°`),i=s.ref(!1),l=s.ref(t.coords.lat),a=s.ref(t.coords.lng);s.watch(()=>t.coords,p=>{l.value=p.lat,a.value=p.lng},{deep:!0,immediate:!0});const c=(p,h,m)=>Math.min(Math.max(p,h),m),d=()=>{i.value=!0},u=()=>{if(!Number.isFinite(l.value)||!Number.isFinite(a.value))return;const p=c(l.value,-90,90),h=c(a.value,-180,180);r("update",{id:t.id,coords:{lat:p,lng:h}}),i.value=!1},f=()=>{r("delete",t.id)};return(p,h)=>(s.openBlock(),s.createElementBlock("div",YC,[s.createVNode(s.unref(Y.MapPin),{size:12,"stroke-width":2,class:"text-gray-400 flex-shrink-0"}),i.value?(s.openBlock(),s.createElementBlock("div",XC,[s.withDirectives(s.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=m=>l.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),[[s.vModelText,l.value,void 0,{number:!0}]]),s.withDirectives(s.createElementVNode("input",{"onUpdate:modelValue":h[1]||(h[1]=m=>a.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),[[s.vModelText,a.value,void 0,{number:!0}]]),s.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}," ✓ ")])):(s.openBlock(),s.createElementBlock("span",ZC,s.toDisplayString(o.value),1)),i.value?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("button",{key:2,class:"text-blue-500 hover:text-blue-600 px-0.5",type:"button",onClick:d}," ✎ ")),s.createElementVNode("button",{class:"text-rose-500 hover:text-rose-600 px-0.5",type:"button",onClick:f}," ✕ ")]))}}),eS={class:"ruler-control px-3 py-2.5 space-y-2"},tS={type:"button",class:"ruler-row w-full flex items-center gap-2 cursor-pointer group text-left"},nS={class:s.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Сумарна довжина всіх відрізків","aria-hidden":"true"},rS={class:"text-sm font-semibold text-slate-700"},oS={class:"ruler-row"},sS={type:"button",class:"w-full flex items-center gap-2 cursor-pointer group text-left"},iS={class:s.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Площа замкнутого контуру","aria-hidden":"true"},lS={class:"inline-flex rounded-md overflow-hidden border border-gray-200 bg-gray-100"},aS=["onClick"],cS={class:"flex items-center gap-2 mt-0.5 pl-7"},dS={key:0,class:"text-base font-semibold text-green-600"},uS={key:1,class:"text-xs text-gray-400"},fS={class:"ruler-row flex items-center gap-2 cursor-pointer"},pS={class:s.normalizeClass(["flex items-center justify-center w-5 h-5 rounded-full shrink-0 transition-colors pointer-events-none"]),title:"Список точок","aria-hidden":"true"},hS={class:"text-xs font-medium text-gray-600 flex-1"},mS={key:0,class:"pt-1.5 border-t border-gray-100 max-h-32 overflow-y-auto space-y-1"},gS=s.defineComponent({__name:"ControlPanel",props:{points:{},isShapeClosed:{type:Boolean}},emits:["update-point","delete-point"],setup(n){const e=n,t=s.ref(!1),r=s.ref("km2"),o=[{id:"km2",label:"км²"},{id:"ha",label:"га"},{id:"m2",label:"м²"}],i=()=>{t.value=!t.value},l=(m,g)=>{const y=_=>_*Math.PI/180,b=y(g.lat-m.lat),w=y(g.lng-m.lng),v=y(m.lat),S=y(g.lat),N=Math.sin(b/2),F=Math.sin(w/2);return 6371e3*(2*Math.asin(Math.sqrt(N*N+Math.cos(v)*Math.cos(S)*F*F)))},a=s.computed(()=>{if(e.points.length<2)return 0;let m=0;for(let g=1;g<e.points.length;g+=1)m+=l(e.points[g-1].coords,e.points[g].coords);return e.isShapeClosed&&e.points.length>=2&&(m+=l(e.points[e.points.length-1].coords,e.points[0].coords)),m}),c=s.computed(()=>a.value>=1e3?`${kr(a.value/1e3)} км`:`${kr(a.value)} м`);function d(m){if(m.length<3)return 0;const g=m[0].lat,y=m[0].lng,b=(v,S)=>{const N=(v-g)*110574;return{x:(S-y)*111320*Math.cos(g*Math.PI/180),y:N}};let w=0;for(let v=0;v<m.length;v++){const S=(v+1)%m.length,N=b(m[v].lat,m[v].lng),F=b(m[S].lat,m[S].lng);w+=N.x*F.y-N.y*F.x}return Math.abs(w)*.5}const u=s.computed(()=>{if(!e.isShapeClosed||e.points.length<3)return 0;const m=e.points.map(g=>g.coords);return d(m)}),f=s.computed(()=>u.value>0),p=s.computed(()=>{const m=u.value;if(m===0)return"—";if(r.value==="km2"){const y=m/1e6;return`${kr(y)} км²`}if(r.value==="ha"){const y=m/1e4;return`${kr(y)} га`}const g=m>=1?Math.round(m):m;return`${kr(g)} м²`}),h=s.computed(()=>{const m=e.points.length;return m===1?"1 точка":m>=2&&m<=4?`${m} точки`:`${m} точок`});return s.watch(()=>e.points.length,()=>{e.points.length===0&&(t.value=!1)}),(m,g)=>(s.openBlock(),s.createElementBlock("div",eS,[s.createElementVNode("button",tS,[s.createElementVNode("span",nS,[s.createVNode(s.unref(Y.Info),{size:12,"stroke-width":2.5})]),g[1]||(g[1]=s.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Загальна відстань",-1)),s.createElementVNode("span",rS,s.toDisplayString(c.value),1)]),s.createElementVNode("div",oS,[s.createElementVNode("button",sS,[s.createElementVNode("span",iS,[s.createVNode(s.unref(Y.Info),{size:12,"stroke-width":2.5})]),g[2]||(g[2]=s.createElementVNode("span",{class:"text-xs font-medium text-gray-600 flex-1"},"Площа",-1)),s.createElementVNode("div",lS,[(s.openBlock(),s.createElementBlock(s.Fragment,null,s.renderList(o,(y,b)=>s.createElementVNode("button",{key:y.id,type:"button",class:s.normalizeClass(["px-2.5 py-1 text-xs font-medium transition-colors border-r border-gray-200 last:border-r-0",b===0&&"rounded-l-md",b===o.length-1&&"rounded-r-md",r.value===y.id?"bg-white text-green-600 font-semibold shadow-sm":"text-gray-600 hover:bg-gray-50"]),onClick:s.withModifiers(w=>r.value=y.id,["stop"])},s.toDisplayString(y.label),11,aS)),64))])]),s.createElementVNode("div",cS,[f.value?(s.openBlock(),s.createElementBlock("span",dS,s.toDisplayString(p.value),1)):(s.openBlock(),s.createElementBlock("span",uS,"—"))])]),s.createElementVNode("div",fS,[s.createElementVNode("span",pS,[s.createVNode(s.unref(Y.Info),{size:12,"stroke-width":2.5})]),s.createElementVNode("span",hS,s.toDisplayString(h.value),1),s.createElementVNode("button",{type:"button",class:"text-xs text-blue-500 hover:text-blue-600 font-medium transition-colors",onClick:s.withModifiers(i,["stop"])}," Координати ")]),t.value?(s.openBlock(),s.createElementBlock("div",mS,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(m.points,(y,b)=>(s.openBlock(),s.createBlock(QC,{key:y.id,id:y.id,index:b+1,coords:y.coords,onUpdate:g[0]||(g[0]=w=>m.$emit("update-point",w)),onDelete:w=>m.$emit("delete-point",y.id)},null,8,["id","index","coords","onDelete"]))),128))])):s.createCommentVNode("",!0)]))}}),yS={class:"px-3 py-3 bg-blue-50/50 border-b border-blue-100"},bS={class:"flex items-start gap-2"},kS=s.defineComponent({__name:"InfoHint",setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",yS,[s.createElementVNode("div",bS,[s.createVNode(s.unref(Y.Info),{size:16,"stroke-width":2,class:"text-blue-600 flex-shrink-0 mt-0.5"}),t[0]||(t[0]=s.createElementVNode("div",{class:"space-y-1"},[s.createElementVNode("p",{class:"text-xs font-medium text-blue-900"}," Натискайте на карту, щоб додати точки вимірювання "),s.createElementVNode("p",{class:"text-[10px] text-blue-700"},' Або скористайтесь кнопкою "Додати" внизу для введення координат вручну ')],-1))])]))}}),wS={class:"space-y-1.5"},xS={class:"space-y-1 max-h-40 overflow-y-auto"},vS={class:"text-gray-700"},CS={class:"font-semibold text-slate-800"},SS=s.defineComponent({__name:"ToPointList",props:{points:{},isShapeClosed:{type:Boolean}},setup(n){const e=n;function t(i,l){const a=h=>h*Math.PI/180,c=a(l.lat-i.lat),d=a(l.lng-i.lng),u=a(i.lat),f=a(l.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(c/2)**2+Math.cos(u)*Math.cos(f)*Math.sin(d/2)**2)))}function r(i){return mf(i)}const o=s.computed(()=>{const i=[],l=e.points;if(l.length<2)return i;for(let a=0;a<l.length;a++){const c=a===l.length-1&&e.isShapeClosed?0:a+1;if(c>=l.length)break;const d=t(l[a].coords,l[c].coords);i.push({from:a+1,to:c+1,label:r(d)})}return i});return(i,l)=>(s.openBlock(),s.createElementBlock("div",wS,[l[0]||(l[0]=s.createElementVNode("p",{class:"text-xs font-medium text-gray-600 mb-1.5"},"Відстань між точками:",-1)),s.createElementVNode("div",xS,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(o.value,(a,c)=>(s.openBlock(),s.createElementBlock("div",{key:c,class:"flex items-center justify-between text-xs py-1 px-2 rounded bg-gray-50"},[s.createElementVNode("span",vS,"Точка "+s.toDisplayString(a.from)+" → Точка "+s.toDisplayString(a.to),1),s.createElementVNode("span",CS,s.toDisplayString(a.label),1)]))),128))])]))}}),ES={class:"ruler-panel-wrap absolute bottom-12 right-4 z-[1001] animate-slide-up"},MS={class:"bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden w-72"},AS={class:"bg-gradient-to-r from-blue-400 to-blue-500 px-3 py-2 flex items-center justify-between"},_S={class:"flex items-center gap-2"},TS={class:"w-6 h-6 bg-white/20 rounded-lg flex items-center justify-center"},BS={class:"flex border-b border-gray-200"},NS={key:1,class:"px-3 py-2.5"},DS={key:1,class:"text-xs text-gray-500"},VS={class:"px-2.5 py-1.5 bg-gray-50 border-t border-gray-200 space-y-1.5"},$S={class:"flex gap-1.5"},LS=s.defineComponent({name:"RulerPanel",__name:"RulerPanel",emits:["close","tab-change","points-change","add-request","complete","shape-closed-change"],setup(n,{expose:e,emit:t}){const r=t,o=s.ref([]),i=s.computed(()=>o.value.length>0),l=s.ref(!1),a=s.ref(!1),c=s.ref("general");function d(A){c.value=A,r("tab-change",A)}s.onMounted(()=>{r("tab-change",c.value)});const u=s.computed(()=>o.value.length>=3&&!a.value);let f=1;const p=()=>o.value.map(A=>({id:A.id,coords:{...A.coords}})),h=()=>{o.value.length<3&&a.value&&(a.value=!1,r("shape-closed-change",!1)),r("points-change",p())},m=()=>{const A=f;return f+=1,A},g=A=>{o.value=[...o.value,{id:m(),coords:{lat:A.lat,lng:A.lng}}],h()},y=({id:A,coords:I})=>{const U=o.value.findIndex(V=>V.id===A);if(U===-1)return;const Z=[...o.value];Z[U]={id:A,coords:{...I}},o.value=Z,h()},b=A=>{o.value=o.value.filter(I=>I.id!==A),h()},w=()=>{o.value=[],a.value&&(a.value=!1,r("shape-closed-change",!1)),h()},v=A=>{y(A)},S=A=>{b(A)},N=()=>{l.value=!0,r("add-request")},F=A=>{g(A),l.value=!1},T=()=>{l.value=!1},E=()=>{u.value&&(a.value=!0,r("complete"),r("shape-closed-change",!0))},_=()=>{w(),l.value=!1,r("close")};return e({addPoint:g,clearPoints:w}),(A,I)=>(s.openBlock(),s.createElementBlock("div",ES,[s.createElementVNode("div",MS,[s.createElementVNode("div",AS,[s.createElementVNode("div",_S,[s.createElementVNode("div",TS,[s.createVNode(s.unref(Y.Ruler),{size:14,"stroke-width":2,class:"text-white"})]),I[2]||(I[2]=s.createElementVNode("h3",{class:"text-white font-semibold text-xs"},"Вимірювання",-1))]),s.createElementVNode("button",{class:"w-5 h-5 flex items-center justify-center rounded hover:bg-white/20 transition-colors","aria-label":"Закрити",onClick:_},[s.createVNode(s.unref(Y.X),{size:14,"stroke-width":2,class:"text-white"})])]),s.createElementVNode("div",BS,[s.createElementVNode("button",{type:"button",class:s.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",c.value==="general"?"text-blue-600 border-b-2 border-blue-500 bg-blue-50/50":"text-gray-500 hover:text-gray-700"]),onClick:I[0]||(I[0]=U=>d("general"))}," Загальна ",2),s.createElementVNode("button",{type:"button",class:s.normalizeClass(["flex-1 px-3 py-2 text-xs font-medium transition-colors",c.value==="topoint"?"text-blue-600 border-b-2 border-blue-500 bg-blue-50/50":"text-gray-500 hover:text-gray-700"]),onClick:I[1]||(I[1]=U=>d("topoint"))}," До точки ",2)]),c.value==="general"?(s.openBlock(),s.createElementBlock(s.Fragment,{key:0},[i.value?(s.openBlock(),s.createBlock(gS,{key:1,points:o.value,"is-shape-closed":a.value,onUpdatePoint:v,onDeletePoint:S},null,8,["points","is-shape-closed"])):(s.openBlock(),s.createBlock(kS,{key:0}))],64)):(s.openBlock(),s.createElementBlock("div",NS,[i.value?(s.openBlock(),s.createBlock(SS,{key:0,points:o.value,"is-shape-closed":a.value},null,8,["points","is-shape-closed"])):(s.openBlock(),s.createElementBlock("p",DS,"Додайте точки на карті, щоб бачити відстані між ними."))])),s.createElementVNode("div",VS,[s.createElementVNode("div",$S,[l.value?s.createCommentVNode("",!0):(s.openBlock(),s.createBlock(KC,{key:0,onClick:N})),u.value?(s.openBlock(),s.createBlock(GC,{key:1,onClick:E})):s.createCommentVNode("",!0)]),l.value?(s.openBlock(),s.createBlock(WC,{key:0,onSubmit:F,onCancel:T})):s.createCommentVNode("",!0),i.value?(s.openBlock(),s.createBlock(qC,{key:1,onClick:w})):s.createCommentVNode("",!0)])])]))}}),Ft="ruler-points",Tn="ruler-line",Bn="ruler-polygon",Nn="ruler-segments",IS=s.defineComponent({__name:"RulerLayer",props:{map:{},points:{},isShapeClosed:{type:Boolean},labelMode:{}},setup(n){function e(m,g){const y=F=>F*Math.PI/180,b=y(g.lat-m.lat),w=y(g.lng-m.lng),v=y(m.lat),S=y(g.lat);return 6371e3*(2*Math.asin(Math.sqrt(Math.sin(b/2)**2+Math.cos(v)*Math.cos(S)*Math.sin(w/2)**2)))}function t(m){return mf(m)}const r=n;function o(){return{type:"FeatureCollection",features:[]}}function i(m,g,y){const b=y??"general",w=[];let v=0;w.push(0);for(let S=1;S<m.length;S++)v+=e(m[S-1].coords,m[S].coords),w.push(v);return g&&m.length>=2&&(v+=e(m[m.length-1].coords,m[0].coords)),{type:"FeatureCollection",features:m.map((S,N)=>{const F=b==="general"?N===0?"0":t(w[N]):N===0?"0":t(e(m[N-1].coords,m[N].coords));return{type:"Feature",geometry:{type:"Point",coordinates:[S.coords.lng,S.coords.lat]},properties:{id:S.id,index:N+1,label:F}}})}}function l(m,g){if(m.length<2)return o();const y=[];for(let b=0;b<m.length;b++){const w=b===m.length-1&&g?0:b+1;if(w>=m.length)break;const v=m[b].coords,S=m[w].coords,N=e(v,S);y.push({type:"Feature",geometry:{type:"LineString",coordinates:[[v.lng,v.lat],[S.lng,S.lat]]},properties:{distance:t(N)}})}return{type:"FeatureCollection",features:y}}function a(m,g){if(m.length<2)return o();const y=m.map(b=>[b.coords.lng,b.coords.lat]);return g&&y.push(y[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:y},properties:{}}]}}function c(m){if(m.length<3)return o();const g=m.map(y=>[y.coords.lng,y.coords.lat]);return g.push(g[0]),{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[g]},properties:{}}]}}let d=!1;function u(m){m.getSource(Ft)||(m.addSource(Ft,{type:"geojson",data:o()}),m.addLayer({id:`${Ft}-circle`,type:"circle",source:Ft,paint:{"circle-radius":5,"circle-color":"#1e293b","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}}),m.addLayer({id:`${Ft}-labels`,type:"symbol",source:Ft,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(Nn)||(m.addSource(Nn,{type:"geojson",data:o()}),m.addLayer({id:`${Nn}-labels`,type:"symbol",source:Nn,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(Tn)||(m.addSource(Tn,{type:"geojson",data:o()}),m.addLayer({id:`${Tn}-layer`,type:"line",source:Tn,paint:{"line-color":"#3b82f6","line-width":2}})),m.getSource(Bn)||(m.addSource(Bn,{type:"geojson",data:o()}),m.addLayer({id:`${Bn}-layer`,type:"fill",source:Bn,paint:{"fill-color":"#93c5fd","fill-opacity":.25}})),d=!0}function f(m){if(m){try{m.getLayer(`${Bn}-layer`)&&m.removeLayer(`${Bn}-layer`),m.getSource(Bn)&&m.removeSource(Bn),m.getLayer(`${Tn}-layer`)&&m.removeLayer(`${Tn}-layer`),m.getSource(Tn)&&m.removeSource(Tn),m.getLayer(`${Nn}-labels`)&&m.removeLayer(`${Nn}-labels`),m.getSource(Nn)&&m.removeSource(Nn),m.getLayer(`${Ft}-labels`)&&m.removeLayer(`${Ft}-labels`),m.getLayer(`${Ft}-circle`)&&m.removeLayer(`${Ft}-circle`),m.getSource(Ft)&&m.removeSource(Ft)}catch{}d=!1}}function p(m){if(!m)return;const g=m.getSource(Ft),y=m.getSource(Tn),b=m.getSource(Bn),w=m.getSource(Nn),v=r.points,S=r.labelMode??"general";g&&g.setData(i(v,r.isShapeClosed,S)),y&&y.setData(a(v,r.isShapeClosed)),b&&b.setData(c(v)),w&&w.setData(S==="topoint"?l(v,r.isShapeClosed):o())}function h(){const m=r.map;m&&(d||u(m),p(m))}return s.watch(()=>[r.points,r.isShapeClosed,r.labelMode],()=>h(),{deep:!0,immediate:!0}),s.watch(()=>r.map,()=>h(),{immediate:!0}),s.onBeforeUnmount(()=>{f(r.map)}),(m,g)=>null}});function OS(n={}){const e=s.ref(!1),t=s.ref([]),r=s.ref(!1),o=s.ref("general"),i=s.ref(null);function l(){e.value?a():(e.value=!0,n.onActivate?.())}function a(){e.value=!1,t.value=[],r.value=!1,i.value?.clearPoints(),n.onDeactivate?.()}function c(h){t.value=h}function d(h){o.value=h}function u(h){r.value=h}function f(h){e.value&&i.value?.addPoint({lat:h.lat,lng:h.lng})}const p=s.computed(()=>t.value.length>0);return{isRulerActive:e,rulerPoints:t,rulerShapeClosed:r,rulerActiveTab:o,rulerPanelRef:i,hasRulerPoints:p,toggleRuler:l,closeRuler:a,onRulerPointsChange:c,onRulerTabChange:d,onRulerShapeClosedChange:u,handleRulerMapClick:f}}const $a="vs-safe-raster",No=new ArrayBuffer(0);let La=!1;function RS(n){const e=`${$a}://`;return typeof n!="string"||!n.startsWith(e)?n:n.slice(e.length)}function FS(n){if(!n||n.byteLength<4)return!1;const e=new Uint8Array(n);return e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71||e[0]===255&&e[1]===216&&e[2]===255||e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&n.byteLength>=12&&String.fromCharCode(e[8],e[9],e[10],e[11])==="WEBP"}async function PS(n,e){try{const t=await fetch(n,{signal:e});if(!t.ok||t.status===204)return No;const r=await t.arrayBuffer();return!r.byteLength||!FS(r)?No:r}catch{return No}}function zS(n){La||!n?.addProtocol||(La=!0,n.addProtocol($a,(e,t)=>{const r=RS(String(e?.url??""));if(!r)return t(null,{data:No}),{cancel:()=>{}};const o=new AbortController;return PS(r,o.signal).then(i=>t(null,{data:i})).catch(()=>t(null,{data:No})),{cancel:()=>o.abort()}}))}function HS(n){const e=typeof n=="string"?n.trim():"";if(!e)return e;const t=`${$a}://`;return e.startsWith(t)?e:`${t}${e}`}function jS(n,e){const t=typeof n=="string"?n.trim():"";return t?e&&La?[HS(t)]:[t]:[]}function Ia(n,e,t){const r={type:"raster",tiles:jS(n,!!t?.safe),tileSize:typeof e?.tileSize=="number"?e.tileSize:256};return typeof e?.minzoom=="number"&&(r.minzoom=e.minzoom),typeof e?.maxzoom=="number"&&(r.maxzoom=e.maxzoom),Array.isArray(e?.bounds)&&e.bounds.length===4&&(r.bounds=e.bounds),r}function US(n){const e=String(n??"").toLowerCase();return e.includes("could not be decoded")||e.includes("source image could not be decoded")||e.includes("unsupported image type")}const WS={class:"vs-map-body"},KS={key:0,class:"absolute top-2 left-2 z-[1000] w-[calc(100%-16px)] sm:w-[320px]"},qS={key:1,class:"form-geom__panel flex items-center gap-1 mt-1"},GS={class:"flex items-center gap-1"},JS=["disabled"],YS={key:0,class:"absolute z-[1600] left-0 top-full mt-1 w-full min-w-[140px] bg-white border border-gray-200 shadow-lg rounded-lg text-sm overflow-hidden"},XS=["disabled"],ZS={key:0,class:"mb-3 flex items-center gap-2 rounded-md border border-blue-100 bg-blue-50 px-3 py-2 text-sm text-blue-700"},QS={class:"mt-4 flex justify-end gap-2"},eE=["disabled"],tE=["disabled"],nE={class:"mt-4 flex justify-end gap-2"},rE=["disabled"],oE={class:"vs-map-controls vs-map-controls--tr"},sE={class:"vs-map-toolbar"},iE=["disabled"],lE=["disabled"],aE=["disabled"],cE=["disabled"],dE={key:1,class:"vs-map-toolbar__divider"},uE=["title"],fE={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"},pE={class:"space-y-0.5"},hE={class:"text-gray-500"},mE={class:"text-gray-900 text-right break-all"},gE={class:"absolute left-2 bottom-2 z-[1000]"},yE={key:0,class:"vs-map-status"},bE={class:"form-geom__feature vs-map-status__inner"},kE={class:"vs-map-status__type"},wE={class:"vs-map-status__values"},xE=["onClick","disabled"],vE={key:1,class:"vs-map-status__chip"},CE={key:2,class:"vs-map-status__sep"},SE={key:1,class:"vs-map-status__chip"},EE={class:"vs-map-status__meta"},ME={class:"vs-map-status__coords"},AE={key:0,class:"vs-map-status__value"},_E={key:1,class:"vs-map-status__value"},TE={key:0,class:"vs-map-status__area"},BE={class:"vs-map-status__value"},NE={class:"vs-map-status__actions"},DE=["disabled"],VE=["disabled"],$E="#2563eb",LE="#2563eb",IE="#modal",OE=11,RE=15,FE=.7,PE="vs-tile-ov-src-",zE="vs-tile-ov-raster-",ui="__vs_form_maplibre_loader__",HE="https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",Do="form-search-geom-source",Oa="form-search-geom-layer-fill",Ra="form-search-geom-layer-line",fi="vs-global-bounds-src",Zr="vs-global-bounds-line",gf="rasterLayer",yf=Be(s.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},drawPoly:{type:Boolean},polyColor:{},markerColor:{},mapPopupTeleportTarget:{},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},emits:["update:modelValue","valueSelected"],setup(n,{emit:e}){const t=n,r=e,o=s.useAttrs(),i=s.inject("values",s.ref({})),l=typeof document<"u"&&document.querySelector("#modal")?"#modal":"body",a=s.computed(()=>{const k=o?.multiple,x=o?.multi,C=B=>B===""||B===!0||B==="true"||B===1||B==="1";return!!t.multi||!!t.multiple||C(x)||C(k)}),c=s.computed(()=>!!t.disabled),d=s.ref(!1),u=s.ref(null),f=s.ref(0),p=s.ref(""),h=s.ref(null),m=s.ref([]),g=s.ref(null),y=s.ref(null),b=OS({onActivate(){if(le)try{le.changeMode("simple_select",{featureIds:[]})}catch{}p.value=""},onDeactivate(){}});function w(){b.toggleRuler()}const v=s.getCurrentInstance(),S=v?.appContext?.config?.globalProperties?.$settings??{},N=S?.map??{},F=s.computed(()=>{const k=N.layerPresets;return Array.isArray(k)?k:[]}),T=v?.vnode?.props??{};function E(k){return Object.prototype.hasOwnProperty.call(T,k)||Object.prototype.hasOwnProperty.call(T,k.replace(/[A-Z]/g,x=>`-${x.toLowerCase()}`))}function _(k,x,C){return typeof k=="boolean"?k:typeof x=="boolean"?x:C}function A(k,x,C){const B=typeof k=="string"?k.trim():"";if(B)return B;const P=typeof x=="string"?x.trim():"";return P||C}function I(k,x){return typeof k=="string"&&k.trim()?k.trim():k&&typeof k=="object"?k:typeof x=="string"&&x.trim()?x.trim():IE}function U(k){if(typeof k!="string")return k;if(typeof document>"u")return"body";try{if(document.querySelector(k))return k}catch{}return"body"}const Z=s.computed(()=>_(E("drawPoly")?t.drawPoly:void 0,N.drawPoly,!1)),V=s.computed(()=>A(E("polyColor")?t.polyColor:void 0,N.polyColor,LE)),z=s.computed(()=>A(E("markerColor")?t.markerColor:void 0,N.markerColor,$E)),oe=s.computed(()=>I(E("mapPopupTeleportTarget")?t.mapPopupTeleportTarget:void 0,N.mapPopupTeleportTarget)),K=s.computed(()=>U(oe.value)),G=s.computed(()=>({drawPoly:Z.value,polyColor:V.value,markerColor:z.value})),X=Array.isArray(N.center)&&N.center.length===2?N.center:Array.isArray(S.center)&&S.center.length===2?S.center:[30,50],ce=typeof N.zoom=="number"?N.zoom:typeof S.zoom=="number"?S.zoom:typeof S.defaultZoom=="number"?S.defaultZoom:10;function j(k){if(k!=null){if(Array.isArray(k)&&k.length>=2){const x=Number(k[0]),C=Number(k[1]);return!Number.isFinite(x)||!Number.isFinite(C)?void 0:[x,C]}if(typeof k=="object"){const x=k,C=x.geom;if(x.type==="Point"&&Array.isArray(x.coordinates)){const J=x.coordinates,fe=Number(J[0]),ge=Number(J[1]);if(Number.isFinite(fe)&&Number.isFinite(ge))return[fe,ge]}if(C?.type==="Point"&&Array.isArray(C.coordinates)){const J=C.coordinates,fe=Number(J[0]),ge=Number(J[1]);if(Number.isFinite(fe)&&Number.isFinite(ge))return[fe,ge]}const B=Number(x.lat),P=Number(x.lng??x.lon);if(Number.isFinite(B)&&Number.isFinite(P))return[P,B]}}}const L=s.computed(()=>{const k=j(t.center);if(k)return k;if(!E("center"))return j(N.center)??j(S.center)}),O=s.computed(()=>E("zoom")?t.zoom:N.zoom??t.zoom),ne=s.computed(()=>E("katottg")?String(t.katottg??""):String(N.katottg??t.katottg??"")),ae=s.computed(()=>E("layers")?t.layers??[]:N.layers??t.layers??[]),re=s.computed(()=>E("bounds")?t.bounds:N.bounds??t.bounds),he=s.ref(Array.isArray(L.value)&&L.value.length===2?[...L.value]:X),Ae=s.ref(typeof O.value=="number"?O.value:ce),Ce=s.ref(null);let $e=null;function it(k){const x=typeof k=="number"&&Number.isFinite(k)?k:Ae.value;return Math.min(RE,Math.max(OE,Math.round(x)))}function Fe(k,x,C){if(!Number.isFinite(k)||!Number.isFinite(x))return;const B=Zv(k,x,it(C)),P=Ce.value;P&&P.z===B.z&&P.x===B.x&&P.y===B.y||(Ce.value=B)}function Qe(){if($){const k=$.getCenter?.(),x=$.getZoom?.();if(k&&Number.isFinite(x)){Fe(k.lng,k.lat,x);return}}Array.isArray(he.value)&&he.value.length===2&&Fe(he.value[0],he.value[1])}function We(){$e&&clearTimeout($e),$e=setTimeout(()=>{$e=null,Qe()},120)}Fe(he.value[0],he.value[1]);const se=s.ref(t.modelValue),me=s.ref(null),Ee=s.ref([]),Me=s.ref(!1),Ye=s.ref(!1),Ct=s.ref(!1),et=s.ref(!1),Xe=s.ref(!1);s.provide("map-file-import-uploading",Xe);const ft=s.computed(()=>Xe.value?"Завантаження файлу на сервер...":et.value?"Конвертація геометрії...":""),Vt=s.ref([]),W=s.ref({srid:"",encoding:"UTF-8",file:""}),ee=s.computed(()=>{const k=i.value??{},x=k.id??o.id??"1",C=o.form??k.form??"form",B=o.table??k.table??"table",P=t.name??o.field??"geom";return`/file/upload/temp?${new URLSearchParams({id:String(x),form:String(C),table:String(B),field:String(P)}).toString()}`}),ue=s.computed(()=>({srid:{type:"Autocomplete",label:"Система координат",info:"Оберіть одну із систем координат в якій знаходяться ваші геодані",data:"gis.srid_from_setting",placeholder:"Обрати",rules:["required"]},encoding:{type:"Select",label:"Кодування файлу",info:"Вкажіть кодування в якому зберігається інформація в ваших файлах. Зазвичай це UTF-8",options:[{id:"UTF-8",text:"UTF-8"},{id:"CP1251",text:"CP1251"},{id:"LATIN-1",text:"LATIN-1"}],default:"UTF-8",rules:["required"]},file:{type:"File",label:"Файл",info:"Завантажте файл із геоданими у форматі GeoJson або Zip (Shapefiles)",format:".geojson,.zip",api:ee.value,rules:["required"]}})),R=s.ref({coordinates:"",format:"decimal",order:"lat-lon"}),M={coordinates:{type:"Textarea",label:"Координати вершин полігону (3-100 точок)",placeholder:`50.4501, 30.5234
|
|
3
3
|
50.4510, 30.5242
|
|
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 D=!1,H=!1;const te=s.reactive({}),we=s.ref([]),tt=s.computed(()=>we.value.map(k=>te[k]).filter(Boolean)),Re=s.ref(null),St=s.computed(()=>Re.value?.entries??[]),cn=s.computed(()=>{if(!Re.value)return;const x=u.value?.getBoundingClientRect?.(),C=(x?.left??0)+Re.value.point.x+12,B=(x?.top??0)+Re.value.point.y+12;return{left:`${C}px`,top:`${B}px`}}),tn=s.computed(()=>{if(Array.isArray(t.tools)&&t.tools.length)return t.tools;const k=o?.tools;return Array.isArray(k)?k.map(x=>String(x)):typeof k=="string"?k.split(",").map(x=>x.trim()).filter(Boolean):[]}),Le=s.computed(()=>{const k={search:!1,import:!1,export:!1,point:!1,line:!1,polygon:!1,rectangle:!1,ruler:!1};if(!tn.value.length)return{...k,import:!0,export:!0,point:!0,line:!0,polygon:!0,rectangle:!0};const x=new Set(tn.value.map(C=>C.toLowerCase()));return{search:x.has("search"),import:x.has("import"),export:x.has("export"),point:x.has("point"),line:x.has("line"),polygon:x.has("polygon"),rectangle:x.has("rectangle"),ruler:x.has("ruler")}});function $t(k){const x=typeof k=="string"?k.trim():"";if(!x)return"";if(/^https?:\/\//i.test(x))return x;const C=window?.location?.origin??"",B=x.replace(/^\/+/,"");return B?C?`${C}/${B}`:`/${B}`:C}function wo(){const k=Array.isArray(N.basemaps)&&N.basemaps.length?N.basemaps:S.basemaps;if(Array.isArray(k)&&k.length){const C=k.map((B,P)=>{const J=String(B?.key??B?.id??B?.name??`b${P}`),fe=$t(String(B?.url??""));if(!fe)return null;const ge=typeof B?.preview=="string"&&B.preview?$t(B.preview):"";return[J,{...B,url:fe,preview:ge}]}).filter(B=>Array.isArray(B)&&B.length===2).reduce((B,[P,J])=>(B[P]=J,B),{});if(Object.keys(C).length)return C}return{voyager:{name:"Оглядова карта",url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"},orto10:{name:"Ортофото 1:10K",url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"},osmb:{name:"Open Street Maps",url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",preview:"https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"}}}const mr=wo(),xo=Object.keys(mr),qr=s.ref(xo.length?xo[0]:"");function Ls(){const k=Array.isArray(N.overlays)&&N.overlays.length?N.overlays:S.overlays;return!Array.isArray(k)||!k.length?{}:k.map((C,B)=>{const J=(typeof C?.name=="string"?C.name.trim():"")||`o${B}`,fe=$t(String(C?.url??""));if(!fe)return null;const ge=typeof C?.preview=="string"&&C.preview?$t(C.preview):"";return[J,{...C,name:J,url:fe,preview:ge}]}).filter(C=>Array.isArray(C)&&C.length===2).reduce((C,[B,P])=>(C[B]=P,C),{})}const Gr=Ls(),Sn=s.ref(Object.keys(Gr).filter(k=>!!Gr[k]?.visible)),sa=s.computed(()=>Le.value.point||Le.value.line||Le.value.polygon||Le.value.rectangle),ia=s.computed(()=>tt.value.filter(k=>k.config?.overlay!==!1).map(k=>({id:k.id,label:String(k.config.title||k.config.name||k.id),visible:k.visible})));function Is(k){return`${PE}${k}`}function Os(k){return`${zE}${k}`}async function fu(){if(typeof window>"u")return null;const k=window;if(k[ui])return k[ui];const x=J=>{if(Array.from(document.styleSheets).some(Ne=>Ne?.href?.includes(J)))return;const ge=document.createElement("link");ge.rel="stylesheet",ge.href=J,document.head.appendChild(ge)},C=async()=>{const J=new Function("u","return import(u)"),fe=await J("https://esm.sh/maplibre-gl@3.6.2"),ge=fe?.default??fe;if(!ge)throw new Error("maplibre esm fallback failed");window.maplibregl=ge,window.mapboxgl=ge;const Ne=await J("https://esm.sh/@mapbox/mapbox-gl-draw@1.5.0"),nt=Ne?.default??Ne;if(!nt)throw new Error("mapbox draw esm fallback failed");window.MapboxDraw=nt},P=(async()=>{x("https://unpkg.com/maplibre-gl@3.6.2/dist/maplibre-gl.css"),x("https://unpkg.com/@mapbox/mapbox-gl-draw@1.5.0/dist/mapbox-gl-draw.css"),(!window.maplibregl||!window.MapboxDraw)&&await C();const J=window.maplibregl,fe=window.MapboxDraw;if(!J)throw new Error("maplibregl not available after load");if(!fe)throw new Error("MapboxDraw not available after load");return zS(J),{maplibregl:J,MapboxDraw:fe}})().catch(J=>{throw delete k[ui],J});return k[ui]=P,P}function Rs(k){return{version:8,glyphs:HE,sources:{rasterSource:Ia(k,void 0,{safe:!1})},layers:[{id:"rasterLayer",type:"raster",source:"rasterSource"}]}}let q=null,ie=null,$=null,le=null,Pe=[],lt=null,Ke=null,qe=null,Ut=!1,Rt=!1,Wt=!1,pt=null;function Jr(){$&&($.getLayer?.(Oa)&&$.removeLayer(Oa),$.getLayer?.(Ra)&&$.removeLayer(Ra),$.getSource?.(Do)&&$.removeSource(Do))}function qR(k){if(!$||!k||typeof k!="object")return;Jr(),$.addSource(Do,{type:"geojson",data:{type:"Feature",geometry:k,properties:{}}});const x=V.value;$.addLayer({id:Oa,type:"fill",source:Do,paint:{"fill-color":x,"fill-opacity":.3}}),$.addLayer({id:Ra,type:"line",source:Do,paint:{"line-color":x,"line-width":2,"line-opacity":1}})}function GR(k,x){if(!$||!q)return;const C=[k[1],k[0]],B=typeof x?.zoom=="number"?x.zoom:13;if(pt?.remove&&pt.remove(),pt=null,Jr(),Z.value&&x?.geom){qR(x.geom),xu(x.geom);return}pt=new q.Marker({color:z.value}),pt.setLngLat(C).addTo($),$.easeTo({center:C,zoom:B,duration:250})}function JR(){return{onSetup(){const k=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]}});return this.addFeature(k),this.clearSelectedFeatures(),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:!0}),{rectangle:k,startPoint:null,hasCoordinates:!1}},onMouseMove(k,x){if(!k.startPoint)return;const[C,B]=k.startPoint,P=x.lngLat.lng,J=x.lngLat.lat;k.rectangle.setCoordinates([[[C,B],[P,B],[P,J],[C,J],[C,B]]])},onClick(k,x){if(!k.startPoint){k.startPoint=[x.lngLat.lng,x.lngLat.lat],k.hasCoordinates=!0,k.rectangle.setCoordinates([[[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat]]]);return}const[C,B]=k.startPoint,P=x.lngLat.lng,J=x.lngLat.lat;return Math.abs(C-P)>0&&Math.abs(B-J)>0?(k.rectangle.setCoordinates([[[C,B],[P,B],[P,J],[C,J],[C,B]]]),this.map.fire("draw.create",{features:[k.rectangle.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[k.rectangle.id]})):(this.deleteFeature([k.rectangle.id],{silent:!0}),k.hasCoordinates=!1,this.changeMode("simple_select"))},onStop(){},onTrash(k){this.deleteFeature([k.rectangle.id],{silent:!0}),this.changeMode("simple_select")},toDisplayFeatures(k,x,C){const B=x.properties.id===k.rectangle.id;B&&!k.hasCoordinates||(x.properties.active=B?"true":"false",C(x))}}}const YR=[{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 U0(){const k=qr.value;return!k||!mr[k]?.url?"":mr[k].url}function XR(k,x){return k?.id?String(k.id):k?.url?`${k.url}-${x}`:`layer-${x}`}function W0(k){const x=String(k?.url??"").trim();if(!x)return"";if(/^https?:\/\//i.test(x))return x;const C=window.location?.origin??"",B=x.replace(/^\/+/,"");return`${C}/${B}`}function vo(k){k&&Re.value?.layerId!==k||(Re.value=null)}function ZR(k,x={}){if(k.popup===!1)return[];const C=Number(x?.point_count);if(Number.isFinite(C)&&C>1)return[{key:"Об'єктів у кластері",value:String(C)}];const B=W0(k),P=Us(k,B,F.value);return Array.isArray(k.popup)?k.popup.length?k.popup.map(J=>{const fe=J?.field||J?.name;if(!fe)return null;const ge=x[fe];if(ge==null||ge==="")return null;const Ne=P?.formatPopupValue?P.formatPopupValue(fe,ge):String(ge);return{key:J.label||fe,value:Ne}}).filter(Boolean):[]:Object.entries(x).slice(0,5).map(([J,fe])=>({key:J,value:fe==null?"—":String(fe)}))}function K0(k){if(!Array.isArray(k))return[];const x=B=>Array.isArray(B)&&B.length>=2&&Number.isFinite(Number(B[0]))&&Number.isFinite(Number(B[1])),C=B=>{if(!B.length)return B;const P=B[0],J=B[B.length-1];return!J||P[0]!==J[0]||P[1]!==J[1]?[...B,P]:B};if(k.length&&x(k[0])){const B=k.map(P=>[Number(P[0]),Number(P[1])]).filter(x);return B.length?[C(B)]:[]}return k.length&&Array.isArray(k[0])&&x(k[0][0])?k.map(P=>Array.isArray(P)?P.map(J=>[Number(J[0]),Number(J[1])]):[]).filter(P=>P.length).map(C):k.length&&Array.isArray(k[0])&&Array.isArray(k[0][0])&&x(k[0][0][0])?k.flatMap(P=>Array.isArray(P)?P:[]).map(P=>Array.isArray(P)?P.map(J=>[Number(J[0]),Number(J[1])]):[]).filter(P=>P.length).map(C):[]}function QR(k){const x=k.style??{},C=x.color??"#3b82f6";if(!x.colorAttr||!x.colorSet)return C;const B=Object.keys(x.colorSet);if(!B.length)return C;const P=["match",["to-string",["get",x.colorAttr]]];return B.forEach(J=>{P.push(String(J),x.colorSet?.[J]??C)}),P.push(C),P}function eF(k){if(!$)return;const x=$.getStyle()?.layers;Array.isArray(x)&&[...x].reverse().forEach(C=>{C.source===k&&$.getLayer(C.id)&&$.removeLayer(C.id)})}function la(k){if(!$)return;k.handlers.forEach(B=>{try{$.off(B.type,B.layerId,B.handler)}catch{}}),k.handlers=[],[...k.layerIds,...k.boundsIds].forEach(B=>{$.getLayer(B)&&$.removeLayer(B)}),eF(k.sourceId),$.getSource(k.sourceId)&&$.removeSource(k.sourceId);const x=`vs-ov-bounds-src-${k.id}`,C=`vs-ov-bounds-line-${k.id}`;$.getLayer(C)&&$.removeLayer(C),$.getSource(x)&&$.removeSource(x),vo(k.id)}function tF(k,x){if(!$)return[];const C=`vs-ov-bounds-src-${x}`,B=`vs-ov-bounds-line-${x}`,P=k.bounds??re.value??Ee.value,J=K0(P);if(!J.length)return[];const fe={type:"FeatureCollection",features:J.map(ge=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:ge}}))};return $.getLayer(B)&&$.removeLayer(B),$.getSource(C)&&$.removeSource(C),$.addSource(C,{type:"geojson",data:fe}),$.addLayer({id:B,type:"line",source:C,paint:{"line-color":k.style?.stroke??k.style?.color??"#2563eb","line-width":k.style?.width??2,"line-opacity":k.style?.opacity??.8,"line-dasharray":[2,2]}}),[B]}function pu(){return Wt||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle"}function nF(k,x){if(!$)return;k.handlers.forEach(B=>{try{$.off(B.type,B.layerId,B.handler)}catch{}});const C=[];x.forEach(B=>{const P=fe=>{if(pu())return;if(!fe?.features?.length){vo(k.id);return}const ge=fe.features[0]?.properties??{},Ne=ZR(k.config,ge);if(!Ne.length){vo(k.id);return}Re.value={layerId:k.id,entries:Ne,point:{x:fe.point.x,y:fe.point.y}}},J=()=>vo(k.id);$.on("mousemove",B,P),$.on("mouseleave",B,J),C.push({layerId:B,type:"mousemove",handler:P},{layerId:B,type:"mouseleave",handler:J})}),k.handlers=C}function hu(k,x){if(!$)return;k.layerIds=x,k.boundsIds=tF(k.config,k.id),nF(k,x);const C=k.visible?"visible":"none";[...k.layerIds,...k.boundsIds].forEach(B=>{$.getLayer(B)&&$.setLayoutProperty(B,"visibility",C)}),En()}function Co(k){if(!$)return;la(k),k.renderToken=(k.renderToken??0)+1;const x=k.renderToken,C=k.config,B=W0(C);if(!B)return;const P=[],J=/\.v(?:m)?t(?:\?|$|\/)/i.test(B)||/\.pbf(?:\?|$)/i.test(B)||/\/vtile(?:\/|\?|$)/i.test(B)||String(C?.service??"").toLowerCase()==="vector"||String(C?.format??"").toLowerCase()==="mvt",fe=Us(C,B,F.value);if(J&&fe){const ge=C.sourceLayer||C.layer||C.service_layer||C.dataset?.layer||C.id;$.addSource(k.sourceId,{type:"vector",tiles:[B],minzoom:typeof C.minzoom=="number"?C.minzoom:0,maxzoom:typeof C.maxzoom=="number"?C.maxzoom:22}),(async()=>{try{if(!$||!$.getSource(k.sourceId)||k.renderToken!==x)return;const Ne=await fe.render({map:$,overlayId:k.id,sourceId:k.sourceId,sourceLayer:ge,url:B,config:C});if(!$||!$.getSource(k.sourceId)||k.renderToken!==x){Ne.forEach(nt=>{$.getLayer(nt)&&$.removeLayer(nt)});return}hu(k,Ne)}catch(Ne){k.renderToken===x&&console.error(`Failed to render map layer preset "${fe.id}"`,Ne)}})();return}if(J){const ge=C.sourceLayer||C.layer||C.service_layer||C.dataset?.layer||C.id;$.addSource(k.sourceId,{type:"vector",tiles:[B],minzoom:typeof C.minzoom=="number"?C.minzoom:0,maxzoom:typeof C.maxzoom=="number"?C.maxzoom:22});const Ne=Array.isArray(C.style?.types)?C.style.types.map(Un=>String(Un).toLowerCase()):[String(C.style?.type??"polygon").toLowerCase()],nt=QR(C),jn=C.style?.opacity??.5,Eu=Un=>{if(Un==="point"){const zs=`vs-ov-point-${k.id}`;$.addLayer({id:zs,type:"circle",source:k.sourceId,"source-layer":ge,paint:{"circle-color":nt,"circle-radius":C.style?.radius??5,"circle-opacity":jn}}),P.push(zs);return}if(Un==="polyline"||Un==="line"){const zs=`vs-ov-line-${k.id}`;$.addLayer({id:zs,type:"line",source:k.sourceId,"source-layer":ge,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":nt,"line-width":C.style?.width??2,"line-opacity":jn}}),P.push(zs);return}const lb=`vs-ov-fill-${k.id}`,ab=`vs-ov-border-${k.id}`;$.addLayer({id:lb,type:"fill",source:k.sourceId,"source-layer":ge,paint:{"fill-color":nt,"fill-opacity":jn}}),$.addLayer({id:ab,type:"line",source:k.sourceId,"source-layer":ge,paint:{"line-color":C.style?.stroke??C.style?.color??"#2563eb","line-width":C.style?.width??1,"line-opacity":jn}}),P.push(lb,ab)};[...new Set(Ne)].forEach(Un=>Eu(Un)),hu(k,P);return}else{$.addSource(k.sourceId,Ia(B,C,{safe:!1}));const ge=`vs-ov-raster-${k.id}`;$.addLayer({id:ge,type:"raster",source:k.sourceId,paint:{"raster-opacity":C.style?.opacity??1}}),P.push(ge)}hu(k,P)}function Fs(){if(!$)return;const x={type:"FeatureCollection",features:K0(re.value??Ee.value).map(C=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:C}}))};$.getSource(fi)?$.getSource(fi).setData(x):$.addSource(fi,{type:"geojson",data:x}),$.getLayer(Zr)||$.addLayer({id:Zr,type:"line",source:fi,paint:{"line-color":"#2563eb","line-width":2,"line-opacity":.8,"line-dasharray":[2,2]}})}function rF(k){if(!$||c.value)return;const x=te[k];if(!x)return;x.visible=!x.visible;const C=x.visible?"visible":"none";[...x.layerIds,...x.boundsIds].forEach(B=>{$.getLayer(B)&&$.setLayoutProperty(B,"visibility",C)}),En(),x.visible||vo(k)}function q0(k){if(!$)return;const x=Gr[k];if(!x?.url)return;const C=Is(k),B=Os(k);$.getLayer(B)&&$.removeLayer(B),$.getSource(C)&&$.removeSource(C),$.addSource(C,Ia(x.url,x,{safe:!0}));const P=x?.opacity??x?.style?.opacity,J=typeof P=="number"?P:FE;$.addLayer({id:B,type:"raster",source:C,paint:{"raster-opacity":J}})}function oF(k){if(!$)return;const x=Is(k),C=Os(k);$.getLayer(C)&&$.removeLayer(C),$.getSource(x)&&$.removeSource(x)}function G0(){$&&Sn.value.forEach(k=>q0(k))}function sF(k){if(!$||c.value||!Gr[k])return;Sn.value.includes(k)?(Sn.value=Sn.value.filter(C=>C!==k),oF(k)):(Sn.value=[...Sn.value,k],q0(k)),En()}function En(){if(!$)return;const k=Sn.value.map(Ne=>Os(Ne)).filter(Ne=>$.getLayer(Ne)),x=[],C=[],B=[],P=[];we.value.forEach(Ne=>{const nt=te[Ne];if(!nt)return;const jn=String(nt.config?.url??""),Eu=/\.v(?:m)?t(?:\?|$|\/)/i.test(jn)||/\/vtile(?:\/|\?|$)/i.test(jn)||Tu(nt.config,jn,F.value),Un=/\.png(?:\?|$)/i.test(jn);Eu?B.push(...nt.layerIds):Un?x.push(...nt.layerIds):C.push(...nt.layerIds),P.push(...nt.boundsIds)});const J=[...k,...x,...C,...B,...P];J.forEach(Ne=>{$.getLayer(Ne)&&$.moveLayer(Ne)}),$.getLayer(Zr)&&$.moveLayer(Zr);const ge=($.getStyle?.()?.layers??[]).map(Ne=>String(Ne?.id??"")).filter(Ne=>Ne.startsWith("gl-draw-"));if(ge.forEach(Ne=>{$.getLayer(Ne)&&$.moveLayer(Ne)}),$.getLayer(gf)){const Ne=J.find(nt=>$.getLayer(nt))??($.getLayer(Zr)?Zr:null)??ge.find(nt=>$.getLayer(nt));Ne&&$.moveLayer(gf,Ne)}}function iF(k){if(!mr[k]||(qr.value=k,!$))return;const x=U0();if(!x)return;const C=$.getSource("rasterSource");if(C&&typeof C.setTiles=="function"){C.setTiles([x]),En();return}const B=$.getCenter?.(),P=$.getZoom?.(),J=le?.getAll?.();$.setStyle(Rs(x)),$.once("style.load",()=>{if($&&(B&&Number.isFinite(P)&&$.jumpTo({center:[B.lng,B.lat],zoom:P}),Fs(),G0(),we.value.forEach(fe=>{const ge=te[fe];ge&&Co(ge)}),En(),J?.features?.length&&le))try{J.features.forEach(fe=>le.add(fe)),f.value=J.features.length}catch{f.value=0}})}function mu(k){return{type:"Feature",properties:{},geometry:k}}function Mn(k){if(!k)return null;try{return JSON.parse(JSON.stringify(k))}catch{return null}}function gu(k){if(!k)return null;const x=Mn(k.geometry);return x?{...k.id!==void 0?{id:k.id}:{},type:"Feature",properties:{...k.properties??{}},geometry:x}:null}function aa(k){if(!k)return[];const x=(P,J)=>{if(!P?.type)return[];const fe={...J??{}};return P.type==="MultiPoint"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"Point",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="MultiLineString"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"LineString",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="MultiPolygon"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"Polygon",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="GeometryCollection"&&Array.isArray(P.geometries)?P.geometries.flatMap(ge=>x(ge,fe)):[{type:"Feature",properties:fe,geometry:Mn(P)}]},C=P=>{if(!P)return null;if(P.type==="Feature"){const J=gu(P);return J?x(J.geometry,J.properties):null}return P.geom?.type&&Array.isArray(P.geom.coordinates)?x({type:P.geom.type,coordinates:P.geom.coordinates},P.properties??{}):P.type==="GeometryCollection"&&Array.isArray(P.geometries)?x(P,P.properties??{}):typeof P.type=="string"&&Array.isArray(P.coordinates)?x(Mn(P),P.properties??{}):null};if(k.type==="FeatureCollection")return(k.features??[]).flatMap(C).filter(Boolean);if(Array.isArray(k))return k.flatMap(P=>P?.type==="FeatureCollection"?aa(P):[C(P)]).flat().filter(Boolean);const B=C(k);return B?Array.isArray(B)?B:[B]:[]}function J0(k){if(!k.length)return null;if(!a.value)return Mn(k[0]?.geometry??null);const x=k.map(J=>Mn(J?.geometry)).filter(Boolean);return x.every(J=>J?.type==="Point")?{type:"MultiPoint",coordinates:x.map(J=>J.coordinates)}:x.every(J=>J?.type==="LineString")?{type:"MultiLineString",coordinates:x.map(J=>J.coordinates)}:x.every(J=>J?.type==="Polygon")?{type:"MultiPolygon",coordinates:x.map(J=>J.coordinates)}:{type:"GeometryCollection",geometries:x}}function Y0(k){if(!k)return"__null__";try{return JSON.stringify(k)}catch{return"__invalid__"}}function lF(k,x){if(!Array.isArray(k)||!Array.isArray(x)||k.length<2||x.length<2)return!1;const C=1e-12;return Math.abs(Number(k[0])-Number(x[0]))<C&&Math.abs(Number(k[1])-Number(x[1]))<C}function X0(k,x){if(!Array.isArray(k)||k.length<4)return null;const B=lF(k[0],k[k.length-1])?k.slice(0,-1):k.slice();return!Number.isInteger(x)||x<0||x>=B.length||B.length<=3||(B.splice(x,1),B.length<3)?null:[...B,[...B[0]]]}function Z0(k,x){if(!Array.isArray(k)||k.length<2||!Number.isInteger(x)||x<0||x>=k.length||k.length<=2)return null;const C=k.slice();return C.splice(x,1),C.length<2?null:C}function aF(k,x){const C=Mn(k);if(!C||!Array.isArray(x))return null;if(C.type==="LineString"){const[B]=x,P=Z0(C.coordinates,B);return P?(C.coordinates=P,C):null}if(C.type==="MultiLineString"){const[B,P]=x,J=C.coordinates?.[B],fe=Z0(J,P);return fe?(C.coordinates[B]=fe,C):null}if(C.type==="Polygon"){const[B,P]=x,J=C.coordinates?.[B],fe=X0(J,P);return fe?(C.coordinates[B]=fe,C):null}if(C.type==="MultiPolygon"){const[B,P,J]=x,fe=C.coordinates?.[B]?.[P],ge=X0(fe,J);return ge?(C.coordinates[B][P]=ge,C):null}return null}function cF(k){return k?k.split(".").map(x=>Number(x)).filter(x=>Number.isInteger(x)&&x>=0):[]}function Q0(k){return!le||!k?null:typeof le.get=="function"?le.get(k)??null:le.getAll?.()?.features?.find(C=>String(C?.id??"")===k)??null}function eb(k){const x=k?.properties?.id??k?.id;return x==null||x===""?null:String(x)}function dF(k){if(!$||!k)return null;const x=[[k.x-8,k.y-8],[k.x+8,k.y+8]],B=$.queryRenderedFeatures(x).find(P=>{const J=String(P?.properties?.meta??"");return J&&J!=="feature"?!1:!!eb(P)});return eb(B)}function uF(k,x){if(!le||!k||!x.length)return;const C=Q0(k);if(!C?.geometry)return;const B=aF(C.geometry,x);if(!B)return;const P={...C,id:C.id??k,geometry:B};H=!0,D=!0;try{le.delete(k),le.add(P)}finally{D=!1,H=!1}gr(),Hn()}function fF(k){if(!$||!le||c.value||b.isRulerActive.value||p.value!=="edit")return;const x=k?.point;if(!x)return;const C=[[x.x-8,x.y-8],[x.x+8,x.y+8]],P=$.queryRenderedFeatures(C).find(fe=>fe?.properties?.meta==="vertex"&&fe?.properties?.parent&&fe?.properties?.coord_path);if(!P)return;k?.originalEvent?.preventDefault?.(),k?.originalEvent?.stopPropagation?.();const J=cF(String(P.properties.coord_path));J.length&&uF(String(P.properties.parent),J)}function pF(k){const x=rb(k);if(!x)return null;const[[C,B],[P,J]]=x;return{lat:(B+J)/2,lng:(C+P)/2}}function tb(k){if(!Array.isArray(k)||k.length<3)return 0;const x=(B,P)=>{const J=B*2003750834e-2/180,fe=Math.log(Math.tan((90+P)*Math.PI/360))/(Math.PI/180);return[J,fe*2003750834e-2/180]};let C=0;for(let B=0;B<k.length-1;B+=1){const[P,J]=x(Number(k[B][0]),Number(k[B][1])),[fe,ge]=x(Number(k[B+1][0]),Number(k[B+1][1]));C+=P*ge-fe*J}return Math.abs(C/2)/1e6}function hF(k){if(!k?.type||!k?.coordinates)return null;if(k.type==="Polygon"){const x=k.coordinates?.[0];return Array.isArray(x)?tb(x):null}return k.type==="MultiPolygon"?k.coordinates.reduce((x,C)=>{const B=C?.[0];return Array.isArray(B)?x+tb(B):x},0):null}function yu(k){if(!k){h.value=null;return}const x=pF(k);if(!x){h.value=null;return}h.value={type:String(k.type??"Feature"),center:x,areaKm2:hF(k)}}function bu(k){if(!k){const B=Pe[Pe.length-1],P=Mn(B?.geometry??null);lt=P,yu(P);return}const x=Pe.find(B=>String(B?.id??"")===String(k))??null,C=Mn(x?.geometry??null);lt=C,yu(C)}function ku(k){m.value=(k??[]).map((x,C)=>{const B=String(x?.id??`feature-${C+1}`),P=wu(String(x?.geometry?.type??"Feature"));return{id:B,label:`${P} ${C+1}`}})}function wu(k){switch(String(k)){case"Point":return"Точка";case"MultiPoint":return"Мультиточка";case"LineString":return"Лінія";case"MultiLineString":return"Мультилінія";case"Polygon":return"Полігон";case"MultiPolygon":return"Мультиполігон";case"GeometryCollection":return"Колекція геометрій";default:return String(k||"Невідомо")}}function nb(k,x){if(!Array.isArray(k)||!Array.isArray(x)||k.length!==2||x.length!==2)return!1;const C=1e-9;return Math.abs(Number(k[0])-Number(x[0]))<C&&Math.abs(Number(k[1])-Number(x[1]))<C}function rb(k){if(!k)return null;let x=1/0,C=1/0,B=-1/0,P=-1/0;const J=fe=>{if(Array.isArray(fe)){if(fe.length>=2&&Number.isFinite(fe[0])&&Number.isFinite(fe[1])){const ge=Number(fe[0]),Ne=Number(fe[1]);x=Math.min(x,ge),C=Math.min(C,Ne),B=Math.max(B,ge),P=Math.max(P,Ne);return}fe.forEach(J)}};return J(k.coordinates),!Number.isFinite(x)||!Number.isFinite(C)?null:[[x,C],[B,P]]}function xu(k){if(!$||!k)return;const x=rb(k);if(!x)return;const[[C,B],[P,J]]=x;if(C===P&&B===J){$.easeTo({center:[C,B],zoom:Math.max(Ae.value,14)}),We();return}$.fitBounds(x,{padding:30,duration:250,maxZoom:18}),We()}function vu(){if(!le){f.value=0;return}const k=le.getAll();f.value=k?.features?.length??0}function Ps(){if(!le)return null;const x=le.getAll?.()?.features??[],C=J=>!!J&&x.some(fe=>String(fe?.id??"")===String(J??"")),B=le.getSelectedIds?.();if(Array.isArray(B)&&B.length>0){const J=B[0];return J!=null?String(J):null}if(C(qe))return String(qe);if(!x.length)return null;const P=a.value?x[x.length-1]:x[0];return P?.id!==void 0&&P?.id!==null?String(P.id):null}function gr(){if(!le)return;const k=le.getAll();if(f.value=k?.features?.length??0,!k?.features?.length){Pe=[],m.value=[],lt=null,qe=null,h.value=null,D||(Ke="__null__",r("update:modelValue",null));return}const x=(k.features??[]).map(gu).filter(Boolean);if(Pe=x,ku(x),qe=Ps(),bu(qe),!D){const C=J0(x);Ke=Y0(C),r("update:modelValue",C)}}function ca(){if(!le)return;(le.getAll()?.features||[]).forEach(x=>le.delete(x.id)),m.value=[],vu()}function da(k){if(!le)return;const x=aa(k),C=a.value?x:x.slice(0,1);D=!0,ca(),C.forEach(J=>{try{le.add(J)}catch{}}),D=!1,Pe=(le.getAll?.()?.features??C).map(gu).filter(Boolean),ku(Pe),qe=null;const P=Mn(Pe[Pe.length-1]?.geometry??null);lt=Mn(P),vu(),yu(P),P&&(xu(P),c.value||Hn())}function mF(){le&&(D=!0,ca(),Pe.forEach(k=>{try{le.add(k)}catch{}}),D=!1,ku(Pe),vu(),bu(qe))}function So(){if(le){try{le.changeMode("simple_select",{featureIds:[]})}catch{}p.value=""}}function ua(k){if(c.value||!le)return;b.isRulerActive.value&&b.closeRuler(),Wt=!0,So(),p.value=k;const x=k==="marker"?"draw_point":k==="polyline"?"draw_line_string":k==="rectangle"?"draw_rectangle":"draw_polygon";a.value||(D=!0,ca(),D=!1);try{le.changeMode(x)}catch{p.value=""}finally{requestAnimationFrame(()=>{Wt=!1})}}function Hn(k){if(c.value||!le||!le.getAll()?.features?.length)return;const C=k||Ps();if(C)try{le.changeMode("direct_select",{featureId:C}),qe=C,bu(qe),p.value="edit"}catch{p.value=""}}function gF(k){c.value||!le||!k||Hn(k)}function yF(){if(!(c.value||!le)){if(a.value){const k=Ps();if(k)try{Ut=!0,le.delete(k),Ut=!1,gr();const x=Ps();x?Hn(x):So();return}catch{Ut=!1}}So(),ca(),Pe=[],m.value=[],qe=null,Ke="__null__",h.value=null,r("update:modelValue",null)}}function bF(){c.value||!lt||xu(lt)}function kF(){c.value||(Me.value=!Me.value)}function ob(k){if(!Me.value)return;const x=me.value;x&&!x.contains(k.target)&&(Me.value=!1)}function wF(){xF()}function xF(){c.value||(Me.value=!1,W.value={srid:"",encoding:"UTF-8",file:""},Ct.value=!0)}function vF(){Ct.value=!1,et.value=!1,Xe.value=!1}function CF(k){return k?typeof k=="string"?k:typeof k=="object"&&k&&"file_path"in k?String(k.file_path??""):"":""}function SF(k){const B=((Array.isArray(k)?k[0]:k)?.features??[]).map(P=>Array.isArray(P)?P[0]:P).filter(Boolean).map(P=>P?.type==="Feature"?P:{type:"Feature",properties:{},geometry:P});return B.length?{type:"FeatureCollection",features:B}:null}async function EF(){if(c.value||!le||et.value)return;const k=CF(W.value.file);if(!k){ke.notify({type:"warning",title:"Імпорт геометрії",message:"Оберіть файл для імпорту."});return}et.value=!0;try{const x=await fetch("/api/gis-convert",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srid:W.value.srid,encoding:W.value.encoding||"UTF-8",filepath:k,limit:!0})}),C=await x.json().catch(()=>null);if(!x.ok)throw new Error(C?.message||C?.error||`Код помилки: ${x.status}`);const B=SF(C);if(!B){ke.notify({type:"warning",title:"Імпорт геометрії",message:"Файл не містить коректні геодані."});return}da(B),gr(),Ct.value=!1,ke.notify({type:"success",title:"Успіх",message:"Геометрію успішно імпортовано."})}catch(x){ke.notify({type:"error",title:"Помилка",message:x?.message||"Помилка імпорту файла геометрії"})}finally{et.value=!1}}function MF(){c.value||(Vt.value=[],Me.value=!1,Ye.value=!0)}function AF(){Ye.value=!1,Vt.value=[]}function _F(){if(c.value||!le)return;const k=vC(R.value.coordinates??"",R.value.format||"decimal",R.value.order||"lat-lon");if(!k.ok){Vt.value=k.errors,TF(k.errors);return}Vt.value=[],da({type:"Polygon",coordinates:[k.ring]}),gr(),Ye.value=!1,k.wasClosedAutomatically&&ke.notify({type:"info",title:"Імпорт координат",message:"Полігон був автоматично замкнений (перша і остання точки різнилися)."})}function TF(k){if(!k.length)return;const x=5;k.slice(0,x).forEach(C=>{const B=C.line>0?`Рядок ${C.line}`:"Загальна помилка";ke.notify({type:"warning",title:"Імпорт координат",message:`${B} — ${C.message}`})}),k.length>x&&ke.notify({type:"warning",title:"Імпорт координат",message:`Ще помилок: ${k.length-x}`})}function BF(){if(c.value||!le)return;const k=le.getAll(),x=new Blob([JSON.stringify(k,null,2)],{type:"application/json"}),C=URL.createObjectURL(x),B=document.createElement("a");B.href=C,B.download="data.geojson",B.click(),URL.revokeObjectURL(C)}s.onMounted(async()=>{if(window.addEventListener("click",ob,!0),!u.value)return;const k=await fu();q=k.maplibregl,ie=k.MapboxDraw;const x=U0();x&&($=new q.Map({container:u.value,style:Rs(x),center:[he.value[0],he.value[1]],zoom:Ae.value,attributionControl:!1}),g.value=$,$.addControl(new q.NavigationControl({showCompass:!0}),"bottom-right"),$.on("error",C=>{const B=C?.error?.message??C?.message??"";US(B)}),$.on("load",()=>{if(!(!ie||!$)){if(le=new ie({displayControlsDefault:!1,modes:{...ie.modes,draw_rectangle:JR()},controls:{point:!1,line_string:!1,polygon:!1,trash:!1},styles:YR}),$.addControl(le),$.on("click",C=>{if(b.isRulerActive.value){const P=C?.lngLat;if(!P)return;y.value?.addPoint?.({lat:P.lat,lng:P.lng});return}if(!le||c.value||p.value!=="edit")return;const B=dF(C?.point);!B||B===qe||requestAnimationFrame(()=>{!le||c.value||Hn(B)})}),$.on("draw.create",()=>{if(le&&!b.isRulerActive.value){if(!a.value){const C=le.getAll();if(C.features.length>1){const B=C.features[C.features.length-1];D=!0,C.features.slice(0,-1).forEach(P=>le.delete(P.id)),D=!1,B&&(D=!0,le.add(B),D=!1)}}gr(),Hn()}}),$.on("draw.update",C=>{if(Rt||b.isRulerActive.value||pu())return;const B=Array.isArray(C?.features)?C.features:[],P=C?.action==="move"&&B.length>0&&B.every(J=>J?.geometry?.type==="Point");if(C?.action==="move"){if(P){gr();return}if(Rt=!0,mF(),Rt=!1,p.value==="edit"){const J=Ps(),fe=J?Q0(J):le?.getAll?.()?.features?.[0];if(fe?.id)try{le.changeMode("direct_select",{featureId:fe.id}),qe=String(fe.id)}catch{p.value=""}}return}gr()}),$.on("draw.delete",()=>{H||Ut||b.isRulerActive.value||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle"||(gr(),le?.getAll?.()?.features?.length||(qe=null),p.value="",So())}),$.on("draw.selectionchange",C=>{if(!le||Rt||b.isRulerActive.value||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle")return;const B=C?.features?.[0]?.id!==void 0&&C?.features?.[0]?.id!==null?String(C.features[0].id):null;if(!c.value&&B){if(p.value==="edit"&&qe===B)return;requestAnimationFrame(()=>{!le||c.value||Hn(B)});return}const P=le.getSelectedIds?.(),J=Array.isArray(P)&&P.length>0?String(P[0]):null;if(!c.value&&J){if(p.value==="edit"&&qe===J)return;requestAnimationFrame(()=>{!le||c.value||Hn(J)});return}try{le.changeMode("simple_select",{featureIds:[]})}catch{}}),se.value!==void 0){const C=se.value;se.value=void 0,requestAnimationFrame(()=>{le&&da(C)})}Fs(),G0(),we.value.forEach(C=>{const B=te[C];B&&Co(B)}),En(),Qe()}}),$.on("contextmenu",fF),$.on("moveend",We),$.on("zoomend",()=>{$&&(Ae.value=$.getZoom())}))}),s.onUnmounted(()=>{typeof document<"u"&&(document.body.style.overflow=""),typeof window<"u"&&window.removeEventListener("keydown",Su),$e&&(clearTimeout($e),$e=null),b.isRulerActive.value&&b.closeRuler(),window.removeEventListener("click",ob,!0),Object.values(te).forEach(k=>{$&&la(k)}),vo(),pt?.remove&&pt.remove(),pt=null,Jr(),$?.remove&&$.remove(),$=null,le=null,g.value=null}),s.watch(()=>t.modelValue,k=>{if(!le){se.value=k;return}if(pu())return;const x=J0((a.value?aa(k):aa(k).slice(0,1))||[]),C=Y0(x);if(Ke&&C===Ke){Ke=null;return}Ke=null,da(k)},{deep:!0}),s.watch(()=>ae.value,k=>{const x=Array.isArray(k)?k:[],C=[],B=new Set;x.forEach((P,J)=>{if(!P)return;const fe=XR(P,J);C.push(fe),B.add(fe);const ge={...P,id:fe},Ne=te[fe],nt=Ne?.visible??!!ge.visible;Ne&&$&&la(Ne),te[fe]={id:fe,config:ge,visible:nt,sourceId:`vs-ov-src-${fe}`,layerIds:[],boundsIds:[],handlers:[],renderToken:Ne?.renderToken??0}}),Object.keys(te).forEach(P=>{if(B.has(P))return;const J=te[P];J&&$&&la(J),delete te[P]}),we.value=C,$&&(we.value.forEach(P=>{const J=te[P];J&&Co(J)}),En())},{immediate:!0,deep:!0}),s.watch(()=>re.value,()=>{$&&(Fs(),we.value.forEach(k=>{const x=te[k];x&&Co(x)}),En())},{deep:!0}),s.watch(()=>ne.value,async k=>{if(Ee.value=[],!k){$&&(Fs(),we.value.forEach(x=>{const C=te[x];C&&Co(C)}),En());return}try{const x=await fetch(`https://data.gki.com.ua/api-user/atu/${k}`);if(!x?.ok)return;const B=(await x.json())?.geometry?.coordinates;Array.isArray(B)&&B.length&&(Ee.value=B)}catch(x){console.error("Failed to fetch KATOTTG bounds",x)}finally{if(!$)return;Fs(),we.value.forEach(x=>{const C=te[x];C&&Co(C)}),En()}},{immediate:!0}),s.watch(()=>L.value,k=>{if(!Array.isArray(k)||k.length!==2)return;const x=[Number(k[0]),Number(k[1])];if(nb(he.value,x)||(he.value=[...x],!$))return;const C=$.getCenter?.();C&&nb([C.lng,C.lat],he.value)||$.easeTo({center:[he.value[0],he.value[1]]})},{deep:!0}),s.watch(()=>O.value,k=>{typeof k=="number"&&(Ae.value=k,$&&$.setZoom(k))}),s.watch(()=>h.value?.center,k=>{k&&Fe(k.lng,k.lat,$?.getZoom?.())},{deep:!0}),s.watch(c,k=>{k&&So()}),s.watch(f,k=>{if(k>0){c.value||Hn();return}Wt||So()});const sb=s.computed(()=>m.value.length>0||!!h.value),Cu=s.computed(()=>{const k=m.value,x=k.length>1;return k.length?k.map(C=>({id:C.id,label:x?C.label:h.value?.type?wu(h.value.type):C.label,interactive:x})):h.value?.type?[{id:"__feature",label:wu(h.value.type),interactive:!1}]:[]});function ib(){setTimeout(()=>{$?.resize&&$.resize()},50)}function Su(k){k.key==="Escape"&&d.value&&(d.value=!1)}return s.watch(d,k=>{typeof document<"u"&&(document.body.style.overflow=k?"hidden":""),typeof window<"u"&&(k?window.addEventListener("keydown",Su):window.removeEventListener("keydown",Su)),ib()}),s.watch(sb,ib),(k,x)=>(s.openBlock(),s.createBlock(s.Teleport,{to:"body",disabled:!d.value},[s.createElementVNode("div",{class:s.normalizeClass(["vs-map-wrapper w-full",{fullscreen:d.value}])},[s.createElementVNode("div",WS,[s.createElementVNode("div",{ref_key:"mapContainer",ref:u,class:"vs-map-canvas"},null,512),Le.value.search||Le.value.import||Le.value.export?(s.openBlock(),s.createElementBlock("div",KS,[Le.value.search?(s.openBlock(),s.createBlock(HC,{key:0,config:G.value,onGoToCoordinates:GR},null,8,["config"])):s.createCommentVNode("",!0),Le.value.import||Le.value.export?(s.openBlock(),s.createElementBlock("div",qS,[s.createElementVNode("div",GS,[Le.value.import?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"importMenuRef",ref:me,class:"relative"},[s.createElementVNode("button",{type:"button",class:"vs-map-action-btn",onClick:kF,disabled:c.value},[x[10]||(x[10]=s.createTextVNode(" Імпорт ",-1)),s.createVNode(s.unref(Y.ChevronDown),{class:s.normalizeClass(["h-3.5 w-3.5 shrink-0 transition-transform",{"rotate-180":Me.value}])},null,8,["class"])],8,JS),Me.value?(s.openBlock(),s.createElementBlock("div",YS,[Le.value.import?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:wF}," З файлу ")):s.createCommentVNode("",!0),s.createElementVNode("button",{type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:MF}," З координат ")])):s.createCommentVNode("",!0)],512)):s.createCommentVNode("",!0),Le.value.export?(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",class:"vs-map-action-btn",onClick:BF,disabled:c.value||f.value===0}," Експорт ",8,XS)):s.createCommentVNode("",!0)])])):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.createVNode(s.unref(ke.VsModal),{visible:Ct.value,"onUpdate:visible":x[1]||(x[1]=C=>Ct.value=C),title:"Імпорт геометрії",size:"lg",teleport:s.unref(l)},{default:s.withCtx(()=>[Xe.value||et.value?(s.openBlock(),s.createElementBlock("div",ZS,[s.createVNode(s.unref(Y.LoaderCircle),{class:"h-4 w-4 shrink-0 animate-spin"}),s.createElementVNode("span",null,s.toDisplayString(ft.value),1)])):s.createCommentVNode("",!0),s.createVNode(Pt,{schema:ue.value,values:W.value,"onUpdate:values":x[0]||(x[0]=C=>W.value=C)},null,8,["schema","values"]),s.createElementVNode("div",QS,[s.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:vF,disabled:Xe.value||et.value}," Скасувати ",8,eE),s.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 inline-flex items-center gap-2",onClick:EF,disabled:c.value||Xe.value||et.value||!W.value.file},[et.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:0,class:"h-4 w-4 animate-spin"})):s.createCommentVNode("",!0),s.createTextVNode(" "+s.toDisplayString(et.value?"Обробка...":"Додати"),1)],8,tE)])]),_:1},8,["visible","teleport"]),s.createVNode(s.unref(ke.VsModal),{visible:Ye.value,"onUpdate:visible":x[3]||(x[3]=C=>Ye.value=C),title:"Імпорт координат полігону",size:"lg",teleport:s.unref(l)},{default:s.withCtx(()=>[s.createVNode(Pt,{schema:M,values:R.value,"onUpdate:values":x[2]||(x[2]=C=>R.value=C)},null,8,["values"]),s.createElementVNode("div",nE,[s.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:AF}," Скасувати "),s.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:_F,disabled:c.value}," Побудувати ",8,rE)])]),_:1},8,["visible","teleport"]),s.createElementVNode("div",oE,[s.createElementVNode("div",sE,[sa.value?(s.openBlock(),s.createElementBlock(s.Fragment,{key:0},[Le.value.point?(s.openBlock(),s.createElementBlock("button",{key:0,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="marker"}]),title:"Точка",onClick:x[4]||(x[4]=C=>ua("marker")),disabled:c.value},[s.createVNode(s.unref(Y.MapPin),{class:"vs-btn-icon"})],10,iE)):s.createCommentVNode("",!0),Le.value.line?(s.openBlock(),s.createElementBlock("button",{key:1,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="polyline"}]),title:"Лінія",onClick:x[5]||(x[5]=C=>ua("polyline")),disabled:c.value},[s.createVNode(jv,{class:"vs-btn-icon"})],10,lE)):s.createCommentVNode("",!0),Le.value.polygon?(s.openBlock(),s.createElementBlock("button",{key:2,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="polygon"}]),title:"Полігон",onClick:x[6]||(x[6]=C=>ua("polygon")),disabled:c.value},[s.createVNode(qv,{class:"vs-btn-icon"})],10,aE)):s.createCommentVNode("",!0),Le.value.rectangle?(s.openBlock(),s.createElementBlock("button",{key:3,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="rectangle"}]),title:"Прямокутник",onClick:x[7]||(x[7]=C=>ua("rectangle")),disabled:c.value},[s.createVNode(Xv,{class:"vs-btn-icon"})],10,cE)):s.createCommentVNode("",!0)],64)):s.createCommentVNode("",!0),sa.value?(s.openBlock(),s.createElementBlock("div",dE)):s.createCommentVNode("",!0),Le.value.ruler?(s.openBlock(),s.createElementBlock("button",{key:2,class:s.normalizeClass(["vs-btn",{"vs-active":s.unref(b).isRulerActive.value}]),title:"Лінійка",onClick:w},[s.createVNode(s.unref(Y.Ruler),{class:"vs-btn-icon"})],2)):s.createCommentVNode("",!0),s.createElementVNode("button",{class:"vs-btn",onClick:x[8]||(x[8]=C=>d.value=!d.value),title:d.value?"Згорнути":"На весь екран"},[d.value?(s.openBlock(),s.createBlock(s.unref(Y.Minimize),{key:0,class:"vs-btn-icon"})):(s.openBlock(),s.createBlock(s.unref(Y.Maximize),{key:1,class:"vs-btn-icon"}))],8,uE)])]),Le.value.ruler&&s.unref(b).isRulerActive.value?(s.openBlock(),s.createBlock(LS,{key:1,ref_key:"rulerPanelRefEl",ref:y,onClose:x[9]||(x[9]=C=>s.unref(b).closeRuler()),onTabChange:s.unref(b).onRulerTabChange,onPointsChange:s.unref(b).onRulerPointsChange,onShapeClosedChange:s.unref(b).onRulerShapeClosedChange},null,8,["onTabChange","onPointsChange","onShapeClosedChange"])):s.createCommentVNode("",!0),Le.value.ruler&&s.unref(b).isRulerActive.value&&s.unref(b).hasRulerPoints.value?(s.openBlock(),s.createBlock(IS,{key:2,map:g.value,points:s.unref(b).rulerPoints.value,"is-shape-closed":s.unref(b).rulerShapeClosed.value,"label-mode":s.unref(b).rulerActiveTab.value},null,8,["map","points","is-shape-closed","label-mode"])):s.createCommentVNode("",!0),St.value.length?(s.openBlock(),s.createBlock(s.Teleport,{key:3,to:K.value},[s.createElementVNode("div",{class:"pointer-events-none fixed z-[10000]",style:s.normalizeStyle(cn.value)},[s.createElementVNode("div",fE,[s.createElementVNode("dl",pE,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(St.value,C=>(s.openBlock(),s.createElementBlock("div",{key:`${C.key}-${C.value}`,class:"flex justify-between gap-2"},[s.createElementVNode("dt",hE,s.toDisplayString(C.key),1),s.createElementVNode("dd",mE,s.toDisplayString(C.value),1)]))),128))])])],4)],8,["to"])):s.createCommentVNode("",!0),s.createElementVNode("div",gE,[s.createVNode(wC,{compact:"",basemaps:s.unref(mr),"active-base-key":qr.value,"tile-overlays":s.unref(Gr),"active-tile-overlay-keys":Sn.value,"vector-overlays":ia.value,"preview-tile":Ce.value,disabled:c.value,onOnLayerChange:iF,onOnOverlayToggle:sF,onOnVectorOverlayToggle:rF},null,8,["basemaps","active-base-key","tile-overlays","active-tile-overlay-keys","vector-overlays","preview-tile","disabled"])])]),sb.value?(s.openBlock(),s.createElementBlock("div",yE,[s.createElementVNode("div",bE,[s.createElementVNode("div",kE,[x[11]||(x[11]=s.createElementVNode("span",{class:"vs-map-status__label"},"Тип:",-1)),s.createElementVNode("div",wE,[Cu.value.length?(s.openBlock(!0),s.createElementBlock(s.Fragment,{key:0},s.renderList(Cu.value,(C,B)=>(s.openBlock(),s.createElementBlock(s.Fragment,{key:C.id},[C.interactive?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:s.normalizeClass(["vs-map-status__chip",{"vs-map-status__chip--active":C.id===s.unref(qe)}]),onClick:P=>gF(C.id),disabled:c.value},s.toDisplayString(C.label),11,xE)):(s.openBlock(),s.createElementBlock("span",vE,s.toDisplayString(C.label),1)),B<Cu.value.length-1?(s.openBlock(),s.createElementBlock("span",CE,", ")):s.createCommentVNode("",!0)],64))),128)):(s.openBlock(),s.createElementBlock("span",SE,"—"))])]),s.createElementVNode("div",EE,[s.createElementVNode("span",ME,[x[12]||(x[12]=s.createElementVNode("span",{class:"vs-map-status__label"},"Центр:",-1)),h.value?(s.openBlock(),s.createElementBlock("span",AE,s.toDisplayString(h.value.center.lng.toFixed(5))+", "+s.toDisplayString(h.value.center.lat.toFixed(5)),1)):(s.openBlock(),s.createElementBlock("span",_E,"—"))]),h.value&&h.value.areaKm2!==null?(s.openBlock(),s.createElementBlock("span",TE,[x[13]||(x[13]=s.createElementVNode("span",{class:"vs-map-status__label"},"Площа:",-1)),s.createElementVNode("span",BE,s.toDisplayString(h.value.areaKm2.toFixed(1))+" km²",1)])):s.createCommentVNode("",!0),s.createElementVNode("div",NE,[s.createElementVNode("button",{type:"button",class:"vs-status-btn vs-status-btn--zoom",title:"Масштаб до об'єкта",onClick:bF,disabled:c.value},[s.createVNode(s.unref(Y.ZoomIn),{class:"vs-status-btn__icon"})],8,DE),s.createElementVNode("button",{type:"button",class:"vs-status-btn vs-status-btn--delete",title:"Видалити об'єкт",onClick:yF,disabled:c.value},[s.createVNode(s.unref(Y.Trash2),{class:"vs-status-btn__icon"})],8,VE)])])])])):s.createCommentVNode("",!0)],2)],8,["disabled"]))}}),[["__scopeId","data-v-d2948dbb"]]),jE=["data-focus"],UE={class:"flex items-center"},WE={class:"overflow-hidden text-ellipsis whitespace-nowrap rounded-sm text-[#333] text-[85%] px-0.5 py-[3px] pl-1.5 box-border"},KE=["onClick","aria-label"],qE={key:0,class:"absolute text-gray-500 truncate pl-2"},GE={class:"flex-1 min-w-[2px]"},JE=["placeholder"],YE={class:"flex items-center shrink-0"},XE=["disabled"],bf=s.defineComponent({__name:"vs-input-tag",props:s.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:s.mergeModels(["update:modelValue"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=e;Bt(t.style);const o=s.ref(null),i=s.ref(null),l=s.ref(null),a=s.ref(!1),c=s.ref(""),d=s.useModel(n,"modelValue"),u=s.computed(()=>t.placeholder||"Add tag…"),f=s.computed(()=>d.value?.length===0&&c.value===""),p=s.computed(()=>!t.disabled&&d.value?.length>0),h=s.computed(()=>t.disabled),m=async()=>{h.value||await s.nextTick(()=>l.value?.focus())},g=F=>{const T=F.trim();T!==""&&(!d.value||!Array.isArray(d.value)?d.value=[T]:t.unique?d.value.includes(T)||(d.value=[...d.value,T]):d.value=[...d.value,T],c.value="")},y=()=>{const F=c.value;F.trim()!==""&&g(F),c.value=""},b=F=>{const T=d.value.slice();T.splice(F,1),r("update:modelValue",T)},w=()=>{r("update:modelValue",[])},v=()=>{h.value||(a.value=!0)},S=()=>{a.value=!1,!h.value&&y()},N=F=>{const{key:T}=F;T==="Enter"?(F.preventDefault(),y()):T==="Backspace"&&c.value===""&&d.value.length>0&&b(d.value.length-1)};return(F,T)=>(s.openBlock(),s.createElementBlock("div",{class:"flex gap-1 w-full",ref_key:"root",ref:o,onClick:T[1]||(T[1]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("div",{class:s.normalizeClass(["relative w-full font-sans",t.customClass]),role:"group","aria-label":"Tag input"},[s.createElementVNode("div",{class:s.normalizeClass(["flex min-h-[38px] items-center justify-between rounded border transition-colors bg-white","border-gray-300 hover:border-gray-400",a.value?"border-blue-500 ring-1 ring-blue-500":"",h.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),"data-focus":a.value?"true":"false",onClick:m},[s.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:i},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(d.value,(E,_)=>(s.openBlock(),s.createElementBlock("div",{key:_,class:"flex min-w-0 bg-[#e6e6e6] rounded-sm m-0.5 box-border"},[s.createElementVNode("div",UE,[s.createElementVNode("div",WE,s.toDisplayString(E),1)]),s.createElementVNode("div",{role:"button",class:"flex items-center rounded-sm px-1 box-border hover:bg-[#ffbdad] hover:text-[#de350b]",onClick:s.withModifiers(A=>b(_),["stop"]),"aria-label":`Remove ${E}`},[s.createVNode(s.unref(Y.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,KE)]))),128)),f.value?(s.openBlock(),s.createElementBlock("div",qE,s.toDisplayString(u.value),1)):s.createCommentVNode("",!0),s.createElementVNode("div",GE,[h.value?s.createCommentVNode("",!0):s.withDirectives((s.openBlock(),s.createElementBlock("input",{key:0,ref_key:"inputRef",ref:l,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":T[0]||(T[0]=E=>c.value=E),onFocus:v,onBlur:S,onKeydown:N,placeholder:d.value&&d.value.length?"":void 0},null,40,JE)),[[s.vModelText,c.value]])])],512),s.createElementVNode("div",YE,[p.value?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-label":"Clear all tags",disabled:h.value,onClick:s.withModifiers(w,["stop"])},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,XE)):s.createCommentVNode("",!0)])],10,jE)],2)],512))}}),ZE={class:"relative flex gap-1 bg-white w-full"},QE=["disabled","placeholder"],kf=Be(s.defineComponent({__name:"vs-input-slug",props:s.mergeModels({disabled:{type:Boolean},placeholder:{},parent:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=s.inject("values"),t=n,r=s.useModel(n,"modelValue");function o(l){const a={а:"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 l.toLowerCase().split("").map(c=>a[c]||c).join("").replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}const i=()=>{const l=e?.value?.[t.parent||""]?.toString(),a=o(l);r.value=a.toString()};return(l,a)=>(s.openBlock(),s.createElementBlock("div",ZE,[s.withDirectives(s.createElementVNode("input",{ref:"vsText",disabled:l.disabled,placeholder:l.placeholder,"onUpdate:modelValue":a[0]||(a[0]=c=>r.value=c),class:"block w-full px-3 py-2 text-sm border border-solid rounded-lg placeholder:text-nowrap border-stone-200 text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,8,QE),[[s.vModelText,r.value]]),s.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200",onClick:i}," Gen ")]))}}),[["__scopeId","data-v-b0eba370"]]),eM={class:"relative flex gap-1 bg-white w-full"},tM=["disabled","placeholder"],nM=["disabled"],rM={key:0},oM={key:1},wf=Be(s.defineComponent({__name:"vs-input-codegen",props:s.mergeModels({table:{},code:{},init:{type:Boolean},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref(!1),o=s.computed(()=>e.init!==!1),i=s.computed(()=>!!e.table&&!!e.code),l=()=>{if(!i.value)return"";const d=encodeURIComponent(String(e.table)),u=encodeURIComponent(String(e.code));return`/api/code-gen/${d}/${u}`},a=async()=>{if(!i.value||r.value)return;const d=l();if(d){r.value=!0;try{const f=await(await fetch(d)).text();t.value=f}finally{r.value=!1}}},c=()=>{o.value&&(t.value||a())};return s.onMounted(()=>{c()}),s.watch(()=>[e.table,e.code,e.init],()=>{c()}),(d,u)=>(s.openBlock(),s.createElementBlock("div",eM,[s.withDirectives(s.createElementVNode("input",{disabled:d.disabled,placeholder:d.placeholder,"onUpdate:modelValue":u[0]||(u[0]=f=>t.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,tM),[[s.vModelText,t.value]]),s.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed",disabled:r.value||d.disabled||!i.value,onClick:a},[r.value?(s.openBlock(),s.createElementBlock("span",oM,"...")):(s.openBlock(),s.createElementBlock("span",rM,"Gen"))],8,nM)]))}}),[["__scopeId","data-v-6ee5237d"]]),sM={class:"w-full"},iM={ref:"sortableContainer",class:"flex flex-col gap-1"},lM=["onDragstart","onDrop"],aM={class:"cursor-move",type:"button"},cM={class:"w-1/3"},dM={class:"w-2/3"},uM=["onClick"],fM={key:0,class:"text-[14px] text-gray-700"},pM={class:"mt-2 w-full flex items-center"},hM=["disabled"],xf=Be(s.defineComponent({__name:"vs-input-key-value",props:{parent:{},ignore:{},addButtonText:{},modelValue:{}},emits:["update:modelValue"],setup(n,{emit:e}){const t=y=>`${y}-${Math.random().toString(36).substring(2,15)}`,r=s.inject("values"),o=n,i=e,l=o.addButtonText??"Додати",a=o.ignore??[],c=s.ref([]),d=s.ref(null);(()=>{const y=o.parent&&r?.value?.[o.parent]||o.modelValue||{};c.value=Object.entries(y).filter(([b])=>!a.includes(b)).map(([b,w])=>({id:t("key-value-"),key:b,value:w}))})();function f(y){d.value=y}function p(y){if(d.value===null||d.value===y)return;const b=c.value.splice(d.value,1)[0];c.value.splice(y,0,b),d.value=null}const h=s.computed(()=>c.value.some(y=>y.key&&!y.value||!y.key&&y.value)),m=()=>{c.value.push({id:t("key-value-"),key:"",value:""})},g=y=>{c.value=c.value.filter(b=>b.id!==y)};return s.watch(c,y=>{const b={};y.forEach(v=>{v.key&&v.value!==void 0&&(b[v.key]=v.value)});const w={};a.length&&a.forEach(v=>{w[v]=o.parent?r?.value?.[o.parent]?.[v]:void 0}),r?.value&&o.parent&&(r.value[o.parent]={...w,...b}),i("update:modelValue",b)},{deep:!0}),(y,b)=>(s.openBlock(),s.createElementBlock("div",sM,[s.createElementVNode("div",iM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(c.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:w.id,class:s.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":d.value===v}]),draggable:"true",onDragstart:S=>f(v),onDragover:b[0]||(b[0]=s.withModifiers(()=>{},["prevent"])),onDrop:S=>p(v)},[s.createElementVNode("button",aM,[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})]),s.createElementVNode("div",cM,[s.createVNode(Yr,{modelValue:w.key,"onUpdate:modelValue":S=>w.key=S,placeholder:"Ключ"},null,8,["modelValue","onUpdate:modelValue"])]),s.createElementVNode("div",dM,[s.createVNode(Yr,{modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,placeholder:"Значення"},null,8,["modelValue","onUpdate:modelValue"])]),s.createElementVNode("button",{onClick:S=>g(w.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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,uM)],42,lM))),128))],512),c.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("span",fM," Дані для відображення відсутні ")),s.createElementVNode("div",pM,[s.createElementVNode("button",{type:"button",onClick:m,disabled:h.value,class:"py-1.5 px-2 flex items-center gap-x-1 text-xs font-medium rounded-full border border-dashed border-gray-200 bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(s.unref(l)),1)],8,hM)])]))}}),[["__scopeId","data-v-d8c3f9d6"]]),mM={class:"w-full"},gM={ref:"sortableContainer",class:"flex flex-col gap-1"},yM=["onDragstart","onDrop"],bM=["disabled"],kM={class:"flex-1"},wM=["onClick","disabled"],xM={key:0,class:"text-[14px] text-gray-700"},vM={class:"mt-2 w-full flex items-center"},CM=["disabled"],vf=Be(s.defineComponent({__name:"vs-input-text-array",props:s.mergeModels({addButtonText:{default:"Додати"},inputType:{default:"text"},placeholder:{default:"Значення"},mask:{default:""},disabled:{type:Boolean,default:!1}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref([]),o=s.ref(null),i=s.computed(()=>!!e.disabled),l=s.computed(()=>e.placeholder??""),a=s.computed(()=>e.addButtonText??"Додати");let c=!1;const d=y=>`${y}-${Math.random().toString(36).substring(2,15)}`,u=y=>{const b=y??t.value??[];r.value=b.map((w,v)=>({id:r.value[v]?.id??d("text-array"),value:w??""}))};u(),s.watch(()=>t.value,y=>{if(c){c=!1;return}u(y||[])},{deep:!0}),s.watch(r,y=>{c=!0,t.value=y.map(b=>b.value).filter(b=>b!=null&&b!=="")},{deep:!0});const f=s.computed(()=>i.value||r.value.some(y=>!y.value));function p(){f.value||(r.value=[...r.value,{id:d("text-array"),value:""}])}function h(y){i.value||(r.value=r.value.filter(b=>b.id!==y))}function m(y){i.value||(o.value=y)}function g(y){if(i.value||o.value===null||o.value===y)return;const b=[...r.value],[w]=b.splice(o.value,1);b.splice(y,0,w),r.value=b,o.value=null}return(y,b)=>(s.openBlock(),s.createElementBlock("div",mM,[s.createElementVNode("div",gM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:w.id,class:s.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":o.value===v}]),draggable:"true",onDragstart:S=>m(v),onDragover:b[0]||(b[0]=s.withModifiers(()=>{},["prevent"])),onDrop:S=>g(v)},[s.createElementVNode("button",{class:"cursor-move",type:"button",disabled:i.value},[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})],8,bM),s.createElementVNode("div",kM,[y.inputType==="text"?(s.openBlock(),s.createBlock(Yr,{key:0,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="tel"?(s.openBlock(),s.createBlock(ka,{key:1,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="email"?(s.openBlock(),s.createBlock(ba,{key:2,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="mask"?(s.openBlock(),s.createBlock(qs,{key:3,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,mask:y.mask,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","mask","disabled","placeholder"])):s.createCommentVNode("",!0)]),s.createElementVNode("button",{type:"button",onClick:S=>h(w.id),disabled:i.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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,wM)],42,yM))),128))],512),r.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("span",xM," Дані для відображення відсутні ")),s.createElementVNode("div",vM,[s.createElementVNode("button",{type:"button",onClick:p,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"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(a.value),1)],8,CM)])]))}}),[["__scopeId","data-v-2c229b1f"]]),SM={class:"flex items-center gap-2 w-full"},EM=["disabled"],MM=["disabled"],Cf=s.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(n,{emit:e}){const t=n,{inputClass:r}=Bt(t.style),o=e,i=s.computed({get:()=>t.modelValue||"#000000",set:a=>o("update:modelValue",a)}),l=s.computed(()=>!!t.disabled);return(a,c)=>(s.openBlock(),s.createElementBlock("div",SM,[s.withDirectives(s.createElementVNode("input",{type:"color","onUpdate:modelValue":c[0]||(c[0]=d=>i.value=d),disabled:l.value,ref:"color",class:s.normalizeClass(["py-1.5 px-1 block w-full bg-white cursor-pointer max-w-[50px]",[a.modelValue?"":"text-opacity-50",s.unref(r)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,EM),[[s.vModelText,i.value]]),s.withDirectives(s.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2","onUpdate:modelValue":c[1]||(c[1]=d=>i.value=d),disabled:l.value},null,8,MM),[[s.vModelText,i.value]])]))}}),AM={class:"flex items-center gap-2 w-full"},_M=["min","max","step","disabled"],TM=["value","min","max","step","disabled"],Sf=s.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(n,{emit:e}){const t=n,{inputClass:r}=Bt(t.style),o=e,i=u=>{const f=Number(u),p=Number(t.min),h=Number(t.max);return Number.isNaN(f)?p:Math.min(h,Math.max(p,f))},l=s.computed({get:()=>i(t.modelValue??t.min),set:u=>o("update:modelValue",i(u))}),a=u=>{const f=u.target,p=i(f.value);f.value=String(p),o("update:modelValue",p)},c=u=>{Number(t.min)>=0&&u.key==="-"&&u.preventDefault()},d=s.computed(()=>!!t.disabled);return(u,f)=>(s.openBlock(),s.createElementBlock("div",AM,[s.withDirectives(s.createElementVNode("input",{type:"range","onUpdate:modelValue":f[0]||(f[0]=p=>l.value=p),min:u.min,max:u.max,step:u.step,disabled:d.value,ref:"range",class:s.normalizeClass(["w-full cursor-pointer accent-blue-500",[u.modelValue?"":"text-opacity-50",s.unref(r)].join(" ")])},null,10,_M),[[s.vModelText,l.value]]),s.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2 max-w-[100px]",type:"number",value:l.value,min:u.min,max:u.max,step:u.step,onInput:a,onKeydown:c,disabled:d.value},null,40,TM)]))}}),BM=["placeholder","disabled","name"],NM=["type","value","onInput","placeholder","disabled"],DM=["onClick"],Ef=s.defineComponent({__name:"vs-input-array",props:s.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(n){const e=n,t=s.ref(e.count),r=s.computed(()=>e.limit),{inputClass:o}=Bt(e.style),i=s.useModel(n,"modelValue"),l=s.computed(()=>!!e.disabled),a=s.computed(()=>e.placeholder??"");s.watchEffect(()=>{const g=i.value?.length??0;g<t.value&&(i.value=[...i.value??[],...Array(t.value-g)])});const c=s.ref({}),d=s.ref({});function u(g,y){g&&(c.value[y]=g)}async function f(g,y){if(!g||e.inputType!=="mask")return;const{default:b}=await Promise.resolve().then(()=>xi);d.value[y]&&d.value[y].destroy(),d.value[y]=b(g,{mask:e.mask||"",definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},lazy:!1}),d.value[y].on("accept",()=>{const w=[...i.value||[]];w[y]=e.unmask?d.value[y].unmaskedValue:d.value[y].value,i.value=w}),d.value[y].on("complete",()=>{const w=[...i.value||[]];w[y]=e.unmask?d.value[y].unmaskedValue:d.value[y].value,i.value=w}),i.value?.[y]&&(d.value[y].value=i.value[y])}function p(g,y){if(l.value)return;const b=g.target.value??null,w=[...i.value];w[y]=e.inputType==="text"?b:Number(b),i.value=w}function h(){t.value+=1;const g=e.inputType==="text"||e.inputType==="mask"?null:0;i.value=[...i.value,g],e.inputType==="mask"&&setTimeout(()=>{const y=t.value-1;c.value[y]&&f(c.value[y],y)},0)}function m(g){if(t.value>1){d.value[g]&&(d.value[g].destroy(),delete d.value[g]),t.value-=1,i.value=i.value.filter((b,w)=>w!==g);const y={};Object.keys(d.value).forEach(b=>{const w=parseInt(b,10);w>g?y[w-1]=d.value[w]:w<g&&(y[w]=d.value[w])}),d.value=y}}return s.onMounted(()=>{if(e.inputType==="mask")for(let g=0;g<t.value;g+=1)c.value[g]&&f(c.value[g],g)}),s.onBeforeUnmount(()=>{Object.values(d.value).forEach(g=>{g&&g.destroy()})}),s.watch(()=>e.mask,g=>{e.inputType==="mask"&&Object.values(d.value).forEach(y=>{y&&y.updateOptions({mask:g,definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}})})}),s.watch(i,g=>{e.inputType==="mask"&&g&&g.forEach((y,b)=>{d.value[b]&&d.value[b].value!==y&&(d.value[b].value=y||"")})},{deep:!0}),(g,y)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["grid gap-2",`grid-cols-${r.value}`])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(t.value,b=>(s.openBlock(),s.createElementBlock("div",{key:b,class:"flex items-center gap-2 w-full"},[g.inputType==="mask"?(s.openBlock(),s.createElementBlock("input",{key:0,type:"text",ref_for:!0,ref:w=>u(w,b-1),placeholder:g.placeholder,disabled:g.disabled,name:`${g.name}[${b-1}]`,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(o),{"!border-red-600":g.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,BM)):(s.openBlock(),s.createElementBlock("input",{key:1,type:g.inputType,value:i.value?.[b-1],onInput:w=>p(w,b-1),placeholder:a.value,disabled:l.value,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(o),{"!border-red-600":g.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,NM)),!g.disabled&&b===t.value&&g.isAdded?(s.openBlock(),s.createElementBlock("button",{key:2,type:"button",onClick:s.withModifiers(h,["stop"]),class:"cursor-pointer shrink-0 w-[38px] text-green-600 h-[38px] rounded-md flex items-center justify-center border border-stone-200 hover:bg-stone-100"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"})])):s.createCommentVNode("",!0),!g.disabled&&t.value>1&&g.isAdded?(s.openBlock(),s.createElementBlock("button",{key:3,type:"button",onClick:s.withModifiers(w=>m(b-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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,DM)):s.createCommentVNode("",!0)]))),128))],2))}}),VM={class:"flex gap-1 w-full"},$M=["aria-expanded","data-focus"],LM=["placeholder","disabled","readonly"],IM={class:"max-h-full"},OM=["onClick","disabled"],RM={key:0,class:"px-3 py-2 text-sm text-stone-500"},FM=["disabled"],PM={class:"flex flex-col gap-1"},zM=["onDragstart","onDrop"],HM=["disabled"],jM=["title"],UM=["disabled","onClick","aria-label"],WM={key:0,class:"text-xs text-stone-500"},pi=Be(s.defineComponent({__name:"vs-input-array-select",props:s.mergeModels({options:{default:()=>[]},data:{default:""},api:{default:""},prefix:{default:"api"},host:{default:""},parent:{},search:{type:Boolean,default:!0},maxHeight:{default:280},start:{default:0},slot:{},disabled:{type:Boolean,default:!1},add:{},style:{},customClass:{},modelValue:{},error:{},name:{},placeholder:{default:"Оберіть значення"},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:s.mergeModels(["change","update:modelValue","value-selected"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=e,o=s.useModel(n,"modelValue"),i=s.ref([]),l=s.ref(t.options??[]),a=s.ref({}),c=s.ref({}),d=s.ref({keyword:"",parent:null}),u=s.ref(""),f=s.ref(!1),p=s.ref(null),h=s.ref(null),m=s.ref(null),g=s.ref(null),y=s.ref(null),b=s.ref({});let w=!1,v=!1;const S=s.inject("values"),N=s.computed(()=>!!t.disabled),F=s.computed(()=>t.placeholder??"Оберіть значення"),T=s.computed(()=>t.search!==!1),E=s.computed(()=>{const M=t.parent??t.parentValue;return M?String(M):""}),_=s.computed(()=>E.value?S?.value?.[E.value]??null:null),A=M=>M==null?"__null__":String(M),I=M=>{if(!M)return"";const D=M.label??M.text??M.name??M.ua??M.en;return D?String(D):M.id!==void 0&&M.id!==null?String(M.id):""},U=M=>{const D=A(M);return c.value[D]||(c.value[D]=`array-select-${D}-${Math.random().toString(36).slice(2,8)}`),c.value[D]},Z=s.computed(()=>new Set(i.value.map(M=>A(M.id)))),V=s.computed(()=>{const M=Z.value;let D=[...l.value];if(!t.data&&u.value.trim()){const H=u.value.toLowerCase();D=D.filter(te=>I(te).toLowerCase().includes(H))}return D.filter(H=>!M.has(A(H.id)))}),z=()=>{if(!t.data)return"";const M=t.prefix??"api",D=t.api??`/${M}/suggest/${t.data}`;return`${t.host??""}${D}`},oe=()=>{i.value.length&&(w=!0,i.value=i.value.map(M=>({...M,text:a.value[A(M.id)]??M.text})))},K=M=>{const D=A(M.id),H=I(M);H&&(a.value[D]=H)},G=M=>{l.value=M?[...M]:[],M?.forEach(K),oe()},X=M=>{if(!M.length)return;const D=new Map(l.value.map(H=>[A(H.id),H]));M.forEach(H=>{const te=A(H.id);D.set(te,H),K(H)}),l.value=Array.from(D.values()),oe()},ce=async(M="")=>{if(!t.data)return[];const D=z();if(!D)return[];const H=new URLSearchParams;H.set("json","1"),M&&H.set("key",M),t.start===1&&H.set("start","1"),_.value!==null&&_.value!==void 0&&_.value!==""&&H.set("parent",String(_.value));try{return(await(await fetch(`${D}?${H.toString()}`)).json())?.data??[]}catch{return[]}},j=async M=>{if(!t.data||!M.length)return[];const D=z();if(!D)return[];const H=Array.from(new Set(M.map(we=>A(we)))),te=new URLSearchParams;te.set("json","1"),te.set("val",H.join(",")),t.start===1&&te.set("start","1"),_.value!==null&&_.value!==void 0&&_.value!==""&&te.set("parent",String(_.value));try{const Re=(await(await fetch(`${D}?${te.toString()}`)).json())?.data??[];return X(Re),Re}catch{return[]}},L=async M=>{if(M==null||M==="")return null;const D=A(M),H=l.value.find(we=>A(we.id)===D);if(H)return H;const[te]=await j([M]);return te??null},O=async(M="",{force:D=!1}={})=>{if(!t.data)return;const H=_.value??null;if(!D&&d.value.keyword===M&&d.value.parent===H&&l.value.length>0)return;d.value={keyword:M,parent:H};const we=await ce(M);G(we)},ae=((M,D=200)=>{let H;return(...te)=>{H&&clearTimeout(H),H=setTimeout(()=>M(...te),D)}})(async M=>{t.data&&await O(M,{force:!0})},250),re=s.ref(null),he=()=>{if(!m.value)return;const M=m.value.getBoundingClientRect(),D=window.innerHeight??document.documentElement.clientHeight,H=window.innerWidth??document.documentElement.clientWidth,te=8,we=8,tt=t.maxHeight??280,Re=D-M.bottom-we-te,St=M.top-we-te,cn=Re>=St,tn=Math.max(H-te*2,0);let{width:Le}=M;tn>0&&Le>tn&&(Le=tn);let{left:$t}=M;$t+Le+te>H&&($t=H-Le-te),$t=Math.max($t,te);const wo=Math.min(tt,Math.max(cn?Re:St,50));b.value={position:"fixed",left:`${$t}px`,width:`${Le}px`,maxHeight:`${wo}px`,transform:cn?"none":"translateY(-100%)",top:cn?`${M.bottom+we}px`:`${M.top-we}px`}},Ae=async(M="click")=>{N.value||f.value||(re.value=M,await O(u.value.trim()),f.value=!0,await s.nextTick(),he(),y.value?.focus())},Ce=()=>{f.value=!1,re.value=null,s.nextTick(()=>{y.value?.blur()})},$e=async M=>{if(M.stopPropagation(),!N.value){if(f.value){if(re.value==="focus"){re.value=null;return}Ce();return}await Ae("click")}},it=M=>{M.key==="Escape"&&Ce()},Fe=M=>{if(!f.value)return;const D=M.target;g.value?.contains(D)||Ce()},Qe=M=>{const D=M.target;h.value?.contains(D)||g.value?.contains(D)||Ce()},We=M=>{if(M.key==="Escape"){M.preventDefault(),Ce();return}if(M.key==="Enter"){M.preventDefault();const D=V.value[0];D&&se(D)}},se=M=>{if(!M)return;const D=A(M.id);if(Z.value.has(D))return;K(M);const H={id:M.id,text:I(M)||String(M.id??""),key:U(M.id)};i.value=[...i.value,H],me(M),u.value="",s.nextTick(()=>{y.value?.focus()})},me=M=>{const D=i.value.map(H=>H.id);r("value-selected",{name:t.name,value:D,option:M})},Ee=M=>{if(N.value)return;const D=i.value.filter(H=>A(H.id)!==A(M));i.value=D},{isOpenAdd:Me,addData:Ye,addSchema:Ct,addForm:et,addTitle:Xe,addOption:ft,onAddValue:Vt}=nf({props:t,fetchOptionByValue:L,optionsList:l,selectedOption:s.ref(null),modelValue:o,onCreated:async(M,D)=>{const H=M??await L(D),te=H?.id??D;Z.value.has(A(te))||(H&&K(H),i.value=[...i.value,{id:te,text:H?I(H):String(te),key:U(te)}],me(H??null))}}),W=M=>{N.value||(p.value=M)},ee=M=>{if(N.value||p.value===null||p.value===M)return;const D=[...i.value],[H]=D.splice(p.value,1);D.splice(M,0,H),p.value=null,i.value=D},ue=async()=>{const D=(Array.isArray(o.value)?[...o.value]:[]).filter(te=>te!=null);if(t.data&&D.length){const te=D.filter(we=>!a.value[A(we)]);te.length&&await j(te)}const H=D.map(te=>({id:te,text:a.value[A(te)]??String(te),key:U(te)}));w=!0,i.value=H};s.watch(i,M=>{if(w){w=!1;return}const D=M.map(H=>H.id);v=!0,o.value=D,r("change",D)},{deep:!0}),s.watch(o,()=>{if(v){v=!1;return}ue()},{deep:!0}),s.watch(u,M=>{!t.data||!f.value||ae(M.trim())}),s.watch(N,M=>{M&&Ce()}),s.watch(()=>t.options,async M=>{t.data||(G(M??[]),await ue())},{immediate:!0,deep:!0}),s.watch(()=>t.data,async M=>{M&&(await O(u.value.trim()),await ue())},{immediate:!0});const R=s.ref(!1);return s.watch(_,async()=>{if(t.data){if(!R.value){R.value=!0;return}i.value=[],await O(u.value.trim()),await ue()}}),s.onMounted(async()=>{document.addEventListener("click",Qe,!0),window.addEventListener("keydown",it),window.addEventListener("scroll",Fe,!0),await ue()}),s.onUnmounted(()=>{document.removeEventListener("click",Qe,!0),window.removeEventListener("keydown",it),window.removeEventListener("scroll",Fe,!0)}),(M,D)=>(s.openBlock(),s.createElementBlock(s.Fragment,null,[s.createVNode(s.unref(ke.VsModal),{visible:s.unref(Me),"onUpdate:visible":D[1]||(D[1]=H=>s.isRef(Me)?Me.value=H:null),class:"z-[1000]",title:s.unref(Xe),buttonText:"Додати",onDone:s.unref(ft)},{default:s.withCtx(()=>[s.createVNode(Pt,{schema:s.unref(Ct),modelValue:s.unref(Ye),"onUpdate:modelValue":D[0]||(D[0]=H=>s.isRef(Ye)?Ye.value=H:null),ref_key:"addForm",ref:et},null,8,["schema","modelValue"])]),_:1},8,["visible","title","onDone"]),s.createElementVNode("div",{class:"flex flex-col gap-2 w-full",ref_key:"rootRef",ref:h},[s.createElementVNode("div",VM,[s.createElementVNode("div",{class:"relative flex-1",onClick:D[4]||(D[4]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("div",{ref_key:"triggerRef",ref:m,class:s.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)]":"",N.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:$e},[s.withDirectives(s.createElementVNode("input",{ref_key:"inputRef",ref:y,"onUpdate:modelValue":D[2]||(D[2]=H=>u.value=H),placeholder:F.value,disabled:N.value,readonly:!T.value,onFocus:D[3]||(D[3]=()=>Ae("focus")),onKeydown:We,class:"flex-1 bg-transparent border-0 outline-none px-0 py-1 text-sm text-stone-900 placeholder:text-stone-400"},null,40,LM),[[s.vModelText,u.value]]),s.createElementVNode("span",{class:s.normalizeClass(["text-stone-400 transition-transform duration-150",f.value?"rotate-180":""]),"aria-hidden":"true"},[s.createVNode(s.unref(Y.ChevronDown),{class:"h-4 w-4"})],2)],10,$M),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[s.createVNode(s.Transition,{name:"fade"},{default:s.withCtx(()=>[f.value?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:g,class:"fixed z-[3000] rounded-md border border-stone-200 bg-white shadow-lg overflow-auto",style:s.normalizeStyle(b.value)},[s.createElementVNode("div",IM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(V.value,H=>(s.openBlock(),s.createElementBlock("button",{key:A(H.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:s.withModifiers(te=>se(H),["stop"]),disabled:N.value},s.toDisplayString(I(H)),9,OM))),128)),V.value.length===0?(s.openBlock(),s.createElementBlock("p",RM," Немає варіантів ")):s.createCommentVNode("",!0)])],4)):s.createCommentVNode("",!0)]),_:1})]))]),t.add?(s.openBlock(),s.createElementBlock("button",{key:0,onClick:D[5]||(D[5]=(...H)=>s.unref(Vt)&&s.unref(Vt)(...H)),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:N.value,type:"button"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),D[8]||(D[8]=s.createElementVNode("span",null,"Додати",-1))],8,FM)):s.createCommentVNode("",!0)]),s.createElementVNode("div",PM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.value,(H,te)=>(s.openBlock(),s.createElementBlock("div",{key:H.key,class:s.normalizeClass(["flex items-center gap-2 rounded-md border border-stone-200 bg-white px-2 py-2",{"opacity-60":p.value===te}]),draggable:"true",onDragstart:we=>W(te),onDragover:D[6]||(D[6]=s.withModifiers(()=>{},["prevent"])),onDrop:we=>ee(te),onDragend:D[7]||(D[7]=we=>p.value=null)},[s.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:N.value,"aria-label":"Перетягнути"},[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})],8,HM),s.createElementVNode("div",{class:"flex-1 text-sm text-stone-900",title:H.text},s.toDisplayString(H.text),9,jM),s.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:N.value,onClick:s.withModifiers(we=>Ee(H.id),["stop"]),"aria-label":`Видалити ${H.text}`},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,UM)],42,zM))),128)),i.value.length===0?(s.openBlock(),s.createElementBlock("p",WM,"Немає вибраних значень")):s.createCommentVNode("",!0)])],512)],64))}}),[["__scopeId","data-v-da4b4da7"]]),KM={class:"flex items-center gap-2 w-full"},qM={class:"relative flex-1"},GM=["placeholder","disabled","onKeydown"],JM=["disabled"],YM={key:0,class:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/50"},XM={class:"bg-white text-gray-900 rounded-lg shadow-lg w-[480px] max-h-[80vh] overflow-y-auto"},ZM={class:"p-3 border-b font-semibold text-gray-900 flex justify-between items-center"},QM=["onClick"],e2={key:0,class:"p-4 text-sm text-gray-500"},Mf=s.defineComponent({__name:"vs-input-address",props:s.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:s.mergeModels(["update:modelValue","update:geom"],["update:modelValue"]),setup(n,{emit:e}){const t=/{{\s*([^}]+?)\s*}}/g,r=n,o=e,{inputClass:i}=Bt(r.style),l=s.useModel(n,"modelValue"),a=s.computed({get:()=>l.value,set:T=>{l.value=T}}),c=s.ref(!1),d=s.ref([]),u=s.ref(!1),f=s.ref(null);s.watch(u,T=>{typeof document>"u"||(T?(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"))}),s.onBeforeUnmount(()=>{typeof document>"u"||(f.value!=null?document.body.style.overflow=f.value:document.body.style.removeProperty("overflow"))});const p=s.computed(()=>r.placeholder??""),h=s.computed(()=>!!r.disabled),m=T=>{if(!T)return null;if(Array.isArray(T))return T;if(typeof T=="string"){const E=T.split(",").map(_=>_.trim()).filter(Boolean);return E.length!==4?null:E.map(Number)}return null},g=s.computed(()=>{const T=m(r.bbox);if(!T||T.length!==4)return null;const E=T.map(Number);return E.some(_=>Number.isNaN(_))?null:E}),y=s.computed(()=>{const T=g.value;if(!T)return"";const[E,_,A,I]=T;return`${E},${Math.max(_,I)},${A},${Math.min(_,I)}`});s.computed(()=>y.value?"1":"0");const b=s.inject("values");function w(){!h.value&&a.value.trim()&&v()}async function v(){const T=(a.value||"").trim();if(!T)return;let E=T;if(r.includes?.length&&b?.value){const A=r.includes.map(I=>b.value?.[I]).filter(Boolean);A.length&&(E=`${A.join(", ")}, ${T}`)}const _=F(E);if(_){c.value=!0;try{const I=await(await fetch(_)).json();d.value=Array.isArray(I)?I:[],u.value=!0}catch(A){console.error("Address search error:",A)}finally{c.value=!1}}}function S(){u.value=!u.value}function N(T){if(!T)return;u.value=!1;const E=parseFloat(T.lat),A={type:"Point",coordinates:[parseFloat(T.lon),E]};r.geom&&b?.value&&(b.value[r.geom]=A),o("update:geom",A)}function F(T){if(!r.api)return"";const E={value:encodeURIComponent(T),bbox:g.value?g.value.join(","):""};return r.api.replace(t,(_,A)=>E[A.trim()]??"")}return(T,E)=>(s.openBlock(),s.createElementBlock("div",KM,[s.createElementVNode("div",qM,[s.withDirectives(s.createElementVNode("input",{type:"text","onUpdate:modelValue":E[0]||(E[0]=_=>a.value=_),placeholder:p.value,disabled:h.value,class:s.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",[s.unref(i),{"!border-red-600":r.error}]]),style:{border:"1px solid #CFD9E0"},onKeydown:s.withKeys(s.withModifiers(w,["prevent"]),["enter"])},null,42,GM),[[s.vModelText,a.value]]),d.value.length?(s.openBlock(),s.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:S,title:"Show search results"},[s.createVNode(s.unref(Y.Info),{class:"h-4 w-4"})])):s.createCommentVNode("",!0)]),s.createElementVNode("button",{type:"button",onClick:v,class:"flex items-center justify-center px-2 py-2 border rounded-md bg-white hover:bg-gray-50 text-gray-600 hover:text-blue-600 disabled:opacity-50 h-[38px]",disabled:c.value||!a.value?.trim()},[c.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:1,class:"h-5 w-5 animate-spin text-gray-400"})):(s.openBlock(),s.createBlock(s.unref(Y.Search),{key:0,class:"h-4 w-4"}))],8,JM),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[u.value?(s.openBlock(),s.createElementBlock("div",YM,[s.createElementVNode("div",XM,[s.createElementVNode("div",ZM,[E[2]||(E[2]=s.createElementVNode("span",null,"Результати пошуку",-1)),s.createElementVNode("button",{class:"text-gray-500 hover:text-blue-600",onClick:E[1]||(E[1]=_=>u.value=!1),title:"Close"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})])]),s.createElementVNode("ul",null,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(d.value,(_,A)=>(s.openBlock(),s.createElementBlock("li",{key:A,onClick:I=>N(_),class:"px-3 py-2 cursor-pointer hover:bg-gray-100 border-b text-sm"},s.toDisplayString(_.display_name),9,QM))),128))]),d.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("div",e2," Не знайдено результатів "))])])):s.createCommentVNode("",!0)]))]))}}),t2={class:"vs-datalist space-y-3"},n2={class:"space-y-3"},r2=["onClick","disabled"],o2={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},s2=["disabled"],i2=Be(s.defineComponent({__name:"vs-input-datalist",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.computed(()=>Array.isArray(t.value)?t.value:[]),o=s.ref([]),i=s.computed(()=>e.schema?.map(y=>({...y,disabled:e.disabled||y.disabled}))??[]),l=s.computed(()=>i.value.map(y=>g(y))),a=s.computed(()=>i.value.reduce((b,w)=>{const v=Number(w?.col??12);return b+(Number.isFinite(v)&&v>0?v:12)},0)>12),c=s.computed(()=>e.disabled?!1:e.maxItems?r.value.length<e.maxItems:!0),d=s.computed(()=>e.disabled||r.value.length<=(e.minItems||0));s.watch(()=>r.value.length,()=>{u(),f()},{immediate:!0}),s.watch(()=>e.schema,f,{immediate:!0,deep:!0});function u(){const y=r.value.length;o.value.length<y?o.value=[...o.value,...Array.from({length:y-o.value.length},()=>Va())]:o.value.length>y&&o.value.splice(y)}function f(){if(!e.minItems||r.value.length>=e.minItems)return;const y=e.minItems-r.value.length,b=Array.from({length:y},p);t.value=[...r.value,...b]}function p(){const y={};return i.value.forEach(b=>{y[b.name]=b?.default??null}),y}function h(){c.value&&(t.value=[...r.value,p()],u())}function m(y){d.value||(t.value=r.value.filter((b,w)=>w!==y),u(),f())}function g(y){return{...y}}return(y,b)=>(s.openBlock(),s.createElementBlock("div",t2,[s.createElementVNode("div",n2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:o.value[v],class:s.normalizeClass(["flex items-center gap-3 rounded-lg transition-colors",{"border border-gray-300 p-2":a.value}])},[s.createVNode(Pt,{schema:l.value,layout:"inline",navigation:!1,values:r.value[v],"onUpdate:values":S=>r.value[v]=S,"form-id":o.value[v]},null,8,["schema","values","onUpdate:values","form-id"]),s.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:S=>m(v),disabled:d.value},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,r2)],2))),128)),r.value.length===0?(s.openBlock(),s.createElementBlock("div",o2,s.toDisplayString(e.emptyLabel),1)):s.createCommentVNode("",!0)]),s.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},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(e.addButtonText),1)],8,s2)]))}}),[["__scopeId","data-v-d0065868"]]),l2={class:"vs-dataform space-y-4"},a2=["draggable","onDragstart","onDragover","onDragenter","onDrop"],c2={class:"flex items-center gap-2"},d2=["onClick"],u2={class:"text-sm font-medium text-gray-700"},f2={class:"flex items-center gap-2"},p2=["title","onClick","disabled"],h2=["title","onClick","disabled"],m2={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},g2=["disabled"],y2=Be(s.defineComponent({__name:"vs-input-dataform",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref([]),o=s.ref([]),i=s.ref(0),l=s.ref(null),a=s.ref(null),c=s.ref(null),d=s.computed(()=>e.groupLabel??"Group"),u=s.computed(()=>e.emptyLabel??"Ще немає груп"),f=s.computed(()=>e.schema?.map(O=>({...O,disabled:e.disabled||O.disabled}))??[]),p=s.computed(()=>f.value.map(O=>_(O))),h=s.computed(()=>e.view==="accordion"),m=s.computed(()=>!!(e.collapsible||h.value)),g=s.computed(()=>e.draggable!==!1),y=s.computed(()=>e.disabled?!1:e.maxGroups?t.value.length<e.maxGroups:!0),b=s.computed(()=>e.disabled||t.value.length<=(e.minGroups||0));s.watch(()=>t.value.length,()=>{w(),v(),S()},{immediate:!0}),s.watch(()=>e.schema,S,{immediate:!0,deep:!0}),s.watch(()=>e.view,()=>{v()},{immediate:!0});function w(){const O=t.value.length;r.value.length<O?r.value=[...r.value,...Array.from({length:O-r.value.length},()=>Va())]:r.value.length>O&&r.value.splice(O)}function v(){const O=t.value.length;h.value?O===0?i.value=-1:i.value>=O?i.value=O-1:i.value<0&&(i.value=0):o.value.length<O?o.value=[...o.value,...Array.from({length:O-o.value.length},()=>!1)]:o.value.length>O&&o.value.splice(O)}function S(){if(!e.minGroups||t.value.length>=e.minGroups)return;const O=e.minGroups-t.value.length,ne=Array.from({length:O},N);t.value=[...t.value,...ne],v()}function N(){const O={};return f.value.forEach(ne=>{O[ne.name]=ne?.default??null}),O}function F(){y.value&&(t.value=[...t.value,N()],w(),v())}function T(O){b.value||(t.value=t.value.filter((ne,ae)=>ae!==O),w(),h.value?i.value>=t.value.length&&(i.value=t.value.length-1):o.value.splice(O,1),S())}function E(O){if(e.disabled)return;const ne=JSON.parse(JSON.stringify(t.value[O]??{}));t.value=[...t.value.slice(0,O+1),ne,...t.value.slice(O+1)],w(),h.value?i.value>O&&(i.value+=1):o.value.splice(O+1,0,o.value[O]??!1)}function _(O){return{...O}}function A(O){return h.value?i.value===-1&&O===0?!1:i.value!==O:!!o.value[O]}function I(O){if(m.value){if(h.value){i.value=O;return}o.value[O]=!o.value[O]}}function U(O,ne){if(!g.value||e.disabled){ne.preventDefault();return}l.value=O,a.value=O,c.value={groups:JSON.parse(JSON.stringify(t.value)),keys:[...r.value],states:[...o.value]},ne.dataTransfer?.setData("text/plain",String(O)),ne.dataTransfer?.setDragImage?.(ne.currentTarget,0,0)}function Z(O,ne){!g.value||e.disabled||l.value!==null&&X(O,ne)}function V(O,ne){X(O,ne)}function z(O){!g.value||e.disabled||L()}function oe(){c.value&&G(),l.value=null,a.value=null,c.value=null}function K(O,ne){const ae=[...t.value],[re]=ae.splice(O,1);ae.splice(ne,0,re),t.value=ae;const he=[...r.value],[Ae]=he.splice(O,1);if(he.splice(ne,0,Ae),r.value=he,h.value)i.value===O&&(i.value=ne);else{const Ce=[...o.value],[$e]=Ce.splice(O,1);Ce.splice(ne,0,$e),o.value=Ce}}function G(){c.value&&(t.value=c.value.groups,r.value=c.value.keys,o.value=c.value.states,c.value=null,a.value=null)}function X(O,ne){if(l.value===null)return;const ae=ce(O,ne);a.value=ae,j(ae)}function ce(O,ne){if(!ne?.currentTarget)return O;const ae=ne.currentTarget.getBoundingClientRect(),he=ne.clientY-ae.top>ae.height/2?O+1:O;return Math.max(0,Math.min(he,t.value.length))}function j(O){const ne=l.value;if(ne===null)return;let ae=O;if(ae>t.value.length&&(ae=t.value.length),ae===ne||ae===ne+1)return;const re=ae>ne?ae-1:ae;K(ne,re),l.value=re,a.value=ae>ne?re+1:re}function L(){c.value=null,l.value=null,a.value=null}return(O,ne)=>(s.openBlock(),s.createElementBlock("div",l2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(t.value,(ae,re)=>(s.openBlock(),s.createElementBlock("div",{key:r.value[re],class:s.normalizeClass(["relative border border-gray-200 rounded-lg bg-white transition vs-dataform__group",[e.view==="accordion"?"overflow-hidden":A(re)?"pt-6 px-6":"p-6"]]),draggable:g.value&&!e.disabled,onDragstart:he=>U(re,he),onDragend:oe,onDragover:s.withModifiers(he=>Z(re,he),["prevent"]),onDragenter:s.withModifiers(he=>V(re,he),["prevent"]),onDrop:s.withModifiers(he=>z(),["prevent"])},[s.createElementVNode("div",{class:s.normalizeClass(["flex items-center justify-between gap-2 border-b border-gray-100 px-4 py-3",[e.view!=="accordion"?"-mx-6 -mt-6 px-6":"",e.view!=="accordion"&&!A(re)?"rounded-t-lg":"rounded-lg"]])},[s.createElementVNode("div",c2,[g.value?(s.openBlock(),s.createBlock(s.unref(Y.GripVertical),{key:0,class:"h-4 w-4 text-gray-400","aria-hidden":"true"})):s.createCommentVNode("",!0),m.value?(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",class:"rounded-full p-1 text-gray-500 transition hover:bg-gray-100",onClick:he=>I(re)},[s.createVNode(s.unref(Y.ChevronDown),{class:s.normalizeClass(["h-4 w-4 transition",A(re)?"-rotate-90":"rotate-0"])},null,8,["class"])],8,d2)):s.createCommentVNode("",!0),s.createElementVNode("div",u2,s.toDisplayString(`${d.value} (${re+1})`),1)]),s.createElementVNode("div",f2,[s.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:e.duplicateTitle,onClick:he=>E(re),disabled:e.disabled,draggable:"false"},[s.createVNode(s.unref(Y.Copy),{class:"h-4 w-4"})],8,p2),s.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:e.removeTitle,onClick:he=>T(re),disabled:b.value,draggable:"false"},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,h2)])],2),s.withDirectives(s.createElementVNode("div",{class:s.normalizeClass(e.view==="accordion"?"p-6":"pt-6")},[s.createVNode(Pt,{class:"vs-dataform__form",schema:p.value,layout:"inline",navigation:!1,values:t.value[re],"onUpdate:values":he=>t.value[re]=he,"form-id":r.value[re],disabled:e.disabled},null,8,["schema","values","onUpdate:values","form-id","disabled"])],2),[[s.vShow,!A(re)]])],42,a2))),128)),t.value.length===0?(s.openBlock(),s.createElementBlock("div",m2,s.toDisplayString(u.value),1)):s.createCommentVNode("",!0),s.createElementVNode("button",{type:"button",class:"flex items-center gap-2 text-gray-600 hover:text-gray-900 font-medium transition-colors text-sm",onClick:F,disabled:!y.value},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(e.addButtonText),1)],8,g2)]))}}),[["__scopeId","data-v-cfbcfed8"]]),hi="__vs_form_monaco_loader__",wr="__vs_form_monaco_script_loader__",mi="__vs_form_monaco_editor_loader__",Fa=s.defineComponent({__name:"vs-input-monaco",props:s.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(n,{expose:e}){const t=n,r=s.useModel(n,"modelValue"),o=s.ref(null),i=s.computed(()=>typeof t.height=="number"?`${t.height}px`:t.height||"280px");let l=null,a=null,c=!1;const d=()=>{if(a)return Promise.resolve(a);if(typeof window>"u")return Promise.resolve(null);const m=window;if(m.monaco?.editor?.create)return a=m.monaco,Promise.resolve(a);if(m[hi])return m[hi];const y=(async()=>{const b=S=>{if(Array.from(document.styleSheets||[]).some(T=>T?.href?.includes(S)))return;const F=document.createElement("link");F.rel="stylesheet",F.href=S,document.head.appendChild(F)},w=S=>{if(m[wr]?.[S])return m[wr][S];m[wr]||={};const N=Array.from(document.scripts).find(F=>F.src===S);return N?(m[wr][S]=new Promise((F,T)=>{const E=N.readyState;if(N.dataset.loaded==="true"||E==="loaded"||E==="complete"){F();return}N.addEventListener("load",()=>{N.dataset.loaded="true",F()},{once:!0}),N.addEventListener("error",_=>T(_),{once:!0})}),m[wr][S]):(m[wr][S]=new Promise((F,T)=>{const E=document.createElement("script");E.src=S,E.async=!0,E.onload=()=>{E.dataset.loaded="true",F()},E.onerror=_=>T(_),document.body.appendChild(E)}),m[wr][S])},v="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs";return b(`${v}/editor/editor.main.min.css`),await w(`${v}/loader.min.js`),m[mi]||(m[mi]=new Promise((S,N)=>{window.require.config({paths:{vs:v}}),window.require(["vs/editor/editor.main"],()=>{a=window.monaco,m.monaco=a,S(a)},F=>N(F))}).catch(S=>{throw delete m[mi],S})),m[mi]})().catch(b=>{throw delete m[hi],b});return m[hi]=y,y},u=()=>{!o.value||!a||(l&&(l.dispose(),l=null),l=a.editor.create(o.value,{value:r.value||"",language:t.syntax,theme:t.theme,automaticLayout:!0,minimap:{enabled:!!t.minimap},readOnly:!!t.disabled}),l.onDidChangeModelContent(()=>{c||(r.value=l.getValue())}))},f=()=>{l?.focus()},p=()=>l,h=()=>a;return s.watch(()=>r.value,m=>{if(!l)return;const g=l.getValue();m!==g&&(c=!0,l.setValue(m||""),c=!1)}),s.watch(()=>t.syntax,m=>{!l||!a||a.editor.setModelLanguage(l.getModel(),m||"xml")}),s.watch(()=>t.theme,m=>{a&&a.editor.setTheme(m||"vs-light")}),s.watch(()=>t.disabled,m=>{l&&l.updateOptions({readOnly:!!m})}),s.watch(()=>t.minimap,m=>{l&&l.updateOptions({minimap:{enabled:!!m}})}),s.onMounted(async()=>{try{const m=await d();if(!m||!m.editor)return;a=m,u()}catch(m){console.error("Failed to load Monaco editor",m)}}),s.onBeforeUnmount(()=>{l&&(l.dispose(),l=null)}),e({focus:f,getEditor:p,getMonaco:h}),(m,g)=>(s.openBlock(),s.createElementBlock("div",{class:"w-full",style:s.normalizeStyle({height:i.value})},[s.createElementVNode("div",{ref_key:"editorContainer",ref:o,class:"w-full h-full overflow-hidden border border-[#CFD9E0] rounded"},null,512)],4))}}),Af={VsInputText:Yr,VsInputRadio:wa,VsInputInlineSelect:ii,"vs-input-text":Yr,"vs-input-password":Rb,"vs-input-textarea":of,"vs-input-richtext":sf,"vs-input-mask":qs,"vs-input-number":Nu,"vs-input-radio":wa,"vs-input-select":Da,"vs-input-inline-select":ii,"inline-select":ii,"vs-input-switcher":ga,"vs-input-static":ya,"vs-input-container":tf,"vs-input-date":Hu,"vs-input-checkbox":$u,"vs-input-file":Gu,"vs-input-file2":ri,file2:ri,File2:ri,"vs-input-file64":oi,file64:oi,File64:oi,"vs-input-html":ya,"vs-input-email":ba,"vs-input-tel":ka,"vs-input-datatable":lf,"vs-input-map":yf,"vs-input-file-list":Zu,"vs-input-tags":bf,"vs-input-slug":kf,"vs-input-codegen":wf,"vs-input-key-value":xf,"vs-input-text[]":vf,"vs-input-range":Sf,"vs-input-color":Cf,"vs-input-native-select":Da,VsInputArraySelect:pi,"vs-input-array":Ef,"vs-input-array-select":pi,"array-select":pi,"vs-input-address":Mf,"vs-input-datalist":i2,"vs-input-dataform":y2,"vs-input-monaco":Fa},b2=s.defineComponent({__name:"behavior",props:{api:{},set:{},button:{},error:{},value:{}},setup(n){const e=n,t=s.inject("values");function r(i,l){const a=l?.result||l?.message||l?.error||l?.detail;return i.status===400&&typeof a=="string"&&a.trim().toLowerCase()==="not found"?"Дані не знайдено.":i.status===500?"Помилка на сервері.":typeof a=="string"&&a.trim()?a:"При спробі завантажити дані виникла помилка."}async function o(){try{if(!e.api)return;const i=e.api.replace("{{value}}",e.value),l=await fetch(i);if(!l.ok){let c=null;try{c=await l.json()}catch{try{c=await l.text()}catch{c=null}}ke.notify({type:"warning",title:"Validation",message:r(l,c)});return}const a=await l.json();if(!e.set||!t)return;for(const[c,d]of Object.entries(e.set))t.value[c]=a.result[d]}catch(i){console.error(e.error,i)}}return(i,l)=>(s.openBlock(),s.createElementBlock("button",{onClick:o,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"},s.toDisplayString(i.button),1))}}),k2={class:"flex flex-col gap-1 w-full"},w2={class:"w-full"},x2=["disabled"],v2=["innerHTML"],C2=2e3,S2=10,_f=s.defineComponent({__name:"vs-compact-form-layout",props:s.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:s.mergeModels(["value-selected"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=s.useModel(n,"modelValue"),o=e,i=s.computed(()=>Ib[`${t.layout}`]),l=["label","placeholder","info","description","text","html"],a=s.ref(U()),c=s.computed(()=>_(t.item,a.value)),d=s.computed(()=>{const V={...c.value??{}},z=t.item?.name;return z&&f?.value?.[z]&&Object.assign(V,f.value[z]),V.__locale=a.value,V}),u=s.computed(()=>Af?.[`vs-input-${t.item.type}`]),f=s.inject("field-props"),p=s.computed(()=>{const V=s.unref(u);if(!V)return new Set;const z=V.props??V.__vccOpts?.props;if(!z)return new Set;const oe=Array.isArray(z)?z:Object.keys(z);return new Set(oe)}),m=[...["min","max","step"],"api","set","mask","layers"],g=new Set(["name","type","label","ua","col","rules","validators","conditions","schema","hidden","behavior","default","columns","layout","multiple","data","info","description","text","html","view","groupLabel","emptyLabel","minGroups","maxGroups","collapsible","draggable","props","__locale","slot","slots","component"]);function y(V){const z={};Object.entries(V).forEach(([K,G])=>{g.has(K)||K.includes(":")||G!==void 0&&(z[K]=G)});const oe=V.props;return oe&&typeof oe=="object"&&!Array.isArray(oe)&&Object.entries(oe).forEach(([K,G])=>{G!==void 0&&(z[K]=G)}),z}const b=s.computed(()=>{const V={...c.value??{}},z=t.item?.name;z&&f?.value?.[z]&&Object.assign(V,f.value[z]);const oe=p.value;let K;return oe.size?K=Object.fromEntries(Object.entries(V).filter(([G])=>oe.has(G))):K={...V},Object.assign(K,y(V)),m.forEach(G=>{const X=V[G];X!=null&&(K[G]=X)}),K}),w=V=>{const z=typeof V=="object"&&V!==null?V:{value:V};o("value-selected",{...z,name:z.name??t.item?.name})},v=/{{\s*([^}]+?)\s*}}/g,S=s.inject("values"),N=s.ref(!1),F=s.computed(()=>{const V=t.item?.api,z=t.item?.type?.toLowerCase();return typeof V=="string"&&V.trim().length>0&&(z==="text"||z==="mask")});function T(V,z){if(!(V==null||!z))return z.split(".").reduce((oe,K)=>oe?.[K.trim()],V)}async function E(){const V=String(r.value??"").trim();if(!V)return;const z=(t.item?.api??"").trim();if(!z)return;const oe=z.replace(v,(K,G)=>G.trim()==="value"?encodeURIComponent(V):"");N.value=!0;try{let K=await fetch(oe),G=0;for(;K.status===202&&G<S2;)G+=1,await new Promise(O=>{setTimeout(O,C2)}),K=await fetch(oe);if(K.status===202){ke.notify({type:"warning",title:"Validation",message:"Сервер ще обробляє запит. Спробуйте пізніше."});return}if(!K.ok){ke.notify({type:"warning",title:"Validation",message:"При спробі завантажити дані виникла помилка."});return}const X=await K.json(),ce=X?.result!==void 0?X.result:X,j=t.item?.set;if(!j||!S?.value)return;const L=t.item?.name;Object.entries(j).forEach(([O,ne])=>{if(!O)return;let ae=ne;L&&ae.startsWith(`${L}.`)&&(ae=ae.slice(L.length+1));const re=T(ce,ae);S.value[O]=re??null})}catch(K){console.error("API lookup error:",K),ke.notify({type:"warning",title:"Validation",message:"При спробі завантажити дані виникла помилка."})}finally{N.value=!1}}s.onMounted(()=>{a.value=U(),window.addEventListener("storage",Z)}),s.onUnmounted(()=>{window.removeEventListener("storage",Z)});function _(V,z){if(!V)return{};const oe={...V};return l.forEach(K=>{const G=I(V,K,z);G!=null&&(oe[K]=G)}),Array.isArray(V.options)&&(oe.options=V.options.map(K=>A(K,z))),oe}function A(V,z){if(!V)return V;const oe={...V},K=I(V,"label",z),G=I(V,"text",z);return K!=null&&(oe.label=K),G!=null?oe.text=G:K!=null&&(oe.text=K),oe}function I(V,z,oe){const K=`${z}:${oe}`;if(V?.[K]!=null)return V[K];if(z==="label"&&V?.[oe]!=null)return V[oe];if(V?.[z]!=null)return V[z];if(z==="label"){if(V?.ua!=null)return V.ua;if(V?.en!=null)return V.en}if(z==="text"||z==="html"){if(V?.ua!=null)return V.ua;if(V?.en!=null)return V.en}return null}function U(){return typeof window>"u"?"uk":localStorage.getItem("locale")||"uk"}function Z(){a.value=U()}return(V,z)=>(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.value),{ua:d.value.ua,error:t.error||"",item:d.value,columns:t.columns,label:d.value.label},{default:s.withCtx(()=>[s.createElementVNode("div",{class:s.normalizeClass(["flex w-full",`${t.item.type}-component`])},[s.createElementVNode("div",k2,[s.createElementVNode("div",{class:s.normalizeClass(["flex items-center gap-2 w-full",{"flex-1":F.value}])},[s.createElementVNode("div",w2,[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(u.value),s.mergeProps(b.value,{modelValue:r.value,"onUpdate:modelValue":z[0]||(z[0]=oe=>r.value=oe),onValueSelected:w}),null,16,["modelValue"]))]),F.value?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",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] shrink-0",disabled:N.value||!r.value?.toString().trim(),onClick:E},[N.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:1,class:"h-5 w-5 animate-spin text-gray-400"})):(s.openBlock(),s.createBlock(s.unref(Y.Search),{key:0,class:"h-4 w-4"}))],8,x2)):s.createCommentVNode("",!0)],2),d.value.description&&t.layout!=="settings"?(s.openBlock(),s.createElementBlock("p",{key:0,class:"text-sm text-gray-500",innerHTML:d.value.description},null,8,v2)):s.createCommentVNode("",!0)]),d.value.behavior?.api&&d.value.behavior?.button?(s.openBlock(),s.createBlock(b2,s.mergeProps({key:0},d.value.behavior,{value:r.value}),null,16,["value"])):s.createCommentVNode("",!0)],2)]),_:1},8,["ua","error","item","columns","label"]))}}),E2={class:"text-sm text-gray-800 mb-[4px] font-medium dark:text-neutral-300"},M2={class:"vs-compact-form-navigation__rail mt-[6px]"},A2=["onClick"],_2=Be(s.defineComponent({__name:"vs-compact-form-navigation",props:{target:{},scrollContainer:{},title:{default:"Навігація"},enabled:{type:Boolean,default:!0},width:{default:400}},setup(n,{expose:e}){const t=n,r=s.ref([]),o=s.ref(""),i=s.ref(""),l=s.computed(()=>!!t.enabled),a=s.computed(()=>["vs-compact-form-navigation flex flex-col pl-[6px] pt-[8px] pr-[8px]","sticky top-0 self-start shrink-0","max-h-full min-h-0 overflow-y-auto"]),c=s.computed(()=>{const I=t.width;if(I==null)return{};const U=typeof I=="number"?`${I}px`:`${I}`;return{width:U,minWidth:U}});let d=null,u=0,f=0,p=null,h=null,m=null;const g=()=>_(),y=()=>w();s.watch(()=>t.target,async I=>{if(F(),!I){p=null,r.value=[],o.value="";return}p=I,l.value&&(await s.nextTick(),N(I),w())},{immediate:!0}),s.watch(()=>t.scrollContainer,I=>{if(!l.value){h=I??null;return}b(I??null),s.nextTick(()=>w())},{immediate:!0}),s.onMounted(()=>{t.scrollContainer||b(null),w()}),s.onBeforeUnmount(()=>{F(),b(null,!0),p=null,typeof window<"u"&&(u&&window.cancelAnimationFrame(u),f&&window.cancelAnimationFrame(f))});function b(I,U=!1){if(m&&(m(),m=null),U){h=null;return}if(h=I??null,typeof window>"u")return;const Z=I??window,V=window;Z.addEventListener("scroll",g,{passive:!0}),V.addEventListener("resize",y),m=()=>{Z.removeEventListener("scroll",g),V.removeEventListener("resize",y)}}function w(){if(!l.value||!p)return;u&&typeof window<"u"&&window.cancelAnimationFrame(u);const I=()=>{v(),u=0};typeof window>"u"?I():u=window.requestAnimationFrame(I)}function v(){if(!l.value||!p)return;const I=Array.from(p.querySelectorAll("h1, h2")),U=new Set,Z=[];I.forEach((V,z)=>{const oe=V.textContent?.trim()??"";if(!oe)return;let K=(V.getAttribute("id")??"").trim();K||(K=S(oe)||`heading-${z+1}`);let G=K,X=1;for(;U.has(G);)G=`${K}-${X+=1}`;V.id!==G&&Object.assign(V,{id:G}),U.add(G),Z.push({id:G,text:oe,level:V.tagName.toLowerCase()==="h1"?1:2})}),r.value=Z,Z.length||(o.value=""),E()}function S(I){return I.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-")}function N(I){!I||!l.value||typeof MutationObserver>"u"||(F(),d=new MutationObserver(()=>w()),d.observe(I,{childList:!0,subtree:!0}))}function F(){d&&(d.disconnect(),d=null)}function T(I){const U=h;if(!U)return typeof window>"u"?I.offsetTop:I.getBoundingClientRect().top+window.scrollY;const Z=I.getBoundingClientRect(),V=U.getBoundingClientRect();return Z.top-V.top+U.scrollTop}function E(){if(!l.value||!r.value.length)return;const I=h,U=(I?I.scrollTop:null)||(typeof window<"u"?window.scrollY:0),Z=(I?I.clientHeight:null)||(typeof window<"u"?window.innerHeight:0),V=U+Z;let z=null;for(let K=0;K<r.value.length;K+=1){const G=r.value[K],X=document.getElementById(G.id);if(X){const ce=T(X);ce+X.offsetHeight>U&&ce<V&&(z=G.id)}}!z&&i.value&&(z=i.value),z&&(i.value=z);const oe=I?I.scrollHeight-I.clientHeight:document.documentElement.scrollHeight-window.innerHeight;U+5>=oe&&(z=r.value[r.value.length-1].id),z&&(o.value=z)}function _(){l.value&&(f&&window.cancelAnimationFrame(f),f=window.requestAnimationFrame(()=>{E(),f=0}))}function A(I){if(!l.value)return;const U=document.getElementById(I);if(!U)return;const Z=h,V=Math.max(0,T(U));Z?Z.scrollTo({top:V,behavior:"smooth"}):typeof window<"u"&&window.scrollTo({top:V,behavior:"smooth"})}return e({refresh:w}),(I,U)=>l.value&&r.value.length?(s.openBlock(),s.createElementBlock("div",{key:0,class:s.normalizeClass(a.value),style:s.normalizeStyle(c.value)},[s.createElementVNode("h2",E2,s.toDisplayString(I.title),1),s.createElementVNode("div",M2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,Z=>(s.openBlock(),s.createElementBlock("div",{key:Z.id,class:s.normalizeClass(["vs-compact-form-navigation__item relative",Z.level===2?"vs-compact-form-navigation__item--nested":"",Z.id===o.value?"vs-compact-form-navigation__item--active":""])},[s.createElementVNode("button",{type:"button",onClick:V=>A(Z.id),class:s.normalizeClass(["vs-compact-form-navigation__button flex gap-x-3 py-[6px] pr-3 text-sm duration-200 hover:text-gray-800",Z.level===2?"pl-[15px]":"pl-[18px]",Z.id===o.value?"text-gray-800":"text-gray-500"])},[s.createElementVNode("span",null,s.toDisplayString(Z.text),1)],10,A2)],2))),128))])],6)):s.createCommentVNode("",!0)}}),[["__scopeId","data-v-1584a562"]]),qt={required:"Це поле є обов’язковим",email:"Неправильний email",tel:"Неправильний телефон",minlength:n=>`Мінімальна довжина — ${n} символів`,maxlength:n=>`Максимальна довжина — ${n} символів`,min:n=>`Значення має бути не менше ${n}`,max:n=>`Значення має бути не більше ${n}`},T2=new Set(["select","inline-select","array-select"]),B2=(n,e)=>typeof n=="string"?n.trim()?!1:qt.required:Array.isArray(n)?n.map(r=>typeof r=="string"?r.trim():r).filter(r=>r!=null&&r!=="").length?!1:qt.required:typeof n=="number"?Number?.isNaN(n)?qt?.required:!1:typeof n=="boolean"?e&&T2.has(e)||n?!1:qt.required:n?!1:qt.required,N2=n=>{const e=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;return n?e.test(n)?!1:qt.email:!1},D2=(n,e)=>{if(!n)return!1;const t=String(n).trim();if(!/^\+[1-9]\d{1,14}$/.test(t))return qt.tel;const i=(typeof e?.digits=="number"&&Number.isFinite(e.digits)&&e.digits>0?e.digits:qn(_n))||qn(_n);return t.length-1!==i?qt.tel:!1},Tf=n=>n==null?0:typeof n=="string"?n.trim().length:Array.isArray(n)?n.length:typeof n=="number"?n.toString().length:String(n).length,V2=(n,e)=>{if(n==null)return!1;const t=Number(e?.value??e?.length);return Number.isFinite(t)&&Tf(n)<t?e?.message||qt.minlength(t):!1},$2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value??e?.length);return Number.isFinite(t)&&Tf(n)>t?e?.message||qt.maxlength(t):!1},gi=n=>{if(typeof n=="number")return n;if(typeof n=="string"){const e=n.trim().replace(",",".");return e?Number(e):Number.NaN}return Number(n)},L2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value);if(!Number.isFinite(t))return!1;const r=gi(n);return Number.isFinite(r)&&r<t?e?.message||qt.min(t):!1},I2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value);if(!Number.isFinite(t))return!1;const r=gi(n);return Number.isFinite(r)&&r>t?e?.message||qt.max(t):!1},O2=(n,e,t)=>{if(n==null||n==="")return!1;const r=e?.field;if(!r||!t)return!1;const o=t[r];if(o==null||o==="")return!1;const i=gi(n),l=gi(o);return!Number.isFinite(i)||!Number.isFinite(l)?!1:i>l?e?.message||`Значення має бути не більше ${l}`:!1},R2=(n,e)=>{const t=e.pattern??e.regexp,r=typeof t=="string"?new RegExp(t):t;if(Array.isArray(n)){const o=n.filter(Boolean);return o.length===0||o.every(i=>r.test(i))?!1:e.message}return!r.test(n)&&n?e.message:!1},F2=(n,e)=>!1,P2=(n,e,t,r)=>{switch(typeof e=="string"?e:e.type){case"required":return B2(n,r);case"email":return N2(n);case"tel":return D2(n,typeof e=="object"?e:void 0);case"regexp":return R2(n,e);case"minlength":return V2(n,e);case"maxlength":return $2(n,e);case"min":return L2(n,e);case"max":return I2(n,e);case"maxField":return O2(n,e,t);case"custom":return F2();default:return!1}},z2={autocomplete:"select",combobox:"select",datepicker:"date",markedtext:"mask",html:"static",geom:"map",filelist:"file-list",file:"file",file64:"file64",dropzone:"file",inlineselect:"inline-select"};function Bf(n){const e=n?.toLowerCase();return z2[e]||e}function Pa(n,e=!1){if(Array.isArray(n)){const r=[];return n.forEach(o=>{const i={...o};if(i.name=(o.name||o.id||o.key||"").toString(),i.type=Bf(o.type),i.label=o.label||o.ua,i.rules=o.rules||o.validators,i.type==="email"&&!i.rules&&(i.rules=["email"]),i.type==="tel"&&!i.rules){const l=i.mask||_n,a=qn(l)||qn(_n);i.rules=[{type:"tel",digits:a}]}o.data&&(i.api=`/api/suggest/${o.data}`),i.disabled=i.disabled??e,Array.isArray(i.schema)&&(i.schema=Pa(i.schema,i.disabled)),r.push(i)}),r}const t=[];return Object.entries(n).forEach(r=>{const o={name:r[0],...r[1],type:Bf(r[1].type),label:r[1].label||r[1].ua,rules:r[1].rules||r[1].validators,disabled:r[1].disabled??e};if(o.type==="email"&&!o.rules&&(o.rules=["email"]),o.type==="tel"&&!o.rules){const i=o.mask||_n,l=qn(i)||qn(_n);o.rules=[{type:"tel",digits:l}]}r[1].type?.includes("list")&&(o.multiple=!0),!o.api&&r[1].data&&(o.api=`/api/suggest/${r[1].data}`),Array.isArray(o.schema)&&(o.schema=Pa(o.schema,o.disabled)),t.push(o)}),t}function H2(n,e,t=!1){const r=s.computed(()=>Pa((Array.isArray(e),e),typeof t=="boolean"?t:t.value)),o=s.ref({});function i(p){return Qu(n?.value,p?.conditions)}const l=new Set(["maxField"]);function a(p){return typeof p.maxField=="string"&&p.maxField?!0:(p.rules||[]).some(h=>{const m=typeof h=="string"?h:h.type;return m?l.has(m):!1})}function c(p){const h=[],m=Number(p?.minlength),g=Number(p?.maxlength),y=Number(p?.min),b=Number(p?.max);!Number.isNaN(m)&&Number.isFinite(m)&&h.push({type:"minlength",value:m}),!Number.isNaN(g)&&Number.isFinite(g)&&h.push({type:"maxlength",value:g}),!Number.isNaN(y)&&Number.isFinite(y)&&h.push({type:"min",value:y}),!Number.isNaN(b)&&Number.isFinite(b)&&h.push({type:"max",value:b}),typeof p?.maxField=="string"&&p.maxField&&h.push({type:"maxField",field:p.maxField,message:p.maxFieldMessage});const w=[...h,...p.rules||[]];if(!w.length)return;if(!i(p)){delete o.value[p.name];return}let v=!1,S=null;w.forEach(N=>{const F=P2(n.value[p.name],N,n.value,p.type);F&&(v=!0,!S&&typeof F=="string"&&(S=F))}),v&&S?o.value[p.name]=S:delete o.value[p.name]}const d=(p=r.value,h=!0)=>(p.forEach(m=>{c(m),m.schema&&d(m.schema,!1)}),h&&Object.values(o.value).some(Boolean)?o.value:null);s.watch(n,()=>{const p=[],h=m=>{m.forEach(g=>{a(g)&&p.push(g),g.schema&&h(g.schema)})};h(r.value),p.forEach(c)},{deep:!0});const u=s.computed(()=>r.value?.filter(p=>p.hidden!==!0&&i(p)));return{errors:o,validate:d,reset:()=>{n.value={},o.value={}},visibleSchema:u}}const j2={class:"flex w-full h-full min-h-0 gap-6"},U2={key:0,"data-orientation":"horizontal",role:"none",class:"mt-1 shrink-0 h-[1px] w-full bg-slate-100 dark:bg-slate-600"},Pt=s.defineComponent({__name:"vs-compact-form",props:s.mergeModels({schema:{default:()=>[]},style:{default:()=>({})},modelValue:{},layout:{default:()=>"default"},formId:{default:()=>""},allowIdField:{type:Boolean,default:!1},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:s.mergeModels(["handle-submit","update:modelValue","value-selected"],["update:form","update:modelValue","update:values"]),setup(n,{expose:e,emit:t}){const r=t,o=n,i=s.computed(()=>!!o.formId||o.allowIdField),l=s.useModel(n,"form"),a=s.useModel(n,"modelValue"),c=s.useModel(n,"values"),d=s.computed({get:()=>c.value??a.value,set:K=>{a.value=K,c.value=K}}),{errors:u,validate:f,reset:p,visibleSchema:h}=H2(d,o.schema,s.toRef(o,"disabled")),m=s.ref(null),g=s.ref(null),y=s.ref({}),b=s.computed(()=>o.navigation),w=s.computed(()=>o.navWidth),v=s.computed(()=>o.style?.columns),S=Object.freeze({container:12,label:3}),N=s.computed(()=>o.columns??v.value??S),F=s.computed(()=>o.columns!=null||v.value!=null),T=s.computed(()=>F.value?"horizontal":o.layout),E=K=>K?.columns?"horizontal":T.value,_=K=>K?.columns??N.value,A=s.computed(()=>{const K={},G=X=>{if(!X)return;(Array.isArray(X)?X.map((j,L)=>({key:String(L),entry:j})):typeof X=="object"?Object.entries(X).map(([j,L])=>({key:j,entry:L})):[]).forEach(({key:j,entry:L})=>{if(!L||typeof L!="object")return;const O=L.name?String(L.name):j;O&&(K[O]={...L,name:O}),Array.isArray(L.schema)&&G(L.schema)})};return G(o.schema),K}),I=()=>{!i.value&&d.value&&delete d.value.id,r("update:modelValue",d.value),f(),r("handle-submit",d.value)},U=K=>{r("value-selected",K)};e({validate:f,reset:p,errors:u}),s.onMounted(()=>{l.value={value:d.value,errors:u.value,reset:p,validate:f,formId:o.formId}});function Z(K,G){if(K===G)return!0;if(typeof K!="object"||typeof G!="object"||!K||!G)return!1;const X=Object.keys(K),ce=Object.keys(G);return X.length!==ce.length?!1:X.every(j=>K[j]===G[j])}function V(K){return Array.isArray(K)?[...K]:K&&typeof K=="object"?{...K}:K}function z(K){Array.isArray(K)&&K.forEach(G=>{if(!G)return;const X=G.name,ce=G.default!==void 0;X&&ce&&d.value[X]===void 0&&(d.value[X]=V(G.default)),Array.isArray(G.schema)&&z(G.schema)})}return s.watch(h,K=>{z(K)},{immediate:!0,deep:!0}),s.provide("form",l),s.provide("values",d),s.inject("form-root-values",null)||s.provide("form-root-values",d),s.provide("field-props",y),s.provide("schema-by-name",A),(K,G)=>(s.openBlock(),s.createElementBlock("div",j2,[s.createElementVNode("div",{class:"flex-1 min-h-0 overflow-y-auto overflow-x-visible",ref_key:"formScrollContainer",ref:g},[s.createElementVNode("form",{ref_key:"formRef",ref:m,onSubmit:s.withModifiers(I,["prevent"]),class:s.normalizeClass(["grid grid-cols-12 p-1",T.value==="default"?"gap-6":"gap-4"])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(h),(X,ce)=>(s.openBlock(),s.createElementBlock("div",{key:X.name,class:s.normalizeClass(E(X)==="horizontal"?"col-span-12":`col-span-12 md:col-span-${X.col||12}`)},[s.createVNode(_f,{style:s.normalizeStyle(K.style),item:X,layout:E(X),columns:_(X),"model-value":d.value[X.name],"onUpdate:modelValue":j=>{if(X.name==="id"&&!i.value)return;const L=d.value[X.name];Z(L,j)||(d.value[X.name]=j)},error:s.unref(u)[X.name],onValueSelected:U},null,8,["style","item","layout","columns","model-value","onUpdate:modelValue","error"]),E(X)==="settings"&&ce+1!==s.unref(h).length?(s.openBlock(),s.createElementBlock("div",U2)):s.createCommentVNode("",!0)],2))),128))],34)],512),s.createVNode(_2,{target:m.value,"scroll-container":g.value,enabled:b.value,width:w.value},null,8,["target","scroll-container","enabled","width"])]))}}),W2={class:"relative"},K2={class:"w-full h-full fixed top-0 start-0 bg-black bg-opacity-50"},q2={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"},G2={class:"py-2.5 px-4 flex justify-between items-center border-0 border-b border-solid border-gray-200 dark:border-b-[#454545]"},J2={class:"font-medium text-gray-800 dark:text-[#ffffff]"},Y2={class:"p-4 mim-h-0 h-full overflow-auto"},Nf=s.defineComponent({__name:"modal-edit",props:{schema:{},defaultValue:{},mode:{},token:{},form:{},api:{},method:{}},emits:["close","save","edit"],setup(n,{emit:e}){const t=n,r=e,o=s.ref(t.schema),i=s.ref(t.defaultValue?JSON.parse(JSON.stringify(t.defaultValue)):{}),l=s.ref({}),a=s.ref(t.token||""),c=s.ref(t.token||""),d=s.ref(t.mode),u=()=>{const y=t.method?.trim().toUpperCase();return y==="GET"||y==="POST"||y==="PUT"?y:d.value==="add"?"POST":"PUT"},f=()=>{ke.notify({type:"success",title:"Успішно",message:`Дані успішно ${d.value==="add"?"збережено":"оновлено"}`})},p=y=>{const b={};y.id!==void 0&&y.id!==null&&(b.id=y.id,c.value=y.id.toString()),y.obj&&typeof y.obj=="object"&&Object.assign(b,y.obj),Object.keys(b).length&&(i.value={...i.value,...b})},h=async y=>{if(console.log(y),y.ok){await y.json().catch(()=>({})),f(),r("save",i.value);return}const b=await y.json().catch(()=>({})),w=b.message||b.error;if(y.status===400){ke.notify({type:"warning",title:"Помилка валідації",message:w||"Некоректні дані (400)"});return}if(y.status===403){ke.notify({type:"warning",title:"Доступ заборонено",message:w||"Доступ заборонено (403)"});return}if(y.status===500){ke.notify({type:"error",title:"Серверна помилка",message:w||"Виникла помилка на сервері (500)"});return}ke.notify({type:"error",title:"Помилка",message:w||`Статус: ${y.status}`})};async function m(){const y=l.value.validate();if(y){ke.notify({type:"warning",title:"Помилка валідації",message:Object.entries(y).map(([w,v])=>`${w}: ${v}`).join(`
|
|
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 D=!1,H=!1;const te=s.reactive({}),we=s.ref([]),tt=s.computed(()=>we.value.map(k=>te[k]).filter(Boolean)),Re=s.ref(null),St=s.computed(()=>Re.value?.entries??[]),cn=s.computed(()=>{if(!Re.value)return;const x=u.value?.getBoundingClientRect?.(),C=(x?.left??0)+Re.value.point.x+12,B=(x?.top??0)+Re.value.point.y+12;return{left:`${C}px`,top:`${B}px`}}),tn=s.computed(()=>{if(Array.isArray(t.tools)&&t.tools.length)return t.tools;const k=o?.tools;return Array.isArray(k)?k.map(x=>String(x)):typeof k=="string"?k.split(",").map(x=>x.trim()).filter(Boolean):[]}),Le=s.computed(()=>{const k={search:!1,import:!1,export:!1,point:!1,line:!1,polygon:!1,rectangle:!1,ruler:!1};if(!tn.value.length)return{...k,import:!0,export:!0,point:!0,line:!0,polygon:!0,rectangle:!0};const x=new Set(tn.value.map(C=>C.toLowerCase()));return{search:x.has("search"),import:x.has("import"),export:x.has("export"),point:x.has("point"),line:x.has("line"),polygon:x.has("polygon"),rectangle:x.has("rectangle"),ruler:x.has("ruler")}});function $t(k){const x=typeof k=="string"?k.trim():"";if(!x)return"";if(/^https?:\/\//i.test(x))return x;const C=window?.location?.origin??"",B=x.replace(/^\/+/,"");return B?C?`${C}/${B}`:`/${B}`:C}function wo(){const k=Array.isArray(N.basemaps)&&N.basemaps.length?N.basemaps:S.basemaps;if(Array.isArray(k)&&k.length){const C=k.map((B,P)=>{const J=String(B?.key??B?.id??B?.name??`b${P}`),fe=$t(String(B?.url??""));if(!fe)return null;const ge=typeof B?.preview=="string"&&B.preview?$t(B.preview):"";return[J,{...B,url:fe,preview:ge}]}).filter(B=>Array.isArray(B)&&B.length===2).reduce((B,[P,J])=>(B[P]=J,B),{});if(Object.keys(C).length)return C}return{voyager:{name:"Оглядова карта",url:"https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"},orto10:{name:"Ортофото 1:10K",url:"https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",preview:"https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"},osmb:{name:"Open Street Maps",url:"https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",preview:"https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"}}}const mr=wo(),xo=Object.keys(mr),qr=s.ref(xo.length?xo[0]:"");function Ls(){const k=Array.isArray(N.overlays)&&N.overlays.length?N.overlays:S.overlays;return!Array.isArray(k)||!k.length?{}:k.map((C,B)=>{const J=(typeof C?.name=="string"?C.name.trim():"")||`o${B}`,fe=$t(String(C?.url??""));if(!fe)return null;const ge=typeof C?.preview=="string"&&C.preview?$t(C.preview):"";return[J,{...C,name:J,url:fe,preview:ge}]}).filter(C=>Array.isArray(C)&&C.length===2).reduce((C,[B,P])=>(C[B]=P,C),{})}const Gr=Ls(),Sn=s.ref(Object.keys(Gr).filter(k=>!!Gr[k]?.visible)),sa=s.computed(()=>Le.value.point||Le.value.line||Le.value.polygon||Le.value.rectangle),ia=s.computed(()=>tt.value.filter(k=>k.config?.overlay!==!1).map(k=>({id:k.id,label:String(k.config.title||k.config.name||k.id),visible:k.visible})));function Is(k){return`${PE}${k}`}function Os(k){return`${zE}${k}`}async function fu(){if(typeof window>"u")return null;const k=window;if(k[ui])return k[ui];const x=J=>{if(Array.from(document.styleSheets).some(Ne=>Ne?.href?.includes(J)))return;const ge=document.createElement("link");ge.rel="stylesheet",ge.href=J,document.head.appendChild(ge)},C=async()=>{const J=new Function("u","return import(u)"),fe=await J("https://esm.sh/maplibre-gl@3.6.2"),ge=fe?.default??fe;if(!ge)throw new Error("maplibre esm fallback failed");window.maplibregl=ge,window.mapboxgl=ge;const Ne=await J("https://esm.sh/@mapbox/mapbox-gl-draw@1.5.0"),nt=Ne?.default??Ne;if(!nt)throw new Error("mapbox draw esm fallback failed");window.MapboxDraw=nt},P=(async()=>{x("https://unpkg.com/maplibre-gl@3.6.2/dist/maplibre-gl.css"),x("https://unpkg.com/@mapbox/mapbox-gl-draw@1.5.0/dist/mapbox-gl-draw.css"),(!window.maplibregl||!window.MapboxDraw)&&await C();const J=window.maplibregl,fe=window.MapboxDraw;if(!J)throw new Error("maplibregl not available after load");if(!fe)throw new Error("MapboxDraw not available after load");return zS(J),{maplibregl:J,MapboxDraw:fe}})().catch(J=>{throw delete k[ui],J});return k[ui]=P,P}function Rs(k){return{version:8,glyphs:HE,sources:{rasterSource:Ia(k,void 0,{safe:!1})},layers:[{id:"rasterLayer",type:"raster",source:"rasterSource"}]}}let q=null,ie=null,$=null,le=null,Pe=[],lt=null,Ke=null,qe=null,Ut=!1,Rt=!1,Wt=!1,pt=null;function Jr(){$&&($.getLayer?.(Oa)&&$.removeLayer(Oa),$.getLayer?.(Ra)&&$.removeLayer(Ra),$.getSource?.(Do)&&$.removeSource(Do))}function qR(k){if(!$||!k||typeof k!="object")return;Jr(),$.addSource(Do,{type:"geojson",data:{type:"Feature",geometry:k,properties:{}}});const x=V.value;$.addLayer({id:Oa,type:"fill",source:Do,paint:{"fill-color":x,"fill-opacity":.3}}),$.addLayer({id:Ra,type:"line",source:Do,paint:{"line-color":x,"line-width":2,"line-opacity":1}})}function GR(k,x){if(!$||!q)return;const C=[k[1],k[0]],B=typeof x?.zoom=="number"?x.zoom:13;if(pt?.remove&&pt.remove(),pt=null,Jr(),Z.value&&x?.geom){qR(x.geom),xu(x.geom);return}pt=new q.Marker({color:z.value}),pt.setLngLat(C).addTo($),$.easeTo({center:C,zoom:B,duration:250})}function JR(){return{onSetup(){const k=this.newFeature({type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[[0,0],[0,0],[0,0],[0,0],[0,0]]]}});return this.addFeature(k),this.clearSelectedFeatures(),this.updateUIClasses({mouse:"add"}),this.setActionableState({trash:!0}),{rectangle:k,startPoint:null,hasCoordinates:!1}},onMouseMove(k,x){if(!k.startPoint)return;const[C,B]=k.startPoint,P=x.lngLat.lng,J=x.lngLat.lat;k.rectangle.setCoordinates([[[C,B],[P,B],[P,J],[C,J],[C,B]]])},onClick(k,x){if(!k.startPoint){k.startPoint=[x.lngLat.lng,x.lngLat.lat],k.hasCoordinates=!0,k.rectangle.setCoordinates([[[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat],[x.lngLat.lng,x.lngLat.lat]]]);return}const[C,B]=k.startPoint,P=x.lngLat.lng,J=x.lngLat.lat;return Math.abs(C-P)>0&&Math.abs(B-J)>0?(k.rectangle.setCoordinates([[[C,B],[P,B],[P,J],[C,J],[C,B]]]),this.map.fire("draw.create",{features:[k.rectangle.toGeoJSON()]}),this.changeMode("simple_select",{featureIds:[k.rectangle.id]})):(this.deleteFeature([k.rectangle.id],{silent:!0}),k.hasCoordinates=!1,this.changeMode("simple_select"))},onStop(){},onTrash(k){this.deleteFeature([k.rectangle.id],{silent:!0}),this.changeMode("simple_select")},toDisplayFeatures(k,x,C){const B=x.properties.id===k.rectangle.id;B&&!k.hasCoordinates||(x.properties.active=B?"true":"false",C(x))}}}const YR=[{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 U0(){const k=qr.value;return!k||!mr[k]?.url?"":mr[k].url}function XR(k,x){return k?.id?String(k.id):k?.url?`${k.url}-${x}`:`layer-${x}`}function W0(k){const x=String(k?.url??"").trim();if(!x)return"";if(/^https?:\/\//i.test(x))return x;const C=window.location?.origin??"",B=x.replace(/^\/+/,"");return`${C}/${B}`}function vo(k){k&&Re.value?.layerId!==k||(Re.value=null)}function ZR(k,x={}){if(k.popup===!1)return[];const C=Number(x?.point_count);if(Number.isFinite(C)&&C>1)return[{key:"Об'єктів у кластері",value:String(C)}];const B=W0(k),P=Us(k,B,F.value);return Array.isArray(k.popup)?k.popup.length?k.popup.map(J=>{const fe=J?.field||J?.name;if(!fe)return null;const ge=x[fe];if(ge==null||ge==="")return null;const Ne=P?.formatPopupValue?P.formatPopupValue(fe,ge):String(ge);return{key:J.label||fe,value:Ne}}).filter(Boolean):[]:Object.entries(x).slice(0,5).map(([J,fe])=>({key:J,value:fe==null?"—":String(fe)}))}function K0(k){if(!Array.isArray(k))return[];const x=B=>Array.isArray(B)&&B.length>=2&&Number.isFinite(Number(B[0]))&&Number.isFinite(Number(B[1])),C=B=>{if(!B.length)return B;const P=B[0],J=B[B.length-1];return!J||P[0]!==J[0]||P[1]!==J[1]?[...B,P]:B};if(k.length&&x(k[0])){const B=k.map(P=>[Number(P[0]),Number(P[1])]).filter(x);return B.length?[C(B)]:[]}return k.length&&Array.isArray(k[0])&&x(k[0][0])?k.map(P=>Array.isArray(P)?P.map(J=>[Number(J[0]),Number(J[1])]):[]).filter(P=>P.length).map(C):k.length&&Array.isArray(k[0])&&Array.isArray(k[0][0])&&x(k[0][0][0])?k.flatMap(P=>Array.isArray(P)?P:[]).map(P=>Array.isArray(P)?P.map(J=>[Number(J[0]),Number(J[1])]):[]).filter(P=>P.length).map(C):[]}function QR(k){const x=k.style??{},C=x.color??"#3b82f6";if(!x.colorAttr||!x.colorSet)return C;const B=Object.keys(x.colorSet);if(!B.length)return C;const P=["match",["to-string",["get",x.colorAttr]]];return B.forEach(J=>{P.push(String(J),x.colorSet?.[J]??C)}),P.push(C),P}function eF(k){if(!$)return;const x=$.getStyle()?.layers;Array.isArray(x)&&[...x].reverse().forEach(C=>{C.source===k&&$.getLayer(C.id)&&$.removeLayer(C.id)})}function la(k){if(!$)return;k.handlers.forEach(B=>{try{$.off(B.type,B.layerId,B.handler)}catch{}}),k.handlers=[],[...k.layerIds,...k.boundsIds].forEach(B=>{$.getLayer(B)&&$.removeLayer(B)}),eF(k.sourceId),$.getSource(k.sourceId)&&$.removeSource(k.sourceId);const x=`vs-ov-bounds-src-${k.id}`,C=`vs-ov-bounds-line-${k.id}`;$.getLayer(C)&&$.removeLayer(C),$.getSource(x)&&$.removeSource(x),vo(k.id)}function tF(k,x){if(!$)return[];const C=`vs-ov-bounds-src-${x}`,B=`vs-ov-bounds-line-${x}`,P=k.bounds??re.value??Ee.value,J=K0(P);if(!J.length)return[];const fe={type:"FeatureCollection",features:J.map(ge=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:ge}}))};return $.getLayer(B)&&$.removeLayer(B),$.getSource(C)&&$.removeSource(C),$.addSource(C,{type:"geojson",data:fe}),$.addLayer({id:B,type:"line",source:C,paint:{"line-color":k.style?.stroke??k.style?.color??"#2563eb","line-width":k.style?.width??2,"line-opacity":k.style?.opacity??.8,"line-dasharray":[2,2]}}),[B]}function pu(){return Wt||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle"}function nF(k,x){if(!$)return;k.handlers.forEach(B=>{try{$.off(B.type,B.layerId,B.handler)}catch{}});const C=[];x.forEach(B=>{const P=fe=>{if(pu())return;if(!fe?.features?.length){vo(k.id);return}const ge=fe.features[0]?.properties??{},Ne=ZR(k.config,ge);if(!Ne.length){vo(k.id);return}Re.value={layerId:k.id,entries:Ne,point:{x:fe.point.x,y:fe.point.y}}},J=()=>vo(k.id);$.on("mousemove",B,P),$.on("mouseleave",B,J),C.push({layerId:B,type:"mousemove",handler:P},{layerId:B,type:"mouseleave",handler:J})}),k.handlers=C}function hu(k,x){if(!$)return;k.layerIds=x,k.boundsIds=tF(k.config,k.id),nF(k,x);const C=k.visible?"visible":"none";[...k.layerIds,...k.boundsIds].forEach(B=>{$.getLayer(B)&&$.setLayoutProperty(B,"visibility",C)}),En()}function Co(k){if(!$)return;la(k),k.renderToken=(k.renderToken??0)+1;const x=k.renderToken,C=k.config,B=W0(C);if(!B)return;const P=[],J=/\.v(?:m)?t(?:\?|$|\/)/i.test(B)||/\.pbf(?:\?|$)/i.test(B)||/\/vtile(?:\/|\?|$)/i.test(B)||String(C?.service??"").toLowerCase()==="vector"||String(C?.format??"").toLowerCase()==="mvt",fe=Us(C,B,F.value);if(J&&fe){const ge=C.sourceLayer||C.layer||C.service_layer||C.dataset?.layer||C.id;$.addSource(k.sourceId,{type:"vector",tiles:[B],minzoom:typeof C.minzoom=="number"?C.minzoom:0,maxzoom:typeof C.maxzoom=="number"?C.maxzoom:22}),(async()=>{try{if(!$||!$.getSource(k.sourceId)||k.renderToken!==x)return;const Ne=await fe.render({map:$,overlayId:k.id,sourceId:k.sourceId,sourceLayer:ge,url:B,config:C});if(!$||!$.getSource(k.sourceId)||k.renderToken!==x){Ne.forEach(nt=>{$.getLayer(nt)&&$.removeLayer(nt)});return}hu(k,Ne)}catch(Ne){k.renderToken===x&&console.error(`Failed to render map layer preset "${fe.id}"`,Ne)}})();return}if(J){const ge=C.sourceLayer||C.layer||C.service_layer||C.dataset?.layer||C.id;$.addSource(k.sourceId,{type:"vector",tiles:[B],minzoom:typeof C.minzoom=="number"?C.minzoom:0,maxzoom:typeof C.maxzoom=="number"?C.maxzoom:22});const Ne=Array.isArray(C.style?.types)?C.style.types.map(Un=>String(Un).toLowerCase()):[String(C.style?.type??"polygon").toLowerCase()],nt=QR(C),jn=C.style?.opacity??.5,Eu=Un=>{if(Un==="point"){const zs=`vs-ov-point-${k.id}`;$.addLayer({id:zs,type:"circle",source:k.sourceId,"source-layer":ge,paint:{"circle-color":nt,"circle-radius":C.style?.radius??5,"circle-opacity":jn}}),P.push(zs);return}if(Un==="polyline"||Un==="line"){const zs=`vs-ov-line-${k.id}`;$.addLayer({id:zs,type:"line",source:k.sourceId,"source-layer":ge,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":nt,"line-width":C.style?.width??2,"line-opacity":jn}}),P.push(zs);return}const lb=`vs-ov-fill-${k.id}`,ab=`vs-ov-border-${k.id}`;$.addLayer({id:lb,type:"fill",source:k.sourceId,"source-layer":ge,paint:{"fill-color":nt,"fill-opacity":jn}}),$.addLayer({id:ab,type:"line",source:k.sourceId,"source-layer":ge,paint:{"line-color":C.style?.stroke??C.style?.color??"#2563eb","line-width":C.style?.width??1,"line-opacity":jn}}),P.push(lb,ab)};[...new Set(Ne)].forEach(Un=>Eu(Un)),hu(k,P);return}else{$.addSource(k.sourceId,Ia(B,C,{safe:!1}));const ge=`vs-ov-raster-${k.id}`;$.addLayer({id:ge,type:"raster",source:k.sourceId,paint:{"raster-opacity":C.style?.opacity??1}}),P.push(ge)}hu(k,P)}function Fs(){if(!$)return;const x={type:"FeatureCollection",features:K0(re.value??Ee.value).map(C=>({type:"Feature",properties:{},geometry:{type:"LineString",coordinates:C}}))};$.getSource(fi)?$.getSource(fi).setData(x):$.addSource(fi,{type:"geojson",data:x}),$.getLayer(Zr)||$.addLayer({id:Zr,type:"line",source:fi,paint:{"line-color":"#2563eb","line-width":2,"line-opacity":.8,"line-dasharray":[2,2]}})}function rF(k){if(!$||c.value)return;const x=te[k];if(!x)return;x.visible=!x.visible;const C=x.visible?"visible":"none";[...x.layerIds,...x.boundsIds].forEach(B=>{$.getLayer(B)&&$.setLayoutProperty(B,"visibility",C)}),En(),x.visible||vo(k)}function q0(k){if(!$)return;const x=Gr[k];if(!x?.url)return;const C=Is(k),B=Os(k);$.getLayer(B)&&$.removeLayer(B),$.getSource(C)&&$.removeSource(C),$.addSource(C,Ia(x.url,x,{safe:!0}));const P=x?.opacity??x?.style?.opacity,J=typeof P=="number"?P:FE;$.addLayer({id:B,type:"raster",source:C,paint:{"raster-opacity":J}})}function oF(k){if(!$)return;const x=Is(k),C=Os(k);$.getLayer(C)&&$.removeLayer(C),$.getSource(x)&&$.removeSource(x)}function G0(){$&&Sn.value.forEach(k=>q0(k))}function sF(k){if(!$||c.value||!Gr[k])return;Sn.value.includes(k)?(Sn.value=Sn.value.filter(C=>C!==k),oF(k)):(Sn.value=[...Sn.value,k],q0(k)),En()}function En(){if(!$)return;const k=Sn.value.map(Ne=>Os(Ne)).filter(Ne=>$.getLayer(Ne)),x=[],C=[],B=[],P=[];we.value.forEach(Ne=>{const nt=te[Ne];if(!nt)return;const jn=String(nt.config?.url??""),Eu=/\.v(?:m)?t(?:\?|$|\/)/i.test(jn)||/\/vtile(?:\/|\?|$)/i.test(jn)||Tu(nt.config,jn,F.value),Un=/\.png(?:\?|$)/i.test(jn);Eu?B.push(...nt.layerIds):Un?x.push(...nt.layerIds):C.push(...nt.layerIds),P.push(...nt.boundsIds)});const J=[...k,...x,...C,...B,...P];J.forEach(Ne=>{$.getLayer(Ne)&&$.moveLayer(Ne)}),$.getLayer(Zr)&&$.moveLayer(Zr);const ge=($.getStyle?.()?.layers??[]).map(Ne=>String(Ne?.id??"")).filter(Ne=>Ne.startsWith("gl-draw-"));if(ge.forEach(Ne=>{$.getLayer(Ne)&&$.moveLayer(Ne)}),$.getLayer(gf)){const Ne=J.find(nt=>$.getLayer(nt))??($.getLayer(Zr)?Zr:null)??ge.find(nt=>$.getLayer(nt));Ne&&$.moveLayer(gf,Ne)}}function iF(k){if(!mr[k]||(qr.value=k,!$))return;const x=U0();if(!x)return;const C=$.getSource("rasterSource");if(C&&typeof C.setTiles=="function"){C.setTiles([x]),En();return}const B=$.getCenter?.(),P=$.getZoom?.(),J=le?.getAll?.();$.setStyle(Rs(x)),$.once("style.load",()=>{if($&&(B&&Number.isFinite(P)&&$.jumpTo({center:[B.lng,B.lat],zoom:P}),Fs(),G0(),we.value.forEach(fe=>{const ge=te[fe];ge&&Co(ge)}),En(),J?.features?.length&&le))try{J.features.forEach(fe=>le.add(fe)),f.value=J.features.length}catch{f.value=0}})}function mu(k){return{type:"Feature",properties:{},geometry:k}}function Mn(k){if(!k)return null;try{return JSON.parse(JSON.stringify(k))}catch{return null}}function gu(k){if(!k)return null;const x=Mn(k.geometry);return x?{...k.id!==void 0?{id:k.id}:{},type:"Feature",properties:{...k.properties??{}},geometry:x}:null}function aa(k){if(!k)return[];const x=(P,J)=>{if(!P?.type)return[];const fe={...J??{}};return P.type==="MultiPoint"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"Point",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="MultiLineString"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"LineString",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="MultiPolygon"&&Array.isArray(P.coordinates)?P.coordinates.map(ge=>mu({type:"Polygon",coordinates:ge})).map(ge=>({...ge,properties:fe})):P.type==="GeometryCollection"&&Array.isArray(P.geometries)?P.geometries.flatMap(ge=>x(ge,fe)):[{type:"Feature",properties:fe,geometry:Mn(P)}]},C=P=>{if(!P)return null;if(P.type==="Feature"){const J=gu(P);return J?x(J.geometry,J.properties):null}return P.geom?.type&&Array.isArray(P.geom.coordinates)?x({type:P.geom.type,coordinates:P.geom.coordinates},P.properties??{}):P.type==="GeometryCollection"&&Array.isArray(P.geometries)?x(P,P.properties??{}):typeof P.type=="string"&&Array.isArray(P.coordinates)?x(Mn(P),P.properties??{}):null};if(k.type==="FeatureCollection")return(k.features??[]).flatMap(C).filter(Boolean);if(Array.isArray(k))return k.flatMap(P=>P?.type==="FeatureCollection"?aa(P):[C(P)]).flat().filter(Boolean);const B=C(k);return B?Array.isArray(B)?B:[B]:[]}function J0(k){if(!k.length)return null;if(!a.value)return Mn(k[0]?.geometry??null);const x=k.map(J=>Mn(J?.geometry)).filter(Boolean);return x.every(J=>J?.type==="Point")?{type:"MultiPoint",coordinates:x.map(J=>J.coordinates)}:x.every(J=>J?.type==="LineString")?{type:"MultiLineString",coordinates:x.map(J=>J.coordinates)}:x.every(J=>J?.type==="Polygon")?{type:"MultiPolygon",coordinates:x.map(J=>J.coordinates)}:{type:"GeometryCollection",geometries:x}}function Y0(k){if(!k)return"__null__";try{return JSON.stringify(k)}catch{return"__invalid__"}}function lF(k,x){if(!Array.isArray(k)||!Array.isArray(x)||k.length<2||x.length<2)return!1;const C=1e-12;return Math.abs(Number(k[0])-Number(x[0]))<C&&Math.abs(Number(k[1])-Number(x[1]))<C}function X0(k,x){if(!Array.isArray(k)||k.length<4)return null;const B=lF(k[0],k[k.length-1])?k.slice(0,-1):k.slice();return!Number.isInteger(x)||x<0||x>=B.length||B.length<=3||(B.splice(x,1),B.length<3)?null:[...B,[...B[0]]]}function Z0(k,x){if(!Array.isArray(k)||k.length<2||!Number.isInteger(x)||x<0||x>=k.length||k.length<=2)return null;const C=k.slice();return C.splice(x,1),C.length<2?null:C}function aF(k,x){const C=Mn(k);if(!C||!Array.isArray(x))return null;if(C.type==="LineString"){const[B]=x,P=Z0(C.coordinates,B);return P?(C.coordinates=P,C):null}if(C.type==="MultiLineString"){const[B,P]=x,J=C.coordinates?.[B],fe=Z0(J,P);return fe?(C.coordinates[B]=fe,C):null}if(C.type==="Polygon"){const[B,P]=x,J=C.coordinates?.[B],fe=X0(J,P);return fe?(C.coordinates[B]=fe,C):null}if(C.type==="MultiPolygon"){const[B,P,J]=x,fe=C.coordinates?.[B]?.[P],ge=X0(fe,J);return ge?(C.coordinates[B][P]=ge,C):null}return null}function cF(k){return k?k.split(".").map(x=>Number(x)).filter(x=>Number.isInteger(x)&&x>=0):[]}function Q0(k){return!le||!k?null:typeof le.get=="function"?le.get(k)??null:le.getAll?.()?.features?.find(C=>String(C?.id??"")===k)??null}function eb(k){const x=k?.properties?.id??k?.id;return x==null||x===""?null:String(x)}function dF(k){if(!$||!k)return null;const x=[[k.x-8,k.y-8],[k.x+8,k.y+8]],B=$.queryRenderedFeatures(x).find(P=>{const J=String(P?.properties?.meta??"");return J&&J!=="feature"?!1:!!eb(P)});return eb(B)}function uF(k,x){if(!le||!k||!x.length)return;const C=Q0(k);if(!C?.geometry)return;const B=aF(C.geometry,x);if(!B)return;const P={...C,id:C.id??k,geometry:B};H=!0,D=!0;try{le.delete(k),le.add(P)}finally{D=!1,H=!1}gr(),Hn()}function fF(k){if(!$||!le||c.value||b.isRulerActive.value||p.value!=="edit")return;const x=k?.point;if(!x)return;const C=[[x.x-8,x.y-8],[x.x+8,x.y+8]],P=$.queryRenderedFeatures(C).find(fe=>fe?.properties?.meta==="vertex"&&fe?.properties?.parent&&fe?.properties?.coord_path);if(!P)return;k?.originalEvent?.preventDefault?.(),k?.originalEvent?.stopPropagation?.();const J=cF(String(P.properties.coord_path));J.length&&uF(String(P.properties.parent),J)}function pF(k){const x=rb(k);if(!x)return null;const[[C,B],[P,J]]=x;return{lat:(B+J)/2,lng:(C+P)/2}}function tb(k){if(!Array.isArray(k)||k.length<3)return 0;const x=(B,P)=>{const J=B*2003750834e-2/180,fe=Math.log(Math.tan((90+P)*Math.PI/360))/(Math.PI/180);return[J,fe*2003750834e-2/180]};let C=0;for(let B=0;B<k.length-1;B+=1){const[P,J]=x(Number(k[B][0]),Number(k[B][1])),[fe,ge]=x(Number(k[B+1][0]),Number(k[B+1][1]));C+=P*ge-fe*J}return Math.abs(C/2)/1e6}function hF(k){if(!k?.type||!k?.coordinates)return null;if(k.type==="Polygon"){const x=k.coordinates?.[0];return Array.isArray(x)?tb(x):null}return k.type==="MultiPolygon"?k.coordinates.reduce((x,C)=>{const B=C?.[0];return Array.isArray(B)?x+tb(B):x},0):null}function yu(k){if(!k){h.value=null;return}const x=pF(k);if(!x){h.value=null;return}h.value={type:String(k.type??"Feature"),center:x,areaKm2:hF(k)}}function bu(k){if(!k){const B=Pe[Pe.length-1],P=Mn(B?.geometry??null);lt=P,yu(P);return}const x=Pe.find(B=>String(B?.id??"")===String(k))??null,C=Mn(x?.geometry??null);lt=C,yu(C)}function ku(k){m.value=(k??[]).map((x,C)=>{const B=String(x?.id??`feature-${C+1}`),P=wu(String(x?.geometry?.type??"Feature"));return{id:B,label:`${P} ${C+1}`}})}function wu(k){switch(String(k)){case"Point":return"Точка";case"MultiPoint":return"Мультиточка";case"LineString":return"Лінія";case"MultiLineString":return"Мультилінія";case"Polygon":return"Полігон";case"MultiPolygon":return"Мультиполігон";case"GeometryCollection":return"Колекція геометрій";default:return String(k||"Невідомо")}}function nb(k,x){if(!Array.isArray(k)||!Array.isArray(x)||k.length!==2||x.length!==2)return!1;const C=1e-9;return Math.abs(Number(k[0])-Number(x[0]))<C&&Math.abs(Number(k[1])-Number(x[1]))<C}function rb(k){if(!k)return null;let x=1/0,C=1/0,B=-1/0,P=-1/0;const J=fe=>{if(Array.isArray(fe)){if(fe.length>=2&&Number.isFinite(fe[0])&&Number.isFinite(fe[1])){const ge=Number(fe[0]),Ne=Number(fe[1]);x=Math.min(x,ge),C=Math.min(C,Ne),B=Math.max(B,ge),P=Math.max(P,Ne);return}fe.forEach(J)}};return J(k.coordinates),!Number.isFinite(x)||!Number.isFinite(C)?null:[[x,C],[B,P]]}function xu(k){if(!$||!k)return;const x=rb(k);if(!x)return;const[[C,B],[P,J]]=x;if(C===P&&B===J){$.easeTo({center:[C,B],zoom:Math.max(Ae.value,14)}),We();return}$.fitBounds(x,{padding:30,duration:250,maxZoom:18}),We()}function vu(){if(!le){f.value=0;return}const k=le.getAll();f.value=k?.features?.length??0}function Ps(){if(!le)return null;const x=le.getAll?.()?.features??[],C=J=>!!J&&x.some(fe=>String(fe?.id??"")===String(J??"")),B=le.getSelectedIds?.();if(Array.isArray(B)&&B.length>0){const J=B[0];return J!=null?String(J):null}if(C(qe))return String(qe);if(!x.length)return null;const P=a.value?x[x.length-1]:x[0];return P?.id!==void 0&&P?.id!==null?String(P.id):null}function gr(){if(!le)return;const k=le.getAll();if(f.value=k?.features?.length??0,!k?.features?.length){Pe=[],m.value=[],lt=null,qe=null,h.value=null,D||(Ke="__null__",r("update:modelValue",null));return}const x=(k.features??[]).map(gu).filter(Boolean);if(Pe=x,ku(x),qe=Ps(),bu(qe),!D){const C=J0(x);Ke=Y0(C),r("update:modelValue",C)}}function ca(){if(!le)return;(le.getAll()?.features||[]).forEach(x=>le.delete(x.id)),m.value=[],vu()}function da(k){if(!le)return;const x=aa(k),C=a.value?x:x.slice(0,1);D=!0,ca(),C.forEach(J=>{try{le.add(J)}catch{}}),D=!1,Pe=(le.getAll?.()?.features??C).map(gu).filter(Boolean),ku(Pe),qe=null;const P=Mn(Pe[Pe.length-1]?.geometry??null);lt=Mn(P),vu(),yu(P),P&&(xu(P),c.value||Hn())}function mF(){le&&(D=!0,ca(),Pe.forEach(k=>{try{le.add(k)}catch{}}),D=!1,ku(Pe),vu(),bu(qe))}function So(){if(le){try{le.changeMode("simple_select",{featureIds:[]})}catch{}p.value=""}}function ua(k){if(c.value||!le)return;b.isRulerActive.value&&b.closeRuler(),Wt=!0,So(),p.value=k;const x=k==="marker"?"draw_point":k==="polyline"?"draw_line_string":k==="rectangle"?"draw_rectangle":"draw_polygon";a.value||(D=!0,ca(),D=!1);try{le.changeMode(x)}catch{p.value=""}finally{requestAnimationFrame(()=>{Wt=!1})}}function Hn(k){if(c.value||!le||!le.getAll()?.features?.length)return;const C=k||Ps();if(C)try{le.changeMode("direct_select",{featureId:C}),qe=C,bu(qe),p.value="edit"}catch{p.value=""}}function gF(k){c.value||!le||!k||Hn(k)}function yF(){if(!(c.value||!le)){if(a.value){const k=Ps();if(k)try{Ut=!0,le.delete(k),Ut=!1,gr();const x=Ps();x?Hn(x):So();return}catch{Ut=!1}}So(),ca(),Pe=[],m.value=[],qe=null,Ke="__null__",h.value=null,r("update:modelValue",null)}}function bF(){c.value||!lt||xu(lt)}function kF(){c.value||(Me.value=!Me.value)}function ob(k){if(!Me.value)return;const x=me.value;x&&!x.contains(k.target)&&(Me.value=!1)}function wF(){xF()}function xF(){c.value||(Me.value=!1,W.value={srid:"",encoding:"UTF-8",file:""},Ct.value=!0)}function vF(){Ct.value=!1,et.value=!1,Xe.value=!1}function CF(k){return k?typeof k=="string"?k:typeof k=="object"&&k&&"file_path"in k?String(k.file_path??""):"":""}function SF(k){const B=((Array.isArray(k)?k[0]:k)?.features??[]).map(P=>Array.isArray(P)?P[0]:P).filter(Boolean).map(P=>P?.type==="Feature"?P:{type:"Feature",properties:{},geometry:P});return B.length?{type:"FeatureCollection",features:B}:null}async function EF(){if(c.value||!le||et.value)return;const k=CF(W.value.file);if(!k){ke.notify({type:"warning",title:"Імпорт геометрії",message:"Оберіть файл для імпорту."});return}et.value=!0;try{const x=await fetch("/api/gis-convert",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({srid:W.value.srid,encoding:W.value.encoding||"UTF-8",filepath:k,limit:!0})}),C=await x.json().catch(()=>null);if(!x.ok)throw new Error(C?.message||C?.error||`Код помилки: ${x.status}`);const B=SF(C);if(!B){ke.notify({type:"warning",title:"Імпорт геометрії",message:"Файл не містить коректні геодані."});return}da(B),gr(),Ct.value=!1,ke.notify({type:"success",title:"Успіх",message:"Геометрію успішно імпортовано."})}catch(x){ke.notify({type:"error",title:"Помилка",message:x?.message||"Помилка імпорту файла геометрії"})}finally{et.value=!1}}function MF(){c.value||(Vt.value=[],Me.value=!1,Ye.value=!0)}function AF(){Ye.value=!1,Vt.value=[]}function _F(){if(c.value||!le)return;const k=vC(R.value.coordinates??"",R.value.format||"decimal",R.value.order||"lat-lon");if(!k.ok){Vt.value=k.errors,TF(k.errors);return}Vt.value=[],da({type:"Polygon",coordinates:[k.ring]}),gr(),Ye.value=!1,k.wasClosedAutomatically&&ke.notify({type:"info",title:"Імпорт координат",message:"Полігон був автоматично замкнений (перша і остання точки різнилися)."})}function TF(k){if(!k.length)return;const x=5;k.slice(0,x).forEach(C=>{const B=C.line>0?`Рядок ${C.line}`:"Загальна помилка";ke.notify({type:"warning",title:"Імпорт координат",message:`${B} — ${C.message}`})}),k.length>x&&ke.notify({type:"warning",title:"Імпорт координат",message:`Ще помилок: ${k.length-x}`})}function BF(){if(c.value||!le)return;const k=le.getAll(),x=new Blob([JSON.stringify(k,null,2)],{type:"application/json"}),C=URL.createObjectURL(x),B=document.createElement("a");B.href=C,B.download="data.geojson",B.click(),URL.revokeObjectURL(C)}s.onMounted(async()=>{if(window.addEventListener("click",ob,!0),!u.value)return;const k=await fu();q=k.maplibregl,ie=k.MapboxDraw;const x=U0();x&&($=new q.Map({container:u.value,style:Rs(x),center:[he.value[0],he.value[1]],zoom:Ae.value,attributionControl:!1}),g.value=$,$.addControl(new q.NavigationControl({showCompass:!0}),"bottom-right"),$.on("error",C=>{const B=C?.error?.message??C?.message??"";US(B)}),$.on("load",()=>{if(!(!ie||!$)){if(le=new ie({displayControlsDefault:!1,modes:{...ie.modes,draw_rectangle:JR()},controls:{point:!1,line_string:!1,polygon:!1,trash:!1},styles:YR}),$.addControl(le),$.on("click",C=>{if(b.isRulerActive.value){const P=C?.lngLat;if(!P)return;y.value?.addPoint?.({lat:P.lat,lng:P.lng});return}if(!le||c.value||p.value!=="edit")return;const B=dF(C?.point);!B||B===qe||requestAnimationFrame(()=>{!le||c.value||Hn(B)})}),$.on("draw.create",()=>{if(le&&!b.isRulerActive.value){if(!a.value){const C=le.getAll();if(C.features.length>1){const B=C.features[C.features.length-1];D=!0,C.features.slice(0,-1).forEach(P=>le.delete(P.id)),D=!1,B&&(D=!0,le.add(B),D=!1)}}gr(),Hn()}}),$.on("draw.update",C=>{if(Rt||b.isRulerActive.value||pu())return;const B=Array.isArray(C?.features)?C.features:[],P=C?.action==="move"&&B.length>0&&B.every(J=>J?.geometry?.type==="Point");if(C?.action==="move"){if(P){gr();return}if(Rt=!0,mF(),Rt=!1,p.value==="edit"){const J=Ps(),fe=J?Q0(J):le?.getAll?.()?.features?.[0];if(fe?.id)try{le.changeMode("direct_select",{featureId:fe.id}),qe=String(fe.id)}catch{p.value=""}}return}gr()}),$.on("draw.delete",()=>{H||Ut||b.isRulerActive.value||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle"||(gr(),le?.getAll?.()?.features?.length||(qe=null),p.value="",So())}),$.on("draw.selectionchange",C=>{if(!le||Rt||b.isRulerActive.value||p.value==="marker"||p.value==="polyline"||p.value==="polygon"||p.value==="rectangle")return;const B=C?.features?.[0]?.id!==void 0&&C?.features?.[0]?.id!==null?String(C.features[0].id):null;if(!c.value&&B){if(p.value==="edit"&&qe===B)return;requestAnimationFrame(()=>{!le||c.value||Hn(B)});return}const P=le.getSelectedIds?.(),J=Array.isArray(P)&&P.length>0?String(P[0]):null;if(!c.value&&J){if(p.value==="edit"&&qe===J)return;requestAnimationFrame(()=>{!le||c.value||Hn(J)});return}try{le.changeMode("simple_select",{featureIds:[]})}catch{}}),se.value!==void 0){const C=se.value;se.value=void 0,requestAnimationFrame(()=>{le&&da(C)})}Fs(),G0(),we.value.forEach(C=>{const B=te[C];B&&Co(B)}),En(),Qe()}}),$.on("contextmenu",fF),$.on("moveend",We),$.on("zoomend",()=>{$&&(Ae.value=$.getZoom())}))}),s.onUnmounted(()=>{typeof document<"u"&&(document.body.style.overflow=""),typeof window<"u"&&window.removeEventListener("keydown",Su),$e&&(clearTimeout($e),$e=null),b.isRulerActive.value&&b.closeRuler(),window.removeEventListener("click",ob,!0),Object.values(te).forEach(k=>{$&&la(k)}),vo(),pt?.remove&&pt.remove(),pt=null,Jr(),$?.remove&&$.remove(),$=null,le=null,g.value=null}),s.watch(()=>t.modelValue,k=>{if(!le){se.value=k;return}if(pu())return;const x=J0((a.value?aa(k):aa(k).slice(0,1))||[]),C=Y0(x);if(Ke&&C===Ke){Ke=null;return}Ke=null,da(k)},{deep:!0}),s.watch(()=>ae.value,k=>{const x=Array.isArray(k)?k:[],C=[],B=new Set;x.forEach((P,J)=>{if(!P)return;const fe=XR(P,J);C.push(fe),B.add(fe);const ge={...P,id:fe},Ne=te[fe],nt=Ne?.visible??!!ge.visible;Ne&&$&&la(Ne),te[fe]={id:fe,config:ge,visible:nt,sourceId:`vs-ov-src-${fe}`,layerIds:[],boundsIds:[],handlers:[],renderToken:Ne?.renderToken??0}}),Object.keys(te).forEach(P=>{if(B.has(P))return;const J=te[P];J&&$&&la(J),delete te[P]}),we.value=C,$&&(we.value.forEach(P=>{const J=te[P];J&&Co(J)}),En())},{immediate:!0,deep:!0}),s.watch(()=>re.value,()=>{$&&(Fs(),we.value.forEach(k=>{const x=te[k];x&&Co(x)}),En())},{deep:!0}),s.watch(()=>ne.value,async k=>{if(Ee.value=[],!k){$&&(Fs(),we.value.forEach(x=>{const C=te[x];C&&Co(C)}),En());return}try{const x=await fetch(`https://data.gki.com.ua/api-user/atu/${k}`);if(!x?.ok)return;const B=(await x.json())?.geometry?.coordinates;Array.isArray(B)&&B.length&&(Ee.value=B)}catch(x){console.error("Failed to fetch KATOTTG bounds",x)}finally{if(!$)return;Fs(),we.value.forEach(x=>{const C=te[x];C&&Co(C)}),En()}},{immediate:!0}),s.watch(()=>L.value,k=>{if(!Array.isArray(k)||k.length!==2)return;const x=[Number(k[0]),Number(k[1])];if(nb(he.value,x)||(he.value=[...x],!$))return;const C=$.getCenter?.();C&&nb([C.lng,C.lat],he.value)||$.easeTo({center:[he.value[0],he.value[1]]})},{deep:!0}),s.watch(()=>O.value,k=>{typeof k=="number"&&(Ae.value=k,$&&$.setZoom(k))}),s.watch(()=>h.value?.center,k=>{k&&Fe(k.lng,k.lat,$?.getZoom?.())},{deep:!0}),s.watch(c,k=>{k&&So()}),s.watch(f,k=>{if(k>0){c.value||Hn();return}Wt||So()});const sb=s.computed(()=>m.value.length>0||!!h.value),Cu=s.computed(()=>{const k=m.value,x=k.length>1;return k.length?k.map(C=>({id:C.id,label:x?C.label:h.value?.type?wu(h.value.type):C.label,interactive:x})):h.value?.type?[{id:"__feature",label:wu(h.value.type),interactive:!1}]:[]});function ib(){setTimeout(()=>{$?.resize&&$.resize()},50)}function Su(k){k.key==="Escape"&&d.value&&(d.value=!1)}return s.watch(d,k=>{typeof document<"u"&&(document.body.style.overflow=k?"hidden":""),typeof window<"u"&&(k?window.addEventListener("keydown",Su):window.removeEventListener("keydown",Su)),ib()}),s.watch(sb,ib),(k,x)=>(s.openBlock(),s.createBlock(s.Teleport,{to:"body",disabled:!d.value},[s.createElementVNode("div",{class:s.normalizeClass(["vs-map-wrapper w-full",{fullscreen:d.value}])},[s.createElementVNode("div",WS,[s.createElementVNode("div",{ref_key:"mapContainer",ref:u,class:"vs-map-canvas"},null,512),Le.value.search||Le.value.import||Le.value.export?(s.openBlock(),s.createElementBlock("div",KS,[Le.value.search?(s.openBlock(),s.createBlock(HC,{key:0,config:G.value,onGoToCoordinates:GR},null,8,["config"])):s.createCommentVNode("",!0),Le.value.import||Le.value.export?(s.openBlock(),s.createElementBlock("div",qS,[s.createElementVNode("div",GS,[Le.value.import?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"importMenuRef",ref:me,class:"relative"},[s.createElementVNode("button",{type:"button",class:"vs-map-action-btn",onClick:kF,disabled:c.value},[x[10]||(x[10]=s.createTextVNode(" Імпорт ",-1)),s.createVNode(s.unref(Y.ChevronDown),{class:s.normalizeClass(["h-3.5 w-3.5 shrink-0 transition-transform",{"rotate-180":Me.value}])},null,8,["class"])],8,JS),Me.value?(s.openBlock(),s.createElementBlock("div",YS,[Le.value.import?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:wF}," З файлу ")):s.createCommentVNode("",!0),s.createElementVNode("button",{type:"button",class:"block w-full text-left px-3 py-2 hover:bg-gray-100 text-gray-900",onClick:MF}," З координат ")])):s.createCommentVNode("",!0)],512)):s.createCommentVNode("",!0),Le.value.export?(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",class:"vs-map-action-btn",onClick:BF,disabled:c.value||f.value===0}," Експорт ",8,XS)):s.createCommentVNode("",!0)])])):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.createVNode(s.unref(ke.VsModal),{visible:Ct.value,"onUpdate:visible":x[1]||(x[1]=C=>Ct.value=C),title:"Імпорт геометрії",size:"lg",teleport:s.unref(l)},{default:s.withCtx(()=>[Xe.value||et.value?(s.openBlock(),s.createElementBlock("div",ZS,[s.createVNode(s.unref(Y.LoaderCircle),{class:"h-4 w-4 shrink-0 animate-spin"}),s.createElementVNode("span",null,s.toDisplayString(ft.value),1)])):s.createCommentVNode("",!0),s.createVNode(Pt,{schema:ue.value,values:W.value,"onUpdate:values":x[0]||(x[0]=C=>W.value=C)},null,8,["schema","values"]),s.createElementVNode("div",QS,[s.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:vF,disabled:Xe.value||et.value}," Скасувати ",8,eE),s.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 inline-flex items-center gap-2",onClick:EF,disabled:c.value||Xe.value||et.value||!W.value.file},[et.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:0,class:"h-4 w-4 animate-spin"})):s.createCommentVNode("",!0),s.createTextVNode(" "+s.toDisplayString(et.value?"Обробка...":"Додати"),1)],8,tE)])]),_:1},8,["visible","teleport"]),s.createVNode(s.unref(ke.VsModal),{visible:Ye.value,"onUpdate:visible":x[3]||(x[3]=C=>Ye.value=C),title:"Імпорт координат полігону",size:"lg",teleport:s.unref(l)},{default:s.withCtx(()=>[s.createVNode(Pt,{schema:M,values:R.value,"onUpdate:values":x[2]||(x[2]=C=>R.value=C)},null,8,["values"]),s.createElementVNode("div",nE,[s.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:AF}," Скасувати "),s.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:_F,disabled:c.value}," Побудувати ",8,rE)])]),_:1},8,["visible","teleport"]),s.createElementVNode("div",oE,[s.createElementVNode("div",sE,[sa.value?(s.openBlock(),s.createElementBlock(s.Fragment,{key:0},[Le.value.point?(s.openBlock(),s.createElementBlock("button",{key:0,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="marker"}]),title:"Точка",onClick:x[4]||(x[4]=C=>ua("marker")),disabled:c.value},[s.createVNode(s.unref(Y.MapPin),{class:"vs-btn-icon"})],10,iE)):s.createCommentVNode("",!0),Le.value.line?(s.openBlock(),s.createElementBlock("button",{key:1,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="polyline"}]),title:"Лінія",onClick:x[5]||(x[5]=C=>ua("polyline")),disabled:c.value},[s.createVNode(jv,{class:"vs-btn-icon"})],10,lE)):s.createCommentVNode("",!0),Le.value.polygon?(s.openBlock(),s.createElementBlock("button",{key:2,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="polygon"}]),title:"Полігон",onClick:x[6]||(x[6]=C=>ua("polygon")),disabled:c.value},[s.createVNode(qv,{class:"vs-btn-icon"})],10,aE)):s.createCommentVNode("",!0),Le.value.rectangle?(s.openBlock(),s.createElementBlock("button",{key:3,class:s.normalizeClass(["vs-btn",{"vs-active":p.value==="rectangle"}]),title:"Прямокутник",onClick:x[7]||(x[7]=C=>ua("rectangle")),disabled:c.value},[s.createVNode(Xv,{class:"vs-btn-icon"})],10,cE)):s.createCommentVNode("",!0)],64)):s.createCommentVNode("",!0),sa.value?(s.openBlock(),s.createElementBlock("div",dE)):s.createCommentVNode("",!0),Le.value.ruler?(s.openBlock(),s.createElementBlock("button",{key:2,class:s.normalizeClass(["vs-btn",{"vs-active":s.unref(b).isRulerActive.value}]),title:"Лінійка",onClick:w},[s.createVNode(s.unref(Y.Ruler),{class:"vs-btn-icon"})],2)):s.createCommentVNode("",!0),s.createElementVNode("button",{class:"vs-btn",onClick:x[8]||(x[8]=C=>d.value=!d.value),title:d.value?"Згорнути":"На весь екран"},[d.value?(s.openBlock(),s.createBlock(s.unref(Y.Minimize),{key:0,class:"vs-btn-icon"})):(s.openBlock(),s.createBlock(s.unref(Y.Maximize),{key:1,class:"vs-btn-icon"}))],8,uE)])]),Le.value.ruler&&s.unref(b).isRulerActive.value?(s.openBlock(),s.createBlock(LS,{key:1,ref_key:"rulerPanelRefEl",ref:y,onClose:x[9]||(x[9]=C=>s.unref(b).closeRuler()),onTabChange:s.unref(b).onRulerTabChange,onPointsChange:s.unref(b).onRulerPointsChange,onShapeClosedChange:s.unref(b).onRulerShapeClosedChange},null,8,["onTabChange","onPointsChange","onShapeClosedChange"])):s.createCommentVNode("",!0),Le.value.ruler&&s.unref(b).isRulerActive.value&&s.unref(b).hasRulerPoints.value?(s.openBlock(),s.createBlock(IS,{key:2,map:g.value,points:s.unref(b).rulerPoints.value,"is-shape-closed":s.unref(b).rulerShapeClosed.value,"label-mode":s.unref(b).rulerActiveTab.value},null,8,["map","points","is-shape-closed","label-mode"])):s.createCommentVNode("",!0),St.value.length?(s.openBlock(),s.createBlock(s.Teleport,{key:3,to:K.value},[s.createElementVNode("div",{class:"pointer-events-none fixed z-[10000]",style:s.normalizeStyle(cn.value)},[s.createElementVNode("div",fE,[s.createElementVNode("dl",pE,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(St.value,C=>(s.openBlock(),s.createElementBlock("div",{key:`${C.key}-${C.value}`,class:"flex justify-between gap-2"},[s.createElementVNode("dt",hE,s.toDisplayString(C.key),1),s.createElementVNode("dd",mE,s.toDisplayString(C.value),1)]))),128))])])],4)],8,["to"])):s.createCommentVNode("",!0),s.createElementVNode("div",gE,[s.createVNode(wC,{compact:"",basemaps:s.unref(mr),"active-base-key":qr.value,"tile-overlays":s.unref(Gr),"active-tile-overlay-keys":Sn.value,"vector-overlays":ia.value,"preview-tile":Ce.value,disabled:c.value,onOnLayerChange:iF,onOnOverlayToggle:sF,onOnVectorOverlayToggle:rF},null,8,["basemaps","active-base-key","tile-overlays","active-tile-overlay-keys","vector-overlays","preview-tile","disabled"])])]),sb.value?(s.openBlock(),s.createElementBlock("div",yE,[s.createElementVNode("div",bE,[s.createElementVNode("div",kE,[x[11]||(x[11]=s.createElementVNode("span",{class:"vs-map-status__label"},"Тип:",-1)),s.createElementVNode("div",wE,[Cu.value.length?(s.openBlock(!0),s.createElementBlock(s.Fragment,{key:0},s.renderList(Cu.value,(C,B)=>(s.openBlock(),s.createElementBlock(s.Fragment,{key:C.id},[C.interactive?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:s.normalizeClass(["vs-map-status__chip",{"vs-map-status__chip--active":C.id===s.unref(qe)}]),onClick:P=>gF(C.id),disabled:c.value},s.toDisplayString(C.label),11,xE)):(s.openBlock(),s.createElementBlock("span",vE,s.toDisplayString(C.label),1)),B<Cu.value.length-1?(s.openBlock(),s.createElementBlock("span",CE,", ")):s.createCommentVNode("",!0)],64))),128)):(s.openBlock(),s.createElementBlock("span",SE,"—"))])]),s.createElementVNode("div",EE,[s.createElementVNode("span",ME,[x[12]||(x[12]=s.createElementVNode("span",{class:"vs-map-status__label"},"Центр:",-1)),h.value?(s.openBlock(),s.createElementBlock("span",AE,s.toDisplayString(h.value.center.lng.toFixed(5))+", "+s.toDisplayString(h.value.center.lat.toFixed(5)),1)):(s.openBlock(),s.createElementBlock("span",_E,"—"))]),h.value&&h.value.areaKm2!==null?(s.openBlock(),s.createElementBlock("span",TE,[x[13]||(x[13]=s.createElementVNode("span",{class:"vs-map-status__label"},"Площа:",-1)),s.createElementVNode("span",BE,s.toDisplayString(h.value.areaKm2.toFixed(1))+" km²",1)])):s.createCommentVNode("",!0),s.createElementVNode("div",NE,[s.createElementVNode("button",{type:"button",class:"vs-status-btn vs-status-btn--zoom",title:"Масштаб до об'єкта",onClick:bF,disabled:c.value},[s.createVNode(s.unref(Y.ZoomIn),{class:"vs-status-btn__icon"})],8,DE),s.createElementVNode("button",{type:"button",class:"vs-status-btn vs-status-btn--delete",title:"Видалити об'єкт",onClick:yF,disabled:c.value},[s.createVNode(s.unref(Y.Trash2),{class:"vs-status-btn__icon"})],8,VE)])])])])):s.createCommentVNode("",!0)],2)],8,["disabled"]))}}),[["__scopeId","data-v-d2948dbb"]]),jE=["data-focus"],UE={class:"flex items-center"},WE={class:"overflow-hidden text-ellipsis whitespace-nowrap rounded-sm text-[#333] text-[85%] px-0.5 py-[3px] pl-1.5 box-border"},KE=["onClick","aria-label"],qE={key:0,class:"absolute text-gray-500 truncate pl-2"},GE={class:"flex-1 min-w-[2px]"},JE=["placeholder"],YE={class:"flex items-center shrink-0"},XE=["disabled"],bf=s.defineComponent({__name:"vs-input-tag",props:s.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:s.mergeModels(["update:modelValue"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=e;Bt(t.style);const o=s.ref(null),i=s.ref(null),l=s.ref(null),a=s.ref(!1),c=s.ref(""),d=s.useModel(n,"modelValue"),u=s.computed(()=>t.placeholder||"Add tag…"),f=s.computed(()=>d.value?.length===0&&c.value===""),p=s.computed(()=>!t.disabled&&d.value?.length>0),h=s.computed(()=>t.disabled),m=async()=>{h.value||await s.nextTick(()=>l.value?.focus())},g=F=>{const T=F.trim();T!==""&&(!d.value||!Array.isArray(d.value)?d.value=[T]:t.unique?d.value.includes(T)||(d.value=[...d.value,T]):d.value=[...d.value,T],c.value="")},y=()=>{const F=c.value;F.trim()!==""&&g(F),c.value=""},b=F=>{const T=d.value.slice();T.splice(F,1),r("update:modelValue",T)},w=()=>{r("update:modelValue",[])},v=()=>{h.value||(a.value=!0)},S=()=>{a.value=!1,!h.value&&y()},N=F=>{const{key:T}=F;T==="Enter"?(F.preventDefault(),y()):T==="Backspace"&&c.value===""&&d.value.length>0&&b(d.value.length-1)};return(F,T)=>(s.openBlock(),s.createElementBlock("div",{class:"flex gap-1 w-full",ref_key:"root",ref:o,onClick:T[1]||(T[1]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("div",{class:s.normalizeClass(["relative w-full font-sans",t.customClass]),role:"group","aria-label":"Tag input"},[s.createElementVNode("div",{class:s.normalizeClass(["flex min-h-[38px] items-center justify-between rounded border transition-colors bg-white","border-gray-300 hover:border-gray-400",a.value?"border-blue-500 ring-1 ring-blue-500":"",h.value?"bg-gray-100 text-gray-400 cursor-not-allowed hover:border-gray-300":""]),"data-focus":a.value?"true":"false",onClick:m},[s.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:i},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(d.value,(E,_)=>(s.openBlock(),s.createElementBlock("div",{key:_,class:"flex min-w-0 bg-[#e6e6e6] rounded-sm m-0.5 box-border"},[s.createElementVNode("div",UE,[s.createElementVNode("div",WE,s.toDisplayString(E),1)]),s.createElementVNode("div",{role:"button",class:"flex items-center rounded-sm px-1 box-border hover:bg-[#ffbdad] hover:text-[#de350b]",onClick:s.withModifiers(A=>b(_),["stop"]),"aria-label":`Remove ${E}`},[s.createVNode(s.unref(Y.X),{"aria-hidden":"true",focusable:"false",class:"inline-block h-4 w-4"})],8,KE)]))),128)),f.value?(s.openBlock(),s.createElementBlock("div",qE,s.toDisplayString(u.value),1)):s.createCommentVNode("",!0),s.createElementVNode("div",GE,[h.value?s.createCommentVNode("",!0):s.withDirectives((s.openBlock(),s.createElementBlock("input",{key:0,ref_key:"inputRef",ref:l,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":T[0]||(T[0]=E=>c.value=E),onFocus:v,onBlur:S,onKeydown:N,placeholder:d.value&&d.value.length?"":void 0},null,40,JE)),[[s.vModelText,c.value]])])],512),s.createElementVNode("div",YE,[p.value?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",class:"px-2 text-gray-400 hover:text-gray-500 transition-colors disabled:opacity-50","aria-label":"Clear all tags",disabled:h.value,onClick:s.withModifiers(w,["stop"])},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,XE)):s.createCommentVNode("",!0)])],10,jE)],2)],512))}}),ZE={class:"relative flex gap-1 bg-white w-full"},QE=["disabled","placeholder"],kf=Be(s.defineComponent({__name:"vs-input-slug",props:s.mergeModels({disabled:{type:Boolean},placeholder:{},parent:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=s.inject("values"),t=n,r=s.useModel(n,"modelValue");function o(l){const a={а:"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 l.toLowerCase().split("").map(c=>a[c]||c).join("").replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}const i=()=>{const l=e?.value?.[t.parent||""]?.toString(),a=o(l);r.value=a.toString()};return(l,a)=>(s.openBlock(),s.createElementBlock("div",ZE,[s.withDirectives(s.createElementVNode("input",{ref:"vsText",disabled:l.disabled,placeholder:l.placeholder,"onUpdate:modelValue":a[0]||(a[0]=c=>r.value=c),class:"block w-full px-3 py-2 text-sm border border-solid rounded-lg placeholder:text-nowrap border-stone-200 text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"},null,8,QE),[[s.vModelText,r.value]]),s.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200",onClick:i}," Gen ")]))}}),[["__scopeId","data-v-b0eba370"]]),eM={class:"relative flex gap-1 bg-white w-full"},tM=["disabled","placeholder"],nM=["disabled"],rM={key:0},oM={key:1},wf=Be(s.defineComponent({__name:"vs-input-codegen",props:s.mergeModels({table:{},code:{},init:{type:Boolean},style:{},customClass:{},disabled:{type:Boolean},modelValue:{},error:{},name:{},placeholder:{},maxlength:{},minlength:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref(!1),o=s.computed(()=>e.init!==!1),i=s.computed(()=>!!e.table&&!!e.code),l=()=>{if(!i.value)return"";const d=encodeURIComponent(String(e.table)),u=encodeURIComponent(String(e.code));return`/api/code-gen/${d}/${u}`},a=async()=>{if(!i.value||r.value)return;const d=l();if(d){r.value=!0;try{const f=await(await fetch(d)).text();t.value=f}finally{r.value=!1}}},c=()=>{o.value&&(t.value||a())};return s.onMounted(()=>{c()}),s.watch(()=>[e.table,e.code,e.init],()=>{c()}),(d,u)=>(s.openBlock(),s.createElementBlock("div",eM,[s.withDirectives(s.createElementVNode("input",{disabled:d.disabled,placeholder:d.placeholder,"onUpdate:modelValue":u[0]||(u[0]=f=>t.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,tM),[[s.vModelText,t.value]]),s.createElementVNode("button",{class:"px-2 bg-gray-100 border rounded-lg hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed",disabled:r.value||d.disabled||!i.value,onClick:a},[r.value?(s.openBlock(),s.createElementBlock("span",oM,"...")):(s.openBlock(),s.createElementBlock("span",rM,"Gen"))],8,nM)]))}}),[["__scopeId","data-v-6ee5237d"]]),sM={class:"w-full"},iM={ref:"sortableContainer",class:"flex flex-col gap-1"},lM=["onDragstart","onDrop"],aM={class:"cursor-move",type:"button"},cM={class:"w-1/3"},dM={class:"w-2/3"},uM=["onClick"],fM={key:0,class:"text-[14px] text-gray-700"},pM={class:"mt-2 w-full flex items-center"},hM=["disabled"],xf=Be(s.defineComponent({__name:"vs-input-key-value",props:{parent:{},ignore:{},addButtonText:{},modelValue:{}},emits:["update:modelValue"],setup(n,{emit:e}){const t=y=>`${y}-${Math.random().toString(36).substring(2,15)}`,r=s.inject("values"),o=n,i=e,l=o.addButtonText??"Додати",a=o.ignore??[],c=s.ref([]),d=s.ref(null);(()=>{const y=o.parent&&r?.value?.[o.parent]||o.modelValue||{};c.value=Object.entries(y).filter(([b])=>!a.includes(b)).map(([b,w])=>({id:t("key-value-"),key:b,value:w}))})();function f(y){d.value=y}function p(y){if(d.value===null||d.value===y)return;const b=c.value.splice(d.value,1)[0];c.value.splice(y,0,b),d.value=null}const h=s.computed(()=>c.value.some(y=>y.key&&!y.value||!y.key&&y.value)),m=()=>{c.value.push({id:t("key-value-"),key:"",value:""})},g=y=>{c.value=c.value.filter(b=>b.id!==y)};return s.watch(c,y=>{const b={};y.forEach(v=>{v.key&&v.value!==void 0&&(b[v.key]=v.value)});const w={};a.length&&a.forEach(v=>{w[v]=o.parent?r?.value?.[o.parent]?.[v]:void 0}),r?.value&&o.parent&&(r.value[o.parent]={...w,...b}),i("update:modelValue",b)},{deep:!0}),(y,b)=>(s.openBlock(),s.createElementBlock("div",sM,[s.createElementVNode("div",iM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(c.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:w.id,class:s.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":d.value===v}]),draggable:"true",onDragstart:S=>f(v),onDragover:b[0]||(b[0]=s.withModifiers(()=>{},["prevent"])),onDrop:S=>p(v)},[s.createElementVNode("button",aM,[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})]),s.createElementVNode("div",cM,[s.createVNode(Yr,{modelValue:w.key,"onUpdate:modelValue":S=>w.key=S,placeholder:"Ключ"},null,8,["modelValue","onUpdate:modelValue"])]),s.createElementVNode("div",dM,[s.createVNode(Yr,{modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,placeholder:"Значення"},null,8,["modelValue","onUpdate:modelValue"])]),s.createElementVNode("button",{onClick:S=>g(w.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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,uM)],42,lM))),128))],512),c.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("span",fM," Дані для відображення відсутні ")),s.createElementVNode("div",pM,[s.createElementVNode("button",{type:"button",onClick:m,disabled:h.value,class:"py-1.5 px-2 flex items-center gap-x-1 text-xs font-medium rounded-full border border-dashed border-gray-200 bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(s.unref(l)),1)],8,hM)])]))}}),[["__scopeId","data-v-d8c3f9d6"]]),mM={class:"w-full"},gM={ref:"sortableContainer",class:"flex flex-col gap-1"},yM=["onDragstart","onDrop"],bM=["disabled"],kM={class:"flex-1"},wM=["onClick","disabled"],xM={key:0,class:"text-[14px] text-gray-700"},vM={class:"mt-2 w-full flex items-center"},CM=["disabled"],vf=Be(s.defineComponent({__name:"vs-input-text-array",props:s.mergeModels({addButtonText:{default:"Додати"},inputType:{default:"text"},placeholder:{default:"Значення"},mask:{default:""},disabled:{type:Boolean,default:!1}},{modelValue:{default:[]},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref([]),o=s.ref(null),i=s.computed(()=>!!e.disabled),l=s.computed(()=>e.placeholder??""),a=s.computed(()=>e.addButtonText??"Додати");let c=!1;const d=y=>`${y}-${Math.random().toString(36).substring(2,15)}`,u=y=>{const b=y??t.value??[];r.value=b.map((w,v)=>({id:r.value[v]?.id??d("text-array"),value:w??""}))};u(),s.watch(()=>t.value,y=>{if(c){c=!1;return}u(y||[])},{deep:!0}),s.watch(r,y=>{c=!0,t.value=y.map(b=>b.value).filter(b=>b!=null&&b!=="")},{deep:!0});const f=s.computed(()=>i.value||r.value.some(y=>!y.value));function p(){f.value||(r.value=[...r.value,{id:d("text-array"),value:""}])}function h(y){i.value||(r.value=r.value.filter(b=>b.id!==y))}function m(y){i.value||(o.value=y)}function g(y){if(i.value||o.value===null||o.value===y)return;const b=[...r.value],[w]=b.splice(o.value,1);b.splice(y,0,w),r.value=b,o.value=null}return(y,b)=>(s.openBlock(),s.createElementBlock("div",mM,[s.createElementVNode("div",gM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:w.id,class:s.normalizeClass(["flex items-center gap-2 w-full",{"opacity-50":o.value===v}]),draggable:"true",onDragstart:S=>m(v),onDragover:b[0]||(b[0]=s.withModifiers(()=>{},["prevent"])),onDrop:S=>g(v)},[s.createElementVNode("button",{class:"cursor-move",type:"button",disabled:i.value},[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})],8,bM),s.createElementVNode("div",kM,[y.inputType==="text"?(s.openBlock(),s.createBlock(Yr,{key:0,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="tel"?(s.openBlock(),s.createBlock(ka,{key:1,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="email"?(s.openBlock(),s.createBlock(ba,{key:2,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","disabled","placeholder"])):s.createCommentVNode("",!0),y.inputType==="mask"?(s.openBlock(),s.createBlock(qs,{key:3,modelValue:w.value,"onUpdate:modelValue":S=>w.value=S,mask:y.mask,disabled:i.value,placeholder:l.value},null,8,["modelValue","onUpdate:modelValue","mask","disabled","placeholder"])):s.createCommentVNode("",!0)]),s.createElementVNode("button",{type:"button",onClick:S=>h(w.id),disabled:i.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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,wM)],42,yM))),128))],512),r.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("span",xM," Дані для відображення відсутні ")),s.createElementVNode("div",vM,[s.createElementVNode("button",{type:"button",onClick:p,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"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(a.value),1)],8,CM)])]))}}),[["__scopeId","data-v-2c229b1f"]]),SM={class:"flex items-center gap-2 w-full"},EM=["disabled"],MM=["disabled"],Cf=s.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(n,{emit:e}){const t=n,{inputClass:r}=Bt(t.style),o=e,i=s.computed({get:()=>t.modelValue||"#000000",set:a=>o("update:modelValue",a)}),l=s.computed(()=>!!t.disabled);return(a,c)=>(s.openBlock(),s.createElementBlock("div",SM,[s.withDirectives(s.createElementVNode("input",{type:"color","onUpdate:modelValue":c[0]||(c[0]=d=>i.value=d),disabled:l.value,ref:"color",class:s.normalizeClass(["py-1.5 px-1 block w-full bg-white cursor-pointer max-w-[50px]",[a.modelValue?"":"text-opacity-50",s.unref(r)].join(" ")]),style:{border:"1px solid #CFD9E0"}},null,10,EM),[[s.vModelText,i.value]]),s.withDirectives(s.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2","onUpdate:modelValue":c[1]||(c[1]=d=>i.value=d),disabled:l.value},null,8,MM),[[s.vModelText,i.value]])]))}}),AM={class:"flex items-center gap-2 w-full"},_M=["min","max","step","disabled"],TM=["value","min","max","step","disabled"],Sf=s.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(n,{emit:e}){const t=n,{inputClass:r}=Bt(t.style),o=e,i=u=>{const f=Number(u),p=Number(t.min),h=Number(t.max);return Number.isNaN(f)?p:Math.min(h,Math.max(p,f))},l=s.computed({get:()=>i(t.modelValue??t.min),set:u=>o("update:modelValue",i(u))}),a=u=>{const f=u.target,p=i(f.value);f.value=String(p),o("update:modelValue",p)},c=u=>{Number(t.min)>=0&&u.key==="-"&&u.preventDefault()},d=s.computed(()=>!!t.disabled);return(u,f)=>(s.openBlock(),s.createElementBlock("div",AM,[s.withDirectives(s.createElementVNode("input",{type:"range","onUpdate:modelValue":f[0]||(f[0]=p=>l.value=p),min:u.min,max:u.max,step:u.step,disabled:d.value,ref:"range",class:s.normalizeClass(["w-full cursor-pointer accent-blue-500",[u.modelValue?"":"text-opacity-50",s.unref(r)].join(" ")])},null,10,_M),[[s.vModelText,l.value]]),s.createElementVNode("input",{class:"text-sm text-gray-600 border border-solid border-stone-200 rounded-md p-2 max-w-[100px]",type:"number",value:l.value,min:u.min,max:u.max,step:u.step,onInput:a,onKeydown:c,disabled:d.value},null,40,TM)]))}}),BM=["placeholder","disabled","name"],NM=["type","value","onInput","placeholder","disabled"],DM=["onClick"],Ef=s.defineComponent({__name:"vs-input-array",props:s.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(n){const e=n,t=s.ref(e.count),r=s.computed(()=>e.limit),{inputClass:o}=Bt(e.style),i=s.useModel(n,"modelValue"),l=s.computed(()=>!!e.disabled),a=s.computed(()=>e.placeholder??"");s.watchEffect(()=>{const g=i.value?.length??0;g<t.value&&(i.value=[...i.value??[],...Array(t.value-g)])});const c=s.ref({}),d=s.ref({});function u(g,y){g&&(c.value[y]=g)}async function f(g,y){if(!g||e.inputType!=="mask")return;const{default:b}=await Promise.resolve().then(()=>xi);d.value[y]&&d.value[y].destroy(),d.value[y]=b(g,{mask:e.mask||"",definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},lazy:!1}),d.value[y].on("accept",()=>{const w=[...i.value||[]];w[y]=e.unmask?d.value[y].unmaskedValue:d.value[y].value,i.value=w}),d.value[y].on("complete",()=>{const w=[...i.value||[]];w[y]=e.unmask?d.value[y].unmaskedValue:d.value[y].value,i.value=w}),i.value?.[y]&&(d.value[y].value=i.value[y])}function p(g,y){if(l.value)return;const b=g.target.value??null,w=[...i.value];w[y]=e.inputType==="text"?b:Number(b),i.value=w}function h(){t.value+=1;const g=e.inputType==="text"||e.inputType==="mask"?null:0;i.value=[...i.value,g],e.inputType==="mask"&&setTimeout(()=>{const y=t.value-1;c.value[y]&&f(c.value[y],y)},0)}function m(g){if(t.value>1){d.value[g]&&(d.value[g].destroy(),delete d.value[g]),t.value-=1,i.value=i.value.filter((b,w)=>w!==g);const y={};Object.keys(d.value).forEach(b=>{const w=parseInt(b,10);w>g?y[w-1]=d.value[w]:w<g&&(y[w]=d.value[w])}),d.value=y}}return s.onMounted(()=>{if(e.inputType==="mask")for(let g=0;g<t.value;g+=1)c.value[g]&&f(c.value[g],g)}),s.onBeforeUnmount(()=>{Object.values(d.value).forEach(g=>{g&&g.destroy()})}),s.watch(()=>e.mask,g=>{e.inputType==="mask"&&Object.values(d.value).forEach(y=>{y&&y.updateOptions({mask:g,definitions:{9:/[0-9]/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}})})}),s.watch(i,g=>{e.inputType==="mask"&&g&&g.forEach((y,b)=>{d.value[b]&&d.value[b].value!==y&&(d.value[b].value=y||"")})},{deep:!0}),(g,y)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["grid gap-2",`grid-cols-${r.value}`])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(t.value,b=>(s.openBlock(),s.createElementBlock("div",{key:b,class:"flex items-center gap-2 w-full"},[g.inputType==="mask"?(s.openBlock(),s.createElementBlock("input",{key:0,type:"text",ref_for:!0,ref:w=>u(w,b-1),placeholder:g.placeholder,disabled:g.disabled,name:`${g.name}[${b-1}]`,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(o),{"!border-red-600":g.error}]]),style:{border:"1px solid #CFD9E0"}},null,10,BM)):(s.openBlock(),s.createElementBlock("input",{key:1,type:g.inputType,value:i.value?.[b-1],onInput:w=>p(w,b-1),placeholder:a.value,disabled:l.value,class:s.normalizeClass(["py-1.5 px-3 block w-full placeholder:text[#767f8f] bg-white",[s.unref(o),{"!border-red-600":g.error}]]),style:{border:"1px solid #CFD9E0"}},null,42,NM)),!g.disabled&&b===t.value&&g.isAdded?(s.openBlock(),s.createElementBlock("button",{key:2,type:"button",onClick:s.withModifiers(h,["stop"]),class:"cursor-pointer shrink-0 w-[38px] text-green-600 h-[38px] rounded-md flex items-center justify-center border border-stone-200 hover:bg-stone-100"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"})])):s.createCommentVNode("",!0),!g.disabled&&t.value>1&&g.isAdded?(s.openBlock(),s.createElementBlock("button",{key:3,type:"button",onClick:s.withModifiers(w=>m(b-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"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,DM)):s.createCommentVNode("",!0)]))),128))],2))}}),VM={class:"flex gap-1 w-full"},$M=["aria-expanded","data-focus"],LM=["placeholder","disabled","readonly"],IM={class:"max-h-full"},OM=["onClick","disabled"],RM={key:0,class:"px-3 py-2 text-sm text-stone-500"},FM=["disabled"],PM={class:"flex flex-col gap-1"},zM=["onDragstart","onDrop"],HM=["disabled"],jM=["title"],UM=["disabled","onClick","aria-label"],WM={key:0,class:"text-xs text-stone-500"},pi=Be(s.defineComponent({__name:"vs-input-array-select",props:s.mergeModels({options:{default:()=>[]},data:{default:""},api:{default:""},prefix:{default:"api"},host:{default:""},parent:{},search:{type:Boolean,default:!0},maxHeight:{default:280},start:{default:0},slot:{},disabled:{type:Boolean,default:!1},add:{},style:{},customClass:{},modelValue:{},error:{},name:{},placeholder:{default:"Оберіть значення"},maxlength:{},minlength:{}},{modelValue:{default:[]},modelModifiers:{}}),emits:s.mergeModels(["change","update:modelValue","value-selected"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=e,o=s.useModel(n,"modelValue"),i=s.ref([]),l=s.ref(t.options??[]),a=s.ref({}),c=s.ref({}),d=s.ref({keyword:"",parent:null}),u=s.ref(""),f=s.ref(!1),p=s.ref(null),h=s.ref(null),m=s.ref(null),g=s.ref(null),y=s.ref(null),b=s.ref({});let w=!1,v=!1;const S=s.inject("values"),N=s.computed(()=>!!t.disabled),F=s.computed(()=>t.placeholder??"Оберіть значення"),T=s.computed(()=>t.search!==!1),E=s.computed(()=>{const M=t.parent??t.parentValue;return M?String(M):""}),_=s.computed(()=>E.value?S?.value?.[E.value]??null:null),A=M=>M==null?"__null__":String(M),I=M=>{if(!M)return"";const D=M.label??M.text??M.name??M.ua??M.en;return D?String(D):M.id!==void 0&&M.id!==null?String(M.id):""},U=M=>{const D=A(M);return c.value[D]||(c.value[D]=`array-select-${D}-${Math.random().toString(36).slice(2,8)}`),c.value[D]},Z=s.computed(()=>new Set(i.value.map(M=>A(M.id)))),V=s.computed(()=>{const M=Z.value;let D=[...l.value];if(!t.data&&u.value.trim()){const H=u.value.toLowerCase();D=D.filter(te=>I(te).toLowerCase().includes(H))}return D.filter(H=>!M.has(A(H.id)))}),z=()=>{if(!t.data)return"";const M=t.prefix??"api",D=t.api??`/${M}/suggest/${t.data}`;return`${t.host??""}${D}`},oe=()=>{i.value.length&&(w=!0,i.value=i.value.map(M=>({...M,text:a.value[A(M.id)]??M.text})))},K=M=>{const D=A(M.id),H=I(M);H&&(a.value[D]=H)},G=M=>{l.value=M?[...M]:[],M?.forEach(K),oe()},X=M=>{if(!M.length)return;const D=new Map(l.value.map(H=>[A(H.id),H]));M.forEach(H=>{const te=A(H.id);D.set(te,H),K(H)}),l.value=Array.from(D.values()),oe()},ce=async(M="")=>{if(!t.data)return[];const D=z();if(!D)return[];const H=new URLSearchParams;H.set("json","1"),M&&H.set("key",M),t.start===1&&H.set("start","1"),_.value!==null&&_.value!==void 0&&_.value!==""&&H.set("parent",String(_.value));try{return(await(await fetch(`${D}?${H.toString()}`)).json())?.data??[]}catch{return[]}},j=async M=>{if(!t.data||!M.length)return[];const D=z();if(!D)return[];const H=Array.from(new Set(M.map(we=>A(we)))),te=new URLSearchParams;te.set("json","1"),te.set("val",H.join(",")),t.start===1&&te.set("start","1"),_.value!==null&&_.value!==void 0&&_.value!==""&&te.set("parent",String(_.value));try{const Re=(await(await fetch(`${D}?${te.toString()}`)).json())?.data??[];return X(Re),Re}catch{return[]}},L=async M=>{if(M==null||M==="")return null;const D=A(M),H=l.value.find(we=>A(we.id)===D);if(H)return H;const[te]=await j([M]);return te??null},O=async(M="",{force:D=!1}={})=>{if(!t.data)return;const H=_.value??null;if(!D&&d.value.keyword===M&&d.value.parent===H&&l.value.length>0)return;d.value={keyword:M,parent:H};const we=await ce(M);G(we)},ae=((M,D=200)=>{let H;return(...te)=>{H&&clearTimeout(H),H=setTimeout(()=>M(...te),D)}})(async M=>{t.data&&await O(M,{force:!0})},250),re=s.ref(null),he=()=>{if(!m.value)return;const M=m.value.getBoundingClientRect(),D=window.innerHeight??document.documentElement.clientHeight,H=window.innerWidth??document.documentElement.clientWidth,te=8,we=8,tt=t.maxHeight??280,Re=D-M.bottom-we-te,St=M.top-we-te,cn=Re>=St,tn=Math.max(H-te*2,0);let{width:Le}=M;tn>0&&Le>tn&&(Le=tn);let{left:$t}=M;$t+Le+te>H&&($t=H-Le-te),$t=Math.max($t,te);const wo=Math.min(tt,Math.max(cn?Re:St,50));b.value={position:"fixed",left:`${$t}px`,width:`${Le}px`,maxHeight:`${wo}px`,transform:cn?"none":"translateY(-100%)",top:cn?`${M.bottom+we}px`:`${M.top-we}px`}},Ae=async(M="click")=>{N.value||f.value||(re.value=M,await O(u.value.trim()),f.value=!0,await s.nextTick(),he(),y.value?.focus())},Ce=()=>{f.value=!1,re.value=null,s.nextTick(()=>{y.value?.blur()})},$e=async M=>{if(M.stopPropagation(),!N.value){if(f.value){if(re.value==="focus"){re.value=null;return}Ce();return}await Ae("click")}},it=M=>{M.key==="Escape"&&Ce()},Fe=M=>{if(!f.value)return;const D=M.target;g.value?.contains(D)||Ce()},Qe=M=>{const D=M.target;h.value?.contains(D)||g.value?.contains(D)||Ce()},We=M=>{if(M.key==="Escape"){M.preventDefault(),Ce();return}if(M.key==="Enter"){M.preventDefault();const D=V.value[0];D&&se(D)}},se=M=>{if(!M)return;const D=A(M.id);if(Z.value.has(D))return;K(M);const H={id:M.id,text:I(M)||String(M.id??""),key:U(M.id)};i.value=[...i.value,H],me(M),u.value="",s.nextTick(()=>{y.value?.focus()})},me=M=>{const D=i.value.map(H=>H.id);r("value-selected",{name:t.name,value:D,option:M})},Ee=M=>{if(N.value)return;const D=i.value.filter(H=>A(H.id)!==A(M));i.value=D},{isOpenAdd:Me,addData:Ye,addSchema:Ct,addForm:et,addTitle:Xe,addOption:ft,onAddValue:Vt}=nf({props:t,fetchOptionByValue:L,optionsList:l,selectedOption:s.ref(null),modelValue:o,onCreated:async(M,D)=>{const H=M??await L(D),te=H?.id??D;Z.value.has(A(te))||(H&&K(H),i.value=[...i.value,{id:te,text:H?I(H):String(te),key:U(te)}],me(H??null))}}),W=M=>{N.value||(p.value=M)},ee=M=>{if(N.value||p.value===null||p.value===M)return;const D=[...i.value],[H]=D.splice(p.value,1);D.splice(M,0,H),p.value=null,i.value=D},ue=async()=>{const D=(Array.isArray(o.value)?[...o.value]:[]).filter(te=>te!=null);if(t.data&&D.length){const te=D.filter(we=>!a.value[A(we)]);te.length&&await j(te)}const H=D.map(te=>({id:te,text:a.value[A(te)]??String(te),key:U(te)}));w=!0,i.value=H};s.watch(i,M=>{if(w){w=!1;return}const D=M.map(H=>H.id);v=!0,o.value=D,r("change",D)},{deep:!0}),s.watch(o,()=>{if(v){v=!1;return}ue()},{deep:!0}),s.watch(u,M=>{!t.data||!f.value||ae(M.trim())}),s.watch(N,M=>{M&&Ce()}),s.watch(()=>t.options,async M=>{t.data||(G(M??[]),await ue())},{immediate:!0,deep:!0}),s.watch(()=>t.data,async M=>{M&&(await O(u.value.trim()),await ue())},{immediate:!0});const R=s.ref(!1);return s.watch(_,async()=>{if(t.data){if(!R.value){R.value=!0;return}i.value=[],await O(u.value.trim()),await ue()}}),s.onMounted(async()=>{document.addEventListener("click",Qe,!0),window.addEventListener("keydown",it),window.addEventListener("scroll",Fe,!0),await ue()}),s.onUnmounted(()=>{document.removeEventListener("click",Qe,!0),window.removeEventListener("keydown",it),window.removeEventListener("scroll",Fe,!0)}),(M,D)=>(s.openBlock(),s.createElementBlock(s.Fragment,null,[s.createVNode(s.unref(ke.VsModal),{visible:s.unref(Me),"onUpdate:visible":D[1]||(D[1]=H=>s.isRef(Me)?Me.value=H:null),class:"z-[1000]",title:s.unref(Xe),buttonText:"Додати",onDone:s.unref(ft)},{default:s.withCtx(()=>[s.createVNode(Pt,{schema:s.unref(Ct),modelValue:s.unref(Ye),"onUpdate:modelValue":D[0]||(D[0]=H=>s.isRef(Ye)?Ye.value=H:null),ref_key:"addForm",ref:et},null,8,["schema","modelValue"])]),_:1},8,["visible","title","onDone"]),s.createElementVNode("div",{class:"flex flex-col gap-2 w-full",ref_key:"rootRef",ref:h},[s.createElementVNode("div",VM,[s.createElementVNode("div",{class:"relative flex-1",onClick:D[4]||(D[4]=s.withModifiers(()=>{},["stop"]))},[s.createElementVNode("div",{ref_key:"triggerRef",ref:m,class:s.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)]":"",N.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:$e},[s.withDirectives(s.createElementVNode("input",{ref_key:"inputRef",ref:y,"onUpdate:modelValue":D[2]||(D[2]=H=>u.value=H),placeholder:F.value,disabled:N.value,readonly:!T.value,onFocus:D[3]||(D[3]=()=>Ae("focus")),onKeydown:We,class:"flex-1 bg-transparent border-0 outline-none px-0 py-1 text-sm text-stone-900 placeholder:text-stone-400"},null,40,LM),[[s.vModelText,u.value]]),s.createElementVNode("span",{class:s.normalizeClass(["text-stone-400 transition-transform duration-150",f.value?"rotate-180":""]),"aria-hidden":"true"},[s.createVNode(s.unref(Y.ChevronDown),{class:"h-4 w-4"})],2)],10,$M),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[s.createVNode(s.Transition,{name:"fade"},{default:s.withCtx(()=>[f.value?(s.openBlock(),s.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:g,class:"fixed z-[3000] rounded-md border border-stone-200 bg-white shadow-lg overflow-auto",style:s.normalizeStyle(b.value)},[s.createElementVNode("div",IM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(V.value,H=>(s.openBlock(),s.createElementBlock("button",{key:A(H.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:s.withModifiers(te=>se(H),["stop"]),disabled:N.value},s.toDisplayString(I(H)),9,OM))),128)),V.value.length===0?(s.openBlock(),s.createElementBlock("p",RM," Немає варіантів ")):s.createCommentVNode("",!0)])],4)):s.createCommentVNode("",!0)]),_:1})]))]),t.add?(s.openBlock(),s.createElementBlock("button",{key:0,onClick:D[5]||(D[5]=(...H)=>s.unref(Vt)&&s.unref(Vt)(...H)),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:N.value,type:"button"},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),D[8]||(D[8]=s.createElementVNode("span",null,"Додати",-1))],8,FM)):s.createCommentVNode("",!0)]),s.createElementVNode("div",PM,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.value,(H,te)=>(s.openBlock(),s.createElementBlock("div",{key:H.key,class:s.normalizeClass(["flex items-center gap-2 rounded-md border border-stone-200 bg-white px-2 py-2",{"opacity-60":p.value===te}]),draggable:"true",onDragstart:we=>W(te),onDragover:D[6]||(D[6]=s.withModifiers(()=>{},["prevent"])),onDrop:we=>ee(te),onDragend:D[7]||(D[7]=we=>p.value=null)},[s.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:N.value,"aria-label":"Перетягнути"},[s.createVNode(s.unref(Y.GripVertical),{class:"h-4 w-4"})],8,HM),s.createElementVNode("div",{class:"flex-1 text-sm text-stone-900",title:H.text},s.toDisplayString(H.text),9,jM),s.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:N.value,onClick:s.withModifiers(we=>Ee(H.id),["stop"]),"aria-label":`Видалити ${H.text}`},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})],8,UM)],42,zM))),128)),i.value.length===0?(s.openBlock(),s.createElementBlock("p",WM,"Немає вибраних значень")):s.createCommentVNode("",!0)])],512)],64))}}),[["__scopeId","data-v-da4b4da7"]]),KM={class:"flex items-center gap-2 w-full"},qM={class:"relative flex-1"},GM=["placeholder","disabled","onKeydown"],JM=["disabled"],YM={key:0,class:"fixed inset-0 z-[1000] flex items-center justify-center bg-black/50"},XM={class:"bg-white text-gray-900 rounded-lg shadow-lg w-[480px] max-h-[80vh] overflow-y-auto"},ZM={class:"p-3 border-b font-semibold text-gray-900 flex justify-between items-center"},QM=["onClick"],e2={key:0,class:"p-4 text-sm text-gray-500"},Mf=s.defineComponent({__name:"vs-input-address",props:s.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:s.mergeModels(["update:modelValue","update:geom"],["update:modelValue"]),setup(n,{emit:e}){const t=/{{\s*([^}]+?)\s*}}/g,r=n,o=e,{inputClass:i}=Bt(r.style),l=s.useModel(n,"modelValue"),a=s.computed({get:()=>l.value,set:T=>{l.value=T}}),c=s.ref(!1),d=s.ref([]),u=s.ref(!1),f=s.ref(null);s.watch(u,T=>{typeof document>"u"||(T?(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"))}),s.onBeforeUnmount(()=>{typeof document>"u"||(f.value!=null?document.body.style.overflow=f.value:document.body.style.removeProperty("overflow"))});const p=s.computed(()=>r.placeholder??""),h=s.computed(()=>!!r.disabled),m=T=>{if(!T)return null;if(Array.isArray(T))return T;if(typeof T=="string"){const E=T.split(",").map(_=>_.trim()).filter(Boolean);return E.length!==4?null:E.map(Number)}return null},g=s.computed(()=>{const T=m(r.bbox);if(!T||T.length!==4)return null;const E=T.map(Number);return E.some(_=>Number.isNaN(_))?null:E}),y=s.computed(()=>{const T=g.value;if(!T)return"";const[E,_,A,I]=T;return`${E},${Math.max(_,I)},${A},${Math.min(_,I)}`});s.computed(()=>y.value?"1":"0");const b=s.inject("values");function w(){!h.value&&a.value.trim()&&v()}async function v(){const T=(a.value||"").trim();if(!T)return;let E=T;if(r.includes?.length&&b?.value){const A=r.includes.map(I=>b.value?.[I]).filter(Boolean);A.length&&(E=`${A.join(", ")}, ${T}`)}const _=F(E);if(_){c.value=!0;try{const I=await(await fetch(_)).json();d.value=Array.isArray(I)?I:[],u.value=!0}catch(A){console.error("Address search error:",A)}finally{c.value=!1}}}function S(){u.value=!u.value}function N(T){if(!T)return;u.value=!1;const E=parseFloat(T.lat),A={type:"Point",coordinates:[parseFloat(T.lon),E]};r.geom&&b?.value&&(b.value[r.geom]=A),o("update:geom",A)}function F(T){if(!r.api)return"";const E={value:encodeURIComponent(T),bbox:g.value?g.value.join(","):""};return r.api.replace(t,(_,A)=>E[A.trim()]??"")}return(T,E)=>(s.openBlock(),s.createElementBlock("div",KM,[s.createElementVNode("div",qM,[s.withDirectives(s.createElementVNode("input",{type:"text","onUpdate:modelValue":E[0]||(E[0]=_=>a.value=_),placeholder:p.value,disabled:h.value,class:s.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",[s.unref(i),{"!border-red-600":r.error}]]),style:{border:"1px solid #CFD9E0"},onKeydown:s.withKeys(s.withModifiers(w,["prevent"]),["enter"])},null,42,GM),[[s.vModelText,a.value]]),d.value.length?(s.openBlock(),s.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:S,title:"Show search results"},[s.createVNode(s.unref(Y.Info),{class:"h-4 w-4"})])):s.createCommentVNode("",!0)]),s.createElementVNode("button",{type:"button",onClick:v,class:"flex items-center justify-center px-2 py-2 border rounded-md bg-white hover:bg-gray-50 text-gray-600 hover:text-blue-600 disabled:opacity-50 h-[38px]",disabled:c.value||!a.value?.trim()},[c.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:1,class:"h-5 w-5 animate-spin text-gray-400"})):(s.openBlock(),s.createBlock(s.unref(Y.Search),{key:0,class:"h-4 w-4"}))],8,JM),(s.openBlock(),s.createBlock(s.Teleport,{to:"body"},[u.value?(s.openBlock(),s.createElementBlock("div",YM,[s.createElementVNode("div",XM,[s.createElementVNode("div",ZM,[E[2]||(E[2]=s.createElementVNode("span",null,"Результати пошуку",-1)),s.createElementVNode("button",{class:"text-gray-500 hover:text-blue-600",onClick:E[1]||(E[1]=_=>u.value=!1),title:"Close"},[s.createVNode(s.unref(Y.X),{class:"h-4 w-4"})])]),s.createElementVNode("ul",null,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(d.value,(_,A)=>(s.openBlock(),s.createElementBlock("li",{key:A,onClick:I=>N(_),class:"px-3 py-2 cursor-pointer hover:bg-gray-100 border-b text-sm"},s.toDisplayString(_.display_name),9,QM))),128))]),d.value.length?s.createCommentVNode("",!0):(s.openBlock(),s.createElementBlock("div",e2," Не знайдено результатів "))])])):s.createCommentVNode("",!0)]))]))}}),t2={class:"vs-datalist space-y-3"},n2={class:"space-y-3"},r2=["onClick","disabled"],o2={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},s2=["disabled"],i2=Be(s.defineComponent({__name:"vs-input-datalist",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.computed(()=>Array.isArray(t.value)?t.value:[]),o=s.ref([]),i=s.computed(()=>e.schema?.map(y=>({...y,disabled:e.disabled||y.disabled}))??[]),l=s.computed(()=>i.value.map(y=>g(y))),a=s.computed(()=>i.value.reduce((b,w)=>{const v=Number(w?.col??12);return b+(Number.isFinite(v)&&v>0?v:12)},0)>12),c=s.computed(()=>e.disabled?!1:e.maxItems?r.value.length<e.maxItems:!0),d=s.computed(()=>e.disabled||r.value.length<=(e.minItems||0));s.watch(()=>r.value.length,()=>{u(),f()},{immediate:!0}),s.watch(()=>e.schema,f,{immediate:!0,deep:!0});function u(){const y=r.value.length;o.value.length<y?o.value=[...o.value,...Array.from({length:y-o.value.length},()=>Va())]:o.value.length>y&&o.value.splice(y)}function f(){if(!e.minItems||r.value.length>=e.minItems)return;const y=e.minItems-r.value.length,b=Array.from({length:y},p);t.value=[...r.value,...b]}function p(){const y={};return i.value.forEach(b=>{y[b.name]=b?.default??null}),y}function h(){c.value&&(t.value=[...r.value,p()],u())}function m(y){d.value||(t.value=r.value.filter((b,w)=>w!==y),u(),f())}function g(y){return{...y}}return(y,b)=>(s.openBlock(),s.createElementBlock("div",t2,[s.createElementVNode("div",n2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,(w,v)=>(s.openBlock(),s.createElementBlock("div",{key:o.value[v],class:s.normalizeClass(["flex items-center gap-3 rounded-lg transition-colors",{"border border-gray-300 p-2":a.value}])},[s.createVNode(Pt,{schema:l.value,layout:"inline",navigation:!1,values:r.value[v],"onUpdate:values":S=>r.value[v]=S,"form-id":o.value[v]},null,8,["schema","values","onUpdate:values","form-id"]),s.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:S=>m(v),disabled:d.value},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,r2)],2))),128)),r.value.length===0?(s.openBlock(),s.createElementBlock("div",o2,s.toDisplayString(e.emptyLabel),1)):s.createCommentVNode("",!0)]),s.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},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(e.addButtonText),1)],8,s2)]))}}),[["__scopeId","data-v-d0065868"]]),l2={class:"vs-dataform space-y-4"},a2=["draggable","onDragstart","onDragover","onDragenter","onDrop"],c2={class:"flex items-center gap-2"},d2=["onClick"],u2={class:"text-sm font-medium text-gray-700"},f2={class:"flex items-center gap-2"},p2=["title","onClick","disabled"],h2=["title","onClick","disabled"],m2={key:0,class:"rounded-lg border border-dashed border-gray-200 p-4 text-sm text-gray-500"},g2=["disabled"],y2=Be(s.defineComponent({__name:"vs-input-dataform",props:s.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(n){const e=n,t=s.useModel(n,"modelValue"),r=s.ref([]),o=s.ref([]),i=s.ref(0),l=s.ref(null),a=s.ref(null),c=s.ref(null),d=s.computed(()=>e.groupLabel??"Group"),u=s.computed(()=>e.emptyLabel??"Ще немає груп"),f=s.computed(()=>e.schema?.map(O=>({...O,disabled:e.disabled||O.disabled}))??[]),p=s.computed(()=>f.value.map(O=>_(O))),h=s.computed(()=>e.view==="accordion"),m=s.computed(()=>!!(e.collapsible||h.value)),g=s.computed(()=>e.draggable!==!1),y=s.computed(()=>e.disabled?!1:e.maxGroups?t.value.length<e.maxGroups:!0),b=s.computed(()=>e.disabled||t.value.length<=(e.minGroups||0));s.watch(()=>t.value.length,()=>{w(),v(),S()},{immediate:!0}),s.watch(()=>e.schema,S,{immediate:!0,deep:!0}),s.watch(()=>e.view,()=>{v()},{immediate:!0});function w(){const O=t.value.length;r.value.length<O?r.value=[...r.value,...Array.from({length:O-r.value.length},()=>Va())]:r.value.length>O&&r.value.splice(O)}function v(){const O=t.value.length;h.value?O===0?i.value=-1:i.value>=O?i.value=O-1:i.value<0&&(i.value=0):o.value.length<O?o.value=[...o.value,...Array.from({length:O-o.value.length},()=>!1)]:o.value.length>O&&o.value.splice(O)}function S(){if(!e.minGroups||t.value.length>=e.minGroups)return;const O=e.minGroups-t.value.length,ne=Array.from({length:O},N);t.value=[...t.value,...ne],v()}function N(){const O={};return f.value.forEach(ne=>{O[ne.name]=ne?.default??null}),O}function F(){y.value&&(t.value=[...t.value,N()],w(),v())}function T(O){b.value||(t.value=t.value.filter((ne,ae)=>ae!==O),w(),h.value?i.value>=t.value.length&&(i.value=t.value.length-1):o.value.splice(O,1),S())}function E(O){if(e.disabled)return;const ne=JSON.parse(JSON.stringify(t.value[O]??{}));t.value=[...t.value.slice(0,O+1),ne,...t.value.slice(O+1)],w(),h.value?i.value>O&&(i.value+=1):o.value.splice(O+1,0,o.value[O]??!1)}function _(O){return{...O}}function A(O){return h.value?i.value===-1&&O===0?!1:i.value!==O:!!o.value[O]}function I(O){if(m.value){if(h.value){i.value=O;return}o.value[O]=!o.value[O]}}function U(O,ne){if(!g.value||e.disabled){ne.preventDefault();return}l.value=O,a.value=O,c.value={groups:JSON.parse(JSON.stringify(t.value)),keys:[...r.value],states:[...o.value]},ne.dataTransfer?.setData("text/plain",String(O)),ne.dataTransfer?.setDragImage?.(ne.currentTarget,0,0)}function Z(O,ne){!g.value||e.disabled||l.value!==null&&X(O,ne)}function V(O,ne){X(O,ne)}function z(O){!g.value||e.disabled||L()}function oe(){c.value&&G(),l.value=null,a.value=null,c.value=null}function K(O,ne){const ae=[...t.value],[re]=ae.splice(O,1);ae.splice(ne,0,re),t.value=ae;const he=[...r.value],[Ae]=he.splice(O,1);if(he.splice(ne,0,Ae),r.value=he,h.value)i.value===O&&(i.value=ne);else{const Ce=[...o.value],[$e]=Ce.splice(O,1);Ce.splice(ne,0,$e),o.value=Ce}}function G(){c.value&&(t.value=c.value.groups,r.value=c.value.keys,o.value=c.value.states,c.value=null,a.value=null)}function X(O,ne){if(l.value===null)return;const ae=ce(O,ne);a.value=ae,j(ae)}function ce(O,ne){if(!ne?.currentTarget)return O;const ae=ne.currentTarget.getBoundingClientRect(),he=ne.clientY-ae.top>ae.height/2?O+1:O;return Math.max(0,Math.min(he,t.value.length))}function j(O){const ne=l.value;if(ne===null)return;let ae=O;if(ae>t.value.length&&(ae=t.value.length),ae===ne||ae===ne+1)return;const re=ae>ne?ae-1:ae;K(ne,re),l.value=re,a.value=ae>ne?re+1:re}function L(){c.value=null,l.value=null,a.value=null}return(O,ne)=>(s.openBlock(),s.createElementBlock("div",l2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(t.value,(ae,re)=>(s.openBlock(),s.createElementBlock("div",{key:r.value[re],class:s.normalizeClass(["relative border border-gray-200 rounded-lg bg-white transition vs-dataform__group",[e.view==="accordion"?"overflow-hidden":A(re)?"pt-6 px-6":"p-6"]]),draggable:g.value&&!e.disabled,onDragstart:he=>U(re,he),onDragend:oe,onDragover:s.withModifiers(he=>Z(re,he),["prevent"]),onDragenter:s.withModifiers(he=>V(re,he),["prevent"]),onDrop:s.withModifiers(he=>z(),["prevent"])},[s.createElementVNode("div",{class:s.normalizeClass(["flex items-center justify-between gap-2 border-b border-gray-100 px-4 py-3",[e.view!=="accordion"?"-mx-6 -mt-6 px-6":"",e.view!=="accordion"&&!A(re)?"rounded-t-lg":"rounded-lg"]])},[s.createElementVNode("div",c2,[g.value?(s.openBlock(),s.createBlock(s.unref(Y.GripVertical),{key:0,class:"h-4 w-4 text-gray-400","aria-hidden":"true"})):s.createCommentVNode("",!0),m.value?(s.openBlock(),s.createElementBlock("button",{key:1,type:"button",class:"rounded-full p-1 text-gray-500 transition hover:bg-gray-100",onClick:he=>I(re)},[s.createVNode(s.unref(Y.ChevronDown),{class:s.normalizeClass(["h-4 w-4 transition",A(re)?"-rotate-90":"rotate-0"])},null,8,["class"])],8,d2)):s.createCommentVNode("",!0),s.createElementVNode("div",u2,s.toDisplayString(`${d.value} (${re+1})`),1)]),s.createElementVNode("div",f2,[s.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:e.duplicateTitle,onClick:he=>E(re),disabled:e.disabled,draggable:"false"},[s.createVNode(s.unref(Y.Copy),{class:"h-4 w-4"})],8,p2),s.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:e.removeTitle,onClick:he=>T(re),disabled:b.value,draggable:"false"},[s.createVNode(s.unref(Y.Trash2),{class:"h-4 w-4"})],8,h2)])],2),s.withDirectives(s.createElementVNode("div",{class:s.normalizeClass(e.view==="accordion"?"p-6":"pt-6")},[s.createVNode(Pt,{class:"vs-dataform__form",schema:p.value,layout:"inline",navigation:!1,values:t.value[re],"onUpdate:values":he=>t.value[re]=he,"form-id":r.value[re],disabled:e.disabled},null,8,["schema","values","onUpdate:values","form-id","disabled"])],2),[[s.vShow,!A(re)]])],42,a2))),128)),t.value.length===0?(s.openBlock(),s.createElementBlock("div",m2,s.toDisplayString(u.value),1)):s.createCommentVNode("",!0),s.createElementVNode("button",{type:"button",class:"flex items-center gap-2 text-gray-600 hover:text-gray-900 font-medium transition-colors text-sm",onClick:F,disabled:!y.value},[s.createVNode(s.unref(Y.Plus),{class:"h-4 w-4"}),s.createTextVNode(" "+s.toDisplayString(e.addButtonText),1)],8,g2)]))}}),[["__scopeId","data-v-cfbcfed8"]]),hi="__vs_form_monaco_loader__",wr="__vs_form_monaco_script_loader__",mi="__vs_form_monaco_editor_loader__",Fa=s.defineComponent({__name:"vs-input-monaco",props:s.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(n,{expose:e}){const t=n,r=s.useModel(n,"modelValue"),o=s.ref(null),i=s.computed(()=>typeof t.height=="number"?`${t.height}px`:t.height||"280px");let l=null,a=null,c=!1;const d=()=>{if(a)return Promise.resolve(a);if(typeof window>"u")return Promise.resolve(null);const m=window;if(m.monaco?.editor?.create)return a=m.monaco,Promise.resolve(a);if(m[hi])return m[hi];const y=(async()=>{const b=S=>{if(Array.from(document.styleSheets||[]).some(T=>T?.href?.includes(S)))return;const F=document.createElement("link");F.rel="stylesheet",F.href=S,document.head.appendChild(F)},w=S=>{if(m[wr]?.[S])return m[wr][S];m[wr]||={};const N=Array.from(document.scripts).find(F=>F.src===S);return N?(m[wr][S]=new Promise((F,T)=>{const E=N.readyState;if(N.dataset.loaded==="true"||E==="loaded"||E==="complete"){F();return}N.addEventListener("load",()=>{N.dataset.loaded="true",F()},{once:!0}),N.addEventListener("error",_=>T(_),{once:!0})}),m[wr][S]):(m[wr][S]=new Promise((F,T)=>{const E=document.createElement("script");E.src=S,E.async=!0,E.onload=()=>{E.dataset.loaded="true",F()},E.onerror=_=>T(_),document.body.appendChild(E)}),m[wr][S])},v="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0/min/vs";return b(`${v}/editor/editor.main.min.css`),await w(`${v}/loader.min.js`),m[mi]||(m[mi]=new Promise((S,N)=>{window.require.config({paths:{vs:v}}),window.require(["vs/editor/editor.main"],()=>{a=window.monaco,m.monaco=a,S(a)},F=>N(F))}).catch(S=>{throw delete m[mi],S})),m[mi]})().catch(b=>{throw delete m[hi],b});return m[hi]=y,y},u=()=>{!o.value||!a||(l&&(l.dispose(),l=null),l=a.editor.create(o.value,{value:r.value||"",language:t.syntax,theme:t.theme,automaticLayout:!0,minimap:{enabled:!!t.minimap},readOnly:!!t.disabled}),l.onDidChangeModelContent(()=>{c||(r.value=l.getValue())}))},f=()=>{l?.focus()},p=()=>l,h=()=>a;return s.watch(()=>r.value,m=>{if(!l)return;const g=l.getValue();m!==g&&(c=!0,l.setValue(m||""),c=!1)}),s.watch(()=>t.syntax,m=>{!l||!a||a.editor.setModelLanguage(l.getModel(),m||"xml")}),s.watch(()=>t.theme,m=>{a&&a.editor.setTheme(m||"vs-light")}),s.watch(()=>t.disabled,m=>{l&&l.updateOptions({readOnly:!!m})}),s.watch(()=>t.minimap,m=>{l&&l.updateOptions({minimap:{enabled:!!m}})}),s.onMounted(async()=>{try{const m=await d();if(!m||!m.editor)return;a=m,u()}catch(m){console.error("Failed to load Monaco editor",m)}}),s.onBeforeUnmount(()=>{l&&(l.dispose(),l=null)}),e({focus:f,getEditor:p,getMonaco:h}),(m,g)=>(s.openBlock(),s.createElementBlock("div",{class:"w-full",style:s.normalizeStyle({height:i.value})},[s.createElementVNode("div",{ref_key:"editorContainer",ref:o,class:"w-full h-full overflow-hidden border border-[#CFD9E0] rounded"},null,512)],4))}}),Af={VsInputText:Yr,VsInputRadio:wa,VsInputInlineSelect:ii,"vs-input-text":Yr,"vs-input-password":Rb,"vs-input-textarea":of,"vs-input-richtext":sf,"vs-input-mask":qs,"vs-input-number":Nu,"vs-input-radio":wa,"vs-input-select":Da,"vs-input-inline-select":ii,"inline-select":ii,"vs-input-switcher":ga,"vs-input-static":ya,"vs-input-container":tf,"vs-input-date":Hu,"vs-input-checkbox":$u,"vs-input-file":Gu,"vs-input-file2":ri,file2:ri,File2:ri,"vs-input-file64":oi,file64:oi,File64:oi,"vs-input-html":ya,"vs-input-email":ba,"vs-input-tel":ka,"vs-input-datatable":lf,"vs-input-map":yf,"vs-input-file-list":Zu,"vs-input-tags":bf,"vs-input-slug":kf,"vs-input-codegen":wf,"vs-input-key-value":xf,"vs-input-text[]":vf,"vs-input-range":Sf,"vs-input-color":Cf,"vs-input-native-select":Da,VsInputArraySelect:pi,"vs-input-array":Ef,"vs-input-array-select":pi,"array-select":pi,"vs-input-address":Mf,"vs-input-datalist":i2,"vs-input-dataform":y2,"vs-input-monaco":Fa},b2=s.defineComponent({__name:"behavior",props:{api:{},set:{},button:{},error:{},value:{}},setup(n){const e=n,t=s.inject("values");function r(i,l){const a=l?.result||l?.message||l?.error||l?.detail;return i.status===400&&typeof a=="string"&&a.trim().toLowerCase()==="not found"?"Дані не знайдено.":i.status===500?"Помилка на сервері.":typeof a=="string"&&a.trim()?a:"При спробі завантажити дані виникла помилка."}async function o(){try{if(!e.api)return;const i=e.api.replace("{{value}}",e.value),l=await fetch(i);if(!l.ok){let c=null;try{c=await l.json()}catch{try{c=await l.text()}catch{c=null}}ke.notify({type:"warning",title:"Validation",message:r(l,c)});return}const a=await l.json();if(!e.set||!t)return;for(const[c,d]of Object.entries(e.set))t.value[c]=a.result[d]}catch(i){console.error(e.error,i)}}return(i,l)=>(s.openBlock(),s.createElementBlock("button",{onClick:o,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"},s.toDisplayString(i.button),1))}}),k2={class:"flex flex-col gap-1 w-full"},w2={class:"w-full"},x2=["disabled"],v2=["innerHTML"],C2=2e3,S2=10,_f=s.defineComponent({__name:"vs-compact-form-layout",props:s.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:s.mergeModels(["value-selected"],["update:modelValue"]),setup(n,{emit:e}){const t=n,r=s.useModel(n,"modelValue"),o=e,i=s.computed(()=>Ib[`${t.layout}`]),l=["label","placeholder","info","description","text","html"],a=s.ref(U()),c=s.computed(()=>_(t.item,a.value)),d=s.computed(()=>{const V={...c.value??{}},z=t.item?.name;return z&&f?.value?.[z]&&Object.assign(V,f.value[z]),V.__locale=a.value,V}),u=s.computed(()=>Af?.[`vs-input-${t.item.type}`]),f=s.inject("field-props"),p=s.computed(()=>{const V=s.unref(u);if(!V)return new Set;const z=V.props??V.__vccOpts?.props;if(!z)return new Set;const oe=Array.isArray(z)?z:Object.keys(z);return new Set(oe)}),m=[...["min","max","step"],"api","set","mask","layers"],g=new Set(["name","type","label","ua","col","rules","validators","conditions","schema","hidden","behavior","default","columns","layout","multiple","data","info","description","text","html","view","groupLabel","emptyLabel","minGroups","maxGroups","collapsible","draggable","props","__locale","slot","slots","component"]);function y(V){const z={};Object.entries(V).forEach(([K,G])=>{g.has(K)||K.includes(":")||G!==void 0&&(z[K]=G)});const oe=V.props;return oe&&typeof oe=="object"&&!Array.isArray(oe)&&Object.entries(oe).forEach(([K,G])=>{G!==void 0&&(z[K]=G)}),z}const b=s.computed(()=>{const V={...c.value??{}},z=t.item?.name;z&&f?.value?.[z]&&Object.assign(V,f.value[z]);const oe=p.value;let K;return oe.size?K=Object.fromEntries(Object.entries(V).filter(([G])=>oe.has(G))):K={...V},Object.assign(K,y(V)),m.forEach(G=>{const X=V[G];X!=null&&(K[G]=X)}),K}),w=V=>{const z=typeof V=="object"&&V!==null?V:{value:V};o("value-selected",{...z,name:z.name??t.item?.name})},v=/{{\s*([^}]+?)\s*}}/g,S=s.inject("values"),N=s.ref(!1),F=s.computed(()=>{const V=t.item?.api,z=t.item?.type?.toLowerCase();return typeof V=="string"&&V.trim().length>0&&(z==="text"||z==="mask")});function T(V,z){if(!(V==null||!z))return z.split(".").reduce((oe,K)=>oe?.[K.trim()],V)}async function E(){const V=String(r.value??"").trim();if(!V)return;const z=(t.item?.api??"").trim();if(!z)return;const oe=z.replace(v,(K,G)=>G.trim()==="value"?encodeURIComponent(V):"");N.value=!0;try{let K=await fetch(oe),G=0;for(;K.status===202&&G<S2;)G+=1,await new Promise(O=>{setTimeout(O,C2)}),K=await fetch(oe);if(K.status===202){ke.notify({type:"warning",title:"Validation",message:"Сервер ще обробляє запит. Спробуйте пізніше."});return}if(!K.ok){ke.notify({type:"warning",title:"Validation",message:"При спробі завантажити дані виникла помилка."});return}const X=await K.json(),ce=X?.result!==void 0?X.result:X,j=t.item?.set;if(!j||!S?.value)return;const L=t.item?.name;Object.entries(j).forEach(([O,ne])=>{if(!O)return;let ae=ne;L&&ae.startsWith(`${L}.`)&&(ae=ae.slice(L.length+1));const re=T(ce,ae);S.value[O]=re??null})}catch(K){console.error("API lookup error:",K),ke.notify({type:"warning",title:"Validation",message:"При спробі завантажити дані виникла помилка."})}finally{N.value=!1}}s.onMounted(()=>{a.value=U(),window.addEventListener("storage",Z)}),s.onUnmounted(()=>{window.removeEventListener("storage",Z)});function _(V,z){if(!V)return{};const oe={...V};return l.forEach(K=>{const G=I(V,K,z);G!=null&&(oe[K]=G)}),Array.isArray(V.options)&&(oe.options=V.options.map(K=>A(K,z))),oe}function A(V,z){if(!V)return V;const oe={...V},K=I(V,"label",z),G=I(V,"text",z);return K!=null&&(oe.label=K),G!=null?oe.text=G:K!=null&&(oe.text=K),oe}function I(V,z,oe){const K=`${z}:${oe}`;if(V?.[K]!=null)return V[K];if(z==="label"&&V?.[oe]!=null)return V[oe];if(V?.[z]!=null)return V[z];if(z==="label"){if(V?.ua!=null)return V.ua;if(V?.en!=null)return V.en}if(z==="text"||z==="html"){if(V?.ua!=null)return V.ua;if(V?.en!=null)return V.en}return null}function U(){return typeof window>"u"?"uk":localStorage.getItem("locale")||"uk"}function Z(){a.value=U()}return(V,z)=>(s.openBlock(),s.createBlock(s.resolveDynamicComponent(i.value),{ua:d.value.ua,error:t.error||"",item:d.value,columns:t.columns,label:d.value.label},{default:s.withCtx(()=>[s.createElementVNode("div",{class:s.normalizeClass(["flex w-full",`${t.item.type}-component`])},[s.createElementVNode("div",k2,[s.createElementVNode("div",{class:s.normalizeClass(["flex items-center gap-2 w-full",{"flex-1":F.value}])},[s.createElementVNode("div",w2,[(s.openBlock(),s.createBlock(s.resolveDynamicComponent(u.value),s.mergeProps(b.value,{modelValue:r.value,"onUpdate:modelValue":z[0]||(z[0]=oe=>r.value=oe),onValueSelected:w}),null,16,["modelValue"]))]),F.value?(s.openBlock(),s.createElementBlock("button",{key:0,type:"button",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] shrink-0",disabled:N.value||!r.value?.toString().trim(),onClick:E},[N.value?(s.openBlock(),s.createBlock(s.unref(Y.LoaderCircle),{key:1,class:"h-5 w-5 animate-spin text-gray-400"})):(s.openBlock(),s.createBlock(s.unref(Y.Search),{key:0,class:"h-4 w-4"}))],8,x2)):s.createCommentVNode("",!0)],2),d.value.description&&t.layout!=="settings"?(s.openBlock(),s.createElementBlock("p",{key:0,class:"text-sm text-gray-500",innerHTML:d.value.description},null,8,v2)):s.createCommentVNode("",!0)]),d.value.behavior?.api&&d.value.behavior?.button?(s.openBlock(),s.createBlock(b2,s.mergeProps({key:0},d.value.behavior,{value:r.value}),null,16,["value"])):s.createCommentVNode("",!0)],2)]),_:1},8,["ua","error","item","columns","label"]))}}),E2={class:"text-sm text-gray-800 mb-[4px] font-medium dark:text-neutral-300"},M2={class:"vs-compact-form-navigation__rail mt-[6px]"},A2=["onClick"],_2=Be(s.defineComponent({__name:"vs-compact-form-navigation",props:{target:{},scrollContainer:{},title:{default:"Навігація"},enabled:{type:Boolean,default:!0},width:{default:400}},setup(n,{expose:e}){const t=n,r=s.ref([]),o=s.ref(""),i=s.ref(""),l=s.computed(()=>!!t.enabled),a=s.computed(()=>["vs-compact-form-navigation flex flex-col pl-[6px] pt-[8px] pr-[8px]","sticky top-0 self-start shrink-0","max-h-full min-h-0 overflow-y-auto"]),c=s.computed(()=>{const I=t.width;if(I==null)return{};const U=typeof I=="number"?`${I}px`:`${I}`;return{width:U,minWidth:U}});let d=null,u=0,f=0,p=null,h=null,m=null;const g=()=>_(),y=()=>w();s.watch(()=>t.target,async I=>{if(F(),!I){p=null,r.value=[],o.value="";return}p=I,l.value&&(await s.nextTick(),N(I),w())},{immediate:!0}),s.watch(()=>t.scrollContainer,I=>{if(!l.value){h=I??null;return}b(I??null),s.nextTick(()=>w())},{immediate:!0}),s.onMounted(()=>{t.scrollContainer||b(null),w()}),s.onBeforeUnmount(()=>{F(),b(null,!0),p=null,typeof window<"u"&&(u&&window.cancelAnimationFrame(u),f&&window.cancelAnimationFrame(f))});function b(I,U=!1){if(m&&(m(),m=null),U){h=null;return}if(h=I??null,typeof window>"u")return;const Z=I??window,V=window;Z.addEventListener("scroll",g,{passive:!0}),V.addEventListener("resize",y),m=()=>{Z.removeEventListener("scroll",g),V.removeEventListener("resize",y)}}function w(){if(!l.value||!p)return;u&&typeof window<"u"&&window.cancelAnimationFrame(u);const I=()=>{v(),u=0};typeof window>"u"?I():u=window.requestAnimationFrame(I)}function v(){if(!l.value||!p)return;const I=Array.from(p.querySelectorAll("h1, h2")),U=new Set,Z=[];I.forEach((V,z)=>{const oe=V.textContent?.trim()??"";if(!oe)return;let K=(V.getAttribute("id")??"").trim();K||(K=S(oe)||`heading-${z+1}`);let G=K,X=1;for(;U.has(G);)G=`${K}-${X+=1}`;V.id!==G&&Object.assign(V,{id:G}),U.add(G),Z.push({id:G,text:oe,level:V.tagName.toLowerCase()==="h1"?1:2})}),r.value=Z,Z.length||(o.value=""),E()}function S(I){return I.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-")}function N(I){!I||!l.value||typeof MutationObserver>"u"||(F(),d=new MutationObserver(()=>w()),d.observe(I,{childList:!0,subtree:!0}))}function F(){d&&(d.disconnect(),d=null)}function T(I){const U=h;if(!U)return typeof window>"u"?I.offsetTop:I.getBoundingClientRect().top+window.scrollY;const Z=I.getBoundingClientRect(),V=U.getBoundingClientRect();return Z.top-V.top+U.scrollTop}function E(){if(!l.value||!r.value.length)return;const I=h,U=(I?I.scrollTop:null)||(typeof window<"u"?window.scrollY:0),Z=(I?I.clientHeight:null)||(typeof window<"u"?window.innerHeight:0),V=U+Z;let z=null;for(let K=0;K<r.value.length;K+=1){const G=r.value[K],X=document.getElementById(G.id);if(X){const ce=T(X);ce+X.offsetHeight>U&&ce<V&&(z=G.id)}}!z&&i.value&&(z=i.value),z&&(i.value=z);const oe=I?I.scrollHeight-I.clientHeight:document.documentElement.scrollHeight-window.innerHeight;U+5>=oe&&(z=r.value[r.value.length-1].id),z&&(o.value=z)}function _(){l.value&&(f&&window.cancelAnimationFrame(f),f=window.requestAnimationFrame(()=>{E(),f=0}))}function A(I){if(!l.value)return;const U=document.getElementById(I);if(!U)return;const Z=h,V=Math.max(0,T(U));Z?Z.scrollTo({top:V,behavior:"smooth"}):typeof window<"u"&&window.scrollTo({top:V,behavior:"smooth"})}return e({refresh:w}),(I,U)=>l.value&&r.value.length?(s.openBlock(),s.createElementBlock("div",{key:0,class:s.normalizeClass(a.value),style:s.normalizeStyle(c.value)},[s.createElementVNode("h2",E2,s.toDisplayString(I.title),1),s.createElementVNode("div",M2,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(r.value,Z=>(s.openBlock(),s.createElementBlock("div",{key:Z.id,class:s.normalizeClass(["vs-compact-form-navigation__item relative",Z.level===2?"vs-compact-form-navigation__item--nested":"",Z.id===o.value?"vs-compact-form-navigation__item--active":""])},[s.createElementVNode("button",{type:"button",onClick:V=>A(Z.id),class:s.normalizeClass(["vs-compact-form-navigation__button flex gap-x-3 py-[6px] pr-3 text-sm duration-200 hover:text-gray-800",Z.level===2?"pl-[15px]":"pl-[18px]",Z.id===o.value?"text-gray-800":"text-gray-500"])},[s.createElementVNode("span",null,s.toDisplayString(Z.text),1)],10,A2)],2))),128))])],6)):s.createCommentVNode("",!0)}}),[["__scopeId","data-v-1584a562"]]),qt={required:"Це поле є обов’язковим",email:"Неправильний email",tel:"Неправильний телефон",minlength:n=>`Мінімальна довжина — ${n} символів`,maxlength:n=>`Максимальна довжина — ${n} символів`,min:n=>`Значення має бути не менше ${n}`,max:n=>`Значення має бути не більше ${n}`},T2=new Set(["select","inline-select","array-select"]),B2=(n,e)=>typeof n=="string"?n.trim()?!1:qt.required:Array.isArray(n)?n.map(r=>typeof r=="string"?r.trim():r).filter(r=>r!=null&&r!=="").length?!1:qt.required:typeof n=="number"?Number?.isNaN(n)?qt?.required:!1:typeof n=="boolean"?e&&T2.has(e)||n?!1:qt.required:n?!1:qt.required,N2=n=>{const e=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;return n?e.test(n)?!1:qt.email:!1},D2=(n,e)=>{if(!n)return!1;const t=String(n).trim();if(!/^\+[1-9]\d{1,14}$/.test(t))return qt.tel;const i=(typeof e?.digits=="number"&&Number.isFinite(e.digits)&&e.digits>0?e.digits:qn(_n))||qn(_n);return t.length-1!==i?qt.tel:!1},Tf=n=>n==null?0:typeof n=="string"?n.trim().length:Array.isArray(n)?n.length:typeof n=="number"?n.toString().length:String(n).length,V2=(n,e)=>{if(n==null)return!1;const t=Number(e?.value??e?.length);return Number.isFinite(t)&&Tf(n)<t?e?.message||qt.minlength(t):!1},$2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value??e?.length);return Number.isFinite(t)&&Tf(n)>t?e?.message||qt.maxlength(t):!1},gi=n=>{if(typeof n=="number")return n;if(typeof n=="string"){const e=n.trim().replace(",",".");return e?Number(e):Number.NaN}return Number(n)},L2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value);if(!Number.isFinite(t))return!1;const r=gi(n);return Number.isFinite(r)&&r<t?e?.message||qt.min(t):!1},I2=(n,e)=>{if(n==null||n==="")return!1;const t=Number(e?.value);if(!Number.isFinite(t))return!1;const r=gi(n);return Number.isFinite(r)&&r>t?e?.message||qt.max(t):!1},O2=(n,e,t)=>{if(n==null||n==="")return!1;const r=e?.field;if(!r||!t)return!1;const o=t[r];if(o==null||o==="")return!1;const i=gi(n),l=gi(o);return!Number.isFinite(i)||!Number.isFinite(l)?!1:i>l?e?.message||`Значення має бути не більше ${l}`:!1},R2=(n,e)=>{const t=e.pattern??e.regexp,r=typeof t=="string"?new RegExp(t):t;if(Array.isArray(n)){const o=n.filter(Boolean);return o.length===0||o.every(i=>r.test(i))?!1:e.message}return!r.test(n)&&n?e.message:!1},F2=(n,e)=>!1,P2=(n,e,t,r)=>{switch(typeof e=="string"?e:e.type){case"required":return B2(n,r);case"email":return N2(n);case"tel":return D2(n,typeof e=="object"?e:void 0);case"regexp":return R2(n,e);case"minlength":return V2(n,e);case"maxlength":return $2(n,e);case"min":return L2(n,e);case"max":return I2(n,e);case"maxField":return O2(n,e,t);case"custom":return F2();default:return!1}},z2={autocomplete:"select",combobox:"select",datepicker:"date",markedtext:"mask",html:"static",geom:"map",filelist:"file-list",file:"file",file64:"file64",dropzone:"file",inlineselect:"inline-select"};function Bf(n){const e=n?.toLowerCase();return z2[e]||e}function Pa(n,e=!1){if(Array.isArray(n)){const r=[];return n.forEach(o=>{const i={...o};if(i.name=(o.name||o.id||o.key||"").toString(),i.type=Bf(o.type),i.label=o.label||o.ua,i.rules=o.rules||o.validators,i.type==="email"&&!i.rules&&(i.rules=["email"]),i.type==="tel"&&!i.rules){const l=i.mask||_n,a=qn(l)||qn(_n);i.rules=[{type:"tel",digits:a}]}!o.api&&o.data&&(i.api=`/api/suggest/${o.data}`),i.disabled=i.disabled??e,Array.isArray(i.schema)&&(i.schema=Pa(i.schema,i.disabled)),r.push(i)}),r}const t=[];return Object.entries(n).forEach(r=>{const o={name:r[0],...r[1],type:Bf(r[1].type),label:r[1].label||r[1].ua,rules:r[1].rules||r[1].validators,disabled:r[1].disabled??e};if(o.type==="email"&&!o.rules&&(o.rules=["email"]),o.type==="tel"&&!o.rules){const i=o.mask||_n,l=qn(i)||qn(_n);o.rules=[{type:"tel",digits:l}]}r[1].type?.includes("list")&&(o.multiple=!0),!o.api&&r[1].data&&(o.api=`/api/suggest/${r[1].data}`),Array.isArray(o.schema)&&(o.schema=Pa(o.schema,o.disabled)),t.push(o)}),t}function H2(n,e,t=!1){const r=s.computed(()=>Pa((Array.isArray(e),e),typeof t=="boolean"?t:t.value)),o=s.ref({});function i(p){return Qu(n?.value,p?.conditions)}const l=new Set(["maxField"]);function a(p){return typeof p.maxField=="string"&&p.maxField?!0:(p.rules||[]).some(h=>{const m=typeof h=="string"?h:h.type;return m?l.has(m):!1})}function c(p){const h=[],m=Number(p?.minlength),g=Number(p?.maxlength),y=Number(p?.min),b=Number(p?.max);!Number.isNaN(m)&&Number.isFinite(m)&&h.push({type:"minlength",value:m}),!Number.isNaN(g)&&Number.isFinite(g)&&h.push({type:"maxlength",value:g}),!Number.isNaN(y)&&Number.isFinite(y)&&h.push({type:"min",value:y}),!Number.isNaN(b)&&Number.isFinite(b)&&h.push({type:"max",value:b}),typeof p?.maxField=="string"&&p.maxField&&h.push({type:"maxField",field:p.maxField,message:p.maxFieldMessage});const w=[...h,...p.rules||[]];if(!w.length)return;if(!i(p)){delete o.value[p.name];return}let v=!1,S=null;w.forEach(N=>{const F=P2(n.value[p.name],N,n.value,p.type);F&&(v=!0,!S&&typeof F=="string"&&(S=F))}),v&&S?o.value[p.name]=S:delete o.value[p.name]}const d=(p=r.value,h=!0)=>(p.forEach(m=>{c(m),m.schema&&d(m.schema,!1)}),h&&Object.values(o.value).some(Boolean)?o.value:null);s.watch(n,()=>{const p=[],h=m=>{m.forEach(g=>{a(g)&&p.push(g),g.schema&&h(g.schema)})};h(r.value),p.forEach(c)},{deep:!0});const u=s.computed(()=>r.value?.filter(p=>p.hidden!==!0&&i(p)));return{errors:o,validate:d,reset:()=>{n.value={},o.value={}},visibleSchema:u}}const j2={class:"flex w-full h-full min-h-0 gap-6"},U2={key:0,"data-orientation":"horizontal",role:"none",class:"mt-1 shrink-0 h-[1px] w-full bg-slate-100 dark:bg-slate-600"},Pt=s.defineComponent({__name:"vs-compact-form",props:s.mergeModels({schema:{default:()=>[]},style:{default:()=>({})},modelValue:{},layout:{default:()=>"default"},formId:{default:()=>""},allowIdField:{type:Boolean,default:!1},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:s.mergeModels(["handle-submit","update:modelValue","value-selected"],["update:form","update:modelValue","update:values"]),setup(n,{expose:e,emit:t}){const r=t,o=n,i=s.computed(()=>!!o.formId||o.allowIdField),l=s.useModel(n,"form"),a=s.useModel(n,"modelValue"),c=s.useModel(n,"values"),d=s.computed({get:()=>c.value??a.value,set:K=>{a.value=K,c.value=K}}),{errors:u,validate:f,reset:p,visibleSchema:h}=H2(d,o.schema,s.toRef(o,"disabled")),m=s.ref(null),g=s.ref(null),y=s.ref({}),b=s.computed(()=>o.navigation),w=s.computed(()=>o.navWidth),v=s.computed(()=>o.style?.columns),S=Object.freeze({container:12,label:3}),N=s.computed(()=>o.columns??v.value??S),F=s.computed(()=>o.columns!=null||v.value!=null),T=s.computed(()=>F.value?"horizontal":o.layout),E=K=>K?.columns?"horizontal":T.value,_=K=>K?.columns??N.value,A=s.computed(()=>{const K={},G=X=>{if(!X)return;(Array.isArray(X)?X.map((j,L)=>({key:String(L),entry:j})):typeof X=="object"?Object.entries(X).map(([j,L])=>({key:j,entry:L})):[]).forEach(({key:j,entry:L})=>{if(!L||typeof L!="object")return;const O=L.name?String(L.name):j;O&&(K[O]={...L,name:O}),Array.isArray(L.schema)&&G(L.schema)})};return G(o.schema),K}),I=()=>{!i.value&&d.value&&delete d.value.id,r("update:modelValue",d.value),f(),r("handle-submit",d.value)},U=K=>{r("value-selected",K)};e({validate:f,reset:p,errors:u}),s.onMounted(()=>{l.value={value:d.value,errors:u.value,reset:p,validate:f,formId:o.formId}});function Z(K,G){if(K===G)return!0;if(typeof K!="object"||typeof G!="object"||!K||!G)return!1;const X=Object.keys(K),ce=Object.keys(G);return X.length!==ce.length?!1:X.every(j=>K[j]===G[j])}function V(K){return Array.isArray(K)?[...K]:K&&typeof K=="object"?{...K}:K}function z(K){Array.isArray(K)&&K.forEach(G=>{if(!G)return;const X=G.name,ce=G.default!==void 0;X&&ce&&d.value[X]===void 0&&(d.value[X]=V(G.default)),Array.isArray(G.schema)&&z(G.schema)})}return s.watch(h,K=>{z(K)},{immediate:!0,deep:!0}),s.provide("form",l),s.provide("values",d),s.inject("form-root-values",null)||s.provide("form-root-values",d),s.provide("field-props",y),s.provide("schema-by-name",A),(K,G)=>(s.openBlock(),s.createElementBlock("div",j2,[s.createElementVNode("div",{class:"flex-1 min-h-0 overflow-y-auto overflow-x-visible",ref_key:"formScrollContainer",ref:g},[s.createElementVNode("form",{ref_key:"formRef",ref:m,onSubmit:s.withModifiers(I,["prevent"]),class:s.normalizeClass(["grid grid-cols-12 p-1",T.value==="default"?"gap-6":"gap-4"])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(h),(X,ce)=>(s.openBlock(),s.createElementBlock("div",{key:X.name,class:s.normalizeClass(E(X)==="horizontal"?"col-span-12":`col-span-12 md:col-span-${X.col||12}`)},[s.createVNode(_f,{style:s.normalizeStyle(K.style),item:X,layout:E(X),columns:_(X),"model-value":d.value[X.name],"onUpdate:modelValue":j=>{if(X.name==="id"&&!i.value)return;const L=d.value[X.name];Z(L,j)||(d.value[X.name]=j)},error:s.unref(u)[X.name],onValueSelected:U},null,8,["style","item","layout","columns","model-value","onUpdate:modelValue","error"]),E(X)==="settings"&&ce+1!==s.unref(h).length?(s.openBlock(),s.createElementBlock("div",U2)):s.createCommentVNode("",!0)],2))),128))],34)],512),s.createVNode(_2,{target:m.value,"scroll-container":g.value,enabled:b.value,width:w.value},null,8,["target","scroll-container","enabled","width"])]))}}),W2={class:"relative"},K2={class:"w-full h-full fixed top-0 start-0 bg-black bg-opacity-50"},q2={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"},G2={class:"py-2.5 px-4 flex justify-between items-center border-0 border-b border-solid border-gray-200 dark:border-b-[#454545]"},J2={class:"font-medium text-gray-800 dark:text-[#ffffff]"},Y2={class:"p-4 mim-h-0 h-full overflow-auto"},Nf=s.defineComponent({__name:"modal-edit",props:{schema:{},defaultValue:{},mode:{},token:{},form:{},api:{},method:{}},emits:["close","save","edit"],setup(n,{emit:e}){const t=n,r=e,o=s.ref(t.schema),i=s.ref(t.defaultValue?JSON.parse(JSON.stringify(t.defaultValue)):{}),l=s.ref({}),a=s.ref(t.token||""),c=s.ref(t.token||""),d=s.ref(t.mode),u=()=>{const y=t.method?.trim().toUpperCase();return y==="GET"||y==="POST"||y==="PUT"?y:d.value==="add"?"POST":"PUT"},f=()=>{ke.notify({type:"success",title:"Успішно",message:`Дані успішно ${d.value==="add"?"збережено":"оновлено"}`})},p=y=>{const b={};y.id!==void 0&&y.id!==null&&(b.id=y.id,c.value=y.id.toString()),y.obj&&typeof y.obj=="object"&&Object.assign(b,y.obj),Object.keys(b).length&&(i.value={...i.value,...b})},h=async y=>{if(console.log(y),y.ok){await y.json().catch(()=>({})),f(),r("save",i.value);return}const b=await y.json().catch(()=>({})),w=b.message||b.error;if(y.status===400){ke.notify({type:"warning",title:"Помилка валідації",message:w||"Некоректні дані (400)"});return}if(y.status===403){ke.notify({type:"warning",title:"Доступ заборонено",message:w||"Доступ заборонено (403)"});return}if(y.status===500){ke.notify({type:"error",title:"Серверна помилка",message:w||"Виникла помилка на сервері (500)"});return}ke.notify({type:"error",title:"Помилка",message:w||`Статус: ${y.status}`})};async function m(){const y=l.value.validate();if(y){ke.notify({type:"warning",title:"Помилка валідації",message:Object.entries(y).map(([w,v])=>`${w}: ${v}`).join(`
|
|
5
5
|
`)});return}d.value==="add"&&i.value&&delete i.value.id;const b=t.api?.trim();if(b){const w=u();try{const v=await fetch(b,{method:w,headers:w==="GET"?void 0:{"Content-Type":"application/json"},body:w==="GET"?void 0:JSON.stringify(i.value)});await h(v)}catch(v){ke.notify({type:"error",title:"Помилка з’єднання",message:v.message||"Не вдалося виконати запит"})}return}if(a.value)try{const w=await fetch(`/api/table/${a.value}`,{method:d.value==="add"?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(i.value)});await h(w)}catch(w){ke.notify({type:"error",title:"Помилка з’єднання",message:w.message||"Не вдалося виконати запит"})}else r("edit",i.value),g()}function g(){r("close")}return s.onMounted(async()=>{try{if(t.form&&!t.schema){const y=await fetch(`/api/template/form/${t.form}`);if(!y.ok){ke.notify({type:y.status>=400&&y.status<500?"warning":"error",title:"Error",message:`Error code: ${y.status}`});return}const b=await y.json();o.value=b.schema,b.id&&(c.value=b.id),b.token&&(a.value=b.token,c.value||(c.value=b.token))}else if(t.token&&!t.defaultValue){a.value=t.token;const y=await fetch(`/api/form/${a.value}`);if(!y.ok){ke.notify({type:y.status>=400&&y.status<500?"warning":"error",title:"Error",message:`Error code: ${y.status}`});return}const b=await y.json();o.value=b.schema,b.data?i.value=b.data:d.value="add",p({id:b.id,obj:b.obj})}}catch(y){ke.notify({type:"error",title:"Error",message:y.message||"Unexpected error"}),console.error(y)}}),(y,b)=>(s.openBlock(),s.createElementBlock("div",W2,[s.createElementVNode("div",K2,[s.createElementVNode("div",q2,[s.createElementVNode("div",G2,[s.createElementVNode("h3",J2,s.toDisplayString(d.value==="add"?"Додати":"Змінити"),1),s.createElementVNode("button",{onClick:g,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"},[b[2]||(b[2]=s.createElementVNode("span",{class:"sr-only"},"Close",-1)),s.createVNode(s.unref(Y.X),{class:"h-4 w-4 flex-shrink-0"})])]),s.createElementVNode("div",Y2,[o.value?(s.openBlock(),s.createBlock(Pt,{key:0,schema:o.value,values:i.value,"onUpdate:values":b[0]||(b[0]=w=>i.value=w),form:l.value,"onUpdate:form":b[1]||(b[1]=w=>l.value=w),formId:c.value},null,8,["schema","values","form","formId"])):s.createCommentVNode("",!0)]),s.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"},[s.createElementVNode("button",{type:"button",onClick:g,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"}," Скасувати "),s.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"}," Зберегти ")])])])]))}}),Df=pa.form.richtext,Vf=ha.form.richtext,za={en:{form:{richtext:Df}},uk:{form:{richtext:Vf}}},$f=(n={mode:"edit",schema:null})=>new Promise(e=>{const{close:t}=ke.modal({title:n.mode==="add"?"Додати":"Редагувати",template:"",visible:!0,size:"medium",closeClickBack:!0,content:Nf,contentProps:{...n,onClose:()=>{e(null),t()},onSave:r=>{e(r),t()}}})});Pt.install=function(e){e.component("VForm",Pt),Object.assign(e.config.globalProperties,{$form:$f}),e.provide("form",$f),window.v3plugin||(window.v3plugin={})};function Gn(n){return typeof n=="string"||n instanceof String}function Lf(n){var e;return typeof n=="object"&&n!=null&&(n==null||(e=n.constructor)==null?void 0:e.name)==="Object"}function If(n,e){return Array.isArray(e)?If(n,(t,r)=>e.includes(r)):Object.entries(n).reduce((t,r)=>{let[o,i]=r;return e(i,o)&&(t[o]=i),t},{})}const xe={NONE:"NONE",LEFT:"LEFT",FORCE_LEFT:"FORCE_LEFT",RIGHT:"RIGHT",FORCE_RIGHT:"FORCE_RIGHT"};function Of(n){switch(n){case xe.LEFT:return xe.FORCE_LEFT;case xe.RIGHT:return xe.FORCE_RIGHT;default:return n}}function Ha(n){return n.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function yi(n,e){if(e===n)return!0;const t=Array.isArray(e),r=Array.isArray(n);let o;if(t&&r){if(e.length!=n.length)return!1;for(o=0;o<e.length;o++)if(!yi(e[o],n[o]))return!1;return!0}if(t!=r)return!1;if(e&&n&&typeof e=="object"&&typeof n=="object"){const i=e instanceof Date,l=n instanceof Date;if(i&&l)return e.getTime()==n.getTime();if(i!=l)return!1;const a=e instanceof RegExp,c=n instanceof RegExp;if(a&&c)return e.toString()==n.toString();if(a!=c)return!1;const d=Object.keys(e);for(o=0;o<d.length;o++)if(!Object.prototype.hasOwnProperty.call(n,d[o]))return!1;for(o=0;o<d.length;o++)if(!yi(n[d[o]],e[d[o]]))return!1;return!0}else if(e&&n&&typeof e=="function"&&typeof n=="function")return e.toString()===n.toString();return!1}class X2{constructor(e){for(Object.assign(this,e);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?xe.NONE:(this.oldSelection.end===this.cursorPos||this.oldSelection.start===this.cursorPos)&&this.oldSelection.end===this.oldSelection.start?xe.RIGHT:xe.LEFT}}function Te(n,e){return new Te.InputMask(n,e)}function Rf(n){if(n==null)throw new Error("mask property should be defined");return n instanceof RegExp?Te.MaskedRegExp:Gn(n)?Te.MaskedPattern:n===Date?Te.MaskedDate:n===Number?Te.MaskedNumber:Array.isArray(n)||n===Array?Te.MaskedDynamic:Te.Masked&&n.prototype instanceof Te.Masked?n:Te.Masked&&n instanceof Te.Masked?n.constructor:n instanceof Function?Te.MaskedFunction:(console.warn("Mask not found for mask",n),Te.Masked)}function Qr(n){if(!n)throw new Error("Options in not defined");if(Te.Masked){if(n.prototype instanceof Te.Masked)return{mask:n};const{mask:e=void 0,...t}=n instanceof Te.Masked?{mask:n}:Lf(n)&&n.mask instanceof Te.Masked?n:{};if(e){const r=e.mask;return{...If(e,(o,i)=>!i.startsWith("_")),mask:e.constructor,_mask:r,...t}}}return Lf(n)?{...n}:{mask:n}}function dn(n){if(Te.Masked&&n instanceof Te.Masked)return n;const e=Qr(n),t=Rf(e.mask);if(!t)throw new Error("Masked class is not found for provided mask "+e.mask+", appropriate module needs to be imported manually before creating mask.");return e.mask===t&&delete e.mask,e._mask&&(e.mask=e._mask,delete e._mask),new t(e)}Te.createMask=dn;class bi{get selectionStart(){let e;try{e=this._unsafeSelectionStart}catch{}return e??this.value.length}get selectionEnd(){let e;try{e=this._unsafeSelectionEnd}catch{}return e??this.value.length}select(e,t){if(!(e==null||t==null||e===this.selectionStart&&t===this.selectionEnd))try{this._unsafeSelect(e,t)}catch{}}get isActive(){return!1}}Te.MaskElement=bi;const Ff=90,Z2=89;class Vo extends bi{constructor(e){super(),this.input=e,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 e,t,r;return(e=(t=(r=this.input).getRootNode)==null?void 0:t.call(r))!=null?e:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(e){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",e.drop),this.input.addEventListener("click",e.click),this.input.addEventListener("focus",e.focus),this.input.addEventListener("blur",e.commit),this._handlers=e}_onKeydown(e){if(this._handlers.redo&&(e.keyCode===Ff&&e.shiftKey&&(e.metaKey||e.ctrlKey)||e.keyCode===Z2&&e.ctrlKey))return e.preventDefault(),this._handlers.redo(e);if(this._handlers.undo&&e.keyCode===Ff&&(e.metaKey||e.ctrlKey))return e.preventDefault(),this._handlers.undo(e);e.isComposing||this._handlers.selectionChange(e)}_onBeforeinput(e){if(e.inputType==="historyUndo"&&this._handlers.undo)return e.preventDefault(),this._handlers.undo(e);if(e.inputType==="historyRedo"&&this._handlers.redo)return e.preventDefault(),this._handlers.redo(e)}_onCompositionEnd(e){this._handlers.input(e)}_onInput(e){e.isComposing||this._handlers.input(e)}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={}}}Te.HTMLMaskElement=Vo;class Pf extends Vo{constructor(e){super(e),this.input=e}get _unsafeSelectionStart(){return this.input.selectionStart!=null?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(e,t){this.input.setSelectionRange(e,t)}get value(){return this.input.value}set value(e){this.input.value=e}}Te.HTMLMaskElement=Vo;class ja extends Vo{get _unsafeSelectionStart(){const e=this.rootElement,t=e.getSelection&&e.getSelection(),r=t&&t.anchorOffset,o=t&&t.focusOffset;return o==null||r==null||r<o?r:o}get _unsafeSelectionEnd(){const e=this.rootElement,t=e.getSelection&&e.getSelection(),r=t&&t.anchorOffset,o=t&&t.focusOffset;return o==null||r==null||r>o?r:o}_unsafeSelect(e,t){if(!this.rootElement.createRange)return;const r=this.rootElement.createRange();r.setStart(this.input.firstChild||this.input,e),r.setEnd(this.input.lastChild||this.input,t);const o=this.rootElement,i=o.getSelection&&o.getSelection();i&&(i.removeAllRanges(),i.addRange(r))}get value(){return this.input.textContent||""}set value(e){this.input.textContent=e}}Te.HTMLContenteditableMaskElement=ja;class ki{constructor(){this.states=[],this.currentIndex=0}get currentState(){return this.states[this.currentIndex]}get isEmpty(){return this.states.length===0}push(e){this.currentIndex<this.states.length-1&&(this.states.length=this.currentIndex+1),this.states.push(e),this.states.length>ki.MAX_LENGTH&&this.states.shift(),this.currentIndex=this.states.length-1}go(e){return this.currentIndex=Math.min(Math.max(this.currentIndex+e,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}}ki.MAX_LENGTH=100;class zf{constructor(e,t){this.el=e instanceof bi?e:e.isContentEditable&&e.tagName!=="INPUT"&&e.tagName!=="TEXTAREA"?new ja(e):new Pf(e),this.masked=dn(t),this._listeners={},this._value="",this._unmaskedValue="",this._rawInputValue="",this.history=new ki,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(e){var t;return e==null||((t=this.masked)==null?void 0:t.maskEquals(e))}get mask(){return this.masked.mask}set mask(e){if(this.maskEquals(e))return;if(!(e instanceof Te.Masked)&&this.masked.constructor===Rf(e)){this.masked.updateOptions({mask:e});return}const t=e instanceof Te.Masked?e:dn({mask:e});t.unmaskedValue=this.masked.unmaskedValue,this.masked=t}get value(){return this._value}set value(e){this.value!==e&&(this.masked.value=e,this.updateControl("auto"))}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(e){this.unmaskedValue!==e&&(this.masked.unmaskedValue=e,this.updateControl("auto"))}get rawInputValue(){return this._rawInputValue}set rawInputValue(e){this.rawInputValue!==e&&(this.masked.rawInputValue=e,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(e){this.masked.typedValueEquals(e)||(this.masked.typedValue=e,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(e,t){const r=this._listeners[e];r&&r.forEach(o=>o(t))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(e){!this.el||!this.el.isActive||(this.el.select(e,e),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(e){const t=this.masked.unmaskedValue,r=this.masked.value,o=this.masked.rawInputValue,i=this.displayValue,l=this.unmaskedValue!==t||this.value!==r||this._rawInputValue!==o;this._unmaskedValue=t,this._value=r,this._rawInputValue=o,this.el.value!==i&&(this.el.value=i),e==="auto"?this.alignCursor():e!=null&&(this.cursorPos=e),l&&this._fireChangeEvents(),!this._historyChanging&&(l||this.history.isEmpty)&&this.history.push({unmaskedValue:t,selection:{start:this.selectionStart,end:this.cursorPos}})}updateOptions(e){const{mask:t,...r}=e,o=!this.maskEquals(t),i=this.masked.optionsIsChanged(r);o&&(this.mask=t),i&&this.masked.updateOptions(r),(o||i)&&this.updateControl()}updateCursor(e){e!=null&&(this.cursorPos=e,this._delayUpdateCursor(e))}_delayUpdateCursor(e){this._abortUpdateCursor(),this._changingCursorPos=e,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,xe.LEFT))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),this}off(e,t){if(!this._listeners[e])return this;if(!t)return delete this._listeners[e],this;const r=this._listeners[e].indexOf(t);return r>=0&&this._listeners[e].splice(r,1),this}_onInput(e){this._inputEvent=e,this._abortUpdateCursor();const t=new X2({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),r=this.masked.rawInputValue,o=this.masked.splice(t.startChangePos,t.removed.length,t.inserted,t.removeDirection,{input:!0,raw:!0}).offset,i=r===this.masked.rawInputValue?t.removeDirection:xe.NONE;let l=this.masked.nearestInputPos(t.startChangePos+o,i);i!==xe.NONE&&(l=this.masked.nearestInputPos(l,xe.NONE)),this.updateControl(l),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(e){e.preventDefault(),e.stopPropagation()}_onFocus(e){this.alignCursorFriendly()}_onClick(e){this.alignCursorFriendly()}_onUndo(){this._applyHistoryState(this.history.undo())}_onRedo(){this._applyHistoryState(this.history.redo())}_applyHistoryState(e){e&&(this._historyChanging=!0,this.unmaskedValue=e.unmaskedValue,this.el.select(e.selection.start,e.selection.end),this._saveSelection(),this._historyChanging=!1)}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}}Te.InputMask=zf;class De{static normalize(e){return Array.isArray(e)?e:[e,new De]}constructor(e){Object.assign(this,{inserted:"",rawInserted:"",tailShift:0,skip:!1},e)}aggregate(e){return this.inserted+=e.inserted,this.rawInserted+=e.rawInserted,this.tailShift+=e.tailShift,this.skip=this.skip||e.skip,this}get offset(){return this.tailShift+this.inserted.length}get consumed(){return!!this.rawInserted||this.skip}equals(e){return this.inserted===e.inserted&&this.tailShift===e.tailShift&&this.rawInserted===e.rawInserted&&this.skip===e.skip}}Te.ChangeDetails=De;class un{constructor(e,t,r){e===void 0&&(e=""),t===void 0&&(t=0),this.value=e,this.from=t,this.stop=r}toString(){return this.value}extend(e){this.value+=String(e)}appendTo(e){return e.append(this.toString(),{tail:!0}).aggregate(e._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(e){Object.assign(this,e)}unshift(e){if(!this.value.length||e!=null&&this.from>=e)return"";const t=this.value[0];return this.value=this.value.slice(1),t}shift(){if(!this.value.length)return"";const e=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),e}}class yt{constructor(e){this._value="",this._update({...yt.DEFAULTS,...e}),this._initialized=!0}updateOptions(e){this.optionsIsChanged(e)&&this.withValueRefresh(this._update.bind(this,e))}_update(e){Object.assign(this,e)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(e){this._value=e._value}reset(){this._value=""}get value(){return this._value}set value(e){this.resolve(e,{input:!0})}resolve(e,t){t===void 0&&(t={input:!0}),this.reset(),this.append(e,t,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(e){this.resolve(e,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(e){this.format?this.value=this.format(e,this):this.unmaskedValue=String(e)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(e){this.resolve(e,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(e,t){return e}totalInputPositions(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),Math.min(this.displayValue.length,t-e)}extractInput(e,t,r){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),this.displayValue.slice(e,t)}extractTail(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),new un(this.extractInput(e,t),e)}appendTail(e){return Gn(e)&&(e=new un(String(e))),e.appendTo(this)}_appendCharRaw(e,t){return e?(this._value+=e,new De({inserted:e,rawInserted:e})):new De}_appendChar(e,t,r){t===void 0&&(t={});const o=this.state;let i;if([e,i]=this.doPrepareChar(e,t),e&&(i=i.aggregate(this._appendCharRaw(e,t)),!i.rawInserted&&this.autofix==="pad")){const l=this.state;this.state=o;let a=this.pad(t);const c=this._appendCharRaw(e,t);a=a.aggregate(c),c.rawInserted||a.equals(i)?i=a:this.state=l}if(i.inserted){let l,a=this.doValidate(t)!==!1;if(a&&r!=null){const c=this.state;if(this.overwrite===!0){l=r.state;for(let u=0;u<i.rawInserted.length;++u)r.unshift(this.displayValue.length-i.tailShift)}let d=this.appendTail(r);if(a=d.rawInserted.length===r.toString().length,!(a&&d.inserted)&&this.overwrite==="shift"){this.state=c,l=r.state;for(let u=0;u<i.rawInserted.length;++u)r.shift();d=this.appendTail(r),a=d.rawInserted.length===r.toString().length}a&&d.inserted&&(this.state=c)}a||(i=new De,this.state=o,r&&l&&(r.state=l))}return i}_appendPlaceholder(){return new De}_appendEager(){return new De}append(e,t,r){if(!Gn(e))throw new Error("value should be string");const o=Gn(r)?new un(String(r)):r;t!=null&&t.tail&&(t._beforeTailState=this.state);let i;[e,i]=this.doPrepare(e,t);for(let l=0;l<e.length;++l){const a=this._appendChar(e[l],t,o);if(!a.rawInserted&&!this.doSkipInvalid(e[l],t,o))break;i.aggregate(a)}return(this.eager===!0||this.eager==="append")&&t!=null&&t.input&&e&&i.aggregate(this._appendEager()),o!=null&&(i.tailShift+=this.appendTail(o).tailShift),i}remove(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),this._value=this.displayValue.slice(0,e)+this.displayValue.slice(t),new De}withValueRefresh(e){if(this._refreshing||!this._initialized)return e();this._refreshing=!0;const t=this.rawInputValue,r=this.value,o=e();return this.rawInputValue=t,this.value&&this.value!==r&&r.indexOf(this.value)===0&&(this.append(r.slice(this.displayValue.length),{},""),this.doCommit()),delete this._refreshing,o}runIsolated(e){if(this._isolated||!this._initialized)return e(this);this._isolated=!0;const t=this.state,r=e(this);return this.state=t,delete this._isolated,r}doSkipInvalid(e,t,r){return!!this.skipInvalid}doPrepare(e,t){return t===void 0&&(t={}),De.normalize(this.prepare?this.prepare(e,this,t):e)}doPrepareChar(e,t){return t===void 0&&(t={}),De.normalize(this.prepareChar?this.prepareChar(e,this,t):e)}doValidate(e){return(!this.validate||this.validate(this.value,this,e))&&(!this.parent||this.parent.doValidate(e))}doCommit(){this.commit&&this.commit(this.value,this)}splice(e,t,r,o,i){r===void 0&&(r=""),o===void 0&&(o=xe.NONE),i===void 0&&(i={input:!0});const l=e+t,a=this.extractTail(l),c=this.eager===!0||this.eager==="remove";let d;c&&(o=Of(o),d=this.extractInput(0,l,{raw:!0}));let u=e;const f=new De;if(o!==xe.NONE&&(u=this.nearestInputPos(e,t>1&&e!==0&&!c?xe.NONE:o),f.tailShift=u-e),f.aggregate(this.remove(u)),c&&o!==xe.NONE&&d===this.rawInputValue)if(o===xe.FORCE_LEFT){let p;for(;d===this.rawInputValue&&(p=this.displayValue.length);)f.aggregate(new De({tailShift:-1})).aggregate(this.remove(p-1))}else o===xe.FORCE_RIGHT&&a.unshift();return f.aggregate(this.append(r,i,a))}maskEquals(e){return this.mask===e}optionsIsChanged(e){return!yi(this,e)}typedValueEquals(e){const t=this.typedValue;return e===t||yt.EMPTY_VALUES.includes(e)&&yt.EMPTY_VALUES.includes(t)||(this.format?this.format(e,this)===this.format(this.typedValue,this):!1)}pad(e){return new De}}yt.DEFAULTS={skipInvalid:!0},yt.EMPTY_VALUES=[void 0,null,""],Te.Masked=yt;class Jn{constructor(e,t){e===void 0&&(e=[]),t===void 0&&(t=0),this.chunks=e,this.from=t}toString(){return this.chunks.map(String).join("")}extend(e){if(!String(e))return;e=Gn(e)?new un(String(e)):e;const t=this.chunks[this.chunks.length-1],r=t&&(t.stop===e.stop||e.stop==null)&&e.from===t.from+t.toString().length;if(e instanceof un)r?t.extend(e.toString()):this.chunks.push(e);else if(e instanceof Jn){if(e.stop==null){let o;for(;e.chunks.length&&e.chunks[0].stop==null;)o=e.chunks.shift(),o.from+=e.from,this.extend(o)}e.toString()&&(e.stop=e.blockIndex,this.chunks.push(e))}}appendTo(e){if(!(e instanceof Te.MaskedPattern))return new un(this.toString()).appendTo(e);const t=new De;for(let r=0;r<this.chunks.length;++r){const o=this.chunks[r],i=e._mapPosToBlock(e.displayValue.length),l=o.stop;let a;if(l!=null&&(!i||i.index<=l)&&((o instanceof Jn||e._stops.indexOf(l)>=0)&&t.aggregate(e._appendPlaceholder(l)),a=o instanceof Jn&&e._blocks[l]),a){const c=a.appendTail(o);t.aggregate(c);const d=o.toString().slice(c.rawInserted.length);d&&t.aggregate(e.append(d,{tail:!0}))}else t.aggregate(e.append(o.toString(),{tail:!0}))}return t}get state(){return{chunks:this.chunks.map(e=>e.state),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(e){const{chunks:t,...r}=e;Object.assign(this,r),this.chunks=t.map(o=>{const i="chunks"in o?new Jn:new un;return i.state=o,i})}unshift(e){if(!this.chunks.length||e!=null&&this.from>=e)return"";const t=e!=null?e-this.from:e;let r=0;for(;r<this.chunks.length;){const o=this.chunks[r],i=o.unshift(t);if(o.toString()){if(!i)break;++r}else this.chunks.splice(r,1);if(i)return i}return""}shift(){if(!this.chunks.length)return"";let e=this.chunks.length-1;for(;0<=e;){const t=this.chunks[e],r=t.shift();if(t.toString()){if(!r)break;--e}else this.chunks.splice(e,1);if(r)return r}return""}}class Q2{constructor(e,t){this.masked=e,this._log=[];const{offset:r,index:o}=e._mapPosToBlock(t)||(t<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=r,this.index=o,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(e){Object.assign(this,e)}pushState(){this._log.push(this.state)}popState(){const e=this._log.pop();return e&&(this.state=e),e}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(e){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=((t=this.block)==null?void 0:t.displayValue.length)||0){var t;if(e())return this.ok=!0}return this.ok=!1}_pushRight(e){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(e())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,xe.FORCE_LEFT),this.offset!==0))return!0})}pushLeftBeforeInput(){return this._pushLeft(()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,xe.LEFT),!0})}pushLeftBeforeRequired(){return this._pushLeft(()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,xe.LEFT),!0})}pushRightBeforeFilled(){return this._pushRight(()=>{if(!(this.block.isFixed||!this.block.value)&&(this.offset=this.block.nearestInputPos(this.offset,xe.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,xe.NONE),!0})}pushRightBeforeRequired(){return this._pushRight(()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,xe.NONE),!0})}}class Ua{constructor(e){Object.assign(this,e),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(e,t){return e===void 0&&(e=0),t===void 0&&(t=this._value.length),this._value=this._value.slice(0,e)+this._value.slice(t),this._value||(this._isRawInput=!1),new De}nearestInputPos(e,t){t===void 0&&(t=xe.NONE);const r=0,o=this._value.length;switch(t){case xe.LEFT:case xe.FORCE_LEFT:return r;case xe.NONE:case xe.RIGHT:case xe.FORCE_RIGHT:default:return o}}totalInputPositions(e,t){return e===void 0&&(e=0),t===void 0&&(t=this._value.length),this._isRawInput?t-e:0}extractInput(e,t,r){return e===void 0&&(e=0),t===void 0&&(t=this._value.length),r===void 0&&(r={}),r.raw&&this._isRawInput&&this._value.slice(e,t)||""}get isComplete(){return!0}get isFilled(){return!!this._value}_appendChar(e,t){if(t===void 0&&(t={}),this.isFilled)return new De;const r=this.eager===!0||this.eager==="append",i=this.char===e&&(this.isUnmasking||t.input||t.raw)&&(!t.raw||!r)&&!t.tail,l=new De({inserted:this.char,rawInserted:i?this.char:""});return this._value=this.char,this._isRawInput=i&&(t.raw||t.input),l}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const e=new De;return this.isFilled||(this._value=e.inserted=this.char),e}extractTail(){return new un("")}appendTail(e){return Gn(e)&&(e=new un(String(e))),e.appendTo(this)}append(e,t,r){const o=this._appendChar(e[0],t);return r!=null&&(o.tailShift+=this.appendTail(r).tailShift),o}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(e){this._value=e._value,this._isRawInput=!!e._rawInputValue}pad(e){return this._appendPlaceholder()}}class $o{constructor(e){const{parent:t,isOptional:r,placeholderChar:o,displayChar:i,lazy:l,eager:a,...c}=e;this.masked=dn(c),Object.assign(this,{parent:t,isOptional:r,placeholderChar:o,displayChar:i,lazy:l,eager:a})}reset(){this.isFilled=!1,this.masked.reset()}remove(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.value.length),e===0&&t>=1?(this.isFilled=!1,this.masked.remove(e,t)):new De}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(e,t){if(t===void 0&&(t={}),this.isFilled)return new De;const r=this.masked.state;let o=this.masked._appendChar(e,this.currentMaskFlags(t));return o.inserted&&this.doValidate(t)===!1&&(o=new De,this.masked.state=r),!o.inserted&&!this.isOptional&&!this.lazy&&!t.input&&(o.inserted=this.placeholderChar),o.skip=!o.inserted&&!this.isOptional,this.isFilled=!!o.inserted,o}append(e,t,r){return this.masked.append(e,this.currentMaskFlags(t),r)}_appendPlaceholder(){return this.isFilled||this.isOptional?new De:(this.isFilled=!0,new De({inserted:this.placeholderChar}))}_appendEager(){return new De}extractTail(e,t){return this.masked.extractTail(e,t)}appendTail(e){return this.masked.appendTail(e)}extractInput(e,t,r){return e===void 0&&(e=0),t===void 0&&(t=this.value.length),this.masked.extractInput(e,t,r)}nearestInputPos(e,t){t===void 0&&(t=xe.NONE);const r=0,o=this.value.length,i=Math.min(Math.max(e,r),o);switch(t){case xe.LEFT:case xe.FORCE_LEFT:return this.isComplete?i:r;case xe.RIGHT:case xe.FORCE_RIGHT:return this.isComplete?i:o;case xe.NONE:default:return i}}totalInputPositions(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.value.length),this.value.slice(e,t).length}doValidate(e){return this.masked.doValidate(this.currentMaskFlags(e))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(e)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(e){this.masked.state=e.masked,this.isFilled=e.isFilled}currentMaskFlags(e){var t;return{...e,_beforeTailState:(e==null||(t=e._beforeTailState)==null?void 0:t.masked)||e?._beforeTailState}}pad(e){return new De}}$o.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 Hf extends yt{updateOptions(e){super.updateOptions(e)}_update(e){const t=e.mask;t&&(e.validate=r=>r.search(t)>=0),super._update(e)}}Te.MaskedRegExp=Hf;class bt extends yt{constructor(e){super({...bt.DEFAULTS,...e,definitions:Object.assign({},$o.DEFAULT_DEFINITIONS,e?.definitions)})}updateOptions(e){super.updateOptions(e)}_update(e){e.definitions=Object.assign({},this.definitions,e.definitions),super._update(e),this._rebuildMask()}_rebuildMask(){const e=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const t=this.mask;if(!t||!e)return;let r=!1,o=!1;for(let i=0;i<t.length;++i){if(this.blocks){const d=t.slice(i),u=Object.keys(this.blocks).filter(p=>d.indexOf(p)===0);u.sort((p,h)=>h.length-p.length);const f=u[0];if(f){const{expose:p,repeat:h,...m}=Qr(this.blocks[f]),g={lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,autofix:this.autofix,...m,repeat:h,parent:this},y=h!=null?new Te.RepeatBlock(g):dn(g);y&&(this._blocks.push(y),p&&(this.exposeBlock=y),this._maskedBlocks[f]||(this._maskedBlocks[f]=[]),this._maskedBlocks[f].push(this._blocks.length-1)),i+=f.length-1;continue}}let l=t[i],a=l in e;if(l===bt.STOP_CHAR){this._stops.push(this._blocks.length);continue}if(l==="{"||l==="}"){r=!r;continue}if(l==="["||l==="]"){o=!o;continue}if(l===bt.ESCAPE_CHAR){if(++i,l=t[i],!l)break;a=!1}const c=a?new $o({isOptional:o,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...Qr(e[l]),parent:this}):new Ua({char:l,eager:this.eager,isUnmasking:r});this._blocks.push(c)}}get state(){return{...super.state,_blocks:this._blocks.map(e=>e.state)}}set state(e){if(!e){this.reset();return}const{_blocks:t,...r}=e;this._blocks.forEach((o,i)=>o.state=t[i]),super.state=r}reset(){super.reset(),this._blocks.forEach(e=>e.reset())}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every(e=>e.isComplete)}get isFilled(){return this._blocks.every(e=>e.isFilled)}get isFixed(){return this._blocks.every(e=>e.isFixed)}get isOptional(){return this._blocks.every(e=>e.isOptional)}doCommit(){this._blocks.forEach(e=>e.doCommit()),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce((e,t)=>e+=t.unmaskedValue,"")}set unmaskedValue(e){if(this.exposeBlock){const t=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=e,this.appendTail(t),this.doCommit()}else super.unmaskedValue=e}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce((e,t)=>e+=t.value,"")}set value(e){if(this.exposeBlock){const t=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=e,this.appendTail(t),this.doCommit()}else super.value=e}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(e){if(this.exposeBlock){const t=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=e,this.appendTail(t),this.doCommit()}else super.typedValue=e}get displayValue(){return this._blocks.reduce((e,t)=>e+=t.displayValue,"")}appendTail(e){return super.appendTail(e).aggregate(this._appendPlaceholder())}_appendEager(){var e;const t=new De;let r=(e=this._mapPosToBlock(this.displayValue.length))==null?void 0:e.index;if(r==null)return t;this._blocks[r].isFilled&&++r;for(let o=r;o<this._blocks.length;++o){const i=this._blocks[o]._appendEager();if(!i.inserted)break;t.aggregate(i)}return t}_appendCharRaw(e,t){t===void 0&&(t={});const r=this._mapPosToBlock(this.displayValue.length),o=new De;if(!r)return o;for(let l=r.index,a;a=this._blocks[l];++l){var i;const c=a._appendChar(e,{...t,_beforeTailState:(i=t._beforeTailState)==null||(i=i._blocks)==null?void 0:i[l]});if(o.aggregate(c),c.consumed)break}return o}extractTail(e,t){e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length);const r=new Jn;return e===t||this._forEachBlocksInRange(e,t,(o,i,l,a)=>{const c=o.extractTail(l,a);c.stop=this._findStopBefore(i),c.from=this._blockStartPos(i),c instanceof Jn&&(c.blockIndex=i),r.extend(c)}),r}extractInput(e,t,r){if(e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),r===void 0&&(r={}),e===t)return"";let o="";return this._forEachBlocksInRange(e,t,(i,l,a,c)=>{o+=i.extractInput(a,c,r)}),o}_findStopBefore(e){let t;for(let r=0;r<this._stops.length;++r){const o=this._stops[r];if(o<=e)t=o;else break}return t}_appendPlaceholder(e){const t=new De;if(this.lazy&&e==null)return t;const r=this._mapPosToBlock(this.displayValue.length);if(!r)return t;const o=r.index,i=e??this._blocks.length;return this._blocks.slice(o,i).forEach(l=>{if(!l.lazy||e!=null){var a;t.aggregate(l._appendPlaceholder((a=l._blocks)==null?void 0:a.length))}}),t}_mapPosToBlock(e){let t="";for(let r=0;r<this._blocks.length;++r){const o=this._blocks[r],i=t.length;if(t+=o.displayValue,e<=t.length)return{index:r,offset:e-i}}}_blockStartPos(e){return this._blocks.slice(0,e).reduce((t,r)=>t+=r.displayValue.length,0)}_forEachBlocksInRange(e,t,r){t===void 0&&(t=this.displayValue.length);const o=this._mapPosToBlock(e);if(o){const i=this._mapPosToBlock(t),l=i&&o.index===i.index,a=o.offset,c=i&&l?i.offset:this._blocks[o.index].displayValue.length;if(r(this._blocks[o.index],o.index,a,c),i&&!l){for(let d=o.index+1;d<i.index;++d)r(this._blocks[d],d,0,this._blocks[d].displayValue.length);r(this._blocks[i.index],i.index,0,i.offset)}}}remove(e,t){e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length);const r=super.remove(e,t);return this._forEachBlocksInRange(e,t,(o,i,l,a)=>{r.aggregate(o.remove(l,a))}),r}nearestInputPos(e,t){if(t===void 0&&(t=xe.NONE),!this._blocks.length)return 0;const r=new Q2(this,e);if(t===xe.NONE)return r.pushRightBeforeInput()||(r.popState(),r.pushLeftBeforeInput())?r.pos:this.displayValue.length;if(t===xe.LEFT||t===xe.FORCE_LEFT){if(t===xe.LEFT){if(r.pushRightBeforeFilled(),r.ok&&r.pos===e)return e;r.popState()}if(r.pushLeftBeforeInput(),r.pushLeftBeforeRequired(),r.pushLeftBeforeFilled(),t===xe.LEFT){if(r.pushRightBeforeInput(),r.pushRightBeforeRequired(),r.ok&&r.pos<=e||(r.popState(),r.ok&&r.pos<=e))return r.pos;r.popState()}return r.ok?r.pos:t===xe.FORCE_LEFT?0:(r.popState(),r.ok||(r.popState(),r.ok)?r.pos:0)}return t===xe.RIGHT||t===xe.FORCE_RIGHT?(r.pushRightBeforeInput(),r.pushRightBeforeRequired(),r.pushRightBeforeFilled()?r.pos:t===xe.FORCE_RIGHT?this.displayValue.length:(r.popState(),r.ok||(r.popState(),r.ok)?r.pos:this.nearestInputPos(e,xe.LEFT))):e}totalInputPositions(e,t){e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length);let r=0;return this._forEachBlocksInRange(e,t,(o,i,l,a)=>{r+=o.totalInputPositions(l,a)}),r}maskedBlock(e){return this.maskedBlocks(e)[0]}maskedBlocks(e){const t=this._maskedBlocks[e];return t?t.map(r=>this._blocks[r]):[]}pad(e){const t=new De;return this._forEachBlocksInRange(0,this.displayValue.length,r=>t.aggregate(r.pad(e))),t}}bt.DEFAULTS={...yt.DEFAULTS,lazy:!0,placeholderChar:"_"},bt.STOP_CHAR="`",bt.ESCAPE_CHAR="\\",bt.InputDefinition=$o,bt.FixedDefinition=Ua,Te.MaskedPattern=bt;class Lo extends bt{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(e){super(e)}updateOptions(e){super.updateOptions(e)}_update(e){const{to:t=this.to||0,from:r=this.from||0,maxLength:o=this.maxLength||0,autofix:i=this.autofix,...l}=e;this.to=t,this.from=r,this.maxLength=Math.max(String(t).length,o),this.autofix=i;const a=String(this.from).padStart(this.maxLength,"0"),c=String(this.to).padStart(this.maxLength,"0");let d=0;for(;d<c.length&&c[d]===a[d];)++d;l.mask=c.slice(0,d).replace(/0/g,"\\0")+"0".repeat(this.maxLength-d),super._update(l)}get isComplete(){return super.isComplete&&!!this.value}boundaries(e){let t="",r="";const[,o,i]=e.match(/^(\D*)(\d*)(\D*)/)||[];return i&&(t="0".repeat(o.length)+i,r="9".repeat(o.length)+i),t=t.padEnd(this.maxLength,"0"),r=r.padEnd(this.maxLength,"9"),[t,r]}doPrepareChar(e,t){t===void 0&&(t={});let r;return[e,r]=super.doPrepareChar(e.replace(/\D/g,""),t),e||(r.skip=!this.isComplete),[e,r]}_appendCharRaw(e,t){if(t===void 0&&(t={}),!this.autofix||this.value.length+1>this.maxLength)return super._appendCharRaw(e,t);const r=String(this.from).padStart(this.maxLength,"0"),o=String(this.to).padStart(this.maxLength,"0"),[i,l]=this.boundaries(this.value+e);return Number(l)<this.from?super._appendCharRaw(r[this.value.length],t):Number(i)>this.to?!t.tail&&this.autofix==="pad"&&this.value.length+1<this.maxLength?super._appendCharRaw(r[this.value.length],t).aggregate(this._appendCharRaw(e,t)):super._appendCharRaw(o[this.value.length],t):super._appendCharRaw(e,t)}doValidate(e){const t=this.value;if(t.search(/[^0]/)===-1&&t.length<=this._matchFrom)return!0;const[o,i]=this.boundaries(t);return this.from<=Number(i)&&Number(o)<=this.to&&super.doValidate(e)}pad(e){const t=new De;if(this.value.length===this.maxLength)return t;const r=this.value,o=this.maxLength-this.value.length;if(o){this.reset();for(let i=0;i<o;++i)t.aggregate(super._appendCharRaw("0",e));r.split("").forEach(i=>this._appendCharRaw(i))}return t}}Te.MaskedRange=Lo;const eA="d{.}`m{.}`Y";class fn extends bt{static extractPatternOptions(e){const{mask:t,pattern:r,...o}=e;return{...o,mask:Gn(t)?t:r}}constructor(e){super(fn.extractPatternOptions({...fn.DEFAULTS,...e}))}updateOptions(e){super.updateOptions(e)}_update(e){const{mask:t,pattern:r,blocks:o,...i}={...fn.DEFAULTS,...e},l=Object.assign({},fn.GET_DEFAULT_BLOCKS());e.min&&(l.Y.from=e.min.getFullYear()),e.max&&(l.Y.to=e.max.getFullYear()),e.min&&e.max&&l.Y.from===l.Y.to&&(l.m.from=e.min.getMonth()+1,l.m.to=e.max.getMonth()+1,l.m.from===l.m.to&&(l.d.from=e.min.getDate(),l.d.to=e.max.getDate())),Object.assign(l,this.blocks,o),super._update({...i,mask:Gn(t)?t:r,blocks:l})}doValidate(e){const t=this.date;return super.doValidate(e)&&(!this.isComplete||this.isDateExist(this.value)&&t!=null&&(this.min==null||this.min<=t)&&(this.max==null||t<=this.max))}isDateExist(e){return this.format(this.parse(e,this),this).indexOf(e)>=0}get date(){return this.typedValue}set date(e){this.typedValue=e}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(e){super.typedValue=e}maskEquals(e){return e===Date||super.maskEquals(e)}optionsIsChanged(e){return super.optionsIsChanged(fn.extractPatternOptions(e))}}fn.GET_DEFAULT_BLOCKS=()=>({d:{mask:Lo,from:1,to:31,maxLength:2},m:{mask:Lo,from:1,to:12,maxLength:2},Y:{mask:Lo,from:1900,to:9999}}),fn.DEFAULTS={...bt.DEFAULTS,mask:Date,pattern:eA,format:(n,e)=>{if(!n)return"";const t=String(n.getDate()).padStart(2,"0"),r=String(n.getMonth()+1).padStart(2,"0"),o=n.getFullYear();return[t,r,o].join(".")},parse:(n,e)=>{const[t,r,o]=n.split(".").map(Number);return new Date(o,r-1,t)}},Te.MaskedDate=fn;class Io extends yt{constructor(e){super({...Io.DEFAULTS,...e}),this.currentMask=void 0}updateOptions(e){super.updateOptions(e)}_update(e){super._update(e),"mask"in e&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(e.mask)?e.mask.map(t=>{const{expose:r,...o}=Qr(t),i=dn({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...o});return r&&(this.exposeMask=i),i}):[])}_appendCharRaw(e,t){t===void 0&&(t={});const r=this._applyDispatch(e,t);return this.currentMask&&r.aggregate(this.currentMask._appendChar(e,this.currentMaskFlags(t))),r}_applyDispatch(e,t,r){e===void 0&&(e=""),t===void 0&&(t={}),r===void 0&&(r="");const o=t.tail&&t._beforeTailState!=null?t._beforeTailState._value:this.value,i=this.rawInputValue,l=t.tail&&t._beforeTailState!=null?t._beforeTailState._rawInputValue:i,a=i.slice(l.length),c=this.currentMask,d=new De,u=c?.state;return this.currentMask=this.doDispatch(e,{...t},r),this.currentMask&&(this.currentMask!==c?(this.currentMask.reset(),l&&(this.currentMask.append(l,{raw:!0}),d.tailShift=this.currentMask.value.length-o.length),a&&(d.tailShift+=this.currentMask.append(a,{raw:!0,tail:!0}).tailShift)):u&&(this.currentMask.state=u)),d}_appendPlaceholder(){const e=this._applyDispatch();return this.currentMask&&e.aggregate(this.currentMask._appendPlaceholder()),e}_appendEager(){const e=this._applyDispatch();return this.currentMask&&e.aggregate(this.currentMask._appendEager()),e}appendTail(e){const t=new De;return e&&t.aggregate(this._applyDispatch("",{},e)),t.aggregate(this.currentMask?this.currentMask.appendTail(e):super.appendTail(e))}currentMaskFlags(e){var t,r;return{...e,_beforeTailState:((t=e._beforeTailState)==null?void 0:t.currentMaskRef)===this.currentMask&&((r=e._beforeTailState)==null?void 0:r.currentMask)||e._beforeTailState}}doDispatch(e,t,r){return t===void 0&&(t={}),r===void 0&&(r=""),this.dispatch(e,this,t,r)}doValidate(e){return super.doValidate(e)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(e)))}doPrepare(e,t){t===void 0&&(t={});let[r,o]=super.doPrepare(e,t);if(this.currentMask){let i;[r,i]=super.doPrepare(r,this.currentMaskFlags(t)),o=o.aggregate(i)}return[r,o]}doPrepareChar(e,t){t===void 0&&(t={});let[r,o]=super.doPrepareChar(e,t);if(this.currentMask){let i;[r,i]=super.doPrepareChar(r,this.currentMaskFlags(t)),o=o.aggregate(i)}return[r,o]}reset(){var e;(e=this.currentMask)==null||e.reset(),this.compiledMasks.forEach(t=>t.reset())}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(e){this.exposeMask?(this.exposeMask.value=e,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=e}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(e){this.exposeMask?(this.exposeMask.unmaskedValue=e,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=e}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(e){if(this.exposeMask){this.exposeMask.typedValue=e,this.currentMask=this.exposeMask,this._applyDispatch();return}let t=String(e);this.currentMask&&(this.currentMask.typedValue=e,t=this.currentMask.unmaskedValue),this.unmaskedValue=t}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var e;return!!((e=this.currentMask)!=null&&e.isComplete)}get isFilled(){var e;return!!((e=this.currentMask)!=null&&e.isFilled)}remove(e,t){const r=new De;return this.currentMask&&r.aggregate(this.currentMask.remove(e,t)).aggregate(this._applyDispatch()),r}get state(){var e;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map(t=>t.state),currentMaskRef:this.currentMask,currentMask:(e=this.currentMask)==null?void 0:e.state}}set state(e){const{compiledMasks:t,currentMaskRef:r,currentMask:o,...i}=e;t&&this.compiledMasks.forEach((l,a)=>l.state=t[a]),r!=null&&(this.currentMask=r,this.currentMask.state=o),super.state=i}extractInput(e,t,r){return this.currentMask?this.currentMask.extractInput(e,t,r):""}extractTail(e,t){return this.currentMask?this.currentMask.extractTail(e,t):super.extractTail(e,t)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(e,t){return this.currentMask?this.currentMask.nearestInputPos(e,t):super.nearestInputPos(e,t)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(e){this._overwrite=e}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(e){this._eager=e}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(e){this._skipInvalid=e}get autofix(){return this.currentMask?this.currentMask.autofix:this._autofix}set autofix(e){this._autofix=e}maskEquals(e){return Array.isArray(e)?this.compiledMasks.every((t,r)=>{if(!e[r])return;const{mask:o,...i}=e[r];return yi(t,i)&&t.maskEquals(o)}):super.maskEquals(e)}typedValueEquals(e){var t;return!!((t=this.currentMask)!=null&&t.typedValueEquals(e))}}Io.DEFAULTS={...yt.DEFAULTS,dispatch:(n,e,t,r)=>{if(!e.compiledMasks.length)return;const o=e.rawInputValue,i=e.compiledMasks.map((l,a)=>{const c=e.currentMask===l,d=c?l.displayValue.length:l.nearestInputPos(l.displayValue.length,xe.FORCE_LEFT);return l.rawInputValue!==o?(l.reset(),l.append(o,{raw:!0})):c||l.remove(d),l.append(n,e.currentMaskFlags(t)),l.appendTail(r),{index:a,weight:l.rawInputValue.length,totalInputPositions:l.totalInputPositions(0,Math.max(d,l.nearestInputPos(l.displayValue.length,xe.FORCE_LEFT)))}});return i.sort((l,a)=>a.weight-l.weight||a.totalInputPositions-l.totalInputPositions),e.compiledMasks[i[0].index]}},Te.MaskedDynamic=Io;class Oo extends bt{constructor(e){super({...Oo.DEFAULTS,...e})}updateOptions(e){super.updateOptions(e)}_update(e){const{enum:t,...r}=e;if(t){const o=t.map(a=>a.length),i=Math.min(...o),l=Math.max(...o)-i;r.mask="*".repeat(i),l&&(r.mask+="["+"*".repeat(l)+"]"),this.enum=t}super._update(r)}_appendCharRaw(e,t){t===void 0&&(t={});const r=Math.min(this.nearestInputPos(0,xe.FORCE_RIGHT),this.value.length),o=this.enum.filter(i=>this.matchValue(i,this.unmaskedValue+e,r));if(o.length){o.length===1&&this._forEachBlocksInRange(0,this.value.length,(l,a)=>{const c=o[0][a];a>=this.value.length||c===l.value||(l.reset(),l._appendChar(c,t))});const i=super._appendCharRaw(o[0][this.value.length],t);return o.length===1&&o[0].slice(this.unmaskedValue.length).split("").forEach(l=>i.aggregate(super._appendCharRaw(l))),i}return new De({skip:!this.isComplete})}extractTail(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),new un("",e)}remove(e,t){if(e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),e===t)return new De;const r=Math.min(super.nearestInputPos(0,xe.FORCE_RIGHT),this.value.length);let o;for(o=e;o>=0&&!(this.enum.filter(a=>this.matchValue(a,this.value.slice(r,o),r)).length>1);--o);const i=super.remove(o,t);return i.tailShift+=o-e,i}get isComplete(){return this.enum.indexOf(this.value)>=0}}Oo.DEFAULTS={...bt.DEFAULTS,matchValue:(n,e,t)=>n.indexOf(e,t)===t},Te.MaskedEnum=Oo;class jf extends yt{updateOptions(e){super.updateOptions(e)}_update(e){super._update({...e,validate:e.mask})}}Te.MaskedFunction=jf;var Uf;class Lt extends yt{constructor(e){super({...Lt.DEFAULTS,...e})}updateOptions(e){super.updateOptions(e)}_update(e){super._update(e),this._updateRegExps()}_updateRegExps(){const e="^"+(this.allowNegative?"[+|\\-]?":""),t="\\d*",r=(this.scale?"("+Ha(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(e+t+r),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(Ha).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(Ha(this.thousandsSeparator),"g")}_removeThousandsSeparators(e){return e.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(e){const t=e.split(this.radix);return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),t.join(this.radix)}doPrepareChar(e,t){t===void 0&&(t={});const[r,o]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(t.input&&t.raw||!t.input&&!t.raw)?e.replace(this._mapToRadixRegExp,this.radix):e),t);return e&&!r&&(o.skip=!0),r&&!this.allowPositive&&!this.value&&r!=="-"&&o.aggregate(this._appendChar("-")),[r,o]}_separatorsCount(e,t){t===void 0&&(t=!1);let r=0;for(let o=0;o<e;++o)this._value.indexOf(this.thousandsSeparator,o)===o&&(++r,t&&(e+=this.thousandsSeparator.length));return r}_separatorsCountFromSlice(e){return e===void 0&&(e=this._value),this._separatorsCount(this._removeThousandsSeparators(e).length,!0)}extractInput(e,t,r){return e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),[e,t]=this._adjustRangeWithSeparators(e,t),this._removeThousandsSeparators(super.extractInput(e,t,r))}_appendCharRaw(e,t){t===void 0&&(t={});const r=t.tail&&t._beforeTailState?t._beforeTailState._value:this._value,o=this._separatorsCountFromSlice(r);this._value=this._removeThousandsSeparators(this.value);const i=this._value;this._value+=e;const l=this.number;let a=!isNaN(l),c=!1;if(a){let p;this.min!=null&&this.min<0&&this.number<this.min&&(p=this.min),this.max!=null&&this.max>0&&this.number>this.max&&(p=this.max),p!=null&&(this.autofix?(this._value=this.format(p,this).replace(Lt.UNMASKED_RADIX,this.radix),c||(c=i===this._value&&!t.tail)):a=!1),a&&(a=!!this._value.match(this._numberRegExp))}let d;a?d=new De({inserted:this._value.slice(i.length),rawInserted:c?"":e,skip:c}):(this._value=i,d=new De),this._value=this._insertThousandsSeparators(this._value);const u=t.tail&&t._beforeTailState?t._beforeTailState._value:this._value,f=this._separatorsCountFromSlice(u);return d.tailShift+=(f-o)*this.thousandsSeparator.length,d}_findSeparatorAround(e){if(this.thousandsSeparator){const t=e-this.thousandsSeparator.length+1,r=this.value.indexOf(this.thousandsSeparator,t);if(r<=e)return r}return-1}_adjustRangeWithSeparators(e,t){const r=this._findSeparatorAround(e);r>=0&&(e=r);const o=this._findSeparatorAround(t);return o>=0&&(t=o+this.thousandsSeparator.length),[e,t]}remove(e,t){e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length),[e,t]=this._adjustRangeWithSeparators(e,t);const r=this.value.slice(0,e),o=this.value.slice(t),i=this._separatorsCount(r.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(r+o));const l=this._separatorsCountFromSlice(r);return new De({tailShift:(l-i)*this.thousandsSeparator.length})}nearestInputPos(e,t){if(!this.thousandsSeparator)return e;switch(t){case xe.NONE:case xe.LEFT:case xe.FORCE_LEFT:{const r=this._findSeparatorAround(e-1);if(r>=0){const o=r+this.thousandsSeparator.length;if(e<o||this.value.length<=o||t===xe.FORCE_LEFT)return r}break}case xe.RIGHT:case xe.FORCE_RIGHT:{const r=this._findSeparatorAround(e);if(r>=0)return r+this.thousandsSeparator.length}}return e}doCommit(){if(this.value){const e=this.number;let t=e;this.min!=null&&(t=Math.max(t,this.min)),this.max!=null&&(t=Math.min(t,this.max)),t!==e&&(this.unmaskedValue=this.format(t,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(e){const t=this._removeThousandsSeparators(e).split(this.radix);return t[0]=t[0].replace(/^(\D*)(0*)(\d*)/,(r,o,i,l)=>o+l),e.length&&!/\d$/.test(t[0])&&(t[0]=t[0]+"0"),t.length>1&&(t[1]=t[1].replace(/0*$/,""),t[1].length||(t.length=1)),this._insertThousandsSeparators(t.join(this.radix))}_padFractionalZeros(e){if(!e)return e;const t=e.split(this.radix);return t.length<2&&t.push(""),t[1]=t[1].padEnd(this.scale,"0"),t.join(this.radix)}doSkipInvalid(e,t,r){t===void 0&&(t={});const o=this.scale===0&&e!==this.thousandsSeparator&&(e===this.radix||e===Lt.UNMASKED_RADIX||this.mapToRadix.includes(e));return super.doSkipInvalid(e,t,r)&&!o}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,Lt.UNMASKED_RADIX)}set unmaskedValue(e){super.unmaskedValue=e}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(e){this.rawInputValue=this.format(e,this).replace(Lt.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(e){this.typedValue=e}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(e){return(super.typedValueEquals(e)||Lt.EMPTY_VALUES.includes(e)&&Lt.EMPTY_VALUES.includes(this.typedValue))&&!(e===0&&this.value==="")}}Uf=Lt,Lt.UNMASKED_RADIX=".",Lt.EMPTY_VALUES=[...yt.EMPTY_VALUES,0],Lt.DEFAULTS={...yt.DEFAULTS,mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[Uf.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:n=>n.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},Te.MaskedNumber=Lt;const wi={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function Wa(n,e,t){e===void 0&&(e=wi.MASKED),t===void 0&&(t=wi.MASKED);const r=dn(n);return o=>r.runIsolated(i=>(i[e]=o,i[t]))}function Wf(n,e,t,r){return Wa(e,t,r)(n)}Te.PIPE_TYPE=wi,Te.createPipe=Wa,Te.pipe=Wf;class Kf extends bt{get repeatFrom(){var e;return(e=Array.isArray(this.repeat)?this.repeat[0]:this.repeat===1/0?0:this.repeat)!=null?e:0}get repeatTo(){var e;return(e=Array.isArray(this.repeat)?this.repeat[1]:this.repeat)!=null?e:1/0}constructor(e){super(e)}updateOptions(e){super.updateOptions(e)}_update(e){var t,r,o;const{repeat:i,...l}=Qr(e);this._blockOpts=Object.assign({},this._blockOpts,l);const a=dn(this._blockOpts);this.repeat=(t=(r=i??a.repeat)!=null?r:this.repeat)!=null?t:1/0,super._update({mask:"m".repeat(Math.max(this.repeatTo===1/0&&((o=this._blocks)==null?void 0:o.length)||0,this.repeatFrom)),blocks:{m:a},eager:a.eager,overwrite:a.overwrite,skipInvalid:a.skipInvalid,lazy:a.lazy,placeholderChar:a.placeholderChar,displayChar:a.displayChar})}_allocateBlock(e){if(e<this._blocks.length)return this._blocks[e];if(this.repeatTo===1/0||this._blocks.length<this.repeatTo)return this._blocks.push(dn(this._blockOpts)),this.mask+="m",this._blocks[this._blocks.length-1]}_appendCharRaw(e,t){t===void 0&&(t={});const r=new De;for(let c=(o=(i=this._mapPosToBlock(this.displayValue.length))==null?void 0:i.index)!=null?o:Math.max(this._blocks.length-1,0),d,u;d=(l=this._blocks[c])!=null?l:u=!u&&this._allocateBlock(c);++c){var o,i,l,a;const f=d._appendChar(e,{...t,_beforeTailState:(a=t._beforeTailState)==null||(a=a._blocks)==null?void 0:a[c]});if(f.skip&&u){this._blocks.pop(),this.mask=this.mask.slice(1);break}if(r.aggregate(f),f.consumed)break}return r}_trimEmptyTail(e,t){var r,o;e===void 0&&(e=0);const i=Math.max(((r=this._mapPosToBlock(e))==null?void 0:r.index)||0,this.repeatFrom,0);let l;t!=null&&(l=(o=this._mapPosToBlock(t))==null?void 0:o.index),l==null&&(l=this._blocks.length-1);let a=0;for(let c=l;i<=c&&!this._blocks[c].unmaskedValue;--c,++a);a&&(this._blocks.splice(l-a+1,a),this.mask=this.mask.slice(a))}reset(){super.reset(),this._trimEmptyTail()}remove(e,t){e===void 0&&(e=0),t===void 0&&(t=this.displayValue.length);const r=super.remove(e,t);return this._trimEmptyTail(e,t),r}totalInputPositions(e,t){return e===void 0&&(e=0),t==null&&this.repeatTo===1/0?1/0:super.totalInputPositions(e,t)}get state(){return super.state}set state(e){this._blocks.length=e._blocks.length,this.mask=this.mask.slice(0,this._blocks.length),super.state=e}}Te.RepeatBlock=Kf;try{globalThis.IMask=Te}catch{}const xi=Object.freeze(Object.defineProperty({__proto__:null,ChangeDetails:De,ChunksTailDetails:Jn,DIRECTION:xe,HTMLContenteditableMaskElement:ja,HTMLInputMaskElement:Pf,HTMLMaskElement:Vo,InputMask:zf,MaskElement:bi,Masked:yt,MaskedDate:fn,MaskedDynamic:Io,MaskedEnum:Oo,MaskedFunction:jf,MaskedNumber:Lt,MaskedPattern:bt,MaskedRange:Lo,MaskedRegExp:Hf,PIPE_TYPE:wi,PatternFixedDefinition:Ua,PatternInputDefinition:$o,RepeatBlock:Kf,createMask:dn,createPipe:Wa,default:Te,forceDirection:Of,normalizeOpts:Qr,pipe:Wf},Symbol.toStringTag,{value:"Module"}));function tA(){const n=s.ref(!1);return{isFullscreen:n,toggleFullscreen:()=>{n.value=!n.value}}}const Ro="__vs_form_tiptap_loader__",nA=n=>n&&n.split(";").map(t=>t.trim()).filter(t=>t&&!/^text-align\s*:/i.test(t)).join("; ")||null,rA=n=>n.style?{style:String(n.style).replace(/;\s*$/,"")}:{},qf=({stripTextAlign:n=!1}={})=>({default:null,parseHTML:e=>{const t=e.getAttribute("style");return n?nA(t):t||null},renderHTML:e=>rA(e)}),oA=n=>n.extend({addAttributes(){return{...this.parent?.(),style:qf({stripTextAlign:!0})}}}),sA=n=>n.extend({addAttributes(){return{...this.parent?.(),style:qf()}}}),iA=n=>n.extend({addOptions(){return{...this.parent?.(),levels:[1,2,3,4,5,6]}}}),lA=(n,e,t,r,o)=>{const i=e.extend({addAttributes(){return{...this.parent?.(),border:{default:null,parseHTML:l=>l.getAttribute("border"),renderHTML:l=>l.border?{border:l.border}:{}},cellpadding:{default:null,parseHTML:l=>l.getAttribute("cellpadding"),renderHTML:l=>l.cellpadding?{cellpadding:l.cellpadding}:{}},cellspacing:{default:null,parseHTML:l=>l.getAttribute("cellspacing"),renderHTML:l=>l.cellspacing?{cellspacing:l.cellspacing}:{}},style:{default:null,parseHTML:l=>l.getAttribute("style"),renderHTML:l=>l.style?{style:l.style}:{}},width:{default:null,parseHTML:l=>l.getAttribute("width"),renderHTML:l=>l.width?{width:l.width}:{}}}},parseHTML(){return[{tag:"div.tableWrapper table",priority:100},{tag:"table"}]}});return n.extend({addExtensions(){return[i.configure({resizable:!0}),t,r,o]}})},aA=n=>n.extend({addAttributes(){return{...this.parent?.(),fontFamily:{default:null,parseHTML:e=>e.style.fontFamily?.replace(/['"]/g,""),renderHTML:e=>e.fontFamily?{style:`font-family: ${e.fontFamily}`}:{}},fontSize:{default:null,parseHTML:e=>e.style.fontSize?.replace(/['"]/g,""),renderHTML:e=>e.fontSize?{style:`font-size: ${e.fontSize}`}:{}},color:{default:null,parseHTML:e=>e.style.color?.replace(/['"]/g,""),renderHTML:e=>e.color?{style:`color: ${e.color}`}:{}},backgroundColor:{default:null,parseHTML:e=>e.style.backgroundColor?.replace(/['"]/g,""),renderHTML:e=>!e.backgroundColor||e.backgroundColor==="transparent"?{}:{style:`background-color: ${e.backgroundColor}`}}}},addCommands(){return{setFontFamily:e=>({chain:t})=>t().setMark("textStyle",{fontFamily:e}).run(),unsetFontFamily:()=>({chain:e})=>e().setMark("textStyle",{fontFamily:null}).removeEmptyTextStyle().run(),setFontSize:e=>({chain:t})=>t().setMark("textStyle",{fontSize:e}).run(),unsetFontSize:()=>({chain:e})=>e().setMark("textStyle",{fontSize:null}).removeEmptyTextStyle().run(),setColor:e=>({chain:t})=>t().setMark("textStyle",{color:e}).run(),unsetColor:()=>({chain:e})=>e().setMark("textStyle",{color:null}).removeEmptyTextStyle().run(),setBackgroundColor:e=>({chain:t})=>t().setMark("textStyle",{backgroundColor:e}).run(),unsetBackgroundColor:()=>({chain:e})=>e().setMark("textStyle",{backgroundColor:null}).removeEmptyTextStyle().run()}}}),cA=n=>n.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:e}){return["iframe",e]}});async function dA(){if(typeof window>"u")return null;const n=window;return n[Ro]||(n[Ro]=Promise.all([Promise.resolve().then(()=>Y$),Promise.resolve().then(()=>EO),Promise.resolve().then(()=>TO),Promise.resolve().then(()=>IR),Promise.resolve().then(()=>RR),Promise.resolve().then(()=>PR),Promise.resolve().then(()=>HR),Promise.resolve().then(()=>eI),Promise.resolve().then(()=>UR),Promise.resolve().then(()=>KR),Promise.resolve().then(()=>hL),Promise.resolve().then(()=>OI),Promise.resolve().then(()=>zB)]).then(([{Editor:e,Node:t},{StarterKit:r},{TextStyle:o},{TableKit:i,Table:l,TableRow:a,TableCell:c,TableHeader:d},{Highlight:u},{Subscript:f},{Superscript:p},{Link:h},{Image:m},{TextAlign:g},{Heading:y},{Paragraph:b},{DOMParser:w}])=>{if(!e||!t||!r||!o||!i||!l||!a||!c||!d||!u||!f||!p||!h||!m||!g||!y||!b||!w)throw new Error("Failed to resolve one or more Tiptap modules");return{Editor:e,ProseMirrorDOMParser:w,StarterKit:r,ExtendedTextStyle:aA(o),Highlight:u,Subscript:f,Superscript:p,CustomLink:sA(h),Image:m,TextAlign:g,CustomHeading:iA(y),CustomParagraph:oA(b),CustomTableKit:lA(i,l,a,c,d),Iframe:cA(t)}}).catch(e=>{throw delete n[Ro],e})),n[Ro]}const Yn=n=>n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),Fo=n=>{let e=Yn(n||"");return e=e.replace(/!\[([^\]]*)]\(([^)\s]+)(?:\s+"([^"]+)")?\)/g,(t,r,o,i)=>{const l=i?` title="${Yn(i)}"`:"";return`<img src="${Yn(o)}" alt="${Yn(r)}"${l}>`}),e=e.replace(/\[([^\]]+)]\(([^)\s]+)(?:\s+"([^"]+)")?\)/g,(t,r,o,i)=>{const l=i?` title="${Yn(i)}"`:"";return`<a href="${Yn(o)}"${l} target="_blank" rel="noopener noreferrer">${r}</a>`}),e=e.replace(/`([^`]+)`/g,"<code>$1</code>"),e=e.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/__([^_]+)__/g,"<strong>$1</strong>"),e=e.replace(/~~([^~]+)~~/g,"<del>$1</del>"),e=e.replace(/\*([^*\n]+)\*/g,"<em>$1</em>"),e=e.replace(/_([^_\n]+)_/g,"<em>$1</em>"),e},Po=n=>/^\s*\d+\.\s+/.test(n),Ka=n=>/^\s*[-*+]\s+/.test(n),Gf=n=>/^\s*[-*+]\s+\[[ xX]\]\s+/.test(n),qa=n=>/^\s*>\s?/.test(n),Ga=n=>/^\s*\|?(?:\s*:?-{3,}:?\s*\|)+\s*:?-{3,}:?\s*\|?\s*$/.test(n),Jf=n=>n.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(e=>Fo(e.trim())),uA=(n,e)=>{const t=n[e],r=n[e+1];if(!t||!r||!t.includes("|")||!Ga(r))return null;const o=Jf(t),i=[];let l=e+2;for(;l<n.length&&n[l].includes("|")&&n[l].trim()!=="";){const d=Jf(n[l]);i.push(`<tr>${d.map(u=>`<td>${u}</td>`).join("")}</tr>`),l+=1}const a=`<thead><tr>${o.map(d=>`<th>${d}</th>`).join("")}</tr></thead>`,c=i.length?`<tbody>${i.join("")}</tbody>`:"";return{html:`<table>${a}${c}</table>`,nextIndex:l}},fA=(n,e)=>{const t=Po(n[e]),r=t?"ol":"ul",o=[];let i=e;for(;i<n.length;){const l=n[i];if(l.trim()===""||!(t?Po(l):(Ka(l)||Gf(l))&&!Po(l)))break;const c=l.match(/^\s*[-*+]\s+\[([ xX])\]\s+(.*)$/);if(c){const d=c[1].toLowerCase()==="x";o.push(`<li><input type="checkbox" disabled${d?" checked":""}> ${Fo(c[2])}</li>`)}else{const d=l.replace(/^\s*(?:[-*+]|\d+\.)\s+/,"");o.push(`<li>${Fo(d)}</li>`)}i+=1}return{html:`<${r}>${o.join("")}</${r}>`,nextIndex:i}},pA=(n,e)=>{const r=n[e].replace(/^```/,"").trim(),o=[];let i=e+1;for(;i<n.length&&!n[i].startsWith("```");)o.push(n[i]),i+=1;return{html:`<pre><code${r?` class="language-${Yn(r)}"`:""}>${Yn(o.join(`
|
|
6
6
|
`))}</code></pre>`,nextIndex:i<n.length?i+1:i}},hA=(n,e)=>{const t=[];let r=e;for(;r<n.length;){const o=n[r];if(o.trim()===""||o.startsWith("```")||/^#{1,6}\s+/.test(o)||/^---+$/.test(o.trim())||/^\*\*\*+$/.test(o.trim())||qa(o)||Po(o)||Ka(o)||r+1<n.length&&o.includes("|")&&Ga(n[r+1]))break;t.push(o.trim()),r+=1}return{html:`<p>${Fo(t.join(" "))}</p>`,nextIndex:r}},Yf=n=>{const t=(n||"").replace(/\r\n/g,`
|
|
7
7
|
`).split(`
|