@pie-lib/editable-html 11.4.0 → 11.5.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 +13 -65
- package/package.json +8 -7
- package/src/editor.jsx +2 -2
- package/src/plugins/media/media-dialog.js +1 -1
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
- package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
- package/lib/block-tags.js +0 -25
- package/lib/block-tags.js.map +0 -1
- package/lib/constants.js +0 -16
- package/lib/constants.js.map +0 -1
- package/lib/editor.js +0 -1355
- package/lib/editor.js.map +0 -1
- package/lib/index.js +0 -269
- package/lib/index.js.map +0 -1
- package/lib/parse-html.js +0 -16
- package/lib/parse-html.js.map +0 -1
- package/lib/plugins/characters/custom-popper.js +0 -73
- package/lib/plugins/characters/custom-popper.js.map +0 -1
- package/lib/plugins/characters/index.js +0 -305
- package/lib/plugins/characters/index.js.map +0 -1
- package/lib/plugins/characters/utils.js +0 -381
- package/lib/plugins/characters/utils.js.map +0 -1
- package/lib/plugins/css/icons/index.js +0 -37
- package/lib/plugins/css/icons/index.js.map +0 -1
- package/lib/plugins/css/index.js +0 -397
- package/lib/plugins/css/index.js.map +0 -1
- package/lib/plugins/customPlugin/index.js +0 -114
- package/lib/plugins/customPlugin/index.js.map +0 -1
- package/lib/plugins/html/icons/index.js +0 -38
- package/lib/plugins/html/icons/index.js.map +0 -1
- package/lib/plugins/html/index.js +0 -80
- package/lib/plugins/html/index.js.map +0 -1
- package/lib/plugins/image/alt-dialog.js +0 -129
- package/lib/plugins/image/alt-dialog.js.map +0 -1
- package/lib/plugins/image/component.js +0 -419
- package/lib/plugins/image/component.js.map +0 -1
- package/lib/plugins/image/image-toolbar.js +0 -177
- package/lib/plugins/image/image-toolbar.js.map +0 -1
- package/lib/plugins/image/index.js +0 -263
- package/lib/plugins/image/index.js.map +0 -1
- package/lib/plugins/image/insert-image-handler.js +0 -161
- package/lib/plugins/image/insert-image-handler.js.map +0 -1
- package/lib/plugins/index.js +0 -402
- package/lib/plugins/index.js.map +0 -1
- package/lib/plugins/list/index.js +0 -334
- package/lib/plugins/list/index.js.map +0 -1
- package/lib/plugins/math/index.js +0 -454
- package/lib/plugins/math/index.js.map +0 -1
- package/lib/plugins/media/index.js +0 -387
- package/lib/plugins/media/index.js.map +0 -1
- package/lib/plugins/media/media-dialog.js +0 -709
- package/lib/plugins/media/media-dialog.js.map +0 -1
- package/lib/plugins/media/media-toolbar.js +0 -101
- package/lib/plugins/media/media-toolbar.js.map +0 -1
- package/lib/plugins/media/media-wrapper.js +0 -93
- package/lib/plugins/media/media-wrapper.js.map +0 -1
- package/lib/plugins/rendering/index.js +0 -46
- package/lib/plugins/rendering/index.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -254
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -97
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -57
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
- package/lib/plugins/respArea/icons/index.js +0 -95
- package/lib/plugins/respArea/icons/index.js.map +0 -1
- package/lib/plugins/respArea/index.js +0 -341
- package/lib/plugins/respArea/index.js.map +0 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +0 -75
- package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
- package/lib/plugins/respArea/math-templated/index.js +0 -130
- package/lib/plugins/respArea/math-templated/index.js.map +0 -1
- package/lib/plugins/respArea/utils.js +0 -125
- package/lib/plugins/respArea/utils.js.map +0 -1
- package/lib/plugins/table/CustomTablePlugin.js +0 -133
- package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
- package/lib/plugins/table/icons/index.js +0 -69
- package/lib/plugins/table/icons/index.js.map +0 -1
- package/lib/plugins/table/index.js +0 -483
- package/lib/plugins/table/index.js.map +0 -1
- package/lib/plugins/table/table-toolbar.js +0 -187
- package/lib/plugins/table/table-toolbar.js.map +0 -1
- package/lib/plugins/textAlign/icons/index.js +0 -226
- package/lib/plugins/textAlign/icons/index.js.map +0 -1
- package/lib/plugins/textAlign/index.js +0 -34
- package/lib/plugins/textAlign/index.js.map +0 -1
- package/lib/plugins/toolbar/default-toolbar.js +0 -229
- package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
- package/lib/plugins/toolbar/done-button.js +0 -53
- package/lib/plugins/toolbar/done-button.js.map +0 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
- package/lib/plugins/toolbar/index.js +0 -34
- package/lib/plugins/toolbar/index.js.map +0 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
- package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
- package/lib/plugins/toolbar/toolbar.js +0 -376
- package/lib/plugins/toolbar/toolbar.js.map +0 -1
- package/lib/plugins/utils.js +0 -62
- package/lib/plugins/utils.js.map +0 -1
- package/lib/serialization.js +0 -677
- package/lib/serialization.js.map +0 -1
- package/lib/shared/alert-dialog.js +0 -75
- package/lib/shared/index.js +0 -136
- package/lib/theme.js +0 -9
- package/lib/theme.js.map +0 -1
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _slate = require("slate");
|
|
15
|
-
|
|
16
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
-
|
|
18
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
19
|
-
/**
|
|
20
|
-
* Handles user selection, insertion (or cancellation) of an image into the editor.
|
|
21
|
-
* @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
|
|
22
|
-
* @param {Function} onFinish - a function to call if uploading fails or succeeds
|
|
23
|
-
* @param {Function} getValue - a function to return the value of the editor
|
|
24
|
-
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
25
|
-
* @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
var InsertImageHandler = /*#__PURE__*/function () {
|
|
29
|
-
function InsertImageHandler(placeholderBlock, onFinish, getValue, onChange) {
|
|
30
|
-
var isPasted = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
31
|
-
(0, _classCallCheck2["default"])(this, InsertImageHandler);
|
|
32
|
-
this.placeholderBlock = placeholderBlock;
|
|
33
|
-
this.getValue = getValue;
|
|
34
|
-
this.onFinish = onFinish;
|
|
35
|
-
this.onChange = onChange;
|
|
36
|
-
this.isPasted = isPasted;
|
|
37
|
-
this.chosenFile = null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
(0, _createClass2["default"])(InsertImageHandler, [{
|
|
41
|
-
key: "getPlaceholderInDocument",
|
|
42
|
-
value: function getPlaceholderInDocument(value) {
|
|
43
|
-
var document = value.document;
|
|
44
|
-
var directChild = document.getChild(this.placeholderBlock.key);
|
|
45
|
-
|
|
46
|
-
if (directChild) {
|
|
47
|
-
return directChild;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
var child = document.getDescendant(this.placeholderBlock.key);
|
|
51
|
-
|
|
52
|
-
if (child) {
|
|
53
|
-
return child;
|
|
54
|
-
} else {
|
|
55
|
-
// eslint-disable-next-line
|
|
56
|
-
throw new Error("insert-image: Can't find placeholder!");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}, {
|
|
60
|
-
key: "cancel",
|
|
61
|
-
value: function cancel() {
|
|
62
|
-
log('insert cancelled');
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
var value = this.getValue();
|
|
66
|
-
var child = this.getPlaceholderInDocument(value);
|
|
67
|
-
|
|
68
|
-
if (child) {
|
|
69
|
-
var c = value.change().removeNodeByKey(child.key);
|
|
70
|
-
this.onChange(c);
|
|
71
|
-
this.onFinish(false);
|
|
72
|
-
}
|
|
73
|
-
} catch (err) {//
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}, {
|
|
77
|
-
key: "done",
|
|
78
|
-
value: function done(err, src) {
|
|
79
|
-
log('done: err:', err);
|
|
80
|
-
|
|
81
|
-
if (err) {
|
|
82
|
-
//eslint-disable-next-line
|
|
83
|
-
console.log(err);
|
|
84
|
-
this.onFinish(false);
|
|
85
|
-
} else {
|
|
86
|
-
var value = this.getValue();
|
|
87
|
-
var child = this.getPlaceholderInDocument(value);
|
|
88
|
-
var data = child.data.merge(_slate.Data.create({
|
|
89
|
-
loaded: true,
|
|
90
|
-
src: src,
|
|
91
|
-
percent: 100
|
|
92
|
-
}));
|
|
93
|
-
var change = value.change().setNodeByKey(this.placeholderBlock.key, {
|
|
94
|
-
data: data
|
|
95
|
-
});
|
|
96
|
-
this.onChange(change);
|
|
97
|
-
this.onFinish(true);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Notify handler that the user chose a file - will create a change with a preview in the editor.
|
|
102
|
-
*
|
|
103
|
-
* @param {File} file - the file that the user chose using a file input.
|
|
104
|
-
*/
|
|
105
|
-
|
|
106
|
-
}, {
|
|
107
|
-
key: "fileChosen",
|
|
108
|
-
value: function fileChosen(file) {
|
|
109
|
-
var _this = this;
|
|
110
|
-
|
|
111
|
-
if (!file) {
|
|
112
|
-
return;
|
|
113
|
-
} // Save the chosen file to this.chosenFile
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
this.chosenFile = file;
|
|
117
|
-
log('[fileChosen] file: ', file);
|
|
118
|
-
var reader = new FileReader();
|
|
119
|
-
|
|
120
|
-
reader.onload = function () {
|
|
121
|
-
var value = _this.getValue();
|
|
122
|
-
|
|
123
|
-
var dataURL = reader.result;
|
|
124
|
-
|
|
125
|
-
var child = _this.getPlaceholderInDocument(value);
|
|
126
|
-
|
|
127
|
-
var data = child.data.set('src', dataURL);
|
|
128
|
-
var change = value.change().setNodeByKey(_this.placeholderBlock.key, {
|
|
129
|
-
data: data
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
_this.onChange(change);
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
reader.readAsDataURL(file);
|
|
136
|
-
}
|
|
137
|
-
}, {
|
|
138
|
-
key: "progress",
|
|
139
|
-
value: function progress(percent, bytes, total) {
|
|
140
|
-
log('progress: ', percent, bytes, total);
|
|
141
|
-
var value = this.getValue();
|
|
142
|
-
var child = this.getPlaceholderInDocument(value);
|
|
143
|
-
var data = child.data.set('percent', percent);
|
|
144
|
-
var change = value.change().setNodeByKey(this.placeholderBlock.key, {
|
|
145
|
-
data: data
|
|
146
|
-
});
|
|
147
|
-
this.onChange(change);
|
|
148
|
-
} // Add a getter method to retrieve the chosen file
|
|
149
|
-
|
|
150
|
-
}, {
|
|
151
|
-
key: "getChosenFile",
|
|
152
|
-
value: function getChosenFile() {
|
|
153
|
-
return this.chosenFile;
|
|
154
|
-
}
|
|
155
|
-
}]);
|
|
156
|
-
return InsertImageHandler;
|
|
157
|
-
}();
|
|
158
|
-
|
|
159
|
-
var _default = InsertImageHandler;
|
|
160
|
-
exports["default"] = _default;
|
|
161
|
-
//# sourceMappingURL=insert-image-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","onFinish","getValue","onChange","isPasted","chosenFile","value","document","directChild","getChild","key","child","getDescendant","Error","getPlaceholderInDocument","c","change","removeNodeByKey","err","src","console","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} onFinish - a function to call if uploading fails or succeeds\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, onFinish, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onFinish = onFinish;\n this.onChange = onChange;\n this.isPasted = isPasted;\n this.chosenFile = null;\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\n try {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n\n if (child) {\n const c = value.change().removeNodeByKey(child.key);\n this.onChange(c);\n this.onFinish(false);\n }\n } catch (err) {\n //\n }\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.onFinish(false);\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 this.onFinish(true);\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 // Save the chosen file to this.chosenFile\n this.chosenFile = file;\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 // Add a getter method to retrieve the chosen file\n getChosenFile() {\n return this.chosenFile;\n }\n}\n\nexport default InsertImageHandler;\n"],"file":"insert-image-handler.js"}
|
package/lib/plugins/index.js
DELETED
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
|
|
9
|
-
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
|
-
var _slateHotkeys = _interopRequireDefault(require("slate-hotkeys"));
|
|
15
|
-
|
|
16
|
-
var _slateDevEnvironment = require("slate-dev-environment");
|
|
17
|
-
|
|
18
|
-
var _slate = require("slate");
|
|
19
|
-
|
|
20
|
-
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
21
|
-
|
|
22
|
-
var _FormatQuote = _interopRequireDefault(require("@material-ui/icons/FormatQuote"));
|
|
23
|
-
|
|
24
|
-
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
25
|
-
|
|
26
|
-
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
27
|
-
|
|
28
|
-
var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
|
|
29
|
-
|
|
30
|
-
var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
|
|
31
|
-
|
|
32
|
-
var _image = _interopRequireDefault(require("./image"));
|
|
33
|
-
|
|
34
|
-
var _media = _interopRequireDefault(require("./media"));
|
|
35
|
-
|
|
36
|
-
var _characters = _interopRequireDefault(require("./characters"));
|
|
37
|
-
|
|
38
|
-
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
39
|
-
|
|
40
|
-
var _math = _interopRequireDefault(require("./math"));
|
|
41
|
-
|
|
42
|
-
var _react = _interopRequireDefault(require("react"));
|
|
43
|
-
|
|
44
|
-
var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
|
|
45
|
-
|
|
46
|
-
var _toolbar = _interopRequireDefault(require("./toolbar"));
|
|
47
|
-
|
|
48
|
-
var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
|
|
49
|
-
|
|
50
|
-
var _compact = _interopRequireDefault(require("lodash/compact"));
|
|
51
|
-
|
|
52
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
53
|
-
|
|
54
|
-
var _slateSoftBreak = _interopRequireDefault(require("slate-soft-break"));
|
|
55
|
-
|
|
56
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
57
|
-
|
|
58
|
-
var _list = _interopRequireDefault(require("./list"));
|
|
59
|
-
|
|
60
|
-
var _table = _interopRequireDefault(require("./table"));
|
|
61
|
-
|
|
62
|
-
var _respArea = _interopRequireDefault(require("./respArea"));
|
|
63
|
-
|
|
64
|
-
var _html = _interopRequireDefault(require("./html"));
|
|
65
|
-
|
|
66
|
-
var _css = _interopRequireDefault(require("./css"));
|
|
67
|
-
|
|
68
|
-
var _customPlugin = _interopRequireDefault(require("./customPlugin"));
|
|
69
|
-
|
|
70
|
-
var _rendering = _interopRequireDefault(require("./rendering"));
|
|
71
|
-
|
|
72
|
-
var _textAlign = _interopRequireDefault(require("./textAlign"));
|
|
73
|
-
|
|
74
|
-
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; }
|
|
75
|
-
|
|
76
|
-
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; }
|
|
77
|
-
|
|
78
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
|
|
79
|
-
|
|
80
|
-
var SuperscriptIcon = function SuperscriptIcon() {
|
|
81
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
82
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
83
|
-
height: "24px",
|
|
84
|
-
viewBox: "0 0 24 24",
|
|
85
|
-
width: "24px",
|
|
86
|
-
fill: "none"
|
|
87
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
88
|
-
d: "M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z",
|
|
89
|
-
fill: "currentColor"
|
|
90
|
-
}));
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
var SubscriptIcon = function SubscriptIcon() {
|
|
94
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
95
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
96
|
-
height: "24px",
|
|
97
|
-
viewBox: "0 0 24 24",
|
|
98
|
-
width: "24px",
|
|
99
|
-
fill: "none"
|
|
100
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
101
|
-
d: "M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z",
|
|
102
|
-
fill: "currentColor"
|
|
103
|
-
}));
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
var HeadingIcon = function HeadingIcon() {
|
|
107
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
108
|
-
width: "30",
|
|
109
|
-
height: "28",
|
|
110
|
-
viewBox: "0 0 30 28",
|
|
111
|
-
fill: "none",
|
|
112
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
113
|
-
style: {
|
|
114
|
-
width: '20px',
|
|
115
|
-
height: '18px'
|
|
116
|
-
}
|
|
117
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
118
|
-
d: "M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z",
|
|
119
|
-
fill: "currentColor"
|
|
120
|
-
}));
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
var STYLES_MAP = {
|
|
124
|
-
h3: {
|
|
125
|
-
fontSize: 'inherit',
|
|
126
|
-
fontWeight: 'inherit'
|
|
127
|
-
},
|
|
128
|
-
blockquote: {
|
|
129
|
-
background: '#f9f9f9',
|
|
130
|
-
borderLeft: '5px solid #ccc',
|
|
131
|
-
margin: '1.5em 10px',
|
|
132
|
-
padding: '.5em 10px'
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
function MarkHotkey(options) {
|
|
137
|
-
var type = options.type,
|
|
138
|
-
key = options.key,
|
|
139
|
-
icon = options.icon,
|
|
140
|
-
tag = options.tag; // Return our "plugin" object, containing the `onKeyDown` handler.
|
|
141
|
-
|
|
142
|
-
return {
|
|
143
|
-
name: type,
|
|
144
|
-
toolbar: {
|
|
145
|
-
isMark: true,
|
|
146
|
-
type: type,
|
|
147
|
-
icon: icon,
|
|
148
|
-
onToggle: function onToggle(change) {
|
|
149
|
-
log('[onToggleMark] type: ', type);
|
|
150
|
-
var selection = change.value.selection;
|
|
151
|
-
|
|
152
|
-
if (['blockquote', 'h3'].includes(type)) {
|
|
153
|
-
var texts = change.value.document.getTextsAtRangeAsArray(selection);
|
|
154
|
-
var onlyOneText = texts.length === 1;
|
|
155
|
-
var hasMark = false;
|
|
156
|
-
var sameMark = true;
|
|
157
|
-
texts.forEach(function (t) {
|
|
158
|
-
var marks = t.getMarksAsArray();
|
|
159
|
-
var markIsThere = marks.find(function (m) {
|
|
160
|
-
return m.type === type;
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
if (!markIsThere) {
|
|
164
|
-
// not all texts have this mark
|
|
165
|
-
sameMark = false;
|
|
166
|
-
} else {
|
|
167
|
-
// at least one mark
|
|
168
|
-
hasMark = true;
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
var shouldContinue = onlyOneText || sameMark || !hasMark;
|
|
172
|
-
|
|
173
|
-
if (!shouldContinue) {
|
|
174
|
-
return change;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (selection.startKey === selection.endKey && selection.anchorOffset === selection.focusOffset) {
|
|
178
|
-
var textNode = change.value.document.getNode(selection.startKey); // select the whole line if there is no selection
|
|
179
|
-
|
|
180
|
-
change.moveFocusTo(textNode.key, 0).moveAnchorTo(textNode.key, textNode.text.length); // remove toggle
|
|
181
|
-
|
|
182
|
-
var _hasMark = change.value.activeMarks.find(function (entry) {
|
|
183
|
-
return entry.type === type;
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
if (_hasMark) {
|
|
187
|
-
change.removeMark(_hasMark);
|
|
188
|
-
} else {
|
|
189
|
-
var newMark = _slate.Mark.create(type);
|
|
190
|
-
|
|
191
|
-
change.addMark(newMark);
|
|
192
|
-
} // move focus to end of text
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return change.moveFocusTo(textNode.key, textNode.text.length).moveAnchorTo(textNode.key, textNode.text.length);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
return change.toggleMark(type);
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
renderMark: function renderMark(props) {
|
|
203
|
-
if (props.mark.type === type) {
|
|
204
|
-
var _ref = props.node || {},
|
|
205
|
-
data = _ref.data;
|
|
206
|
-
|
|
207
|
-
var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
|
|
208
|
-
var K = tag || type;
|
|
209
|
-
var additionalStyles = STYLES_MAP[K];
|
|
210
|
-
|
|
211
|
-
if (additionalStyles) {
|
|
212
|
-
if (!jsonData.attributes) {
|
|
213
|
-
jsonData.attributes = {};
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
jsonData.attributes.style = _objectSpread(_objectSpread({}, jsonData.attributes.style), additionalStyles);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return /*#__PURE__*/_react["default"].createElement(K, jsonData.attributes, props.children);
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
onKeyDown: function onKeyDown(event, change) {
|
|
223
|
-
// Check that the key pressed matches our `key` option.
|
|
224
|
-
if (!event.metaKey || event.key != key) return; // Prevent the default characters from being inserted.
|
|
225
|
-
|
|
226
|
-
event.preventDefault(); // Toggle the mark `type`.
|
|
227
|
-
|
|
228
|
-
change.toggleMark(type);
|
|
229
|
-
return true;
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
var ALL_PLUGINS = ['bold', // 'code',
|
|
235
|
-
'html', 'extraCSSRules', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'blockquote', 'h3', 'table', 'video', 'audio', 'responseArea', 'redo', 'undo', 'superscript', 'subscript'];
|
|
236
|
-
exports.ALL_PLUGINS = ALL_PLUGINS;
|
|
237
|
-
var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
|
|
238
|
-
return !['responseArea', 'h3', 'blockquote'].includes(plug);
|
|
239
|
-
});
|
|
240
|
-
exports.DEFAULT_PLUGINS = DEFAULT_PLUGINS;
|
|
241
|
-
var ICON_MAP = {
|
|
242
|
-
undo: _Undo["default"],
|
|
243
|
-
redo: _Redo["default"]
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
function UndoRedo(type) {
|
|
247
|
-
var IconToUse = ICON_MAP[type];
|
|
248
|
-
return {
|
|
249
|
-
name: type,
|
|
250
|
-
toolbar: {
|
|
251
|
-
type: type,
|
|
252
|
-
icon: /*#__PURE__*/_react["default"].createElement(IconToUse, null),
|
|
253
|
-
ariaLabel: type === 'undo' ? 'Undo (revert the last action)' : 'Redo (reapply the last undone action)',
|
|
254
|
-
onClick: function onClick(value, onChange) {
|
|
255
|
-
var change = value.change();
|
|
256
|
-
onChange(change[type]());
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function EnterHandlingPlugin() {
|
|
263
|
-
return {
|
|
264
|
-
name: 'enterHandling',
|
|
265
|
-
onKeyDown: function onKeyDown(event, change) {
|
|
266
|
-
if (_slateHotkeys["default"].isSplitBlock(event) && !_slateDevEnvironment.IS_IOS) {
|
|
267
|
-
if (change.value.isInVoid) {
|
|
268
|
-
return change.collapseToStartOfNextText();
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
change.splitBlock();
|
|
272
|
-
var range = change.value.selection;
|
|
273
|
-
var newBlock = change.value.document.getClosestBlock(range.startKey);
|
|
274
|
-
|
|
275
|
-
if (newBlock.type !== 'paragraph') {
|
|
276
|
-
change.setNodeByKey(newBlock.key, {
|
|
277
|
-
type: 'paragraph'
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
return change;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
return undefined;
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
var buildPlugins = function buildPlugins(activePlugins, customPlugins, opts) {
|
|
290
|
-
log('[buildPlugins] opts: ', opts);
|
|
291
|
-
activePlugins = activePlugins || DEFAULT_PLUGINS;
|
|
292
|
-
|
|
293
|
-
var addIf = function addIf(key, p) {
|
|
294
|
-
return activePlugins.includes(key) && p;
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
var imagePlugin = opts.image && opts.image.onDelete && (0, _image["default"])(opts.image);
|
|
298
|
-
var mathPlugin = (0, _math["default"])(opts.math);
|
|
299
|
-
var respAreaPlugin = opts.responseArea && opts.responseArea.type && (0, _respArea["default"])(opts.responseArea, (0, _compact["default"])([mathPlugin]));
|
|
300
|
-
var cssPlugin = !(0, _isEmpty["default"])(opts.extraCSSRules) && (0, _css["default"])(opts.extraCSSRules);
|
|
301
|
-
var languageCharactersPlugins = ((opts === null || opts === void 0 ? void 0 : opts.languageCharacters) || []).map(function (config) {
|
|
302
|
-
return (0, _characters["default"])(_objectSpread(_objectSpread({}, config), {}, {
|
|
303
|
-
keyPadCharacterRef: opts.keyPadCharacterRef,
|
|
304
|
-
setKeypadInteraction: opts.setKeypadInteraction
|
|
305
|
-
}));
|
|
306
|
-
});
|
|
307
|
-
var tablePlugins = [imagePlugin, mathPlugin, respAreaPlugin].concat((0, _toConsumableArray2["default"])(languageCharactersPlugins));
|
|
308
|
-
|
|
309
|
-
if (opts.responseArea && opts.responseArea.type === 'math-templated') {
|
|
310
|
-
tablePlugins.push(respAreaPlugin);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
var builtCustomPlugins = [];
|
|
314
|
-
customPlugins.forEach(function (customPlugin) {
|
|
315
|
-
var _ref2 = customPlugin || {},
|
|
316
|
-
event = _ref2.event,
|
|
317
|
-
icon = _ref2.icon,
|
|
318
|
-
iconType = _ref2.iconType,
|
|
319
|
-
iconAlt = _ref2.iconAlt;
|
|
320
|
-
|
|
321
|
-
function isValidEventName(eventName) {
|
|
322
|
-
// Check if eventName is a non-empty string
|
|
323
|
-
if (typeof eventName !== 'string' || eventName.length === 0) {
|
|
324
|
-
return false;
|
|
325
|
-
} // Regular expression to match valid event names (only alphanumeric characters and underscore)
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
var regex = /^[a-zA-Z0-9_]+$/; // Check if the eventName matches the regular expression
|
|
329
|
-
|
|
330
|
-
return regex.test(eventName);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if (!isValidEventName(event)) {
|
|
334
|
-
console.error("The event name: ".concat(event, " is not a valid event name!"));
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
if (!icon && !iconType && !iconAlt) {
|
|
339
|
-
console.error('Your custom button requires icon, iconType and iconAlt');
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
builtCustomPlugins.push((0, _customPlugin["default"])('custom-plugin', customPlugin));
|
|
344
|
-
});
|
|
345
|
-
return (0, _compact["default"])([addIf('table', (0, _table["default"])(opts.table, (0, _compact["default"])(tablePlugins))), addIf('bold', MarkHotkey({
|
|
346
|
-
key: 'b',
|
|
347
|
-
type: 'bold',
|
|
348
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
349
|
-
tag: 'strong'
|
|
350
|
-
})), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
|
|
351
|
-
addIf('italic', MarkHotkey({
|
|
352
|
-
key: 'i',
|
|
353
|
-
type: 'italic',
|
|
354
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
|
|
355
|
-
tag: 'em'
|
|
356
|
-
})), addIf('strikethrough', MarkHotkey({
|
|
357
|
-
key: '~',
|
|
358
|
-
type: 'strikethrough',
|
|
359
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
360
|
-
tag: 'del'
|
|
361
|
-
})), addIf('underline', MarkHotkey({
|
|
362
|
-
key: 'u',
|
|
363
|
-
type: 'underline',
|
|
364
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
365
|
-
tag: 'u'
|
|
366
|
-
})), // icon should be modifies accordingly
|
|
367
|
-
addIf('superscript', MarkHotkey({
|
|
368
|
-
type: 'sup',
|
|
369
|
-
icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
|
|
370
|
-
tag: 'sup'
|
|
371
|
-
})), // icon should be modifies accordingly
|
|
372
|
-
addIf('subscript', MarkHotkey({
|
|
373
|
-
type: 'sub',
|
|
374
|
-
icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
|
|
375
|
-
tag: 'sub'
|
|
376
|
-
})), 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"])(languageCharactersPlugins.map(function (plugin) {
|
|
377
|
-
return addIf('languageCharacters', plugin);
|
|
378
|
-
})), [addIf('text-align', (0, _textAlign["default"])(opts.textAlign)), addIf('blockquote', MarkHotkey({
|
|
379
|
-
key: 'q',
|
|
380
|
-
type: 'blockquote',
|
|
381
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatQuote["default"], null),
|
|
382
|
-
tag: 'blockquote'
|
|
383
|
-
})), addIf('h3', MarkHotkey({
|
|
384
|
-
key: 'h3',
|
|
385
|
-
type: 'h3',
|
|
386
|
-
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
387
|
-
tag: 'h3'
|
|
388
|
-
})), addIf('bulleted-list', (0, _list["default"])({
|
|
389
|
-
key: 'l',
|
|
390
|
-
type: 'ul_list',
|
|
391
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)
|
|
392
|
-
})), addIf('numbered-list', (0, _list["default"])({
|
|
393
|
-
key: 'n',
|
|
394
|
-
type: 'ol_list',
|
|
395
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)
|
|
396
|
-
})), addIf('undo', UndoRedo('undo')), addIf('redo', UndoRedo('redo')), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
|
|
397
|
-
shift: true
|
|
398
|
-
})], builtCustomPlugins, [addIf('responseArea', respAreaPlugin), cssPlugin, addIf('html', (0, _html["default"])(opts.html)), EnterHandlingPlugin(), (0, _rendering["default"])()]));
|
|
399
|
-
};
|
|
400
|
-
|
|
401
|
-
exports.buildPlugins = buildPlugins;
|
|
402
|
-
//# sourceMappingURL=index.js.map
|
package/lib/plugins/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/index.jsx"],"names":["log","SuperscriptIcon","SubscriptIcon","HeadingIcon","width","height","STYLES_MAP","h3","fontSize","fontWeight","blockquote","background","borderLeft","margin","padding","MarkHotkey","options","type","key","icon","tag","name","toolbar","isMark","onToggle","change","selection","value","includes","texts","document","getTextsAtRangeAsArray","onlyOneText","length","hasMark","sameMark","forEach","t","marks","getMarksAsArray","markIsThere","find","m","shouldContinue","startKey","endKey","anchorOffset","focusOffset","textNode","getNode","moveFocusTo","moveAnchorTo","text","activeMarks","entry","removeMark","newMark","Mark","create","addMark","toggleMark","renderMark","props","mark","node","data","jsonData","toJSON","K","additionalStyles","attributes","style","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","ICON_MAP","undo","Undo","redo","Redo","UndoRedo","IconToUse","ariaLabel","onClick","onChange","EnterHandlingPlugin","Hotkeys","isSplitBlock","IS_IOS","isInVoid","collapseToStartOfNextText","splitBlock","range","newBlock","getClosestBlock","setNodeByKey","undefined","buildPlugins","activePlugins","customPlugins","opts","addIf","p","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","cssPlugin","extraCSSRules","languageCharactersPlugins","languageCharacters","map","config","keyPadCharacterRef","setKeypadInteraction","tablePlugins","push","builtCustomPlugins","customPlugin","iconType","iconAlt","isValidEventName","eventName","regex","test","console","error","table","media","plugin","textAlign","shift","html"],"mappings":"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","sourcesContent":["import Hotkeys from 'slate-hotkeys';\nimport { IS_IOS } from 'slate-dev-environment';\nimport { Mark } from 'slate';\nimport Bold from '@material-ui/icons/FormatBold';\nimport FormatQuote from '@material-ui/icons/FormatQuote';\n//import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport Redo from '@material-ui/icons/Redo';\nimport Undo from '@material-ui/icons/Undo';\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 isEmpty from 'lodash/isEmpty';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\nimport HtmlPlugin from './html';\nimport CSSPlugin from './css';\nimport CustomPlugin from './customPlugin';\nimport RenderingPlugin from './rendering';\nimport TextAlign from './textAlign';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nconst SuperscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst SubscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst HeadingIcon = () => (\n <svg\n width=\"30\"\n height=\"28\"\n viewBox=\"0 0 30 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: '20px', height: '18px' }}\n >\n <path\n d=\"M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\nconst STYLES_MAP = {\n h3: {\n fontSize: 'inherit',\n fontWeight: 'inherit',\n },\n blockquote: {\n background: '#f9f9f9',\n borderLeft: '5px solid #ccc',\n margin: '1.5em 10px',\n padding: '.5em 10px',\n },\n};\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n name: type,\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: (change) => {\n log('[onToggleMark] type: ', type);\n const { selection } = change.value;\n\n if (['blockquote', 'h3'].includes(type)) {\n const texts = change.value.document.getTextsAtRangeAsArray(selection);\n const onlyOneText = texts.length === 1;\n let hasMark = false;\n let sameMark = true;\n\n texts.forEach((t) => {\n const marks = t.getMarksAsArray();\n const markIsThere = marks.find((m) => m.type === type);\n\n if (!markIsThere) {\n // not all texts have this mark\n sameMark = false;\n } else {\n // at least one mark\n hasMark = true;\n }\n });\n\n const shouldContinue = onlyOneText || sameMark || !hasMark;\n\n if (!shouldContinue) {\n return change;\n }\n\n if (selection.startKey === selection.endKey && selection.anchorOffset === selection.focusOffset) {\n const textNode = change.value.document.getNode(selection.startKey);\n\n // select the whole line if there is no selection\n change.moveFocusTo(textNode.key, 0).moveAnchorTo(textNode.key, textNode.text.length);\n\n // remove toggle\n const hasMark = change.value.activeMarks.find((entry) => {\n return entry.type === type;\n });\n\n if (hasMark) {\n change.removeMark(hasMark);\n } else {\n const newMark = Mark.create(type);\n\n change.addMark(newMark);\n }\n\n // move focus to end of text\n return change\n .moveFocusTo(textNode.key, textNode.text.length)\n .moveAnchorTo(textNode.key, textNode.text.length);\n }\n }\n\n return change.toggleMark(type);\n },\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const { data } = props.node || {};\n const jsonData = data?.toJSON() || {};\n const K = tag || type;\n const additionalStyles = STYLES_MAP[K];\n\n if (additionalStyles) {\n if (!jsonData.attributes) {\n jsonData.attributes = {};\n }\n\n jsonData.attributes.style = {\n ...jsonData.attributes.style,\n ...additionalStyles,\n };\n }\n\n return <K {...jsonData.attributes}>{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 'html',\n 'extraCSSRules',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'blockquote',\n 'h3',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'redo',\n 'undo',\n 'superscript',\n 'subscript',\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter((plug) => !['responseArea', 'h3', 'blockquote'].includes(plug));\n\nconst ICON_MAP = {\n undo: Undo,\n redo: Redo,\n};\nfunction UndoRedo(type) {\n const IconToUse = ICON_MAP[type];\n\n return {\n name: type,\n toolbar: {\n type,\n icon: <IconToUse />,\n ariaLabel: type === 'undo' ? 'Undo (revert the last action)' : 'Redo (reapply the last undone action)',\n onClick: (value, onChange) => {\n const change = value.change();\n\n onChange(change[type]());\n },\n },\n };\n}\n\nfunction EnterHandlingPlugin() {\n return {\n name: 'enterHandling',\n onKeyDown: (event, change) => {\n if (Hotkeys.isSplitBlock(event) && !IS_IOS) {\n if (change.value.isInVoid) {\n return change.collapseToStartOfNextText();\n }\n\n change.splitBlock();\n\n const range = change.value.selection;\n const newBlock = change.value.document.getClosestBlock(range.startKey);\n\n if (newBlock.type !== 'paragraph') {\n change.setNodeByKey(newBlock.key, {\n type: 'paragraph',\n });\n }\n\n return change;\n }\n\n return undefined;\n },\n };\n}\n\nexport const buildPlugins = (activePlugins, customPlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n\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 const cssPlugin = !isEmpty(opts.extraCSSRules) && CSSPlugin(opts.extraCSSRules);\n\n const languageCharactersPlugins = (opts?.languageCharacters || []).map((config) =>\n CharactersPlugin({\n ...config,\n keyPadCharacterRef: opts.keyPadCharacterRef,\n setKeypadInteraction: opts.setKeypadInteraction,\n }),\n );\n\n const tablePlugins = [imagePlugin, mathPlugin, respAreaPlugin, ...languageCharactersPlugins];\n\n if (opts.responseArea && opts.responseArea.type === 'math-templated') {\n tablePlugins.push(respAreaPlugin);\n }\n\n let builtCustomPlugins = [];\n\n customPlugins.forEach((customPlugin) => {\n const { event, icon, iconType, iconAlt } = customPlugin || {};\n\n function isValidEventName(eventName) {\n // Check if eventName is a non-empty string\n if (typeof eventName !== 'string' || eventName.length === 0) {\n return false;\n }\n\n // Regular expression to match valid event names (only alphanumeric characters and underscore)\n const regex = /^[a-zA-Z0-9_]+$/;\n\n // Check if the eventName matches the regular expression\n return regex.test(eventName);\n }\n\n if (!isValidEventName(event)) {\n console.error(`The event name: ${event} is not a valid event name!`);\n return;\n }\n\n if (!icon && !iconType && !iconAlt) {\n console.error('Your custom button requires icon, iconType and iconAlt');\n return;\n }\n\n builtCustomPlugins.push(CustomPlugin('custom-plugin', customPlugin));\n });\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact(tablePlugins))),\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 // icon should be modifies accordingly\n addIf('superscript', MarkHotkey({ type: 'sup', icon: <SuperscriptIcon />, tag: 'sup' })),\n // icon should be modifies accordingly\n addIf('subscript', MarkHotkey({ type: 'sub', icon: <SubscriptIcon />, tag: 'sub' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n ...languageCharactersPlugins.map((plugin) => addIf('languageCharacters', plugin)),\n addIf('text-align', TextAlign(opts.textAlign)),\n addIf('blockquote', MarkHotkey({ key: 'q', type: 'blockquote', icon: <FormatQuote />, tag: 'blockquote' })),\n addIf('h3', MarkHotkey({ key: 'h3', type: 'h3', icon: <HeadingIcon />, tag: 'h3' })),\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 addIf('undo', UndoRedo('undo')),\n addIf('redo', UndoRedo('redo')),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin({ shift: true }),\n ...builtCustomPlugins,\n addIf('responseArea', respAreaPlugin),\n cssPlugin,\n addIf('html', HtmlPlugin(opts.html)),\n EnterHandlingPlugin(),\n RenderingPlugin(),\n ]);\n};\n"],"file":"index.js"}
|