@seafile/seafile-editor 2.0.19 → 2.0.20-beta
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/dist/constants/event-types.js +4 -2
- package/dist/editors/inline-editor/index.js +34 -0
- package/dist/extension/commons/dropdown-menu-item/index.css +54 -0
- package/dist/extension/commons/dropdown-menu-item/index.js +60 -0
- package/dist/extension/commons/insert-element-dialog/index.js +50 -18
- package/dist/extension/commons/menu/menu-drop-down.js +1 -1
- package/dist/extension/commons/menu-shortcut-indicator/index.js +22 -0
- package/dist/extension/commons/menu-shortcut-indicator/style.css +18 -0
- package/dist/extension/commons/more-menu/index.js +2 -6
- package/dist/extension/constants/menus-config.js +7 -1
- package/dist/extension/plugins/code-block/menu/index.js +11 -12
- package/dist/extension/plugins/column/menu/index.js +14 -13
- package/dist/extension/plugins/formula/menu/formula-modal.js +2 -2
- package/dist/extension/plugins/formula/menu/index.js +15 -44
- package/dist/extension/plugins/header/menu/style.css +2 -2
- package/dist/extension/plugins/image/menu/image-menu-dialog.js +7 -10
- package/dist/extension/plugins/image/menu/image-menu-popover.js +1 -2
- package/dist/extension/plugins/image/menu/index.css +36 -0
- package/dist/extension/plugins/image/menu/index.js +57 -52
- package/dist/extension/plugins/table/constant.js +4 -1
- package/dist/extension/plugins/table/context-menu/horizontal-align-popover/index.js +77 -0
- package/dist/extension/plugins/table/context-menu/horizontal-align-popover/style.css +24 -0
- package/dist/extension/plugins/table/context-menu/index.js +20 -1
- package/dist/extension/plugins/table/context-menu/style.css +19 -0
- package/dist/extension/plugins/table/menu/index.js +14 -38
- package/dist/extension/plugins/table/menu/style.css +1 -0
- package/dist/extension/plugins/table/render-elem/index.js +6 -6
- package/dist/extension/toolbar/header-toolbar/index.js +17 -48
- package/dist/extension/toolbar/header-toolbar/insert-toolbar/index.js +100 -0
- package/dist/extension/toolbar/header-toolbar/insert-toolbar/style.css +47 -0
- package/dist/extension/toolbar/inline-toolbar/index.css +4 -0
- package/dist/extension/toolbar/inline-toolbar/index.js +17 -24
- package/dist/pages/longtext-inline-editor/fallback-editor.js +14 -0
- package/package.json +1 -1
- package/public/locales/en/seafile-editor.json +6 -1
- package/public/locales/zh-CN/seafile-editor.json +6 -1
- package/public/locales/zh_CN/seafile-editor.json +6 -1
- package/public/media/seafile-editor-font/iconfont.eot +0 -0
- package/public/media/seafile-editor-font/iconfont.svg +68 -60
- package/public/media/seafile-editor-font/iconfont.ttf +0 -0
- package/public/media/seafile-editor-font/iconfont.woff +0 -0
- package/public/media/seafile-editor-font/iconfont.woff2 +0 -0
- package/public/media/seafile-editor-font.css +139 -123
- /package/dist/extension/plugins/image/menu/{style.css → image-menu-popover.css} +0 -0
|
@@ -12,12 +12,14 @@ const INTERNAL_EVENTS = exports.INTERNAL_EVENTS = {
|
|
|
12
12
|
ON_SELECT_ALL_CELL: 'on_select_all_cell',
|
|
13
13
|
ON_TOGGLE_IMAGE_POPOVER: 'on_toggle_image_popover',
|
|
14
14
|
OUTLINE_STATE_CHANGED: 'outline_state_changed',
|
|
15
|
-
RESIZE_ARTICLE: 'resize_article'
|
|
15
|
+
RESIZE_ARTICLE: 'resize_article',
|
|
16
|
+
INSERT_ELEMENT: 'insert_element'
|
|
16
17
|
};
|
|
17
18
|
const EXTERNAL_EVENTS = exports.EXTERNAL_EVENTS = {
|
|
18
19
|
ON_HELP_INFO_TOGGLE: 'on_help_info_toggle',
|
|
19
20
|
ON_ARTICLE_INFO_TOGGLE: 'on_article_info_toggle',
|
|
20
21
|
ON_LINK_CLICK: 'on_link_click',
|
|
21
22
|
ON_INSERT_IMAGE: 'on_insert_image',
|
|
22
|
-
INSERT_IMAGE: 'insert_image'
|
|
23
|
+
INSERT_IMAGE: 'insert_image',
|
|
24
|
+
CLEAR_ARTICLE: 'clear_article'
|
|
23
25
|
};
|
|
@@ -9,12 +9,15 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _slateReact = require("slate-react");
|
|
11
11
|
var _slate = require("slate");
|
|
12
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
12
13
|
var _extension = require("../../extension");
|
|
13
14
|
var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
|
|
14
15
|
var _eventHandler = _interopRequireDefault(require("../../utils/event-handler"));
|
|
15
16
|
var _withPropsEditor = _interopRequireDefault(require("./with-props-editor"));
|
|
16
17
|
var _core = require("../../extension/core");
|
|
17
18
|
var _common = require("../../utils/common");
|
|
19
|
+
var _eventTypes = require("../../constants/event-types");
|
|
20
|
+
var _elementTypes = require("../../extension/constants/element-types");
|
|
18
21
|
require("./index.css");
|
|
19
22
|
const isMacOS = (0, _common.isMac)();
|
|
20
23
|
const InlineEditor = _ref => {
|
|
@@ -120,6 +123,37 @@ const InlineEditor = _ref => {
|
|
|
120
123
|
};
|
|
121
124
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
122
125
|
}, []);
|
|
126
|
+
const handleClear = (0, _react.useCallback)(() => {
|
|
127
|
+
editor.children = [{
|
|
128
|
+
type: _elementTypes.PARAGRAPH,
|
|
129
|
+
id: _slugid.default.nice(),
|
|
130
|
+
children: [{
|
|
131
|
+
id: _slugid.default.nice(),
|
|
132
|
+
text: ''
|
|
133
|
+
}]
|
|
134
|
+
}];
|
|
135
|
+
editor.selection = null;
|
|
136
|
+
editor.operations = [{
|
|
137
|
+
type: 'remove_text',
|
|
138
|
+
path: [0, 0],
|
|
139
|
+
offset: 0,
|
|
140
|
+
text: ''
|
|
141
|
+
}];
|
|
142
|
+
editor.onChange();
|
|
143
|
+
editor.operations = [];
|
|
144
|
+
editor.history = {
|
|
145
|
+
redos: [],
|
|
146
|
+
undos: []
|
|
147
|
+
};
|
|
148
|
+
}, [editor]);
|
|
149
|
+
(0, _react.useEffect)(() => {
|
|
150
|
+
const eventBus = _eventBus.default.getInstance();
|
|
151
|
+
const clearSubscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.CLEAR_ARTICLE, handleClear);
|
|
152
|
+
return () => {
|
|
153
|
+
clearSubscribe();
|
|
154
|
+
};
|
|
155
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
156
|
+
}, []);
|
|
123
157
|
const onEditorClick = (0, _react.useCallback)(() => {
|
|
124
158
|
if (!enableEdit) {
|
|
125
159
|
focusRangeRef.current = editor.selection;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* insert element dropdown item */
|
|
2
|
+
.sf-dropdown-item-with-left-icon .sf-dropdown-item-content .sf-dropdown-item-content-icon {
|
|
3
|
+
color: #444;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sf-link-dropdown-menu-item .sf-dropdown-item-content{
|
|
7
|
+
justify-content: space-between;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sf-dropdown-menu-item-relative {
|
|
11
|
+
position: relative;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sf-dropdown-menu .sf-dropdown-item-right-icon {
|
|
15
|
+
color: #999;
|
|
16
|
+
transform: scale(.8);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.sf-dropdown-menu .sf-dropdown-item-with-left-icon {
|
|
20
|
+
min-height:32px;
|
|
21
|
+
padding: 3px 12px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.sf-dropdown-menu .sf-dropdown-menu-item {
|
|
25
|
+
align-items: center;
|
|
26
|
+
display: flex;
|
|
27
|
+
height: 30px;
|
|
28
|
+
-webkit-user-select: none;
|
|
29
|
+
-ms-user-select: none;
|
|
30
|
+
user-select: none;
|
|
31
|
+
width: 100%
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sf-dropdown-menu .sf-dropdown-menu-item .sf-dropdown-item-content {
|
|
35
|
+
align-items: center;
|
|
36
|
+
display: flex;
|
|
37
|
+
flex: 1 1;
|
|
38
|
+
font-size: 14px
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.sf-dropdown-menu .sf-dropdown-menu-item .iconfont {
|
|
42
|
+
font-size: 12px;
|
|
43
|
+
line-height: 12px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sf-dropdown-menu .sf-dropdown-item-right-icon {
|
|
47
|
+
color: #999;
|
|
48
|
+
transform: scale(.8);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.sf-dropdown-menu .sf-dropdown-item-content .sf-dropdown-item-content-icon {
|
|
52
|
+
margin-right: 10px;
|
|
53
|
+
vertical-align: 1px;
|
|
54
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
|
+
var _constants = require("../../../constants");
|
|
13
|
+
var _menuShortcutIndicator = _interopRequireDefault(require("../menu-shortcut-indicator"));
|
|
14
|
+
require("./index.css");
|
|
15
|
+
const DropdownMenuItem = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
16
|
+
const {
|
|
17
|
+
disabled,
|
|
18
|
+
onClick,
|
|
19
|
+
menuConfig,
|
|
20
|
+
children,
|
|
21
|
+
className,
|
|
22
|
+
shortcut,
|
|
23
|
+
isHidden,
|
|
24
|
+
onMousedown
|
|
25
|
+
} = props;
|
|
26
|
+
const {
|
|
27
|
+
t
|
|
28
|
+
} = (0, _reactI18next.useTranslation)(_constants.TRANSLATE_NAMESPACE);
|
|
29
|
+
const {
|
|
30
|
+
iconClass
|
|
31
|
+
} = menuConfig;
|
|
32
|
+
const [isShowChildren, setShowChildren] = (0, _react.useState)(false);
|
|
33
|
+
|
|
34
|
+
// onMount
|
|
35
|
+
(0, _react.useEffect)(() => {
|
|
36
|
+
setShowChildren(!isShowChildren);
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
}, []);
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
40
|
+
className: (0, _classnames.default)('sf-dropdown-menu-item', className, {
|
|
41
|
+
'disabled': disabled,
|
|
42
|
+
'sf-dropdown-item-with-left-icon': iconClass,
|
|
43
|
+
'sf-link-dropdown-menu-item': shortcut,
|
|
44
|
+
'sf-dropdown-menu-item-hidden': isHidden
|
|
45
|
+
}),
|
|
46
|
+
id: menuConfig.id || '',
|
|
47
|
+
onClick: disabled ? () => {} : onClick || (() => {}),
|
|
48
|
+
ref: ref,
|
|
49
|
+
onMouseDown: onMousedown
|
|
50
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
51
|
+
className: "sf-dropdown-item-content"
|
|
52
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
53
|
+
className: "sf-dropdown-item-left"
|
|
54
|
+
}, iconClass && /*#__PURE__*/_react.default.createElement("i", {
|
|
55
|
+
className: (0, _classnames.default)(iconClass, 'sf-dropdown-item-content-icon')
|
|
56
|
+
}), /*#__PURE__*/_react.default.createElement("span", null, t(menuConfig.text))), shortcut && /*#__PURE__*/_react.default.createElement(_menuShortcutIndicator.default, {
|
|
57
|
+
shortcuts: shortcut
|
|
58
|
+
})), isShowChildren && children);
|
|
59
|
+
});
|
|
60
|
+
var _default = exports.default = DropdownMenuItem;
|
|
@@ -12,44 +12,65 @@ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
|
12
12
|
var _eventTypes = require("../../../constants/event-types");
|
|
13
13
|
var _constants = require("../../constants");
|
|
14
14
|
var _linkModal = _interopRequireDefault(require("../../plugins/link/menu/link-modal"));
|
|
15
|
+
var _imageMenuDialog = _interopRequireDefault(require("../../plugins/image/menu/image-menu-dialog"));
|
|
16
|
+
var _formulaModal = _interopRequireDefault(require("../../plugins/formula/menu/formula-modal"));
|
|
15
17
|
const InsertElementDialog = _ref => {
|
|
16
18
|
let {
|
|
17
19
|
editor
|
|
18
20
|
} = _ref;
|
|
19
21
|
const [dialogType, setDialogType] = (0, _react.useState)('');
|
|
20
22
|
const [isOpenLinkModal, setIsOpenLinkModal] = (0, _react.useState)(false);
|
|
23
|
+
const [formula, setFormula] = (0, _react.useState)('');
|
|
21
24
|
const [linkInfo, setLinkInfo] = (0, _react.useState)({
|
|
22
25
|
linkTitle: '',
|
|
23
26
|
linkUrl: ''
|
|
24
27
|
});
|
|
25
|
-
(0, _react.useEffect)(() => {
|
|
26
|
-
const eventBus = _eventBus.default.getInstance();
|
|
27
|
-
const toggleDialogSubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, toggleDialog);
|
|
28
|
-
return () => {
|
|
29
|
-
toggleDialogSubscribe();
|
|
30
|
-
};
|
|
31
|
-
}, []);
|
|
32
28
|
const toggleDialog = (0, _react.useCallback)(_ref2 => {
|
|
33
29
|
let {
|
|
34
30
|
type
|
|
35
31
|
} = _ref2;
|
|
36
32
|
setDialogType(type);
|
|
37
33
|
setIsOpenLinkModal(true);
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
if (type === _constants.ELementTypes.LINK) {
|
|
35
|
+
if (editor.selection) {
|
|
36
|
+
const selectedText = _slate.Editor.string(editor, editor.selection);
|
|
37
|
+
setLinkInfo({
|
|
38
|
+
...linkInfo,
|
|
39
|
+
linkTitle: selectedText
|
|
40
|
+
});
|
|
41
|
+
}
|
|
44
42
|
}
|
|
45
43
|
}, [editor, linkInfo]);
|
|
44
|
+
const handleOpenLinkModal = (0, _react.useCallback)(formulaElement => {
|
|
45
|
+
if (formulaElement) {
|
|
46
|
+
const {
|
|
47
|
+
formula
|
|
48
|
+
} = formulaElement.data || {};
|
|
49
|
+
setFormula(formula);
|
|
50
|
+
setIsOpenLinkModal(true);
|
|
51
|
+
}
|
|
52
|
+
}, []);
|
|
53
|
+
(0, _react.useEffect)(() => {
|
|
54
|
+
const eventBus = _eventBus.default.getInstance();
|
|
55
|
+
const toggleDialogSubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, toggleDialog);
|
|
56
|
+
const unsubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.ON_OPEN_FORMULA_DIALOG, handleOpenLinkModal);
|
|
57
|
+
return () => {
|
|
58
|
+
toggleDialogSubscribe();
|
|
59
|
+
unsubscribe();
|
|
60
|
+
};
|
|
61
|
+
}, [toggleDialog, handleOpenLinkModal]);
|
|
46
62
|
const onCloseModal = (0, _react.useCallback)(() => {
|
|
47
63
|
setIsOpenLinkModal(false);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
if (dialogType === _constants.ELementTypes.LINK) {
|
|
65
|
+
setLinkInfo({
|
|
66
|
+
linkTitle: '',
|
|
67
|
+
linkUrl: ''
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (dialogType === _constants.ELementTypes.FORMULA) {
|
|
71
|
+
setFormula('');
|
|
72
|
+
}
|
|
73
|
+
}, [dialogType]);
|
|
53
74
|
if (_constants.ELementTypes.LINK === dialogType) {
|
|
54
75
|
return isOpenLinkModal && /*#__PURE__*/_react.default.createElement(_linkModal.default, {
|
|
55
76
|
onCloseModal: onCloseModal,
|
|
@@ -57,6 +78,17 @@ const InsertElementDialog = _ref => {
|
|
|
57
78
|
linkTitle: linkInfo.linkTitle,
|
|
58
79
|
linkUrl: linkInfo.linkUrl
|
|
59
80
|
});
|
|
81
|
+
} else if (_constants.ELementTypes.IMAGE === dialogType) {
|
|
82
|
+
return isOpenLinkModal && /*#__PURE__*/_react.default.createElement(_imageMenuDialog.default, {
|
|
83
|
+
closeDialog: onCloseModal,
|
|
84
|
+
editor: editor
|
|
85
|
+
});
|
|
86
|
+
} else if (_constants.ELementTypes.FORMULA === dialogType) {
|
|
87
|
+
return isOpenLinkModal && /*#__PURE__*/_react.default.createElement(_formulaModal.default, {
|
|
88
|
+
onCloseModal: onCloseModal,
|
|
89
|
+
editor: editor,
|
|
90
|
+
formula: formula
|
|
91
|
+
});
|
|
60
92
|
} else {
|
|
61
93
|
return null;
|
|
62
94
|
}
|
|
@@ -65,7 +65,7 @@ const MenuDropDown = props => {
|
|
|
65
65
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
66
66
|
className: "sf-menu-with-dropdown-triangle"
|
|
67
67
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
68
|
-
className: `sf-menu-with-dropdown-triangle-icon iconfont icon-${isShowDropDown ? '
|
|
68
|
+
className: `sf-menu-with-dropdown-triangle-icon iconfont icon-${isShowDropDown ? 'drop-down' : 'caret-up'}`
|
|
69
69
|
})), !!isShowDropDown && /*#__PURE__*/_react.default.createElement("div", {
|
|
70
70
|
ref: menuDropdownRef,
|
|
71
71
|
className: "sf-dropdown-list "
|
|
@@ -0,0 +1,22 @@
|
|
|
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 _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
require("./style.css");
|
|
11
|
+
const MenuShortcutPrompt = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
shortcuts,
|
|
14
|
+
containerClassName = ''
|
|
15
|
+
} = _ref;
|
|
16
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
17
|
+
className: (0, _classnames.default)('sf-shortcut-prompt-container', containerClassName)
|
|
18
|
+
}, shortcuts.map((shortcut, index) => /*#__PURE__*/_react.default.createElement("kbd", {
|
|
19
|
+
key: `sf-shortcut-${shortcut}-${index}`
|
|
20
|
+
}, shortcut)));
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = MenuShortcutPrompt;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.sf-shortcut-prompt-container kbd {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
margin-bottom: 0px;
|
|
4
|
+
margin-left: 1px;
|
|
5
|
+
margin-right: 1px;
|
|
6
|
+
padding: 1px 3px;
|
|
7
|
+
min-width: 12px;
|
|
8
|
+
border: none;
|
|
9
|
+
font: inherit;
|
|
10
|
+
text-align: center;
|
|
11
|
+
color: #999;
|
|
12
|
+
background-color: transparent;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.sf-shortcut-prompt-container kbd:last-child {
|
|
16
|
+
margin-right: 0px;
|
|
17
|
+
padding-right: 0px;
|
|
18
|
+
}
|
|
@@ -15,9 +15,9 @@ var _eventTypes = require("../../../constants/event-types");
|
|
|
15
15
|
require("./index.css");
|
|
16
16
|
const MoreMenu = _ref => {
|
|
17
17
|
let {
|
|
18
|
-
className,
|
|
18
|
+
className = 'sf-menu-group-item',
|
|
19
19
|
disabled,
|
|
20
|
-
isRichEditor,
|
|
20
|
+
isRichEditor = true,
|
|
21
21
|
children
|
|
22
22
|
} = _ref;
|
|
23
23
|
const popoverRef = (0, _react.useRef)(null);
|
|
@@ -60,8 +60,4 @@ const MoreMenu = _ref => {
|
|
|
60
60
|
ref: popoverRef
|
|
61
61
|
}, children));
|
|
62
62
|
};
|
|
63
|
-
MoreMenu.defaultProps = {
|
|
64
|
-
isRichEditor: true,
|
|
65
|
-
className: 'sf-menu-group-item'
|
|
66
|
-
};
|
|
67
63
|
var _default = exports.default = MoreMenu;
|
|
@@ -36,7 +36,7 @@ const TABLE_SUBMENU_MAP = exports.TABLE_SUBMENU_MAP = {
|
|
|
36
36
|
const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
|
|
37
37
|
[_elementTypes.BLOCKQUOTE]: {
|
|
38
38
|
id: `seafile_${_elementTypes.BLOCKQUOTE}`,
|
|
39
|
-
iconClass: 'iconfont icon-quote
|
|
39
|
+
iconClass: 'iconfont icon-quote',
|
|
40
40
|
text: 'Quote'
|
|
41
41
|
},
|
|
42
42
|
[_elementTypes.ORDERED_LIST]: {
|
|
@@ -86,6 +86,12 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
|
|
|
86
86
|
text: 'Bold',
|
|
87
87
|
type: BOLD
|
|
88
88
|
},
|
|
89
|
+
[UNDERLINE]: {
|
|
90
|
+
id: `seafile_${UNDERLINE}`,
|
|
91
|
+
iconClass: 'iconfont icon-underline',
|
|
92
|
+
text: 'Underline',
|
|
93
|
+
type: UNDERLINE
|
|
94
|
+
},
|
|
89
95
|
[CODE]: {
|
|
90
96
|
id: `seafile_${CODE}`,
|
|
91
97
|
iconClass: 'iconfont icon-code',
|
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _commons = require("../../../commons");
|
|
10
10
|
var _elementTypes = require("../../../constants/element-types");
|
|
11
11
|
var _helpers = require("../helpers");
|
|
12
12
|
var _constants = require("../../../constants");
|
|
13
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
13
14
|
const menuConfig = _constants.MENUS_CONFIG_MAP[_elementTypes.CODE_BLOCK];
|
|
14
15
|
const CodeBlockMenu = _ref => {
|
|
15
16
|
let {
|
|
16
|
-
isRichEditor,
|
|
17
|
-
className,
|
|
18
17
|
readonly,
|
|
19
|
-
editor
|
|
18
|
+
editor,
|
|
19
|
+
toggle
|
|
20
20
|
} = _ref;
|
|
21
21
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
22
22
|
const isActive = (0, _react.useMemo)(() => (0, _helpers.isInCodeBlock)(editor), [editor.selection]);
|
|
23
23
|
const onMousedown = (0, _react.useCallback)(e => {
|
|
24
24
|
e.preventDefault();
|
|
25
25
|
isActive ? (0, _helpers.unwrapCodeBlock)(editor) : (0, _helpers.transformToCodeBlock)(editor);
|
|
26
|
+
toggle && toggle();
|
|
26
27
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
27
28
|
}, [isActive]);
|
|
28
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
className:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
onMouseDown: onMousedown
|
|
35
|
-
}, menuConfig));
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
30
|
+
disabled: readonly,
|
|
31
|
+
menuConfig: menuConfig,
|
|
32
|
+
className: "pr-2",
|
|
33
|
+
onClick: onMousedown
|
|
34
|
+
});
|
|
36
35
|
};
|
|
37
36
|
var _default = exports.default = CodeBlockMenu;
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = ColumnMenu;
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _commons = require("../../../commons");
|
|
10
10
|
var _menusConfig = require("../../../constants/menus-config");
|
|
11
11
|
var _elementTypes = require("../../../constants/element-types");
|
|
12
12
|
var _helpers = require("../helpers");
|
|
13
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
13
14
|
const menuConfig = _menusConfig.MENUS_CONFIG_MAP[_elementTypes.COLUMN];
|
|
14
15
|
const isActive = editor => {
|
|
15
16
|
return (0, _helpers.getColumnType)(editor) === _elementTypes.COLUMN;
|
|
16
17
|
};
|
|
17
18
|
function ColumnMenu(_ref) {
|
|
18
19
|
let {
|
|
19
|
-
isRichEditor,
|
|
20
|
-
className,
|
|
21
20
|
readonly,
|
|
22
|
-
editor
|
|
21
|
+
editor,
|
|
22
|
+
toggle
|
|
23
23
|
} = _ref;
|
|
24
|
-
const
|
|
24
|
+
const insertColumn = (0, _react.useCallback)(event => {
|
|
25
|
+
event.stopPropagation();
|
|
26
|
+
toggle && toggle();
|
|
25
27
|
const active = isActive(editor);
|
|
26
28
|
(0, _helpers.insertSeaTableColumn)(editor, active);
|
|
27
|
-
}, [editor]);
|
|
28
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}, menuConfig));
|
|
29
|
+
}, [editor, toggle]);
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
31
|
+
disabled: readonly,
|
|
32
|
+
menuConfig: menuConfig,
|
|
33
|
+
className: "pr-2",
|
|
34
|
+
onClick: insertColumn
|
|
35
|
+
});
|
|
35
36
|
}
|
|
@@ -8,10 +8,10 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactstrap = require("reactstrap");
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _constants = require("../../../../constants");
|
|
12
|
+
var _core = require("../../../core");
|
|
11
13
|
var _components = require("../../../../components");
|
|
12
14
|
var _helper = require("../helper");
|
|
13
|
-
var _core = require("../../../core");
|
|
14
|
-
var _constants = require("../../../../constants");
|
|
15
15
|
const FormulaModal = _ref => {
|
|
16
16
|
let {
|
|
17
17
|
editor,
|
|
@@ -1,63 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
9
|
var _eventTypes = require("../../../../constants/event-types");
|
|
11
10
|
var _menusConfig = require("../../../constants/menus-config");
|
|
12
11
|
var _elementTypes = require("../../../constants/element-types");
|
|
13
|
-
var _menuItem = _interopRequireDefault(require("../../../commons/menu/menu-item"));
|
|
14
|
-
var _helper = require("../helper");
|
|
15
12
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
16
|
-
var
|
|
13
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
17
14
|
const menuConfig = _menusConfig.MENUS_CONFIG_MAP[_elementTypes.FORMULA];
|
|
18
15
|
const FormulaMenu = _ref => {
|
|
19
16
|
let {
|
|
20
|
-
isRichEditor,
|
|
21
|
-
className,
|
|
22
17
|
readonly,
|
|
23
|
-
|
|
18
|
+
toggle
|
|
24
19
|
} = _ref;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
28
|
-
const isMenuActive = (0, _react.useMemo)(() => (0, _helper.isFormulaActive)(editor), [editor.selection]);
|
|
29
|
-
(0, _react.useEffect)(() => {
|
|
20
|
+
const OpenFormulaModal = () => {
|
|
21
|
+
toggle && toggle();
|
|
30
22
|
const eventBus = _eventBus.default.getInstance();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
formula
|
|
42
|
-
} = formulaElement.data || {};
|
|
43
|
-
setFormula(formula);
|
|
44
|
-
setIsOpenFormulaModal(true);
|
|
45
|
-
}
|
|
46
|
-
}, []);
|
|
47
|
-
const onCloseModal = (0, _react.useCallback)(() => {
|
|
48
|
-
setIsOpenFormulaModal(false);
|
|
49
|
-
setFormula('');
|
|
50
|
-
}, []);
|
|
51
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_menuItem.default, Object.assign({
|
|
52
|
-
isRichEditor: isRichEditor,
|
|
53
|
-
className: className,
|
|
54
|
-
disabled: (0, _helper.isMenuDisabled)(editor, readonly),
|
|
55
|
-
isActive: isMenuActive,
|
|
56
|
-
onMouseDown: onMouseDown
|
|
57
|
-
}, menuConfig)), isOpenFormulaModal && /*#__PURE__*/_react.default.createElement(_formulaModal.default, {
|
|
58
|
-
editor: editor,
|
|
59
|
-
formula: formula,
|
|
60
|
-
onCloseModal: onCloseModal
|
|
61
|
-
}));
|
|
23
|
+
eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, {
|
|
24
|
+
type: _elementTypes.FORMULA
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
28
|
+
disabled: readonly,
|
|
29
|
+
menuConfig: menuConfig,
|
|
30
|
+
className: "pr-2",
|
|
31
|
+
onClick: OpenFormulaModal
|
|
32
|
+
});
|
|
62
33
|
};
|
|
63
34
|
var _default = exports.default = FormulaMenu;
|
|
@@ -57,14 +57,14 @@
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
.sf-header-menu .sf-header-toggle .iconfont {
|
|
60
|
-
color: #
|
|
60
|
+
color: #999;
|
|
61
61
|
width: 12px;
|
|
62
62
|
height: 24px;
|
|
63
63
|
margin-left: 8px;
|
|
64
64
|
display: inline-flex;
|
|
65
65
|
justify-content: center;
|
|
66
66
|
align-items: center;
|
|
67
|
-
font-size:
|
|
67
|
+
font-size: 13px;
|
|
68
68
|
cursor: pointer;
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -16,8 +16,8 @@ var _constants = require("../../../../constants");
|
|
|
16
16
|
const ImageMenuInsertInternetDialog = _ref => {
|
|
17
17
|
let {
|
|
18
18
|
editor,
|
|
19
|
-
|
|
20
|
-
className
|
|
19
|
+
closeDialog,
|
|
20
|
+
className = ''
|
|
21
21
|
} = _ref;
|
|
22
22
|
const [imageUrl, setSetImageUrl] = (0, _react.useState)('');
|
|
23
23
|
const imgUrlInputRef = (0, _react.useRef)(null);
|
|
@@ -37,7 +37,7 @@ const ImageMenuInsertInternetDialog = _ref => {
|
|
|
37
37
|
if (!(0, _isUrl.default)(imageUrl)) return false;
|
|
38
38
|
if (imageUrl.length === 0) return;
|
|
39
39
|
(0, _helper.insertImage)(editor, imageUrl);
|
|
40
|
-
|
|
40
|
+
closeDialog();
|
|
41
41
|
};
|
|
42
42
|
const handleInputKeyDown = e => {
|
|
43
43
|
if (e.key === 'Enter') {
|
|
@@ -51,13 +51,13 @@ const ImageMenuInsertInternetDialog = _ref => {
|
|
|
51
51
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
52
52
|
onMouseDown: onModalContainerMouseDown,
|
|
53
53
|
isOpen: true,
|
|
54
|
-
toggle:
|
|
54
|
+
toggle: closeDialog,
|
|
55
55
|
className: className,
|
|
56
56
|
zIndex: 1071,
|
|
57
57
|
onOpened: onModalOpened,
|
|
58
|
-
onClosed:
|
|
58
|
+
onClosed: closeDialog
|
|
59
59
|
}, /*#__PURE__*/_react.default.createElement(_components.ModalHeader, {
|
|
60
|
-
toggle:
|
|
60
|
+
toggle: closeDialog
|
|
61
61
|
}, t('Insert_image')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Form, null, /*#__PURE__*/_react.default.createElement(_reactstrap.FormGroup, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, {
|
|
62
62
|
for: "imageUrlInput"
|
|
63
63
|
}, t('Image_address')), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
|
|
@@ -70,14 +70,11 @@ const ImageMenuInsertInternetDialog = _ref => {
|
|
|
70
70
|
onChange: e => setSetImageUrl(e.target.value.trim())
|
|
71
71
|
}), /*#__PURE__*/_react.default.createElement(_reactstrap.FormFeedback, null, t('Image_address_invalid'))))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
72
72
|
color: "secondary",
|
|
73
|
-
onClick:
|
|
73
|
+
onClick: closeDialog
|
|
74
74
|
}, t('Cancel')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
75
75
|
color: "primary",
|
|
76
76
|
disabled: isCommitBtnDisabled,
|
|
77
77
|
onClick: handleSubmit
|
|
78
78
|
}, t('Submit'))));
|
|
79
79
|
};
|
|
80
|
-
ImageMenuInsertInternetDialog.defaultProps = {
|
|
81
|
-
classname: ''
|
|
82
|
-
};
|
|
83
80
|
var _default = exports.default = ImageMenuInsertInternetDialog;
|
|
@@ -13,7 +13,7 @@ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
|
13
13
|
var _eventTypes = require("../../../../constants/event-types");
|
|
14
14
|
var _helper = require("../helper");
|
|
15
15
|
var _constants = require("../../../../constants");
|
|
16
|
-
require("./
|
|
16
|
+
require("./image-menu-popover.css");
|
|
17
17
|
const ImageMenuPopover = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
18
18
|
var _editor$api;
|
|
19
19
|
let {
|
|
@@ -76,5 +76,4 @@ const ImageMenuPopover = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
76
76
|
onToggleImageDialog: onToggleImageDialog
|
|
77
77
|
}));
|
|
78
78
|
});
|
|
79
|
-
ImageMenuPopover.defaultProps = {};
|
|
80
79
|
var _default = exports.default = ImageMenuPopover;
|