@pie-lib/editable-html 7.17.4-next.53 → 7.17.4-next.556
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.json +150 -0
- package/CHANGELOG.md +421 -0
- package/lib/editor.js +390 -172
- package/lib/editor.js.map +1 -1
- package/lib/index.js +66 -53
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +73 -0
- package/lib/plugins/characters/custom-popper.js.map +1 -0
- package/lib/plugins/characters/index.js +285 -0
- package/lib/plugins/characters/index.js.map +1 -0
- package/lib/plugins/characters/utils.js +381 -0
- package/lib/plugins/characters/utils.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +119 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -0
- package/lib/plugins/image/component.js +253 -77
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +95 -61
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +62 -20
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +9 -15
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +20 -12
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +82 -14
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +50 -55
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +71 -27
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +248 -72
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -30
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +28 -35
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +68 -46
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +12 -12
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +10 -9
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +11 -11
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +58 -42
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +8 -8
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +5 -5
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +12 -12
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +83 -27
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +41 -50
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +19 -13
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +5 -5
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +51 -44
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +49 -52
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +64 -62
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +1 -1
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +32 -9
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +7 -6
- package/src/editor.jsx +224 -26
- package/src/index.jsx +22 -5
- package/src/plugins/characters/custom-popper.js +48 -0
- package/src/plugins/characters/index.jsx +268 -0
- package/src/plugins/characters/utils.js +447 -0
- package/src/plugins/image/alt-dialog.jsx +69 -0
- package/src/plugins/image/component.jsx +204 -21
- package/src/plugins/image/image-toolbar.jsx +68 -22
- package/src/plugins/image/index.jsx +47 -9
- package/src/plugins/index.jsx +4 -1
- package/src/plugins/list/index.jsx +67 -5
- package/src/plugins/math/index.jsx +31 -37
- package/src/plugins/media/index.jsx +49 -6
- package/src/plugins/media/media-dialog.js +261 -89
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +28 -1
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +3 -3
- package/src/plugins/respArea/index.jsx +50 -31
- package/src/plugins/table/index.jsx +63 -14
- package/src/plugins/toolbar/default-toolbar.jsx +20 -2
- package/src/plugins/toolbar/editor-and-toolbar.jsx +35 -4
- package/src/plugins/toolbar/toolbar-buttons.jsx +13 -2
- package/src/plugins/toolbar/toolbar.jsx +18 -3
- package/src/serialization.jsx +19 -3
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports["default"] = void 0;
|
|
7
9
|
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
var _slate = require("slate");
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
19
17
|
|
|
20
18
|
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
21
19
|
/**
|
|
@@ -25,18 +23,15 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
|
|
|
25
23
|
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
26
24
|
*/
|
|
27
25
|
|
|
28
|
-
var InsertImageHandler =
|
|
29
|
-
/*#__PURE__*/
|
|
30
|
-
function () {
|
|
26
|
+
var InsertImageHandler = /*#__PURE__*/function () {
|
|
31
27
|
function InsertImageHandler(placeholderBlock, getValue, onChange) {
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
(0, _classCallCheck2["default"])(this, InsertImageHandler);
|
|
34
29
|
this.placeholderBlock = placeholderBlock;
|
|
35
30
|
this.getValue = getValue;
|
|
36
31
|
this.onChange = onChange;
|
|
37
32
|
}
|
|
38
33
|
|
|
39
|
-
|
|
34
|
+
(0, _createClass2["default"])(InsertImageHandler, [{
|
|
40
35
|
key: "getPlaceholderInDocument",
|
|
41
36
|
value: function getPlaceholderInDocument(value) {
|
|
42
37
|
var document = value.document;
|
|
@@ -132,7 +127,6 @@ function () {
|
|
|
132
127
|
this.onChange(change);
|
|
133
128
|
}
|
|
134
129
|
}]);
|
|
135
|
-
|
|
136
130
|
return InsertImageHandler;
|
|
137
131
|
}();
|
|
138
132
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","placeholderBlock","getValue","onChange","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"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"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 */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\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"],"mappings":"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"}
|
package/lib/plugins/index.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
|
|
7
9
|
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
8
12
|
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
9
13
|
|
|
10
14
|
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
@@ -15,6 +19,8 @@ var _image = _interopRequireDefault(require("./image"));
|
|
|
15
19
|
|
|
16
20
|
var _media = _interopRequireDefault(require("./media"));
|
|
17
21
|
|
|
22
|
+
var _characters = _interopRequireDefault(require("./characters"));
|
|
23
|
+
|
|
18
24
|
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
19
25
|
|
|
20
26
|
var _math = _interopRequireDefault(require("./math"));
|
|
@@ -39,8 +45,6 @@ var _table = _interopRequireDefault(require("./table"));
|
|
|
39
45
|
|
|
40
46
|
var _respArea = _interopRequireDefault(require("./respArea"));
|
|
41
47
|
|
|
42
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
43
|
-
|
|
44
48
|
// import Code from '@material-ui/icons/Code';
|
|
45
49
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
|
|
46
50
|
|
|
@@ -63,7 +67,7 @@ function MarkHotkey(options) {
|
|
|
63
67
|
renderMark: function renderMark(props) {
|
|
64
68
|
if (props.mark.type === type) {
|
|
65
69
|
var K = tag || type;
|
|
66
|
-
return _react["default"].createElement(K, null, props.children);
|
|
70
|
+
return /*#__PURE__*/_react["default"].createElement(K, null, props.children);
|
|
67
71
|
}
|
|
68
72
|
},
|
|
69
73
|
onKeyDown: function onKeyDown(event, change) {
|
|
@@ -79,7 +83,7 @@ function MarkHotkey(options) {
|
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
var ALL_PLUGINS = ['bold', // 'code',
|
|
82
|
-
'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'table', 'video', 'audio', 'responseArea'];
|
|
86
|
+
'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'table', 'video', 'audio', 'responseArea'];
|
|
83
87
|
exports.ALL_PLUGINS = ALL_PLUGINS;
|
|
84
88
|
var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
|
|
85
89
|
return plug !== 'responseArea';
|
|
@@ -100,33 +104,37 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
100
104
|
return (0, _compact["default"])([addIf('table', (0, _table["default"])(opts.table, (0, _compact["default"])([imagePlugin, mathPlugin, respAreaPlugin]))), addIf('bold', MarkHotkey({
|
|
101
105
|
key: 'b',
|
|
102
106
|
type: 'bold',
|
|
103
|
-
icon: _react["default"].createElement(_FormatBold["default"], null),
|
|
107
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
104
108
|
tag: 'strong'
|
|
105
109
|
})), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
|
|
106
110
|
addIf('italic', MarkHotkey({
|
|
107
111
|
key: 'i',
|
|
108
112
|
type: 'italic',
|
|
109
|
-
icon: _react["default"].createElement(_FormatItalic["default"], null),
|
|
113
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
|
|
110
114
|
tag: 'em'
|
|
111
115
|
})), addIf('strikethrough', MarkHotkey({
|
|
112
116
|
key: '~',
|
|
113
117
|
type: 'strikethrough',
|
|
114
|
-
icon: _react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
118
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
115
119
|
tag: 'del'
|
|
116
120
|
})), addIf('underline', MarkHotkey({
|
|
117
121
|
key: 'u',
|
|
118
122
|
type: 'underline',
|
|
119
|
-
icon: _react["default"].createElement(_FormatUnderlined["default"], null),
|
|
123
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
120
124
|
tag: 'u'
|
|
121
|
-
})), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin)
|
|
125
|
+
})), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin)].concat((0, _toConsumableArray2["default"])(opts.languageCharacters.map(function (config) {
|
|
126
|
+
return addIf('languageCharacters', (0, _characters["default"])(config));
|
|
127
|
+
})), [addIf('bulleted-list', (0, _list["default"])({
|
|
122
128
|
key: 'l',
|
|
123
129
|
type: 'ul_list',
|
|
124
|
-
icon: _react["default"].createElement(_FormatListBulleted["default"], null)
|
|
130
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)
|
|
125
131
|
})), addIf('numbered-list', (0, _list["default"])({
|
|
126
132
|
key: 'n',
|
|
127
133
|
type: 'ol_list',
|
|
128
|
-
icon: _react["default"].createElement(_FormatListNumbered["default"], null)
|
|
129
|
-
})), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])(
|
|
134
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)
|
|
135
|
+
})), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
|
|
136
|
+
shift: true
|
|
137
|
+
}), addIf('responseArea', respAreaPlugin)]));
|
|
130
138
|
};
|
|
131
139
|
|
|
132
140
|
exports.buildPlugins = buildPlugins;
|
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","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","ImagePlugin","mathPlugin","MathPlugin","math","respAreaPlugin","responseArea","RespAreaPlugin","compact","TablePlugin","table","MediaPlugin","media","languageCharacters","map","config","CharactersPlugin","List","ToolbarPlugin","SoftBreakPlugin","shift"],"sources":["../../src/plugins/index.jsx"],"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 &&\n opts.responseArea.type &&\n 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"],"mappings":"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"}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports["default"] =
|
|
8
|
+
exports.serialization = exports["default"] = void 0;
|
|
7
9
|
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
9
11
|
|
|
12
|
+
var _slate = require("slate");
|
|
13
|
+
|
|
14
|
+
var _immutable = _interopRequireDefault(require("immutable"));
|
|
15
|
+
|
|
10
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
17
|
|
|
12
18
|
var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
|
|
13
19
|
|
|
14
20
|
var _debug = _interopRequireDefault(require("debug"));
|
|
15
21
|
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
|
-
|
|
18
22
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
|
|
19
23
|
|
|
20
24
|
var b = function b(type, next, childNodes) {
|
|
@@ -45,23 +49,21 @@ var serialization = {
|
|
|
45
49
|
if (object.object !== 'block') return;
|
|
46
50
|
|
|
47
51
|
if (object.type === 'list_item') {
|
|
48
|
-
return _react["default"].createElement("li", null, children);
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("li", null, children);
|
|
49
53
|
}
|
|
50
54
|
|
|
51
55
|
if (object.type === 'ul_list') {
|
|
52
|
-
return _react["default"].createElement("ul", null, children);
|
|
56
|
+
return /*#__PURE__*/_react["default"].createElement("ul", null, children);
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
if (object.type === 'ol_list') {
|
|
56
|
-
return _react["default"].createElement("ol", null, children);
|
|
60
|
+
return /*#__PURE__*/_react["default"].createElement("ol", null, children);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
};
|
|
60
64
|
exports.serialization = serialization;
|
|
61
65
|
|
|
62
|
-
var
|
|
63
|
-
var type = options.type,
|
|
64
|
-
icon = options.icon;
|
|
66
|
+
var createEditList = function createEditList() {
|
|
65
67
|
var core = (0, _slateEditList["default"])({
|
|
66
68
|
typeDefault: 'span'
|
|
67
69
|
}); // fix outdated schema
|
|
@@ -78,8 +80,74 @@ var _default = function _default(options) {
|
|
|
78
80
|
type: block.nodes[0].types[0]
|
|
79
81
|
};
|
|
80
82
|
});
|
|
81
|
-
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* This override of the core.changes.wrapInList is needed because the version
|
|
86
|
+
* of immutable that we have does not support getting the element at a specific
|
|
87
|
+
* index with a square bracket (list[0]). We have to use the list.get function instead
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Returns the highest list of blocks that cover the current selection
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
var getHighestSelectedBlocks = function getHighestSelectedBlocks(value) {
|
|
96
|
+
var range = value.selection;
|
|
97
|
+
var document = value.document;
|
|
98
|
+
var startBlock = document.getClosestBlock(range.startKey);
|
|
99
|
+
var endBlock = document.getClosestBlock(range.endKey);
|
|
100
|
+
|
|
101
|
+
if (startBlock === endBlock) {
|
|
102
|
+
return _immutable["default"].List([startBlock]);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
106
|
+
var startPath = ancestor.getPath(startBlock.key);
|
|
107
|
+
var endPath = ancestor.getPath(endBlock.key);
|
|
108
|
+
return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Wrap the blocks in the current selection in a new list. Selected
|
|
112
|
+
* lists are merged together.
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
core.changes.wrapInList = function (change, type, data) {
|
|
117
|
+
var selectedBlocks = getHighestSelectedBlocks(change.value); // Wrap in container
|
|
118
|
+
|
|
119
|
+
change.wrapBlock({
|
|
120
|
+
type: type,
|
|
121
|
+
data: _slate.Data.create(data)
|
|
122
|
+
}, {
|
|
123
|
+
normalize: false
|
|
124
|
+
}); // Wrap in list items
|
|
125
|
+
|
|
126
|
+
selectedBlocks.forEach(function (node) {
|
|
127
|
+
if (core.utils.isList(node)) {
|
|
128
|
+
// Merge its items with the created list
|
|
129
|
+
node.nodes.forEach(function (_ref) {
|
|
130
|
+
var key = _ref.key;
|
|
131
|
+
return change.unwrapNodeByKey(key, {
|
|
132
|
+
normalize: false
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
} else if (node.type !== 'list_item') {
|
|
136
|
+
change.wrapBlockByKey(node.key, 'list_item', {
|
|
137
|
+
normalize: false
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return change.normalize();
|
|
142
|
+
};
|
|
82
143
|
|
|
144
|
+
return core;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
var _default = function _default(options) {
|
|
148
|
+
var type = options.type,
|
|
149
|
+
icon = options.icon;
|
|
150
|
+
var core = createEditList(); // eslint-disable-next-line react/display-name
|
|
83
151
|
|
|
84
152
|
core.renderNode = function (props) {
|
|
85
153
|
var node = props.node,
|
|
@@ -88,13 +156,13 @@ var _default = function _default(options) {
|
|
|
88
156
|
|
|
89
157
|
switch (node.type) {
|
|
90
158
|
case 'ul_list':
|
|
91
|
-
return _react["default"].createElement("ul", attributes, children);
|
|
159
|
+
return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
|
|
92
160
|
|
|
93
161
|
case 'ol_list':
|
|
94
|
-
return _react["default"].createElement("ol", attributes, children);
|
|
162
|
+
return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
|
|
95
163
|
|
|
96
164
|
case 'list_item':
|
|
97
|
-
return _react["default"].createElement("li", attributes, children);
|
|
165
|
+
return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
|
|
98
166
|
}
|
|
99
167
|
};
|
|
100
168
|
|
|
@@ -108,7 +176,7 @@ var _default = function _default(options) {
|
|
|
108
176
|
}
|
|
109
177
|
|
|
110
178
|
var current = core.utils.getCurrentList(value);
|
|
111
|
-
return current.type === type;
|
|
179
|
+
return current ? current.type === type : false;
|
|
112
180
|
},
|
|
113
181
|
onClick: function onClick(value, onChange) {
|
|
114
182
|
log('[onClick]', value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","options","icon","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","renderNode","props","node","attributes","toolbar","isMark","isActive","value","utils","isSelectionInList","current","getCurrentList","onClick","onChange","inList","change","call","changes","unwrapList","wrapInList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current.type === type;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","EditList","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","options","icon","renderNode","props","attributes","toolbar","isMark","isActive","isSelectionInList","current","getCurrentList","onClick","onChange","inList","call","unwrapList","propTypes","PropTypes","func"],"sources":["../../../src/plugins/list/index.jsx"],"sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = value => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false\n });\n }\n });\n\n return change.normalize();\n };\n\n return core;\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
8
|
+
exports.CustomToolbarComp = void 0;
|
|
6
9
|
exports["default"] = MathPlugin;
|
|
7
|
-
exports.serialization = exports.inlineMath =
|
|
10
|
+
exports.serialization = exports.inlineMath = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
15
|
|
|
9
16
|
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
10
17
|
|
|
@@ -24,15 +31,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
24
31
|
|
|
25
32
|
var _serialization = require("../../serialization");
|
|
26
33
|
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
30
|
-
|
|
31
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
32
|
-
|
|
33
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
34
|
+
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; }
|
|
34
35
|
|
|
35
|
-
function
|
|
36
|
+
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; }
|
|
36
37
|
|
|
37
38
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:math');
|
|
38
39
|
var TEXT_NODE = 3;
|
|
@@ -49,7 +50,7 @@ function generateAdditionalKeys() {
|
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
var CustomToolbarComp = _react["default"].memo(function (props) {
|
|
53
|
+
var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
53
54
|
var node = props.node,
|
|
54
55
|
value = props.value,
|
|
55
56
|
onFocus = props.onFocus,
|
|
@@ -69,7 +70,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
|
|
|
69
70
|
controlledKeypadMode = _ref3$controlledKeypa === void 0 ? true : _ref3$controlledKeypa;
|
|
70
71
|
|
|
71
72
|
var onDone = function onDone(latex) {
|
|
72
|
-
var update = _objectSpread({}, node.data.toObject(), {
|
|
73
|
+
var update = _objectSpread(_objectSpread({}, node.data.toObject()), {}, {
|
|
73
74
|
latex: latex
|
|
74
75
|
});
|
|
75
76
|
|
|
@@ -82,7 +83,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
|
|
|
82
83
|
};
|
|
83
84
|
|
|
84
85
|
var onChange = function onChange(latex) {
|
|
85
|
-
var update = _objectSpread({}, node.data.toObject(), {
|
|
86
|
+
var update = _objectSpread(_objectSpread({}, node.data.toObject()), {}, {
|
|
86
87
|
latex: latex
|
|
87
88
|
});
|
|
88
89
|
|
|
@@ -94,7 +95,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
|
|
|
94
95
|
};
|
|
95
96
|
|
|
96
97
|
var latex = node.data.get('latex');
|
|
97
|
-
return _react["default"].createElement(_mathToolbar.MathToolbar, {
|
|
98
|
+
return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathToolbar, {
|
|
98
99
|
autoFocus: true,
|
|
99
100
|
additionalKeys: generateAdditionalKeys(customKeys),
|
|
100
101
|
latex: latex,
|
|
@@ -142,7 +143,7 @@ function MathPlugin() {
|
|
|
142
143
|
return {
|
|
143
144
|
name: 'math',
|
|
144
145
|
toolbar: {
|
|
145
|
-
icon: _react["default"].createElement(_Functions["default"], null),
|
|
146
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
|
|
146
147
|
onClick: function onClick(value, onChange) {
|
|
147
148
|
log('[insertMath]');
|
|
148
149
|
var math = inlineMath();
|
|
@@ -180,7 +181,7 @@ function MathPlugin() {
|
|
|
180
181
|
renderNode: function renderNode(props) {
|
|
181
182
|
if (props.node.type === 'math') {
|
|
182
183
|
log('[renderNode]: data:', props.node.data);
|
|
183
|
-
return _react["default"].createElement(_mathToolbar.MathPreview, props);
|
|
184
|
+
return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathPreview, props);
|
|
184
185
|
}
|
|
185
186
|
/**
|
|
186
187
|
* Here for rendering mathml content
|
|
@@ -189,48 +190,12 @@ function MathPlugin() {
|
|
|
189
190
|
|
|
190
191
|
if (props.node.type === 'mathml') {
|
|
191
192
|
var html = props.node.data.get('html');
|
|
192
|
-
return _react["default"].createElement("span",
|
|
193
|
+
return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props.attributes, {
|
|
193
194
|
dangerouslySetInnerHTML: {
|
|
194
195
|
__html: html
|
|
195
196
|
}
|
|
196
197
|
}));
|
|
197
198
|
}
|
|
198
|
-
},
|
|
199
|
-
normalizeNode: function normalizeNode(node) {
|
|
200
|
-
if (node.object !== 'document') {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
var addSpacesArray = [];
|
|
205
|
-
var allElements = node.filterDescendants(function (d) {
|
|
206
|
-
return d.type === 'math';
|
|
207
|
-
});
|
|
208
|
-
allElements.forEach(function (el) {
|
|
209
|
-
var prevText = node.getPreviousText(el.key);
|
|
210
|
-
var lastCharIsNewLine = prevText.text[prevText.text.length - 1] === '\n';
|
|
211
|
-
|
|
212
|
-
if (prevText.text.length === 0 || lastCharIsNewLine) {
|
|
213
|
-
addSpacesArray.push({
|
|
214
|
-
nr: lastCharIsNewLine ? 1 : 2,
|
|
215
|
-
key: prevText.key
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
if (!addSpacesArray.length) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return function (change) {
|
|
225
|
-
change.withoutNormalization(function () {
|
|
226
|
-
addSpacesArray.forEach(function (_ref4) {
|
|
227
|
-
var key = _ref4.key,
|
|
228
|
-
nr = _ref4.nr;
|
|
229
|
-
var node = change.value.document.getNode(key);
|
|
230
|
-
change.insertTextByKey(key, node.text.length, "\xA0".repeat(nr));
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
};
|
|
234
199
|
}
|
|
235
200
|
};
|
|
236
201
|
}
|
|
@@ -261,6 +226,36 @@ var htmlDecode = function htmlDecode(input) {
|
|
|
261
226
|
var getTagName = function getTagName(el) {
|
|
262
227
|
return (el && el.tagName || '').toLowerCase();
|
|
263
228
|
};
|
|
229
|
+
/**
|
|
230
|
+
* Makes sure that strings that contain stuff like:
|
|
231
|
+
* x<y are not transformed into x by the DOMParser because it thinks
|
|
232
|
+
* that <y is the start of a dom element tag
|
|
233
|
+
* @param input
|
|
234
|
+
* @returns {*}
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
var lessThanHandling = function lessThanHandling(input) {
|
|
239
|
+
var arrowSplit = input.split('<'); // if we don't have at least 2 characters there's no point in checking
|
|
240
|
+
|
|
241
|
+
if (input.length > 2) {
|
|
242
|
+
return arrowSplit.reduce(function (st, part) {
|
|
243
|
+
/*
|
|
244
|
+
We check if this element resulted is:
|
|
245
|
+
div - continuation of a beginning of a HTML element
|
|
246
|
+
/div - closing of a HTML tag
|
|
247
|
+
br/> - beginning and closing of a html TAG
|
|
248
|
+
*/
|
|
249
|
+
if (part.match(/<[a-zA-Z/][\s\S]*>/ig)) {
|
|
250
|
+
return "".concat(st).concat(st ? '<' : '').concat(part);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return "".concat(st).concat(st ? '<' : '').concat(part);
|
|
254
|
+
}, '');
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return input;
|
|
258
|
+
};
|
|
264
259
|
|
|
265
260
|
var serialization = {
|
|
266
261
|
deserialize: function deserialize(el) {
|
|
@@ -326,8 +321,8 @@ var serialization = {
|
|
|
326
321
|
var l = object.data.get('latex');
|
|
327
322
|
var wrapper = object.data.get('wrapper');
|
|
328
323
|
log('[serialize] latex: ', l);
|
|
329
|
-
var decoded = htmlDecode(l);
|
|
330
|
-
return _react["default"].createElement("span", {
|
|
324
|
+
var decoded = htmlDecode(lessThanHandling(l));
|
|
325
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
331
326
|
"data-latex": "",
|
|
332
327
|
"data-raw": decoded
|
|
333
328
|
}, (0, _mathRendering.wrapMath)(decoded, wrapper));
|
|
@@ -339,7 +334,7 @@ var serialization = {
|
|
|
339
334
|
|
|
340
335
|
if (object.type === 'mathml') {
|
|
341
336
|
var html = object.data.get('html');
|
|
342
|
-
return _react["default"].createElement("span", {
|
|
337
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
343
338
|
"data-type": "mathml",
|
|
344
339
|
dangerouslySetInnerHTML: {
|
|
345
340
|
__html: html
|