@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.
@@ -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')), !isPublished && /*#__PURE__*/React.createElement(TipMessage, {
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 (isPublished) return;
48
- handleRevisionPublished(true);
49
- toaster.success(t('Revision published'));
50
- }, [isPublished, handleRevisionPublished, t]);
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
- setShowTip(false);
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, handleRevisionPublished]);
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
- handleRevisionMerged && handleRevisionMerged(mergeValue);
179
+ handleRevisionPublished && handleRevisionPublished(mergeValue);
185
180
  setShowTip(false);
186
181
  }).catch(function (error) {
187
182
  toaster.danger(t('Error'));
@@ -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
- var url = "".concat(siteRoot, "lib/").concat(repoID, "/revisions/").concat(revisionId, "/");
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('revision'), " ").concat(operatingRevisionId)
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
- _context3.next = 16;
126
+ updateTagView();
127
+ _context3.next = 17;
119
128
  break;
120
- case 12:
121
- _context3.prev = 12;
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 16:
134
+ case 17:
126
135
  case "end":
127
136
  return _context3.stop();
128
137
  }
129
- }, _callee3, null, [[0, 12]]);
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
- _context4.next = 15;
186
+ updateTagView();
187
+ _context4.next = 16;
178
188
  break;
179
- case 11:
180
- _context4.prev = 11;
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 15:
194
+ case 16:
185
195
  case "end":
186
196
  return _context4.stop();
187
197
  }
188
- }, _callee4, null, [[0, 11]]);
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",
@@ -82,7 +82,6 @@ export var useDocument = function useDocument() {
82
82
  errorMessage: errorMessage,
83
83
  document: document,
84
84
  loadDocument: loadDocument,
85
- reloadDocument: reloadDocument,
86
- setErrorMessage: setErrorMessage
85
+ reloadDocument: reloadDocument
87
86
  };
88
87
  };
@@ -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 { PublishedRevisionDiffViewer, RevisionDiffViewer } from '../basic-sdk/views';
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, isPublished]);
72
- var handleRevisionMerged = useCallback(function (value) {
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
- isPublished: isPublished,
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, isPublished && /*#__PURE__*/React.createElement(PublishedRevisionDiffViewer, {
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
- }), !isPublished && isShowChanges && /*#__PURE__*/React.createElement(RevisionDiffViewer, {
90
+ }), isShowChanges && /*#__PURE__*/React.createElement(RevisionDiffViewer, {
130
91
  revisionContent: revisionContent,
131
92
  didMountCallback: setDiffChanges
132
93
  }))));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.2.23beta3",
3
+ "version": "0.2.24",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -407,6 +407,5 @@
407
407
  "No_options_available": "Tag not found",
408
408
  "Add_option": "Create a new tag",
409
409
  "Find_an_option": "Search tags",
410
- "Copy_link_of_section": "Copy link of section",
411
- "revision": "revision"
410
+ "Copy_link_of_section": "Copy link of section"
412
411
  }
@@ -407,6 +407,5 @@
407
407
  "No_options_available": "标签未找到",
408
408
  "Add_option": "新建标签",
409
409
  "Find_an_option": "查找标签",
410
- "Copy_link_of_section": "拷贝章节的链接",
411
- "revision": "修订稿"
410
+ "Copy_link_of_section": "拷贝章节的链接"
412
411
  }