@dskripchenko/laravel-admin 1.24.0 → 1.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
|
|
3
3
|
Текст…`),y=e.ref("LABEL"),m=e.ref("0"),v=e.ref("50"),M=e.ref(p.trSafe("Янв, Фев, Мар, Апр")),f=e.ref("10, 20, 15, 30"),g=e.ref(""),k=e.ref("5");e.watch(()=>o.open,S=>{if(S)if(o.mode==="configure"&&o.item){const C=o.item.config??{};d.value=o.item.type??"",i.value=C.title??o.initialTitle,s.value=String(o.item.size??6),h.value=C.content??h.value;const A=C.stats?.[0];A&&(y.value=String(A.label??""),m.value=String(A.value??"")),v.value=String(C.value??50);const H=C.labels,R=C.datasets;H&&H.length>0&&(M.value=H.join(", ")),R&&R[0]?.data&&(f.value=R[0].data.join(", ")),g.value=C.resource??"",k.value=String(C.limit??5)}else d.value="",i.value="",s.value="6"});const w=e.computed(()=>d.value!==""&&i.value.trim()!==""),D={stat:p.trSafe("Stat — карточка с числом"),stats:p.trSafe("Stats overview — несколько метрик"),chart:p.trSafe("Chart — линия / столбцы / донат"),"bar-chart":p.trSafe("Bar chart — гистограмма"),"donut-chart":p.trSafe("Donut — кольцевая диаграмма"),"recent-table":p.trSafe("Recent list — последние записи"),recent_list:p.trSafe("Recent list — последние записи"),"recent-list":p.trSafe("Recent list — последние записи"),heatmap:p.trSafe("Heatmap — тепловая карта"),gauge:p.trSafe("Gauge — шкала со значением"),markdown:p.trSafe("Markdown — заметка / текст")};function z(S){return S==="markdown"?"markdown":S==="stat"||S==="stats"?"stat":S==="gauge"?"gauge":S==="chart"||S==="bar-chart"||S==="donut-chart"?"chart":S==="recent-table"||S==="recent_list"||S==="recent-list"?"recent":null}function B(){const S={title:i.value};switch(z(d.value)){case"markdown":S.content=h.value;break;case"stat":S.stats=[{label:y.value,value:m.value}];break;case"gauge":S.value=Number(v.value)||0,S.min=0,S.max=100;break;case"chart":{const C=M.value.split(",").map(H=>H.trim()).filter(Boolean),A=f.value.split(",").map(H=>Number(H.trim())).filter(H=>!Number.isNaN(H));S.labels=C,S.datasets=[{label:i.value,data:A}],S.type=d.value==="donut-chart"?"doughnut":"bar";break}case"recent":S.resource=g.value,S.limit=Number(k.value)||5;break}return S}function b(){if(!w.value)return;const S=Math.max(1,Math.min(12,Number(s.value)||6)),C=B();if(o.mode==="configure"&&o.item)r("save",{size:S,type:d.value,config:C});else{const A=`custom.${d.value}.${Date.now()}`;r("add",{slug:A,type:d.value,size:S,config:C})}r("close")}function L(){r("close")}return(S,C)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-dialog"},{default:e.withCtx(()=>[a.open?(e.openBlock(),e.createElementBlock("div",aC,[e.createElementVNode("div",{class:"admin-dialog-root__backdrop",onClick:L}),e.createElementVNode("div",nC,[e.createElementVNode("header",oC,[e.createElementVNode("h2",cC,e.toDisplayString(a.mode==="add"?e.unref(p.trSafe)("Добавить виджет"):e.unref(p.trSafe)("Настроить виджет")),1),e.createElementVNode("button",{type:"button",class:"admin-dialog__close","aria-label":e.unref(p.trSafe)("Закрыть"),onClick:L},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:16},null,8,["icon"])],8,rC)]),e.createElementVNode("div",iC,[a.mode==="add"?(e.openBlock(),e.createElementBlock("div",lC,[e.createElementVNode("label",dC,e.toDisplayString(e.unref(p.trSafe)("Скрытые виджеты")),1),a.restorable.length===0?(e.openBlock(),e.createElementBlock("p",sC,e.toDisplayString(e.unref(p.trSafe)("Нечего добавлять — все виджеты дашборда уже показаны.")),1)):(e.openBlock(),e.createElementBlock("div",uC,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.restorable,A=>(e.openBlock(),e.createElementBlock("button",{key:A.slug,type:"button",class:"admin-dialog__type-card","data-testid":`restore-widget-${A.slug}`,onClick:H=>l(A.slug)},[e.createElementVNode("span",yC,e.toDisplayString(A.title),1),e.createElementVNode("span",pC,e.toDisplayString(e.unref(p.trSafe)("Вернуть на дашборд")),1)],8,hC))),128))]))])):e.createCommentVNode("",!0),a.mode==="add"?(e.openBlock(),e.createElementBlock("div",kC,[C[10]||(C[10]=e.createElementVNode("label",{class:"admin-dialog__label"},[e.createTextVNode(" Тип виджета "),e.createElementVNode("span",{class:"admin-dialog__required"},"*")],-1)),c.value.length===0?(e.openBlock(),e.createElementBlock("p",mC,e.toDisplayString(e.unref(p.trSafe)("Нет виджетов для добавления — все доступные типы уже на дашборде"))+" "+e.toDisplayString(e.unref(p.trSafe)("или ни один не зарегистрирован.")),1)):(e.openBlock(),e.createElementBlock("div",fC,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,A=>(e.openBlock(),e.createElementBlock("button",{key:A,type:"button",class:e.normalizeClass(["admin-dialog__type-card",{"admin-dialog__type-card--active":d.value===A}]),onClick:H=>d.value=A},[e.createElementVNode("span",gC,e.toDisplayString(D[A]??A),1),e.createElementVNode("span",MC,e.toDisplayString(A),1)],10,vC))),128))]))])):(e.openBlock(),e.createElementBlock("div",IC,[e.createElementVNode("label",wC,e.toDisplayString(e.unref(p.trSafe)("Тип")),1),e.createElementVNode("div",xC,e.toDisplayString(d.value||"unknown"),1)])),e.createElementVNode("div",CC,[C[11]||(C[11]=e.createElementVNode("label",{class:"admin-dialog__label"},[e.createTextVNode(" Заголовок "),e.createElementVNode("span",{class:"admin-dialog__required"},"*")],-1)),e.createVNode(e.unref(u.UidInput),{modelValue:i.value,"onUpdate:modelValue":C[0]||(C[0]=A=>i.value=A),placeholder:e.unref(p.trSafe)("Название виджета")},null,8,["modelValue","placeholder"])]),e.createElementVNode("div",LC,[e.createElementVNode("label",bC,e.toDisplayString(e.unref(p.trSafe)("Ширина (1..12)")),1),e.createVNode(e.unref(u.UidInput),{modelValue:s.value,"onUpdate:modelValue":C[1]||(C[1]=A=>s.value=A),type:"number"},null,8,["modelValue"])]),z(d.value)==="markdown"?(e.openBlock(),e.createElementBlock("div",SC,[e.createElementVNode("label",_C,e.toDisplayString(e.unref(p.trSafe)("Markdown содержимое")),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":C[2]||(C[2]=A=>h.value=A),class:"admin-dialog__textarea",rows:"6"},null,512),[[e.vModelText,h.value]])])):z(d.value)==="stat"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("div",BC,[e.createElementVNode("label",VC,e.toDisplayString(e.unref(p.trSafe)("Метка")),1),e.createVNode(e.unref(u.UidInput),{modelValue:y.value,"onUpdate:modelValue":C[3]||(C[3]=A=>y.value=A)},null,8,["modelValue"])]),e.createElementVNode("div",qC,[e.createElementVNode("label",AC,e.toDisplayString(e.unref(p.trSafe)("Значение")),1),e.createVNode(e.unref(u.UidInput),{modelValue:m.value,"onUpdate:modelValue":C[4]||(C[4]=A=>m.value=A)},null,8,["modelValue"])])],64)):z(d.value)==="gauge"?(e.openBlock(),e.createElementBlock("div",zC,[e.createElementVNode("label",DC,e.toDisplayString(e.unref(p.trSafe)("Значение (0..100)")),1),e.createVNode(e.unref(u.UidInput),{modelValue:v.value,"onUpdate:modelValue":C[5]||(C[5]=A=>v.value=A),type:"number"},null,8,["modelValue"])])):z(d.value)==="chart"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:6},[e.createElementVNode("div",EC,[e.createElementVNode("label",NC,e.toDisplayString(e.unref(p.trSafe)("Метки (через запятую)")),1),e.createVNode(e.unref(u.UidInput),{modelValue:M.value,"onUpdate:modelValue":C[6]||(C[6]=A=>M.value=A),placeholder:e.unref(p.trSafe)("Янв, Фев, Мар")},null,8,["modelValue","placeholder"])]),e.createElementVNode("div",HC,[e.createElementVNode("label",FC,e.toDisplayString(e.unref(p.trSafe)("Значения (через запятую)")),1),e.createVNode(e.unref(u.UidInput),{modelValue:f.value,"onUpdate:modelValue":C[7]||(C[7]=A=>f.value=A),placeholder:"10, 20, 15"},null,8,["modelValue"])])],64)):z(d.value)==="recent"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:7},[e.createElementVNode("div",PC,[C[12]||(C[12]=e.createElementVNode("label",{class:"admin-dialog__label"},"Resource slug",-1)),e.createVNode(e.unref(u.UidInput),{modelValue:g.value,"onUpdate:modelValue":C[8]||(C[8]=A=>g.value=A),placeholder:"articles"},null,8,["modelValue"])]),e.createElementVNode("div",TC,[C[13]||(C[13]=e.createElementVNode("label",{class:"admin-dialog__label"},"Limit",-1)),e.createVNode(e.unref(u.UidInput),{modelValue:k.value,"onUpdate:modelValue":C[9]||(C[9]=A=>k.value=A),type:"number"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",jC,[w.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",UC,[...C[14]||(C[14]=[e.createTextVNode(" Заполните ",-1),e.createElementVNode("span",{class:"admin-dialog__required"},"*",-1),e.createTextVNode("-поля ",-1)])])),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:L},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"primary",disabled:!w.value,title:w.value?void 0:e.unref(p.trSafe)("Заполните обязательные поля"),onClick:b},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.mode==="add"?e.unref(p.trSafe)("Добавить"):e.unref(p.trSafe)("Сохранить")),1)]),_:1},8,["disabled","title"])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),$C={class:"admin-page admin-dashboard"},OC={class:"admin-page__hd"},ZC={class:"admin-page__title-wrap"},WC={class:"admin-page__title"},GC={key:0,class:"admin-page__count"},KC={class:"admin-page__actions"},XC=["draggable","onDragstart","onDragover","onDrop"],JC=["aria-label","onMousedown"],YC=140,QC=16,_9=e.defineComponent({__name:"DashboardPage",props:{slug:{default:void 0},widgets:{default:void 0},title:{default:void 0},subtitle:{default:void 0}},emits:["change-period","export"],setup(a,{emit:n}){const o=a,r=n,l=pe(),c=hI(),d=p.useI18nStore(),i=j=>d.tr(j),s=re.useRoute(),h=e.computed(()=>{if(o.slug)return o.slug;const j=s?.meta?.slug;if(typeof j=="string"&&j.length>0)return j;const O=s?.params?.slug;if(typeof O=="string"&&O.length>0)return O}),y=(j,O)=>d.has(j)?d.t(j):O,m=e.computed(()=>{const j=h.value;return!j||!l.manifest?null:l.manifest.dashboards?.find(Z=>Z.slug===j)??null}),v=e.computed(()=>o.widgets?o.widgets:B.value!==null?B.value:m.value?.widgets??[]),M=e.computed(()=>o.title??m.value?.label??"Dashboard"),f=e.computed(()=>o.subtitle??m.value?.description??null),g=e.computed(()=>{const j=new Map;for(const W of v.value){const te=String(W.slug??"");te&&j.set(te,W)}const O=c.draft,Z=[];if(O.length>0){for(const W of O){const te=j.get(W.slug)??null;if(j.delete(W.slug),W.hidden)continue;let ce=null;if(te!==null)ce={...te,size:W.size??te.size??12};else if(W.type){const ke=W.config??{};ce={slug:W.slug,type:W.type,title:ke.title??"",size:W.size??6,data:ke}}ce&&Z.push({node:ce,layoutSlug:W.slug})}for(const[W,te]of j.entries())Z.push({node:te,layoutSlug:W})}else for(const W of v.value)Z.push({node:W,layoutSlug:String(W.slug??"")});return Z});function k(j){const O=j.size??j.span;return Math.max(1,Math.min(12,typeof O=="number"?O:12))}function w(j,O){const W=c.draft.find(ke=>ke.slug===j)?.config?.rowSpan;if(typeof W=="number")return Math.max(1,Math.min(6,W));const te=O.rowSpan??O.row_span;if(typeof te=="number")return Math.max(1,Math.min(6,te));const ce=String(O.type??"");return ce==="stats"||ce==="stat"?1:ce==="gauge"||ce==="chart"||ce==="bar-chart"||ce==="donut-chart"||ce==="heatmap"||ce==="recent_list"||ce==="recent-list"||ce==="recent-table"||ce==="markdown"||ce==="iframe"||ce==="table"?2:1}const D=e.computed(()=>[{key:"7d",label:y("admin.dashboard.period.7d","За 7 дней")},{key:"30d",label:y("admin.dashboard.period.30d","За 30 дней")},{key:"90d",label:y("admin.dashboard.period.90d","За 90 дней")},{key:"all",label:y("admin.dashboard.period.all","Всё время")}]),z=e.ref("30d"),B=e.ref(null);async function b(j,O){z.value=j,r("change-period",j);const Z=h.value;Z&&c.savePeriod(Z,j),await L()}async function L(){const j=h.value;if(j)try{const{getAdminClient:O}=await Promise.resolve().then(()=>se),W=await O().get(`/dashboard/widgets?key=${encodeURIComponent(j)}&period=${encodeURIComponent(z.value)}`);B.value=W.widgets}catch{}}let S=null;const C=e.computed(()=>{let j=0;for(const O of v.value){const Z=O.refresh;typeof Z=="number"&&Z>0&&(j===0||Z<j)&&(j=Z)}return j});function A(){H();const j=C.value;j<=0||(S=setInterval(()=>{L()},j*1e3))}function H(){S!==null&&(clearInterval(S),S=null)}e.watch(()=>C.value,()=>A()),e.onMounted(async()=>{l.manifest===null&&await l.load().catch(()=>{});const j=h.value;j&&(await c.openDashboard(j).catch(()=>{}),c.period&&(z.value=c.period,await L())),A()}),e.onUnmounted(()=>{H()}),e.watch(()=>h.value,async(j,O)=>{j!==O&&(j?(await c.openDashboard(j).catch(()=>{}),c.period&&(z.value=c.period,await L())):c.reset())});const R=e.computed(()=>D.value.find(j=>j.key===z.value)?.label??y("admin.dashboard.period.label","Период")),N=e.ref(null),T=e.ref(null),V=e.ref("");function I(){N.value="add",T.value=null,V.value=""}function _(){N.value=null}function x(){c.draft.length===0&&c.seedDraft(g.value.map(({node:j,layoutSlug:O})=>({slug:O,size:k(j),type:String(j.type??"")||void 0}))),c.enterEditMode()}function E(){c.cancelEdit()}async function $(){confirm(y("admin.dashboard.reset_confirm","Сбросить layout к настройкам по умолчанию?"))&&await c.resetToDefault().catch(()=>{})}async function Y(){await c.saveLayout().catch(()=>{})}function G(j){const O=v.value.some(W=>String(W.slug??"")===j),Z=c.draft.some(W=>W.slug===j);O?Z?c.updateWidget(j,{hidden:!0}):c.addWidget({slug:j,hidden:!0}):c.removeWidget(j)}function oe(j){Yn();const O=c.draft.find(te=>te.slug===j)??null,W=g.value.find(te=>te.layoutSlug===j)?.node;T.value=O??{slug:j,type:W?.type??"",size:W?.size??6,config:{}},V.value=W?.title??"",N.value="configure"}function J(j){c.addWidget(j)}const ee=e.computed(()=>{const j=new Map;for(const O of v.value){const Z=String(O.slug??"");Z&&j.set(Z,O)}return c.draft.filter(O=>O.hidden===!0).map(O=>{const Z=j.get(O.slug),W=O.config??{};return{slug:O.slug,title:Z?.title||W.title||O.slug}})});function X(j){c.restoreWidget(j)}function ie(j){if(!T.value)return;const O=T.value.slug;if(c.draft.some(W=>W.slug===O)){const W=c.draft.find(te=>te.slug===O);c.updateWidget(O,{...j,config:{...W?.config??{},...j.config??{}}})}else c.addWidget({slug:O,type:T.value.type,...j})}const le=e.ref(null),Ie=e.ref(null),Sn=e.ref(!1);function et(j){if(!c.editMode){Sn.value=!1;return}const O=j.target;Sn.value=!!O?.closest('[data-drag-handle="true"]')}function Ne(j,O){if(c.editMode&&O.dataTransfer!==null){if(!Sn.value){O.preventDefault();return}le.value=j,O.dataTransfer.effectAllowed="move",O.dataTransfer.setData("text/plain",String(j))}}function t9(){Sn.value=!1,le.value=null,Ie.value=null}function a9(j,O){c.editMode&&le.value!==null&&(O.preventDefault(),Ie.value!==j&&(Ie.value=j))}function n9(j,O){if(O.preventDefault(),!c.editMode||le.value===null)return;const Z=le.value;Yn(),c.moveWidget(Z,j),le.value=null,Ie.value=null}function Yn(){const j=c.draft.filter(Z=>Z.hidden===!0);if(c.draft.length===g.value.length+j.length)return;const O=g.value.map(({node:Z,layoutSlug:W},te)=>{const ce=c.draft.find(ke=>ke.slug===W);return{slug:W,size:k(Z),position:te,hidden:!1,type:ce?.type??Z.type,config:ce?.config}});c.setDraft([...O,...j.map(Z=>({...Z}))])}const we=e.ref(null);let He=0;function Se(j,O,Z,W){if(!c.editMode)return;j.preventDefault(),j.stopPropagation(),Yn(),we.value={slug:O,startX:j.clientX,startY:j.clientY,startSpan:Z,startRowSpan:W},He=j.target.closest(".admin-dashboard__grid")?.getBoundingClientRect().width??1200,window.addEventListener("mousemove",tt),window.addEventListener("mouseup",kc)}function tt(j){if(!we.value)return;const O=He/12,Z=Math.round((j.clientX-we.value.startX)/O),W=Math.max(1,Math.min(12,we.value.startSpan+Z)),te=YC+QC,ce=Math.round((j.clientY-we.value.startY)/te),ke=Math.max(1,Math.min(6,we.value.startRowSpan+ce)),at=c.draft.find(r9=>r9.slug===we.value.slug);if(!at)return;const c9=at.config?.rowSpan,qe={};at.size!==W&&(qe.size=W),c9!==ke&&(qe.config={...at.config??{},rowSpan:ke}),Object.keys(qe).length>0&&c.updateWidget(we.value.slug,qe)}function kc(){we.value=null,window.removeEventListener("mousemove",tt),window.removeEventListener("mouseup",kc)}function o9(){if(r("export"),typeof window>"u"||typeof document>"u")return;const j={dashboard:h.value,period:z.value,exported_at:new Date().toISOString(),widgets:g.value.map(({node:te})=>{const ce=te;return{type:ce.type,title:ce.title??ce.data?.title??null,data:ce.data??null}})},O=new Blob([JSON.stringify(j,null,2)],{type:"application/json"}),Z=URL.createObjectURL(O),W=document.createElement("a");W.href=Z,W.download=`dashboard-${h.value??"export"}-${z.value}.json`,document.body.appendChild(W),W.click(),W.remove(),URL.revokeObjectURL(Z)}return(j,O)=>(e.openBlock(),e.createElementBlock("section",$C,[e.createElementVNode("header",OC,[e.createElementVNode("div",ZC,[e.createElementVNode("h1",WC,e.toDisplayString(M.value),1),f.value?(e.openBlock(),e.createElementBlock("div",GC,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",KC,[e.renderSlot(j.$slots,"actions"),e.createVNode(e.unref(u.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md","data-testid":"dash-period"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(qn),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(R.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,Z=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:Z.key,onClick:W=>b(Z.key)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(Z.label),1)]),_:2},1032,["onClick"]))),128))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"secondary",size:"md","data-testid":"dash-export",onClick:o9},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Dn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(y("admin.dashboard.export","Экспорт")),1)]),_:1}),e.unref(c).editMode?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(u.UidButton),{variant:"secondary",size:"md","data-testid":"dash-add-widget",onClick:I},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(y("admin.dashboard.add_widget","Добавить виджет")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md",onClick:$},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(xn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(y("admin.dashboard.reset_layout","Сбросить")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md",onClick:E},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y("admin.dashboard.cancel_edit","Отмена")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"md",loading:e.unref(c).saving,disabled:e.unref(c).saving,onClick:Y},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y("admin.dashboard.save_layout","Сохранить")),1)]),_:1},8,["loading","disabled"])],64)):(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"secondary",size:"md","data-testid":"dash-edit",onClick:x},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ee),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(y("admin.dashboard.edit_layout","Редактировать")),1)]),_:1}))])]),e.createElementVNode("div",{class:e.normalizeClass(["admin-dashboard__grid",{"admin-dashboard__grid--editing":e.unref(c).editMode}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(Z,W)=>(e.openBlock(),e.createElementBlock("div",{key:Z.layoutSlug,class:e.normalizeClass(["admin-dashboard__cell",{"admin-dashboard__cell--editing":e.unref(c).editMode,"admin-dashboard__cell--dragging":le.value===W,"admin-dashboard__cell--drop-target":Ie.value===W&&le.value!==W&&le.value!==null}]),draggable:e.unref(c).editMode,style:e.normalizeStyle({gridColumn:`span ${k(Z.node)} / span ${k(Z.node)}`,gridRow:`span ${w(Z.layoutSlug,Z.node)} / span ${w(Z.layoutSlug,Z.node)}`}),onPointerdown:et,onDragstart:te=>Ne(W,te),onDragover:te=>a9(W,te),onDrop:te=>n9(W,te),onDragend:t9},[e.createVNode(S9,{node:Z.node},null,8,["node"]),e.unref(c).editMode?(e.openBlock(),e.createBlock(tC,{key:0,onConfigure:te=>oe(Z.layoutSlug),onRemove:te=>G(Z.layoutSlug)},null,8,["onConfigure","onRemove"])):e.createCommentVNode("",!0),e.unref(c).editMode?(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-dashboard__resize","aria-label":i("Изменить размер"),onMousedown:te=>Se(te,Z.layoutSlug,k(Z.node),w(Z.layoutSlug,Z.node))},null,40,JC)):e.createCommentVNode("",!0)],46,XC))),128))],2),e.createVNode(RC,{open:N.value!==null,mode:N.value??"add",item:T.value,"initial-title":V.value,restorable:ee.value,onClose:_,onAdd:J,onSave:ie,onRestore:X},null,8,["open","mode","item","initial-title","restorable"])]))}}),eL={key:1,class:"admin-home"},tL={class:"admin-home__title"},aL={class:"admin-home__lead"},nL={key:0,class:"admin-home__resources"},oL={class:"admin-home__heading"},cL={class:"admin-home__grid"},rL=["onClick"],iL={class:"admin-home__card-label"},lL={class:"admin-home__card-slug"},fI=e.defineComponent({__name:"HomePage",setup(a){const n=pe(),o=ge(),r=re.useRouter(),l=e.computed(()=>o.user?.name??""),c=e.computed(()=>n.manifest?.resources??[]),d=e.computed(()=>n.manifest?.dashboards??[]),i=e.computed(()=>d.value[0]?.slug??null),s=hI();return e.watch(i,h=>{h&&s.openDashboard(h)},{immediate:!0}),(h,y)=>i.value?(e.openBlock(),e.createBlock(_9,{key:0,slug:i.value},null,8,["slug"])):(e.openBlock(),e.createElementBlock("div",eL,[e.createVNode(e.unref(u.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",tL,"Добро пожаловать"+e.toDisplayString(l.value?", "+l.value:""),1),e.createElementVNode("p",aL,e.toDisplayString(e.unref(p.trSafe)("Админ-панель готова. Зарегистрируйте DashboardScreen чтобы увидеть widget-grid здесь,"))+" "+e.toDisplayString(e.unref(p.trSafe)("либо переходите к ресурсам ниже.")),1)]),_:1}),c.value.length?(e.openBlock(),e.createElementBlock("section",nL,[e.createElementVNode("h2",oL,e.toDisplayString(e.unref(p.trSafe)("Ресурсы")),1),e.createElementVNode("ul",cL,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m.slug},[e.createElementVNode("button",{type:"button",class:"admin-home__card",onClick:v=>e.unref(r).push({name:`admin.resource.${m.slug}.index`})},[e.createElementVNode("span",iL,e.toDisplayString(m.label),1),e.createElementVNode("span",lL,e.toDisplayString(m.slug),1)],8,rL)]))),128))])])):e.createCommentVNode("",!0)]))}}),dL={class:"admin-status-page"},sL={class:"admin-status-page__message"},vI=e.defineComponent({__name:"ForbiddenPage",setup(a){const n=re.useRouter();return(o,r)=>(e.openBlock(),e.createElementBlock("div",dL,[e.createVNode(e.unref(u.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[1]||(r[1]=e.createElementVNode("h1",{class:"admin-status-page__code"},"403",-1)),e.createElementVNode("p",sL,e.toDisplayString(e.unref(p.trSafe)("Доступ запрещён.")),1),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=l=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("На главную")),1)]),_:1})]),_:1})]))}}),uL={class:"admin-status-page"},hL={class:"admin-status-page__message"},gI=e.defineComponent({__name:"NotFoundPage",setup(a){const n=re.useRouter();return(o,r)=>(e.openBlock(),e.createElementBlock("div",uL,[e.createVNode(e.unref(u.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[1]||(r[1]=e.createElementVNode("h1",{class:"admin-status-page__code"},"404",-1)),e.createElementVNode("p",hL,e.toDisplayString(e.unref(p.trSafe)("Страница не найдена.")),1),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=l=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("На главную")),1)]),_:1})]),_:1})]))}}),yL={class:"admin-settings-page"},pL={class:"admin-settings-page__title"},kL={key:0,class:"admin-settings-page__hint"},mL={key:1,class:"admin-settings-page__debug"},MI=e.defineComponent({__name:"SettingsPage",setup(a){const n=re.useRoute(),o=pe(),r=e.computed(()=>String(n.params.slug??"")),l=e.computed(()=>o.manifest?.settings?.find(c=>c.slug===r.value)??null);return(c,d)=>(e.openBlock(),e.createElementBlock("div",yL,[e.createVNode(e.unref(u.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",pL,e.toDisplayString(l.value?.label??r.value),1),l.value?(e.openBlock(),e.createElementBlock("pre",mL,e.toDisplayString(JSON.stringify(l.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",kL," Settings «"+e.toDisplayString(r.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),fL=Me.defineStore("admin-screen",()=>{const a=e.ref(null),n=e.ref(""),o=e.ref(null),r=e.ref([]),l=e.ref([]),c=e.ref([]),d=e.ref(null),i=e.ref({}),s=e.ref({}),h=e.ref({}),y=e.ref(!1),m=e.ref(!1),v=e.ref(null),M=e.ref(null),f=e.computed(()=>v.value!==null);function g(C,A){for(const H of Object.keys(C))delete C[H];Object.assign(C,A)}function k(C){return C.map(A=>w(A))}function w(C){const A={...C};return Array.isArray(C.children)&&C.items===void 0?A.items=C.children.map(H=>typeof H=="object"&&H!==null?w(H):H):Array.isArray(C.items)&&(A.items=C.items.map(H=>typeof H=="object"&&H!==null?w(H):H)),C.props&&typeof C.props=="object"&&Object.assign(A,C.props),A}function D(){a.value=null,n.value="",o.value=null,r.value=[],l.value=[],c.value=[],d.value=null,g(i.value,{}),g(s.value,{}),h.value={},y.value=!1,m.value=!1,v.value=null,M.value=null}async function z(C,A){a.value!==C&&(M.value=null),a.value=C,y.value=!0,v.value=null,h.value={};try{const R=await ne().get(`/${C}/state`,{params:A});n.value=R.name,o.value=R.description,r.value=k(R.layout),l.value=R.command_bar,c.value=R.permissions,d.value=R.etag,g(i.value,R.state),g(s.value,R.state)}catch(H){throw v.value=H instanceof Error?H:new Error(String(H)),H}finally{y.value=!1}}async function B(C,A){if(!a.value)throw new Error("useScreenStore.runMethod() before slug set");if(m.value)throw new Error("Already running a method");m.value=!0,v.value=null,h.value={},M.value=null;try{const H=ne(),R=A??i.value,N=await H.post(`/${a.value}/runMethod`,{method:C,payload:R});if(N.state&&Object.keys(N.state).length>0&&(g(i.value,N.state),g(s.value,{...N.state})),N.message&&(M.value=N.message),N.download_url&&typeof document<"u"){const T=document.createElement("a");T.href=N.download_url,T.rel="noopener",document.body.appendChild(T),T.click(),T.remove()}return N.refresh&&await z(a.value).catch(()=>{}),N}catch(H){throw H instanceof On?h.value={...H.fields}:(H instanceof ve||H instanceof Error)&&(v.value=H),H}finally{m.value=!1}}function b(C,A){if(i.value[C]=A,h.value[C]){const H={...h.value};delete H[C],h.value=H}}function L(C){h.value={...C}}function S(){h.value={}}return{slug:a,name:n,description:o,layout:r,commandBar:l,permissions:c,etag:d,state:i,initial:s,errors:h,loading:y,running:m,error:v,lastMessage:M,hasError:f,reset:D,load:z,runMethod:B,setField:b,setErrors:L,clearErrors:S}}),B9=Symbol("admin.infolist-record");function V9(a){e.provide(B9,a)}function vL(){const a=e.inject(B9);if(!a)throw new Error("useRecord() called outside of provideRecord() scope");return a}function Wn(){return e.inject(B9,null)}const Gn=YM(),Kn=YM(),II=Gn.register,q9=Gn.get,wI=Gn.has,gL=Gn.list,xI=Kn.register,y9=Kn.get,CI=Kn.has,ML=Kn.list;function IL(){Gn.clear(),Kn.clear()}function wL(a){a.fields&&Gn.registerBundle(a.fields),a.layouts&&Kn.registerBundle(a.layouts)}const A9=e.defineComponent({__name:"UnknownField",props:{type:{},name:{}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип поля: "+e.toDisplayString(a.type),1)]),default:e.withCtx(()=>[a.name?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("code",null,e.toDisplayString(a.name),1),o[0]||(o[0]=e.createTextVNode(" — зарегистрируйте field-компонент через ",-1)),e.createElementVNode("code",null,"registerField('"+e.toDisplayString(a.type)+"', YourComponent)",1),o[1]||(o[1]=e.createTextVNode(". ",-1))],64)):e.createCommentVNode("",!0)]),_:1}))}}),QM=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(a){const n=a,o=e.computed(()=>q9(n.node.type)),r=de.tryUseFormState(),l=e.computed(()=>{const i=r?.mode;return i?n.node.visibility?.[i]!==!1:!0}),c=e.computed(()=>{const i=n.node.reactive;if(!i||typeof i!="object"||!r)return!0;for(const[s,h]of Object.entries(i)){const y=r.getField(s);if(Array.isArray(h)){if(!h.includes(y))return!1}else if(y!==h)return!1}return!0}),d=e.computed(()=>{const{type:i,attributes:s,...h}=n.node;return{...h,...s??{}}});return(i,s)=>l.value&&c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[o.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),e.normalizeProps(e.mergeProps({key:0},d.value)),null,16)):(e.openBlock(),e.createBlock(A9,{key:1,type:a.node.type,name:a.node.name},null,8,["type","name"]))],64)):e.createCommentVNode("",!0)}}),Ln=e.defineComponent({__name:"LayoutRenderer",props:{node:{}},setup(a){const n=a,o=e.computed(()=>{if(n.node.kind==="field")return{kind:"field"};if(n.node.kind==="layout"){const d=y9(n.node.type);return d?{kind:"layout",component:d}:{kind:"unknown"}}const c=y9(n.node.type);return c?{kind:"layout",component:c}:q9(n.node.type)?{kind:"field"}:{kind:"unknown"}}),r=e.computed(()=>{const{type:c,kind:d,...i}=n.node;return i}),l=e.computed(()=>n.node);return(c,d)=>o.value.kind==="layout"&&o.value.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value.component),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):o.value.kind==="field"?(e.openBlock(),e.createBlock(QM,{key:1,node:l.value},null,8,["node"])):(e.openBlock(),e.createBlock(A9,{key:2,type:a.node.type,name:a.node.name},null,8,["type","name"]))}}),xL={class:"admin-page admin-screen-page"},CL={class:"admin-page__hd"},LL={class:"admin-page__title-wrap"},bL={class:"admin-page__title"},SL={key:0,class:"admin-screen-page__description"},_L={key:0,class:"admin-page__actions"},BL={key:2,class:"admin-screen-page__loading"},LI=e.defineComponent({__name:"ScreenPage",props:{slug:{default:null}},setup(a){const n=a,o=re.useRoute(),r=fL(),l=e.computed(()=>n.slug?n.slug:String(o.params.slug??o.meta?.slug??"")),c=de.provideFormState(r.state,r.errors);V9(r.state),e.watch(()=>r.errors,y=>{c.setErrors({...y})},{deep:!0});const d=e.computed(()=>r.layout.filter(y=>typeof y.type=="string").map(y=>y)),i=e.computed(()=>!r.loading&&l.value!=="");e.onMounted(async()=>{l.value&&await r.load(l.value).catch(()=>{})}),e.watch(()=>l.value,async y=>{y?await r.load(y).catch(()=>{}):r.reset()});async function s(y){const m=y.attributes?.method;if(m&&!(y.confirm?.message&&!confirm(y.confirm.message)))try{await r.runMethod(m)}catch{}}function h(y){return y.destructive?"danger":y.primary?"primary":"secondary"}return(y,m)=>(e.openBlock(),e.createElementBlock("section",xL,[e.createElementVNode("header",CL,[e.createElementVNode("div",LL,[e.createElementVNode("h1",bL,e.toDisplayString(e.unref(r).name||l.value),1),e.unref(r).description?(e.openBlock(),e.createElementBlock("p",SL,e.toDisplayString(e.unref(r).description),1)):e.createCommentVNode("",!0)]),e.unref(r).commandBar.length>0?(e.openBlock(),e.createElementBlock("div",_L,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).commandBar,v=>(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:v.name,variant:h(v),icon:v.icon??void 0,loading:e.unref(r).running,disabled:e.unref(r).running||e.unref(r).loading,onClick:M=>s(v)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.label),1)]),_:2},1032,["variant","icon","loading","disabled","onClick"]))),128))])):e.createCommentVNode("",!0)]),e.unref(r).hasError?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"danger",class:"admin-screen-page__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).error?.message??e.unref(p.trSafe)("Не удалось выполнить действие")),1)]),_:1})):e.unref(r).lastMessage?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:1,variant:"success",class:"admin-screen-page__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).lastMessage),1)]),_:1})):e.createCommentVNode("",!0),e.unref(r).loading?(e.openBlock(),e.createElementBlock("div",BL,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(4,v=>e.createVNode(e.unref(u.UidSkeleton),{key:v,height:"40px"})),64))])):i.value?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:3,padding:"md",class:"admin-screen-page__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(v,M)=>(e.openBlock(),e.createBlock(Ln,{key:M,node:v},null,8,["node"]))),128))]),_:1})):e.createCommentVNode("",!0)]))}}),VL={class:"admin-auth-card__row"},qL=["href"],AL={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},zL=["href"],bI=e.defineComponent({__name:"LoginForm",props:{forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null}},emits:["success"],setup(a,{emit:n}){const o=n,r=ge(),l=e.ref(""),c=e.ref(""),d=e.ref(!1),i=e.ref(!1),s=e.ref(null),h=e.ref({}),y=e.computed(()=>h.value.email?.[0]),m=e.computed(()=>h.value.password?.[0]);async function v(){if(!i.value){i.value=!0,s.value=null,h.value={};try{const M=await r.login({email:l.value,password:c.value,remember:d.value});o("success",M)}catch(M){(M instanceof ve?M.status:M?.response?.status)===429?s.value=p.trSafe("Слишком много попыток входа. Подождите минуту и попробуйте снова"):M instanceof On?(h.value=M.fields,s.value=M.firstFieldMessage()):M instanceof uc?s.value=p.trSafe("Нет соединения с сервером"):M instanceof ve?s.value=M.message||p.trSafe("Не удалось войти"):s.value=M.message}finally{i.value=!1}}}return(M,f)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(v,["prevent"])},[s.value?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidInput),{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=g=>l.value=g),type:"email",label:"Email",placeholder:"you@company.com",autocomplete:"username",required:!0,disabled:i.value,error:y.value,name:"email","data-testid":"login-email"},null,8,["modelValue","disabled","error"]),e.createVNode(e.unref(u.UidInput),{modelValue:c.value,"onUpdate:modelValue":f[1]||(f[1]=g=>c.value=g),type:"password",label:e.unref(p.trSafe)("Пароль"),autocomplete:"current-password",required:!0,disabled:i.value,error:m.value,name:"password","data-testid":"login-password"},null,8,["modelValue","label","disabled","error"]),e.createElementVNode("div",VL,[e.createVNode(e.unref(u.UidCheckbox),{modelValue:d.value,"onUpdate:modelValue":f[2]||(f[2]=g=>d.value=g),disabled:i.value,label:e.unref(p.trSafe)("Запомнить меня")},null,8,["modelValue","disabled","label"]),a.forgotUrl?(e.openBlock(),e.createElementBlock("a",{key:0,href:a.forgotUrl,class:"admin-auth-card__link"},e.toDisplayString(e.unref(p.trSafe)("Забыли пароль?")),9,qL)):e.createCommentVNode("",!0)]),e.createVNode(e.unref(u.UidButton),{type:"submit",variant:"primary",size:"lg",loading:i.value,disabled:i.value,"data-testid":"login-submit"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value?e.unref(p.trSafe)("Вход…"):e.unref(p.trSafe)("Войти")),1)]),_:1},8,["loading","disabled"]),a.ssoLinkLabel&&a.ssoUrl?(e.openBlock(),e.createElementBlock("div",AL,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("или войдите через"))+" ",1),e.createElementVNode("a",{href:a.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(a.ssoLinkLabel),9,zL)])):e.createCommentVNode("",!0)],32))}}),DL=["value","disabled","aria-label","onInput","onKeydown"],EL={class:"admin-auth-card__row"},SI=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(a,{emit:n}){const o=n,r=ge(),l=e.ref("totp"),c=e.ref(["","","","","",""]),d=e.ref(""),i=e.ref([]),s=e.ref(!1),h=e.ref(null),y=e.ref(null),m=e.computed(()=>c.value.join("")),v=e.computed(()=>l.value==="totp"?m.value.length===6:d.value.trim().length>0);function M(B,b){b instanceof HTMLInputElement&&(i.value[B]=b)}function f(B,b){const L=b.target,S=L.value.replace(/\D/g,"").slice(-1);c.value[B]=S,L.value=S,S&&B<c.value.length-1&&e.nextTick(()=>i.value[B+1]?.focus()),m.value.length===c.value.length&&w()}function g(B,b){b.key==="Backspace"&&!c.value[B]&&B>0?e.nextTick(()=>i.value[B-1]?.focus()):b.key==="ArrowLeft"&&B>0?(i.value[B-1]?.focus(),b.preventDefault()):b.key==="ArrowRight"&&B<c.value.length-1&&(i.value[B+1]?.focus(),b.preventDefault())}function k(B){const L=(B.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,c.value.length);if(L.length!==0){B.preventDefault();for(let S=0;S<c.value.length;S++)c.value[S]=L[S]??"";e.nextTick(()=>{i.value[Math.min(L.length,c.value.length-1)]?.focus(),L.length===c.value.length&&w()})}}async function w(){if(!(s.value||!v.value)){s.value=!0,h.value=null;try{if(l.value==="totp")await r.twoFactorChallenge(m.value);else{const B=await r.twoFactorRecovery(d.value.trim());y.value=B.remaining}o("success")}catch(B){B instanceof On?h.value=B.firstFieldMessage()??p.trSafe("Неверный код"):B instanceof uc?h.value=p.trSafe("Нет соединения с сервером"):B instanceof ve?h.value=B.message||p.trSafe("Не удалось проверить код"):h.value=B.message}finally{s.value=!1}}}function D(){r.cancelChallenge(),o("cancel")}function z(){l.value=l.value==="totp"?"recovery":"totp",h.value=null}return(B,b)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(w,["prevent"])},[h.value?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value),1)]),_:1})):e.createCommentVNode("",!0),y.value!==null?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:1,variant:"info",class:"admin-auth-card__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(" Использован recovery-код. Осталось: "+e.toDisplayString(y.value),1)]),_:1})):e.createCommentVNode("",!0),l.value==="totp"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"admin-code-input",onPaste:k},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(L,S)=>(e.openBlock(),e.createElementBlock("input",{key:S,ref_for:!0,ref:C=>M(S,C),value:c.value[S],type:"text",inputmode:"numeric",autocomplete:"one-time-code",maxlength:"1",disabled:s.value,"aria-label":`Цифра ${S+1}`,onInput:C=>f(S,C),onKeydown:C=>g(S,C)},null,40,DL))),128))],32)):(e.openBlock(),e.createBlock(e.unref(u.UidInput),{key:3,modelValue:d.value,"onUpdate:modelValue":b[0]||(b[0]=L=>d.value=L),type:"text",label:e.unref(p.trSafe)("Recovery-код"),autocomplete:"one-time-code",disabled:s.value,name:"recovery-code"},null,8,["modelValue","label","disabled"])),e.createVNode(e.unref(u.UidButton),{type:"submit",variant:"primary",size:"lg",loading:s.value,disabled:s.value||!v.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value?e.unref(p.trSafe)("Проверка…"):e.unref(p.trSafe)("Подтвердить")),1)]),_:1},8,["loading","disabled"]),e.createElementVNode("div",EL,[e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:z},[l.value==="totp"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Использовать recovery-код")),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Вернуться к коду из приложения")),1)],64))]),e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:D},e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)])],32))}}),NL={class:"admin-auth-page"},HL={key:0,class:"admin-auth-page__corner"},FL={class:"admin-auth-card__hd"},PL=["src","alt"],TL={key:1,"aria-hidden":"true"},jL={key:2},UL={class:"admin-auth-card__title"},RL={class:"admin-auth-card__sub"},_I=e.defineComponent({__name:"LoginPage",props:{brandName:{default:void 0},brandMark:{default:void 0},brandLogo:{default:void 0},homeRouteName:{default:"admin.home"},redirectQueryKey:{default:"redirect"},forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null},showCornerActions:{type:Boolean,default:!0}},setup(a){const n=a,o=ge(),r=re.useRouter(),l=re.useRoute(),c=yc(),d=e.computed(()=>n.brandName??c.name??"Laravel Admin"),i=e.computed(()=>n.brandLogo??c.logo??null),s=e.computed(()=>n.brandMark??c.mark??null);async function h(){const y=l.query[n.redirectQueryKey];if(typeof y=="string"&&y.length>0&&y.startsWith("/")){await r.push(y);return}await r.push({name:n.homeRouteName})}return e.watch(()=>o.isAuthenticated,y=>{y&&h()}),e.onMounted(()=>{o.isAuthenticated&&h()}),(y,m)=>(e.openBlock(),e.createElementBlock("div",NL,[a.showCornerActions?(e.openBlock(),e.createElementBlock("div",HL,[e.createVNode(I9),e.createVNode(w9)])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidCard),{class:e.normalizeClass(["admin-auth-card",e.unref(o).isChallengePending?"admin-auth-card--wide":""]),padding:"none"},{default:e.withCtx(()=>[e.createElementVNode("div",FL,[e.createElementVNode("div",{class:e.normalizeClass(["admin-auth-card__logo",e.unref(o).isChallengePending?"admin-auth-card__logo--accent":""])},[i.value&&!e.unref(o).isChallengePending?(e.openBlock(),e.createElementBlock("img",{key:0,src:i.value,alt:d.value},null,8,PL)):e.unref(o).isChallengePending?(e.openBlock(),e.createElementBlock("span",TL,"🛡")):s.value?(e.openBlock(),e.createElementBlock("span",jL,e.toDisplayString(s.value),1)):(e.openBlock(),e.createBlock(JM,{key:3,size:40}))],2),e.createElementVNode("div",UL,[e.unref(o).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Двухфакторная проверка")),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(d.value),1)],64))]),e.createElementVNode("div",RL,[e.unref(o).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Введите 6-значный код из приложения-аутентификатора")),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Войдите, чтобы продолжить работу")),1)],64))])]),e.unref(o).isChallengePending?(e.openBlock(),e.createBlock(SI,{key:0,onSuccess:m[0]||(m[0]=()=>{}),onCancel:m[1]||(m[1]=()=>{})})):(e.openBlock(),e.createBlock(bI,{key:1,"forgot-url":a.forgotUrl,"sso-link-label":a.ssoLinkLabel,"sso-url":a.ssoUrl,onSuccess:m[2]||(m[2]=()=>{})},null,8,["forgot-url","sso-link-label","sso-url"]))]),_:1},8,["class"])]))}}),$L={class:"admin-auth-page"},OL={class:"admin-auth-card__hd"},ZL={class:"admin-auth-card__logo"},WL=["src","alt"],GL={key:1},KL={class:"admin-auth-card__title"},XL={class:"admin-auth-card__sub"},JL={class:"admin-auth-card__body"},YL=e.defineComponent({__name:"ForgotPasswordPage",props:{brandName:{default:"Laravel Admin"},loginRouteName:{default:"admin.login"}},setup(a){const n=yc(),o=re.useRouter(),r=e.ref(""),l=e.ref(!1),c=e.ref(!1);async function d(){if(r.value.trim()===""){Q.error(p.trSafe("Введите email."));return}c.value=!0;try{const{getAdminClient:i}=await Promise.resolve().then(()=>se);await i().post("/auth/forgotPassword",{email:r.value.trim()}),l.value=!0}catch{l.value=!0}finally{c.value=!1}}return(i,s)=>(e.openBlock(),e.createElementBlock("div",$L,[e.createVNode(e.unref(u.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",OL,[e.createElementVNode("div",ZL,[e.unref(n).logo?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(n).logo,alt:e.unref(n).name??"Logo"},null,8,WL)):e.unref(n).mark?(e.openBlock(),e.createElementBlock("span",GL,e.toDisplayString(e.unref(n).mark),1)):(e.openBlock(),e.createBlock(JM,{key:2,size:40}))]),e.createElementVNode("div",KL,e.toDisplayString(e.unref(p.trSafe)("Восстановление пароля")),1),e.createElementVNode("div",XL,e.toDisplayString(l.value?e.unref(p.trSafe)("Если такой email зарегистрирован — мы отправили письмо со ссылкой на сброс."):e.unref(p.trSafe)("Введите email — отправим ссылку для сброса пароля.")),1)]),e.createElementVNode("div",JL,[l.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("form",{key:0,onSubmit:e.withModifiers(d,["prevent"])},[e.createVNode(e.unref(u.UidInput),{modelValue:r.value,"onUpdate:modelValue":s[0]||(s[0]=h=>r.value=h),type:"email",placeholder:"you@example.com",autocomplete:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(u.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:c.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Fn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Отправить ссылку")),1)]),_:1},8,["loading"])],32)),e.createVNode(e.unref(u.UidButton),{variant:"ghost",class:"admin-auth-card__back",onClick:s[1]||(s[1]=h=>e.unref(o).push({name:a.loginRouteName}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("← Назад ко входу")),1)]),_:1})])]),_:1})]))}}),QL={class:"admin-auth-page"},eb={class:"admin-auth-card__hd"},tb={class:"admin-auth-card__logo"},ab=["src","alt"],nb={key:1},ob={class:"admin-auth-card__title"},cb={class:"admin-auth-card__sub"},rb={class:"admin-auth-card__body"},ib={key:0,class:"admin-auth-card__error"},lb=e.defineComponent({__name:"ResetPasswordPage",props:{loginRouteName:{default:"admin.login"}},setup(a){const n=yc(),o=a,r=re.useRouter(),l=re.useRoute(),c=e.computed(()=>String(l.query.token??"")),d=e.ref(String(l.query.email??"")),i=e.ref(""),s=e.ref(""),h=e.ref(!1),y=e.ref("");async function m(){if(y.value="",i.value.length<8){y.value=p.trSafe("Пароль должен быть не менее 8 символов.");return}if(i.value!==s.value){y.value=p.trSafe("Пароли не совпадают.");return}h.value=!0;try{const{getAdminClient:v}=await Promise.resolve().then(()=>se);await v().post("/auth/resetPassword",{token:c.value,email:d.value,password:i.value,password_confirmation:s.value}),Q.success(p.trSafe("Пароль обновлён. Войдите с новым паролем.")),await r.push({name:o.loginRouteName})}catch{y.value=p.trSafe("Не удалось сбросить пароль. Возможно, ссылка устарела.")}finally{h.value=!1}}return(v,M)=>(e.openBlock(),e.createElementBlock("div",QL,[e.createVNode(e.unref(u.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",eb,[e.createElementVNode("div",tb,[e.unref(n).logo?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(n).logo,alt:e.unref(n).name??"Logo"},null,8,ab)):e.unref(n).mark?(e.openBlock(),e.createElementBlock("span",nb,e.toDisplayString(e.unref(n).mark),1)):(e.openBlock(),e.createBlock(JM,{key:2,size:40}))]),e.createElementVNode("div",ob,e.toDisplayString(e.unref(p.trSafe)("Новый пароль")),1),e.createElementVNode("div",cb,e.toDisplayString(e.unref(p.trSafe)("Задайте новый пароль для своего аккаунта.")),1)]),e.createElementVNode("div",rb,[e.createElementVNode("form",{onSubmit:e.withModifiers(m,["prevent"])},[e.createVNode(e.unref(u.UidInput),{modelValue:d.value,"onUpdate:modelValue":M[0]||(M[0]=f=>d.value=f),type:"email",placeholder:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(u.UidInput),{modelValue:i.value,"onUpdate:modelValue":M[1]||(M[1]=f=>i.value=f),type:"password",placeholder:e.unref(p.trSafe)("Новый пароль (мин. 8)"),autocomplete:"new-password",required:""},null,8,["modelValue","placeholder"]),e.createVNode(e.unref(u.UidInput),{modelValue:s.value,"onUpdate:modelValue":M[2]||(M[2]=f=>s.value=f),type:"password",placeholder:e.unref(p.trSafe)("Повторите пароль"),autocomplete:"new-password",required:""},null,8,["modelValue","placeholder"]),y.value?(e.openBlock(),e.createElementBlock("p",ib,e.toDisplayString(y.value),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:h.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ve),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Сохранить пароль")),1)]),_:1},8,["loading"])],32)])]),_:1})]))}}),U9={page:1,per_page:20,total:0,last_page:1},z9=Me.defineStore("admin-resource-index",()=>{const a=e.ref(null),n=e.ref([]),o=e.ref({...U9}),r=e.ref(!1),l=e.ref(!1),c=e.ref(null);let d=null;const i=200,s=e.ref(""),h=e.ref({}),y=e.ref(null),m=e.ref(null),v=e.ref(new Set),M=e.computed(()=>!r.value&&c.value===null&&n.value.length===0),f=e.computed(()=>v.value.size),g=e.computed(()=>v.value.size>0),k=e.computed(()=>c.value!==null),w=e.computed(()=>v.value.size===0||n.value.length===0?"none":n.value.every(E=>v.value.has(D(E)))?"all":"mixed");function D(x){return x.id??x.key??""}function z(x){a.value!==x&&(a.value=x,B(),r.value=!0)}function B(){n.value=[],o.value={...U9},r.value=!1,c.value=null,s.value="",h.value={},y.value=null,m.value=null,v.value=new Set}function b(x={}){const E={page:x.page??o.value.page,per_page:x.per_page??o.value.per_page},$=x.search??s.value;$&&(E.q=$);const Y=x.sort??y.value,G=x.direction??m.value;Y&&G!==null&&(E.order=[{column:Y,direction:G}]);const oe=x.filters??h.value,J={};for(const[ee,X]of Object.entries(oe))X==null||X===""||(J[ee]=Array.isArray(X)?X.join(","):X);return Object.keys(J).length>0&&(E.filters=J),E}async function L(x={}){if(!a.value)throw new Error("useResourceIndexStore.load() called before setSlug()");r.value=!0,c.value=null,d!==null&&clearTimeout(d),d=setTimeout(()=>{l.value=!0},i);try{const E=ne(),$=b(x),Y=await E.post(`/${a.value}/search`,$);n.value=Y.data,o.value=Y.meta}catch(E){throw c.value=E instanceof Error?E:new Error(String(E)),E}finally{r.value=!1,l.value=!1,d!==null&&(clearTimeout(d),d=null)}}async function S(x){s.value=x,o.value.page=1,await L()}async function C(x,E){E==null||E===""?delete h.value[x]:h.value[x]=E,o.value.page=1,await L()}async function A(){h.value={},o.value.page=1,await L()}async function H(x,E="asc"){y.value=x,m.value=E,await L()}async function R(x){y.value===x?m.value==="asc"?m.value="desc":m.value==="desc"?(y.value=null,m.value=null):m.value="asc":(y.value=x,m.value="asc"),await L()}async function N(x){o.value.page=x,await L()}function T(x){const E=new Set(v.value);E.has(x)?E.delete(x):E.add(x),v.value=E}function V(){if(w.value==="all"){v.value=new Set;return}const x=new Set(v.value);for(const E of n.value)x.add(D(E));v.value=x}function I(){v.value=new Set}function _(x){return v.value.has(x)}return{slug:a,items:n,meta:o,loading:r,slowLoading:l,error:c,search:s,filters:h,sortKey:y,sortDirection:m,selection:v,isEmpty:M,hasError:k,hasSelection:g,selectedCount:f,selectionState:w,setSlug:z,reset:B,load:L,setSearch:S,setFilter:C,clearFilters:A,setSort:H,toggleSort:R,setPage:N,toggleRow:T,toggleAllOnPage:V,clearSelection:I,isSelected:_,rowId:D}}),db=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:z9},Symbol.toStringTag,{value:"Module"})),R9="d.m.Y H:i:s",sb="d.m.Y",ub=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function pc(a,n,o={}){if(a==null)return"";if(!n&&typeof a=="string"&&ub.test(a))return d9(a,R9);switch(n){case"date":return d9(String(a),o.format??sb);case"datetime":return d9(String(a),o.format??R9);case"money":return hb(a,o.currency??"RUB",o.decimals??2);case"boolean":return yb(a,p.trSafe(o.trueLabel??"Да"),p.trSafe(o.falseLabel??"Нет"));case"bytes":return pb(a);case"json":return $9(a);default:return Array.isArray(a)||a!==null&&typeof a=="object"?$9(a):String(a)}}function $9(a){try{return JSON.stringify(a,null,2)}catch{return String(a)}}function d9(a,n){const o=new Date(a);if(isNaN(o.getTime()))return a;const r=(d,i=2)=>String(d).padStart(i,"0"),l={d:r(o.getDate()),m:r(o.getMonth()+1),Y:String(o.getFullYear()),y:r(o.getFullYear()%100),H:r(o.getHours()),h:r((o.getHours()+11)%12+1),i:r(o.getMinutes()),s:r(o.getSeconds()),U:String(Math.floor(o.getTime()/1e3)),c:o.toISOString(),N:String((o.getDay()+6)%7+1),w:String(o.getDay())};let c="";for(let d=0;d<n.length;d++){const i=n[d];if(i==="\\"&&d+1<n.length){c+=n[d+1],d++;continue}c+=l[i]??i}return c}function hb(a,n,o){const r=typeof a=="number"?a:Number(a);return isNaN(r)?String(a):`${r.toFixed(o)} ${n}`}function yb(a,n,o){return a===!0||a===1||a==="1"||a==="true"?n:o}function pb(a){const n=typeof a=="number"?a:Number(a);return isNaN(n)?String(a):n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:n<1024*1024*1024?`${(n/1024/1024).toFixed(1)} MB`:`${(n/1024/1024/1024).toFixed(1)} GB`}const O9=e.defineComponent({name:"FilterEditor",props:{filter:{type:Object,required:!0},draft:{type:null,required:!1,default:null},isChecked:{type:Function,required:!0}},emits:["toggle-option","set-draft"],setup(a,{emit:n}){return()=>{const o=a.filter;if(o.type==="options"&&o.options&&o.options.length>0)return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},o.options.map(r=>e.h("label",{key:String(r.value),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:o.multiple?"checkbox":"radio",checked:a.isChecked(r.value),onChange:()=>n("toggle-option",r.value)}),e.h("span",null,r.label)])));if(o.type==="date_range"){const r=a.draft??{};return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--dates"},[e.h("input",{type:"date",value:r.from??"",class:"admin-toolbar__input",placeholder:p.trSafe("От"),onChange:l=>n("set-draft",{...r,from:l.target.value})}),e.h("input",{type:"date",value:r.to??"",class:"admin-toolbar__input",placeholder:p.trSafe("До"),onChange:l=>n("set-draft",{...r,to:l.target.value})})])}if(o.type==="trashed"){const r=[{value:"without",label:p.trSafe("Без удалённых")},{value:"with",label:p.trSafe("С удалёнными")},{value:"only",label:p.trSafe("Только удалённые")}];return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},r.map(l=>e.h("label",{key:l.value,class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:a.draft===l.value,onChange:()=>n("set-draft",l.value)}),e.h("span",null,l.label)])))}return o.type==="switcher"?e.h("div",{class:"admin-toolbar__editor"},[e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:a.draft===!0,onChange:()=>n("set-draft",!0)}),e.h("span",null,p.trSafe("Да"))]),e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:a.draft===!1,onChange:()=>n("set-draft",!1)}),e.h("span",null,p.trSafe("Нет"))])]):e.h("input",{type:"text",value:a.draft??"",class:"admin-toolbar__input",placeholder:o.placeholder??o.label,onChange:r=>n("set-draft",r.target.value)})}}}),kb={class:"admin-toolbar"},mb={class:"admin-toolbar__row admin-toolbar__row--filters"},fb={class:"admin-toolbar__search"},vb=["placeholder"],gb={key:0,class:"admin-toolbar__divider"},Mb={type:"button",class:"admin-toolbar__chip admin-toolbar__chip--active"},Ib={class:"admin-toolbar__chip-text"},wb=["aria-label","onClick","onKeydown"],xb={class:"admin-toolbar__popover-actions"},Cb={type:"button",class:"admin-toolbar__chip"},Lb={class:"admin-toolbar__chip-text"},bb={class:"admin-toolbar__popover-actions"},Sb={type:"button",class:"admin-toolbar__chip"},_b=["onClick"],Bb={key:3,class:"admin-toolbar__spacer admin-toolbar__spacer--actions"},Vb={type:"button",class:"admin-toolbar__chip"},qb={class:"admin-toolbar__chip-text"},Ab=["onClick"],zb={type:"button",class:"admin-toolbar__chip"},Db={class:"admin-toolbar__chip-text"},Eb=["checked","onChange"],Nb={type:"button",class:"admin-toolbar__chip"},Hb={class:"admin-toolbar__chip-text"},Fb=["placeholder"],Pb={class:"admin-toolbar__popover-actions"},Z9=4,Tb=e.defineComponent({__name:"AdminFilterToolbar",props:{search:{},searchPlaceholder:{default:"Поиск…"},filters:{},values:{},columns:{},groupBy:{default:null},columnVisibility:{default:()=>({})},enableSavedViews:{type:Boolean,default:!0}},emits:["update:search","apply-filter","reset","group-by","columns-visibility","save-view"],setup(a,{emit:n}){const o=a,r=n,l=e.ref(o.search);e.watch(()=>o.search,I=>{l.value=I});function c(){l.value!==o.search&&r("update:search",l.value)}function d(I){return I==null||I===""||Array.isArray(I)&&I.length===0?!1:typeof I=="object"&&!Array.isArray(I)?Object.values(I).some(x=>x!==null&&x!==""&&x!==void 0):!0}const i=e.computed(()=>o.filters.filter(I=>d(o.values[I.name]))),s=e.computed(()=>o.filters.filter(I=>!d(o.values[I.name]))),h=e.ref(new Set),y=e.computed(()=>s.value.filter((I,_)=>h.value.has(I.name)||_<Z9)),m=e.computed(()=>s.value.filter((I,_)=>!h.value.has(I.name)&&_>=Z9));function v(I){const _=new Set(h.value);_.add(I),h.value=_}const M=e.computed(()=>o.search!==""||i.value.length>0);function f(I){r("apply-filter",I,null)}function g(I){const _=o.values[I.name];if(I.options&&I.options.length>0){const E=(Array.isArray(_)?_:[_]).map($=>I.options?.find(Y=>String(Y.value)===String($))?.label??String($));return`${I.label}: ${E.join(", ")}`}if(I.type==="date_range"&&_&&typeof _=="object"){const x=_;return`${I.label}: ${x.from??""} – ${x.to??""}`}return I.type==="switcher"?`${I.label}: ${_?p.trSafe("да"):p.trSafe("нет")}`:`${I.label}: ${String(_)}`}const k=e.ref({});function w(I){return I in k.value||(k.value[I]=o.values[I]??null),k.value[I]}function D(I,_){k.value={...k.value,[I]:_}}function z(I,_){r("apply-filter",I,k.value[I]??null),_()}function B(I,_,x){if(!x){D(I,_);return}const E=w(I),$=Array.isArray(E)?[...E]:[],Y=$.findIndex(G=>String(G)===String(_));Y>=0?$.splice(Y,1):$.push(_),D(I,$)}function b(I,_){const x=w(I);return Array.isArray(x)?x.some(E=>String(E)===String(_)):x!=null&&String(x)===String(_)}const L=e.computed(()=>o.columns.filter(I=>I.groupable===!0&&(I.key??I.name)));function S(I,_){r("group-by",I),_()}function C(I){return String(I.key??I.name??"")}function A(I){return String(I.label??I.name??I.key??"")}function H(I){const _=C(I);return _ in o.columnVisibility?o.columnVisibility[_]:!0}function R(I){const _=C(I);r("columns-visibility",{...o.columnVisibility,[_]:!H(I)})}const N=e.ref("");function T(I){N.value.trim()!==""&&(r("save-view",N.value.trim()),N.value="",I())}function V(I){return ZM(I)??null}return(I,_)=>(e.openBlock(),e.createElementBlock("div",kb,[e.createElementVNode("div",mb,[e.createElementVNode("label",fb,[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ye),size:14,class:"admin-toolbar__search-icon"},null,8,["icon"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[0]||(_[0]=x=>l.value=x),type:"search",placeholder:e.unref(p.trSafe)(a.searchPlaceholder),class:"admin-toolbar__search-input",onKeydown:e.withKeys(c,["enter"]),onBlur:c},null,40,vb),[[e.vModelText,l.value]])]),a.filters.length>0?(e.openBlock(),e.createElementBlock("span",gb)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,x=>(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:`active-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",Mb,[V(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:V(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Ib,e.toDisplayString(g(x)),1),e.createElementVNode("span",{role:"button",tabindex:"0","aria-label":e.unref(p.trSafe)("Сбросить фильтр"),class:"admin-toolbar__chip-x",onClick:e.withModifiers(E=>f(x.name),["stop"]),onKeydown:e.withKeys(e.withModifiers(E=>f(x.name),["stop"]),["enter"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:12},null,8,["icon"])],40,wb)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:_[1]||(_[1]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(O9),{filter:x,draft:w(x.name),"is-checked":E=>b(x.name,E),onToggleOption:E=>B(x.name,E,x.multiple??!1),onSetDraft:E=>D(x.name,E)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",xb,[e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"ghost",onClick:E=>D(x.name,null)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Очистить")),1)]),_:1},8,["onClick"]),e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"primary",onClick:E=>z(x.name,()=>{})},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Применить")),1)]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,x=>(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:`inactive-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",Cb,[V(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:V(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Lb,e.toDisplayString(x.label),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:_[2]||(_[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(O9),{filter:x,draft:w(x.name),"is-checked":E=>b(x.name,E),onToggleOption:E=>B(x.name,E,x.multiple??!1),onSetDraft:E=>D(x.name,E)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",bb,[e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"ghost",onClick:E=>D(x.name,null)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Очистить")),1)]),_:1},8,["onClick"]),e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"primary",onClick:E=>z(x.name,()=>{})},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Применить")),1)]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),m.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",Sb,[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"]),_[12]||(_[12]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Filter",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:_[3]||(_[3]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,x=>(e.openBlock(),e.createElementBlock("button",{key:x.name,type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:E=>v(x.name)},[V(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:V(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(x.label),1)],8,_b))),128))],32)]),_:1})):e.createCommentVNode("",!0),_[13]||(_[13]=e.createElementVNode("span",{class:"admin-toolbar__spacer"},null,-1)),M.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,variant:"ghost",size:"md",onClick:_[4]||(_[4]=x=>r("reset"))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(xn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Сбросить")),1)]),_:1})):e.createCommentVNode("",!0),L.value.length>0||a.columns.length>0||a.enableSavedViews?(e.openBlock(),e.createElementBlock("span",Bb)):e.createCommentVNode("",!0),L.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:4},{trigger:e.withCtx(()=>[e.createElementVNode("button",Vb,[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(zo),size:14},null,8,["icon"]),e.createElementVNode("span",qb,e.toDisplayString(a.groupBy?`Группа: ${A(a.columns.find(x=>C(x)===a.groupBy)??{})}`:e.unref(p.trSafe)("Группировать")),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:_[6]||(_[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("button",{type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:_[5]||(_[5]=x=>S(null,()=>{}))},[a.groupBy?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:e.unref(Ve),size:14},null,8,["icon"])),e.createElementVNode("span",null,e.toDisplayString(e.unref(p.trSafe)("Без группировки")),1)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,x=>(e.openBlock(),e.createElementBlock("button",{key:C(x),type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:E=>S(C(x),()=>{})},[a.groupBy===C(x)?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:e.unref(Ve),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(A(x)),1)],8,Ab))),128))],32)]),_:1})):e.createCommentVNode("",!0),a.columns.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:5},{trigger:e.withCtx(()=>[e.createElementVNode("button",zb,[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ze),size:14},null,8,["icon"]),e.createElementVNode("span",Db,e.toDisplayString(e.unref(p.trSafe)("Колонки")),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:_[7]||(_[7]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.columns.filter(x=>C(x)!==""),x=>(e.openBlock(),e.createElementBlock("label",{key:C(x),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.createElementVNode("input",{type:"checkbox",checked:H(x),onChange:E=>R(x)},null,40,Eb),e.createElementVNode("span",null,e.toDisplayString(A(x)),1)]))),128))],32)]),_:1})):e.createCommentVNode("",!0),a.enableSavedViews?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:6},{trigger:e.withCtx(()=>[e.createElementVNode("button",Nb,[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(In),size:14},null,8,["icon"]),e.createElementVNode("span",Hb,e.toDisplayString(e.unref(p.trSafe)("Сохранить")),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:_[11]||(_[11]=e.withModifiers(()=>{},["stop"]))},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[8]||(_[8]=x=>N.value=x),type:"text",placeholder:e.unref(p.trSafe)("Название view"),class:"admin-toolbar__input",onKeydown:_[9]||(_[9]=e.withKeys(x=>T(()=>{}),["enter"]))},null,40,Fb),[[e.vModelText,N.value]]),e.createElementVNode("div",Pb,[e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"primary",disabled:N.value.trim()==="",onClick:_[10]||(_[10]=x=>T(()=>{}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Сохранить view")),1)]),_:1},8,["disabled"])])],32)]),_:1})):e.createCommentVNode("",!0)])]))}}),jb=["title"],Ub=["disabled"],Rb=["disabled"],$b=["disabled"],Ob=["value"],Zb=["disabled"],Wb=["disabled"],BI=e.defineComponent({__name:"InlineEditCell",props:{resourceSlug:{},rowId:{},column:{},value:{},editable:{type:Boolean,default:!0},inputType:{default:"text"},options:{default:()=>({})},rowOverride:{default:()=>({})}},emits:["saved"],setup(a,{emit:n}){const o=a,r=n,l=e.ref(!1),c=e.ref(""),d=e.ref(!1),i=e.ref(null),s=e.computed(()=>!(!o.editable||o.rowOverride[o.column]===!1));async function h(){!s.value||d.value||(c.value=o.value===null||o.value===void 0?"":String(o.value),l.value=!0,await e.nextTick(),i.value?.focus(),i.value&&"select"in i.value&&typeof i.value.select=="function"&&i.value.select())}function y(){l.value=!1}async function m(){if(!(!l.value||d.value)){if(c.value===String(o.value??"")){l.value=!1;return}d.value=!0;try{const{getAdminClient:g}=await Promise.resolve().then(()=>se),k=g(),w=o.inputType==="switcher"?c.value==="true"||c.value==="1":c.value;await k.post(`/${o.resourceSlug}/inlineUpdate`,{id:o.rowId,column:o.column,value:w}),r("saved",w),l.value=!1}catch(g){typeof console<"u"&&console.error("[admin] inline-update failed:",g),Q.error(`Не удалось обновить «${o.column}».`)}finally{d.value=!1}}}function v(g){g.key==="Enter"&&o.inputType!=="textarea"?(g.preventDefault(),m()):g.key==="Escape"&&(g.preventDefault(),y())}function M(){!s.value||d.value||(c.value=o.value===!0||o.value===1||o.value==="1"?"false":"true",l.value=!0,m())}const f=e.computed(()=>Object.entries(o.options).map(([g,k])=>({value:g,label:k})));return(g,k)=>a.inputType==="switcher"?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-inline-edit",{"admin-inline-edit--editable":s.value}]),onClick:e.withModifiers(M,["stop"])},[e.renderSlot(g.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[l.value?a.inputType==="number"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"inputRef",ref:i,"onUpdate:modelValue":k[0]||(k[0]=w=>c.value=w),type:"number",class:"admin-inline-edit__input",disabled:d.value,onKeydown:v,onBlur:m,onClick:k[1]||(k[1]=e.withModifiers(()=>{},["stop"]))},null,40,Ub)),[[e.vModelText,c.value]]):a.inputType==="date"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,ref_key:"inputRef",ref:i,"onUpdate:modelValue":k[2]||(k[2]=w=>c.value=w),type:"date",class:"admin-inline-edit__input",disabled:d.value,onKeydown:v,onBlur:m,onClick:k[3]||(k[3]=e.withModifiers(()=>{},["stop"]))},null,40,Rb)),[[e.vModelText,c.value]]):a.inputType==="select"?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:3,ref_key:"inputRef",ref:i,"onUpdate:modelValue":k[4]||(k[4]=w=>c.value=w),class:"admin-inline-edit__input",disabled:d.value,onKeydown:v,onChange:m,onBlur:m,onClick:k[5]||(k[5]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,w=>(e.openBlock(),e.createElementBlock("option",{key:w.value,value:w.value},e.toDisplayString(w.label),9,Ob))),128))],40,$b)),[[e.vModelSelect,c.value]]):a.inputType==="textarea"?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:4,ref_key:"inputRef",ref:i,"onUpdate:modelValue":k[6]||(k[6]=w=>c.value=w),class:"admin-inline-edit__input admin-inline-edit__input--textarea",rows:"3",disabled:d.value,onKeydown:v,onBlur:m,onClick:k[7]||(k[7]=e.withModifiers(()=>{},["stop"]))},null,40,Zb)),[[e.vModelText,c.value]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:5,ref_key:"inputRef",ref:i,"onUpdate:modelValue":k[8]||(k[8]=w=>c.value=w),type:"text",class:"admin-inline-edit__input",disabled:d.value,onKeydown:v,onBlur:m,onClick:k[9]||(k[9]=e.withModifiers(()=>{},["stop"]))},null,40,Wb)),[[e.vModelText,c.value]]):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-inline-edit",{"admin-inline-edit--editable":s.value}]),title:s.value?e.unref(p.trSafe)("Двойной клик для редактирования"):void 0,onDblclick:e.withModifiers(h,["stop"])},[e.renderSlot(g.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.value),1)])],42,jb))],64))}}),Gb={class:"admin-resource-tree-page"},Kb={class:"admin-resource-tree-page__header"},Xb={class:"admin-resource-tree-page__title"},Jb={key:0,class:"admin-resource-tree-page__count"},Yb={key:0,class:"admin-resource-tree-page__subtitle"},Qb={class:"admin-resource-tree-page__actions"},eS={class:"admin-resource-tree-page__toolbar"},tS={class:"admin-resource-tree-page__selection-label"},aS={class:"admin-resource-tree-page__body"},nS=e.defineComponent({__name:"ResourceTreePage",props:{slug:{},title:{default:null},subtitle:{default:null}},setup(a){const n=a,o=re.useRouter(),r=pe(),l=e.computed(()=>r.getResource(n.slug)),c=e.ref([]),d=e.ref(0),i=e.ref(!1),s=e.ref(null),h=e.ref(""),y=e.ref([]),m=e.ref([]),v=e.computed(()=>n.title??l.value?.label??n.slug),M=e.computed(()=>n.subtitle??null),f=e.computed(()=>!!l.value?.permissions?.create),g=e.computed(()=>l.value?.label??n.slug);async function k(){i.value=!0,s.value=null;try{const x=ne(),E={};h.value.trim()!==""&&(E.q=h.value.trim());const $=await x.post(`/${n.slug}/tree`,E);c.value=$.data,d.value=$.meta.total}catch(x){s.value=x instanceof Error?x:new Error(String(x)),c.value=[],d.value=0}finally{i.value=!1}}function w(x){const E=[],$=Y=>{for(const G of Y)E.push(G.key),G.children?.length&&$(G.children)};return $(x),E}function D(){y.value=w(c.value)}function z(){y.value=[]}const B=e.computed(()=>m.value[0]??null);function b(x,E){for(const $ of x){if($.key===E)return $;if($.children?.length){const Y=b($.children,E);if(Y)return Y}}return null}const L=e.computed(()=>B.value===null?null:b(c.value,B.value)),S=e.computed(()=>L.value?.slug??n.slug),C=e.computed(()=>{const x=L.value;if(!x)return null;const E=x.record?.id;return typeof E=="string"||typeof E=="number"?E:x.key});function A(){o.push({name:`admin.resource.${n.slug}.create`})}function H(){C.value!==null&&o.push({name:`admin.resource.${S.value}.edit`,params:{id:String(C.value)}})}function R(){C.value!==null&&o.push({name:`admin.resource.${S.value}.view`,params:{id:String(C.value)}})}const N=e.computed(()=>L.value?.actions??[]);function T(x,E){const $={};if(!x)return $;for(const[Y,G]of Object.entries(x))typeof G=="string"?$[Y]=G.replace(/\{([a-zA-Z_][\w]*)\}/g,(oe,J)=>{const ee=E?.[J];return ee==null?"":String(ee)}):$[Y]=G;return $}function V(x){if(x.kind!=="navigate")return;const $=L.value?.record??{},Y=T(x.to.params,$);o.push({name:`admin.resource.${x.to.slug}.${x.to.screen}`,query:Y})}async function I(){if(C.value!==null&&confirm(p.trSafe("Удалить выбранный узел?")))try{await ne().post(`/${S.value}/delete`,{id:C.value}),m.value=[],await k()}catch(x){s.value=x instanceof Error?x:new Error(String(x))}}let _=null;return e.watch(h,()=>{_!==null&&clearTimeout(_),_=setTimeout(()=>{k()},300)}),e.onMounted(k),(x,E)=>(e.openBlock(),e.createElementBlock("div",Gb,[e.createElementVNode("header",Kb,[e.createElementVNode("div",null,[e.createElementVNode("h1",Xb,[e.createTextVNode(e.toDisplayString(v.value)+" ",1),d.value>0?(e.openBlock(),e.createElementBlock("span",Jb,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)]),M.value?(e.openBlock(),e.createElementBlock("p",Yb,e.toDisplayString(M.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Qb,[f.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"primary",onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me)},null,8,["icon"]),E[4]||(E[4]=e.createTextVNode(" Создать ",-1))]),_:1})):e.createCommentVNode("",!0)])]),e.createElementVNode("div",eS,[e.createVNode(e.unref(u.UidInput),{modelValue:h.value,"onUpdate:modelValue":E[0]||(E[0]=$=>h.value=$),placeholder:e.unref(p.trSafe)("Поиск по дереву…"),class:"admin-resource-tree-page__search"},null,8,["modelValue","placeholder"]),e.createVNode(e.unref(u.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"ghost"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(lo)},null,8,["icon"]),E[5]||(E[5]=e.createTextVNode(" Развернуть ",-1)),e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De)},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(u.UidMenuItem),{onClick:D},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Развернуть все")),1)]),_:1}),e.createVNode(e.unref(u.UidMenuItem),{onClick:z},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Свернуть все")),1)]),_:1})]),_:1}),B.value!==null?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[E[9]||(E[9]=e.createElementVNode("span",{class:"admin-resource-tree-page__selection-divider","aria-hidden":"true"},"|",-1)),e.createElementVNode("span",tS,e.toDisplayString(L.value?.label??B.value),1),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:R},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ee)},null,8,["icon"]),E[6]||(E[6]=e.createTextVNode(" Открыть ",-1))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:H},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ee)},null,8,["icon"]),E[7]||(E[7]=e.createTextVNode(" Редактировать ",-1))]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,$=>(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:$.id,variant:$.variant??"secondary",onClick:Y=>V($)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString($.label),1)]),_:2},1032,["variant","onClick"]))),128)),l.value?.permissions?.delete?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"danger",onClick:I},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe)},null,8,["icon"]),E[8]||(E[8]=e.createTextVNode(" Удалить ",-1))]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:E[1]||(E[1]=$=>m.value=[])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Снять выбор")),1)]),_:1})],64)):e.createCommentVNode("",!0)]),e.createElementVNode("div",aS,[i.value&&c.value.length===0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(6,$=>e.createVNode(e.unref(u.UidSkeleton),{key:$})),64)):s.value?(e.openBlock(),e.createBlock(e.unref(u.UidErrorState),{key:1,message:s.value.message,onRetry:k},null,8,["message"])):c.value.length===0?(e.openBlock(),e.createBlock(e.unref(u.UidEmptyState),{key:2,title:e.unref(p.trSafe)("Нет данных"),hint:h.value.length>0?e.unref(p.trSafe)("Ничего не найдено по запросу."):null},null,8,["title","hint"])):(e.openBlock(),e.createBlock(e.unref(u.UidTreeView),{key:3,nodes:c.value,"virtual-root":g.value,"expanded-keys":y.value,"onUpdate:expandedKeys":E[2]||(E[2]=$=>y.value=$),"selected-keys":m.value,"onUpdate:selectedKeys":E[3]||(E[3]=$=>m.value=$),selectable:"single","show-guides":""},null,8,["nodes","virtual-root","expanded-keys","selected-keys"]))])]))}}),be=(a,n)=>{const o=a.__vccOpts||a;for(const[r,l]of n)o[r]=l;return o},oS=be(nS,[["__scopeId","data-v-80b2213a"]]),cS={key:1,class:"admin-page admin-resource-index"},rS={class:"admin-page__hd"},iS={class:"admin-page__title-wrap"},lS={class:"admin-page__title-row"},dS={class:"admin-page__title"},sS={key:0,class:"admin-page__live",role:"status"},uS={key:0,class:"admin-page__count"},hS={class:"admin-page__actions"},yS={class:"admin-page__view-row"},pS={class:"admin-page__view-name"},kS={key:0,class:"admin-page__view-badge"},mS=["aria-label","onClick"],fS={key:0,class:"admin-bulk-toolbar","data-testid":"bulk-bar",role:"toolbar"},vS={class:"admin-bulk-toolbar__count"},gS={key:2,class:"admin-resource-index__loading"},MS={key:5,class:"admin-resource-index__table"},IS=["draggable","title","onDragstart","onDragover","onDrop"],wS={key:1,class:"admin-resource-index__row-actions"},xS=["title","onClick"],CS=["title","onClick"],LS=["title","onClick"],bS=["title","onClick"],SS=["title","onClick"],_S={class:"admin-cell-truncate"},BS=["href","target","title"],VS=["title"],qS={key:6,class:"admin-resource-index__footer"},W9="__row_actions__",G9="__row_reorder__",VI=e.defineComponent({__name:"ResourceIndexPage",props:{slug:{},title:{default:null},subtitle:{default:null},createLabel:{default:void 0},createRouteName:{default:null}},emits:["bulk-action","row-click","import","header-action"],setup(a,{emit:n}){const o=p.useI18nStore(),r=q=>o.tr(q),l=(q,F,P)=>o.has(q)?o.t(q,P):F,c=a,d=n,i=z9(),s=pe(),h=C9(),y=re.useRouter(),m=e.computed(()=>s.getResource(c.slug)),v=e.computed(()=>c.title??m.value?.label??c.slug),M=e.computed(()=>{if(c.createRouteName!==null)return y.hasRoute(c.createRouteName)?c.createRouteName:null;const q=`admin.resource.${c.slug}.create`;return y.hasRoute(q)?q:null}),f=e.computed(()=>(m.value?.actions??[]).map(F=>{const P=Array.isArray(F.position)?F.position:[];return{key:String(F.key??F.name??""),label:String(F.label??F.name??F.key??""),confirm:typeof F.confirm=="string"?F.confirm:void 0,icon:typeof F.icon=="string"?F.icon:void 0,needsSelection:P.includes("row")||P.includes("bulk"),destructive:!!F.destructive}}).filter(F=>F.key!==""&&F.label!=="")),g=e.computed(()=>f.value.filter(q=>!q.needsSelection)),k=e.computed(()=>f.value.filter(q=>q.needsSelection));async function w(q){if(q.needsSelection&&!i.hasSelection){Q.error(r("Сначала выберите записи."));return}if(!(q.confirm&&!window.confirm(q.confirm))){d("header-action",q.key);try{h.start();const{getAdminClient:F}=await Promise.resolve().then(()=>se),U=await F().post(`/${c.slug}/action`,{key:q.key,ids:[...i.selection]});q.needsSelection&&i.clearSelection(),await i.load().catch(()=>{}),Q.success(U?.message??`Action «${q.label}» применён к ${U?.affected??0} записям.`)}catch(F){typeof console<"u"&&console.error("[admin] header-action failed:",F),Q.error(`Не удалось выполнить action «${q.label}».`)}finally{h.end()}}}const D=e.ref(!1);async function z(){const q=[...i.selection];if(q.length!==0&&window.confirm(`Удалить выбранные записи (${q.length})?`)){D.value=!0;try{const{getAdminClient:F}=await Promise.resolve().then(()=>se),P=F();let U=0;for(const K of q)try{await P.post(`/${c.slug}/delete`,{id:K}),U++}catch{}i.clearSelection(),await i.load().catch(()=>{}),U===q.length?Q.success(`Удалено записей: ${U}.`):Q.error(`Удалено ${U} из ${q.length}; часть не удалена.`)}finally{D.value=!1}}}async function B(q="csv"){d("header-action","export");try{h.start();const{getAdminClient:F}=await Promise.resolve().then(()=>se),U=await F().post(`/${c.slug}/export`,{format:q,filters:i.filters,search:i.search},{responseType:"blob"}),K=URL.createObjectURL(U),ue=document.createElement("a");ue.href=K,ue.download=`${c.slug}-${new Date().toISOString().slice(0,10)}.${q}`,document.body.appendChild(ue),ue.click(),ue.remove(),URL.revokeObjectURL(K)}catch(F){typeof console<"u"&&console.error("[admin] export failed:",F),Q.error(`Не удалось экспортировать данные в формате ${q.toUpperCase()}.`)}finally{h.end()}}const b=e.ref(null);function L(){d("import"),b.value?.click()}async function S(q){const F=q.target,P=F.files?.[0];if(P)try{h.start();const{getAdminClient:U}=await Promise.resolve().then(()=>se),K=U(),ue=new FormData;ue.append("file",P),ue.append("resource",c.slug);const _n=await K.post("/import/upload",ue),Qn=await K.post("/import/preview",{resource:c.slug,upload_id:_n.upload_id}),i9=await K.post("/import/start",{resource:c.slug,upload_id:_n.upload_id,mapping:Qn.mapping}),fc=await C(K,i9.process_id),vc=fc.imported??0,j9=fc.failed??0;j9>0?Q.warning(`Импорт завершён с ошибками: ${vc} записей, ${j9} ошибок.`):Q.success(`Импортировано записей: ${vc}.`),await i.load().catch(()=>{})}catch(U){typeof console<"u"&&console.error("[admin] import failed:",U),Q.error(r("Импорт не удался. Проверьте формат файла и поля ресурса либо обратитесь к администратору."))}finally{F.value="",h.end()}}async function C(q,F){const P=Date.now()+9e4;for(;Date.now()<P;){await new Promise(K=>setTimeout(K,800));const U=await q.get(`/import/status?process_id=${encodeURIComponent(F)}`);if(U.status==="done"||U.status==="failed")return U}return{status:"failed",failed:1}}const A=e.computed(()=>(m.value?.features??{}).reorderable===!0),H=e.computed(()=>(m.value?.features??{}).creatable!==!1),R=e.computed(()=>(m.value?.features??{}).editable!==!1),N=e.computed(()=>(m.value?.features??{}).savedViews===!0),T=e.computed(()=>(m.value?.features??{}).importable===!0),V=e.computed(()=>{const q=m.value?.features??{};return(Array.isArray(q.exportable)?q.exportable:["csv"]).filter(P=>typeof P=="string"&&P.length>0)}),I={csv:"CSV",json:"JSON",xlsx:"XLSX",pdf:"PDF"},_=e.computed(()=>{const F=(m.value?.columns??[]).map(U=>{const K=U;return{key:String(K.key??K.name??""),label:String(K.label??K.name??""),sortable:!!K.sortable,align:K.align??"left",width:typeof K.width=="string"?K.width:void 0}}).filter(U=>U.key).filter(U=>Ne.value[U.key]!==!1);return[...A.value?[{key:G9,label:"",sortable:!1,align:"center",width:"32px"}]:[],...F,{key:W9,label:"",sortable:!1,align:"right",width:"120px"}]});function x(q){const F=m.value?.columns??[];for(const P of F){const U=P;if(String(U.key??U.name??"")===q)return U.editable!==null&&U.editable!==void 0}return!1}function E(q){const F=m.value?.columns??[];for(const P of F){const U=P;if(String(U.key??U.name??"")===q){const ue=U.editable??{};return{as:ue.as??"text",options:ue.options??{}}}}return{as:"text",options:{}}}const $=e.computed(()=>{const q=m.value?.columns??[],F={};for(const P of q){const U=P,K=String(U.key??U.name??"");K&&(F[K]={preset:typeof U.preset=="string"?U.preset:void 0,meta:U.meta??{}})}return F});function Y(q,F){const U=F?.row?.[q],K=$.value[q];return pc(U,K?.preset,K?.meta??{})}function G(q){return q?.row}function oe(q){return $.value[q]?.preset==="link"}function J(q,F){const P=G(F)??{},U=$.value[q]?.meta?.template??"";if(!U)return"";const K=U.replace(/\{(\w+)\}/g,(ue,_n)=>String(P[_n]??"")).replace(/:value/g,String(P[q]??""));return K.includes("{")||K===""?"":K}function ee(q){return $.value[q]?.meta?.target??void 0}const X=e.computed(()=>i.search!==""||Object.keys(i.filters).length>0),ie=e.computed(()=>!i.isEmpty||X.value),le=e.computed(()=>m.value?.filters??[]),Ie=e.computed(()=>m.value?.columns??[]),Sn=e.computed(()=>`Поиск по ${(m.value?.label??c.slug).toLowerCase()}…`),et=e.ref(null),Ne=e.ref({});async function t9(q,F){await i.setFilter(q,F)}async function a9(q){await i.setSearch(q)}async function n9(){i.search="",await i.clearFilters()}async function Yn(q){et.value=q,await i.load({group_by:q})}function we(q){Ne.value=q}const He=e.ref([]),Se=e.ref(null);async function tt(){if(!N.value){He.value=[];return}try{const{getAdminClient:q}=await Promise.resolve().then(()=>se),P=await q().get(`/${c.slug}_views/list`);He.value=P.data??[]}catch{He.value=[]}}async function kc(q){Se.value=q.id;const F=q.state;i.search=F.search??"",i.filters={...F.filters??{}},i.sortKey=F.sort?.key??null,i.sortDirection=F.sort?.direction??null,et.value=F.group_by??null,Ne.value={...F.columns??{}},i.meta.page=1,await qe()}async function o9(){Se.value=null,i.search="",i.filters={},i.sortKey=null,i.sortDirection=null,et.value=null,Ne.value={},i.meta.page=1,await qe()}async function j(q,F){if(F?.stopPropagation(),!!q.owned&&window.confirm(`Удалить view «${q.name}»?`))try{h.start();const{getAdminClient:P}=await Promise.resolve().then(()=>se);await P().post(`/${c.slug}_views/delete`,{id:q.id}),Se.value===q.id&&(Se.value=null),await tt()}catch(P){typeof console<"u"&&console.error("[admin] delete-view failed:",P)}finally{h.end()}}async function O(q){try{h.start();const{getAdminClient:F}=await Promise.resolve().then(()=>se),U=await F().post(`/${c.slug}_views/create`,{name:q,state:{search:i.search,filters:i.filters,sort:{key:i.sortKey,direction:i.sortDirection},group_by:et.value,columns:Ne.value}});U?.view&&(Se.value=U.view.id),await tt(),Q.success(l("admin.resource.view_saved","Представление сохранено."))}catch(F){typeof console<"u"&&console.error("[admin] save-view failed:",F),Q.error(r("Не удалось сохранить view. Возможно, недостаточно прав либо ресурс не зарегистрирован."))}finally{h.end()}}const Z=e.computed(()=>{const q=i.meta.total;return q===0?"":`${i.items.length} из ${q} ${W(q)}`});function W(q){const F=q%10,P=q%100;return F===1&&P!==11?r("запись"):F>=2&&F<=4&&(P<10||P>=20)?r("записи"):r("записей")}const te=e.ref(null),ce=e.ref(0);let ke=null;e.watch(()=>i.loading,(q,F)=>{F&&!q&&i.error===null&&(te.value=Date.now())}),e.onMounted(()=>{ke=setInterval(()=>{ce.value+=1},3e4)}),e.onUnmounted(()=>{ke!==null&&clearInterval(ke)});const at=e.computed(()=>{if(ce.value,te.value===null)return null;const q=Math.floor((Date.now()-te.value)/1e3);if(q<60)return null;const F=Math.floor(q/60);if(F<60)return r("обновлено :min мин назад").replace(":min",String(F));const P=Math.floor(F/60);return P<24?r("обновлено :hr ч назад").replace(":hr",String(P)):r("обновлено более суток назад")}),c9=e.computed(()=>{if(Se.value!==null){const F=He.value.find(P=>P.id===Se.value);if(F)return F.name}const q=m.value?.label??c.slug;return`${r("Все")} ${q.toLowerCase()}`});async function qe(){h.start();try{await i.load()}catch{}finally{h.end()}}e.onMounted(async()=>{i.setSlug(c.slug),s.manifest===null&&await s.load().catch(()=>{}),tt(),await qe()}),e.watch(()=>c.slug,async(q,F)=>{q!==F&&(i.setSlug(q),Se.value=null,tt(),await qe())});async function r9(q){await e.nextTick(),await i.setSort(q,i.sortDirection)}async function dw(q){await e.nextTick(),await i.setSort(i.sortKey,q)}function sw(q){i.selection=q}async function uw(q){await i.setPage(q)}function nt(q){const F=q?.id??q?.key;return typeof F=="string"||typeof F=="number"?F:null}function hw(q){return nt(G(q)??{})??""}function yw(q){d("row-click",q);const F=nt(q);F!==null&&y.push({name:`admin.resource.${c.slug}.view`,params:{id:String(F)}})}function pw(q,F){F?.stopPropagation();const P=nt(q);P!==null&&y.push({name:`admin.resource.${c.slug}.view`,params:{id:String(P)}})}function kw(q,F){F?.stopPropagation();const P=nt(q);P!==null&&y.push({name:`admin.resource.${c.slug}.edit`,params:{id:String(P)}})}async function mw(q,F){F?.stopPropagation();const P=nt(q);if(P!==null&&window.confirm(l("admin.resource.delete_confirm","Удалить запись?")))try{h.start();const{getAdminClient:U}=await Promise.resolve().then(()=>se);await U().post(`/${c.slug}/delete`,{id:P}),await i.load().catch(()=>{}),Q.success(l("admin.resource.deleted","Запись удалена."))}catch(U){typeof console<"u"&&console.error("[admin] delete failed:",U),Q.error(l("admin.resource.delete_failed","Не удалось удалить запись."))}finally{h.end()}}function fw(q){return q.deleted_at!==null&&q.deleted_at!==void 0}async function vw(q,F){F?.stopPropagation();const P=nt(q);if(P!==null)try{h.start();const{getAdminClient:U}=await Promise.resolve().then(()=>se);await U().post(`/${c.slug}/restore`,{id:P}),await i.load().catch(()=>{}),Q.success(l("admin.resource.restored","Запись восстановлена."))}catch(U){typeof console<"u"&&console.error("[admin] restore failed:",U),Q.error(l("admin.resource.restore_failed","Не удалось восстановить запись."))}finally{h.end()}}const Fe=e.ref(null),ot=e.ref(null),mc=e.ref("before");function gw(q,F){if(!A.value||!F.dataTransfer)return;if(!F.target?.closest('[data-row-drag-handle="true"]')){F.preventDefault();return}Fe.value=q,F.dataTransfer.effectAllowed="move",F.dataTransfer.setData("text/plain",String(q))}function Mw(q,F){if(!A.value||Fe.value===null)return;F.preventDefault();const P=F.currentTarget;if(P){const U=P.getBoundingClientRect();mc.value=F.clientY<U.top+U.height/2?"before":"after"}ot.value=q}function Iw(){Fe.value=null,ot.value=null}async function ww(q,F){if(F.preventDefault(),!A.value||Fe.value===null)return;const P=Fe.value,U=mc.value==="after"?q+1:q,K=U>P?U-1:U;if(Fe.value=null,ot.value=null,P===K)return;const ue=[...i.items],[_n]=ue.splice(P,1);ue.splice(K,0,_n),i.items=ue;try{h.start();const{getAdminClient:Qn}=await Promise.resolve().then(()=>se),i9=Qn(),fc=ue.map(vc=>i.rowId(vc));await i9.post(`/${c.slug}/reorder`,{ids:fc}),Q.success(l("admin.resource.reorder_saved","Порядок сохранён."))}catch(Qn){typeof console<"u"&&console.error("[admin] reorder failed:",Qn),Q.error(l("admin.resource.reorder_failed","Не удалось сохранить порядок.")),await i.load().catch(()=>{})}finally{h.end()}}async function xw(q,F){F?.stopPropagation();const P=nt(q);if(P!==null&&window.confirm(l("admin.resource.force_delete_confirm","Удалить запись НАВСЕГДА? Действие необратимо.")))try{h.start();const{getAdminClient:U}=await Promise.resolve().then(()=>se);await U().post(`/${c.slug}/forceDelete`,{id:P}),await i.load().catch(()=>{}),Q.success(l("admin.resource.force_deleted","Запись удалена навсегда."))}catch(U){typeof console<"u"&&console.error("[admin] force-delete failed:",U),Q.error(l("admin.resource.force_delete_failed","Не удалось удалить запись навсегда."))}finally{h.end()}}async function T9(){await i.load().catch(()=>{})}return(q,F)=>m.value?.view_mode==="tree"?(e.openBlock(),e.createBlock(oS,{key:0,slug:a.slug,title:a.title,subtitle:a.subtitle},null,8,["slug","title","subtitle"])):(e.openBlock(),e.createElementBlock("section",cS,[e.createElementVNode("header",rS,[e.createElementVNode("div",iS,[e.createElementVNode("div",lS,[e.createElementVNode("h1",dS,e.toDisplayString(v.value),1),at.value?(e.openBlock(),e.createElementBlock("span",sS,[F[3]||(F[3]=e.createElementVNode("span",{class:"admin-page__live-dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(at.value),1)])):e.createCommentVNode("",!0)]),a.subtitle||Z.value?(e.openBlock(),e.createElementBlock("div",uS,[a.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(a.subtitle),1)],64)):e.createCommentVNode("",!0),a.subtitle&&Z.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),Z.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(Z.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",hS,[e.renderSlot(q.$slots,"actions"),N.value?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:0},{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md",class:"admin-page__scope"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(In),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(c9.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(u.UidMenuItem),{onClick:o9},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Все"))+" "+e.toDisplayString((m.value?.label??a.slug).toLowerCase()),1)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(He.value,P=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:P.id,onClick:U=>kc(P)},{default:e.withCtx(()=>[e.createElementVNode("span",yS,[e.createElementVNode("span",pS,[e.createTextVNode(e.toDisplayString(P.name)+" ",1),P.is_default?(e.openBlock(),e.createElementBlock("span",kS,"default")):e.createCommentVNode("",!0)]),P.owned?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-page__view-delete","aria-label":r("Удалить view"),onClick:e.withModifiers(U=>j(P,U),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:12},null,8,["icon"])],8,mS)):e.createCommentVNode("",!0)])]),_:2},1032,["onClick"]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md","aria-label":r("Действия"),class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(ze),size:16},null,8,["icon"])]),_:1},8,["aria-label"])]),default:e.withCtx(()=>[e.createVNode(e.unref(u.UidMenuItem),{onClick:T9},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Обновить")),1)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,P=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:P,onClick:U=>B(P)},{default:e.withCtx(()=>[e.createTextVNode(" Экспорт "+e.toDisplayString(I[P]??P.toUpperCase()),1)]),_:2},1032,["onClick"]))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,P=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:P.key,onClick:U=>w(P)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(P.label),1)]),_:2},1032,["onClick"]))),128)),e.renderSlot(q.$slots,"header-menu")]),_:3}),T.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"secondary",size:"md",onClick:L},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Cn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(r("Импорт")),1)]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("input",{ref_key:"importInput",ref:b,type:"file",class:"admin-page__import-input",accept:".csv,.json,.xlsx,.xls,application/json,text/csv",onChange:S},null,544),M.value&&H.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,"data-testid":"resource-create",variant:"primary",size:"md",onClick:F[0]||(F[0]=P=>q.$router.push({name:M.value}))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(a.createLabel??r("Создать")),1)]),_:1})):e.createCommentVNode("",!0)])]),e.unref(i).hasSelection?(e.openBlock(),e.createElementBlock("div",fS,[e.createElementVNode("span",vS,[F[4]||(F[4]=e.createTextVNode(" Выбрано ",-1)),e.createElementVNode("b",null,e.toDisplayString(e.unref(i).selectedCount),1)]),F[5]||(F[5]=e.createElementVNode("span",{class:"admin-bulk-toolbar__divider"},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,P=>(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:P.key,size:"sm",variant:P.destructive?"danger":"ghost",onClick:U=>w(P)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(P.label),1)]),_:2},1032,["variant","onClick"]))),128)),e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"ghost",onClick:F[1]||(F[1]=P=>B("csv"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Экспорт")),1)]),_:1}),R.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,size:"sm",variant:"danger",loading:D.value,onClick:z},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Удалить")),1)]),_:1},8,["loading"])):e.createCommentVNode("",!0),F[6]||(F[6]=e.createElementVNode("span",{class:"admin-bulk-toolbar__spacer"},null,-1)),e.createVNode(e.unref(u.UidButton),{size:"sm",variant:"ghost",onClick:e.unref(i).clearSelection},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Снять выделение")),1)]),_:1},8,["onClick"])])):ie.value?(e.openBlock(),e.createBlock(Tb,{key:1,search:e.unref(i).search,"search-placeholder":Sn.value,filters:le.value,values:e.unref(i).filters,columns:Ie.value,"group-by":et.value,"column-visibility":Ne.value,"enable-saved-views":N.value,"onUpdate:search":a9,onApplyFilter:t9,onReset:n9,onGroupBy:Yn,onColumnsVisibility:we,onSaveView:O},{extra:e.withCtx(()=>[e.renderSlot(q.$slots,"filters",{filters:e.unref(i).filters,setFilter:e.unref(i).setFilter})]),_:3},8,["search","search-placeholder","filters","values","columns","group-by","column-visibility","enable-saved-views"])):e.createCommentVNode("",!0),e.unref(i).loading&&e.unref(i).items.length===0?(e.openBlock(),e.createElementBlock("div",gS,[e.unref(i).slowLoading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(8,P=>e.createVNode(e.unref(u.UidSkeleton),{key:P,height:"40px"})),64)):e.createCommentVNode("",!0)])):e.unref(i).hasError?(e.openBlock(),e.createBlock(e.unref(u.UidErrorState),{key:3,title:r("Не удалось загрузить данные"),description:e.unref(i).error?.message??r("Попробуйте обновить страницу."),class:"admin-resource-index__state"},{actions:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"primary",onClick:T9},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r("Обновить")),1)]),_:1})]),_:1},8,["title","description"])):e.unref(i).isEmpty?(e.openBlock(),e.createBlock(e.unref(u.UidEmptyState),{key:4,title:r("Пока пусто"),description:r("Создайте первую запись или измените фильтры."),class:"admin-resource-index__state"},{actions:e.withCtx(()=>[a.createRouteName&&H.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"primary",onClick:F[2]||(F[2]=P=>q.$router.push({name:a.createRouteName}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.createLabel??r("Создать")),1)]),_:1})):e.createCommentVNode("",!0)]),_:1},8,["title","description"])):(e.openBlock(),e.createElementBlock("div",MS,[e.createVNode(e.unref(u.UidTable),{columns:_.value,data:e.unref(i).items,"sort-key":e.unref(i).sortKey,"sort-direction":e.unref(i).sortDirection,selectable:"",selection:e.unref(i).selection,"row-key":P=>e.unref(i).rowId(P),"onUpdate:sortKey":r9,"onUpdate:sortDirection":dw,"onUpdate:selection":sw,onRowClick:yw},e.createSlots({_:2},[e.renderList(_.value,P=>({name:P.key,fn:e.withCtx(U=>[P.key===G9?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-resource-index__row-drag",{"admin-resource-index__row-drag--drop-before":ot.value!==null&&ot.value===e.unref(i).items.indexOf(G(U)??{})&&mc.value==="before","admin-resource-index__row-drag--drop-after":ot.value!==null&&ot.value===e.unref(i).items.indexOf(G(U)??{})&&mc.value==="after","admin-resource-index__row-drag--ghost":Fe.value!==null&&Fe.value===e.unref(i).items.indexOf(G(U)??{})}]),"data-row-drag-handle":"true",draggable:A.value,title:r("Перетащить"),onDragstart:K=>gw(e.unref(i).items.indexOf(G(U)??{}),K),onDragover:K=>Mw(e.unref(i).items.indexOf(G(U)??{}),K),onDragend:Iw,onDrop:K=>ww(e.unref(i).items.indexOf(G(U)??{}),K)},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Hn),size:14},null,8,["icon"])],42,IS)):P.key===W9?(e.openBlock(),e.createElementBlock("div",wS,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:r("Просмотр"),onClick:e.withModifiers(K=>pw(G(U)??{},K),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(mo),size:16},null,8,["icon"])],8,xS),fw(G(U)??{})?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:r("Восстановить"),onClick:e.withModifiers(K=>vw(G(U)??{},K),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(xn),size:16},null,8,["icon"])],8,bS),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:r("Удалить навсегда"),onClick:e.withModifiers(K=>xw(G(U)??{},K),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:16},null,8,["icon"])],8,SS)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[R.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-resource-index__row-action",title:r("Редактировать"),onClick:e.withModifiers(K=>kw(G(U)??{},K),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ee),size:16},null,8,["icon"])],8,CS)):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:r("Удалить"),onClick:e.withModifiers(K=>mw(G(U)??{},K),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:16},null,8,["icon"])],8,LS)):e.createCommentVNode("",!0)],64))])):e.renderSlot(q.$slots,`cell-${P.key}`,{row:G(U)},()=>[x(P.key)?(e.openBlock(),e.createBlock(BI,{key:0,"resource-slug":a.slug,"row-id":hw(U),column:P.key,value:(G(U)??{})[P.key],editable:!0,"input-type":E(P.key).as,options:E(P.key).options,"row-override":(G(U)??{})._editable??{},onSaved:K=>{const ue=G(U);ue&&(ue[P.key]=K)}},{default:e.withCtx(()=>[e.createElementVNode("span",_S,e.toDisplayString(Y(P.key,U)),1)]),_:2},1032,["resource-slug","row-id","column","value","input-type","options","row-override","onSaved"])):oe(P.key)&&J(P.key,U)?(e.openBlock(),e.createElementBlock("a",{key:1,class:"admin-cell-truncate admin-cell-link",href:J(P.key,U),target:ee(P.key),rel:"noopener",title:Y(P.key,U)},e.toDisplayString(Y(P.key,U)),9,BS)):(e.openBlock(),e.createElementBlock("span",{key:2,class:"admin-cell-truncate",title:Y(P.key,U)},e.toDisplayString(Y(P.key,U)),9,VS))],void 0,2)])}))]),1032,["columns","data","sort-key","sort-direction","selection","row-key"])])),!e.unref(i).loading&&!e.unref(i).hasError&&!e.unref(i).isEmpty?(e.openBlock(),e.createElementBlock("footer",qS,[e.createVNode(e.unref(u.UidPagination),{"model-value":e.unref(i).meta.page,total:e.unref(i).meta.total,"per-page":e.unref(i).meta.per_page,"onUpdate:modelValue":uw},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),e9=Me.defineStore("admin-resource-form",()=>{const a=e.ref(null),n=e.ref("create"),o=e.ref(null),r=e.ref({}),l=e.ref({}),c=e.ref({}),d=e.ref(!1),i=e.ref(!1),s=e.ref(!1),h=e.ref(null),y=e.computed(()=>n.value==="create"),m=e.computed(()=>n.value==="edit"),v=e.computed(()=>n.value==="view"),M=e.computed(()=>h.value!==null),f=e.computed(()=>{const A=r.value,H=l.value,R=new Set([...Object.keys(A),...Object.keys(H)]);for(const N of R)if(!Object.is(A[N],H[N]))if(typeof A[N]=="object"||typeof H[N]=="object"){if(JSON.stringify(A[N])!==JSON.stringify(H[N]))return!0}else return!0;return!1});function g(A,H){for(const R of Object.keys(A))delete A[R];Object.assign(A,H)}function k(){g(r.value,{}),g(l.value,{}),c.value={},d.value=!1,i.value=!1,s.value=!1,h.value=null,o.value=null}function w(A,H={}){a.value=A,n.value="create",o.value=null,g(r.value,H),g(l.value,H),c.value={},h.value=null}async function D(A,H,R="edit"){a.value=A,n.value=R,o.value=H,d.value=!0,h.value=null,c.value={};try{const T=await ne().get(`/${A}/read`,{params:{id:H}});g(r.value,T.record),g(l.value,T.record)}catch(N){throw h.value=N instanceof Error?N:new Error(String(N)),N}finally{d.value=!1}}function z(A,H){if(r.value[A]=H,c.value[A]){const R={...c.value};delete R[A],c.value=R}}function B(A){c.value={...A}}function b(A){for(const[H,R]of Object.entries(A))r.value[H]===void 0&&(r.value[H]=R,l.value[H]=R)}function L(){c.value={}}async function S(){if(!a.value)throw new Error("useResourceFormStore.save() before slug set");if(i.value)throw new Error("Already saving");i.value=!0,h.value=null,c.value={};try{const A=ne(),H=n.value==="create"?`/${a.value}/create`:`/${a.value}/update`,R=n.value==="create"?r.value:{id:o.value,...r.value},N=await A.post(H,R),T=N.record?.id??N.id;if(T===void 0)throw new Error("save: backend response does not contain record.id");return o.value=T,g(l.value,{...r.value}),n.value="edit",pe().refresh().catch(()=>{}),T}catch(A){throw A instanceof On?c.value={...A.fields}:(A instanceof ve||A instanceof Error)&&(h.value=A),A}finally{i.value=!1}}async function C(){if(!a.value||o.value===null)throw new Error("Nothing to delete");if(s.value)throw new Error("Already deleting");s.value=!0,h.value=null;try{await ne().post(`/${a.value}/delete`,{id:o.value}),pe().refresh().catch(()=>{})}catch(A){throw A instanceof Error&&(h.value=A),A}finally{s.value=!1}}return{slug:a,mode:n,recordId:o,state:r,initial:l,errors:c,loading:d,saving:i,deleting:s,error:h,isCreate:y,isEdit:m,isView:v,isDirty:f,hasError:M,reset:k,prepareCreate:w,load:D,setField:z,setErrors:B,seedDefaults:b,clearErrors:L,save:S,destroy:C}});function qI(a,n){for(const o of a){const r=o;if(r.kind==="field"&&r.name===n)return r;const l=r.items??r.children;if(Array.isArray(l)){const c=qI(l,n);if(c!==null)return c}}return null}function AS(a,n){if(n===null)return null;const o=qI(a,"status"),l=o?.attributes?.options??o?.options;if(Array.isArray(l)){const c=l.find(d=>String(d?.value)===n);if(typeof c?.label=="string")return c.label}else if(l!==null&&typeof l=="object"){const c=l[n];if(typeof c=="string")return c}return n}const WM=e.defineComponent({__name:"RowsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"}},setup(a){const n=a;function o(l){const c=l,d=c.span??(c.attributes&&c.attributes.span),i=Number(d);return Number.isFinite(i)&&i>=1&&i<=12?i:0}const r=e.computed(()=>n.items.some(l=>o(l)>0));return(l,c)=>r.value?(e.openBlock(),e.createBlock(e.unref(u.UidGrid),{key:0,cols:12,"col-gap":a.gap,"row-gap":"var(--uid-space-lg)"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(d,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,style:e.normalizeStyle({gridColumn:`span ${o(d)||12}`})},[e.createVNode(Ln,{node:d},null,8,["node"])],4))),128))]),_:1},8,["col-gap"])):(e.openBlock(),e.createBlock(e.unref(u.UidStack),{key:1,direction:"column",gap:a.gap,align:"stretch"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(d,i)=>(e.openBlock(),e.createBlock(Ln,{key:i,node:d},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),zS={class:"admin-page admin-resource-form"},DS={class:"admin-page__hd"},ES={class:"admin-page__title-wrap"},NS={class:"admin-page__title"},HS={class:"admin-page__actions"},FS={class:"admin-resource-form__notfound-title"},PS={class:"admin-resource-form__notfound-hint"},TS={key:1,class:"admin-resource-form__loading"},jS={key:2,class:"admin-resource-form__savebar"},US={class:"admin-resource-form__savebar-hint"},p9=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:null}},setup(a){const n=a,o=e9(),r=pe(),l=re.useRouter(),c=re.useRoute();function d(){const b={};for(const[L,S]of Object.entries(c.query))if(S!=null){if(Array.isArray(S)){b[L]=S;continue}/^-?\d+$/.test(S)?b[L]=parseInt(S,10):b[L]=S}return b}const i=de.provideFormState(o.state,o.errors,n.id!==null&&n.id!==void 0?"update":"create");e.watch(()=>o.errors,b=>{i.setErrors({...b})});const s=e.computed(()=>r.getResource(n.slug)),h=e.computed(()=>!o.isCreate&&o.hasError&&o.error instanceof ve&&o.error.status===404),y=e.computed(()=>{const b=s.value;return o.isCreate&&b?.create_fields?b.create_fields:b?.fields??[]});function m(b,L){for(const S of b){const C=S;Array.isArray(C.items)&&m(C.items,L),!(C.kind!=="field"||typeof C.name!="string")&&(C.defaultValue===null||C.defaultValue===void 0||(L[C.name]=C.defaultValue))}}function v(){const b={};m(y.value,b),Object.keys(b).length>0&&o.seedDefaults(b)}const M=e.computed(()=>o.isCreate?`${p.trSafe("Создать")}: ${s.value?.label??n.slug}`:`${s.value?.label??n.slug}: ${p.tRaw("запись #:id",{id:n.id??""})}`),f=e.computed(()=>{const b=o.state.status;return typeof b=="string"?b:null}),g=e.computed(()=>AS(y.value,f.value)),k=e.computed(()=>{switch(f.value){case"published":return"success";case"review":case"draft":return"warning";case"archived":return"danger";default:return"default"}});e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),n.id!==null&&n.id!==void 0?await o.load(n.slug,n.id,"edit").catch(()=>{}):(o.prepareCreate(n.slug,d()),v())}),e.watch(()=>[n.slug,n.id],async([b,L])=>{L!=null?await o.load(b,L,"edit").catch(()=>{}):(o.prepareCreate(b,d()),v())});async function w(){try{const b=await o.save();o.isCreate&&l.push({name:`admin.resource.${n.slug}.edit`,params:{id:b}}).catch(()=>{})}catch{}}const D=e.computed(()=>{if(n.indexRouteName)return n.indexRouteName;const b=r.getResource(n.slug)?.parent_slug;return b?`admin.resource.${b}.index`:`admin.resource.${n.slug}.index`});async function z(){confirm(p.trSafe("Удалить запись?"))&&(await o.destroy().catch(()=>{}),o.hasError||l.push({name:D.value}).catch(()=>{}))}function B(){o.isDirty&&!confirm(p.trSafe("Несохранённые изменения будут потеряны. Продолжить?"))||l.push({name:D.value}).catch(()=>{})}return(b,L)=>(e.openBlock(),e.createElementBlock("section",zS,[e.createElementVNode("header",DS,[e.createElementVNode("div",ES,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:B},e.toDisplayString(e.unref(p.trSafe)("← Назад")),1),e.createElementVNode("h1",NS,e.toDisplayString(M.value),1),g.value?(e.openBlock(),e.createBlock(e.unref(u.UidBadge),{key:0,variant:k.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.value),1)]),_:1},8,["variant"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",HS,[e.createVNode(e.unref(u.UidButton),{variant:"ghost",disabled:e.unref(o).saving||e.unref(o).deleting,onClick:B},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)]),_:1},8,["disabled"]),e.unref(o).isEdit&&!h.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"danger",disabled:e.unref(o).saving||e.unref(o).deleting,loading:e.unref(o).deleting,"data-testid":"form-delete",onClick:z},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Удалить")),1)]),_:1},8,["disabled","loading"])):e.createCommentVNode("",!0),h.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"primary",disabled:e.unref(o).saving||e.unref(o).loading,loading:e.unref(o).saving,"data-testid":"form-save",onClick:w},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(o).isCreate?e.unref(p.trSafe)("Создать"):e.unref(p.trSafe)("Сохранить")),1)]),_:1},8,["disabled","loading"]))])]),h.value?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"lg",class:"admin-resource-form__notfound"},{default:e.withCtx(()=>[e.createElementVNode("p",FS,e.toDisplayString(e.unref(p.trSafe)("Запись не найдена")),1),e.createElementVNode("p",PS,e.toDisplayString(e.unref(p.trSafe)("Возможно, она была удалена. Вернитесь к списку.")),1),e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",onClick:B},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("← К списку")),1)]),_:1})]),_:1})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(o).hasError?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"danger",class:"admin-resource-form__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(o).error?.message??e.unref(p.trSafe)("Не удалось сохранить запись")),1)]),_:1})):e.createCommentVNode("",!0),e.unref(o).loading?(e.openBlock(),e.createElementBlock("div",TS,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,S=>e.createVNode(e.unref(u.UidSkeleton),{key:S,height:"40px"})),64))])):(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:2,padding:"md",class:"admin-resource-form__body"},{default:e.withCtx(()=>[e.createVNode(WM,{items:y.value},null,8,["items"])]),_:1}))],64)),e.unref(o).isDirty&&!e.unref(o).loading&&!h.value?(e.openBlock(),e.createElementBlock("div",jS,[e.createElementVNode("span",US,e.toDisplayString(e.unref(p.trSafe)("Есть несохранённые изменения")),1),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:B},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",loading:e.unref(o).saving,disabled:e.unref(o).saving,onClick:w},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Сохранить")),1)]),_:1},8,["loading","disabled"])])):e.createCommentVNode("",!0)]))}}),Xn=YM(),RS=Xn.register,GM=Xn.get,$S=Xn.has,OS=Xn.list,ZS=Xn.clear,AI=Xn.registerBundle,zI=e.defineComponent({__name:"UnknownEntry",props:{type:{},name:{}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип infolist-entry: "+e.toDisplayString(a.type),1)]),default:e.withCtx(()=>[o[0]||(o[0]=e.createTextVNode(" Зарегистрируйте через ",-1)),e.createElementVNode("code",null,"registerInfolistEntry('"+e.toDisplayString(a.type)+"', YourComponent)",1),o[1]||(o[1]=e.createTextVNode(". ",-1))]),_:1}))}}),WS={key:0,class:"admin-infolist-entry"},GS={class:"admin-infolist-entry__label"},KS={key:2,class:"admin-infolist-rows"},XS={key:3,class:"admin-infolist-cols"},JS={key:4,class:"admin-infolist-section"},YS={key:0,class:"admin-infolist-section__hd"},QS={key:0,class:"admin-infolist-section__title"},e_={key:1,class:"admin-infolist-section__description"},t_={class:"admin-infolist-section__body"},a_={key:5,class:"admin-infolist-tabs"},n_={class:"admin-infolist-tabs__list",role:"tablist"},o_={class:"admin-infolist-tabs__panel"},DI=e.defineComponent({__name:"InfolistRenderer",props:{node:{}},setup(a){const n=a,o=new Set(["rows","columns","section","block","tabs"]),r=e.computed(()=>{if(n.node.kind==="entry"){const m=GM(n.node.type);return m?{kind:"entry",component:m}:{kind:"unknown"}}if(n.node.kind==="layout")return o.has(n.node.type)?{kind:"layout",layoutType:n.node.type}:{kind:"unknown"};if(o.has(n.node.type))return{kind:"layout",layoutType:n.node.type};const y=GM(n.node.type);return y?{kind:"entry",component:y}:{kind:"unknown"}}),l=e.computed(()=>{const{type:y,kind:m,items:v,attributes:M,...f}=n.node,g=M??{},{preset:k,format:w,currency:D,decimals:z,...B}=g,b={};return w!==void 0&&(b.format=w),D!==void 0&&(b.currency=D),z!==void 0&&(b.decimals=z),{...f,...B,preset:k,meta:b}}),c=e.computed(()=>n.node.items??[]),d=e.computed(()=>n.node.title??null),i=e.computed(()=>n.node.description??null),s=e.computed(()=>{const y=n.node.active;return typeof y=="number"?y:0}),h=e.computed(()=>n.node.items??[]);return(y,m)=>{const v=e.resolveComponent("InfolistRenderer",!0);return r.value.kind==="entry"&&a.node.label?(e.openBlock(),e.createElementBlock("div",WS,[e.createElementVNode("span",GS,e.toDisplayString(a.node.label),1),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value.component),e.normalizeProps(e.guardReactiveProps(l.value)),null,16))])):r.value.kind==="entry"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value.component),e.normalizeProps(e.mergeProps({key:1},l.value)),null,16)):r.value.kind==="layout"&&r.value.layoutType==="rows"?(e.openBlock(),e.createElementBlock("div",KS,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(M,f)=>(e.openBlock(),e.createBlock(v,{key:f,node:M},null,8,["node"]))),128))])):r.value.kind==="layout"&&r.value.layoutType==="columns"?(e.openBlock(),e.createElementBlock("div",XS,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(M,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:"admin-infolist-cols__item",style:e.normalizeStyle({gridColumn:`span ${typeof M.span=="number"?M.span:Math.max(1,Math.floor(12/c.value.length))}`})},[e.createVNode(v,{node:M},null,8,["node"])],4))),128))])):r.value.kind==="layout"&&(r.value.layoutType==="section"||r.value.layoutType==="block")?(e.openBlock(),e.createElementBlock("section",JS,[d.value||i.value?(e.openBlock(),e.createElementBlock("header",YS,[d.value?(e.openBlock(),e.createElementBlock("h3",QS,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("p",e_,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",t_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(M,f)=>(e.openBlock(),e.createBlock(v,{key:f,node:M},null,8,["node"]))),128))])])):r.value.kind==="layout"&&r.value.layoutType==="tabs"?(e.openBlock(),e.createElementBlock("div",a_,[e.createElementVNode("ul",n_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(M,f)=>(e.openBlock(),e.createElementBlock("li",{key:M.key??f,class:e.normalizeClass(["admin-infolist-tabs__tab",{"admin-infolist-tabs__tab--active":f===s.value}])},e.toDisplayString(M.label),3))),128))]),e.createElementVNode("div",o_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value[s.value]?.items??[],(M,f)=>(e.openBlock(),e.createBlock(v,{key:f,node:M},null,8,["node"]))),128))])])):(e.openBlock(),e.createBlock(zI,{key:6,type:a.node.type,name:a.node.name},null,8,["type","name"]))}}}),c_={class:"admin-audit-timeline"},r_={class:"admin-audit-timeline__title"},i_={key:0,class:"admin-audit-timeline__loading"},l_={key:1,class:"admin-audit-timeline__error"},d_={key:2,class:"admin-audit-timeline__empty"},s_={key:3,class:"admin-audit-timeline__list"},u_={class:"admin-audit-timeline__icon","aria-hidden":"true"},h_={class:"admin-audit-timeline__body"},y_={class:"admin-audit-timeline__row"},p_={class:"admin-audit-timeline__actor"},k_={class:"admin-audit-timeline__verb"},m_={class:"admin-audit-timeline__when"},f_={key:0,class:"admin-audit-timeline__diff"},v_={class:"admin-audit-timeline__diff-field"},g_={class:"admin-audit-timeline__diff-values"},M_={class:"admin-audit-timeline__diff-after"},I_={key:1,class:"admin-audit-timeline__diff-before"},w_={class:"admin-audit-timeline__diff-before"},x_={class:"admin-audit-timeline__diff-after"},C_={key:1,class:"admin-audit-timeline__detail"},L_=e.defineComponent({__name:"AuditTimeline",props:{subjectType:{},subjectId:{}},setup(a){const n=a,o=e.ref([]),r=e.ref(!1),l=e.ref(null);async function c(){if(!n.subjectType||n.subjectType===""){o.value=[],r.value=!1,l.value=null;return}r.value=!0,l.value=null;try{const{getAdminClient:f}=await Promise.resolve().then(()=>se),k=await f().get(`/audit/timeline?subject_type=${encodeURIComponent(n.subjectType)}&subject_id=${encodeURIComponent(String(n.subjectId))}`);o.value=k.data??[]}catch(f){l.value=f instanceof Error?f:new Error(String(f)),o.value=[]}finally{r.value=!1}}e.onMounted(c),e.watch(()=>[n.subjectType,n.subjectId],c);const d=e.computed(()=>o.value.length>0);function i(f){return f==="created"?me:f==="deleted"||f==="destroyed"?fe:f.includes("tag")||f.includes("label")?Rn:ye}function s(f){return{created:p.trSafe("создал"),updated:p.trSafe("отредактировал"),deleted:p.trSafe("удалил"),destroyed:p.trSafe("удалил"),restored:p.trSafe("восстановил"),published:p.trSafe("опубликовал")}[f]??f}function h(f){const g=new Date(f).getTime();if(Number.isNaN(g))return"";const k=(Date.now()-g)/1e3;return k<60?`${Math.max(1,Math.floor(k))} ${p.trSafe("сек назад")}`:k<3600?`${Math.floor(k/60)} ${p.trSafe("мин назад")}`:k<86400?`${Math.floor(k/3600)} ${p.trSafe("ч назад")}`:k<86400*30?`${Math.floor(k/86400)} ${p.trSafe("д назад")}`:new Date(f).toLocaleDateString("ru-RU")}function y(f){return!!f.diff&&f.diff.length>0}function m(f){return y(f)?"":f.summary??""}const v=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?$/;function M(f){if(f==null)return"∅";if(typeof f=="boolean")return f?p.trSafe("Да"):p.trSafe("Нет");if(f===0)return p.trSafe("Нет");if(f===1)return p.trSafe("Да");if(typeof f=="string"){const g=f.match(v);return g?`${g[1]} ${g[2]}`:f.length>40?`${f.slice(0,40)}…`:f}if(typeof f=="object")try{return JSON.stringify(f)}catch{return"[object]"}return String(f)}return(f,g)=>(e.openBlock(),e.createElementBlock("section",c_,[e.createElementVNode("h2",r_,e.toDisplayString(e.unref(p.trSafe)("История изменений")),1),r.value?(e.openBlock(),e.createElementBlock("div",i_,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(3,k=>e.createVNode(e.unref(u.UidSkeleton),{key:k,height:"48px"})),64))])):l.value?(e.openBlock(),e.createElementBlock("div",l_," Не удалось загрузить историю: "+e.toDisplayString(l.value.message),1)):d.value?(e.openBlock(),e.createElementBlock("ol",s_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,k=>(e.openBlock(),e.createElementBlock("li",{key:k.id,class:"admin-audit-timeline__item"},[e.createElementVNode("span",u_,[e.createVNode(e.unref(u.UidIcon),{icon:i(k.event),size:14},null,8,["icon"])]),e.createElementVNode("div",h_,[e.createElementVNode("div",y_,[e.createVNode(e.unref(u.UidAvatar),{name:k.actor?.name??"?",alt:k.actor?.name??e.unref(p.trSafe)("Неизвестный"),size:"xs"},null,8,["name","alt"]),e.createElementVNode("span",p_,e.toDisplayString(k.actor?.name??e.unref(p.trSafe)("Система")),1),e.createElementVNode("span",k_,e.toDisplayString(s(k.event)),1),e.createElementVNode("span",m_,e.toDisplayString(h(k.created_at)),1)]),y(k)?(e.openBlock(),e.createElementBlock("ul",f_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.diff,w=>(e.openBlock(),e.createElementBlock("li",{key:w.field,class:e.normalizeClass(["admin-audit-timeline__diff-row",`admin-audit-timeline__diff-row--${k.event}`])},[e.createElementVNode("span",v_,e.toDisplayString(w.field),1),e.createElementVNode("span",g_,[k.event==="created"||k.event==="restored"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[g[0]||(g[0]=e.createElementVNode("span",{class:"admin-audit-timeline__diff-arrow","aria-hidden":"true"},"→",-1)),e.createElementVNode("span",M_,e.toDisplayString(M(w.after)),1)],64)):k.event==="deleted"||k.event==="destroyed"?(e.openBlock(),e.createElementBlock("span",I_,e.toDisplayString(M(w.before)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("span",w_,e.toDisplayString(M(w.before)),1),g[1]||(g[1]=e.createElementVNode("span",{class:"admin-audit-timeline__diff-arrow","aria-hidden":"true"},"→",-1)),e.createElementVNode("span",x_,e.toDisplayString(M(w.after)),1)],64))])],2))),128))])):m(k)?(e.openBlock(),e.createElementBlock("div",C_,e.toDisplayString(m(k)),1)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("div",d_,e.toDisplayString(e.unref(p.trSafe)("Записей в истории пока нет.")),1))]))}}),b_={class:"admin-page admin-resource-view"},S_={class:"admin-resource-view__hd"},__={class:"admin-resource-view__hd-left"},B_={class:"admin-page__title"},V_={class:"admin-resource-view__meta"},q_=["data-variant","data-status"],A_={class:"admin-resource-view__uid"},z_={class:"admin-resource-view__hd-right"},D_={key:1,class:"admin-resource-view__loading"},E_={key:2,class:"admin-resource-view__grid"},N_={class:"admin-resource-view__main"},H_={class:"admin-resource-view__card-title"},F_={class:"admin-resource-view__aside"},P_={class:"admin-resource-view__card-title"},T_={class:"admin-resource-view__metrics"},j_={class:"admin-resource-view__metric-label"},U_={class:"admin-resource-view__metric-value"},EI=e.defineComponent({__name:"ResourceViewPage",props:{slug:{},id:{},editRouteName:{default:void 0},indexRouteName:{default:null},auditSubjectType:{default:null},statusField:{default:"status"},uidPrefix:{default:"#"}},setup(a){const n=a,o=e9(),r=pe(),l=re.useRouter();V9(o.state);const c=e.computed(()=>r.getResource(n.slug)),d=e.computed(()=>(c.value?.features??{}).editable!==!1),i=e.computed(()=>c.value?.infolist??c.value?.fields??[]),s=e.computed(()=>n.auditSubjectType!==null?n.auditSubjectType:c.value?.subject_type??null),h=e.computed(()=>{const L=o.state,S=[],C=N=>{if(typeof N!="string"||N==="")return null;const T=new Date(N);return Number.isNaN(T.getTime())?null:T.toLocaleString("ru-RU",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})},A=C(L.created_at);A&&S.push({label:p.trSafe("Создано"),value:A});const H=C(L.updated_at);H&&H!==A&&S.push({label:p.trSafe("Обновлено"),value:H});const R=typeof L.created_by_name=="string"&&L.created_by_name!==""?L.created_by_name:typeof L.author=="string"?L.author:null;return R&&S.push({label:p.trSafe("Автор"),value:R}),S}),y=e.computed(()=>{const L=o.state,S=L.title??L.name??L.label;return typeof S=="string"&&S.length>0?S:`${c.value?.label??n.slug}: ${p.tRaw("запись #:id",{id:n.id})}`}),m=e.computed(()=>c.value?.label??n.slug),v=e.computed(()=>`${n.uidPrefix}${n.id}`),M=e.computed(()=>{const S=o.state[n.statusField];return typeof S=="string"&&S.length>0?S:null}),f={published:"success",active:"success",enabled:"success",draft:"neutral",pending:"warning",review:"warning",archived:"muted",disabled:"muted",inactive:"muted",deleted:"danger",failed:"danger",error:"danger"};function g(L){return f[L.toLowerCase()]??"neutral"}const k=e.computed(()=>(c.value?.actions??[]).map(S=>({key:String(S.key??S.name??""),label:String(S.label??S.name??S.key??""),confirm:typeof S.confirm=="string"?S.confirm:void 0})).filter(S=>S.key!==""&&S.label!==""));async function w(L){if(!(L.confirm&&!window.confirm(L.confirm)))try{const{getAdminClient:S}=await Promise.resolve().then(()=>se);await S().post(`/${n.slug}/action/${L.key}`,{ids:[n.id]}),await o.load(n.slug,n.id,"view").catch(()=>{})}catch(S){typeof console<"u"&&console.error("[admin] action failed:",S)}}e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),await o.load(n.slug,n.id,"view").catch(()=>{})}),e.watch(()=>[n.slug,n.id],async([L,S])=>{await o.load(L,S,"view").catch(()=>{})});const D=e.computed(()=>{if(n.indexRouteName)return n.indexRouteName;const L=r.getResource(n.slug)?.parent_slug;return L?`admin.resource.${L}.index`:`admin.resource.${n.slug}.index`});function z(){l.push({name:D.value}).catch(()=>{l.push(`/r/${n.slug}`)})}function B(){if(!n.editRouteName){l.push(`/r/${n.slug}/${n.id}/edit`).catch(()=>{});return}l.push({name:n.editRouteName,params:{id:n.id}}).catch(()=>{})}async function b(){confirm(p.trSafe("Удалить запись?"))&&(await o.destroy().catch(()=>{}),o.hasError||l.push({name:D.value}).catch(()=>{}))}return(L,S)=>(e.openBlock(),e.createElementBlock("section",b_,[e.createElementVNode("header",S_,[e.createElementVNode("div",__,[e.createElementVNode("button",{type:"button",class:"admin-resource-view__back",onClick:z},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(co),size:14},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(m.value),1)]),e.createElementVNode("h1",B_,e.toDisplayString(y.value),1),e.createElementVNode("div",V_,[M.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-status-badge","data-variant":g(M.value),"data-status":M.value},[S[0]||(S[0]=e.createElementVNode("span",{class:"admin-status-badge__dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(M.value),1)],8,q_)):e.createCommentVNode("",!0),e.createElementVNode("span",A_,e.toDisplayString(v.value),1)])]),e.createElementVNode("div",z_,[d.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"secondary",size:"md",onClick:B},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ee),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Редактировать")),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"md","aria-label":e.unref(p.trSafe)("Действия"),class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(ze),size:16},null,8,["icon"])]),_:1},8,["aria-label"])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,C=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:C.key,onClick:A=>w(C)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.label),1)]),_:2},1032,["onClick"]))),128)),e.createVNode(e.unref(u.UidMenuItem),{variant:"danger",onClick:b},{icon:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Удалить")),1)]),_:1})]),_:1})])]),e.unref(o).hasError?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"danger",class:"admin-resource-view__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(o).error?.message??e.unref(p.trSafe)("Не удалось загрузить запись")),1)]),_:1})):e.createCommentVNode("",!0),e.unref(o).loading?(e.openBlock(),e.createElementBlock("div",D_,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,C=>e.createVNode(e.unref(u.UidSkeleton),{key:C,height:"24px"})),64))])):(e.openBlock(),e.createElementBlock("div",E_,[e.createElementVNode("div",N_,[e.createVNode(e.unref(u.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createElementVNode("h2",H_,e.toDisplayString(e.unref(p.trSafe)("Основные данные")),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(C,A)=>(e.openBlock(),e.createBlock(DI,{key:A,node:C},null,8,["node"]))),128))]),_:1}),e.createVNode(e.unref(u.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createVNode(L_,{"subject-type":s.value,"subject-id":a.id},null,8,["subject-type","subject-id"])]),_:1})]),e.createElementVNode("aside",F_,[h.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createElementVNode("h2",P_,e.toDisplayString(e.unref(p.trSafe)("Метрики")),1),e.createElementVNode("dl",T_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,C=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:C.label},[e.createElementVNode("dt",j_,e.toDisplayString(C.label),1),e.createElementVNode("dd",U_,e.toDisplayString(C.value),1)],64))),128))])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(L.$slots,"sidebar",{record:e.unref(o).state,resource:c.value})])]))]))}}),R_=[.2,3/8,5/9,2/3],$_=(a,n)=>o=>{const r=4*a+o-4,l="*-04-39?2$%%$%%'$%''%'''%')(%'))%(++'(++'(+.'+-.',/3',33)-/5)-43).36)058*18<+37<+4:<,4:E,5<A-7>C/8@F/:EH/<EK0=FM1?IP2@KS3BNV4DPY5FS\\6HV_6IXb7K[e8N^i9Pam;Rdp<Tgt".charCodeAt(r)-35,c=r>8?l:1,d=n/c|0,i=n%c,s=c-i,h=r>8?d*R_[o]+(a>5)&-2:l,y=d-h;return{t:s*y+i*y+i,o:[[s,y],[i,y+1]],i:h}},O_={min:0,L:0,M:1,Q:2,H:3,max:3},bn=a=>new Uint8Array(a),to=a=>{const n=new Error(`lean-qr error ${a}`);throw n.code=a,n},Ic=a=>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".indexOf(a),k9=a=>a.charCodeAt(0),NI=(...a)=>(n,o)=>a.forEach(r=>r(n,o)),HI=a=>n=>{n.eci!==a&&(n.push(7,4),a<128?n.push(a,8):a<16384?n.push(32768|a,16):n.push(12582912|a,24),n.eci=a)},D9=a=>(n,o)=>{n.push(4,4),n.push(a.length,8+8*(o>9)),a.forEach(r=>n.push(r,8))},Jn=(a,n,o,r,l=(d,i)=>o(d.length,i),c=r?d=>NI(HI(r),a(d)):a)=>(c.test=n,c.l=o,c.est=l,c.eci=r&&[r],c),FI=Jn(a=>(n,o)=>{n.push(1,4),n.push(a.length,10+2*(o>26)+2*(o>9));let r=0;for(;r<a.length-2;r+=3)n.push(+a.slice(r,r+3),10);r<a.length-1?n.push(+a.slice(r),7):r<a.length&&n.push(+a[r],4)},a=>/[0-9]/.test(a),(a,n)=>14+2*(n>26)+2*(n>9)+10*a/3),PI=Jn(a=>(n,o)=>{n.push(2,4),n.push(a.length,9+2*(o>26)+2*(o>9));let r=0;for(;r<a.length-1;r+=2)n.push(45*Ic(a[r])+Ic(a[r+1]),11);r<a.length&&n.push(Ic(a[r]),6)},a=>Ic(a)>=0,(a,n)=>13+2*(n>26)+2*(n>9)+5.5*a),$n=Jn(a=>D9([...a].map(k9)),a=>k9(a)<128,(a,n)=>12+8*(n>9)+8*a);$n._=!0,$n.u=!0;const E9=Jn($n,a=>k9(a)<256,$n.l,3);E9._=!0;const K9=new TextEncoder,N9=Jn(a=>D9(K9.encode(a)),()=>1,0,26,(a,n)=>12+8*(n>9)+8*K9.encode(a).length);N9._=!0;let m9=()=>{const a=new Map,n=new TextDecoder("sjis"),o=bn(2);for(let r=0;r<7973;++r)o[0]=r/192+129+64*(r>5951),o[1]=r%192+64,a.set(n.decode(o),r);return a.delete("�"),m9=()=>a,a};const H9=Jn(a=>(n,o)=>{n.push(8,4),n.push(a.length,8+2*(o>26)+2*(o>9));for(const r of a)n.push(m9().get(r),13)},a=>m9().has(a),(a,n)=>12+2*(n>26)+2*(n>9)+13*a);H9._=!0;const TI=[FI,PI,$n,E9,H9,N9],Z_={auto:(a,{modes:n=TI}={})=>(o,r)=>{const l=n.map((y,m)=>{const v=new Map,M=(f,g)=>(v.has(f)||v.set(f,g(f,r)),v.get(f));return{m:y,h:1<<m,C:y.est("",r),S:y.l?(f,g)=>M(g-f,y.l):(f,g)=>M(a.slice(f,g),y.est)}});let c=[{v:0}],d=0,i=0,s=-1;for(const y of[...a,""]){let m=0;if(y)for(const v of l)v.m.test(y)&&(m|=v.h);if(!y||m!==s){if(s!==-1){const v=new Set(c.map(f=>f.D)),M=[];for(const{m:f,C:g,S:k,h:w}of l)if(s&w){const D=k(d,i);for(const z of f.eci??v)if(!f.u||!z){let B;for(const b of c)if(b.D===z||f.eci){const L=b.m===f&&b.D===z,S=L?b.V:b,C=f._&&L?b.v+D-g:S.v+12*(S.D!==z)+(L?k(L?b.$:d,i):D);(!B||C<B.v)&&(B={$:L?b.$:d,V:S,m:f,D:z,A:i,v:C})}B&&M.push(B)}}c=M}s=m,d=i}i+=y.length}c.length||to(5);const h=[];for(let y=c.reduce((m,v)=>v.v<m.v?v:m);y.m;y=y.V)h.push(y.m(a.slice(y.$,y.A)));h.reverse().forEach(y=>y(o,r))},multi:NI,eci:HI,bytes:D9,numeric:FI,alphaNumeric:PI,ascii:$n,iso8859_1:E9,shift_jis:H9,utf8:N9},W_=()=>({F:bn(2956),I:0,push(a,n){for(let o=n,r=8-(7&this.I);o>0;o-=r,r=8)this.F[this.I>>3]|=a<<r>>o,this.I+=o<r?o:r}}),s9=(a,n=a*a,o=bn(n))=>({size:a,K:o,get:(r,l)=>r>=0&&r<a&&!!(1&o[l*a+r]),toString({on:r="##",off:l=" ",lf:c=`
|
|
4
4
|
`,pad:d=4,padX:i=d,padY:s=d}={}){let h="";for(let y=-s;y<a+s;++y){for(let m=-i;m<a+i;++m)h+=this.get(m,y)?r:l;h+=c}return h},toImageData(r,{on:l=[0,0,0],off:c=[0,0,0,0],pad:d=4,padX:i=d,padY:s=d}={}){const h=a+2*i,y=a+2*s,m=r.createImageData(h,y),v=new Uint32Array(m.data.buffer);m.data.set([...l,255]);const M=v[0];m.data.set([...c,255]);const f=v[0];for(let g=0;g<y;++g)for(let k=0;k<h;++k)v[g*h+k]=this.get(k-i,g-s)?M:f;return m},toCanvas(r,l){const c=r.getContext("2d"),d=this.toImageData(c,l);r.width=d.width,r.height=d.height,c.putImageData(d,0,0)},toDataURL({type:r="image/png",scale:l=1,...c}={}){const d=document.createElement("canvas"),i=d.getContext("2d"),s=this.toImageData(i,c);return d.width=s.width*l,d.height=s.height*l,i.putImageData(s,0,0),i.imageSmoothingEnabled=!1,i.globalCompositeOperation="copy",i.drawImage(d,0,0,s.width,s.height,0,0,d.width,d.height),d.toDataURL(r,1)}}),u9=[(a,n)=>1&(a^n),(a,n)=>1&n,a=>a%3,(a,n)=>(a+n)%3,(a,n)=>1&(a/3^n>>1),(a,n)=>(a&n&1)+a*n%3,(a,n)=>(a&n)+a*n%3&1,(a,n)=>(a^n)+a*n%3&1],KM=bn(511);for(let a=0,n=1;a<255;n=2*n^285*(n>127))KM[KM[n+255]=a++]=n;const jI=a=>KM[a%255],UI=a=>KM[a+255],G_=(a,n)=>{const o=bn(a.length+n.length-1);for(let r=0;r<a.length;++r)for(let l=0;l<n.length;++l)o[r+l]^=jI(a[r]+n[l]);return o.map(UI)},K_=(a,n)=>{const o=bn(a.length+n.length-1);o.set(a,0);for(let r=0;r<a.length;++r)if(o[r]){const l=UI(o[r]);for(let c=0;c<n.length;++c)o[r+c]^=jI(n[c]+l)}return o.slice(a.length)},f9=[[0],[0,0]];for(let a=1;a<30;++a)f9.push(G_(f9[a],[0,a]));const X_=(a,n)=>{const o=[[],[]];let r=0,l=0;for(const[d,i]of n.o)for(let s=0;s<d;++s,r+=i){const h=a.slice(r,r+i);o[0].push(h),o[1].push(K_(h,f9[n.i])),l+=i+n.i}const c=bn(l);l=0;for(const d of o)for(let i=0,s=-1;s<l;++i){s=l;for(const h of d)i<h.length&&(c[l++]=h[i])}return c},RI=(a,n,o)=>{let r=a<<=o;for(let l=134217728;l>>=1;)r&l&&(r^=n*(l>>o));return r|a},J_=({size:a,K:n},o)=>{const r=(d,i,s,h)=>{for(;s-- >0;d+=a)n.fill(h,d,d+i)},l=(d,i,s)=>{for(let h=0;h++<3;s-=2)r(i*a+d-(s>>1)*(a+1),s,s,2|h)},c=2*((a-13)/(1+(o/7|0))/2+.75|0);if(o>1)for(let d=a-7;d>8;d-=c){for(let i=d;i>8;i-=c)l(d,i,5);d<a-7&&l(d,6,5)}if(o>6)for(let d=RI(o,7973,12),i=1;i<7;++i)for(let s=12;s-- >9;d>>=1)n[i*a-s]=2|1&d;r(7,2,9,2),r(a-8,8,9,2);for(let d=0;d<a;++d)n[6*a+d]=3^1&d;l(3,3,7),l(a-4,3,7);for(let d=0;d<a;++d)for(let i=d;i<a;++i)n[i*a+d]=n[d*a+i];n[(a-8)*a+8]=3},Y_=({size:a,K:n})=>{const o=[];for(let r=a-2,l=a,c=-1;r>=0;r-=2){for(r===5&&(r=4);l+=c,l!==-1&&l!==a;){const d=l*a+r;n[d+1]||o.push(d+1),n[d]||o.push(d)}c*=-1}return o},Q_=({K:a},n,o)=>n.forEach((r,l)=>a[r]=o[l>>3]>>(7&~l)&1),eB=({size:a,K:n},o,r,l)=>{for(let d=0;d<a;++d)for(let i=0;i<a;++i){const s=d*a+i;n[s]^=!(o(i,d)||2&n[s])}let c=21522^RI((1^l)<<3|r,1335,10);for(let d=0;d++<8;c>>=1)n[(d-(d<7))*a+8]=1&c,n[9*a-d]=1&c;for(let d=8;--d,c;c>>=1)n[8*a+d-(d<7)]=1&c,n[(a-d)*a+8]=1&c},tB=({size:a,K:n},o=0,r=0)=>{for(let l=0;l<a;++l){for(let c=0;c<2;++c)for(let d,i=0,s=0,h=2;i<a;++i){const y=1&n[c?l*a+i:i*a+l];r+=y,s=(s>>1|2098176)&(3047517^y-1),2049&s&&(o+=40),y^h&&(d=0),h=y,o+=++d===5?3:d>5}if(l)for(let c=a+l,d=5*n[l-1]^n[l];c<a*a;c+=a){const i=5*n[c-1]^n[c];o+=3*!(1&(d|i)|4&(d^i)),d=i}}return o+10*(10*Math.abs(r/(a*a)-1)|0)},X9=[],v9=(a=to(1),{minCorrectionLevel:n=0,maxCorrectionLevel:o=3,minVersion:r=1,maxVersion:l=40,mask:c,trailer:d=60433,...i}={})=>{o<n&&to(3),l<r&&to(2),typeof a=="string"&&(a=Z_.auto(a,i));for(let s=r,h=0;s<=l;++s){let y=X9[s];y||(X9[s]=y=s9(4*s+17),J_(y,s),y.p=Y_(y));const m=$_(s,y.p.length>>3);if(8*m(n).t<h)continue;const v=W_();a(v,s),h=v.I;for(let M=o;M>=n;--M){const f=m(M);if(8*f.t<h)continue;for(v.I=h+11&-8;v.I<8*f.t;)v.push(d,16);const g=s9(y.size,y.K);return Q_(g,y.p,X_(v.F,f)),(u9[c??-1]?[u9[c]]:u9).map((k,w)=>{const D=s9(g.size,g.K);return eB(D,k,c??w,M),D.s=tB(D),D}).reduce((k,w)=>w.s<k.s?w:k)}}to(4)};v9.with=(...a)=>(n,o)=>v9(n,{modes:[...TI,...a],...o});const aB="http://www.w3.org/2000/svg",nB=(a,n,o,r=[])=>[`<${n}`,...Object.entries(o).map(([l,c])=>` ${l}="${`${c}`.replace(/[^ -~]|["&]/g,"")}"`),">",...r,`</${n}>`].join(""),oB=a=>{const n=new Map,o=[],r=l=>{const c=n.get(l);return n.delete(l),c};for(let l=0;l<=a.size;++l)for(let c=0;c<=a.size;++c){const d=a.get(c,l),i=[a.get(c-1,l)^d&&c+" "+(l+1),c+" "+l,a.get(c,l-1)^d&&c+1+" "+l].filter(s=>s);if(i.length>1){d||i.reverse();const s=i.pop(),h=r(i[0])||[],y=r(s);h.push(...i),h===y?o.push(h):(y?y.unshift(...h):n.set(s,h),n.set(h[0],y||h))}}return o.map(l=>`M${l.join("L")}Z`).join("")},cB=(a,{on:n="black",off:o,pad:r=4,padX:l=r,padY:c=r,width:d,height:i,scale:s=1},h,y,m)=>{const v=a.size+2*l,M=a.size+2*c;return h(y,"svg",{xmlns:aB,version:"1.1",viewBox:`${-l} ${-c} ${v} ${M}`,width:d??v*s,height:i??M*s,"shape-rendering":"crispedges"},[o?h(y,"rect",{x:-l,y:-c,width:v,height:M,fill:o}):"",h(y,"path",{d:oB(a),fill:n})],m)},rB=(a,n={})=>(n.xmlDeclaration?'<?xml version="1.0" encoding="UTF-8" ?>':"")+cB(a,n,nB),iB={class:"admin-2fa"},lB={key:0,class:"admin-2fa__panel"},dB={class:"admin-2fa__lead"},sB={key:0,class:"admin-2fa__error"},uB={key:1,class:"admin-2fa__panel"},hB={class:"admin-2fa__steps"},yB={class:"admin-2fa__secret","data-testid":"2fa-secret"},pB=["innerHTML"],kB={key:1,class:"admin-2fa__hint"},mB={class:"admin-2fa__uri"},fB={class:"admin-2fa__code-row"},vB={key:0,class:"admin-2fa__error"},gB={key:2,class:"admin-2fa__panel admin-2fa__panel--success"},MB={class:"admin-2fa__lead"},IB={class:"admin-2fa__codes"},wB={key:3,class:"admin-2fa__panel"},xB={class:"admin-2fa__lead"},CB={class:"admin-2fa__manage"},LB={key:0,class:"admin-2fa__error"},bB={key:1,class:"admin-2fa__codes"},SB=e.defineComponent({__name:"TwoFactorSetup",props:{enabled:{type:Boolean}},emits:["enabled","disabled"],setup(a,{emit:n}){const o=a,r=n,l=e.ref(o.enabled?"enabled":"idle"),c=e.ref(""),d=e.ref(""),i=e.ref(""),s=e.ref([]),h=e.ref(""),y=e.ref(!1),m=e.ref("");async function v(){y.value=!0,m.value="";try{const{getAdminClient:B}=await Promise.resolve().then(()=>se),L=await B().post("/profile/twoFactorEnable");c.value=L.secret,d.value=L.qr_uri,s.value=L.recovery_codes??[],l.value="setup"}catch{m.value=p.trSafe("Не удалось инициализировать 2FA.")}finally{y.value=!1}}async function M(){if(!(i.value.length<4)){y.value=!0,m.value="";try{const{getAdminClient:B}=await Promise.resolve().then(()=>se),L=await B().post("/profile/twoFactorConfirm",{code:i.value});L.recovery_codes&&(s.value=L.recovery_codes),l.value="confirmed",Q.success(p.trSafe("Двухфакторная аутентификация подключена.")),r("enabled")}catch{m.value=p.trSafe("Неверный код. Попробуйте ещё раз.")}finally{y.value=!1}}}async function f(){if(h.value===""){m.value=p.trSafe("Введите текущий пароль.");return}if(window.confirm(p.trSafe("Отключить 2FA? Аккаунт станет менее защищённым."))){y.value=!0,m.value="";try{const{getAdminClient:B}=await Promise.resolve().then(()=>se);await B().post("/profile/twoFactorDisable",{password:h.value}),l.value="idle",Q.success(p.trSafe("2FA отключена.")),r("disabled")}catch{Q.error(p.trSafe("Не удалось отключить 2FA."))}finally{y.value=!1}}}async function g(){if(h.value===""){m.value=p.trSafe("Введите текущий пароль.");return}y.value=!0,m.value="";try{const{getAdminClient:B}=await Promise.resolve().then(()=>se),L=await B().post("/profile/twoFactorRegenerateCodes",{password:h.value});s.value=L.recovery_codes,h.value="",Q.success(p.trSafe("Recovery-коды обновлены."))}catch{m.value=p.trSafe("Неверный пароль.")}finally{y.value=!1}}async function k(){try{await navigator.clipboard.writeText(c.value),Q.success(p.trSafe("Secret скопирован."))}catch{Q.warning(p.trSafe("Скопируйте вручную."))}}async function w(){try{await navigator.clipboard.writeText(s.value.join(`
|
|
5
|
-
`)),Q.success(p.trSafe("Recovery-коды скопированы."))}catch{Q.warning(p.trSafe("Скопируйте вручную."))}}const D=e.computed(()=>c.value.match(/.{1,4}/g)?.join(" ")??c.value),z=e.computed(()=>{if(d.value==="")return"";try{const B=v9(d.value,{minCorrectionLevel:O_.M});return rB(B,{on:"#18181b",off:"transparent",padX:1,padY:1})}catch{return""}});return(B,b)=>(e.openBlock(),e.createElementBlock("div",iB,[l.value==="idle"?(e.openBlock(),e.createElementBlock("div",lB,[e.createElementVNode("p",dB,e.toDisplayString(e.unref(p.trSafe)("Двухфакторная аутентификация добавляет второй слой защиты — даже если пароль попадёт"))+" "+e.toDisplayString(e.unref(p.trSafe)("в чужие руки, без OTP-кода из приложения войти не получится.")),1),e.createVNode(e.unref(u.UidButton),{variant:"primary",loading:y.value,"data-testid":"2fa-enable",onClick:v},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ko),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Включить 2FA")),1)]),_:1},8,["loading"]),m.value?(e.openBlock(),e.createElementBlock("p",sB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0)])):l.value==="setup"?(e.openBlock(),e.createElementBlock("div",uB,[e.createElementVNode("ol",hB,[e.createElementVNode("li",null,e.toDisplayString(e.unref(p.trSafe)("Откройте Authenticator-приложение (Google Authenticator, 1Password, Authy…).")),1),e.createElementVNode("li",null,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Добавьте новый аккаунт вручную, скопировав ключ:"))+" ",1),e.createElementVNode("div",yB,[e.createElementVNode("code",null,e.toDisplayString(D.value),1),e.createElementVNode("button",{type:"button",class:"admin-2fa__copy",onClick:k},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(zn),size:12},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Копировать")),1)])]),e.renderSlot(B.$slots,"qr-code",{uri:d.value},()=>[z.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"admin-2fa__qr",innerHTML:z.value},null,8,pB)):(e.openBlock(),e.createElementBlock("p",kB,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Либо отсканируйте QR с другого устройства — поделитесь URI:"))+" ",1),e.createElementVNode("code",mB,e.toDisplayString(d.value),1)]))])]),e.createElementVNode("li",null,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Введите 6-значный код из приложения:"))+" ",1),e.createElementVNode("div",fB,[e.createVNode(e.unref(u.UidInput),{modelValue:i.value,"onUpdate:modelValue":b[0]||(b[0]=L=>i.value=L),"data-testid":"2fa-code",placeholder:"123456",maxlength:"6",class:"admin-2fa__code-input"},null,8,["modelValue"]),e.createVNode(e.unref(u.UidButton),{variant:"primary",loading:y.value,disabled:i.value.length<4,"data-testid":"2fa-confirm",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Подтвердить")),1)]),_:1},8,["loading","disabled"])])])]),m.value?(e.openBlock(),e.createElementBlock("p",vB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0)])):l.value==="confirmed"?(e.openBlock(),e.createElementBlock("div",gB,[e.createElementVNode("p",MB,e.toDisplayString(e.unref(p.trSafe)("2FA активирована. Сохраните recovery-коды в безопасном месте — они нужны если вы"))+" "+e.toDisplayString(e.unref(p.trSafe)("потеряете доступ к Authenticator-приложению.")),1),e.createElementVNode("div",IB,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,L=>(e.openBlock(),e.createElementBlock("code",{key:L,class:"admin-2fa__codes-item"},e.toDisplayString(L),1))),128))]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:w},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(zn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Скопировать все")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"primary",onClick:b[1]||(b[1]=L=>l.value="enabled")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Готово")),1)]),_:1})])):l.value==="enabled"?(e.openBlock(),e.createElementBlock("div",wB,[e.createElementVNode("p",xB,e.toDisplayString(e.unref(p.trSafe)("2FA включена. Если у вас остался доступ к Authenticator app — всё в порядке.")),1),e.createElementVNode("div",CB,[e.createVNode(e.unref(u.UidInput),{modelValue:h.value,"onUpdate:modelValue":b[2]||(b[2]=L=>h.value=L),type:"password",placeholder:e.unref(p.trSafe)("Текущий пароль")},null,8,["modelValue","placeholder"]),e.createVNode(e.unref(u.UidButton),{variant:"secondary",loading:y.value,onClick:g},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Tn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Перегенерировать recovery-коды")),1)]),_:1},8,["loading"]),e.createVNode(e.unref(u.UidButton),{variant:"danger",loading:y.value,"data-testid":"2fa-disable",onClick:f},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Xo),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Отключить 2FA")),1)]),_:1},8,["loading"])]),m.value?(e.openBlock(),e.createElementBlock("p",LB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0),s.value.length>0?(e.openBlock(),e.createElementBlock("div",bB,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,L=>(e.openBlock(),e.createElementBlock("code",{key:L,class:"admin-2fa__codes-item"},e.toDisplayString(L),1))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),_B={class:"admin-page admin-profile"},BB={class:"admin-page__hd"},VB={class:"admin-page__title-wrap"},qB={class:"admin-page__title"},AB={class:"admin-page__count"},zB={class:"admin-profile__layout"},DB={class:"admin-profile__nav","aria-label":"Profile sections"},EB=["onClick"],NB=["data-icon"],HB={class:"admin-profile__content"},FB={class:"admin-profile__card-hd"},PB={class:"admin-profile__card-title"},TB={class:"admin-profile__hero"},jB={class:"admin-profile__hero-text"},UB={class:"admin-profile__hero-name"},RB={class:"admin-profile__hero-meta"},$B={class:"admin-profile__form"},OB={class:"admin-profile__card-ft"},ZB={class:"admin-profile__card-hd"},WB={class:"admin-profile__card-title"},GB={class:"admin-profile__hint"},$I=e.defineComponent({__name:"ProfilePage",props:{title:{default:"Profile"},subtitle:{default:void 0},section:{default:"general"}},emits:["update:section","avatar-replace","two-factor-disable","two-factor-regenerate","save"],setup(a,{emit:n}){const o=a,r=n,l=ge(),c=XM(),d=Qe(),i=[{id:"general",label:p.trSafe("Основное"),icon:"user"},{id:"security",label:p.trSafe("Безопасность"),icon:"shield"},{id:"tokens",label:p.trSafe("API токены"),icon:"key"},{id:"sessions",label:p.trSafe("Сессии"),icon:"monitor"}],s=e.ref(o.section);function h(z){s.value=z,r("update:section",z)}const y=e.ref({name:l.user?.name??"",email:l.user?.email??"",locale:d.current,theme:c.current}),m=e.computed(()=>d.available.map(z=>({value:z,label:z.toUpperCase()}))),v=e.computed(()=>c.available.map(z=>({value:z,label:z==="dark"?p.trSafe("Тёмная"):z==="light"?p.trSafe("Светлая"):z})));e.watch(()=>y.value.locale,(z,B)=>{z===B||!z||d.setLocale(z).then(()=>{typeof window<"u"&&window.location.reload()}).catch(()=>{})}),e.watch(()=>y.value.theme,(z,B)=>{z===B||!z||c.setTheme(z).catch(()=>{})});function M(){r("save",{...y.value})}function f(){r("avatar-replace")}const g=e.ref(!!l.user?.twoFactorEnabled),k=e.computed(()=>g.value);function w(){g.value=!0,l.user&&(l.user.twoFactorEnabled=!0),r("two-factor-regenerate")}function D(){g.value=!1,l.user&&(l.user.twoFactorEnabled=!1),r("two-factor-disable")}return(z,B)=>(e.openBlock(),e.createElementBlock("section",_B,[e.createElementVNode("header",BB,[e.createElementVNode("div",VB,[e.createElementVNode("h1",qB,e.toDisplayString(a.title),1),e.createElementVNode("div",AB,e.toDisplayString(a.subtitle??e.unref(p.trSafe)("Личные данные, безопасность, токены")),1)])]),e.createElementVNode("div",zB,[e.createElementVNode("nav",DB,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,b=>e.createElementVNode("button",{key:b.id,type:"button",class:e.normalizeClass(["admin-profile__nav-item",{"admin-profile__nav-item--active":s.value===b.id}]),onClick:L=>h(b.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":b.icon},null,8,NB),e.createElementVNode("span",null,e.toDisplayString(b.label),1)],10,EB)),64))]),e.createElementVNode("div",HB,[s.value==="general"?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",FB,[e.createElementVNode("h3",PB,e.toDisplayString(e.unref(p.trSafe)("Профиль")),1)]),e.createElementVNode("div",TB,[e.createVNode(e.unref(u.UidAvatar),{src:e.unref(l).user?.avatar??void 0,name:e.unref(l).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",jB,[e.createElementVNode("div",UB,e.toDisplayString(e.unref(l).user?.name??"—"),1),e.createElementVNode("div",RB,e.toDisplayString(e.unref(l).user?.email??"—"),1)]),B[4]||(B[4]=e.createElementVNode("div",{style:{flex:"1"}},null,-1)),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Заменить")),1)]),_:1})]),e.createElementVNode("div",$B,[e.createVNode(e.unref(u.UidInput),{modelValue:y.value.name,"onUpdate:modelValue":B[0]||(B[0]=b=>y.value.name=b),label:e.unref(p.trSafe)("Имя"),name:"name"},null,8,["modelValue","label"]),e.createVNode(e.unref(u.UidInput),{modelValue:y.value.email,"onUpdate:modelValue":B[1]||(B[1]=b=>y.value.email=b),label:"Email",type:"email",name:"email"},null,8,["modelValue"]),e.createVNode(e.unref(u.UidSelect),{modelValue:y.value.locale,"onUpdate:modelValue":B[2]||(B[2]=b=>y.value.locale=b),options:m.value,label:e.unref(p.trSafe)("Язык")},null,8,["modelValue","options","label"]),e.createVNode(e.unref(u.UidSelect),{modelValue:y.value.theme,"onUpdate:modelValue":B[3]||(B[3]=b=>y.value.theme=b),options:v.value,label:e.unref(p.trSafe)("Тема")},null,8,["modelValue","options","label"])]),e.createElementVNode("footer",OB,[e.createVNode(e.unref(u.UidButton),{variant:"primary",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Сохранить")),1)]),_:1})])]),_:1})):s.value==="security"?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:1,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",ZB,[e.createElementVNode("h3",WB,e.toDisplayString(e.unref(p.trSafe)("Двухфакторная аутентификация")),1),e.createVNode(e.unref(u.UidBadge),{variant:k.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value?e.unref(p.trSafe)("Включена"):e.unref(p.trSafe)("Отключена")),1)]),_:1},8,["variant"])]),e.renderSlot(z.$slots,"enable-2fa",{},()=>[e.createVNode(SB,{enabled:k.value,onEnabled:w,onDisabled:D},null,8,["enabled"])])]),_:3})):e.renderSlot(z.$slots,s.value,{section:s.value},()=>[e.createVNode(e.unref(u.UidCard),{padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("p",GB," Section «"+e.toDisplayString(s.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(s.value)+". ",1)]),_:1})],void 0,2)])])]))}}),g9=e.defineComponent({__name:"StatWidget",props:{title:{default:""},stats:{default:()=>[]},value:{default:0},prefix:{default:""},suffix:{default:""},trend:{default:void 0},precision:{default:0},tone:{default:"neutral"},loading:{type:Boolean,default:!1}},setup(a){const n=a,o={neutral:"primary",positive:"success",negative:"danger",warning:"warning",info:"info"},r=e.computed(()=>o[n.tone]),l=e.computed(()=>n.stats[0]??{}),c=e.computed(()=>l.value.label??n.title??""),d=e.computed(()=>l.value.value??n.value),i=e.computed(()=>l.value.prefix??n.prefix),s=e.computed(()=>l.value.suffix??n.suffix),h=e.computed(()=>{const y=l.value.change;return y&&typeof y.delta=="number"?y.delta:n.trend});return(y,m)=>(e.openBlock(),e.createBlock(e.unref(u.UidStat),{title:a.title||c.value,value:d.value,prefix:i.value,suffix:s.value,trend:h.value,precision:a.precision,tone:r.value,loading:a.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),KB={key:0,class:"admin-widget__hd"},XB={key:0,class:"admin-widget__title"},JB={key:1,class:"admin-widget__desc"},YB={key:1,class:"admin-widget__empty"},QB=["viewBox","height","aria-label"],eV=["x","y","width","height","fill","data-label","data-value"],F9=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(a){const n=a,o=e.computed(()=>n.data.length===0||n.data.every(c=>!c.value)),r=e.computed(()=>Math.max(1,...n.data.map(c=>c.value))),l=e.computed(()=>{const d=100/Math.max(1,n.data.length);return n.data.map((i,s)=>({label:i.label,value:i.value,x:s*d+d*.1,width:d*.8,heightPct:i.value/r.value*100}))});return(c,d)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title||a.description?(e.openBlock(),e.createElementBlock("header",KB,[a.title?(e.openBlock(),e.createElementBlock("h3",XB,e.toDisplayString(a.title),1)):e.createCommentVNode("",!0),a.description?(e.openBlock(),e.createElementBlock("p",JB,e.toDisplayString(a.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),o.value?(e.openBlock(),e.createElementBlock("div",YB,e.toDisplayString(e.unref(p.trSafe)("Нет данных за период")),1)):(e.openBlock(),e.createElementBlock("svg",{key:2,class:"admin-widget-bar-chart",viewBox:`0 0 100 ${a.height}`,preserveAspectRatio:"none",height:a.height,width:"100%",role:"img","aria-label":a.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(i,s)=>(e.openBlock(),e.createElementBlock("rect",{key:s,x:i.x,y:a.height-i.heightPct/100*a.height,width:i.width,height:i.heightPct/100*a.height,fill:a.accent,rx:"1","data-label":i.label,"data-value":i.value},[e.createElementVNode("title",null,e.toDisplayString(i.label)+": "+e.toDisplayString(i.value),1)],8,eV))),128))],8,QB))]),_:1}))}}),tV={key:0,class:"admin-widget__hd"},aV={class:"admin-widget__title"},nV={key:1,class:"admin-widget__empty"},oV={key:2,class:"admin-donut-widget__row"},cV=["aria-label"],rV=["d","fill"],iV={class:"admin-donut-widget__legend"},lV={class:"admin-donut-widget__label"},dV={class:"admin-donut-widget__value"},P9=e.defineComponent({__name:"DonutChartWidget",props:{title:{default:""},data:{}},setup(a){const n=a,o=["var(--uid-color-teal-500, #14b8a6)","var(--uid-color-zinc-700, #3f3f46)","var(--uid-color-amber-400, #fbbf24)","var(--uid-color-rose-400, #fb7185)","var(--uid-color-blue-400, #60a5fa)"],r=e.computed(()=>n.data.length===0||n.data.every(d=>!d.value)),l=e.computed(()=>n.data.reduce((d,i)=>d+i.value,0)||1),c=e.computed(()=>{let d=0;return n.data.map((i,s)=>{const h=d/l.value*2*Math.PI;d+=i.value;const y=d/l.value*2*Math.PI,m=50,v=60,M=60,f=v+m*Math.cos(h-Math.PI/2),g=M+m*Math.sin(h-Math.PI/2),k=v+m*Math.cos(y-Math.PI/2),w=M+m*Math.sin(y-Math.PI/2),D=y-h>Math.PI?1:0,z=n.data.length===1?`M ${v-m} ${M} a ${m} ${m} 0 1 0 ${m*2} 0 a ${m} ${m} 0 1 0 ${-m*2} 0`:`M ${v} ${M} L ${f} ${g} A ${m} ${m} 0 ${D} 1 ${k} ${w} Z`;return{...i,path:z,color:i.color??o[s%o.length],pct:(i.value/l.value*100).toFixed(1)}})});return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-donut-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",tV,[e.createElementVNode("h3",aV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",nV,e.toDisplayString(e.unref(p.trSafe)("Нет данных")),1)):(e.openBlock(),e.createElementBlock("div",oV,[(e.openBlock(),e.createElementBlock("svg",{viewBox:"0 0 120 120",class:"admin-donut-widget__svg",role:"img","aria-label":a.title},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(s,h)=>(e.openBlock(),e.createElementBlock("path",{key:h,d:s.path,fill:s.color},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value)+" ("+e.toDisplayString(s.pct)+"%)",1)],8,rV))),128)),i[0]||(i[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,cV)),e.createElementVNode("ul",iV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(s,h)=>(e.openBlock(),e.createElementBlock("li",{key:h},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("span",lV,e.toDisplayString(s.label),1),e.createElementVNode("span",dV,e.toDisplayString(s.pct)+"%",1)]))),128))])]))]),_:1}))}}),sV={key:0,class:"admin-widget__hd"},uV={class:"admin-widget__title"},hV=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{default:()=>[]},rows:{default:()=>[]},emptyText:{default:"Нет данных"},linkTo:{default:null}},setup(a){const n=a,o=re.useRouter();function r(d){const i=d.id;!n.linkTo||i===void 0||i===null||o?.push(`/r/${n.linkTo}/${i}`)}const l=e.computed(()=>n.columns.map(d=>{const i=d.column??d.key;return{key:String(i??""),label:d.label,align:d.align}})),c=e.computed(()=>n.rows.map(d=>{const i={...d};for(const s of l.value)i[s.key]=pc(d[s.key],void 0,{});return i}));return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",sV,[e.createElementVNode("h3",uV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidTable),{columns:l.value,data:c.value,"empty-text":e.unref(p.trSafe)(a.emptyText),class:e.normalizeClass({"admin-widget__table--clickable":!!a.linkTo}),onRowClick:r},null,8,["columns","data","empty-text","class"])]),_:1}))}}),UM=be(hV,[["__scopeId","data-v-fbaa3502"]]),yV={key:0,class:"admin-widget__hd"},pV={class:"admin-widget__title"},kV={class:"admin-heatmap__cols-axis","aria-hidden":"true"},mV={class:"admin-heatmap__row-label"},fV={class:"admin-heatmap__cells"},vV=["title"],gV={key:2,class:"admin-heatmap__empty"},OI=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},rows:{default:()=>[]},cols:{default:()=>[]},matrix:{default:()=>[]},formatValue:{type:Function,default:void 0},color:{default:"var(--uid-color-primary, #14b8a6)"}},setup(a){const n=a,o=e.computed(()=>{let c=0;for(const d of n.matrix)for(const i of d)typeof i=="number"&&i>c&&(c=i);return c||1});function r(c){return typeof c!="number"||c<=0?0:Math.max(.1,Math.min(1,c/o.value))}function l(c,d,i){const s=n.rows[d]??"",h=n.cols[i]??"";return n.formatValue?n.formatValue(c,s,h):`${s} ${h}: ${c}`}return(c,d)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-heatmap-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",yV,[e.createElementVNode("h3",pV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.rows.length>0&&a.cols.length>0&&a.matrix.length>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"admin-heatmap",style:e.normalizeStyle({"--admin-heatmap-cols":a.cols.length})},[e.createElementVNode("div",kV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.cols,(i,s)=>(e.openBlock(),e.createElementBlock("span",{key:`c-${s}`,class:"admin-heatmap__col-label"},e.toDisplayString(s%3===0?i:""),1))),128))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.matrix,(i,s)=>(e.openBlock(),e.createElementBlock("div",{key:`r-${s}`,class:"admin-heatmap__row"},[e.createElementVNode("span",mV,e.toDisplayString(a.rows[s]??""),1),e.createElementVNode("div",fV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i,(h,y)=>(e.openBlock(),e.createElementBlock("span",{key:`cell-${s}-${y}`,class:"admin-heatmap__cell",style:e.normalizeStyle({background:a.color,opacity:r(h)}),title:l(h,s,y)},null,12,vV))),128))])]))),128))],4)):(e.openBlock(),e.createElementBlock("div",gV,e.toDisplayString(e.unref(p.trSafe)("Нет данных")),1))]),_:1}))}}),MV={key:0,class:"admin-widget__hd"},IV={class:"admin-widget__title"},wV={class:"admin-gauge-widget__body"},ZI=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:220},ranges:{default:()=>[]},thresholds:{default:()=>[]},unit:{default:""},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(a){const n=a,o={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},r=e.computed(()=>o[n.tone]),l=e.computed(()=>n.ranges.length>0?n.ranges:n.thresholds),c=e.computed(()=>n.suffix||n.unit||"");return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",MV,[e.createElementVNode("h3",IV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",wV,[e.createVNode(e.unref(u.UidGauge),{value:a.value,min:a.min,max:a.max,size:a.size,ranges:l.value,tone:r.value,color:a.color,label:a.label,suffix:c.value,precision:a.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),xV={key:0,class:"admin-widget__hd"},CV={class:"admin-widget__title"},LV={class:"admin-markdown-widget"},WI=e.defineComponent({__name:"MarkdownWidget",props:{title:{default:""},content:{}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",xV,[e.createElementVNode("h3",CV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",LV,e.toDisplayString(a.content),1)]),_:1}))}}),bV=e.defineComponent({__name:"ChartWidget",props:{type:{},title:{},size:{},data:{}},setup(a){const n=a,o=e.computed(()=>n.data?.chartType??n.data?.type??"bar"),r=["#10b981","#f59e0b","#9ca3af","#3b82f6","#dc2626","#a855f7","#ec4899"],l=e.computed(()=>{const i=n.data?.datasets?.[0];return i?i.data.map((s,h)=>({label:n.data?.labels?.[h]??String(h+1),value:s})):[]}),c=e.computed(()=>n.data?.datasets?.[0]?.color),d=e.computed(()=>{const i=n.data?.datasets?.[0];return i?i.data.map((s,h)=>({label:n.data?.labels?.[h]??String(h+1),value:s,color:i.color??r[h%r.length]})):[]});return(i,s)=>o.value==="doughnut"||o.value==="pie"?(e.openBlock(),e.createBlock(P9,{key:0,title:a.title,data:d.value},null,8,["title","data"])):o.value==="bar"||o.value==="line"||o.value==="area"?(e.openBlock(),e.createBlock(F9,{key:1,title:a.title,data:l.value,accent:c.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(b9,{key:2,type:`chart:${o.value}`},null,8,["type"]))}}),SV={key:0,class:"admin-widget__hd"},_V={class:"admin-widget__title"},BV=e.defineComponent({__name:"TableWidget",props:{title:{default:""},columns:{default:()=>[]},rows:{default:()=>[]},emptyText:{default:"Нет данных"}},setup(a){const n=a,o=e.computed(()=>n.columns.map(l=>({key:l.name,label:l.label,align:l.align,width:l.width??void 0}))),r=e.computed(()=>n.rows.map(l=>{const c={...l};for(const d of n.columns)c[d.name]=pc(l[d.name],d.preset??void 0,d.meta??{});return c}));return(l,c)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",SV,[e.createElementVNode("h3",_V,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidTable),{columns:o.value,data:r.value,"empty-text":e.unref(p.trSafe)(a.emptyText)},null,8,["columns","data","empty-text"])]),_:1}))}}),VV={key:0,class:"admin-widget__hd"},qV={class:"admin-widget__title"},AV=["src","sandbox"],zV={key:2,class:"admin-widget__empty"},DV=e.defineComponent({__name:"IframeWidget",props:{title:{default:""},src:{default:""},height:{default:null},sandbox:{default:"allow-scripts allow-same-origin"}},setup(a){const n=a,o=e.computed(()=>({height:n.height?`${n.height}px`:"320px"}));return(r,l)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-widget--iframe"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",VV,[e.createElementVNode("h3",qV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.src?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:a.src,sandbox:a.sandbox,style:e.normalizeStyle(o.value),class:"admin-widget__iframe",loading:"lazy",referrerpolicy:"no-referrer"},null,12,AV)):(e.openBlock(),e.createElementBlock("p",zV,e.toDisplayString(e.unref(p.trSafe)("Не задан src")),1))]),_:1}))}}),EV=be(DV,[["__scopeId","data-v-ff47a97f"]]);function GI(){(n=>{for(const[o,r]of Object.entries(n))kI(o)||yI(o,r)})({stat:g9,stats:g9,chart:bV,"bar-chart":F9,"donut-chart":P9,"recent-table":UM,recent_list:UM,"recent-list":UM,heatmap:OI,gauge:ZI,markdown:WI,table:BV,iframe:EV})}function KI(a){return a.success===!0}function NV(a){return a.success===!1}function XI(a){const n=Cw.create({baseURL:a.baseURL,withCredentials:!0,headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});a.csrfToken&&(n.defaults.headers.common["X-CSRF-TOKEN"]=a.csrfToken),a.locale&&(n.defaults.headers.common["X-Admin-Locale"]=a.locale),n.interceptors.request.use(l=>{const c=HV("XSRF-TOKEN");return c&&(l.headers.set("X-XSRF-TOKEN",decodeURIComponent(c)),l.headers.delete("X-CSRF-TOKEN")),l}),n.interceptors.response.use(l=>{const c=l.data;if(c&&typeof c=="object"&&"success"in c){if(KI(c))return l.data=c.payload,l;throw h9(l.status,c.payload)}return l},l=>{if(l.response){const c=l.response.status,d=l.response.data?.payload??{errorKey:"unknown",message:l.message},i=h9(c,d);return i instanceof x9&&a.onUnauthenticated?.(),Promise.reject(i)}return Promise.reject(new uc(l.message))});const o=(l,c,d)=>n[l](c,d).then(i=>i.data),r=(l,c,d,i)=>n[l](c,d,i).then(s=>s.data);return{raw:n,get:(l,c)=>o("get",l,c),delete:(l,c)=>o("delete",l,c),post:(l,c,d)=>r("post",l,c,d),put:(l,c,d)=>r("put",l,c,d),patch:(l,c,d)=>r("patch",l,c,d),setLocale:l=>{n.defaults.headers.common["X-Admin-Locale"]=l},clearLocale:()=>{delete n.defaults.headers.common["X-Admin-Locale"]}}}function HV(a){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+FV(a)+"=([^;]*)"));return n?n[2]:null}function FV(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wc(a,n){const o=a.permissions?.[n];return typeof o=="string"&&o.length>0?[o]:[]}function PV(a,n){const o=a.permissions?.[n];return typeof o=="string"&&o.length>0?[o]:[]}function TV(a){return Array.isArray(a.permission)?a.permission:typeof a.permission=="string"&&a.permission.length>0?[a.permission]:[]}function jV(a,n){const o=a.slug,r=`/r/${o}`;return[{path:r,name:`admin.resource.${o}.index`,component:n.resourceIndex,meta:{requiresAuth:!0,kind:"resource",slug:o,title:a.label,permissions:wc(a,"view")},props:{slug:o}},{path:`${r}/create`,name:`admin.resource.${o}.create`,component:n.resourceCreate,meta:{requiresAuth:!0,kind:"resource",slug:o,title:`${a.label}: создать`,permissions:wc(a,"create")},props:{slug:o}},{path:`${r}/:id/edit`,name:`admin.resource.${o}.edit`,component:n.resourceEdit,meta:{requiresAuth:!0,kind:"resource",slug:o,title:`${a.label}: редактирование`,permissions:wc(a,"update")},props:l=>({slug:o,id:l.params.id})},{path:`${r}/:id`,name:`admin.resource.${o}.view`,component:n.resourceView,meta:{requiresAuth:!0,kind:"resource",slug:o,title:a.label,permissions:wc(a,"view")},props:l=>({slug:o,id:l.params.id})}]}function UV(a,n){return{path:`/screens/${a.slug}`,name:`admin.screen.${a.slug}`,component:n.screen,meta:{requiresAuth:!0,kind:"screen",slug:a.slug,title:a.name,permissions:TV(a)}}}function RV(a,n){return{path:`/settings/${a.slug}`,name:`admin.settings.${a.slug}`,component:n.settings,meta:{requiresAuth:!0,kind:"settings",slug:a.slug,title:a.label,permissions:PV(a,"view")}}}function $V(a,n){if(typeof a.slug!="string"||a.slug.length===0)return null;const o=a.permission,r=Array.isArray(o)?o:typeof o=="string"&&o.length>0?[o]:[];return{path:`/dashboard/${a.slug}`,name:`admin.dashboard.${a.slug}`,component:n.dashboard,meta:{requiresAuth:!0,kind:"dashboard",slug:a.slug,title:a.label??"Dashboard",permissions:r}}}function JI(a,n){if(a===null)return[];const o=[];for(const r of a.resources)o.push(...jV(r,n));for(const r of a.screens)o.push(UV(r,n));for(const r of a.settings)o.push(RV(r,n));for(const r of a.dashboards){const l=$V(r,n);l&&o.push(l)}return o}function YI(a={}){const n=a.loginRouteName??"admin.login",o=a.forbiddenRouteName??"admin.forbidden",r=a.redirectQueryKey??"redirect";return l=>{if(l.name===n)return!0;const c=ge();if(l.meta?.requiresAuth===!0&&!c.isAuthenticated)return{name:n,query:{[r]:l.fullPath}};if(c.isChallengePending)return{name:n,query:{[r]:l.fullPath}};const i=l.meta?.permissions;return Array.isArray(i)&&i.length>0&&!c.hasAnyPermission(i)?{name:o}:!0}}function QI(a={}){const n=a.template,o=a.brand??"",r=a.fallback??"";return l=>{if(typeof document>"u")return;const c=p.trSafe(l.meta?.title??r);let d;n?d=n.replace("{title}",c).replace("{brand}",o):c&&o?d=`${c} · ${o}`:d=c||o,document.title=d}}const OV=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function ZV(a){return typeof a!="string"?!1:OV.some(n=>a.startsWith(n))}function ew(a){const n=a.base??"/admin",o=a.history??re.createWebHistory(n),r=[{path:"/login",name:"admin.login",component:a.components.login,meta:{kind:"auth",title:"Вход"}},{path:"/",name:"admin.home",component:a.components.home,meta:{requiresAuth:!0,kind:"system",title:"Главная"}},{path:"/forbidden",name:"admin.forbidden",component:a.components.forbidden,meta:{requiresAuth:!0,kind:"system",title:"403 — доступ запрещён"}}];a.components.profile&&r.push({path:"/profile",name:"admin.profile",component:a.components.profile,meta:{requiresAuth:!0,kind:"system",title:"Профиль"}}),a.components.notifications&&r.push({path:"/notifications",name:"admin.notifications",component:a.components.notifications,meta:{requiresAuth:!0,kind:"system",title:"Уведомления"}}),a.components.forgotPassword&&r.push({path:"/forgot-password",name:"admin.forgotPassword",component:a.components.forgotPassword,meta:{kind:"auth",title:"Восстановление пароля"}}),a.components.resetPassword&&r.push({path:"/reset-password",name:"admin.resetPassword",component:a.components.resetPassword,meta:{kind:"auth",title:"Новый пароль"}});const l={path:"/:pathMatch(.*)*",name:"admin.notFound",component:a.components.notFound,meta:{kind:"system",title:"404",requiresAuth:!0}},c=re.createRouter({history:o,routes:[...r,...a.extraRoutes??[],l]});return c.beforeEach(YI(a.authGuard)),c.afterEach(QI(a.titleGuard)),c.replaceManifestRoutes=d=>{const i=c.getRoutes();for(const h of i)ZV(h.name)&&c.removeRoute(h.name);c.hasRoute("admin.notFound")&&c.removeRoute("admin.notFound");const s=JI(d,a.components);for(const h of s)c.addRoute(h);c.addRoute(l)},c}const Ae=e.defineComponent({__name:"TextField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},inputType:{default:"text"},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},autocomplete:{default:null}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidInput),{"model-value":r.value,type:a.inputType,label:a.label??void 0,hint:a.help??void 0,error:l.value,placeholder:a.placeholder??void 0,required:a.required,disabled:a.disabled,readonly:a.readonly,name:a.name,autocomplete:a.autocomplete??void 0,"onUpdate:modelValue":c},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),RM=e.defineComponent({__name:"TextAreaField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},rows:{default:4},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTextarea),{"model-value":r.value,rows:a.rows,placeholder:a.placeholder??void 0,disabled:a.disabled,readonly:a.readonly,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),$M=e.defineComponent({__name:"NumberField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},min:{default:null},max:{default:null},step:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const d=o.getField(n.name);return d==null||d===""?null:typeof d=="number"?d:Number(d)}),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidNumberInput),{"model-value":r.value,min:a.min??void 0,max:a.max??void 0,step:a.step??void 0,placeholder:a.placeholder??void 0,disabled:a.disabled,readonly:a.readonly,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),xe=e.defineComponent({__name:"SelectField",props:{name:{},options:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(a){const n=a,o=e.computed(()=>n.disabled||n.readonly),r=de.useFormState(),l=e.computed(()=>{const i=r.getField(n.name);return i==null||i===""?null:i}),c=e.computed(()=>r.errors[n.name]?.[0]);function d(i){r.setField(n.name,i)}return(i,s)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:c.value,required:a.required,disabled:o.value},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidSelect),{"model-value":l.value,options:a.options,placeholder:a.placeholder??void 0,disabled:o.value,searchable:a.searchable,clearable:a.clearable,size:a.size,"onUpdate:modelValue":d},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ao=e.defineComponent({__name:"CheckboxField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inlineLabel:{default:null},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>!!o.getField(n.name)),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{hint:a.help??void 0,error:l.value,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidCheckbox),{"model-value":r.value,disabled:a.disabled,required:a.required,name:a.name,label:a.inlineLabel??a.label??void 0,"onUpdate:modelValue":c},null,8,["model-value","disabled","required","name","label"])]),_:1},8,["hint","error","disabled"]))}}),Pe=e.defineComponent({__name:"DateField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inputType:{default:"date"},min:{default:null},max:{default:null},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const d=o.getField(n.name);return d==null||d===""?null:String(d)}),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidDatePicker),{"model-value":r.value,min:a.min??void 0,max:a.max??void 0,disabled:a.disabled,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),WV={key:0,class:"admin-field__label"},GV={key:0,class:"admin-field__required","aria-hidden":"true"},KV={class:"admin-tags__chip-text"},XV=["aria-label","onClick"],JV=["value","placeholder","disabled"],YV={class:"admin-tags__group-label"},QV=["aria-selected","onMousedown","onMouseenter"],eq=["aria-selected","onMousedown","onMouseenter"],tq={key:1,class:"admin-field__error"},aq={key:2,class:"admin-field__help"},nq=e.defineComponent({__name:"TagsField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:"Введите ключ и нажмите Enter…"},suggestions:{default:()=>[]},suggestionsByGroup:{default:()=>[]},maxItems:{default:0},separator:{default:","},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const N=o.getField(n.name);return Array.isArray(N)?N.map(T=>String(T)):typeof N=="string"&&N!==""?N.split(",").map(T=>T.trim()).filter(Boolean):[]}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(""),d=e.ref(!1),i=e.ref(null),s=e.ref(null),h=e.ref(null),{floatingStyle:y,update:m}=u.usePopover(s,h,{placement:"bottom-start",offset:4}),v=e.ref(0);function M(){v.value=s.value?.getBoundingClientRect().width??0}const f=e.computed(()=>({...y.value,minWidth:v.value>0?`${v.value}px`:"auto"}));function g(N){const T=new Set,V=[];for(const I of N){const _=I.trim();if(!(_===""||T.has(_))&&(T.add(_),V.push(_),n.maxItems>0&&V.length>=n.maxItems))break}o.setField(n.name,V)}function k(N){const T=N.trim();if(T!==""){if(r.value.includes(T)){c.value="";return}g([...r.value,T]),c.value=""}}function w(N){const T=[...r.value];T.splice(N,1),g(T)}function D(N){N.key==="Enter"?(N.preventDefault(),B.value>=0&&S.value[B.value]?k(S.value[B.value]):c.value.trim()!==""&&k(c.value)):N.key==="Backspace"&&c.value===""&&r.value.length>0?w(r.value.length-1):N.key==="ArrowDown"?(N.preventDefault(),B.value=Math.min(B.value+1,S.value.length-1)):N.key==="ArrowUp"?(N.preventDefault(),B.value=Math.max(B.value-1,-1)):N.key==="Escape"&&(d.value=!1,i.value?.blur())}function z(N){const T=N.target.value;if(n.separator&&T.includes(n.separator)){const V=T.split(n.separator);V.slice(0,-1).map(_=>_.trim()).filter(Boolean).forEach(k),c.value=V[V.length-1]??"";return}c.value=T}const B=e.ref(-1),b=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),L=e.computed(()=>{const N=c.value.trim().toLowerCase(),T=new Set(r.value);return b.value?n.suggestionsByGroup.map(V=>({label:V.label,items:V.items.filter(I=>!T.has(I)&&(N===""||I.toLowerCase().includes(N)))})).filter(V=>V.items.length>0):[]}),S=e.computed(()=>{if(b.value)return L.value.flatMap(V=>V.items);const N=c.value.trim().toLowerCase(),T=new Set(r.value);return n.suggestions.filter(V=>!T.has(V)).filter(V=>N===""||V.toLowerCase().includes(N)).slice(0,200)});function C(N){return N===B.value}e.watch(c,()=>{B.value=-1});function A(){n.disabled||i.value?.focus()}function H(N){k(N),e.nextTick(()=>i.value?.focus())}function R(){window.setTimeout(()=>{d.value=!1,c.value.trim()!==""&&k(c.value)},120)}return e.watch(()=>d.value&&S.value.length>0,async N=>{N?(M(),await e.nextTick(),m(),requestAnimationFrame(()=>m()),window.addEventListener("resize",m),window.addEventListener("scroll",m,!0)):(window.removeEventListener("resize",m),window.removeEventListener("scroll",m,!0))}),(N,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":l.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",WV,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",GV,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:s,class:e.normalizeClass(["admin-field__control admin-tags",{"admin-tags--focused":d.value,"admin-tags--disabled":a.disabled}]),onClick:A},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(V,I)=>(e.openBlock(),e.createElementBlock("span",{key:`${V}-${I}`,class:"admin-tags__chip"},[e.createElementVNode("span",KV,e.toDisplayString(V),1),a.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-tags__chip-remove","aria-label":e.unref(p.trSafe)("Удалить"),onClick:e.withModifiers(_=>w(I),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:10},null,8,["icon"])],8,XV))]))),128)),e.createElementVNode("input",{ref_key:"inputRef",ref:i,value:c.value,placeholder:r.value.length===0?e.unref(p.trSafe)(a.placeholder??""):"",disabled:a.disabled,class:"admin-tags__input",type:"text",onInput:z,onKeydown:D,onFocus:T[0]||(T[0]=V=>d.value=!0),onBlur:R},null,40,JV),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.value&&S.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:h,class:"admin-tags__dropdown",role:"listbox",style:e.normalizeStyle(f.value)},[b.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(L.value,(V,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${I}-${V.label}`},[e.createElementVNode("div",YV,e.toDisplayString(V.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.items,_=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":C(S.value.indexOf(_))}]),"aria-selected":C(S.value.indexOf(_)),onMousedown:e.withModifiers(x=>H(_),["prevent"]),onMouseenter:x=>B.value=S.value.indexOf(_)},e.toDisplayString(_),43,QV))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(S.value,(V,I)=>(e.openBlock(),e.createElementBlock("button",{key:V,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":I===B.value}]),"aria-selected":I===B.value,onMousedown:e.withModifiers(_=>H(V),["prevent"]),onMouseenter:_=>B.value=I},e.toDisplayString(V),43,eq))),128))],4)):e.createCommentVNode("",!0)]))],2),l.value?(e.openBlock(),e.createElementBlock("p",tq,e.toDisplayString(l.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",aq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),oq={key:0,class:"admin-field__label"},cq={key:0,class:"admin-field__required","aria-hidden":"true"},rq={class:"admin-translatable"},iq={class:"admin-translatable__tabs",role:"tablist"},lq=["aria-selected","onClick"],dq={key:0,class:"admin-translatable__dot","aria-hidden":"true"},sq={class:"admin-translatable__panel"},uq=["value","placeholder","rows","disabled"],hq={key:1,class:"admin-field__error"},yq={key:2,class:"admin-field__help"},J9=e.defineComponent({__name:"TranslatableField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},locales:{default:void 0},multiline:{type:Boolean,default:!1},rows:{default:3},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=Qe(),l=e.computed(()=>n.locales??r.available??[r.current??"ru"]),c=e.ref(r.current??l.value[0]??"ru"),d=e.computed(()=>{const y=o.getField(n.name);return y&&typeof y=="object"&&!Array.isArray(y)?y:typeof y=="string"?{[c.value]:y}:{}});function i(y,m){const v={...d.value};v[y]=m,o.setField(n.name,v)}const s=e.computed(()=>{const y=o.errors[n.name];if(y?.[0])return y[0];for(const m of l.value){const v=o.errors[`${n.name}.${m}`]?.[0];if(v)return`[${m}] ${v}`}});function h(y){const m=d.value[y];return typeof m=="string"&&m.trim()!==""}return(y,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":s.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",oq,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",cq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",rq,[e.createElementVNode("div",iq,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,v=>(e.openBlock(),e.createElementBlock("button",{key:v,type:"button",role:"tab",class:e.normalizeClass(["admin-translatable__tab",{"admin-translatable__tab--active":c.value===v,"admin-translatable__tab--filled":h(v)}]),"aria-selected":c.value===v,onClick:M=>c.value=v},[e.createTextVNode(e.toDisplayString(v.toUpperCase())+" ",1),h(v)?(e.openBlock(),e.createElementBlock("span",dq)):e.createCommentVNode("",!0)],10,lq))),128))]),e.createElementVNode("div",sq,[a.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,value:d.value[c.value]??"",placeholder:a.placeholder??"",rows:a.rows,disabled:a.disabled,class:"admin-translatable__textarea",onInput:m[1]||(m[1]=v=>i(c.value,v.target.value))},null,40,uq)):(e.openBlock(),e.createBlock(e.unref(u.UidInput),{key:0,"model-value":d.value[c.value]??"",placeholder:a.placeholder??"",disabled:a.disabled,"onUpdate:modelValue":m[0]||(m[0]=v=>i(c.value,v))},null,8,["model-value","placeholder","disabled"]))])]),s.value?(e.openBlock(),e.createElementBlock("p",hq,e.toDisplayString(s.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",yq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),pq={key:0,class:"admin-field__label"},kq={key:0,class:"admin-field__required","aria-hidden":"true"},mq=["onMousedown"],fq={key:1,class:"admin-field__error"},vq={key:2,class:"admin-field__help"},gq=e.defineComponent({__name:"WysiwygField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},minHeight:{default:"200px"},maxHeight:{default:void 0}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(V){o.setField(n.name,V)}const d=e.ref(null),i=e.ref(null),s=e.ref(null);function h(V){d.value=V,L(V.host)}function y(){i.value?.click()}async function m(V){const I=V.target.files?.[0];if(V.target.value="",!(!I||!d.value))try{const _=new FormData;_.append("file",I);const x=await ne().post("/uploads/image",_,{headers:{"Content-Type":"multipart/form-data"}});d.value.chain().setImage(x.url,x.name).run()}catch(_){typeof console<"u"&&console.error("[admin] image upload failed:",_),Q.error(p.trSafe("Не удалось загрузить изображение."))}}function v(V){if(!d.value)return;const I=window.prompt(p.trSafe("URL ссылки (пусто — удалить ссылку):"),V??"");I!==null&&d.value.chain().setLink(I.trim()===""?null:I.trim()).run()}const M=e.ref(null),f=e.ref(null),g=e.ref(null);let k=null,w=[];function D(){k?.dispatchEvent(new Event("input",{bubbles:!0}))}function z(){if(!M.value||!s.value){f.value=null;return}const V=M.value.getBoundingClientRect(),I=s.value.getBoundingClientRect();f.value={x:V.left-I.left+s.value.scrollLeft,y:V.top-I.top+s.value.scrollTop,w:V.width,h:V.height}}function B(V){M.value!==V&&(M.value&&M.value.classList.remove("admin-wysiwyg-img--selected"),M.value=V,V.classList.add("admin-wysiwyg-img--selected"),V.setAttribute("draggable","true"),z())}function b(){M.value&&(M.value.classList.remove("admin-wysiwyg-img--selected"),M.value.removeAttribute("draggable")),M.value=null,f.value=null}function L(V){k=V;const I=J=>{const X=J.target?.closest("img");X&&k?.contains(X)?B(X):b()};k.addEventListener("click",I),w.push(()=>k?.removeEventListener("click",I));const _=J=>{const ee=J.target;s.value&&!s.value.contains(ee)&&b()};document.addEventListener("click",_),w.push(()=>document.removeEventListener("click",_));const x=()=>z();window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),w.push(()=>window.removeEventListener("scroll",x,!0)),w.push(()=>window.removeEventListener("resize",x));const E=J=>{const ee=J.target;if(!ee||!k?.contains(ee)||ee.tagName!=="IMG")return;B(ee),J.dataTransfer?.setData("text/plain","img"),J.dataTransfer&&(J.dataTransfer.effectAllowed="move")};k.addEventListener("dragstart",E),w.push(()=>k?.removeEventListener("dragstart",E));const $=J=>{if(!M.value)return;J.preventDefault(),J.dataTransfer&&(J.dataTransfer.dropEffect="move");const ee=S(J.clientX,J.clientY);if(ee&&s.value){const X=ee.getBoundingClientRect(),ie=s.value.getBoundingClientRect(),Ie=(J.clientY<X.top+X.height/2?X.top:X.bottom)-ie.top+s.value.scrollTop;g.value={x:X.left-ie.left+s.value.scrollLeft,y:Ie,w:X.width}}};k.addEventListener("dragover",$),w.push(()=>k?.removeEventListener("dragover",$));const Y=J=>{if(!M.value||!k)return;J.preventDefault(),g.value=null;const ee=S(J.clientX,J.clientY);if(!ee||ee.contains(M.value))return;const X=ee.getBoundingClientRect(),ie=J.clientY<X.top+X.height/2,le=M.value;le.remove(),ie?ee.parentNode?.insertBefore(le,ee):ee.parentNode?.insertBefore(le,ee.nextSibling),z(),D()};k.addEventListener("drop",Y),w.push(()=>k?.removeEventListener("drop",Y));const G=()=>{g.value=null};k.addEventListener("dragend",G),w.push(()=>k?.removeEventListener("dragend",G));const oe=new MutationObserver(()=>{M.value&&!k?.contains(M.value)?b():z()});oe.observe(k,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","style","width","height"]}),w.push(()=>oe.disconnect())}function S(V,I){if(!k)return null;const _=M.value?.style.pointerEvents??"";M.value&&(M.value.style.pointerEvents="none");const x=document.elementFromPoint(V,I);if(M.value&&(M.value.style.pointerEvents=_),!x||!k.contains(x))return null;let E=x;for(;E&&E.parentElement&&E.parentElement!==k;)E=E.parentElement;return E&&E.parentElement===k?E:null}const C=e.ref(null);let A=null;function H(V,I){if(!M.value)return;I.preventDefault(),I.stopPropagation(),C.value=V;const x=M.value.getBoundingClientRect();A={mx:I.clientX,my:I.clientY,w:x.width,h:x.height,aspect:x.width/Math.max(1,x.height)},window.addEventListener("mousemove",R),window.addEventListener("mouseup",N)}function R(V){if(!C.value||!A||!M.value)return;const I=V.clientX-A.mx,_=V.clientY-A.my,x=C.value==="nw"||C.value==="sw"?-1:1,E=C.value==="nw"||C.value==="ne"?-1:1;let $=Math.max(24,A.w+I*x),Y=Math.max(24,A.h+_*E);V.shiftKey||(Math.abs(I*x)>=Math.abs(_*E)?Y=$/A.aspect:$=Y*A.aspect),M.value.style.width=Math.round($)+"px",M.value.style.height=Math.round(Y)+"px",z()}function N(){C.value&&(C.value=null,A=null,window.removeEventListener("mousemove",R),window.removeEventListener("mouseup",N),D())}function T(V,I){let E=I.x,$=I.y;return V==="nw"&&(E=I.x-5,$=I.y-5),V==="ne"&&(E=I.x+I.w-5,$=I.y-5),V==="sw"&&(E=I.x-5,$=I.y+I.h-5),V==="se"&&(E=I.x+I.w-5,$=I.y+I.h-5),{left:E+"px",top:$+"px",width:"10px",height:"10px"}}return e.onBeforeUnmount(()=>{w.forEach(V=>V()),w=[],b()}),e.watch(r,()=>{M.value&&k&&!k.contains(M.value)&&b()}),(V,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":l.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",pq,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",kq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:s,class:"admin-field__control admin-wysiwyg-wrap"},[e.createVNode(e.unref(Lw.DskWysiwyg),{"model-value":r.value,placeholder:a.placeholder??void 0,readonly:a.disabled,"min-height":a.minHeight,"max-height":a.maxHeight,onReady:h,onImageRequest:y,onLinkRequest:v,"onUpdate:modelValue":c},null,8,["model-value","placeholder","readonly","min-height","max-height"]),e.createElementVNode("input",{ref_key:"fileInput",ref:i,type:"file",accept:"image/*",class:"admin-wysiwyg__file-input",onChange:m},null,544),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(["nw","ne","sw","se"],_=>e.createElementVNode("div",{key:_,class:e.normalizeClass(["admin-wysiwyg-img__handle",`admin-wysiwyg-img__handle--${_}`]),style:e.normalizeStyle(T(_,f.value)),onMousedown:x=>H(_,x)},null,46,mq)),64)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"admin-wysiwyg-img__dropline",style:e.normalizeStyle({left:g.value.x+"px",top:g.value.y+"px",width:g.value.w+"px"})},null,4)):e.createCommentVNode("",!0)],512),l.value?(e.openBlock(),e.createElementBlock("p",fq,e.toDisplayString(l.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",vq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),Mq=be(gq,[["__scopeId","data-v-e1cee25f"]]),Iq={class:"admin-file-field"},wq={key:0,class:"admin-file-field__label"},xq={key:0,class:"admin-file-field__required"},Cq={key:1},Lq={class:"admin-file-field__hint"},bq=["accept"],Sq={key:2,class:"admin-file-field__preview"},_q={class:"admin-file-field__preview-info"},Bq=["href"],Vq={class:"admin-file-field__preview-meta"},qq={key:3,class:"admin-file-field__help"},Aq={key:4,class:"admin-file-field__error"},zq=e.defineComponent({__name:"FileField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},accept:{default:null},maxSize:{default:null},image:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const M=o.getField(n.name);return M&&typeof M=="object"&&"url"in M?M:null}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(null),d=e.ref(!1),i=e.ref(!1);function s(){c.value?.click()}async function h(M){const f=M.target.files?.[0];f&&await m(f),M.target.value=""}async function y(M){M.preventDefault(),i.value=!1;const f=M.dataTransfer?.files?.[0];f&&await m(f)}async function m(M){if(n.maxSize!==null&&M.size>n.maxSize*1024){Q.error(`Файл больше ${n.maxSize} KB.`);return}d.value=!0;try{const f=new FormData;f.append("file",M);const g=n.image?"/uploads/image":"/uploads/upload",k=await ne().post(g,f,{headers:{"Content-Type":"multipart/form-data"}});o.setField(n.name,k)}catch(f){typeof console<"u"&&console.error("[admin] upload failed:",f),Q.error(p.trSafe("Не удалось загрузить файл."))}finally{d.value=!1}}function v(){o.setField(n.name,null)}return(M,f)=>(e.openBlock(),e.createElementBlock("div",Iq,[a.label?(e.openBlock(),e.createElementBlock("label",wq,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",xq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Sq,[e.createElementVNode("div",_q,[e.createElementVNode("a",{href:r.value.url,target:"_blank",rel:"noopener"},e.toDisplayString(r.value.name),9,Bq),e.createElementVNode("span",Vq,e.toDisplayString(r.value.mime),1)]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),f[2]||(f[2]=e.createTextVNode(" Удалить ",-1))]),_:1})])):(e.openBlock(),e.createElementBlock("div",Cq,[e.createElementVNode("div",{class:e.normalizeClass(["admin-file-field__drop",{"admin-file-field__drop--over":i.value}]),onClick:s,onDragover:f[0]||(f[0]=e.withModifiers(g=>i.value=!0,["prevent"])),onDragleave:f[1]||(f[1]=g=>i.value=!1),onDrop:y},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Cn),size:24},null,8,["icon"]),e.createElementVNode("p",Lq,e.toDisplayString(d.value?e.unref(p.trSafe)("Загрузка…"):e.unref(p.trSafe)("Кликните или перетащите файл сюда")),1)],34),e.createElementVNode("input",{ref_key:"fileInput",ref:c,type:"file",accept:a.accept??void 0,class:"admin-file-field__input",onChange:h},null,40,bq)])),a.help&&!l.value?(e.openBlock(),e.createElementBlock("p",qq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("p",Aq,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)]))}}),Y9=be(zq,[["__scopeId","data-v-7aaddf6d"]]),Dq={class:"admin-image-cropper"},Eq={key:0,class:"admin-image-cropper__label"},Nq={key:0,class:"admin-image-cropper__required"},Hq={key:1},Fq={class:"admin-image-cropper__hint"},Pq={key:0,class:"admin-image-cropper__hint-sub"},Tq=["accept"],jq={key:2,class:"admin-image-cropper__crop"},Uq=["src","width","height"],Rq={class:"admin-image-cropper__actions"},$q={key:3,class:"admin-image-cropper__preview"},Oq=["src","alt"],Zq={class:"admin-image-cropper__preview-info"},Wq={class:"admin-image-cropper__preview-name"},Gq={class:"admin-image-cropper__preview-meta"},Kq={class:"admin-image-cropper__preview-actions"},Xq={key:4,class:"admin-image-cropper__help"},Jq={key:5,class:"admin-image-cropper__error"},Yq=500,Qq=400,eA=e.defineComponent({__name:"ImageCropperField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},accept:{default:null},maxSize:{default:null},aspectRatio:{default:null},outputWidth:{default:null},outputHeight:{default:null},minCropWidth:{default:32},minCropHeight:{default:32},quality:{default:.92}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const V=o.getField(n.name);return V&&typeof V=="object"&&"url"in V?V:null}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(null),d=e.ref(!1),i=e.ref(!1),s=e.ref(null),h=e.ref(null),y=e.ref(1),m=e.ref({w:0,h:0}),v=e.ref({x:0,y:0,w:100,h:100}),M=e.computed(()=>n.aspectRatio!==null?n.aspectRatio:n.outputWidth&&n.outputHeight?n.outputWidth/n.outputHeight:null);function f(){c.value?.click()}function g(V){const I=V.target.files?.[0];I&&w(I),V.target.value=""}function k(V){V.preventDefault(),d.value=!1;const I=V.dataTransfer?.files?.[0];I&&w(I)}function w(V){if(n.maxSize!==null&&V.size>n.maxSize*1024){Q.error(`Файл больше ${n.maxSize} KB.`);return}if(!V.type.startsWith("image/")){Q.error(p.trSafe("Можно только изображения."));return}R(),h.value=URL.createObjectURL(V);const I=new Image;I.onload=()=>{s.value=I,D(),z()},I.src=h.value}function D(){if(!s.value)return;const V=s.value.naturalWidth,I=s.value.naturalHeight,_=Math.min(Yq/V,Qq/I,1);y.value=_,m.value={w:V*_,h:I*_}}function z(){const{w:V,h:I}=m.value;if(M.value!==null){let _=V,x=_/M.value;x>I&&(x=I,_=x*M.value),v.value={x:(V-_)/2,y:(I-x)/2,w:_,h:x}}else{const _=Math.min(V,I)*.1;v.value={x:_,y:_,w:V-2*_,h:I-2*_}}}const B=e.ref(null),b=e.ref({mx:0,my:0,cx:0,cy:0,cw:0,ch:0});function L(V,I){B.value=V,b.value={mx:I.clientX,my:I.clientY,cx:v.value.x,cy:v.value.y,cw:v.value.w,ch:v.value.h},window.addEventListener("mousemove",S),window.addEventListener("mouseup",C),I.preventDefault()}function S(V){if(B.value===null)return;const I=V.clientX-b.value.mx,_=V.clientY-b.value.my,x=b.value,E=m.value,$=(n.minCropWidth??32)*y.value,Y=(n.minCropHeight??32)*y.value;if(B.value==="move"){let le=Math.max(0,Math.min(x.cx+I,E.w-x.cw)),Ie=Math.max(0,Math.min(x.cy+_,E.h-x.ch));v.value={x:le,y:Ie,w:x.cw,h:x.ch};return}let G=x.cx,oe=x.cy,J=x.cx+x.cw,ee=x.cy+x.ch;B.value==="nw"&&(G=x.cx+I,oe=x.cy+_),B.value==="ne"&&(J=x.cx+x.cw+I,oe=x.cy+_),B.value==="sw"&&(G=x.cx+I,ee=x.cy+x.ch+_),B.value==="se"&&(J=x.cx+x.cw+I,ee=x.cy+x.ch+_),G=Math.max(0,Math.min(G,J-$)),oe=Math.max(0,Math.min(oe,ee-Y)),J=Math.min(E.w,Math.max(J,G+$)),ee=Math.min(E.h,Math.max(ee,oe+Y));let X=J-G,ie=ee-oe;if(M.value!==null){const le=M.value;Math.abs(X-x.cw)>=Math.abs(ie-x.ch)?ie=X/le:X=ie*le,B.value==="nw"&&(G=J-X,oe=ee-ie),B.value==="ne"&&(oe=ee-ie),B.value==="sw"&&(G=J-X),G<0&&(X+=G,G=0,ie=X/le,oe=B.value==="nw"||B.value==="ne"?ee-ie:oe),oe<0&&(ie+=oe,oe=0,X=ie*le,G=B.value==="nw"||B.value==="sw"?J-X:G),G+X>E.w&&(X=E.w-G,ie=X/le),oe+ie>E.h&&(ie=E.h-oe,X=ie*le)}v.value={x:G,y:oe,w:X,h:ie}}function C(){B.value=null,window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",C)}async function A(){if(!s.value)return;const V=s.value,I=1/y.value,_=v.value.x*I,x=v.value.y*I,E=v.value.w*I,$=v.value.h*I,Y=n.outputWidth??Math.round(E),G=n.outputHeight??Math.round($),oe=document.createElement("canvas");oe.width=Y,oe.height=G;const J=oe.getContext("2d");if(!J){Q.error(p.trSafe("Canvas недоступен."));return}J.drawImage(V,_,x,E,$,0,0,Y,G);const ee=await new Promise(X=>oe.toBlob(X,"image/png",n.quality??.92));if(!ee){Q.error(p.trSafe("Не удалось получить blob."));return}i.value=!0;try{const X=new FormData;X.append("file",ee,"crop.png");const ie=await ne().post("/uploads/image",X,{headers:{"Content-Type":"multipart/form-data"}});o.setField(n.name,ie),H()}catch(X){typeof console<"u"&&console.error("[admin] upload failed:",X),Q.error(p.trSafe("Не удалось загрузить."))}finally{i.value=!1}}function H(){R(),s.value=null}function R(){h.value&&(URL.revokeObjectURL(h.value),h.value=null)}function N(){o.setField(n.name,null),e.nextTick(f)}function T(){o.setField(n.name,null)}return e.onBeforeUnmount(R),(V,I)=>(e.openBlock(),e.createElementBlock("div",Dq,[a.label?(e.openBlock(),e.createElementBlock("label",Eq,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",Nq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!r.value&&!s.value?(e.openBlock(),e.createElementBlock("div",Hq,[e.createElementVNode("div",{class:e.normalizeClass(["admin-image-cropper__drop",{"admin-image-cropper__drop--over":d.value}]),onClick:f,onDragover:I[0]||(I[0]=e.withModifiers(_=>d.value=!0,["prevent"])),onDragleave:I[1]||(I[1]=_=>d.value=!1),onDrop:k},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(wn),size:28},null,8,["icon"]),e.createElementVNode("p",Fq,e.toDisplayString(e.unref(p.trSafe)("Кликните или перетащите картинку")),1),a.outputWidth&&a.outputHeight?(e.openBlock(),e.createElementBlock("p",Pq," Будет обрезано до "+e.toDisplayString(a.outputWidth)+"×"+e.toDisplayString(a.outputHeight)+" px ",1)):e.createCommentVNode("",!0)],34),e.createElementVNode("input",{ref_key:"fileInput",ref:c,type:"file",accept:a.accept??"image/*",class:"admin-image-cropper__input",onChange:g},null,40,Tq)])):s.value?(e.openBlock(),e.createElementBlock("div",jq,[e.createElementVNode("div",{class:"admin-image-cropper__canvas-wrap",style:e.normalizeStyle({width:m.value.w+"px",height:m.value.h+"px"})},[e.createElementVNode("img",{src:h.value??void 0,width:m.value.w,height:m.value.h,class:"admin-image-cropper__img",alt:""},null,8,Uq),e.createElementVNode("div",{class:"admin-image-cropper__rect",style:e.normalizeStyle({left:v.value.x+"px",top:v.value.y+"px",width:v.value.w+"px",height:v.value.h+"px"}),onMousedown:I[6]||(I[6]=_=>L("move",_))},[e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--nw",onMousedown:I[2]||(I[2]=e.withModifiers(_=>L("nw",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--ne",onMousedown:I[3]||(I[3]=e.withModifiers(_=>L("ne",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--sw",onMousedown:I[4]||(I[4]=e.withModifiers(_=>L("sw",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--se",onMousedown:I[5]||(I[5]=e.withModifiers(_=>L("se",_),["stop"]))},null,32)],36)],4),e.createElementVNode("div",Rq,[e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",disabled:i.value,onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ve)},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(i.value?e.unref(p.trSafe)("Загрузка…"):e.unref(p.trSafe)("Применить")),1)]),_:1},8,["disabled"]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",disabled:i.value,onClick:H},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),I[7]||(I[7]=e.createTextVNode(" Отмена ",-1))]),_:1},8,["disabled"])])])):r.value?(e.openBlock(),e.createElementBlock("div",$q,[e.createElementVNode("img",{src:r.value.url,alt:r.value.name,class:"admin-image-cropper__preview-img"},null,8,Oq),e.createElementVNode("div",Zq,[e.createElementVNode("div",Wq,e.toDisplayString(r.value.name),1),e.createElementVNode("div",Gq,e.toDisplayString(r.value.mime)+" · "+e.toDisplayString((r.value.size/1024).toFixed(1))+" KB",1),e.createElementVNode("div",Kq,[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:N},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Zo)},null,8,["icon"]),I[8]||(I[8]=e.createTextVNode(" Заменить ",-1))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:T},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),I[9]||(I[9]=e.createTextVNode(" Удалить ",-1))]),_:1})])])])):e.createCommentVNode("",!0),a.help&&!l.value?(e.openBlock(),e.createElementBlock("p",Xq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("p",Jq,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)]))}}),tA=be(eA,[["__scopeId","data-v-32d412e9"]]),aA={key:0,class:"uid-form-field__label"},nA={key:0,class:"uid-form-field__required","aria-hidden":"true"},oA={class:"admin-keyvalue__rows"},cA={class:"admin-keyvalue__head"},rA=["id"],iA=["value"],lA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},dA={key:3,class:"uid-form-field__hint"},sA=e.defineComponent({__name:"KeyValueField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},keyLabel:{default:"Ключ"},valueLabel:{default:"Значение"},addable:{type:Boolean,default:!0},removable:{type:Boolean,default:!0},allowedKeys:{default:()=>[]}},setup(a){const n=a,o=de.useFormState();function r(){const y=o.getField(n.name);return y==null||typeof y!="object"||Array.isArray(y)?[]:Object.entries(y).map(([m,v])=>({key:m,value:v==null?"":String(v)}))}const l=e.ref(r());e.watch(()=>o.getField(n.name),()=>{const y=r(),m=JSON.stringify(Object.fromEntries(l.value.map(v=>[v.key,v.value])));JSON.stringify(Object.fromEntries(y.map(v=>[v.key,v.value])))!==m&&(l.value=y)});function c(){const y={};for(const m of l.value)m.key.trim()!==""&&(y[m.key.trim()]=m.value);o.setField(n.name,y)}function d(){l.value.push({key:"",value:""})}function i(y){l.value.splice(y,1),c()}const s=e.computed(()=>o.errors[n.name]?.[0]),h=e.computed(()=>`kv-keys-${n.name}`);return(y,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-keyvalue",{"uid-form-field--error":!!s.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",aA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",nA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",oA,[e.createElementVNode("div",cA,[e.createElementVNode("span",null,e.toDisplayString(e.unref(p.trSafe)(a.keyLabel)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(p.trSafe)(a.valueLabel)),1),m[0]||(m[0]=e.createElementVNode("span",null,null,-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(v,M)=>(e.openBlock(),e.createElementBlock("div",{key:M,class:"admin-keyvalue__row"},[e.createVNode(e.unref(u.UidInput),{modelValue:v.key,"onUpdate:modelValue":f=>v.key=f,list:a.allowedKeys.length>0?h.value:void 0,placeholder:e.unref(p.trSafe)(a.keyLabel),onBlur:c},null,8,["modelValue","onUpdate:modelValue","list","placeholder"]),e.createVNode(e.unref(u.UidInput),{modelValue:v.value,"onUpdate:modelValue":f=>v.value=f,placeholder:e.unref(p.trSafe)(a.valueLabel),onBlur:c},null,8,["modelValue","onUpdate:modelValue","placeholder"]),a.removable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm","aria-label":`Удалить ${v.key}`,onClick:f=>i(M)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])):e.createCommentVNode("",!0)]))),128)),a.allowedKeys.length>0?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:h.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.allowedKeys,v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},null,8,iA))),128))],8,rA)):e.createCommentVNode("",!0)]),a.addable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"secondary",size:"sm",class:"admin-keyvalue__add",onClick:d},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить")),1)]),_:1})):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",lA,e.toDisplayString(s.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",dA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),uA=be(sA,[["__scopeId","data-v-e0d5df59"]]),hA={class:"admin-nested-fields"},yA=e.defineComponent({__name:"NestedFieldsGroup",props:{fields:{},modelValue:{}},emits:["update:modelValue"],setup(a,{emit:n}){const o=a,r=n,l=e.reactive({...o.modelValue});return de.provideFormState(l),e.watch(l,()=>r("update:modelValue",{...l}),{deep:!0}),(c,d)=>(e.openBlock(),e.createElementBlock("div",hA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.fields,i=>(e.openBlock(),e.createBlock(QM,{key:i.name,node:i},null,8,["node"]))),128))]))}}),tw=be(yA,[["__scopeId","data-v-fdba98be"]]),pA={key:0,class:"uid-form-field__label"},kA={key:0,class:"uid-form-field__required","aria-hidden":"true"},mA={class:"admin-repeater__item-hd"},fA={class:"admin-repeater__item-no"},vA={class:"admin-repeater__item-actions"},gA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},MA={key:3,class:"uid-form-field__hint"},IA=e.defineComponent({__name:"RepeaterField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},fields:{default:()=>[]},minItems:{default:null},maxItems:{default:null},addable:{type:Boolean,default:!0},removable:{type:Boolean,default:!0},reorderable:{type:Boolean,default:!0},defaultItem:{default:()=>({})}},setup(a){const n=a,o=de.useFormState();function r(){const M=o.getField(n.name);return Array.isArray(M)?M.map(f=>({...f})):[]}const l=e.ref(r());e.watch(()=>o.getField(n.name),M=>{JSON.stringify(M??[])!==JSON.stringify(l.value)&&(l.value=r())});function c(){o.setField(n.name,l.value.map(M=>({...M})))}function d(M,f){l.value[M]=f,c()}const i=e.computed(()=>n.addable&&(n.maxItems===null||l.value.length<n.maxItems));function s(){l.value.push({...n.defaultItem}),c()}const h=e.computed(()=>n.removable&&(n.minItems===null||l.value.length>n.minItems));function y(M){l.value.splice(M,1),c()}function m(M,f){const g=M+f;if(g<0||g>=l.value.length)return;const k=[...l.value];[k[M],k[g]]=[k[g],k[M]],l.value=k,c()}const v=e.computed(()=>o.errors[n.name]?.[0]);return(M,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-repeater",{"uid-form-field--error":!!v.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",pA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",kA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(g,k)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:k,padding:"md",class:"admin-repeater__item"},{default:e.withCtx(()=>[e.createElementVNode("header",mA,[e.createElementVNode("span",fA,"#"+e.toDisplayString(k+1),1),e.createElementVNode("span",vA,[a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",disabled:k===0,"aria-label":e.unref(p.trSafe)("Выше"),onClick:w=>m(k,-1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(An),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"ghost",size:"sm",disabled:k===l.value.length-1,"aria-label":e.unref(p.trSafe)("Ниже"),onClick:w=>m(k,1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,variant:"ghost",size:"sm","aria-label":e.unref(p.trSafe)("Удалить элемент"),onClick:w=>y(k)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])):e.createCommentVNode("",!0)])]),e.createVNode(tw,{fields:a.fields,"model-value":g,"onUpdate:modelValue":w=>d(k,w)},null,8,["fields","model-value","onUpdate:modelValue"])]),_:2},1024))),128)),i.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"secondary",size:"sm",class:"admin-repeater__add",onClick:s},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить элемент")),1)]),_:1})):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("p",gA,e.toDisplayString(v.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",MA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),wA=be(IA,[["__scopeId","data-v-8b51df90"]]),xA={key:0,class:"uid-form-field__label"},CA={key:0,class:"uid-form-field__required","aria-hidden":"true"},LA={class:"admin-builder__block-hd"},bA={class:"admin-builder__block-type"},SA={class:"admin-builder__block-actions"},_A={key:1,class:"uid-form-field__hint"},BA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},VA={key:3,class:"uid-form-field__hint"},qA=e.defineComponent({__name:"BuilderField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},blocks:{default:()=>({})},maxBlocks:{default:null},reorderable:{type:Boolean,default:!0}},setup(a){const n=a,o=de.useFormState();function r(){const f=o.getField(n.name);return Array.isArray(f)?f.map(g=>({type:g.type,data:{...g.data??{}}})):[]}const l=e.ref(r());e.watch(()=>o.getField(n.name),f=>{JSON.stringify(f??[])!==JSON.stringify(l.value)&&(l.value=r())});function c(){o.setField(n.name,l.value.map(f=>({type:f.type,data:{...f.data}})))}const d=e.computed(()=>Object.values(n.blocks)),i=e.computed(()=>n.maxBlocks===null||l.value.length<n.maxBlocks);function s(f){l.value.push({type:f,data:{}}),c()}function h(f){l.value.splice(f,1),c()}function y(f,g){const k=f+g;if(k<0||k>=l.value.length)return;const w=[...l.value];[w[f],w[k]]=[w[k],w[f]],l.value=w,c()}function m(f,g){l.value[f]={...l.value[f],data:g},c()}function v(f){return n.blocks[f]??null}const M=e.computed(()=>o.errors[n.name]?.[0]);return(f,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-builder",{"uid-form-field--error":!!M.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",xA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",CA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,w)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:w,padding:"md",class:"admin-builder__block"},{default:e.withCtx(()=>[e.createElementVNode("header",LA,[e.createElementVNode("span",bA,e.toDisplayString(v(k.type)?.label??k.type),1),e.createElementVNode("span",SA,[a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",disabled:w===0,"aria-label":e.unref(p.trSafe)("Выше"),onClick:D=>y(w,-1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(An),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"ghost",size:"sm",disabled:w===l.value.length-1,"aria-label":e.unref(p.trSafe)("Ниже"),onClick:D=>y(w,1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm","aria-label":e.unref(p.trSafe)("Удалить блок"),onClick:D=>h(w)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])])]),v(k.type)?(e.openBlock(),e.createBlock(tw,{key:0,fields:v(k.type).fields,"model-value":k.data,"onUpdate:modelValue":D=>m(w,D)},null,8,["fields","model-value","onUpdate:modelValue"])):(e.openBlock(),e.createElementBlock("p",_A,"Неизвестный тип блока: "+e.toDisplayString(k.type),1))]),_:2},1024))),128)),i.value&&d.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"secondary",size:"sm",class:"admin-builder__add"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить блок")),1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,k=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:k.type,onClick:w=>s(k.type)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("p",BA,e.toDisplayString(M.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",VA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),AA=be(qA,[["__scopeId","data-v-b8372057"]]),zA={class:"uid-form-field admin-relation-table"},DA={key:0,class:"uid-form-field__label"},EA={key:1,class:"uid-form-field__hint"},NA=e.defineComponent({__name:"RelationTableField",props:{name:{},label:{default:null},help:{default:null},columns:{default:()=>[]},emptyText:{default:"Связанных записей нет"}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const c=o.getField(n.name);return Array.isArray(c)?c.map(d=>{const i={...d};for(const s of n.columns)i[s.name]=pc(d[s.name],s.preset??void 0,s.meta??{});return i}):[]}),l=e.computed(()=>n.columns.map(c=>({key:c.name,label:c.label,align:c.align,width:c.width??void 0})));return(c,d)=>(e.openBlock(),e.createElementBlock("div",zA,[a.label?(e.openBlock(),e.createElementBlock("label",DA,e.toDisplayString(a.label),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidCard),{padding:"sm"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTable),{columns:l.value,data:r.value,"empty-text":e.unref(p.trSafe)(a.emptyText)},null,8,["columns","data","empty-text"])]),_:1}),a.help?(e.openBlock(),e.createElementBlock("p",EA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)]))}}),HA={key:0,class:"uid-form-field__label"},FA={key:0,class:"uid-form-field__required","aria-hidden":"true"},PA={class:"admin-generated__row"},TA={key:1,class:"uid-form-field__hint uid-form-field__hint--error"},jA={key:2,class:"uid-form-field__hint"},UA=e.defineComponent({__name:"GeneratedField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},length:{default:32},charset:{default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"},autogenerate:{type:Boolean,default:!0}},setup(a){const n=a,o=de.useFormState(),r=p.useI18nStore(),l=e.computed(()=>o.getField(n.name)??""),c=e.computed(()=>o.errors[n.name]?.[0]),d=typeof globalThis.crypto?.getRandomValues=="function";function i(m,v){const M=v.length,f=Math.floor(256/M)*M;let g="";const k=new Uint8Array(m*2);for(;g.length<m;){globalThis.crypto.getRandomValues(k);for(const w of k)if(w<f&&(g+=v[w%M],g.length===m))break}return g}function s(){d&&o.setField(n.name,i(n.length,n.charset))}const h=e.ref(!1);function y(m){h.value=!0,o.setField(n.name,m)}return e.watch(l,m=>{n.autogenerate&&!n.disabled&&!h.value&&m===""&&s()},{immediate:!0}),(m,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-generated",{"uid-form-field--error":!!c.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",HA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",FA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",PA,[e.createVNode(e.unref(u.UidInput),{"model-value":l.value,error:c.value,placeholder:a.placeholder??void 0,required:a.required,disabled:a.disabled,name:a.name,class:"admin-generated__input","onUpdate:modelValue":y},null,8,["model-value","error","placeholder","required","disabled","name"]),d?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"secondary",size:"md",type:"button",disabled:a.disabled,onClick:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).has("admin.fields.generate")?e.unref(r).t("admin.fields.generate"):e.unref(p.trSafe)("Сгенерировать")),1)]),_:1},8,["disabled"])):e.createCommentVNode("",!0)]),c.value?(e.openBlock(),e.createElementBlock("p",TA,e.toDisplayString(c.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",jA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),aw=e.defineComponent({__name:"ColumnsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"},cols:{default:12}},setup(a){const n=a,o=e.computed(()=>n.items.length===0?n.cols:Math.max(1,Math.floor(n.cols/n.items.length)));function r(l){const c=l.span;return typeof c=="number"&&c>0?Math.min(c,n.cols):o.value}return(l,c)=>(e.openBlock(),e.createBlock(e.unref(u.UidGrid),{cols:a.cols,gap:a.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(d,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${r(d)} / span ${r(d)}`})},[e.createVNode(Ln,{node:d},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),RA={key:0,class:"admin-section__header"},$A={key:0,class:"admin-section__title"},OA={key:1,class:"admin-section__description"},ZA={class:"admin-section__body"},Bn=e.defineComponent({__name:"SectionLayout",props:{items:{},title:{default:null},description:{default:null}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-section"},{default:e.withCtx(()=>[a.title||a.description?(e.openBlock(),e.createElementBlock("header",RA,[a.title?(e.openBlock(),e.createElementBlock("h3",$A,e.toDisplayString(a.title),1)):e.createCommentVNode("",!0),a.description?(e.openBlock(),e.createElementBlock("p",OA,e.toDisplayString(a.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",ZA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(r,l)=>(e.openBlock(),e.createBlock(Ln,{key:l,node:r},null,8,["node"]))),128))])]),_:1}))}}),nw=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0},gap:{default:"var(--uid-space-lg)"}},emits:["update:active"],setup(a,{emit:n}){const o=a,r=n;function l(i,s){return i.key??s}const c=e.ref(o.active??l(o.items[0]??{},0));function d(i){c.value=i,r("update:active",i)}return(i,s)=>(e.openBlock(),e.createBlock(e.unref(u.UidTabs),{"model-value":c.value,"onUpdate:modelValue":d},{list:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(h,y)=>(e.openBlock(),e.createBlock(e.unref(u.UidTab),{key:l(h,y),value:l(h,y)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.label),1)]),_:2},1032,["value"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(h,y)=>(e.openBlock(),e.createBlock(e.unref(u.UidTabPanel),{key:`panel-${l(h,y)}`,value:l(h,y)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidStack),{direction:"column",gap:a.gap,align:"stretch"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,(m,v)=>(e.openBlock(),e.createBlock(Ln,{key:v,node:m},null,8,["node"]))),128))]),_:2},1032,["gap"])]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}}),WA={class:"admin-embedded-table"},GA={class:"admin-embedded-table__toolbar"},KA={key:1},XA=["aria-label","onClick"],JA={key:4,class:"admin-embedded-table__draft"},YA={class:"admin-embedded-table__draft-cells"},QA={class:"admin-embedded-table__draft-label"},ez=["value","onChange"],tz=["value"],az=["type","value","onInput"],nz={class:"admin-embedded-table__draft-actions"},oz=e.defineComponent({__name:"EmbeddedResourceTable",props:{resource:{},foreign_key:{},parent_field:{default:"id"},hide_columns:{default:()=>[]},features:{default:()=>({create:!1,delete:!1,bulkDelete:!1})}},setup(a){const n=a,o=pe(),r=e9(),l=e.computed(()=>o.getResource(n.resource)),c=e.ref([]),d=e.ref(!1),i=e.ref(null),s=e.ref(new Set),h=e.ref(null),y=e.computed(()=>{const T=r.state[n.parent_field];return T??null}),m=e.computed(()=>(l.value?.columns??[]).filter(V=>{const I=String(V.name??"");return!n.hide_columns.includes(I)})),v=e.computed(()=>m.value.map(T=>({key:String(T.name??""),label:String(T.label??T.name??""),sortable:!!T.sortable,align:T.align??"left",width:T.width}))),M=e.computed(()=>n.features.create&&!!l.value?.permissions?.create),f=e.computed(()=>n.features.delete&&!!l.value?.permissions?.delete),g=e.computed(()=>n.features.bulkDelete&&!!l.value?.permissions?.delete);function k(T){for(const V of m.value)if(String(V.name??"")===T)return V.editable??null;return null}async function w(){if(y.value===null){c.value=[];return}d.value=!0,i.value=null;try{const V=await ne().post(`/${n.resource}/search`,{page:1,per_page:100,filters:{[n.foreign_key]:y.value}});c.value=V.data}catch(T){i.value=T instanceof Error?T:new Error(String(T)),c.value=[]}finally{d.value=!1}}e.onMounted(w),e.watch(y,w);function D(T){return T.id??""}function z(T){return T?.row}function B(T){const V=D(T),I=new Set(s.value);I.has(V)?I.delete(V):I.add(V),s.value=I}function b(){s.value.size===c.value.length?s.value=new Set:s.value=new Set(c.value.map(D))}async function L(T){const V=D(T);if(confirm(p.trSafe("Удалить строку?")))try{await ne().post(`/${n.resource}/delete`,{id:V}),c.value=c.value.filter(I=>D(I)!==V),s.value.delete(V),s.value=new Set(s.value)}catch{Q.error(p.trSafe("Не удалось удалить строку."))}}async function S(){if(s.value.size===0||!confirm(`Удалить ${s.value.size} строк?`))return;const T=[...s.value];try{await Promise.all(T.map(V=>ne().post(`/${n.resource}/delete`,{id:V}))),s.value=new Set,await w()}catch{Q.error(p.trSafe("Не удалось удалить часть строк.")),await w()}}function C(){if(!M.value||h.value!==null)return;const T={};y.value!==null&&(T[n.foreign_key]=y.value),h.value=T}function A(){h.value=null}async function H(){if(h.value!==null)try{await ne().post(`/${n.resource}/create`,h.value),h.value=null,await w()}catch{Q.error(p.trSafe("Не удалось создать запись."))}}function R(T,V){h.value!==null&&(h.value={...h.value,[T]:V})}function N(T,V){const I=T[V];return I==null?"":String(I)}return(T,V)=>(e.openBlock(),e.createElementBlock("div",WA,[e.createElementVNode("div",GA,[M.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"primary",size:"sm",disabled:h.value!==null,onClick:C},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me)},null,8,["icon"]),V[0]||(V[0]=e.createTextVNode(" Добавить ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0),g.value&&s.value.size>0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"danger",size:"sm",onClick:S},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe)},null,8,["icon"]),e.createTextVNode(" Удалить выбранные ("+e.toDisplayString(s.value.size)+") ",1)]),_:1})):e.createCommentVNode("",!0)]),d.value&&c.value.length===0?(e.openBlock(),e.createBlock(e.unref(u.UidSkeleton),{key:0})):i.value?(e.openBlock(),e.createBlock(e.unref(u.UidErrorState),{key:1,message:i.value.message,onRetry:w},null,8,["message"])):!d.value&&c.value.length===0&&h.value===null?(e.openBlock(),e.createBlock(e.unref(u.UidEmptyState),{key:2,title:e.unref(p.trSafe)("Нет данных"),hint:e.unref(p.trSafe)("Нажмите «Добавить», чтобы создать первую запись.")},null,8,["title","hint"])):(e.openBlock(),e.createBlock(e.unref(u.UidTable),{key:3,columns:v.value,data:c.value,selectable:g.value,selection:s.value,"row-key":"id",onSelectRow:B,onSelectAll:b},e.createSlots({_:2},[e.renderList(v.value,I=>({name:I.key,fn:e.withCtx(_=>[z(_)&&k(I.key)?(e.openBlock(),e.createBlock(BI,{key:0,"resource-slug":a.resource,"row-id":D(z(_)),column:I.key,value:z(_)[I.key],editable:!0,"input-type":k(I.key).as,options:k(I.key).options,"row-override":z(_)._editable??{},onSaved:x=>{const E=z(_);E&&(E[I.key]=x)}},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(N(z(_),I.key)),1)]),_:2},1032,["resource-slug","row-id","column","value","input-type","options","row-override","onSaved"])):(e.openBlock(),e.createElementBlock("span",KA,e.toDisplayString(N(z(_)??{},I.key)),1))])})),f.value?{name:"actions",fn:e.withCtx(I=>[e.createElementVNode("button",{type:"button",class:"admin-embedded-table__row-delete","aria-label":e.unref(p.trSafe)("Удалить"),onClick:_=>z(I)&&L(z(I))},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:14},null,8,["icon"])],8,XA)]),key:"0"}:void 0]),1032,["columns","data","selectable","selection"])),h.value!==null?(e.openBlock(),e.createElementBlock("div",JA,[e.createElementVNode("div",YA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,I=>(e.openBlock(),e.createElementBlock("div",{key:I.key,class:"admin-embedded-table__draft-cell"},[e.createElementVNode("label",QA,e.toDisplayString(I.label),1),k(I.key)?.as==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"admin-embedded-table__draft-input",value:h.value[I.key]??"",onChange:_=>R(I.key,_.target.value)},[V[1]||(V[1]=e.createElementVNode("option",{value:""},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k(I.key).options,(_,x)=>(e.openBlock(),e.createElementBlock("option",{key:x,value:x},e.toDisplayString(_),9,tz))),128))],40,ez)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"admin-embedded-table__draft-input",type:k(I.key)?.as==="number"?"number":k(I.key)?.as==="date"?"date":"text",value:h.value[I.key]??"",onInput:_=>R(I.key,_.target.value)},null,40,az))]))),128))]),e.createElementVNode("div",nz,[e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",onClick:H},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ve)},null,8,["icon"]),V[2]||(V[2]=e.createTextVNode(" Создать ",-1))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),V[3]||(V[3]=e.createTextVNode(" Отмена ",-1))]),_:1})])])):e.createCommentVNode("",!0)]))}}),cz=be(oz,[["__scopeId","data-v-17c526a7"]]),rz=e.defineComponent({__name:"DashboardLayout",props:{items:{default:()=>[]},gridColumns:{default:12},gap:{default:"var(--uid-space-md)"}},setup(a){const n=a;function o(r){const l=r.size??r.span,c=Number(l),d=Number.isFinite(c)&&c>=1?c:n.gridColumns;return Math.min(d,n.gridColumns)}return(r,l)=>(e.openBlock(),e.createBlock(e.unref(u.UidGrid),{cols:a.gridColumns,"col-gap":a.gap,"row-gap":"var(--uid-space-lg)"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(c,d)=>(e.openBlock(),e.createElementBlock("div",{key:d,class:"admin-dashboard-layout__cell",style:e.normalizeStyle({gridColumn:`span ${o(c)}`})},[e.createVNode(S9,{node:c},null,8,["node"])],4))),128))]),_:1},8,["cols","col-gap"]))}});function eo(a){return e.defineComponent({name:`TextField${a.charAt(0).toUpperCase()}${a.slice(1)}`,inheritAttrs:!1,setup(n,{attrs:o}){const r={...o,inputType:o.inputType??a};return()=>e.h(Ae,r)}})}function iz(a){for(const[n,o]of Object.entries(a.fields??{}))wI(n)||II(n,o);for(const[n,o]of Object.entries(a.layouts??{}))CI(n)||xI(n,o)}function ow(){iz({fields:{input:Ae,text:Ae,email:eo("email"),url:eo("url"),password:eo("password"),tel:eo("tel"),search:eo("search"),slug:Ae,hidden:Ae,label:Ae,textarea:RM,wysiwyg:Mq,markdown:RM,code:RM,number:$M,slider:$M,rating:$M,select:xe,combobox:xe,radio:xe,tags:nq,translatable:J9,"translatable-text":J9,morph_switcher:xe,"morph-switcher":xe,relation_select:xe,relation:xe,cascader:xe,tree_select:xe,"tree-select":xe,checkbox:ao,switch:ao,switcher:ao,boolean:ao,date:Pe,datetime:Pe,datepicker:Pe,date_range:Pe,"date-range":Pe,time:Pe,"time-picker":Pe,color:Ae,"color-picker":Ae,file:Y9,image:Y9,image_cropper:tA,key_value:uA,repeater:wA,"generated-field":UA,builder:AA,relation_table:NA},layouts:{rows:WM,columns:aw,section:Bn,block:Bn,tabs:nw,accordion:Bn,group:WM,step:Bn,wizard:Bn,dashboard:rz,"admin.resource-table":cz}})}const ae=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let l=n.value;if(l===void 0&&o&&n.name&&(l=o[n.name]),l==null||l==="")return n.placeholder;const c=pc(l,n.preset,n.meta);return c===""?n.placeholder:c});return(l,c)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-text",a.mono?"admin-infolist-text--mono":""])},e.toDisplayString(r.value),3))}}),lz={key:1,class:"admin-infolist-text"},cw=e.defineComponent({__name:"BadgeEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},map:{default:()=>({})},colors:{default:()=>({})},labels:{default:()=>({})},variant:{default:void 0}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;return i===void 0&&o&&n.name&&(i=o[n.name]),i==null?"":String(i)}),l=e.computed(()=>({...n.map,...n.colors})),c=e.computed(()=>n.variant?n.variant:l.value[r.value]??"default"),d=e.computed(()=>n.labels[r.value]??r.value);return(i,s)=>r.value?(e.openBlock(),e.createBlock(e.unref(u.UidBadge),{key:0,variant:c.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",lz,"—"))}}),dz={key:1},rw=e.defineComponent({__name:"IconEntry",props:{name:{default:""},label:{default:""},value:{type:[Boolean,null],default:void 0},trueIcon:{default:"check-circle-2"},falseIcon:{default:"circle"},trueLabel:{default:""},falseLabel:{default:""}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;return i===void 0&&o&&n.name&&(i=o[n.name]),!!i});function l(i){return i.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}const c=e.computed(()=>{const i=l(r.value?n.trueIcon:n.falseIcon);return _w[i]}),d=e.computed(()=>r.value?n.trueLabel:n.falseLabel);return(i,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",r.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[c.value?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:c.value,size:14,class:"admin-infolist-icon__glyph"},null,8,["icon"])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",dz,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)],2))}}),sz={key:1,class:"admin-infolist-text"},OM=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let c=n.value;return c===void 0&&o&&n.name&&(c=o[n.name]),c==null?[]:typeof c!="object"?[]:Object.entries(c)});function l(c){return c==null?"—":typeof c=="boolean"?c?p.trSafe("Да"):p.trSafe("Нет"):c===0?p.trSafe("Нет"):c===1?p.trSafe("Да"):typeof c=="object"?JSON.stringify(c):String(c)}return(c,d)=>r.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidDescriptionList),{key:0,direction:"vertical",columns:1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([i,s])=>(e.openBlock(),e.createBlock(e.unref(u.UidDescriptionItem),{key:i,label:i},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(s)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",sz,"—"))}}),uz={class:"admin-repeatable"},hz={key:0,class:"admin-repeatable__lbl"},yz={key:1,class:"admin-repeatable__empty"},pz={key:2,class:"admin-repeatable__tbl"},kz={class:"admin-repeatable__idx"},mz={key:3,class:"admin-repeatable__cards"},fz={class:"admin-repeatable__card-hd"},vz={class:"admin-repeatable__dl"},gz={key:4,class:"admin-repeatable__inline"},Mz=e.defineComponent({__name:"RepeatableEntry",props:{name:{default:""},label:{default:""},entries:{default:()=>[]},layout:{default:"columns"},value:{default:void 0},placeholder:{default:"—"}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;if(i===void 0&&o&&n.name&&(i=o[n.name]),typeof i=="string")try{i=JSON.parse(i)}catch{i=[]}return Array.isArray(i)?i.filter(s=>s!==null&&typeof s=="object"):[]});function l(i){return String(i.label??i.name??"")}function c(i){return GM(i)}function d(i,s){const{type:h,...y}=i,m=i.attributes??{};return{...y,...m,label:"",value:s[i.name],name:i.name}}return(i,s)=>(e.openBlock(),e.createElementBlock("div",uz,[a.label?(e.openBlock(),e.createElementBlock("span",hz,e.toDisplayString(a.label),1)):e.createCommentVNode("",!0),r.value.length===0?(e.openBlock(),e.createElementBlock("p",yz,e.toDisplayString(a.placeholder),1)):a.layout==="columns"?(e.openBlock(),e.createElementBlock("table",pz,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[s[0]||(s[0]=e.createElementVNode("th",{class:"admin-repeatable__idx"},"#",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,h=>(e.openBlock(),e.createElementBlock("th",{key:h.name},e.toDisplayString(l(h)),1))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("tr",{key:y},[e.createElementVNode("td",kz,e.toDisplayString(y+1),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createElementBlock("td",{key:m.name},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({ref_for:!0},d(m,h)),null,16))]))),128))]))),128))])])):a.layout==="rows"?(e.openBlock(),e.createElementBlock("div",mz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("article",{key:y,class:"admin-repeatable__card"},[e.createElementVNode("header",fz,"#"+e.toDisplayString(y+1),1),e.createElementVNode("dl",vz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[e.createElementVNode("dt",null,e.toDisplayString(l(m)),1),e.createElementVNode("dd",null,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({ref_for:!0},d(m,h)),null,16))])],64))),128))])]))),128))])):(e.openBlock(),e.createElementBlock("div",gz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("span",{key:y,class:"admin-repeatable__chip"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({key:m.name,ref_for:!0},d(m,h)),null,16))),128))]))),128))]))]))}});function iw(){AI({text:ae,badge:cw,icon:rw,keyvalue:OM,key_value:OM,"key-value":OM,repeatable:Mz,input:ae,email:ae,url:ae,password:ae,tel:ae,search:ae,slug:ae,hidden:ae,label:ae,textarea:ae,wysiwyg:ae,markdown:ae,code:ae,number:ae,slider:ae,rating:ae,select:ae,combobox:ae,radio:ae,tags:ae,"morph-switcher":ae,relation:ae,cascader:ae,"tree-select":ae,checkbox:ae,switch:ae,switcher:ae,boolean:ae,date:ae,datetime:ae,datepicker:ae,"date-range":ae,time:ae,"time-picker":ae,"color-picker":ae})}function Iz(a,n={}){const o=n.pages??{},r=n.base??wz(a.baseUrl)??"/admin";let l=null;const c=XI({baseURL:a.apiUrl,csrfToken:a.csrf,onUnauthenticated:()=>{const m=l;if(m===null)return;const v=m.currentRoute.value;v.meta?.kind!=="auth"&&m.replace({name:"admin.login",query:v.fullPath==="/"?{}:{redirect:v.fullPath}}).catch(()=>{})}});M9(c);const d=e.createApp(uI),i=Me.createPinia();d.use(i);const s=a.brand??{};d.provide(L9,s),xz(s.favicon),ge().hydrate(a),Qe().hydrate(a),XM().hydrate(a),sc().hydrate(a),p.useI18nStore().hydrate(a),ow(),GI(),iw();const h=ew({base:r,history:n.router?.history??re.createWebHistory(r),components:{login:o.login??_I,home:o.home??fI,forbidden:o.forbidden??vI,notFound:o.notFound??gI,profile:o.profile??$I,forgotPassword:o.forgotPassword??YL,resetPassword:o.resetPassword??lb,resourceIndex:o.resourceIndex??VI,resourceCreate:o.resourceCreate??p9,resourceEdit:o.resourceEdit??p9,resourceView:o.resourceView??EI,dashboard:o.dashboard??_9,settings:o.settings??MI,screen:o.screen??LI},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});l=h,d.use(h);const y=C9();if(h.beforeEach((m,v,M)=>{m.fullPath!==v.fullPath&&y.start(),M()}),h.afterEach(()=>{y.end()}),h.onError(()=>{y.end()}),h.beforeResolve(async(m,v,M)=>{const f=typeof m.name=="string"?m.name:null;if(f&&f.startsWith("admin.resource.")&&f.endsWith(".index")){const g=m.params.slug??m.meta.slug;if(g)try{const{useResourceIndexStore:k}=await Promise.resolve().then(()=>db),w=k();(w.slug!==g||w.items.length===0)&&(w.setSlug(g),await w.load().catch(()=>{}))}catch{}}M()}),n.skipManifestLoad)pe().bootResolved=!0;else{const m=pe(),v=ge(),M=hc(),f=async()=>{M.load().catch(()=>{});try{const g=await m.load();h.replaceManifestRoutes(g);const k=h.currentRoute.value;k.name==="admin.notFound"&&k.fullPath!=="/"&&await h.replace(k.fullPath).catch(()=>{})}catch(g){typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",g)}finally{m.bootResolved=!0}};v.isAuthenticated?f():m.bootResolved=!0,e.watch(()=>v.user,(g,k)=>{g&&!k&&(m.bootResolved=!1,f())})}return n.onAppCreated?.(d),{app:d,router:h,client:c}}function wz(a){if(!a)return null;try{return new URL(a).pathname||"/admin"}catch{return a.startsWith("/")?a:null}}function xz(a){if(typeof document>"u"||!a)return;let n=document.querySelector('link[rel~="icon"]');n===null&&(n=document.createElement("link"),n.rel="icon",document.head.appendChild(n)),n.href=a}const Cz={class:"admin-status-page"},Lz={class:"admin-status-page__title"},bz={class:"admin-status-page__hint"},Sz=e.defineComponent({__name:"UnknownScreenPage",setup(a){const n=re.useRoute(),o=e.computed(()=>String(n.params.slug??"")),r=e.computed(()=>String(n.meta?.title??o.value));return(l,c)=>(e.openBlock(),e.createElementBlock("div",Cz,[e.createVNode(e.unref(u.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",Lz,e.toDisplayString(r.value),1),e.createElementVNode("p",bz,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(o.value)+"». Передайте свой компонент через ",1),c[0]||(c[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),c[1]||(c[1]=e.createTextVNode(". ",-1))])]),_:1})]))}});async function _z(a={}){const n=lw();if(n)return n;if(a.client)try{const o=a.xhrUrl??"/system/bootstrap";return await a.client.get(o)}catch(o){if(o instanceof uc)return null;throw o}return null}function lw(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function Bz(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const Vz={class:"admin-notifs__hd"},qz={class:"admin-notifs__title"},Az={key:0,class:"admin-notifs__count"},zz={class:"admin-notifs__list"},Dz={key:0,class:"admin-notifs__empty"},Ez={key:1,class:"admin-notifs__empty"},Nz=["onClick"],Hz=["data-kind"],Fz={class:"admin-notifs__body"},Pz={class:"admin-notifs__row1"},Tz={key:0,class:"admin-notifs__title-strong"},jz={key:1,class:"admin-notifs__title-soft"},Uz={class:"admin-notifs__time"},Rz={key:0,class:"admin-notifs__text"},$z=["aria-label","onClick"],Oz=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(a,{emit:n}){const o=a,r=n,l=sc();function c(g){r("update:open",g)}e.watch(()=>o.open,async g=>{g&&await l.load(l.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const d=e.computed(()=>l.lastFilter??"all");async function i(g){await l.load(g,1).catch(()=>{})}async function s(){await l.markAllAsRead().catch(()=>{})}async function h(g){r("select-item",g),g.read_at||await l.markAsRead(g.id).catch(()=>{})}async function y(g,k){k.stopPropagation(),await l.destroy(g.id).catch(()=>{})}function m(g){const k=g.data.level;return k==="success"||k==="warning"||k==="danger"?k:"info"}function v(g){return g.data.title??"—"}function M(g){return g.data.body??""}function f(g){if(!g)return"";const k=new Date(g),w=Math.max(0,Date.now()-k.getTime()),D=Math.floor(w/6e4);if(D<1)return p.trSafe("только что");if(D<60)return`${D} мин назад`;const z=Math.floor(D/60);if(z<24)return`${z} ч назад`;const B=Math.floor(z/24);return B<7?`${B} д назад`:k.toLocaleDateString("ru-RU")}return(g,k)=>(e.openBlock(),e.createBlock(e.unref(u.UidDrawer),{"model-value":a.open,side:"right",width:"400px",title:e.unref(p.trSafe)("Уведомления"),"onUpdate:modelValue":c},{header:e.withCtx(()=>[e.createElementVNode("div",Vz,[e.createElementVNode("h2",qz,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Уведомления"))+" ",1),e.unref(l).unreadCount>0?(e.openBlock(),e.createElementBlock("span",Az," ("+e.toDisplayString(e.unref(l).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(l).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",onClick:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Прочитать все")),1)]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTabs),{"model-value":d.value,"onUpdate:modelValue":i},{list:e.withCtx(()=>[e.createVNode(e.unref(u.UidTab),{value:"all"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Все")),1)]),_:1}),e.createVNode(e.unref(u.UidTab),{value:"unread"},{default:e.withCtx(()=>[k[0]||(k[0]=e.createTextVNode(" Непрочитанные",-1)),e.unref(l).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(l).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(u.UidTab),{value:"read"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Прочитанные")),1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],w=>e.createVNode(e.unref(u.UidTabPanel),{key:w,value:w},{default:e.withCtx(()=>[e.createElementVNode("ul",zz,[e.unref(l).loading?(e.openBlock(),e.createElementBlock("li",Dz,e.toDisplayString(e.unref(p.trSafe)("Загрузка…")),1)):e.unref(l).items.length===0?(e.openBlock(),e.createElementBlock("li",Ez,e.toDisplayString(e.unref(p.trSafe)("Нет уведомлений")),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l).items,D=>(e.openBlock(),e.createElementBlock("li",{key:D.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${m(D)}`,{"admin-notifs__item--unread":!D.read_at}]),onClick:z=>h(D)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":m(D)},null,8,Hz),e.createElementVNode("div",Fz,[e.createElementVNode("div",Pz,[D.read_at?(e.openBlock(),e.createElementBlock("span",jz,e.toDisplayString(v(D)),1)):(e.openBlock(),e.createElementBlock("strong",Tz,e.toDisplayString(v(D)),1)),e.createElementVNode("span",Uz,e.toDisplayString(f(D.created_at)),1)]),M(D)?(e.openBlock(),e.createElementBlock("p",Rz,e.toDisplayString(M(D)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":e.unref(p.trSafe)("Удалить"),onClick:z=>y(D,z)}," × ",8,$z)],10,Nz))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value","title"]))}}),Zz={class:"admin-page admin-import-wizard"},Wz={class:"admin-page__hd"},Gz={class:"admin-page__title-wrap"},Kz={class:"admin-page__title"},Xz={class:"admin-page__actions"},Jz={class:"admin-import-wizard__card-hd"},Yz={class:"admin-import-wizard__card-hd"},Qz={key:0,class:"admin-import-wizard__empty"},eD={key:1,class:"admin-import-wizard__mapping"},tD={class:"admin-import-wizard__map-source"},aD={key:0,class:"admin-import-wizard__map-sample"},nD={class:"admin-import-wizard__card-hd"},oD={key:2,class:"admin-import-wizard__empty"},cD={class:"admin-import-wizard__card-hd"},rD={key:0,class:"admin-import-wizard__empty"},iD={class:"admin-import-wizard__kpi"},lD={class:"admin-import-wizard__nav"},dD=e.defineComponent({__name:"ImportWizardPage",props:{title:{default:"Импорт"},fieldOptions:{},headers:{default:()=>[]},preview:{default:()=>[]},previewColumns:{default:()=>[]},progress:{default:null},step:{default:void 0}},emits:["file-uploaded","mapping-submit","run-import","cancel"],setup(a,{emit:n}){const o=a,r=n,l=[{label:p.trSafe("Загрузка"),description:"CSV / TSV / XLSX"},{label:p.trSafe("Сопоставление"),description:p.trSafe("Колонки файла → поля")},{label:p.trSafe("Предпросмотр"),description:p.trSafe("Проверка первых строк")},{label:p.trSafe("Импорт"),description:p.trSafe("Запуск + сводка")}],c=e.ref(0),d=e.computed(()=>o.step??c.value);function i(z){o.step===void 0&&(z<0||z>=l.length||(c.value=z))}const s=e.ref([]);function h(z){s.value=z,z.length>0&&r("file-uploaded",z[0].file)}const y=e.ref({});function m(z,B){y.value[z]=B===null||B===""?null:String(B)}function v(){return o.headers.map(z=>({source:z.key,target:y.value[z.key]??null}))}function M(){r("mapping-submit",v()),i(2)}function f(){r("run-import"),i(3)}const g=e.computed(()=>d.value>0),k=e.computed(()=>{switch(d.value){case 0:return s.value.length>0;case 1:return Object.values(y.value).some(z=>z!==null);case 2:return!0;default:return!1}}),w=e.computed(()=>[{value:"",label:p.trSafe("Не импортировать")},...o.fieldOptions]);function D(){r("cancel")}return(z,B)=>(e.openBlock(),e.createElementBlock("section",Zz,[e.createElementVNode("header",Wz,[e.createElementVNode("div",Gz,[e.createElementVNode("h1",Kz,e.toDisplayString(e.unref(p.trSafe)(a.title)),1)]),e.createElementVNode("div",Xz,[e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:D},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)]),_:1})])]),e.createVNode(e.unref(u.UidStepper),{steps:l,current:d.value},null,8,["current"]),d.value===0?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Jz,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("1. Загрузите файл")),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(p.trSafe)("CSV / TSV / XLSX, до 50 MB")),1)]),e.createVNode(e.unref(u.UidFileUpload),{"model-value":s.value,accept:".csv,.tsv,.xlsx","max-size":50*1024*1024,"max-files":1,"primary-text":"Перетащите файл сюда или","secondary-text":"нажмите чтобы выбрать","onUpdate:modelValue":h},null,8,["model-value"])]),_:1})):d.value===1?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:1,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Yz,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("2. Сопоставьте колонки")),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(p.trSafe)("Выберите поле ресурса для каждой колонки файла")),1)]),a.headers.length===0?(e.openBlock(),e.createElementBlock("div",Qz,e.toDisplayString(e.unref(p.trSafe)("Нет данных — host ещё не отдал headers. Загрузите файл сначала.")),1)):(e.openBlock(),e.createElementBlock("div",eD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.headers,b=>(e.openBlock(),e.createElementBlock("div",{key:b.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",tD,[e.createElementVNode("strong",null,e.toDisplayString(b.label),1),b.sample?(e.openBlock(),e.createElementBlock("span",aD," «"+e.toDisplayString(b.sample)+"» ",1)):e.createCommentVNode("",!0)]),B[2]||(B[2]=e.createElementVNode("span",{class:"admin-import-wizard__map-arrow"},"→",-1)),e.createVNode(e.unref(u.UidSelect),{"model-value":y.value[b.key]??"",options:w.value,placeholder:e.unref(p.trSafe)("Не импортировать"),"onUpdate:modelValue":L=>m(b.key,L)},null,8,["model-value","options","placeholder","onUpdate:modelValue"])]))),128))]))]),_:1})):d.value===2?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:2,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",nD,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("3. Предпросмотр")),1),e.createElementVNode("p",null,"Первые "+e.toDisplayString(a.preview.length)+" строк перед импортом",1)]),a.preview.some(b=>b.__warning)?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"warning",style:{"margin-bottom":"var(--uid-space-md)"}},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Часть строк имеет предупреждения — проверьте перед импортом.")),1)]),_:1})):e.createCommentVNode("",!0),a.previewColumns.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidTable),{key:1,columns:a.previewColumns,data:a.preview},null,8,["columns","data"])):(e.openBlock(),e.createElementBlock("div",oD,e.toDisplayString(e.unref(p.trSafe)("Host не передал previewColumns/preview.")),1))]),_:1})):(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:3,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",cD,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("4. Импорт")),1)]),a.progress?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.progress.total>0?(e.openBlock(),e.createBlock(e.unref(u.UidProgress),{key:0,"model-value":a.progress.created+a.progress.updated+a.progress.errors,max:a.progress.total},null,8,["model-value","max"])):e.createCommentVNode("",!0),e.createElementVNode("div",iD,[e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Создано"),value:a.progress.created,tone:"success"},null,8,["title","value"]),e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Обновлено"),value:a.progress.updated,tone:"info"},null,8,["title","value"]),e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Ошибки"),value:a.progress.errors,tone:"danger"},null,8,["title","value"])])],64)):(e.openBlock(),e.createElementBlock("div",rD,e.toDisplayString(e.unref(p.trSafe)("Запускается импорт…")),1))]),_:1})),e.createElementVNode("footer",lD,[g.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",onClick:B[0]||(B[0]=b=>i(d.value-1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Назад")),1)]),_:1})):e.createCommentVNode("",!0),B[3]||(B[3]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),d.value===0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"primary",disabled:!k.value,onClick:B[1]||(B[1]=b=>i(1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Далее")),1)]),_:1},8,["disabled"])):d.value===1?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,variant:"primary",disabled:!k.value,onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Подтвердить mapping")),1)]),_:1},8,["disabled"])):d.value===2?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:3,variant:"primary",onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Запустить импорт")),1)]),_:1})):e.createCommentVNode("",!0)])]))}}),sD={class:"admin-page admin-field-gallery"},uD={class:"admin-gallery__group-title"},hD={class:"admin-gallery__grid"},yD={class:"admin-gallery__card-hd"},pD={class:"admin-gallery__card-title"},kD={class:"admin-gallery__card-type"},mD={class:"admin-gallery__card-desc"},fD={class:"admin-gallery__card-demo"},vD=e.defineComponent({__name:"FieldGalleryPage",setup(a){const n=[{type:"text",group:"Текстовые",title:"Input",description:"Простой текстовый input. type=email/url/password/tel доступны через inputType.",node:{type:"text",name:"demo_text",label:"Заголовок статьи",placeholder:"Например: Введение в Laravel"},initial:{demo_text:"Hello World"}},{type:"textarea",group:"Текстовые",title:"Textarea",description:"Многострочный input с настраиваемым числом rows.",node:{type:"textarea",name:"demo_textarea",label:"Описание",rows:4},initial:{demo_textarea:"Multi-line text..."}},{type:"number",group:"Текстовые",title:"NumberInput",description:"Числовой input. Empty/NaN автоматически конвертируются в null.",node:{type:"number",name:"demo_number",label:"Цена",min:0,max:1e3},initial:{demo_number:42}},{type:"select",group:"Выбор",title:"Select",description:"Single-select с options. Поддерживает searchable + clearable.",node:{type:"select",name:"demo_select",label:"Категория",options:[{value:"frontend",label:"Frontend"},{value:"backend",label:"Backend"},{value:"devops",label:"DevOps"}]},initial:{demo_select:"backend"}},{type:"checkbox",group:"Выбор",title:"Checkbox",description:"Boolean toggle. inlineLabel рядом с боксом.",node:{type:"checkbox",name:"demo_checkbox",label:"Опубликовать",inlineLabel:"Сделать доступным всем"},initial:{demo_checkbox:!0}},{type:"date",group:"Дата/время",title:"DatePicker",description:"date / datetime-local / time через inputType.",node:{type:"date",name:"demo_date",label:"Дата публикации",inputType:"date"},initial:{demo_date:"2026-05-01"}}],o=n.reduce((l,c)=>(l[c.group]||(l[c.group]=[]),l[c.group].push(c),l),{}),r=e.reactive(n.reduce((l,c)=>Object.assign(l,c.initial),{}));return de.provideFormState(r),(l,c)=>(e.openBlock(),e.createElementBlock("section",sD,[c[0]||(c[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),(d,i)=>(e.openBlock(),e.createElementBlock("section",{key:i,class:"admin-gallery__group"},[e.createElementVNode("h2",uD,e.toDisplayString(i),1),e.createElementVNode("div",hD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d,s=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:s.type+s.title,padding:"md",class:"admin-gallery__card"},{default:e.withCtx(()=>[e.createElementVNode("header",yD,[e.createElementVNode("h3",pD,e.toDisplayString(s.title),1),e.createElementVNode("code",kD,"type: "+e.toDisplayString(s.type),1)]),e.createElementVNode("p",mD,e.toDisplayString(s.description),1),e.createElementVNode("div",fD,[e.createVNode(QM,{node:s.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.tRaw=p.tRaw;exports.trSafe=p.trSafe;exports.useI18nStore=p.useI18nStore;exports.provideFormState=de.provideFormState;exports.tryUseFormState=de.tryUseFormState;exports.useFormState=de.useFormState;exports.AdminApp=uI;exports.AdminShell=sI;exports.AdminSidebar=lI;exports.AdminTopBar=rI;exports.ApiError=ve;exports.BRAND_KEY=L9;exports.BadgeEntry=cw;exports.BarChartWidget=F9;exports.CheckboxField=ao;exports.ColumnsLayout=aw;exports.DashboardPage=_9;exports.DateField=Pe;exports.DonutChartWidget=P9;exports.FieldGalleryPage=vD;exports.FieldRenderer=QM;exports.ForbiddenError=nI;exports.ForbiddenPage=vI;exports.GaugeWidget=ZI;exports.GlobalSearch=dI;exports.HeatmapWidget=OI;exports.HomePage=fI;exports.IconEntry=rw;exports.ImportWizardPage=dD;exports.InfolistRenderer=DI;exports.KeyValueEntry=OM;exports.LayoutRenderer=Ln;exports.LocaleSwitcher=w9;exports.LoginForm=bI;exports.LoginPage=_I;exports.MarkdownWidget=WI;exports.NetworkError=uc;exports.NotFoundError=oI;exports.NotFoundPage=gI;exports.NotificationBell=aI;exports.NotificationsDrawer=Oz;exports.NumberField=$M;exports.ProfilePage=$I;exports.RecentTableWidget=UM;exports.ResourceFormPage=p9;exports.ResourceIndexPage=VI;exports.ResourceViewPage=EI;exports.RowsLayout=WM;exports.ScreenPage=LI;exports.SectionLayout=Bn;exports.SelectField=xe;exports.SettingsPage=MI;exports.StatWidget=g9;exports.TabsLayout=nw;exports.TextAreaField=RM;exports.TextEntry=ae;exports.TextField=Ae;exports.ThemeToggle=I9;exports.TwoFactorForm=SI;exports.UnauthenticatedError=x9;exports.UnknownEntry=zI;exports.UnknownField=A9;exports.UnknownScreenPage=Sz;exports.UnknownWidget=b9;exports.UserMenu=cI;exports.ValidationError=On;exports.WidgetRenderer=S9;exports.buildRoutesFromManifest=JI;exports.clearAdminClient=eI;exports.clearInfolistRegistry=ZS;exports.clearRegistry=IL;exports.clearWidgetRegistry=Kx;exports.createAdminApp=Iz;exports.createAdminClient=XI;exports.createAdminRouter=ew;exports.createAuthGuard=YI;exports.createTitleGuard=QI;exports.getAdminClient=ne;exports.getField=q9;exports.getInfolistEntry=GM;exports.getLayout=y9;exports.getWidget=pI;exports.hasAdminClient=tI;exports.hasField=wI;exports.hasInfolistEntry=$S;exports.hasLayout=CI;exports.hasWidget=kI;exports.isError=NV;exports.isSuccess=KI;exports.listFields=gL;exports.listInfolistEntries=OS;exports.listLayouts=ML;exports.listWidgets=mI;exports.loadBootstrap=_z;exports.provideRecord=V9;exports.readCsrfFromMeta=Bz;exports.readInlineBootstrap=lw;exports.registerBuiltinComponents=ow;exports.registerBuiltinInfolistEntries=iw;exports.registerBuiltinWidgets=GI;exports.registerComponents=wL;exports.registerField=II;exports.registerInfolistEntries=AI;exports.registerInfolistEntry=RS;exports.registerLayout=xI;exports.registerWidget=yI;exports.registerWidgets=Xx;exports.setAdminClient=M9;exports.toApiError=h9;exports.tryUseRecord=Wn;exports.useAuthStore=ge;exports.useBrand=yc;exports.useLocaleStore=Qe;exports.useManifestStore=pe;exports.useMenuStore=hc;exports.useNotificationsStore=sc;exports.useRecord=vL;exports.useResourceFormStore=e9;exports.useResourceIndexStore=z9;exports.useThemeStore=XM;
|
|
5
|
+
`)),Q.success(p.trSafe("Recovery-коды скопированы."))}catch{Q.warning(p.trSafe("Скопируйте вручную."))}}const D=e.computed(()=>c.value.match(/.{1,4}/g)?.join(" ")??c.value),z=e.computed(()=>{if(d.value==="")return"";try{const B=v9(d.value,{minCorrectionLevel:O_.M});return rB(B,{on:"#18181b",off:"transparent",padX:1,padY:1})}catch{return""}});return(B,b)=>(e.openBlock(),e.createElementBlock("div",iB,[l.value==="idle"?(e.openBlock(),e.createElementBlock("div",lB,[e.createElementVNode("p",dB,e.toDisplayString(e.unref(p.trSafe)("Двухфакторная аутентификация добавляет второй слой защиты — даже если пароль попадёт"))+" "+e.toDisplayString(e.unref(p.trSafe)("в чужие руки, без OTP-кода из приложения войти не получится.")),1),e.createVNode(e.unref(u.UidButton),{variant:"primary",loading:y.value,"data-testid":"2fa-enable",onClick:v},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ko),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Включить 2FA")),1)]),_:1},8,["loading"]),m.value?(e.openBlock(),e.createElementBlock("p",sB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0)])):l.value==="setup"?(e.openBlock(),e.createElementBlock("div",uB,[e.createElementVNode("ol",hB,[e.createElementVNode("li",null,e.toDisplayString(e.unref(p.trSafe)("Откройте Authenticator-приложение (Google Authenticator, 1Password, Authy…).")),1),e.createElementVNode("li",null,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Добавьте новый аккаунт вручную, скопировав ключ:"))+" ",1),e.createElementVNode("div",yB,[e.createElementVNode("code",null,e.toDisplayString(D.value),1),e.createElementVNode("button",{type:"button",class:"admin-2fa__copy",onClick:k},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(zn),size:12},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Копировать")),1)])]),e.renderSlot(B.$slots,"qr-code",{uri:d.value},()=>[z.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"admin-2fa__qr",innerHTML:z.value},null,8,pB)):(e.openBlock(),e.createElementBlock("p",kB,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Либо отсканируйте QR с другого устройства — поделитесь URI:"))+" ",1),e.createElementVNode("code",mB,e.toDisplayString(d.value),1)]))])]),e.createElementVNode("li",null,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Введите 6-значный код из приложения:"))+" ",1),e.createElementVNode("div",fB,[e.createVNode(e.unref(u.UidInput),{modelValue:i.value,"onUpdate:modelValue":b[0]||(b[0]=L=>i.value=L),"data-testid":"2fa-code",placeholder:"123456",maxlength:"6",class:"admin-2fa__code-input"},null,8,["modelValue"]),e.createVNode(e.unref(u.UidButton),{variant:"primary",loading:y.value,disabled:i.value.length<4,"data-testid":"2fa-confirm",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Подтвердить")),1)]),_:1},8,["loading","disabled"])])])]),m.value?(e.openBlock(),e.createElementBlock("p",vB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0)])):l.value==="confirmed"?(e.openBlock(),e.createElementBlock("div",gB,[e.createElementVNode("p",MB,e.toDisplayString(e.unref(p.trSafe)("2FA активирована. Сохраните recovery-коды в безопасном месте — они нужны если вы"))+" "+e.toDisplayString(e.unref(p.trSafe)("потеряете доступ к Authenticator-приложению.")),1),e.createElementVNode("div",IB,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,L=>(e.openBlock(),e.createElementBlock("code",{key:L,class:"admin-2fa__codes-item"},e.toDisplayString(L),1))),128))]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:w},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(zn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Скопировать все")),1)]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"primary",onClick:b[1]||(b[1]=L=>l.value="enabled")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Готово")),1)]),_:1})])):l.value==="enabled"?(e.openBlock(),e.createElementBlock("div",wB,[e.createElementVNode("p",xB,e.toDisplayString(e.unref(p.trSafe)("2FA включена. Если у вас остался доступ к Authenticator app — всё в порядке.")),1),e.createElementVNode("div",CB,[e.createVNode(e.unref(u.UidInput),{modelValue:h.value,"onUpdate:modelValue":b[2]||(b[2]=L=>h.value=L),type:"password",placeholder:e.unref(p.trSafe)("Текущий пароль")},null,8,["modelValue","placeholder"]),e.createVNode(e.unref(u.UidButton),{variant:"secondary",loading:y.value,onClick:g},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Tn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Перегенерировать recovery-коды")),1)]),_:1},8,["loading"]),e.createVNode(e.unref(u.UidButton),{variant:"danger",loading:y.value,"data-testid":"2fa-disable",onClick:f},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Xo),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Отключить 2FA")),1)]),_:1},8,["loading"])]),m.value?(e.openBlock(),e.createElementBlock("p",LB,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0),s.value.length>0?(e.openBlock(),e.createElementBlock("div",bB,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,L=>(e.openBlock(),e.createElementBlock("code",{key:L,class:"admin-2fa__codes-item"},e.toDisplayString(L),1))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),_B={class:"admin-page admin-profile"},BB={class:"admin-page__hd"},VB={class:"admin-page__title-wrap"},qB={class:"admin-page__title"},AB={class:"admin-page__count"},zB={class:"admin-profile__layout"},DB={class:"admin-profile__nav","aria-label":"Profile sections"},EB=["onClick"],NB=["data-icon"],HB={class:"admin-profile__content"},FB={class:"admin-profile__card-hd"},PB={class:"admin-profile__card-title"},TB={class:"admin-profile__hero"},jB={class:"admin-profile__hero-text"},UB={class:"admin-profile__hero-name"},RB={class:"admin-profile__hero-meta"},$B={class:"admin-profile__form"},OB={class:"admin-profile__card-ft"},ZB={class:"admin-profile__card-hd"},WB={class:"admin-profile__card-title"},GB={class:"admin-profile__hint"},$I=e.defineComponent({__name:"ProfilePage",props:{title:{default:"Profile"},subtitle:{default:void 0},section:{default:"general"}},emits:["update:section","avatar-replace","two-factor-disable","two-factor-regenerate","save"],setup(a,{emit:n}){const o=a,r=n,l=ge(),c=XM(),d=Qe(),i=[{id:"general",label:p.trSafe("Основное"),icon:"user"},{id:"security",label:p.trSafe("Безопасность"),icon:"shield"},{id:"tokens",label:p.trSafe("API токены"),icon:"key"},{id:"sessions",label:p.trSafe("Сессии"),icon:"monitor"}],s=e.ref(o.section);function h(z){s.value=z,r("update:section",z)}const y=e.ref({name:l.user?.name??"",email:l.user?.email??"",locale:d.current,theme:c.current}),m=e.computed(()=>d.available.map(z=>({value:z,label:z.toUpperCase()}))),v=e.computed(()=>c.available.map(z=>({value:z,label:z==="dark"?p.trSafe("Тёмная"):z==="light"?p.trSafe("Светлая"):z})));e.watch(()=>y.value.locale,(z,B)=>{z===B||!z||d.setLocale(z).then(()=>{typeof window<"u"&&window.location.reload()}).catch(()=>{})}),e.watch(()=>y.value.theme,(z,B)=>{z===B||!z||c.setTheme(z).catch(()=>{})});function M(){r("save",{...y.value})}function f(){r("avatar-replace")}const g=e.ref(!!l.user?.twoFactorEnabled),k=e.computed(()=>g.value);function w(){g.value=!0,l.user&&(l.user.twoFactorEnabled=!0),r("two-factor-regenerate")}function D(){g.value=!1,l.user&&(l.user.twoFactorEnabled=!1),r("two-factor-disable")}return(z,B)=>(e.openBlock(),e.createElementBlock("section",_B,[e.createElementVNode("header",BB,[e.createElementVNode("div",VB,[e.createElementVNode("h1",qB,e.toDisplayString(a.title),1),e.createElementVNode("div",AB,e.toDisplayString(a.subtitle??e.unref(p.trSafe)("Личные данные, безопасность, токены")),1)])]),e.createElementVNode("div",zB,[e.createElementVNode("nav",DB,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,b=>e.createElementVNode("button",{key:b.id,type:"button",class:e.normalizeClass(["admin-profile__nav-item",{"admin-profile__nav-item--active":s.value===b.id}]),onClick:L=>h(b.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":b.icon},null,8,NB),e.createElementVNode("span",null,e.toDisplayString(b.label),1)],10,EB)),64))]),e.createElementVNode("div",HB,[s.value==="general"?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",FB,[e.createElementVNode("h3",PB,e.toDisplayString(e.unref(p.trSafe)("Профиль")),1)]),e.createElementVNode("div",TB,[e.createVNode(e.unref(u.UidAvatar),{src:e.unref(l).user?.avatar??void 0,name:e.unref(l).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",jB,[e.createElementVNode("div",UB,e.toDisplayString(e.unref(l).user?.name??"—"),1),e.createElementVNode("div",RB,e.toDisplayString(e.unref(l).user?.email??"—"),1)]),B[4]||(B[4]=e.createElementVNode("div",{style:{flex:"1"}},null,-1)),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Заменить")),1)]),_:1})]),e.createElementVNode("div",$B,[e.createVNode(e.unref(u.UidInput),{modelValue:y.value.name,"onUpdate:modelValue":B[0]||(B[0]=b=>y.value.name=b),label:e.unref(p.trSafe)("Имя"),name:"name"},null,8,["modelValue","label"]),e.createVNode(e.unref(u.UidInput),{modelValue:y.value.email,"onUpdate:modelValue":B[1]||(B[1]=b=>y.value.email=b),label:"Email",type:"email",name:"email"},null,8,["modelValue"]),e.createVNode(e.unref(u.UidSelect),{modelValue:y.value.locale,"onUpdate:modelValue":B[2]||(B[2]=b=>y.value.locale=b),options:m.value,label:e.unref(p.trSafe)("Язык")},null,8,["modelValue","options","label"]),e.createVNode(e.unref(u.UidSelect),{modelValue:y.value.theme,"onUpdate:modelValue":B[3]||(B[3]=b=>y.value.theme=b),options:v.value,label:e.unref(p.trSafe)("Тема")},null,8,["modelValue","options","label"])]),e.createElementVNode("footer",OB,[e.createVNode(e.unref(u.UidButton),{variant:"primary",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Сохранить")),1)]),_:1})])]),_:1})):s.value==="security"?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:1,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",ZB,[e.createElementVNode("h3",WB,e.toDisplayString(e.unref(p.trSafe)("Двухфакторная аутентификация")),1),e.createVNode(e.unref(u.UidBadge),{variant:k.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value?e.unref(p.trSafe)("Включена"):e.unref(p.trSafe)("Отключена")),1)]),_:1},8,["variant"])]),e.renderSlot(z.$slots,"enable-2fa",{},()=>[e.createVNode(SB,{enabled:k.value,onEnabled:w,onDisabled:D},null,8,["enabled"])])]),_:3})):e.renderSlot(z.$slots,s.value,{section:s.value},()=>[e.createVNode(e.unref(u.UidCard),{padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("p",GB," Section «"+e.toDisplayString(s.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(s.value)+". ",1)]),_:1})],void 0,2)])])]))}}),g9=e.defineComponent({__name:"StatWidget",props:{title:{default:""},stats:{default:()=>[]},value:{default:0},prefix:{default:""},suffix:{default:""},trend:{default:void 0},precision:{default:0},tone:{default:"neutral"},loading:{type:Boolean,default:!1}},setup(a){const n=a,o={neutral:"primary",positive:"success",negative:"danger",warning:"warning",info:"info"},r=e.computed(()=>o[n.tone]),l=e.computed(()=>n.stats[0]??{}),c=e.computed(()=>l.value.label??n.title??""),d=e.computed(()=>l.value.value??n.value),i=e.computed(()=>l.value.prefix??n.prefix),s=e.computed(()=>l.value.suffix??n.suffix),h=e.computed(()=>{const y=l.value.change;return y&&typeof y.delta=="number"?y.delta:n.trend});return(y,m)=>(e.openBlock(),e.createBlock(e.unref(u.UidStat),{title:a.title||c.value,value:d.value,prefix:i.value,suffix:s.value,trend:h.value,precision:a.precision,tone:r.value,loading:a.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),KB={key:0,class:"admin-widget__hd"},XB={key:0,class:"admin-widget__title"},JB={key:1,class:"admin-widget__desc"},YB={key:1,class:"admin-widget__empty"},QB=["viewBox","height","aria-label"],eV=["x","y","width","height","fill","data-label","data-value"],F9=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(a){const n=a,o=e.computed(()=>n.data.length===0||n.data.every(c=>!c.value)),r=e.computed(()=>Math.max(1,...n.data.map(c=>c.value))),l=e.computed(()=>{const d=100/Math.max(1,n.data.length);return n.data.map((i,s)=>({label:i.label,value:i.value,x:s*d+d*.1,width:d*.8,heightPct:i.value/r.value*100}))});return(c,d)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title||a.description?(e.openBlock(),e.createElementBlock("header",KB,[a.title?(e.openBlock(),e.createElementBlock("h3",XB,e.toDisplayString(a.title),1)):e.createCommentVNode("",!0),a.description?(e.openBlock(),e.createElementBlock("p",JB,e.toDisplayString(a.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),o.value?(e.openBlock(),e.createElementBlock("div",YB,e.toDisplayString(e.unref(p.trSafe)("Нет данных за период")),1)):(e.openBlock(),e.createElementBlock("svg",{key:2,class:"admin-widget-bar-chart",viewBox:`0 0 100 ${a.height}`,preserveAspectRatio:"none",height:a.height,width:"100%",role:"img","aria-label":a.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(i,s)=>(e.openBlock(),e.createElementBlock("rect",{key:s,x:i.x,y:a.height-i.heightPct/100*a.height,width:i.width,height:i.heightPct/100*a.height,fill:a.accent,rx:"1","data-label":i.label,"data-value":i.value},[e.createElementVNode("title",null,e.toDisplayString(i.label)+": "+e.toDisplayString(i.value),1)],8,eV))),128))],8,QB))]),_:1}))}}),tV={key:0,class:"admin-widget__hd"},aV={class:"admin-widget__title"},nV={key:1,class:"admin-widget__empty"},oV={key:2,class:"admin-donut-widget__row"},cV=["aria-label"],rV=["d","fill"],iV={class:"admin-donut-widget__legend"},lV={class:"admin-donut-widget__label"},dV={class:"admin-donut-widget__value"},P9=e.defineComponent({__name:"DonutChartWidget",props:{title:{default:""},data:{}},setup(a){const n=a,o=["var(--uid-color-teal-500, #14b8a6)","var(--uid-color-zinc-700, #3f3f46)","var(--uid-color-amber-400, #fbbf24)","var(--uid-color-rose-400, #fb7185)","var(--uid-color-blue-400, #60a5fa)"],r=e.computed(()=>n.data.length===0||n.data.every(d=>!d.value)),l=e.computed(()=>n.data.reduce((d,i)=>d+i.value,0)||1),c=e.computed(()=>{let d=0;return n.data.map((i,s)=>{const h=d/l.value*2*Math.PI;d+=i.value;const y=d/l.value*2*Math.PI,m=50,v=60,M=60,f=v+m*Math.cos(h-Math.PI/2),g=M+m*Math.sin(h-Math.PI/2),k=v+m*Math.cos(y-Math.PI/2),w=M+m*Math.sin(y-Math.PI/2),D=y-h>Math.PI?1:0,z=n.data.length===1?`M ${v-m} ${M} a ${m} ${m} 0 1 0 ${m*2} 0 a ${m} ${m} 0 1 0 ${-m*2} 0`:`M ${v} ${M} L ${f} ${g} A ${m} ${m} 0 ${D} 1 ${k} ${w} Z`;return{...i,path:z,color:i.color??o[s%o.length],pct:(i.value/l.value*100).toFixed(1)}})});return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-donut-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",tV,[e.createElementVNode("h3",aV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",nV,e.toDisplayString(e.unref(p.trSafe)("Нет данных")),1)):(e.openBlock(),e.createElementBlock("div",oV,[(e.openBlock(),e.createElementBlock("svg",{viewBox:"0 0 120 120",class:"admin-donut-widget__svg",role:"img","aria-label":a.title},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(s,h)=>(e.openBlock(),e.createElementBlock("path",{key:h,d:s.path,fill:s.color},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value)+" ("+e.toDisplayString(s.pct)+"%)",1)],8,rV))),128)),i[0]||(i[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,cV)),e.createElementVNode("ul",iV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(s,h)=>(e.openBlock(),e.createElementBlock("li",{key:h},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("span",lV,e.toDisplayString(s.label),1),e.createElementVNode("span",dV,e.toDisplayString(s.pct)+"%",1)]))),128))])]))]),_:1}))}}),sV={key:0,class:"admin-widget__hd"},uV={class:"admin-widget__title"},hV=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{default:()=>[]},rows:{default:()=>[]},emptyText:{default:"Нет данных"},linkTo:{default:null}},setup(a){const n=a,o=re.useRouter();function r(d){const i=d.id;!n.linkTo||i===void 0||i===null||o?.push(`/r/${n.linkTo}/${i}`)}const l=e.computed(()=>n.columns.map(d=>{const i=d.column??d.key;return{key:String(i??""),label:d.label,align:d.align}})),c=e.computed(()=>n.rows.map(d=>{const i={...d};for(const s of l.value)i[s.key]=pc(d[s.key],void 0,{});return i}));return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",sV,[e.createElementVNode("h3",uV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidTable),{columns:l.value,data:c.value,"empty-text":e.unref(p.trSafe)(a.emptyText),class:e.normalizeClass({"admin-widget__table--clickable":!!a.linkTo}),onRowClick:r},null,8,["columns","data","empty-text","class"])]),_:1}))}}),UM=be(hV,[["__scopeId","data-v-fbaa3502"]]),yV={key:0,class:"admin-widget__hd"},pV={class:"admin-widget__title"},kV={class:"admin-heatmap__cols-axis","aria-hidden":"true"},mV={class:"admin-heatmap__row-label"},fV={class:"admin-heatmap__cells"},vV=["title"],gV={key:2,class:"admin-heatmap__empty"},OI=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},rows:{default:()=>[]},cols:{default:()=>[]},matrix:{default:()=>[]},formatValue:{type:Function,default:void 0},color:{default:"var(--uid-color-primary, #14b8a6)"}},setup(a){const n=a,o=e.computed(()=>{let c=0;for(const d of n.matrix)for(const i of d)typeof i=="number"&&i>c&&(c=i);return c||1});function r(c){return typeof c!="number"||c<=0?0:Math.max(.1,Math.min(1,c/o.value))}function l(c,d,i){const s=n.rows[d]??"",h=n.cols[i]??"";return n.formatValue?n.formatValue(c,s,h):`${s} ${h}: ${c}`}return(c,d)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-heatmap-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",yV,[e.createElementVNode("h3",pV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.rows.length>0&&a.cols.length>0&&a.matrix.length>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"admin-heatmap",style:e.normalizeStyle({"--admin-heatmap-cols":a.cols.length})},[e.createElementVNode("div",kV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.cols,(i,s)=>(e.openBlock(),e.createElementBlock("span",{key:`c-${s}`,class:"admin-heatmap__col-label"},e.toDisplayString(s%3===0?i:""),1))),128))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.matrix,(i,s)=>(e.openBlock(),e.createElementBlock("div",{key:`r-${s}`,class:"admin-heatmap__row"},[e.createElementVNode("span",mV,e.toDisplayString(a.rows[s]??""),1),e.createElementVNode("div",fV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i,(h,y)=>(e.openBlock(),e.createElementBlock("span",{key:`cell-${s}-${y}`,class:"admin-heatmap__cell",style:e.normalizeStyle({background:a.color,opacity:r(h)}),title:l(h,s,y)},null,12,vV))),128))])]))),128))],4)):(e.openBlock(),e.createElementBlock("div",gV,e.toDisplayString(e.unref(p.trSafe)("Нет данных")),1))]),_:1}))}}),MV={key:0,class:"admin-widget__hd"},IV={class:"admin-widget__title"},wV={class:"admin-gauge-widget__body"},ZI=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:220},ranges:{default:()=>[]},thresholds:{default:()=>[]},unit:{default:""},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(a){const n=a,o={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},r=e.computed(()=>o[n.tone]),l=e.computed(()=>n.ranges.length>0?n.ranges:n.thresholds),c=e.computed(()=>n.suffix||n.unit||"");return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",MV,[e.createElementVNode("h3",IV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",wV,[e.createVNode(e.unref(u.UidGauge),{value:a.value,min:a.min,max:a.max,size:a.size,ranges:l.value,tone:r.value,color:a.color,label:a.label,suffix:c.value,precision:a.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),xV={key:0,class:"admin-widget__hd"},CV={class:"admin-widget__title"},LV={class:"admin-markdown-widget"},WI=e.defineComponent({__name:"MarkdownWidget",props:{title:{default:""},content:{}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",xV,[e.createElementVNode("h3",CV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",LV,e.toDisplayString(a.content),1)]),_:1}))}}),bV=e.defineComponent({__name:"ChartWidget",props:{type:{},title:{},size:{},data:{}},setup(a){const n=a,o=e.computed(()=>n.data?.chartType??n.data?.type??"bar"),r=["#10b981","#f59e0b","#9ca3af","#3b82f6","#dc2626","#a855f7","#ec4899"],l=e.computed(()=>{const i=n.data?.datasets?.[0];return i?i.data.map((s,h)=>({label:n.data?.labels?.[h]??String(h+1),value:s})):[]}),c=e.computed(()=>n.data?.datasets?.[0]?.color),d=e.computed(()=>{const i=n.data?.datasets?.[0];return i?i.data.map((s,h)=>({label:n.data?.labels?.[h]??String(h+1),value:s,color:i.color??r[h%r.length]})):[]});return(i,s)=>o.value==="doughnut"||o.value==="pie"?(e.openBlock(),e.createBlock(P9,{key:0,title:a.title,data:d.value},null,8,["title","data"])):o.value==="bar"||o.value==="line"||o.value==="area"?(e.openBlock(),e.createBlock(F9,{key:1,title:a.title,data:l.value,accent:c.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(b9,{key:2,type:`chart:${o.value}`},null,8,["type"]))}}),SV={key:0,class:"admin-widget__hd"},_V={class:"admin-widget__title"},BV=e.defineComponent({__name:"TableWidget",props:{title:{default:""},columns:{default:()=>[]},rows:{default:()=>[]},emptyText:{default:"Нет данных"}},setup(a){const n=a,o=e.computed(()=>n.columns.map(l=>({key:l.name,label:l.label,align:l.align,width:l.width??void 0}))),r=e.computed(()=>n.rows.map(l=>{const c={...l};for(const d of n.columns)c[d.name]=pc(l[d.name],d.preset??void 0,d.meta??{});return c}));return(l,c)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",SV,[e.createElementVNode("h3",_V,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidTable),{columns:o.value,data:r.value,"empty-text":e.unref(p.trSafe)(a.emptyText)},null,8,["columns","data","empty-text"])]),_:1}))}}),VV={key:0,class:"admin-widget__hd"},qV={class:"admin-widget__title"},AV=["src","sandbox"],zV={key:2,class:"admin-widget__empty"},DV=e.defineComponent({__name:"IframeWidget",props:{title:{default:""},src:{default:""},height:{default:null},sandbox:{default:"allow-scripts allow-same-origin"}},setup(a){const n=a,o=e.computed(()=>({height:n.height?`${n.height}px`:"320px"}));return(r,l)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-widget admin-widget--iframe"},{default:e.withCtx(()=>[a.title?(e.openBlock(),e.createElementBlock("header",VV,[e.createElementVNode("h3",qV,e.toDisplayString(a.title),1)])):e.createCommentVNode("",!0),a.src?(e.openBlock(),e.createElementBlock("iframe",{key:1,src:a.src,sandbox:a.sandbox,style:e.normalizeStyle(o.value),class:"admin-widget__iframe",loading:"lazy",referrerpolicy:"no-referrer"},null,12,AV)):(e.openBlock(),e.createElementBlock("p",zV,e.toDisplayString(e.unref(p.trSafe)("Не задан src")),1))]),_:1}))}}),EV=be(DV,[["__scopeId","data-v-ff47a97f"]]);function GI(){(n=>{for(const[o,r]of Object.entries(n))kI(o)||yI(o,r)})({stat:g9,stats:g9,chart:bV,"bar-chart":F9,"donut-chart":P9,"recent-table":UM,recent_list:UM,"recent-list":UM,heatmap:OI,gauge:ZI,markdown:WI,table:BV,iframe:EV})}function KI(a){return a.success===!0}function NV(a){return a.success===!1}function XI(a){const n=Cw.create({baseURL:a.baseURL,withCredentials:!0,headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});a.csrfToken&&(n.defaults.headers.common["X-CSRF-TOKEN"]=a.csrfToken),a.locale&&(n.defaults.headers.common["X-Admin-Locale"]=a.locale),n.interceptors.request.use(l=>{const c=HV("XSRF-TOKEN");return c&&(l.headers.set("X-XSRF-TOKEN",decodeURIComponent(c)),l.headers.delete("X-CSRF-TOKEN")),l}),n.interceptors.response.use(l=>{const c=l.data;if(c&&typeof c=="object"&&"success"in c){if(KI(c))return l.data=c.payload,l;throw h9(l.status,c.payload)}return l},l=>{if(l.response){const c=l.response.status,d=l.response.data?.payload??{errorKey:"unknown",message:l.message},i=h9(c,d);return i instanceof x9&&a.onUnauthenticated?.(),Promise.reject(i)}return Promise.reject(new uc(l.message))});const o=(l,c,d)=>n[l](c,d).then(i=>i.data),r=(l,c,d,i)=>n[l](c,d,i).then(s=>s.data);return{raw:n,get:(l,c)=>o("get",l,c),delete:(l,c)=>o("delete",l,c),post:(l,c,d)=>r("post",l,c,d),put:(l,c,d)=>r("put",l,c,d),patch:(l,c,d)=>r("patch",l,c,d),setLocale:l=>{n.defaults.headers.common["X-Admin-Locale"]=l},clearLocale:()=>{delete n.defaults.headers.common["X-Admin-Locale"]}}}function HV(a){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+FV(a)+"=([^;]*)"));return n?n[2]:null}function FV(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wc(a,n){const o=a.permissions?.[n];return typeof o=="string"&&o.length>0?[o]:[]}function PV(a,n){const o=a.permissions?.[n];return typeof o=="string"&&o.length>0?[o]:[]}function TV(a){return Array.isArray(a.permission)?a.permission:typeof a.permission=="string"&&a.permission.length>0?[a.permission]:[]}function jV(a,n){const o=a.slug,r=`/r/${o}`;return[{path:r,name:`admin.resource.${o}.index`,component:n.resourceIndex,meta:{requiresAuth:!0,kind:"resource",slug:o,title:a.label,permissions:wc(a,"view")},props:{slug:o}},{path:`${r}/create`,name:`admin.resource.${o}.create`,component:n.resourceCreate,meta:{requiresAuth:!0,kind:"resource",slug:o,title:`${a.label}: создать`,permissions:wc(a,"create")},props:{slug:o}},{path:`${r}/:id/edit`,name:`admin.resource.${o}.edit`,component:n.resourceEdit,meta:{requiresAuth:!0,kind:"resource",slug:o,title:`${a.label}: редактирование`,permissions:wc(a,"update")},props:l=>({slug:o,id:l.params.id})},{path:`${r}/:id`,name:`admin.resource.${o}.view`,component:n.resourceView,meta:{requiresAuth:!0,kind:"resource",slug:o,title:a.label,permissions:wc(a,"view")},props:l=>({slug:o,id:l.params.id})}]}function UV(a,n){return{path:`/screens/${a.slug}`,name:`admin.screen.${a.slug}`,component:n.screen,meta:{requiresAuth:!0,kind:"screen",slug:a.slug,title:a.name,permissions:TV(a)}}}function RV(a,n){return{path:`/settings/${a.slug}`,name:`admin.settings.${a.slug}`,component:n.settings,meta:{requiresAuth:!0,kind:"settings",slug:a.slug,title:a.label,permissions:PV(a,"view")}}}function $V(a,n){if(typeof a.slug!="string"||a.slug.length===0)return null;const o=a.permission,r=Array.isArray(o)?o:typeof o=="string"&&o.length>0?[o]:[];return{path:`/dashboard/${a.slug}`,name:`admin.dashboard.${a.slug}`,component:n.dashboard,meta:{requiresAuth:!0,kind:"dashboard",slug:a.slug,title:a.label??"Dashboard",permissions:r}}}function JI(a,n){if(a===null)return[];const o=[];for(const r of a.resources)o.push(...jV(r,n));for(const r of a.screens)o.push(UV(r,n));for(const r of a.settings)o.push(RV(r,n));for(const r of a.dashboards){const l=$V(r,n);l&&o.push(l)}return o}function YI(a={}){const n=a.loginRouteName??"admin.login",o=a.forbiddenRouteName??"admin.forbidden",r=a.redirectQueryKey??"redirect";return l=>{if(l.name===n)return!0;const c=ge();if(l.meta?.requiresAuth===!0&&!c.isAuthenticated)return{name:n,query:{[r]:l.fullPath}};if(c.isChallengePending)return{name:n,query:{[r]:l.fullPath}};const i=l.meta?.permissions;return Array.isArray(i)&&i.length>0&&!c.hasAnyPermission(i)?{name:o}:!0}}function QI(a={}){const n=a.template,o=a.brand??"",r=a.fallback??"";return l=>{if(typeof document>"u")return;const c=p.trSafe(l.meta?.title??r);let d;n?d=n.replace("{title}",c).replace("{brand}",o):c&&o?d=`${c} · ${o}`:d=c||o,document.title=d}}const OV=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function ZV(a){return typeof a!="string"?!1:OV.some(n=>a.startsWith(n))}function ew(a){const n=a.base??"/admin",o=a.history??re.createWebHistory(n),r=[{path:"/login",name:"admin.login",component:a.components.login,meta:{kind:"auth",title:"Вход"}},{path:"/",name:"admin.home",component:a.components.home,meta:{requiresAuth:!0,kind:"system",title:"Главная"}},{path:"/forbidden",name:"admin.forbidden",component:a.components.forbidden,meta:{requiresAuth:!0,kind:"system",title:"403 — доступ запрещён"}}];a.components.profile&&r.push({path:"/profile",name:"admin.profile",component:a.components.profile,meta:{requiresAuth:!0,kind:"system",title:"Профиль"}}),a.components.notifications&&r.push({path:"/notifications",name:"admin.notifications",component:a.components.notifications,meta:{requiresAuth:!0,kind:"system",title:"Уведомления"}}),a.components.forgotPassword&&r.push({path:"/forgot-password",name:"admin.forgotPassword",component:a.components.forgotPassword,meta:{kind:"auth",title:"Восстановление пароля"}}),a.components.resetPassword&&r.push({path:"/reset-password",name:"admin.resetPassword",component:a.components.resetPassword,meta:{kind:"auth",title:"Новый пароль"}});const l={path:"/:pathMatch(.*)*",name:"admin.notFound",component:a.components.notFound,meta:{kind:"system",title:"404",requiresAuth:!0}},c=re.createRouter({history:o,routes:[...r,...a.extraRoutes??[],l]});return c.beforeEach(YI(a.authGuard)),c.afterEach(QI(a.titleGuard)),c.replaceManifestRoutes=d=>{const i=c.getRoutes();for(const h of i)ZV(h.name)&&c.removeRoute(h.name);c.hasRoute("admin.notFound")&&c.removeRoute("admin.notFound");const s=JI(d,a.components);for(const h of s)c.addRoute(h);c.addRoute(l)},c}const Ae=e.defineComponent({__name:"TextField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},inputType:{default:"text"},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},autocomplete:{default:null}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidInput),{"model-value":r.value,type:a.inputType,label:a.label??void 0,hint:a.help??void 0,error:l.value,placeholder:a.placeholder??void 0,required:a.required,disabled:a.disabled,readonly:a.readonly,name:a.name,autocomplete:a.autocomplete??void 0,"onUpdate:modelValue":c},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),RM=e.defineComponent({__name:"TextAreaField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},rows:{default:4},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTextarea),{"model-value":r.value,rows:a.rows,placeholder:a.placeholder??void 0,disabled:a.disabled,readonly:a.readonly,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),$M=e.defineComponent({__name:"NumberField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},min:{default:null},max:{default:null},step:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const d=o.getField(n.name);return d==null||d===""?null:typeof d=="number"?d:Number(d)}),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidNumberInput),{"model-value":r.value,min:a.min??void 0,max:a.max??void 0,step:a.step??void 0,placeholder:a.placeholder??void 0,disabled:a.disabled,readonly:a.readonly,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),xe=e.defineComponent({__name:"SelectField",props:{name:{},options:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(a){const n=a,o=e.computed(()=>n.disabled||n.readonly),r=de.useFormState(),l=e.computed(()=>{const i=r.getField(n.name);return i==null||i===""?null:i}),c=e.computed(()=>r.errors[n.name]?.[0]);function d(i){r.setField(n.name,i)}return(i,s)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:c.value,required:a.required,disabled:o.value},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidSelect),{"model-value":l.value,options:a.options,placeholder:a.placeholder??void 0,disabled:o.value,searchable:a.searchable,clearable:a.clearable,size:a.size,"onUpdate:modelValue":d},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ao=e.defineComponent({__name:"CheckboxField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inlineLabel:{default:null},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>!!o.getField(n.name)),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{hint:a.help??void 0,error:l.value,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidCheckbox),{"model-value":r.value,disabled:a.disabled,required:a.required,name:a.name,label:a.inlineLabel??a.label??void 0,"onUpdate:modelValue":c},null,8,["model-value","disabled","required","name","label"])]),_:1},8,["hint","error","disabled"]))}}),Pe=e.defineComponent({__name:"DateField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inputType:{default:"date"},min:{default:null},max:{default:null},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const d=o.getField(n.name);return d==null||d===""?null:String(d)}),l=e.computed(()=>o.errors[n.name]?.[0]);function c(d){o.setField(n.name,d)}return(d,i)=>(e.openBlock(),e.createBlock(e.unref(u.UidFormField),{label:a.label??void 0,hint:a.help??void 0,error:l.value,required:a.required,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidDatePicker),{"model-value":r.value,min:a.min??void 0,max:a.max??void 0,disabled:a.disabled,name:a.name,"onUpdate:modelValue":c},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),WV={key:0,class:"admin-field__label"},GV={key:0,class:"admin-field__required","aria-hidden":"true"},KV={class:"admin-tags__chip-text"},XV=["aria-label","onClick"],JV=["value","placeholder","disabled"],YV={class:"admin-tags__group-label"},QV=["aria-selected","onMousedown","onMouseenter"],eq=["aria-selected","onMousedown","onMouseenter"],tq={key:1,class:"admin-field__error"},aq={key:2,class:"admin-field__help"},nq=e.defineComponent({__name:"TagsField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:"Введите ключ и нажмите Enter…"},suggestions:{default:()=>[]},suggestionsByGroup:{default:()=>[]},maxItems:{default:0},separator:{default:","},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const N=o.getField(n.name);return Array.isArray(N)?N.map(T=>String(T)):typeof N=="string"&&N!==""?N.split(",").map(T=>T.trim()).filter(Boolean):[]}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(""),d=e.ref(!1),i=e.ref(null),s=e.ref(null),h=e.ref(null),{floatingStyle:y,update:m}=u.usePopover(s,h,{placement:"bottom-start",offset:4}),v=e.ref(0);function M(){v.value=s.value?.getBoundingClientRect().width??0}const f=e.computed(()=>({...y.value,minWidth:v.value>0?`${v.value}px`:"auto"}));function g(N){const T=new Set,V=[];for(const I of N){const _=I.trim();if(!(_===""||T.has(_))&&(T.add(_),V.push(_),n.maxItems>0&&V.length>=n.maxItems))break}o.setField(n.name,V)}function k(N){const T=N.trim();if(T!==""){if(r.value.includes(T)){c.value="";return}g([...r.value,T]),c.value=""}}function w(N){const T=[...r.value];T.splice(N,1),g(T)}function D(N){N.key==="Enter"?(N.preventDefault(),B.value>=0&&S.value[B.value]?k(S.value[B.value]):c.value.trim()!==""&&k(c.value)):N.key==="Backspace"&&c.value===""&&r.value.length>0?w(r.value.length-1):N.key==="ArrowDown"?(N.preventDefault(),B.value=Math.min(B.value+1,S.value.length-1)):N.key==="ArrowUp"?(N.preventDefault(),B.value=Math.max(B.value-1,-1)):N.key==="Escape"&&(d.value=!1,i.value?.blur())}function z(N){const T=N.target.value;if(n.separator&&T.includes(n.separator)){const V=T.split(n.separator);V.slice(0,-1).map(_=>_.trim()).filter(Boolean).forEach(k),c.value=V[V.length-1]??"";return}c.value=T}const B=e.ref(-1),b=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),L=e.computed(()=>{const N=c.value.trim().toLowerCase(),T=new Set(r.value);return b.value?n.suggestionsByGroup.map(V=>({label:V.label,items:V.items.filter(I=>!T.has(I)&&(N===""||I.toLowerCase().includes(N)))})).filter(V=>V.items.length>0):[]}),S=e.computed(()=>{if(b.value)return L.value.flatMap(V=>V.items);const N=c.value.trim().toLowerCase(),T=new Set(r.value);return n.suggestions.filter(V=>!T.has(V)).filter(V=>N===""||V.toLowerCase().includes(N)).slice(0,200)});function C(N){return N===B.value}e.watch(c,()=>{B.value=-1});function A(){n.disabled||i.value?.focus()}function H(N){k(N),e.nextTick(()=>i.value?.focus())}function R(){window.setTimeout(()=>{d.value=!1,c.value.trim()!==""&&k(c.value)},120)}return e.watch(()=>d.value&&S.value.length>0,async N=>{N?(M(),await e.nextTick(),m(),requestAnimationFrame(()=>m()),window.addEventListener("resize",m),window.addEventListener("scroll",m,!0)):(window.removeEventListener("resize",m),window.removeEventListener("scroll",m,!0))}),(N,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":l.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",WV,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",GV,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:s,class:e.normalizeClass(["admin-field__control admin-tags",{"admin-tags--focused":d.value,"admin-tags--disabled":a.disabled}]),onClick:A},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(V,I)=>(e.openBlock(),e.createElementBlock("span",{key:`${V}-${I}`,class:"admin-tags__chip"},[e.createElementVNode("span",KV,e.toDisplayString(V),1),a.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-tags__chip-remove","aria-label":e.unref(p.trSafe)("Удалить"),onClick:e.withModifiers(_=>w(I),["stop"])},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:10},null,8,["icon"])],8,XV))]))),128)),e.createElementVNode("input",{ref_key:"inputRef",ref:i,value:c.value,placeholder:r.value.length===0?e.unref(p.trSafe)(a.placeholder??""):"",disabled:a.disabled,class:"admin-tags__input",type:"text",onInput:z,onKeydown:D,onFocus:T[0]||(T[0]=V=>d.value=!0),onBlur:R},null,40,JV),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.value&&S.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:h,class:"admin-tags__dropdown",role:"listbox",style:e.normalizeStyle(f.value)},[b.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(L.value,(V,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${I}-${V.label}`},[e.createElementVNode("div",YV,e.toDisplayString(V.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.items,_=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":C(S.value.indexOf(_))}]),"aria-selected":C(S.value.indexOf(_)),onMousedown:e.withModifiers(x=>H(_),["prevent"]),onMouseenter:x=>B.value=S.value.indexOf(_)},e.toDisplayString(_),43,QV))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(S.value,(V,I)=>(e.openBlock(),e.createElementBlock("button",{key:V,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":I===B.value}]),"aria-selected":I===B.value,onMousedown:e.withModifiers(_=>H(V),["prevent"]),onMouseenter:_=>B.value=I},e.toDisplayString(V),43,eq))),128))],4)):e.createCommentVNode("",!0)]))],2),l.value?(e.openBlock(),e.createElementBlock("p",tq,e.toDisplayString(l.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",aq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),oq={key:0,class:"admin-field__label"},cq={key:0,class:"admin-field__required","aria-hidden":"true"},rq={class:"admin-translatable"},iq={class:"admin-translatable__tabs",role:"tablist"},lq=["aria-selected","onClick"],dq={key:0,class:"admin-translatable__dot","aria-hidden":"true"},sq={class:"admin-translatable__panel"},uq=["value","placeholder","rows","disabled"],hq={key:1,class:"admin-field__error"},yq={key:2,class:"admin-field__help"},J9=e.defineComponent({__name:"TranslatableField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},locales:{default:void 0},multiline:{type:Boolean,default:!1},rows:{default:3},disabled:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=Qe(),l=e.computed(()=>n.locales??r.available??[r.current??"ru"]),c=e.ref(r.current??l.value[0]??"ru"),d=e.computed(()=>{const y=o.getField(n.name);return y&&typeof y=="object"&&!Array.isArray(y)?y:typeof y=="string"?{[c.value]:y}:{}});function i(y,m){const v={...d.value};v[y]=m,o.setField(n.name,v)}const s=e.computed(()=>{const y=o.errors[n.name];if(y?.[0])return y[0];for(const m of l.value){const v=o.errors[`${n.name}.${m}`]?.[0];if(v)return`[${m}] ${v}`}});function h(y){const m=d.value[y];return typeof m=="string"&&m.trim()!==""}return(y,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":s.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",oq,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",cq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",rq,[e.createElementVNode("div",iq,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,v=>(e.openBlock(),e.createElementBlock("button",{key:v,type:"button",role:"tab",class:e.normalizeClass(["admin-translatable__tab",{"admin-translatable__tab--active":c.value===v,"admin-translatable__tab--filled":h(v)}]),"aria-selected":c.value===v,onClick:M=>c.value=v},[e.createTextVNode(e.toDisplayString(v.toUpperCase())+" ",1),h(v)?(e.openBlock(),e.createElementBlock("span",dq)):e.createCommentVNode("",!0)],10,lq))),128))]),e.createElementVNode("div",sq,[a.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,value:d.value[c.value]??"",placeholder:a.placeholder??"",rows:a.rows,disabled:a.disabled,class:"admin-translatable__textarea",onInput:m[1]||(m[1]=v=>i(c.value,v.target.value))},null,40,uq)):(e.openBlock(),e.createBlock(e.unref(u.UidInput),{key:0,"model-value":d.value[c.value]??"",placeholder:a.placeholder??"",disabled:a.disabled,"onUpdate:modelValue":m[0]||(m[0]=v=>i(c.value,v))},null,8,["model-value","placeholder","disabled"]))])]),s.value?(e.openBlock(),e.createElementBlock("p",hq,e.toDisplayString(s.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",yq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),pq={key:0,class:"admin-field__label"},kq={key:0,class:"admin-field__required","aria-hidden":"true"},mq=["onMousedown"],fq={key:1,class:"admin-field__error"},vq={key:2,class:"admin-field__help"},gq=e.defineComponent({__name:"WysiwygField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},minHeight:{default:"200px"},maxHeight:{default:void 0}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>o.getField(n.name)??""),l=e.computed(()=>o.errors[n.name]?.[0]);function c(V){o.setField(n.name,V)}const d=e.ref(null),i=e.ref(null),s=e.ref(null);function h(V){d.value=V,L(V.host)}function y(){i.value?.click()}async function m(V){const I=V.target.files?.[0];if(V.target.value="",!(!I||!d.value))try{const _=new FormData;_.append("file",I);const x=await ne().post("/uploads/image",_,{headers:{"Content-Type":"multipart/form-data"}});d.value.chain().setImage(x.url,x.name).run()}catch(_){typeof console<"u"&&console.error("[admin] image upload failed:",_),Q.error(p.trSafe("Не удалось загрузить изображение."))}}function v(V){if(!d.value)return;const I=window.prompt(p.trSafe("URL ссылки (пусто — удалить ссылку):"),V??"");I!==null&&d.value.chain().setLink(I.trim()===""?null:I.trim()).run()}const M=e.ref(null),f=e.ref(null),g=e.ref(null);let k=null,w=[];function D(){k?.dispatchEvent(new Event("input",{bubbles:!0}))}function z(){if(!M.value||!s.value){f.value=null;return}const V=M.value.getBoundingClientRect(),I=s.value.getBoundingClientRect();f.value={x:V.left-I.left+s.value.scrollLeft,y:V.top-I.top+s.value.scrollTop,w:V.width,h:V.height}}function B(V){M.value!==V&&(M.value&&M.value.classList.remove("admin-wysiwyg-img--selected"),M.value=V,V.classList.add("admin-wysiwyg-img--selected"),V.setAttribute("draggable","true"),z())}function b(){M.value&&(M.value.classList.remove("admin-wysiwyg-img--selected"),M.value.removeAttribute("draggable")),M.value=null,f.value=null}function L(V){k=V;const I=J=>{const X=J.target?.closest("img");X&&k?.contains(X)?B(X):b()};k.addEventListener("click",I),w.push(()=>k?.removeEventListener("click",I));const _=J=>{const ee=J.target;s.value&&!s.value.contains(ee)&&b()};document.addEventListener("click",_),w.push(()=>document.removeEventListener("click",_));const x=()=>z();window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),w.push(()=>window.removeEventListener("scroll",x,!0)),w.push(()=>window.removeEventListener("resize",x));const E=J=>{const ee=J.target;if(!ee||!k?.contains(ee)||ee.tagName!=="IMG")return;B(ee),J.dataTransfer?.setData("text/plain","img"),J.dataTransfer&&(J.dataTransfer.effectAllowed="move")};k.addEventListener("dragstart",E),w.push(()=>k?.removeEventListener("dragstart",E));const $=J=>{if(!M.value)return;J.preventDefault(),J.dataTransfer&&(J.dataTransfer.dropEffect="move");const ee=S(J.clientX,J.clientY);if(ee&&s.value){const X=ee.getBoundingClientRect(),ie=s.value.getBoundingClientRect(),Ie=(J.clientY<X.top+X.height/2?X.top:X.bottom)-ie.top+s.value.scrollTop;g.value={x:X.left-ie.left+s.value.scrollLeft,y:Ie,w:X.width}}};k.addEventListener("dragover",$),w.push(()=>k?.removeEventListener("dragover",$));const Y=J=>{if(!M.value||!k)return;J.preventDefault(),g.value=null;const ee=S(J.clientX,J.clientY);if(!ee||ee.contains(M.value))return;const X=ee.getBoundingClientRect(),ie=J.clientY<X.top+X.height/2,le=M.value;le.remove(),ie?ee.parentNode?.insertBefore(le,ee):ee.parentNode?.insertBefore(le,ee.nextSibling),z(),D()};k.addEventListener("drop",Y),w.push(()=>k?.removeEventListener("drop",Y));const G=()=>{g.value=null};k.addEventListener("dragend",G),w.push(()=>k?.removeEventListener("dragend",G));const oe=new MutationObserver(()=>{M.value&&!k?.contains(M.value)?b():z()});oe.observe(k,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","style","width","height"]}),w.push(()=>oe.disconnect())}function S(V,I){if(!k)return null;const _=M.value?.style.pointerEvents??"";M.value&&(M.value.style.pointerEvents="none");const x=document.elementFromPoint(V,I);if(M.value&&(M.value.style.pointerEvents=_),!x||!k.contains(x))return null;let E=x;for(;E&&E.parentElement&&E.parentElement!==k;)E=E.parentElement;return E&&E.parentElement===k?E:null}const C=e.ref(null);let A=null;function H(V,I){if(!M.value)return;I.preventDefault(),I.stopPropagation(),C.value=V;const x=M.value.getBoundingClientRect();A={mx:I.clientX,my:I.clientY,w:x.width,h:x.height,aspect:x.width/Math.max(1,x.height)},window.addEventListener("mousemove",R),window.addEventListener("mouseup",N)}function R(V){if(!C.value||!A||!M.value)return;const I=V.clientX-A.mx,_=V.clientY-A.my,x=C.value==="nw"||C.value==="sw"?-1:1,E=C.value==="nw"||C.value==="ne"?-1:1;let $=Math.max(24,A.w+I*x),Y=Math.max(24,A.h+_*E);V.shiftKey||(Math.abs(I*x)>=Math.abs(_*E)?Y=$/A.aspect:$=Y*A.aspect),M.value.style.width=Math.round($)+"px",M.value.style.height=Math.round(Y)+"px",z()}function N(){C.value&&(C.value=null,A=null,window.removeEventListener("mousemove",R),window.removeEventListener("mouseup",N),D())}function T(V,I){let E=I.x,$=I.y;return V==="nw"&&(E=I.x-5,$=I.y-5),V==="ne"&&(E=I.x+I.w-5,$=I.y-5),V==="sw"&&(E=I.x-5,$=I.y+I.h-5),V==="se"&&(E=I.x+I.w-5,$=I.y+I.h-5),{left:E+"px",top:$+"px",width:"10px",height:"10px"}}return e.onBeforeUnmount(()=>{w.forEach(V=>V()),w=[],b()}),e.watch(r,()=>{M.value&&k&&!k.contains(M.value)&&b()}),(V,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":l.value!==void 0}])},[a.label?(e.openBlock(),e.createElementBlock("label",pq,[e.createElementVNode("span",null,e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",kq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:s,class:"admin-field__control admin-wysiwyg-wrap"},[e.createVNode(e.unref(Lw.DskWysiwyg),{"model-value":r.value,placeholder:a.placeholder??void 0,readonly:a.disabled,"min-height":a.minHeight,"max-height":a.maxHeight,onReady:h,onImageRequest:y,onLinkRequest:v,"onUpdate:modelValue":c},null,8,["model-value","placeholder","readonly","min-height","max-height"]),e.createElementVNode("input",{ref_key:"fileInput",ref:i,type:"file",accept:"image/*",class:"admin-wysiwyg__file-input",onChange:m},null,544),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(["nw","ne","sw","se"],_=>e.createElementVNode("div",{key:_,class:e.normalizeClass(["admin-wysiwyg-img__handle",`admin-wysiwyg-img__handle--${_}`]),style:e.normalizeStyle(T(_,f.value)),onMousedown:x=>H(_,x)},null,46,mq)),64)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"admin-wysiwyg-img__dropline",style:e.normalizeStyle({left:g.value.x+"px",top:g.value.y+"px",width:g.value.w+"px"})},null,4)):e.createCommentVNode("",!0)],512),l.value?(e.openBlock(),e.createElementBlock("p",fq,e.toDisplayString(l.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",vq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),Mq=be(gq,[["__scopeId","data-v-e1cee25f"]]),Iq={class:"admin-file-field"},wq={key:0,class:"admin-file-field__label"},xq={key:0,class:"admin-file-field__required"},Cq={key:1},Lq={class:"admin-file-field__hint"},bq=["accept"],Sq={key:2,class:"admin-file-field__preview"},_q={class:"admin-file-field__preview-info"},Bq=["href"],Vq={class:"admin-file-field__preview-meta"},qq={key:3,class:"admin-file-field__help"},Aq={key:4,class:"admin-file-field__error"},zq=e.defineComponent({__name:"FileField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},accept:{default:null},maxSize:{default:null},image:{type:Boolean,default:!1}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const M=o.getField(n.name);return M&&typeof M=="object"&&"url"in M?M:null}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(null),d=e.ref(!1),i=e.ref(!1);function s(){c.value?.click()}async function h(M){const f=M.target.files?.[0];f&&await m(f),M.target.value=""}async function y(M){M.preventDefault(),i.value=!1;const f=M.dataTransfer?.files?.[0];f&&await m(f)}async function m(M){if(n.maxSize!==null&&M.size>n.maxSize*1024){Q.error(`Файл больше ${n.maxSize} KB.`);return}d.value=!0;try{const f=new FormData;f.append("file",M);const g=n.image?"/uploads/image":"/uploads/upload",k=await ne().post(g,f,{headers:{"Content-Type":"multipart/form-data"}});o.setField(n.name,k)}catch(f){typeof console<"u"&&console.error("[admin] upload failed:",f),Q.error(p.trSafe("Не удалось загрузить файл."))}finally{d.value=!1}}function v(){o.setField(n.name,null)}return(M,f)=>(e.openBlock(),e.createElementBlock("div",Iq,[a.label?(e.openBlock(),e.createElementBlock("label",wq,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",xq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Sq,[e.createElementVNode("div",_q,[e.createElementVNode("a",{href:r.value.url,target:"_blank",rel:"noopener"},e.toDisplayString(r.value.name),9,Bq),e.createElementVNode("span",Vq,e.toDisplayString(r.value.mime),1)]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),f[2]||(f[2]=e.createTextVNode(" Удалить ",-1))]),_:1})])):(e.openBlock(),e.createElementBlock("div",Cq,[e.createElementVNode("div",{class:e.normalizeClass(["admin-file-field__drop",{"admin-file-field__drop--over":i.value}]),onClick:s,onDragover:f[0]||(f[0]=e.withModifiers(g=>i.value=!0,["prevent"])),onDragleave:f[1]||(f[1]=g=>i.value=!1),onDrop:y},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Cn),size:24},null,8,["icon"]),e.createElementVNode("p",Lq,e.toDisplayString(d.value?e.unref(p.trSafe)("Загрузка…"):e.unref(p.trSafe)("Кликните или перетащите файл сюда")),1)],34),e.createElementVNode("input",{ref_key:"fileInput",ref:c,type:"file",accept:a.accept??void 0,class:"admin-file-field__input",onChange:h},null,40,bq)])),a.help&&!l.value?(e.openBlock(),e.createElementBlock("p",qq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("p",Aq,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)]))}}),Y9=be(zq,[["__scopeId","data-v-7aaddf6d"]]),Dq={class:"admin-image-cropper"},Eq={key:0,class:"admin-image-cropper__label"},Nq={key:0,class:"admin-image-cropper__required"},Hq={key:1},Fq={class:"admin-image-cropper__hint"},Pq={key:0,class:"admin-image-cropper__hint-sub"},Tq=["accept"],jq={key:2,class:"admin-image-cropper__crop"},Uq=["src","width","height"],Rq={class:"admin-image-cropper__actions"},$q={key:3,class:"admin-image-cropper__preview"},Oq=["src","alt"],Zq={class:"admin-image-cropper__preview-info"},Wq={class:"admin-image-cropper__preview-name"},Gq={class:"admin-image-cropper__preview-meta"},Kq={class:"admin-image-cropper__preview-actions"},Xq={key:4,class:"admin-image-cropper__help"},Jq={key:5,class:"admin-image-cropper__error"},Yq=500,Qq=400,eA=e.defineComponent({__name:"ImageCropperField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},accept:{default:null},maxSize:{default:null},aspectRatio:{default:null},outputWidth:{default:null},outputHeight:{default:null},minCropWidth:{default:32},minCropHeight:{default:32},quality:{default:.92}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const V=o.getField(n.name);return V&&typeof V=="object"&&"url"in V?V:null}),l=e.computed(()=>o.errors[n.name]?.[0]),c=e.ref(null),d=e.ref(!1),i=e.ref(!1),s=e.ref(null),h=e.ref(null),y=e.ref(1),m=e.ref({w:0,h:0}),v=e.ref({x:0,y:0,w:100,h:100}),M=e.computed(()=>n.aspectRatio!==null?n.aspectRatio:n.outputWidth&&n.outputHeight?n.outputWidth/n.outputHeight:null);function f(){c.value?.click()}function g(V){const I=V.target.files?.[0];I&&w(I),V.target.value=""}function k(V){V.preventDefault(),d.value=!1;const I=V.dataTransfer?.files?.[0];I&&w(I)}function w(V){if(n.maxSize!==null&&V.size>n.maxSize*1024){Q.error(`Файл больше ${n.maxSize} KB.`);return}if(!V.type.startsWith("image/")){Q.error(p.trSafe("Можно только изображения."));return}R(),h.value=URL.createObjectURL(V);const I=new Image;I.onload=()=>{s.value=I,D(),z()},I.src=h.value}function D(){if(!s.value)return;const V=s.value.naturalWidth,I=s.value.naturalHeight,_=Math.min(Yq/V,Qq/I,1);y.value=_,m.value={w:V*_,h:I*_}}function z(){const{w:V,h:I}=m.value;if(M.value!==null){let _=V,x=_/M.value;x>I&&(x=I,_=x*M.value),v.value={x:(V-_)/2,y:(I-x)/2,w:_,h:x}}else{const _=Math.min(V,I)*.1;v.value={x:_,y:_,w:V-2*_,h:I-2*_}}}const B=e.ref(null),b=e.ref({mx:0,my:0,cx:0,cy:0,cw:0,ch:0});function L(V,I){B.value=V,b.value={mx:I.clientX,my:I.clientY,cx:v.value.x,cy:v.value.y,cw:v.value.w,ch:v.value.h},window.addEventListener("mousemove",S),window.addEventListener("mouseup",C),I.preventDefault()}function S(V){if(B.value===null)return;const I=V.clientX-b.value.mx,_=V.clientY-b.value.my,x=b.value,E=m.value,$=(n.minCropWidth??32)*y.value,Y=(n.minCropHeight??32)*y.value;if(B.value==="move"){let le=Math.max(0,Math.min(x.cx+I,E.w-x.cw)),Ie=Math.max(0,Math.min(x.cy+_,E.h-x.ch));v.value={x:le,y:Ie,w:x.cw,h:x.ch};return}let G=x.cx,oe=x.cy,J=x.cx+x.cw,ee=x.cy+x.ch;B.value==="nw"&&(G=x.cx+I,oe=x.cy+_),B.value==="ne"&&(J=x.cx+x.cw+I,oe=x.cy+_),B.value==="sw"&&(G=x.cx+I,ee=x.cy+x.ch+_),B.value==="se"&&(J=x.cx+x.cw+I,ee=x.cy+x.ch+_),G=Math.max(0,Math.min(G,J-$)),oe=Math.max(0,Math.min(oe,ee-Y)),J=Math.min(E.w,Math.max(J,G+$)),ee=Math.min(E.h,Math.max(ee,oe+Y));let X=J-G,ie=ee-oe;if(M.value!==null){const le=M.value;Math.abs(X-x.cw)>=Math.abs(ie-x.ch)?ie=X/le:X=ie*le,B.value==="nw"&&(G=J-X,oe=ee-ie),B.value==="ne"&&(oe=ee-ie),B.value==="sw"&&(G=J-X),G<0&&(X+=G,G=0,ie=X/le,oe=B.value==="nw"||B.value==="ne"?ee-ie:oe),oe<0&&(ie+=oe,oe=0,X=ie*le,G=B.value==="nw"||B.value==="sw"?J-X:G),G+X>E.w&&(X=E.w-G,ie=X/le),oe+ie>E.h&&(ie=E.h-oe,X=ie*le)}v.value={x:G,y:oe,w:X,h:ie}}function C(){B.value=null,window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",C)}async function A(){if(!s.value)return;const V=s.value,I=1/y.value,_=v.value.x*I,x=v.value.y*I,E=v.value.w*I,$=v.value.h*I,Y=n.outputWidth??Math.round(E),G=n.outputHeight??Math.round($),oe=document.createElement("canvas");oe.width=Y,oe.height=G;const J=oe.getContext("2d");if(!J){Q.error(p.trSafe("Canvas недоступен."));return}J.drawImage(V,_,x,E,$,0,0,Y,G);const ee=await new Promise(X=>oe.toBlob(X,"image/png",n.quality??.92));if(!ee){Q.error(p.trSafe("Не удалось получить blob."));return}i.value=!0;try{const X=new FormData;X.append("file",ee,"crop.png");const ie=await ne().post("/uploads/image",X,{headers:{"Content-Type":"multipart/form-data"}});o.setField(n.name,ie),H()}catch(X){typeof console<"u"&&console.error("[admin] upload failed:",X),Q.error(p.trSafe("Не удалось загрузить."))}finally{i.value=!1}}function H(){R(),s.value=null}function R(){h.value&&(URL.revokeObjectURL(h.value),h.value=null)}function N(){o.setField(n.name,null),e.nextTick(f)}function T(){o.setField(n.name,null)}return e.onBeforeUnmount(R),(V,I)=>(e.openBlock(),e.createElementBlock("div",Dq,[a.label?(e.openBlock(),e.createElementBlock("label",Eq,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",Nq,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!r.value&&!s.value?(e.openBlock(),e.createElementBlock("div",Hq,[e.createElementVNode("div",{class:e.normalizeClass(["admin-image-cropper__drop",{"admin-image-cropper__drop--over":d.value}]),onClick:f,onDragover:I[0]||(I[0]=e.withModifiers(_=>d.value=!0,["prevent"])),onDragleave:I[1]||(I[1]=_=>d.value=!1),onDrop:k},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(wn),size:28},null,8,["icon"]),e.createElementVNode("p",Fq,e.toDisplayString(e.unref(p.trSafe)("Кликните или перетащите картинку")),1),a.outputWidth&&a.outputHeight?(e.openBlock(),e.createElementBlock("p",Pq," Будет обрезано до "+e.toDisplayString(a.outputWidth)+"×"+e.toDisplayString(a.outputHeight)+" px ",1)):e.createCommentVNode("",!0)],34),e.createElementVNode("input",{ref_key:"fileInput",ref:c,type:"file",accept:a.accept??"image/*",class:"admin-image-cropper__input",onChange:g},null,40,Tq)])):s.value?(e.openBlock(),e.createElementBlock("div",jq,[e.createElementVNode("div",{class:"admin-image-cropper__canvas-wrap",style:e.normalizeStyle({width:m.value.w+"px",height:m.value.h+"px"})},[e.createElementVNode("img",{src:h.value??void 0,width:m.value.w,height:m.value.h,class:"admin-image-cropper__img",alt:""},null,8,Uq),e.createElementVNode("div",{class:"admin-image-cropper__rect",style:e.normalizeStyle({left:v.value.x+"px",top:v.value.y+"px",width:v.value.w+"px",height:v.value.h+"px"}),onMousedown:I[6]||(I[6]=_=>L("move",_))},[e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--nw",onMousedown:I[2]||(I[2]=e.withModifiers(_=>L("nw",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--ne",onMousedown:I[3]||(I[3]=e.withModifiers(_=>L("ne",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--sw",onMousedown:I[4]||(I[4]=e.withModifiers(_=>L("sw",_),["stop"]))},null,32),e.createElementVNode("div",{class:"admin-image-cropper__handle admin-image-cropper__handle--se",onMousedown:I[5]||(I[5]=e.withModifiers(_=>L("se",_),["stop"]))},null,32)],36)],4),e.createElementVNode("div",Rq,[e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",disabled:i.value,onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ve)},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(i.value?e.unref(p.trSafe)("Загрузка…"):e.unref(p.trSafe)("Применить")),1)]),_:1},8,["disabled"]),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",disabled:i.value,onClick:H},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),I[7]||(I[7]=e.createTextVNode(" Отмена ",-1))]),_:1},8,["disabled"])])])):r.value?(e.openBlock(),e.createElementBlock("div",$q,[e.createElementVNode("img",{src:r.value.url,alt:r.value.name,class:"admin-image-cropper__preview-img"},null,8,Oq),e.createElementVNode("div",Zq,[e.createElementVNode("div",Wq,e.toDisplayString(r.value.name),1),e.createElementVNode("div",Gq,e.toDisplayString(r.value.mime)+" · "+e.toDisplayString((r.value.size/1024).toFixed(1))+" KB",1),e.createElementVNode("div",Kq,[e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:N},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Zo)},null,8,["icon"]),I[8]||(I[8]=e.createTextVNode(" Заменить ",-1))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:T},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),I[9]||(I[9]=e.createTextVNode(" Удалить ",-1))]),_:1})])])])):e.createCommentVNode("",!0),a.help&&!l.value?(e.openBlock(),e.createElementBlock("p",Xq,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("p",Jq,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)]))}}),tA=be(eA,[["__scopeId","data-v-32d412e9"]]),aA={key:0,class:"uid-form-field__label"},nA={key:0,class:"uid-form-field__required","aria-hidden":"true"},oA={class:"admin-keyvalue__rows"},cA={class:"admin-keyvalue__head"},rA=["id"],iA=["value"],lA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},dA={key:3,class:"uid-form-field__hint"},sA=e.defineComponent({__name:"KeyValueField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},keyLabel:{default:"Ключ"},valueLabel:{default:"Значение"},addable:{type:Boolean,default:!0},removable:{type:Boolean,default:!0},allowedKeys:{default:()=>[]}},setup(a){const n=a,o=de.useFormState();function r(){const y=o.getField(n.name);return y==null||typeof y!="object"||Array.isArray(y)?[]:Object.entries(y).map(([m,v])=>({key:m,value:v==null?"":String(v)}))}const l=e.ref(r());e.watch(()=>o.getField(n.name),()=>{const y=r(),m=JSON.stringify(Object.fromEntries(l.value.map(v=>[v.key,v.value])));JSON.stringify(Object.fromEntries(y.map(v=>[v.key,v.value])))!==m&&(l.value=y)});function c(){const y={};for(const m of l.value)m.key.trim()!==""&&(y[m.key.trim()]=m.value);o.setField(n.name,y)}function d(){l.value.push({key:"",value:""})}function i(y){l.value.splice(y,1),c()}const s=e.computed(()=>o.errors[n.name]?.[0]),h=e.computed(()=>`kv-keys-${n.name}`);return(y,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-keyvalue",{"uid-form-field--error":!!s.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",aA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",nA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",oA,[e.createElementVNode("div",cA,[e.createElementVNode("span",null,e.toDisplayString(e.unref(p.trSafe)(a.keyLabel)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(p.trSafe)(a.valueLabel)),1),m[0]||(m[0]=e.createElementVNode("span",null,null,-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(v,M)=>(e.openBlock(),e.createElementBlock("div",{key:M,class:"admin-keyvalue__row"},[e.createVNode(e.unref(u.UidInput),{modelValue:v.key,"onUpdate:modelValue":f=>v.key=f,list:a.allowedKeys.length>0?h.value:void 0,placeholder:e.unref(p.trSafe)(a.keyLabel),onBlur:c},null,8,["modelValue","onUpdate:modelValue","list","placeholder"]),e.createVNode(e.unref(u.UidInput),{modelValue:v.value,"onUpdate:modelValue":f=>v.value=f,placeholder:e.unref(p.trSafe)(a.valueLabel),onBlur:c},null,8,["modelValue","onUpdate:modelValue","placeholder"]),a.removable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm","aria-label":`Удалить ${v.key}`,onClick:f=>i(M)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])):e.createCommentVNode("",!0)]))),128)),a.allowedKeys.length>0?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:h.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.allowedKeys,v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},null,8,iA))),128))],8,rA)):e.createCommentVNode("",!0)]),a.addable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"secondary",size:"sm",class:"admin-keyvalue__add",onClick:d},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить")),1)]),_:1})):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",lA,e.toDisplayString(s.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",dA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),uA=be(sA,[["__scopeId","data-v-e0d5df59"]]),hA={class:"admin-nested-fields"},yA=e.defineComponent({__name:"NestedFieldsGroup",props:{fields:{},modelValue:{}},emits:["update:modelValue"],setup(a,{emit:n}){const o=a,r=n,l=e.reactive({...o.modelValue});return de.provideFormState(l),e.watch(l,()=>r("update:modelValue",{...l}),{deep:!0}),(c,d)=>(e.openBlock(),e.createElementBlock("div",hA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.fields,i=>(e.openBlock(),e.createBlock(QM,{key:i.name,node:i},null,8,["node"]))),128))]))}}),tw=be(yA,[["__scopeId","data-v-fdba98be"]]),pA={key:0,class:"uid-form-field__label"},kA={key:0,class:"uid-form-field__required","aria-hidden":"true"},mA={class:"admin-repeater__item-hd"},fA={class:"admin-repeater__item-no"},vA={class:"admin-repeater__item-actions"},gA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},MA={key:3,class:"uid-form-field__hint"},IA=e.defineComponent({__name:"RepeaterField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},fields:{default:()=>[]},minItems:{default:null},maxItems:{default:null},addable:{type:Boolean,default:!0},removable:{type:Boolean,default:!0},reorderable:{type:Boolean,default:!0},defaultItem:{default:()=>({})}},setup(a){const n=a,o=de.useFormState();function r(){const M=o.getField(n.name);return Array.isArray(M)?M.map(f=>({...f})):[]}const l=e.ref(r());e.watch(()=>o.getField(n.name),M=>{JSON.stringify(M??[])!==JSON.stringify(l.value)&&(l.value=r())});function c(){o.setField(n.name,l.value.map(M=>({...M})))}function d(M,f){l.value[M]=f,c()}const i=e.computed(()=>n.addable&&(n.maxItems===null||l.value.length<n.maxItems));function s(){l.value.push({...n.defaultItem}),c()}const h=e.computed(()=>n.removable&&(n.minItems===null||l.value.length>n.minItems));function y(M){l.value.splice(M,1),c()}function m(M,f){const g=M+f;if(g<0||g>=l.value.length)return;const k=[...l.value];[k[M],k[g]]=[k[g],k[M]],l.value=k,c()}const v=e.computed(()=>o.errors[n.name]?.[0]);return(M,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-repeater",{"uid-form-field--error":!!v.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",pA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",kA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(g,k)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:k,padding:"md",class:"admin-repeater__item"},{default:e.withCtx(()=>[e.createElementVNode("header",mA,[e.createElementVNode("span",fA,"#"+e.toDisplayString(k+1),1),e.createElementVNode("span",vA,[a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",disabled:k===0,"aria-label":e.unref(p.trSafe)("Выше"),onClick:w=>m(k,-1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(An),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"ghost",size:"sm",disabled:k===l.value.length-1,"aria-label":e.unref(p.trSafe)("Ниже"),onClick:w=>m(k,1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,variant:"ghost",size:"sm","aria-label":e.unref(p.trSafe)("Удалить элемент"),onClick:w=>y(k)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])):e.createCommentVNode("",!0)])]),e.createVNode(tw,{fields:a.fields,"model-value":g,"onUpdate:modelValue":w=>d(k,w)},null,8,["fields","model-value","onUpdate:modelValue"])]),_:2},1024))),128)),i.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"secondary",size:"sm",class:"admin-repeater__add",onClick:s},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить элемент")),1)]),_:1})):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("p",gA,e.toDisplayString(v.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",MA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),wA=be(IA,[["__scopeId","data-v-8b51df90"]]),xA={key:0,class:"uid-form-field__label"},CA={key:0,class:"uid-form-field__required","aria-hidden":"true"},LA={class:"admin-builder__block-hd"},bA={class:"admin-builder__block-type"},SA={class:"admin-builder__block-actions"},_A={key:1,class:"uid-form-field__hint"},BA={key:2,class:"uid-form-field__hint uid-form-field__hint--error"},VA={key:3,class:"uid-form-field__hint"},qA=e.defineComponent({__name:"BuilderField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},blocks:{default:()=>({})},maxBlocks:{default:null},reorderable:{type:Boolean,default:!0}},setup(a){const n=a,o=de.useFormState();function r(){const f=o.getField(n.name);return Array.isArray(f)?f.map(g=>({type:g.type,data:{...g.data??{}}})):[]}const l=e.ref(r());e.watch(()=>o.getField(n.name),f=>{JSON.stringify(f??[])!==JSON.stringify(l.value)&&(l.value=r())});function c(){o.setField(n.name,l.value.map(f=>({type:f.type,data:{...f.data}})))}const d=e.computed(()=>Object.values(n.blocks)),i=e.computed(()=>n.maxBlocks===null||l.value.length<n.maxBlocks);function s(f){l.value.push({type:f,data:{}}),c()}function h(f){l.value.splice(f,1),c()}function y(f,g){const k=f+g;if(k<0||k>=l.value.length)return;const w=[...l.value];[w[f],w[k]]=[w[k],w[f]],l.value=w,c()}function m(f,g){l.value[f]={...l.value[f],data:g},c()}function v(f){return n.blocks[f]??null}const M=e.computed(()=>o.errors[n.name]?.[0]);return(f,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-builder",{"uid-form-field--error":!!M.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",xA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",CA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,w)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:w,padding:"md",class:"admin-builder__block"},{default:e.withCtx(()=>[e.createElementVNode("header",LA,[e.createElementVNode("span",bA,e.toDisplayString(v(k.type)?.label??k.type),1),e.createElementVNode("span",SA,[a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",disabled:w===0,"aria-label":e.unref(p.trSafe)("Выше"),onClick:D=>y(w,-1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(An),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),a.reorderable?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"ghost",size:"sm",disabled:w===l.value.length-1,"aria-label":e.unref(p.trSafe)("Ниже"),onClick:D=>y(w,1)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(De),size:14},null,8,["icon"])]),_:1},8,["disabled","aria-label","onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm","aria-label":e.unref(p.trSafe)("Удалить блок"),onClick:D=>h(w)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he),size:14},null,8,["icon"])]),_:1},8,["aria-label","onClick"])])]),v(k.type)?(e.openBlock(),e.createBlock(tw,{key:0,fields:v(k.type).fields,"model-value":k.data,"onUpdate:modelValue":D=>m(w,D)},null,8,["fields","model-value","onUpdate:modelValue"])):(e.openBlock(),e.createElementBlock("p",_A,"Неизвестный тип блока: "+e.toDisplayString(k.type),1))]),_:2},1024))),128)),i.value&&d.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createVNode(e.unref(u.UidButton),{variant:"secondary",size:"sm",class:"admin-builder__add"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(p.trSafe)("Добавить блок")),1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,k=>(e.openBlock(),e.createBlock(e.unref(u.UidMenuItem),{key:k.type,onClick:w=>s(k.type)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("p",BA,e.toDisplayString(M.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",VA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),AA=be(qA,[["__scopeId","data-v-b8372057"]]),zA={class:"uid-form-field admin-relation-table"},DA={key:0,class:"uid-form-field__label"},EA={key:1,class:"uid-form-field__hint"},NA=e.defineComponent({__name:"RelationTableField",props:{name:{},label:{default:null},help:{default:null},columns:{default:()=>[]},emptyText:{default:"Связанных записей нет"}},setup(a){const n=a,o=de.useFormState(),r=e.computed(()=>{const c=o.getField(n.name);return Array.isArray(c)?c.map(d=>{const i={...d};for(const s of n.columns)i[s.name]=pc(d[s.name],s.preset??void 0,s.meta??{});return i}):[]}),l=e.computed(()=>n.columns.map(c=>({key:c.name,label:c.label,align:c.align,width:c.width??void 0})));return(c,d)=>(e.openBlock(),e.createElementBlock("div",zA,[a.label?(e.openBlock(),e.createElementBlock("label",DA,e.toDisplayString(a.label),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(u.UidCard),{padding:"sm"},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTable),{columns:l.value,data:r.value,"empty-text":e.unref(p.trSafe)(a.emptyText)},null,8,["columns","data","empty-text"])]),_:1}),a.help?(e.openBlock(),e.createElementBlock("p",EA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)]))}}),HA={key:0,class:"uid-form-field__label"},FA={key:0,class:"uid-form-field__required","aria-hidden":"true"},PA={class:"admin-generated__row"},TA={key:1,class:"uid-form-field__hint uid-form-field__hint--error"},jA={key:2,class:"uid-form-field__hint"},UA=e.defineComponent({__name:"GeneratedField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},length:{default:32},charset:{default:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"},autogenerate:{type:Boolean,default:!0}},setup(a){const n=a,o=de.useFormState(),r=p.useI18nStore(),l=e.computed(()=>o.getField(n.name)??""),c=e.computed(()=>o.errors[n.name]?.[0]),d=typeof globalThis.crypto?.getRandomValues=="function";function i(m,v){const M=v.length,f=Math.floor(256/M)*M;let g="";const k=new Uint8Array(m*2);for(;g.length<m;){globalThis.crypto.getRandomValues(k);for(const w of k)if(w<f&&(g+=v[w%M],g.length===m))break}return g}function s(){d&&o.setField(n.name,i(n.length,n.charset))}const h=e.ref(!1);function y(m){h.value=!0,o.setField(n.name,m)}return e.watch(l,m=>{n.autogenerate&&!n.disabled&&!h.value&&m===""&&s()},{immediate:!0}),(m,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["uid-form-field admin-generated",{"uid-form-field--error":!!c.value}])},[a.label?(e.openBlock(),e.createElementBlock("label",HA,[e.createTextVNode(e.toDisplayString(a.label),1),a.required?(e.openBlock(),e.createElementBlock("span",FA,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",PA,[e.createVNode(e.unref(u.UidInput),{"model-value":l.value,error:c.value,placeholder:a.placeholder??void 0,required:a.required,disabled:a.disabled,name:a.name,class:"admin-generated__input","onUpdate:modelValue":y},null,8,["model-value","error","placeholder","required","disabled","name"]),d?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"secondary",size:"md",type:"button",disabled:a.disabled,onClick:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).has("admin.fields.generate")?e.unref(r).t("admin.fields.generate"):e.unref(p.trSafe)("Сгенерировать")),1)]),_:1},8,["disabled"])):e.createCommentVNode("",!0)]),c.value?(e.openBlock(),e.createElementBlock("p",TA,e.toDisplayString(c.value),1)):a.help?(e.openBlock(),e.createElementBlock("p",jA,e.toDisplayString(a.help),1)):e.createCommentVNode("",!0)],2))}}),aw=e.defineComponent({__name:"ColumnsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"},cols:{default:12}},setup(a){const n=a,o=e.computed(()=>n.items.length===0?n.cols:Math.max(1,Math.floor(n.cols/n.items.length)));function r(l){const c=l.span;return typeof c=="number"&&c>0?Math.min(c,n.cols):o.value}return(l,c)=>(e.openBlock(),e.createBlock(e.unref(u.UidGrid),{cols:a.cols,gap:a.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(d,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${r(d)} / span ${r(d)}`})},[e.createVNode(Ln,{node:d},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),RA={key:0,class:"admin-section__header"},$A={key:0,class:"admin-section__title"},OA={key:1,class:"admin-section__description"},ZA={class:"admin-section__body"},Bn=e.defineComponent({__name:"SectionLayout",props:{items:{},title:{default:null},description:{default:null}},setup(a){return(n,o)=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{padding:"md",class:"admin-section"},{default:e.withCtx(()=>[a.title||a.description?(e.openBlock(),e.createElementBlock("header",RA,[a.title?(e.openBlock(),e.createElementBlock("h3",$A,e.toDisplayString(a.title),1)):e.createCommentVNode("",!0),a.description?(e.openBlock(),e.createElementBlock("p",OA,e.toDisplayString(a.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",ZA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(r,l)=>(e.openBlock(),e.createBlock(Ln,{key:l,node:r},null,8,["node"]))),128))])]),_:1}))}}),nw=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0},gap:{default:"var(--uid-space-lg)"}},emits:["update:active"],setup(a,{emit:n}){const o=a,r=n;function l(i,s){return i.key??s}const c=e.ref(o.active??l(o.items[0]??{},0));function d(i){c.value=i,r("update:active",i)}return(i,s)=>(e.openBlock(),e.createBlock(e.unref(u.UidTabs),{"model-value":c.value,"onUpdate:modelValue":d},{list:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(h,y)=>(e.openBlock(),e.createBlock(e.unref(u.UidTab),{key:l(h,y),value:l(h,y)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.label),1)]),_:2},1032,["value"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(h,y)=>(e.openBlock(),e.createBlock(e.unref(u.UidTabPanel),{key:`panel-${l(h,y)}`,value:l(h,y)},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidStack),{direction:"column",gap:a.gap,align:"stretch"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,(m,v)=>(e.openBlock(),e.createBlock(Ln,{key:v,node:m},null,8,["node"]))),128))]),_:2},1032,["gap"])]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}}),WA={class:"admin-embedded-table"},GA={class:"admin-embedded-table__toolbar"},KA={key:1},XA=["aria-label","onClick"],JA={key:4,class:"admin-embedded-table__draft"},YA={class:"admin-embedded-table__draft-cells"},QA={class:"admin-embedded-table__draft-label"},ez=["value","onChange"],tz=["value"],az=["type","value","onInput"],nz={class:"admin-embedded-table__draft-actions"},oz=e.defineComponent({__name:"EmbeddedResourceTable",props:{resource:{},foreign_key:{},parent_field:{default:"id"},hide_columns:{default:()=>[]},features:{default:()=>({create:!1,delete:!1,bulkDelete:!1})}},setup(a){const n=a,o=pe(),r=e9(),l=e.computed(()=>o.getResource(n.resource)),c=e.ref([]),d=e.ref(!1),i=e.ref(null),s=e.ref(new Set),h=e.ref(null),y=e.computed(()=>{const T=r.state[n.parent_field];return T??null}),m=e.computed(()=>(l.value?.columns??[]).filter(V=>{const I=String(V.name??"");return!n.hide_columns.includes(I)})),v=e.computed(()=>m.value.map(T=>({key:String(T.name??""),label:String(T.label??T.name??""),sortable:!!T.sortable,align:T.align??"left",width:T.width}))),M=e.computed(()=>n.features.create&&!!l.value?.permissions?.create),f=e.computed(()=>n.features.delete&&!!l.value?.permissions?.delete),g=e.computed(()=>n.features.bulkDelete&&!!l.value?.permissions?.delete);function k(T){for(const V of m.value)if(String(V.name??"")===T)return V.editable??null;return null}async function w(){if(y.value===null){c.value=[];return}d.value=!0,i.value=null;try{const V=await ne().post(`/${n.resource}/search`,{page:1,per_page:100,filters:{[n.foreign_key]:y.value}});c.value=V.data}catch(T){i.value=T instanceof Error?T:new Error(String(T)),c.value=[]}finally{d.value=!1}}e.onMounted(w),e.watch(y,w);function D(T){return T.id??""}function z(T){return T?.row}function B(T){const V=D(T),I=new Set(s.value);I.has(V)?I.delete(V):I.add(V),s.value=I}function b(){s.value.size===c.value.length?s.value=new Set:s.value=new Set(c.value.map(D))}async function L(T){const V=D(T);if(confirm(p.trSafe("Удалить строку?")))try{await ne().post(`/${n.resource}/delete`,{id:V}),c.value=c.value.filter(I=>D(I)!==V),s.value.delete(V),s.value=new Set(s.value)}catch{Q.error(p.trSafe("Не удалось удалить строку."))}}async function S(){if(s.value.size===0||!confirm(`Удалить ${s.value.size} строк?`))return;const T=[...s.value];try{await Promise.all(T.map(V=>ne().post(`/${n.resource}/delete`,{id:V}))),s.value=new Set,await w()}catch{Q.error(p.trSafe("Не удалось удалить часть строк.")),await w()}}function C(){if(!M.value||h.value!==null)return;const T={};y.value!==null&&(T[n.foreign_key]=y.value),h.value=T}function A(){h.value=null}async function H(){if(h.value!==null)try{await ne().post(`/${n.resource}/create`,h.value),h.value=null,await w()}catch{Q.error(p.trSafe("Не удалось создать запись."))}}function R(T,V){h.value!==null&&(h.value={...h.value,[T]:V})}function N(T,V){const I=T[V];return I==null?"":String(I)}return(T,V)=>(e.openBlock(),e.createElementBlock("div",WA,[e.createElementVNode("div",GA,[M.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"primary",size:"sm",disabled:h.value!==null,onClick:C},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(me)},null,8,["icon"]),V[0]||(V[0]=e.createTextVNode(" Добавить ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0),g.value&&s.value.size>0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"danger",size:"sm",onClick:S},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe)},null,8,["icon"]),e.createTextVNode(" Удалить выбранные ("+e.toDisplayString(s.value.size)+") ",1)]),_:1})):e.createCommentVNode("",!0)]),d.value&&c.value.length===0?(e.openBlock(),e.createBlock(e.unref(u.UidSkeleton),{key:0})):i.value?(e.openBlock(),e.createBlock(e.unref(u.UidErrorState),{key:1,message:i.value.message,onRetry:w},null,8,["message"])):!d.value&&c.value.length===0&&h.value===null?(e.openBlock(),e.createBlock(e.unref(u.UidEmptyState),{key:2,title:e.unref(p.trSafe)("Нет данных"),hint:e.unref(p.trSafe)("Нажмите «Добавить», чтобы создать первую запись.")},null,8,["title","hint"])):(e.openBlock(),e.createBlock(e.unref(u.UidTable),{key:3,columns:v.value,data:c.value,selectable:g.value,selection:s.value,"row-key":"id",onSelectRow:B,onSelectAll:b},e.createSlots({_:2},[e.renderList(v.value,I=>({name:I.key,fn:e.withCtx(_=>[z(_)&&k(I.key)?(e.openBlock(),e.createBlock(BI,{key:0,"resource-slug":a.resource,"row-id":D(z(_)),column:I.key,value:z(_)[I.key],editable:!0,"input-type":k(I.key).as,options:k(I.key).options,"row-override":z(_)._editable??{},onSaved:x=>{const E=z(_);E&&(E[I.key]=x)}},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(N(z(_),I.key)),1)]),_:2},1032,["resource-slug","row-id","column","value","input-type","options","row-override","onSaved"])):(e.openBlock(),e.createElementBlock("span",KA,e.toDisplayString(N(z(_)??{},I.key)),1))])})),f.value?{name:"actions",fn:e.withCtx(I=>[e.createElementVNode("button",{type:"button",class:"admin-embedded-table__row-delete","aria-label":e.unref(p.trSafe)("Удалить"),onClick:_=>z(I)&&L(z(I))},[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(fe),size:14},null,8,["icon"])],8,XA)]),key:"0"}:void 0]),1032,["columns","data","selectable","selection"])),h.value!==null?(e.openBlock(),e.createElementBlock("div",JA,[e.createElementVNode("div",YA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,I=>(e.openBlock(),e.createElementBlock("div",{key:I.key,class:"admin-embedded-table__draft-cell"},[e.createElementVNode("label",QA,e.toDisplayString(I.label),1),k(I.key)?.as==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"admin-embedded-table__draft-input",value:h.value[I.key]??"",onChange:_=>R(I.key,_.target.value)},[V[1]||(V[1]=e.createElementVNode("option",{value:""},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k(I.key).options,(_,x)=>(e.openBlock(),e.createElementBlock("option",{key:x,value:x},e.toDisplayString(_),9,tz))),128))],40,ez)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"admin-embedded-table__draft-input",type:k(I.key)?.as==="number"?"number":k(I.key)?.as==="date"?"date":"text",value:h.value[I.key]??"",onInput:_=>R(I.key,_.target.value)},null,40,az))]))),128))]),e.createElementVNode("div",nz,[e.createVNode(e.unref(u.UidButton),{variant:"primary",size:"sm",onClick:H},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(Ve)},null,8,["icon"]),V[2]||(V[2]=e.createTextVNode(" Создать ",-1))]),_:1}),e.createVNode(e.unref(u.UidButton),{variant:"ghost",size:"sm",onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(u.UidIcon),{icon:e.unref(he)},null,8,["icon"]),V[3]||(V[3]=e.createTextVNode(" Отмена ",-1))]),_:1})])])):e.createCommentVNode("",!0)]))}}),cz=be(oz,[["__scopeId","data-v-17c526a7"]]),rz=e.defineComponent({__name:"DashboardLayout",props:{items:{default:()=>[]},gridColumns:{default:12},gap:{default:"var(--uid-space-md)"}},setup(a){const n=a;function o(r){const l=r.size??r.span,c=Number(l),d=Number.isFinite(c)&&c>=1?c:n.gridColumns;return Math.min(d,n.gridColumns)}return(r,l)=>(e.openBlock(),e.createBlock(e.unref(u.UidGrid),{cols:a.gridColumns,"col-gap":a.gap,"row-gap":"var(--uid-space-lg)"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.items,(c,d)=>(e.openBlock(),e.createElementBlock("div",{key:d,class:"admin-dashboard-layout__cell",style:e.normalizeStyle({gridColumn:`span ${o(c)}`})},[e.createVNode(S9,{node:c},null,8,["node"])],4))),128))]),_:1},8,["cols","col-gap"]))}});function eo(a){return e.defineComponent({name:`TextField${a.charAt(0).toUpperCase()}${a.slice(1)}`,inheritAttrs:!1,setup(n,{attrs:o}){const r={...o,inputType:o.inputType??a};return()=>e.h(Ae,r)}})}function iz(a){for(const[n,o]of Object.entries(a.fields??{}))wI(n)||II(n,o);for(const[n,o]of Object.entries(a.layouts??{}))CI(n)||xI(n,o)}function ow(){iz({fields:{input:Ae,text:Ae,email:eo("email"),url:eo("url"),password:eo("password"),tel:eo("tel"),search:eo("search"),slug:Ae,hidden:Ae,label:Ae,textarea:RM,wysiwyg:Mq,markdown:RM,code:RM,number:$M,slider:$M,rating:$M,select:xe,combobox:xe,radio:xe,tags:nq,translatable:J9,"translatable-text":J9,morph_switcher:xe,"morph-switcher":xe,relation_select:xe,relation:xe,cascader:xe,tree_select:xe,"tree-select":xe,checkbox:ao,switch:ao,switcher:ao,boolean:ao,date:Pe,datetime:Pe,datepicker:Pe,date_range:Pe,"date-range":Pe,time:Pe,"time-picker":Pe,color:Ae,"color-picker":Ae,file:Y9,image:Y9,image_cropper:tA,key_value:uA,repeater:wA,"generated-field":UA,builder:AA,relation_table:NA},layouts:{rows:WM,columns:aw,section:Bn,block:Bn,tabs:nw,accordion:Bn,group:WM,step:Bn,wizard:Bn,dashboard:rz,"admin.resource-table":cz}})}const ae=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let l=n.value;if(l===void 0&&o&&n.name&&(l=o[n.name]),l==null||l==="")return n.placeholder;const c=pc(l,n.preset,n.meta);return c===""?n.placeholder:c});return(l,c)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-text",a.mono?"admin-infolist-text--mono":""])},e.toDisplayString(r.value),3))}}),lz={key:1,class:"admin-infolist-text"},cw=e.defineComponent({__name:"BadgeEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},map:{default:()=>({})},colors:{default:()=>({})},labels:{default:()=>({})},variant:{default:void 0}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;return i===void 0&&o&&n.name&&(i=o[n.name]),i==null?"":String(i)}),l=e.computed(()=>({...n.map,...n.colors})),c=e.computed(()=>n.variant?n.variant:l.value[r.value]??"default"),d=e.computed(()=>n.labels[r.value]??r.value);return(i,s)=>r.value?(e.openBlock(),e.createBlock(e.unref(u.UidBadge),{key:0,variant:c.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",lz,"—"))}}),dz={key:1},rw=e.defineComponent({__name:"IconEntry",props:{name:{default:""},label:{default:""},value:{type:[Boolean,null],default:void 0},trueIcon:{default:"check-circle-2"},falseIcon:{default:"circle"},trueLabel:{default:""},falseLabel:{default:""}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;return i===void 0&&o&&n.name&&(i=o[n.name]),!!i});function l(i){return i.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join("")}const c=e.computed(()=>{const i=l(r.value?n.trueIcon:n.falseIcon);return _w[i]}),d=e.computed(()=>r.value?n.trueLabel:n.falseLabel);return(i,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",r.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[c.value?(e.openBlock(),e.createBlock(e.unref(u.UidIcon),{key:0,icon:c.value,size:14,class:"admin-infolist-icon__glyph"},null,8,["icon"])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",dz,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)],2))}}),sz={key:1,class:"admin-infolist-text"},OM=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let c=n.value;return c===void 0&&o&&n.name&&(c=o[n.name]),c==null?[]:typeof c!="object"?[]:Object.entries(c)});function l(c){return c==null?"—":typeof c=="boolean"?c?p.trSafe("Да"):p.trSafe("Нет"):c===0?p.trSafe("Нет"):c===1?p.trSafe("Да"):typeof c=="object"?JSON.stringify(c):String(c)}return(c,d)=>r.value.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidDescriptionList),{key:0,direction:"vertical",columns:1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([i,s])=>(e.openBlock(),e.createBlock(e.unref(u.UidDescriptionItem),{key:i,label:i},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(s)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",sz,"—"))}}),uz={class:"admin-repeatable"},hz={key:0,class:"admin-repeatable__lbl"},yz={key:1,class:"admin-repeatable__empty"},pz={key:2,class:"admin-repeatable__tbl"},kz={class:"admin-repeatable__idx"},mz={key:3,class:"admin-repeatable__cards"},fz={class:"admin-repeatable__card-hd"},vz={class:"admin-repeatable__dl"},gz={key:4,class:"admin-repeatable__inline"},Mz=e.defineComponent({__name:"RepeatableEntry",props:{name:{default:""},label:{default:""},entries:{default:()=>[]},layout:{default:"columns"},value:{default:void 0},placeholder:{default:"—"}},setup(a){const n=a,o=Wn(),r=e.computed(()=>{let i=n.value;if(i===void 0&&o&&n.name&&(i=o[n.name]),typeof i=="string")try{i=JSON.parse(i)}catch{i=[]}return Array.isArray(i)?i.filter(s=>s!==null&&typeof s=="object"):[]});function l(i){return String(i.label??i.name??"")}function c(i){return GM(i)}function d(i,s){const{type:h,...y}=i,m=i.attributes??{};return{...y,...m,label:"",value:s[i.name],name:i.name}}return(i,s)=>(e.openBlock(),e.createElementBlock("div",uz,[a.label?(e.openBlock(),e.createElementBlock("span",hz,e.toDisplayString(a.label),1)):e.createCommentVNode("",!0),r.value.length===0?(e.openBlock(),e.createElementBlock("p",yz,e.toDisplayString(a.placeholder),1)):a.layout==="columns"?(e.openBlock(),e.createElementBlock("table",pz,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[s[0]||(s[0]=e.createElementVNode("th",{class:"admin-repeatable__idx"},"#",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,h=>(e.openBlock(),e.createElementBlock("th",{key:h.name},e.toDisplayString(l(h)),1))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("tr",{key:y},[e.createElementVNode("td",kz,e.toDisplayString(y+1),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createElementBlock("td",{key:m.name},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({ref_for:!0},d(m,h)),null,16))]))),128))]))),128))])])):a.layout==="rows"?(e.openBlock(),e.createElementBlock("div",mz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("article",{key:y,class:"admin-repeatable__card"},[e.createElementVNode("header",fz,"#"+e.toDisplayString(y+1),1),e.createElementVNode("dl",vz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.name},[e.createElementVNode("dt",null,e.toDisplayString(l(m)),1),e.createElementVNode("dd",null,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({ref_for:!0},d(m,h)),null,16))])],64))),128))])]))),128))])):(e.openBlock(),e.createElementBlock("div",gz,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,y)=>(e.openBlock(),e.createElementBlock("span",{key:y,class:"admin-repeatable__chip"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.entries,m=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c(m.type)||"span"),e.mergeProps({key:m.name,ref_for:!0},d(m,h)),null,16))),128))]))),128))]))]))}});function iw(){AI({text:ae,badge:cw,icon:rw,keyvalue:OM,key_value:OM,"key-value":OM,repeatable:Mz,input:ae,email:ae,url:ae,password:ae,tel:ae,search:ae,slug:ae,hidden:ae,label:ae,textarea:ae,wysiwyg:ae,markdown:ae,code:ae,number:ae,slider:ae,rating:ae,select:ae,combobox:ae,radio:ae,tags:ae,"morph-switcher":ae,relation:ae,cascader:ae,"tree-select":ae,checkbox:ae,switch:ae,switcher:ae,boolean:ae,date:ae,datetime:ae,datepicker:ae,"date-range":ae,time:ae,"time-picker":ae,"color-picker":ae})}function Iz(a,n={}){const o=n.pages??{},r=n.base??wz(a.baseUrl)??"/admin";let l=null;const c=XI({baseURL:a.apiUrl,csrfToken:a.csrf,onUnauthenticated:()=>{const m=l;if(m===null){typeof window<"u"&&!window.location.pathname.endsWith("/login")&&window.location.assign(`${r}/login`);return}const v=m.currentRoute.value;v.meta?.kind!=="auth"&&m.replace({name:"admin.login",query:v.fullPath==="/"?{}:{redirect:v.fullPath}}).catch(()=>{})}});M9(c);const d=e.createApp(uI),i=Me.createPinia();d.use(i);const s=a.brand??{};d.provide(L9,s),xz(s.favicon),ge().hydrate(a),Qe().hydrate(a),XM().hydrate(a),sc().hydrate(a),p.useI18nStore().hydrate(a),ow(),GI(),iw();const h=ew({base:r,history:n.router?.history??re.createWebHistory(r),components:{login:o.login??_I,home:o.home??fI,forbidden:o.forbidden??vI,notFound:o.notFound??gI,profile:o.profile??$I,forgotPassword:o.forgotPassword??YL,resetPassword:o.resetPassword??lb,resourceIndex:o.resourceIndex??VI,resourceCreate:o.resourceCreate??p9,resourceEdit:o.resourceEdit??p9,resourceView:o.resourceView??EI,dashboard:o.dashboard??_9,settings:o.settings??MI,screen:o.screen??LI},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});l=h,d.use(h);const y=C9();if(h.beforeEach((m,v,M)=>{m.fullPath!==v.fullPath&&y.start(),M()}),h.afterEach(()=>{y.end()}),h.onError(()=>{y.end()}),h.beforeResolve(async(m,v,M)=>{const f=typeof m.name=="string"?m.name:null;if(f&&f.startsWith("admin.resource.")&&f.endsWith(".index")){const g=m.params.slug??m.meta.slug;if(g)try{const{useResourceIndexStore:k}=await Promise.resolve().then(()=>db),w=k();(w.slug!==g||w.items.length===0)&&(w.setSlug(g),await w.load().catch(()=>{}))}catch{}}M()}),n.skipManifestLoad)pe().bootResolved=!0;else{const m=pe(),v=ge(),M=hc(),f=async()=>{M.load().catch(()=>{});try{const g=await m.load();h.replaceManifestRoutes(g);const k=h.currentRoute.value;k.name==="admin.notFound"&&k.fullPath!=="/"&&await h.replace(k.fullPath).catch(()=>{})}catch(g){typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",g)}finally{m.bootResolved=!0}};v.isAuthenticated?f():m.bootResolved=!0,e.watch(()=>v.user,(g,k)=>{g&&!k&&(m.bootResolved=!1,f())})}return n.onAppCreated?.(d),{app:d,router:h,client:c}}function wz(a){if(!a)return null;try{return new URL(a).pathname||"/admin"}catch{return a.startsWith("/")?a:null}}function xz(a){if(typeof document>"u"||!a)return;let n=document.querySelector('link[rel~="icon"]');n===null&&(n=document.createElement("link"),n.rel="icon",document.head.appendChild(n)),n.href=a}const Cz={class:"admin-status-page"},Lz={class:"admin-status-page__title"},bz={class:"admin-status-page__hint"},Sz=e.defineComponent({__name:"UnknownScreenPage",setup(a){const n=re.useRoute(),o=e.computed(()=>String(n.params.slug??"")),r=e.computed(()=>String(n.meta?.title??o.value));return(l,c)=>(e.openBlock(),e.createElementBlock("div",Cz,[e.createVNode(e.unref(u.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",Lz,e.toDisplayString(r.value),1),e.createElementVNode("p",bz,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(o.value)+"». Передайте свой компонент через ",1),c[0]||(c[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),c[1]||(c[1]=e.createTextVNode(". ",-1))])]),_:1})]))}});async function _z(a={}){const n=lw();if(n)return n;if(a.client)try{const o=a.xhrUrl??"/system/bootstrap";return await a.client.get(o)}catch(o){if(o instanceof uc)return null;throw o}return null}function lw(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function Bz(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const Vz={class:"admin-notifs__hd"},qz={class:"admin-notifs__title"},Az={key:0,class:"admin-notifs__count"},zz={class:"admin-notifs__list"},Dz={key:0,class:"admin-notifs__empty"},Ez={key:1,class:"admin-notifs__empty"},Nz=["onClick"],Hz=["data-kind"],Fz={class:"admin-notifs__body"},Pz={class:"admin-notifs__row1"},Tz={key:0,class:"admin-notifs__title-strong"},jz={key:1,class:"admin-notifs__title-soft"},Uz={class:"admin-notifs__time"},Rz={key:0,class:"admin-notifs__text"},$z=["aria-label","onClick"],Oz=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(a,{emit:n}){const o=a,r=n,l=sc();function c(g){r("update:open",g)}e.watch(()=>o.open,async g=>{g&&await l.load(l.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const d=e.computed(()=>l.lastFilter??"all");async function i(g){await l.load(g,1).catch(()=>{})}async function s(){await l.markAllAsRead().catch(()=>{})}async function h(g){r("select-item",g),g.read_at||await l.markAsRead(g.id).catch(()=>{})}async function y(g,k){k.stopPropagation(),await l.destroy(g.id).catch(()=>{})}function m(g){const k=g.data.level;return k==="success"||k==="warning"||k==="danger"?k:"info"}function v(g){return g.data.title??"—"}function M(g){return g.data.body??""}function f(g){if(!g)return"";const k=new Date(g),w=Math.max(0,Date.now()-k.getTime()),D=Math.floor(w/6e4);if(D<1)return p.trSafe("только что");if(D<60)return`${D} мин назад`;const z=Math.floor(D/60);if(z<24)return`${z} ч назад`;const B=Math.floor(z/24);return B<7?`${B} д назад`:k.toLocaleDateString("ru-RU")}return(g,k)=>(e.openBlock(),e.createBlock(e.unref(u.UidDrawer),{"model-value":a.open,side:"right",width:"400px",title:e.unref(p.trSafe)("Уведомления"),"onUpdate:modelValue":c},{header:e.withCtx(()=>[e.createElementVNode("div",Vz,[e.createElementVNode("h2",qz,[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Уведомления"))+" ",1),e.unref(l).unreadCount>0?(e.openBlock(),e.createElementBlock("span",Az," ("+e.toDisplayString(e.unref(l).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(l).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",size:"sm",onClick:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Прочитать все")),1)]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(u.UidTabs),{"model-value":d.value,"onUpdate:modelValue":i},{list:e.withCtx(()=>[e.createVNode(e.unref(u.UidTab),{value:"all"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Все")),1)]),_:1}),e.createVNode(e.unref(u.UidTab),{value:"unread"},{default:e.withCtx(()=>[k[0]||(k[0]=e.createTextVNode(" Непрочитанные",-1)),e.unref(l).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(l).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(u.UidTab),{value:"read"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Прочитанные")),1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],w=>e.createVNode(e.unref(u.UidTabPanel),{key:w,value:w},{default:e.withCtx(()=>[e.createElementVNode("ul",zz,[e.unref(l).loading?(e.openBlock(),e.createElementBlock("li",Dz,e.toDisplayString(e.unref(p.trSafe)("Загрузка…")),1)):e.unref(l).items.length===0?(e.openBlock(),e.createElementBlock("li",Ez,e.toDisplayString(e.unref(p.trSafe)("Нет уведомлений")),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l).items,D=>(e.openBlock(),e.createElementBlock("li",{key:D.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${m(D)}`,{"admin-notifs__item--unread":!D.read_at}]),onClick:z=>h(D)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":m(D)},null,8,Hz),e.createElementVNode("div",Fz,[e.createElementVNode("div",Pz,[D.read_at?(e.openBlock(),e.createElementBlock("span",jz,e.toDisplayString(v(D)),1)):(e.openBlock(),e.createElementBlock("strong",Tz,e.toDisplayString(v(D)),1)),e.createElementVNode("span",Uz,e.toDisplayString(f(D.created_at)),1)]),M(D)?(e.openBlock(),e.createElementBlock("p",Rz,e.toDisplayString(M(D)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":e.unref(p.trSafe)("Удалить"),onClick:z=>y(D,z)}," × ",8,$z)],10,Nz))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value","title"]))}}),Zz={class:"admin-page admin-import-wizard"},Wz={class:"admin-page__hd"},Gz={class:"admin-page__title-wrap"},Kz={class:"admin-page__title"},Xz={class:"admin-page__actions"},Jz={class:"admin-import-wizard__card-hd"},Yz={class:"admin-import-wizard__card-hd"},Qz={key:0,class:"admin-import-wizard__empty"},eD={key:1,class:"admin-import-wizard__mapping"},tD={class:"admin-import-wizard__map-source"},aD={key:0,class:"admin-import-wizard__map-sample"},nD={class:"admin-import-wizard__card-hd"},oD={key:2,class:"admin-import-wizard__empty"},cD={class:"admin-import-wizard__card-hd"},rD={key:0,class:"admin-import-wizard__empty"},iD={class:"admin-import-wizard__kpi"},lD={class:"admin-import-wizard__nav"},dD=e.defineComponent({__name:"ImportWizardPage",props:{title:{default:"Импорт"},fieldOptions:{},headers:{default:()=>[]},preview:{default:()=>[]},previewColumns:{default:()=>[]},progress:{default:null},step:{default:void 0}},emits:["file-uploaded","mapping-submit","run-import","cancel"],setup(a,{emit:n}){const o=a,r=n,l=[{label:p.trSafe("Загрузка"),description:"CSV / TSV / XLSX"},{label:p.trSafe("Сопоставление"),description:p.trSafe("Колонки файла → поля")},{label:p.trSafe("Предпросмотр"),description:p.trSafe("Проверка первых строк")},{label:p.trSafe("Импорт"),description:p.trSafe("Запуск + сводка")}],c=e.ref(0),d=e.computed(()=>o.step??c.value);function i(z){o.step===void 0&&(z<0||z>=l.length||(c.value=z))}const s=e.ref([]);function h(z){s.value=z,z.length>0&&r("file-uploaded",z[0].file)}const y=e.ref({});function m(z,B){y.value[z]=B===null||B===""?null:String(B)}function v(){return o.headers.map(z=>({source:z.key,target:y.value[z.key]??null}))}function M(){r("mapping-submit",v()),i(2)}function f(){r("run-import"),i(3)}const g=e.computed(()=>d.value>0),k=e.computed(()=>{switch(d.value){case 0:return s.value.length>0;case 1:return Object.values(y.value).some(z=>z!==null);case 2:return!0;default:return!1}}),w=e.computed(()=>[{value:"",label:p.trSafe("Не импортировать")},...o.fieldOptions]);function D(){r("cancel")}return(z,B)=>(e.openBlock(),e.createElementBlock("section",Zz,[e.createElementVNode("header",Wz,[e.createElementVNode("div",Gz,[e.createElementVNode("h1",Kz,e.toDisplayString(e.unref(p.trSafe)(a.title)),1)]),e.createElementVNode("div",Xz,[e.createVNode(e.unref(u.UidButton),{variant:"ghost",onClick:D},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Отмена")),1)]),_:1})])]),e.createVNode(e.unref(u.UidStepper),{steps:l,current:d.value},null,8,["current"]),d.value===0?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:0,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Jz,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("1. Загрузите файл")),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(p.trSafe)("CSV / TSV / XLSX, до 50 MB")),1)]),e.createVNode(e.unref(u.UidFileUpload),{"model-value":s.value,accept:".csv,.tsv,.xlsx","max-size":50*1024*1024,"max-files":1,"primary-text":"Перетащите файл сюда или","secondary-text":"нажмите чтобы выбрать","onUpdate:modelValue":h},null,8,["model-value"])]),_:1})):d.value===1?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:1,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Yz,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("2. Сопоставьте колонки")),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(p.trSafe)("Выберите поле ресурса для каждой колонки файла")),1)]),a.headers.length===0?(e.openBlock(),e.createElementBlock("div",Qz,e.toDisplayString(e.unref(p.trSafe)("Нет данных — host ещё не отдал headers. Загрузите файл сначала.")),1)):(e.openBlock(),e.createElementBlock("div",eD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.headers,b=>(e.openBlock(),e.createElementBlock("div",{key:b.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",tD,[e.createElementVNode("strong",null,e.toDisplayString(b.label),1),b.sample?(e.openBlock(),e.createElementBlock("span",aD," «"+e.toDisplayString(b.sample)+"» ",1)):e.createCommentVNode("",!0)]),B[2]||(B[2]=e.createElementVNode("span",{class:"admin-import-wizard__map-arrow"},"→",-1)),e.createVNode(e.unref(u.UidSelect),{"model-value":y.value[b.key]??"",options:w.value,placeholder:e.unref(p.trSafe)("Не импортировать"),"onUpdate:modelValue":L=>m(b.key,L)},null,8,["model-value","options","placeholder","onUpdate:modelValue"])]))),128))]))]),_:1})):d.value===2?(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:2,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",nD,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("3. Предпросмотр")),1),e.createElementVNode("p",null,"Первые "+e.toDisplayString(a.preview.length)+" строк перед импортом",1)]),a.preview.some(b=>b.__warning)?(e.openBlock(),e.createBlock(e.unref(u.UidAlert),{key:0,variant:"warning",style:{"margin-bottom":"var(--uid-space-md)"}},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Часть строк имеет предупреждения — проверьте перед импортом.")),1)]),_:1})):e.createCommentVNode("",!0),a.previewColumns.length>0?(e.openBlock(),e.createBlock(e.unref(u.UidTable),{key:1,columns:a.previewColumns,data:a.preview},null,8,["columns","data"])):(e.openBlock(),e.createElementBlock("div",oD,e.toDisplayString(e.unref(p.trSafe)("Host не передал previewColumns/preview.")),1))]),_:1})):(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:3,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",cD,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(p.trSafe)("4. Импорт")),1)]),a.progress?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.progress.total>0?(e.openBlock(),e.createBlock(e.unref(u.UidProgress),{key:0,"model-value":a.progress.created+a.progress.updated+a.progress.errors,max:a.progress.total},null,8,["model-value","max"])):e.createCommentVNode("",!0),e.createElementVNode("div",iD,[e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Создано"),value:a.progress.created,tone:"success"},null,8,["title","value"]),e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Обновлено"),value:a.progress.updated,tone:"info"},null,8,["title","value"]),e.createVNode(e.unref(u.UidStat),{title:e.unref(p.trSafe)("Ошибки"),value:a.progress.errors,tone:"danger"},null,8,["title","value"])])],64)):(e.openBlock(),e.createElementBlock("div",rD,e.toDisplayString(e.unref(p.trSafe)("Запускается импорт…")),1))]),_:1})),e.createElementVNode("footer",lD,[g.value?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:0,variant:"ghost",onClick:B[0]||(B[0]=b=>i(d.value-1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Назад")),1)]),_:1})):e.createCommentVNode("",!0),B[3]||(B[3]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),d.value===0?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:1,variant:"primary",disabled:!k.value,onClick:B[1]||(B[1]=b=>i(1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Далее")),1)]),_:1},8,["disabled"])):d.value===1?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:2,variant:"primary",disabled:!k.value,onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Подтвердить mapping")),1)]),_:1},8,["disabled"])):d.value===2?(e.openBlock(),e.createBlock(e.unref(u.UidButton),{key:3,variant:"primary",onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p.trSafe)("Запустить импорт")),1)]),_:1})):e.createCommentVNode("",!0)])]))}}),sD={class:"admin-page admin-field-gallery"},uD={class:"admin-gallery__group-title"},hD={class:"admin-gallery__grid"},yD={class:"admin-gallery__card-hd"},pD={class:"admin-gallery__card-title"},kD={class:"admin-gallery__card-type"},mD={class:"admin-gallery__card-desc"},fD={class:"admin-gallery__card-demo"},vD=e.defineComponent({__name:"FieldGalleryPage",setup(a){const n=[{type:"text",group:"Текстовые",title:"Input",description:"Простой текстовый input. type=email/url/password/tel доступны через inputType.",node:{type:"text",name:"demo_text",label:"Заголовок статьи",placeholder:"Например: Введение в Laravel"},initial:{demo_text:"Hello World"}},{type:"textarea",group:"Текстовые",title:"Textarea",description:"Многострочный input с настраиваемым числом rows.",node:{type:"textarea",name:"demo_textarea",label:"Описание",rows:4},initial:{demo_textarea:"Multi-line text..."}},{type:"number",group:"Текстовые",title:"NumberInput",description:"Числовой input. Empty/NaN автоматически конвертируются в null.",node:{type:"number",name:"demo_number",label:"Цена",min:0,max:1e3},initial:{demo_number:42}},{type:"select",group:"Выбор",title:"Select",description:"Single-select с options. Поддерживает searchable + clearable.",node:{type:"select",name:"demo_select",label:"Категория",options:[{value:"frontend",label:"Frontend"},{value:"backend",label:"Backend"},{value:"devops",label:"DevOps"}]},initial:{demo_select:"backend"}},{type:"checkbox",group:"Выбор",title:"Checkbox",description:"Boolean toggle. inlineLabel рядом с боксом.",node:{type:"checkbox",name:"demo_checkbox",label:"Опубликовать",inlineLabel:"Сделать доступным всем"},initial:{demo_checkbox:!0}},{type:"date",group:"Дата/время",title:"DatePicker",description:"date / datetime-local / time через inputType.",node:{type:"date",name:"demo_date",label:"Дата публикации",inputType:"date"},initial:{demo_date:"2026-05-01"}}],o=n.reduce((l,c)=>(l[c.group]||(l[c.group]=[]),l[c.group].push(c),l),{}),r=e.reactive(n.reduce((l,c)=>Object.assign(l,c.initial),{}));return de.provideFormState(r),(l,c)=>(e.openBlock(),e.createElementBlock("section",sD,[c[0]||(c[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),(d,i)=>(e.openBlock(),e.createElementBlock("section",{key:i,class:"admin-gallery__group"},[e.createElementVNode("h2",uD,e.toDisplayString(i),1),e.createElementVNode("div",hD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d,s=>(e.openBlock(),e.createBlock(e.unref(u.UidCard),{key:s.type+s.title,padding:"md",class:"admin-gallery__card"},{default:e.withCtx(()=>[e.createElementVNode("header",yD,[e.createElementVNode("h3",pD,e.toDisplayString(s.title),1),e.createElementVNode("code",kD,"type: "+e.toDisplayString(s.type),1)]),e.createElementVNode("p",mD,e.toDisplayString(s.description),1),e.createElementVNode("div",fD,[e.createVNode(QM,{node:s.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.tRaw=p.tRaw;exports.trSafe=p.trSafe;exports.useI18nStore=p.useI18nStore;exports.provideFormState=de.provideFormState;exports.tryUseFormState=de.tryUseFormState;exports.useFormState=de.useFormState;exports.AdminApp=uI;exports.AdminShell=sI;exports.AdminSidebar=lI;exports.AdminTopBar=rI;exports.ApiError=ve;exports.BRAND_KEY=L9;exports.BadgeEntry=cw;exports.BarChartWidget=F9;exports.CheckboxField=ao;exports.ColumnsLayout=aw;exports.DashboardPage=_9;exports.DateField=Pe;exports.DonutChartWidget=P9;exports.FieldGalleryPage=vD;exports.FieldRenderer=QM;exports.ForbiddenError=nI;exports.ForbiddenPage=vI;exports.GaugeWidget=ZI;exports.GlobalSearch=dI;exports.HeatmapWidget=OI;exports.HomePage=fI;exports.IconEntry=rw;exports.ImportWizardPage=dD;exports.InfolistRenderer=DI;exports.KeyValueEntry=OM;exports.LayoutRenderer=Ln;exports.LocaleSwitcher=w9;exports.LoginForm=bI;exports.LoginPage=_I;exports.MarkdownWidget=WI;exports.NetworkError=uc;exports.NotFoundError=oI;exports.NotFoundPage=gI;exports.NotificationBell=aI;exports.NotificationsDrawer=Oz;exports.NumberField=$M;exports.ProfilePage=$I;exports.RecentTableWidget=UM;exports.ResourceFormPage=p9;exports.ResourceIndexPage=VI;exports.ResourceViewPage=EI;exports.RowsLayout=WM;exports.ScreenPage=LI;exports.SectionLayout=Bn;exports.SelectField=xe;exports.SettingsPage=MI;exports.StatWidget=g9;exports.TabsLayout=nw;exports.TextAreaField=RM;exports.TextEntry=ae;exports.TextField=Ae;exports.ThemeToggle=I9;exports.TwoFactorForm=SI;exports.UnauthenticatedError=x9;exports.UnknownEntry=zI;exports.UnknownField=A9;exports.UnknownScreenPage=Sz;exports.UnknownWidget=b9;exports.UserMenu=cI;exports.ValidationError=On;exports.WidgetRenderer=S9;exports.buildRoutesFromManifest=JI;exports.clearAdminClient=eI;exports.clearInfolistRegistry=ZS;exports.clearRegistry=IL;exports.clearWidgetRegistry=Kx;exports.createAdminApp=Iz;exports.createAdminClient=XI;exports.createAdminRouter=ew;exports.createAuthGuard=YI;exports.createTitleGuard=QI;exports.getAdminClient=ne;exports.getField=q9;exports.getInfolistEntry=GM;exports.getLayout=y9;exports.getWidget=pI;exports.hasAdminClient=tI;exports.hasField=wI;exports.hasInfolistEntry=$S;exports.hasLayout=CI;exports.hasWidget=kI;exports.isError=NV;exports.isSuccess=KI;exports.listFields=gL;exports.listInfolistEntries=OS;exports.listLayouts=ML;exports.listWidgets=mI;exports.loadBootstrap=_z;exports.provideRecord=V9;exports.readCsrfFromMeta=Bz;exports.readInlineBootstrap=lw;exports.registerBuiltinComponents=ow;exports.registerBuiltinInfolistEntries=iw;exports.registerBuiltinWidgets=GI;exports.registerComponents=wL;exports.registerField=II;exports.registerInfolistEntries=AI;exports.registerInfolistEntry=RS;exports.registerLayout=xI;exports.registerWidget=yI;exports.registerWidgets=Xx;exports.setAdminClient=M9;exports.toApiError=h9;exports.tryUseRecord=Wn;exports.useAuthStore=ge;exports.useBrand=yc;exports.useLocaleStore=Qe;exports.useManifestStore=pe;exports.useMenuStore=hc;exports.useNotificationsStore=sc;exports.useRecord=vL;exports.useResourceFormStore=e9;exports.useResourceIndexStore=z9;exports.useThemeStore=XM;
|
|
6
6
|
//# sourceMappingURL=index.cjs.map
|