@seafile/sea-email-editor 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/assets/icons/align-center.svg +1 -0
- package/dist/assets/icons/align-left.svg +1 -0
- package/dist/assets/icons/align-right.svg +1 -0
- package/dist/assets/icons/arrow-down.svg +1 -0
- package/dist/assets/icons/arrow-right.svg +1 -0
- package/dist/assets/icons/arrow-up.svg +1 -0
- package/dist/assets/icons/bold.svg +1 -0
- package/dist/assets/icons/callout-color.svg +1 -0
- package/dist/assets/icons/check-mark-option.svg +3 -0
- package/dist/assets/icons/check-square.svg +1 -0
- package/dist/assets/icons/clear-format.svg +1 -0
- package/dist/assets/icons/close.svg +3 -0
- package/dist/assets/icons/code-block.svg +1 -0
- package/dist/assets/icons/image.svg +1 -0
- package/dist/assets/icons/inline-code.svg +1 -0
- package/dist/assets/icons/insert.svg +1 -0
- package/dist/assets/icons/italic.svg +1 -0
- package/dist/assets/icons/link.svg +1 -0
- package/dist/assets/icons/more.svg +1 -0
- package/dist/assets/icons/ol.svg +1 -0
- package/dist/assets/icons/quote.svg +1 -0
- package/dist/assets/icons/rename.svg +4 -0
- package/dist/assets/icons/strikethrough.svg +1 -0
- package/dist/assets/icons/table.svg +1 -0
- package/dist/assets/icons/ul.svg +1 -0
- package/dist/assets/icons/underline.svg +1 -0
- package/dist/assets/icons/unlink.svg +1 -0
- package/dist/components/browser-tip/index.css +18 -0
- package/dist/components/browser-tip/index.js +28 -0
- package/dist/components/centered-loading.js +23 -0
- package/dist/components/icon/index.css +7 -0
- package/dist/components/icon/index.js +30 -0
- package/dist/components/icon-button/index.css +33 -0
- package/dist/components/icon-button/index.js +71 -0
- package/dist/components/index.js +92 -0
- package/dist/components/loading/index.css +54 -0
- package/dist/components/loading/index.js +15 -0
- package/dist/components/modal/index.css +0 -0
- package/dist/components/modal/index.js +27 -0
- package/dist/components/modal-header/index.css +22 -0
- package/dist/components/modal-header/index.js +36 -0
- package/dist/components/option/index.css +20 -0
- package/dist/components/option/index.js +39 -0
- package/dist/components/options-editor/container/index.css +49 -0
- package/dist/components/options-editor/container/index.js +122 -0
- package/dist/components/options-editor/index.css +26 -0
- package/dist/components/options-editor/index.js +70 -0
- package/dist/components/options-editor/options/index.css +5 -0
- package/dist/components/options-editor/options/index.js +138 -0
- package/dist/components/options-editor/options/option/index.css +54 -0
- package/dist/components/options-editor/options/option/index.js +138 -0
- package/dist/components/popover/index.js +85 -0
- package/dist/components/popover/utils.js +76 -0
- package/dist/components/search-input/index.css +52 -0
- package/dist/components/search-input/index.js +148 -0
- package/dist/components/selector-display/index.css +86 -0
- package/dist/components/selector-display/index.js +66 -0
- package/dist/components/toolbar/index.js +20 -0
- package/dist/components/toolbar/toolbar-group/index.css +13 -0
- package/dist/components/toolbar/toolbar-group/index.js +22 -0
- package/dist/components/toolbar/toolbar-item/index.css +3 -0
- package/dist/components/toolbar/toolbar-item/index.js +53 -0
- package/dist/components/tooltip/index.css +68 -0
- package/dist/components/tooltip/index.js +46 -0
- package/dist/components/tooltip/shortcut-key/index.css +7 -0
- package/dist/components/tooltip/shortcut-key/index.js +20 -0
- package/dist/constants/event-types.js +25 -0
- package/dist/constants/index.js +40 -0
- package/dist/constants/key-codes.js +104 -0
- package/dist/editor/index.css +44 -0
- package/dist/editor/index.js +50 -0
- package/dist/editor/main/index.css +19 -0
- package/dist/editor/main/index.js +166 -0
- package/dist/editor/with-props-editor.js +20 -0
- package/dist/extension/commons/dropdown-menu-item/index.css +52 -0
- package/dist/extension/commons/dropdown-menu-item/index.js +62 -0
- package/dist/extension/commons/index.js +5 -0
- package/dist/extension/commons/insert-element-dialog/index.js +91 -0
- package/dist/extension/commons/menu/index.js +3 -0
- package/dist/extension/commons/menu/menu-drop-down.js +98 -0
- package/dist/extension/commons/menu-shortcut-indicator/index.js +24 -0
- package/dist/extension/commons/menu-shortcut-indicator/style.css +18 -0
- package/dist/extension/constants/element-default-style.js +78 -0
- package/dist/extension/constants/element-types.js +33 -0
- package/dist/extension/constants/index.js +63 -0
- package/dist/extension/constants/keyboard.js +33 -0
- package/dist/extension/constants/menus-config.js +142 -0
- package/dist/extension/core/index.js +38 -0
- package/dist/extension/core/queries/index.js +507 -0
- package/dist/extension/core/transforms/focus-editor.js +18 -0
- package/dist/extension/core/transforms/index.js +49 -0
- package/dist/extension/core/transforms/move-children.js +35 -0
- package/dist/extension/core/transforms/remove-node-children.js +19 -0
- package/dist/extension/core/transforms/replace-node-children.js +24 -0
- package/dist/extension/core/utils/index.js +120 -0
- package/dist/extension/event-transfer/get-event-transfer.js +38 -0
- package/dist/extension/event-transfer/set-event-transfer.js +36 -0
- package/dist/extension/highlight/index.js +20 -0
- package/dist/extension/highlight/normalize-tokens.js +94 -0
- package/dist/extension/highlight/prismjs.js +27 -0
- package/dist/extension/highlight/set-node-decorations.js +81 -0
- package/dist/extension/highlight/use-highlight.js +20 -0
- package/dist/extension/index.js +67 -0
- package/dist/extension/plugins/blockquote/helpers.js +68 -0
- package/dist/extension/plugins/blockquote/index.js +18 -0
- package/dist/extension/plugins/blockquote/menu/index.js +35 -0
- package/dist/extension/plugins/blockquote/plugin.js +154 -0
- package/dist/extension/plugins/blockquote/render-elem.js +29 -0
- package/dist/extension/plugins/check-list/helper.js +34 -0
- package/dist/extension/plugins/check-list/index.js +19 -0
- package/dist/extension/plugins/check-list/menu/index.js +39 -0
- package/dist/extension/plugins/check-list/plugin.js +92 -0
- package/dist/extension/plugins/check-list/render-elem.js +61 -0
- package/dist/extension/plugins/clear-format/helpers.js +51 -0
- package/dist/extension/plugins/clear-format/menu/index.js +35 -0
- package/dist/extension/plugins/code-block/helpers.js +140 -0
- package/dist/extension/plugins/code-block/index.js +20 -0
- package/dist/extension/plugins/code-block/menu/index.js +59 -0
- package/dist/extension/plugins/code-block/plugin.js +288 -0
- package/dist/extension/plugins/code-block/render-elem/constant.js +22 -0
- package/dist/extension/plugins/code-block/render-elem/index.js +89 -0
- package/dist/extension/plugins/code-block/render-elem/language-selector/index.css +18 -0
- package/dist/extension/plugins/code-block/render-elem/language-selector/index.js +38 -0
- package/dist/extension/plugins/formula/formula.css +22 -0
- package/dist/extension/plugins/formula/helper.js +80 -0
- package/dist/extension/plugins/formula/index.js +19 -0
- package/dist/extension/plugins/formula/menu/formula-modal.js +98 -0
- package/dist/extension/plugins/formula/menu/index.js +35 -0
- package/dist/extension/plugins/formula/plugin.js +22 -0
- package/dist/extension/plugins/formula/render-elem.js +64 -0
- package/dist/extension/plugins/header/helper.js +55 -0
- package/dist/extension/plugins/header/index.js +19 -0
- package/dist/extension/plugins/header/menu/index.js +72 -0
- package/dist/extension/plugins/header/plugin.js +155 -0
- package/dist/extension/plugins/header/render-elem.js +39 -0
- package/dist/extension/plugins/html/index.js +13 -0
- package/dist/extension/plugins/html/plugin.js +69 -0
- package/dist/extension/plugins/image/helper.js +131 -0
- package/dist/extension/plugins/image/index.js +19 -0
- package/dist/extension/plugins/image/menu/image-menu-dialog.js +92 -0
- package/dist/extension/plugins/image/menu/index.css +3 -0
- package/dist/extension/plugins/image/menu/index.js +103 -0
- package/dist/extension/plugins/image/plugin.js +56 -0
- package/dist/extension/plugins/image/render-element/image-previewer.js +89 -0
- package/dist/extension/plugins/image/render-element/index.js +141 -0
- package/dist/extension/plugins/image/render-element/style.css +68 -0
- package/dist/extension/plugins/index.js +116 -0
- package/dist/extension/plugins/link/helper.js +258 -0
- package/dist/extension/plugins/link/index.js +19 -0
- package/dist/extension/plugins/link/menu/index.js +92 -0
- package/dist/extension/plugins/link/menu/link-modal.js +169 -0
- package/dist/extension/plugins/link/plugin.js +172 -0
- package/dist/extension/plugins/link/render-elem/index.css +12 -0
- package/dist/extension/plugins/link/render-elem/index.js +103 -0
- package/dist/extension/plugins/link/render-elem/link-op-menu/index.css +33 -0
- package/dist/extension/plugins/link/render-elem/link-op-menu/index.js +89 -0
- package/dist/extension/plugins/list/constant.js +8 -0
- package/dist/extension/plugins/list/helpers.js +102 -0
- package/dist/extension/plugins/list/index.js +19 -0
- package/dist/extension/plugins/list/menu/index.js +41 -0
- package/dist/extension/plugins/list/plugin/index.js +80 -0
- package/dist/extension/plugins/list/plugin/insert-break-list.js +29 -0
- package/dist/extension/plugins/list/plugin/insert-fragment-list.js +179 -0
- package/dist/extension/plugins/list/plugin/normalize-list.js +79 -0
- package/dist/extension/plugins/list/plugin/on-tab-handle.js +63 -0
- package/dist/extension/plugins/list/plugin/shortcut.js +69 -0
- package/dist/extension/plugins/list/queries/index.js +52 -0
- package/dist/extension/plugins/list/render-elem/index.js +68 -0
- package/dist/extension/plugins/list/transforms/index.js +75 -0
- package/dist/extension/plugins/list/transforms/insert-list-item.js +98 -0
- package/dist/extension/plugins/list/transforms/move-list-item-down.js +50 -0
- package/dist/extension/plugins/list/transforms/move-list-item-up.js +124 -0
- package/dist/extension/plugins/list/transforms/move-list-items-to-list.js +63 -0
- package/dist/extension/plugins/list/transforms/move-list-items.js +73 -0
- package/dist/extension/plugins/list/transforms/normalize-list-item.js +110 -0
- package/dist/extension/plugins/list/transforms/normalize-nested-list.js +38 -0
- package/dist/extension/plugins/list/transforms/remove-first-list-item.js +24 -0
- package/dist/extension/plugins/list/transforms/transforms-to-list.js +131 -0
- package/dist/extension/plugins/list/transforms/unwrap-list.js +48 -0
- package/dist/extension/plugins/markdown/index.js +12 -0
- package/dist/extension/plugins/markdown/plugin.js +257 -0
- package/dist/extension/plugins/node-id/constants.js +24 -0
- package/dist/extension/plugins/node-id/helpers.js +78 -0
- package/dist/extension/plugins/node-id/index.js +12 -0
- package/dist/extension/plugins/node-id/with-node-id.js +37 -0
- package/dist/extension/plugins/p/helper.js +17 -0
- package/dist/extension/plugins/p/index.js +17 -0
- package/dist/extension/plugins/p/plugin.js +141 -0
- package/dist/extension/plugins/p/render-elem.js +29 -0
- package/dist/extension/plugins/paragraph/helper.js +17 -0
- package/dist/extension/plugins/paragraph/index.js +17 -0
- package/dist/extension/plugins/paragraph/plugin.js +141 -0
- package/dist/extension/plugins/paragraph/render-elem.js +29 -0
- package/dist/extension/plugins/table/constant.js +24 -0
- package/dist/extension/plugins/table/context-menu/horizontal-align-popover/index.css +3 -0
- package/dist/extension/plugins/table/context-menu/horizontal-align-popover/index.js +64 -0
- package/dist/extension/plugins/table/context-menu/index.css +13 -0
- package/dist/extension/plugins/table/context-menu/index.js +152 -0
- package/dist/extension/plugins/table/context-menu/insert-table-element/index.css +27 -0
- package/dist/extension/plugins/table/context-menu/insert-table-element/index.js +113 -0
- package/dist/extension/plugins/table/helper.js +333 -0
- package/dist/extension/plugins/table/index.js +21 -0
- package/dist/extension/plugins/table/menu/index.js +61 -0
- package/dist/extension/plugins/table/menu/table-operator.js +97 -0
- package/dist/extension/plugins/table/menu/table-size-selector/index.css +27 -0
- package/dist/extension/plugins/table/menu/table-size-selector/index.js +98 -0
- package/dist/extension/plugins/table/model.js +102 -0
- package/dist/extension/plugins/table/plugin.js +351 -0
- package/dist/extension/plugins/table/render-elem/index.css +64 -0
- package/dist/extension/plugins/table/render-elem/index.js +252 -0
- package/dist/extension/plugins/table/table-operations.js +323 -0
- package/dist/extension/plugins/text-style/helpers.js +57 -0
- package/dist/extension/plugins/text-style/index.js +17 -0
- package/dist/extension/plugins/text-style/menu/index.js +37 -0
- package/dist/extension/plugins/text-style/plugin.js +38 -0
- package/dist/extension/plugins/text-style/render-elem.js +63 -0
- package/dist/extension/render/render-element.js +115 -0
- package/dist/extension/render/render-leaf.js +22 -0
- package/dist/extension/toolbar/index.css +16 -0
- package/dist/extension/toolbar/index.js +89 -0
- package/dist/extension/toolbar/insert-toolbar.js +78 -0
- package/dist/hooks/use-attachments.js +38 -0
- package/dist/hooks/use-container-style.js +50 -0
- package/dist/hooks/use-mathjax.js +46 -0
- package/dist/hooks/use-scroll-context.js +20 -0
- package/dist/hooks/use-selection-update.js +20 -0
- package/dist/hooks/user-link-click.js +52 -0
- package/dist/index.js +9 -0
- package/dist/intl/ReactIntlUniversal.js +310 -0
- package/dist/intl/constants.js +21 -0
- package/dist/intl/index.js +33 -0
- package/dist/locale/index.js +11 -0
- package/dist/locale/lang/en.json +83 -0
- package/dist/slate-convert/html-to-slate/constants.js +146 -0
- package/dist/slate-convert/html-to-slate/helper.js +106 -0
- package/dist/slate-convert/html-to-slate/index.js +138 -0
- package/dist/slate-convert/html-to-slate/rules/blockquote.js +26 -0
- package/dist/slate-convert/html-to-slate/rules/br.js +29 -0
- package/dist/slate-convert/html-to-slate/rules/check-list.js +29 -0
- package/dist/slate-convert/html-to-slate/rules/code-block.js +95 -0
- package/dist/slate-convert/html-to-slate/rules/header.js +26 -0
- package/dist/slate-convert/html-to-slate/rules/image.js +31 -0
- package/dist/slate-convert/html-to-slate/rules/index.js +20 -0
- package/dist/slate-convert/html-to-slate/rules/link.js +31 -0
- package/dist/slate-convert/html-to-slate/rules/list.js +74 -0
- package/dist/slate-convert/html-to-slate/rules/p.js +37 -0
- package/dist/slate-convert/html-to-slate/rules/paragraph.js +37 -0
- package/dist/slate-convert/html-to-slate/rules/table.js +64 -0
- package/dist/slate-convert/html-to-slate/rules/text.js +71 -0
- package/dist/slate-convert/index.js +20 -0
- package/dist/slate-convert/slate-to-html/index.js +143 -0
- package/dist/utils/common.js +46 -0
- package/dist/utils/deserialize-html.js +219 -0
- package/dist/utils/dom-utils.js +57 -0
- package/dist/utils/dom.js +133 -0
- package/dist/utils/event-bus.js +40 -0
- package/dist/utils/event-handler.js +44 -0
- package/dist/utils/get-browser-Info.js +35 -0
- package/dist/utils/hotkey.js +45 -0
- package/dist/utils/is-punctuation-mark.js +50 -0
- package/dist/utils/object-utils.js +56 -0
- package/dist/utils/search.js +20 -0
- package/dist/utils/translate.js +18 -0
- package/dist/utils/type-detection.js +42 -0
- package/package.json +177 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.match = exports.isEmptyParagraph = exports.generateHeaderElement = exports.generateEmptyElement = exports.generateElement = exports.generateDefaultText = exports.generateDefaultParagraph = exports.Placeholder = void 0;
|
|
8
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
9
|
+
var _constants = require("@/constants");
|
|
10
|
+
var _elementTypes = require("../../constants/element-types");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
const match = (node, path, predicate) => {
|
|
13
|
+
if (!predicate) return true;
|
|
14
|
+
if (typeof predicate === 'object') {
|
|
15
|
+
return Object.entries(predicate).every(_ref => {
|
|
16
|
+
let [key, value] = _ref;
|
|
17
|
+
if (value && !Array.isArray(value)) {
|
|
18
|
+
return node[key] === value;
|
|
19
|
+
}
|
|
20
|
+
value = value ? value : [];
|
|
21
|
+
return value.includes(node[key]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return predicate(node, path);
|
|
25
|
+
};
|
|
26
|
+
exports.match = match;
|
|
27
|
+
const generateDefaultText = () => {
|
|
28
|
+
return {
|
|
29
|
+
id: _slugid.default.nice(),
|
|
30
|
+
text: ''
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.generateDefaultText = generateDefaultText;
|
|
34
|
+
const generateDefaultParagraph = () => {
|
|
35
|
+
return {
|
|
36
|
+
id: _slugid.default.nice(),
|
|
37
|
+
type: _elementTypes.PARAGRAPH,
|
|
38
|
+
children: [generateDefaultText()]
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.generateDefaultParagraph = generateDefaultParagraph;
|
|
42
|
+
const generateEmptyElement = type => {
|
|
43
|
+
return {
|
|
44
|
+
id: _slugid.default.nice(),
|
|
45
|
+
type,
|
|
46
|
+
children: [generateDefaultText()]
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
exports.generateEmptyElement = generateEmptyElement;
|
|
50
|
+
const generateHeaderElement = text => {
|
|
51
|
+
const headerText = {
|
|
52
|
+
id: _slugid.default.nice(),
|
|
53
|
+
text: text
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
id: _slugid.default.nice(),
|
|
57
|
+
type: _elementTypes.HEADER1,
|
|
58
|
+
children: [headerText]
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @param {String} type
|
|
64
|
+
* @param {Object} options
|
|
65
|
+
* @param {Node[] | String} [options.childrenOrText = ''] If provide a string,that will generate a text node as children automatically
|
|
66
|
+
* @param {object} [options.props = {}]
|
|
67
|
+
* @returns {Node}
|
|
68
|
+
*/
|
|
69
|
+
exports.generateHeaderElement = generateHeaderElement;
|
|
70
|
+
const generateElement = function (type) {
|
|
71
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
72
|
+
let {
|
|
73
|
+
childrenOrText = '',
|
|
74
|
+
props = {}
|
|
75
|
+
} = options;
|
|
76
|
+
if (typeof childrenOrText === 'string') {
|
|
77
|
+
childrenOrText = [{
|
|
78
|
+
id: _slugid.default.nice(),
|
|
79
|
+
text: childrenOrText
|
|
80
|
+
}];
|
|
81
|
+
}
|
|
82
|
+
if (!Array.isArray(childrenOrText)) {
|
|
83
|
+
throw Error('childrenOrText must be a string or a Node array!');
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
id: _slugid.default.nice(),
|
|
87
|
+
type,
|
|
88
|
+
children: childrenOrText,
|
|
89
|
+
...props
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
exports.generateElement = generateElement;
|
|
93
|
+
const isEmptyParagraph = node => {
|
|
94
|
+
if (node.type !== 'paragraph') return false;
|
|
95
|
+
if (node.children.length !== 1) return false;
|
|
96
|
+
const [child] = node.children;
|
|
97
|
+
if (Text.isText(child) && child.text === '' && child.type !== 'image') return true;
|
|
98
|
+
return false;
|
|
99
|
+
};
|
|
100
|
+
exports.isEmptyParagraph = isEmptyParagraph;
|
|
101
|
+
const Placeholder = props => {
|
|
102
|
+
const {
|
|
103
|
+
title
|
|
104
|
+
} = props;
|
|
105
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
106
|
+
style: {
|
|
107
|
+
position: 'absolute',
|
|
108
|
+
top: '0px',
|
|
109
|
+
color: 'rgba(191,191,191,1)',
|
|
110
|
+
pointerEvents: 'none',
|
|
111
|
+
width: '100%',
|
|
112
|
+
maxWidth: '100%',
|
|
113
|
+
display: 'block',
|
|
114
|
+
userSelect: 'none',
|
|
115
|
+
textDecoration: 'none'
|
|
116
|
+
},
|
|
117
|
+
children: (0, _constants.gettext)(title)
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
exports.Placeholder = Placeholder;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const getEventTransfer = data => {
|
|
8
|
+
const fragmentString = data.getData('application/x-slate-fragment');
|
|
9
|
+
const textContent = data.getData('text') || data.getData('text/plain') || '';
|
|
10
|
+
let fragmentContent = fragmentString ? JSON.parse(decodeURIComponent(window.atob(fragmentString))) : null;
|
|
11
|
+
const htmlContent = data.getData('text/html') || '';
|
|
12
|
+
const hasRtfContent = data.types.includes('text/rtf');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* compat old version slate: if clipboard content is old version slate fragment
|
|
16
|
+
* return html content
|
|
17
|
+
*/
|
|
18
|
+
const files = data.files;
|
|
19
|
+
let type = 'text';
|
|
20
|
+
// Paste rtf format content which copied from PPT or Word or Excel as text to document
|
|
21
|
+
if (hasRtfContent) {
|
|
22
|
+
type = 'text';
|
|
23
|
+
} else if (files.length > 0) {
|
|
24
|
+
type = 'file';
|
|
25
|
+
} else if (fragmentContent && Array.isArray(fragmentContent)) {
|
|
26
|
+
type = 'fragment';
|
|
27
|
+
} else if (htmlContent) {
|
|
28
|
+
type = 'html';
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
text: textContent,
|
|
32
|
+
html: htmlContent,
|
|
33
|
+
fragment: fragmentContent,
|
|
34
|
+
type,
|
|
35
|
+
files: files
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
var _default = exports.default = getEventTransfer;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _slate = require("slate");
|
|
8
|
+
const TRANSFER_TYPES = {
|
|
9
|
+
fragment: 'application/x-slate-fragment',
|
|
10
|
+
html: 'text/html',
|
|
11
|
+
text: 'text/plain'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// transform slate fragment and write to clipboard
|
|
15
|
+
function setEventTransfer(event, type, content) {
|
|
16
|
+
const mime = TRANSFER_TYPES[type];
|
|
17
|
+
const transfer = event.dataTransfer || event.clipboardData;
|
|
18
|
+
if (type === 'fragment') {
|
|
19
|
+
// use the same encoding as slate
|
|
20
|
+
const encodedContent = window.btoa(encodeURIComponent(JSON.stringify(content)));
|
|
21
|
+
transfer.setData(mime, encodedContent);
|
|
22
|
+
let texts = '';
|
|
23
|
+
let textItem = '';
|
|
24
|
+
content.forEach(element => {
|
|
25
|
+
textItem = _slate.Node.string(element).replace(/\ufeff/, '');
|
|
26
|
+
texts += textItem + '\r\n';
|
|
27
|
+
});
|
|
28
|
+
transfer.setData('text', texts);
|
|
29
|
+
} else if (type === 'html') {
|
|
30
|
+
transfer.setData(mime, content);
|
|
31
|
+
transfer.setData('text', transfer.getData('text'));
|
|
32
|
+
} else {
|
|
33
|
+
transfer.setData('text', content);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var _default = exports.default = setEventTransfer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "SetNodeToDecorations", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _setNodeDecorations.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "useHighlight", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _useHighlight.default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _setNodeDecorations = _interopRequireDefault(require("./set-node-decorations"));
|
|
20
|
+
var _useHighlight = _interopRequireDefault(require("./use-highlight"));
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.normalizeTokens = void 0;
|
|
7
|
+
const newlineRe = /\r\n|\r|\n/;
|
|
8
|
+
const normalizeEmptyLines = line => {
|
|
9
|
+
if (line.length === 0) {
|
|
10
|
+
line.push({
|
|
11
|
+
types: ['plain'],
|
|
12
|
+
content: '\n',
|
|
13
|
+
empty: true
|
|
14
|
+
});
|
|
15
|
+
} else if (line.length === 1 && line[0].content === '') {
|
|
16
|
+
line[0].content = '\n';
|
|
17
|
+
line[0].empty = true;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const appendTypes = (types, add) => {
|
|
21
|
+
const typesSize = types.length;
|
|
22
|
+
if (typesSize > 0 && types[typesSize - 1] === add) {
|
|
23
|
+
return types;
|
|
24
|
+
}
|
|
25
|
+
return types.concat(add);
|
|
26
|
+
};
|
|
27
|
+
const normalizeTokens = tokens => {
|
|
28
|
+
const typeArrStack = [[]];
|
|
29
|
+
const tokenArrStack = [tokens];
|
|
30
|
+
const tokenArrIndexStack = [0];
|
|
31
|
+
const tokenArrSizeStack = [tokens.length];
|
|
32
|
+
let i = 0;
|
|
33
|
+
let stackIndex = 0;
|
|
34
|
+
let currentLine = [];
|
|
35
|
+
const acc = [currentLine];
|
|
36
|
+
while (stackIndex > -1) {
|
|
37
|
+
while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {
|
|
38
|
+
let content;
|
|
39
|
+
let types = typeArrStack[stackIndex];
|
|
40
|
+
const tokenArr = tokenArrStack[stackIndex];
|
|
41
|
+
const token = tokenArr[i];
|
|
42
|
+
|
|
43
|
+
// Determine content and append type to types if necessary
|
|
44
|
+
if (typeof token === 'string') {
|
|
45
|
+
types = stackIndex > 0 ? types : ['plain'];
|
|
46
|
+
content = token;
|
|
47
|
+
} else {
|
|
48
|
+
types = appendTypes(types, token.type);
|
|
49
|
+
if (token.alias) {
|
|
50
|
+
types = appendTypes(types, token.alias);
|
|
51
|
+
}
|
|
52
|
+
content = token.content;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// If token.content is an array, increase the stack depth and repeat this while-loop
|
|
56
|
+
if (typeof content !== 'string') {
|
|
57
|
+
stackIndex++;
|
|
58
|
+
typeArrStack.push(types);
|
|
59
|
+
tokenArrStack.push(content);
|
|
60
|
+
tokenArrIndexStack.push(0);
|
|
61
|
+
tokenArrSizeStack.push(content.length);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Split by newlines
|
|
66
|
+
const splitByNewlines = content.split(newlineRe);
|
|
67
|
+
const newlineCount = splitByNewlines.length;
|
|
68
|
+
currentLine.push({
|
|
69
|
+
types,
|
|
70
|
+
content: splitByNewlines[0]
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Create a new line for each string on a new line
|
|
74
|
+
for (let i = 1; i < newlineCount; i++) {
|
|
75
|
+
normalizeEmptyLines(currentLine);
|
|
76
|
+
acc.push(currentLine = []);
|
|
77
|
+
currentLine.push({
|
|
78
|
+
types,
|
|
79
|
+
content: splitByNewlines[i]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Decreate the stack depth
|
|
85
|
+
stackIndex--;
|
|
86
|
+
typeArrStack.pop();
|
|
87
|
+
tokenArrStack.pop();
|
|
88
|
+
tokenArrIndexStack.pop();
|
|
89
|
+
tokenArrSizeStack.pop();
|
|
90
|
+
}
|
|
91
|
+
normalizeEmptyLines(currentLine);
|
|
92
|
+
return acc;
|
|
93
|
+
};
|
|
94
|
+
exports.normalizeTokens = normalizeTokens;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _prismjs = _interopRequireDefault(require("prismjs"));
|
|
9
|
+
require("prismjs/themes/prism.css");
|
|
10
|
+
require("prismjs/components/prism-javascript");
|
|
11
|
+
require("prismjs/components/prism-typescript");
|
|
12
|
+
require("prismjs/components/prism-markup");
|
|
13
|
+
require("prismjs/components/prism-markup-templating");
|
|
14
|
+
require("prismjs/components/prism-go");
|
|
15
|
+
require("prismjs/components/prism-php");
|
|
16
|
+
require("prismjs/components/prism-c");
|
|
17
|
+
require("prismjs/components/prism-python");
|
|
18
|
+
require("prismjs/components/prism-java");
|
|
19
|
+
require("prismjs/components/prism-cpp");
|
|
20
|
+
require("prismjs/components/prism-csharp");
|
|
21
|
+
require("prismjs/components/prism-sql");
|
|
22
|
+
require("prismjs/components/prism-ruby");
|
|
23
|
+
require("prismjs/components/prism-swift");
|
|
24
|
+
require("prismjs/components/prism-bash");
|
|
25
|
+
require("prismjs/components/prism-lua");
|
|
26
|
+
require("prismjs/components/prism-json");
|
|
27
|
+
var _default = exports.default = _prismjs.default;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _slate = require("slate");
|
|
9
|
+
var _slateReact = require("slate-react");
|
|
10
|
+
var _elementTypes = require("../constants/element-types");
|
|
11
|
+
var _prismjs = _interopRequireDefault(require("./prismjs"));
|
|
12
|
+
var _normalizeTokens = require("./normalize-tokens");
|
|
13
|
+
var _constant = require("../plugins/code-block/render-elem/constant");
|
|
14
|
+
const mergeMaps = function () {
|
|
15
|
+
const map = new Map();
|
|
16
|
+
for (var _len = arguments.length, maps = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
17
|
+
maps[_key] = arguments[_key];
|
|
18
|
+
}
|
|
19
|
+
for (const m of maps) {
|
|
20
|
+
for (const item of m) {
|
|
21
|
+
map.set(...item);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return map;
|
|
25
|
+
};
|
|
26
|
+
const getChildNodeToDecorations = _ref => {
|
|
27
|
+
let [block, blockPath] = _ref;
|
|
28
|
+
const nodeToDecorations = new Map();
|
|
29
|
+
const text = block.children.map(line => _slate.Node.string(line)).join('\n');
|
|
30
|
+
const language = _constant.LANGUAGE_MAP[block.lang] ? block.lang : 'text';
|
|
31
|
+
const tokens = _prismjs.default.tokenize(text, _prismjs.default.languages[language]);
|
|
32
|
+
const normalizedTokens = (0, _normalizeTokens.normalizeTokens)(tokens); // make tokens flat and grouped by line
|
|
33
|
+
const blockChildren = block.children;
|
|
34
|
+
for (let index = 0; index < normalizedTokens.length; index++) {
|
|
35
|
+
const tokens = normalizedTokens[index];
|
|
36
|
+
const element = blockChildren[index];
|
|
37
|
+
if (element) {
|
|
38
|
+
if (!nodeToDecorations.has(element)) {
|
|
39
|
+
nodeToDecorations.set(element, []);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let start = 0;
|
|
43
|
+
for (const token of tokens) {
|
|
44
|
+
const length = token.content.length;
|
|
45
|
+
if (!length) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const end = start + length;
|
|
49
|
+
const path = [...blockPath, index, 0];
|
|
50
|
+
const range = {
|
|
51
|
+
anchor: {
|
|
52
|
+
path,
|
|
53
|
+
offset: start
|
|
54
|
+
},
|
|
55
|
+
focus: {
|
|
56
|
+
path,
|
|
57
|
+
offset: end
|
|
58
|
+
},
|
|
59
|
+
token: true,
|
|
60
|
+
...Object.fromEntries(token.types.map(type => [type, true]))
|
|
61
|
+
};
|
|
62
|
+
if (nodeToDecorations.get(element)) {
|
|
63
|
+
nodeToDecorations.get(element).push(range);
|
|
64
|
+
}
|
|
65
|
+
start = end;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return nodeToDecorations;
|
|
69
|
+
};
|
|
70
|
+
const SetNodeToDecorations = () => {
|
|
71
|
+
const editor = (0, _slateReact.useSlate)();
|
|
72
|
+
const blockEntries = Array.from(_slate.Editor.nodes(editor, {
|
|
73
|
+
at: [],
|
|
74
|
+
mode: 'highest',
|
|
75
|
+
match: n => _slate.Element.isElement(n) && n.type === _elementTypes.CODE_BLOCK
|
|
76
|
+
}));
|
|
77
|
+
const nodeToDecorations = mergeMaps(...blockEntries.map(getChildNodeToDecorations));
|
|
78
|
+
editor.nodeToDecorations = nodeToDecorations;
|
|
79
|
+
return null;
|
|
80
|
+
};
|
|
81
|
+
var _default = exports.default = SetNodeToDecorations;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useHighlight = exports.default = void 0;
|
|
7
|
+
var _slate = require("slate");
|
|
8
|
+
var _elementTypes = require("../constants/element-types");
|
|
9
|
+
const useHighlight = editor => _ref => {
|
|
10
|
+
let [node, path] = _ref;
|
|
11
|
+
let ranges = [];
|
|
12
|
+
if (_slate.Element.isElement(node) && node.type === _elementTypes.CODE_LINE) {
|
|
13
|
+
var _editor$nodeToDecorat;
|
|
14
|
+
ranges = (editor === null || editor === void 0 ? void 0 : (_editor$nodeToDecorat = editor.nodeToDecorations) === null || _editor$nodeToDecorat === void 0 ? void 0 : _editor$nodeToDecorat.get(node)) || [];
|
|
15
|
+
return ranges;
|
|
16
|
+
}
|
|
17
|
+
return ranges;
|
|
18
|
+
};
|
|
19
|
+
exports.useHighlight = useHighlight;
|
|
20
|
+
var _default = exports.default = useHighlight;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "ElementTypes", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _constants.ElementTypes;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "Plugins", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _plugins.default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "SetNodeToDecorations", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _highlight.SetNodeToDecorations;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "Toolbar", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _toolbar.default;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "getNodePathById", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _core.getNodePathById;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "isEmptyParagraph", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () {
|
|
40
|
+
return _core.isEmptyParagraph;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "renderElement", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _renderElement.default;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "renderLeaf", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () {
|
|
52
|
+
return _renderLeaf.default;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "useHighlight", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () {
|
|
58
|
+
return _highlight.useHighlight;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var _constants = require("./constants");
|
|
62
|
+
var _core = require("./core");
|
|
63
|
+
var _highlight = require("./highlight");
|
|
64
|
+
var _renderElement = _interopRequireDefault(require("./render/render-element"));
|
|
65
|
+
var _renderLeaf = _interopRequireDefault(require("./render/render-leaf"));
|
|
66
|
+
var _toolbar = _interopRequireDefault(require("./toolbar"));
|
|
67
|
+
var _plugins = _interopRequireDefault(require("./plugins"));
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.setBlockQuoteType = exports.isMenuDisabled = exports.getBlockQuoteType = void 0;
|
|
8
|
+
var _slate = require("slate");
|
|
9
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
|
+
var _elementTypes = require("../../constants/element-types");
|
|
11
|
+
var _core = require("../../core");
|
|
12
|
+
const isMenuDisabled = (editor, readonly) => {
|
|
13
|
+
if (readonly) return true;
|
|
14
|
+
if (editor.selection == null) return true;
|
|
15
|
+
const [nodeEntry] = _slate.Editor.nodes(editor, {
|
|
16
|
+
match: n => {
|
|
17
|
+
const type = (0, _core.getNodeType)(n);
|
|
18
|
+
|
|
19
|
+
// Only available for p and blockquote
|
|
20
|
+
if (type === _elementTypes.PARAGRAPH) return true;
|
|
21
|
+
if (type === _elementTypes.BLOCKQUOTE) return true;
|
|
22
|
+
if (type === _elementTypes.UNORDERED_LIST) return true;
|
|
23
|
+
if (type === _elementTypes.ORDERED_LIST) return true;
|
|
24
|
+
if (type === _elementTypes.CHECK_LIST_ITEM) return true;
|
|
25
|
+
if (type && type.startWith && type.startWith('header')) return true;
|
|
26
|
+
if (type === _elementTypes.IMAGE) return true;
|
|
27
|
+
return false;
|
|
28
|
+
},
|
|
29
|
+
universal: true,
|
|
30
|
+
mode: 'highest' // Match top level
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Match to p blockquote, do not disable
|
|
34
|
+
if (nodeEntry) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
};
|
|
39
|
+
exports.isMenuDisabled = isMenuDisabled;
|
|
40
|
+
const getBlockQuoteType = editor => {
|
|
41
|
+
const [match] = _slate.Editor.nodes(editor, {
|
|
42
|
+
match: n => (0, _core.getNodeType)(n) === _elementTypes.BLOCKQUOTE,
|
|
43
|
+
universal: true
|
|
44
|
+
});
|
|
45
|
+
if (!match) return _elementTypes.PARAGRAPH;
|
|
46
|
+
const [n] = match;
|
|
47
|
+
return (0, _core.getNodeType)(n);
|
|
48
|
+
};
|
|
49
|
+
exports.getBlockQuoteType = getBlockQuoteType;
|
|
50
|
+
const setBlockQuoteType = (editor, active) => {
|
|
51
|
+
if (!active) {
|
|
52
|
+
const blockquoteNode = {
|
|
53
|
+
id: _slugid.default.nice(),
|
|
54
|
+
type: _elementTypes.BLOCKQUOTE
|
|
55
|
+
};
|
|
56
|
+
_slate.Transforms.wrapNodes(editor, blockquoteNode, {
|
|
57
|
+
mode: 'highest',
|
|
58
|
+
match: n => _slate.Element.isElement(n) && _slate.Editor.isBlock(editor, n)
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
_slate.Transforms.unwrapNodes(editor, {
|
|
62
|
+
mode: 'highest',
|
|
63
|
+
match: n => _slate.Element.isElement(n) && _slate.Editor.isBlock(editor, n)
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
(0, _core.focusEditor)(editor);
|
|
67
|
+
};
|
|
68
|
+
exports.setBlockQuoteType = setBlockQuoteType;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _elementTypes = require("../../constants/element-types");
|
|
9
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
10
|
+
var _renderElem = _interopRequireDefault(require("./render-elem"));
|
|
11
|
+
const BlockquotePlugin = {
|
|
12
|
+
type: _elementTypes.BLOCKQUOTE,
|
|
13
|
+
nodeType: 'element',
|
|
14
|
+
editorMenus: [],
|
|
15
|
+
editorPlugin: _plugin.default,
|
|
16
|
+
renderElements: [_renderElem.default]
|
|
17
|
+
};
|
|
18
|
+
var _default = exports.default = BlockquotePlugin;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = BlockquoteMenu;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _components = require("../../../../components");
|
|
10
|
+
var _menusConfig = require("../../../constants/menus-config");
|
|
11
|
+
var _elementTypes = require("../../../constants/element-types");
|
|
12
|
+
var _helpers = require("../helpers");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
const menuConfig = _menusConfig.MENUS_CONFIG_MAP[_elementTypes.BLOCKQUOTE];
|
|
15
|
+
const isActive = editor => {
|
|
16
|
+
return (0, _helpers.getBlockQuoteType)(editor) === _elementTypes.BLOCKQUOTE;
|
|
17
|
+
};
|
|
18
|
+
function BlockquoteMenu(_ref) {
|
|
19
|
+
let {
|
|
20
|
+
className,
|
|
21
|
+
readonly,
|
|
22
|
+
editor
|
|
23
|
+
} = _ref;
|
|
24
|
+
const onClick = (0, _react.useCallback)(event => {
|
|
25
|
+
const active = isActive(editor);
|
|
26
|
+
(0, _helpers.setBlockQuoteType)(editor, active);
|
|
27
|
+
}, [editor]);
|
|
28
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarItem, {
|
|
29
|
+
className: className,
|
|
30
|
+
disabled: (0, _helpers.isMenuDisabled)(editor, readonly),
|
|
31
|
+
isActive: isActive(editor),
|
|
32
|
+
onClick: onClick,
|
|
33
|
+
...menuConfig
|
|
34
|
+
});
|
|
35
|
+
}
|