decap-cms-widget-markdown 2.16.0-beta.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.
- package/CHANGELOG.md +820 -0
- package/LICENSE +22 -0
- package/README.md +9 -0
- package/dist/decap-cms-widget-markdown.js +9 -0
- package/dist/decap-cms-widget-markdown.js.LICENSE.txt +37 -0
- package/dist/decap-cms-widget-markdown.js.map +1 -0
- package/dist/esm/MarkdownControl/RawEditor.js +106 -0
- package/dist/esm/MarkdownControl/Toolbar.js +216 -0
- package/dist/esm/MarkdownControl/ToolbarButton.js +43 -0
- package/dist/esm/MarkdownControl/VisualEditor.js +268 -0
- package/dist/esm/MarkdownControl/components/Shortcode.js +78 -0
- package/dist/esm/MarkdownControl/components/VoidBlock.js +55 -0
- package/dist/esm/MarkdownControl/index.js +129 -0
- package/dist/esm/MarkdownControl/plugins/BreakToDefaultBlock.js +34 -0
- package/dist/esm/MarkdownControl/plugins/CloseBlock.js +36 -0
- package/dist/esm/MarkdownControl/plugins/CommandsAndQueries.js +188 -0
- package/dist/esm/MarkdownControl/plugins/ForceInsert.js +49 -0
- package/dist/esm/MarkdownControl/plugins/Hotkey.js +35 -0
- package/dist/esm/MarkdownControl/plugins/LineBreak.js +21 -0
- package/dist/esm/MarkdownControl/plugins/Link.js +56 -0
- package/dist/esm/MarkdownControl/plugins/blocks/defaultEmptyBlock.js +16 -0
- package/dist/esm/MarkdownControl/plugins/blocks/events/keyDown.js +47 -0
- package/dist/esm/MarkdownControl/plugins/blocks/events/keyDownBackspace.js +26 -0
- package/dist/esm/MarkdownControl/plugins/blocks/events/keyDownEnter.js +28 -0
- package/dist/esm/MarkdownControl/plugins/blocks/events/toggleBlock.js +46 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/areCurrentAndPreviousBlocksOfType.js +20 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/getListTypeAtCursor.js +16 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/isCursorAtEndOfParagraph.js +19 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/isCursorAtStartOfBlockType.js +19 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/isCursorAtStartOfNonEmptyHeading.js +20 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/isCursorInBlockType.js +20 -0
- package/dist/esm/MarkdownControl/plugins/blocks/locations/isCursorInNonDefaultBlock.js +20 -0
- package/dist/esm/MarkdownControl/plugins/blocks/transforms/splitIntoParagraph.js +23 -0
- package/dist/esm/MarkdownControl/plugins/blocks/transforms/unwrapIfCursorAtStart.js +36 -0
- package/dist/esm/MarkdownControl/plugins/blocks/transforms/wrapListItemsInBlock.js +27 -0
- package/dist/esm/MarkdownControl/plugins/blocks/withBlocks.js +19 -0
- package/dist/esm/MarkdownControl/plugins/inlines/events/keyDown.js +39 -0
- package/dist/esm/MarkdownControl/plugins/inlines/events/keyDownShiftEnter.js +27 -0
- package/dist/esm/MarkdownControl/plugins/inlines/events/toggleLink.js +24 -0
- package/dist/esm/MarkdownControl/plugins/inlines/events/toggleMark.js +18 -0
- package/dist/esm/MarkdownControl/plugins/inlines/locations/isMarkActive.js +17 -0
- package/dist/esm/MarkdownControl/plugins/inlines/selectors/getActiveLink.js +15 -0
- package/dist/esm/MarkdownControl/plugins/inlines/transforms/unwrapLink.js +14 -0
- package/dist/esm/MarkdownControl/plugins/inlines/transforms/wrapLink.js +45 -0
- package/dist/esm/MarkdownControl/plugins/inlines/withInlines.js +23 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/keyDown.js +38 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/keyDownBackspace.js +29 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/keyDownEnter.js +44 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/keyDownShiftTab.js +32 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/keyDownTab.js +57 -0
- package/dist/esm/MarkdownControl/plugins/lists/events/toggleListType.js +29 -0
- package/dist/esm/MarkdownControl/plugins/lists/locations/isCursorAtListItemStart.js +18 -0
- package/dist/esm/MarkdownControl/plugins/lists/locations/isCursorAtNoninitialParagraphStart.js +17 -0
- package/dist/esm/MarkdownControl/plugins/lists/locations/isCursorInItemContainingNestedList.js +14 -0
- package/dist/esm/MarkdownControl/plugins/lists/locations/isCursorInListItem.js +20 -0
- package/dist/esm/MarkdownControl/plugins/lists/locations/isSelectionWithinNoninitialListItem.js +18 -0
- package/dist/esm/MarkdownControl/plugins/lists/selectors/getListContainedInListItem.js +18 -0
- package/dist/esm/MarkdownControl/plugins/lists/selectors/getLowestAncestorList.js +15 -0
- package/dist/esm/MarkdownControl/plugins/lists/selectors/getLowestAncestorQuote.js +15 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/changeListType.js +24 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/convertParagraphToListItem.js +27 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/liftFirstMatchedParent.js +20 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/liftListItem.js +37 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/mergeWithPreviousListItem.js +19 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/moveListToListItem.js +18 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/splitListItem.js +37 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/splitToNestedList.js +37 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/unwrapFirstMatchedParent.js +14 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/unwrapSelectionFromList.js +25 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/wrapFirstMatchedParent.js +14 -0
- package/dist/esm/MarkdownControl/plugins/lists/transforms/wrapSelectionInList.js +27 -0
- package/dist/esm/MarkdownControl/plugins/lists/withLists.js +67 -0
- package/dist/esm/MarkdownControl/plugins/matchers/lowestMatchedAncestor.js +13 -0
- package/dist/esm/MarkdownControl/plugins/matchers/matchLink.js +14 -0
- package/dist/esm/MarkdownControl/plugins/matchers/matchedAncestors.js +15 -0
- package/dist/esm/MarkdownControl/plugins/shortcodes/insertShortcode.js +35 -0
- package/dist/esm/MarkdownControl/plugins/shortcodes/locations/isCursorInEmptyParagraph.js +20 -0
- package/dist/esm/MarkdownControl/plugins/shortcodes/withShortcodes.js +30 -0
- package/dist/esm/MarkdownControl/plugins/util.js +18 -0
- package/dist/esm/MarkdownControl/renderers.js +326 -0
- package/dist/esm/MarkdownPreview.js +47 -0
- package/dist/esm/index.js +31 -0
- package/dist/esm/regexHelper.js +151 -0
- package/dist/esm/schema.js +35 -0
- package/dist/esm/serializers/index.js +233 -0
- package/dist/esm/serializers/rehypePaperEmoji.js +24 -0
- package/dist/esm/serializers/remarkAllowHtmlEntities.js +55 -0
- package/dist/esm/serializers/remarkAssertParents.js +89 -0
- package/dist/esm/serializers/remarkEscapeMarkdownEntities.js +271 -0
- package/dist/esm/serializers/remarkImagesToText.js +41 -0
- package/dist/esm/serializers/remarkPaddedLinks.js +127 -0
- package/dist/esm/serializers/remarkRehypeShortcodes.js +93 -0
- package/dist/esm/serializers/remarkShortcodes.js +123 -0
- package/dist/esm/serializers/remarkSlate.js +518 -0
- package/dist/esm/serializers/remarkSquashReferences.js +88 -0
- package/dist/esm/serializers/remarkStripTrailingBreaks.js +61 -0
- package/dist/esm/serializers/remarkWrapHtml.js +24 -0
- package/dist/esm/serializers/slateRemark.js +512 -0
- package/dist/esm/styles.js +18 -0
- package/dist/esm/types.js +10 -0
- package/package.json +64 -0
- package/src/MarkdownControl/RawEditor.js +100 -0
- package/src/MarkdownControl/Toolbar.js +278 -0
- package/src/MarkdownControl/ToolbarButton.js +48 -0
- package/src/MarkdownControl/VisualEditor.js +293 -0
- package/src/MarkdownControl/__tests__/VisualEditor.spec.js +56 -0
- package/src/MarkdownControl/__tests__/__snapshots__/parser.spec.js.snap +543 -0
- package/src/MarkdownControl/__tests__/parser.spec.js +668 -0
- package/src/MarkdownControl/components/Shortcode.js +74 -0
- package/src/MarkdownControl/components/VoidBlock.js +58 -0
- package/src/MarkdownControl/index.js +125 -0
- package/src/MarkdownControl/plugins/BreakToDefaultBlock.js +23 -0
- package/src/MarkdownControl/plugins/CloseBlock.js +25 -0
- package/src/MarkdownControl/plugins/CommandsAndQueries.js +156 -0
- package/src/MarkdownControl/plugins/ForceInsert.js +38 -0
- package/src/MarkdownControl/plugins/Hotkey.js +29 -0
- package/src/MarkdownControl/plugins/LineBreak.js +15 -0
- package/src/MarkdownControl/plugins/Link.js +40 -0
- package/src/MarkdownControl/plugins/blocks/defaultEmptyBlock.js +8 -0
- package/src/MarkdownControl/plugins/blocks/events/keyDown.js +47 -0
- package/src/MarkdownControl/plugins/blocks/events/keyDownBackspace.js +27 -0
- package/src/MarkdownControl/plugins/blocks/events/keyDownEnter.js +26 -0
- package/src/MarkdownControl/plugins/blocks/events/toggleBlock.js +39 -0
- package/src/MarkdownControl/plugins/blocks/locations/areCurrentAndPreviousBlocksOfType.js +15 -0
- package/src/MarkdownControl/plugins/blocks/locations/getListTypeAtCursor.js +11 -0
- package/src/MarkdownControl/plugins/blocks/locations/isCursorAtEndOfParagraph.js +14 -0
- package/src/MarkdownControl/plugins/blocks/locations/isCursorAtStartOfBlockType.js +14 -0
- package/src/MarkdownControl/plugins/blocks/locations/isCursorAtStartOfNonEmptyHeading.js +22 -0
- package/src/MarkdownControl/plugins/blocks/locations/isCursorInBlockType.js +27 -0
- package/src/MarkdownControl/plugins/blocks/locations/isCursorInNonDefaultBlock.js +17 -0
- package/src/MarkdownControl/plugins/blocks/transforms/splitIntoParagraph.js +13 -0
- package/src/MarkdownControl/plugins/blocks/transforms/unwrapIfCursorAtStart.js +30 -0
- package/src/MarkdownControl/plugins/blocks/transforms/wrapListItemsInBlock.js +11 -0
- package/src/MarkdownControl/plugins/blocks/withBlocks.js +15 -0
- package/src/MarkdownControl/plugins/inlines/events/keyDown.js +38 -0
- package/src/MarkdownControl/plugins/inlines/events/keyDownShiftEnter.js +28 -0
- package/src/MarkdownControl/plugins/inlines/events/toggleLink.js +17 -0
- package/src/MarkdownControl/plugins/inlines/events/toggleMark.js +13 -0
- package/src/MarkdownControl/plugins/inlines/locations/isMarkActive.js +11 -0
- package/src/MarkdownControl/plugins/inlines/selectors/getActiveLink.js +10 -0
- package/src/MarkdownControl/plugins/inlines/transforms/unwrapLink.js +9 -0
- package/src/MarkdownControl/plugins/inlines/transforms/wrapLink.js +30 -0
- package/src/MarkdownControl/plugins/inlines/withInlines.js +20 -0
- package/src/MarkdownControl/plugins/lists/events/keyDown.js +34 -0
- package/src/MarkdownControl/plugins/lists/events/keyDownBackspace.js +31 -0
- package/src/MarkdownControl/plugins/lists/events/keyDownEnter.js +39 -0
- package/src/MarkdownControl/plugins/lists/events/keyDownShiftTab.js +27 -0
- package/src/MarkdownControl/plugins/lists/events/keyDownTab.js +55 -0
- package/src/MarkdownControl/plugins/lists/events/toggleListType.js +23 -0
- package/src/MarkdownControl/plugins/lists/locations/isCursorAtListItemStart.js +13 -0
- package/src/MarkdownControl/plugins/lists/locations/isCursorAtNoninitialParagraphStart.js +11 -0
- package/src/MarkdownControl/plugins/lists/locations/isCursorInItemContainingNestedList.js +9 -0
- package/src/MarkdownControl/plugins/lists/locations/isCursorInListItem.js +21 -0
- package/src/MarkdownControl/plugins/lists/locations/isSelectionWithinNoninitialListItem.js +14 -0
- package/src/MarkdownControl/plugins/lists/selectors/getListContainedInListItem.js +12 -0
- package/src/MarkdownControl/plugins/lists/selectors/getLowestAncestorList.js +11 -0
- package/src/MarkdownControl/plugins/lists/selectors/getLowestAncestorQuote.js +11 -0
- package/src/MarkdownControl/plugins/lists/transforms/changeListType.js +16 -0
- package/src/MarkdownControl/plugins/lists/transforms/convertParagraphToListItem.js +19 -0
- package/src/MarkdownControl/plugins/lists/transforms/liftFirstMatchedParent.js +11 -0
- package/src/MarkdownControl/plugins/lists/transforms/liftListItem.js +30 -0
- package/src/MarkdownControl/plugins/lists/transforms/mergeWithPreviousListItem.js +13 -0
- package/src/MarkdownControl/plugins/lists/transforms/moveListToListItem.js +13 -0
- package/src/MarkdownControl/plugins/lists/transforms/splitListItem.js +33 -0
- package/src/MarkdownControl/plugins/lists/transforms/splitToNestedList.js +33 -0
- package/src/MarkdownControl/plugins/lists/transforms/unwrapFirstMatchedParent.js +9 -0
- package/src/MarkdownControl/plugins/lists/transforms/unwrapSelectionFromList.js +14 -0
- package/src/MarkdownControl/plugins/lists/transforms/wrapFirstMatchedParent.js +9 -0
- package/src/MarkdownControl/plugins/lists/transforms/wrapSelectionInList.js +17 -0
- package/src/MarkdownControl/plugins/lists/withLists.js +66 -0
- package/src/MarkdownControl/plugins/matchers/lowestMatchedAncestor.js +6 -0
- package/src/MarkdownControl/plugins/matchers/matchLink.js +9 -0
- package/src/MarkdownControl/plugins/matchers/matchedAncestors.js +18 -0
- package/src/MarkdownControl/plugins/shortcodes/insertShortcode.js +34 -0
- package/src/MarkdownControl/plugins/shortcodes/locations/isCursorInEmptyParagraph.js +17 -0
- package/src/MarkdownControl/plugins/shortcodes/withShortcodes.js +26 -0
- package/src/MarkdownControl/plugins/util.js +11 -0
- package/src/MarkdownControl/renderers.js +352 -0
- package/src/MarkdownPreview.js +27 -0
- package/src/__tests__/__snapshots__/renderer.spec.js.snap +239 -0
- package/src/__tests__/renderer.spec.js +261 -0
- package/src/index.js +16 -0
- package/src/regexHelper.js +137 -0
- package/src/schema.js +35 -0
- package/src/serializers/__tests__/__fixtures__/commonmarkExpected.json +625 -0
- package/src/serializers/__tests__/__fixtures__/duplicate_marks_github_issue_3280.md +1 -0
- package/src/serializers/__tests__/commonmark.spec.js +110 -0
- package/src/serializers/__tests__/index.spec.js +52 -0
- package/src/serializers/__tests__/remarkAllowHtmlEntities.spec.js +25 -0
- package/src/serializers/__tests__/remarkAssertParents.spec.js +171 -0
- package/src/serializers/__tests__/remarkEscapeMarkdownEntities.spec.js +84 -0
- package/src/serializers/__tests__/remarkPaddedLinks.spec.js +43 -0
- package/src/serializers/__tests__/remarkPlugins.spec.js +299 -0
- package/src/serializers/__tests__/remarkShortcodes.spec.js +106 -0
- package/src/serializers/__tests__/remarkSlate.spec.js +67 -0
- package/src/serializers/__tests__/remarkStripTrailingBreaks.spec.js +23 -0
- package/src/serializers/__tests__/slate.spec.js +300 -0
- package/src/serializers/index.js +226 -0
- package/src/serializers/rehypePaperEmoji.js +16 -0
- package/src/serializers/remarkAllowHtmlEntities.js +58 -0
- package/src/serializers/remarkAssertParents.js +83 -0
- package/src/serializers/remarkEscapeMarkdownEntities.js +269 -0
- package/src/serializers/remarkImagesToText.js +26 -0
- package/src/serializers/remarkPaddedLinks.js +120 -0
- package/src/serializers/remarkRehypeShortcodes.js +67 -0
- package/src/serializers/remarkShortcodes.js +106 -0
- package/src/serializers/remarkSlate.js +425 -0
- package/src/serializers/remarkSquashReferences.js +73 -0
- package/src/serializers/remarkStripTrailingBreaks.js +56 -0
- package/src/serializers/remarkWrapHtml.js +20 -0
- package/src/serializers/slateRemark.js +468 -0
- package/src/styles.js +13 -0
- package/src/types.js +3 -0
- package/test-helpers/h.js +32 -0
- package/webpack.config.js +3 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = slateToRemark;
|
|
7
|
+
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
8
|
+
var _intersection2 = _interopRequireDefault(require("lodash/intersection"));
|
|
9
|
+
var _map2 = _interopRequireDefault(require("lodash/map"));
|
|
10
|
+
var _last2 = _interopRequireDefault(require("lodash/last"));
|
|
11
|
+
var _without2 = _interopRequireDefault(require("lodash/without"));
|
|
12
|
+
var _get4 = _interopRequireDefault(require("lodash/get"));
|
|
13
|
+
var _unistBuilder = _interopRequireDefault(require("unist-builder"));
|
|
14
|
+
var _mdastUtilToString = _interopRequireDefault(require("mdast-util-to-string"));
|
|
15
|
+
const _excluded = ["lang", "code"],
|
|
16
|
+
_excluded2 = ["url", "title", "alt"];
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
19
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
24
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
25
|
+
/**
|
|
26
|
+
* Map of Slate node types to MDAST/Remark node types.
|
|
27
|
+
*/
|
|
28
|
+
const typeMap = {
|
|
29
|
+
root: 'root',
|
|
30
|
+
paragraph: 'paragraph',
|
|
31
|
+
'heading-one': 'heading',
|
|
32
|
+
'heading-two': 'heading',
|
|
33
|
+
'heading-three': 'heading',
|
|
34
|
+
'heading-four': 'heading',
|
|
35
|
+
'heading-five': 'heading',
|
|
36
|
+
'heading-six': 'heading',
|
|
37
|
+
quote: 'blockquote',
|
|
38
|
+
'code-block': 'code',
|
|
39
|
+
'numbered-list': 'list',
|
|
40
|
+
'bulleted-list': 'list',
|
|
41
|
+
'list-item': 'listItem',
|
|
42
|
+
table: 'table',
|
|
43
|
+
'table-row': 'tableRow',
|
|
44
|
+
'table-cell': 'tableCell',
|
|
45
|
+
break: 'break',
|
|
46
|
+
'thematic-break': 'thematicBreak',
|
|
47
|
+
link: 'link',
|
|
48
|
+
image: 'image',
|
|
49
|
+
shortcode: 'shortcode'
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Map of Slate mark types to MDAST/Remark node types.
|
|
54
|
+
*/
|
|
55
|
+
const markMap = {
|
|
56
|
+
bold: 'strong',
|
|
57
|
+
italic: 'emphasis',
|
|
58
|
+
delete: 'delete',
|
|
59
|
+
code: 'inlineCode'
|
|
60
|
+
};
|
|
61
|
+
const blockTypes = ['paragraph', 'quote', 'heading-one', 'heading-two', 'heading-three', 'heading-four', 'heading-five', 'heading-six', 'bulleted-list', 'numbered-list', 'list-item', 'shortcode', 'table', 'table-row', 'table-cell'];
|
|
62
|
+
const inlineTypes = ['link', 'image', 'break'];
|
|
63
|
+
const leadingWhitespaceExp = /^\s+\S/;
|
|
64
|
+
const trailingWhitespaceExp = /(?!\S)\s+$/;
|
|
65
|
+
function slateToRemark(value, {
|
|
66
|
+
voidCodeBlock
|
|
67
|
+
}) {
|
|
68
|
+
/**
|
|
69
|
+
* The Slate Raw AST generally won't have a top level type, so we set it to
|
|
70
|
+
* "root" for clarity.
|
|
71
|
+
*/
|
|
72
|
+
const root = {
|
|
73
|
+
type: 'root',
|
|
74
|
+
children: value
|
|
75
|
+
};
|
|
76
|
+
return transform(root);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The transform function mimics the approach of a Remark plugin for
|
|
80
|
+
* conformity with the other serialization functions. This function converts
|
|
81
|
+
* Slate nodes to MDAST nodes, and recursively calls itself to process child
|
|
82
|
+
* nodes to arbitrary depth.
|
|
83
|
+
*/
|
|
84
|
+
function transform(node) {
|
|
85
|
+
/**
|
|
86
|
+
* Combine adjacent text and inline nodes before processing so they can
|
|
87
|
+
* share marks.
|
|
88
|
+
*/
|
|
89
|
+
const hasBlockChildren = node.children && node.children[0] && blockTypes.includes(node.children[0].type);
|
|
90
|
+
const children = hasBlockChildren ? node.children.map(transform).filter(v => v) : convertInlineAndTextChildren(node.children);
|
|
91
|
+
const output = convertBlockNode(node, children);
|
|
92
|
+
//console.log(JSON.stringify(output, null, 2));
|
|
93
|
+
return output;
|
|
94
|
+
}
|
|
95
|
+
function removeMarkFromNodes(nodes, markType) {
|
|
96
|
+
return nodes.map(node => {
|
|
97
|
+
const newNode = _objectSpread({}, node);
|
|
98
|
+
switch (node.type) {
|
|
99
|
+
case 'link':
|
|
100
|
+
{
|
|
101
|
+
const updatedNodes = removeMarkFromNodes(node.children, markType);
|
|
102
|
+
return _objectSpread(_objectSpread({}, node), {}, {
|
|
103
|
+
children: updatedNodes
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
case 'image':
|
|
107
|
+
case 'break':
|
|
108
|
+
{
|
|
109
|
+
const data = (0, _omit2.default)(node.data, 'marks');
|
|
110
|
+
return _objectSpread(_objectSpread({}, node), {}, {
|
|
111
|
+
data
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
delete newNode[markType];
|
|
116
|
+
newNode.marks = newNode.marks ? newNode.marks.filter(({
|
|
117
|
+
type
|
|
118
|
+
}) => type !== markType) : [];
|
|
119
|
+
if (newNode.marks.length === 0) {
|
|
120
|
+
delete newNode.marks;
|
|
121
|
+
}
|
|
122
|
+
return newNode;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function getNodeMarks(node) {
|
|
127
|
+
switch (node.type) {
|
|
128
|
+
case 'link':
|
|
129
|
+
{
|
|
130
|
+
// Code marks can't always be condensed together. If all text in a link
|
|
131
|
+
// is wrapped in a mark, this function returns that mark and the node
|
|
132
|
+
// ends up nested inside of that mark. Code marks sometimes can't do
|
|
133
|
+
// that, like when they wrap all of the text content of a link. Here we
|
|
134
|
+
// remove code marks before processing so that they stay put.
|
|
135
|
+
const nodesWithoutCode = node.children.map(n => {
|
|
136
|
+
const newNode = _objectSpread({}, n);
|
|
137
|
+
newNode.marks = n.marks ? n.marks.filter(({
|
|
138
|
+
type
|
|
139
|
+
}) => type !== 'code') : n.marks, delete newNode.code;
|
|
140
|
+
return newNode;
|
|
141
|
+
});
|
|
142
|
+
const childMarks = (0, _map2.default)(nodesWithoutCode, getNodeMarks);
|
|
143
|
+
return (0, _intersection2.default)(...childMarks);
|
|
144
|
+
}
|
|
145
|
+
case 'break':
|
|
146
|
+
case 'image':
|
|
147
|
+
return (0, _map2.default)((0, _get4.default)(node, ['data', 'marks']), mark => mark.type);
|
|
148
|
+
default:
|
|
149
|
+
return getNodeMarkArray(node);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function getNodeMarkArray(node) {
|
|
153
|
+
return Object.keys(markMap).filter(mark => !!node[mark]);
|
|
154
|
+
}
|
|
155
|
+
function getSharedMarks(marks, node) {
|
|
156
|
+
const nodeMarks = getNodeMarks(node);
|
|
157
|
+
const sharedMarks = (0, _intersection2.default)(marks, nodeMarks);
|
|
158
|
+
if (sharedMarks[0] === 'code') {
|
|
159
|
+
return nodeMarks.length === 1 ? marks : [];
|
|
160
|
+
}
|
|
161
|
+
return sharedMarks;
|
|
162
|
+
}
|
|
163
|
+
function extractFirstMark(nodes) {
|
|
164
|
+
let firstGroupMarks = getNodeMarks(nodes[0]) || [];
|
|
165
|
+
|
|
166
|
+
// If code mark is present, but there are other marks, process others first.
|
|
167
|
+
// If only the code mark is present, don't allow it to be shared with other
|
|
168
|
+
// nodes.
|
|
169
|
+
if (firstGroupMarks[0] === 'code' && firstGroupMarks.length > 1) {
|
|
170
|
+
firstGroupMarks = [...(0, _without2.default)('firstGroupMarks', 'code'), 'code'];
|
|
171
|
+
}
|
|
172
|
+
let splitIndex = 1;
|
|
173
|
+
if (firstGroupMarks.length > 0) {
|
|
174
|
+
while (splitIndex < nodes.length) {
|
|
175
|
+
if (nodes[splitIndex]) {
|
|
176
|
+
const sharedMarks = getSharedMarks(firstGroupMarks, nodes[splitIndex]);
|
|
177
|
+
if (sharedMarks.length > 0) {
|
|
178
|
+
firstGroupMarks = sharedMarks;
|
|
179
|
+
} else {
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
splitIndex += 1;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const markType = firstGroupMarks[0];
|
|
187
|
+
const childNodes = nodes.slice(0, splitIndex);
|
|
188
|
+
const updatedChildNodes = markType ? removeMarkFromNodes(childNodes, markType) : childNodes;
|
|
189
|
+
const remainingNodes = nodes.slice(splitIndex);
|
|
190
|
+
return [markType, updatedChildNodes, remainingNodes];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Converts the strings returned from `splitToNamedParts` to Slate nodes.
|
|
195
|
+
*/
|
|
196
|
+
function splitWhitespace(node, {
|
|
197
|
+
trailing
|
|
198
|
+
} = {}) {
|
|
199
|
+
if (!node.text) {
|
|
200
|
+
return {
|
|
201
|
+
trimmedNode: node
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const exp = trailing ? trailingWhitespaceExp : leadingWhitespaceExp;
|
|
205
|
+
const index = node.text.search(exp);
|
|
206
|
+
if (index > -1) {
|
|
207
|
+
const substringIndex = trailing ? index : index + 1;
|
|
208
|
+
const firstSplit = node.text.slice(0, substringIndex);
|
|
209
|
+
const secondSplit = node.text.slice(substringIndex);
|
|
210
|
+
const whitespace = trailing ? secondSplit : firstSplit;
|
|
211
|
+
const text = trailing ? firstSplit : secondSplit;
|
|
212
|
+
return {
|
|
213
|
+
whitespace,
|
|
214
|
+
trimmedNode: _objectSpread(_objectSpread({}, node), {}, {
|
|
215
|
+
text
|
|
216
|
+
})
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
trimmedNode: node
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function collectCenterNodes(nodes, leadingNode, trailingNode) {
|
|
224
|
+
switch (nodes.length) {
|
|
225
|
+
case 0:
|
|
226
|
+
return [];
|
|
227
|
+
case 1:
|
|
228
|
+
return [trailingNode];
|
|
229
|
+
case 2:
|
|
230
|
+
return [leadingNode, trailingNode];
|
|
231
|
+
default:
|
|
232
|
+
return [leadingNode, ...nodes.slice(1, -1), trailingNode];
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function normalizeFlankingWhitespace(nodes) {
|
|
236
|
+
const {
|
|
237
|
+
whitespace: leadingWhitespace,
|
|
238
|
+
trimmedNode: leadingNode
|
|
239
|
+
} = splitWhitespace(nodes[0]);
|
|
240
|
+
const lastNode = nodes.length > 1 ? (0, _last2.default)(nodes) : leadingNode;
|
|
241
|
+
const trailingSplitResult = splitWhitespace(lastNode, {
|
|
242
|
+
trailing: true
|
|
243
|
+
});
|
|
244
|
+
const {
|
|
245
|
+
whitespace: trailingWhitespace,
|
|
246
|
+
trimmedNode: trailingNode
|
|
247
|
+
} = trailingSplitResult;
|
|
248
|
+
const centerNodes = collectCenterNodes(nodes, leadingNode, trailingNode).filter(val => val);
|
|
249
|
+
return {
|
|
250
|
+
leadingWhitespace,
|
|
251
|
+
centerNodes,
|
|
252
|
+
trailingWhitespace
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function createText(text) {
|
|
256
|
+
return text && (0, _unistBuilder.default)('html', text);
|
|
257
|
+
}
|
|
258
|
+
function isNodeInline(node) {
|
|
259
|
+
return inlineTypes.includes(node.type);
|
|
260
|
+
}
|
|
261
|
+
function convertInlineAndTextChildren(nodes = []) {
|
|
262
|
+
const convertedNodes = [];
|
|
263
|
+
let remainingNodes = [...nodes];
|
|
264
|
+
while (remainingNodes.length > 0) {
|
|
265
|
+
const nextNode = remainingNodes[0];
|
|
266
|
+
if (isNodeInline(nextNode) || getNodeMarkArray(nextNode).length > 0) {
|
|
267
|
+
const [markType, markNodes, remainder] = extractFirstMark(remainingNodes);
|
|
268
|
+
/**
|
|
269
|
+
* A node with a code mark will be a text node, and will not be adjacent
|
|
270
|
+
* to a sibling code node as the Slate schema requires them to be
|
|
271
|
+
* merged. Markdown also requires at least a space between inline code
|
|
272
|
+
* nodes.
|
|
273
|
+
*/
|
|
274
|
+
if (markType === 'code') {
|
|
275
|
+
const node = markNodes[0];
|
|
276
|
+
convertedNodes.push((0, _unistBuilder.default)(markMap[markType], node.data, node.text));
|
|
277
|
+
} else if (!markType && markNodes.length === 1 && isNodeInline(nextNode)) {
|
|
278
|
+
const node = markNodes[0];
|
|
279
|
+
convertedNodes.push(convertInlineNode(node, convertInlineAndTextChildren(node.children)));
|
|
280
|
+
} else {
|
|
281
|
+
const {
|
|
282
|
+
leadingWhitespace,
|
|
283
|
+
trailingWhitespace,
|
|
284
|
+
centerNodes
|
|
285
|
+
} = normalizeFlankingWhitespace(markNodes);
|
|
286
|
+
const children = convertInlineAndTextChildren(centerNodes);
|
|
287
|
+
const markNode = (0, _unistBuilder.default)(markMap[markType], children);
|
|
288
|
+
|
|
289
|
+
// Filter out empty marks, otherwise their output literally by
|
|
290
|
+
// remark-stringify, eg. an empty bold node becomes "****"
|
|
291
|
+
if ((0, _mdastUtilToString.default)(markNode) === '') {
|
|
292
|
+
remainingNodes = remainder;
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const normalizedNodes = [createText(leadingWhitespace), markNode, createText(trailingWhitespace)].filter(val => val);
|
|
296
|
+
convertedNodes.push(...normalizedNodes);
|
|
297
|
+
}
|
|
298
|
+
remainingNodes = remainder;
|
|
299
|
+
} else if (nextNode.type === 'break') {
|
|
300
|
+
remainingNodes = remainingNodes.slice(1);
|
|
301
|
+
convertedNodes.push(convertInlineNode(nextNode));
|
|
302
|
+
} else {
|
|
303
|
+
remainingNodes.shift();
|
|
304
|
+
convertedNodes.push((0, _unistBuilder.default)('html', nextNode.text));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return convertedNodes;
|
|
308
|
+
}
|
|
309
|
+
function convertCodeBlock(node) {
|
|
310
|
+
return _objectSpread(_objectSpread({}, node), {}, {
|
|
311
|
+
type: 'code-block',
|
|
312
|
+
data: _objectSpread(_objectSpread({}, node.data), node.data.shortcodeData)
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
function convertBlockNode(node, children) {
|
|
316
|
+
if (node.type == 'shortcode' && node.data.shortcode == 'code-block') {
|
|
317
|
+
node = convertCodeBlock(node);
|
|
318
|
+
}
|
|
319
|
+
switch (node.type) {
|
|
320
|
+
/**
|
|
321
|
+
* General
|
|
322
|
+
*
|
|
323
|
+
* Convert simple cases that only require a type and children, with no
|
|
324
|
+
* additional properties.
|
|
325
|
+
*/
|
|
326
|
+
case 'root':
|
|
327
|
+
case 'paragraph':
|
|
328
|
+
case 'quote':
|
|
329
|
+
case 'list-item':
|
|
330
|
+
case 'table':
|
|
331
|
+
case 'table-row':
|
|
332
|
+
case 'table-cell':
|
|
333
|
+
{
|
|
334
|
+
return (0, _unistBuilder.default)(typeMap[node.type], children);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Lists
|
|
339
|
+
*
|
|
340
|
+
* Enclose list items in paragraphs
|
|
341
|
+
*/
|
|
342
|
+
// case 'list-item':
|
|
343
|
+
// return u(typeMap[node.type], [{ type: 'paragraph', children }]);
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Shortcodes
|
|
347
|
+
*
|
|
348
|
+
* Shortcode nodes only exist in Slate's Raw AST if they were inserted
|
|
349
|
+
* via the plugin toolbar in memory, so they should always have
|
|
350
|
+
* shortcode data attached. The "shortcode" data property contains the
|
|
351
|
+
* name of the registered shortcode plugin, and the "shortcodeData" data
|
|
352
|
+
* property contains the data received from the shortcode plugin's
|
|
353
|
+
* `fromBlock` method when the shortcode node was created.
|
|
354
|
+
*
|
|
355
|
+
* Here we create a `shortcode` MDAST node that contains only the shortcode
|
|
356
|
+
* data.
|
|
357
|
+
*/
|
|
358
|
+
case 'shortcode':
|
|
359
|
+
{
|
|
360
|
+
const {
|
|
361
|
+
data
|
|
362
|
+
} = node;
|
|
363
|
+
return (0, _unistBuilder.default)(typeMap[node.type], {
|
|
364
|
+
data
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Headings
|
|
370
|
+
*
|
|
371
|
+
* Slate schemas don't usually infer basic type info from data, so each
|
|
372
|
+
* level of heading is a separately named type. The MDAST schema just
|
|
373
|
+
* has a single "heading" type with the depth stored in a "depth"
|
|
374
|
+
* property on the node. Here we derive the depth from the Slate node
|
|
375
|
+
* type - e.g., for "heading-two", we need a depth value of "2".
|
|
376
|
+
*/
|
|
377
|
+
case 'heading-one':
|
|
378
|
+
case 'heading-two':
|
|
379
|
+
case 'heading-three':
|
|
380
|
+
case 'heading-four':
|
|
381
|
+
case 'heading-five':
|
|
382
|
+
case 'heading-six':
|
|
383
|
+
{
|
|
384
|
+
const depthMap = {
|
|
385
|
+
one: 1,
|
|
386
|
+
two: 2,
|
|
387
|
+
three: 3,
|
|
388
|
+
four: 4,
|
|
389
|
+
five: 5,
|
|
390
|
+
six: 6
|
|
391
|
+
};
|
|
392
|
+
const depthText = node.type.split('-')[1];
|
|
393
|
+
const depth = depthMap[depthText];
|
|
394
|
+
const mdastNode = (0, _unistBuilder.default)(typeMap[node.type], {
|
|
395
|
+
depth
|
|
396
|
+
}, children);
|
|
397
|
+
if ((0, _mdastUtilToString.default)(mdastNode)) {
|
|
398
|
+
return mdastNode;
|
|
399
|
+
}
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Code Blocks
|
|
405
|
+
*
|
|
406
|
+
* Code block nodes may have a single text child, or instead be void and
|
|
407
|
+
* store their value in `data.code`. They also may have a code language
|
|
408
|
+
* stored in the "lang" data property. Here we transfer both the node value
|
|
409
|
+
* and the "lang" data property to the new MDAST node, and spread any
|
|
410
|
+
* remaining data as `data`.
|
|
411
|
+
*/
|
|
412
|
+
case 'code-block':
|
|
413
|
+
{
|
|
414
|
+
var _children$;
|
|
415
|
+
const _get2 = (0, _get4.default)(node, 'data', {}),
|
|
416
|
+
{
|
|
417
|
+
lang,
|
|
418
|
+
code
|
|
419
|
+
} = _get2,
|
|
420
|
+
data = _objectWithoutProperties(_get2, _excluded);
|
|
421
|
+
const value = voidCodeBlock ? code : (_children$ = children[0]) === null || _children$ === void 0 ? void 0 : _children$.value;
|
|
422
|
+
return (0, _unistBuilder.default)(typeMap[node.type], {
|
|
423
|
+
lang,
|
|
424
|
+
data
|
|
425
|
+
}, value || '');
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Lists
|
|
430
|
+
*
|
|
431
|
+
* Our Slate schema has separate node types for ordered and unordered
|
|
432
|
+
* lists, but the MDAST spec uses a single type with a boolean "ordered"
|
|
433
|
+
* property to indicate whether the list is numbered. The MDAST spec also
|
|
434
|
+
* allows for a "start" property to indicate the first number used for an
|
|
435
|
+
* ordered list. Here we translate both values to our Slate schema.
|
|
436
|
+
*/
|
|
437
|
+
case 'numbered-list':
|
|
438
|
+
case 'bulleted-list':
|
|
439
|
+
{
|
|
440
|
+
const ordered = node.type === 'numbered-list';
|
|
441
|
+
const props = {
|
|
442
|
+
ordered,
|
|
443
|
+
start: (0, _get4.default)(node.data, 'start') || 1
|
|
444
|
+
};
|
|
445
|
+
return (0, _unistBuilder.default)(typeMap[node.type], props, children);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Thematic Break
|
|
450
|
+
*
|
|
451
|
+
* Thematic break is a block level break. They cannot have children.
|
|
452
|
+
*/
|
|
453
|
+
case 'thematic-break':
|
|
454
|
+
{
|
|
455
|
+
return (0, _unistBuilder.default)(typeMap[node.type]);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
function convertInlineNode(node, children) {
|
|
460
|
+
switch (node.type) {
|
|
461
|
+
/**
|
|
462
|
+
* Break
|
|
463
|
+
*
|
|
464
|
+
* Breaks are phrasing level breaks. They cannot have children.
|
|
465
|
+
*/
|
|
466
|
+
case 'break':
|
|
467
|
+
{
|
|
468
|
+
return (0, _unistBuilder.default)(typeMap[node.type]);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Links
|
|
473
|
+
*
|
|
474
|
+
* Url is now stored in data for slate, so we need to pull it out.
|
|
475
|
+
*/
|
|
476
|
+
case 'link':
|
|
477
|
+
{
|
|
478
|
+
const {
|
|
479
|
+
title,
|
|
480
|
+
data
|
|
481
|
+
} = node;
|
|
482
|
+
return (0, _unistBuilder.default)(typeMap[node.type], _objectSpread({
|
|
483
|
+
url: data === null || data === void 0 ? void 0 : data.url,
|
|
484
|
+
title
|
|
485
|
+
}, data), children);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Images
|
|
490
|
+
*
|
|
491
|
+
* This transformation is almost identical to that of links, except for the
|
|
492
|
+
* lack of child nodes and addition of `alt` attribute data.
|
|
493
|
+
*/
|
|
494
|
+
case 'image':
|
|
495
|
+
{
|
|
496
|
+
const _get3 = (0, _get4.default)(node, 'data', {}),
|
|
497
|
+
{
|
|
498
|
+
url,
|
|
499
|
+
title,
|
|
500
|
+
alt
|
|
501
|
+
} = _get3,
|
|
502
|
+
data = _objectWithoutProperties(_get3, _excluded2);
|
|
503
|
+
return (0, _unistBuilder.default)(typeMap[node.type], {
|
|
504
|
+
url,
|
|
505
|
+
title,
|
|
506
|
+
alt,
|
|
507
|
+
data
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.editorStyleVars = exports.EditorControlBar = void 0;
|
|
7
|
+
var _styledBase = _interopRequireDefault(require("@emotion/styled-base"));
|
|
8
|
+
var _decapCmsUiDefault = require("decap-cms-ui-default");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const editorStyleVars = {
|
|
11
|
+
stickyDistanceBottom: '100px'
|
|
12
|
+
};
|
|
13
|
+
exports.editorStyleVars = editorStyleVars;
|
|
14
|
+
const EditorControlBar = (0, _styledBase.default)("div", {
|
|
15
|
+
target: "ehaqqzm0",
|
|
16
|
+
label: "EditorControlBar"
|
|
17
|
+
})("z-index:", _decapCmsUiDefault.zIndex.zIndex200, ";position:sticky;top:0;margin-bottom:", editorStyleVars.stickyDistanceBottom, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTzBDIiwiZmlsZSI6Ii4uLy4uL3NyYy9zdHlsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB6SW5kZXggfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0b3JTdHlsZVZhcnMgPSB7XG4gIHN0aWNreURpc3RhbmNlQm90dG9tOiAnMTAwcHgnLFxufTtcblxuZXhwb3J0IGNvbnN0IEVkaXRvckNvbnRyb2xCYXIgPSBzdHlsZWQuZGl2YFxuICB6LWluZGV4OiAke3pJbmRleC56SW5kZXgyMDB9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206ICR7ZWRpdG9yU3R5bGVWYXJzLnN0aWNreURpc3RhbmNlQm90dG9tfTtcbmA7XG4iXX0= */"));
|
|
18
|
+
exports.EditorControlBar = EditorControlBar;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SLATE_DEFAULT_BLOCK_TYPE = exports.SLATE_BLOCK_PARENT_TYPES = void 0;
|
|
7
|
+
const SLATE_DEFAULT_BLOCK_TYPE = 'paragraph';
|
|
8
|
+
exports.SLATE_DEFAULT_BLOCK_TYPE = SLATE_DEFAULT_BLOCK_TYPE;
|
|
9
|
+
const SLATE_BLOCK_PARENT_TYPES = ['list-item', 'quote'];
|
|
10
|
+
exports.SLATE_BLOCK_PARENT_TYPES = SLATE_BLOCK_PARENT_TYPES;
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "decap-cms-widget-markdown",
|
|
3
|
+
"description": "Widget for editing markdown in Decap CMS.",
|
|
4
|
+
"version": "2.16.0-beta.0",
|
|
5
|
+
"homepage": "https://www.decapcms.org/docs/widgets/#markdown",
|
|
6
|
+
"repository": "https://github.com/decaporg/decap-cms/tree/master/packages/decap-cms-widget-markdown",
|
|
7
|
+
"bugs": "https://github.com/decaporg/decap-cms/issues",
|
|
8
|
+
"module": "dist/esm/index.js",
|
|
9
|
+
"main": "dist/decap-cms-widget-markdown.js",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"decap-cms",
|
|
13
|
+
"widget",
|
|
14
|
+
"markdown",
|
|
15
|
+
"editor"
|
|
16
|
+
],
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"scripts": {
|
|
19
|
+
"develop": "yarn build:esm --watch",
|
|
20
|
+
"build": "cross-env NODE_ENV=production webpack",
|
|
21
|
+
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"dompurify": "^2.2.6",
|
|
25
|
+
"is-hotkey": "^0.2.0",
|
|
26
|
+
"is-url": "^1.2.4",
|
|
27
|
+
"mdast-util-definitions": "^1.2.3",
|
|
28
|
+
"mdast-util-to-string": "^1.0.5",
|
|
29
|
+
"rehype-parse": "^6.0.0",
|
|
30
|
+
"rehype-remark": "^8.0.0",
|
|
31
|
+
"rehype-stringify": "^7.0.0",
|
|
32
|
+
"remark-parse": "^6.0.3",
|
|
33
|
+
"remark-rehype": "^4.0.0",
|
|
34
|
+
"remark-slate": "^1.8.6",
|
|
35
|
+
"remark-slate-transformer": "^0.7.4",
|
|
36
|
+
"remark-stringify": "^6.0.4",
|
|
37
|
+
"slate": "^0.91.1",
|
|
38
|
+
"slate-base64-serializer": "^0.2.107",
|
|
39
|
+
"slate-history": "^0.93.0",
|
|
40
|
+
"slate-plain-serializer": "^0.7.1",
|
|
41
|
+
"slate-react": "^0.91.2",
|
|
42
|
+
"slate-soft-break": "^0.9.0",
|
|
43
|
+
"unified": "^7.1.0",
|
|
44
|
+
"unist-builder": "^1.0.3",
|
|
45
|
+
"unist-util-visit-parents": "^2.0.1"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@emotion/core": "^10.0.35",
|
|
49
|
+
"@emotion/styled": "^10.0.27",
|
|
50
|
+
"decap-cms-ui-default": "^2.12.1",
|
|
51
|
+
"immutable": "^3.7.6",
|
|
52
|
+
"lodash": "^4.17.11",
|
|
53
|
+
"prop-types": "^15.7.2",
|
|
54
|
+
"react": "^16.8.4 || ^17.0.0",
|
|
55
|
+
"react-dom": "^16.8.4 || ^17.0.0",
|
|
56
|
+
"react-immutable-proptypes": "^2.1.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"commonmark": "^0.30.0",
|
|
60
|
+
"commonmark-spec": "^0.30.0",
|
|
61
|
+
"slate-hyperscript": "^0.77.0"
|
|
62
|
+
},
|
|
63
|
+
"gitHead": "1bdf716e5655bf088a343cd90210a2d361a9db52"
|
|
64
|
+
}
|