1import{r as g,j as e}from"./react-runtime-N1nDC6Jd.js";import{m as w,p as $,u as G,d as ie,e as ce,h as de,s as me}from"./blog-DO5XFrth.js";import{u as ue}from"./I18nContext-BgT-5xhG.js";import{B as ge}from"./BlogMarkdown-DcPwdI3C.js";import{B as xe}from"./Blog-l3VsLGLi.js";import{aN as pe,b2 as he}from"./icons-Ns9tm3AV.js";import"./apiUrl-DuPAGBEf.js";import"./fetchWithOptionalAuth-DekG10X9.js";import"./index-CeSU-AB_.js";import"./dateManipulations-BNo65pjY.js";import"./ReferenceText-hjLH3_Zg.js";import"./ThemeContext-BgHRyF_E.js";import"./AuthContext-DNN7YO4h.js";import"./campaignEvents-DvU5sZMb.js";import"./getNodeTypeIcon-C9iCQUyg.js";import"./entityVisuals-C8eZc7on.js";import"./legalReferenceTypes-DYk0t5tD.js";import"./SpinningGraphLoader-BM8cwNMU.js";import"./index-52O5fXd0.js";import"./index-Bvc8I0rx.js";import"./SeoHead-zm1aFYDJ.js";import"./useUserCapabilities-O5FMjhGJ.js";import"./lazyWithChunkReload-rPqUwMeP.js";const i={title:160,slug:200,excerpt:320,tags:12,coverImageUrl:500},q="image/png,image/jpeg,image/webp,image/gif";function H(a,m){const u={},j=a.title.trim(),I=a.slug.trim()||w(a.title),t=a.excerpt.trim(),s=a.coverImageUrl.trim(),b=$(a.tagsText);return j?j.length>i.title&&(u.title=m.titleTooLong(j.length,i.title)):u.title=m.titleRequired,I.length>i.slug&&(u.slug=m.slugTooLong(I.length,i.slug)),t.length>i.excerpt&&(u.excerpt=m.excerptTooLong(t.length,i.excerpt)),b.length>i.tags&&(u.tagsText=m.tagsTooLong(b.length,i.tags)),s.length>i.coverImageUrl&&(u.coverImageUrl=m.coverImageUrlTooLong(s.length,i.coverImageUrl)),u}function y(a,m,u){return`${a} / ${m} ${u}`}function fe(a,m){return(a.replace(/\.[^.]+$/,"").replace(/[-_]+/g," ").trim()||m).replace(/[\[\]\r\n]/g,"")}function v(a){return`rounded-2xl border px-4 py-3 text-neutral-900 outline-none transition-colors ${a?"border-primary-300 focus:border-primary-500":"border-neutral-300 focus:border-primary-500"}`}function N({error:a,hint:m}){return e.jsx("p",{className:`text-xs ${a?"text-primary-700":"text-neutral-500"}`,children:a??m})}function V(a){return a?{title:a.title,slug:a.slug,excerpt:a.excerpt,content:a.content,tagsText:me(a.tags),coverImageUrl:a.cover_image_url||"",status:a.status}:{title:"",slug:"",excerpt:"",content:"",tagsText:"",coverImageUrl:"",status:"draft"}}function Ae({post:a,onSaved:m,onDeleted:u,onClose:j}){const{locale:I}=ue(),t=xe[I],[s,b]=g.useState(()=>V(a)),[z,k]=g.useState(!!(a!=null&&a.slug)),[T,C]=g.useState("edit"),[x,c]=g.useState("idle"),[L,d]=g.useState(""),U=g.useRef(null),O=g.useRef(null),F=g.useRef(null),[R,S]=g.useState(!1),[_,B]=g.useState(!1),Y=g.useDeferredValue(s.content),n=H(s,t.editor.validation),J=y(s.title.trim().length,i.title,t.editor.countUnits.characters),K=s.slug.trim()||w(s.title),Q=y(K.length,i.slug,t.editor.countUnits.characters),W=y(s.excerpt.trim().length,i.excerpt,t.editor.countUnits.characters),X=y($(s.tagsText).length,i.tags,t.editor.countUnits.tags),Z=y(s.coverImageUrl.trim().length,i.coverImageUrl,t.editor.countUnits.characters);g.useEffect(()=>{b(V(a)),k(!!(a!=null&&a.slug)),C("edit"),c("idle"),d(""),S(!1),B(!1)},[a==null?void 0:a.id]);function h(r,l){(x==="error"||x==="success")&&(c("idle"),d("")),b(o=>({...o,[r]:l}))}function ee(r){(x==="error"||x==="success")&&(c("idle"),d("")),b(l=>({...l,title:r,slug:z?l.slug:w(r)}))}function P(r,l={}){const o=U.current,f="$SELECTION";if(!o){(x==="error"||x==="success")&&(c("idle"),d("")),h("content",`${s.content}${r}`);return}const p=l.insertionStart??o.selectionStart,E=l.insertionEnd??o.selectionEnd,ne=s.content.slice(p,E),M=r.includes(f)?r.replace(f,ne||t.editor.selectionFallback):r,oe=`${s.content.slice(0,p)}${M}${s.content.slice(E)}`;(x==="error"||x==="success")&&(c("idle"),d("")),h("content",oe),requestAnimationFrame(()=>{if(o.focus(),l.selectStart!==void 0&&l.selectEnd!==void 0){o.setSelectionRange(p+l.selectStart,p+l.selectEnd);return}const A=p+M.length;o.setSelectionRange(A,A)})}function D(r,l){var f;const o=(f=r.target.files)==null?void 0:f[0];if(r.target.value="",!!o){if(l==="cover"){te(o);return}
1re(o)}}async function te(r){S(!0),c("idle"),d("");try{const l=await G(r);h("coverImageUrl",l.url),c("success"),d(t.editor.messages.coverUploaded)}catch(l){c("error"),d(l instanceof Error?l.message:t.editor.messages.coverUploadError)}finally{S(!1)}}async function re(r){const l=U.current,o=(l==null?void 0:l.selectionStart)??s.content.length,f=(l==null?void 0:l.selectionEnd)??o;B(!0),c("idle"),d("");try{const p=await G(r),E=fe(r.name,t.editor.imageDescription);C("edit"),P(``,{insertionStart:o,insertionEnd:f}),c("success"),d(t.editor.messages.contentImageUploaded)}catch(p){c("error"),d(p instanceof Error?p.message:t.editor.messages.contentImageUploadError)}finally{B(!1)}}async function ae(){const r=H(s,t.editor.validation);if(Object.keys(r).length>0){c("error"),d(t.editor.validation.fixMarkedFields);return}c("saving"),d("");const l={title:s.title.trim(),slug:s.slug.trim()||w(s.title),excerpt:s.excerpt.trim(),content:s.content,tags:$(s.tagsText),cover_image_url:s.coverImageUrl.trim(),status:s.status};try{const o=a?await ie(a.id,l):await ce(l);c("success"),d(a?t.editor.messages.updated:t.editor.messages.created),m(o)}catch(o){c("error"),d(o instanceof Error?o.message:t.editor.messages.saveError)}}async function se(){if(a&&window.confirm(t.editor.deleteConfirm(a.title))){c("saving"),d("");try{await de(a.id),u()}catch(r){c("error"),d(r instanceof Error?r.message:t.editor.messages.deleteError)}}}const le=[{label:"H2",snippet:"## $SELECTION"},{label:"H3",snippet:"### $SELECTION"},{label:t.editor.toolbar.list,snippet:"- $SELECTION"},{label:t.editor.toolbar.quote,snippet:"> $SELECTION"},{label:t.editor.toolbar.link,snippet:"[$SELECTION](https://example.com)"},{label:t.editor.toolbar.image,snippet:``,selectStart:2,selectEnd:2+t.editor.imageDescription.length},{label:t.editor.toolbar.code,snippet:"```\n$SELECTION\n```"}];return e.jsxs("section",{className:"rounded-[2rem] border border-neutral-200 bg-white p-6 shadow-sm",children:[e.jsxs("div",{className:"flex flex-wrap justify-end gap-3 border-b border-neutral-200 pb-6",children:[e.jsx("button",{type:"button",onClick:j,className:"rounded-full border border-neutral-300 px-4 py-2 text-sm font-medium text-neutral-700 transition-colors hover:border-neutral-400 hover:bg-neutral-50",children:t.editor.close}),a&&e.jsx("button",{type:"button",onClick:se,className:"rounded-full border border-primary-200 px-4 py-2 text-sm font-medium text-primary-800 transition-colors hover:bg-primary-50",children:t.editor.delete}),e.jsx("button",{type:"button",onClick:ae,disabled:x==="saving",className:"rounded-full bg-primary-900 px-5 py-2 text-sm font-semibold text-white transition-colors hover:bg-primary-800 disabled:cursor-not-allowed disabled:opacity-60",children:x==="saving"?t.editor.saving:s.status==="published"?t.editor.publish:t.editor.saveDraft})]}),e.jsxs("div",{className:"mt-5 rounded-2xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:[e.jsx("p",{className:"font-semibold",children:t.editor.localeNoticeTitle}),e.jsx("p",{className:"mt-1 leading-6",children:t.editor.localeNoticeBody})]}),e.jsxs("div",{className:"mt-6 grid gap-5 md:grid-cols-2",children:[e.jsxs("label",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.title}),e.jsx("span",{className:`text-xs ${n.title?"text-primary-700":"text-neutral-400"}`,children:J})]}),e.jsx("input",{value:s.title,onChange:r=>ee(r.target.value),"aria-invalid":!!n.title,className:v(!!n.title),placeholder:t.editor.placeholders.title}),e.jsx(N,{error:n.title,hint:t.editor.hints.maxCharacters(i.title)})]}),e.jsxs("label",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.slug}),e.jsx("span",{className:`text-xs ${n.slug?"text-primary-700":"text-neutral-400"}`,children:Q})]}),e.jsx("input",{value:s.slug,onChange:r=>{k(!0),h("slug",r.target.value)},"aria-invalid":!!n.slug,className:v(!!n.slug),placeholder:"lexgraph-blog-start"}),e.jsx(N,{error:n.slug,hint:t.editor.hints.maxCharacters(i.slug)})]}),e.jsxs("label",{className:"grid gap-2 md:col-span-2",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.excerpt}),e.jsx("span",{className:`text-xs ${n.excerpt?"text-primary-700":"text-neutral-400"}`,children:W})]}),e.jsx("textarea",{value:s.excerpt,onChange:r=>h("excerpt",r.target.value),rows:3,"aria-invalid":!!n.excerpt,className:v(!!n.excerpt),placeholder:t.editor.placeholders.excerpt}),e.jsx(N,{error:n.excerpt,hint:t.editor.hints.maxCharacters(i.excerpt)})]}),e.jsxs("label",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.tags}),e.jsx("span",{className:`text-xs ${n.tagsText?"text-primary-700":"text-neutral-400"}`,children:X})]}),e.jsx("input",{value:s.tagsText,onChange:r=>h("tagsText",r.target.value),"aria-invalid":!!n.tagsText,className:v(!!n.tagsText),placeholder:t.editor.placeholders.tags}),e.jsx(N,{error:n.tagsText,hint:t.editor.hints.maxTags(i.tags)})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.coverImageUrl}),e.jsx("span",{className:`text-xs ${n.coverImageUrl?"text-primary-700":"text-neutral-400"}`,children:Z})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{value:s.coverImageUrl,onChange:r=>h("coverImageUrl",r.target.value),"aria-invalid":!!n.coverImageUrl,"aria-label":t.editor.labels.coverImageUrl,className:`${v(!!n.coverImageUrl)} min-w-0 flex-1`,placeholder:"/public/blog/â¦"}),e.jsxs("button",{type:"button",onClick:()=>{var r;return(r=O.current)==null?void 0:r.click()},disabled:R,className:"inline-flex items-center gap-2 rounded-2xl border border-neutral-300 px-4 py-3 text-sm font-medium text-neutral-700 transition-colors hover:border-primary-300 hover:text-primary-800 disabled:cursor-not-allowed disabled:opacity-60",children:[e.jsx(pe,{className:"h-4 w-4"}),R?t.editor.uploading:t.editor.upload]}),e.jsx("input",{ref:O,type:"file",accept:q,className:"hidden",onChange:r=>D(r,"cover")})]}),e.jsx(N,{error:n.coverImageUrl,hint:t.editor.hints.maxCharacters(i.coverImageUrl)})]}),e.jsxs("label",{className:"grid gap-2 md:max-w-xs",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700",children:t.editor.labels.status}),e.jsxs("select",{value:s.status,onChange:r=>h("status",r.target.value),className:v(!1),children:[e.jsx("option",{value:"draft",children:t.status.draft}),e.jsx("option",{value:"published",children:t.status.published})]})]})]}),e.jsxs("div",{className:"mt-8",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("div",{className:"flex rounded-full border border-neutral-200 bg-neutral-50 p-1",children:[e.jsx("button",{type:"button",onClick:()=>C("edit"),className:`rounded-full px-4 py-2 text-sm font-medium transition-colors ${T==="edit"?"bg-white text-neutral-900 shadow-sm":"text-neutral-500 hover:text-neutral-900"}`,children:t.editor.tabs.markdown}),e.jsx("button",{type:"button",onClick:()=>C("preview"),className:`rounded-full px-4 py-2 text-sm font-medium transition-colors ${T==="preview"?"bg-white text-neutral-900 shadow-sm":"text-neutral-500 hover:text-neutral-900"}`,children:t.editor.tabs.preview})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[le.map(r=>e.jsx("button",{type:"button",onClick:()=>P(r.snippet,{selectStart:r.selectStart,selectEnd:r.selectEnd}),className:"rounded-full border border-neutral-200 px-3 py-1.5 text-xs font-medium text-neutral-600 transition-colors hover:border-primary-300 hover:text-primary-800",children:r.label},r.label)),e.jsxs("button",{type:"button",onClick:()=>{var r;return(r=F.current)==null?void 0:r.click()},disabled:_,className:"inline-flex items-center gap-2 rounded-full border border-neutral-200 px-3 py-1.5 text-xs font-medium text-neutral-600 transition-colors hover:border-primary-300 hover:text-primary-800 disabled:cursor-not-allowed disabled:opacity-60",children:[e.jsx(he,{className:"h-3.5 w-3.5"}),_?t.editor.uploading:t.editor.upload]}),e.jsx("input",{ref:F,type:"file",accept:q,className:"hidden",onChange:r=>D(r,"content")})]})]}),e.jsx("div",{className:"mt-4 rounded-[2rem] border border-neutral-200 bg-neutral-50",children:T==="edit"?e.jsx("textarea",{ref:U,value:s.content,onChange:r=>h("content",r.target.value),rows:20,className:"min-h-[420px] w-full resize-y rounded-[2rem] bg-transparent px-5 py-5 font-mono text-sm leading-7 text-neutral-800 outline-none",placeholder:t.editor.placeholders.content}):e.jsx("div",{className:"min-h-[420px] px-5 py-5",children:e.jsx(ge,{content:Y||t.editor.emptyPreview})})})]}),L&&e.jsx("div",{className:`mt-5 rounded-2xl px-4 py-3 text-sm ${x==="error"?"bg-primary-50 text-primary-800":"bg-emerald-50 text-emerald-700"}`,children:L})]})}export{Ae 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.