@next-bricks/markdown 1.4.1 → 1.4.3
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/295.5ea05dbb.js +2 -0
- package/dist/chunks/295.5ea05dbb.js.map +1 -0
- package/dist/chunks/558.196cff93.js +2 -0
- package/dist/chunks/558.196cff93.js.map +1 -0
- package/dist/chunks/76.1f801b3e.js +3 -0
- package/dist/chunks/76.1f801b3e.js.map +1 -0
- package/dist/chunks/eo-markdown-editor.049dd44a.js +2 -0
- package/dist/chunks/eo-markdown-editor.049dd44a.js.map +1 -0
- package/dist/chunks/{main.672045e5.js → main.fed7a6b2.js} +2 -2
- package/dist/chunks/{main.672045e5.js.map → main.fed7a6b2.js.map} +1 -1
- package/dist/{index.40630a8d.js → index.f6646710.js} +2 -2
- package/dist/{index.40630a8d.js.map → index.f6646710.js.map} +1 -1
- package/dist/manifest.json +6 -0
- package/dist/types.json +17 -0
- package/package.json +2 -2
- package/dist/chunks/295.cf26dce3.js +0 -2
- package/dist/chunks/295.cf26dce3.js.map +0 -1
- package/dist/chunks/558.593a56a3.js +0 -2
- package/dist/chunks/558.593a56a3.js.map +0 -1
- package/dist/chunks/76.c765e60f.js +0 -3
- package/dist/chunks/76.c765e60f.js.map +0 -1
- package/dist/chunks/eo-markdown-editor.9e1a6f28.js +0 -2
- package/dist/chunks/eo-markdown-editor.9e1a6f28.js.map +0 -1
- /package/dist/chunks/{76.c765e60f.js.LICENSE.txt → 76.1f801b3e.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_markdown=self.webpackChunk_next_bricks_markdown||[]).push([[580],{8403:(e,t,n)=>{n.r(t),n.d(t,{MarkdownEditor:()=>w,MarkdownEditorComponent:()=>se});var i,a,o,r,l,c,u,s,d,m,k,h,p,v,b,w,g=n(3028),f=n(4795),Z=n(6234),y=n(3395),C=n(381),E=n(687),N=n(5303),M=n(7896),W=n(8657),_=n.n(W),j=n(72),x=n(8787),I=(n(5254),n(4534)),Q=n(6226),V=n(8858),S=n(4611),U=n(3991),D=n(8652),O=n(790),$=n(4426),A=n(6669),J=n(4547),z=n(6160),B=n(3011),F=n(7529),G=n(2642),K=n(2812),L=n(5407),P=n(1897),R=(0,x.wrapBrick)("eo-icon"),T=e=>{var{icon:t,onClick:n,tooltip:i}=e;return _().createElement("div",{className:"menu-btn-box",onMouseDown:e=>{null==n||n(),e.preventDefault()}},_().createElement(R,(0,M.Z)({style:{verticalAlign:"middle"}},t)),i&&_().createElement("div",{className:"menuIconTooltip"},i))},{defineElement:q,property:X,event:Y}=(0,j.createDecorators)();a=q("eo-markdown-editor",{styleTexts:[I.Z],alias:["markdown.markdown-editor"]}),o=X(),l=X(),u=Y({type:"image.upload"}),k=Y({type:"markdown.value.change"});var H=new WeakMap,ee=new WeakMap,te=new WeakMap,ne=new WeakMap,ie=new WeakMap,ae=new WeakMap;class oe extends x.ReactNextElement{constructor(){super(...arguments),(0,y.Z)(this,ae,{get:ue,set:ce}),(0,y.Z)(this,ne,{get:le,set:re}),(0,y.Z)(this,H,{writable:!0,value:(b(this),r(this))}),(0,y.Z)(this,ee,{writable:!0,value:c(this)}),(0,y.Z)(this,te,{writable:!0,value:s(this)}),(0,Z.Z)(this,"handleUploadImage",(e=>{(0,E.Z)(this,ne).emit(e)})),(0,y.Z)(this,ie,{writable:!0,value:h(this)}),(0,Z.Z)(this,"handleMarkdownValueChange",(e=>{(0,E.Z)(this,ae).emit(e)}))}get value(){return(0,E.Z)(this,H)}set value(e){(0,C.Z)(this,H,e)}get bucketName(){return(0,E.Z)(this,ee)}set bucketName(e){(0,C.Z)(this,ee,e)}render(){return _().createElement(S.iz,null,_().createElement(G.cL,null,_().createElement(se,{curElement:this,bucketName:this.bucketName,value:this.value,onUploadImage:this.handleUploadImage,onMarkdownValueChange:this.handleMarkdownValueChange})))}}function re(e){m(this,e)}function le(){return d(this)}function ce(e){v(this,e)}function ue(){return p(this)}function se(e){var{bucketName:t,value:n,onUploadImage:i,onMarkdownValueChange:a}=e,o=function(){var n=(0,f.Z)((function*(n,a){for(var o=[],r=[],l=0;l<n.length;l++){var c=n.item(l);c&&c.type.includes("image")&&o.push(c)}try{r=yield Promise.all(o.map(function(){var n=(0,f.Z)((function*(n){var o,r=yield(0,Q.Q)(t,{file:n,width:1280,height:800}),l=(o=null==r?void 0:r.objectName,"/next/api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/".concat(e.bucketName,"/object/").concat(o)),c=n.name;return i&&i({name:c,src:l}),a.nodes.image.createAndFill({src:l,alt:c})}));return function(e){return n.apply(this,arguments)}}()))}catch(e){}return r}));return function(e,t){return n.apply(this,arguments)}}(),r=(0,G.eK)(),l=(0,G.AQ)(),c=(0,G.mg)(),u=(0,W.useMemo)((()=>[z.r0,L.$Q,L.eJ,e=>(0,f.Z)((function*(){e.set(L.$Q.key,{view:r({component:L.zI})})})),(0,L.l5)(l)].flat()),[r,l]),{get:s}=(0,S.jE)((e=>V.ML.make().config((i=>{i.set(V.KP,e),n&&i.set(V.Dn,n),i.get(J.QC).markdownUpdated(((e,t,n)=>{a&&a(t)})),t&&i.update($.mS.key,(e=>(0,g.Z)((0,g.Z)({},e),{},{uploader:o}))),i.update(F.Vn.key,(e=>(0,g.Z)((0,g.Z)({},e),{},{configureRefractor:()=>K.$})))})).config(D.Q).use(J.X3).use(U.iO).use(O.m8).use(z.r0).use(B.WY).use($.ws).use(u).use(F.MS).use((0,A.u)(U.W0.node,(()=>c({component:P.d}))))),[]);function d(e,t){var n;return null===(n=s())||void 0===n?void 0:n.action((0,A.lB)(e,t))}var m=[{icon:{lib:"antd",icon:"undo"},onClick:()=>d(O.N7.key),tooltip:"撤销"},{icon:{lib:"antd",icon:"redo"},onClick:()=>d(O.Ow.key),tooltip:"重做"},{icon:{lib:"antd",icon:"bold"},onClick:()=>d(U.gG.key),tooltip:"粗体"},{icon:{lib:"antd",icon:"italic"},onClick:()=>d(U.QF.key),tooltip:"斜体"},{icon:{lib:"antd",icon:"strikethrough"},onClick:()=>d(z.S2.key),tooltip:"删除线"},{icon:{lib:"antd",icon:"table"},onClick:()=>d(z.Jp.key),tooltip:"表格"},{icon:{lib:"antd",icon:"unordered-list"},onClick:()=>d(U.$m.key),tooltip:"无序列表"},{icon:{lib:"antd",icon:"ordered-list"},onClick:()=>d(U.vd.key),tooltip:"有序列表"},{icon:{lib:"fa",icon:"quote-right"},onClick:()=>d(U.vs.key),tooltip:"块引用"}];return _().createElement("div",{className:"markdown-container"},_().createElement("div",{className:"menu-container-outter"},_().createElement("div",{className:"menu-container-inner prose"},m.map((e=>_().createElement(T,(0,M.Z)({},e,{key:JSON.stringify(e.icon)})))))),_().createElement("div",{className:"editor-container"},_().createElement(S.Nl,null)))}({e:[r,c,s,d,m,h,p,v,b],c:[w,i]}=(0,N.Z)(oe,[[o,1,"value"],[l,1,"bucketName"],[u,1,"uploadImage",function(){return(0,E.Z)(this,te)},function(e){(0,C.Z)(this,te,e)}],[k,1,"markdownValueChange",function(){return(0,E.Z)(this,ie)},function(e){(0,C.Z)(this,ie,e)}]],[a])),i()}}]);
|
|
2
|
-
//# sourceMappingURL=eo-markdown-editor.9e1a6f28.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/eo-markdown-editor.9e1a6f28.js","mappings":"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","sources":["webpack:///./src/markdown-editor/index.tsx"],"sourcesContent":["import React, { FC, useMemo } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactNextElement } 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 } 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\";\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 {\n curElement: HTMLElement;\n value?: string;\n bucketName?: string;\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 */\nclass MarkdownEditor extends ReactNextElement {\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 * @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 private handleMarkdownValueChange = (value: string): void => {\n this.#markdownValueChange.emit(value);\n };\n\n render() {\n return (\n <MilkdownProvider>\n <ProsemirrorAdapterProvider>\n <MarkdownEditorComponent\n curElement={this}\n bucketName={this.bucketName}\n value={this.value}\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 { bucketName, value, onUploadImage, onMarkdownValueChange } = props;\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 // 配置文件上传,不传bucketName则默认把图片转为base64格式\n bucketName &&\n ctx.update(uploadConfig.key, (prev: any) => ({\n ...prev,\n uploader,\n }));\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 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 <div className=\"markdown-container\">\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 );\n}\n"],"names":["_MarkdownEditor","WrappedIcon","wrapBrick","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","_dec5","_A","WeakMap","_B","_C","_uploadImage","_D","_markdownValueChange","MarkdownEditor","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","get","_get_markdownValueChange2","set","_set_markdownValueChange2","_get_uploadImage2","_set_uploadImage2","writable","value","_initProto","_init_value","_init_bucketName","_init_uploadImage","_defineProperty","_classPrivateFieldGet","this","emit","_init_markdownValueChange","v","_classPrivateFieldSet","bucketName","render","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownEditorComponent","curElement","onUploadImage","handleUploadImage","onMarkdownValueChange","handleMarkdownValueChange","_set_uploadImage","_get_uploadImage","_set_markdownValueChange","_get_markdownValueChange","props","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","name","createAndFill","_x3","apply","err","_x","_x2","pluginViewFactory","usePluginViewFactory","widgetViewFactory","useWidgetViewFactory","nodeViewFactory","useNodeViewFactory","gfmPlugins","useMemo","gfm","tableTooltip","tableTooltipCtx","ctx","view","component","TableTooltip","tableSelectorPlugin","flat","useEditor","root","Editor","config","rootCtx","defaultValueCtx","listenerCtx","markdownUpdated","markdown","prevMarkdown","update","uploadConfig","prev","_objectSpread","prismConfig","configureRefractor","refractor","nord","use","listener","commonmark","history","indent","upload","prism","$view","codeBlockSchema","CodeBlock","call","command","payload","_get","action","callCommand","MenuBtnData","lib","undoCommand","redoCommand","toggleStrongCommand","toggleEmphasisCommand","toggleStrikethroughCommand","insertTableCommand","wrapInBulletListCommand","wrapInOrderedListCommand","wrapInBlockquoteCommand","key","JSON","stringify","Milkdown","c","_initClass","_applyDecs2203R"],"sourceRoot":""}
|
|
File without changes
|