@next-bricks/markdown 1.9.0 → 1.10.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 +1 -1
- package/dist/chunks/632.3845de46.js +2 -0
- package/dist/chunks/632.3845de46.js.map +1 -0
- package/dist/chunks/{863.c1a73fff.js → 863.843ebdaf.js} +2 -2
- package/dist/chunks/{863.c1a73fff.js.map → 863.843ebdaf.js.map} +1 -1
- package/dist/chunks/eo-markdown-editor.877373e7.js +2 -0
- package/dist/chunks/eo-markdown-editor.877373e7.js.map +1 -0
- package/dist/chunks/{main.3bd25767.js → main.2d0df0f3.js} +2 -2
- package/dist/chunks/{main.3bd25767.js.map → main.2d0df0f3.js.map} +1 -1
- package/dist/examples.json +1 -1
- package/dist/{index.7dff410b.js → index.92cf1d9a.js} +2 -2
- package/dist/{index.7dff410b.js.map → index.92cf1d9a.js.map} +1 -1
- package/dist-types/bootstrap.d.ts +1 -0
- package/dist-types/index.d.ts +0 -0
- package/dist-types/markdown-editor/components/CodeBlock.d.ts +2 -0
- package/dist-types/markdown-editor/components/TableWidget.d.ts +7 -0
- package/dist-types/markdown-editor/index.d.ts +60 -0
- package/docs/eo-markdown-editor.md +0 -6
- package/package.json +7 -2
- package/dist/chunks/632.a9756698.js +0 -2
- package/dist/chunks/632.a9756698.js.map +0 -1
- package/dist/chunks/eo-markdown-editor.8d718abf.js +0 -2
- package/dist/chunks/eo-markdown-editor.8d718abf.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-bricks/markdown",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-bricks/tree/master/bricks/markdown",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"start": "cross-env NODE_ENV=development build-next-bricks --watch",
|
|
27
27
|
"build": "npm run build:main",
|
|
28
28
|
"build:main": "cross-env NODE_ENV=production build-next-bricks",
|
|
29
|
+
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist-types --project tsconfig.json",
|
|
29
30
|
"build:manifest": "cross-env NODE_ENV=production build-next-bricks --manifest-only",
|
|
30
31
|
"prepublishOnly": "cp package.json package.json.bak && npm pkg delete dependencies",
|
|
31
32
|
"postpublish": "mv package.json.bak package.json"
|
|
@@ -34,5 +35,9 @@
|
|
|
34
35
|
"@next-core/build-next-bricks": "^1.20.6",
|
|
35
36
|
"@next-core/test-next": "^1.0.16"
|
|
36
37
|
},
|
|
37
|
-
"
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@next-bricks/form": "*",
|
|
40
|
+
"@next-bricks/icons": "*"
|
|
41
|
+
},
|
|
42
|
+
"gitHead": "662e58893e04342d132387e15ac9b7a00b77cec5"
|
|
38
43
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_markdown=self.webpackChunk_next_bricks_markdown||[]).push([[632],{3632:(e,t,n)=>{n.r(t);var i,r,a,o,l,s,c,u,d,h,m,p,f,k,v,y,b,g,w,A,E,C,N,S,M=n(9740),j=n(6330),I=n(4586),W=n(4635),T=n(918),_=n(1369),D=n(8449),O=n(6902),q=n(9575),x=n(8769),U=n.n(x),P=n(169),V=n(5617),B=(n(330),n(998)),F=n(3717),z=n(7164),$=n(2466),G=n(9409),J=n(9760),K=n(135),X=n(6486),L=n(6512),Q=n(8653),R=n(1123),Y=n(5435),Z=n(9796),H=n(3971),ee=n(6385),te=n(1151),ne=n(4557),ie=n(426),re=n(3373),ae=n.n(re);function oe(e,t,n){return n(ce(e,t))}function le(e,t,n){return e.set(ce(e,t),n),n}function se(e,t){return e.get(ce(e,t))}function ce(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var ue,de=(0,V.wrapBrick)("eo-form-item"),he=(0,V.wrapBrick)("eo-icon"),me=e=>{var{icon:t,onClick:n,tooltip:i}=e;return U().createElement("div",{className:"menu-btn-box",onMouseDown:e=>{null==n||n(),e.preventDefault()}},U().createElement(he,(0,q.A)({style:{verticalAlign:"middle"}},t)),i&&U().createElement("div",{className:"menuIconTooltip"},i))},{defineElement:pe,property:fe,event:ke}=(0,P.createDecorators)(),ve=new WeakMap,ye=new WeakMap,be=new WeakMap,ge=new WeakMap,we=new WeakMap,Ae=new WeakMap,Ee=new WeakMap,Ce=new WeakMap,Ne=new WeakSet,Se=new WeakMap;class Me extends ie.N{constructor(){super(...arguments),(0,W.A)(this,Ne),(0,T.A)(this,ve,r(this)),(0,T.A)(this,ye,(a(this),o(this))),(0,T.A)(this,be,(l(this),s(this))),(0,T.A)(this,ge,(c(this),u(this))),(0,T.A)(this,we,(d(this),h(this))),(0,T.A)(this,Ae,(m(this),p(this))),(0,T.A)(this,Ee,(f(this),k(this))),(0,T.A)(this,Ce,(v(this),y(this))),(0,I.A)(this,"handleUploadImage",(w(this),e=>{oe(Ne,this,b).emit(e)})),(0,T.A)(this,Se,A(this)),(0,I.A)(this,"handleMarkdownValueChange",(N(this),e=>{var t;null===(t=this.getFormElement())||void 0===t||t.formStore.onChange(this.name,e),this.value=e,oe(Ne,this,E).emit(e)}))}get name(){return se(ve,this)}set name(e){le(ve,this,e)}get label(){return se(ye,this)}set label(e){le(ye,this,e)}get required(){return se(be,this)}set required(e){le(be,this,e)}get value(){return se(ge,this)}set value(e){le(ge,this,e)}get bucketName(){return se(we,this)}set bucketName(e){le(we,this,e)}get readonly(){return se(Ae,this)}set readonly(e){le(Ae,this,e)}get containerStyle(){return se(Ee,this)}set containerStyle(e){le(Ee,this,e)}render(){return U().createElement($.pb,null,U().createElement(H.vo,null,U().createElement(je,{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 je(e){var{bucketName:t,containerStyle:n,value:i,formElement:r,readonly:a,onUploadImage:o,onMarkdownValueChange:l}=e,[s,c]=(0,x.useState)(!1),u=function(){var n=(0,j.A)((function*(n,i){for(var r=[],a=[],l=0;l<n.length;l++){var s=n.item(l);s&&s.type.includes("image")&&r.push(s)}try{a=yield Promise.all(r.map(function(){var n=(0,j.A)((function*(n){var r,a=yield(0,F.i)(t,{file:n,width:1280,height:800}),l=(r=null==a?void 0:a.objectName,"/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/".concat(e.bucketName,"/object/").concat(r)),s=n.name;return o&&o({name:s,src:l}),i.nodes.image.createAndFill({src:l,alt:s})}));return function(e){return n.apply(this,arguments)}}()))}catch(e){}return a}));return function(e,t){return n.apply(this,arguments)}}(),d=(0,H.Uv)(),h=(0,H.rJ)(),m=(0,H.$X)(),p=(0,x.useMemo)((()=>[R.Te,te.EI,te.nk,e=>(0,j.A)((function*(){e.set(te.EI.key,{view:d({component:te.ST})})})),(0,te.jp)(h)].flat()),[d,h]),{get:f}=(0,$.hG)((e=>z.KE.make().config((n=>{n.set(z.k,e),n.update(z.QM,(e=>(0,M.A)((0,M.A)({},e),{},{editable:()=>!a}))),i&&n.set(z.CI,i),n.get(Q.Ob).markdownUpdated(((e,t,n)=>{l&&l(t)})).focus((e=>{c(!0)})).blur((e=>{c(!1)})),t&&n.update(X.wu.key,(e=>(0,M.A)((0,M.A)({},e),{},{uploader:u}))),n.update(Z.mS.key,(e=>(0,M.A)((0,M.A)({},e),{},{configureRefractor:()=>ee.L})))})).config(J.E).use(Q.F_).use(G.PD).use(K.b6).use(R.Te).use(Y.pZ).use(X.Se).use(p).use(Z.Wj).use((0,L.m5)(G.Ay.node,(()=>m({component:ne.N}))))),[]);function k(e,t){var n;return null===(n=f())||void 0===n?void 0:n.action((0,L.KD)(e,t))}(0,x.useEffect)((()=>{var e;r&&void 0!==i&&!s&&(null===(e=f())||void 0===e||e.action((0,L.yh)(i)))}),[f(),i]);var v=[{icon:{lib:"antd",icon:"undo"},onClick:()=>k(K.Eb.key),tooltip:"撤销"},{icon:{lib:"antd",icon:"redo"},onClick:()=>k(K.eD.key),tooltip:"重做"},{icon:{lib:"antd",icon:"bold"},onClick:()=>k(G.vY.key),tooltip:"粗体"},{icon:{lib:"antd",icon:"italic"},onClick:()=>k(G.e0.key),tooltip:"斜体"},{icon:{lib:"antd",icon:"strikethrough"},onClick:()=>k(R.$l.key),tooltip:"删除线"},{icon:{lib:"antd",icon:"table"},onClick:()=>k(R.f$.key),tooltip:"表格"},{icon:{lib:"antd",icon:"unordered-list"},onClick:()=>k(G.Xk.key),tooltip:"无序列表"},{icon:{lib:"antd",icon:"ordered-list"},onClick:()=>k(G.Ej.key),tooltip:"有序列表"},{icon:{lib:"fa",icon:"quote-right"},onClick:()=>k(G.oO.key),tooltip:"块引用"}];return U().createElement(de,e,U().createElement("div",{className:ae()("markdown-container",{readonly:a}),style:n},!a&&U().createElement("div",{className:"menu-container-outter"},U().createElement("div",{className:"menu-container-inner prose"},v.map((e=>U().createElement(me,(0,q.A)({},e,{key:JSON.stringify(e.icon)})))))),U().createElement("div",{className:"editor-container"},U().createElement($.y5,null))))}S=Me,({e:[r,a,o,l,s,c,u,d,h,m,p,f,k,v,y,b,g,w,A,E,C,N],c:[ue,i]}=function(e,t,n,i,r,a){var o,l,s,c,u,d,h,m=Symbol.metadata||Symbol.for("Symbol.metadata"),p=Object.defineProperty,f=Object.create,k=[f(null),f(null)],v=t.length;function y(t,n,i){return function(r,a){n&&(a=r,r=e);for(var o=0;o<t.length;o++)a=t[o].apply(r,i?[a]:[]);return i?a:r}}function b(e,t,n,i){if("function"!=typeof e&&(i||void 0!==e))throw new TypeError(t+" must "+(n||"be")+" a function"+(i?"":" or undefined"));return e}function g(e,t,n,i,r,a,s,c,u,d,h){function m(e){if(!h(e))throw new TypeError("Attempted to access private element on non-instance")}var f=[].concat(t[0]),v=t[3],g=!s,w=1===r,A=3===r,E=4===r,C=2===r;function N(t,n,i){return function(r,a){return n&&(a=r,r=e),i&&i(r),S[t].call(r,a)}}if(!g){var S={},M=[],j=A?"get":E||w?"set":"value";if(u?(d||w?S={get:(0,D.A)((function(){return v(this)}),i,"get"),set:function(e){t[4](this,e)}}:S[j]=v,d||(0,D.A)(S[j],i,C?"":j)):d||(S=Object.getOwnPropertyDescriptor(e,i)),!d&&!u){if((l=k[+c][i])&&7!=(l^r))throw new Error("Decorating two elements with the same name ("+S[j].name+") is not supported yet");k[+c][i]=r<3?1:r}}for(var I=e,W=f.length-1;W>=0;W-=n?2:1){var T=f[W],_=n?f[W-1]:void 0,O={},q={kind:["field","accessor","method","getter","setter","class"][r],name:i,metadata:o,addInitializer:function(e,t){if(e.v)throw new Error("attempted to call addInitializer after decoration was finished");b(t,"An initializer","be",!0),a.push(t)}.bind(null,O)};if(g)l=T.call(_,I,q),O.v=1,b(l,"class decorators","return")&&(I=l);else if(q.static=c,q.private=u,l=q.access={has:u?h.bind():function(e){return i in e}},E||(l.get=u?C?function(e){return m(e),S.value}:N("get",0,m):function(e){return e[i]}),C||A||(l.set=u?N("set",0,m):function(e,t){e[i]=t}),I=T.call(_,w?{get:S.get,set:S.set}:S[j],q),O.v=1,w){if("object"==typeof I&&I)(l=b(I.get,"accessor.get"))&&(S.get=l),(l=b(I.set,"accessor.set"))&&(S.set=l),(l=b(I.init,"accessor.init"))&&M.unshift(l);else if(void 0!==I)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else b(I,(d?"field":"method")+" decorators","return")&&(d?M.unshift(I):S[j]=I)}return r<2&&s.push(y(M,c,1),y(a,c,0)),d||g||(u?w?s.splice(-1,0,N("get",c),N("set",c)):s.push(C?S[j]:b.call.bind(S[j])):p(e,i,S)),I}function w(e){return p(e,m,{configurable:!0,enumerable:!0,value:o})}return void 0!==a&&(o=a[m]),o=f(null==o?null:o),u=[],d=function(e){e&&u.push(y(e))},(h=function(t,i){for(var a=0;a<n.length;a++){var o=n[a],l=o[1],d=7&l;if((8&l)==t&&!d==i){var h=o[2],m=!!o[3],p=16&l;g(t?e:e.prototype,o,p,m?"#"+h:(0,_.A)(h),d,d<2?[]:t?c=c||[]:s=s||[],u,!!t,m,i,t&&m?function(t){return(0,O.A)(t)===e}:r)}}})(8,0),h(0,0),h(8,1),h(0,1),d(s),d(c),l=u,v||w(e),{e:l,get c(){var n=[];return v&&[w(e=g(e,[t],0,e.name,5,n)),y(n,1)]}}}(S,[pe("eo-markdown-editor",{styleTexts:[B.A],alias:["markdown.markdown-editor"]})],[[fe(),1,"name"],[fe(),1,"label"],[fe({type:Boolean}),1,"required"],[fe(),1,"value"],[fe(),1,"bucketName"],[fe({type:Boolean}),1,"readonly"],[fe({attribute:!1}),1,"containerStyle"],[ke({type:"image.upload"}),1,"uploadImage",e=>se(Ce,e),(e,t)=>le(Ce,e,t)],[ke({type:"markdown.value.change"}),1,"markdownValueChange",e=>se(Se,e),(e,t)=>le(Se,e,t)]],0,(e=>Ne.has((0,O.A)(e))),ie.N)),i()}}]);
|
|
2
|
-
//# sourceMappingURL=632.a9756698.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/632.a9756698.js","mappings":"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","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\";\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.tsx\";\nimport { CodeBlock } from \"./components/CodeBlock.tsx\";\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: 1280,\n height: 800,\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 // do nothing\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 [\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 }, [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 (ctx: any, markdown: string, prevMarkdown: string) => {\n onMarkdownValueChange && onMarkdownValueChange(markdown);\n }\n )\n .focus((ctx: any) => {\n setIsFocus(true);\n })\n .blur((ctx: any) => {\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 $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 {...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","_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","classNames","JSON","stringify","Milkdown","_MarkdownEditor2","_set_uploadImage","_set_markdownValueChange","c","_initClass","_applyDecs","styleTexts","styleText","alias","Boolean","attribute","o","_","has","_checkInRHS"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_markdown=self.webpackChunk_next_bricks_markdown||[]).push([[967],{7196:(e,t,n)=>{n.r(t),n.d(t,{MarkdownEditor:()=>ue,MarkdownEditorComponent:()=>je});var i,r,o,a,l,s,c,u,d,h,m,p,f,k,v,y,b,g,w,A,E,C,M,N,S=n(9740),j=n(6330),I=n(4586),W=n(4635),T=n(918),_=n(1369),D=n(8449),O=n(6902),q=n(9575),x=n(8769),U=n.n(x),P=n(169),V=n(5617),B=(n(330),n(998)),F=n(3717),z=n(7164),$=n(2466),G=n(9409),J=n(9760),K=n(135),X=n(6486),L=n(6512),Q=n(8653),R=n(1123),Y=n(5435),Z=n(9796),H=n(3971),ee=n(6385),te=n(1151),ne=n(4557),ie=n(426),re=n(3373),oe=n.n(re);function ae(e,t,n){return n(ce(e,t))}function le(e,t,n){return e.set(ce(e,t),n),n}function se(e,t){return e.get(ce(e,t))}function ce(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var ue,de=(0,V.wrapBrick)("eo-form-item"),he=(0,V.wrapBrick)("eo-icon"),me=e=>{var{icon:t,onClick:n,tooltip:i}=e;return U().createElement("div",{className:"menu-btn-box",onMouseDown:e=>{null==n||n(),e.preventDefault()}},U().createElement(he,(0,q.A)({style:{verticalAlign:"middle"}},t)),i&&U().createElement("div",{className:"menuIconTooltip"},i))},{defineElement:pe,property:fe,event:ke}=(0,P.createDecorators)(),ve=new WeakMap,ye=new WeakMap,be=new WeakMap,ge=new WeakMap,we=new WeakMap,Ae=new WeakMap,Ee=new WeakMap,Ce=new WeakMap,Me=new WeakSet,Ne=new WeakMap;class Se extends ie.N{constructor(){super(...arguments),(0,W.A)(this,Me),(0,T.A)(this,ve,r(this)),(0,T.A)(this,ye,(o(this),a(this))),(0,T.A)(this,be,(l(this),s(this))),(0,T.A)(this,ge,(c(this),u(this))),(0,T.A)(this,we,(d(this),h(this))),(0,T.A)(this,Ae,(m(this),p(this))),(0,T.A)(this,Ee,(f(this),k(this))),(0,T.A)(this,Ce,(v(this),y(this))),(0,I.A)(this,"handleUploadImage",(w(this),e=>{ae(Me,this,b).emit(e)})),(0,T.A)(this,Ne,A(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,ae(Me,this,E).emit(e)}))}get name(){return se(ve,this)}set name(e){le(ve,this,e)}get label(){return se(ye,this)}set label(e){le(ye,this,e)}get required(){return se(be,this)}set required(e){le(be,this,e)}get value(){return se(ge,this)}set value(e){le(ge,this,e)}get bucketName(){return se(we,this)}set bucketName(e){le(we,this,e)}get readonly(){return se(Ae,this)}set readonly(e){le(Ae,this,e)}get containerStyle(){return se(Ee,this)}set containerStyle(e){le(Ee,this,e)}render(){return U().createElement($.pb,null,U().createElement(H.vo,null,U().createElement(je,{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 je(e){var{bucketName:t,containerStyle:n,value:i,formElement:r,readonly:o,onUploadImage:a,onMarkdownValueChange:l}=e,[s,c]=(0,x.useState)(!1),u=function(){var n=(0,j.A)((function*(n,i){for(var r=[],o=[],l=0;l<n.length;l++){var s=n.item(l);s&&s.type.includes("image")&&r.push(s)}try{o=yield Promise.all(r.map(function(){var n=(0,j.A)((function*(n){var r,o=yield(0,F.i)(t,{file:n,width:1280,height:800}),l=(r=null==o?void 0:o.objectName,"/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/".concat(e.bucketName,"/object/").concat(r)),s=n.name;return a&&a({name:s,src:l}),i.nodes.image.createAndFill({src:l,alt:s})}));return function(e){return n.apply(this,arguments)}}()))}catch(e){}return o}));return function(e,t){return n.apply(this,arguments)}}(),d=(0,H.Uv)(),h=(0,H.rJ)(),m=(0,H.$X)(),p=(0,x.useMemo)((()=>[R.Te,te.EI,te.nk,e=>(0,j.A)((function*(){e.set(te.EI.key,{view:d({component:te.ST})})})),(0,te.jp)(h)].flat()),[d,h]),{get:f}=(0,$.hG)((e=>z.KE.make().config((n=>{n.set(z.k,e),n.update(z.QM,(e=>(0,S.A)((0,S.A)({},e),{},{editable:()=>!o}))),i&&n.set(z.CI,i),n.get(Q.Ob).markdownUpdated(((e,t,n)=>{l&&l(t)})).focus((e=>{c(!0)})).blur((e=>{c(!1)})),t&&n.update(X.wu.key,(e=>(0,S.A)((0,S.A)({},e),{},{uploader:u}))),n.update(Z.mS.key,(e=>(0,S.A)((0,S.A)({},e),{},{configureRefractor:()=>ee.L})))})).config(J.E).use(Q.F_).use(G.PD).use(K.b6).use(R.Te).use(Y.pZ).use(X.Se).use(p).use(Z.Wj).use((0,L.m5)(G.Ay.node,(()=>m({component:ne.N}))))),[]);function k(e,t){var n;return null===(n=f())||void 0===n?void 0:n.action((0,L.KD)(e,t))}(0,x.useEffect)((()=>{var e;r&&void 0!==i&&!s&&(null===(e=f())||void 0===e||e.action((0,L.yh)(i)))}),[f(),i]);var v=[{icon:{lib:"antd",icon:"undo"},onClick:()=>k(K.Eb.key),tooltip:"撤销"},{icon:{lib:"antd",icon:"redo"},onClick:()=>k(K.eD.key),tooltip:"重做"},{icon:{lib:"antd",icon:"bold"},onClick:()=>k(G.vY.key),tooltip:"粗体"},{icon:{lib:"antd",icon:"italic"},onClick:()=>k(G.e0.key),tooltip:"斜体"},{icon:{lib:"antd",icon:"strikethrough"},onClick:()=>k(R.$l.key),tooltip:"删除线"},{icon:{lib:"antd",icon:"table"},onClick:()=>k(R.f$.key),tooltip:"表格"},{icon:{lib:"antd",icon:"unordered-list"},onClick:()=>k(G.Xk.key),tooltip:"无序列表"},{icon:{lib:"antd",icon:"ordered-list"},onClick:()=>k(G.Ej.key),tooltip:"有序列表"},{icon:{lib:"fa",icon:"quote-right"},onClick:()=>k(G.oO.key),tooltip:"块引用"}];return U().createElement(de,e,U().createElement("div",{className:oe()("markdown-container",{readonly:o}),style:n},!o&&U().createElement("div",{className:"menu-container-outter"},U().createElement("div",{className:"menu-container-inner prose"},v.map((e=>U().createElement(me,(0,q.A)({},e,{key:JSON.stringify(e.icon)})))))),U().createElement("div",{className:"editor-container"},U().createElement($.y5,null))))}N=Se,({e:[r,o,a,l,s,c,u,d,h,m,p,f,k,v,y,b,g,w,A,E,C,M],c:[ue,i]}=function(e,t,n,i,r,o){var a,l,s,c,u,d,h,m=Symbol.metadata||Symbol.for("Symbol.metadata"),p=Object.defineProperty,f=Object.create,k=[f(null),f(null)],v=t.length;function y(t,n,i){return function(r,o){n&&(o=r,r=e);for(var a=0;a<t.length;a++)o=t[a].apply(r,i?[o]:[]);return i?o:r}}function b(e,t,n,i){if("function"!=typeof e&&(i||void 0!==e))throw new TypeError(t+" must "+(n||"be")+" a function"+(i?"":" or undefined"));return e}function g(e,t,n,i,r,o,s,c,u,d,h){function m(e){if(!h(e))throw new TypeError("Attempted to access private element on non-instance")}var f=[].concat(t[0]),v=t[3],g=!s,w=1===r,A=3===r,E=4===r,C=2===r;function M(t,n,i){return function(r,o){return n&&(o=r,r=e),i&&i(r),N[t].call(r,o)}}if(!g){var N={},S=[],j=A?"get":E||w?"set":"value";if(u?(d||w?N={get:(0,D.A)((function(){return v(this)}),i,"get"),set:function(e){t[4](this,e)}}:N[j]=v,d||(0,D.A)(N[j],i,C?"":j)):d||(N=Object.getOwnPropertyDescriptor(e,i)),!d&&!u){if((l=k[+c][i])&&7!=(l^r))throw new Error("Decorating two elements with the same name ("+N[j].name+") is not supported yet");k[+c][i]=r<3?1:r}}for(var I=e,W=f.length-1;W>=0;W-=n?2:1){var T=f[W],_=n?f[W-1]:void 0,O={},q={kind:["field","accessor","method","getter","setter","class"][r],name:i,metadata:a,addInitializer:function(e,t){if(e.v)throw new Error("attempted to call addInitializer after decoration was finished");b(t,"An initializer","be",!0),o.push(t)}.bind(null,O)};if(g)l=T.call(_,I,q),O.v=1,b(l,"class decorators","return")&&(I=l);else if(q.static=c,q.private=u,l=q.access={has:u?h.bind():function(e){return i in e}},E||(l.get=u?C?function(e){return m(e),N.value}:M("get",0,m):function(e){return e[i]}),C||A||(l.set=u?M("set",0,m):function(e,t){e[i]=t}),I=T.call(_,w?{get:N.get,set:N.set}:N[j],q),O.v=1,w){if("object"==typeof I&&I)(l=b(I.get,"accessor.get"))&&(N.get=l),(l=b(I.set,"accessor.set"))&&(N.set=l),(l=b(I.init,"accessor.init"))&&S.unshift(l);else if(void 0!==I)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else b(I,(d?"field":"method")+" decorators","return")&&(d?S.unshift(I):N[j]=I)}return r<2&&s.push(y(S,c,1),y(o,c,0)),d||g||(u?w?s.splice(-1,0,M("get",c),M("set",c)):s.push(C?N[j]:b.call.bind(N[j])):p(e,i,N)),I}function w(e){return p(e,m,{configurable:!0,enumerable:!0,value:a})}return void 0!==o&&(a=o[m]),a=f(null==a?null:a),u=[],d=function(e){e&&u.push(y(e))},(h=function(t,i){for(var o=0;o<n.length;o++){var a=n[o],l=a[1],d=7&l;if((8&l)==t&&!d==i){var h=a[2],m=!!a[3],p=16&l;g(t?e:e.prototype,a,p,m?"#"+h:(0,_.A)(h),d,d<2?[]:t?c=c||[]:s=s||[],u,!!t,m,i,t&&m?function(t){return(0,O.A)(t)===e}:r)}}})(8,0),h(0,0),h(8,1),h(0,1),d(s),d(c),l=u,v||w(e),{e:l,get c(){var n=[];return v&&[w(e=g(e,[t],0,e.name,5,n)),y(n,1)]}}}(N,[pe("eo-markdown-editor",{styleTexts:[B.A],alias:["markdown.markdown-editor"]})],[[fe(),1,"name"],[fe(),1,"label"],[fe({type:Boolean}),1,"required"],[fe(),1,"value"],[fe(),1,"bucketName"],[fe({type:Boolean}),1,"readonly"],[fe({attribute:!1}),1,"containerStyle"],[ke({type:"image.upload"}),1,"uploadImage",e=>se(Ce,e),(e,t)=>le(Ce,e,t)],[ke({type:"markdown.value.change"}),1,"markdownValueChange",e=>se(Ne,e),(e,t)=>le(Ne,e,t)]],0,(e=>Me.has((0,O.A)(e))),ie.N)),i()}}]);
|
|
2
|
-
//# sourceMappingURL=eo-markdown-editor.8d718abf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/eo-markdown-editor.8d718abf.js","mappings":"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","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\";\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.tsx\";\nimport { CodeBlock } from \"./components/CodeBlock.tsx\";\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: 1280,\n height: 800,\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 // do nothing\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 [\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 }, [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 (ctx: any, markdown: string, prevMarkdown: string) => {\n onMarkdownValueChange && onMarkdownValueChange(markdown);\n }\n )\n .focus((ctx: any) => {\n setIsFocus(true);\n })\n .blur((ctx: any) => {\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 $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 {...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","_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","classNames","JSON","stringify","Milkdown","_MarkdownEditor2","_set_uploadImage","_set_markdownValueChange","c","_initClass","_applyDecs","styleTexts","styleText","alias","Boolean","attribute","o","_","has","_checkInRHS"],"sourceRoot":""}
|