PageSourceSearch

https://villume.com/chunk-SUTA35HQ.js

js villume.com collected 2026-10-04 05:33:27 UTC 16,264 bytes, 1 lines download raw bytes

1import{$c as U,Ac as T,H as L,M as I,Q as S,Xc as m,ha as x,i as d,j as w,n as h,od as C,rc as $,z as f}from"./chunk-5JXA4GNO.js";import{a as y,b}from"./chunk-JSSFPNKJ.js";var A={ARTICLES:"villume_admin_blog_articles",CATEGORIES:"villume_admin_blog_categories",TAGS:"villume_admin_blog_tags"},J=(()=>{class M{constructor(){this._http=S(T),this._mainService=S(U),this._platformId=S(x),this._isBrowser=$(this._platformId),this._inMemoryArticles=[],this._inMemoryCategories=[],this._inMemoryTags=[],this._initializeData()}_initializeData(){if(this._isBrowser)try{localStorage.removeItem(A.ARTICLES),localStorage.removeItem(A.CATEGORIES),localStorage.removeItem(A.TAGS)}catch(e){}this._inMemoryArticles=[],this._inMemoryCategories=[],this._inMemoryTags=[]}_persistArticles(){if(this._isBrowser)try{localStorage.setItem(A.ARTICLES,JSON.stringify(this._inMemoryArticles))}catch(e){}}_persistCategories(){if(this._isBrowser)try{localStorage.setItem(A.CATEGORIES,JSON.stringify(this._inMemoryCategories))}catch(e){}}_persistTags(){if(this._isBrowser)try{localStorage.setItem(A.TAGS,JSON.stringify(this._inMemoryTags))}catch(e){}}generateSlug(e){return(e||"").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}isValidUuid(e){return typeof e!="string"||!e.trim()?!1:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e.trim())}_resolveCategoryId(e){let t=e.category_id||e.category?.id;if(this.isValidUuid(t))return d(t);let r=(e.category?.name||e.category?.title||"").trim();if(!r)return d(null);let i=this._inMemoryCategories.find(s=>(s.name&&s.name.toLowerCase()===r.toLowerCase()||s.title&&s.title.toLowerCase()===r.toLowerCase())&&this.isValidUuid(s.id));return i&&this.isValidUuid(i.id)?d(i.id):this.createCategory({name:r,title:r,slug:e.category?.slug||this.generateSlug(r),description:e.category?.description||""}).pipe(h(s=>this.isValidUuid(s?.id)?s.id:null),f(()=>d(null)))}_extractErrorMessage(e,t){return e?.error?.data?.errors?.messages||e?.error?.message||e?.message||t}validateFeaturedImage(e){return["image/jpeg","image/png","image/webp","image/gif"].includes(e.type)?e.size>10485760?{valid:!1,error:"File size exceeds 10MB limit. Please upload a smaller image."}:{valid:!0}:{valid:!1,error:"Unsupported image format. Please upload JPG, PNG, or WebP."}}_normalizeArticle(e){let t=e.category||{},r=t.name||t.title||"",i={id:t.id||e.category_id||"",name:r,title:r,slug:t.slug||(r?this.generateSlug(r):""),description:t.description||"",articles_count:t.articles_count,created_at:t.created_at},s=e.author||{},o=s.name||[s.first_name,s.last_name].filter(Boolean).join(" ")||s.username||"",l={id:s.id||"",name:o,first_name:s.first_name,last_name:s.last_name,username:s.username||"",email:s.email,avatar:s.avatar||null},n=e.cover_image||e.featured_image?.url||null,g=n?this.convertPathImage(n):null,_=g?{url:g,alt:e.featured_image?.alt||e.title,size:e.featured_image?.size,width:e.featured_image?.width,height:e.featured_image?.height}:null,a=e.content;if(typeof a=="string")try{a=JSON.parse(a)}catch(u){a={blocks:[]}}!a||!Array.isArray(a.blocks)?a={blocks:[]}:a.blocks=a.blocks.map(u=>u?.type==="image"&&u?.data?.file?.url?b(y({},u),{data:b(y({},u.data),{file:b(y({},u.data.file),{url:this.convertPathImage(u.data.file.url)})})}):u);let c=e.tags||[];if(typeof c=="string")try{c=JSON.parse(c)}catch(u){c=c.split(",").map(p=>p.trim()).filter(Boolean)}return{id:e.id||"",title:e.title||"",slug:e.slug||"",excerpt:e.excerpt||"",content:a,author:l,category_id:e.category_id||i.id,category:i,tags:Array.isArray(c)?c:[],cover_image:g,featured_image:_,status:e.status||"draft",is_featured:!!e.is_featured,views_count:e.views_count||0,created_at:e.created_at||new Date().toISOString(),updated_at:e.updated_at||new Date().toISOString(),published_at:e.published_at||null,seo_title:e.seo_title||e.title,seo_description:e.seo_description||e.excerpt,seo_keywords:e.seo_keywords}}getArticles(e){let t=new URLSearchParams;return e?.search&&t.set("search",e.search),e?.category_id&&t.set("category_id",e.category_id),e?.status&&e.status!=="all"&&t.set("status",e.status),e?.page&&t.set("page",e.page.toString()),e?.limit&&t.set("limit",e.limit.toString()),this._http.get(`${m.baseURL_go}/v1/support/blog/articles?${t.toString()}`).pipe(h(r=>{let i=r?.data||r,o=(i?.articles||[]).map(g=>this._normalizeArticle(g)),l=i?.limit??(e?.limit||10),n=i?.total??o.length;return{articles:o,total:n,page:i?.page??(e?.page||1),limit:l,total_pages:i?.total_pages??(Math.ceil(n/l)||1)}}),f(()=>d(this._filterLocalArticles(e))))}getPublicArticles(e){let t=new URLSearchParams;e?.search&&t.set("search",e.search),e?.category&&t.set("category",e.category),e?.tag&&t.set("tag",e.tag),e?.featured!==void 0&&e?.featured!==null&&e?.featured!==""&&(e.featured===!0||e.featured==="true"||e.featured==="1")&&t.set("featured","true"),e?.page&&t.set("page",e.page.toString()),e?.limit&&t.set("limit",e.limit.toString());let r=t.toString(),i=`${m.baseURL_go}/v1/blog/articles${r?`?${r}`:""}`;return this._http.get(i).pipe(h(s=>{let o=s?.data||s,n=(o?.articles||[]).map(a=>this._normalizeArticle(a)),g=o?.limit??(e?.limit||10),_=o?.total??n.length;return{articles:n,total:_,page:o?.page??(e?.page||1),limit:g,total_pages:o?.total_pages??(Math.ceil(_/g)||1)}}),f(()=>
1d(this._filterLocalArticles({search:e?.search,category_id:e?.category,status:"published",featured:e?.featured,page:e?.page,limit:e?.limit}))))}_filterLocalArticles(e){let t=[...this._inMemoryArticles];if(e?.status&&e.status!=="all"&&(t=t.filter(a=>a.status===e.status)),e?.category_id){let a=e.category_id.toLowerCase().trim();t=t.filter(c=>c.category?.id?.toLowerCase()===a||c.category_id?.toLowerCase()===a||c.category?.name?.toLowerCase()===a||c.category?.slug?.toLowerCase()===a)}if(e?.featured!==void 0&&e?.featured!==null&&e?.featured!==""&&(e.featured===!0||e.featured==="true"||e.featured==="1")&&(t=t.filter(c=>!!c.is_featured)),e?.search&&e.search.trim().length>0){let a=e.search.trim().toLowerCase();t=t.filter(c=>{let u=c.title.toLowerCase().includes(a),p=c.excerpt?.toLowerCase().includes(a),v=c.slug?.toLowerCase().includes(a),R=c.author?.name?.toLowerCase().includes(a);return u||p||v||R})}let r=e?.sort_by||"updated_at",i=e?.sort_order||"desc";t.sort((a,c)=>{let u=new Date(a[r]||a.updated_at||a.created_at).getTime(),p=new Date(c[r]||c.updated_at||c.created_at).getTime();return i==="asc"?u-p:p-u});let s=e?.page&&e.page>0?e.page:1,o=e?.limit&&e.limit>0?e.limit:10,l=t.length,n=Math.ceil(l/o)||1,g=(s-1)*o;return{articles:t.slice(g,g+o),total:l,page:s,limit:o,total_pages:n}}getArticleById(e){return this._http.get(`${m.baseURL_go}/v1/support/blog/articles/${e}`).pipe(h(t=>{let r=t?.data?.article||t?.data||t;return r?this._normalizeArticle(r):null}),f(()=>{let t=this._inMemoryArticles.find(r=>r.id===e)||null;return d(t)}))}getArticleBySlug(e){return this._http.get(`${m.baseURL_go}/v1/blog/articles/${e}`).pipe(h(t=>{let r=t?.data?.article||t?.data||t;return r?this._normalizeArticle(r):null}),f(()=>{let t=this._inMemoryArticles.find(r=>r.slug===e)||null;return d(t)}))}createArticle(e){let t=this._mainService.userInfo,r=new Date().toISOString(),i=e.title||"Untitled Blog Post",s=e.slug||this.generateSlug(i),o=e.cover_image||e.featured_image?.url||null;return this._resolveCategoryId(e).pipe(L(l=>{let n={title:i,slug:s,excerpt:e.excerpt||"",content:e.content||{time:Date.now(),version:"2.31.6",blocks:[]},cover_image:o,category_id:l,tags:e.tags||[],status:e.status||"draft",is_featured:e.is_featured??!1,seo_title:e.seo_title||i,seo_description:e.seo_description||e.excerpt||"",seo_keywords:Array.isArray(e.seo_keywords)?e.seo_keywords.join(", "):e.seo_keywords||""};return this._http.post(`${m.baseURL_go}/v1/support/blog/articles`,n).pipe(h(g=>{let _=g?.data||g,a=_?.id||"",c=_?.slug||s,u=_?.status||n.status,p=this._normalizeArticle(b(y({},n),{id:a,slug:c,status:u,author:{id:t?.id||"",name:t?.name||[t?.first_name,t?.last_name].filter(Boolean).join(" ").trim()||t?.username||"",username:t?.username||"",avatar:t?.avatar},category:e.category||(l?this._inMemoryCategories.find(v=>v.id===l):void 0),created_at:r,updated_at:r,published_at:u==="published"?r:null}));return this._inMemoryArticles.unshift(p),this._persistArticles(),C("blog_article_created",{id:p.id,title:p.title}),p}),f(g=>{let _=this._extractErrorMessage(g,"Failed to create article.");return w(()=>new Error(_))}))}))}updateArticle(e,t){let r=new Date().toISOString(),i=t.cover_image||t.featured_image?.url,s=t.category_id!==void 0||t.category!==void 0;return(s?this._resolveCategoryId(t):d(void 0)).pipe(L(l=>{let n={};return t.title!==void 0&&(n.title=t.title),t.slug!==void 0&&(n.slug=t.slug),t.excerpt!==void 0&&(n.excerpt=t.excerpt),t.content!==void 0&&(n.content=t.content),i!==void 0&&(n.cover_image=i),s&&(n.category_id=l??null),t.tags!==void 0&&(n.tags=t.tags),t.status!==void 0&&(n.status=t.status),t.is_featured!==void 0&&(n.is_featured=t.is_featured),t.seo_title!==void 0&&(n.seo_title=t.seo_title),t.seo_description!==void 0&&(n.seo_description=t.seo_description),t.seo_keywords!==void 0&&(n.seo_keywords=Array.isArray(t.seo_keywords)?t.seo_keywords.join(", "):t.seo_keywords),this._http.put(`${m.baseURL_go}/v1/support/blog/articles/${e}`,n).pipe(h(g=>{let _=g?.data||g,a=this._inMemoryArticles.findIndex(p=>p.id===e),c=a!==-1?this._inMemoryArticles[a]:{},u=this._normalizeArticle(b(y(y({},c),t),{id:e,slug:_?.slug||t.slug||c.slug,status:_?.status||t.status||c.status,updated_at:r}));return a!==-1?this._inMemoryArticles[a]=u:this._inMemoryArticles.unshift(u),this._persistArticles(),C("blog_article_updated",{id:e,title:u.title}),u}),f(g=>{let _=this._extractErrorMessage(g,`Failed to update article with id ${e}.`);return w(()=>new Error(_))}))}))}deleteArticle(e){return this._http.delete(`${m.baseURL_go}/v1/support/blog/articles/${e}`).pipe(h(()=>(this._inMemoryArticles=this._inMemoryArticles.filter(t=>t.id!==e),this._persistArticles(),C("blog_article_deleted",{id:e}),!0)),f(t=>{let r=this._extractErrorMessage(t,"Failed to delete article.");return w(()=>new Error(r))}))}publishArticle(e){let t=new Date().toISOString();return this._http.patch(`${m.baseURL_go}/v1/support/blog/articles/${e}/publish`,{publish:!0}).pipe(h(r=>{let i=r?.data||r,s=this._inMemoryArticles.findIndex(n=>n.id===e),o=s!==-1?this._inMemoryArticles[s]:{},l=b(y({},o),{id:e,status:"published",published_at:i?.published_at||o.published_at||t,updated_at:t});return s!==-1&&(this._inMemoryArticles[s]=l,this._persistArticles()),C("blog_article_published",{id:e,slug:l.slug||e}),{success:!0,article:l,message:"Your blog has been published."}}),f(r=>{let i=this._extractErrorMessage(r,"Failed to publish article.");return d({success:!1,message:i})}))}unpublishArticle(e){let t=new Date().toISOString();return this._http.patch(`${m.baseURL_go}/v1/support/blog/articles/${e}/publish`,{publish:!1}).pipe(h(()=>{let r=this._inMemoryArticles.findIndex(o=>o.id===e),i=r!==-1?this._inMemoryArticles[r]:{},s=b(y({},i),{id:e,status:"unpublished",updated_at:t});return r!==-1&&(this._inMemoryArticles[r]=s,this._persistArticles()),C("blog_article_unpublished",{id:e}),s}),f(r=>{let i=this._extractErrorMessage(r,"Failed to unpublish article.");return w(()=>new Error(i))}))}getCategories(){return this._http.get(`${m.baseURL_go}/v1/support/blog/categories`).pipe(h(e=>{let t=e?.data?.categories||e?.data||e||[];if(Array.isArray(t)&&t.length>0){let r=t.map(i=>({id:i.id,name:i.name||i.title,title:i.name||i.title,slug:i.slug,description:i.description||"",articles_count:i.articles_count,created_at:i.created_at}));
1return this._inMemoryCategories=r,this._persistCategories(),r}return[...this._inMemoryCategories]}),f(()=>d([...this._inMemoryCategories])))}getPublicCategories(){return this._http.get(`${m.baseURL_go}/v1/blog/categories`).pipe(h(e=>{let t=e?.data?.categories||e?.data||e||[];if(Array.isArray(t)&&t.length>0){let r=t.map(i=>({id:i.id,name:i.name||i.title,title:i.name||i.title,slug:i.slug,description:i.description||"",articles_count:i.articles_count??0,created_at:i.created_at}));return this._inMemoryCategories=r,this._persistCategories(),r}return[...this._inMemoryCategories]}),f(()=>d([...this._inMemoryCategories])))}createCategory(e){let t=e.name||e.title||"",r={name:t.trim(),slug:e.slug?.trim()||this.generateSlug(t),description:e.description?.trim()||""};return this._http.post(`${m.baseURL_go}/v1/support/blog/categories`,r).pipe(h(i=>{let s=i?.data||i,o={id:s?.id||`cat-${Date.now()}`,name:s?.name||r.name,title:s?.name||r.name,slug:s?.slug||r.slug,description:s?.description||r.description,created_at:new Date().toISOString()},l=this._inMemoryCategories.findIndex(n=>n.name&&n.name.toLowerCase()===o.name?.toLowerCase()||n.title&&n.title.toLowerCase()===o.title?.toLowerCase()||n.slug===o.slug);return l!==-1?this._inMemoryCategories[l]=o:this._inMemoryCategories.push(o),this._persistCategories(),C("blog_category_created",{id:o.id,title:o.name}),o}),f(()=>{let i={id:`cat-${Date.now()}`,name:r.name,title:r.name,slug:r.slug,description:r.description,created_at:new Date().toISOString()},s=this._inMemoryCategories.findIndex(o=>o.name&&o.name.toLowerCase()===i.name?.toLowerCase()||o.title&&o.title.toLowerCase()===i.title?.toLowerCase()||o.slug===i.slug);return s!==-1?this._inMemoryCategories[s]=i:this._inMemoryCategories.push(i),this._persistCategories(),C("blog_category_created",{id:i.id,title:i.name}),d(i)}))}updateCategory(e,t){let r=t.name||t.title,i={};return r!==void 0&&(i.name=r.trim()),t.slug!==void 0&&(i.slug=t.slug.trim()),t.description!==void 0&&(i.description=t.description.trim()),this._http.put(`${m.baseURL_go}/v1/support/blog/categories/${e}`,i).pipe(h(s=>{let o=s?.data||s,l=this._inMemoryCategories.findIndex(_=>_.id===e),n=l!==-1?this._inMemoryCategories[l]:{},g=b(y({},n),{id:e,name:o?.name||i.name||n.name,title:o?.name||i.name||n.title,slug:o?.slug||i.slug||n.slug,description:o?.description??(i.description!==void 0?i.description:n.description)});return l!==-1&&(this._inMemoryCategories[l]=g),this._persistCategories(),C("blog_category_updated",{id:e,title:g.name}),g}),f(()=>{let s=this._inMemoryCategories.findIndex(o=>o.id===e);if(s!==-1){let o=this._inMemoryCategories[s],l=b(y({},o),{name:i.name||o.name,title:i.name||o.title,slug:i.slug||o.slug,description:i.description!==void 0?i.description:o.description});return this._inMemoryCategories[s]=l,this._persistCategories(),C("blog_category_updated",{id:e,title:l.name}),d(l)}return d({id:e,name:i.name||"",title:i.name||"",slug:i.slug||"",description:i.description||""})}))}deleteCategory(e){return this._http.delete(`${m.baseURL_go}/v1/support/blog/categories/${e}`).pipe(h(()=>(this._inMemoryCategories=this._inMemoryCategories.filter(t=>t.id!==e),this._persistCategories(),!0)),f(()=>(this._inMemoryCategories=this._inMemoryCategories.filter(t=>t.id!==e),this._persistCategories(),d(!0))))}getTags(){return this._http.get(`${m.baseURL_go}/v1/blog/tags`).pipe(h(e=>{let t=e?.data?.tags||e?.tags||[];if(Array.isArray(t)&&t.length>0){let r=t.map((i,s)=>{let o=typeof i=="string"?i:i.name;return{id:i.id||`tag-${s}`,name:o,slug:i.slug||this.generateSlug(o)}});return this._inMemoryTags=r,this._persistTags(),r}return[...this._inMemoryTags]}),f(()=>d([...this._inMemoryTags])))}createTag(e){let t=e.trim(),r=this._inMemoryTags.find(s=>s.name.toLowerCase()===t.toLowerCase());if(r)return d(r);let i={id:`tag-${Date.now()}`,name:t,slug:this.generateSlug(t)};return this._inMemoryTags.push(i),this._persistTags(),d(i)}uploadImage(e){let t=new FormData;return t.append("image",e),t.append("file",e),this._http.post(`${m.baseURL_go}/v1/support/blog/upload-image`,t).pipe(h(r=>{let i=r?.file?.url||r?.data?.url||r?.data?.path||"",s=r?.data?.f
1ilename;if(!i)throw new Error("Upload succeeded but no URL was returned");return{url:this.convertPathImage(i),filename:s,rawUrl:i}}))}convertPathImage(e){if(!e)return"";let t=e.trim();return t.startsWith("data:")||t.startsWith("blob:")||t.startsWith("http://")||t.startsWith("https://")?t:this._mainService.convertPathImage(t)}getPublicArticleUrl(e){return`${m.base_host||"https://villume.com"}/blog/${e}`}static{this.\u0275fac=function(t){return new(t||M)}}static{this.\u0275prov=I({token:M,factory:M.\u0275fac,providedIn:"root"})}}return M})();export{J as a};

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.