@seafile/sdoc-editor 3.0.223 → 3.0.225

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.
@@ -1,71 +0,0 @@
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 _slate = require("@seafile/slate");
10
- var _isHotkey = _interopRequireDefault(require("is-hotkey"));
11
- var _constants = require("../../constants");
12
- var _core = require("../../core");
13
- var _helpers = require("../../toolbar/side-toolbar/helpers");
14
- var withFileView = function withFileView(editor) {
15
- var isVoid = editor.isVoid,
16
- onHotKeyDown = editor.onHotKeyDown,
17
- normalizeNode = editor.normalizeNode;
18
- var newEditor = editor;
19
-
20
- // Make video as void node
21
- newEditor.isVoid = function (elem) {
22
- var type = elem.type;
23
- if (type === _constants.FILE_VIEW) {
24
- return true;
25
- }
26
- return isVoid(elem);
27
- };
28
- newEditor.onHotKeyDown = function (event) {
29
- var _ref = (0, _core.getSelectedNodeEntryByType)(editor, _constants.FILE_VIEW) || [],
30
- _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
31
- fileNode = _ref2[0],
32
- path = _ref2[1];
33
- if (path) {
34
- // Insert empty paragraph node after video when clicking 'enter' on selected video
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, fileNode);
46
- }
47
- return true;
48
- }
49
- return onHotKeyDown && onHotKeyDown(event);
50
- };
51
- newEditor.normalizeNode = function (_ref3) {
52
- var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
53
- node = _ref4[0],
54
- path = _ref4[1];
55
- var type = (0, _core.getNodeType)(node);
56
- if (type !== _constants.ELEMENT_TYPE.FILE_VIEW) {
57
- return normalizeNode([node, path]);
58
- }
59
-
60
- // insert empty node,continue editor
61
- var isLast = (0, _core.isLastNode)(newEditor, node);
62
- if (isLast) {
63
- var p = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
64
- _slate.Transforms.insertNodes(newEditor, p, {
65
- at: [path[0] + 1]
66
- });
67
- }
68
- };
69
- return newEditor;
70
- };
71
- var _default = exports["default"] = withFileView;
@@ -1,25 +0,0 @@
1
- .sdoc-file-view-rename {
2
- max-width: 100%;
3
- width: 100%;
4
- white-space: nowrap;
5
- word-break: break-word;
6
- caret-color: var(--c-texPri);
7
- min-width: 0px;
8
- flex: 1 1 0%;
9
- overflow: auto;
10
- font-weight: 700;
11
- font-size: 22px;
12
- margin-inline-end: 4px;
13
- scrollbar-width: none;
14
- height: 48px;
15
- line-height: 48px;
16
- }
17
-
18
- .sdoc-file-view-rename input {
19
- border-width: 0;
20
- padding: 0;
21
- }
22
-
23
- .sdoc-file-view-rename input:focus-visible {
24
- outline: none;
25
- }
@@ -1,113 +0,0 @@
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
10
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
11
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
13
- var _react = _interopRequireDefault(require("react"));
14
- var _reactI18next = require("react-i18next");
15
- var _toast = _interopRequireDefault(require("../../../../components/toast"));
16
- var _keyCodes = _interopRequireDefault(require("../../../../constants/key-codes"));
17
- require("./index.css");
18
- var Rename = /*#__PURE__*/function (_React$Component) {
19
- function Rename(props) {
20
- var _this;
21
- (0, _classCallCheck2["default"])(this, Rename);
22
- _this = (0, _callSuper2["default"])(this, Rename, [props]);
23
- (0, _defineProperty2["default"])(_this, "registerEventHandle", function () {
24
- document.addEventListener('click', _this.onOutClick);
25
- });
26
- (0, _defineProperty2["default"])(_this, "onOutClick", function (event) {
27
- if (!_this.inputRef.current.contains(event.target)) {
28
- _this.onRenameConfirm();
29
- document.removeEventListener('click', _this.onOutClick);
30
- }
31
- });
32
- (0, _defineProperty2["default"])(_this, "onClick", function (e) {
33
- e.stopPropagation();
34
- e.nativeEvent.stopImmediatePropagation();
35
- _this.registerEventHandle();
36
- });
37
- (0, _defineProperty2["default"])(_this, "onChange", function (e) {
38
- _this.setState({
39
- name: e.target.value
40
- });
41
- });
42
- (0, _defineProperty2["default"])(_this, "onKeyDown", function (e) {
43
- if (e.keyCode === _keyCodes["default"].Enter) {
44
- _this.onRenameConfirm(e);
45
- } else if (e.keyCode === _keyCodes["default"].Esc) {
46
- _this.onRenameCancel(e);
47
- }
48
- e.nativeEvent.stopImmediatePropagation();
49
- });
50
- (0, _defineProperty2["default"])(_this, "onRenameConfirm", function (e) {
51
- e && e.nativeEvent.stopImmediatePropagation();
52
- var newName = _this.state.name.trim();
53
- if (newName === _this.props.name) {
54
- _this.props.onRenameCancel();
55
- return;
56
- }
57
- var _this$validateInput = _this.validateInput(),
58
- isValid = _this$validateInput.isValid,
59
- errMessage = _this$validateInput.errMessage;
60
- if (!isValid) {
61
- _toast["default"].danger(errMessage);
62
- _this.props.onRenameCancel();
63
- } else {
64
- _this.props.onRenameConfirm(newName);
65
- }
66
- });
67
- (0, _defineProperty2["default"])(_this, "onRenameCancel", function (e) {
68
- document.removeEventListener('click', _this.onOutClick);
69
- e.nativeEvent.stopImmediatePropagation();
70
- _this.props.onRenameCancel();
71
- });
72
- (0, _defineProperty2["default"])(_this, "validateInput", function () {
73
- var t = _this.props.t;
74
- var newName = _this.state.name.trim();
75
- var isValid = true;
76
- var errMessage = '';
77
- if (newName.indexOf('/') > -1) {
78
- isValid = false;
79
- // eslint-disable-next-line no-useless-concat
80
- errMessage = t('Name should not include ' + '\'/\'' + '.');
81
- return {
82
- isValid: isValid,
83
- errMessage: errMessage
84
- };
85
- }
86
- return {
87
- isValid: isValid,
88
- errMessage: errMessage
89
- };
90
- });
91
- _this.state = {
92
- name: props.name
93
- };
94
- _this.inputRef = /*#__PURE__*/_react["default"].createRef();
95
- return _this;
96
- }
97
- (0, _inherits2["default"])(Rename, _React$Component);
98
- return (0, _createClass2["default"])(Rename, [{
99
- key: "render",
100
- value: function render() {
101
- return /*#__PURE__*/_react["default"].createElement("div", {
102
- className: "sdoc-file-view-rename"
103
- }, /*#__PURE__*/_react["default"].createElement("input", {
104
- ref: this.inputRef,
105
- value: this.state.name,
106
- onChange: this.onChange,
107
- onKeyDown: this.onKeyDown,
108
- onClick: this.onClick
109
- }));
110
- }
111
- }]);
112
- }(_react["default"].Component);
113
- var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(Rename);
@@ -1,52 +0,0 @@
1
- .sdoc-file-view-container {
2
- position: relative;
3
- display: flex;
4
- flex-direction: column;
5
- resize: vertical;
6
- }
7
-
8
- .sdoc-file-view-container .sdoc-file-view-title {
9
- position: absolute;
10
- height: 48px;
11
- line-height: 48px;
12
- top: 2px;
13
- left: 0px;
14
- z-index: 10;
15
- margin-left: 16px;
16
- }
17
-
18
- .sdoc-file-view-container .sdoc-file-view-content {
19
- position: relative;
20
- border: 2px solid transparent;
21
- border-radius: 4px;
22
- resize: vertical;
23
- }
24
-
25
- .sdoc-file-view-container .sdoc-file-view-content.is-selected {
26
- border: 2px solid rgb(0, 123, 255);
27
- border-radius: 4px;
28
- }
29
-
30
- /* .sdoc-file-view-container .sdoc-file-view-content {
31
- height: 400px;
32
- }
33
-
34
- .sdoc-file-view-container .sdoc-file-view-content .sea-metadata {
35
- height: 396px;
36
- } */
37
-
38
- .sdoc-file-view-container .sdoc-file-view-content .sea-metadata .sea-metadata-table-main-container {
39
- border: 1px solid #eee;
40
- }
41
-
42
- .sdoc-file-view-container .sdoc-file-view-content .file-view-resizer {
43
- width: 10px;
44
- height: 10px;
45
- position: absolute;
46
- right: -5px;
47
- bottom: -5px;
48
- background-color: #007bff;
49
- border: 1px solid #fff;
50
- cursor: se-resize;
51
- display: none;
52
- }
@@ -1,172 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.renderFileView = void 0;
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
- var _react = _interopRequireWildcard(require("react"));
12
- var _reactI18next = require("react-i18next");
13
- var _sdocFileView = require("@seafile/sdoc-file-view");
14
- var _slateReact = require("@seafile/slate-react");
15
- var _classnames = _interopRequireDefault(require("classnames"));
16
- var _toast = _interopRequireDefault(require("../../../../components/toast"));
17
- var _context = _interopRequireDefault(require("../../../../context"));
18
- var _useScrollContext = require("../../../../hooks/use-scroll-context");
19
- var _commonUtils = require("../../../../utils/common-utils");
20
- var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
21
- var _constants = require("../../../constants");
22
- var _helpers = require("../helpers");
23
- require("./index.css");
24
- var FileViewPlugin = function FileViewPlugin(_ref) {
25
- var element = _ref.element,
26
- children = _ref.children,
27
- attributes = _ref.attributes;
28
- var data = element.data;
29
- var scrollRef = (0, _useScrollContext.useScrollContext)();
30
- var editor = (0, _slateReact.useSlateStatic)();
31
- var isSelected = (0, _slateReact.useSelected)();
32
- var readOnly = (0, _slateReact.useReadOnly)();
33
- var wrapperRef = (0, _react.useRef)(null);
34
- var resizerRef = (0, _react.useRef)(null);
35
- var _useState = (0, _react.useState)(false),
36
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
- isResizing = _useState2[0],
38
- setIsResizing = _useState2[1];
39
- var _useState3 = (0, _react.useState)(null),
40
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
41
- movingSize = _useState4[0],
42
- setMovingSize = _useState4[1];
43
- var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
44
- t = _useTranslation.t;
45
- var databaseRef = (0, _react.useRef)(null);
46
- var viewSettings = (0, _react.useMemo)(function () {
47
- var settings = _context["default"].getFileViewSetting();
48
- var viewSettings = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, settings), {}, {
49
- view_data: {
50
- wiki_id: data.wiki_id,
51
- file_view_id: data.file_view_id
52
- // height: data.height,
53
- // width: data.width,
54
- }
55
- });
56
- return viewSettings;
57
- }, [data.file_view_id, data.wiki_id]);
58
- (0, _react.useEffect)(function () {
59
- var copyContent = _localStorageUtils["default"].getItem(_constants.RECENT_COPY_CONTENT);
60
- var wikiId = _context["default"].getSetting('wikiId');
61
- if (wikiId !== data.wiki_id) return;
62
- if (!copyContent) return;
63
- var stringContent = JSON.stringify(copyContent);
64
- if (stringContent.indexOf(data.wiki_id) > -1 && stringContent.indexOf(data.file_view_id) > -1) {
65
- _context["default"].duplicateFileView(data.file_view_id).then(function (res) {
66
- var fileView = res.data.file_view;
67
- var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, data), {}, {
68
- file_view_id: fileView.id
69
- });
70
- (0, _helpers.updateFileView)(newData, editor, element);
71
- })["catch"](function (error) {
72
- var errorMessage = (0, _commonUtils.getErrorMsg)(error);
73
- _toast["default"].danger(errorMessage);
74
- });
75
- }
76
- // eslint-disable-next-line react-hooks/exhaustive-deps
77
- }, []);
78
- var registerEvent = (0, _react.useCallback)(function (eventList) {
79
- eventList.forEach(function (element) {
80
- document.addEventListener(element.eventName, element.event);
81
- });
82
- }, []);
83
- var unregisterEvent = (0, _react.useCallback)(function (eventList) {
84
- eventList.forEach(function (element) {
85
- document.removeEventListener(element.eventName, element.event);
86
- });
87
- }, []);
88
- var onMouseMove = (0, _react.useCallback)(function (event) {
89
- event.preventDefault();
90
- event.stopPropagation();
91
- var wrapperElement = wrapperRef.current;
92
- var _wrapperElement$getBo = wrapperElement.getBoundingClientRect(),
93
- left = _wrapperElement$getBo.left,
94
- right = _wrapperElement$getBo.right,
95
- top = _wrapperElement$getBo.top,
96
- bottom = _wrapperElement$getBo.bottom;
97
- var size = (0, _helpers.calculateSize)(event, {
98
- left: left,
99
- right: right,
100
- top: top,
101
- bottom: bottom
102
- });
103
- var style = wrapperElement.style;
104
- // style.width = size.width + 'px';
105
- style.height = size.height + 'px';
106
- var _databaseRef$current$ = databaseRef.current.getFileBaseElement(),
107
- databaseStyle = _databaseRef$current$.style;
108
- // databaseStyle.width = (size.width - 4) + 'px';
109
- databaseStyle.height = size.height - 4 + 'px';
110
- setMovingSize(size);
111
- }, []);
112
- var onResizeEnd = (0, _react.useCallback)(function (event) {
113
- event.preventDefault();
114
- event.stopPropagation();
115
- unregisterEvent([{
116
- 'eventName': 'mousemove',
117
- 'event': onMouseMove
118
- }, {
119
- 'eventName': 'mouseup',
120
- 'event': onResizeEnd
121
- }]);
122
- var style = wrapperRef.current.style;
123
- var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.data), {}, {
124
- // width: parseFloat(style.width),
125
- height: parseFloat(style.height)
126
- });
127
- (0, _helpers.updateFileView)(newData, editor, element);
128
- // Reset hover menu position
129
- setTimeout(function () {
130
- setIsResizing(false);
131
- }, 100);
132
- // eslint-disable-next-line react-hooks/exhaustive-deps
133
- }, [editor, element.data, wrapperRef.current]);
134
- var onResizeStart = (0, _react.useCallback)(function (event) {
135
- event.preventDefault();
136
- event.stopPropagation();
137
- setIsResizing(true);
138
- registerEvent([{
139
- 'eventName': 'mousemove',
140
- 'event': onMouseMove
141
- }, {
142
- 'eventName': 'mouseup',
143
- 'event': onResizeEnd
144
- }]);
145
- }, [onMouseMove, onResizeEnd, registerEvent]);
146
- return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
147
- "data-id": element.id
148
- }, attributes, {
149
- className: "sdoc-file-view-container",
150
- contentEditable: "false",
151
- suppressContentEditableWarning: true
152
- }), /*#__PURE__*/_react["default"].createElement("div", {
153
- className: (0, _classnames["default"])('sdoc-file-view-content', {
154
- 'is-selected': isSelected
155
- }),
156
- ref: wrapperRef
157
- }, /*#__PURE__*/_react["default"].createElement(_sdocFileView.FileView, {
158
- readOnly: readOnly,
159
- settings: viewSettings,
160
- ref: databaseRef,
161
- scrollRef: scrollRef
162
- }), !readOnly && isSelected && /*#__PURE__*/_react["default"].createElement("span", {
163
- className: "file-view-resizer",
164
- ref: resizerRef,
165
- onMouseDown: onResizeStart
166
- }), isResizing && movingSize && /*#__PURE__*/_react["default"].createElement("span", {
167
- className: "image-size"
168
- }, /*#__PURE__*/_react["default"].createElement("span", null, t('Height'), ':', parseInt(movingSize.height)))), children);
169
- };
170
- var renderFileView = exports.renderFileView = function renderFileView(props) {
171
- return /*#__PURE__*/_react["default"].createElement(FileViewPlugin, props);
172
- };
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = LinkRepoPopover;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
11
- var _reactstrap = require("reactstrap");
12
- var _utils = require("../../utils");
13
- var _linkRepoList = _interopRequireDefault(require("./link-repo-list"));
14
- function LinkRepoPopover(_ref) {
15
- var onRepoClick = _ref.onRepoClick;
16
- var _useState = (0, _react.useState)('right-start'),
17
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
18
- placement = _useState2[0],
19
- setPlacement = _useState2[1];
20
- (0, _react.useEffect)(function () {
21
- var element = document.getElementById('sdoc-side-menu-item-file-view');
22
- if ((0, _utils.isOverflowPortByDirection)(element, 'bottom')) {
23
- setPlacement('right');
24
- }
25
- }, []);
26
- return /*#__PURE__*/_react["default"].createElement(_reactstrap.UncontrolledPopover, {
27
- target: "sdoc-side-menu-item-file-view",
28
- trigger: "hover",
29
- className: "sdoc-sub-dropdown-menu sdoc-insert-menu-file-view-popover",
30
- popperClassName: "sdoc-popover-box-shadow",
31
- placement: placement,
32
- hideArrow: true,
33
- fade: false
34
- }, /*#__PURE__*/_react["default"].createElement(_linkRepoList["default"], {
35
- onRepoClick: onRepoClick
36
- }));
37
- }
@@ -1,61 +0,0 @@
1
- .sdoc-insert-menu-file-view-popover .popover {
2
- max-width: 300px;
3
- }
4
-
5
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper {
6
- /* position: absolute; */
7
- left: -8px;
8
- background-color: #fff;
9
- max-height: 370px;
10
- max-width: 298px;
11
- border-radius: 8px;
12
- }
13
-
14
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-tip {
15
- height: 24px;
16
- line-height: 24px;
17
- padding-left: 8px;
18
- color: #666;
19
- font-size: 14px;
20
- }
21
-
22
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-divider {
23
- border-top: 1px solid #eee;
24
- margin: 4px 0;
25
- }
26
-
27
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-content-wrapper {
28
- max-height: 300px;
29
- overflow-y: auto;
30
- padding-bottom: 8px;
31
- border-bottom: 1px solid #e9ecef;
32
- }
33
-
34
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-dropdown-menu-item .lib-icon {
35
- margin-right: 10px;
36
- }
37
-
38
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-dropdown-menu-item .item-text {
39
- flex: 1;
40
- min-width: 0;
41
- overflow: hidden;
42
- text-overflow: ellipsis;
43
- white-space: nowrap;
44
- }
45
-
46
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar {
47
- min-height: 32px;
48
- padding: 3px 12px;
49
- margin-top: 8px;
50
- }
51
-
52
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar .sdocfont {
53
- color: #666;
54
- margin-right: 10px;
55
- }
56
-
57
- .sdoc-dropdown-menu.sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar:hover {
58
- background-color: rgba(0, 0, 0, 0.04);
59
- border-radius: 4px;
60
- cursor: pointer;
61
- }