@seafile/sdoc-editor 1.0.177 → 1.0.178

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 (58) 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 +1 -1
  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/sdoc-link/helpers.js +7 -2
  33. package/dist/basic-sdk/extension/plugins/sdoc-link/render/render-elem.css +19 -3
  34. package/dist/basic-sdk/extension/plugins/sdoc-link/render/render-elem.js +8 -3
  35. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +4 -1
  36. package/dist/basic-sdk/extension/plugins/video/helpers.js +1 -0
  37. package/dist/basic-sdk/extension/plugins/video/plugin.js +26 -1
  38. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +7 -0
  39. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +4 -1
  40. package/dist/context.js +8 -0
  41. package/package.json +1 -1
  42. package/public/locales/cs/sdoc-editor.json +23 -1
  43. package/public/locales/de/sdoc-editor.json +23 -1
  44. package/public/locales/en/sdoc-editor.json +23 -1
  45. package/public/locales/es/sdoc-editor.json +23 -1
  46. package/public/locales/es_AR/sdoc-editor.json +23 -1
  47. package/public/locales/es_MX/sdoc-editor.json +23 -1
  48. package/public/locales/fr/sdoc-editor.json +23 -1
  49. package/public/locales/it/sdoc-editor.json +23 -1
  50. package/public/locales/ru/sdoc-editor.json +24 -2
  51. package/public/locales/zh_CN/sdoc-editor.json +23 -1
  52. package/public/media/sdoc-editor-font/iconfont.css +14 -8
  53. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  54. package/public/media/sdoc-editor-font/iconfont.svg +4 -2
  55. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  56. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  57. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  58. package/public/media/sdoc-editor-font.css +14 -10
@@ -197,7 +197,7 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
197
197
  },
198
198
  [_elementType.SDOC_LINK]: {
199
199
  id: `sdoc_${_elementType.SDOC_LINK}`,
200
- iconClass: 'sdocfont sdoc-document',
200
+ iconClass: 'sdocfont sdoc-document-link',
201
201
  text: 'Link_sdoc'
202
202
  },
203
203
  [_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;