@wangeditor-next/editor-for-react 1.0.8 → 1.0.9

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/README.md CHANGED
@@ -1,52 +1,52 @@
1
- # wangEditor for React
2
-
3
- <!-- Badge -->
4
- ![MIT License](https://img.shields.io/badge/License-MIT-blue)
5
- ![jest badge](https://img.shields.io/badge/unit%20test-jest-yellowgreen)
6
-
7
- [English documentation](./README-en.md)
8
-
9
- ## 介绍
10
- 基于[wangEditor](https://www.wangeditor.com/) 封装的React组件。
11
-
12
- ## 安装
13
-
14
- 1. 安装组件包
15
-
16
- ```shell
17
- yarn add @wangeditor-next/editor-for-react
18
- # 或者npm install @wangeditor-next/editor-for-react --save
19
-
20
- ```
21
-
22
- 2. 安装核心包
23
-
24
- ```shell
25
- yarn add @wangeditor-next/editor
26
-
27
- # 或者 npm install @wangeditor-next/editor --save
28
- ```
29
- 3. 导入组件
30
-
31
- ```ts
32
- import { Editor, Toolbar } from '@wangeditor-next/editor-for-react'
33
- ```
34
-
35
- ## 使用
36
-
37
- 详情参考[wangEditor react使用文档](https://www.wangeditor.com/v5/for-frame.html#react)。
38
-
39
- ### 在Next.js下使用
40
- ```js
41
- import dynamic from 'next/dynamic'
42
- const WangEditor = dynamic(
43
- // 引入对应的组件 设置的组件参考上面的wangEditor react使用文档
44
- () => import('../components/myEditor'),
45
- {ssr: false}
46
- )
47
-
48
- export default function Home() {
49
- return <WangEditor />
50
- }
51
- ```
52
- 使用案例可以参考[wangeditorV5-nextjs-demo](https://github.com/hahaaha/wangeditorV5-nextjs-demo)
1
+ # wangEditor for React
2
+
3
+ <!-- Badge -->
4
+ ![MIT License](https://img.shields.io/badge/License-MIT-blue)
5
+ ![jest badge](https://img.shields.io/badge/unit%20test-jest-yellowgreen)
6
+
7
+ [English documentation](./README-en.md)
8
+
9
+ ## 介绍
10
+ 基于[wangEditor](https://www.wangeditor.com/) 封装的React组件。
11
+
12
+ ## 安装
13
+
14
+ 1. 安装组件包
15
+
16
+ ```shell
17
+ yarn add @wangeditor-next/editor-for-react
18
+ # 或者npm install @wangeditor-next/editor-for-react --save
19
+
20
+ ```
21
+
22
+ 2. 安装核心包
23
+
24
+ ```shell
25
+ yarn add @wangeditor-next/editor
26
+
27
+ # 或者 npm install @wangeditor-next/editor --save
28
+ ```
29
+ 3. 导入组件
30
+
31
+ ```ts
32
+ import { Editor, Toolbar } from '@wangeditor-next/editor-for-react'
33
+ ```
34
+
35
+ ## 使用
36
+
37
+ 详情参考[wangEditor react使用文档](https://www.wangeditor.com/v5/for-frame.html#react)。
38
+
39
+ ### 在Next.js下使用
40
+ ```js
41
+ import dynamic from 'next/dynamic'
42
+ const WangEditor = dynamic(
43
+ // 引入对应的组件 设置的组件参考上面的wangEditor react使用文档
44
+ () => import('../components/myEditor'),
45
+ {ssr: false}
46
+ )
47
+
48
+ export default function Home() {
49
+ return <WangEditor />
50
+ }
51
+ ```
52
+ 使用案例可以参考[wangeditorV5-nextjs-demo](https://github.com/hahaaha/wangeditorV5-nextjs-demo)
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useRef as r,useState as t,useEffect as n}from"react";import*as o from"@wangeditor-next/editor";import{createEditor as l}from"@wangeditor-next/editor";var a=function(){return a=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},a.apply(this,arguments)};function i(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,o,l=t.call(e),a=[];try{for(;(void 0===r||r-- >0)&&!(n=l.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(t=l.return)&&t.call(l)}finally{if(o)throw o.error}}return a}function u(o){var u=o.defaultContent,c=void 0===u?[]:u,d=o.onCreated,f=o.defaultHtml,v=void 0===f?"":f,s=o.value,m=void 0===s?"":s,y=o.onChange,p=o.defaultConfig,g=void 0===p?{}:p,h=o.mode,C=void 0===h?"default":h,_=o.style,b=void 0===_?{}:_,w=o.className,x=r(null),E=i(t(null),2),N=E[0],S=E[1],H=i(t(""),2),O=H[0],j=H[1],D=function(e){d&&d(e);var r=g.onCreated;r&&r(e)},T=function(e){var r=g.onDestroyed;S(null),r&&r(e)};return n((function(){null!=N&&(N.__react_on_change=function(e){j(e.getHtml()),y&&y(e);var r=g.onChange;r&&r(e)})}),[N,g]),n((function(){if(null!=N&&m!==O)try{N.setHtml(m)}catch(e){console.error(e)}}),[m]),n((function(){var e;if(null!=x.current&&null==N&&!(null===(e=x.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var r=l({selector:x.current,config:a(a({},g),{onCreated:D,onChange:function(e){var t;return null===(t=null==r?void 0:r.__react_on_change)||void 0===t?void 0:t.call(r,e)},onDestroyed:T}),content:c,html:v||m,mode:C});S(r)}}),[N]),e.createElement("div",{style:b,ref:x,className:w})}function c(t){var l=t.editor,a=t.defaultConfig,i=void 0===a?{}:a,u=t.mode,c=void 0===u?"default":u,d=t.style,f=void 0===d?{}:d,v=t.className,s=r(null);return n((function(){null!=s.current&&null!=l&&o.createToolbar({editor:l,selector:s.current,config:i,mode:c})}),[l]),e.createElement("div",{style:f,ref:s,className:v})}"function"==typeof SuppressedError&&SuppressedError;export{u as Editor,c as Toolbar};
1
+ import e,{useRef as t,useState as r,useEffect as n}from"react";import*as o from"@wangeditor-next/editor";import{createEditor as l}from"@wangeditor-next/editor";var a=function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},a.apply(this,arguments)};function i(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,l=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=l.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=l.return)&&r.call(l)}finally{if(o)throw o.error}}return a}function u(o){var u=o.defaultContent,c=void 0===u?[]:u,d=o.onCreated,f=o.defaultHtml,v=void 0===f?"":f,s=o.value,m=void 0===s?"":s,y=o.onChange,g=o.defaultConfig,p=void 0===g?{}:g,h=o.mode,b=void 0===h?"default":h,C=o.style,_=void 0===C?{}:C,w=o.className,x=t(null),E=i(r(null),2),N=E[0],S=E[1],H=i(r(""),2),O=H[0],j=H[1],A=function(e){d&&d(e);var t=p.onCreated;t&&t(e)},D=function(e){var t=p.onDestroyed;S(null),t&&t(e)};return n((function(){null!=N&&(N.__react_on_change=function(e){j(e.getHtml()),y&&y(e);var t=p.onChange;t&&t(e)})}),[N,p]),n((function(){if(null!=N&&m!==O)try{N.setHtml(m)}catch(e){console.error(e)}}),[m]),n((function(){var e;if(null!=x.current&&null==N&&!(null===(e=x.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var t=l({selector:x.current,config:a(a({},p),{onCreated:A,onChange:function(e){var r;return null===(r=null==t?void 0:t.__react_on_change)||void 0===r?void 0:r.call(t,e)},onDestroyed:D}),content:c,html:v||m,mode:b});S(t)}}),[N]),e.createElement("div",{style:_,ref:x,className:w})}function c(r){var l=r.editor,a=r.defaultConfig,i=void 0===a?{}:a,u=r.mode,c=void 0===u?"default":u,d=r.style,f=void 0===d?{}:d,v=r.className,s=t(null);return n((function(){var e;null!=s.current&&null!=l&&((null===(e=s.current)||void 0===e?void 0:e.getAttribute("data-w-e-toolbar"))||o.createToolbar({editor:l,selector:s.current,config:i,mode:c}))}),[l]),e.createElement("div",{style:f,ref:s,className:v})}"function"==typeof SuppressedError&&SuppressedError;export{u as Editor,c as Toolbar};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Editor.tsx","../src/components/Toolbar.tsx"],"sourcesContent":["/**\n * @description editor react component\n * @author wangfupeng\n */\n\nimport React, { useRef, useEffect, useState } from 'react'\nimport {SlateDescendant, IEditorConfig, createEditor, IDomEditor, SlateEditor, SlateTransforms } from '@wangeditor-next/editor'\n\ninterface IProps {\n defaultContent?: SlateDescendant[]\n onCreated?: (editor: IDomEditor) => void\n defaultHtml?: string\n value?: string\n onChange: (editor: IDomEditor) => void\n defaultConfig: Partial<IEditorConfig>\n mode?: string\n style?: React.CSSProperties\n className?: string\n}\n\ninterface ICustomDomEditor extends IDomEditor {\n __react_on_change?: (editor: ICustomDomEditor) => void;\n}\n\nfunction EditorComponent(props: Partial<IProps>) {\n const { defaultContent = [], onCreated, defaultHtml = '', value = '', onChange, defaultConfig = {}, mode = 'default', style = {}, className } = props\n const ref = useRef<HTMLDivElement>(null)\n const [editor, setEditor] = useState<ICustomDomEditor | null>(null)\n const [curValue, setCurValue] = useState('')\n\n const handleCreated = (editor: IDomEditor) => {\n // 组件属性 onCreated\n if (onCreated) onCreated(editor)\n\n // 编辑器 配置 onCreated\n const { onCreated: onCreatedFromConfig } = defaultConfig\n if (onCreatedFromConfig) onCreatedFromConfig(editor)\n }\n\n const handleDestroyed = (editor: IDomEditor) => {\n const { onDestroyed } = defaultConfig\n setEditor(null)\n if(onDestroyed) {\n onDestroyed(editor)\n }\n }\n\n useEffect(() => {\n if (editor == null) return\n\n editor.__react_on_change = (e: IDomEditor) => {\n setCurValue(e.getHtml()) // 记录当前 html 值\n \n // 组件属性 onChange\n if (onChange) onChange(e)\n \n // 编辑器 配置 onChange\n const { onChange: onChangeFromConfig } = defaultConfig\n if (onChangeFromConfig) onChangeFromConfig(e)\n }\n }, [editor, defaultConfig])\n\n // value 变化,重置 HTML\n useEffect(() => {\n if (editor == null) return\n\n if (value === curValue) return // 如果和当前 html 值相等,则忽略\n\n // ------ 重新设置 HTML ------\n try {\n editor.setHtml(value)\n } catch (error) {\n console.error(error)\n }\n\n }, [value])\n\n useEffect(() => {\n if (ref.current == null) return\n if (editor != null) return\n // 防止重复渲染 当编辑器已经创建就不在创建了\n if (ref.current?.getAttribute('data-w-e-textarea')) return\n\n const newEditor = createEditor({\n selector: ref.current,\n config: {\n ...defaultConfig,\n onCreated: handleCreated,\n onChange: (e: IDomEditor)=> newEditor?.__react_on_change?.(e),\n onDestroyed: handleDestroyed,\n },\n content: defaultContent,\n html: defaultHtml || value,\n mode,\n })as ICustomDomEditor\n setEditor(newEditor)\n }, [editor])\n\n return <div style={style} ref={ref} className={className}></div>\n}\n\nexport default EditorComponent\n","/**\n * @description toolbar react component\n * @author wangfupeng\n */\n\nimport React, { useRef, useEffect } from 'react'\nimport * as wangEditor from '@wangeditor-next/editor'\n\ninterface IProps {\n editor: wangEditor.IDomEditor | null\n defaultConfig?: Partial<wangEditor.IToolbarConfig>\n mode?: string\n style?: object\n className?: string\n}\n\nfunction ToolbarComponent(props: IProps) {\n const { editor, defaultConfig = {}, mode = 'default', style = {}, className } = props\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (ref.current == null) return\n if (editor == null) return\n\n wangEditor.createToolbar({\n editor,\n selector: ref.current,\n config: defaultConfig,\n mode,\n })\n }, [editor])\n\n return <div style={style} ref={ref} className={className}></div>\n}\n\nexport default ToolbarComponent\n"],"names":["EditorComponent","props","_a","defaultContent","onCreated","_b","defaultHtml","_c","value","onChange","_d","defaultConfig","_e","mode","_f","style","className","ref","useRef","_g","__read","useState","editor","setEditor","_h","curValue","setCurValue","handleCreated","onCreatedFromConfig","handleDestroyed","onDestroyed","useEffect","__react_on_change","e","getHtml","onChangeFromConfig","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","call","content","html","React","createElement","ToolbarComponent","wangEditor","createToolbar"],"mappings":"6oBAwBA,SAASA,EAAgBC,GACf,IAAAC,EAAwID,EAArHE,eAAnBA,OAAiB,IAAAD,EAAA,GAAEA,EAAEE,EAAmHH,EAAKG,UAA7GC,EAAwGJ,EAAxFK,YAAhBA,OAAW,IAAAD,EAAG,GAAEA,EAAEE,EAAsFN,EAA5EO,MAAVA,OAAK,IAAAD,EAAG,GAAEA,EAAEE,EAA0ER,EAAKQ,SAArEC,EAAgET,EAAKU,cAArEA,OAAa,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAA4CX,EAAKY,KAAjDA,OAAI,IAAAD,EAAG,UAASA,EAAEE,EAA0Bb,EAAKc,MAA/BA,OAAK,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAAcf,YAC1IgB,EAAMC,EAAuB,MAC7BC,EAAAC,EAAsBC,EAAkC,MAAK,GAA5DC,EAAMH,EAAA,GAAEI,OACTC,EAAAJ,EAA0BC,EAAS,IAAG,GAArCI,EAAQD,EAAA,GAAEE,OAEXC,EAAgB,SAACL,GAEjBlB,GAAWA,EAAUkB,GAGjB,IAAWM,EAAwBjB,EAAaP,UACpDwB,GAAqBA,EAAoBN,IAGzCO,EAAkB,SAACP,GACf,IAAAQ,EAAgBnB,EAAamB,YACrCP,EAAU,MACPO,GACDA,EAAYR,IAuDhB,OAnDAS,GAAU,WACM,MAAVT,IAEJA,EAAOU,kBAAoB,SAACC,GAC1BP,EAAYO,EAAEC,WAGVzB,GAAUA,EAASwB,GAGf,IAAUE,EAAuBxB,EAAaF,SAClD0B,GAAoBA,EAAmBF,IAE/C,GAAG,CAACX,EAAQX,IAGZoB,GAAU,WACR,GAAc,MAAVT,GAEAd,IAAUiB,EAGd,IACEH,EAAOc,QAAQ5B,EAChB,CAAC,MAAO6B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC7B,IAEJuB,GAAU,iBACR,GAAmB,MAAfd,EAAIsB,SACM,MAAVjB,aAEApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAa,CAC7BC,SAAU1B,EAAIsB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAlC,GACH,CAAAP,UAAWuB,EACXlB,SAAU,SAACwB,GAAa,IAAA/B,EAAI,OAA+B,QAA/BA,EAAAuC,aAAA,EAAAA,EAAWT,yBAAoB,IAAA9B,OAAA,EAAAA,EAAA4C,KAAAL,EAAAR,EAAE,EAC7DH,YAAaD,IAEfkB,QAAS5C,EACT6C,KAAM1C,GAAeE,EACrBK,KAAIA,IAENU,EAAUkB,EAd0C,CAetD,GAAG,CAACnB,IAEG2B,EAAKC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,CCnFA,SAASmC,EAAiBlD,GAChB,IAAAqB,EAAwErB,EAAlEqB,OAAEpB,EAAgED,EAAKU,cAArEA,aAAgB,CAAE,EAAAT,EAAEG,EAA4CJ,EAA5BY,KAAhBA,OAAI,IAAAR,EAAG,UAASA,EAAEE,EAA0BN,QAA1Bc,OAAQ,IAAAR,EAAA,CAAE,IAAES,EAAcf,YAC1EgB,EAAMC,EAAuB,MAcnC,OAZAa,GAAU,WACW,MAAfd,EAAIsB,SACM,MAAVjB,GAEJ8B,EAAWC,cAAc,CACvB/B,OAAMA,EACNqB,SAAU1B,EAAIsB,QACdK,OAAQjC,EACRE,KAAIA,GAER,GAAG,CAACS,IAEG2B,EAAKC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Editor.tsx","../src/components/Toolbar.tsx"],"sourcesContent":["/**\r\n * @description editor react component\r\n * @author wangfupeng\r\n */\r\n\r\nimport React, { useRef, useEffect, useState } from 'react'\r\nimport {SlateDescendant, IEditorConfig, createEditor, IDomEditor, SlateEditor, SlateTransforms } from '@wangeditor-next/editor'\r\n\r\ninterface IProps {\r\n defaultContent?: SlateDescendant[]\r\n onCreated?: (editor: IDomEditor) => void\r\n defaultHtml?: string\r\n value?: string\r\n onChange: (editor: IDomEditor) => void\r\n defaultConfig: Partial<IEditorConfig>\r\n mode?: string\r\n style?: React.CSSProperties\r\n className?: string\r\n}\r\n\r\ninterface ICustomDomEditor extends IDomEditor {\r\n __react_on_change?: (editor: ICustomDomEditor) => void;\r\n}\r\n\r\nfunction EditorComponent(props: Partial<IProps>) {\r\n const { defaultContent = [], onCreated, defaultHtml = '', value = '', onChange, defaultConfig = {}, mode = 'default', style = {}, className } = props\r\n const ref = useRef<HTMLDivElement>(null)\r\n const [editor, setEditor] = useState<ICustomDomEditor | null>(null)\r\n const [curValue, setCurValue] = useState('')\r\n\r\n const handleCreated = (editor: IDomEditor) => {\r\n // 组件属性 onCreated\r\n if (onCreated) onCreated(editor)\r\n\r\n // 编辑器 配置 onCreated\r\n const { onCreated: onCreatedFromConfig } = defaultConfig\r\n if (onCreatedFromConfig) onCreatedFromConfig(editor)\r\n }\r\n\r\n const handleDestroyed = (editor: IDomEditor) => {\r\n const { onDestroyed } = defaultConfig\r\n setEditor(null)\r\n if(onDestroyed) {\r\n onDestroyed(editor)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (editor == null) return\r\n\r\n editor.__react_on_change = (e: IDomEditor) => {\r\n setCurValue(e.getHtml()) // 记录当前 html 值\r\n \r\n // 组件属性 onChange\r\n if (onChange) onChange(e)\r\n \r\n // 编辑器 配置 onChange\r\n const { onChange: onChangeFromConfig } = defaultConfig\r\n if (onChangeFromConfig) onChangeFromConfig(e)\r\n }\r\n }, [editor, defaultConfig])\r\n\r\n // value 变化,重置 HTML\r\n useEffect(() => {\r\n if (editor == null) return\r\n\r\n if (value === curValue) return // 如果和当前 html 值相等,则忽略\r\n\r\n // ------ 重新设置 HTML ------\r\n try {\r\n editor.setHtml(value)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n\r\n }, [value])\r\n\r\n useEffect(() => {\r\n if (ref.current == null) return\r\n if (editor != null) return\r\n // 防止重复渲染 当编辑器已经创建就不在创建了\r\n if (ref.current?.getAttribute('data-w-e-textarea')) return\r\n\r\n const newEditor = createEditor({\r\n selector: ref.current,\r\n config: {\r\n ...defaultConfig,\r\n onCreated: handleCreated,\r\n onChange: (e: IDomEditor)=> newEditor?.__react_on_change?.(e),\r\n onDestroyed: handleDestroyed,\r\n },\r\n content: defaultContent,\r\n html: defaultHtml || value,\r\n mode,\r\n })as ICustomDomEditor\r\n setEditor(newEditor)\r\n }, [editor])\r\n\r\n return <div style={style} ref={ref} className={className}></div>\r\n}\r\n\r\nexport default EditorComponent\r\n","/**\r\n * @description toolbar react component\r\n * @author wangfupeng\r\n */\r\n\r\nimport React, { useRef, useEffect } from 'react'\r\nimport * as wangEditor from '@wangeditor-next/editor'\r\n\r\ninterface IProps {\r\n editor: wangEditor.IDomEditor | null\r\n defaultConfig?: Partial<wangEditor.IToolbarConfig>\r\n mode?: string\r\n style?: object\r\n className?: string\r\n}\r\n\r\nfunction ToolbarComponent(props: IProps) {\r\n const { editor, defaultConfig = {}, mode = 'default', style = {}, className } = props\r\n const ref = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (ref.current == null) return\r\n if (editor == null) return\r\n if (ref.current?.getAttribute('data-w-e-toolbar')) return\r\n\r\n wangEditor.createToolbar({\r\n editor,\r\n selector: ref.current,\r\n config: defaultConfig,\r\n mode,\r\n })\r\n }, [editor])\r\n\r\n return <div style={style} ref={ref} className={className}></div>\r\n}\r\n\r\nexport default ToolbarComponent\r\n"],"names":["EditorComponent","props","_a","defaultContent","onCreated","_b","defaultHtml","_c","value","onChange","_d","defaultConfig","_e","mode","_f","style","className","ref","useRef","_g","__read","useState","editor","setEditor","_h","curValue","setCurValue","handleCreated","onCreatedFromConfig","handleDestroyed","onDestroyed","useEffect","__react_on_change","e","getHtml","onChangeFromConfig","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","call","content","html","React","createElement","ToolbarComponent","wangEditor","createToolbar"],"mappings":"6oBAwBA,SAASA,EAAgBC,GACf,IAAAC,EAAwID,EAArHE,eAAnBA,OAAiB,IAAAD,EAAA,GAAEA,EAAEE,EAAmHH,EAAKG,UAA7GC,EAAwGJ,EAAxFK,YAAhBA,OAAW,IAAAD,EAAG,GAAEA,EAAEE,EAAsFN,EAA5EO,MAAVA,OAAK,IAAAD,EAAG,GAAEA,EAAEE,EAA0ER,EAAKQ,SAArEC,EAAgET,EAAKU,cAArEA,OAAa,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAA4CX,EAAKY,KAAjDA,OAAI,IAAAD,EAAG,UAASA,EAAEE,EAA0Bb,EAAKc,MAA/BA,OAAK,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAAcf,YAC1IgB,EAAMC,EAAuB,MAC7BC,EAAAC,EAAsBC,EAAkC,MAAK,GAA5DC,EAAMH,EAAA,GAAEI,OACTC,EAAAJ,EAA0BC,EAAS,IAAG,GAArCI,EAAQD,EAAA,GAAEE,OAEXC,EAAgB,SAACL,GAEjBlB,GAAWA,EAAUkB,GAGjB,IAAWM,EAAwBjB,EAAaP,UACpDwB,GAAqBA,EAAoBN,IAGzCO,EAAkB,SAACP,GACf,IAAAQ,EAAgBnB,EAAamB,YACrCP,EAAU,MACPO,GACDA,EAAYR,IAuDhB,OAnDAS,GAAU,WACM,MAAVT,IAEJA,EAAOU,kBAAoB,SAACC,GAC1BP,EAAYO,EAAEC,WAGVzB,GAAUA,EAASwB,GAGf,IAAUE,EAAuBxB,EAAaF,SAClD0B,GAAoBA,EAAmBF,IAE/C,GAAG,CAACX,EAAQX,IAGZoB,GAAU,WACR,GAAc,MAAVT,GAEAd,IAAUiB,EAGd,IACEH,EAAOc,QAAQ5B,EAChB,CAAC,MAAO6B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC7B,IAEJuB,GAAU,iBACR,GAAmB,MAAfd,EAAIsB,SACM,MAAVjB,aAEApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAa,CAC7BC,SAAU1B,EAAIsB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAlC,GACH,CAAAP,UAAWuB,EACXlB,SAAU,SAACwB,GAAa,IAAA/B,EAAI,OAA+B,QAA/BA,EAAAuC,aAAA,EAAAA,EAAWT,yBAAoB,IAAA9B,OAAA,EAAAA,EAAA4C,KAAAL,EAAAR,EAAE,EAC7DH,YAAaD,IAEfkB,QAAS5C,EACT6C,KAAM1C,GAAeE,EACrBK,KAAIA,IAENU,EAAUkB,EAd0C,CAetD,GAAG,CAACnB,IAEG2B,EAAKC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,CCnFA,SAASmC,EAAiBlD,GAChB,IAAAqB,EAAwErB,EAAlEqB,OAAEpB,EAAgED,EAAKU,cAArEA,aAAgB,CAAE,EAAAT,EAAEG,EAA4CJ,EAA5BY,KAAhBA,OAAI,IAAAR,EAAG,UAASA,EAAEE,EAA0BN,QAA1Bc,OAAQ,IAAAR,EAAA,CAAE,IAAES,EAAcf,YAC1EgB,EAAMC,EAAuB,MAenC,OAbAa,GAAU,iBACW,MAAfd,EAAIsB,SACM,MAAVjB,aACApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAE9BY,EAAWC,cAAc,CACvB/B,OAAMA,EACNqB,SAAU1B,EAAIsB,QACdK,OAAQjC,EACRE,KAAIA,IAER,GAAG,CAACS,IAEG2B,EAAKC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@wangeditor-next/editor")):"function"==typeof define&&define.amd?define(["exports","react","@wangeditor-next/editor"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WangEditorForReact={},e.React,e.wangEditor)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=n(t),l=o(r),a=function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},a.apply(this,arguments)};function i(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,u=r.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(n=u.next()).done;)l.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=u.return)&&r.call(u)}finally{if(o)throw o.error}}return l}"function"==typeof SuppressedError&&SuppressedError,e.Editor=function(e){var n=e.defaultContent,o=void 0===n?[]:n,l=e.onCreated,f=e.defaultHtml,c=void 0===f?"":f,d=e.value,s=void 0===d?"":d,v=e.onChange,y=e.defaultConfig,p=void 0===y?{}:y,g=e.mode,m=void 0===g?"default":g,b=e.style,h=void 0===b?{}:b,E=e.className,_=t.useRef(null),j=i(t.useState(null),2),O=j[0],C=j[1],w=i(t.useState(""),2),x=w[0],S=w[1],N=function(e){l&&l(e);var t=p.onCreated;t&&t(e)},P=function(e){var t=p.onDestroyed;C(null),t&&t(e)};return t.useEffect((function(){null!=O&&(O.__react_on_change=function(e){S(e.getHtml()),v&&v(e);var t=p.onChange;t&&t(e)})}),[O,p]),t.useEffect((function(){if(null!=O&&s!==x)try{O.setHtml(s)}catch(e){console.error(e)}}),[s]),t.useEffect((function(){var e;if(null!=_.current&&null==O&&!(null===(e=_.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var t=r.createEditor({selector:_.current,config:a(a({},p),{onCreated:N,onChange:function(e){var r;return null===(r=null==t?void 0:t.__react_on_change)||void 0===r?void 0:r.call(t,e)},onDestroyed:P}),content:o,html:c||s,mode:m});C(t)}}),[O]),u.default.createElement("div",{style:h,ref:_,className:E})},e.Toolbar=function(e){var r=e.editor,n=e.defaultConfig,o=void 0===n?{}:n,a=e.mode,i=void 0===a?"default":a,f=e.style,c=void 0===f?{}:f,d=e.className,s=t.useRef(null);return t.useEffect((function(){null!=s.current&&null!=r&&l.createToolbar({editor:r,selector:s.current,config:o,mode:i})}),[r]),u.default.createElement("div",{style:c,ref:s,className:d})},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@wangeditor-next/editor")):"function"==typeof define&&define.amd?define(["exports","react","@wangeditor-next/editor"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WangEditorForReact={},e.React,e.wangEditor)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=n(t),a=o(r),l=function(){return l=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},l.apply(this,arguments)};function i(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,u=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=u.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=u.return)&&r.call(u)}finally{if(o)throw o.error}}return a}"function"==typeof SuppressedError&&SuppressedError,e.Editor=function(e){var n=e.defaultContent,o=void 0===n?[]:n,a=e.onCreated,f=e.defaultHtml,c=void 0===f?"":f,d=e.value,s=void 0===d?"":d,v=e.onChange,y=e.defaultConfig,p=void 0===y?{}:y,g=e.mode,b=void 0===g?"default":g,m=e.style,h=void 0===m?{}:m,E=e.className,_=t.useRef(null),j=i(t.useState(null),2),O=j[0],C=j[1],w=i(t.useState(""),2),x=w[0],S=w[1],N=function(e){a&&a(e);var t=p.onCreated;t&&t(e)},P=function(e){var t=p.onDestroyed;C(null),t&&t(e)};return t.useEffect((function(){null!=O&&(O.__react_on_change=function(e){S(e.getHtml()),v&&v(e);var t=p.onChange;t&&t(e)})}),[O,p]),t.useEffect((function(){if(null!=O&&s!==x)try{O.setHtml(s)}catch(e){console.error(e)}}),[s]),t.useEffect((function(){var e;if(null!=_.current&&null==O&&!(null===(e=_.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var t=r.createEditor({selector:_.current,config:l(l({},p),{onCreated:N,onChange:function(e){var r;return null===(r=null==t?void 0:t.__react_on_change)||void 0===r?void 0:r.call(t,e)},onDestroyed:P}),content:o,html:c||s,mode:b});C(t)}}),[O]),u.default.createElement("div",{style:h,ref:_,className:E})},e.Toolbar=function(e){var r=e.editor,n=e.defaultConfig,o=void 0===n?{}:n,l=e.mode,i=void 0===l?"default":l,f=e.style,c=void 0===f?{}:f,d=e.className,s=t.useRef(null);return t.useEffect((function(){var e;null!=s.current&&null!=r&&((null===(e=s.current)||void 0===e?void 0:e.getAttribute("data-w-e-toolbar"))||a.createToolbar({editor:r,selector:s.current,config:o,mode:i}))}),[r]),u.default.createElement("div",{style:c,ref:s,className:d})},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/Editor.tsx","../src/components/Toolbar.tsx"],"sourcesContent":["/**\n * @description editor react component\n * @author wangfupeng\n */\n\nimport React, { useRef, useEffect, useState } from 'react'\nimport {SlateDescendant, IEditorConfig, createEditor, IDomEditor, SlateEditor, SlateTransforms } from '@wangeditor-next/editor'\n\ninterface IProps {\n defaultContent?: SlateDescendant[]\n onCreated?: (editor: IDomEditor) => void\n defaultHtml?: string\n value?: string\n onChange: (editor: IDomEditor) => void\n defaultConfig: Partial<IEditorConfig>\n mode?: string\n style?: React.CSSProperties\n className?: string\n}\n\ninterface ICustomDomEditor extends IDomEditor {\n __react_on_change?: (editor: ICustomDomEditor) => void;\n}\n\nfunction EditorComponent(props: Partial<IProps>) {\n const { defaultContent = [], onCreated, defaultHtml = '', value = '', onChange, defaultConfig = {}, mode = 'default', style = {}, className } = props\n const ref = useRef<HTMLDivElement>(null)\n const [editor, setEditor] = useState<ICustomDomEditor | null>(null)\n const [curValue, setCurValue] = useState('')\n\n const handleCreated = (editor: IDomEditor) => {\n // 组件属性 onCreated\n if (onCreated) onCreated(editor)\n\n // 编辑器 配置 onCreated\n const { onCreated: onCreatedFromConfig } = defaultConfig\n if (onCreatedFromConfig) onCreatedFromConfig(editor)\n }\n\n const handleDestroyed = (editor: IDomEditor) => {\n const { onDestroyed } = defaultConfig\n setEditor(null)\n if(onDestroyed) {\n onDestroyed(editor)\n }\n }\n\n useEffect(() => {\n if (editor == null) return\n\n editor.__react_on_change = (e: IDomEditor) => {\n setCurValue(e.getHtml()) // 记录当前 html 值\n \n // 组件属性 onChange\n if (onChange) onChange(e)\n \n // 编辑器 配置 onChange\n const { onChange: onChangeFromConfig } = defaultConfig\n if (onChangeFromConfig) onChangeFromConfig(e)\n }\n }, [editor, defaultConfig])\n\n // value 变化,重置 HTML\n useEffect(() => {\n if (editor == null) return\n\n if (value === curValue) return // 如果和当前 html 值相等,则忽略\n\n // ------ 重新设置 HTML ------\n try {\n editor.setHtml(value)\n } catch (error) {\n console.error(error)\n }\n\n }, [value])\n\n useEffect(() => {\n if (ref.current == null) return\n if (editor != null) return\n // 防止重复渲染 当编辑器已经创建就不在创建了\n if (ref.current?.getAttribute('data-w-e-textarea')) return\n\n const newEditor = createEditor({\n selector: ref.current,\n config: {\n ...defaultConfig,\n onCreated: handleCreated,\n onChange: (e: IDomEditor)=> newEditor?.__react_on_change?.(e),\n onDestroyed: handleDestroyed,\n },\n content: defaultContent,\n html: defaultHtml || value,\n mode,\n })as ICustomDomEditor\n setEditor(newEditor)\n }, [editor])\n\n return <div style={style} ref={ref} className={className}></div>\n}\n\nexport default EditorComponent\n","/**\n * @description toolbar react component\n * @author wangfupeng\n */\n\nimport React, { useRef, useEffect } from 'react'\nimport * as wangEditor from '@wangeditor-next/editor'\n\ninterface IProps {\n editor: wangEditor.IDomEditor | null\n defaultConfig?: Partial<wangEditor.IToolbarConfig>\n mode?: string\n style?: object\n className?: string\n}\n\nfunction ToolbarComponent(props: IProps) {\n const { editor, defaultConfig = {}, mode = 'default', style = {}, className } = props\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (ref.current == null) return\n if (editor == null) return\n\n wangEditor.createToolbar({\n editor,\n selector: ref.current,\n config: defaultConfig,\n mode,\n })\n }, [editor])\n\n return <div style={style} ref={ref} className={className}></div>\n}\n\nexport default ToolbarComponent\n"],"names":["props","_a","defaultContent","onCreated","_b","defaultHtml","_c","value","onChange","_d","defaultConfig","_e","mode","_f","style","className","ref","useRef","_g","__read","useState","editor","setEditor","_h","curValue","setCurValue","handleCreated","onCreatedFromConfig","handleDestroyed","onDestroyed","useEffect","__react_on_change","e","getHtml","onChangeFromConfig","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","call","content","html","React","createElement","wangEditor","createToolbar"],"mappings":"wwCAwBA,SAAyBA,GACf,IAAAC,EAAwID,EAArHE,eAAnBA,OAAiB,IAAAD,EAAA,GAAEA,EAAEE,EAAmHH,EAAKG,UAA7GC,EAAwGJ,EAAxFK,YAAhBA,OAAW,IAAAD,EAAG,GAAEA,EAAEE,EAAsFN,EAA5EO,MAAVA,OAAK,IAAAD,EAAG,GAAEA,EAAEE,EAA0ER,EAAKQ,SAArEC,EAAgET,EAAKU,cAArEA,OAAa,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAA4CX,EAAKY,KAAjDA,OAAI,IAAAD,EAAG,UAASA,EAAEE,EAA0Bb,EAAKc,MAA/BA,OAAK,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAAcf,YAC1IgB,EAAMC,SAAuB,MAC7BC,EAAAC,EAAsBC,EAAQA,SAA0B,MAAK,GAA5DC,EAAMH,EAAA,GAAEI,OACTC,EAAAJ,EAA0BC,EAAQA,SAAC,IAAG,GAArCI,EAAQD,EAAA,GAAEE,OAEXC,EAAgB,SAACL,GAEjBlB,GAAWA,EAAUkB,GAGjB,IAAWM,EAAwBjB,EAAaP,UACpDwB,GAAqBA,EAAoBN,IAGzCO,EAAkB,SAACP,GACf,IAAAQ,EAAgBnB,EAAamB,YACrCP,EAAU,MACPO,GACDA,EAAYR,IAuDhB,OAnDAS,EAAAA,WAAU,WACM,MAAVT,IAEJA,EAAOU,kBAAoB,SAACC,GAC1BP,EAAYO,EAAEC,WAGVzB,GAAUA,EAASwB,GAGf,IAAUE,EAAuBxB,EAAaF,SAClD0B,GAAoBA,EAAmBF,IAE/C,GAAG,CAACX,EAAQX,IAGZoB,EAAAA,WAAU,WACR,GAAc,MAAVT,GAEAd,IAAUiB,EAGd,IACEH,EAAOc,QAAQ5B,EAChB,CAAC,MAAO6B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC7B,IAEJuB,EAAAA,WAAU,iBACR,GAAmB,MAAfd,EAAIsB,SACM,MAAVjB,aAEApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAAA,aAAa,CAC7BC,SAAU1B,EAAIsB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAlC,GACH,CAAAP,UAAWuB,EACXlB,SAAU,SAACwB,GAAa,IAAA/B,EAAI,OAA+B,QAA/BA,EAAAuC,aAAA,EAAAA,EAAWT,yBAAoB,IAAA9B,OAAA,EAAAA,EAAA4C,KAAAL,EAAAR,EAAE,EAC7DH,YAAaD,IAEfkB,QAAS5C,EACT6C,KAAM1C,GAAeE,EACrBK,KAAIA,IAENU,EAAUkB,EAd0C,CAetD,GAAG,CAACnB,IAEG2B,EAAK,QAAAC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,YCnFA,SAA0Bf,GAChB,IAAAqB,EAAwErB,EAAlEqB,OAAEpB,EAAgED,EAAKU,cAArEA,aAAgB,CAAE,EAAAT,EAAEG,EAA4CJ,EAA5BY,KAAhBA,OAAI,IAAAR,EAAG,UAASA,EAAEE,EAA0BN,QAA1Bc,OAAQ,IAAAR,EAAA,CAAE,IAAES,EAAcf,YAC1EgB,EAAMC,SAAuB,MAcnC,OAZAa,EAAAA,WAAU,WACW,MAAfd,EAAIsB,SACM,MAAVjB,GAEJ6B,EAAWC,cAAc,CACvB9B,OAAMA,EACNqB,SAAU1B,EAAIsB,QACdK,OAAQjC,EACRE,KAAIA,GAER,GAAG,CAACS,IAEG2B,EAAK,QAAAC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/Editor.tsx","../src/components/Toolbar.tsx"],"sourcesContent":["/**\r\n * @description editor react component\r\n * @author wangfupeng\r\n */\r\n\r\nimport React, { useRef, useEffect, useState } from 'react'\r\nimport {SlateDescendant, IEditorConfig, createEditor, IDomEditor, SlateEditor, SlateTransforms } from '@wangeditor-next/editor'\r\n\r\ninterface IProps {\r\n defaultContent?: SlateDescendant[]\r\n onCreated?: (editor: IDomEditor) => void\r\n defaultHtml?: string\r\n value?: string\r\n onChange: (editor: IDomEditor) => void\r\n defaultConfig: Partial<IEditorConfig>\r\n mode?: string\r\n style?: React.CSSProperties\r\n className?: string\r\n}\r\n\r\ninterface ICustomDomEditor extends IDomEditor {\r\n __react_on_change?: (editor: ICustomDomEditor) => void;\r\n}\r\n\r\nfunction EditorComponent(props: Partial<IProps>) {\r\n const { defaultContent = [], onCreated, defaultHtml = '', value = '', onChange, defaultConfig = {}, mode = 'default', style = {}, className } = props\r\n const ref = useRef<HTMLDivElement>(null)\r\n const [editor, setEditor] = useState<ICustomDomEditor | null>(null)\r\n const [curValue, setCurValue] = useState('')\r\n\r\n const handleCreated = (editor: IDomEditor) => {\r\n // 组件属性 onCreated\r\n if (onCreated) onCreated(editor)\r\n\r\n // 编辑器 配置 onCreated\r\n const { onCreated: onCreatedFromConfig } = defaultConfig\r\n if (onCreatedFromConfig) onCreatedFromConfig(editor)\r\n }\r\n\r\n const handleDestroyed = (editor: IDomEditor) => {\r\n const { onDestroyed } = defaultConfig\r\n setEditor(null)\r\n if(onDestroyed) {\r\n onDestroyed(editor)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (editor == null) return\r\n\r\n editor.__react_on_change = (e: IDomEditor) => {\r\n setCurValue(e.getHtml()) // 记录当前 html 值\r\n \r\n // 组件属性 onChange\r\n if (onChange) onChange(e)\r\n \r\n // 编辑器 配置 onChange\r\n const { onChange: onChangeFromConfig } = defaultConfig\r\n if (onChangeFromConfig) onChangeFromConfig(e)\r\n }\r\n }, [editor, defaultConfig])\r\n\r\n // value 变化,重置 HTML\r\n useEffect(() => {\r\n if (editor == null) return\r\n\r\n if (value === curValue) return // 如果和当前 html 值相等,则忽略\r\n\r\n // ------ 重新设置 HTML ------\r\n try {\r\n editor.setHtml(value)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n\r\n }, [value])\r\n\r\n useEffect(() => {\r\n if (ref.current == null) return\r\n if (editor != null) return\r\n // 防止重复渲染 当编辑器已经创建就不在创建了\r\n if (ref.current?.getAttribute('data-w-e-textarea')) return\r\n\r\n const newEditor = createEditor({\r\n selector: ref.current,\r\n config: {\r\n ...defaultConfig,\r\n onCreated: handleCreated,\r\n onChange: (e: IDomEditor)=> newEditor?.__react_on_change?.(e),\r\n onDestroyed: handleDestroyed,\r\n },\r\n content: defaultContent,\r\n html: defaultHtml || value,\r\n mode,\r\n })as ICustomDomEditor\r\n setEditor(newEditor)\r\n }, [editor])\r\n\r\n return <div style={style} ref={ref} className={className}></div>\r\n}\r\n\r\nexport default EditorComponent\r\n","/**\r\n * @description toolbar react component\r\n * @author wangfupeng\r\n */\r\n\r\nimport React, { useRef, useEffect } from 'react'\r\nimport * as wangEditor from '@wangeditor-next/editor'\r\n\r\ninterface IProps {\r\n editor: wangEditor.IDomEditor | null\r\n defaultConfig?: Partial<wangEditor.IToolbarConfig>\r\n mode?: string\r\n style?: object\r\n className?: string\r\n}\r\n\r\nfunction ToolbarComponent(props: IProps) {\r\n const { editor, defaultConfig = {}, mode = 'default', style = {}, className } = props\r\n const ref = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (ref.current == null) return\r\n if (editor == null) return\r\n if (ref.current?.getAttribute('data-w-e-toolbar')) return\r\n\r\n wangEditor.createToolbar({\r\n editor,\r\n selector: ref.current,\r\n config: defaultConfig,\r\n mode,\r\n })\r\n }, [editor])\r\n\r\n return <div style={style} ref={ref} className={className}></div>\r\n}\r\n\r\nexport default ToolbarComponent\r\n"],"names":["props","_a","defaultContent","onCreated","_b","defaultHtml","_c","value","onChange","_d","defaultConfig","_e","mode","_f","style","className","ref","useRef","_g","__read","useState","editor","setEditor","_h","curValue","setCurValue","handleCreated","onCreatedFromConfig","handleDestroyed","onDestroyed","useEffect","__react_on_change","e","getHtml","onChangeFromConfig","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","call","content","html","React","createElement","wangEditor","createToolbar"],"mappings":"wwCAwBA,SAAyBA,GACf,IAAAC,EAAwID,EAArHE,eAAnBA,OAAiB,IAAAD,EAAA,GAAEA,EAAEE,EAAmHH,EAAKG,UAA7GC,EAAwGJ,EAAxFK,YAAhBA,OAAW,IAAAD,EAAG,GAAEA,EAAEE,EAAsFN,EAA5EO,MAAVA,OAAK,IAAAD,EAAG,GAAEA,EAAEE,EAA0ER,EAAKQ,SAArEC,EAAgET,EAAKU,cAArEA,OAAa,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAA4CX,EAAKY,KAAjDA,OAAI,IAAAD,EAAG,UAASA,EAAEE,EAA0Bb,EAAKc,MAA/BA,OAAK,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAAcf,YAC1IgB,EAAMC,SAAuB,MAC7BC,EAAAC,EAAsBC,EAAQA,SAA0B,MAAK,GAA5DC,EAAMH,EAAA,GAAEI,OACTC,EAAAJ,EAA0BC,EAAQA,SAAC,IAAG,GAArCI,EAAQD,EAAA,GAAEE,OAEXC,EAAgB,SAACL,GAEjBlB,GAAWA,EAAUkB,GAGjB,IAAWM,EAAwBjB,EAAaP,UACpDwB,GAAqBA,EAAoBN,IAGzCO,EAAkB,SAACP,GACf,IAAAQ,EAAgBnB,EAAamB,YACrCP,EAAU,MACPO,GACDA,EAAYR,IAuDhB,OAnDAS,EAAAA,WAAU,WACM,MAAVT,IAEJA,EAAOU,kBAAoB,SAACC,GAC1BP,EAAYO,EAAEC,WAGVzB,GAAUA,EAASwB,GAGf,IAAUE,EAAuBxB,EAAaF,SAClD0B,GAAoBA,EAAmBF,IAE/C,GAAG,CAACX,EAAQX,IAGZoB,EAAAA,WAAU,WACR,GAAc,MAAVT,GAEAd,IAAUiB,EAGd,IACEH,EAAOc,QAAQ5B,EAChB,CAAC,MAAO6B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC7B,IAEJuB,EAAAA,WAAU,iBACR,GAAmB,MAAfd,EAAIsB,SACM,MAAVjB,aAEApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAAA,aAAa,CAC7BC,SAAU1B,EAAIsB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAlC,GACH,CAAAP,UAAWuB,EACXlB,SAAU,SAACwB,GAAa,IAAA/B,EAAI,OAA+B,QAA/BA,EAAAuC,aAAA,EAAAA,EAAWT,yBAAoB,IAAA9B,OAAA,EAAAA,EAAA4C,KAAAL,EAAAR,EAAE,EAC7DH,YAAaD,IAEfkB,QAAS5C,EACT6C,KAAM1C,GAAeE,EACrBK,KAAIA,IAENU,EAAUkB,EAd0C,CAetD,GAAG,CAACnB,IAEG2B,EAAK,QAAAC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,YCnFA,SAA0Bf,GAChB,IAAAqB,EAAwErB,EAAlEqB,OAAEpB,EAAgED,EAAKU,cAArEA,aAAgB,CAAE,EAAAT,EAAEG,EAA4CJ,EAA5BY,KAAhBA,OAAI,IAAAR,EAAG,UAASA,EAAEE,EAA0BN,QAA1Bc,OAAQ,IAAAR,EAAA,CAAE,IAAES,EAAcf,YAC1EgB,EAAMC,SAAuB,MAenC,OAbAa,EAAAA,WAAU,iBACW,MAAfd,EAAIsB,SACM,MAAVjB,aACApB,EAAAe,EAAIsB,8BAASC,aAAa,sBAE9BW,EAAWC,cAAc,CACvB9B,OAAMA,EACNqB,SAAU1B,EAAIsB,QACdK,OAAQjC,EACRE,KAAIA,IAER,GAAG,CAACS,IAEG2B,EAAK,QAAAC,cAAA,MAAA,CAAAnC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
package/package.json CHANGED
@@ -1,98 +1,98 @@
1
- {
2
- "name": "@wangeditor-next/editor-for-react",
3
- "version": "1.0.8",
4
- "description": "wangEditor component for React",
5
- "author": "hahaaha <390519764@qq.com>",
6
- "contributors": [],
7
- "homepage": "https://github.com/cycleccc/wangEditor-for-react#readme",
8
- "license": "MIT",
9
- "types": "dist/index.d.ts",
10
- "main": "dist/index.js",
11
- "module": "dist/index.esm.js",
12
- "browser": {
13
- "./dist/index.js": "./dist/index.js",
14
- "./dist/index.esm.js": "./dist/index.esm.js"
15
- },
16
- "keywords": [
17
- "wangEditor",
18
- "wangEditor-next",
19
- "富文本编辑器",
20
- "富文本",
21
- "react"
22
- ],
23
- "directories": {
24
- "lib": "dist",
25
- "test": "__tests__"
26
- },
27
- "files": [
28
- "dist"
29
- ],
30
- "repository": {
31
- "type": "git",
32
- "url": "git+https://github.com/cycleccc/wangEditor-for-react.git"
33
- },
34
- "scripts": {
35
- "test": "jest",
36
- "test-c": "jest --coverage",
37
- "example": "cross-env NODE_ENV=development:example rollup -c rollup.example.config.js -w",
38
- "dev": "cross-env NODE_ENV=development rollup -c rollup.config.js",
39
- "dev-watch": "cross-env NODE_ENV=development rollup -c rollup.config.js -w",
40
- "build": "cross-env NODE_ENV=production rollup -c rollup.config.js",
41
- "dev-size-stats": "cross-env NODE_ENV=development:size_stats rollup -c rollup.config.js",
42
- "size-stats": "cross-env NODE_ENV=production:size_stats rollup -c rollup.config.js",
43
- "release": "release-it"
44
- },
45
- "bugs": {
46
- "url": "https://github.com/cycleccc/wangEditor-for-react/issues"
47
- },
48
- "peerDependencies": {
49
- "@wangeditor-next/core": ">=1.5.5",
50
- "@wangeditor-next/editor": ">=5.3.12",
51
- "react": ">=17.0.2",
52
- "react-dom": ">=17.0.2"
53
- },
54
- "devDependencies": {
55
- "@babel/core": "^7.16.0",
56
- "@babel/plugin-transform-runtime": "^7.16.0",
57
- "@babel/preset-env": "^7.16.0",
58
- "@babel/preset-react": "^7.16.0",
59
- "@babel/preset-typescript": "^7.16.0",
60
- "@rollup/plugin-babel": "^5.3.0",
61
- "@rollup/plugin-commonjs": "^21.0.1",
62
- "@rollup/plugin-json": "^4.1.0",
63
- "@rollup/plugin-node-resolve": "^13.0.6",
64
- "@rollup/plugin-replace": "^3.0.0",
65
- "@testing-library/jest-dom": "^5.15.0",
66
- "@testing-library/react": "^12.1.2",
67
- "@types/jest": "^27.0.3",
68
- "@types/react": "^17.0.13",
69
- "@types/react-dom": "^17.0.8",
70
- "@wangeditor-next/core": "^1.5.5",
71
- "@wangeditor-next/editor": "^5.3.12",
72
- "autoprefixer": "^10.4.0",
73
- "babel-jest": "^27.3.1",
74
- "cross-env": "^7.0.3",
75
- "jest": "^27.3.1",
76
- "lodash": "^4.17.21",
77
- "postcss": "^8.3.11",
78
- "react": "^17.0.2",
79
- "react-dom": "^17.0.2",
80
- "release-it": "^14.11.8",
81
- "rollup": "^2.59.0",
82
- "rollup-plugin-cleanup": "^3.2.1",
83
- "rollup-plugin-copy": "^3.4.0",
84
- "rollup-plugin-delete": "^2.0.0",
85
- "rollup-plugin-generate-html-template": "^1.7.0",
86
- "rollup-plugin-peer-deps-external": "^2.2.4",
87
- "rollup-plugin-postcss": "^4.0.1",
88
- "rollup-plugin-serve": "^1.1.0",
89
- "rollup-plugin-terser": "^7.0.2",
90
- "rollup-plugin-typescript2": "^0.31.0",
91
- "rollup-plugin-visualizer": "^5.5.2",
92
- "ts-jest": "^27.0.7",
93
- "typescript": "^4.4.4",
94
- "@antfu/eslint-config": "^2.23.2",
95
- "eslint": "9.5.0"
96
- },
97
- "dependencies": {}
98
- }
1
+ {
2
+ "name": "@wangeditor-next/editor-for-react",
3
+ "version": "1.0.9",
4
+ "description": "wangEditor component for React",
5
+ "author": "hahaaha <390519764@qq.com>",
6
+ "contributors": [],
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/cycleccc/wangEditor-for-react#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/cycleccc/wangEditor-for-react.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/cycleccc/wangEditor-for-react/issues"
15
+ },
16
+ "keywords": [
17
+ "wangEditor",
18
+ "wangEditor-next",
19
+ "富文本编辑器",
20
+ "富文本",
21
+ "react"
22
+ ],
23
+ "main": "dist/index.js",
24
+ "module": "dist/index.esm.js",
25
+ "types": "dist/index.d.ts",
26
+ "browser": {
27
+ "./dist/index.esm.js": "./dist/index.esm.js",
28
+ "./dist/index.js": "./dist/index.js"
29
+ },
30
+ "directories": {
31
+ "lib": "dist",
32
+ "test": "__tests__"
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "scripts": {
38
+ "test": "jest",
39
+ "test-c": "jest --coverage",
40
+ "example": "cross-env NODE_ENV=development:example rollup -c rollup.example.config.js -w",
41
+ "dev": "cross-env NODE_ENV=development rollup -c rollup.config.js",
42
+ "dev-watch": "cross-env NODE_ENV=development rollup -c rollup.config.js -w",
43
+ "build": "cross-env NODE_ENV=production rollup -c rollup.config.js",
44
+ "dev-size-stats": "cross-env NODE_ENV=development:size_stats rollup -c rollup.config.js",
45
+ "size-stats": "cross-env NODE_ENV=production:size_stats rollup -c rollup.config.js",
46
+ "release": "release-it"
47
+ },
48
+ "peerDependencies": {
49
+ "@wangeditor-next/core": ">=1.5.5",
50
+ "@wangeditor-next/editor": ">=5.3.12",
51
+ "react": ">=17.0.2",
52
+ "react-dom": ">=17.0.2"
53
+ },
54
+ "devDependencies": {
55
+ "@antfu/eslint-config": "^2.23.2",
56
+ "@babel/core": "^7.16.0",
57
+ "@babel/plugin-transform-runtime": "^7.16.0",
58
+ "@babel/preset-env": "^7.16.0",
59
+ "@babel/preset-react": "^7.16.0",
60
+ "@babel/preset-typescript": "^7.16.0",
61
+ "@rollup/plugin-babel": "^5.3.0",
62
+ "@rollup/plugin-commonjs": "^21.0.1",
63
+ "@rollup/plugin-json": "^4.1.0",
64
+ "@rollup/plugin-node-resolve": "^13.0.6",
65
+ "@rollup/plugin-replace": "^3.0.0",
66
+ "@testing-library/jest-dom": "^5.15.0",
67
+ "@testing-library/react": "^12.1.2",
68
+ "@types/jest": "^27.0.3",
69
+ "@types/react": "^17.0.13",
70
+ "@types/react-dom": "^17.0.8",
71
+ "@wangeditor-next/core": "^1.5.5",
72
+ "@wangeditor-next/editor": "^5.3.12",
73
+ "autoprefixer": "^10.4.0",
74
+ "babel-jest": "^27.3.1",
75
+ "cross-env": "^7.0.3",
76
+ "eslint": "9.5.0",
77
+ "jest": "^27.3.1",
78
+ "lodash": "^4.17.21",
79
+ "postcss": "^8.3.11",
80
+ "react": "^17.0.2",
81
+ "react-dom": "^17.0.2",
82
+ "release-it": "^14.11.8",
83
+ "rollup": "^2.59.0",
84
+ "rollup-plugin-cleanup": "^3.2.1",
85
+ "rollup-plugin-copy": "^3.4.0",
86
+ "rollup-plugin-delete": "^2.0.0",
87
+ "rollup-plugin-generate-html-template": "^1.7.0",
88
+ "rollup-plugin-peer-deps-external": "^2.2.4",
89
+ "rollup-plugin-postcss": "^4.0.1",
90
+ "rollup-plugin-serve": "^1.1.0",
91
+ "rollup-plugin-terser": "^7.0.2",
92
+ "rollup-plugin-typescript2": "^0.31.0",
93
+ "rollup-plugin-visualizer": "^5.5.2",
94
+ "ts-jest": "^27.0.7",
95
+ "typescript": "^4.4.4"
96
+ },
97
+ "packageManager": "yarn@4.5.1+sha512.341db9396b6e289fecc30cd7ab3af65060e05ebff4b3b47547b278b9e67b08f485ecd8c79006b405446262142c7a38154445ef7f17c1d5d1de7d90bf9ce7054d"
98
+ }