decap-cms-widget-markdown 3.13.1-beta.0 → 3.13.1
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.
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
2
2
|
/* eslint-disable react/prop-types */
|
|
3
|
-
import { useState } from 'react';
|
|
3
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
4
4
|
import { css } from '@emotion/react';
|
|
5
5
|
import { fromJS } from 'immutable';
|
|
6
6
|
import omit from 'lodash/omit';
|
|
7
|
+
import noop from 'lodash/noop';
|
|
7
8
|
import { ReactEditor, useSlate } from 'slate-react';
|
|
8
9
|
import { Range, Transforms } from 'slate';
|
|
9
10
|
import { getEditorControl, getEditorComponents } from '../index';
|
|
@@ -13,7 +14,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
13
14
|
styles: "margin-top:0;margin-bottom:16px;&:first-of-type{margin-top:0;};label:Shortcode;"
|
|
14
15
|
} : {
|
|
15
16
|
name: "1xfnuhy-Shortcode",
|
|
16
|
-
styles: "margin-top:0;margin-bottom:16px;&:first-of-type{margin-top:0;};label:Shortcode;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
styles: "margin-top:0;margin-bottom:16px;&:first-of-type{margin-top:0;};label:Shortcode;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9NYXJrZG93bkNvbnRyb2wvY29tcG9uZW50cy9TaG9ydGNvZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdURrQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvTWFya2Rvd25Db250cm9sL2NvbXBvbmVudHMvU2hvcnRjb2RlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcHJvcC10eXBlcyAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgZnJvbUpTIH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0JztcbmltcG9ydCBub29wIGZyb20gJ2xvZGFzaC9ub29wJztcbmltcG9ydCB7IFJlYWN0RWRpdG9yLCB1c2VTbGF0ZSB9IGZyb20gJ3NsYXRlLXJlYWN0JztcbmltcG9ydCB7IFJhbmdlLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuXG5pbXBvcnQgeyBnZXRFZGl0b3JDb250cm9sLCBnZXRFZGl0b3JDb21wb25lbnRzIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5mdW5jdGlvbiBTaG9ydGNvZGUocHJvcHMpIHtcbiAgY29uc3QgZWRpdG9yID0gdXNlU2xhdGUoKTtcbiAgY29uc3QgeyBlbGVtZW50LCBkYXRhS2V5ID0gJ3Nob3J0Y29kZURhdGEnLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gIGNvbnN0IEVkaXRvckNvbnRyb2wgPSBnZXRFZGl0b3JDb250cm9sKCk7XG4gIGNvbnN0IHBsdWdpbiA9IGdldEVkaXRvckNvbXBvbmVudHMoKS5nZXQoZWxlbWVudC5kYXRhLnNob3J0Y29kZSk7XG4gIGNvbnN0IGZpZWxkS2V5cyA9IFsnaWQnLCAnZnJvbUJsb2NrJywgJ3RvQmxvY2snLCAndG9QcmV2aWV3JywgJ3BhdHRlcm4nLCAnaWNvbiddO1xuXG4gIGNvbnN0IGZpZWxkID0gdXNlTWVtbygoKSA9PiBmcm9tSlMob21pdChwbHVnaW4sIGZpZWxkS2V5cykpLCBbcGx1Z2luXSk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoZnJvbUpTKGVsZW1lbnQuZGF0YVtkYXRhS2V5XSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWVsZE5hbWUsIHZhbHVlLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IFJlYWN0RWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgZWxlbWVudCk7XG4gICAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZWxlbWVudC5kYXRhLFxuICAgICAgICAgIFtkYXRhS2V5XTogdmFsdWUudG9KUygpLFxuICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCBuZXdQcm9wZXJ0aWVzLCB7XG4gICAgICAgIGF0OiBwYXRoLFxuICAgICAgfSk7XG4gICAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBbZWRpdG9yLCBlbGVtZW50LCBkYXRhS2V5XSxcbiAgKTtcblxuICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpIHtcbiAgICBjb25zdCBwYXRoID0gUmVhY3RFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIHBhdGgpO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IFJlYWN0RWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgZWxlbWVudCk7XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPVxuICAgIGVkaXRvci5zZWxlY3Rpb24gJiZcbiAgICBwYXRoICYmXG4gICAgUmFuZ2UuaXNSYW5nZShlZGl0b3Iuc2VsZWN0aW9uKSAmJlxuICAgIFJhbmdlLmluY2x1ZGVzKGVkaXRvci5zZWxlY3Rpb24sIHBhdGgpO1xuXG4gIHJldHVybiAoXG4gICAgIWZpZWxkLmlzRW1wdHkoKSAmJiAoXG4gICAgICA8ZGl2IG9uQ2xpY2s9e2hhbmRsZUZvY3VzfSBvbkZvY3VzPXtoYW5kbGVGb2N1c30+XG4gICAgICAgIDxFZGl0b3JDb250cm9sXG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcblxuICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBgfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBmaWVsZD17ZmllbGR9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBpc0VkaXRvckNvbXBvbmVudD17dHJ1ZX1cbiAgICAgICAgICBvblZhbGlkYXRlT2JqZWN0PXtub29wfVxuICAgICAgICAgIGlzTmV3RWRpdG9yQ29tcG9uZW50PXtlbGVtZW50LmRhdGEuc2hvcnRjb2RlTmV3fVxuICAgICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2hvcnRjb2RlO1xuIl19 */",
|
|
17
18
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
18
19
|
};
|
|
19
20
|
function Shortcode(props) {
|
|
@@ -26,9 +27,9 @@ function Shortcode(props) {
|
|
|
26
27
|
const EditorControl = getEditorControl();
|
|
27
28
|
const plugin = getEditorComponents().get(element.data.shortcode);
|
|
28
29
|
const fieldKeys = ['id', 'fromBlock', 'toBlock', 'toPreview', 'pattern', 'icon'];
|
|
29
|
-
const field = fromJS(omit(plugin, fieldKeys));
|
|
30
|
+
const field = useMemo(() => fromJS(omit(plugin, fieldKeys)), [plugin]);
|
|
30
31
|
const [value, setValue] = useState(fromJS(element.data[dataKey]));
|
|
31
|
-
|
|
32
|
+
const handleChange = useCallback((fieldName, value, metadata) => {
|
|
32
33
|
const path = ReactEditor.findPath(editor, element);
|
|
33
34
|
const newProperties = {
|
|
34
35
|
data: {
|
|
@@ -41,7 +42,7 @@ function Shortcode(props) {
|
|
|
41
42
|
at: path
|
|
42
43
|
});
|
|
43
44
|
setValue(value);
|
|
44
|
-
}
|
|
45
|
+
}, [editor, element, dataKey]);
|
|
45
46
|
function handleFocus() {
|
|
46
47
|
const path = ReactEditor.findPath(editor, element);
|
|
47
48
|
Transforms.select(editor, path);
|
|
@@ -57,7 +58,7 @@ function Shortcode(props) {
|
|
|
57
58
|
field: field,
|
|
58
59
|
onChange: handleChange,
|
|
59
60
|
isEditorComponent: true,
|
|
60
|
-
onValidateObject:
|
|
61
|
+
onValidateObject: noop,
|
|
61
62
|
isNewEditorComponent: element.data.shortcodeNew,
|
|
62
63
|
isSelected: isSelected
|
|
63
64
|
}), children]
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "decap-cms-widget-markdown",
|
|
3
3
|
"description": "Widget for editing markdown in Decap CMS.",
|
|
4
|
-
"version": "3.13.1
|
|
4
|
+
"version": "3.13.1",
|
|
5
5
|
"homepage": "https://www.decapcms.org/docs/widgets/#markdown",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"react": "^19.1.0",
|
|
57
57
|
"react-dom": "^19.1.0",
|
|
58
58
|
"react-immutable-proptypes": "^2.1.0",
|
|
59
|
-
"decap-cms-ui-default": "3.9.
|
|
59
|
+
"decap-cms-ui-default": "3.9.2"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"commonmark": "^0.30.0",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/* eslint-disable react/prop-types */
|
|
2
|
-
import { useState } from 'react';
|
|
2
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
3
|
import { css } from '@emotion/react';
|
|
4
4
|
import { fromJS } from 'immutable';
|
|
5
5
|
import omit from 'lodash/omit';
|
|
6
|
+
import noop from 'lodash/noop';
|
|
6
7
|
import { ReactEditor, useSlate } from 'slate-react';
|
|
7
8
|
import { Range, Transforms } from 'slate';
|
|
8
9
|
|
|
@@ -15,23 +16,26 @@ function Shortcode(props) {
|
|
|
15
16
|
const plugin = getEditorComponents().get(element.data.shortcode);
|
|
16
17
|
const fieldKeys = ['id', 'fromBlock', 'toBlock', 'toPreview', 'pattern', 'icon'];
|
|
17
18
|
|
|
18
|
-
const field = fromJS(omit(plugin, fieldKeys));
|
|
19
|
+
const field = useMemo(() => fromJS(omit(plugin, fieldKeys)), [plugin]);
|
|
19
20
|
const [value, setValue] = useState(fromJS(element.data[dataKey]));
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
const handleChange = useCallback(
|
|
23
|
+
(fieldName, value, metadata) => {
|
|
24
|
+
const path = ReactEditor.findPath(editor, element);
|
|
25
|
+
const newProperties = {
|
|
26
|
+
data: {
|
|
27
|
+
...element.data,
|
|
28
|
+
[dataKey]: value.toJS(),
|
|
29
|
+
metadata,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
Transforms.setNodes(editor, newProperties, {
|
|
33
|
+
at: path,
|
|
34
|
+
});
|
|
35
|
+
setValue(value);
|
|
36
|
+
},
|
|
37
|
+
[editor, element, dataKey],
|
|
38
|
+
);
|
|
35
39
|
|
|
36
40
|
function handleFocus() {
|
|
37
41
|
const path = ReactEditor.findPath(editor, element);
|
|
@@ -61,7 +65,7 @@ function Shortcode(props) {
|
|
|
61
65
|
field={field}
|
|
62
66
|
onChange={handleChange}
|
|
63
67
|
isEditorComponent={true}
|
|
64
|
-
onValidateObject={
|
|
68
|
+
onValidateObject={noop}
|
|
65
69
|
isNewEditorComponent={element.data.shortcodeNew}
|
|
66
70
|
isSelected={isSelected}
|
|
67
71
|
/>
|