@nitrogenbuilder/editor
Version:
Nitrogen Builder Editor Assets
1 lines • 7.13 kB
JavaScript
import{j as jsxRuntimeExports,I as Input,F as Fuse}from"./index.js";function removeWrappingSlashes(e){return e.replace(/^\s*\/*\s*|\s*\/*\s*$/gm,"")}const wordpress=({apiUrl:e,postType:t,appUser:s,appPassword:i})=>{const n={keys:["title"]};let a=[],r=null;async function l(){return r||(a.length||await async function(){const e=await fetch(`${c}/${p}/`,{credentials:"include",headers:o()});a=await e.json()}(),r=new Fuse(a,n),r)}function o(){let e={};return window.nitrogenNonce&&(e["X-WP-Nonce"]=window.nitrogenNonce),s&&i&&(e.Authorization="Basic "+btoa(`${s}:${i}`)),e}const c=e,d=e.split("/wp-json")[0],p=t,u=(e,t,s)=>{const i=t.slug;let n=t.relative_permalink;if(!i||!n)return console.warn("Missing slug or relativeUrl in pageData for Provider's projectUrl()"),"";let a=n;s&&s.some((e=>{const t=e.from,s=e.to,r=t.indexOf("[...slug]")>-1;if(t.indexOf("[slug]")>-1){const e=t.split("[slug]");let r=e[0],l=e.length>1?e[1]:"";const o=n.split(i);let c=o[0],d=o.length>1?o[1]:"";if(removeWrappingSlashes(r)===removeWrappingSlashes(c)&&removeWrappingSlashes(l)===removeWrappingSlashes(d)&&(a=s.replace("[slug]",i)),""!==a)return!0}if(r){let e=t.split("[...slug]")[0];if(n.match(new RegExp(e,"i"))&&(a=s.replace("[...slug]",n.replace(e,""))),""!==a)return!0}return removeWrappingSlashes(t||"")===removeWrappingSlashes(n||"")?(a=s,!0):(a=n,!1)}));return e.split("/?")[0]+a};return{savePage:async({title:e,settings:t,page:s,setPageId:i,pageId:n})=>{if(null!=n&&""!==n.trim()){const i=new URLSearchParams(window.location.search).get("authorId");if(!(await fetch(`${c}/${p}/${n}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json",...o()},body:JSON.stringify({data:{title:e,settings:t,author:i,data:JSON.stringify(s)}})})).ok)throw new Error("Failed to save page");return}const a=await fetch(`${c}/${p}`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",...o()},body:JSON.stringify({data:{title:e,data:s}})});i(`${(await a.json()).data.id}`)},loadPage:async(e,t)=>{const s=await fetch(`${c}/${p}/${e}`,{credentials:"include",headers:o(),...t?{signal:t.signal}:{}}),i=await s.json();return{title:i.title,data:i.content,slug:i.slug,relative_permalink:i.relative_permalink,dynamic_data:i.dynamic_data,settings:i.settings??{},nitrogenSettings:i.nitrogen_settings,projectSettings:i.project_settings}},saveProjectSettings:async e=>{const t=await fetch(`${c}/project-settings`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json",...o()},body:JSON.stringify(e)});return await t.json()},saveNitrogenSettings:async e=>{const t=await fetch(`${c}/nitrogen-settings`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json",...o()},body:JSON.stringify(e)});return await t.json()},searchUrls:async(e,t,s)=>{if(t.length>0){return(await l()).search(t).map((t=>({id:t.item.id,label:t.item.title,slug:t.item.slug,url:u(e,{slug:t.item.slug,relative_permalink:t.item.relative_permalink},s)})))}return[]},editorUrl:e=>e?`${d}/wp-admin/post.php?post=${e}&action=edit`:`${d}/wp-admin/`,projectUrl:u,gallery:{getFileUrl:e=>e.url,getFiles:async(e,t,s,i,n)=>{let a=[];t&&(a=[`filters[ext][]=${t.join("&filters[ext][]=")}`]),s.length>0&&a.push(`filters[search]=${s}`),i>0&&a.push(`paged=${i}`),fetch(`${c}/media?${a.join("&")}`,{credentials:"include",headers:o()}).then((e=>e.json())).then((t=>{t.images.sort(((e,t)=>new Date(t.post_date).getTime()-new Date(e.post_date).getTime())),e(t.images),n(t.pages)}))},updateFile:(e,t)=>{fetch(`${c}/media?id=${e}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json",...o()},body:JSON.stringify({alt:t.alt})})},uploadFiles:async e=>{const t=new FormData;e.forEach((e=>t.append("files[]",e,e.name)));const s=await fetch(`${c}/media`,{method:"POST",credentials:"include",headers:o(),body:t});return await s.json()},renderFiles:(e,t,s)=>(console.log({selectedFile:t}),e.map((e=>jsxRuntimeExports.jsx("div",{className:`h-24 w-24 cursor-pointer overflow-hidden rounded border-2 transition-all duration-150 ${[".png",".svg",".eps"].includes(e.ext),""} ${t?.id===e.id?"border-input-accent-lighter bg-input-accent-lighter text-input-accent-darker":"bg-input-accent-darker hover:bg-input-accent-dark border-input-accent-darker hover:border-input-accent-dark"}`,children:e.mime.includes("image")?jsxRuntimeExports.jsx("img",{draggable:!1,className:"h-full w-full "+([".png",".svg",".eps"].includes(e.ext)?"object-contain":"object-cover"),alt:e.alt,src:e.formats.thumbnail.url,onClick:()=>s(e)},e.id):jsxRuntimeExports.jsx("div",{className:"flex h-full w-full items-center justify-center",title:e.name,onClick:()=>s(e),children:jsxRuntimeExports.jsxs("div",{className:"flex flex-col items-center justify-center text-center",children:[jsxRuntimeExports.jsx("div",{className:"text-xs font-medium leading-5",children:e.name.split(".")[0].length>10?jsxRuntimeExports.jsxs("span",{title:e.name,children:[e.name.split(".")[0].slice(0,10),"..."]}):e.name.split(".")[0]}),jsxRuntimeExports.jsx("div",{children:e.ext}),jsxRuntimeExports.jsx("div",{className:"text-xs leading-4",children:e.size<1e3?Math.round(e.size)+" KB":Math.round(e.size/100)/10+" MB"})]})})},e.id)))),renderSelectedFile:(e,t,s)=>{const i=new Date(e.post_date),n=`${i.getDate()}/${i.getMonth()}/${i.getFullYear()}`,a=e.name,r=e.ext,l=e.alt,o=e.mime;return jsxRuntimeExports.jsxs("div",{className:"flex w-full flex-wrap gap-4 text-app-text",children:[jsxRuntimeExports.jsx("div",{className:"aspect-square h-auto w-1/2 overflow-hidden rounded bg-input-accent-darker "+([".png",".svg",".eps"].includes(r),""),children:o.includes("image")?jsxRuntimeExports.jsx("img",{draggable:!1,className:"h-full w-full "+([".png",".svg",".eps"].includes(r)?"object-contain":"object-cover"),alt:l,src:e.formats.thumbnail.url}):jsxRuntimeExports.jsx("div",{className:"flex h-full w-full items-center justify-center",title:a,children:jsxRuntimeExports.jsxs("div",{className:"flex flex-col items-center justify-center text-center",children:[jsxRuntimeExports.jsx("div",{className:"text-xs font-medium leading-5",children:a.length>10?jsxRuntimeExports.jsxs("span",{title:a,children:[a.slice(0,10),"..."]}):a}),jsxRuntimeExports.jsx("div",{children:r}),jsxRuntimeExports.jsx("div",{className:"text-xs leading-4",children:e.size<1e3?Math.round(e.size)+" KB":Math.round(e.size/100)/10+" MB"})]})})}),s&&jsxRuntimeExports.jsxs("div",{className:"flex w-full flex-col gap-1 text-xs font-medium leading-5 [overflow-wrap:anywhere]",children:[jsxRuntimeExports.jsxs("div",{className:"",children:["ID: ",e.id]}),jsxRuntimeExports.jsx("div",{className:"font-semibold",children:a}),jsxRuntimeExports.jsx("div",{className:"",children:n}),jsxRuntimeExports.jsxs("div",{className:"",children:[Math.round(e.size)," KB"]}),o&&o.includes("image")&&jsxRuntimeExports.jsxs("div",{className:"flex flex-col gap-3",children:[e.width," by ",e.height," pixels",jsxRuntimeExports.jsx("div",{className:"",children:"Alt Text:"}),jsxRuntimeExports.jsx(Input,{type:"textarea",rows:3,value:e.alt??"",onChange:s=>{t({...e,alt:s.target.value})}})]})]})]})}}}};export{wordpress as default};