@m2s2/vue-lib 2.5.3 → 2.6.0

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/index25.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),o=require("./index78.cjs"),n={class:"m2s2-blog-card"},a={class:"bc-cover"},i=["src","alt"],s={key:1,class:"bc-cover-placeholder"},l={class:"bc-cover-tag"},r={class:"bc-inner"},d={class:"bc-meta"},m=["dateTime"],g={key:0,class:"bc-reading-time"},f={class:"bc-title"},h=["href"],k={class:"bc-summary"},u={class:"bc-tags"},E=e.defineComponent({__name:"BlogCard",props:{config:{}},setup(t){return(b,B)=>(e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",a,[t.config.coverImage?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.config.coverImage,alt:t.config.title,class:"bc-cover-img",loading:"lazy"},null,8,i)):(e.openBlock(),e.createElementBlock("div",s,[e.createElementVNode("span",l,e.toDisplayString(t.config.tags[0]),1)]))]),e.createElementVNode("div",r,[e.createElementVNode("div",d,[e.createElementVNode("time",{dateTime:t.config.date},e.toDisplayString(e.unref(o.formatBlogDate)(t.config.date)),9,m),t.config.readingTime?(e.openBlock(),e.createElementBlock("span",g,e.toDisplayString(t.config.readingTime)+" min read",1)):e.createCommentVNode("",!0)]),e.createElementVNode("h2",f,[e.createElementVNode("a",{href:`/blog/${t.config.slug}`},e.toDisplayString(t.config.title),9,h)]),e.createElementVNode("p",k,e.toDisplayString(t.config.summary),1),e.createElementVNode("div",u,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.tags,c=>(e.openBlock(),e.createElementBlock("span",{key:c,class:"bc-tag"},e.toDisplayString(c),1))),128))])])]))}});module.exports=E;
1
+ "use strict";const e=require("vue"),o=require("./index79.cjs"),n={class:"m2s2-blog-card"},a={class:"bc-cover"},i=["src","alt"],s={key:1,class:"bc-cover-placeholder"},l={class:"bc-cover-tag"},r={class:"bc-inner"},d={class:"bc-meta"},m=["dateTime"],g={key:0,class:"bc-reading-time"},f={class:"bc-title"},h=["href"],k={class:"bc-summary"},u={class:"bc-tags"},E=e.defineComponent({__name:"BlogCard",props:{config:{}},setup(t){return(b,B)=>(e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",a,[t.config.coverImage?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.config.coverImage,alt:t.config.title,class:"bc-cover-img",loading:"lazy"},null,8,i)):(e.openBlock(),e.createElementBlock("div",s,[e.createElementVNode("span",l,e.toDisplayString(t.config.tags[0]),1)]))]),e.createElementVNode("div",r,[e.createElementVNode("div",d,[e.createElementVNode("time",{dateTime:t.config.date},e.toDisplayString(e.unref(o.formatBlogDate)(t.config.date)),9,m),t.config.readingTime?(e.openBlock(),e.createElementBlock("span",g,e.toDisplayString(t.config.readingTime)+" min read",1)):e.createCommentVNode("",!0)]),e.createElementVNode("h2",f,[e.createElementVNode("a",{href:`/blog/${t.config.slug}`},e.toDisplayString(t.config.title),9,h)]),e.createElementVNode("p",k,e.toDisplayString(t.config.summary),1),e.createElementVNode("div",u,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config.tags,c=>(e.openBlock(),e.createElementBlock("span",{key:c,class:"bc-tag"},e.toDisplayString(c),1))),128))])])]))}});module.exports=E;
package/dist/index25.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as n, openBlock as c, createElementBlock as s, createElementVNode as t, toDisplayString as o, unref as a, createCommentVNode as d, Fragment as l, renderList as g } from "vue";
2
- import { formatBlogDate as r } from "./index78.mjs";
2
+ import { formatBlogDate as r } from "./index79.mjs";
3
3
  const m = { class: "m2s2-blog-card" }, f = { class: "bc-cover" }, h = ["src", "alt"], b = {
4
4
  key: 1,
5
5
  class: "bc-cover-placeholder"
package/dist/index27.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),oe=require("./index77.cjs"),p=require("./index78.cjs"),se=require("./index79.cjs"),ie={class:"be-root"},re={class:"be-meta"},de={class:"be-field be-field--full"},ue=["value"],ce={class:"be-field"},ve={class:"be-field"},me={class:"be-field be-field--full"},be={class:"be-field be-field--full"},pe={class:"be-field"},fe={class:"be-tags"},Ve=["aria-label","onClick"],ge={class:"be-field"},Ee={class:"be-field be-field--cover"},Ne={class:"be-cover"},xe=["src"],we={class:"be-cover__pick"},ke={class:"be-field"},Te={class:"be-field"},_e={class:"be-field be-field--narrow-pair"},ye={class:"be-editor"},Pe={class:"be-toolbar",role:"toolbar","aria-label":"Formatting"},he=["title","onClick"],De={class:"be-panes"},Ce={class:"be-pane be-pane--write"},Ie=["value"],Se={class:"be-pane be-pane--preview"},Be=["innerHTML"],Ue={class:"be-footer"},Me={class:"be-footer__meta"},Le=["disabled"],Re=e.defineComponent({__name:"BlogEditor",props:{initialPost:{default:void 0},coverImageUrl:{default:void 0}},emits:["publish","coverImageSelected"],setup(J,{emit:Q}){var C,I,S,B,U,M,L,R,q,F,O,A,$,H,G,K,W;const n=J,P=Q,d=e.ref(((C=n.initialPost)==null?void 0:C.title)??""),c=e.ref(((I=n.initialPost)==null?void 0:I.slug)??""),f=e.ref(((S=n.initialPost)==null?void 0:S.date)??p.todayAsIsoDate()),v=e.ref(((B=n.initialPost)==null?void 0:B.summary)??""),V=e.ref(((U=n.initialPost)==null?void 0:U.excerpt)??""),o=e.ref([...((M=n.initialPost)==null?void 0:M.tags)??[]]),u=e.ref(((L=n.initialPost)==null?void 0:L.readingTime)??1),r=e.ref(((R=n.initialPost)==null?void 0:R.content)??""),g=e.ref((q=n.initialPost)==null?void 0:q.coverImage),m=e.ref(""),_=e.ref(!!n.initialPost),h=e.ref(null),E=e.ref(((O=(F=n.initialPost)==null?void 0:F.series)==null?void 0:O.id)??""),N=e.ref((($=(A=n.initialPost)==null?void 0:A.series)==null?void 0:$.title)??""),x=e.ref(((G=(H=n.initialPost)==null?void 0:H.series)==null?void 0:G.part)??1),w=e.ref(((W=(K=n.initialPost)==null?void 0:K.series)==null?void 0:W.total)??1);e.watch(()=>n.initialPost,a=>{var t,l,s,i;a&&(d.value=a.title,c.value=a.slug,f.value=a.date,v.value=a.summary,V.value=a.excerpt??"",o.value=[...a.tags],u.value=a.readingTime??1,r.value=a.content,g.value=a.coverImage,E.value=((t=a.series)==null?void 0:t.id)??"",N.value=((l=a.series)==null?void 0:l.title)??"",x.value=((s=a.series)==null?void 0:s.part)??1,w.value=((i=a.series)==null?void 0:i.total)??1,_.value=!0)});const X=e.computed(()=>oe.marked.parse(r.value)),D=e.computed(()=>d.value.trim().length>0&&v.value.trim().length>0&&r.value.trim().length>0),y=e.computed(()=>g.value??n.coverImageUrl);function Y(a){d.value=a.target.value,_.value||(c.value=p.generateSlug(d.value)),u.value=p.calcReadingTime(r.value)}function Z(a){r.value=a.target.value,u.value=p.calcReadingTime(r.value)}function ee(a){if(a.key==="Enter"||a.key===","){a.preventDefault();const t=m.value.trim().replace(/,/g,"").toLowerCase();t&&!o.value.includes(t)&&(o.value=[...o.value,t]),m.value=""}a.key==="Backspace"&&!m.value&&o.value.length&&(o.value=o.value.slice(0,-1))}function te(a){o.value=o.value.filter(t=>t!==a)}function le(a){var s;const t=(s=a.target.files)==null?void 0:s[0];if(!t)return;P("coverImageSelected",t);const l=new FileReader;l.onload=()=>{g.value=l.result},l.readAsDataURL(t)}function ae(a){const t=h.value;if(!t)return;const l=t.selectionStart,s=t.selectionEnd,i=r.value;let k,T;if(a.wrap){const[b,j]=a.wrap,z=i.slice(l,s)||"text";k=i.slice(0,l)+b+z+j+i.slice(s),T=l+b.length+z.length+j.length}else if(a.prefix){const b=i.lastIndexOf(`
2
- `,l-1)+1;k=i.slice(0,b)+a.prefix+i.slice(b),T=l+a.prefix.length}else if(a.block)k=i.slice(0,l)+a.block+i.slice(s),T=l+a.block.length;else return;r.value=k,setTimeout(()=>{t.selectionStart=t.selectionEnd=T,t.focus()},0)}function ne(){if(!D.value)return;const a=E.value.trim();P("publish",{title:d.value,slug:c.value||p.generateSlug(d.value),date:f.value,summary:v.value,excerpt:V.value||void 0,tags:o.value,readingTime:u.value,content:r.value,coverImage:n.coverImageUrl??g.value,series:a?{id:a,title:N.value.trim()||a,part:x.value,total:w.value}:void 0})}return(a,t)=>(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("section",re,[e.createElementVNode("div",de,[t[11]||(t[11]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Title "),e.createElementVNode("span",{class:"be-required"},"*")],-1)),e.createElementVNode("input",{class:"be-input",type:"text",value:d.value,placeholder:"Post title…",onInput:Y},null,40,ue)]),e.createElementVNode("div",ce,[t[12]||(t[12]=e.createElementVNode("label",{class:"be-label"},"Slug",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>c.value=l),class:"be-input",type:"text",placeholder:"post-slug",onInput:t[1]||(t[1]=l=>_.value=!0)},null,544),[[e.vModelText,c.value]])]),e.createElementVNode("div",ve,[t[13]||(t[13]=e.createElementVNode("label",{class:"be-label"},"Date",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>f.value=l),class:"be-input",type:"date"},null,512),[[e.vModelText,f.value]])]),e.createElementVNode("div",me,[t[14]||(t[14]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Summary "),e.createElementVNode("span",{class:"be-required"},"*")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":t[3]||(t[3]=l=>v.value=l),class:"be-input be-input--textarea",rows:"2",placeholder:"Short description shown in blog listings…"},null,512),[[e.vModelText,v.value]])]),e.createElementVNode("div",be,[t[15]||(t[15]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Excerpt "),e.createElementVNode("span",{class:"be-optional"},"(optional)")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":t[4]||(t[4]=l=>V.value=l),class:"be-input be-input--textarea",rows:"2",placeholder:"Longer teaser for social previews…"},null,512),[[e.vModelText,V.value]])]),e.createElementVNode("div",pe,[t[16]||(t[16]=e.createElementVNode("label",{class:"be-label"},"Tags",-1)),e.createElementVNode("div",fe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,l=>(e.openBlock(),e.createElementBlock("span",{key:l,class:"be-tag"},[e.createTextVNode(e.toDisplayString(l)+" ",1),e.createElementVNode("button",{type:"button",class:"be-tag__remove","aria-label":`Remove tag ${l}`,onClick:s=>te(l)},"×",8,Ve)]))),128)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>m.value=l),class:"be-tag-input",type:"text",placeholder:"Add tag, press Enter…",onKeydown:ee},null,544),[[e.vModelText,m.value]])])]),e.createElementVNode("div",ge,[t[17]||(t[17]=e.createElementVNode("label",{class:"be-label"},"Reading time (min)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>u.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,u.value,void 0,{number:!0}]])]),e.createElementVNode("div",Ee,[t[18]||(t[18]=e.createElementVNode("label",{class:"be-label"},"Cover Image",-1)),e.createElementVNode("div",Ne,[y.value?(e.openBlock(),e.createElementBlock("img",{key:0,class:"be-cover__preview",src:y.value,alt:"Cover preview"},null,8,xe)):e.createCommentVNode("",!0),e.createElementVNode("label",we,[e.createTextVNode(e.toDisplayString(y.value?"Replace":"Choose image")+" ",1),e.createElementVNode("input",{type:"file",accept:"image/*",hidden:"",onChange:le},null,32)])])]),t[23]||(t[23]=e.createElementVNode("div",{class:"be-field-group-label"},[e.createTextVNode(" Series "),e.createElementVNode("span",{class:"be-optional"},"(optional)")],-1)),e.createElementVNode("div",ke,[t[19]||(t[19]=e.createElementVNode("label",{class:"be-label"},"Series ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[7]||(t[7]=l=>E.value=l),class:"be-input",type:"text",placeholder:"e.g. go-backend"},null,512),[[e.vModelText,E.value]])]),e.createElementVNode("div",Te,[t[20]||(t[20]=e.createElementVNode("label",{class:"be-label"},"Series Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>N.value=l),class:"be-input",type:"text",placeholder:"e.g. Go Backend Series"},null,512),[[e.vModelText,N.value]])]),e.createElementVNode("div",_e,[e.createElementVNode("div",null,[t[21]||(t[21]=e.createElementVNode("label",{class:"be-label"},"Part",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>x.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,x.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[t[22]||(t[22]=e.createElementVNode("label",{class:"be-label"},"Total Parts",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[10]||(t[10]=l=>w.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,w.value,void 0,{number:!0}]])])])]),e.createElementVNode("section",ye,[e.createElementVNode("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(se.BLOG_EDITOR_TOOLBAR),l=>(e.openBlock(),e.createElementBlock("button",{key:l.label,type:"button",class:"be-toolbar__btn",title:l.label,onClick:s=>ae(l)},e.toDisplayString(l.icon),9,he))),128))]),e.createElementVNode("div",De,[e.createElementVNode("div",Ce,[t[24]||(t[24]=e.createElementVNode("div",{class:"be-pane__label"}," Markdown ",-1)),e.createElementVNode("textarea",{ref_key:"textareaEl",ref:h,class:"be-pane__textarea",value:r.value,placeholder:"Write your post in markdown…",spellcheck:"true",onInput:Z},null,40,Ie)]),e.createElementVNode("div",Se,[t[25]||(t[25]=e.createElementVNode("div",{class:"be-pane__label"}," Preview ",-1)),e.createElementVNode("div",{class:"be-pane__preview prose",innerHTML:X.value},null,8,Be)])])]),e.createElementVNode("footer",Ue,[e.createElementVNode("span",Me,"~"+e.toDisplayString(u.value)+" min read",1),e.createElementVNode("button",{type:"button",class:"be-publish",disabled:!D.value,onClick:ne}," Publish Post ",8,Le)])]))}});module.exports=Re;
1
+ "use strict";const e=require("vue"),se=require("./index78.cjs"),N=require("./index79.cjs"),re=require("./index80.cjs"),de={class:"be-root"},ue={class:"be-meta"},ce={class:"be-field be-field--full"},ve=["value"],me={class:"be-field"},be={class:"be-field"},pe={class:"be-field be-field--full"},fe={class:"be-field be-field--full"},ge={class:"be-field"},Ee={class:"be-tags"},Ve=["aria-label","onClick"],Ne={class:"be-field"},_e={class:"be-field be-field--cover"},ke={class:"be-cover"},xe=["src"],we={class:"be-cover__pick"},ye={class:"be-field be-field--full"},Te=["value"],Pe=["value"],Se={class:"be-field"},Be={class:"be-field"},Ce={key:1,class:"be-field be-field--narrow-pair"},he={class:"be-editor"},De={class:"be-toolbar",role:"toolbar","aria-label":"Formatting"},Ie=["title","onClick"],Ue={class:"be-panes"},Me={class:"be-pane be-pane--write"},Le=["value"],Re={class:"be-pane be-pane--preview"},Fe=["innerHTML"],qe={class:"be-footer"},Oe={class:"be-footer__meta"},Ae=["disabled"],Ke=e.defineComponent({__name:"BlogEditor",props:{initialPost:{default:void 0},coverImageUrl:{default:void 0},existingSeries:{default:()=>[]}},emits:["publish","coverImageSelected"],setup(S,{emit:X}){var D,I,U,M,L,R,F,q,O,A,K,$,H,G,W,j,z;const n=S,B=X,u=e.ref(((D=n.initialPost)==null?void 0:D.title)??""),v=e.ref(((I=n.initialPost)==null?void 0:I.slug)??""),_=e.ref(((U=n.initialPost)==null?void 0:U.date)??N.todayAsIsoDate()),m=e.ref(((M=n.initialPost)==null?void 0:M.summary)??""),k=e.ref(((L=n.initialPost)==null?void 0:L.excerpt)??""),i=e.ref([...((R=n.initialPost)==null?void 0:R.tags)??[]]),c=e.ref(((F=n.initialPost)==null?void 0:F.readingTime)??1),r=e.ref(((q=n.initialPost)==null?void 0:q.content)??""),x=e.ref((O=n.initialPost)==null?void 0:O.coverImage),b=e.ref(""),T=e.ref(!!n.initialPost),C=e.ref(null),d=e.ref("none"),p=e.ref(((K=(A=n.initialPost)==null?void 0:A.series)==null?void 0:K.id)??""),f=e.ref(((H=($=n.initialPost)==null?void 0:$.series)==null?void 0:H.title)??""),g=e.ref(((W=(G=n.initialPost)==null?void 0:G.series)==null?void 0:W.part)??1),E=e.ref(((z=(j=n.initialPost)==null?void 0:j.series)==null?void 0:z.total)??1);e.watch(()=>n.initialPost,a=>{var t,l,o,s;a&&(u.value=a.title,v.value=a.slug,_.value=a.date,m.value=a.summary,k.value=a.excerpt??"",i.value=[...a.tags],c.value=a.readingTime??1,r.value=a.content,x.value=a.coverImage,p.value=((t=a.series)==null?void 0:t.id)??"",f.value=((l=a.series)==null?void 0:l.title)??"",g.value=((o=a.series)==null?void 0:o.part)??1,E.value=((s=a.series)==null?void 0:s.total)??1,T.value=!0)}),e.watch([()=>n.initialPost,()=>n.existingSeries],([a,t])=>{if(!(a!=null&&a.series)){d.value="none";return}const l=t.some(o=>o.id===a.series.id);d.value=l?a.series.id:"__new__"});const Y=e.computed(()=>se.marked.parse(r.value)),h=e.computed(()=>u.value.trim().length>0&&m.value.trim().length>0&&r.value.trim().length>0),P=e.computed(()=>x.value??n.coverImageUrl);function Z(a){const t=a.target.value;if(d.value=t,t!=="none"&&t!=="__new__"){const l=n.existingSeries.find(o=>o.id===t);l&&(p.value=l.id,f.value=l.title)}}function ee(a){u.value=a.target.value,T.value||(v.value=N.generateSlug(u.value)),c.value=N.calcReadingTime(r.value)}function te(a){r.value=a.target.value,c.value=N.calcReadingTime(r.value)}function le(a){if(a.key==="Enter"||a.key===","){a.preventDefault();const t=b.value.trim().replace(/,/g,"").toLowerCase();t&&!i.value.includes(t)&&(i.value=[...i.value,t]),b.value=""}a.key==="Backspace"&&!b.value&&i.value.length&&(i.value=i.value.slice(0,-1))}function ae(a){i.value=i.value.filter(t=>t!==a)}function ne(a){var o;const t=(o=a.target.files)==null?void 0:o[0];if(!t)return;B("coverImageSelected",t);const l=new FileReader;l.onload=()=>{x.value=l.result},l.readAsDataURL(t)}function oe(a){const t=C.value;if(!t)return;const l=t.selectionStart,o=t.selectionEnd,s=r.value;let w,y;if(a.wrap){const[V,J]=a.wrap,Q=s.slice(l,o)||"text";w=s.slice(0,l)+V+Q+J+s.slice(o),y=l+V.length+Q.length+J.length}else if(a.prefix){const V=s.lastIndexOf(`
2
+ `,l-1)+1;w=s.slice(0,V)+a.prefix+s.slice(V),y=l+a.prefix.length}else if(a.block)w=s.slice(0,l)+a.block+s.slice(o),y=l+a.block.length;else return;r.value=w,setTimeout(()=>{t.selectionStart=t.selectionEnd=y,t.focus()},0)}function ie(){if(!h.value)return;let a;if(d.value==="__new__"){const t=p.value.trim();a=t?{id:t,title:f.value.trim()||t,part:g.value,total:E.value}:void 0}else if(d.value!=="none"){const t=n.existingSeries.find(l=>l.id===d.value);a=t?{id:t.id,title:t.title,part:g.value,total:E.value}:void 0}B("publish",{title:u.value,slug:v.value||N.generateSlug(u.value),date:_.value,summary:m.value,excerpt:k.value||void 0,tags:i.value,readingTime:c.value,content:r.value,coverImage:n.coverImageUrl??x.value,series:a})}return(a,t)=>(e.openBlock(),e.createElementBlock("div",de,[e.createElementVNode("section",ue,[e.createElementVNode("div",ce,[t[11]||(t[11]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Title "),e.createElementVNode("span",{class:"be-required"},"*")],-1)),e.createElementVNode("input",{class:"be-input",type:"text",value:u.value,placeholder:"Post title…",onInput:ee},null,40,ve)]),e.createElementVNode("div",me,[t[12]||(t[12]=e.createElementVNode("label",{class:"be-label"},"Slug",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>v.value=l),class:"be-input",type:"text",placeholder:"post-slug",onInput:t[1]||(t[1]=l=>T.value=!0)},null,544),[[e.vModelText,v.value]])]),e.createElementVNode("div",be,[t[13]||(t[13]=e.createElementVNode("label",{class:"be-label"},"Date",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>_.value=l),class:"be-input",type:"date"},null,512),[[e.vModelText,_.value]])]),e.createElementVNode("div",pe,[t[14]||(t[14]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Summary "),e.createElementVNode("span",{class:"be-required"},"*")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":t[3]||(t[3]=l=>m.value=l),class:"be-input be-input--textarea",rows:"2",placeholder:"Short description shown in blog listings…"},null,512),[[e.vModelText,m.value]])]),e.createElementVNode("div",fe,[t[15]||(t[15]=e.createElementVNode("label",{class:"be-label"},[e.createTextVNode("Excerpt "),e.createElementVNode("span",{class:"be-optional"},"(optional)")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":t[4]||(t[4]=l=>k.value=l),class:"be-input be-input--textarea",rows:"2",placeholder:"Longer teaser for social previews…"},null,512),[[e.vModelText,k.value]])]),e.createElementVNode("div",ge,[t[16]||(t[16]=e.createElementVNode("label",{class:"be-label"},"Tags",-1)),e.createElementVNode("div",Ee,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,l=>(e.openBlock(),e.createElementBlock("span",{key:l,class:"be-tag"},[e.createTextVNode(e.toDisplayString(l)+" ",1),e.createElementVNode("button",{type:"button",class:"be-tag__remove","aria-label":`Remove tag ${l}`,onClick:o=>ae(l)},"×",8,Ve)]))),128)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>b.value=l),class:"be-tag-input",type:"text",placeholder:"Add tag, press Enter…",onKeydown:le},null,544),[[e.vModelText,b.value]])])]),e.createElementVNode("div",Ne,[t[17]||(t[17]=e.createElementVNode("label",{class:"be-label"},"Reading time (min)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>c.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,c.value,void 0,{number:!0}]])]),e.createElementVNode("div",_e,[t[18]||(t[18]=e.createElementVNode("label",{class:"be-label"},"Cover Image",-1)),e.createElementVNode("div",ke,[P.value?(e.openBlock(),e.createElementBlock("img",{key:0,class:"be-cover__preview",src:P.value,alt:"Cover preview"},null,8,xe)):e.createCommentVNode("",!0),e.createElementVNode("label",we,[e.createTextVNode(e.toDisplayString(P.value?"Replace":"Choose image")+" ",1),e.createElementVNode("input",{type:"file",accept:"image/*",hidden:"",onChange:ne},null,32)])])]),t[26]||(t[26]=e.createElementVNode("div",{class:"be-field-group-label"},[e.createTextVNode(" Series "),e.createElementVNode("span",{class:"be-optional"},"(optional)")],-1)),e.createElementVNode("div",ye,[t[21]||(t[21]=e.createElementVNode("label",{class:"be-label"},"Series",-1)),e.createElementVNode("select",{class:"be-input be-input--select",value:d.value,onChange:Z},[t[19]||(t[19]=e.createElementVNode("option",{value:"none"},"— None —",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.existingSeries,l=>(e.openBlock(),e.createElementBlock("option",{key:l.id,value:l.id},e.toDisplayString(l.title),9,Pe))),128)),t[20]||(t[20]=e.createElementVNode("option",{value:"__new__"},"+ New series…",-1))],40,Te)]),d.value==="__new__"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Se,[t[22]||(t[22]=e.createElementVNode("label",{class:"be-label"},"Series ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[7]||(t[7]=l=>p.value=l),class:"be-input",type:"text",placeholder:"e.g. go-backend"},null,512),[[e.vModelText,p.value]])]),e.createElementVNode("div",Be,[t[23]||(t[23]=e.createElementVNode("label",{class:"be-label"},"Series Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>f.value=l),class:"be-input",type:"text",placeholder:"e.g. Go Backend Series"},null,512),[[e.vModelText,f.value]])])],64)):e.createCommentVNode("",!0),d.value!=="none"?(e.openBlock(),e.createElementBlock("div",Ce,[e.createElementVNode("div",null,[t[24]||(t[24]=e.createElementVNode("label",{class:"be-label"},"Part",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>g.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,g.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[t[25]||(t[25]=e.createElementVNode("label",{class:"be-label"},"Total Parts",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[10]||(t[10]=l=>E.value=l),class:"be-input be-input--narrow",type:"number",min:"1"},null,512),[[e.vModelText,E.value,void 0,{number:!0}]])])])):e.createCommentVNode("",!0)]),e.createElementVNode("section",he,[e.createElementVNode("div",De,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(re.BLOG_EDITOR_TOOLBAR),l=>(e.openBlock(),e.createElementBlock("button",{key:l.label,type:"button",class:"be-toolbar__btn",title:l.label,onClick:o=>oe(l)},e.toDisplayString(l.icon),9,Ie))),128))]),e.createElementVNode("div",Ue,[e.createElementVNode("div",Me,[t[27]||(t[27]=e.createElementVNode("div",{class:"be-pane__label"}," Markdown ",-1)),e.createElementVNode("textarea",{ref_key:"textareaEl",ref:C,class:"be-pane__textarea",value:r.value,placeholder:"Write your post in markdown…",spellcheck:"true",onInput:te},null,40,Le)]),e.createElementVNode("div",Re,[t[28]||(t[28]=e.createElementVNode("div",{class:"be-pane__label"}," Preview ",-1)),e.createElementVNode("div",{class:"be-pane__preview prose",innerHTML:Y.value},null,8,Fe)])])]),e.createElementVNode("footer",qe,[e.createElementVNode("span",Oe,"~"+e.toDisplayString(c.value)+" min read",1),e.createElementVNode("button",{type:"button",class:"be-publish",disabled:!h.value,onClick:ie}," Publish Post ",8,Ae)])]))}});module.exports=Ke;
package/dist/index27.mjs CHANGED
@@ -1,92 +1,117 @@
1
- import { defineComponent as ge, ref as i, watch as fe, computed as L, openBlock as c, createElementBlock as m, createElementVNode as l, createTextVNode as g, withDirectives as d, vModelText as v, Fragment as te, renderList as ae, toDisplayString as V, createCommentVNode as _e, unref as ye } from "vue";
2
- import { marked as we } from "./index77.mjs";
3
- import { todayAsIsoDate as xe, generateSlug as se, calcReadingTime as ie } from "./index78.mjs";
4
- import { BLOG_EDITOR_TOOLBAR as Pe } from "./index79.mjs";
5
- const ke = { class: "be-root" }, Te = { class: "be-meta" }, Ce = { class: "be-field be-field--full" }, Ie = ["value"], Ue = { class: "be-field" }, Se = { class: "be-field" }, he = { class: "be-field be-field--full" }, Ve = { class: "be-field be-field--full" }, Ee = { class: "be-field" }, De = { class: "be-tags" }, Le = ["aria-label", "onClick"], Re = { class: "be-field" }, Be = { class: "be-field be-field--cover" }, Oe = { class: "be-cover" }, Ae = ["src"], Fe = { class: "be-cover__pick" }, Me = { class: "be-field" }, $e = { class: "be-field" }, He = { class: "be-field be-field--narrow-pair" }, Ne = { class: "be-editor" }, qe = {
1
+ import { defineComponent as we, ref as i, watch as oe, computed as B, openBlock as d, createElementBlock as v, createElementVNode as l, createTextVNode as g, withDirectives as b, vModelText as c, Fragment as L, renderList as N, toDisplayString as T, createCommentVNode as O, unref as xe } from "vue";
2
+ import { marked as ke } from "./index78.mjs";
3
+ import { todayAsIsoDate as Pe, generateSlug as ue, calcReadingTime as re } from "./index79.mjs";
4
+ import { BLOG_EDITOR_TOOLBAR as Se } from "./index80.mjs";
5
+ const Ce = { class: "be-root" }, Te = { class: "be-meta" }, Ie = { class: "be-field be-field--full" }, Ue = ["value"], Ve = { class: "be-field" }, he = { class: "be-field" }, Ee = { class: "be-field be-field--full" }, Le = { class: "be-field be-field--full" }, De = { class: "be-field" }, Re = { class: "be-tags" }, Be = ["aria-label", "onClick"], Ne = { class: "be-field" }, Oe = { class: "be-field be-field--cover" }, Ae = { class: "be-cover" }, Fe = ["src"], Ke = { class: "be-cover__pick" }, Me = { class: "be-field be-field--full" }, $e = ["value"], He = ["value"], qe = { class: "be-field" }, Ge = { class: "be-field" }, We = {
6
+ key: 1,
7
+ class: "be-field be-field--narrow-pair"
8
+ }, je = { class: "be-editor" }, ze = {
6
9
  class: "be-toolbar",
7
10
  role: "toolbar",
8
11
  "aria-label": "Formatting"
9
- }, Ge = ["title", "onClick"], Ke = { class: "be-panes" }, We = { class: "be-pane be-pane--write" }, je = ["value"], ze = { class: "be-pane be-pane--preview" }, Je = ["innerHTML"], Qe = { class: "be-footer" }, Xe = { class: "be-footer__meta" }, Ye = ["disabled"], al = /* @__PURE__ */ ge({
12
+ }, Je = ["title", "onClick"], Qe = { class: "be-panes" }, Xe = { class: "be-pane be-pane--write" }, Ye = ["value"], Ze = { class: "be-pane be-pane--preview" }, el = ["innerHTML"], ll = { class: "be-footer" }, tl = { class: "be-footer__meta" }, sl = ["disabled"], ul = /* @__PURE__ */ we({
10
13
  __name: "BlogEditor",
11
14
  props: {
12
15
  initialPost: { default: void 0 },
13
- coverImageUrl: { default: void 0 }
16
+ coverImageUrl: { default: void 0 },
17
+ existingSeries: { default: () => [] }
14
18
  },
15
19
  emits: ["publish", "coverImageSelected"],
16
- setup(ne, { emit: oe }) {
17
- var A, F, M, $, H, N, q, G, K, W, j, z, J, Q, X, Y, Z;
18
- const s = ne, R = oe, b = i(((A = s.initialPost) == null ? void 0 : A.title) ?? ""), f = i(((F = s.initialPost) == null ? void 0 : F.slug) ?? ""), x = i(((M = s.initialPost) == null ? void 0 : M.date) ?? xe()), _ = i((($ = s.initialPost) == null ? void 0 : $.summary) ?? ""), P = i(((H = s.initialPost) == null ? void 0 : H.excerpt) ?? ""), n = i([...((N = s.initialPost) == null ? void 0 : N.tags) ?? []]), p = i(((q = s.initialPost) == null ? void 0 : q.readingTime) ?? 1), r = i(((G = s.initialPost) == null ? void 0 : G.content) ?? ""), k = i((K = s.initialPost) == null ? void 0 : K.coverImage), y = i(""), E = i(!!s.initialPost), B = i(null), T = i(((j = (W = s.initialPost) == null ? void 0 : W.series) == null ? void 0 : j.id) ?? ""), C = i(((J = (z = s.initialPost) == null ? void 0 : z.series) == null ? void 0 : J.title) ?? ""), I = i(((X = (Q = s.initialPost) == null ? void 0 : Q.series) == null ? void 0 : X.part) ?? 1), U = i(((Z = (Y = s.initialPost) == null ? void 0 : Y.series) == null ? void 0 : Z.total) ?? 1);
19
- fe(() => s.initialPost, (a) => {
20
- var e, t, o, u;
21
- a && (b.value = a.title, f.value = a.slug, x.value = a.date, _.value = a.summary, P.value = a.excerpt ?? "", n.value = [...a.tags], p.value = a.readingTime ?? 1, r.value = a.content, k.value = a.coverImage, T.value = ((e = a.series) == null ? void 0 : e.id) ?? "", C.value = ((t = a.series) == null ? void 0 : t.title) ?? "", I.value = ((o = a.series) == null ? void 0 : o.part) ?? 1, U.value = ((u = a.series) == null ? void 0 : u.total) ?? 1, E.value = !0);
20
+ setup(A, { emit: de }) {
21
+ var $, H, q, G, W, j, z, J, Q, X, Y, Z, ee, le, te, se, ae;
22
+ const a = A, F = de, f = i((($ = a.initialPost) == null ? void 0 : $.title) ?? ""), _ = i(((H = a.initialPost) == null ? void 0 : H.slug) ?? ""), I = i(((q = a.initialPost) == null ? void 0 : q.date) ?? Pe()), y = i(((G = a.initialPost) == null ? void 0 : G.summary) ?? ""), U = i(((W = a.initialPost) == null ? void 0 : W.excerpt) ?? ""), o = i([...((j = a.initialPost) == null ? void 0 : j.tags) ?? []]), m = i(((z = a.initialPost) == null ? void 0 : z.readingTime) ?? 1), r = i(((J = a.initialPost) == null ? void 0 : J.content) ?? ""), V = i((Q = a.initialPost) == null ? void 0 : Q.coverImage), w = i(""), D = i(!!a.initialPost), K = i(null), p = i("none"), x = i(((Y = (X = a.initialPost) == null ? void 0 : X.series) == null ? void 0 : Y.id) ?? ""), k = i(((ee = (Z = a.initialPost) == null ? void 0 : Z.series) == null ? void 0 : ee.title) ?? ""), P = i(((te = (le = a.initialPost) == null ? void 0 : le.series) == null ? void 0 : te.part) ?? 1), S = i(((ae = (se = a.initialPost) == null ? void 0 : se.series) == null ? void 0 : ae.total) ?? 1);
23
+ oe(() => a.initialPost, (s) => {
24
+ var e, t, n, u;
25
+ s && (f.value = s.title, _.value = s.slug, I.value = s.date, y.value = s.summary, U.value = s.excerpt ?? "", o.value = [...s.tags], m.value = s.readingTime ?? 1, r.value = s.content, V.value = s.coverImage, x.value = ((e = s.series) == null ? void 0 : e.id) ?? "", k.value = ((t = s.series) == null ? void 0 : t.title) ?? "", P.value = ((n = s.series) == null ? void 0 : n.part) ?? 1, S.value = ((u = s.series) == null ? void 0 : u.total) ?? 1, D.value = !0);
26
+ }), oe([() => a.initialPost, () => a.existingSeries], ([s, e]) => {
27
+ if (!(s != null && s.series)) {
28
+ p.value = "none";
29
+ return;
30
+ }
31
+ const t = e.some((n) => n.id === s.series.id);
32
+ p.value = t ? s.series.id : "__new__";
22
33
  });
23
- const ue = L(() => we.parse(r.value)), O = L(() => b.value.trim().length > 0 && _.value.trim().length > 0 && r.value.trim().length > 0), D = L(() => k.value ?? s.coverImageUrl);
24
- function re(a) {
25
- b.value = a.target.value, E.value || (f.value = se(b.value)), p.value = ie(r.value);
34
+ const ve = B(() => ke.parse(r.value)), M = B(() => f.value.trim().length > 0 && y.value.trim().length > 0 && r.value.trim().length > 0), R = B(() => V.value ?? a.coverImageUrl);
35
+ function be(s) {
36
+ const e = s.target.value;
37
+ if (p.value = e, e !== "none" && e !== "__new__") {
38
+ const t = a.existingSeries.find((n) => n.id === e);
39
+ t && (x.value = t.id, k.value = t.title);
40
+ }
41
+ }
42
+ function ce(s) {
43
+ f.value = s.target.value, D.value || (_.value = ue(f.value)), m.value = re(r.value);
26
44
  }
27
- function de(a) {
28
- r.value = a.target.value, p.value = ie(r.value);
45
+ function pe(s) {
46
+ r.value = s.target.value, m.value = re(r.value);
29
47
  }
30
- function ve(a) {
31
- if (a.key === "Enter" || a.key === ",") {
32
- a.preventDefault();
33
- const e = y.value.trim().replace(/,/g, "").toLowerCase();
34
- e && !n.value.includes(e) && (n.value = [...n.value, e]), y.value = "";
48
+ function fe(s) {
49
+ if (s.key === "Enter" || s.key === ",") {
50
+ s.preventDefault();
51
+ const e = w.value.trim().replace(/,/g, "").toLowerCase();
52
+ e && !o.value.includes(e) && (o.value = [...o.value, e]), w.value = "";
35
53
  }
36
- a.key === "Backspace" && !y.value && n.value.length && (n.value = n.value.slice(0, -1));
54
+ s.key === "Backspace" && !w.value && o.value.length && (o.value = o.value.slice(0, -1));
37
55
  }
38
- function be(a) {
39
- n.value = n.value.filter((e) => e !== a);
56
+ function me(s) {
57
+ o.value = o.value.filter((e) => e !== s);
40
58
  }
41
- function pe(a) {
42
- var o;
43
- const e = (o = a.target.files) == null ? void 0 : o[0];
59
+ function ge(s) {
60
+ var n;
61
+ const e = (n = s.target.files) == null ? void 0 : n[0];
44
62
  if (!e) return;
45
- R("coverImageSelected", e);
63
+ F("coverImageSelected", e);
46
64
  const t = new FileReader();
47
65
  t.onload = () => {
48
- k.value = t.result;
66
+ V.value = t.result;
49
67
  }, t.readAsDataURL(e);
50
68
  }
51
- function ce(a) {
52
- const e = B.value;
69
+ function _e(s) {
70
+ const e = K.value;
53
71
  if (!e) return;
54
- const t = e.selectionStart, o = e.selectionEnd, u = r.value;
55
- let S, h;
56
- if (a.wrap) {
57
- const [w, ee] = a.wrap, le = u.slice(t, o) || "text";
58
- S = u.slice(0, t) + w + le + ee + u.slice(o), h = t + w.length + le.length + ee.length;
59
- } else if (a.prefix) {
60
- const w = u.lastIndexOf(`
72
+ const t = e.selectionStart, n = e.selectionEnd, u = r.value;
73
+ let h, E;
74
+ if (s.wrap) {
75
+ const [C, ie] = s.wrap, ne = u.slice(t, n) || "text";
76
+ h = u.slice(0, t) + C + ne + ie + u.slice(n), E = t + C.length + ne.length + ie.length;
77
+ } else if (s.prefix) {
78
+ const C = u.lastIndexOf(`
61
79
  `, t - 1) + 1;
62
- S = u.slice(0, w) + a.prefix + u.slice(w), h = t + a.prefix.length;
63
- } else if (a.block)
64
- S = u.slice(0, t) + a.block + u.slice(o), h = t + a.block.length;
80
+ h = u.slice(0, C) + s.prefix + u.slice(C), E = t + s.prefix.length;
81
+ } else if (s.block)
82
+ h = u.slice(0, t) + s.block + u.slice(n), E = t + s.block.length;
65
83
  else
66
84
  return;
67
- r.value = S, setTimeout(() => {
68
- e.selectionStart = e.selectionEnd = h, e.focus();
85
+ r.value = h, setTimeout(() => {
86
+ e.selectionStart = e.selectionEnd = E, e.focus();
69
87
  }, 0);
70
88
  }
71
- function me() {
72
- if (!O.value) return;
73
- const a = T.value.trim();
74
- R("publish", {
75
- title: b.value,
76
- slug: f.value || se(b.value),
77
- date: x.value,
78
- summary: _.value,
79
- excerpt: P.value || void 0,
80
- tags: n.value,
81
- readingTime: p.value,
89
+ function ye() {
90
+ if (!M.value) return;
91
+ let s;
92
+ if (p.value === "__new__") {
93
+ const e = x.value.trim();
94
+ s = e ? { id: e, title: k.value.trim() || e, part: P.value, total: S.value } : void 0;
95
+ } else if (p.value !== "none") {
96
+ const e = a.existingSeries.find((t) => t.id === p.value);
97
+ s = e ? { id: e.id, title: e.title, part: P.value, total: S.value } : void 0;
98
+ }
99
+ F("publish", {
100
+ title: f.value,
101
+ slug: _.value || ue(f.value),
102
+ date: I.value,
103
+ summary: y.value,
104
+ excerpt: U.value || void 0,
105
+ tags: o.value,
106
+ readingTime: m.value,
82
107
  content: r.value,
83
- coverImage: s.coverImageUrl ?? k.value,
84
- series: a ? { id: a, title: C.value.trim() || a, part: I.value, total: U.value } : void 0
108
+ coverImage: a.coverImageUrl ?? V.value,
109
+ series: s
85
110
  });
86
111
  }
87
- return (a, e) => (c(), m("div", ke, [
112
+ return (s, e) => (d(), v("div", Ce, [
88
113
  l("section", Te, [
89
- l("div", Ce, [
114
+ l("div", Ie, [
90
115
  e[11] || (e[11] = l("label", { class: "be-label" }, [
91
116
  g("Title "),
92
117
  l("span", { class: "be-required" }, "*")
@@ -94,228 +119,245 @@ const ke = { class: "be-root" }, Te = { class: "be-meta" }, Ce = { class: "be-fi
94
119
  l("input", {
95
120
  class: "be-input",
96
121
  type: "text",
97
- value: b.value,
122
+ value: f.value,
98
123
  placeholder: "Post title…",
99
- onInput: re
100
- }, null, 40, Ie)
124
+ onInput: ce
125
+ }, null, 40, Ue)
101
126
  ]),
102
- l("div", Ue, [
127
+ l("div", Ve, [
103
128
  e[12] || (e[12] = l("label", { class: "be-label" }, "Slug", -1)),
104
- d(l("input", {
105
- "onUpdate:modelValue": e[0] || (e[0] = (t) => f.value = t),
129
+ b(l("input", {
130
+ "onUpdate:modelValue": e[0] || (e[0] = (t) => _.value = t),
106
131
  class: "be-input",
107
132
  type: "text",
108
133
  placeholder: "post-slug",
109
- onInput: e[1] || (e[1] = (t) => E.value = !0)
134
+ onInput: e[1] || (e[1] = (t) => D.value = !0)
110
135
  }, null, 544), [
111
- [v, f.value]
136
+ [c, _.value]
112
137
  ])
113
138
  ]),
114
- l("div", Se, [
139
+ l("div", he, [
115
140
  e[13] || (e[13] = l("label", { class: "be-label" }, "Date", -1)),
116
- d(l("input", {
117
- "onUpdate:modelValue": e[2] || (e[2] = (t) => x.value = t),
141
+ b(l("input", {
142
+ "onUpdate:modelValue": e[2] || (e[2] = (t) => I.value = t),
118
143
  class: "be-input",
119
144
  type: "date"
120
145
  }, null, 512), [
121
- [v, x.value]
146
+ [c, I.value]
122
147
  ])
123
148
  ]),
124
- l("div", he, [
149
+ l("div", Ee, [
125
150
  e[14] || (e[14] = l("label", { class: "be-label" }, [
126
151
  g("Summary "),
127
152
  l("span", { class: "be-required" }, "*")
128
153
  ], -1)),
129
- d(l("textarea", {
130
- "onUpdate:modelValue": e[3] || (e[3] = (t) => _.value = t),
154
+ b(l("textarea", {
155
+ "onUpdate:modelValue": e[3] || (e[3] = (t) => y.value = t),
131
156
  class: "be-input be-input--textarea",
132
157
  rows: "2",
133
158
  placeholder: "Short description shown in blog listings…"
134
159
  }, null, 512), [
135
- [v, _.value]
160
+ [c, y.value]
136
161
  ])
137
162
  ]),
138
- l("div", Ve, [
163
+ l("div", Le, [
139
164
  e[15] || (e[15] = l("label", { class: "be-label" }, [
140
165
  g("Excerpt "),
141
166
  l("span", { class: "be-optional" }, "(optional)")
142
167
  ], -1)),
143
- d(l("textarea", {
144
- "onUpdate:modelValue": e[4] || (e[4] = (t) => P.value = t),
168
+ b(l("textarea", {
169
+ "onUpdate:modelValue": e[4] || (e[4] = (t) => U.value = t),
145
170
  class: "be-input be-input--textarea",
146
171
  rows: "2",
147
172
  placeholder: "Longer teaser for social previews…"
148
173
  }, null, 512), [
149
- [v, P.value]
174
+ [c, U.value]
150
175
  ])
151
176
  ]),
152
- l("div", Ee, [
177
+ l("div", De, [
153
178
  e[16] || (e[16] = l("label", { class: "be-label" }, "Tags", -1)),
154
- l("div", De, [
155
- (c(!0), m(te, null, ae(n.value, (t) => (c(), m("span", {
179
+ l("div", Re, [
180
+ (d(!0), v(L, null, N(o.value, (t) => (d(), v("span", {
156
181
  key: t,
157
182
  class: "be-tag"
158
183
  }, [
159
- g(V(t) + " ", 1),
184
+ g(T(t) + " ", 1),
160
185
  l("button", {
161
186
  type: "button",
162
187
  class: "be-tag__remove",
163
188
  "aria-label": `Remove tag ${t}`,
164
- onClick: (o) => be(t)
165
- }, "×", 8, Le)
189
+ onClick: (n) => me(t)
190
+ }, "×", 8, Be)
166
191
  ]))), 128)),
167
- d(l("input", {
168
- "onUpdate:modelValue": e[5] || (e[5] = (t) => y.value = t),
192
+ b(l("input", {
193
+ "onUpdate:modelValue": e[5] || (e[5] = (t) => w.value = t),
169
194
  class: "be-tag-input",
170
195
  type: "text",
171
196
  placeholder: "Add tag, press Enter…",
172
- onKeydown: ve
197
+ onKeydown: fe
173
198
  }, null, 544), [
174
- [v, y.value]
199
+ [c, w.value]
175
200
  ])
176
201
  ])
177
202
  ]),
178
- l("div", Re, [
203
+ l("div", Ne, [
179
204
  e[17] || (e[17] = l("label", { class: "be-label" }, "Reading time (min)", -1)),
180
- d(l("input", {
181
- "onUpdate:modelValue": e[6] || (e[6] = (t) => p.value = t),
205
+ b(l("input", {
206
+ "onUpdate:modelValue": e[6] || (e[6] = (t) => m.value = t),
182
207
  class: "be-input be-input--narrow",
183
208
  type: "number",
184
209
  min: "1"
185
210
  }, null, 512), [
186
211
  [
187
- v,
188
- p.value,
212
+ c,
213
+ m.value,
189
214
  void 0,
190
215
  { number: !0 }
191
216
  ]
192
217
  ])
193
218
  ]),
194
- l("div", Be, [
219
+ l("div", Oe, [
195
220
  e[18] || (e[18] = l("label", { class: "be-label" }, "Cover Image", -1)),
196
- l("div", Oe, [
197
- D.value ? (c(), m("img", {
221
+ l("div", Ae, [
222
+ R.value ? (d(), v("img", {
198
223
  key: 0,
199
224
  class: "be-cover__preview",
200
- src: D.value,
225
+ src: R.value,
201
226
  alt: "Cover preview"
202
- }, null, 8, Ae)) : _e("", !0),
203
- l("label", Fe, [
204
- g(V(D.value ? "Replace" : "Choose image") + " ", 1),
227
+ }, null, 8, Fe)) : O("", !0),
228
+ l("label", Ke, [
229
+ g(T(R.value ? "Replace" : "Choose image") + " ", 1),
205
230
  l("input", {
206
231
  type: "file",
207
232
  accept: "image/*",
208
233
  hidden: "",
209
- onChange: pe
234
+ onChange: ge
210
235
  }, null, 32)
211
236
  ])
212
237
  ])
213
238
  ]),
214
- e[23] || (e[23] = l("div", { class: "be-field-group-label" }, [
239
+ e[26] || (e[26] = l("div", { class: "be-field-group-label" }, [
215
240
  g(" Series "),
216
241
  l("span", { class: "be-optional" }, "(optional)")
217
242
  ], -1)),
218
243
  l("div", Me, [
219
- e[19] || (e[19] = l("label", { class: "be-label" }, "Series ID", -1)),
220
- d(l("input", {
221
- "onUpdate:modelValue": e[7] || (e[7] = (t) => T.value = t),
222
- class: "be-input",
223
- type: "text",
224
- placeholder: "e.g. go-backend"
225
- }, null, 512), [
226
- [v, T.value]
227
- ])
244
+ e[21] || (e[21] = l("label", { class: "be-label" }, "Series", -1)),
245
+ l("select", {
246
+ class: "be-input be-input--select",
247
+ value: p.value,
248
+ onChange: be
249
+ }, [
250
+ e[19] || (e[19] = l("option", { value: "none" }, "— None —", -1)),
251
+ (d(!0), v(L, null, N(A.existingSeries, (t) => (d(), v("option", {
252
+ key: t.id,
253
+ value: t.id
254
+ }, T(t.title), 9, He))), 128)),
255
+ e[20] || (e[20] = l("option", { value: "__new__" }, "+ New series…", -1))
256
+ ], 40, $e)
228
257
  ]),
229
- l("div", $e, [
230
- e[20] || (e[20] = l("label", { class: "be-label" }, "Series Title", -1)),
231
- d(l("input", {
232
- "onUpdate:modelValue": e[8] || (e[8] = (t) => C.value = t),
233
- class: "be-input",
234
- type: "text",
235
- placeholder: "e.g. Go Backend Series"
236
- }, null, 512), [
237
- [v, C.value]
258
+ p.value === "__new__" ? (d(), v(L, { key: 0 }, [
259
+ l("div", qe, [
260
+ e[22] || (e[22] = l("label", { class: "be-label" }, "Series ID", -1)),
261
+ b(l("input", {
262
+ "onUpdate:modelValue": e[7] || (e[7] = (t) => x.value = t),
263
+ class: "be-input",
264
+ type: "text",
265
+ placeholder: "e.g. go-backend"
266
+ }, null, 512), [
267
+ [c, x.value]
268
+ ])
269
+ ]),
270
+ l("div", Ge, [
271
+ e[23] || (e[23] = l("label", { class: "be-label" }, "Series Title", -1)),
272
+ b(l("input", {
273
+ "onUpdate:modelValue": e[8] || (e[8] = (t) => k.value = t),
274
+ class: "be-input",
275
+ type: "text",
276
+ placeholder: "e.g. Go Backend Series"
277
+ }, null, 512), [
278
+ [c, k.value]
279
+ ])
238
280
  ])
239
- ]),
240
- l("div", He, [
281
+ ], 64)) : O("", !0),
282
+ p.value !== "none" ? (d(), v("div", We, [
241
283
  l("div", null, [
242
- e[21] || (e[21] = l("label", { class: "be-label" }, "Part", -1)),
243
- d(l("input", {
244
- "onUpdate:modelValue": e[9] || (e[9] = (t) => I.value = t),
284
+ e[24] || (e[24] = l("label", { class: "be-label" }, "Part", -1)),
285
+ b(l("input", {
286
+ "onUpdate:modelValue": e[9] || (e[9] = (t) => P.value = t),
245
287
  class: "be-input be-input--narrow",
246
288
  type: "number",
247
289
  min: "1"
248
290
  }, null, 512), [
249
291
  [
250
- v,
251
- I.value,
292
+ c,
293
+ P.value,
252
294
  void 0,
253
295
  { number: !0 }
254
296
  ]
255
297
  ])
256
298
  ]),
257
299
  l("div", null, [
258
- e[22] || (e[22] = l("label", { class: "be-label" }, "Total Parts", -1)),
259
- d(l("input", {
260
- "onUpdate:modelValue": e[10] || (e[10] = (t) => U.value = t),
300
+ e[25] || (e[25] = l("label", { class: "be-label" }, "Total Parts", -1)),
301
+ b(l("input", {
302
+ "onUpdate:modelValue": e[10] || (e[10] = (t) => S.value = t),
261
303
  class: "be-input be-input--narrow",
262
304
  type: "number",
263
305
  min: "1"
264
306
  }, null, 512), [
265
307
  [
266
- v,
267
- U.value,
308
+ c,
309
+ S.value,
268
310
  void 0,
269
311
  { number: !0 }
270
312
  ]
271
313
  ])
272
314
  ])
273
- ])
315
+ ])) : O("", !0)
274
316
  ]),
275
- l("section", Ne, [
276
- l("div", qe, [
277
- (c(!0), m(te, null, ae(ye(Pe), (t) => (c(), m("button", {
317
+ l("section", je, [
318
+ l("div", ze, [
319
+ (d(!0), v(L, null, N(xe(Se), (t) => (d(), v("button", {
278
320
  key: t.label,
279
321
  type: "button",
280
322
  class: "be-toolbar__btn",
281
323
  title: t.label,
282
- onClick: (o) => ce(t)
283
- }, V(t.icon), 9, Ge))), 128))
324
+ onClick: (n) => _e(t)
325
+ }, T(t.icon), 9, Je))), 128))
284
326
  ]),
285
- l("div", Ke, [
286
- l("div", We, [
287
- e[24] || (e[24] = l("div", { class: "be-pane__label" }, " Markdown ", -1)),
327
+ l("div", Qe, [
328
+ l("div", Xe, [
329
+ e[27] || (e[27] = l("div", { class: "be-pane__label" }, " Markdown ", -1)),
288
330
  l("textarea", {
289
331
  ref_key: "textareaEl",
290
- ref: B,
332
+ ref: K,
291
333
  class: "be-pane__textarea",
292
334
  value: r.value,
293
335
  placeholder: "Write your post in markdown…",
294
336
  spellcheck: "true",
295
- onInput: de
296
- }, null, 40, je)
337
+ onInput: pe
338
+ }, null, 40, Ye)
297
339
  ]),
298
- l("div", ze, [
299
- e[25] || (e[25] = l("div", { class: "be-pane__label" }, " Preview ", -1)),
340
+ l("div", Ze, [
341
+ e[28] || (e[28] = l("div", { class: "be-pane__label" }, " Preview ", -1)),
300
342
  l("div", {
301
343
  class: "be-pane__preview prose",
302
- innerHTML: ue.value
303
- }, null, 8, Je)
344
+ innerHTML: ve.value
345
+ }, null, 8, el)
304
346
  ])
305
347
  ])
306
348
  ]),
307
- l("footer", Qe, [
308
- l("span", Xe, "~" + V(p.value) + " min read", 1),
349
+ l("footer", ll, [
350
+ l("span", tl, "~" + T(m.value) + " min read", 1),
309
351
  l("button", {
310
352
  type: "button",
311
353
  class: "be-publish",
312
- disabled: !O.value,
313
- onClick: me
314
- }, " Publish Post ", 8, Ye)
354
+ disabled: !M.value,
355
+ onClick: ye
356
+ }, " Publish Post ", 8, sl)
315
357
  ])
316
358
  ]));
317
359
  }
318
360
  });
319
361
  export {
320
- al as default
362
+ ul as default
321
363
  };