@next-bricks/markdown 1.13.2 → 1.13.4
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 +1 -1
- package/dist/chunks/1945.d498e798.js +2 -0
- package/dist/chunks/1945.d498e798.js.map +1 -0
- package/dist/chunks/6934.2253ad8b.js +2 -0
- package/dist/chunks/6934.2253ad8b.js.map +1 -0
- package/dist/chunks/{7768.25c15640.js → 7768.0fc422f7.js} +3 -3
- package/dist/chunks/{7768.25c15640.js.map → 7768.0fc422f7.js.map} +1 -1
- package/dist/chunks/8488.3ed7729b.js +3 -0
- package/dist/chunks/8488.3ed7729b.js.map +1 -0
- package/dist/chunks/eo-markdown-display.84640f41.js +2 -0
- package/dist/chunks/eo-markdown-display.84640f41.js.map +1 -0
- package/dist/chunks/eo-markdown-editor.59c2f466.js +2 -0
- package/dist/chunks/{eo-markdown-editor.a32213aa.js.map → eo-markdown-editor.59c2f466.js.map} +1 -1
- package/dist/chunks/{main.c451c922.js → main.125402d8.js} +2 -2
- package/dist/chunks/{main.c451c922.js.map → main.125402d8.js.map} +1 -1
- package/dist/{index.cb7e902d.js → index.c824a3e4.js} +2 -2
- package/dist/{index.cb7e902d.js.map → index.c824a3e4.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chunks/5522.bbd6f76c.js +0 -3
- package/dist/chunks/5522.bbd6f76c.js.map +0 -1
- package/dist/chunks/6069.14414932.js +0 -2
- package/dist/chunks/6069.14414932.js.map +0 -1
- package/dist/chunks/6934.6b647c62.js +0 -2
- package/dist/chunks/6934.6b647c62.js.map +0 -1
- package/dist/chunks/eo-markdown-display.9c8150da.js +0 -2
- package/dist/chunks/eo-markdown-display.9c8150da.js.map +0 -1
- package/dist/chunks/eo-markdown-editor.a32213aa.js +0 -2
- /package/dist/chunks/{7768.25c15640.js.LICENSE.txt → 7768.0fc422f7.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{5522.bbd6f76c.js.LICENSE.txt → 8488.3ed7729b.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_markdown=globalThis.webpackChunk_next_bricks_markdown||[]).push([[6934],{4724:(e,t,n)=>{n.d(t,{A:()=>c});var o=n(6758),a=n.n(o),r=n(935),i=n.n(r),l=n(6131),s=i()(a());s.i(l.A),s.push([e.id,":host{display:block}:host([hidden]){display:none}pre{white-space:pre-wrap;background-color:var(--palette-gray-3);border-radius:6px;padding:1em}:not(pre) > code{color:var(--eo-markdown-display-code-color);background:var(--eo-markdown-display-code-background);margin:0 2px;padding:1px 6px;white-space:nowrap;border-radius:3px}blockquote{border-left:6px solid var(--eo-markdown-display-blockquote-border-color);padding:0 1em}:not(blockquote) > blockquote{margin-left:0;margin-right:0}",""]);const c=s.toString()},6131:(e,t,n)=>{n.d(t,{A:()=>c});var o=n(6758),a=n.n(o),r=n(935),i=n.n(r),l=n(7745),s=i()(a());s.i(l.A),s.push([e.id,"",""]);const c=s.toString()},6934:(e,t,n)=>{var o,a=n(4586),r=n(4635),i=n(918),l=n(6902),s=n(5536),c=n(6121),d=n(829),u=n(2740),m=n(9575),p=n(8769),h=n.n(p),k=n(7921),g=n(1280),b=(n(5168),n(998)),y=n(1408),A=n(2113),w=n(2466),f=n(1854),v=n(9760),E=n(135),N=n(6486),C=n(6512),x=n(8653),S=n(537),M=n(5435),$=n(9796),j=n(3971),q=n(798),D=n(1151),F=n(4557),T=n(426),W=n(235),I=n(3373),L=n.n(I);let _,B,O,U,V,z,P,R,G,X,Y,J,K,H,Q,Z,ee,te,ne,oe,ae,re,ie;const le=(0,g.wrapBrick)("eo-form-item"),se=(0,g.wrapBrick)("eo-icon"),ce=e=>{let{icon:t,onClick:n,tooltip:o}=e;return h().createElement("div",{className:"menu-btn-box",onMouseDown:e=>{null==n||n(),e.preventDefault()}},h().createElement(se,(0,m.A)({style:{verticalAlign:"middle"}},t)),o&&h().createElement("div",{className:"menuIconTooltip"},o))},{defineElement:de,property:ue,event:me}=(0,k.createDecorators)();let pe;var he=new WeakMap,ke=new WeakMap,ge=new WeakMap,be=new WeakMap,ye=new WeakMap,Ae=new WeakMap,we=new WeakMap,fe=new WeakMap,ve=new WeakSet,Ee=new WeakMap;class Ne extends T.N{constructor(){super(...arguments),(0,r.A)(this,ve),(0,i.A)(this,he,B(this)),(0,i.A)(this,ke,(O(this),U(this))),(0,i.A)(this,ge,(V(this),z(this))),(0,i.A)(this,be,(P(this),R(this))),(0,i.A)(this,ye,(G(this),X(this))),(0,i.A)(this,Ae,(Y(this),J(this))),(0,i.A)(this,we,(K(this),H(this))),(0,i.A)(this,fe,(Q(this),Z(this))),(0,a.A)(this,"handleUploadImage",(ne(this),e=>{(0,s.A)(ve,this,ee).emit(e)})),(0,i.A)(this,Ee,oe(this)),(0,a.A)(this,"handleMarkdownValueChange",(ie(this),e=>{var t;null===(t=this.getFormElement())||void 0===t||t.formStore.onChange(this.name,e),this.value=e,(0,s.A)(ve,this,ae).emit(e)}))}get name(){return(0,d.A)(he,this)}set name(e){(0,c.A)(he,this,e)}get label(){return(0,d.A)(ke,this)}set label(e){(0,c.A)(ke,this,e)}get required(){return(0,d.A)(ge,this)}set required(e){(0,c.A)(ge,this,e)}get value(){return(0,d.A)(be,this)}set value(e){(0,c.A)(be,this,e)}get bucketName(){return(0,d.A)(ye,this)}set bucketName(e){(0,c.A)(ye,this,e)}get readonly(){return(0,d.A)(Ae,this)}set readonly(e){(0,c.A)(Ae,this,e)}get containerStyle(){return(0,d.A)(we,this)}set containerStyle(e){(0,c.A)(we,this,e)}render(){return h().createElement(w.pb,null,h().createElement(j.vo,null,h().createElement(Ce,{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 Ce(e){const{bucketName:t,containerStyle:n,value:o,formElement:a,readonly:r,onUploadImage:i,onMarkdownValueChange:l}=e,[s,c]=(0,p.useState)(!1),d=async(n,o)=>{const a=[];let r=[];for(let e=0;e<n.length;e++){const t=n.item(e);t&&t.type.includes("image")&&a.push(t)}try{r=await Promise.all(a.map((async n=>{const a=await(0,y.i)(t,{file:n,width:0,height:0}),r=(l=null==a?void 0:a.objectName,`/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/${e.bucketName}/object/${l}`);var l;const s=n.name;return i&&i({name:s,src:r}),o.nodes.image.createAndFill({src:r,alt:s})})))}catch(e){console.error("upload failed:",e)}return r},u=(0,j.Uv)(),k=(0,j.rJ)(),g=(0,j.$X)(),b=(0,p.useMemo)((()=>r?[]:[S.Te,D.EI,D.nk,e=>async()=>{e.set(D.EI.key,{view:u({component:D.ST})})},(0,D.jp)(k)].flat()),[r,u,k]),{get:T}=(0,w.hG)((e=>A.KE.make().config((n=>{n.set(A.k,e),n.update(A.QM,(e=>({...e,editable:()=>!r}))),o&&n.set(A.CI,o),n.get(x.Ob).markdownUpdated(((e,t,n)=>{l&&l(t)})).focus((()=>{c(!0)})).blur((()=>{c(!1)})),t&&n.update(N.wu.key,(e=>({...e,uploader:d}))),n.update($.mS.key,(e=>({...e,configureRefractor:()=>q.L})))})).config(v.E).use(x.F_).use(f.PD).use(E.b6).use(S.Te).use(M.pZ).use(N.Se).use(b).use($.Wj).use(r?[]:(0,C.m5)(f.Ay.node,(()=>g({component:F.N}))))),[]);function I(e,t){var n;return null===(n=T())||void 0===n?void 0:n.action((0,C.KD)(e,t))}(0,p.useEffect)((()=>{var e;a&&void 0!==o&&!s&&(null===(e=T())||void 0===e||e.action((0,C.yh)(o)))}),[T(),o]);const _=[{icon:{lib:"antd",icon:"undo"},onClick:()=>I(E.Eb.key),tooltip:"撤销"},{icon:{lib:"antd",icon:"redo"},onClick:()=>I(E.eD.key),tooltip:"重做"},{icon:{lib:"antd",icon:"bold"},onClick:()=>I(f.vY.key),tooltip:"粗体"},{icon:{lib:"antd",icon:"italic"},onClick:()=>I(f.e0.key),tooltip:"斜体"},{icon:{lib:"antd",icon:"strikethrough"},onClick:()=>I(S.$l.key),tooltip:"删除线"},{icon:{lib:"antd",icon:"table"},onClick:()=>I(S.f$.key),tooltip:"表格"},{icon:{lib:"antd",icon:"unordered-list"},onClick:()=>I(f.Xk.key),tooltip:"无序列表"},{icon:{lib:"antd",icon:"ordered-list"},onClick:()=>I(f.Ej.key),tooltip:"有序列表"},{icon:{lib:"fa",icon:"quote-right"},onClick:()=>I(f.oO.key),tooltip:"块引用"}];return h().createElement(le,(0,m.A)({exportparts:"message"},(0,W.v)(e)),h().createElement("div",{className:L()("markdown-container",{readonly:r}),style:n},!r&&h().createElement("div",{className:"menu-container-outter"},h().createElement("div",{className:"menu-container-inner prose"},_.map((e=>h().createElement(ce,(0,m.A)({},e,{key:JSON.stringify(e.icon)})))))),h().createElement("div",{className:"editor-container"},h().createElement(w.y5,null))))}o=Ne,({e:[B,O,U,V,z,P,R,G,X,Y,J,K,H,Q,Z,ee,te,ne,oe,ae,re,ie],c:[pe,_]}=(0,u.A)(o,[de("eo-markdown-editor",{styleTexts:[b.A],alias:["markdown.markdown-editor"]})],[[ue(),1,"name"],[ue(),1,"label"],[ue({type:Boolean}),1,"required"],[ue(),1,"value"],[ue(),1,"bucketName"],[ue({type:Boolean}),1,"readonly"],[ue({attribute:!1}),1,"containerStyle"],[me({type:"image.upload"}),1,"uploadImage",e=>(0,d.A)(fe,e),(e,t)=>(0,c.A)(fe,e,t)],[me({type:"markdown.value.change"}),1,"markdownValueChange",e=>(0,d.A)(Ee,e),(e,t)=>(0,c.A)(Ee,e,t)]],0,(e=>ve.has((0,l.A)(e))),T.N)),_();var xe=n(1085),Se=n(45),Me=n(5301),$e=n(2967),je=n(3730),qe=n(5487),De=n(4269),Fe=n(4650),Te=n(3869),We=n(9515);function Ie(e){const t=e.properties.className||[];for(const e of t)if("language-"===e.slice(0,9))return e.slice(9).toLowerCase();return null}function Le(){function e(e,t,n){if(!n||"pre"!==n.tagName||"code"!==e.tagName)return;const o=Ie(e);if(null===o||"mermaid"===o)return;let a;try{n.properties.className=(n.properties.className||[]).concat("language-"+o),a=q.L.highlight((0,Fe.d)(e),o)}catch{return}e.children=a.children}return t=>{(0,De.YR)(t,"element",e)}}q.L.register(Te.A),q.L.register(We.A);var _e=n(7367),Be=n(3349);let Oe=0;_e.A.initialize({startOnLoad:!1,theme:"base",themeVariables:{fontSize:"14px",lineColor:"#979797",primaryColor:"#DCD2F3",primaryBorderColor:"#0000001A"}});const Ue=new DOMParser,Ve=new XMLSerializer;function ze(){return async e=>{const t=[];(0,De.YR)(e,"element",(function(e,n,o){o&&"pre"===o.tagName&&"code"===e.tagName&&"mermaid"===Ie(e)&&t.push((async()=>{const t="mermaid-"+Oe++;let a;try{a=(await _e.A.render(t,(0,Fe.d)(e))).svg}catch(e){var r;return console.error("Error rendering mermaid diagram:",e),void(null===(r=document.getElementById(t))||void 0===r||r.remove())}const i=Ue.parseFromString(a,"text/html"),l=i.querySelector("svg"),s=i.createElementNS("http://www.w3.org/2000/svg","defs");s.innerHTML=`<linearGradient id="linear-gradient-${t}" x1="0%" y1="0%" x2="0%" y2="100%">\n <stop offset="0%" stop-color="#F0EBFA" />\n <stop offset="75%" stop-color="#DED4F4" />\n <stop offset="100%" stop-color="#C5C7FA" />\n</linearGradient>`,l.prepend(s);const c=i.createElementNS("http://www.w3.org/2000/svg","style");c.textContent=`\n#${t} .node rect,\n#${t} .node circle,\n#${t} .node ellipse,\n#${t} .node polygon,\n#${t} .node path {\n fill: url(#linear-gradient-${t});\n}\n#${t} .node rect {\n rx: 4;\n ry: 4;\n}\n#${t} .labelBkg {\n background-color: #f5f8ff;\n}\n#${t} .edgeLabel,\n#${t} .edgeLabel p {\n background-color: transparent;\n}\n#${t} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`,l.appendChild(c);const d=Ve.serializeToString(l),u=(0,Be.f)(d,{fragment:!0}).children;o.children.splice(n,1,...u),o.properties.className=(o.properties.className||[]).concat("mermaid")})())})),await Promise.all(t)}}const Pe={Fragment:xe.Fragment,jsx:xe.jsx,jsxs:xe.jsxs};function Re(e){let{content:t,components:n}=e;const[o,a]=(0,p.useState)(null);return(0,p.useEffect)((()=>{let e=!1;return(0,Se.l)().use(Me.A).use($e.A).use(je.A).use([Le]).use(ze).use(qe.A,{...Pe,passNode:!0,components:n}).process(t).then((t=>{e||a(t.result)})).catch((t=>{e||(console.error("Convert markdown failed:",t),a(null))})),()=>{e=!0}}),[n,t]),o}var Ge,Xe=n(4724),Ye=n(2591),Je=n.n(Ye),Ke=n(1740),He=n.n(Ke),Qe=n(8128),Ze=n.n(Qe),et=n(855),tt=n.n(et),nt=n(3051),ot=n.n(nt),at=n(3656),rt=n.n(at),it=n(7148),lt={};let st,ct,dt;lt.styleTagTransform=rt(),lt.setAttributes=tt(),lt.insert=Ze().bind(null,"head"),lt.domAPI=He(),lt.insertStyleElement=ot(),Je()(it.A,lt),it.A&&it.A.locals&&it.A.locals;const{defineElement:ut,property:mt}=(0,k.createDecorators)();let pt;var ht=new WeakMap;class kt extends g.ReactNextElement{constructor(){super(...arguments),(0,i.A)(this,ht,ct(this)),dt(this)}get content(){return(0,d.A)(ht,this)}set content(e){(0,c.A)(ht,this,e)}render(){return h().createElement(Re,{content:this.content})}}Ge=kt,({e:[ct,dt],c:[pt,st]}=(0,u.A)(Ge,[ut("eo-markdown-display",{styleTexts:[Xe.A]})],[[mt(),1,"content"]],0,void 0,g.ReactNextElement)),st()},7148:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(6758),a=n.n(o),r=n(935),i=n.n(r)()(a());i.push([e.id,':root{--eo-markdown-display-code-color:#b30056;--eo-markdown-display-code-background:#ffe6ec;--eo-markdown-display-blockquote-border-color:#bcc0c5}html[data-theme="dark"],\nhtml[data-theme="dark-v2"]{--eo-markdown-display-code-color:#f3679a;--eo-markdown-display-code-background:var(--color-fill-bg-base-1)}',""]);const l=i}}]);
|
|
2
|
+
//# sourceMappingURL=6934.2253ad8b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/6934.2253ad8b.js","mappings":"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","sources":["webpack:///./src/markdown-display/styles.shadow.css","webpack:///../../shared/markdown/dist/esm/prism-tomorrow.css","webpack:///./src/markdown-editor/index.tsx","webpack:///../../src/utils.ts","webpack:///../../src/rehypePrism.ts","webpack:///../../src/rehypeMermaid.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/markdown-display/host-context.css?6555","webpack:///./src/markdown-display/index.tsx","webpack:///./src/markdown-display/host-context.css"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../../../../shared/markdown/dist/esm/prism-tomorrow.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}pre{white-space:pre-wrap;background-color:var(--palette-gray-3);border-radius:6px;padding:1em}:not(pre) > code{color:var(--eo-markdown-display-code-color);background:var(--eo-markdown-display-code-background);margin:0 2px;padding:1px 6px;white-space:nowrap;border-radius:3px}blockquote{border-left:6px solid var(--eo-markdown-display-blockquote-border-color);padding:0 1em}:not(blockquote) > blockquote{margin-left:0;margin-right:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../../../../node_modules/prismjs/themes/prism-tomorrow.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","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, pickFormItemProps } 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\" {...pickFormItemProps(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","import type { RefractorElement } from \"refractor\";\n\nexport function getCodeLanguage(node: RefractorElement) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport { refractor, type RefractorElement } from \"refractor\";\nimport jsx from \"refractor/lang/jsx.js\";\nimport mermaid from \"refractor/lang/mermaid.js\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nrefractor.register(jsx);\nrefractor.register(mermaid);\n\n// Reference https://github.com/mapbox/rehype-prism\nexport function rehypePrism() {\n function visitor(\n node: RefractorElement,\n _index: number | undefined,\n parent: RefractorElement | undefined\n ) {\n if (!parent || parent.tagName !== \"pre\" || node.tagName !== \"code\") {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang === null || lang === \"mermaid\") {\n return;\n }\n\n let result;\n try {\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"language-\" + lang);\n result = refractor.highlight(toString(node), lang);\n } catch {\n return;\n }\n\n node.children = result.children;\n }\n return (tree: RefractorElement) => {\n visit(tree, \"element\", visitor);\n };\n}\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport type { RefractorElement } from \"refractor\";\nimport mermaid from \"mermaid\";\nimport { fromHtmlIsomorphic } from \"hast-util-from-html-isomorphic\";\nimport { getCodeLanguage } from \"./utils.js\";\n\nlet count = 0;\n\nmermaid.initialize({\n startOnLoad: false,\n theme: \"base\",\n themeVariables: {\n fontSize: \"14px\",\n lineColor: \"#979797\",\n primaryColor: \"#DCD2F3\",\n primaryBorderColor: \"#0000001A\",\n },\n});\n\nconst parser = new DOMParser();\nconst serializer = new XMLSerializer();\n\n// Reference https://github.com/remcohaszing/rehype-mermaid\nexport function rehypeMermaid() {\n return async (tree: RefractorElement) => {\n const promises: Promise<void>[] = [];\n\n function visitor(\n node: RefractorElement,\n index: number | undefined,\n parent: RefractorElement | undefined\n ) {\n if (!parent || parent.tagName !== \"pre\" || node.tagName !== \"code\") {\n return;\n }\n\n const lang = getCodeLanguage(node);\n\n if (lang !== \"mermaid\") {\n return;\n }\n\n promises.push(\n (async () => {\n const id = `mermaid-${count++}`;\n let svg: string;\n try {\n const result = await mermaid.render(id, toString(node));\n svg = result.svg;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error rendering mermaid diagram:\", error);\n document.getElementById(id)?.remove();\n return;\n }\n const root = parser.parseFromString(svg, \"text/html\");\n const svgElement = root.querySelector(\"svg\") as SVGSVGElement;\n\n const defs = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"defs\"\n );\n defs.innerHTML = `<linearGradient id=\"linear-gradient-${id}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stop-color=\"#F0EBFA\" />\n <stop offset=\"75%\" stop-color=\"#DED4F4\" />\n <stop offset=\"100%\" stop-color=\"#C5C7FA\" />\n</linearGradient>`;\n svgElement.prepend(defs);\n\n const style = root.createElementNS(\n \"http://www.w3.org/2000/svg\",\n \"style\"\n );\n style.textContent = `\n#${id} .node rect,\n#${id} .node circle,\n#${id} .node ellipse,\n#${id} .node polygon,\n#${id} .node path {\n fill: url(#linear-gradient-${id});\n}\n#${id} .node rect {\n rx: 4;\n ry: 4;\n}\n#${id} .labelBkg {\n background-color: #f5f8ff;\n}\n#${id} .edgeLabel,\n#${id} .edgeLabel p {\n background-color: transparent;\n}\n#${id} .edgeLabel {\n color: #8c8c8c;\n font-size: 12px;\n}\n`;\n svgElement.appendChild(style);\n\n const modifiedSvg = serializer.serializeToString(svgElement);\n\n const replacements = fromHtmlIsomorphic(modifiedSvg, {\n fragment: true,\n }).children as RefractorElement[];\n parent.children.splice(index!, 1, ...replacements);\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"mermaid\");\n })()\n );\n }\n\n visit(tree, \"element\", visitor);\n\n await Promise.all(promises);\n };\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport type { Components } from \"hast-util-to-jsx-runtime\";\nimport { rehypePrism } from \"./rehypePrism.js\";\nimport { rehypeMermaid } from \"./rehypeMermaid.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n components?: Partial<Components>;\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({\n content,\n components,\n}: MarkdownComponentProps) {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n\n useEffect(() => {\n let ignore = false;\n unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkToRehype)\n .use([rehypePrism])\n .use(rehypeMermaid)\n .use(rehypeReact, {\n ...production,\n passNode: true,\n components,\n } as RehypeReactOptions)\n .process(content)\n .then((vFile) => {\n if (!ignore) {\n setReactContent(vFile.result);\n }\n })\n .catch((error) => {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n });\n return () => {\n ignore = true;\n };\n }, [components, content]);\n\n return reactContent;\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { MarkdownComponent } from \"@next-shared/markdown\";\nimport styleText from \"./styles.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface MarkdownDisplayProps {\n content?: string;\n}\n\n/**\n * 用于展示 markdown 内容的构件。\n */\nexport\n@defineElement(\"eo-markdown-display\", {\n styleTexts: [styleText],\n})\nclass MarkdownDisplay extends ReactNextElement implements MarkdownDisplayProps {\n @property()\n accessor content: string | undefined;\n\n render() {\n return <MarkdownComponent content={this.content} />;\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-markdown-display-code-color:#b30056;--eo-markdown-display-code-background:#ffe6ec;--eo-markdown-display-blockquote-border-color:#bcc0c5}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-markdown-display-code-color:#f3679a;--eo-markdown-display-code-background:var(--color-fill-bg-base-1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["___CSS_LOADER_EXPORT___","i","push","module","id","toString","WrappedFormItem","wrapBrick","WrappedIcon","MenuButton","_ref","icon","onClick","tooltip","React","className","onMouseDown","e","preventDefault","_extends","style","verticalAlign","defineElement","property","event","createDecorators","_MarkdownEditor","_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","async","files","schema","images","nodes","length","file","item","type","includes","Promise","all","map","response","ObjectStoreApi_putObject","image","width","height","src","objectName","alt","createAndFill","err","console","error","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","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","pickFormItemProps","classNames","JSON","stringify","Milkdown","_MarkdownEditor2","_set_uploadImage","_set_markdownValueChange","c","_initClass","_applyDecs","styleTexts","styleText","alias","Boolean","attribute","o","_","has","_checkInRHS","getCodeLanguage","properties","classListItem","slice","toLowerCase","rehypePrism","visitor","_index","parent","tagName","lang","result","concat","highlight","children","tree","visit","register","jsx","mermaid","count","initialize","startOnLoad","theme","themeVariables","fontSize","lineColor","primaryColor","primaryBorderColor","parser","DOMParser","serializer","XMLSerializer","rehypeMermaid","promises","index","svg","_document$getElementB","document","getElementById","remove","parseFromString","svgElement","querySelector","defs","createElementNS","innerHTML","prepend","textContent","appendChild","modifiedSvg","serializeToString","replacements","fromHtmlIsomorphic","fragment","splice","production","Fragment","jsxs","MarkdownComponent","content","components","reactContent","setReactContent","ignore","unified","remarkParse","remarkGfm","remarkToRehype","rehypeReact","passNode","process","then","vFile","catch","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_MarkdownDisplay","MarkdownDisplay","ReactNextElement","_init_content","_init_extra_content","_MarkdownDisplay2"],"sourceRoot":""}
|