@pie-lib/editable-html 9.3.1-next.53 → 9.4.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/CHANGELOG.md +17 -0
- package/lib/editor.js +244 -114
- package/lib/editor.js.map +1 -1
- package/lib/index.js +51 -5
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +5 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +12 -2
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +50 -3
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +26 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +82 -29
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +45 -7
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +41 -2
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +22 -2
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +34 -13
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +42 -13
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +75 -30
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +75 -18
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +188 -100
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -4
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +29 -5
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +18 -4
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +8 -2
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +18 -1
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +47 -1
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +8 -1
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +22 -0
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +7 -0
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +94 -15
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +43 -11
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +30 -8
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +9 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +48 -18
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +67 -19
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +15 -0
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +69 -8
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +4 -4
- package/src/plugins/media/index.jsx +1 -0
|
@@ -1,27 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = ImagePlugin;
|
|
8
9
|
exports.serialization = void 0;
|
|
10
|
+
|
|
9
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
|
|
10
13
|
var _slate = require("slate");
|
|
14
|
+
|
|
11
15
|
var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
|
|
16
|
+
|
|
12
17
|
var _component = _interopRequireDefault(require("./component"));
|
|
18
|
+
|
|
13
19
|
var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
|
|
20
|
+
|
|
14
21
|
var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
|
|
22
|
+
|
|
15
23
|
var _react = _interopRequireDefault(require("react"));
|
|
24
|
+
|
|
16
25
|
var _debug = _interopRequireDefault(require("debug"));
|
|
26
|
+
|
|
17
27
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
28
|
+
|
|
18
29
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
30
|
+
|
|
19
31
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
|
|
32
|
+
|
|
20
33
|
function ImagePlugin(opts) {
|
|
21
34
|
var toolbar = opts.insertImageRequested && {
|
|
22
35
|
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
23
36
|
onClick: function onClick(value, onChange) {
|
|
24
37
|
log('[toolbar] onClick');
|
|
38
|
+
|
|
25
39
|
var inline = _slate.Inline.create({
|
|
26
40
|
type: 'image',
|
|
27
41
|
isVoid: true,
|
|
@@ -30,6 +44,7 @@ function ImagePlugin(opts) {
|
|
|
30
44
|
src: undefined
|
|
31
45
|
}
|
|
32
46
|
});
|
|
47
|
+
|
|
33
48
|
var change = value.change().insertInline(inline);
|
|
34
49
|
onChange(change);
|
|
35
50
|
opts.insertImageRequested(function (getValue) {
|
|
@@ -43,13 +58,16 @@ function ImagePlugin(opts) {
|
|
|
43
58
|
var alignment = node.data.get('alignment');
|
|
44
59
|
var alt = node.data.get('alt');
|
|
45
60
|
var imageLoaded = node.data.get('loaded') !== false;
|
|
61
|
+
|
|
46
62
|
var onChange = function onChange(newValues, done) {
|
|
47
63
|
var update = _objectSpread(_objectSpread({}, node.data.toObject()), newValues);
|
|
64
|
+
|
|
48
65
|
var change = value.change().setNodeByKey(node.key, {
|
|
49
66
|
data: update
|
|
50
67
|
});
|
|
51
68
|
onToolbarDone(change, done);
|
|
52
69
|
};
|
|
70
|
+
|
|
53
71
|
var Tb = function Tb() {
|
|
54
72
|
return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
|
|
55
73
|
disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
|
|
@@ -59,6 +77,7 @@ function ImagePlugin(opts) {
|
|
|
59
77
|
onChange: onChange
|
|
60
78
|
});
|
|
61
79
|
};
|
|
80
|
+
|
|
62
81
|
return Tb;
|
|
63
82
|
},
|
|
64
83
|
showDone: true
|
|
@@ -68,6 +87,7 @@ function ImagePlugin(opts) {
|
|
|
68
87
|
toolbar: toolbar,
|
|
69
88
|
deleteNode: function deleteNode(e, node, value, onChange) {
|
|
70
89
|
e.preventDefault();
|
|
90
|
+
|
|
71
91
|
if (opts.onDelete) {
|
|
72
92
|
var update = node.data.merge(_slate.Data.create({
|
|
73
93
|
deleteStatus: 'pending'
|
|
@@ -85,10 +105,12 @@ function ImagePlugin(opts) {
|
|
|
85
105
|
deleteStatus: 'failed'
|
|
86
106
|
})));
|
|
87
107
|
}
|
|
108
|
+
|
|
88
109
|
onChange(change);
|
|
89
110
|
});
|
|
90
111
|
} else {
|
|
91
112
|
var _change = value.change().removeNodeByKey(node.key);
|
|
113
|
+
|
|
92
114
|
onChange(_change);
|
|
93
115
|
}
|
|
94
116
|
},
|
|
@@ -97,9 +119,11 @@ function ImagePlugin(opts) {
|
|
|
97
119
|
if (n.type !== 'image') {
|
|
98
120
|
return;
|
|
99
121
|
}
|
|
122
|
+
|
|
100
123
|
return n.data.get('loaded') === false;
|
|
101
124
|
});
|
|
102
125
|
/** don't reset if there is an image pending insertion */
|
|
126
|
+
|
|
103
127
|
return imgPendingInsertion !== undefined && imgPendingInsertion !== null;
|
|
104
128
|
},
|
|
105
129
|
renderNode: function renderNode(props) {
|
|
@@ -123,11 +147,13 @@ function ImagePlugin(opts) {
|
|
|
123
147
|
if (d.object === 'text') {
|
|
124
148
|
textNodeMap[index] = d;
|
|
125
149
|
}
|
|
150
|
+
|
|
126
151
|
if (d.type === 'image') {
|
|
127
152
|
if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
|
|
128
153
|
updateNodesArray.push(textNodeMap[index - 1]);
|
|
129
154
|
}
|
|
130
155
|
}
|
|
156
|
+
|
|
131
157
|
index++;
|
|
132
158
|
});
|
|
133
159
|
if (!updateNodesArray.length) return;
|
|
@@ -141,8 +167,11 @@ function ImagePlugin(opts) {
|
|
|
141
167
|
}
|
|
142
168
|
};
|
|
143
169
|
}
|
|
170
|
+
|
|
144
171
|
var serialization = {
|
|
145
|
-
deserialize: function deserialize(el
|
|
172
|
+
deserialize: function deserialize(el
|
|
173
|
+
/*, next*/
|
|
174
|
+
) {
|
|
146
175
|
var name = el.tagName.toLowerCase();
|
|
147
176
|
if (name !== 'img') return;
|
|
148
177
|
log('deserialize: ', name);
|
|
@@ -171,7 +200,9 @@ var serialization = {
|
|
|
171
200
|
log('return object: ', out);
|
|
172
201
|
return out;
|
|
173
202
|
},
|
|
174
|
-
serialize: function serialize(object
|
|
203
|
+
serialize: function serialize(object
|
|
204
|
+
/*, children*/
|
|
205
|
+
) {
|
|
175
206
|
if (object.type !== 'image') return;
|
|
176
207
|
var data = object.data;
|
|
177
208
|
var src = data.get('src');
|
|
@@ -182,33 +213,41 @@ var serialization = {
|
|
|
182
213
|
var justifyContent = data.get('margin');
|
|
183
214
|
var alt = data.get('alt');
|
|
184
215
|
var style = {};
|
|
216
|
+
|
|
185
217
|
if (width) {
|
|
186
218
|
style.width = "".concat(width, "px");
|
|
187
219
|
}
|
|
220
|
+
|
|
188
221
|
if (height) {
|
|
189
222
|
style.height = "".concat(height, "px");
|
|
190
223
|
}
|
|
224
|
+
|
|
191
225
|
style.margin = margin;
|
|
192
226
|
style.justifyContent = justifyContent;
|
|
227
|
+
|
|
193
228
|
if (alignment) {
|
|
194
229
|
switch (alignment) {
|
|
195
230
|
case 'left':
|
|
196
231
|
style.justifyContent = 'flex-start';
|
|
197
232
|
style.margin = '0';
|
|
198
233
|
break;
|
|
234
|
+
|
|
199
235
|
case 'center':
|
|
200
236
|
style.justifyContent = 'center';
|
|
201
237
|
style.margin = '0 auto';
|
|
202
238
|
break;
|
|
239
|
+
|
|
203
240
|
case 'right':
|
|
204
241
|
style.justifyContent = 'flex-end';
|
|
205
242
|
style.margin = 'auto 0 0 auto';
|
|
206
243
|
break;
|
|
244
|
+
|
|
207
245
|
default:
|
|
208
246
|
style.justifyContent = 'flex-start';
|
|
209
247
|
break;
|
|
210
248
|
}
|
|
211
249
|
}
|
|
250
|
+
|
|
212
251
|
style.objectFit = 'contain';
|
|
213
252
|
var props = {
|
|
214
253
|
src: src,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","e","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n opts.insertImageRequested((getValue) => new InsertImageHandler(inline, getValue, onChange));\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return <ImageComponent {...all} />;\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","e","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"mappings":"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","sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n opts.insertImageRequested((getValue) => new InsertImageHandler(inline, getValue, onChange));\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return <ImageComponent {...all} />;\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"file":"index.js"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = void 0;
|
|
9
|
+
|
|
8
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
9
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
10
14
|
var _slate = require("slate");
|
|
15
|
+
|
|
11
16
|
var _debug = _interopRequireDefault(require("debug"));
|
|
12
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
13
17
|
|
|
18
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
14
19
|
/**
|
|
15
20
|
* Handles user selection, insertion (or cancellation) of an image into the editor.
|
|
16
21
|
* @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
|
|
@@ -18,6 +23,7 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
|
|
|
18
23
|
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
19
24
|
* @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
|
|
20
25
|
*/
|
|
26
|
+
|
|
21
27
|
var InsertImageHandler = /*#__PURE__*/function () {
|
|
22
28
|
function InsertImageHandler(placeholderBlock, getValue, onChange) {
|
|
23
29
|
var isPasted = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
@@ -27,15 +33,19 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
27
33
|
this.onChange = onChange;
|
|
28
34
|
this.isPasted = isPasted;
|
|
29
35
|
}
|
|
36
|
+
|
|
30
37
|
(0, _createClass2["default"])(InsertImageHandler, [{
|
|
31
38
|
key: "getPlaceholderInDocument",
|
|
32
39
|
value: function getPlaceholderInDocument(value) {
|
|
33
40
|
var document = value.document;
|
|
34
41
|
var directChild = document.getChild(this.placeholderBlock.key);
|
|
42
|
+
|
|
35
43
|
if (directChild) {
|
|
36
44
|
return directChild;
|
|
37
45
|
}
|
|
46
|
+
|
|
38
47
|
var child = document.getDescendant(this.placeholderBlock.key);
|
|
48
|
+
|
|
39
49
|
if (child) {
|
|
40
50
|
return child;
|
|
41
51
|
} else {
|
|
@@ -54,6 +64,7 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
54
64
|
key: "done",
|
|
55
65
|
value: function done(err, src) {
|
|
56
66
|
log('done: err:', err);
|
|
67
|
+
|
|
57
68
|
if (err) {
|
|
58
69
|
//eslint-disable-next-line
|
|
59
70
|
console.log(err);
|
|
@@ -71,31 +82,39 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
71
82
|
this.onChange(change);
|
|
72
83
|
}
|
|
73
84
|
}
|
|
74
|
-
|
|
75
85
|
/**
|
|
76
86
|
* Notify handler that the user chose a file - will create a change with a preview in the editor.
|
|
77
87
|
*
|
|
78
88
|
* @param {File} file - the file that the user chose using a file input.
|
|
79
89
|
*/
|
|
90
|
+
|
|
80
91
|
}, {
|
|
81
92
|
key: "fileChosen",
|
|
82
93
|
value: function fileChosen(file) {
|
|
83
94
|
var _this = this;
|
|
95
|
+
|
|
84
96
|
if (!file) {
|
|
85
97
|
return;
|
|
86
98
|
}
|
|
99
|
+
|
|
87
100
|
log('[fileChosen] file: ', file);
|
|
88
101
|
var reader = new FileReader();
|
|
102
|
+
|
|
89
103
|
reader.onload = function () {
|
|
90
104
|
var value = _this.getValue();
|
|
105
|
+
|
|
91
106
|
var dataURL = reader.result;
|
|
107
|
+
|
|
92
108
|
var child = _this.getPlaceholderInDocument(value);
|
|
109
|
+
|
|
93
110
|
var data = child.data.set('src', dataURL);
|
|
94
111
|
var change = value.change().setNodeByKey(_this.placeholderBlock.key, {
|
|
95
112
|
data: data
|
|
96
113
|
});
|
|
114
|
+
|
|
97
115
|
_this.onChange(change);
|
|
98
116
|
};
|
|
117
|
+
|
|
99
118
|
reader.readAsDataURL(file);
|
|
100
119
|
}
|
|
101
120
|
}, {
|
|
@@ -113,6 +132,7 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
113
132
|
}]);
|
|
114
133
|
return InsertImageHandler;
|
|
115
134
|
}();
|
|
135
|
+
|
|
116
136
|
var _default = InsertImageHandler;
|
|
117
137
|
exports["default"] = _default;
|
|
118
138
|
//# sourceMappingURL=insert-image-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","getValue","onChange","isPasted","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","getPlaceholderInDocument","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"mappings":"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","sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n this.isPasted = isPasted;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n const c = this.getValue()\n .change()\n .removeNodeByKey(this.placeholderBlock.key);\n this.onChange(c);\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n}\n\nexport default InsertImageHandler;\n"],"file":"insert-image-handler.js"}
|
package/lib/plugins/index.js
CHANGED
|
@@ -1,39 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
|
|
9
|
+
|
|
8
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
9
12
|
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
13
|
+
|
|
10
14
|
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
15
|
+
|
|
11
16
|
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
17
|
+
|
|
12
18
|
var _image = _interopRequireDefault(require("./image"));
|
|
19
|
+
|
|
13
20
|
var _media = _interopRequireDefault(require("./media"));
|
|
21
|
+
|
|
14
22
|
var _characters = _interopRequireDefault(require("./characters"));
|
|
23
|
+
|
|
15
24
|
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
25
|
+
|
|
16
26
|
var _math = _interopRequireDefault(require("./math"));
|
|
27
|
+
|
|
17
28
|
var _react = _interopRequireDefault(require("react"));
|
|
29
|
+
|
|
18
30
|
var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
|
|
31
|
+
|
|
19
32
|
var _toolbar = _interopRequireDefault(require("./toolbar"));
|
|
33
|
+
|
|
20
34
|
var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
|
|
35
|
+
|
|
21
36
|
var _compact = _interopRequireDefault(require("lodash/compact"));
|
|
37
|
+
|
|
22
38
|
var _slateSoftBreak = _interopRequireDefault(require("slate-soft-break"));
|
|
39
|
+
|
|
23
40
|
var _debug = _interopRequireDefault(require("debug"));
|
|
41
|
+
|
|
24
42
|
var _list = _interopRequireDefault(require("./list"));
|
|
43
|
+
|
|
25
44
|
var _table = _interopRequireDefault(require("./table"));
|
|
45
|
+
|
|
26
46
|
var _respArea = _interopRequireDefault(require("./respArea"));
|
|
27
|
-
// import Code from '@material-ui/icons/Code';
|
|
28
47
|
|
|
48
|
+
// import Code from '@material-ui/icons/Code';
|
|
29
49
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
|
|
50
|
+
|
|
30
51
|
function MarkHotkey(options) {
|
|
31
52
|
var type = options.type,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
53
|
+
key = options.key,
|
|
54
|
+
icon = options.icon,
|
|
55
|
+
tag = options.tag; // Return our "plugin" object, containing the `onKeyDown` handler.
|
|
35
56
|
|
|
36
|
-
// Return our "plugin" object, containing the `onKeyDown` handler.
|
|
37
57
|
return {
|
|
38
58
|
toolbar: {
|
|
39
59
|
isMark: true,
|
|
@@ -52,31 +72,32 @@ function MarkHotkey(options) {
|
|
|
52
72
|
},
|
|
53
73
|
onKeyDown: function onKeyDown(event, change) {
|
|
54
74
|
// Check that the key pressed matches our `key` option.
|
|
55
|
-
if (!event.metaKey || event.key != key) return;
|
|
75
|
+
if (!event.metaKey || event.key != key) return; // Prevent the default characters from being inserted.
|
|
56
76
|
|
|
57
|
-
//
|
|
58
|
-
event.preventDefault();
|
|
77
|
+
event.preventDefault(); // Toggle the mark `type`.
|
|
59
78
|
|
|
60
|
-
// Toggle the mark `type`.
|
|
61
79
|
change.toggleMark(type);
|
|
62
80
|
return true;
|
|
63
81
|
}
|
|
64
82
|
};
|
|
65
83
|
}
|
|
66
|
-
|
|
67
|
-
// 'code',
|
|
84
|
+
|
|
85
|
+
var ALL_PLUGINS = ['bold', // 'code',
|
|
68
86
|
'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'table', 'video', 'audio', 'responseArea'];
|
|
69
87
|
exports.ALL_PLUGINS = ALL_PLUGINS;
|
|
70
88
|
var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
|
|
71
89
|
return plug !== 'responseArea';
|
|
72
90
|
});
|
|
73
91
|
exports.DEFAULT_PLUGINS = DEFAULT_PLUGINS;
|
|
92
|
+
|
|
74
93
|
var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
75
94
|
log('[buildPlugins] opts: ', opts);
|
|
76
95
|
activePlugins = activePlugins || DEFAULT_PLUGINS;
|
|
96
|
+
|
|
77
97
|
var addIf = function addIf(key, p) {
|
|
78
98
|
return activePlugins.includes(key) && p;
|
|
79
99
|
};
|
|
100
|
+
|
|
80
101
|
var imagePlugin = opts.image && opts.image.onDelete && (0, _image["default"])(opts.image);
|
|
81
102
|
var mathPlugin = (0, _math["default"])(opts.math);
|
|
82
103
|
var respAreaPlugin = opts.responseArea && opts.responseArea.type && (0, _respArea["default"])(opts.responseArea, (0, _compact["default"])([mathPlugin]));
|
|
@@ -85,8 +106,7 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
85
106
|
type: 'bold',
|
|
86
107
|
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
87
108
|
tag: 'strong'
|
|
88
|
-
})),
|
|
89
|
-
// addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
|
|
109
|
+
})), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
|
|
90
110
|
addIf('italic', MarkHotkey({
|
|
91
111
|
key: 'i',
|
|
92
112
|
type: 'italic',
|
|
@@ -116,5 +136,6 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
116
136
|
shift: true
|
|
117
137
|
}), addIf('responseArea', respAreaPlugin)]));
|
|
118
138
|
};
|
|
139
|
+
|
|
119
140
|
exports.buildPlugins = buildPlugins;
|
|
120
141
|
//# sourceMappingURL=index.js.map
|
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/index.jsx"],"names":["log","MarkHotkey","options","type","key","icon","tag","toolbar","isMark","onToggle","change","toggleMark","renderMark","props","mark","K","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","buildPlugins","activePlugins","opts","addIf","p","includes","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","table","media","languageCharacters","map","config","shift"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAjBA;AAmBA,IAAMA,GAAG,GAAG,uBAAM,gCAAN,CAAZ;;AAEA,SAASC,UAAT,CAAoBC,OAApB,EAA6B;AAC3B,MAAQC,IAAR,GAAiCD,OAAjC,CAAQC,IAAR;AAAA,MAAcC,GAAd,GAAiCF,OAAjC,CAAcE,GAAd;AAAA,MAAmBC,IAAnB,GAAiCH,OAAjC,CAAmBG,IAAnB;AAAA,MAAyBC,GAAzB,GAAiCJ,OAAjC,CAAyBI,GAAzB,CAD2B,CAG3B;;AACA,SAAO;AACLC,IAAAA,OAAO,EAAE;AACPC,MAAAA,MAAM,EAAE,IADD;AAEPL,MAAAA,IAAI,EAAJA,IAFO;AAGPE,MAAAA,IAAI,EAAJA,IAHO;AAIPI,MAAAA,QAAQ,EAAE,kBAACC,MAAD,EAAY;AACpBV,QAAAA,GAAG,CAAC,uBAAD,EAA0BG,IAA1B,CAAH;AACA,eAAOO,MAAM,CAACC,UAAP,CAAkBR,IAAlB,CAAP;AACD;AAPM,KADJ;AAULS,IAAAA,UAVK,sBAUMC,KAVN,EAUa;AAChB,UAAIA,KAAK,CAACC,IAAN,CAAWX,IAAX,KAAoBA,IAAxB,EAA8B;AAC5B,YAAMY,CAAC,GAAGT,GAAG,IAAIH,IAAjB;AACA,4BAAO,gCAAC,CAAD,QAAIU,KAAK,CAACG,QAAV,CAAP;AACD;AACF,KAfI;AAgBLC,IAAAA,SAhBK,qBAgBKC,KAhBL,EAgBYR,MAhBZ,EAgBoB;AACvB;AACA,UAAI,CAACQ,KAAK,CAACC,OAAP,IAAkBD,KAAK,CAACd,GAAN,IAAaA,GAAnC,EAAwC,OAFjB,CAIvB;;AACAc,MAAAA,KAAK,CAACE,cAAN,GALuB,CAOvB;;AACAV,MAAAA,MAAM,CAACC,UAAP,CAAkBR,IAAlB;AACA,aAAO,IAAP;AACD;AA1BI,GAAP;AA4BD;;AAEM,IAAMkB,WAAW,GAAG,CACzB,MADyB,EAEzB;AACA,QAHyB,EAIzB,WAJyB,EAKzB,eALyB,EAMzB,eANyB,EAOzB,eAPyB,EAQzB,OARyB,EASzB,MATyB,EAUzB,oBAVyB,EAWzB,OAXyB,EAYzB,OAZyB,EAazB,OAbyB,EAczB,cAdyB,CAApB;;AAiBA,IAAMC,eAAe,GAAGD,WAAW,CAACE,MAAZ,CAAmB,UAACC,IAAD;AAAA,SAAUA,IAAI,KAAK,cAAnB;AAAA,CAAnB,CAAxB;;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,aAAD,EAAgBC,IAAhB,EAAyB;AACnD3B,EAAAA,GAAG,CAAC,uBAAD,EAA0B2B,IAA1B,CAAH;AAEAD,EAAAA,aAAa,GAAGA,aAAa,IAAIJ,eAAjC;;AAEA,MAAMM,KAAK,GAAG,SAARA,KAAQ,CAACxB,GAAD,EAAMyB,CAAN;AAAA,WAAYH,aAAa,CAACI,QAAd,CAAuB1B,GAAvB,KAA+ByB,CAA3C;AAAA,GAAd;;AACA,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAL,IAAcL,IAAI,CAACK,KAAL,CAAWC,QAAzB,IAAqC,uBAAYN,IAAI,CAACK,KAAjB,CAAzD;AACA,MAAME,UAAU,GAAG,sBAAWP,IAAI,CAACQ,IAAhB,CAAnB;AACA,MAAMC,cAAc,GAClBT,IAAI,CAACU,YAAL,IAAqBV,IAAI,CAACU,YAAL,CAAkBlC,IAAvC,IAA+C,0BAAewB,IAAI,CAACU,YAApB,EAAkC,yBAAQ,CAACH,UAAD,CAAR,CAAlC,CADjD;AAGA,SAAO,0BACLN,KAAK,CAAC,OAAD,EAAU,uBAAYD,IAAI,CAACW,KAAjB,EAAwB,yBAAQ,CAACP,WAAD,EAAcG,UAAd,EAA0BE,cAA1B,CAAR,CAAxB,CAAV,CADA,EAELR,KAAK,CAAC,MAAD,EAAS3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,MAAlB;AAA0BE,IAAAA,IAAI,eAAE,gCAAC,sBAAD,OAAhC;AAA0CC,IAAAA,GAAG,EAAE;AAA/C,GAAD,CAAnB,CAFA,EAGL;AACAsB,EAAAA,KAAK,CAAC,QAAD,EAAW3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,QAAlB;AAA4BE,IAAAA,IAAI,eAAE,gCAAC,wBAAD,OAAlC;AAA8CC,IAAAA,GAAG,EAAE;AAAnD,GAAD,CAArB,CAJA,EAKLsB,KAAK,CACH,eADG,EAEH3B,UAAU,CAAC;AACTG,IAAAA,GAAG,EAAE,GADI;AAETD,IAAAA,IAAI,EAAE,eAFG;AAGTE,IAAAA,IAAI,eAAE,gCAAC,+BAAD,OAHG;AAITC,IAAAA,GAAG,EAAE;AAJI,GAAD,CAFP,CALA,EAcLsB,KAAK,CAAC,WAAD,EAAc3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,WAAlB;AAA+BE,IAAAA,IAAI,eAAE,gCAAC,4BAAD,OAArC;AAAoDC,IAAAA,GAAG,EAAE;AAAzD,GAAD,CAAxB,CAdA,EAeLsB,KAAK,CAAC,OAAD,EAAUG,WAAV,CAfA,EAgBLH,KAAK,CAAC,OAAD,EAAU,uBAAY,OAAZ,EAAqBD,IAAI,CAACY,KAA1B,CAAV,CAhBA,EAiBLX,KAAK,CAAC,OAAD,EAAU,uBAAY,OAAZ,EAAqBD,IAAI,CAACY,KAA1B,CAAV,CAjBA,EAkBLX,KAAK,CAAC,MAAD,EAASM,UAAT,CAlBA,6CAmBFP,IAAI,CAACa,kBAAL,CAAwBC,GAAxB,CAA4B,UAACC,MAAD;AAAA,WAAYd,KAAK,CAAC,oBAAD,EAAuB,4BAAiBc,MAAjB,CAAvB,CAAjB;AAAA,GAA5B,CAnBE,IAoBLd,KAAK,CAAC,eAAD,EAAkB,sBAAK;AAAExB,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,SAAlB;AAA6BE,IAAAA,IAAI,eAAE,gCAAC,8BAAD;AAAnC,GAAL,CAAlB,CApBA,EAqBLuB,KAAK,CAAC,eAAD,EAAkB,sBAAK;AAAExB,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,SAAlB;AAA6BE,IAAAA,IAAI,eAAE,gCAAC,8BAAD;AAAnC,GAAL,CAAlB,CArBA,EAsBL,yBAAcsB,IAAI,CAACpB,OAAnB,CAtBK,EAuBL,gCAAgB;AAAEoC,IAAAA,KAAK,EAAE;AAAT,GAAhB,CAvBK,EAwBLf,KAAK,CAAC,cAAD,EAAiBQ,cAAjB,CAxBA,GAAP;AA0BD,CArCM","sourcesContent":["import Bold from '@material-ui/icons/FormatBold';\n// import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport CharactersPlugin from './characters';\nimport Italic from '@material-ui/icons/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@material-ui/icons/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@material-ui/icons/FormatUnderlined';\nimport compact from 'lodash/compact';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: (change) => {\n log('[onToggleMark] type: ', type);\n return change.toggleMark(type);\n },\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const K = tag || type;\n return <K>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key != key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n },\n };\n}\n\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter((plug) => plug !== 'responseArea');\n\nexport const buildPlugins = (activePlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n const imagePlugin = opts.image && opts.image.onDelete && ImagePlugin(opts.image);\n const mathPlugin = MathPlugin(opts.math);\n const respAreaPlugin =\n opts.responseArea && opts.responseArea.type && RespAreaPlugin(opts.responseArea, compact([mathPlugin]));\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact([imagePlugin, mathPlugin, respAreaPlugin]))),\n addIf('bold', MarkHotkey({ key: 'b', type: 'bold', icon: <Bold />, tag: 'strong' })),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic', MarkHotkey({ key: 'i', type: 'italic', icon: <Italic />, tag: 'em' })),\n addIf(\n 'strikethrough',\n MarkHotkey({\n key: '~',\n type: 'strikethrough',\n icon: <Strikethrough />,\n tag: 'del',\n }),\n ),\n addIf('underline', MarkHotkey({ key: 'u', type: 'underline', icon: <Underline />, tag: 'u' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n ...opts.languageCharacters.map((config) => addIf('languageCharacters', CharactersPlugin(config))),\n addIf('bulleted-list', List({ key: 'l', type: 'ul_list', icon: <BulletedListIcon /> })),\n addIf('numbered-list', List({ key: 'n', type: 'ol_list', icon: <NumberedListIcon /> })),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin({ shift: true }),\n addIf('responseArea', respAreaPlugin),\n ]);\n};\n"],"file":"index.js"}
|