PageSourceSearch

https://mangalib.org/build/assets/category-edit-DHl8wHr5.js

js mangalib.org collected 2026-10-04 20:39:55 UTC 13,029 bytes, 1 lines download raw bytes

1import{aM as te,bw as le,s as G,u as Q,aI as Z,T as Y,c as b,J as oe,P as ae,a as j,b8 as ne,b9 as se}from"./common-tnaJgdTe.js";import{U as X,$ as i,R as r,V as $,X as a,T as s,a0 as t,aI as P,W as k,S as E,a5 as W,a6 as H,a1 as V,Y as ie,a3 as T,a2 as O,r as x,_ as ee,x as ue,w as de,bm as re,ae as me,ag as ce,k as J}from"./vendor-CEub7Yrn.js";import{S as _e}from"./shared/category-edit/settings-BGwA2RNA.js";const pe={class:"popup-body"},ve={class:"inputs _inline"},fe={class:"inputs _inline"},ge={class:"inputs _inline"},ye={class:"inputs _inline"},be={class:"btns _group"},ke=X({__name:"CategoryFormDialog",props:{item:{},isCreating:{type:Boolean},requestHandler:{type:Function}},setup(y){var N,B;const m=y,o=x({dsc:"",name:"",alt_name:[],blocked_for_country:[],allowed_for_country:[],allowed_for_domain:[],alert:!1,adult:!1,site_ids:[],shiki_id:"",mal_id:"",anilist_id:""});m.item&&(o.value=te(o.value,m.item),(B=(N=o.value).allowed_for_domain)!=null||(N.allowed_for_domain=[]));const v=(c,e)=>{o.value[c]=o.value[c].filter(n=>n!==e)},D=(c,e)=>{if(!e.value.trim().length)return Y.error("Заполните поле");const n=o.value[c];n.includes(e.value)?Y.error("Такое значение уже имеется"):(n.push(e.value),e.value="")},M=x(""),U=()=>D("blocked_for_country",M),p=x(""),u=()=>D("allowed_for_country",p),f=x(""),g=()=>D("allowed_for_domain",f),w=x(""),L=()=>D("alt_name",w),{formLoading:F,onSubmit:S}=Q(),R=()=>{var c;return m.requestHandler(o.value,m.isCreating,(c=m.item)==null?void 0:c.id).ok(Z)};return(c,e)=>{const n=i("v-input"),d=i("v-form-group"),C=i("fa-icon"),z=i("v-button"),q=i("v-tag-item"),I=i("v-alert"),h=i("v-input-box");return r(),$(G,{size:"sm",title:y.isCreating?"Добавлене":"Редактирование",close:""},{default:a(()=>[s("div",pe,[t(d,{label:"Название"},{default:a(()=>[t(n,{modelValue:o.value.name,"onUpdate:modelValue":e[0]||(e[0]=l=>o.value.name=l),modelModifiers:{capitalize:!0},placeholder:"Название"},null,8,["modelValue"])]),_:1}
1),t(d,{label:"Альт. названия"},{default:a(()=>[s("div",ve,[t(n,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=l=>w.value=l),placeholder:"Введите название и нажмите Enter или +",onKeyup:P(L,["enter"])},null,8,["modelValue"]),t(z,{variant:"input",outline:"",icon:"",onClick:L},{default:a(()=>[t(C,{icon:"plus"})]),_:1})]),s("div",{class:k(c.$style.tags)},[(r(!0),E(W,null,H(o.value.alt_name,l=>(r(),$(q,{key:l,text:l,onClick:A=>v("alt_name",l)},null,8,["text","onClick"]))),128))],2)]),_:1}),t(d,{label:"Заблокировать для регионов (ISO код)"},{default:a(()=>[t(I,{size:"sm"},{default:a(()=>[...e[13]||(e[13]=[V(" Коды регионов можно найти ",-1),s("a",{href:"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes",rel:"noopener",target:"_blank"},"тут",-1)])]),_:1}),s("div",fe,[t(n,{modelValue:M.value,"onUpdate:modelValue":e[2]||(e[2]=l=>M.value=l),modelModifiers:{uppercase:!0},placeholder:"Введите название и нажмите Enter или +",maxlength:"2",onKeyup:P(U,["enter"])},null,8,["modelValue"]),t(z,{variant:"input",outline:"",icon:"",onClick:U},{default:a(()=>[t(C,{icon:"plus"})]),_:1})]),s("div",{class:k(c.$style.tags)},[(r(!0),E(W,null,H(o.value.blocked_for_country,l=>(r(),$(q,{key:l,text:l,onClick:A=>v("blocked_for_country",l)},null,8,["text","onClick"]))),128))],2)]),_:1}),t(d,{label:"Доступно только для регионов (ISO код)"},{default:a(()=>[t(I,{size:"sm"},{default:a(()=>[...e[14]||(e[14]=[V(" Коды регионов можно найти ",-1),s("a",{href:"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes",rel:"noopener",target:"_blank"},"тут",-1)])]),_:1}),s("div",ge,[t(n,{modelValue:p.value,"onUpdate:modelValue":e[3]||(e[3]=l=>p.value=l),modelModifiers:{uppercase:!0},placeholder:"Введите название и нажмите Enter или +",maxlength:"2",onKeyup:P(u,["enter"])},null,8,["modelValue"]),t(z,{variant:"input",outline:"",icon:"",onClick:u},{default:a(()=>[t(C,{icon:"plus"})]),_:1})]),s("div",{class:k(c.$style.tags)},[(r(!0),E(W,null,H(o.value.allowed_for_country,l=>(r(),$(q,{key:l,text:l,onClick:A=>v("allowed_for_country",l)},null,8,["text","onClick"]))),128))],2)]),_:1}),t(d,{label:"Доступно только для доменов"},{default:a(()=>[t(I,{size:"sm"},{default:a(()=>[...e[15]||(e[15]=[V(" Например: ",-1),s("b",null,"v1.novelslib.me",-1),V(". Домены имеют приоритет над блокировками по странам. ",-1)])]),_:1}),s("div",ye,[t(n,{modelValue:f.value,"onUpdate:modelValue":e[4]||(e[4]=l=>f.value=l),placeholder:"Введите домен и нажмите Enter или +",onKeyup:P(g,["enter"])},null,8,["modelValue"]),t(z,{variant:"input",outline:"",icon:"",onClick:g},{default:a(()=>[t(C,{icon:"plus"})]),_:1})]),s("div",{class:k(c.$style.tags)},[(r(!0),E(W,null,H(o.value.allowed_for_domain,l=>(r(),$(q,{key:l,text:l,onClick:A=>v("allowed_for_domain",l)},null,8,["text","onClick"]))),128))],2)]),_:1}),s("div",{class:k(c.$style.ids)},[t(d,{label:"shiki_id"},{default:a(()=>[t(n,{modelValue:o.value.shiki_id,"onUpdate:modelValue":e[5]||(e[5]=l=>o.value.shiki_id=l)},null,8,["modelValue"])]),_:1}),t(d,{label:"mal_id"},{default:a(()=>[t(n,{modelValue:o.value.mal_id,"onUpdate:modelValue":e[6]||(e[6]=l=>o.value.mal_id=l)},null,8,["modelValue"])]),_:1}),t(d,{label:"anilist_id"},{default:a(()=>[t(n,{modelValue:o.value.anilist_id,"onUpdate:modelValue":e[7]||(e[7]=l=>o.value.anilist_id=l)},null,8,["modelValue"])]),_:1})],2),t(d,null,{default:a(()=>[t(h,{modelValue:o.value.alert,"onUpdate:modelValue":e[8]||(e[8]=l=>o.value.alert=l),label:"Предупреждающее окно что это «специфический» тег/жанр","disable-truncate":""},null,8,["modelValue"])]),_:1}),t(d,null,{default:a(()=>[t(h,{modelValue:o.value.adult,"onUpdate:modelValue":e[9]||(e[9]=l=>o.value.adult=l),label:"Для взрослых",description:"Скрывает жанр/тег и тайтлы с ним для незарегистрированных. Не используйте для хентая или слэша"},{default:a(()=>[...e[16]||(e[16]=[V(" Для взрослых ",-1)])]),_:1},8,["modelValue"])]),_:1}),y.isCreating?(r(),$(d,{key:0,label:"Сайт"},{default:a(()=>[s("div",be,[t(le,{modelValue:o.value.site_ids,"onUpdate:modelValue":e[10]||(e[10]=l=>o.value.site_ids=l)},null,8,["modelValue"])])]),_:1})):ie("",!0),t(d,{label:"Описание ".concat(o.value.dsc.length," / 1000")},{default:a(()=>[t(n,{modelValue:o.value.dsc,"onUpdate:modelValue":e[11]||(e[11]=l=>o.value.dsc=l),type:"textarea",rows:"8",max:"1000"},null,8,["modelValue"])]),_:1},8,["label"]),t(z,{loading:T(F),variant:"primary",filled:"",block:"",onClick:e[12]||(e[12]=l=>T(S)(R))},{default:a(()=>[V(O(y.isCreating?"Создать":"Сохранить"),1)]),_:1},8,["loading"])])]),_:1},8,["title"])}}}),Ve="um_lq",Ce="um_un",we={tags:Ve,ids:Ce},$e={$style:we},xe=ee(ke,[["__cssModules",$e]]),De={class:"popup-body"},Ue=X({__name:"CategoryMigrateDialog",props:{item:{},category:{},name:{},updateCategoryItem:{type:Function},onDeleteRequest:{type:Function}},setup(y){const m=y,o=x(""),v=x(!0),{formLoading:D,onSubmit:M}=Q(),U=()=>{const p={from:m.item.id,to:parseInt(o.value)},u=()=>{m.updateCategoryItem({...ue(m.item,"id","name"),id:p.to})};let f;return m.category==="tags"?f=b.post("/tags/migrate",p):f=b.post("/genres/migrate",p),f.ok(u),f.then(g=>{if(v.value&&g.ok)return m.onDeleteRequest(m.item)}),f};return(p,u)=>{const f=i("v-input"),g=i("v-form-group"),w=i("v-input-box"),L=i("fa-icon"),F=i("v-two-state-button");return r(),$(G,{title:"Перенос данных",size:"mini"},{default:a(()=>[s("div",De,[t(g,null,{default:a(()=>[t(f,{modelValue:o.value,"onUpdate:modelValue":u[0]||(u[0]=S=>o.value=S),placeholder:"ID тега или жанра куда переносим"},null,8,["modelValue"])]),_:1}),t(g,null,{default:a(()=>[...u[2]||(u[2]=[s("div",{class:"text-secondary"},[V(" Будут перенесены: "),s("br"),V(" - Тайтлы "),s("br"),V(" - Альтернативные названия будут объеденены, и убраны дубликаты "),s("br")],-1)])]),_:1}),t(g,null,{default:a(()=>[t(w,{modelValue:v.value,"onUpdate:modelValue":u[1]||(u[1]=S=>v.value=S)},{default:a(()=>[V(" Удалить текущий "+O(y.name)+" (#"+O(y.item.id)+" "+O(y.item.name)+") ",1)]),_:1},8,["modelValue"])]),_:1}),t(F,{loading:T(D),"confirm-btn":{variant:"success"},action:()=>T(M)(U),block:""},{confirm:a(()=>[t(L,{icon:"check"}),u[3]||(u[3]=s("span",null,"Подтвердить",-1))]),default:a(()=>[u[4]||(u[4]=V(" Перенести ",-1))]),_:1},8,["loading","action"])])]),_:1})}}}),Ie={class:"container _offset-top"},Te={class:"paper"},Me={class:"section-header unset-padding-y"},Le={class:"section-header _sticky"},Se=X({__name:"CategoryEdit",props:{category:{}},setup(y){const m=y,o=J(()=>m.category==="tags"),{data:v,loading:D,fetchData:M}=oe(()=>o.value?b.get("/tags"):b.get("/genres"),{defaultValue:[],immediateFetch:!1});de(()=>m.category,M,{immediate:!0});const U=x(""),p=x("all"),u={all:"Все",blocked_country:"Есть заблокированные страны",allowed_country:"Есть разрешенные страны",allowed_domain:"Есть разрешенные домены"},f=J(()=>v.value.filter(e=>e.name.toLowerCase().includes(U.value.toLowerCase())?p.value==="blocked_country"?e.blocked_for_country&&e.blocked_for_country.length>0:p.value==="allowed_country"?e.allowed_for_country&&e.allowed_for_country.length>0:p.value==="allowed_domain"?e.allowed_for_domain&&e.allowed_for_domain.length>0:!0:!1)),g=J(()=>({headTitle:"Редактирование ".concat(o.value?"тегов":"жанров"),categoryName:o.value?"тег":"жанр"}));re({title:()=>g.value.headTitle});const w={post:e=>
1o.value?b.post("/tags",e):b.post("/genres",e),update:(e,n)=>(b.params2(e),o.value?b.update("/tags/{tag}",n):b.update("/genres/{genre}",n)),delete:e=>(b.params2(e),o.value?b.delete("/tags/{tag}"):b.delete("/genres/{genre}"))},L=(e,n,d)=>n?w.post(e).ok(({data:C})=>v.value.push(C)):w.update(d,e).ok(({data:C})=>R(C)),F=e=>w.delete(e.id).ok(()=>{ne(v.value,e),Z()}),S=e=>{ae.confirm({text:"Вы действительно хотите удалить ".concat(g.value.categoryName," «").concat(e.name,"»"),confirmButton:{text:"Удалить",variant:"danger"},onConfirm:()=>F(e)})},R=e=>se(v.value,e),N=e=>{L({site_ids:e.site_ids},!1,e.id)},[B]=j(xe,{requestHandler:L}),[c]=j(Ue,{updateCategoryItem:R,onDeleteRequest:F});return(e,n)=>{const d=i("v-tabs-item"),C=i("v-tabs"),z=i("v-input"),q=i("v-select"),I=i("fa-icon"),h=i("v-button"),l=i("v-loader"),A=me("tippy");return r(),E("div",Ie,[ce((r(),E("div",Te,[s("div",Me,[t(C,null,{default:a(()=>[t(d,{to:{name:"category-edit",params:{category:"tags"}},text:"Теги"}),t(d,{to:{name:"category-edit",params:{category:"genres"}},text:"Жанры"})]),_:1})]),s("div",Le,[s("div",{class:k([e.$style.inputs,"inputs _inline"])},[t(z,{class:k(e.$style.input),modelValue:U.value,"onUpdate:modelValue":n[0]||(n[0]=_=>U.value=_),placeholder:"Поиск по названию",clear:""},null,8,["class","modelValue"]),t(q,{class:k(e.$style.select),modelValue:p.value,"onUpdate:modelValue":n[1]||(n[1]=_=>p.value=_),items:u},null,8,["class","modelValue"]),t(h,{class:k(e.$style.button),variant:"success",filled:"",onClick:n[2]||(n[2]=_=>T(B)({isCreating:!0}))},{default:a(()=>[t(I,{icon:"plus"}),s("span",null,"Добавить "+O(g.value.categoryName),1)]),_:1},8,["class"])],2)]),T(D)?(r(),$(l,{key:0,pad:""})):(r(!0),E(W,{key:1},H(f.value,_=>(r(),$(_e,{class:k(e.$style.row),key:_.id,modelValue:_.site_ids,"onUpdate:modelValue":K=>_.site_ids=K,"item-id":_.id,label:_.name,"model-update-debounce":2,"model-update-debounce-text":{before:"Сохраняем",after:"Сохранено"},onUpdateModelDebounce:K=>N(_)},{"actions-before":a(()=>[s("div",{class:k([e.$style.btns,"btns"])},[t(h,{size:"sm",plain:"",icon:"",onClick:K=>T(c)({item:_,category:y.category,name:g.value.categoryName})},{default:a(()=>[t(I,{icon:"code-branch"})]),_:1},8,["onClick"]),t(h,{"data-tooltip":"Описание",size:"sm",plain:"",icon:"",onClick:K=>T(B)({item:_})},{default:a(()=>[t(I,{icon:_.dsc?"message":["far","message"]},null,8,["icon"])]),_:2},1032,["onClick"])],2),t(h,{class:k(e.$style.remove),"data-tooltip":"Удалить",variant:"danger",size:"sm",plain:"",icon:"",onClick:K=>S(_)},{default:a(()=>[t(I,{icon:"trash",size:"sm"})]),_:1},8,["class","onClick"])]),_:2},1032,["class","modelValue","onUpdate:modelValue","item-id","label","onUpdateModelDebounce"]))),128))])),[[A,void 0,void 0,{delegate:!0}]])])}}}),ze="w_x",he="w_q",Ee="w_y",Fe="w_z",qe="w_aa",Be="w_ab",Ae="w_ac",Ke={row:ze,btns:he,remove:Ee,inputs:Fe,input:qe,button:Be,select:Ae},We={$style:Ke},Ne=ee(Se,[["__cssModules",We]]);export{Ne as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.