@next-bricks/markdown 1.10.10 → 1.11.1

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/bricks.json CHANGED
@@ -17,5 +17,5 @@
17
17
  "eo-icon"
18
18
  ]
19
19
  },
20
- "filePath": "bricks/markdown/dist/index.0e44deac.js"
20
+ "filePath": "bricks/markdown/dist/index.5367bfa2.js"
21
21
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_markdown=self.webpackChunk_next_bricks_markdown||[]).push([[632],{3632:(e,t,n)=>{n.r(t);var a,i,o,r,l,s,c,u,h,d,m,k,p,A,y,b,v,g,w,f,E,C,N,M,S,W=n(9740),j=n(6330),I=n(4586),_=n(4635),x=n(918),q=n(6902),D=n(5536),U=n(6121),T=n(829),V=n(2740),B=n(9575),F=n(8769),O=n.n(F),$=n(169),G=n(5617),J=(n(6329),n(998)),K=n(3717),P=n(1160),X=n(2466),L=n(9169),Q=n(9760),R=n(135),Y=n(6486),Z=n(6512),z=n(8653),H=n(1656),ee=n(5435),te=n(9796),ne=n(3971),ae=n(6385),ie=n(1151),oe=n(4557),re=n(426),le=n(3373),se=n.n(le),ce=(0,G.wrapBrick)("eo-form-item"),ue=(0,G.wrapBrick)("eo-icon"),he=e=>{var{icon:t,onClick:n,tooltip:a}=e;return O().createElement("div",{className:"menu-btn-box",onMouseDown:e=>{null==n||n(),e.preventDefault()}},O().createElement(ue,(0,B.A)({style:{verticalAlign:"middle"}},t)),a&&O().createElement("div",{className:"menuIconTooltip"},a))},{defineElement:de,property:me,event:ke}=(0,$.createDecorators)(),pe=new WeakMap,Ae=new WeakMap,ye=new WeakMap,be=new WeakMap,ve=new WeakMap,ge=new WeakMap,we=new WeakMap,fe=new WeakMap,Ee=new WeakSet,Ce=new WeakMap;class Ne extends re.N{constructor(){super(...arguments),(0,_.A)(this,Ee),(0,x.A)(this,pe,o(this)),(0,x.A)(this,Ae,(r(this),l(this))),(0,x.A)(this,ye,(s(this),c(this))),(0,x.A)(this,be,(u(this),h(this))),(0,x.A)(this,ve,(d(this),m(this))),(0,x.A)(this,ge,(k(this),p(this))),(0,x.A)(this,we,(A(this),y(this))),(0,x.A)(this,fe,(b(this),v(this))),(0,I.A)(this,"handleUploadImage",(f(this),e=>{(0,D.A)(Ee,this,g).emit(e)})),(0,x.A)(this,Ce,E(this)),(0,I.A)(this,"handleMarkdownValueChange",(M(this),e=>{var t;null===(t=this.getFormElement())||void 0===t||t.formStore.onChange(this.name,e),this.value=e,(0,D.A)(Ee,this,C).emit(e)}))}get name(){return(0,T.A)(pe,this)}set name(e){(0,U.A)(pe,this,e)}get label(){return(0,T.A)(Ae,this)}set label(e){(0,U.A)(Ae,this,e)}get required(){return(0,T.A)(ye,this)}set required(e){(0,U.A)(ye,this,e)}get value(){return(0,T.A)(be,this)}set value(e){(0,U.A)(be,this,e)}get bucketName(){return(0,T.A)(ve,this)}set bucketName(e){(0,U.A)(ve,this,e)}get readonly(){return(0,T.A)(ge,this)}set readonly(e){(0,U.A)(ge,this,e)}get containerStyle(){return(0,T.A)(we,this)}set containerStyle(e){(0,U.A)(we,this,e)}render(){return O().createElement(X.pb,null,O().createElement(ne.vo,null,O().createElement(Me,{formElement:this.getFormElement(),name:this.name,label:this.label,required:this.required,curElement:this,bucketName:this.bucketName,value:this.value,readonly:this.readonly,containerStyle:this.containerStyle,onUploadImage:this.handleUploadImage,onMarkdownValueChange:this.handleMarkdownValueChange})))}}function Me(e){var{bucketName:t,containerStyle:n,value:a,formElement:i,readonly:o,onUploadImage:r,onMarkdownValueChange:l}=e,[s,c]=(0,F.useState)(!1),u=function(){var n=(0,j.A)((function*(n,a){for(var i=[],o=[],l=0;l<n.length;l++){var s=n.item(l);s&&s.type.includes("image")&&i.push(s)}try{o=yield Promise.all(i.map(function(){var n=(0,j.A)((function*(n){var i,o=yield(0,K.i)(t,{file:n,width:0,height:0}),l=(i=null==o?void 0:o.objectName,"/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/".concat(e.bucketName,"/object/").concat(i)),s=n.name;return r&&r({name:s,src:l}),a.nodes.image.createAndFill({src:l,alt:s})}));return function(e){return n.apply(this,arguments)}}()))}catch(e){console.error("upload failed:",e)}return o}));return function(e,t){return n.apply(this,arguments)}}(),h=(0,ne.Uv)(),d=(0,ne.rJ)(),m=(0,ne.$X)(),k=(0,F.useMemo)((()=>o?[]:[H.Te,ie.EI,ie.nk,e=>(0,j.A)((function*(){e.set(ie.EI.key,{view:h({component:ie.ST})})})),(0,ie.jp)(d)].flat()),[o,h,d]),{get:p}=(0,X.hG)((e=>P.KE.make().config((n=>{n.set(P.k,e),n.update(P.QM,(e=>(0,W.A)((0,W.A)({},e),{},{editable:()=>!o}))),a&&n.set(P.CI,a),n.get(z.Ob).markdownUpdated(((e,t,n)=>{l&&l(t)})).focus((()=>{c(!0)})).blur((()=>{c(!1)})),t&&n.update(Y.wu.key,(e=>(0,W.A)((0,W.A)({},e),{},{uploader:u}))),n.update(te.mS.key,(e=>(0,W.A)((0,W.A)({},e),{},{configureRefractor:()=>ae.L})))})).config(Q.E).use(z.F_).use(L.PD).use(R.b6).use(H.Te).use(ee.pZ).use(Y.Se).use(k).use(te.Wj).use(o?[]:(0,Z.m5)(L.Ay.node,(()=>m({component:oe.N}))))),[]);function A(e,t){var n;return null===(n=p())||void 0===n?void 0:n.action((0,Z.KD)(e,t))}(0,F.useEffect)((()=>{var e;i&&void 0!==a&&!s&&(null===(e=p())||void 0===e||e.action((0,Z.yh)(a)))}),[p(),a]);var y=[{icon:{lib:"antd",icon:"undo"},onClick:()=>A(R.Eb.key),tooltip:"撤销"},{icon:{lib:"antd",icon:"redo"},onClick:()=>A(R.eD.key),tooltip:"重做"},{icon:{lib:"antd",icon:"bold"},onClick:()=>A(L.vY.key),tooltip:"粗体"},{icon:{lib:"antd",icon:"italic"},onClick:()=>A(L.e0.key),tooltip:"斜体"},{icon:{lib:"antd",icon:"strikethrough"},onClick:()=>A(H.$l.key),tooltip:"删除线"},{icon:{lib:"antd",icon:"table"},onClick:()=>A(H.f$.key),tooltip:"表格"},{icon:{lib:"antd",icon:"unordered-list"},onClick:()=>A(L.Xk.key),tooltip:"无序列表"},{icon:{lib:"antd",icon:"ordered-list"},onClick:()=>A(L.Ej.key),tooltip:"有序列表"},{icon:{lib:"fa",icon:"quote-right"},onClick:()=>A(L.oO.key),tooltip:"块引用"}];return O().createElement(ce,(0,B.A)({exportparts:"message"},e),O().createElement("div",{className:se()("markdown-container",{readonly:o}),style:n},!o&&O().createElement("div",{className:"menu-container-outter"},O().createElement("div",{className:"menu-container-inner prose"},y.map((e=>O().createElement(he,(0,B.A)({},e,{key:JSON.stringify(e.icon)})))))),O().createElement("div",{className:"editor-container"},O().createElement(X.y5,null))))}a=Ne,({e:[o,r,l,s,c,u,h,d,m,k,p,A,y,b,v,g,w,f,E,C,N,M],c:[S,i]}=(0,V.A)(a,[de("eo-markdown-editor",{styleTexts:[J.A],alias:["markdown.markdown-editor"]})],[[me(),1,"name"],[me(),1,"label"],[me({type:Boolean}),1,"required"],[me(),1,"value"],[me(),1,"bucketName"],[me({type:Boolean}),1,"readonly"],[me({attribute:!1}),1,"containerStyle"],[ke({type:"image.upload"}),1,"uploadImage",e=>(0,T.A)(fe,e),(e,t)=>(0,U.A)(fe,e,t)],[ke({type:"markdown.value.change"}),1,"markdownValueChange",e=>(0,T.A)(Ce,e),(e,t)=>(0,U.A)(Ce,e,t)]],0,(e=>Ee.has((0,q.A)(e))),re.N)),i()}}]);
2
+ //# sourceMappingURL=632.94f8322c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/632.94f8322c.js","mappings":"wLAoG8DA,E,0WAvCxDC,IAAkBC,EAAAA,EAAAA,WAAmC,gBAErDC,IAAcD,EAAAA,EAAAA,WAAyC,WAEvDE,GAAkCC,IAAgC,IAA/B,KAAEC,EAAI,QAAEC,EAAO,QAAEC,GAASH,EACjE,OACEI,IAAAA,cAAA,OACEC,UAAU,eACVC,YAAcC,IACZL,SAAAA,IACAK,EAAEC,gBAAgB,GAGpBJ,IAAAA,cAACN,IAAWW,EAAAA,EAAAA,GAAA,CAACC,MAAO,CAAEC,cAAe,WAAgBV,IACpDE,GAAWC,IAAAA,cAAA,OAAKC,UAAU,mBAAmBF,GAC1C,GAwBJ,cAAES,GAAa,SAAEC,GAAUC,MAAKA,KAAKC,EAAAA,EAAAA,oBAAmBC,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAG,GAAA,IAAAH,QAAAI,GAAA,IAAAJ,QAAAK,GAAA,IAAAL,QAAAM,GAAA,IAAAN,QAAAO,GAAA,IAAAP,QAAAQ,GAAA,IAAAC,QAAAC,GAAA,IAAAV,QAE9D,MAAAW,WAY6BC,GAAAA,EAAoBC,WAAAA,GAAA,SAAAC,YAAAC,EAAAA,EAAAA,GAAA,KAAAP,KAC/CQ,EAAAA,EAAAA,GAAA,KAAAjB,GAAAkB,EAAA,QAKAD,EAAAA,EAAAA,GAAA,KAAAf,IAAAiB,EAAA,MAAAC,EAAA,SAKAH,EAAAA,EAAAA,GAAA,KAAAd,IAAAkB,EAAA,MAAAC,EAAA,SAMAL,EAAAA,EAAAA,GAAA,KAAAb,IAAAmB,EAAA,MAAAC,EAAA,SAMAP,EAAAA,EAAAA,GAAA,KAAAZ,IAAAoB,EAAA,MAAAC,EAAA,SAMAT,EAAAA,EAAAA,GAAA,KAAAX,IAAAqB,EAAA,MAAAC,EAAA,SAQAX,EAAAA,EAAAA,GAAA,KAAAV,IAAAsB,EAAA,MAAAC,EAAA,SAQAb,EAAAA,EAAAA,GAAA,KAAAT,IAAAuB,EAAA,MAAAC,EAAA,SAAAC,EAAAA,EAAAA,GAAA,0BAAAC,EAAA,MAO6BC,KAC3BC,EAAAA,EAAAA,GAAA3B,GAAA4B,KAAIC,GAAcC,KAAKJ,EAAM,KAG/BlB,EAAAA,EAAAA,GAAA,KAAAN,GAAA6B,EAAA,QAAAP,EAAAA,EAAAA,GAAA,kCAAAQ,EAAA,MAO6BN,IAAwB,IAAAO,EAC9B,QAArBA,EAAAL,KAAKM,wBAAgB,IAAAD,GAArBA,EAAuBE,UAAUC,SAASR,KAAKS,KAAOX,GACtDE,KAAKF,MAAQA,GACbC,EAAAA,EAAAA,GAAA3B,GAAA4B,KAAIU,GAAsBR,KAAKJ,EAAM,GACtC,SA/DoBW,GAAI,OAAAE,EAAAA,EAAAA,GAAAhD,GAAA,cAAJ8C,CAAIG,IAAAC,EAAAA,EAAAA,GAAAlD,GAAA,KAAAiD,EAAA,UAKJE,GAAK,OAAAH,EAAAA,EAAAA,GAAA9C,GAAA,eAALiD,CAAKF,IAAAC,EAAAA,EAAAA,GAAAhD,GAAA,KAAA+C,EAAA,aAMjBG,GAAQ,OAAAJ,EAAAA,EAAAA,GAAA7C,GAAA,kBAARiD,CAAQH,IAAAC,EAAAA,EAAAA,GAAA/C,GAAA,KAAA8C,EAAA,UAMId,GAAK,OAAAa,EAAAA,EAAAA,GAAA5C,GAAA,eAAL+B,CAAKc,IAAAC,EAAAA,EAAAA,GAAA9C,GAAA,KAAA6C,EAAA,eAMLI,GAAU,OAAAL,EAAAA,EAAAA,GAAA3C,GAAA,oBAAVgD,CAAUJ,IAAAC,EAAAA,EAAAA,GAAA7C,GAAA,KAAA4C,EAAA,aAQtBK,GAAQ,OAAAN,EAAAA,EAAAA,GAAA1C,GAAA,kBAARgD,CAAQL,IAAAC,EAAAA,EAAAA,GAAA5C,GAAA,KAAA2C,EAAA,mBAQRM,GAAc,OAAAP,EAAAA,EAAAA,GAAAzC,GAAA,wBAAdgD,CAAcN,IAAAC,EAAAA,EAAAA,GAAA3C,GAAA,KAAA0C,EAAA,CA0BvBO,MAAAA,GACE,OACEpE,IAAAA,cAACqE,EAAAA,GAAgB,KACfrE,IAAAA,cAACsE,GAAAA,GAA0B,KACzBtE,IAAAA,cAACuE,GAAuB,CACtBC,YAAavB,KAAKM,iBAClBG,KAAMT,KAAKS,KACXK,MAAOd,KAAKc,MACZC,SAAUf,KAAKe,SACfS,WAAYxB,KACZgB,WAAYhB,KAAKgB,WACjBlB,MAAOE,KAAKF,MACZmB,SAAUjB,KAAKiB,SACfC,eAAgBlB,KAAKkB,eACrBO,cAAezB,KAAK0B,kBACpBC,sBAAuB3B,KAAK4B,6BAKtC,EAKK,SAASN,GAAwBO,GACtC,IAAM,WACJb,EAAU,eACVE,EAAc,MACdpB,EAAK,YACLyB,EAAW,SACXN,EAAQ,cACRQ,EAAa,sBACbE,GACEE,GAEGC,EAASC,IAAcC,EAAAA,EAAAA,WAAS,GAMjCC,EAAkB,eAAAC,GAAAC,EAAAA,EAAAA,IAAG,UAAOC,EAAiBC,GAIjD,IAHA,IAAMC,EAAiB,GACnBC,EAAgB,GAEXC,EAAI,EAAGA,EAAIJ,EAAMK,OAAQD,IAAK,CACrC,IAAME,EAAON,EAAMO,KAAKH,GAEnBE,GAKAA,EAAKE,KAAKC,SAAS,UAIxBP,EAAOQ,KAAKJ,EACd,CAGA,IACEH,QAAcQ,QAAQC,IACpBV,EAAOW,IAAG,eAAAC,GAAAf,EAAAA,EAAAA,IAAC,UAAOgB,GAChB,IA3BwBC,EA2BlBC,QAAsBC,EAAAA,EAAAA,GAC1BtC,EACA,CACE0B,KAAMS,EACNI,MAAO,EACPC,OAAQ,IAGNC,GAnCkBL,EAmCWC,aAAQ,EAARA,EAAUD,WAlC5C,mFAAPM,OAA0F7B,EAAMb,WAAU,YAAA0C,OAAWN,IAmCzGO,EAAMR,EAAM1C,KAElB,OADAgB,GAAiBA,EAAc,CAAEhB,KAAMkD,EAAKF,QACrCpB,EAAOE,MAAMY,MAAMS,cAAc,CACtCH,MACAE,OAEJ,IAAC,gBAAAE,GAAA,OAAAX,EAAAY,MAAA,KAAApF,UAAA,EAhBS,IAkBd,CAAE,MAAOqF,GAEPC,QAAQC,MAAM,iBAAkBF,EAClC,CAEA,OAAOxB,CACT,IAAC,gBA9CuB2B,EAAAC,GAAA,OAAAjC,EAAA4B,MAAA,KAAApF,UAAA,KAgDlB0F,GAAoBC,EAAAA,GAAAA,MACpBC,GAAoBC,EAAAA,GAAAA,MACpBC,GAAkBC,EAAAA,GAAAA,MAElBC,GAA+BC,EAAAA,EAAAA,UAAQ,IACpC1D,EACH,GACA,CACE2D,EAAAA,GACAC,GAAAA,GACAC,GAAAA,GACCC,IAAQ5C,EAAAA,EAAAA,IAAK,YACZ4C,EAAIC,IAAIH,GAAAA,GAAaI,IAAK,CACxBC,KAAMd,EAAkB,CACtBe,UAAWC,GAAAA,MAGjB,KACAC,EAAAA,GAAAA,IAAoBf,IACpBgB,QACL,CAACrE,EAAUmD,EAAmBE,KAE3B,IAAEiB,IAAQC,EAAAA,EAAAA,KAAWC,GAClBC,EAAAA,GAAOC,OACXC,QAAQb,IAEPA,EAAIC,IAAIa,EAAAA,EAASJ,GACjBV,EAAIe,OAAOC,EAAAA,IAAuBC,IAASC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtCD,GAAI,IACPE,SAAUA,KAAOjF,MAGnBnB,GAASiF,EAAIC,IAAImB,EAAAA,GAAiBrG,GAElCiF,EACGQ,IAAIa,EAAAA,IACJC,iBAEC,CAACtB,EAAUuB,EAAkBC,KAC3B5E,GAAyBA,EAAsB2E,EAAS,IAG3DE,OAAM,KACLzE,GAAW,EAAK,IAEjB0E,MAAK,KACJ1E,GAAW,EAAM,IAGrBf,GACE+D,EAAIe,OAAOY,EAAAA,GAAazB,KAAMe,IAASC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClCD,GAAI,IACP/D,eAGJ8C,EAAIe,OAAOa,GAAAA,GAAY1B,KAAMe,IAASC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjCD,GAAI,IACPY,mBAAoBA,IAAMC,GAAAA,KACzB,IAEJjB,OAAOkB,EAAAA,GACPC,IAAIC,EAAAA,IACJD,IAAIE,EAAAA,IACJF,IAAIG,EAAAA,IACJH,IAAInC,EAAAA,IACJmC,IAAII,GAAAA,IACJJ,IAAIK,EAAAA,IACJL,IAAIrC,GACJqC,IAAIM,GAAAA,IACJN,IACC9F,EACI,IACAqG,EAAAA,EAAAA,IAAMC,EAAAA,GAAgBC,MAAM,IAC1BhD,EAAgB,CAAEW,UAAWsC,GAAAA,QAGtC,IAUH,SAASC,EAAQC,EAAoBC,GAAa,IAAAC,EAChD,OAAY,QAAZA,EAAOtC,WAAK,IAAAsC,OAAA,EAALA,EAAOC,QAAOC,EAAAA,EAAAA,IAAYJ,EAASC,GAC5C,EAVAI,EAAAA,EAAAA,YAAU,KAG4C,IAAAC,EAAhD1G,QAAyB2G,IAAVpI,IAAwBgC,IACpC,QAALmG,EAAA1C,WAAK,IAAA0C,GAALA,EAAOH,QAAOK,EAAAA,EAAAA,IAAWrI,IAC3B,GACC,CAACyF,IAAOzF,IAMX,IAAMsI,EAAiC,CACrC,CACExL,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,QAC3BC,QAASA,IAAM6K,EAAKY,EAAAA,GAAYrD,KAChCnI,QAAS,MAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,QAC3BC,QAASA,IAAM6K,EAAKa,EAAAA,GAAYtD,KAChCnI,QAAS,MAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,QAC3BC,QAASA,IAAM6K,EAAKc,EAAAA,GAAoBvD,KACxCnI,QAAS,MAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,UAC3BC,QAASA,IAAM6K,EAAKe,EAAAA,GAAsBxD,KAC1CnI,QAAS,MAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,iBAC3BC,QAASA,IAAM6K,EAAKgB,EAAAA,GAA2BzD,KAC/CnI,QAAS,OAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,SAC3BC,QAASA,IAAM6K,EAAKiB,EAAAA,GAAmB1D,KACvCnI,QAAS,MAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,kBAC3BC,QAASA,IAAM6K,EAAKkB,EAAAA,GAAwB3D,KAC5CnI,QAAS,QAEX,CACEF,KAAM,CAAEyL,IAAK,OAAQzL,KAAM,gBAC3BC,QAASA,IAAM6K,EAAKmB,EAAAA,GAAyB5D,KAC7CnI,QAAS,QAEX,CACEF,KAAM,CAAEyL,IAAK,KAAMzL,KAAM,eACzBC,QAASA,IAAM6K,EAAKoB,EAAAA,GAAwB7D,KAC5CnI,QAAS,QAIb,OACEC,IAAAA,cAACR,IAAea,EAAAA,EAAAA,GAAA,CAAC2L,YAAY,WAAclH,GACzC9E,IAAAA,cAAA,OACEC,UAAWgM,KAAW,qBAAsB,CAC1C/H,aAEF5D,MAAO6D,IAELD,GACAlE,IAAAA,cAAA,OAAKC,UAAU,yBACbD,IAAAA,cAAA,OAAKC,UAAU,8BACZoL,EAAYnF,KAAKN,GAChB5F,IAAAA,cAACL,IAAUU,EAAAA,EAAAA,GAAA,GAAKuF,EAAI,CAAEsC,IAAKgE,KAAKC,UAAUvG,EAAK/F,aAKvDG,IAAAA,cAAA,OAAKC,UAAU,oBACbD,IAAAA,cAACoM,EAAAA,GAAQ,QAKnB,CAtOCC,EAAA7K,KAAArB,GAAA2B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAM,EAAAoJ,EAAAxJ,EAAAM,EAAAO,EAAA4I,EAAAlJ,GAAAmJ,GAAAjN,EAAAkN,KAAAC,EAAAA,EAAAA,GAAAL,EAAA,CAtGA7L,GAAc,qBAAsB,CACnCmM,WAAY,CAACC,EAAAA,GACbC,MAAO,CAAC,+BACR,EAaCpM,KAAU,WAKVA,KAAU,YAKVA,GAAS,CAAEoF,KAAMiH,UAAU,eAO3BrM,KAAU,YAMVA,KAAU,iBAKVA,GAAS,CACRoF,KAAMiH,UACN,eAMDrM,GAAS,CACRsM,WAAW,IACX,qBAODrM,GAAM,CAAEmF,KAAM,iBAAiB,gBAAAmH,IAAApJ,EAAAA,EAAAA,GAAAxC,GAAA4L,GAAA,CAAAA,EAAAnJ,KAAAC,EAAAA,EAAAA,GAAA1C,GAAA4L,EAAAnJ,IAAA,CAW/BnD,GAAM,CAAEmF,KAAM,0BAA0B,wBAAAmH,IAAApJ,EAAAA,EAAAA,GAAArC,GAAAyL,GAAA,CAAAA,EAAAnJ,KAAAC,EAAAA,EAAAA,GAAAvC,GAAAyL,EAAAnJ,KAAA,GAAAoJ,GAAA5L,GAAA6L,KAAAC,EAAAA,EAAAA,GAAAF,KA5DdxL,GAAAA,IAAmBgL,G","sources":["webpack:///./src/markdown-editor/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./markdown-editor.shadow.css\";\nimport { ObjectStoreApi_putObject } from \"@next-api-sdk/object-store-sdk\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { CmdKey } from \"@milkdown/core\";\nimport {\n defaultValueCtx,\n Editor,\n editorViewOptionsCtx,\n rootCtx,\n} from \"@milkdown/core\";\nimport { Milkdown, MilkdownProvider, useEditor } from \"@milkdown/react\";\nimport {\n commonmark,\n toggleStrongCommand,\n toggleEmphasisCommand,\n wrapInBulletListCommand,\n wrapInOrderedListCommand,\n wrapInBlockquoteCommand,\n codeBlockSchema,\n} from \"@milkdown/preset-commonmark\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { nord } from \"@milkdown/theme-nord\";\nimport { history, redoCommand, undoCommand } from \"@milkdown/plugin-history\";\nimport { upload, uploadConfig, Uploader } from \"@milkdown/plugin-upload\";\nimport { callCommand, $view, replaceAll } from \"@milkdown/utils\";\nimport type { Node } from \"@milkdown/prose/model\";\nimport { listener, listenerCtx } from \"@milkdown/plugin-listener\";\nimport {\n gfm,\n toggleStrikethroughCommand,\n insertTableCommand,\n} from \"@milkdown/preset-gfm\";\nimport { indent } from \"@milkdown/plugin-indent\";\nimport { Ctx, MilkdownPlugin } from \"@milkdown/ctx\";\nimport { prism, prismConfig } from \"@milkdown/plugin-prism\";\nimport {\n usePluginViewFactory,\n ProsemirrorAdapterProvider,\n useWidgetViewFactory,\n useNodeViewFactory,\n} from \"@prosemirror-adapter/react\";\nimport { refractor } from \"refractor/lib/common\";\nimport {\n tableSelectorPlugin,\n TableTooltip,\n tableTooltip,\n tableTooltipCtx,\n} from \"./components/TableWidget.js\";\nimport { CodeBlock } from \"./components/CodeBlock.js\";\nimport type { FormItem, FormItemProps } from \"@next-bricks/form/form-item\";\nimport { FormItemElementBase } from \"@next-shared/form\";\nimport classNames from \"classnames\";\n\nconst WrappedFormItem = wrapBrick<FormItem, FormItemProps>(\"eo-form-item\");\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst MenuButton: FC<MenuButtonProps> = ({ icon, onClick, tooltip }) => {\n return (\n <div\n className=\"menu-btn-box\"\n onMouseDown={(e) => {\n onClick?.();\n e.preventDefault();\n }}\n >\n <WrappedIcon style={{ verticalAlign: \"middle\" }} {...icon} />\n {tooltip && <div className=\"menuIconTooltip\">{tooltip}</div>}\n </div>\n );\n};\n\nexport interface MenuButtonProps {\n icon: GeneralIconProps;\n onClick?: () => void;\n tooltip?: string;\n}\n\nexport interface MarkdownEditorProps extends FormItemProps {\n value?: string;\n bucketName?: string;\n containerStyle?: React.CSSProperties;\n readonly?: boolean;\n onUploadImage?: (value: ImageInfo) => void;\n onMarkdownValueChange?: (value: string) => void;\n}\n\nexport interface ImageInfo {\n name: string;\n src: string;\n}\n\nconst { defineElement, property, event } = createDecorators();\n\n@defineElement(\"eo-markdown-editor\", {\n styleTexts: [styleText],\n alias: [\"markdown.markdown-editor\"],\n})\n\n/**\n * markdown编辑器\n * @docKind brick\n * @author kehua\n * @noInheritDoc\n * @category form-input-advanced\n */\nclass MarkdownEditor extends FormItemElementBase {\n /**\n * 字段名称\n */\n @property() accessor name: string | undefined;\n\n /**\n * 标签文字\n */\n @property() accessor label: string | undefined;\n\n /**\n * 是否必填\n */\n @property({ type: Boolean })\n accessor required: boolean | undefined;\n\n /**\n * 初始值\n * @group basic\n */\n @property() accessor value: string | undefined;\n\n /**\n * 对象存储桶名字,请在业务编排的时候与后台同学商量创建,一般一个业务需求对应一个存储桶名称。如不传则默认以base64格式转换图片\n * @group advanced\n */\n @property() accessor bucketName: string | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 外层容器样式\n */\n @property({\n attribute: false,\n })\n accessor containerStyle: React.CSSProperties | undefined;\n\n /**\n * 上传图片时触发的事件\n * @detail\n */\n @event({ type: \"image.upload\" })\n accessor #uploadImage!: EventEmitter<ImageInfo>;\n\n private handleUploadImage = (value: ImageInfo): void => {\n this.#uploadImage.emit(value);\n };\n\n /**\n * 编辑markdown触发的变化事件\n * @detail\n */\n @event({ type: \"markdown.value.change\" })\n accessor #markdownValueChange!: EventEmitter<string>;\n\n handleMarkdownValueChange = (value: string): void => {\n this.getFormElement()?.formStore.onChange(this.name!, value);\n this.value = value;\n this.#markdownValueChange.emit(value);\n };\n\n render() {\n return (\n <MilkdownProvider>\n <ProsemirrorAdapterProvider>\n <MarkdownEditorComponent\n formElement={this.getFormElement()}\n name={this.name}\n label={this.label}\n required={this.required}\n curElement={this}\n bucketName={this.bucketName}\n value={this.value}\n readonly={this.readonly}\n containerStyle={this.containerStyle}\n onUploadImage={this.handleUploadImage}\n onMarkdownValueChange={this.handleMarkdownValueChange}\n />\n </ProsemirrorAdapterProvider>\n </MilkdownProvider>\n );\n }\n}\n\nexport { MarkdownEditor };\n\nexport function MarkdownEditorComponent(props: MarkdownEditorProps) {\n const {\n bucketName,\n containerStyle,\n value,\n formElement,\n readonly,\n onUploadImage,\n onMarkdownValueChange,\n } = props;\n\n const [isFocus, setIsFocus] = useState(false);\n\n const transformResponseToUrl = (objectName: string): string => {\n return `/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/${props.bucketName}/object/${objectName}`;\n };\n\n const uploader: Uploader = async (files: FileList, schema: any) => {\n const images: File[] = [];\n let nodes: Node[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n\n if (!file) {\n continue;\n }\n\n // Only handle image\n if (!file.type.includes(\"image\")) {\n continue;\n }\n\n images.push(file);\n }\n\n // upload file\n try {\n nodes = await Promise.all(\n images.map(async (image) => {\n const response: any = await ObjectStoreApi_putObject(\n bucketName as string,\n {\n file: image,\n width: 0,\n height: 0,\n }\n );\n const src = transformResponseToUrl(response?.objectName as string);\n const alt = image.name;\n onUploadImage && onUploadImage({ name: alt, src });\n return schema.nodes.image.createAndFill({\n src,\n alt,\n }) as Node;\n })\n );\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"upload failed:\", err);\n }\n\n return nodes;\n };\n\n const pluginViewFactory = usePluginViewFactory();\n const widgetViewFactory = useWidgetViewFactory();\n const nodeViewFactory = useNodeViewFactory();\n\n const gfmPlugins: MilkdownPlugin[] = useMemo(() => {\n return readonly\n ? []\n : [\n gfm,\n tableTooltip,\n tableTooltipCtx,\n (ctx: Ctx) => async () => {\n ctx.set(tableTooltip.key, {\n view: pluginViewFactory({\n component: TableTooltip,\n }),\n });\n },\n tableSelectorPlugin(widgetViewFactory),\n ].flat();\n }, [readonly, pluginViewFactory, widgetViewFactory]);\n\n const { get } = useEditor((root: any) => {\n return Editor.make()\n .config((ctx: any) => {\n // 配置root\n ctx.set(rootCtx, root);\n ctx.update(editorViewOptionsCtx, (prev: any) => ({\n ...prev,\n editable: () => !readonly,\n }));\n // 配置默认值\n value && ctx.set(defaultValueCtx, value);\n // 配置事件监听\n ctx\n .get(listenerCtx)\n .markdownUpdated(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (ctx: any, markdown: string, prevMarkdown: string) => {\n onMarkdownValueChange && onMarkdownValueChange(markdown);\n }\n )\n .focus(() => {\n setIsFocus(true);\n })\n .blur(() => {\n setIsFocus(false);\n });\n // 配置文件上传,不传bucketName则默认把图片转为base64格式\n bucketName &&\n ctx.update(uploadConfig.key, (prev: any) => ({\n ...prev,\n uploader,\n }));\n // 支持code代码高亮\n ctx.update(prismConfig.key, (prev: any) => ({\n ...prev,\n configureRefractor: () => refractor,\n }));\n })\n .config(nord)\n .use(listener)\n .use(commonmark)\n .use(history)\n .use(gfm)\n .use(indent)\n .use(upload)\n .use(gfmPlugins)\n .use(prism)\n .use(\n readonly\n ? []\n : $view(codeBlockSchema.node, () =>\n nodeViewFactory({ component: CodeBlock })\n )\n );\n }, []);\n\n useEffect(() => {\n // 当编辑器没有处在focus状态,即初始化或者通过其他构件重置值时,才允许调用replaceAll修改其值\n // 防止与用户输入动作起冲突\n if (formElement && value !== undefined && !isFocus) {\n get()?.action(replaceAll(value));\n }\n }, [get(), value]);\n\n function call<T>(command: CmdKey<T>, payload?: T) {\n return get()?.action(callCommand(command, payload));\n }\n\n const MenuBtnData: MenuButtonProps[] = [\n {\n icon: { lib: \"antd\", icon: \"undo\" },\n onClick: () => call(undoCommand.key),\n tooltip: \"撤销\",\n },\n {\n icon: { lib: \"antd\", icon: \"redo\" },\n onClick: () => call(redoCommand.key),\n tooltip: \"重做\",\n },\n {\n icon: { lib: \"antd\", icon: \"bold\" },\n onClick: () => call(toggleStrongCommand.key),\n tooltip: \"粗体\",\n },\n {\n icon: { lib: \"antd\", icon: \"italic\" },\n onClick: () => call(toggleEmphasisCommand.key),\n tooltip: \"斜体\",\n },\n {\n icon: { lib: \"antd\", icon: \"strikethrough\" },\n onClick: () => call(toggleStrikethroughCommand.key),\n tooltip: \"删除线\",\n },\n {\n icon: { lib: \"antd\", icon: \"table\" },\n onClick: () => call(insertTableCommand.key),\n tooltip: \"表格\",\n },\n {\n icon: { lib: \"antd\", icon: \"unordered-list\" },\n onClick: () => call(wrapInBulletListCommand.key),\n tooltip: \"无序列表\",\n },\n {\n icon: { lib: \"antd\", icon: \"ordered-list\" },\n onClick: () => call(wrapInOrderedListCommand.key),\n tooltip: \"有序列表\",\n },\n {\n icon: { lib: \"fa\", icon: \"quote-right\" },\n onClick: () => call(wrapInBlockquoteCommand.key),\n tooltip: \"块引用\",\n },\n ];\n\n return (\n <WrappedFormItem exportparts=\"message\" {...props}>\n <div\n className={classNames(\"markdown-container\", {\n readonly,\n })}\n style={containerStyle}\n >\n {!readonly && (\n <div className=\"menu-container-outter\">\n <div className=\"menu-container-inner prose\">\n {MenuBtnData.map((item) => (\n <MenuButton {...item} key={JSON.stringify(item.icon)} />\n ))}\n </div>\n </div>\n )}\n <div className=\"editor-container\">\n <Milkdown />\n </div>\n </div>\n </WrappedFormItem>\n );\n}\n"],"names":["_MarkdownEditor","WrappedFormItem","wrapBrick","WrappedIcon","MenuButton","_ref","icon","onClick","tooltip","React","className","onMouseDown","e","preventDefault","_extends","style","verticalAlign","defineElement","property","event","createDecorators","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_MarkdownEditor_brand","WeakSet","_I","MarkdownEditor","FormItemElementBase","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_name","_init_extra_name","_init_label","_init_extra_label","_init_required","_init_extra_required","_init_value","_init_extra_value","_init_bucketName","_init_extra_bucketName","_init_readonly","_init_extra_readonly","_init_containerStyle","_init_extra_containerStyle","_init_uploadImage","_defineProperty","_init_extra_uploadImage","value","_classPrivateGetter","this","_get_uploadImage","emit","_init_markdownValueChange","_init_extra_markdownValueChange","_this$getFormElement","getFormElement","formStore","onChange","name","_get_markdownValueChange","_classPrivateFieldGet","v","_classPrivateFieldSet","label","required","bucketName","readonly","containerStyle","render","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownEditorComponent","formElement","curElement","onUploadImage","handleUploadImage","onMarkdownValueChange","handleMarkdownValueChange","props","isFocus","setIsFocus","useState","uploader","_ref2","_asyncToGenerator","files","schema","images","nodes","i","length","file","item","type","includes","push","Promise","all","map","_ref3","image","objectName","response","ObjectStoreApi_putObject","width","height","src","concat","alt","createAndFill","_x3","apply","err","console","error","_x","_x2","pluginViewFactory","usePluginViewFactory","widgetViewFactory","useWidgetViewFactory","nodeViewFactory","useNodeViewFactory","gfmPlugins","useMemo","gfm","tableTooltip","tableTooltipCtx","ctx","set","key","view","component","TableTooltip","tableSelectorPlugin","flat","get","useEditor","root","Editor","make","config","rootCtx","update","editorViewOptionsCtx","prev","_objectSpread","editable","defaultValueCtx","listenerCtx","markdownUpdated","markdown","prevMarkdown","focus","blur","uploadConfig","prismConfig","configureRefractor","refractor","nord","use","listener","commonmark","history","indent","upload","prism","$view","codeBlockSchema","node","CodeBlock","call","command","payload","_get2","action","callCommand","useEffect","_get","undefined","replaceAll","MenuBtnData","lib","undoCommand","redoCommand","toggleStrongCommand","toggleEmphasisCommand","toggleStrikethroughCommand","insertTableCommand","wrapInBulletListCommand","wrapInOrderedListCommand","wrapInBlockquoteCommand","exportparts","classNames","JSON","stringify","Milkdown","_MarkdownEditor2","_set_uploadImage","_set_markdownValueChange","c","_initClass","_applyDecs","styleTexts","styleText","alias","Boolean","attribute","o","_","has","_checkInRHS"],"sourceRoot":""}