@seafile/seafile-editor 1.0.67 → 1.0.68

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/index.js CHANGED
@@ -46,18 +46,6 @@ Object.defineProperty(exports, "MarkdownViewer", {
46
46
  return _markdownView.default;
47
47
  }
48
48
  });
49
- Object.defineProperty(exports, "PlainMarkdownEditor", {
50
- enumerable: true,
51
- get: function () {
52
- return _plainMarkdownEditor.default;
53
- }
54
- });
55
- Object.defineProperty(exports, "RichMarkdownEditor", {
56
- enumerable: true,
57
- get: function () {
58
- return _richMarkdownEditor.default;
59
- }
60
- });
61
49
  Object.defineProperty(exports, "SeaTableEditor", {
62
50
  enumerable: true,
63
51
  get: function () {
@@ -113,8 +101,6 @@ Object.defineProperty(exports, "slateToMdString", {
113
101
  }
114
102
  });
115
103
  var _eventTypes = require("./constants/event-types");
116
- var _plainMarkdownEditor = _interopRequireDefault(require("./editors/plain-markdown-editor"));
117
- var _richMarkdownEditor = _interopRequireDefault(require("./pages/rich-markdown-editor"));
118
104
  var _markdownEditor = _interopRequireDefault(require("./pages/markdown-editor"));
119
105
  var _markdownView = _interopRequireDefault(require("./pages/markdown-view"));
120
106
  var _simpleEditor = _interopRequireDefault(require("./pages/simple-editor"));
@@ -11,12 +11,15 @@ var _loading = _interopRequireDefault(require("../containers/loading"));
11
11
  var _slateConvert = require("../slate-convert");
12
12
  var _useMathjax = _interopRequireDefault(require("../hooks/use-mathjax"));
13
13
  var _slateEditor = _interopRequireDefault(require("../editors/slate-editor"));
14
+ var _core = require("../extension/core");
14
15
  const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
15
16
  let {
16
17
  isFetching,
17
18
  value,
19
+ initValue,
18
20
  editorApi,
19
21
  mathJaxSource,
22
+ isSupportInsertSeafileImage,
20
23
  onSave: propsOnSave,
21
24
  onContentChanged: propsOnContentChanged,
22
25
  children
@@ -36,7 +39,10 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
36
39
  }, [richValue]);
37
40
  (0, _react.useEffect)(() => {
38
41
  if (!isFetching) {
39
- const richValue = (0, _slateConvert.mdStringToSlate)(value);
42
+ let richValue = (0, _slateConvert.mdStringToSlate)(value);
43
+ if (!value && initValue) {
44
+ richValue = [(0, _core.generateHeaderElement)(initValue)];
45
+ }
40
46
  setRichValue(richValue);
41
47
  setIsLoading(false);
42
48
  }
@@ -48,6 +54,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
48
54
  }, [propsOnContentChanged]);
49
55
  const props = {
50
56
  isSupportFormula: !!mathJaxSource,
57
+ isSupportInsertSeafileImage,
51
58
  value: richValue,
52
59
  editorApi: editorApi,
53
60
  onSave: propsOnSave,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "1.0.67",
3
+ "version": "1.0.68",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -85,12 +85,8 @@
85
85
  ]
86
86
  },
87
87
  "dependencies": {
88
- "@codemirror/lang-markdown": "6.2.3",
89
- "@codemirror/language-data": "6.3.1",
90
- "@codemirror/view": "6.22.1",
91
88
  "@seafile/react-image-lightbox": "2.0.5",
92
89
  "classnames": "2.3.2",
93
- "codemirror": "6.0.1",
94
90
  "deep-copy": "1.4.2",
95
91
  "deepmerge": "4.3.1",
96
92
  "is-url": "^1.2.4",
@@ -1,8 +0,0 @@
1
- .sf-code-mirror .cm-editor {
2
- height: 100vh;
3
- font-size: 13px;
4
- }
5
-
6
- .sf-code-mirror .cm-editor .cm-scroller {
7
- overflow-x: initial;
8
- }
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _classnames = _interopRequireDefault(require("classnames"));
11
- var _codemirror = require("codemirror");
12
- var _view = require("@codemirror/view");
13
- var _langMarkdown = require("@codemirror/lang-markdown");
14
- var _languageData = require("@codemirror/language-data");
15
- require("./code-mirror.css");
16
- class SeafileCodeMirror extends _react.default.Component {
17
- constructor() {
18
- super(...arguments);
19
- (0, _defineProperty2.default)(this, "onValueChanged", viewUpdate => {
20
- const {
21
- onChange
22
- } = this.props;
23
- if (onChange && viewUpdate.docChanged) {
24
- const doc = viewUpdate.state.doc;
25
- const value = doc.toString();
26
- onChange(value);
27
- }
28
- });
29
- (0, _defineProperty2.default)(this, "focus", () => {
30
- this.view.focus();
31
- });
32
- (0, _defineProperty2.default)(this, "scrollIntoView", pos => {
33
- _view.EditorView.scrollIntoView(pos);
34
- });
35
- (0, _defineProperty2.default)(this, "setCodeMirrorRef", ref => {
36
- this.codeMirrorRef = ref;
37
- });
38
- }
39
- componentDidMount() {
40
- const {
41
- initialValue,
42
- autoFocus
43
- } = this.props;
44
- this.view = new _view.EditorView({
45
- doc: initialValue,
46
- extensions: [_codemirror.basicSetup, (0, _langMarkdown.markdown)({
47
- codeLanguages: _languageData.languages
48
- }), _view.EditorView.updateListener.of(viewUpdate => {
49
- this.onValueChanged(viewUpdate);
50
- }), _view.EditorView.lineWrapping],
51
- parent: this.codeMirrorRef
52
- });
53
- if (autoFocus) this.focus();
54
- }
55
- componentWillUnmount() {
56
- if (this.view) {
57
- this.view.destroy();
58
- }
59
- }
60
- render() {
61
- return /*#__PURE__*/_react.default.createElement("div", {
62
- className: (0, _classnames.default)('sf-code-mirror', this.props.className)
63
- }, /*#__PURE__*/_react.default.createElement("div", {
64
- ref: this.setCodeMirrorRef
65
- }));
66
- }
67
- }
68
- var _default = exports.default = SeafileCodeMirror;
@@ -1,140 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _isHotkey = _interopRequireDefault(require("is-hotkey"));
11
- var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
12
- var _codeMirror = _interopRequireDefault(require("./code-mirror"));
13
- require("./style.css");
14
- class PlainMarkdownEditor extends _react.default.Component {
15
- constructor(props) {
16
- super(props);
17
- /*
18
- * the data about scroll, these variable has nothing to width react
19
- * they are not state
20
- * */
21
- (0, _defineProperty2.default)(this, "scrollData", {
22
- scrollPercentage: 0,
23
- leftPanel: null,
24
- rightPanel: null
25
- });
26
- (0, _defineProperty2.default)(this, "setContent", markdownContent => {
27
- this.setState({
28
- editorValue: markdownContent
29
- });
30
- _mdToHtml.default.process(markdownContent, (error, vfile) => {
31
- var html = String(vfile);
32
- this.setState({
33
- previewValue: html
34
- });
35
- });
36
- });
37
- (0, _defineProperty2.default)(this, "updateCode", newCode => {
38
- this.setContent(newCode);
39
- this.props.onContentChanged && this.props.onContentChanged(newCode);
40
- });
41
- (0, _defineProperty2.default)(this, "onEnterLeftPanel", () => {
42
- this.setState({
43
- isMouseInLeftSide: true
44
- });
45
- });
46
- (0, _defineProperty2.default)(this, "onLeaveLeftPanel", () => {
47
- this.setState({
48
- isMouseInLeftSide: false
49
- });
50
- });
51
- (0, _defineProperty2.default)(this, "onLeftScroll", e => {
52
- const {
53
- isMouseInLeftSide
54
- } = this.state;
55
- if (!isMouseInLeftSide) return;
56
- let srcElement = this.scrollData.leftPanel;
57
- this.scrollData.scrollPercentage = srcElement.scrollTop / srcElement.scrollHeight;
58
- this.scrollData.rightPanel.scrollTop = this.scrollData.scrollPercentage * this.scrollData.rightPanel.scrollHeight;
59
- });
60
- (0, _defineProperty2.default)(this, "onEnterRightPanel", () => {
61
- this.setState({
62
- isMouseInRightSide: true
63
- });
64
- });
65
- (0, _defineProperty2.default)(this, "onLeaveRightPanel", () => {
66
- this.setState({
67
- isMouseInRightSide: false
68
- });
69
- });
70
- (0, _defineProperty2.default)(this, "onRightScroll", e => {
71
- const {
72
- isMouseInRightSide
73
- } = this.state;
74
- if (!isMouseInRightSide) return;
75
- let srcElement = this.scrollData.rightPanel;
76
- this.scrollData.scrollPercentage = srcElement.scrollTop / srcElement.scrollHeight;
77
- this.scrollData.leftPanel.scrollTop = this.scrollData.scrollPercentage * this.scrollData.leftPanel.scrollHeight;
78
- });
79
- (0, _defineProperty2.default)(this, "onHotKey", event => {
80
- const {
81
- onSave
82
- } = this.props;
83
- if ((0, _isHotkey.default)('mod+s', event)) {
84
- event.preventDefault();
85
- onSave && onSave(this.state.editorValue);
86
- return true;
87
- }
88
- });
89
- this.state = {
90
- editorValue: props.value,
91
- previewValue: '',
92
- isMouseInLeftSide: false,
93
- isMouseInRightSide: false
94
- };
95
- }
96
- componentDidMount() {
97
- // get relevant dom when component mounted instead of get them when scrolling to improve performance
98
- this.scrollData.leftPanel = document.querySelector('.sf-plain-editor-left-panel');
99
- this.scrollData.rightPanel = document.querySelector('.sf-plain-editor-right-panel');
100
- this.setContent(this.props.value);
101
- }
102
- componentDidUpdate() {
103
- // render math formula
104
- // window.MathJax.typesetPromise(document.querySelectorAll('.math-display'));
105
- }
106
- render() {
107
- const {
108
- editorValue,
109
- previewValue
110
- } = this.state;
111
- return /*#__PURE__*/_react.default.createElement("div", {
112
- className: "sf-plain-editor"
113
- }, /*#__PURE__*/_react.default.createElement("div", {
114
- className: "sf-plain-editor-main d-flex",
115
- onKeyDown: this.onHotKey
116
- }, /*#__PURE__*/_react.default.createElement("div", {
117
- className: "sf-plain-editor-left-panel",
118
- onMouseLeave: this.onLeaveLeftPanel,
119
- onMouseEnter: this.onEnterLeftPanel,
120
- onScroll: this.onLeftScroll
121
- }, /*#__PURE__*/_react.default.createElement(_codeMirror.default, {
122
- autoFocus: true,
123
- initialValue: editorValue,
124
- onChange: this.updateCode
125
- })), /*#__PURE__*/_react.default.createElement("div", {
126
- className: "sf-plain-editor-right-panel",
127
- onMouseEnter: this.onEnterRightPanel,
128
- onMouseLeave: this.onLeaveRightPanel,
129
- onScroll: this.onRightScroll
130
- }, /*#__PURE__*/_react.default.createElement("div", {
131
- className: "preview"
132
- }, /*#__PURE__*/_react.default.createElement("div", {
133
- className: "rendered-markdown article",
134
- dangerouslySetInnerHTML: {
135
- __html: previewValue
136
- }
137
- })))));
138
- }
139
- }
140
- var _default = exports.default = PlainMarkdownEditor;
@@ -1,38 +0,0 @@
1
- .sf-plain-editor {
2
- flex: 1;
3
- display: flex;
4
- min-height: 0;
5
- min-width: 0;
6
- position: relative;
7
- }
8
-
9
- /* fix plain editor main height */
10
- .sf-plain-editor-main {
11
- position: absolute;
12
- inset: 0;
13
- }
14
-
15
- .sf-plain-editor-left-panel {
16
- height: 100%;
17
- width: 50%;
18
- background-color: #fff;
19
- border-right: 1px solid rgb(230,230,221);
20
- overflow-y: scroll;
21
- overflow-x: hidden;
22
- }
23
-
24
- .sf-plain-editor-right-panel {
25
- height: 100%;
26
- width: 50%;
27
- background-color: rgb(250,250,249);
28
- overflow-y: scroll;
29
- overflow-x: hidden;
30
- }
31
-
32
- .rendered-markdown.article {
33
- padding:0 20px 20px;
34
- }
35
-
36
- .rendered-markdown tbody tr:first-child {
37
- font-weight: 400;
38
- }
@@ -1,115 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _slateEditor = _interopRequireDefault(require("../editors/slate-editor"));
11
- var _plainMarkdownEditor = _interopRequireDefault(require("../editors/plain-markdown-editor"));
12
- var _loading = _interopRequireDefault(require("../containers/loading"));
13
- var _slateConvert = require("../slate-convert");
14
- var _useMathjax = _interopRequireDefault(require("../hooks/use-mathjax"));
15
- var _core = require("../extension/core");
16
- const EDITOR_MODE = {
17
- RICH: 'rich',
18
- PLAIN: 'plain'
19
- };
20
- const RichMarkdownEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
21
- let {
22
- mode = EDITOR_MODE.RICH,
23
- isFetching,
24
- initValue,
25
- value,
26
- editorApi,
27
- onSave: propsOnSave,
28
- onContentChanged: propsOnContentChanged,
29
- mathJaxSource,
30
- isSupportInsertSeafileImage,
31
- children
32
- } = _ref;
33
- const currentMode = (0, _react.useRef)(mode);
34
- const [mdStringValue, setMdStringValue] = (0, _react.useState)('');
35
- const [richValue, setRichValue] = (0, _react.useState)([]);
36
- const [isLoading, setIsLoading] = (0, _react.useState)(true);
37
- const {
38
- isLoadingMathJax
39
- } = (0, _useMathjax.default)(mathJaxSource);
40
- (0, _react.useImperativeHandle)(ref, () => {
41
- return {
42
- getValue: () => {
43
- if (mode === EDITOR_MODE.RICH) {
44
- const newValue = (0, _slateConvert.slateToMdString)(richValue);
45
- return newValue;
46
- } else {
47
- return mdStringValue;
48
- }
49
- }
50
- };
51
- }, [mdStringValue, mode, richValue]);
52
- (0, _react.useEffect)(() => {
53
- if (!isFetching) {
54
- let richValue = (0, _slateConvert.mdStringToSlate)(value);
55
- if (!value && initValue) {
56
- richValue = [(0, _core.generateHeaderElement)(initValue)];
57
- }
58
- setRichValue(richValue);
59
- setMdStringValue(value);
60
- setIsLoading(false);
61
- }
62
- // eslint-disable-next-line react-hooks/exhaustive-deps
63
- }, [isFetching]);
64
- (0, _react.useEffect)(() => {
65
- if (mode !== currentMode.current && mode === EDITOR_MODE.RICH) {
66
- setIsLoading(true);
67
- queueMicrotask(() => {
68
- currentMode.current = mode;
69
- const newRichValue = (0, _slateConvert.mdStringToSlate)(mdStringValue);
70
- setRichValue(newRichValue);
71
- setIsLoading(false);
72
- });
73
- }
74
- if (mode !== currentMode.current && mode === EDITOR_MODE.PLAIN) {
75
- setIsLoading(true);
76
- queueMicrotask(() => {
77
- currentMode.current = mode;
78
- const newMdStringValue = (0, _slateConvert.slateToMdString)(richValue);
79
- setMdStringValue(newMdStringValue);
80
- setIsLoading(false);
81
- });
82
- }
83
- }, [mdStringValue, mode, richValue]);
84
- const onContentChanged = (0, _react.useCallback)(content => {
85
- if (mode === EDITOR_MODE.RICH) {
86
- setRichValue(content);
87
- } else {
88
- setMdStringValue(content);
89
- }
90
- propsOnContentChanged && propsOnContentChanged();
91
- }, [mode, propsOnContentChanged]);
92
- const props = {
93
- onSave: propsOnSave,
94
- onContentChanged: onContentChanged,
95
- isSupportFormula: !!mathJaxSource,
96
- isSupportInsertSeafileImage,
97
- ...(children && {
98
- children
99
- }),
100
- ...(mode === EDITOR_MODE.PLAIN && {
101
- value: mdStringValue
102
- }),
103
- ...(mode === EDITOR_MODE.RICH && {
104
- value: richValue
105
- }),
106
- ...(mode === EDITOR_MODE.RICH && {
107
- editorApi: editorApi
108
- })
109
- };
110
- if (isFetching || isLoading || isLoadingMathJax) {
111
- return /*#__PURE__*/_react.default.createElement(_loading.default, null);
112
- }
113
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, mode === 'rich' && /*#__PURE__*/_react.default.createElement(_slateEditor.default, props), mode === 'plain' && /*#__PURE__*/_react.default.createElement(_plainMarkdownEditor.default, props));
114
- });
115
- var _default = exports.default = RichMarkdownEditor;