@uiw/react-codemirror 3.0.14 → 3.2.2
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 +29 -1
- package/{lib/cjs → esm}/codemirror.css +0 -0
- package/esm/index.js +137 -0
- package/esm/index.js.map +75 -0
- package/lib/{esm/codemirror.css → codemirror.css} +0 -0
- package/lib/index.js +197 -0
- package/lib/index.js.map +70 -0
- package/package.json +14 -14
- package/src/codemirror.css +345 -0
- package/src/index.js +110 -0
- package/typings/index.d.ts +12 -5
- package/lib/cjs/index.js +0 -192
- package/lib/esm/index.js +0 -166
package/lib/esm/index.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import _typeof from "@babel/runtime/helpers/typeof";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
import React, { useRef, useEffect, useImperativeHandle, useState, useMemo } from 'react';
|
|
7
|
-
import CodeMirror from 'codemirror';
|
|
8
|
-
import 'codemirror/mode/meta';
|
|
9
|
-
import './codemirror.css';
|
|
10
|
-
var defaultOptions = {
|
|
11
|
-
tabSize: 2,
|
|
12
|
-
autoCloseBrackets: true,
|
|
13
|
-
matchBrackets: true,
|
|
14
|
-
showCursorWhenSelecting: true,
|
|
15
|
-
// 显示行号
|
|
16
|
-
lineNumbers: true,
|
|
17
|
-
fullScreen: true
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
function ReactCodeMirror() {
|
|
21
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
22
|
-
var ref = arguments.length > 1 ? arguments[1] : undefined;
|
|
23
|
-
var _props$options = props.options,
|
|
24
|
-
options = _props$options === void 0 ? {} : _props$options,
|
|
25
|
-
_props$value = props.value,
|
|
26
|
-
value = _props$value === void 0 ? '' : _props$value,
|
|
27
|
-
_props$width = props.width,
|
|
28
|
-
width = _props$width === void 0 ? '100%' : _props$width,
|
|
29
|
-
_props$height = props.height,
|
|
30
|
-
height = _props$height === void 0 ? '100%' : _props$height;
|
|
31
|
-
|
|
32
|
-
var _useState = useState(),
|
|
33
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
-
editor = _useState2[0],
|
|
35
|
-
setEditor = _useState2[1];
|
|
36
|
-
|
|
37
|
-
var textareaRef = useRef();
|
|
38
|
-
var lastestProps = useRef(props);
|
|
39
|
-
useImperativeHandle(ref, function () {
|
|
40
|
-
return {
|
|
41
|
-
editor: editor
|
|
42
|
-
};
|
|
43
|
-
}, [editor]);
|
|
44
|
-
lastestProps.current = props; // 将props中所有的事件处理函数映射并保存
|
|
45
|
-
|
|
46
|
-
function getEventHandleFromProps() {
|
|
47
|
-
var propNames = Object.keys(props);
|
|
48
|
-
var eventHandle = propNames.filter(function (keyName) {
|
|
49
|
-
return /^on+/.test(keyName);
|
|
50
|
-
});
|
|
51
|
-
var eventDict = {};
|
|
52
|
-
eventHandle.forEach(function (ele) {
|
|
53
|
-
var name = ele.slice(2);
|
|
54
|
-
|
|
55
|
-
if (name && name[0]) {
|
|
56
|
-
eventDict[ele] = name.replace(name[0], name[0].toLowerCase());
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
return eventDict;
|
|
60
|
-
} // http://codemirror.net/doc/manual.html#config
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
function setOptions(_x) {
|
|
64
|
-
return _setOptions.apply(this, arguments);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function _setOptions() {
|
|
68
|
-
_setOptions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(instance) {
|
|
69
|
-
var opt,
|
|
70
|
-
mode,
|
|
71
|
-
_args = arguments;
|
|
72
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
73
|
-
while (1) {
|
|
74
|
-
switch (_context.prev = _context.next) {
|
|
75
|
-
case 0:
|
|
76
|
-
opt = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
|
|
77
|
-
|
|
78
|
-
if (!(_typeof(opt) === 'object' && window)) {
|
|
79
|
-
_context.next = 8;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
mode = CodeMirror.findModeByName(opt.mode || '');
|
|
84
|
-
|
|
85
|
-
if (!(mode && mode.mode)) {
|
|
86
|
-
_context.next = 6;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
_context.next = 6;
|
|
91
|
-
return import("codemirror/mode/".concat(mode.mode, "/").concat(mode.mode, ".js"));
|
|
92
|
-
|
|
93
|
-
case 6:
|
|
94
|
-
if (mode) {
|
|
95
|
-
opt.mode = mode.mime;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
Object.keys(opt).forEach(function (name) {
|
|
99
|
-
if ((opt[name] || opt[name] === false) && JSON.stringify(opt[name])) {
|
|
100
|
-
instance.setOption(name, opt[name]);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
case 8:
|
|
105
|
-
case "end":
|
|
106
|
-
return _context.stop();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}, _callee);
|
|
110
|
-
}));
|
|
111
|
-
return _setOptions.apply(this, arguments);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
useEffect(function () {
|
|
115
|
-
if (!editor && window) {
|
|
116
|
-
// 生成codemirror实例
|
|
117
|
-
var instance = CodeMirror.fromTextArea(textareaRef.current, _objectSpread(_objectSpread({}, defaultOptions), options));
|
|
118
|
-
var eventDict = getEventHandleFromProps();
|
|
119
|
-
Object.keys(eventDict).forEach(function (event) {
|
|
120
|
-
instance.on(eventDict[event], function () {
|
|
121
|
-
var _lastestProps$current;
|
|
122
|
-
|
|
123
|
-
return (_lastestProps$current = lastestProps.current)[event].apply(_lastestProps$current, arguments);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
instance.setValue(value || '');
|
|
127
|
-
|
|
128
|
-
if (width || height) {
|
|
129
|
-
// 设置尺寸
|
|
130
|
-
instance.setSize(width, height);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
setEditor(instance);
|
|
134
|
-
setOptions(instance, _objectSpread(_objectSpread({}, defaultOptions), options));
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return function () {
|
|
138
|
-
if (editor && window) {
|
|
139
|
-
editor.toTextArea();
|
|
140
|
-
setEditor(undefined);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
}, []);
|
|
144
|
-
useMemo(function () {
|
|
145
|
-
if (!editor || !window) return;
|
|
146
|
-
var val = editor.getValue();
|
|
147
|
-
|
|
148
|
-
if (value !== undefined && value !== val) {
|
|
149
|
-
editor.setValue(value);
|
|
150
|
-
}
|
|
151
|
-
}, [value]);
|
|
152
|
-
useMemo(function () {
|
|
153
|
-
if (!editor || !window) return;
|
|
154
|
-
editor.setSize(width, height);
|
|
155
|
-
}, [width, height]);
|
|
156
|
-
useMemo(function () {
|
|
157
|
-
if (!editor || !window) return;
|
|
158
|
-
setOptions(editor, _objectSpread(_objectSpread({}, defaultOptions), options));
|
|
159
|
-
}, [editor, options]);
|
|
160
|
-
return /*#__PURE__*/React.createElement("textarea", {
|
|
161
|
-
ref: textareaRef
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export default /*#__PURE__*/React.forwardRef(ReactCodeMirror);
|
|
166
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJDb2RlTWlycm9yIiwiZGVmYXVsdE9wdGlvbnMiLCJ0YWJTaXplIiwiYXV0b0Nsb3NlQnJhY2tldHMiLCJtYXRjaEJyYWNrZXRzIiwic2hvd0N1cnNvcldoZW5TZWxlY3RpbmciLCJsaW5lTnVtYmVycyIsImZ1bGxTY3JlZW4iLCJSZWFjdENvZGVNaXJyb3IiLCJwcm9wcyIsInJlZiIsIm9wdGlvbnMiLCJ2YWx1ZSIsIndpZHRoIiwiaGVpZ2h0IiwiZWRpdG9yIiwic2V0RWRpdG9yIiwidGV4dGFyZWFSZWYiLCJsYXN0ZXN0UHJvcHMiLCJjdXJyZW50IiwiZ2V0RXZlbnRIYW5kbGVGcm9tUHJvcHMiLCJwcm9wTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiZXZlbnRIYW5kbGUiLCJmaWx0ZXIiLCJrZXlOYW1lIiwidGVzdCIsImV2ZW50RGljdCIsImZvckVhY2giLCJlbGUiLCJuYW1lIiwic2xpY2UiLCJyZXBsYWNlIiwidG9Mb3dlckNhc2UiLCJzZXRPcHRpb25zIiwiaW5zdGFuY2UiLCJvcHQiLCJ3aW5kb3ciLCJtb2RlIiwiZmluZE1vZGVCeU5hbWUiLCJtaW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInNldE9wdGlvbiIsImZyb21UZXh0QXJlYSIsImV2ZW50Iiwib24iLCJzZXRWYWx1ZSIsInNldFNpemUiLCJ0b1RleHRBcmVhIiwidW5kZWZpbmVkIiwidmFsIiwiZ2V0VmFsdWUiLCJmb3J3YXJkUmVmIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLE1BQWhCLEVBQXdCQyxTQUF4QixFQUFtQ0MsbUJBQW5DLEVBQXdEQyxRQUF4RCxFQUFrRUMsT0FBbEUsUUFBaUYsT0FBakY7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFlBQXZCO0FBQ0EsT0FBTyxz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RCxJQUFXLENBQUN1QixNQUFoQixFQUF3QjtBQUN4QkgsSUFBQUEsVUFBVSxDQUFDcEIsTUFBRCxrQ0FBYWQsY0FBYixHQUFnQ1UsT0FBaEMsRUFBVjtBQUNELEdBSE0sRUFHSixDQUFDSSxNQUFELEVBQVNKLE9BQVQsQ0FISSxDQUFQO0FBS0Esc0JBQ0U7QUFBVSxJQUFBLEdBQUcsRUFBRU07QUFBZixJQURGO0FBR0Q7O0FBRUQsNEJBQWV2QixLQUFLLENBQUM0RCxVQUFOLENBQWlCOUMsZUFBakIsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29kZU1pcnJvciBmcm9tICdjb2RlbWlycm9yJztcbmltcG9ydCAnY29kZW1pcnJvci9tb2RlL21ldGEnO1xuaW1wb3J0ICcuL2NvZGVtaXJyb3IuY3NzJztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHRhYlNpemU6IDIsXG4gIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICBtYXRjaEJyYWNrZXRzOiB0cnVlLFxuICBzaG93Q3Vyc29yV2hlblNlbGVjdGluZzogdHJ1ZSxcbiAgLy8g5pi+56S66KGM5Y+3XG4gIGxpbmVOdW1iZXJzOiB0cnVlLFxuICBmdWxsU2NyZWVuOiB0cnVlLFxufVxuXG5mdW5jdGlvbiBSZWFjdENvZGVNaXJyb3IocHJvcHMgPSB7fSwgcmVmKSB7XG4gIGNvbnN0IHsgb3B0aW9ucyA9IHt9LCB2YWx1ZSA9ICcnLCB3aWR0aCA9ICcxMDAlJywgaGVpZ2h0ID0gJzEwMCUnICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtlZGl0b3IsIHNldEVkaXRvcl0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCB0ZXh0YXJlYVJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBsYXN0ZXN0UHJvcHMgPSB1c2VSZWYocHJvcHMpO1xuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoeyBlZGl0b3IgfSksIFtlZGl0b3JdKTtcbiAgbGFzdGVzdFByb3BzLmN1cnJlbnQgPSBwcm9wcztcbiAgXG4gIC8vIOWwhnByb3Bz5Lit5omA5pyJ55qE5LqL5Lu25aSE55CG5Ye95pWw5pig5bCE5bm25L+d5a2YXG4gIGZ1bmN0aW9uIGdldEV2ZW50SGFuZGxlRnJvbVByb3BzKCkge1xuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAgICBjb25zdCBldmVudEhhbmRsZSA9IHByb3BOYW1lcy5maWx0ZXIoKGtleU5hbWUpID0+IHtcbiAgICAgIHJldHVybiAvXm9uKy8udGVzdChrZXlOYW1lKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGV2ZW50RGljdCA9IHt9O1xuICAgIGV2ZW50SGFuZGxlLmZvckVhY2goKGVsZSkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGVsZS5zbGljZSgyKTtcbiAgICAgIGlmIChuYW1lICYmIG5hbWVbMF0pIHtcbiAgICAgICAgZXZlbnREaWN0W2VsZV0gPSBuYW1lLnJlcGxhY2UobmFtZVswXSwgbmFtZVswXS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldmVudERpY3Q7XG4gIH1cblxuICAvLyBodHRwOi8vY29kZW1pcnJvci5uZXQvZG9jL21hbnVhbC5odG1sI2NvbmZpZ1xuICBhc3luYyBmdW5jdGlvbiBzZXRPcHRpb25zKGluc3RhbmNlLCBvcHQgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0ID09PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHtcbiAgICAgIGNvbnN0IG1vZGUgPSBDb2RlTWlycm9yLmZpbmRNb2RlQnlOYW1lKG9wdC5tb2RlIHx8ICcnKTtcbiAgICAgIGlmIChtb2RlICYmIG1vZGUubW9kZSkge1xuICAgICAgICBhd2FpdCBpbXBvcnQoYGNvZGVtaXJyb3IvbW9kZS8ke21vZGUubW9kZX0vJHttb2RlLm1vZGV9LmpzYCk7XG4gICAgICB9XG4gICAgICBpZiAobW9kZSkge1xuICAgICAgICBvcHQubW9kZSA9IG1vZGUubWltZTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5rZXlzKG9wdCkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBpZiAoKG9wdFtuYW1lXSB8fCBvcHRbbmFtZV0gPT09IGZhbHNlKSAmJiBKU09OLnN0cmluZ2lmeShvcHRbbmFtZV0pKSB7XG4gICAgICAgICAgaW5zdGFuY2Uuc2V0T3B0aW9uKG5hbWUsIG9wdFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlZGl0b3IgJiYgd2luZG93KSB7XG4gICAgICAvLyDnlJ/miJBjb2RlbWlycm9y5a6e5L6LXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHRleHRhcmVhUmVmLmN1cnJlbnQsIHsuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9uc30pO1xuICAgICAgY29uc3QgZXZlbnREaWN0ID0gZ2V0RXZlbnRIYW5kbGVGcm9tUHJvcHMoKTtcbiAgICAgIE9iamVjdC5rZXlzKGV2ZW50RGljdCkuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgaW5zdGFuY2Uub24oZXZlbnREaWN0W2V2ZW50XSwgKC4uLnBhcmFtcykgPT4gbGFzdGVzdFByb3BzLmN1cnJlbnRbZXZlbnRdKC4uLnBhcmFtcykpO1xuICAgICAgfSk7XG4gICAgICBpbnN0YW5jZS5zZXRWYWx1ZSh2YWx1ZSB8fCAnJyk7XG5cbiAgICAgIGlmICh3aWR0aCB8fCBoZWlnaHQpIHtcbiAgICAgICAgLy8g6K6+572u5bC65a+4XG4gICAgICAgIGluc3RhbmNlLnNldFNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICB9XG4gICAgICBzZXRFZGl0b3IoaW5zdGFuY2UpO1xuICAgICAgc2V0T3B0aW9ucyhpbnN0YW5jZSwgey4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zfSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWRpdG9yICYmIHdpbmRvdykge1xuICAgICAgICBlZGl0b3IudG9UZXh0QXJlYSgpO1xuICAgICAgICBzZXRFZGl0b3IodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKTtcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWVkaXRvciB8fCAhd2luZG93KSByZXR1cm47XG4gICAgY29uc3QgdmFsID0gZWRpdG9yLmdldFZhbHVlKCk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IHZhbCkge1xuICAgICAgZWRpdG9yLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH0sIFt2YWx1ZV0pO1xuXG4gIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZWRpdG9yIHx8ICF3aW5kb3cpIHJldHVybjtcbiAgICBlZGl0b3Iuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgfSwgW3dpZHRoLCBoZWlnaHRdKTtcblxuXG4gIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZWRpdG9yIHx8ICF3aW5kb3cpIHJldHVybjtcbiAgICBzZXRPcHRpb25zKGVkaXRvciwgey4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zfSk7XG4gIH0sIFtlZGl0b3IsIG9wdGlvbnNdKTtcbiAgXG4gIHJldHVybiAoXG4gICAgPHRleHRhcmVhIHJlZj17dGV4dGFyZWFSZWZ9IC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoUmVhY3RDb2RlTWlycm9yKTtcbiJdfQ==
|