@seafile/sdoc-editor 0.1.87 → 0.1.88-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.
Files changed (57) hide show
  1. package/dist/assets/css/simple-editor.css +11 -0
  2. package/dist/basic-sdk/assets/css/dropdown-menu.css +6 -0
  3. package/dist/basic-sdk/editor.js +12 -38
  4. package/dist/{components/modal-portal.js → basic-sdk/extension/commons/element-popover/index.js} +11 -8
  5. package/dist/basic-sdk/extension/constants/color.js +2 -1
  6. package/dist/basic-sdk/extension/constants/element-type.js +4 -1
  7. package/dist/basic-sdk/extension/constants/index.js +25 -3
  8. package/dist/basic-sdk/extension/index.js +1 -2
  9. package/dist/basic-sdk/{comment → extension/menu}/color-menu/color-item.js +2 -2
  10. package/dist/basic-sdk/{comment → extension/menu}/color-menu/index.css +61 -9
  11. package/dist/basic-sdk/{comment → extension/menu}/color-menu/index.js +57 -32
  12. package/dist/basic-sdk/extension/menu/index.js +1 -2
  13. package/dist/basic-sdk/extension/menu/menu-item.js +1 -0
  14. package/dist/basic-sdk/extension/menu/menu.css +52 -1
  15. package/dist/basic-sdk/extension/plugins/clear-format/helpers.js +56 -0
  16. package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +25 -0
  17. package/dist/{components/code-block-hover-menu → basic-sdk/extension/plugins/code-block/hover-menu}/index.js +4 -4
  18. package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +1 -1
  19. package/dist/basic-sdk/extension/plugins/html/rules/code-block.js +1 -1
  20. package/dist/basic-sdk/extension/plugins/table/constants/index.js +2 -1
  21. package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.js +1 -1
  22. package/dist/basic-sdk/extension/plugins/table/index.js +2 -3
  23. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +9 -5
  24. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.css +19 -3
  25. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +9 -6
  26. package/dist/basic-sdk/extension/plugins/table/menu/index.js +2 -2
  27. package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/index.js +15 -11
  28. package/dist/basic-sdk/extension/plugins/table/render/hooks.js +51 -1
  29. package/dist/basic-sdk/extension/plugins/table/render/index.css +0 -34
  30. package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +19 -7
  31. package/dist/basic-sdk/extension/plugins/table/render/table-root.js +12 -3
  32. package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +81 -110
  33. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +73 -73
  34. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +3 -0
  35. package/dist/basic-sdk/extension/toolbar/index.js +3 -0
  36. package/dist/basic-sdk/highlight-decorate/setNodeToDecorations.js +1 -1
  37. package/dist/basic-sdk/hooks/use-selection-position.js +11 -3
  38. package/dist/components/more-dropdown/index.js +36 -73
  39. package/dist/utils/local-storage-utils.js +16 -2
  40. package/package.json +1 -1
  41. package/public/locales/en/sdoc-editor.json +4 -1
  42. package/public/locales/zh-CN/sdoc-editor.json +4 -1
  43. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  44. package/public/media/sdoc-editor-font/iconfont.svg +6 -0
  45. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  46. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  47. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  48. package/public/media/sdoc-editor-font.css +18 -6
  49. package/dist/basic-sdk/extension/menu/context-menu/index.css +0 -1
  50. package/dist/basic-sdk/extension/menu/context-menu/index.js +0 -38
  51. package/dist/basic-sdk/extension/plugins/text-align/menu/style.css +0 -53
  52. package/dist/components/more-dropdown/style.css +0 -64
  53. /package/dist/{components/code-block-hover-menu → basic-sdk/extension/plugins/code-block/hover-menu}/index.css +0 -0
  54. /package/dist/basic-sdk/{utils → extension/plugins/code-block}/prismjs.js +0 -0
  55. /package/dist/basic-sdk/extension/plugins/table/{number-input.js → dialog/custom-table-size-dialog/number-input.js} +0 -0
  56. /package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/index.css +0 -0
  57. /package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/insert-table-element.js +0 -0
@@ -29,3 +29,14 @@
29
29
  .sdoc-editor-page-header .doc-state {
30
30
  font-size: 0.8125rem;
31
31
  }
32
+
33
+ /* reset common css */
34
+ .sdoc-editor-page-wrapper .dropdown-item,
35
+ .sdoc-context-menu .dropdown-item {
36
+ color: #212529;
37
+ }
38
+
39
+ .sdoc-editor-page-wrapper .dropdown-item:hover,
40
+ .sdoc-context-menu .dropdown-item:hover {
41
+ color: #fff;
42
+ }
@@ -16,8 +16,14 @@
16
16
  width: 100%;
17
17
  padding: 4px 24px;
18
18
  user-select: none;
19
+ display: flex;
20
+ align-items: center;
19
21
  }
20
22
 
21
23
  .sdoc-dropdown-menu .sdoc-dropdown-menu-item:hover {
22
24
  background-color: rgb(245, 245, 245);
23
25
  }
26
+
27
+ .sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdocfont {
28
+ font-size: 14px;
29
+ }
@@ -1,22 +1,21 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { Editable, ReactEditor, Slate } from '@seafile/slate-react';
4
- import defaultEditor, { renderLeaf, renderElement, Toolbar, ContextMenu } from './extension';
4
+ import defaultEditor, { renderLeaf, renderElement, Toolbar } from './extension';
5
5
  import { focusEditor, getAboveBlockNode, getNextNode, getPrevNode, isSelectionAtBlockEnd, isSelectionAtBlockStart } from './extension/core';
6
6
  import { withSocketIO } from './socket';
7
7
  import withNodeId from './node-id';
8
8
  import SDocOutline from './outline';
9
9
  import EventProxy from './utils/event-handler';
10
10
  import { useCursors } from './cursor/use-cursors';
11
- import EventBus from './utils/event-bus';
12
11
  import { EXTERNAL_EVENT, PAGE_EDIT_AREA_WIDTH } from '../constants';
13
- import { isAllInTable } from './extension/plugins/table/helpers';
14
12
  import { SetNodeToDecorations } from './highlight-decorate/setNodeToDecorations';
15
13
  import { ScrollContext } from './hooks/use-scroll-context';
16
14
  import CommentContextProvider from './comment/comment-context-provider';
17
15
  import CommentWrapper from './comment';
18
16
  import { usePipDecorate } from './decorates';
19
17
  import { getCursorPosition, getDomHeight, getDomMarginTop } from './utils/dom-utils';
18
+ import EventBus from './utils/event-bus';
20
19
  import './assets/css/layout.css';
21
20
  import './assets/css/sdoc-editor-plugins.css';
22
21
  import './assets/css/dropdown-menu.css';
@@ -39,14 +38,6 @@ var SDocEditor = function SDocEditor(_ref) {
39
38
  _useState2 = _slicedToArray(_useState, 2),
40
39
  slateValue = _useState2[0],
41
40
  setSlateValue = _useState2[1];
42
- var _useState3 = useState(false),
43
- _useState4 = _slicedToArray(_useState3, 2),
44
- isShowContextMenu = _useState4[0],
45
- setContextMenu = _useState4[1];
46
- var _useState5 = useState({}),
47
- _useState6 = _slicedToArray(_useState5, 2),
48
- menuPosition = _useState6[0],
49
- setMenuPosition = _useState6[1];
50
41
  var _useCursors = useCursors(editor),
51
42
  cursors = _useCursors.cursors;
52
43
  var scrollRef = useRef(null);
@@ -58,7 +49,6 @@ var SDocEditor = function SDocEditor(_ref) {
58
49
  var eventProxy = useMemo(function () {
59
50
  return new EventProxy(editor);
60
51
  }, []);
61
- var eventBus = EventBus.getInstance();
62
52
 
63
53
  // useMount: init socket connection
64
54
  useEffect(function () {
@@ -81,26 +71,14 @@ var SDocEditor = function SDocEditor(_ref) {
81
71
  };
82
72
  // eslint-disable-next-line react-hooks/exhaustive-deps
83
73
  }, []);
84
- var onContextMenu = useCallback(function (event) {
85
- if (isAllInTable(editor)) {
86
- event.preventDefault();
87
- var contextMenuPosition = {
88
- left: event.clientX,
89
- top: event.clientY
90
- };
91
- setContextMenu(true);
92
- setMenuPosition(contextMenuPosition);
93
- }
94
- // eslint-disable-next-line react-hooks/exhaustive-deps
95
- }, []);
96
74
  var onChange = useCallback(function (slateValue) {
97
75
  setSlateValue(slateValue);
98
- setContextMenu(false);
99
76
  // eslint-disable-next-line react-hooks/exhaustive-deps
100
77
  }, []);
101
78
  var onMouseDown = useCallback(function (event) {
102
79
  if (event.button === 0) {
103
80
  editor.reSetTableSelectedRange();
81
+ var eventBus = EventBus.getInstance();
104
82
  eventBus.dispatch(EXTERNAL_EVENT.CANCEL_TABLE_SELECT_RANGE);
105
83
  }
106
84
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -195,10 +173,10 @@ var SDocEditor = function SDocEditor(_ref) {
195
173
  eventProxy.onKeyDown(event);
196
174
  // eslint-disable-next-line react-hooks/exhaustive-deps
197
175
  }, []);
198
- var _useState7 = useState({}),
199
- _useState8 = _slicedToArray(_useState7, 2),
200
- containerStyle = _useState8[0],
201
- setContainerStyle = _useState8[1];
176
+ var _useState3 = useState({}),
177
+ _useState4 = _slicedToArray(_useState3, 2),
178
+ containerStyle = _useState4[0],
179
+ setContainerStyle = _useState4[1];
202
180
  var handleWindowResize = useCallback(function () {
203
181
  var rect = scrollRef.current.getBoundingClientRect();
204
182
  var articleRect = articleRef.current.getBoundingClientRect();
@@ -217,10 +195,10 @@ var SDocEditor = function SDocEditor(_ref) {
217
195
  window.removeEventListener('resize', handleWindowResize);
218
196
  };
219
197
  }, [handleWindowResize]);
220
- var _useState9 = useState(0),
221
- _useState10 = _slicedToArray(_useState9, 2),
222
- scrollLeft = _useState10[0],
223
- setScrollLeft = _useState10[1];
198
+ var _useState5 = useState(0),
199
+ _useState6 = _slicedToArray(_useState5, 2),
200
+ scrollLeft = _useState6[0],
201
+ setScrollLeft = _useState6[1];
224
202
  var onWrapperScroll = useCallback(function (event) {
225
203
  var scrollLeft = event.target.scrollLeft;
226
204
  setScrollLeft(scrollLeft);
@@ -262,13 +240,9 @@ var SDocEditor = function SDocEditor(_ref) {
262
240
  renderElement: renderElement,
263
241
  renderLeaf: renderLeaf,
264
242
  onKeyDown: onKeyDown,
265
- onContextMenu: onContextMenu,
266
243
  onMouseDown: onMouseDown,
267
244
  decorate: decorate,
268
245
  onCut: eventProxy.onCut
269
- })), /*#__PURE__*/React.createElement(CommentWrapper, null))))))))), isShowContextMenu && /*#__PURE__*/React.createElement(ContextMenu, {
270
- editor: editor,
271
- contextMenuPosition: menuPosition
272
- }));
246
+ })), /*#__PURE__*/React.createElement(CommentWrapper, null))))))))));
273
247
  };
274
248
  export default SDocEditor;
@@ -4,12 +4,12 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import ReactDOM from 'react-dom';
7
- var ModalPortal = /*#__PURE__*/function (_React$Component) {
8
- _inherits(ModalPortal, _React$Component);
9
- var _super = _createSuper(ModalPortal);
10
- function ModalPortal(props) {
7
+ var ElementPopover = /*#__PURE__*/function (_React$Component) {
8
+ _inherits(ElementPopover, _React$Component);
9
+ var _super = _createSuper(ElementPopover);
10
+ function ElementPopover(props) {
11
11
  var _this;
12
- _classCallCheck(this, ModalPortal);
12
+ _classCallCheck(this, ElementPopover);
13
13
  _this = _super.call(this, props);
14
14
  _this.state = {
15
15
  isMounted: false
@@ -18,9 +18,12 @@ var ModalPortal = /*#__PURE__*/function (_React$Component) {
18
18
  if (props.className) {
19
19
  _this.el.className = props.className;
20
20
  }
21
+ if (props.style) {
22
+ _this.el.style = props.style;
23
+ }
21
24
  return _this;
22
25
  }
23
- _createClass(ModalPortal, [{
26
+ _createClass(ElementPopover, [{
24
27
  key: "componentDidMount",
25
28
  value: function componentDidMount() {
26
29
  document.body.appendChild(this.el);
@@ -36,6 +39,6 @@ var ModalPortal = /*#__PURE__*/function (_React$Component) {
36
39
  return ReactDOM.createPortal(this.props.children, this.el);
37
40
  }
38
41
  }]);
39
- return ModalPortal;
42
+ return ElementPopover;
40
43
  }(React.Component);
41
- export default ModalPortal;
44
+ export default ElementPopover;
@@ -262,4 +262,5 @@ export var STANDARD_COLORS = [{
262
262
  }];
263
263
 
264
264
  // Initialize the most recently used colors
265
- export var DEFAULT_RECENT_USED_COLORS = new Array(10).fill('');
265
+ export var DEFAULT_RECENT_USED_COLORS = new Array(10).fill('');
266
+ export var DEFAULT_FONT_COLOR = '#333333';
@@ -5,6 +5,8 @@ export var UNDERLINE = 'underline';
5
5
  export var STRIKETHROUGH = 'strikethrough';
6
6
  export var SUPERSCRIPT = 'superscript';
7
7
  export var SUBSCRIPT = 'subscript';
8
+ export var COLOR = 'color';
9
+ export var HIGHLIGHT_COLOR = 'highlight-color';
8
10
  export var HEADER = 'header';
9
11
  export var HEADER1 = 'header1';
10
12
  export var HEADER2 = 'header2';
@@ -35,4 +37,5 @@ export var BOLD_ITALIC = 'bold-italic';
35
37
  export var TEXT_ALIGN = 'text-align';
36
38
  export var ALIGN_LEFT = 'align-left';
37
39
  export var ALIGN_RIGHT = 'align-right';
38
- export var ALIGN_CENTER = 'align-center';
40
+ export var ALIGN_CENTER = 'align-center';
41
+ export var CLEAR_FORMAT = 'clear-format';
@@ -2,9 +2,9 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  var _MENUS_CONFIG_MAP, _HEADER_TITLE_MAP;
3
3
  // extension plugin
4
4
  import * as ELEMENT_TYPE from './element-type';
5
- import { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER } from './element-type';
5
+ import { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, CLEAR_FORMAT, COLOR, HIGHLIGHT_COLOR } from './element-type';
6
6
  import KEYBOARD from './keyboard';
7
- import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from './color';
7
+ import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS, DEFAULT_FONT_COLOR } from './color';
8
8
 
9
9
  // history
10
10
  export var UNDO = 'undo';
@@ -66,6 +66,23 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
66
66
  iconClass: 'sdocfont sdoc-underline',
67
67
  text: 'Underline',
68
68
  type: 'UNDERLINE'
69
+ }, {
70
+ id: "sdoc-".concat(HIGHLIGHT_COLOR),
71
+ iconClass: 'sdocfont sdoc-highlight-color',
72
+ text: 'Highlight_color',
73
+ type: HIGHLIGHT_COLOR,
74
+ isColor: true,
75
+ recentUsedColorsKey: 'sdoc-recent-used-highlight-colors',
76
+ lastUsedColorKey: 'sdoc-last-used-highlight-color'
77
+ }, {
78
+ id: "sdoc-font-".concat(COLOR),
79
+ iconClass: 'sdocfont sdoc-font-color',
80
+ text: 'Font_color',
81
+ type: COLOR,
82
+ defaultColor: DEFAULT_FONT_COLOR,
83
+ isColor: true,
84
+ recentUsedColorsKey: 'sdoc-recent-used-font-colors',
85
+ lastUsedColorKey: 'sdoc-last-used-font-color'
69
86
  }]), _defineProperty(_MENUS_CONFIG_MAP, TEXT_STYLE_MORE, [{
70
87
  id: STRIKETHROUGH,
71
88
  iconClass: 'sdocfont sdoc-strikethrough',
@@ -107,6 +124,10 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
107
124
  id: "sdoc_".concat(BG_COLOR),
108
125
  iconClass: 'sdocfont sdoc-bg-color',
109
126
  text: 'Background_color'
127
+ }), _defineProperty(_MENUS_CONFIG_MAP, CLEAR_FORMAT, {
128
+ id: "sdoc_".concat(CLEAR_FORMAT),
129
+ iconClass: 'sdocfont sdoc-format-clear',
130
+ text: 'Clear_format'
110
131
  }), _MENUS_CONFIG_MAP);
111
132
  export var HEADER_TITLE_MAP = (_HEADER_TITLE_MAP = {}, _defineProperty(_HEADER_TITLE_MAP, HEADER1, 'Header_one'), _defineProperty(_HEADER_TITLE_MAP, HEADER2, 'Header_two'), _defineProperty(_HEADER_TITLE_MAP, HEADER3, 'Header_three'), _defineProperty(_HEADER_TITLE_MAP, HEADER4, 'Header_four'), _defineProperty(_HEADER_TITLE_MAP, HEADER5, 'Header_five'), _defineProperty(_HEADER_TITLE_MAP, HEADER6, 'Header_six'), _defineProperty(_HEADER_TITLE_MAP, PARAGRAPH, 'Paragraph'), _HEADER_TITLE_MAP);
112
133
  export var DIFF_TYPE = {
@@ -129,4 +150,5 @@ export var ADDED_STYLE = {
129
150
  };
130
151
  export var HEADER_TYPE_ARRAY = ['header1', 'header2', 'header3', 'header4', 'header5', 'header6'];
131
152
  export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
132
- export { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ELEMENT_TYPE, KEYBOARD, DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS };
153
+ export var TRANSPARENT = 'transparent';
154
+ export { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ELEMENT_TYPE, KEYBOARD, DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS, CLEAR_FORMAT, DEFAULT_FONT_COLOR };
@@ -5,7 +5,6 @@ import Plugins from './plugins';
5
5
  import renderElement from './render/render-element';
6
6
  import renderLeaf from './render/render-leaf';
7
7
  import Toolbar from './toolbar';
8
- import { ContextMenu } from './menu';
9
8
  var baseEditor = withHistory(withReact(createEditor()));
10
9
  var defaultEditor = Plugins.reduce(function (editor, pluginItem) {
11
10
  var withPlugin = pluginItem.editorPlugin;
@@ -15,4 +14,4 @@ var defaultEditor = Plugins.reduce(function (editor, pluginItem) {
15
14
  return editor;
16
15
  }, baseEditor);
17
16
  export default defaultEditor;
18
- export { renderLeaf, renderElement, Toolbar, ContextMenu };
17
+ export { renderLeaf, renderElement, Toolbar };
@@ -4,10 +4,10 @@ import classnames from 'classnames';
4
4
  var ColorItem = function ColorItem(_ref) {
5
5
  var t = _ref.t,
6
6
  color = _ref.color,
7
- recentUsedColor = _ref.recentUsedColor;
7
+ lastUsedColor = _ref.lastUsedColor;
8
8
  return /*#__PURE__*/React.createElement("div", {
9
9
  className: classnames('sdoc-color-item', {
10
- 'selected': recentUsedColor === color.value
10
+ 'selected': lastUsedColor === color.value
11
11
  }),
12
12
  style: {
13
13
  backgroundColor: color.value
@@ -1,17 +1,55 @@
1
+ .menu-group .sdoc-color-menu.menu-show {
2
+ background: #e5e5e5;
3
+ border-radius: 2px;
4
+ }
5
+
6
+ .menu-group .sdoc-color-menu .last-used-color-container {
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: column;
10
+ justify-content: center;
11
+ align-items: center;
12
+ }
13
+
14
+ .menu-group .sdoc-color-menu .last-used-color-container.disabled {
15
+ padding-right: 0;
16
+ }
17
+
18
+ .menu-group .sdoc-color-menu .sdoc-color-toggle {
19
+ height: 100%;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ }
24
+
25
+ .menu-group .sdoc-color-menu .sdoc-color-toggle:hover,
26
+ .menu-group .sdoc-color-menu .last-used-color-container:not(.disabled):hover {
27
+ background-color: rgba(0, 0, 0, 0.08);
28
+ }
29
+
30
+ .menu-group .sdoc-color-menu.disabled .sdoc-color-toggle {
31
+ display: none;
32
+ }
33
+
1
34
  .sdoc-color-menu .sdoc-color-icon {
2
35
  font-size: 12px !important;
3
36
  height: 12px;
37
+ width: 12px;
4
38
  line-height: 12px;
5
39
  }
6
40
 
7
- .sdoc-color-menu .recent-used-color {
8
- width: 12px;
41
+ .sdoc-color-menu .last-used-color {
42
+ width: 14px;
9
43
  height: 3px;
10
44
  border-radius: 1px;
11
45
  margin-top: 2px;
12
46
  border: 1px solid rgba(0, 0, 0, .08);
13
47
  }
14
48
 
49
+ .sdoc-color-menu-popover .popover {
50
+ left: -30px !important;
51
+ }
52
+
15
53
  .sdoc-color-menu-popover .sdoc-color-dropdown-menu {
16
54
  width: 251px;
17
55
  padding: 0 0 12px 0;
@@ -40,6 +78,7 @@
40
78
  }
41
79
 
42
80
  .sdoc-color-menu-popover .sdoc-color-item {
81
+ position: relative;
43
82
  height: 20px;
44
83
  width: 20px;
45
84
  margin-right: 3px;
@@ -47,17 +86,24 @@
47
86
  border: 0.5px solid rgba(0, 0, 0, .08);
48
87
  }
49
88
 
50
- .sdoc-color-menu-popover .sdoc-color-item.selected {
51
- position: relative;
89
+ .sdoc-color-menu-popover .sdoc-color-item:not(.selected):hover::before {
90
+ content: '';
91
+ position: absolute;
92
+ width: calc(100% + 5px);
93
+ height: calc((100% + 5px));
94
+ top: -2.5px;
95
+ left: -2.5px;
96
+ pointer-events: none;
97
+ border: 1px solid rgba(0, 0, 0, .24);
52
98
  }
53
99
 
54
100
  .sdoc-color-menu-popover .sdoc-color-item.selected::after {
55
101
  content: '';
56
102
  position: absolute;
57
- width: calc(100% + 4px);
58
- height: calc((100% + 4px));
59
- top: -2px;
60
- left: -2px;
103
+ width: calc(100% + 5px);
104
+ height: calc((100% + 5px));
105
+ top: -2.5px;
106
+ left: -2.5px;
61
107
  pointer-events: none;
62
108
  border: 1px solid rgba(0, 0, 0, .88);
63
109
  }
@@ -87,7 +133,7 @@
87
133
  .sdoc-color-menu-popover .sdoc-more-colors {
88
134
  display: flex;
89
135
  align-items: center;
90
- justify-content: baseline;
136
+ justify-content: space-between;
91
137
  height: 30px;
92
138
  font-size: 12px;
93
139
  padding: 0 12px;
@@ -107,3 +153,9 @@
107
153
  .sdoc-more-colors-popover .popover {
108
154
  left: 10px !important;
109
155
  }
156
+
157
+ /* commission */
158
+ .menu-group #button-sdoc-highlight-color .sdoc-color-icon {
159
+ position: relative;
160
+ left: 1px;
161
+ }
@@ -2,11 +2,11 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useCallback, useRef, useState } from 'react';
3
3
  import { withTranslation } from 'react-i18next';
4
4
  import classnames from 'classnames';
5
- import { UncontrolledPopover } from 'reactstrap';
5
+ import { UncontrolledPopover, UncontrolledTooltip } from 'reactstrap';
6
6
  import { ChromePicker } from 'react-color';
7
- import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from '../../extension/constants';
8
- import { LocalStorage } from '../../../utils';
9
- import { eventStopPropagation } from '../../utils/mouse-event';
7
+ import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from '../../constants';
8
+ import { LocalStorage } from '../../../../utils';
9
+ import { eventStopPropagation } from '../../../utils/mouse-event';
10
10
  import ColorItem from './color-item';
11
11
  import './index.css';
12
12
  var ColorMenu = function ColorMenu(_ref) {
@@ -14,41 +14,52 @@ var ColorMenu = function ColorMenu(_ref) {
14
14
  id = _ref.id,
15
15
  isRichEditor = _ref.isRichEditor,
16
16
  className = _ref.className,
17
+ popoverClassName = _ref.popoverClassName,
17
18
  disabled = _ref.disabled,
18
19
  t = _ref.t,
19
20
  setColor = _ref.setColor,
20
- localStorageKey = _ref.localStorageKey;
21
+ recentUsedColorsKey = _ref.recentUsedColorsKey,
22
+ lastUsedColorKey = _ref.lastUsedColorKey,
23
+ text = _ref.text,
24
+ defaultColorTip = _ref.defaultColorTip,
25
+ defaultColor = _ref.defaultColor;
21
26
  var popoverRef = useRef(null);
22
27
  var moreColorsPopoverRef = useRef(null);
23
- var _useState = useState(LocalStorage.getItem(localStorageKey, DEFAULT_RECENT_USED_COLORS)),
28
+ var _useState = useState(LocalStorage.getItem(lastUsedColorKey, '')),
24
29
  _useState2 = _slicedToArray(_useState, 2),
25
- recentUsedColors = _useState2[0],
26
- setRecentUsedColors = _useState2[1];
27
- var _useState3 = useState(false),
30
+ lastUsedColor = _useState2[0],
31
+ setLastUseColor = _useState2[1];
32
+ var _useState3 = useState(LocalStorage.getItem(recentUsedColorsKey, DEFAULT_RECENT_USED_COLORS)),
28
33
  _useState4 = _slicedToArray(_useState3, 2),
29
- isShowMenu = _useState4[0],
30
- setMenuShow = _useState4[1];
34
+ recentUsedColors = _useState4[0],
35
+ setRecentUsedColors = _useState4[1];
31
36
  var _useState5 = useState(false),
32
37
  _useState6 = _slicedToArray(_useState5, 2),
33
- isPickerShow = _useState6[0],
34
- setPickerShow = _useState6[1];
38
+ isShowMenu = _useState6[0],
39
+ setMenuShow = _useState6[1];
40
+ var _useState7 = useState(false),
41
+ _useState8 = _slicedToArray(_useState7, 2),
42
+ isPickerShow = _useState8[0],
43
+ setPickerShow = _useState8[1];
35
44
  var onSetColor = useCallback(function (color) {
36
45
  var shouldClose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
37
- var validColor = color || 'transparent';
46
+ var validColor = color || '';
38
47
  setColor(validColor);
39
- if (validColor !== 'transparent' && recentUsedColors[0] !== validColor) {
48
+ if (validColor !== '' && recentUsedColors[0] !== validColor) {
40
49
  var newRecentUsedColors = recentUsedColors.slice(0, 9);
41
50
  newRecentUsedColors.unshift(validColor);
42
- LocalStorage.setItem(localStorageKey, newRecentUsedColors);
51
+ LocalStorage.setItem(recentUsedColorsKey, newRecentUsedColors);
43
52
  setRecentUsedColors(newRecentUsedColors);
44
53
  }
54
+ LocalStorage.setItem(lastUsedColorKey, validColor);
55
+ setLastUseColor(validColor);
45
56
  if (shouldClose) {
46
57
  popoverRef.current.toggle();
47
58
  setMenuShow(!isShowMenu);
48
59
  }
49
60
 
50
61
  // eslint-disable-next-line react-hooks/exhaustive-deps
51
- }, [recentUsedColors, localStorageKey, isShowMenu, isPickerShow]);
62
+ }, [recentUsedColors, recentUsedColorsKey, isShowMenu, isPickerShow]);
52
63
  var setColorProxy = useCallback(function (event) {
53
64
  if (event.target.className.includes('sdoc-color-item')) {
54
65
  var color = event.target.dataset.color;
@@ -56,7 +67,7 @@ var ColorMenu = function ColorMenu(_ref) {
56
67
  }
57
68
 
58
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
59
- }, [recentUsedColors, localStorageKey, isShowMenu, isPickerShow]);
70
+ }, [recentUsedColors, recentUsedColorsKey, isShowMenu, isPickerShow]);
60
71
  var toggle = useCallback(function () {
61
72
  if (isPickerShow) return;
62
73
  popoverRef.current.toggle();
@@ -81,7 +92,9 @@ var ColorMenu = function ColorMenu(_ref) {
81
92
 
82
93
  // eslint-disable-next-line react-hooks/exhaustive-deps
83
94
  }, []);
84
- var validClassName = classnames(className, 'sdoc-color-menu', {
95
+ var validClassName = classnames(className, 'sdoc-color-menu sdoc-menu-with-dropdown', {
96
+ 'menu-show': isShowMenu,
97
+ 'disabled': disabled,
85
98
  'rich-icon-btn d-flex': isRichEditor,
86
99
  'rich-icon-btn-disabled': isRichEditor && disabled,
87
100
  'rich-icon-btn-hover': isRichEditor && !disabled,
@@ -93,25 +106,37 @@ var ColorMenu = function ColorMenu(_ref) {
93
106
 
94
107
  // eslint-disable-next-line react-hooks/exhaustive-deps
95
108
  }, [recentUsedColors]);
109
+ var buttonId = "button-".concat(id);
96
110
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
97
111
  type: "button",
98
- className: validClassName
112
+ className: validClassName,
113
+ id: buttonId,
114
+ disabled: disabled
99
115
  }, /*#__PURE__*/React.createElement("div", {
100
- className: "d-flex flex-column justify-content-center h-100 mr-1 pt-1",
116
+ className: classnames('last-used-color-container sdoc-menu-with-dropdown-icon', {
117
+ 'disabled': disabled
118
+ }),
101
119
  onClick: setRecentUsedColor
102
120
  }, /*#__PURE__*/React.createElement("i", {
103
121
  className: classnames(iconClass, 'sdoc-color-icon')
104
122
  }), /*#__PURE__*/React.createElement("div", {
105
- className: "recent-used-color",
123
+ className: "last-used-color",
106
124
  style: {
107
- backgroundColor: recentUsedColors[0] || 'transparent'
125
+ backgroundColor: lastUsedColor || 'unset'
108
126
  }
109
- })), /*#__PURE__*/React.createElement("i", {
127
+ })), /*#__PURE__*/React.createElement("div", {
110
128
  id: id,
111
- className: "sdocfont sdoc-".concat(isShowMenu ? 'caret-up' : 'drop-down')
112
- })), /*#__PURE__*/React.createElement(UncontrolledPopover, {
129
+ className: "sdoc-color-toggle sdoc-menu-with-dropdown-triangle"
130
+ }, /*#__PURE__*/React.createElement("i", {
131
+ className: "sdoc-menu-with-dropdown-triangle-icon sdocfont sdoc-".concat(isShowMenu ? 'caret-up' : 'drop-down')
132
+ }))), text && /*#__PURE__*/React.createElement(UncontrolledTooltip, {
133
+ target: buttonId,
134
+ fade: false,
135
+ placement: "bottom",
136
+ delay: 0
137
+ }, t(text)), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
113
138
  target: id,
114
- className: "sdoc-color-menu-popover",
139
+ className: classnames('sdoc-color-menu-popover', popoverClassName),
115
140
  trigger: "legacy",
116
141
  placement: "bottom-start",
117
142
  hideArrow: true,
@@ -127,16 +152,16 @@ var ColorMenu = function ColorMenu(_ref) {
127
152
  }, /*#__PURE__*/React.createElement("div", {
128
153
  className: "sdoc-color-no-color-content",
129
154
  onClick: function onClick() {
130
- return onSetColor();
155
+ return onSetColor(defaultColor);
131
156
  }
132
- }, t('No_color'))), /*#__PURE__*/React.createElement("div", {
157
+ }, defaultColorTip || t('No_color'))), /*#__PURE__*/React.createElement("div", {
133
158
  className: "sdoc-color-default-colors-container",
134
159
  onClick: setColorProxy
135
160
  }, DEFAULT_COLORS.map(function (color, index) {
136
161
  return /*#__PURE__*/React.createElement(ColorItem, {
137
162
  key: "default-color-".concat(index),
138
163
  color: color,
139
- recentUsedColor: recentUsedColors[0]
164
+ lastUsedColor: lastUsedColor
140
165
  });
141
166
  })), /*#__PURE__*/React.createElement("div", {
142
167
  className: "sdoc-color-standard-colors-container"
@@ -149,7 +174,7 @@ var ColorMenu = function ColorMenu(_ref) {
149
174
  return /*#__PURE__*/React.createElement(ColorItem, {
150
175
  key: "standard-color-".concat(index),
151
176
  color: color,
152
- recentUsedColor: recentUsedColors[0]
177
+ lastUsedColor: lastUsedColor
153
178
  });
154
179
  }))), /*#__PURE__*/React.createElement("div", {
155
180
  className: "sdoc-color-recent-used-colors-container"
@@ -188,7 +213,7 @@ var ColorMenu = function ColorMenu(_ref) {
188
213
  onClick: onClick
189
214
  }, /*#__PURE__*/React.createElement(ChromePicker, {
190
215
  disableAlpha: true,
191
- color: recentUsedColors[0] || '',
216
+ color: lastUsedColor || '',
192
217
  onChange: onChange
193
218
  }))))));
194
219
  };
@@ -1,5 +1,4 @@
1
1
  import MenuGroup from './menu-group';
2
2
  import MenuItem from './menu-item';
3
- import ContextMenu from './context-menu';
4
3
  import './menu.css';
5
- export { MenuGroup, MenuItem, ContextMenu };
4
+ export { MenuGroup, MenuItem };
@@ -68,6 +68,7 @@ var MenuItem = /*#__PURE__*/function (_React$Component) {
68
68
  target: id,
69
69
  isOpen: isShowToolTip,
70
70
  delay: delay,
71
+ fade: false,
71
72
  placement: "bottom",
72
73
  toggle: this.toggle
73
74
  }, t(text)));