@seafile/sdoc-editor 0.2.23-beta3 → 0.2.24
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/basic-sdk/constants/index.js +2 -1
- package/dist/components/doc-info/index.js +5 -5
- package/dist/components/doc-operations/index.js +1 -5
- package/dist/components/doc-operations/revision-operations/index.js +12 -17
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +2 -3
- package/dist/components/doc-operations/tag-operation/file-tag-quick-view/index.css +14 -0
- package/dist/components/doc-operations/tag-operation/file-tag-quick-view/index.js +75 -0
- package/dist/components/doc-operations/tag-operation/tag-popover/index.js +22 -12
- package/dist/hooks/use-document.js +1 -2
- package/dist/pages/published-revision-viewer.js +1 -3
- package/dist/pages/simple-editor.js +7 -46
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +1 -2
- package/public/locales/zh_CN/sdoc-editor.json +1 -2
|
@@ -6,7 +6,8 @@ export var INTERNAL_EVENT = {
|
|
|
6
6
|
INSERT_ELEMENT: 'insert_element',
|
|
7
7
|
OUTLINE_STATE_CHANGED: 'outline_state_changed',
|
|
8
8
|
RELOAD_IMAGE: 'reload_image',
|
|
9
|
-
ARTICLE_CLICK: 'hidden_comment'
|
|
9
|
+
ARTICLE_CLICK: 'hidden_comment',
|
|
10
|
+
UPDATE_TAG_VIEW: 'update_tag_view'
|
|
10
11
|
};
|
|
11
12
|
export var PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
|
|
12
13
|
|
|
@@ -7,14 +7,13 @@ import { EXTERNAL_EVENT } from '../../constants';
|
|
|
7
7
|
import { DateUtils } from '../../utils';
|
|
8
8
|
import DraftDropdown from '../draft-dropdown';
|
|
9
9
|
import RevisionAvatar from '../../assets/images/revision-avatar.png';
|
|
10
|
+
import FileTagQuickView from '../doc-operations/tag-operation/file-tag-quick-view';
|
|
10
11
|
import './index.css';
|
|
11
12
|
var DocInfo = function DocInfo(_ref) {
|
|
12
13
|
var t = _ref.t,
|
|
13
14
|
isStarred = _ref.isStarred,
|
|
14
15
|
isDraft = _ref.isDraft,
|
|
15
|
-
isEditMode = _ref.isEditMode
|
|
16
|
-
_ref$isPublished = _ref.isPublished,
|
|
17
|
-
isPublished = _ref$isPublished === void 0 ? false : _ref$isPublished;
|
|
16
|
+
isEditMode = _ref.isEditMode;
|
|
18
17
|
var onInternalLinkClick = useCallback(function () {
|
|
19
18
|
var eventBus = EventBus.getInstance();
|
|
20
19
|
eventBus.dispatch(EXTERNAL_EVENT.INTERNAL_LINK_CLICK);
|
|
@@ -39,7 +38,7 @@ var DocInfo = function DocInfo(_ref) {
|
|
|
39
38
|
className: "internal-link sdocfont sdoc-link",
|
|
40
39
|
title: t('Internal_link'),
|
|
41
40
|
onClick: onInternalLinkClick
|
|
42
|
-
})), /*#__PURE__*/React.createElement(TipMessage, {
|
|
41
|
+
})), /*#__PURE__*/React.createElement(FileTagQuickView, null), /*#__PURE__*/React.createElement(TipMessage, {
|
|
43
42
|
isEditMode: isEditMode
|
|
44
43
|
}));
|
|
45
44
|
if (!isSdocRevision) {
|
|
@@ -52,6 +51,7 @@ var DocInfo = function DocInfo(_ref) {
|
|
|
52
51
|
var revisionCreatedAt = context.getSetting('revisionCreatedAt');
|
|
53
52
|
var oldDocName = context.getSetting('originFilename');
|
|
54
53
|
var revisionId = context.getSetting('revisionId');
|
|
54
|
+
var isPublished = context.getSetting('isPublished');
|
|
55
55
|
return /*#__PURE__*/React.createElement("div", {
|
|
56
56
|
className: "sdoc-revision-info doc-info"
|
|
57
57
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -69,7 +69,7 @@ var DocInfo = function DocInfo(_ref) {
|
|
|
69
69
|
className: "sdoc-revision-order"
|
|
70
70
|
}, t('Revision') + ' ' + revisionId), isPublished && /*#__PURE__*/React.createElement("div", {
|
|
71
71
|
className: "sdoc-revision-order"
|
|
72
|
-
}, t('Published')),
|
|
72
|
+
}, t('Published')), /*#__PURE__*/React.createElement(TipMessage, {
|
|
73
73
|
isEditMode: isEditMode
|
|
74
74
|
})), /*#__PURE__*/React.createElement("div", {
|
|
75
75
|
className: "doc-state"
|
|
@@ -12,13 +12,11 @@ import { isMobile } from '../../utils';
|
|
|
12
12
|
import './style.css';
|
|
13
13
|
var DocOperations = function DocOperations(_ref) {
|
|
14
14
|
var isShowChanges = _ref.isShowChanges,
|
|
15
|
-
_ref$isPublished = _ref.isPublished,
|
|
16
|
-
isPublished = _ref$isPublished === void 0 ? false : _ref$isPublished,
|
|
17
15
|
changes = _ref.changes,
|
|
18
16
|
handleViewChangesToggle = _ref.handleViewChangesToggle,
|
|
19
|
-
handleRevisionMerged = _ref.handleRevisionMerged,
|
|
20
17
|
handleRevisionPublished = _ref.handleRevisionPublished;
|
|
21
18
|
var isSdocRevision = context.getSetting('isSdocRevision');
|
|
19
|
+
var isPublished = context.getSetting('isPublished');
|
|
22
20
|
if (isMobile) {
|
|
23
21
|
return /*#__PURE__*/React.createElement("div", {
|
|
24
22
|
className: "doc-ops"
|
|
@@ -28,10 +26,8 @@ var DocOperations = function DocOperations(_ref) {
|
|
|
28
26
|
className: "doc-ops"
|
|
29
27
|
}, /*#__PURE__*/React.createElement(RevisionOperations, {
|
|
30
28
|
isShowChanges: isShowChanges,
|
|
31
|
-
isPublished: isPublished,
|
|
32
29
|
changes: changes,
|
|
33
30
|
handleViewChangesToggle: handleViewChangesToggle,
|
|
34
|
-
handleRevisionMerged: handleRevisionMerged,
|
|
35
31
|
handleRevisionPublished: handleRevisionPublished
|
|
36
32
|
}), !isPublished && /*#__PURE__*/React.createElement(TagOperation, null), !isPublished && /*#__PURE__*/React.createElement(CommentsOperation, null), !isSdocRevision && /*#__PURE__*/React.createElement(ShareOperation, null), /*#__PURE__*/React.createElement(HistoryOperation, null), !isPublished && /*#__PURE__*/React.createElement(CollaboratorsOperation, null), !isSdocRevision && /*#__PURE__*/React.createElement(MoreOperations, null));
|
|
37
33
|
};
|
|
@@ -4,6 +4,7 @@ import { EventBus } from '../../../basic-sdk';
|
|
|
4
4
|
import { getRebase, hasConflict } from '../../../basic-sdk/utils/rebase';
|
|
5
5
|
import context from '../../../context';
|
|
6
6
|
import { EXTERNAL_EVENT, TIP_TYPE } from '../../../constants';
|
|
7
|
+
import { useDocument } from '../../../hooks/use-document';
|
|
7
8
|
import toaster from '../../toast';
|
|
8
9
|
import TipDialog from '../../tip-dialog';
|
|
9
10
|
import { useTranslation } from 'react-i18next';
|
|
@@ -12,23 +13,20 @@ import ViewChanges from './view-changes';
|
|
|
12
13
|
import MoreRevisionOperations from './more-revision-operations';
|
|
13
14
|
import Revisions from './revisions';
|
|
14
15
|
import ChangesCount from './changes-count';
|
|
15
|
-
import { useDocument } from '../../../hooks';
|
|
16
16
|
var RevisionOperations = function RevisionOperations(_ref) {
|
|
17
17
|
var isShowChanges = _ref.isShowChanges,
|
|
18
|
-
_ref$isPublished = _ref.isPublished,
|
|
19
|
-
isPublished = _ref$isPublished === void 0 ? false : _ref$isPublished,
|
|
20
18
|
changes = _ref.changes,
|
|
21
19
|
handleViewChangesToggle = _ref.handleViewChangesToggle,
|
|
22
|
-
handleRevisionMerged = _ref.handleRevisionMerged,
|
|
23
20
|
handleRevisionPublished = _ref.handleRevisionPublished;
|
|
24
21
|
var isSdocRevision = context.getSetting('isSdocRevision');
|
|
22
|
+
var isPublished = context.getSetting('isPublished');
|
|
25
23
|
var _useTranslation = useTranslation(),
|
|
26
24
|
t = _useTranslation.t;
|
|
27
25
|
var _useState = useState(false),
|
|
28
26
|
_useState2 = _slicedToArray(_useState, 2),
|
|
29
27
|
isShowTip = _useState2[0],
|
|
30
28
|
setShowTip = _useState2[1];
|
|
31
|
-
var _useState3 = useState(
|
|
29
|
+
var _useState3 = useState(false),
|
|
32
30
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
33
31
|
tipType = _useState4[0],
|
|
34
32
|
setTipType = _useState4[1];
|
|
@@ -36,18 +34,16 @@ var RevisionOperations = function RevisionOperations(_ref) {
|
|
|
36
34
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
37
35
|
mergeValue = _useState6[0],
|
|
38
36
|
setMergeValue = _useState6[1];
|
|
39
|
-
var _useDocument = useDocument(),
|
|
40
|
-
loadDocument = _useDocument.loadDocument;
|
|
41
37
|
var onDocumentReplaced = useCallback(function () {
|
|
42
38
|
if (isShowTip) return;
|
|
43
39
|
setTipType(TIP_TYPE.HAS_BEEN_REPLACED);
|
|
44
40
|
setShowTip(true);
|
|
45
41
|
}, [isShowTip]);
|
|
46
42
|
var hasPublishRevision = useCallback(function () {
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}, [
|
|
43
|
+
if (isShowTip) return;
|
|
44
|
+
setTipType(TIP_TYPE.HAS_BEEN_PUBLISHED);
|
|
45
|
+
setShowTip(true);
|
|
46
|
+
}, [isShowTip]);
|
|
51
47
|
var onDocumentRemoved = useCallback(function () {
|
|
52
48
|
if (isShowTip) return;
|
|
53
49
|
setTipType(TIP_TYPE.HAS_BEEN_REMOVED);
|
|
@@ -77,6 +73,8 @@ var RevisionOperations = function RevisionOperations(_ref) {
|
|
|
77
73
|
|
|
78
74
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
79
75
|
}, []);
|
|
76
|
+
var _useDocument = useDocument(),
|
|
77
|
+
loadDocument = _useDocument.loadDocument;
|
|
80
78
|
|
|
81
79
|
// solve show change view in revision editor
|
|
82
80
|
var onViewChangesToggle = useCallback(function (isShowChanges) {
|
|
@@ -124,10 +122,7 @@ var RevisionOperations = function RevisionOperations(_ref) {
|
|
|
124
122
|
if (canMerge && isNeedReplaceMaster) {
|
|
125
123
|
setTipType(TIP_TYPE.PUBLISHING);
|
|
126
124
|
context.publishRevision().then(function (res) {
|
|
127
|
-
|
|
128
|
-
setTipType('');
|
|
129
|
-
handleRevisionPublished(true);
|
|
130
|
-
toaster.success(t('Revision published'));
|
|
125
|
+
setTipType(TIP_TYPE.HAS_BEEN_PUBLISHED);
|
|
131
126
|
}).catch(function (error) {
|
|
132
127
|
toaster.danger(t('Error'));
|
|
133
128
|
});
|
|
@@ -150,7 +145,7 @@ var RevisionOperations = function RevisionOperations(_ref) {
|
|
|
150
145
|
}
|
|
151
146
|
toaster.danger(t('Error'));
|
|
152
147
|
});
|
|
153
|
-
}, [loadDocument, t
|
|
148
|
+
}, [loadDocument, t]);
|
|
154
149
|
|
|
155
150
|
// confirm publish
|
|
156
151
|
var onSubmit = useCallback(function () {
|
|
@@ -181,7 +176,7 @@ var RevisionOperations = function RevisionOperations(_ref) {
|
|
|
181
176
|
context.updateSettings({
|
|
182
177
|
'originFileVersion': origin_file_version
|
|
183
178
|
});
|
|
184
|
-
|
|
179
|
+
handleRevisionPublished && handleRevisionPublished(mergeValue);
|
|
185
180
|
setShowTip(false);
|
|
186
181
|
}).catch(function (error) {
|
|
187
182
|
toaster.danger(t('Error'));
|
package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js
CHANGED
|
@@ -92,8 +92,7 @@ var RevisionsDialog = function RevisionsDialog(_ref) {
|
|
|
92
92
|
var openRevision = useCallback(function (event, revisionId) {
|
|
93
93
|
eventStopPropagation(event);
|
|
94
94
|
if (event.target.className.includes('sdoc-revision-operation-toggle')) return;
|
|
95
|
-
|
|
96
|
-
window.open(url, '_blank');
|
|
95
|
+
window.location.href = "".concat(siteRoot, "lib/").concat(repoID, "/revisions/").concat(revisionId, "/");
|
|
97
96
|
|
|
98
97
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
99
98
|
}, []);
|
|
@@ -252,7 +251,7 @@ var RevisionsDialog = function RevisionsDialog(_ref) {
|
|
|
252
251
|
onClose: closeDeleteTipDialog,
|
|
253
252
|
zIndex: 1071
|
|
254
253
|
}, t(TIP_CONTENT[TIP_TYPE.DELETE_REVISION], {
|
|
255
|
-
content: "".concat(t('
|
|
254
|
+
content: "".concat(t('Revision'), " ").concat(operatingRevisionId)
|
|
256
255
|
})));
|
|
257
256
|
};
|
|
258
257
|
export default RevisionsDialog;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.sdoc-file-tag-quick-review-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
margin-left: 0.5rem;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sdoc-file-tag-quick-review-container .sdoc-review-circle {
|
|
7
|
+
display: inline-block;
|
|
8
|
+
height: 1rem;
|
|
9
|
+
width: 1rem;
|
|
10
|
+
margin-right: -0.5rem;
|
|
11
|
+
border: 0.125rem solid #fff;
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
4
|
+
import React, { useCallback, useEffect, useState, Fragment } from 'react';
|
|
5
|
+
import context from '../../../../context';
|
|
6
|
+
import Tooltip from '../../../tooltip';
|
|
7
|
+
import { EventBus } from '../../../../basic-sdk';
|
|
8
|
+
import { INTERNAL_EVENT } from '../../../../basic-sdk/constants';
|
|
9
|
+
import './index.css';
|
|
10
|
+
var FileTagQuickView = function FileTagQuickView() {
|
|
11
|
+
var _useState = useState([]),
|
|
12
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
13
|
+
fileTagList = _useState2[0],
|
|
14
|
+
setFileTagList = _useState2[1];
|
|
15
|
+
useEffect(function () {
|
|
16
|
+
getTagList();
|
|
17
|
+
var eventBus = EventBus.getInstance();
|
|
18
|
+
var unsubscribe = eventBus.subscribe(INTERNAL_EVENT.UPDATE_TAG_VIEW, getTagList);
|
|
19
|
+
return function () {
|
|
20
|
+
unsubscribe();
|
|
21
|
+
};
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
23
|
+
}, []);
|
|
24
|
+
var getTagList = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
25
|
+
var _yield$context$getFil, file_tags;
|
|
26
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
27
|
+
while (1) switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
_context.prev = 0;
|
|
30
|
+
_context.next = 3;
|
|
31
|
+
return context.getFileTagList();
|
|
32
|
+
case 3:
|
|
33
|
+
_yield$context$getFil = _context.sent;
|
|
34
|
+
file_tags = _yield$context$getFil.data.file_tags;
|
|
35
|
+
setFileTagList(file_tags);
|
|
36
|
+
_context.next = 11;
|
|
37
|
+
break;
|
|
38
|
+
case 8:
|
|
39
|
+
_context.prev = 8;
|
|
40
|
+
_context.t0 = _context["catch"](0);
|
|
41
|
+
return _context.abrupt("return", null);
|
|
42
|
+
case 11:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee, null, [[0, 8]]);
|
|
47
|
+
})), []);
|
|
48
|
+
|
|
49
|
+
// Render nothing if there is no tag
|
|
50
|
+
if (fileTagList.length === 0) return null;
|
|
51
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
52
|
+
className: "sdoc-file-tag-quick-review-container"
|
|
53
|
+
}, fileTagList.map(function (tag, index) {
|
|
54
|
+
var file_tag_id = tag.file_tag_id,
|
|
55
|
+
tag_color = tag.tag_color,
|
|
56
|
+
tag_name = tag.tag_name;
|
|
57
|
+
// Id cannot start with number
|
|
58
|
+
var tagId = "tag".concat(file_tag_id);
|
|
59
|
+
var tagZindex = fileTagList.length - index;
|
|
60
|
+
return /*#__PURE__*/React.createElement(Fragment, {
|
|
61
|
+
key: tagId
|
|
62
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
63
|
+
id: tagId,
|
|
64
|
+
style: {
|
|
65
|
+
backgroundColor: tag_color,
|
|
66
|
+
zIndex: tagZindex
|
|
67
|
+
},
|
|
68
|
+
className: "sdoc-review-circle"
|
|
69
|
+
}), /*#__PURE__*/React.createElement(Tooltip, {
|
|
70
|
+
className: 'tag-tooltip',
|
|
71
|
+
target: tagId
|
|
72
|
+
}, tag_name));
|
|
73
|
+
}));
|
|
74
|
+
};
|
|
75
|
+
export default FileTagQuickView;
|
|
@@ -8,6 +8,8 @@ import context from '../../../../context';
|
|
|
8
8
|
import { getErrorMsg } from '../../../../utils';
|
|
9
9
|
import toaster from '../../../toast';
|
|
10
10
|
import { generateTagColor, removeForwardSpace } from '../utils';
|
|
11
|
+
import { EventBus } from '../../../../basic-sdk';
|
|
12
|
+
import { INTERNAL_EVENT } from '../../../../basic-sdk/constants';
|
|
11
13
|
import './index.css';
|
|
12
14
|
var TagPopover = function TagPopover() {
|
|
13
15
|
var _useState = useState(''),
|
|
@@ -21,6 +23,12 @@ var TagPopover = function TagPopover() {
|
|
|
21
23
|
var tagListRef = useRef([]);
|
|
22
24
|
var _useTranslation = useTranslation(),
|
|
23
25
|
t = _useTranslation.t;
|
|
26
|
+
|
|
27
|
+
// Update tag view when tag is added or removed
|
|
28
|
+
var updateTagView = useCallback(function () {
|
|
29
|
+
var eventBus = EventBus.getInstance();
|
|
30
|
+
eventBus.dispatch(INTERNAL_EVENT.UPDATE_TAG_VIEW);
|
|
31
|
+
}, []);
|
|
24
32
|
var isShowCreateTag = useMemo(function () {
|
|
25
33
|
var isInputTag = !!searchContent.length;
|
|
26
34
|
var isMathExistTag = tagList.some(function (item) {
|
|
@@ -115,19 +123,20 @@ var TagPopover = function TagPopover() {
|
|
|
115
123
|
case 8:
|
|
116
124
|
getTagList();
|
|
117
125
|
setSearchContent('');
|
|
118
|
-
|
|
126
|
+
updateTagView();
|
|
127
|
+
_context3.next = 17;
|
|
119
128
|
break;
|
|
120
|
-
case
|
|
121
|
-
_context3.prev =
|
|
129
|
+
case 13:
|
|
130
|
+
_context3.prev = 13;
|
|
122
131
|
_context3.t0 = _context3["catch"](0);
|
|
123
132
|
errorMessage = getErrorMsg(_context3.t0);
|
|
124
133
|
toaster.danger(t(errorMessage));
|
|
125
|
-
case
|
|
134
|
+
case 17:
|
|
126
135
|
case "end":
|
|
127
136
|
return _context3.stop();
|
|
128
137
|
}
|
|
129
|
-
}, _callee3, null, [[0,
|
|
130
|
-
})), [getTagList, searchContent, t]);
|
|
138
|
+
}, _callee3, null, [[0, 13]]);
|
|
139
|
+
})), [getTagList, searchContent, updateTagView, t]);
|
|
131
140
|
var matchTag = useCallback(function (matchText) {
|
|
132
141
|
if (matchText.length) {
|
|
133
142
|
var filterTagList = tagListRef.current.filter(function (_ref4) {
|
|
@@ -174,23 +183,24 @@ var TagPopover = function TagPopover() {
|
|
|
174
183
|
return context.addFileTag(repoTagID);
|
|
175
184
|
case 8:
|
|
176
185
|
getTagList();
|
|
177
|
-
|
|
186
|
+
updateTagView();
|
|
187
|
+
_context4.next = 16;
|
|
178
188
|
break;
|
|
179
|
-
case
|
|
180
|
-
_context4.prev =
|
|
189
|
+
case 12:
|
|
190
|
+
_context4.prev = 12;
|
|
181
191
|
_context4.t0 = _context4["catch"](0);
|
|
182
192
|
errorMessage = getErrorMsg(_context4.t0);
|
|
183
193
|
toaster.danger(t(errorMessage));
|
|
184
|
-
case
|
|
194
|
+
case 16:
|
|
185
195
|
case "end":
|
|
186
196
|
return _context4.stop();
|
|
187
197
|
}
|
|
188
|
-
}, _callee4, null, [[0,
|
|
198
|
+
}, _callee4, null, [[0, 12]]);
|
|
189
199
|
}));
|
|
190
200
|
return function (_x, _x2) {
|
|
191
201
|
return _ref5.apply(this, arguments);
|
|
192
202
|
};
|
|
193
|
-
}(), [getTagList, t]);
|
|
203
|
+
}(), [getTagList, updateTagView, t]);
|
|
194
204
|
return /*#__PURE__*/React.createElement(UncontrolledPopover, {
|
|
195
205
|
target: "tag-operation-icon-container",
|
|
196
206
|
placement: "bottom-end",
|
|
@@ -78,12 +78,10 @@ var PublishedRevisionViewer = function PublishedRevisionViewer() {
|
|
|
78
78
|
}, t(errorMessage)));
|
|
79
79
|
}
|
|
80
80
|
return /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(Layout, null, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(DocInfo, {
|
|
81
|
-
isEditMode: false
|
|
82
|
-
isPublished: true
|
|
81
|
+
isEditMode: false
|
|
83
82
|
}), /*#__PURE__*/React.createElement(DocOperations, {
|
|
84
83
|
isShowChanges: isShowChanges,
|
|
85
84
|
changes: changes,
|
|
86
|
-
isPublished: true,
|
|
87
85
|
handleViewChangesToggle: handleViewChangesToggle
|
|
88
86
|
})), /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(PublishedRevisionDiffViewer, {
|
|
89
87
|
isShowChanges: isShowChanges,
|
|
@@ -8,7 +8,7 @@ import Layout, { Header, Content } from '../layout';
|
|
|
8
8
|
import context from '../context';
|
|
9
9
|
import ErrorBoundary from './error-boundary';
|
|
10
10
|
import { SDocEditor } from '../basic-sdk';
|
|
11
|
-
import {
|
|
11
|
+
import { RevisionDiffViewer } from '../basic-sdk/views';
|
|
12
12
|
import { useDocument } from '../hooks';
|
|
13
13
|
import { resetWebTitleAndURL } from '../utils';
|
|
14
14
|
import '../assets/css/simple-editor.css';
|
|
@@ -23,8 +23,7 @@ var SimpleEditor = function SimpleEditor(_ref) {
|
|
|
23
23
|
isReloading = _useDocument.isReloading,
|
|
24
24
|
errorMessage = _useDocument.errorMessage,
|
|
25
25
|
document = _useDocument.document,
|
|
26
|
-
reloadDocument = _useDocument.reloadDocument
|
|
27
|
-
setErrorMessage = _useDocument.setErrorMessage;
|
|
26
|
+
reloadDocument = _useDocument.reloadDocument;
|
|
28
27
|
var _useState = useState(false),
|
|
29
28
|
_useState2 = _slicedToArray(_useState, 2),
|
|
30
29
|
isShowChanges = _useState2[0],
|
|
@@ -37,11 +36,6 @@ var SimpleEditor = function SimpleEditor(_ref) {
|
|
|
37
36
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
38
37
|
changes = _useState6[0],
|
|
39
38
|
setChanges = _useState6[1];
|
|
40
|
-
var initIsPublished = context.getSetting('isPublished');
|
|
41
|
-
var _useState7 = useState(initIsPublished),
|
|
42
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
43
|
-
isPublished = _useState8[0],
|
|
44
|
-
setPublished = _useState8[1];
|
|
45
39
|
|
|
46
40
|
// useMount: reset title
|
|
47
41
|
useEffect(function () {
|
|
@@ -53,10 +47,6 @@ var SimpleEditor = function SimpleEditor(_ref) {
|
|
|
53
47
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
54
48
|
}, [isShowChanges]);
|
|
55
49
|
var handleViewChangesToggle = useCallback(function (isShowChanges) {
|
|
56
|
-
if (isPublished) {
|
|
57
|
-
setShowChanges(isShowChanges);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
50
|
if (!isShowChanges) {
|
|
61
51
|
setShowChanges(isShowChanges);
|
|
62
52
|
reloadDocument();
|
|
@@ -68,34 +58,12 @@ var SimpleEditor = function SimpleEditor(_ref) {
|
|
|
68
58
|
setRevisionContent(revisionContent);
|
|
69
59
|
setShowChanges(isShowChanges);
|
|
70
60
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
|
-
}, [document, editorRef.current
|
|
72
|
-
var
|
|
61
|
+
}, [document, editorRef.current]);
|
|
62
|
+
var handleRevisionPublished = useCallback(function (value) {
|
|
73
63
|
setShowChanges(false);
|
|
74
64
|
editorRef.current.setSlateValue(value);
|
|
75
65
|
editorRef.current.updateDocumentVersion(value);
|
|
76
66
|
}, []);
|
|
77
|
-
var handleRevisionPublished = useCallback(function () {
|
|
78
|
-
context.getPublishedRevisionContent().then(function (res) {
|
|
79
|
-
var revisionContentString = res.data.content;
|
|
80
|
-
var document = JSON.parse(revisionContentString);
|
|
81
|
-
setRevisionContent(document);
|
|
82
|
-
setPublished(true);
|
|
83
|
-
context.settings['isPublished'] = true;
|
|
84
|
-
}).catch(function (error) {
|
|
85
|
-
// eslint-disable-next-line
|
|
86
|
-
console.log(error);
|
|
87
|
-
var errorMessage = 'Load_doc_content_error';
|
|
88
|
-
if (error && error.response) {
|
|
89
|
-
var _ref2 = error.response.data || {},
|
|
90
|
-
error_type = _ref2.error_type;
|
|
91
|
-
if (error_type === 'content_invalid') {
|
|
92
|
-
errorMessage = 'Sdoc_format_invalid';
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
setErrorMessage(errorMessage);
|
|
96
|
-
setPublished(true);
|
|
97
|
-
});
|
|
98
|
-
}, [setErrorMessage]);
|
|
99
67
|
if (isFirstLoading) {
|
|
100
68
|
return /*#__PURE__*/React.createElement(Loading, null);
|
|
101
69
|
}
|
|
@@ -109,24 +77,17 @@ var SimpleEditor = function SimpleEditor(_ref) {
|
|
|
109
77
|
return /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(Layout, null, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(DocInfo, {
|
|
110
78
|
isStarred: isStarred,
|
|
111
79
|
isDraft: isDraft,
|
|
112
|
-
|
|
113
|
-
isEditMode: isPublished ? false : !isShowChanges
|
|
80
|
+
isEditMode: !isShowChanges
|
|
114
81
|
}), /*#__PURE__*/React.createElement(DocOperations, {
|
|
115
82
|
isShowChanges: isShowChanges,
|
|
116
|
-
isPublished: isPublished,
|
|
117
83
|
changes: changes,
|
|
118
84
|
handleViewChangesToggle: handleViewChangesToggle,
|
|
119
|
-
handleRevisionMerged: handleRevisionMerged,
|
|
120
85
|
handleRevisionPublished: handleRevisionPublished
|
|
121
|
-
})), /*#__PURE__*/React.createElement(Content, null,
|
|
122
|
-
isShowChanges: isShowChanges,
|
|
123
|
-
revisionContent: revisionContent,
|
|
124
|
-
didMountCallback: setDiffChanges
|
|
125
|
-
}), !isPublished && !isShowChanges && /*#__PURE__*/React.createElement(SDocEditor, {
|
|
86
|
+
})), /*#__PURE__*/React.createElement(Content, null, !isShowChanges && /*#__PURE__*/React.createElement(SDocEditor, {
|
|
126
87
|
ref: editorRef,
|
|
127
88
|
isReloading: isReloading,
|
|
128
89
|
document: document
|
|
129
|
-
}),
|
|
90
|
+
}), isShowChanges && /*#__PURE__*/React.createElement(RevisionDiffViewer, {
|
|
130
91
|
revisionContent: revisionContent,
|
|
131
92
|
didMountCallback: setDiffChanges
|
|
132
93
|
}))));
|
package/package.json
CHANGED