@seafile/sdoc-editor 2.0.7 → 2.0.8-alpha.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 (45) hide show
  1. package/dist/basic-sdk/assets/css/dropdown-menu.css +14 -1
  2. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  3. package/dist/basic-sdk/extension/constants/index.js +8 -6
  4. package/dist/basic-sdk/extension/constants/menus-config.js +20 -0
  5. package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.css +21 -0
  6. package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.js +66 -0
  7. package/dist/basic-sdk/extension/plugins/chart/helpers.js +106 -0
  8. package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.css +55 -0
  9. package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.js +58 -0
  10. package/dist/basic-sdk/extension/plugins/chart/index.js +19 -0
  11. package/dist/basic-sdk/extension/plugins/chart/menu/index.js +31 -0
  12. package/dist/basic-sdk/extension/plugins/chart/plugin.js +26 -0
  13. package/dist/basic-sdk/extension/plugins/chart/render-elem.css +61 -0
  14. package/dist/basic-sdk/extension/plugins/chart/render-elem.js +155 -0
  15. package/dist/basic-sdk/extension/plugins/index.js +8 -1
  16. package/dist/basic-sdk/extension/plugins/multi-column/constants/index.js +1 -1
  17. package/dist/basic-sdk/extension/plugins/multi-column/helper.js +24 -7
  18. package/dist/basic-sdk/extension/plugins/multi-column/render/index.css +1 -3
  19. package/dist/basic-sdk/extension/plugins/multi-column/render/index.js +7 -2
  20. package/dist/basic-sdk/extension/plugins/multi-column/resize-handlers/index.js +2 -2
  21. package/dist/basic-sdk/extension/plugins/seatable-tables/menu/seatable-list.js +35 -2
  22. package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.css +19 -4
  23. package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.js +39 -9
  24. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/seatable-table.js +2 -1
  25. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-popover.js +2 -4
  26. package/dist/basic-sdk/extension/plugins/table/helpers.js +1 -0
  27. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +2 -1
  28. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  29. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +2 -1
  30. package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +7 -0
  31. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +51 -1
  32. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +116 -20
  33. package/dist/basic-sdk/utils/full-width-mode.js +1 -1
  34. package/dist/pages/document-plugin-editor.js +2 -0
  35. package/package.json +2 -1
  36. package/public/locales/cs/sdoc-editor.json +5 -1
  37. package/public/locales/de/sdoc-editor.json +64 -60
  38. package/public/locales/en/sdoc-editor.json +5 -1
  39. package/public/locales/es/sdoc-editor.json +5 -1
  40. package/public/locales/es_AR/sdoc-editor.json +5 -1
  41. package/public/locales/es_MX/sdoc-editor.json +5 -1
  42. package/public/locales/fr/sdoc-editor.json +238 -234
  43. package/public/locales/it/sdoc-editor.json +5 -1
  44. package/public/locales/ru/sdoc-editor.json +6 -2
  45. package/public/locales/zh_CN/sdoc-editor.json +4 -1
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.setSelection = exports.onWrapMultiListItemToNonListTypeTarget = exports.onWrapMultiListItem = exports.onWrapListItem = exports.onSetNodeType = exports.onDeleteNode = exports.onCopyNode = exports.normalizeCopyData = exports.isVoidNode = exports.isNotSupportTransform = exports.isMultiColumn = exports.isListItem = exports.isList = exports.isInMultiColumnNode = exports.isBlockquote = exports.insertEmptyListNodeAtTarget = exports.insertElement = exports.getTransformMenusConfig = exports.getTopValue = exports.getSearchedOperations = exports.getNodeEntry = exports.getListNode = exports.deleteNodesFromBack = exports.createDragPreviewContainer = void 0;
7
+ exports.setSelection = exports.onWrapMultiListItemToNonListTypeTarget = exports.onWrapMultiListItem = exports.onWrapListItemFromMultiColumn = exports.onWrapListItem = exports.onSetNodeType = exports.onDeleteNode = exports.onCopyNode = exports.normalizeCopyData = exports.isVoidNode = exports.isNotSupportTransform = exports.isMultiColumn = exports.isListItem = exports.isList = exports.isInMultiColumnNode = exports.isBlockquote = exports.insertEmptyListNodeAtTarget = exports.insertElement = exports.getTransformMenusConfig = exports.getTopValue = exports.getSearchedOperations = exports.getNodeEntry = exports.getListNodeFromMultiColumn = exports.getListNode = exports.deleteNodesFromBack = exports.createDragPreviewContainer = void 0;
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slugid = _interopRequireDefault(require("slugid"));
10
10
  var _slateReact = require("@seafile/slate-react");
@@ -20,6 +20,7 @@ var _helpers2 = require("../../plugins/check-list/helpers");
20
20
  var _constants3 = require("../../../constants");
21
21
  var _helpers3 = require("../../../node-id/helpers");
22
22
  var _documentUtils = require("../../../utils/document-utils");
23
+ var _helper2 = require("../../plugins/multi-column/helper");
23
24
  const onSetNodeType = (editor, element, type) => {
24
25
  if (!type) return;
25
26
  if (type === _constants.CALL_OUT) {
@@ -53,6 +54,32 @@ const onSetNodeType = (editor, element, type) => {
53
54
  });
54
55
  return;
55
56
  }
57
+
58
+ // Transform to multi_column and put content into first column
59
+ if (_constants.MULTI_COLUMN_TYPE.includes(type)) {
60
+ const path = (0, _core.findPath)(editor, element);
61
+ const multiColumnNode = (0, _helper2.generateEmptyMultiColumn)(editor, type);
62
+ _slate.Transforms.insertNodes(editor, multiColumnNode, {
63
+ at: [path[0] + 1]
64
+ });
65
+ const nodeIndex = path[0];
66
+ const highestNode = editor.children[nodeIndex];
67
+ if (path.length > 1 && [_constants.BLOCKQUOTE, _constants.ORDERED_LIST, _constants.UNORDERED_LIST, _constants.CODE_BLOCK].includes(highestNode.type)) {
68
+ _slate.Transforms.moveNodes(editor, {
69
+ at: [path[0]],
70
+ to: [path[0] + 1, 0, 0]
71
+ });
72
+ } else {
73
+ _slate.Transforms.moveNodes(editor, {
74
+ at: path,
75
+ to: [path[0] + 1, 0, 0]
76
+ });
77
+ }
78
+ _slate.Transforms.removeNodes(editor, {
79
+ at: [path[0], 0, 1]
80
+ });
81
+ return;
82
+ }
56
83
  _slate.Transforms.setNodes(editor, {
57
84
  type: type
58
85
  });
@@ -220,6 +247,25 @@ const getListNode = (editor, path) => {
220
247
  return listNode;
221
248
  };
222
249
  exports.getListNode = getListNode;
250
+ const getListNodeFromMultiColumn = (editor, path) => {
251
+ let listType = _slate.Editor.node(editor, path.slice(0, 3))[0].type;
252
+ const listItem = _slate.Editor.node(editor, path)[0];
253
+ const listNode = (0, _model.generateEmptyList)(listType);
254
+ listNode.children[0] = listItem;
255
+ return listNode;
256
+ };
257
+ exports.getListNodeFromMultiColumn = getListNodeFromMultiColumn;
258
+ const onWrapListItemFromMultiColumn = (editor, targetPath, sourcePath) => {
259
+ const nextPath = _slate.Path.next(targetPath);
260
+ const listNode = getListNodeFromMultiColumn(editor, sourcePath.slice(0, 4));
261
+ _slate.Transforms.removeNodes(editor, {
262
+ at: sourcePath.slice(0, 4)
263
+ });
264
+ _slate.Transforms.insertNodes(editor, listNode, {
265
+ at: nextPath
266
+ });
267
+ };
268
+ exports.onWrapListItemFromMultiColumn = onWrapListItemFromMultiColumn;
223
269
  const onWrapListItem = (editor, targetPath, sourcePath) => {
224
270
  const nextPath = _slate.Path.next(targetPath);
225
271
  const listNode = getListNode(editor, sourcePath);
@@ -274,6 +320,10 @@ const getTransformMenusConfig = (editor, slateNode) => {
274
320
  if (highestNode.type === _constants.BLOCKQUOTE) {
275
321
  newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.CALL_OUT);
276
322
  }
323
+ // Element in Multi_column can not be converted to multi_column type
324
+ if (highestNode.type === _constants.MULTI_COLUMN) {
325
+ newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => !_constants.MULTI_COLUMN_TYPE.includes(item.type));
326
+ }
277
327
  }
278
328
 
279
329
  // headers can't be nested by quote block
@@ -20,6 +20,7 @@ var _constants = require("../../../constants");
20
20
  var _constants2 = require("../../constants");
21
21
  var _helper = require("../../plugins/callout/helper");
22
22
  var _event = require("./event");
23
+ var _helper2 = require("../../plugins/multi-column/helper");
23
24
  require("./index.css");
24
25
  let sourceElement = null;
25
26
  let targetElement = null;
@@ -88,6 +89,9 @@ const SideToolbar = () => {
88
89
  let dom = e.target;
89
90
  while (((_dom = dom) === null || _dom === void 0 ? void 0 : (_dom$dataset = _dom.dataset) === null || _dom$dataset === void 0 ? void 0 : _dom$dataset.root) !== 'true') {
90
91
  var _dom, _dom$dataset;
92
+ if (dom.className === 'column') {
93
+ return;
94
+ }
91
95
  if (!dom.parentNode) return;
92
96
  dom = dom.parentNode;
93
97
  }
@@ -106,6 +110,20 @@ const SideToolbar = () => {
106
110
  } = document.querySelector('.sdoc-editor-container').getBoundingClientRect();
107
111
  left = editorLeft - containerLeft - 40;
108
112
  }
113
+ const path = (0, _core.findPath)(editor, node);
114
+ // Add side-tool-bar for paragraphs in multi_column
115
+ if (path.length > 2 && (0, _helpers.isInMultiColumnNode)(editor, node)) {
116
+ let domLeft;
117
+ domLeft = document.querySelector(`[data-id="${dom.dataset.id}"]`) && document.querySelector(`[data-id="${dom.dataset.id}"]`).getBoundingClientRect().left;
118
+ const parentNode = _slate.Editor.node(editor, path.slice(0, 3))[0];
119
+ if ([_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST, _constants2.BLOCKQUOTE].includes(parentNode.type)) {
120
+ domLeft = document.querySelector(`[data-id="${parentNode.id}"]`) && document.querySelector(`[data-id="${parentNode.id}"]`).getBoundingClientRect().left;
121
+ }
122
+ const {
123
+ left: containerLeft
124
+ } = document.querySelector('.sdoc-editor__article').getBoundingClientRect();
125
+ left = domLeft - containerLeft - 41;
126
+ }
109
127
  setTimeout(() => {
110
128
  // wait animation
111
129
  setSidePosition({
@@ -247,6 +265,7 @@ const SideToolbar = () => {
247
265
  leaveElement.classList.remove('sdoc-draging');
248
266
  }, []);
249
267
  const drop = (0, _react.useCallback)(event => {
268
+ var _parentNode$children$;
250
269
  targetElement = event.currentTarget;
251
270
  targetElement.classList.remove('sdoc-draging');
252
271
  const dragTypes = event.dataTransfer.types;
@@ -326,11 +345,17 @@ const SideToolbar = () => {
326
345
  return;
327
346
  }
328
347
 
329
- // Drag into callout is not supported
348
+ // Dragging into callout is not supported
330
349
  if ([_constants2.CALL_OUT, _constants2.CODE_BLOCK, _constants2.TABLE].includes(sourceNode.type) && (0, _helper.getCalloutEntry)(editor, targetPath)) {
331
350
  return;
332
351
  }
333
352
 
353
+ // Dragging multi_column's child into multi_column is not supported
354
+ const isInMultiColumn = (0, _helpers.isInMultiColumnNode)(editor, sourceNode);
355
+ if (isInMultiColumn && (0, _helpers.isMultiColumn)(editor, [targetPath[0]])) {
356
+ return;
357
+ }
358
+
334
359
  // Drag list
335
360
  if ((0, _helpers.isList)(editor, sourcePath)) {
336
361
  // ordinary list items
@@ -380,32 +405,103 @@ const SideToolbar = () => {
380
405
  }
381
406
  }
382
407
 
383
- // Drag backward
384
- if (_slate.Path.isAfter(targetPath, sourcePath)) {
385
- let toPath = targetPath.slice(0);
408
+ // Dragging element from multi_column to other nodes
409
+ const currentSourceNode = _slate.Editor.node(editor, sourcePath.slice(0, 3))[0];
410
+ if (isInMultiColumn && sourceNode.type === _constants2.PARAGRAPH) {
411
+ // Dragging list
412
+ if ([_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST].includes(currentSourceNode.type)) {
413
+ // Drag ordinary list items to places other than list and quoteBlock
414
+ if (!(0, _helpers.isList)(editor, targetPath) && !(0, _helpers.isBlockquote)(editor, [targetPath[0]])) {
415
+ (0, _helpers.onWrapListItemFromMultiColumn)(editor, targetPath, sourcePath);
416
+ }
417
+
418
+ // Drag ordinary list items to list
419
+ if ((0, _helpers.isList)(editor, targetPath)) {
420
+ _slate.Transforms.moveNodes(editor, {
421
+ at: sourcePath.slice(0, 4),
422
+ to: _slate.Path.next(targetPath)
423
+ });
424
+ }
386
425
 
387
- // Drag elements outside the quoteBlock into the quoteBlock
388
- if (!(0, _helpers.isBlockquote)(editor, [sourcePath[0]]) && (0, _helpers.isBlockquote)(editor, [targetPath[0]]) && targetPath.length > 1) {
389
- toPath = _slate.Path.next(targetPath);
426
+ // Drag ordinary list items into the quoteBlock
427
+ if ((0, _helpers.isBlockquote)(editor, [targetPath[0]])) {
428
+ // Drag and drop ordinary list items onto the list within the quoteBlock
429
+ if ((0, _helpers.isList)(editor, targetPath)) {
430
+ _slate.Transforms.moveNodes(editor, {
431
+ at: sourcePath.slice(0, 4),
432
+ to: _slate.Path.next(targetPath)
433
+ });
434
+ } else {
435
+ (0, _helpers.onWrapListItemFromMultiColumn)(editor, targetPath, sourcePath);
436
+ }
437
+ }
390
438
  }
391
439
 
392
- // Drag into list
393
- if ((0, _helpers.isList)(editor, targetPath)) {
394
- toPath = _slate.Path.next(targetPath);
440
+ // Dragging quoteBlock's children element from multi_column is not supported
441
+ if (currentSourceNode.type === _constants2.BLOCKQUOTE) {
442
+ return;
395
443
  }
396
- _slate.Transforms.moveNodes(editor, {
397
- at: sourcePath,
398
- to: toPath
399
- });
400
444
  }
401
445
 
402
- // Drag forward
446
+ // Handling drag situations including non-multi_column or non-list item dragged from multiColumn
447
+ if (!isInMultiColumn || isInMultiColumn && ![_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST].includes(currentSourceNode.type)) {
448
+ // Drag backward
449
+ if (_slate.Path.isAfter(targetPath, sourcePath)) {
450
+ let toPath = targetPath.slice(0);
451
+
452
+ // Drag elements outside the quoteBlock into the quoteBlock
453
+ if (!(0, _helpers.isBlockquote)(editor, [sourcePath[0]]) && (0, _helpers.isBlockquote)(editor, [targetPath[0]]) && targetPath.length > 1) {
454
+ toPath = _slate.Path.next(targetPath);
455
+ }
456
+
457
+ // Drag into list
458
+ if ((0, _helpers.isList)(editor, targetPath)) {
459
+ toPath = _slate.Path.next(targetPath);
460
+ }
461
+ _slate.Transforms.moveNodes(editor, {
462
+ at: sourcePath,
463
+ to: toPath
464
+ });
465
+ }
466
+
467
+ // Drag forward
468
+ if (_slate.Path.isBefore(targetPath, sourcePath)) {
469
+ const toPath = _slate.Path.next(targetPath);
470
+ _slate.Transforms.moveNodes(editor, {
471
+ at: sourcePath,
472
+ to: toPath
473
+ });
474
+ }
475
+ }
476
+ let selectedSourcePath = sourcePath;
477
+ // Handling drag forward situation for multi_column update
403
478
  if (_slate.Path.isBefore(targetPath, sourcePath)) {
404
- const toPath = _slate.Path.next(targetPath);
405
- _slate.Transforms.moveNodes(editor, {
406
- at: sourcePath,
407
- to: toPath
408
- });
479
+ const targetNode = _slate.Editor.node(editor, [targetPath[0]])[0];
480
+ if (![_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST].includes(targetNode.type)) {
481
+ selectedSourcePath[0] += 1;
482
+ }
483
+ }
484
+
485
+ // Dragging childNodes from multi_column
486
+ const nodeIndex = selectedSourcePath[0];
487
+ const highestNode = editor.children[nodeIndex];
488
+ const [parentNode] = _slate.Editor.parent(editor, selectedSourcePath.slice(0, 3));
489
+ if (selectedSourcePath.length > 1 && highestNode.type === _constants2.MULTI_COLUMN && !((_parentNode$children$ = parentNode.children[0]) !== null && _parentNode$children$ !== void 0 && _parentNode$children$.type)) {
490
+ if (highestNode.children.length <= 2) {
491
+ _slate.Transforms.removeNodes(editor, {
492
+ at: selectedSourcePath.slice(0, 2)
493
+ });
494
+ _slate.Transforms.unwrapNodes(editor, {
495
+ at: [selectedSourcePath[0]]
496
+ });
497
+ } else {
498
+ const topNodesColumnAttribute = highestNode.column;
499
+ _slate.Transforms.removeNodes(editor, {
500
+ at: selectedSourcePath.slice(0, 2)
501
+ });
502
+ const isDragged = true;
503
+ (0, _helper2.updateColumnWidthOnDeletion)(editor, selectedSourcePath, topNodesColumnAttribute, 'deleteBackward', isDragged);
504
+ }
409
505
  }
410
506
 
411
507
  // reset
@@ -17,7 +17,7 @@ const getStyleByFullWidthMode = (scrollRef, editor) => {
17
17
  containerStyle['minWidth'] = _constants.ARTICLE_FULL_MIN_WIDTH;
18
18
 
19
19
  // Has outline
20
- if (isShowOutline && editor.editorType !== _constants.WIKI_EDITOR) {
20
+ if (isShowOutline && (editor === null || editor === void 0 ? void 0 : editor.editorType) !== _constants.WIKI_EDITOR) {
21
21
  containerStyle['marginLeft'] = `${_constants.LEFT_OUTLINE_WIDTH}px`;
22
22
  const adjustWidth = ` - ${_constants.LEFT_OUTLINE_WIDTH - 50}px`; // One side is 50
23
23
  containerStyle['width'] = containerStyle['width'].slice(0, -1) + adjustWidth;
@@ -34,6 +34,7 @@ const DocumentPluginEditor = _ref => {
34
34
  collaborators,
35
35
  formulaRows,
36
36
  getTableFormulaResults,
37
+ getViewRows,
37
38
  getArticleStyle
38
39
  } = _ref;
39
40
  _context.default.initApi();
@@ -66,6 +67,7 @@ const DocumentPluginEditor = _ref => {
66
67
  newEditor.collaborators = collaborators;
67
68
  newEditor.formulaRows = formulaRows;
68
69
  newEditor.getTableFormulaResults = getTableFormulaResults;
70
+ newEditor.getViewRows = getViewRows;
69
71
  newEditor.cursors = cursors || {};
70
72
  newEditor.width = _constants.PAGE_EDIT_AREA_WIDTH; // default width
71
73
  newEditor.editorType = _constants.DOCUMENT_PLUGIN_EDITOR;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.7",
3
+ "version": "2.0.8-alpha.0",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -38,6 +38,7 @@
38
38
  "remark-parse": "11.0.0",
39
39
  "remark-rehype": "11.0.0",
40
40
  "remark-stringify": "11.0.0",
41
+ "sea-chart": "~1.1.63-alpha.14",
41
42
  "slugid": "3.2.0",
42
43
  "socket.io-client": "4.8.1",
43
44
  "type-of": "2.0.1",
@@ -613,5 +613,9 @@
613
613
  "Support_Youtube_Tencent_Bilibili_and_more": "Support Youtube, Tencent, Bilibili and more",
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
615
  "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
- "Image_copy_error": "Image copy error"
616
+ "Image_copy_error": "Image copy error",
617
+ "Image_is_uploading": "Image is uploading...",
618
+ "Insert_chart": "Insert chart",
619
+ "Edit_chart": "Edit chart",
620
+ "Please_complete_the_chart_configuration_first": "Please complete the chart configuration first"
617
621
  }
@@ -66,15 +66,15 @@
66
66
  "Password_again": "Passwort erneut eingeben",
67
67
  "Add_auto_expiration": "Befristung hinzufügen",
68
68
  "Days": "Tage",
69
- "Please_enter_password": "Bitte geben Sie ein Passwort ein",
69
+ "Please_enter_password": "Geben Sie ein Passwort ein",
70
70
  "Greater_than_or_equal_to": "Größer oder gleich",
71
71
  "Less_than_or_equal_to": "Weniger oder gleich",
72
72
  "Set_permission": "Berechtigung festlegen",
73
73
  "Preview_and_download": "Vorschau und Herunterladen",
74
74
  "Preview_only": "Nur Vorschau erlaubt",
75
- "Please_enter_valid_days": "Bitte geben Sie eine gültige Anzahl von Tagen ein",
76
- "Please_enter_a_non-negative_integer": "Bitte geben Sie eine Zahl größer oder gleich Null ein",
77
- "Please_enter_days": "Bitte geben Sie Tage ein",
75
+ "Please_enter_valid_days": "Geben Sie eine gültige Anzahl von Tagen ein",
76
+ "Please_enter_a_non-negative_integer": "Geben Sie eine Zahl größer oder gleich Null ein",
77
+ "Please_enter_days": "Geben Sie Tage ein",
78
78
  "Password_is_too_short": "Das Passwort ist zu kurz",
79
79
  "Passwords_do_not_match": "Passwörter stimmen nicht überein",
80
80
  "Return_to_wiki_page": "Zurück zur Wiki-Seite",
@@ -83,7 +83,7 @@
83
83
  "Add_link": "Link hinzufügen",
84
84
  "File_history": "Dateiversionen",
85
85
  "History_version": "Versionen",
86
- "Back_to_viewer": "Back to viewer",
86
+ "Back_to_viewer": "Zurück zur Vorschau",
87
87
  "Link_title": "Linktext",
88
88
  "Local_draft": "Lokaler Entwurf",
89
89
  "Use_draft": "Entwurf verwenden",
@@ -247,7 +247,7 @@
247
247
  "Server_is_disconnected_Reconnecting": "Der Server ist nicht verbunden. Verbindungsversuch läuft.",
248
248
  "Server_is_reconnected": "Der Server ist neu verbunden.",
249
249
  "Outline": "Gliederung",
250
- "Headings_you_add_to_the_document_will_appear_here": "Headings you add to the document will appear here",
250
+ "Headings_you_add_to_the_document_will_appear_here": "Überschriften im Dokument werden hier angezeigt",
251
251
  "Open_parent_folder": "Übergeordneten Ordner öffnen",
252
252
  "Redo": "Erneut ausführen",
253
253
  "Undo": "Rückgängig machen",
@@ -267,21 +267,21 @@
267
267
  "Unstarred": "Aus Favoriten entfernen",
268
268
  "Star": "Favoriten hinzufügen",
269
269
  "Unstar": "Aus Favoriten entfernen",
270
- "Auto_wrap": "Auto wrap",
270
+ "Auto_wrap": "Automatischer Zeilenumbruch",
271
271
  "Add_comment": "Kommentar hinzufügen",
272
272
  "Delete_comment": "Kommentar löschen",
273
273
  "Delete_reply": "Antwort löschen",
274
274
  "Are_you_sure_to_delete_this_comment": "Möchten Sie das Kommentar wirklich löschen?",
275
275
  "Are_you_sure_to_delete_this_reply": "Möchten Sie die Antwort wirklich löschen?",
276
- "Enter_comment_shift_enter_for_new_line_Enter_to_send": "Geben Sie ein Kommentar ein: SHIFT + ENTER für einen Zeilenumbruch; ENTER zum Absenden",
277
- "Enter_reply_shift_Enter_for_new_line_Enter_to_send": "Geben Sie eine Antwort ein: SHIFT + ENTER für einen Zeilenumbruch; ENTER zum Absenden",
276
+ "Enter_comment_shift_enter_for_new_line_Enter_to_send": "Geben Sie ein Kommentar ein (Zeilenumbruch mit SHIFT + ENTER; Kommentar absenden mit ENTER)",
277
+ "Enter_reply_shift_Enter_for_new_line_Enter_to_send": "Geben Sie eine Antwort ein (Zeilenumbruch mit SHIFT + ENTER, Kommentar absenden mit ENTER)",
278
278
  "Reopen_discussion": "Das Hinzufügen einer Antwort wird die Diskussion wieder öffnen.",
279
279
  "Confirm": "Bestätigen",
280
280
  "View_changes": "Änderungen ansehen",
281
281
  "Revision": "Revision",
282
282
  "Error": "Fehler",
283
- "Start_revise": "Start revise",
284
- "Revise": "Revise",
283
+ "Start_revise": "Überarbeitung beginnen",
284
+ "Revise": "Überarbeiten",
285
285
  "Failed_to_execute_operation_on_server": "Die Operation auf dem Server ist fehlgeschlagen: Die aktuelle Operation wurde zurückgezogen.",
286
286
  "Start_revise_tip": "Erstellen Sie ein temporäres Dokument und modifizieren Sie es, mergen Sie es zurück nach der Durchsicht der Änderungen.",
287
287
  "Load_doc_content_error": "Beim Laden des Dokumenteninhalts ist ein Fehler aufgetreten.",
@@ -331,7 +331,7 @@
331
331
  "Standard_blue": "Standard blau",
332
332
  "Standard_dark_blue": "Standard dunkelblau",
333
333
  "Standard_purple": "Standard violett",
334
- "Highlight_color": "Highlight",
334
+ "Highlight_color": "Hervorheben",
335
335
  "Font_color": "Schriftfarbe",
336
336
  "Default": "Standard",
337
337
  "No_revisions": "Keine Revisionen",
@@ -372,20 +372,20 @@
372
372
  "No_changes": "Keine Änderungen",
373
373
  "Title": "Titel",
374
374
  "Subtitle": "Untertitel",
375
- "Link_sdoc": "Link sdoc",
376
- "Link_file": "Link file",
375
+ "Link_sdoc": "Link zu SDOC-Dokument",
376
+ "Link_file": "Link zu Datei",
377
377
  "Keep_my_modification": "Meine Änderungen behalten",
378
378
  "Keep_other_modification": "Andere Änderungen behalten",
379
379
  "Keep_both_modification": "Beide Änderungen behalten",
380
380
  "Tip": "Hinweis",
381
- "Rebase_delete_no_change_revision_tip": "Revision has not made any change compared to original document. Do you want to delete this revision?",
381
+ "Rebase_delete_no_change_revision_tip": "Die Revision enthält keine Änderungen gegenüber dem Original. Wollen Sie die Revision löschen?",
382
382
  "Has_been_replaced_tip": "Der Inhalt des Dokuments wurde ersetzt. Laden Sie die Seite neu.",
383
383
  "Has_been_published_tip": "Die Revision wurde veröffentlicht.",
384
384
  "Has_conflict_before_publish_tip": "Das Dokument enthält Konflikte. Lösen Sie diese vor der Veröffentlichung.",
385
385
  "Merge_tip": "Das Dokument enthält Konflikte. Wollen Sie diese mergen?",
386
386
  "Has_conflict_before_view_changes_tip": "Das Dokument enthält Konflikte. Lösen Sie diese vor der Ansicht der Änderungen.",
387
387
  "Has_been_removed_tip": "Das Dokument wurde entfernt. Betrachten Sie ein anderes Dokument.",
388
- "Checking": "Checking...",
388
+ "Checking": "Überprüfung im Gang ...",
389
389
  "Publishing": "Die Veröffentlchung ist im Gang ...",
390
390
  "Inline": "Inline",
391
391
  "Block": "Block",
@@ -407,7 +407,7 @@
407
407
  "No_options_available": "Der Tag wurde nicht gefunden",
408
408
  "Add_option": "Neues Tag erstellen",
409
409
  "Find_an_option": "Tags suchen",
410
- "Copy_link_of_section": "Copy link of section",
410
+ "Copy_link_of_section": "Abschnittslink kopieren",
411
411
  "revision": "Revision",
412
412
  "xxx_added_a_new_comment": "{{author}} hat ein neues Kommentar hinzugefügt.",
413
413
  "xxx_added_a_reply": "{{author}} hat eine Antwort hinzugefügt.",
@@ -415,7 +415,7 @@
415
415
  "Table_template": "Tabellenvorlage",
416
416
  "Jump_to_original_doc": "Zum Originaldokument springen",
417
417
  "Freezed": "eingefrorne",
418
- "Callout": "Callout",
418
+ "Callout": "Legende",
419
419
  "The_current_location_does_not_support_pasting": "Der aktuelle Ort unterstützt das Einfügen nicht.",
420
420
  "Please_enter": "Bitte eingeben",
421
421
  "Combine_cell": "Zellen verbinden",
@@ -427,21 +427,21 @@
427
427
  "My_modification": "Meine Änderungen",
428
428
  "Document_history": "Dokumentenversionen",
429
429
  "Freeze_document": "Dokument einfrieren",
430
- "Document_frozen": "Document frozen",
431
- "Unfreeze": "Unfreeze",
430
+ "Document_frozen": "Das Dokument ist eingefroren.",
431
+ "Unfreeze": "Freigeben",
432
432
  "Search_and_replace": "Suchen und Ersetzen",
433
433
  "Search": "Suchen",
434
- "Type_search_content": "Type search content",
435
- "Replace_as": "Replace as",
436
- "Type_replace_content": "Type replace content",
437
- "Prevs": "Prevs",
434
+ "Type_search_content": "Geben Sie den Suchbegriff ein",
435
+ "Replace_as": "Ersetzen mit",
436
+ "Type_replace_content": "Geben Sie den neuen Text ein",
437
+ "Prevs": "Vorherigen",
438
438
  "Next": "Nächste Seite",
439
439
  "Replace": "Ersetzen",
440
440
  "Replace_all": "Alle ersetzen",
441
- "Are_you_sure_to_replace_all_number_xxx_in_this_document_with_yyy": "Are you sure to replace all {{number}} '{{originalWord}}' in this document with '{{replacedWord}}'?",
441
+ "Are_you_sure_to_replace_all_number_xxx_in_this_document_with_yyy": "Möchten Sie wirklich alle {{number}} '{{originalWord}}' in diesem Dokument durch '{{replacedWord}}' ersetzen?",
442
442
  "Are_you_sure_to_clear_all_number_xxx_in_this_document": "Möchten Sie wirklich alle {{number}} '{{originalWord}}' in diesem Dokument löschen?",
443
443
  "Search_not_found": "Nicht gefunden",
444
- "Recent_visited": "Recent visited",
444
+ "Recent_visited": "Zuletzt besucht",
445
445
  "The_document_does_not_exist": "Das Dokument existiert nicht.",
446
446
  "Create_a_new_sdoc_file": "Neue SDOC-Datei erstellen",
447
447
  "New_page": "Neue Seite",
@@ -456,15 +456,15 @@
456
456
  "Print": "Drucken",
457
457
  "Enter_more_character_start_search": "Geben Sie mehr ein, um die Suche zu starten",
458
458
  "Create_file_name_sdoc": "Erstelle {{file_name_sdoc}}",
459
- "Source_document_changed_tip": "Das Originaldokument hat gleichzeitige Änderungen. Wollen Sie diese Änderungen in der Revision zusammenführen?",
459
+ "Source_document_changed_tip": "Am Originaldokument wurden Änderungen durchgeführt. Wollen Sie diese Änderungen in der Revision zusammenführen?",
460
460
  "Fit_table_to_page_width": "Tabelle auf Seitenbreite anpassen",
461
- "Enter_text_or_press_forward_slash_to_insert_element": "Text eingeben oder drücken Sie '/', um ein Element einzufügen",
461
+ "Enter_text_or_press_forward_slash_to_insert_element": "Geben Sie Text eingeben oder drücken Sie '/', um ein Element einzufügen",
462
462
  "Vertical_align": "Vertikale Ausrichtung",
463
463
  "Horizontal_align": "Horizontale Ausrichtung",
464
464
  "SeaTable_column": "SeaTable Spalte",
465
465
  "SeaTable_table": "SeaTable Tabelle",
466
466
  "And_x_more_records": "und {{count}} weitere Einträge",
467
- "Print_limit_exceeded": "Exceeding the print limit, only the first 200 lines will be printed",
467
+ "Print_limit_exceeded": "Das Drucklimit ist überschritten. Nur die ersten 200 Zeilen werden gedruckt.",
468
468
  "Show_record_numbers": "Nummern der Einträge anzeigen",
469
469
  "Alternate_color": "Alternativfarbe",
470
470
  "Select_column_display_option_color_tip": "Farboption für Einfach- und Mehrfachauswahlen",
@@ -474,7 +474,7 @@
474
474
  "1_hidden_column": "1 ausgeblendete Spalte",
475
475
  "hidden_columns": "ausgeblendete Spalten",
476
476
  "Search_column": "Spalte suchen",
477
- "No_columns_available_to_be_hidden": "No columns available to be hidden.",
477
+ "No_columns_available_to_be_hidden": "Es gibt keine Spalten, die ausgeblendet werden können.",
478
478
  "Hide_all": "Alle ausblenden",
479
479
  "Show_all": "Alle anzeigen",
480
480
  "Sort": "Sortieren",
@@ -482,7 +482,7 @@
482
482
  "Sorts": "Sortierungen",
483
483
  "No_sorts": "Keine Sortierungen",
484
484
  "Add_sort": "Sortierung hinzufügen",
485
- "No_sort_added": "No sort added",
485
+ "No_sort_added": "Keine Sortierung hinzugefügt",
486
486
  "up": "Aufsteigend",
487
487
  "down": "Absteigend",
488
488
  "No_results": "Keine Ergebnisse",
@@ -500,7 +500,7 @@
500
500
  "Add_a_creator": "Ersteller hinzufügen",
501
501
  "Add_a_last_modifier": "Letzter Bearbeiter hinzufügen",
502
502
  "Invalid_filter": "Ungültiger Filter",
503
- "Department_single_select": "Department single select",
503
+ "Department_single_select": "Bereichsauswahl",
504
504
  "Search_department": "Bereich suchen",
505
505
  "Select_department": "Bereich auswählen",
506
506
  "No_departments_available": "Keine Bereiche verfügbar",
@@ -562,56 +562,60 @@
562
562
  "the_past_year": "Letztes Jahr",
563
563
  "the_next_numbers_of_days": "Innerhalb der nächsten X Tage",
564
564
  "the_past_numbers_of_days": "Innerhalb der letzten x Tage",
565
- "Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
566
- "Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
565
+ "Double_click_to_enter_edit_mode_and_adjust_field_width" : "Klicken Sie doppelt, um in den Bearbeitungsmodus zu wechseln",
566
+ "Enter_comment_Enter_for_new_line_shift_enter_to_send": "Geben Sie ein Kommentar ein: ENTER für einen Zeilenumbruch; SHIFT + ENTER zum Absenden",
567
567
  "Sub_table": "Tabelle",
568
- "Search_action": "Search action...",
569
- "Comment_details": "Comment details",
568
+ "Search_action": "Aktion suchen",
569
+ "Comment_details": "Kommentardetails",
570
570
  "Two_column": "2 Spalten",
571
571
  "Three_column": "3 Spalten",
572
572
  "Four_column": "4 Spalten",
573
573
  "Five_column": "5 Spalten",
574
- "Full_width_mode": "Full width mode",
574
+ "Full_width_mode": "Ganze Breite nutzen",
575
575
  "Video": "Video",
576
576
  "Upload_local_video": "Lokales Video hochladen",
577
- "The_current_version_does_not_support_>5MB_video_file": "The_current_version_does_not_support_>5MB_video_file",
577
+ "The_current_version_does_not_support_>5MB_video_file": "Die aktuelle Version unterstützt keine Videodateien größer als 5MB.",
578
578
  "Token_expired_Please_refresh_the_page": "Der Token ist abgelaufen. Laden Sie die Seite neu.",
579
- "Link_to_page": "Link to page",
579
+ "Link_to_page": "Mit Seite verlinken",
580
580
  "No_page_results": "Keine Seitenergebnisse",
581
581
  "Page": "Seite",
582
582
  "Share_1": "Freigeben",
583
- "Collect": "Collect",
584
- "Collected": "Collected",
585
- "Link_to_file": "Link to file",
583
+ "Collect": "Sammeln",
584
+ "Collected": "Gesammelt",
585
+ "Link_to_file": "Mit Datei verlinken",
586
586
  "Create_a_new_file": "Neue Datei erstellen",
587
587
  "Suggestion": "Vorschlag",
588
- "Continuation": "Continuation",
588
+ "Continuation": "Fortsetzung",
589
589
  "More_details": "Mehr Details",
590
- "More_concise": "More concise",
591
- "More_vivid": "More vivid",
590
+ "More_concise": "Prägnanter",
591
+ "More_vivid": "Lebhafter",
592
592
  "Translate": "Übersetzen",
593
- "Adjustment": "Adjustment",
593
+ "Adjustment": "Anpassung",
594
594
  "Try_again": "Erneut probieren",
595
595
  "Deprecation": "Deprecation",
596
- "Generated_content_x_words": "Generated content {{count}} words",
597
- "Ask_AI_anything": "Ask AI anything...",
598
- "Thinking": "Thinking...",
596
+ "Generated_content_x_words": "Der erstellte Inhalt hat {{count}} Wörter",
597
+ "Ask_AI_anything": "Fragen die KI alles ...",
598
+ "Thinking": "Im Gang ...",
599
599
  "Translation_error_message": "Beim Übersetzen ist ein Fehler aufgetreten. Probieren Sie es erneut.",
600
- "The_translation_content_cannot_be_empty": "The translation content cannot be empty",
601
- "Processing_message": "Processing, please wait...",
602
- "AI_tip_content": "Discard current content?",
600
+ "The_translation_content_cannot_be_empty": "Der übersetzte Inhalt darf nicht leer sein.",
601
+ "Processing_message": "Die Bearbeitung ist im Gang ...",
602
+ "AI_tip_content": "Aktuellen Inhalt verwerfen?",
603
603
  "Discard": "Verwerfen",
604
604
  "English": "Englisch",
605
605
  "Chinese": "Chinesisch",
606
606
  "Ask_AI": "KI fragen",
607
607
  "Enter_reply": "Antwort eingeben",
608
- "Processing_content_cannot_be_empty": "Processing content cannot be empty",
609
- "AI_error_message": "Request error, please try again",
608
+ "Processing_content_cannot_be_empty": "Der bearbeitete Inhalt kann nicht leer sein.",
609
+ "AI_error_message": "Anfragefehler. Probieren Sie es erneut.",
610
610
  "Add_video_link": "Videolink hinzufügen",
611
- "Link_Seafile_video_file": "Link Seafile video file",
612
- "Select_video_file": "Select video file",
613
- "Support_Youtube_Tencent_Bilibili_and_more": "Support Youtube, Tencent, Bilibili and more",
614
- "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
- "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
- "Image_copy_error": "Image copy error"
611
+ "Link_Seafile_video_file": "Video in Seafile verlinken",
612
+ "Select_video_file": "Videodatei auswählen",
613
+ "Support_Youtube_Tencent_Bilibili_and_more": "Unterstützt Youtube, Tencent, Bilibili und andere",
614
+ "Image_cannot_be_copied_Please_download_the_source_image": "Das Bild kann nicht kopiert werden. Laden Sie das Bild herunter.",
615
+ "And_select_insert_-_image_to_upload": "und wählen Sie 「insert」 - 「image」 für den Upload.",
616
+ "Image_copy_error": "Fehler beim Kopieren des Bildes",
617
+ "Image_is_uploading": "Das Bild wird hochgeladen ...",
618
+ "Insert_chart": "Insert chart",
619
+ "Edit_chart": "Edit chart",
620
+ "Please_complete_the_chart_configuration_first": "Please complete the chart configuration first"
617
621
  }
@@ -614,5 +614,9 @@
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
615
  "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
616
  "Image_copy_error": "Image copy error",
617
- "Image_is_uploading": "Image is uploading..."
617
+ "Image_is_uploading": "Image is uploading...",
618
+ "Insert_chart": "Insert chart",
619
+ "Edit_chart": "Edit chart",
620
+ "Please_complete_the_chart_configuration_first": "Please complete the chart configuration first",
621
+ "chart": "chart"
618
622
  }
@@ -613,5 +613,9 @@
613
613
  "Support_Youtube_Tencent_Bilibili_and_more": "Support Youtube, Tencent, Bilibili and more",
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
615
  "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
- "Image_copy_error": "Image copy error"
616
+ "Image_copy_error": "Image copy error",
617
+ "Image_is_uploading": "Image is uploading...",
618
+ "Insert_chart": "Insert chart",
619
+ "Edit_chart": "Edit chart",
620
+ "Please_complete_the_chart_configuration_first": "Please complete the chart configuration first"
617
621
  }