@seafile/sdoc-editor 2.0.130 → 2.0.131-test-0.0.2
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/assets/css/sdoc-editor-plugins.css +1 -0
- package/dist/comment/components/comment-item-collapse-wrapper.js +20 -22
- package/dist/comment/components/comment-item-content.js +9 -10
- package/dist/comment/components/comment-item-reply.js +9 -10
- package/dist/comment/components/comment-item-wrapper.js +56 -62
- package/dist/comment/components/comment-list.js +10 -11
- package/dist/comment/components/editor-comment.js +2 -1
- package/dist/comment/components/elements-comment-count/index.css +4 -0
- package/dist/comment/components/global-comment/global-comment-header.js +18 -19
- package/dist/comment/components/global-comment/index.css +1 -1
- package/dist/comment/components/global-comment/index.js +9 -10
- package/dist/comment/helper.js +27 -2
- package/dist/comment/hooks/comment-hooks/use-comment-mount.js +33 -35
- package/dist/comment/hooks/notification-hooks/use-notification-mount.js +17 -18
- package/dist/comment/provider/index.js +1 -0
- package/dist/constants/index.js +3 -1
- package/dist/editor/sdoc-comment-editor.js +19 -20
- package/dist/editor/wiki-editor.js +17 -3
- package/dist/extension/commons/file-insert-dialog/index.js +26 -27
- package/dist/extension/commons/insert-element-dialog/index.js +22 -3
- package/dist/extension/commons/select-file-dialog/helpers.js +5 -1
- package/dist/extension/commons/select-file-dialog/index.js +18 -2
- package/dist/extension/commons/select-file-dialog/local-files/index.css +2 -0
- package/dist/extension/commons/select-file-dialog/local-files/index.js +13 -14
- package/dist/extension/constants/element-type.js +2 -1
- package/dist/extension/constants/index.js +9 -3
- package/dist/extension/constants/menus-config.js +6 -2
- package/dist/extension/plugins/ai/ai-module/index.js +9 -10
- package/dist/extension/plugins/image/helpers.js +9 -10
- package/dist/extension/plugins/image/use-copy-image.js +35 -37
- package/dist/extension/plugins/image/use-upload-image.js +25 -27
- package/dist/extension/plugins/index.js +8 -1
- package/dist/extension/plugins/link/plugin.js +24 -25
- package/dist/extension/plugins/text-style/menu/index.js +1 -1
- package/dist/extension/plugins/whiteboard/helper.js +141 -0
- package/dist/extension/plugins/whiteboard/index.css +41 -0
- package/dist/extension/plugins/whiteboard/index.js +20 -0
- package/dist/extension/plugins/whiteboard/menu/index.js +59 -0
- package/dist/extension/plugins/whiteboard/plugin.js +53 -0
- package/dist/extension/plugins/whiteboard/render-elem.js +87 -0
- package/dist/extension/render/custom-element.js +6 -0
- package/dist/extension/toolbar/header-toolbar/insert-toolbar/index.js +2 -1
- package/dist/extension/toolbar/side-toolbar/helpers.js +1 -1
- package/dist/hooks/use-collaborators.js +3 -2
- package/dist/hooks/use-plugins.js +1 -0
- package/dist/hooks/use-selection-position.js +13 -2
- package/dist/index.js +7 -0
- package/dist/layout/article-container.js +1 -1
- package/dist/views/sdoc-wiki-viewer.js +1 -1
- package/package.json +2 -3
- package/LICENSE.txt +0 -13
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.onCreateWhiteboardFile = exports.isInsertWhiteboardMenuDisabled = exports.insertWhiteboard = exports.generateWhiteboardNode = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
|
+
var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
12
|
+
var _slate = require("@seafile/slate");
|
|
13
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
14
|
+
var _constants = require("../../../constants");
|
|
15
|
+
var _context2 = _interopRequireDefault(require("../../../context"));
|
|
16
|
+
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
17
|
+
var _constants2 = require("../../constants");
|
|
18
|
+
var _core = require("../../core");
|
|
19
|
+
var isInsertWhiteboardMenuDisabled = exports.isInsertWhiteboardMenuDisabled = function isInsertWhiteboardMenuDisabled(editor, readonly) {
|
|
20
|
+
if (readonly) return true;
|
|
21
|
+
var selection = editor.selection;
|
|
22
|
+
if (selection === null) return true;
|
|
23
|
+
if (!_slate.Range.isCollapsed(selection)) return true;
|
|
24
|
+
var _Editor$nodes = _slate.Editor.nodes(editor, {
|
|
25
|
+
match: function match(n) {
|
|
26
|
+
var type = (0, _core.getNodeType)(n);
|
|
27
|
+
if (!type && (0, _core.isTextNode)(n) && n.id) {
|
|
28
|
+
var parentNode = (0, _core.getParentNode)(editor.children, n.id);
|
|
29
|
+
type = (0, _core.getNodeType)(parentNode);
|
|
30
|
+
}
|
|
31
|
+
if (type === _constants2.CODE_BLOCK) return true;
|
|
32
|
+
if (type.startsWith('header')) return true;
|
|
33
|
+
if (type === _constants2.TITLE) return true;
|
|
34
|
+
if (type === _constants2.SUBTITLE) return true;
|
|
35
|
+
if (type === _constants2.LIST_ITEM) return true;
|
|
36
|
+
if (type === _constants2.CHECK_LIST_ITEM) return true;
|
|
37
|
+
if (type === _constants2.MULTI_COLUMN) return true;
|
|
38
|
+
if (type === _constants2.BLOCKQUOTE) return true;
|
|
39
|
+
if (type === _constants2.CALL_OUT) return true;
|
|
40
|
+
if (_slate.Editor.isVoid(editor, n)) return true;
|
|
41
|
+
return false;
|
|
42
|
+
},
|
|
43
|
+
universal: true
|
|
44
|
+
}),
|
|
45
|
+
_Editor$nodes2 = (0, _slicedToArray2["default"])(_Editor$nodes, 1),
|
|
46
|
+
match = _Editor$nodes2[0];
|
|
47
|
+
if (match) return true;
|
|
48
|
+
return false;
|
|
49
|
+
};
|
|
50
|
+
var generateWhiteboardNode = exports.generateWhiteboardNode = function generateWhiteboardNode(repoID) {
|
|
51
|
+
var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
52
|
+
var filePath = arguments.length > 2 ? arguments[2] : undefined;
|
|
53
|
+
var exdrawReadOnlyLink = arguments.length > 3 ? arguments[3] : undefined;
|
|
54
|
+
var whiteboardNode = {
|
|
55
|
+
id: _slugid["default"].nice(),
|
|
56
|
+
type: _constants2.WHITEBOARD,
|
|
57
|
+
repo_id: repoID,
|
|
58
|
+
title: filename,
|
|
59
|
+
file_path: filePath,
|
|
60
|
+
link: exdrawReadOnlyLink,
|
|
61
|
+
children: [{
|
|
62
|
+
id: _slugid["default"].nice(),
|
|
63
|
+
text: ''
|
|
64
|
+
}]
|
|
65
|
+
};
|
|
66
|
+
return whiteboardNode;
|
|
67
|
+
};
|
|
68
|
+
var insertWhiteboard = exports.insertWhiteboard = /*#__PURE__*/function () {
|
|
69
|
+
var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee(editor, filename, filePath) {
|
|
70
|
+
var _editor$selection;
|
|
71
|
+
var repoID, eventBus, exdrawReadOnlyLink, whiteboardNode, path, position, nextPath, endOfFirstNode, range;
|
|
72
|
+
return (0, _regenerator2["default"])().w(function (_context) {
|
|
73
|
+
while (1) switch (_context.n) {
|
|
74
|
+
case 0:
|
|
75
|
+
if (!isInsertWhiteboardMenuDisabled(editor)) {
|
|
76
|
+
_context.n = 1;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
return _context.a(2);
|
|
80
|
+
case 1:
|
|
81
|
+
if (!(editor.selection == null)) {
|
|
82
|
+
_context.n = 2;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
return _context.a(2);
|
|
86
|
+
case 2:
|
|
87
|
+
repoID = _context2["default"].getSetting('repoID');
|
|
88
|
+
eventBus = _eventBus["default"].getInstance();
|
|
89
|
+
_context.n = 3;
|
|
90
|
+
return new Promise(function (resolve) {
|
|
91
|
+
eventBus.dispatch(_constants.INTERNAL_EVENT.GENERATE_EXDRAW_READ_ONLY_LINK, {
|
|
92
|
+
repoID: repoID,
|
|
93
|
+
filePath: filePath,
|
|
94
|
+
onSuccess: function onSuccess(link) {
|
|
95
|
+
resolve(link);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
case 3:
|
|
100
|
+
exdrawReadOnlyLink = _context.v;
|
|
101
|
+
whiteboardNode = generateWhiteboardNode(repoID, filename, filePath, exdrawReadOnlyLink);
|
|
102
|
+
path = (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.anchor.path;
|
|
103
|
+
position = 'after';
|
|
104
|
+
if (!(position === _constants2.INSERT_POSITION.AFTER)) {
|
|
105
|
+
_context.n = 4;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
_slate.Transforms.insertNodes(editor, whiteboardNode, {
|
|
109
|
+
at: [path[0] + 1]
|
|
110
|
+
});
|
|
111
|
+
nextPath = _slate.Path.next([path[0] + 1]);
|
|
112
|
+
if (!(0, _core.getNode)(editor, nextPath)) {
|
|
113
|
+
_slate.Transforms.insertNodes(editor, (0, _core.generateDefaultParagraph)(), {
|
|
114
|
+
at: nextPath
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
endOfFirstNode = _slate.Editor.start(editor, nextPath);
|
|
118
|
+
range = {
|
|
119
|
+
anchor: endOfFirstNode,
|
|
120
|
+
focus: endOfFirstNode
|
|
121
|
+
};
|
|
122
|
+
(0, _core.focusEditor)(editor, range);
|
|
123
|
+
return _context.a(2);
|
|
124
|
+
case 4:
|
|
125
|
+
return _context.a(2);
|
|
126
|
+
}
|
|
127
|
+
}, _callee);
|
|
128
|
+
}));
|
|
129
|
+
return function insertWhiteboard(_x, _x2, _x3) {
|
|
130
|
+
return _ref.apply(this, arguments);
|
|
131
|
+
};
|
|
132
|
+
}();
|
|
133
|
+
var onCreateWhiteboardFile = exports.onCreateWhiteboardFile = function onCreateWhiteboardFile(editor) {
|
|
134
|
+
var eventBus = _eventBus["default"].getInstance();
|
|
135
|
+
var external_props = {
|
|
136
|
+
insertWhiteboard: insertWhiteboard,
|
|
137
|
+
fileType: 'exdraw',
|
|
138
|
+
editor: editor
|
|
139
|
+
};
|
|
140
|
+
eventBus.dispatch(_constants.INTERNAL_EVENT.CREATE_WHITEBOARD_FILE, (0, _objectSpread2["default"])({}, external_props));
|
|
141
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
.sdoc-whiteboard-container {
|
|
2
|
+
position: relative;
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 300px;
|
|
5
|
+
border: 1px solid #ccc;
|
|
6
|
+
margin: 5px 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sdoc-whiteboard-container.isSelected {
|
|
10
|
+
border: 2px solid rgb(0, 123, 255);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.sdoc-whiteboard-title {
|
|
14
|
+
font-size: 14px;
|
|
15
|
+
color: #333;
|
|
16
|
+
text-align: center;
|
|
17
|
+
margin: 5px;
|
|
18
|
+
width: 100%;
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 0;
|
|
21
|
+
left: 0%;
|
|
22
|
+
z-index: 3;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.sdoc-whiteboard-container .iframe-overlay {
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: 0;
|
|
28
|
+
left: 0;
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
z-index: 2;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.sdoc-whiteboard-container .sdoc-whiteboard-element {
|
|
36
|
+
width: 100%;
|
|
37
|
+
height: 100%;
|
|
38
|
+
border: none;
|
|
39
|
+
position: relative;
|
|
40
|
+
z-index: 1;
|
|
41
|
+
}
|
|
@@ -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
|
+
exports["default"] = void 0;
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _menu = _interopRequireDefault(require("./menu"));
|
|
10
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
11
|
+
var _renderElem = require("./render-elem");
|
|
12
|
+
require("./index.css");
|
|
13
|
+
var WhiteboardPlugin = {
|
|
14
|
+
type: _constants.WHITEBOARD,
|
|
15
|
+
nodeType: 'element',
|
|
16
|
+
editorMenus: [_menu["default"]],
|
|
17
|
+
editorPlugin: _plugin["default"],
|
|
18
|
+
renderElements: [_renderElem.renderWhiteboard]
|
|
19
|
+
};
|
|
20
|
+
var _default = exports["default"] = WhiteboardPlugin;
|
|
@@ -0,0 +1,59 @@
|
|
|
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 _reactstrap = require("reactstrap");
|
|
12
|
+
var _constants = require("../../../../constants");
|
|
13
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
14
|
+
var _constants2 = require("../../../constants");
|
|
15
|
+
var _helper = require("../helper");
|
|
16
|
+
var WhiteboardMenu = function WhiteboardMenu(_ref) {
|
|
17
|
+
var editor = _ref.editor,
|
|
18
|
+
readonly = _ref.readonly,
|
|
19
|
+
toggle = _ref.toggle,
|
|
20
|
+
eventBus = _ref.eventBus;
|
|
21
|
+
var disabled = (0, _helper.isInsertWhiteboardMenuDisabled)(editor, readonly);
|
|
22
|
+
var menuConfig = _constants2.MENUS_CONFIG_MAP[_constants2.WHITEBOARD];
|
|
23
|
+
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
24
|
+
t = _useTranslation.t;
|
|
25
|
+
var onCreateFile = function onCreateFile() {
|
|
26
|
+
(0, _helper.onCreateWhiteboardFile)(editor);
|
|
27
|
+
};
|
|
28
|
+
var openSelectWhiteboardFileDialog = (0, _react.useCallback)(function () {
|
|
29
|
+
eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
30
|
+
type: _constants2.ELEMENT_TYPE.WHITEBOARD,
|
|
31
|
+
insertWhiteboard: _helper.insertWhiteboard
|
|
32
|
+
});
|
|
33
|
+
toggle && toggle();
|
|
34
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
|
+
}, [toggle, eventBus]);
|
|
36
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
37
|
+
disabled: disabled,
|
|
38
|
+
menuConfig: menuConfig,
|
|
39
|
+
className: "pr-2"
|
|
40
|
+
}, !disabled && /*#__PURE__*/_react["default"].createElement("i", {
|
|
41
|
+
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
42
|
+
})), !disabled && /*#__PURE__*/_react["default"].createElement(_reactstrap.UncontrolledPopover, {
|
|
43
|
+
target: menuConfig.id,
|
|
44
|
+
trigger: "hover",
|
|
45
|
+
className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-whiteboard-menu-popover",
|
|
46
|
+
placement: "right-start",
|
|
47
|
+
hideArrow: true,
|
|
48
|
+
fade: false
|
|
49
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
50
|
+
className: "sdoc-insert-whiteboard-menu-popover-container sdoc-dropdown-menu-container"
|
|
51
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
52
|
+
className: "sdoc-dropdown-menu-item",
|
|
53
|
+
onClick: openSelectWhiteboardFileDialog
|
|
54
|
+
}, t('Select_Excalidraw_document')), /*#__PURE__*/_react["default"].createElement("div", {
|
|
55
|
+
className: "sdoc-dropdown-menu-item",
|
|
56
|
+
onClick: onCreateFile
|
|
57
|
+
}, t('Create_new_excalidraw')))));
|
|
58
|
+
};
|
|
59
|
+
var _default = exports["default"] = WhiteboardMenu;
|
|
@@ -0,0 +1,53 @@
|
|
|
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _slate = require("@seafile/slate");
|
|
11
|
+
var _isHotkey = _interopRequireDefault(require("is-hotkey"));
|
|
12
|
+
var _constants = require("../../constants");
|
|
13
|
+
var _core = require("../../core");
|
|
14
|
+
var _helpers = require("../../toolbar/side-toolbar/helpers");
|
|
15
|
+
var withWhiteboard = function withWhiteboard(editor) {
|
|
16
|
+
var isVoid = editor.isVoid,
|
|
17
|
+
onHotKeyDown = editor.onHotKeyDown;
|
|
18
|
+
var newEditor = editor;
|
|
19
|
+
|
|
20
|
+
// Make whiteboard as void node
|
|
21
|
+
newEditor.isVoid = function (elem) {
|
|
22
|
+
var type = elem.type;
|
|
23
|
+
if (type === _constants.WHITEBOARD) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
return isVoid(elem);
|
|
27
|
+
};
|
|
28
|
+
newEditor.onHotKeyDown = function (event) {
|
|
29
|
+
var _ref = (0, _core.getSelectedNodeEntryByType)(editor, _constants.WHITEBOARD) || [],
|
|
30
|
+
_ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
31
|
+
whiteboardNode = _ref2[0],
|
|
32
|
+
path = _ref2[1];
|
|
33
|
+
if (path) {
|
|
34
|
+
// Insert empty paragraph node after whiteboard when clicking 'enter' on selected whiteboard
|
|
35
|
+
if ((0, _isHotkey["default"])('enter', event)) {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
var emptyParagraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
|
|
38
|
+
_slate.Transforms.insertNodes(editor, emptyParagraph, {
|
|
39
|
+
at: _slate.Path.next(path)
|
|
40
|
+
});
|
|
41
|
+
var focusPoint = _slate.Editor.end(editor, _slate.Path.next(path));
|
|
42
|
+
(0, _core.focusEditor)(newEditor, focusPoint);
|
|
43
|
+
}
|
|
44
|
+
if ((0, _isHotkey["default"])('mod+c', event)) {
|
|
45
|
+
(0, _helpers.onCopyNode)(editor, whiteboardNode);
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return onHotKeyDown && onHotKeyDown(event);
|
|
50
|
+
};
|
|
51
|
+
return newEditor;
|
|
52
|
+
};
|
|
53
|
+
var _default = exports["default"] = withWhiteboard;
|
|
@@ -0,0 +1,87 @@
|
|
|
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.renderWhiteboard = renderWhiteboard;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _slateReact = require("@seafile/slate-react");
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
|
+
var _constants = require("../../../constants");
|
|
13
|
+
var _context = _interopRequireDefault(require("../../../context"));
|
|
14
|
+
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
15
|
+
require("./index.css");
|
|
16
|
+
var Whiteboard = function Whiteboard(_ref) {
|
|
17
|
+
var editor = _ref.editor,
|
|
18
|
+
element = _ref.element;
|
|
19
|
+
var file_path = element.file_path,
|
|
20
|
+
repo_id = element.repo_id,
|
|
21
|
+
title = element.title,
|
|
22
|
+
link = element.link;
|
|
23
|
+
var whiteboardRef = (0, _react.useRef)();
|
|
24
|
+
var isSelected = (0, _slateReact.useSelected)();
|
|
25
|
+
(0, _react.useEffect)(function () {
|
|
26
|
+
var handleMessage = function handleMessage(event) {
|
|
27
|
+
var _event$data;
|
|
28
|
+
if (((_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.type) === 'checkSdocParent') {
|
|
29
|
+
var isSdocClass = whiteboardRef === null || whiteboardRef === void 0 ? void 0 : whiteboardRef.current.classList.contains('sdoc-whiteboard-element');
|
|
30
|
+
whiteboardRef === null || whiteboardRef === void 0 ? void 0 : whiteboardRef.current.contentWindow.postMessage({
|
|
31
|
+
type: 'checkSdocParentResult',
|
|
32
|
+
isInSdoc: isSdocClass
|
|
33
|
+
}, '*');
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var handleWindowResize = function handleWindowResize() {
|
|
37
|
+
whiteboardRef === null || whiteboardRef === void 0 ? void 0 : whiteboardRef.current.contentWindow.postMessage({
|
|
38
|
+
type: 'resizeWindowWidth',
|
|
39
|
+
isResize: true
|
|
40
|
+
}, '*');
|
|
41
|
+
};
|
|
42
|
+
var eventBus = _eventBus["default"].getInstance();
|
|
43
|
+
var unsubscribeResizeArticle = eventBus.subscribe(_constants.INTERNAL_EVENT.RESIZE_ARTICLE, handleWindowResize);
|
|
44
|
+
window.addEventListener('message', handleMessage);
|
|
45
|
+
return function () {
|
|
46
|
+
window.removeEventListener('message', handleMessage);
|
|
47
|
+
unsubscribeResizeArticle();
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
var handleDoubleClick = function handleDoubleClick(event) {
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
var siteRoot = _context["default"].getSetting('siteRoot');
|
|
53
|
+
var url = "".concat(siteRoot, "lib/").concat(repo_id, "/file").concat(file_path);
|
|
54
|
+
window.open(url, '_blank');
|
|
55
|
+
return;
|
|
56
|
+
};
|
|
57
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
58
|
+
className: (0, _classnames["default"])('sdoc-whiteboard-container', {
|
|
59
|
+
'isSelected': isSelected
|
|
60
|
+
}),
|
|
61
|
+
onDoubleClick: handleDoubleClick,
|
|
62
|
+
scrolling: "no"
|
|
63
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
64
|
+
className: "sdoc-whiteboard-title"
|
|
65
|
+
}, title), /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
66
|
+
className: "sdoc-whiteboard-element",
|
|
67
|
+
title: title,
|
|
68
|
+
src: link,
|
|
69
|
+
ref: whiteboardRef
|
|
70
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
71
|
+
className: "iframe-overlay",
|
|
72
|
+
onDoubleClick: handleDoubleClick
|
|
73
|
+
}));
|
|
74
|
+
};
|
|
75
|
+
function renderWhiteboard(props, editor) {
|
|
76
|
+
var element = props.element,
|
|
77
|
+
children = props.children,
|
|
78
|
+
attributes = props.attributes;
|
|
79
|
+
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({}, attributes, {
|
|
80
|
+
contentEditable: "false",
|
|
81
|
+
suppressContentEditableWarning: true
|
|
82
|
+
}), children, /*#__PURE__*/_react["default"].createElement(Whiteboard, {
|
|
83
|
+
editor: editor,
|
|
84
|
+
element: element,
|
|
85
|
+
contentEditable: "false"
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
@@ -229,6 +229,12 @@ var CustomRenderElement = function CustomRenderElement(props) {
|
|
|
229
229
|
renderGroup = _GroupPlugin$renderEl[0];
|
|
230
230
|
return renderGroup(props);
|
|
231
231
|
}
|
|
232
|
+
case _elementType.WHITEBOARD:
|
|
233
|
+
{
|
|
234
|
+
var _WhiteboardPlugin$ren = (0, _slicedToArray2["default"])(_plugins.WhiteboardPlugin.renderElements, 1),
|
|
235
|
+
renderWhiteboard = _WhiteboardPlugin$ren[0];
|
|
236
|
+
return renderWhiteboard((0, _objectSpread2["default"])({}, props), editor);
|
|
237
|
+
}
|
|
232
238
|
default:
|
|
233
239
|
{
|
|
234
240
|
var _ParagraphPlugin$rend3 = (0, _slicedToArray2["default"])(_plugins.ParagraphPlugin.renderElements, 1),
|
|
@@ -20,6 +20,7 @@ var _menu4 = _interopRequireDefault(require("../../../plugins/link/menu"));
|
|
|
20
20
|
var _menu5 = _interopRequireDefault(require("../../../plugins/sdoc-link/menu"));
|
|
21
21
|
var _tableMenu = _interopRequireDefault(require("../../../plugins/table/menu/table-menu"));
|
|
22
22
|
var _menu6 = _interopRequireDefault(require("../../../plugins/video/menu"));
|
|
23
|
+
var _menu7 = _interopRequireDefault(require("../../../plugins/whiteboard/menu"));
|
|
23
24
|
require("./index.css");
|
|
24
25
|
var InsertToolbar = function InsertToolbar(_ref) {
|
|
25
26
|
var _ref$isRichEditor = _ref.isRichEditor,
|
|
@@ -101,7 +102,7 @@ var InsertToolbar = function InsertToolbar(_ref) {
|
|
|
101
102
|
style: {
|
|
102
103
|
maxHeight: window.innerHeight - bottom - 100
|
|
103
104
|
}
|
|
104
|
-
}, /*#__PURE__*/_react["default"].createElement(_menu3["default"], props), /*#__PURE__*/_react["default"].createElement(_tableMenu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu6["default"], props), /*#__PURE__*/_react["default"].createElement(_menu4["default"], props), /*#__PURE__*/_react["default"].createElement(_menu["default"], props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
105
|
+
}, /*#__PURE__*/_react["default"].createElement(_menu3["default"], props), /*#__PURE__*/_react["default"].createElement(_tableMenu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu6["default"], props), /*#__PURE__*/_react["default"].createElement(_menu7["default"], props), /*#__PURE__*/_react["default"].createElement(_menu4["default"], props), /*#__PURE__*/_react["default"].createElement(_menu["default"], props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
105
106
|
className: "sdoc-dropdown-menu-divider"
|
|
106
107
|
}), /*#__PURE__*/_react["default"].createElement(_menu5["default"], props), /*#__PURE__*/_react["default"].createElement(_menu2["default"], props))));
|
|
107
108
|
};
|
|
@@ -249,7 +249,7 @@ var getTopValue = exports.getTopValue = function getTopValue(editor, dom, contai
|
|
|
249
249
|
return top + offsetY - headerHeight;
|
|
250
250
|
};
|
|
251
251
|
var isNotSupportTransform = exports.isNotSupportTransform = function isNotSupportTransform(node) {
|
|
252
|
-
if (node.type && [_constants2.CODE_BLOCK, _constants2.TABLE, _constants2.VIDEO].includes(node.type)) {
|
|
252
|
+
if (node.type && [_constants2.CODE_BLOCK, _constants2.TABLE, _constants2.VIDEO, _constants2.WHITEBOARD].includes(node.type)) {
|
|
253
253
|
return true;
|
|
254
254
|
}
|
|
255
255
|
return false;
|
|
@@ -14,13 +14,14 @@ var CollaboratorsContext = /*#__PURE__*/_react["default"].createContext(null);
|
|
|
14
14
|
var CollaboratorsProvider = exports.CollaboratorsProvider = function CollaboratorsProvider(_ref) {
|
|
15
15
|
var propsCollaborators = _ref.collaborators,
|
|
16
16
|
children = _ref.children;
|
|
17
|
-
var isSdocRevision = _context["default"].getSetting('isSdocRevision');
|
|
18
|
-
var isPublished = _context["default"].getSetting('isPublished');
|
|
17
|
+
var isSdocRevision = _context["default"].getSetting('isSdocRevision') || false;
|
|
18
|
+
var isPublished = _context["default"].getSetting('isPublished') || false;
|
|
19
19
|
var _useState = (0, _react.useState)(propsCollaborators || []),
|
|
20
20
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
21
21
|
collaborators = _useState2[0],
|
|
22
22
|
setCollaborators = _useState2[1];
|
|
23
23
|
(0, _react.useEffect)(function () {
|
|
24
|
+
console.log(1, isSdocRevision, isPublished);
|
|
24
25
|
if (isSdocRevision && isPublished) return;
|
|
25
26
|
if (propsCollaborators) return;
|
|
26
27
|
_context["default"].listRelatedUsers().then(function (res) {
|
|
@@ -34,6 +34,7 @@ var PluginsProvider = exports.PluginsProvider = function PluginsProvider(_ref) {
|
|
|
34
34
|
component: _comment["default"]
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
+
console.log(3, allPlugins);
|
|
37
38
|
return allPlugins;
|
|
38
39
|
}, [showComment, propsPlugins]);
|
|
39
40
|
var updateDisplayPlugin = (0, _react.useCallback)(function (name) {
|
|
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useCommentListPosition = void 0;
|
|
7
|
+
var _helper = require("../comment/helper");
|
|
8
|
+
var _constants = require("../constants");
|
|
7
9
|
var _useScrollContext = require("./use-scroll-context");
|
|
8
|
-
var useCommentListPosition = exports.useCommentListPosition = function useCommentListPosition(selectedElementIds, isContextComment, isClickedContextComment, commentedDom, commentDetail, closeComment) {
|
|
10
|
+
var useCommentListPosition = exports.useCommentListPosition = function useCommentListPosition(selectedElementIds, isContextComment, isClickedContextComment, commentedDom, commentDetail, closeComment, editor) {
|
|
9
11
|
var _document$querySelect;
|
|
10
12
|
var headerHeight = 100;
|
|
11
13
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
@@ -51,7 +53,12 @@ var useCommentListPosition = exports.useCommentListPosition = function useCommen
|
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
var editorArticleRight = document.getElementById('sdoc-editor-print-wrapper').getBoundingClientRect().right;
|
|
54
|
-
var topPara
|
|
56
|
+
var topPara;
|
|
57
|
+
topPara = rect.bottom - headerHeight + 10 + scrollTop;
|
|
58
|
+
if (editor.editorType === _constants.WIKI_EDITOR) {
|
|
59
|
+
// 55 is basic top title height in wiki
|
|
60
|
+
topPara = (0, _helper.commentContainerWikiTransfer)(topPara, 55);
|
|
61
|
+
}
|
|
55
62
|
var rightPara = editorArticleRight - rect.left - 300; // 300 is comment container's width
|
|
56
63
|
return {
|
|
57
64
|
right: rightPara,
|
|
@@ -63,6 +70,10 @@ var useCommentListPosition = exports.useCommentListPosition = function useCommen
|
|
|
63
70
|
if (!selectionPosition) closeComment();
|
|
64
71
|
if (selectionPosition && selectionPosition.y !== 0) {
|
|
65
72
|
selectionPosition.y = selectionPosition.y - headerHeight + scrollTop;
|
|
73
|
+
if (editor.editorType === _constants.WIKI_EDITOR) {
|
|
74
|
+
// 47 is top nav bar height in wiki
|
|
75
|
+
selectionPosition.y = (0, _helper.commentContainerWikiTransfer)(selectionPosition.y, 47);
|
|
76
|
+
}
|
|
66
77
|
}
|
|
67
78
|
return {
|
|
68
79
|
x: selectionPosition === null || selectionPosition === void 0 ? void 0 : selectionPosition.x,
|
package/dist/index.js
CHANGED
|
@@ -88,6 +88,12 @@ Object.defineProperty(exports, "RevisionEditor", {
|
|
|
88
88
|
return _revisionEditor["default"];
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
|
+
Object.defineProperty(exports, "RightPanel", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function get() {
|
|
94
|
+
return _index["default"];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
91
97
|
Object.defineProperty(exports, "SDocEditor", {
|
|
92
98
|
enumerable: true,
|
|
93
99
|
get: function get() {
|
|
@@ -260,6 +266,7 @@ var _useCollaborators = require("./hooks/use-collaborators");
|
|
|
260
266
|
var _usePlugins = require("./hooks/use-plugins");
|
|
261
267
|
var _nodeId = _interopRequireDefault(require("./node-id"));
|
|
262
268
|
var _outline = _interopRequireDefault(require("./outline"));
|
|
269
|
+
var _index = _interopRequireDefault(require("./right-panel/index"));
|
|
263
270
|
var _slateConvert = require("./slate-convert");
|
|
264
271
|
var _socket = require("./socket");
|
|
265
272
|
var _commonUtils = require("./utils/common-utils");
|
|
@@ -63,7 +63,7 @@ function ArticleContainer(_ref) {
|
|
|
63
63
|
};
|
|
64
64
|
}, [editor.editorType, handleWindowResize]);
|
|
65
65
|
(0, _react.useEffect)(function () {
|
|
66
|
-
if (editor.editorType ===
|
|
66
|
+
// if (editor.editorType === WIKI_EDITOR) return;
|
|
67
67
|
if (editor.editorType === _constants.DOCUMENT_PLUGIN_EDITOR) return;
|
|
68
68
|
handleWindowResize();
|
|
69
69
|
window.addEventListener('resize', handleWindowResize);
|
|
@@ -24,7 +24,7 @@ var SDocMdViewer = function SDocMdViewer(_ref) {
|
|
|
24
24
|
showOutline = _ref$showOutline === void 0 ? false : _ref$showOutline,
|
|
25
25
|
propsScrollRef = _ref.scrollRef;
|
|
26
26
|
var validEditor = editor || (0, _nodeId["default"])((0, _extension.createDefaultEditor)());
|
|
27
|
-
var slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).
|
|
27
|
+
var slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).elements;
|
|
28
28
|
var scrollRef = (0, _react.useRef)(null);
|
|
29
29
|
var currentScrollRef = propsScrollRef || scrollRef;
|
|
30
30
|
return /*#__PURE__*/_react["default"].createElement(_layout.EditorContainer, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.131-test-0.0.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -69,6 +69,5 @@
|
|
|
69
69
|
},
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
|
72
|
-
}
|
|
73
|
-
"gitHead": "10b0c1c64b87fea3d83594109d061393c24d66a8"
|
|
72
|
+
}
|
|
74
73
|
}
|
package/LICENSE.txt
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2025 Seafile Ltd.
|
|
2
|
-
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
|
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
|
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
See the License for the specific language governing permissions and
|
|
13
|
-
limitations under the License.
|