@next-bricks/markdown 1.8.9 → 1.8.11
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/108.95e9487b.js +2 -0
- package/dist/chunks/108.95e9487b.js.map +1 -0
- package/dist/chunks/{668.1175a949.js → 561.135fd418.js} +2 -2
- package/dist/chunks/{668.1175a949.js.map → 561.135fd418.js.map} +1 -1
- package/dist/chunks/869.2f8b0e85.js +2 -0
- package/dist/chunks/{869.83a12152.js.map → 869.2f8b0e85.js.map} +1 -1
- package/dist/chunks/949.a800662b.js +3 -0
- package/dist/chunks/949.a800662b.js.map +1 -0
- package/dist/chunks/eo-markdown-editor.1cbd3c1e.js +2 -0
- package/dist/chunks/{eo-markdown-editor.8e5bfb1d.js.map → eo-markdown-editor.1cbd3c1e.js.map} +1 -1
- package/dist/chunks/{main.775cd858.js → main.cc2dd848.js} +2 -2
- package/dist/chunks/{main.775cd858.js.map → main.cc2dd848.js.map} +1 -1
- package/dist/{index.3491cb23.js → index.8b582df2.js} +2 -2
- package/dist/{index.3491cb23.js.map → index.8b582df2.js.map} +1 -1
- package/package.json +3 -3
- package/dist/chunks/108.b78b91e4.js +0 -2
- package/dist/chunks/108.b78b91e4.js.map +0 -1
- package/dist/chunks/869.83a12152.js +0 -2
- package/dist/chunks/949.0b378cfe.js +0 -3
- package/dist/chunks/949.0b378cfe.js.map +0 -1
- package/dist/chunks/eo-markdown-editor.8e5bfb1d.js +0 -2
- /package/dist/chunks/{949.0b378cfe.js.LICENSE.txt → 949.a800662b.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/869.83a12152.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 { defaultValueCtx, Editor, rootCtx } 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\";\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 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 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 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 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 // 配置默认值\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 className=\"markdown-container\" style={containerStyle}>\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 <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","_dec","styleTexts","styleText","alias","_dec2","_dec3","_dec4","type","Boolean","_dec5","_dec6","_dec7","attribute","_dec8","_dec9","_A","WeakMap","_B","_C","_D","_E","_F","_G","_uploadImage","_H","_markdownValueChange","MarkdownEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_markdownValueChange2","set","_set_markdownValueChange2","_get_uploadImage2","_set_uploadImage2","writable","value","_initProto","_init_name","_init_label","_init_required","_init_value","_init_bucketName","_init_containerStyle","_init_uploadImage","_defineProperty","_classPrivateFieldGet","this","emit","_init_markdownValueChange","_this$getFormElement","getFormElement","formStore","onChange","name","v","_classPrivateFieldSet","label","required","bucketName","containerStyle","render","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownEditorComponent","formElement","curElement","onUploadImage","handleUploadImage","onMarkdownValueChange","handleMarkdownValueChange","_set_uploadImage","_get_uploadImage","_set_markdownValueChange","_get_markdownValueChange","props","isFocus","setIsFocus","useState","uploader","_ref2","_asyncToGenerator","files","schema","images","nodes","i","length","file","item","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","key","view","component","TableTooltip","tableSelectorPlugin","flat","useEditor","root","Editor","make","config","rootCtx","defaultValueCtx","listenerCtx","markdownUpdated","markdown","prevMarkdown","focus","blur","update","uploadConfig","prev","_objectSpread","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","JSON","stringify","Milkdown","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/869.2f8b0e85.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 { defaultValueCtx, Editor, rootCtx } 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\";\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 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 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 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 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 // 配置默认值\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 className=\"markdown-container\" style={containerStyle}>\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 <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","_dec","styleTexts","styleText","alias","_dec2","_dec3","_dec4","type","Boolean","_dec5","_dec6","_dec7","attribute","_dec8","_dec9","_A","WeakMap","_B","_C","_D","_E","_F","_G","_uploadImage","_H","_markdownValueChange","MarkdownEditor","FormItemElementBase","constructor","arguments","_classPrivateFieldInitSpec","get","_get_markdownValueChange2","set","_set_markdownValueChange2","_get_uploadImage2","_set_uploadImage2","writable","value","_initProto","_init_name","_init_label","_init_required","_init_value","_init_bucketName","_init_containerStyle","_init_uploadImage","_defineProperty","_classPrivateFieldGet","this","emit","_init_markdownValueChange","_this$getFormElement","getFormElement","formStore","onChange","name","v","_classPrivateFieldSet","label","required","bucketName","containerStyle","render","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownEditorComponent","formElement","curElement","onUploadImage","handleUploadImage","onMarkdownValueChange","handleMarkdownValueChange","_set_uploadImage","_get_uploadImage","_set_markdownValueChange","_get_markdownValueChange","props","isFocus","setIsFocus","useState","uploader","_ref2","_asyncToGenerator","files","schema","images","nodes","i","length","file","item","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","key","view","component","TableTooltip","tableSelectorPlugin","flat","useEditor","root","Editor","make","config","rootCtx","defaultValueCtx","listenerCtx","markdownUpdated","markdown","prevMarkdown","focus","blur","update","uploadConfig","prev","_objectSpread","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","JSON","stringify","Milkdown","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS"],"sourceRoot":""}
|