@wangeditor-next/editor-for-react 1.0.6 → 1.0.7-0
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/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +2 -175
- package/dist/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useRef as r,useState as t,useEffect as o}from"react";import*as n 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,o=arguments.length;t<o;t++)for(var n in r=arguments[t])Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);return e},a.apply(this,arguments)};function i(e,r){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var o,n,l=t.call(e),a=[];try{for(;(void 0===r||r-- >0)&&!(o=l.next()).done;)a.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}return a}function u(n){var u=n.defaultContent,c=void 0===u?[]:u,d=n.onCreated,f=n.defaultHtml,s=void 0===f?"":f,v=n.value,m=void 0===v?"":v,y=n.onChange,p=n.defaultConfig,g=void 0===p?{}:p,h=n.mode,C=void 0===h?"default":h,b=n.style,w=void 0===b?{}:b,x=n.className,E=r(null),N=i(t(null),2),S=N[0],H=N[1],O=i(t(""),2),j=O[0],D=O[1],T=function(e){d&&d(e);var r=g.onCreated;r&&r(e)},A=function(e){D(e.getHtml()),y&&y(e);var r=g.onChange;r&&r(e)},P=function(e){var r=g.onDestroyed;H(null),r&&r(e)};return o((function(){if(null!=S&&m!==j)try{S.setHtml(m)}catch(e){console.error(e)}}),[m]),o((function(){var e;if(null!=E.current&&null==S&&!(null===(e=E.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var r=l({selector:E.current,config:a(a({},g),{onCreated:T,onChange:A,onDestroyed:P}),content:c,html:s||m,mode:C});H(r)}}),[S]),e.createElement("div",{style:w,ref:E,className:x})}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,s=t.className,v=r(null);return o((function(){null!=v.current&&null!=l&&n.createToolbar({editor:l,selector:v.current,config:i,mode:c})}),[l]),e.createElement("div",{style:f,ref:v,className:s})}"function"==typeof SuppressedError&&SuppressedError;export{u as Editor,c as Toolbar};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +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\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<IDomEditor | 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 handleChanged = (editor: IDomEditor) => {\n setCurValue(editor.getHtml()) // 记录当前 html 值\n\n // 组件属性 onChange\n if (onChange) onChange(editor)\n\n // 编辑器 配置 onChange\n const { onChange: onChangeFromConfig } = defaultConfig\n if (onChangeFromConfig) onChangeFromConfig(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 // 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: handleChanged,\n onDestroyed: handleDestroyed,\n },\n content: defaultContent,\n html: defaultHtml || value,\n mode,\n })\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","handleChanged","getHtml","onChangeFromConfig","handleDestroyed","onDestroyed","useEffect","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","content","html","React","createElement","ToolbarComponent","wangEditor","createToolbar"],"mappings":"6oBAoBA,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,EAA4B,MAAK,GAAtDC,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,EAAgB,SAACP,GACrBI,EAAYJ,EAAOQ,WAGfrB,GAAUA,EAASa,GAGf,IAAUS,EAAuBpB,EAAaF,SAClDsB,GAAoBA,EAAmBT,IAGvCU,EAAkB,SAACV,GACf,IAAAW,EAAgBtB,EAAasB,YACrCV,EAAU,MACPU,GACDA,EAAYX,IAwChB,OAnCAY,GAAU,WACR,GAAc,MAAVZ,GAEAd,IAAUiB,EAGd,IACEH,EAAOa,QAAQ3B,EAChB,CAAC,MAAO4B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC5B,IAEJ0B,GAAU,iBACR,GAAmB,MAAfjB,EAAIqB,SACM,MAAVhB,aAEApB,EAAAe,EAAIqB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAa,CAC7BC,SAAUzB,EAAIqB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAjC,GACH,CAAAP,UAAWuB,EACXlB,SAAUoB,EACVI,YAAaD,IAEfa,QAAS1C,EACT2C,KAAMxC,GAAeE,EACrBK,KAAIA,IAENU,EAAUiB,EAd0C,CAetD,GAAG,CAAClB,IAEGyB,EAAKC,cAAA,MAAA,CAAAjC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,CC3EA,SAASiC,EAAiBhD,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,OAZAgB,GAAU,WACW,MAAfjB,EAAIqB,SACM,MAAVhB,GAEJ4B,EAAWC,cAAc,CACvB7B,OAAMA,EACNoB,SAAUzB,EAAIqB,QACdK,OAAQhC,EACRE,KAAIA,GAER,GAAG,CAACS,IAEGyB,EAAKC,cAAA,MAAA,CAAAjC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
|
package/dist/index.js
CHANGED
|
@@ -1,175 +1,2 @@
|
|
|
1
|
-
(function (
|
|
2
|
-
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react', '@wangeditor-next/editor'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.WangEditorForReact = {}, global.React, global.wangEditor));
|
|
5
|
-
})(this, (function (exports, React, wangEditor) { 'use strict';
|
|
6
|
-
|
|
7
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
-
|
|
9
|
-
function _interopNamespace(e) {
|
|
10
|
-
if (e && e.__esModule) return e;
|
|
11
|
-
var n = Object.create(null);
|
|
12
|
-
if (e) {
|
|
13
|
-
Object.keys(e).forEach(function (k) {
|
|
14
|
-
if (k !== 'default') {
|
|
15
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
get: function () { return e[k]; }
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
n["default"] = e;
|
|
24
|
-
return Object.freeze(n);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
28
|
-
var wangEditor__namespace = /*#__PURE__*/_interopNamespace(wangEditor);
|
|
29
|
-
|
|
30
|
-
/******************************************************************************
|
|
31
|
-
Copyright (c) Microsoft Corporation.
|
|
32
|
-
|
|
33
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
34
|
-
purpose with or without fee is hereby granted.
|
|
35
|
-
|
|
36
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
37
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
38
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
39
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
40
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
41
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
42
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
43
|
-
***************************************************************************** */
|
|
44
|
-
|
|
45
|
-
var __assign = function() {
|
|
46
|
-
__assign = Object.assign || function __assign(t) {
|
|
47
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
48
|
-
s = arguments[i];
|
|
49
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
50
|
-
}
|
|
51
|
-
return t;
|
|
52
|
-
};
|
|
53
|
-
return __assign.apply(this, arguments);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
function __read(o, n) {
|
|
57
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
58
|
-
if (!m) return o;
|
|
59
|
-
var i = m.call(o), r, ar = [], e;
|
|
60
|
-
try {
|
|
61
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
62
|
-
}
|
|
63
|
-
catch (error) { e = { error: error }; }
|
|
64
|
-
finally {
|
|
65
|
-
try {
|
|
66
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
67
|
-
}
|
|
68
|
-
finally { if (e) throw e.error; }
|
|
69
|
-
}
|
|
70
|
-
return ar;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
74
|
-
var e = new Error(message);
|
|
75
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @description editor react component
|
|
80
|
-
* @author wangfupeng
|
|
81
|
-
*/
|
|
82
|
-
function EditorComponent(props) {
|
|
83
|
-
var _a = props.defaultContent, defaultContent = _a === void 0 ? [] : _a, onCreated = props.onCreated, _b = props.defaultHtml, defaultHtml = _b === void 0 ? '' : _b, _c = props.value, value = _c === void 0 ? '' : _c, onChange = props.onChange, _d = props.defaultConfig, defaultConfig = _d === void 0 ? {} : _d, _e = props.mode, mode = _e === void 0 ? 'default' : _e, _f = props.style, style = _f === void 0 ? {} : _f, className = props.className;
|
|
84
|
-
var ref = React.useRef(null);
|
|
85
|
-
var _g = __read(React.useState(null), 2), editor = _g[0], setEditor = _g[1];
|
|
86
|
-
var _h = __read(React.useState(''), 2), curValue = _h[0], setCurValue = _h[1];
|
|
87
|
-
var handleCreated = function (editor) {
|
|
88
|
-
// 组件属性 onCreated
|
|
89
|
-
if (onCreated)
|
|
90
|
-
onCreated(editor);
|
|
91
|
-
// 编辑器 配置 onCreated
|
|
92
|
-
var onCreatedFromConfig = defaultConfig.onCreated;
|
|
93
|
-
if (onCreatedFromConfig)
|
|
94
|
-
onCreatedFromConfig(editor);
|
|
95
|
-
};
|
|
96
|
-
var handleChanged = function (editor) {
|
|
97
|
-
setCurValue(editor.getHtml()); // 记录当前 html 值
|
|
98
|
-
// 组件属性 onChange
|
|
99
|
-
if (onChange)
|
|
100
|
-
onChange(editor);
|
|
101
|
-
// 编辑器 配置 onChange
|
|
102
|
-
var onChangeFromConfig = defaultConfig.onChange;
|
|
103
|
-
if (onChangeFromConfig)
|
|
104
|
-
onChangeFromConfig(editor);
|
|
105
|
-
};
|
|
106
|
-
var handleDestroyed = function (editor) {
|
|
107
|
-
var onDestroyed = defaultConfig.onDestroyed;
|
|
108
|
-
setEditor(null);
|
|
109
|
-
if (onDestroyed) {
|
|
110
|
-
onDestroyed(editor);
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
// value 变化,重置 HTML
|
|
114
|
-
React.useEffect(function () {
|
|
115
|
-
if (editor == null)
|
|
116
|
-
return;
|
|
117
|
-
if (value === curValue)
|
|
118
|
-
return; // 如果和当前 html 值相等,则忽略
|
|
119
|
-
// ------ 重新设置 HTML ------
|
|
120
|
-
try {
|
|
121
|
-
editor.setHtml(value);
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
console.error(error);
|
|
125
|
-
}
|
|
126
|
-
}, [value]);
|
|
127
|
-
React.useEffect(function () {
|
|
128
|
-
var _a;
|
|
129
|
-
if (ref.current == null)
|
|
130
|
-
return;
|
|
131
|
-
if (editor != null)
|
|
132
|
-
return;
|
|
133
|
-
// 防止重复渲染 当编辑器已经创建就不在创建了
|
|
134
|
-
if ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.getAttribute('data-w-e-textarea'))
|
|
135
|
-
return;
|
|
136
|
-
var newEditor = wangEditor.createEditor({
|
|
137
|
-
selector: ref.current,
|
|
138
|
-
config: __assign(__assign({}, defaultConfig), { onCreated: handleCreated, onChange: handleChanged, onDestroyed: handleDestroyed }),
|
|
139
|
-
content: defaultContent,
|
|
140
|
-
html: defaultHtml || value,
|
|
141
|
-
mode: mode,
|
|
142
|
-
});
|
|
143
|
-
setEditor(newEditor);
|
|
144
|
-
}, [editor]);
|
|
145
|
-
return React__default["default"].createElement("div", { style: style, ref: ref, className: className });
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* @description toolbar react component
|
|
150
|
-
* @author wangfupeng
|
|
151
|
-
*/
|
|
152
|
-
function ToolbarComponent(props) {
|
|
153
|
-
var editor = props.editor, _a = props.defaultConfig, defaultConfig = _a === void 0 ? {} : _a, _b = props.mode, mode = _b === void 0 ? 'default' : _b, _c = props.style, style = _c === void 0 ? {} : _c, className = props.className;
|
|
154
|
-
var ref = React.useRef(null);
|
|
155
|
-
React.useEffect(function () {
|
|
156
|
-
if (ref.current == null)
|
|
157
|
-
return;
|
|
158
|
-
if (editor == null)
|
|
159
|
-
return;
|
|
160
|
-
wangEditor__namespace.createToolbar({
|
|
161
|
-
editor: editor,
|
|
162
|
-
selector: ref.current,
|
|
163
|
-
config: defaultConfig,
|
|
164
|
-
mode: mode,
|
|
165
|
-
});
|
|
166
|
-
}, [editor]);
|
|
167
|
-
return React__default["default"].createElement("div", { style: style, ref: ref, className: className });
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
exports.Editor = EditorComponent;
|
|
171
|
-
exports.Toolbar = ToolbarComponent;
|
|
172
|
-
|
|
173
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
174
|
-
|
|
175
|
-
}));
|
|
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,m=void 0===g?"default":g,b=e.style,h=void 0===b?{}:b,E=e.className,j=t.useRef(null),O=i(t.useState(null),2),C=O[0],w=O[1],x=i(t.useState(""),2),S=x[0],N=x[1],P=function(e){a&&a(e);var t=p.onCreated;t&&t(e)},R=function(e){N(e.getHtml()),v&&v(e);var t=p.onChange;t&&t(e)},T=function(e){var t=p.onDestroyed;w(null),t&&t(e)};return t.useEffect((function(){if(null!=C&&s!==S)try{C.setHtml(s)}catch(e){console.error(e)}}),[s]),t.useEffect((function(){var e;if(null!=j.current&&null==C&&!(null===(e=j.current)||void 0===e?void 0:e.getAttribute("data-w-e-textarea"))){var t=r.createEditor({selector:j.current,config:l(l({},p),{onCreated:P,onChange:R,onDestroyed:T}),content:o,html:c||s,mode:m});w(t)}}),[C]),u.default.createElement("div",{style:h,ref:j,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(){null!=s.current&&null!=r&&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
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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\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<IDomEditor | 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 handleChanged = (editor: IDomEditor) => {\n setCurValue(editor.getHtml()) // 记录当前 html 值\n\n // 组件属性 onChange\n if (onChange) onChange(editor)\n\n // 编辑器 配置 onChange\n const { onChange: onChangeFromConfig } = defaultConfig\n if (onChangeFromConfig) onChangeFromConfig(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 // 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: handleChanged,\n onDestroyed: handleDestroyed,\n },\n content: defaultContent,\n html: defaultHtml || value,\n mode,\n })\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","handleChanged","getHtml","onChangeFromConfig","handleDestroyed","onDestroyed","useEffect","setHtml","error","console","current","getAttribute","newEditor","createEditor","selector","config","__assign","content","html","React","createElement","wangEditor","createToolbar"],"mappings":"wwCAoBA,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,SAAoB,MAAK,GAAtDC,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,EAAgB,SAACP,GACrBI,EAAYJ,EAAOQ,WAGfrB,GAAUA,EAASa,GAGf,IAAUS,EAAuBpB,EAAaF,SAClDsB,GAAoBA,EAAmBT,IAGvCU,EAAkB,SAACV,GACf,IAAAW,EAAgBtB,EAAasB,YACrCV,EAAU,MACPU,GACDA,EAAYX,IAwChB,OAnCAY,EAAAA,WAAU,WACR,GAAc,MAAVZ,GAEAd,IAAUiB,EAGd,IACEH,EAAOa,QAAQ3B,EAChB,CAAC,MAAO4B,GACPC,QAAQD,MAAMA,EACf,CAEH,GAAG,CAAC5B,IAEJ0B,EAAAA,WAAU,iBACR,GAAmB,MAAfjB,EAAIqB,SACM,MAAVhB,aAEApB,EAAAe,EAAIqB,8BAASC,aAAa,sBAA9B,CAEA,IAAMC,EAAYC,EAAAA,aAAa,CAC7BC,SAAUzB,EAAIqB,QACdK,OACKC,EAAAA,EAAA,CAAA,EAAAjC,GACH,CAAAP,UAAWuB,EACXlB,SAAUoB,EACVI,YAAaD,IAEfa,QAAS1C,EACT2C,KAAMxC,GAAeE,EACrBK,KAAIA,IAENU,EAAUiB,EAd0C,CAetD,GAAG,CAAClB,IAEGyB,EAAK,QAAAC,cAAA,MAAA,CAAAjC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD,YC3EA,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,OAZAgB,EAAAA,WAAU,WACW,MAAfjB,EAAIqB,SACM,MAAVhB,GAEJ2B,EAAWC,cAAc,CACvB5B,OAAMA,EACNoB,SAAUzB,EAAIqB,QACdK,OAAQhC,EACRE,KAAIA,GAER,GAAG,CAACS,IAEGyB,EAAK,QAAAC,cAAA,MAAA,CAAAjC,MAAOA,EAAOE,IAAKA,EAAKD,UAAWA,GACjD"}
|