@seafile/seafile-sdoc-editor 2.0.0

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 (65) hide show
  1. package/dist/assets/css/plugin-editor.css +7 -0
  2. package/dist/assets/css/simple-editor.css +9 -0
  3. package/dist/assets/css/simple-viewer.css +6 -0
  4. package/dist/assets/images/content-replaced.png +0 -0
  5. package/dist/assets/images/revision-avatar.png +0 -0
  6. package/dist/assets/images/sdoc-freezed.png +0 -0
  7. package/dist/components/doc-info/index.css +102 -0
  8. package/dist/components/doc-info/index.js +122 -0
  9. package/dist/components/doc-operations/collaborators-operation/collaborators-popover.css +74 -0
  10. package/dist/components/doc-operations/collaborators-operation/collaborators-popover.js +60 -0
  11. package/dist/components/doc-operations/collaborators-operation/index.js +104 -0
  12. package/dist/components/doc-operations/index.js +47 -0
  13. package/dist/components/doc-operations/more-operations.js +167 -0
  14. package/dist/components/doc-operations/plugins-operations.js +56 -0
  15. package/dist/components/doc-operations/presentation-operation/index.js +44 -0
  16. package/dist/components/doc-operations/revision-operations/changes-count/index.css +34 -0
  17. package/dist/components/doc-operations/revision-operations/changes-count/index.js +120 -0
  18. package/dist/components/doc-operations/revision-operations/index.js +256 -0
  19. package/dist/components/doc-operations/revision-operations/more-revision-operations/index.css +53 -0
  20. package/dist/components/doc-operations/revision-operations/more-revision-operations/index.js +73 -0
  21. package/dist/components/doc-operations/revision-operations/publish-revision/index.js +28 -0
  22. package/dist/components/doc-operations/revision-operations/revisions/index.css +16 -0
  23. package/dist/components/doc-operations/revision-operations/revisions/index.js +69 -0
  24. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.css +126 -0
  25. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +265 -0
  26. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.css +34 -0
  27. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.js +69 -0
  28. package/dist/components/doc-operations/revision-operations/view-changes/index.css +3 -0
  29. package/dist/components/doc-operations/revision-operations/view-changes/index.js +79 -0
  30. package/dist/components/doc-operations/share-operation/index.js +29 -0
  31. package/dist/components/doc-operations/style.css +93 -0
  32. package/dist/components/draft-dropdown/index.js +83 -0
  33. package/dist/components/draft-dropdown/style.css +43 -0
  34. package/dist/components/error-boundary/error-page.css +16 -0
  35. package/dist/components/error-boundary/error-page.js +49 -0
  36. package/dist/components/error-boundary/index.js +47 -0
  37. package/dist/components/modal-header/index.css +18 -0
  38. package/dist/components/modal-header/index.js +27 -0
  39. package/dist/components/modal-portal/index.js +41 -0
  40. package/dist/components/switch/index.css +14 -0
  41. package/dist/components/switch/index.js +35 -0
  42. package/dist/components/tip-dialog/index.css +48 -0
  43. package/dist/components/tip-dialog/index.js +117 -0
  44. package/dist/components/tip-message/index.js +189 -0
  45. package/dist/components/tip-message/style.css +15 -0
  46. package/dist/constants/index.js +46 -0
  47. package/dist/hooks/index.js +12 -0
  48. package/dist/hooks/use-document.js +90 -0
  49. package/dist/index.js +75 -0
  50. package/dist/layout/content.js +35 -0
  51. package/dist/layout/header.js +35 -0
  52. package/dist/layout/index.js +24 -0
  53. package/dist/layout/layout.css +32 -0
  54. package/dist/layout/layout.js +65 -0
  55. package/dist/model/index.js +13 -0
  56. package/dist/model/revision.js +42 -0
  57. package/dist/pages/diff-viewer.js +8 -0
  58. package/dist/pages/published-revision-viewer.js +100 -0
  59. package/dist/pages/sdoc-wiki-editor.js +57 -0
  60. package/dist/pages/simple-editor.js +162 -0
  61. package/dist/pages/simple-viewer.js +120 -0
  62. package/dist/pages/wiki-viewer.js +23 -0
  63. package/dist/utils/date-utils.js +92 -0
  64. package/dist/utils/index.js +48 -0
  65. package/package.json +48 -0
@@ -0,0 +1,167 @@
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"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactI18next = require("react-i18next");
12
+ var _reactstrap = require("reactstrap");
13
+ var _printJs = _interopRequireDefault(require("@seafile/print-js"));
14
+ var _sdocEditor = require("@seafile/sdoc-editor");
15
+ var _constants = require("../../constants");
16
+ var _switch = _interopRequireDefault(require("../switch"));
17
+ var MoreOperations = function MoreOperations(_ref) {
18
+ var isStarred = _ref.isStarred,
19
+ t = _ref.t;
20
+ var _useState = (0, _react.useState)(false),
21
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
22
+ isDropdownOpen = _useState2[0],
23
+ setIsDropdownOpen = _useState2[1];
24
+ var _useState3 = (0, _react.useState)(_sdocEditor.LocalStorage.getItem(_sdocEditor.FULL_WIDTH_MODE)),
25
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
26
+ isFullWidthMode = _useState4[0],
27
+ setIsFullWidthMode = _useState4[1];
28
+ var parentFolderURL = _sdocEditor.context.getSetting('parentFolderURL');
29
+ var isPro = _sdocEditor.context.getSetting('isPro');
30
+ var isFreezed = _sdocEditor.context.getSetting('isFreezed');
31
+ var docPerm = _sdocEditor.context.getSetting('docPerm');
32
+ var historyURL = _sdocEditor.context.getSetting('historyURL');
33
+ var isSdocRevision = _sdocEditor.context.getSetting('isSdocRevision');
34
+ var mobileLogin = _sdocEditor.context.getSetting('mobileLogin');
35
+ var cssUrls = _sdocEditor.context.getPrintCss();
36
+ var id = 'sdoc_more_operation';
37
+ (0, _react.useEffect)(function () {
38
+ var eventBus = _sdocEditor.EventBus.getInstance();
39
+ var unSubscribe = eventBus.subscribe(_sdocEditor.INTERNAL_EVENT.ON_PRINT, handlePrint);
40
+ return function () {
41
+ unSubscribe();
42
+ };
43
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44
+ }, []);
45
+ var toggleDropdown = (0, _react.useCallback)(function (event, isDropdownOpen) {
46
+ if (isDropdownOpen) {
47
+ // Clicking the fullscreen menu does not close the collapsed menu
48
+ var el = document.getElementById('sdoc-full-width-mode-wrapper');
49
+ if (el && el.contains(event.target)) return;
50
+ }
51
+ setIsDropdownOpen(!isDropdownOpen);
52
+ }, []);
53
+ var handlePrint = (0, _react.useCallback)(function () {
54
+ (0, _printJs["default"])({
55
+ printable: 'sdoc-editor-print-wrapper',
56
+ type: 'html',
57
+ scanStyles: true,
58
+ targetStyles: ['*'],
59
+ style: '@page { size: auto A4 landscape;margin:20px auto; padding: 0;} .d-print-none{display:none !important;} .article {border: none !important; box-shadow: none !important; } html, body {margin: 0; padding: 0}',
60
+ css: cssUrls
61
+ });
62
+ }, [cssUrls]);
63
+ var onFreezeDocument = (0, _react.useCallback)(function () {
64
+ var eventBus = _sdocEditor.EventBus.getInstance();
65
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.FREEZE_DOCUMENT);
66
+ }, []);
67
+ var unFreeze = (0, _react.useCallback)(function () {
68
+ var eventBus = _sdocEditor.EventBus.getInstance();
69
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.UNFREEZE);
70
+ }, []);
71
+ var handleClickHistory = (0, _react.useCallback)(function (event) {
72
+ if (docPerm !== 'rw' || !historyURL) return;
73
+ if (isSdocRevision) return;
74
+ event.stopPropagation();
75
+ event.nativeEvent.stopImmediatePropagation();
76
+ window.location.href = historyURL;
77
+ }, [docPerm, historyURL, isSdocRevision]);
78
+ var printShortcutTexts = (0, _react.useMemo)(function () {
79
+ var printTexts = (0, _sdocEditor.isMac)() ? ['⌘', 'P'] : ['Ctrl', 'P'];
80
+ return printTexts;
81
+ }, []);
82
+ var onSwitchMode = (0, _react.useCallback)(function () {
83
+ var newMode = !isFullWidthMode;
84
+ _sdocEditor.LocalStorage.setItem(_sdocEditor.FULL_WIDTH_MODE, newMode);
85
+ var eventBus = _sdocEditor.EventBus.getInstance();
86
+ eventBus.dispatch(_sdocEditor.INTERNAL_EVENT.RESIZE_ARTICLE);
87
+ setIsFullWidthMode(newMode);
88
+ }, [isFullWidthMode]);
89
+ var toggleStar = (0, _react.useCallback)(function () {
90
+ var eventBus = _sdocEditor.EventBus.getInstance();
91
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.TOGGLE_STAR);
92
+ }, []);
93
+ var onShareToggle = (0, _react.useCallback)(function () {
94
+ var eventBus = _sdocEditor.EventBus.getInstance();
95
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.SHARE_SDOC);
96
+ }, []);
97
+ var onInternalLinkClick = (0, _react.useCallback)(function () {
98
+ var eventBus = _sdocEditor.EventBus.getInstance();
99
+ if (isSdocRevision) {
100
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK, {
101
+ internalLink: window.location.href
102
+ });
103
+ return;
104
+ }
105
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK);
106
+ }, [isSdocRevision]);
107
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Dropdown, {
108
+ className: "sdoc-operator-folder ".concat(mobileLogin ? 'mobile-login' : ''),
109
+ isOpen: isDropdownOpen,
110
+ toggle: function toggle(event) {
111
+ return toggleDropdown(event, isDropdownOpen);
112
+ }
113
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownToggle, {
114
+ id: id,
115
+ className: "op-item",
116
+ tag: "span"
117
+ }, /*#__PURE__*/_react["default"].createElement("i", {
118
+ className: "sdocfont sdoc-more"
119
+ })), /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
120
+ target: id
121
+ }, t('More_operation')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownMenu, {
122
+ className: "sdoc-dropdown-menu",
123
+ end: true
124
+ }, mobileLogin && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
125
+ className: "sdoc-dropdown-menu-item",
126
+ onClick: toggleStar
127
+ }, /*#__PURE__*/_react["default"].createElement("div", null, isStarred ? t('Collected') : t('Collect'))), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
128
+ className: "sdoc-dropdown-menu-item",
129
+ onClick: onShareToggle
130
+ }, t('Share_1')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
131
+ className: "sdoc-dropdown-menu-item",
132
+ onClick: onInternalLinkClick
133
+ }, t('Internal_link')), /*#__PURE__*/_react["default"].createElement("div", {
134
+ className: "sdoc-operator-folder-divider"
135
+ })), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
136
+ className: "sdoc-dropdown-menu-item",
137
+ onClick: handlePrint
138
+ }, /*#__PURE__*/_react["default"].createElement("div", {
139
+ className: "sdoc-dropdown-print-container"
140
+ }, /*#__PURE__*/_react["default"].createElement("div", null, t('Print')), /*#__PURE__*/_react["default"].createElement(_sdocEditor.MenuShortcutPrompt, {
141
+ shortcuts: printShortcutTexts
142
+ }))), isPro && isFreezed && /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
143
+ className: "sdoc-dropdown-menu-item",
144
+ onClick: unFreeze
145
+ }, t('Unfreeze')), isPro && !isFreezed && /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
146
+ className: "sdoc-dropdown-menu-item",
147
+ onClick: onFreezeDocument
148
+ }, t('Freeze_document')), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
149
+ className: "sdoc-dropdown-menu-item",
150
+ onClick: handleClickHistory
151
+ }, t('Document_history')), !_sdocEditor.isMobile && /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
152
+ id: "sdoc-full-width-mode-wrapper",
153
+ className: "sdoc-dropdown-menu-item"
154
+ }, /*#__PURE__*/_react["default"].createElement(_switch["default"], {
155
+ checked: isFullWidthMode,
156
+ placeholder: t('Full_width_mode'),
157
+ className: "sdoc-full-width-mode-wrapper w-100",
158
+ onChange: onSwitchMode
159
+ })), parentFolderURL && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
160
+ className: "sdoc-operator-folder-divider"
161
+ }), /*#__PURE__*/_react["default"].createElement(_reactstrap.DropdownItem, {
162
+ className: "sdoc-dropdown-menu-item",
163
+ tag: "a",
164
+ href: parentFolderURL
165
+ }, t('Open_parent_folder')))));
166
+ };
167
+ var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(MoreOperations);
@@ -0,0 +1,56 @@
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 _sdocEditor = require("@seafile/sdoc-editor");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var PluginsOperations = function PluginsOperations() {
14
+ var _usePlugins = (0, _sdocEditor.usePlugins)(),
15
+ plugins = _usePlugins.plugins,
16
+ updateDisplayPlugin = _usePlugins.updateDisplayPlugin;
17
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
18
+ t = _useTranslation.t;
19
+ var iconIdMap = {
20
+ 'sdoc-info': 'sdoc_info',
21
+ 'sdoc-comment': 'sdoc_comment'
22
+ };
23
+ var _onClick = (0, _react.useCallback)(function (event, pluginName) {
24
+ event.stopPropagation();
25
+ event.nativeEvent && event.nativeEvent.stopImmediatePropagation && event.nativeEvent.stopImmediatePropagation();
26
+ updateDisplayPlugin(pluginName);
27
+ }, [updateDisplayPlugin]);
28
+ if (plugins.length === 0) return null;
29
+ return plugins.filter(function (plugin) {
30
+ return !plugin.position || plugin.position === _sdocEditor.PLUGIN_BTN_POSITION.DEFAULT;
31
+ }).map(function (plugin) {
32
+ var name = plugin.name,
33
+ icon = plugin.icon;
34
+ var iconDom = '';
35
+ if (typeof icon !== 'string') {
36
+ iconDom = icon;
37
+ } else {
38
+ iconDom = /*#__PURE__*/_react["default"].createElement("i", {
39
+ className: (0, _classnames["default"])('sdocfont', icon)
40
+ });
41
+ }
42
+ return /*#__PURE__*/_react["default"].createElement("span", {
43
+ className: "op-item sdoc-plugin-operation-btn-container",
44
+ id: iconIdMap[name],
45
+ onClick: function onClick(e) {
46
+ return _onClick(e, name);
47
+ },
48
+ key: name
49
+ }, iconDom, name === 'sdoc-info' && /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
50
+ target: iconIdMap[name]
51
+ }, t('Property')), name === 'sdoc-comment' && /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
52
+ target: iconIdMap[name]
53
+ }, t('Comment_list')));
54
+ });
55
+ };
56
+ var _default = exports["default"] = PluginsOperations;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactI18next = require("react-i18next");
10
+ var _sdocEditor = require("@seafile/sdoc-editor");
11
+ var PresentationOperation = function PresentationOperation() {
12
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
13
+ t = _useTranslation.t;
14
+ var id = 'sdoc_presentation';
15
+ var _usePlugins = (0, _sdocEditor.usePlugins)(),
16
+ plugins = _usePlugins.plugins,
17
+ closePlugin = _usePlugins.closePlugin;
18
+ var onPresentationToggle = (0, _react.useCallback)(function () {
19
+ // Close plugins before presentation mode
20
+ if (plugins && ['sdoc-info', 'sdoc-comment'].includes(plugins[0].name)) {
21
+ closePlugin && closePlugin();
22
+ }
23
+ var eventBus = _sdocEditor.EventBus.getInstance();
24
+ eventBus.dispatch(_sdocEditor.INTERNAL_EVENT.TOGGLE_PRESENTATION_MODE, {
25
+ isShowFullScreen: true
26
+ });
27
+ var node = document.querySelector('.sdoc-editor-container');
28
+ if (node !== null && node !== void 0 && node.requestFullscreen) {
29
+ node.requestFullscreen()["catch"](function (err) {
30
+ return console.error('Failed to enter fullscreen:', err);
31
+ });
32
+ }
33
+ }, [closePlugin, plugins]);
34
+ return /*#__PURE__*/_react["default"].createElement("span", {
35
+ className: "op-item",
36
+ id: id,
37
+ onClick: onPresentationToggle
38
+ }, /*#__PURE__*/_react["default"].createElement("i", {
39
+ className: "sdocfont sdoc-presentation"
40
+ }), /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
41
+ target: id
42
+ }, t('Presentation')));
43
+ };
44
+ var _default = exports["default"] = PresentationOperation;
@@ -0,0 +1,34 @@
1
+ .sdoc-revision-changes-container {
2
+ height: 32px;
3
+ border: 1px solid #e5e5e5;
4
+ border-radius: 3px;
5
+ }
6
+
7
+ .sdoc-revision-changes-container .sdoc-revision-changes-divider {
8
+ border-right: 1px solid #e5e5e5;
9
+ height: 100%;
10
+ width: 1px;
11
+ }
12
+
13
+ .sdoc-revision-changes-container .sdoc-revision-changes-last,
14
+ .sdoc-revision-changes-container .sdoc-revision-changes-next {
15
+ padding: 0 8px;
16
+ height: 100%;
17
+ }
18
+
19
+ .sdoc-revision-changes-container .sdoc-revision-changes-last .sdocfont,
20
+ .sdoc-revision-changes-container .sdoc-revision-changes-next .sdocfont {
21
+ color: #000;
22
+ opacity: .5;
23
+ }
24
+
25
+ .sdoc-revision-changes-container .sdoc-revision-changes-last:hover,
26
+ .sdoc-revision-changes-container .sdoc-revision-changes-next:hover {
27
+ cursor: pointer;
28
+ background-color: #f5f5f5;
29
+ }
30
+
31
+ .sdoc-revision-changes-container .sdoc-revision-changes-last:hover .sdocfont,
32
+ .sdoc-revision-changes-container .sdoc-revision-changes-next:hover .sdocfont {
33
+ opacity: .75;
34
+ }
@@ -0,0 +1,120 @@
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"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactI18next = require("react-i18next");
12
+ var _sdocEditor = require("@seafile/sdoc-editor");
13
+ require("./index.css");
14
+ var ChangesCount = function ChangesCount(_ref) {
15
+ var allChanges = _ref.allChanges;
16
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
17
+ t = _useTranslation.t;
18
+ var _useState = (0, _react.useState)(0),
19
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
20
+ currentDiffIndex = _useState2[0],
21
+ setDiffIndex = _useState2[1];
22
+ var _useState3 = (0, _react.useState)([]),
23
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
24
+ changes = _useState4[0],
25
+ setChanges = _useState4[1];
26
+ var intervalRef = (0, _react.useRef)();
27
+ (0, _react.useEffect)(function () {
28
+ // Article rendering is delayed, so we need to wait for the Article to render before we can get the changes
29
+ new Promise(function (resolve) {
30
+ intervalRef.current = setInterval(function () {
31
+ var article = document.querySelector('.article');
32
+ if (article) {
33
+ clearInterval(intervalRef.current);
34
+ intervalRef.current = null;
35
+ resolve();
36
+ }
37
+ }, 100);
38
+ }).then(function () {
39
+ if (allChanges.changes.length !== 0) {
40
+ var topLevelChanges = (0, _sdocEditor.getTopLevelChanges)(allChanges.changes);
41
+ var _changes = (0, _sdocEditor.getMergedChanges)(topLevelChanges, allChanges.value);
42
+ setChanges(_changes);
43
+ }
44
+ });
45
+ return function () {
46
+ intervalRef.current && clearInterval(intervalRef.current);
47
+ };
48
+ }, [allChanges]);
49
+ var jumpToElement = (0, _react.useCallback)(function (currentDiffIndex) {
50
+ setDiffIndex(currentDiffIndex);
51
+ var change = changes[currentDiffIndex];
52
+ var changeElement = document.querySelectorAll("[data-id=\"".concat(change, "\"]"))[0];
53
+ if (changeElement) {
54
+ var scrollContainer = document.getElementById('sdoc-scroll-container');
55
+ if (scrollContainer) {
56
+ scrollContainer.scrollTop = changeElement.offsetTop - 10;
57
+ }
58
+ }
59
+
60
+ // eslint-disable-next-line react-hooks/exhaustive-deps
61
+ }, [changes, currentDiffIndex]);
62
+ var lastChange = (0, _react.useCallback)(function () {
63
+ if (currentDiffIndex === 0) {
64
+ jumpToElement(changes.length - 1);
65
+ return;
66
+ }
67
+ jumpToElement(currentDiffIndex - 1);
68
+
69
+ // eslint-disable-next-line react-hooks/exhaustive-deps
70
+ }, [changes, currentDiffIndex]);
71
+ var nextChange = (0, _react.useCallback)(function () {
72
+ if (currentDiffIndex === changes.length - 1) {
73
+ jumpToElement(0);
74
+ return;
75
+ }
76
+ jumpToElement(currentDiffIndex + 1);
77
+
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ }, [changes, currentDiffIndex]);
80
+ if (!Array.isArray(changes) || changes.length === 0) {
81
+ return /*#__PURE__*/_react["default"].createElement("div", {
82
+ className: "sdoc-revision-changes-container d-flex align-items-center pl-2 pr-2 ml-4"
83
+ }, t('No_changes'));
84
+ }
85
+ var changesCount = changes.length;
86
+ return /*#__PURE__*/_react["default"].createElement("div", {
87
+ className: "sdoc-revision-changes-container d-flex align-items-center ml-4"
88
+ }, /*#__PURE__*/_react["default"].createElement("div", {
89
+ className: "sdoc-revision-changes-tip d-flex align-items-center justify-content-center pl-2 pr-2"
90
+ }, "".concat(t('Changes'), " ").concat(currentDiffIndex + 1, "/").concat(changesCount)), /*#__PURE__*/_react["default"].createElement("div", {
91
+ className: "sdoc-revision-changes-divider"
92
+ }), /*#__PURE__*/_react["default"].createElement("div", {
93
+ className: "sdoc-revision-changes-last d-flex align-items-center justify-content-center",
94
+ id: "sdoc-revision-changes-last",
95
+ onClick: lastChange
96
+ }, /*#__PURE__*/_react["default"].createElement("i", {
97
+ className: "sdocfont sdoc-next-page",
98
+ style: {
99
+ transform: 'rotate(-90deg)'
100
+ }
101
+ })), /*#__PURE__*/_react["default"].createElement("div", {
102
+ className: "sdoc-revision-changes-divider"
103
+ }), /*#__PURE__*/_react["default"].createElement("div", {
104
+ className: "sdoc-revision-changes-next d-flex align-items-center justify-content-center",
105
+ id: "sdoc-revision-changes-next",
106
+ onClick: nextChange
107
+ }, /*#__PURE__*/_react["default"].createElement("i", {
108
+ className: "sdocfont sdoc-previous-page",
109
+ style: {
110
+ transform: 'rotate(-90deg)'
111
+ }
112
+ })), /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
113
+ placement: "bottom",
114
+ target: "sdoc-revision-changes-last"
115
+ }, t('Last_modification')), /*#__PURE__*/_react["default"].createElement(_sdocEditor.Tooltip, {
116
+ placement: "bottom",
117
+ target: "sdoc-revision-changes-next"
118
+ }, t('Next_modification')));
119
+ };
120
+ var _default = exports["default"] = ChangesCount;