@seafile/sdoc-editor 1.0.177 → 1.0.179

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 (60) hide show
  1. package/dist/api/seafile-api.js +12 -0
  2. package/dist/basic-sdk/assets/images/sdoc-ask-ai.png +0 -0
  3. package/dist/basic-sdk/constants/index.js +2 -1
  4. package/dist/basic-sdk/extension/commons/file-insert-dialog/index.js +28 -18
  5. package/dist/basic-sdk/extension/commons/file-insert-dialog/style.css +12 -9
  6. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +10 -0
  7. package/dist/basic-sdk/extension/commons/select-file-dialog/helpers.js +9 -2
  8. package/dist/basic-sdk/extension/commons/select-file-dialog/index.css +115 -0
  9. package/dist/basic-sdk/extension/commons/select-file-dialog/index.js +68 -5
  10. package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.css +42 -0
  11. package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +49 -12
  12. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  13. package/dist/basic-sdk/extension/constants/menus-config.js +10 -2
  14. package/dist/basic-sdk/extension/core/queries/index.js +12 -1
  15. package/dist/basic-sdk/extension/plugins/ai/ai-icon/index.js +26 -0
  16. package/dist/basic-sdk/extension/plugins/ai/ai-icon/style.css +22 -0
  17. package/dist/basic-sdk/extension/plugins/ai/ai-menu/ai-context-menu.js +39 -0
  18. package/dist/basic-sdk/extension/plugins/ai/ai-menu/ai-dropdown-menu.js +35 -0
  19. package/dist/basic-sdk/extension/plugins/ai/ai-menu/index.js +20 -0
  20. package/dist/basic-sdk/extension/plugins/ai/ai-menu/menu-item.js +62 -0
  21. package/dist/basic-sdk/extension/plugins/ai/ai-menu/style.css +3 -0
  22. package/dist/basic-sdk/extension/plugins/ai/ai-module/adjust-sub-menu.js +40 -0
  23. package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +452 -0
  24. package/dist/basic-sdk/extension/plugins/ai/ai-module/lang-sub-menu.js +55 -0
  25. package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +104 -0
  26. package/dist/basic-sdk/extension/plugins/ai/ai-module/tip-dialog.js +32 -0
  27. package/dist/basic-sdk/extension/plugins/ai/constants/index.js +128 -0
  28. package/dist/basic-sdk/extension/plugins/ai/index.js +1 -0
  29. package/dist/basic-sdk/extension/plugins/blockquote/plugin.js +2 -2
  30. package/dist/basic-sdk/extension/plugins/image/helpers.js +25 -16
  31. package/dist/basic-sdk/extension/plugins/image/hover-menu/index.js +1 -1
  32. package/dist/basic-sdk/extension/plugins/link/helpers.js +14 -5
  33. package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +7 -2
  34. package/dist/basic-sdk/extension/plugins/sdoc-link/render/render-elem.css +19 -3
  35. package/dist/basic-sdk/extension/plugins/sdoc-link/render/render-elem.js +8 -3
  36. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +4 -0
  37. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +27 -8
  38. package/dist/basic-sdk/extension/plugins/video/helpers.js +1 -0
  39. package/dist/basic-sdk/extension/plugins/video/plugin.js +26 -1
  40. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +7 -0
  41. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +4 -1
  42. package/dist/context.js +8 -0
  43. package/package.json +1 -1
  44. package/public/locales/cs/sdoc-editor.json +23 -1
  45. package/public/locales/de/sdoc-editor.json +23 -1
  46. package/public/locales/en/sdoc-editor.json +23 -1
  47. package/public/locales/es/sdoc-editor.json +23 -1
  48. package/public/locales/es_AR/sdoc-editor.json +23 -1
  49. package/public/locales/es_MX/sdoc-editor.json +23 -1
  50. package/public/locales/fr/sdoc-editor.json +23 -1
  51. package/public/locales/it/sdoc-editor.json +23 -1
  52. package/public/locales/ru/sdoc-editor.json +24 -2
  53. package/public/locales/zh_CN/sdoc-editor.json +23 -1
  54. package/public/media/sdoc-editor-font/iconfont.css +14 -8
  55. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  56. package/public/media/sdoc-editor-font/iconfont.svg +4 -2
  57. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  58. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  59. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  60. package/public/media/sdoc-editor-font.css +14 -10
@@ -19,6 +19,7 @@ const ITALIC = exports.ITALIC = 'italic';
19
19
  const BOLD = exports.BOLD = 'bold';
20
20
  const UNDERLINE = 'underline';
21
21
  const INLINE_CODE = 'inline_code';
22
+ const TEXT_LINK = 'text_link';
22
23
  const HIGHLIGHT_COLOR = 'highlight_color';
23
24
  const COLOR = 'color';
24
25
 
@@ -48,7 +49,8 @@ const TEXT_STYLE_MAP = exports.TEXT_STYLE_MAP = {
48
49
  SUBSCRIPT: SUBSCRIPT,
49
50
  CODE: 'code',
50
51
  DELETE: 'delete',
51
- ADD: 'add'
52
+ ADD: 'add',
53
+ LINK: 'link'
52
54
  };
53
55
 
54
56
  // header menu config
@@ -122,6 +124,12 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
122
124
  text: 'Inline_code',
123
125
  ariaLabel: 'code',
124
126
  type: TEXT_STYLE_MAP.CODE
127
+ }, {
128
+ id: TEXT_LINK,
129
+ iconClass: 'sdocfont sdoc-link',
130
+ text: 'Insert_link',
131
+ ariaLabel: 'link',
132
+ type: TEXT_STYLE_MAP.LINK
125
133
  }, {
126
134
  id: `sdoc-${HIGHLIGHT_COLOR}`,
127
135
  iconClass: 'sdocfont sdoc-highlight-color',
@@ -197,7 +205,7 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
197
205
  },
198
206
  [_elementType.SDOC_LINK]: {
199
207
  id: `sdoc_${_elementType.SDOC_LINK}`,
200
- iconClass: 'sdocfont sdoc-document',
208
+ iconClass: 'sdocfont sdoc-document-link',
201
209
  text: 'Link_sdoc'
202
210
  },
203
211
  [_elementType.FILE_LINK]: {
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.someNode = exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeInSameBlock = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getStartPoint = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getPointBefore = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEndPoint = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
7
+ exports.someNode = exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeInSameBlock = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isContainsVoidElement = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getStartPoint = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getPointBefore = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEndPoint = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slateReact = require("@seafile/slate-react");
10
10
  var _utils = require("../utils");
@@ -553,6 +553,17 @@ const isEmptyArticle = editor => {
553
553
  return false;
554
554
  };
555
555
  exports.isEmptyArticle = isEmptyArticle;
556
+ const isContainsVoidElement = root => {
557
+ const nodes = _slate.Node.nodes(root);
558
+ for (const nodeEntry of nodes) {
559
+ const [n] = nodeEntry;
560
+ if ((n === null || n === void 0 ? void 0 : n.type) === _constants.IMAGE) {
561
+ return true;
562
+ }
563
+ }
564
+ return false;
565
+ };
566
+ exports.isContainsVoidElement = isContainsVoidElement;
556
567
  const getStartPoint = (editor, at) => {
557
568
  return _slate.Editor.start(editor, at);
558
569
  };
@@ -0,0 +1,26 @@
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 = AIIcon;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _sdocAskAi = _interopRequireDefault(require("../../../../assets/images/sdoc-ask-ai.png"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _reactI18next = require("react-i18next");
12
+ require("./style.css");
13
+ function AIIcon(_ref) {
14
+ let {
15
+ className = 'big'
16
+ } = _ref;
17
+ const {
18
+ t
19
+ } = (0, _reactI18next.useTranslation)('sdoc-editor');
20
+ const clazznames = (0, _classnames.default)('sdoc-ask-ai-icon', className);
21
+ return /*#__PURE__*/_react.default.createElement("img", {
22
+ className: clazznames,
23
+ src: _sdocAskAi.default,
24
+ alt: t('Ask_AI')
25
+ });
26
+ }
@@ -0,0 +1,22 @@
1
+ .sdoc-ask-ai-icon.big {
2
+ position: absolute;
3
+ width: 18px;
4
+ height: 18px;
5
+ left: 16px;
6
+ }
7
+
8
+ .sdoc-ask-ai-icon.small {
9
+ width: 12px;
10
+ height: 13px;
11
+ margin-right: 4px;
12
+ }
13
+
14
+ .sdoc-ai-result-header div {
15
+ display: flex;
16
+ }
17
+
18
+ .sdoc-ai-result-header .sdoc-ask-ai-icon.big {
19
+ position: relative;
20
+ left: 0;
21
+ margin-right: 10px;
22
+ }
@@ -0,0 +1,39 @@
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 = AIContextMenu;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _menuItem = _interopRequireDefault(require("./menu-item"));
11
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
12
+ var _constants = require("../../../../constants");
13
+ var _constants2 = require("../../../constants");
14
+ require("./style.css");
15
+ function AIContextMenu(_ref) {
16
+ let {
17
+ isRichEditor
18
+ } = _ref;
19
+ const onAiClick = (0, _react.useCallback)(event => {
20
+ const eventBus = _eventBus.default.getInstance();
21
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
22
+ type: _constants2.ELEMENT_TYPE.ASK_AI,
23
+ slateNode: null
24
+ });
25
+ }, []);
26
+ const aiProps = {
27
+ id: 'context-toolbar-ai',
28
+ isRichEditor,
29
+ className: 'menu-group-item sdoc-ask-ai-menu-container',
30
+ disabled: false,
31
+ isActive: false,
32
+ onMouseDown: onAiClick,
33
+ 'iconClass': 'sdocfont sdoc-ask-ai',
34
+ 'text': 'Ask_AI',
35
+ 'ariaLabel': 'Ask_AI',
36
+ 'type': 'sdoc-ask-ai'
37
+ };
38
+ return /*#__PURE__*/_react.default.createElement(_menuItem.default, aiProps);
39
+ }
@@ -0,0 +1,35 @@
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 = AIDropdownMenu;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
11
+ var _constants = require("../../../../constants");
12
+ var _constants2 = require("../../../constants");
13
+ var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
14
+ function AIDropdownMenu(_ref) {
15
+ let {
16
+ slateNode
17
+ } = _ref;
18
+ const onAiClick = (0, _react.useCallback)(() => {
19
+ const eventBus = _eventBus.default.getInstance();
20
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
21
+ type: _constants2.ELEMENT_TYPE.ASK_AI,
22
+ slateNode
23
+ });
24
+ }, [slateNode]);
25
+ const aiProps = {
26
+ id: 'side-toolbar-ai',
27
+ 'iconClass': 'sdocfont sdoc-ask-ai',
28
+ 'text': 'Ask_AI',
29
+ 'type': 'sdoc-ask-ai'
30
+ };
31
+ return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
32
+ menuConfig: aiProps,
33
+ onClick: onAiClick
34
+ });
35
+ }
@@ -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, "AIContextMenu", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _aiContextMenu.default;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "AIDropdownMenu", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _aiDropdownMenu.default;
17
+ }
18
+ });
19
+ var _aiContextMenu = _interopRequireDefault(require("./ai-context-menu"));
20
+ var _aiDropdownMenu = _interopRequireDefault(require("./ai-dropdown-menu"));
@@ -0,0 +1,62 @@
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 _tooltip = _interopRequireDefault(require("../../../../../components/tooltip"));
13
+ var _aiIcon = _interopRequireDefault(require("../ai-icon"));
14
+ const MenuItem = _ref => {
15
+ let {
16
+ disabled,
17
+ isActive,
18
+ isRichEditor,
19
+ type,
20
+ onMouseDown,
21
+ className,
22
+ iconClass,
23
+ id,
24
+ text,
25
+ ariaLabel
26
+ } = _ref;
27
+ const {
28
+ t
29
+ } = (0, _reactI18next.useTranslation)();
30
+ const onClick = (0, _react.useCallback)(event => {
31
+ if (disabled) return;
32
+ onMouseDown(event, type);
33
+
34
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35
+ }, [disabled, type]);
36
+ const validClassName = (0, _classnames.default)('', className, {
37
+ 'btn btn-icon btn-secondary btn-active': !isRichEditor,
38
+ 'rich-icon-btn': isRichEditor,
39
+ 'rich-icon-btn-disabled': isRichEditor && disabled,
40
+ 'rich-icon-btn-hover': isRichEditor && !disabled
41
+ });
42
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", {
43
+ id: id,
44
+ type: "button",
45
+ "aria-label": ariaLabel,
46
+ className: validClassName,
47
+ disabled: disabled,
48
+ "data-active": isActive,
49
+ onClick: onClick
50
+ }, /*#__PURE__*/_react.default.createElement("span", {
51
+ className: "sdoc-ask-ai-menu-item"
52
+ }, /*#__PURE__*/_react.default.createElement(_aiIcon.default, {
53
+ className: "small"
54
+ }), /*#__PURE__*/_react.default.createElement("span", null, t(text)))), /*#__PURE__*/_react.default.createElement(_tooltip.default, {
55
+ target: id
56
+ }, t(text)));
57
+ };
58
+ MenuItem.defaultProps = {
59
+ isRichEditor: true,
60
+ className: 'menu-group-item'
61
+ };
62
+ var _default = exports.default = MenuItem;
@@ -0,0 +1,3 @@
1
+ .menu-group-item.sdoc-ask-ai-menu-container {
2
+ width: 80px;
3
+ }
@@ -0,0 +1,40 @@
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 _reactstrap = require("reactstrap");
10
+ var _constants = require("../constants");
11
+ var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
12
+ const AdjustSubMenu = _ref => {
13
+ let {
14
+ target,
15
+ onMoreDetailsClick,
16
+ onMoreConciseClick,
17
+ onMoreVividClick
18
+ } = _ref;
19
+ return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
20
+ boundariesElement: "viewport",
21
+ target: target,
22
+ className: "ai-adjust-sub-menu sdoc-sub-dropdown-menu sdoc-dropdown-menu",
23
+ trigger: "hover",
24
+ placement: "right-start",
25
+ hideArrow: true,
26
+ fade: false
27
+ }, /*#__PURE__*/_react.default.createElement("div", {
28
+ className: "sdoc-dropdown-menu-container"
29
+ }, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
30
+ menuConfig: _constants.OPERATION_MENUS_CONFIG.MORE_DETAILS,
31
+ onClick: onMoreDetailsClick
32
+ }), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
33
+ menuConfig: _constants.OPERATION_MENUS_CONFIG.MORE_CONCISE,
34
+ onClick: onMoreConciseClick
35
+ }), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
36
+ menuConfig: _constants.OPERATION_MENUS_CONFIG.MORE_VIVID,
37
+ onClick: onMoreVividClick
38
+ })));
39
+ };
40
+ var _default = exports.default = AdjustSubMenu;