@valkyrianlabs/payload-markdown 1.3.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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/blocks/MarkdownBlock/Component.d.ts +2 -0
- package/dist/blocks/MarkdownBlock/Component.js +13 -0
- package/dist/blocks/MarkdownBlock/Component.js.map +1 -0
- package/dist/blocks/MarkdownBlock/config.d.ts +2 -0
- package/dist/blocks/MarkdownBlock/config.js +20 -0
- package/dist/blocks/MarkdownBlock/config.js.map +1 -0
- package/dist/blocks/MarkdownBlock/types.d.js +3 -0
- package/dist/blocks/MarkdownBlock/types.d.js.map +1 -0
- package/dist/components/MarkdownRenderer/Component.client.d.ts +5 -0
- package/dist/components/MarkdownRenderer/Component.client.js +163 -0
- package/dist/components/MarkdownRenderer/Component.client.js.map +1 -0
- package/dist/components/MarkdownRenderer/Component.d.ts +3 -0
- package/dist/components/MarkdownRenderer/Component.js +87 -0
- package/dist/components/MarkdownRenderer/Component.js.map +1 -0
- package/dist/components/MarkdownRenderer/index.css +69 -0
- package/dist/components/MarkdownRenderer/index.module.css +45 -0
- package/dist/components/MarkdownRenderer/index.module.scss +43 -0
- package/dist/components/MarkdownRenderer/index.scss +83 -0
- package/dist/components/MarkdownRenderer/types.d.js +5 -0
- package/dist/components/MarkdownRenderer/types.d.js.map +1 -0
- package/dist/core/codeConfig.d.ts +6 -0
- package/dist/core/codeConfig.js +45 -0
- package/dist/core/codeConfig.js.map +1 -0
- package/dist/core/codeToHtml.d.ts +5 -0
- package/dist/core/codeToHtml.js +180 -0
- package/dist/core/codeToHtml.js.map +1 -0
- package/dist/core/plugins/rehypeApplyLayoutClasses.d.ts +4 -0
- package/dist/core/plugins/rehypeApplyLayoutClasses.js +72 -0
- package/dist/core/plugins/rehypeApplyLayoutClasses.js.map +1 -0
- package/dist/core/plugins/rehypeStripAuthoredInlineStyles.d.ts +3 -0
- package/dist/core/plugins/rehypeStripAuthoredInlineStyles.js +17 -0
- package/dist/core/plugins/rehypeStripAuthoredInlineStyles.js.map +1 -0
- package/dist/core/plugins/remarkCompileLayouts.d.ts +3 -0
- package/dist/core/plugins/remarkCompileLayouts.js +169 -0
- package/dist/core/plugins/remarkCompileLayouts.js.map +1 -0
- package/dist/core/plugins/remarkHeadingAnchorsAndToc.d.ts +3 -0
- package/dist/core/plugins/remarkHeadingAnchorsAndToc.js +68 -0
- package/dist/core/plugins/remarkHeadingAnchorsAndToc.js.map +1 -0
- package/dist/core/plugins/remarkLayoutDirectives.d.ts +3 -0
- package/dist/core/plugins/remarkLayoutDirectives.js +26 -0
- package/dist/core/plugins/remarkLayoutDirectives.js.map +1 -0
- package/dist/core/plugins/remarkLayoutSentinels.d.ts +3 -0
- package/dist/core/plugins/remarkLayoutSentinels.js +184 -0
- package/dist/core/plugins/remarkLayoutSentinels.js.map +1 -0
- package/dist/core/plugins/remarkLiftLayoutDirectives.d.ts +3 -0
- package/dist/core/plugins/remarkLiftLayoutDirectives.js +93 -0
- package/dist/core/plugins/remarkLiftLayoutDirectives.js.map +1 -0
- package/dist/core/plugins/remarkNormalizeLayoutSyntax.d.ts +3 -0
- package/dist/core/plugins/remarkValidateDirectiveThemes.d.ts +4 -0
- package/dist/core/plugins/remarkValidateDirectiveThemes.js +28 -0
- package/dist/core/plugins/remarkValidateDirectiveThemes.js.map +1 -0
- package/dist/core/renderMarkdown.d.ts +2 -0
- package/dist/core/renderMarkdown.js +270 -0
- package/dist/core/renderMarkdown.js.map +1 -0
- package/dist/core/types.d.js +7 -0
- package/dist/core/types.d.js.map +1 -0
- package/dist/core/types.d.ts +238 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/directives/attributes.d.ts +14 -0
- package/dist/directives/attributes.js +121 -0
- package/dist/directives/attributes.js.map +1 -0
- package/dist/directives/definitions/callout.d.ts +6 -0
- package/dist/directives/definitions/callout.js +107 -0
- package/dist/directives/definitions/callout.js.map +1 -0
- package/dist/directives/definitions/card.d.ts +4 -0
- package/dist/directives/definitions/card.js +120 -0
- package/dist/directives/definitions/card.js.map +1 -0
- package/dist/directives/definitions/cards.d.ts +7 -0
- package/dist/directives/definitions/cards.js +72 -0
- package/dist/directives/definitions/cards.js.map +1 -0
- package/dist/directives/definitions/cell.d.ts +4 -0
- package/dist/directives/definitions/cell.js +44 -0
- package/dist/directives/definitions/cell.js.map +1 -0
- package/dist/directives/definitions/columns.d.ts +4 -0
- package/dist/directives/definitions/columns.js +89 -0
- package/dist/directives/definitions/columns.js.map +1 -0
- package/dist/directives/definitions/details.d.ts +2 -0
- package/dist/directives/definitions/details.js +76 -0
- package/dist/directives/definitions/details.js.map +1 -0
- package/dist/directives/definitions/section.d.ts +2 -0
- package/dist/directives/definitions/section.js +32 -0
- package/dist/directives/definitions/section.js.map +1 -0
- package/dist/directives/definitions/steps.d.ts +2 -0
- package/dist/directives/definitions/steps.js +242 -0
- package/dist/directives/definitions/steps.js.map +1 -0
- package/dist/directives/definitions/tab.d.ts +8 -0
- package/dist/directives/definitions/tab.js +59 -0
- package/dist/directives/definitions/tab.js.map +1 -0
- package/dist/directives/definitions/tabs.d.ts +2 -0
- package/dist/directives/definitions/tabs.js +197 -0
- package/dist/directives/definitions/tabs.js.map +1 -0
- package/dist/directives/definitions/toc.d.ts +7 -0
- package/dist/directives/definitions/toc.js +59 -0
- package/dist/directives/definitions/toc.js.map +1 -0
- package/dist/directives/diagnostics.d.ts +8 -0
- package/dist/directives/diagnostics.js +167 -0
- package/dist/directives/diagnostics.js.map +1 -0
- package/dist/directives/headingAnchors.d.ts +9 -0
- package/dist/directives/headingAnchors.js +54 -0
- package/dist/directives/headingAnchors.js.map +1 -0
- package/dist/directives/index.d.ts +5 -0
- package/dist/directives/index.js +6 -0
- package/dist/directives/index.js.map +1 -0
- package/dist/directives/registry.d.ts +20 -0
- package/dist/directives/registry.js +152 -0
- package/dist/directives/registry.js.map +1 -0
- package/dist/directives/renderData.d.ts +3 -0
- package/dist/directives/renderData.js +11 -0
- package/dist/directives/renderData.js.map +1 -0
- package/dist/directives/themes.d.ts +25 -0
- package/dist/directives/themes.js +274 -0
- package/dist/directives/themes.js.map +1 -0
- package/dist/directives/types.d.ts +72 -0
- package/dist/directives/types.js +3 -0
- package/dist/directives/types.js.map +1 -0
- package/dist/editor/MarkdownCodeMirror/Component.client.d.ts +8 -0
- package/dist/editor/MarkdownCodeMirror/Component.client.js +78 -0
- package/dist/editor/MarkdownCodeMirror/Component.client.js.map +1 -0
- package/dist/editor/MarkdownCodeMirror/Component.d.ts +9 -0
- package/dist/editor/MarkdownCodeMirror/Component.js +10 -0
- package/dist/editor/MarkdownCodeMirror/Component.js.map +1 -0
- package/dist/editor/MarkdownCodeMirror.d.ts +8 -0
- package/dist/editor/MarkdownCodeMirror.js +74 -0
- package/dist/editor/MarkdownCodeMirror.js.map +1 -0
- package/dist/editor/MarkdownEditor.d.ts +10 -0
- package/dist/editor/MarkdownEditor.js +22 -0
- package/dist/editor/MarkdownEditor.js.map +1 -0
- package/dist/editor/directives/completions.d.ts +5 -0
- package/dist/editor/directives/completions.js +93 -0
- package/dist/editor/directives/completions.js.map +1 -0
- package/dist/editor/directives/diagnostics.d.ts +1 -0
- package/dist/editor/directives/diagnostics.js +12 -0
- package/dist/editor/directives/diagnostics.js.map +1 -0
- package/dist/editor/themes/payload.d.ts +27 -0
- package/dist/editor/themes/payload.js +269 -0
- package/dist/editor/themes/payload.js.map +1 -0
- package/dist/editor/themes/support/highlighters.d.ts +20 -0
- package/dist/editor/themes/support/highlighters.js +1141 -0
- package/dist/editor/themes/support/highlighters.js.map +1 -0
- package/dist/editor/themes/support/lang.d.ts +40 -0
- package/dist/editor/themes/support/lang.js +201 -0
- package/dist/editor/themes/support/lang.js.map +1 -0
- package/dist/exports/advanced.d.ts +3 -0
- package/dist/exports/advanced.js +5 -0
- package/dist/exports/advanced.js.map +1 -0
- package/dist/exports/client.d.ts +1 -0
- package/dist/exports/client.js +2 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/server.d.ts +3 -0
- package/dist/exports/server.js +5 -0
- package/dist/exports/server.js.map +1 -0
- package/dist/field/BlocksParams/config.d.ts +7 -0
- package/dist/field/BlocksParams/config.js +149 -0
- package/dist/field/BlocksParams/config.js.map +1 -0
- package/dist/field/CodeBlock/config.d.ts +7 -0
- package/dist/field/CodeBlock/config.js +321 -0
- package/dist/field/CodeBlock/config.js.map +1 -0
- package/dist/field/CodeBlockConfig/config.d.ts +7 -0
- package/dist/field/CodeBlockConfig/config.js +306 -0
- package/dist/field/CodeBlockConfig/config.js.map +1 -0
- package/dist/field/CodeBlockParams/config.d.ts +7 -0
- package/dist/field/CodeBlockParams/config.js +321 -0
- package/dist/field/CodeBlockParams/config.js.map +1 -0
- package/dist/field/Config/config.d.ts +7 -0
- package/dist/field/Config/config.js +149 -0
- package/dist/field/Config/config.js.map +1 -0
- package/dist/field/MarkdownField/Component.d.ts +2 -0
- package/dist/field/MarkdownField/Component.js +42 -0
- package/dist/field/MarkdownField/Component.js.map +1 -0
- package/dist/field/MarkdownField/config.d.ts +3 -0
- package/dist/field/MarkdownField/config.js +20 -0
- package/dist/field/MarkdownField/config.js.map +1 -0
- package/dist/field/Tailwind/config.d.ts +9 -0
- package/dist/field/Tailwind/config.js +13 -0
- package/dist/field/Tailwind/config.js.map +1 -0
- package/dist/field/TailwindField/config.d.ts +9 -0
- package/dist/field/TailwindField/config.js +13 -0
- package/dist/field/TailwindField/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/index.d.ts +36 -0
- package/dist/runtime/index.js +124 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/styles/directiveSurface.d.ts +11 -0
- package/dist/styles/directiveSurface.js +38 -0
- package/dist/styles/directiveSurface.js.map +1 -0
- package/dist/types/core.d.ts +285 -0
- package/dist/types/core.js +5 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/layoutToken.d.ts +1 -0
- package/dist/types/layoutToken.js +3 -0
- package/dist/types/layoutToken.js.map +1 -0
- package/dist/types/mdast.d.js +5 -0
- package/dist/types/mdast.d.js.map +1 -0
- package/dist/types.d.js +3 -0
- package/dist/types.d.js.map +1 -0
- package/dist/types.d.ts +80 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +181 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { defaultKeymap, history, historyKeymap } from '@codemirror/commands';
|
|
4
|
+
import { EditorState } from '@codemirror/state';
|
|
5
|
+
import { placeholder as cmPlaceholder, EditorView, keymap } from '@codemirror/view';
|
|
6
|
+
import React, { useEffect, useRef } from 'react';
|
|
7
|
+
import { directiveCompletions } from '../directives/completions.js';
|
|
8
|
+
import { directiveDiagnostics } from '../directives/diagnostics.js';
|
|
9
|
+
import { payloadMarkdownTheme } from '../themes/payload.js';
|
|
10
|
+
export const MarkdownCodeMirrorClient = ({ onChangeAction, placeholder = 'Write markdown...', value = '' })=>{
|
|
11
|
+
const containerRef = useRef(null);
|
|
12
|
+
const viewRef = useRef(null);
|
|
13
|
+
useEffect(()=>{
|
|
14
|
+
if (!containerRef.current || viewRef.current) return;
|
|
15
|
+
const state = EditorState.create({
|
|
16
|
+
doc: value,
|
|
17
|
+
extensions: [
|
|
18
|
+
history(),
|
|
19
|
+
keymap.of([
|
|
20
|
+
...defaultKeymap,
|
|
21
|
+
...historyKeymap
|
|
22
|
+
]),
|
|
23
|
+
EditorView.lineWrapping,
|
|
24
|
+
cmPlaceholder(placeholder),
|
|
25
|
+
payloadMarkdownTheme,
|
|
26
|
+
directiveCompletions,
|
|
27
|
+
directiveDiagnostics,
|
|
28
|
+
EditorView.updateListener.of((update)=>{
|
|
29
|
+
if (!update.docChanged) return;
|
|
30
|
+
onChangeAction(update.state.doc.toString());
|
|
31
|
+
})
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
viewRef.current = new EditorView({
|
|
35
|
+
parent: containerRef.current,
|
|
36
|
+
state
|
|
37
|
+
});
|
|
38
|
+
return ()=>{
|
|
39
|
+
viewRef.current?.destroy();
|
|
40
|
+
viewRef.current = null;
|
|
41
|
+
};
|
|
42
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
|
+
}, [
|
|
44
|
+
onChangeAction,
|
|
45
|
+
placeholder
|
|
46
|
+
]);
|
|
47
|
+
useEffect(()=>{
|
|
48
|
+
const view = viewRef.current;
|
|
49
|
+
if (!view) return;
|
|
50
|
+
const current = view.state.doc.toString();
|
|
51
|
+
if (current === value) return;
|
|
52
|
+
view.dispatch({
|
|
53
|
+
changes: {
|
|
54
|
+
from: 0,
|
|
55
|
+
insert: value,
|
|
56
|
+
to: current.length
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}, [
|
|
60
|
+
value
|
|
61
|
+
]);
|
|
62
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
63
|
+
style: {
|
|
64
|
+
border: '1px solid rgba(120, 120, 120, .5)',
|
|
65
|
+
borderRadius: '5px',
|
|
66
|
+
maxHeight: '80vh',
|
|
67
|
+
minHeight: '125px',
|
|
68
|
+
overflowX: 'hidden',
|
|
69
|
+
overflowY: 'scroll',
|
|
70
|
+
padding: '6px 0'
|
|
71
|
+
},
|
|
72
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
73
|
+
ref: containerRef
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=Component.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/MarkdownCodeMirror/Component.client.tsx"],"sourcesContent":["'use client'\n\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands'\nimport { EditorState } from '@codemirror/state'\nimport { placeholder as cmPlaceholder, EditorView, keymap } from '@codemirror/view'\nimport React, { useEffect, useRef } from 'react'\n\nimport { directiveCompletions } from '../directives/completions.js'\nimport { directiveDiagnostics } from '../directives/diagnostics.js'\nimport { payloadMarkdownTheme } from '../themes/payload.js'\n\ntype MarkdownCodeMirrorClientProps = {\n onChangeAction: (value: string) => void\n placeholder?: string\n value?: string\n}\n\nexport const MarkdownCodeMirrorClient: React.FC<MarkdownCodeMirrorClientProps> = ({\n onChangeAction,\n placeholder = 'Write markdown...',\n value = '',\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const viewRef = useRef<EditorView | null>(null)\n\n useEffect(() => {\n if (!containerRef.current || viewRef.current) return\n\n const state = EditorState.create({\n doc: value,\n extensions: [\n history(),\n keymap.of([...defaultKeymap, ...historyKeymap]),\n EditorView.lineWrapping,\n cmPlaceholder(placeholder),\n payloadMarkdownTheme,\n directiveCompletions,\n directiveDiagnostics,\n EditorView.updateListener.of((update) => {\n if (!update.docChanged) return\n onChangeAction(update.state.doc.toString())\n }),\n ],\n })\n\n viewRef.current = new EditorView({\n parent: containerRef.current,\n state,\n })\n\n return () => {\n viewRef.current?.destroy()\n viewRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onChangeAction, placeholder])\n\n useEffect(() => {\n const view = viewRef.current\n if (!view) return\n\n const current = view.state.doc.toString()\n if (current === value) return\n\n view.dispatch({\n changes: {\n from: 0,\n insert: value,\n to: current.length,\n },\n })\n }, [value])\n\n return (\n <div\n style={{\n border: '1px solid rgba(120, 120, 120, .5)',\n borderRadius: '5px',\n maxHeight: '80vh',\n minHeight: '125px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n padding: '6px 0',\n }}\n >\n <div ref={containerRef} />\n </div>\n )\n}\n"],"names":["defaultKeymap","history","historyKeymap","EditorState","placeholder","cmPlaceholder","EditorView","keymap","React","useEffect","useRef","directiveCompletions","directiveDiagnostics","payloadMarkdownTheme","MarkdownCodeMirrorClient","onChangeAction","value","containerRef","viewRef","current","state","create","doc","extensions","of","lineWrapping","updateListener","update","docChanged","toString","parent","destroy","view","dispatch","changes","from","insert","to","length","div","style","border","borderRadius","maxHeight","minHeight","overflowX","overflowY","padding","ref"],"mappings":"AAAA;;AAEA,SAASA,aAAa,EAAEC,OAAO,EAAEC,aAAa,QAAQ,uBAAsB;AAC5E,SAASC,WAAW,QAAQ,oBAAmB;AAC/C,SAASC,eAAeC,aAAa,EAAEC,UAAU,EAAEC,MAAM,QAAQ,mBAAkB;AACnF,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,oBAAoB,QAAQ,+BAA8B;AACnE,SAASC,oBAAoB,QAAQ,+BAA8B;AACnE,SAASC,oBAAoB,QAAQ,uBAAsB;AAQ3D,OAAO,MAAMC,2BAAoE,CAAC,EAChFC,cAAc,EACdX,cAAc,mBAAmB,EACjCY,QAAQ,EAAE,EACX;IACC,MAAMC,eAAeP,OAA8B;IACnD,MAAMQ,UAAUR,OAA0B;IAE1CD,UAAU;QACR,IAAI,CAACQ,aAAaE,OAAO,IAAID,QAAQC,OAAO,EAAE;QAE9C,MAAMC,QAAQjB,YAAYkB,MAAM,CAAC;YAC/BC,KAAKN;YACLO,YAAY;gBACVtB;gBACAM,OAAOiB,EAAE,CAAC;uBAAIxB;uBAAkBE;iBAAc;gBAC9CI,WAAWmB,YAAY;gBACvBpB,cAAcD;gBACdS;gBACAF;gBACAC;gBACAN,WAAWoB,cAAc,CAACF,EAAE,CAAC,CAACG;oBAC5B,IAAI,CAACA,OAAOC,UAAU,EAAE;oBACxBb,eAAeY,OAAOP,KAAK,CAACE,GAAG,CAACO,QAAQ;gBAC1C;aACD;QACH;QAEAX,QAAQC,OAAO,GAAG,IAAIb,WAAW;YAC/BwB,QAAQb,aAAaE,OAAO;YAC5BC;QACF;QAEA,OAAO;YACLF,QAAQC,OAAO,EAAEY;YACjBb,QAAQC,OAAO,GAAG;QACpB;IACA,uDAAuD;IACzD,GAAG;QAACJ;QAAgBX;KAAY;IAEhCK,UAAU;QACR,MAAMuB,OAAOd,QAAQC,OAAO;QAC5B,IAAI,CAACa,MAAM;QAEX,MAAMb,UAAUa,KAAKZ,KAAK,CAACE,GAAG,CAACO,QAAQ;QACvC,IAAIV,YAAYH,OAAO;QAEvBgB,KAAKC,QAAQ,CAAC;YACZC,SAAS;gBACPC,MAAM;gBACNC,QAAQpB;gBACRqB,IAAIlB,QAAQmB,MAAM;YACpB;QACF;IACF,GAAG;QAACtB;KAAM;IAEV,qBACE,KAACuB;QACCC,OAAO;YACLC,QAAQ;YACRC,cAAc;YACdC,WAAW;YACXC,WAAW;YACXC,WAAW;YACXC,WAAW;YACXC,SAAS;QACX;kBAEA,cAAA,KAACR;YAAIS,KAAK/B;;;AAGhB,EAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type MarkdownCodeMirrorProps = {
|
|
3
|
+
className?: string;
|
|
4
|
+
onChangeAction: (value: string) => void;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
value?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const MarkdownCodeMirror: React.FC<MarkdownCodeMirrorProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { MarkdownCodeMirrorClient } from './Component.client.js';
|
|
4
|
+
export const MarkdownCodeMirror = (props)=>{
|
|
5
|
+
return /*#__PURE__*/ _jsx(MarkdownCodeMirrorClient, {
|
|
6
|
+
...props
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=Component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/MarkdownCodeMirror/Component.tsx"],"sourcesContent":["import React from 'react'\n\nimport { MarkdownCodeMirrorClient } from './Component.client.js'\n\ntype MarkdownCodeMirrorProps = {\n className?: string\n onChangeAction: (value: string) => void\n placeholder?: string\n value?: string\n}\n\nexport const MarkdownCodeMirror: React.FC<MarkdownCodeMirrorProps> = (props) => {\n return <MarkdownCodeMirrorClient {...props} />\n}\n"],"names":["React","MarkdownCodeMirrorClient","MarkdownCodeMirror","props"],"mappings":";AAAA,OAAOA,WAAW,QAAO;AAEzB,SAASC,wBAAwB,QAAQ,wBAAuB;AAShE,OAAO,MAAMC,qBAAwD,CAACC;IACpE,qBAAO,KAACF;QAA0B,GAAGE,KAAK;;AAC5C,EAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { defaultKeymap, history, historyKeymap } from '@codemirror/commands';
|
|
4
|
+
import { EditorState } from '@codemirror/state';
|
|
5
|
+
import { placeholder as cmPlaceholder, EditorView, keymap } from '@codemirror/view';
|
|
6
|
+
import React, { useEffect, useRef } from 'react';
|
|
7
|
+
import { payloadMarkdownTheme } from './themes/payload.js';
|
|
8
|
+
export const MarkdownCodeMirror = ({ onChangeAction, placeholder = 'Write markdown...', value = '' })=>{
|
|
9
|
+
const containerRef = useRef(null);
|
|
10
|
+
const viewRef = useRef(null);
|
|
11
|
+
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
12
|
+
useEffect(()=>{
|
|
13
|
+
if (!containerRef.current || viewRef.current) return;
|
|
14
|
+
const state = EditorState.create({
|
|
15
|
+
doc: value,
|
|
16
|
+
extensions: [
|
|
17
|
+
history(),
|
|
18
|
+
keymap.of([
|
|
19
|
+
...defaultKeymap,
|
|
20
|
+
...historyKeymap
|
|
21
|
+
]),
|
|
22
|
+
EditorView.lineWrapping,
|
|
23
|
+
cmPlaceholder(placeholder),
|
|
24
|
+
payloadMarkdownTheme,
|
|
25
|
+
EditorView.updateListener.of((update)=>{
|
|
26
|
+
if (!update.docChanged) return;
|
|
27
|
+
onChangeAction(update.state.doc.toString());
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
viewRef.current = new EditorView({
|
|
32
|
+
parent: containerRef.current,
|
|
33
|
+
state
|
|
34
|
+
});
|
|
35
|
+
return ()=>{
|
|
36
|
+
viewRef.current?.destroy();
|
|
37
|
+
viewRef.current = null;
|
|
38
|
+
};
|
|
39
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
|
+
}, [
|
|
41
|
+
onChangeAction,
|
|
42
|
+
placeholder
|
|
43
|
+
]);
|
|
44
|
+
useEffect(()=>{
|
|
45
|
+
const view = viewRef.current;
|
|
46
|
+
if (!view) return;
|
|
47
|
+
const current = view.state.doc.toString();
|
|
48
|
+
if (current === value) return;
|
|
49
|
+
view.dispatch({
|
|
50
|
+
changes: {
|
|
51
|
+
from: 0,
|
|
52
|
+
insert: value,
|
|
53
|
+
to: current.length
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}, [
|
|
57
|
+
value
|
|
58
|
+
]);
|
|
59
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
60
|
+
style: {
|
|
61
|
+
border: isDarkMode ? '1px solid rgba(120, 120, 120, .4)' : '1px solid rgba(120, 120, 120, .8)',
|
|
62
|
+
borderRadius: '5px',
|
|
63
|
+
maxHeight: '80vh',
|
|
64
|
+
minHeight: '125px',
|
|
65
|
+
overflowX: 'hidden',
|
|
66
|
+
overflowY: 'scroll'
|
|
67
|
+
},
|
|
68
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
69
|
+
ref: containerRef
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=MarkdownCodeMirror.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/editor/MarkdownCodeMirror.tsx"],"sourcesContent":["'use client'\n\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands'\nimport { EditorState } from '@codemirror/state'\nimport { placeholder as cmPlaceholder, EditorView, keymap } from '@codemirror/view'\nimport React, { useEffect, useRef } from 'react'\n\nimport { payloadMarkdownTheme } from './themes/payload.js'\n\ntype MarkdownCodeMirrorProps = {\n onChangeAction: (value: string) => void\n placeholder?: string\n value?: string\n}\n\nexport const MarkdownCodeMirror: React.FC<MarkdownCodeMirrorProps> = ({\n onChangeAction,\n placeholder = 'Write markdown...',\n value = '',\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const viewRef = useRef<EditorView | null>(null)\n const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n\n useEffect(() => {\n if (!containerRef.current || viewRef.current) return\n\n const state = EditorState.create({\n doc: value,\n extensions: [\n history(),\n keymap.of([...defaultKeymap, ...historyKeymap]),\n EditorView.lineWrapping,\n cmPlaceholder(placeholder),\n payloadMarkdownTheme,\n EditorView.updateListener.of((update) => {\n if (!update.docChanged) return\n onChangeAction(update.state.doc.toString())\n }),\n ],\n })\n\n viewRef.current = new EditorView({\n parent: containerRef.current,\n state,\n })\n\n return () => {\n viewRef.current?.destroy()\n viewRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onChangeAction, placeholder])\n\n useEffect(() => {\n const view = viewRef.current\n if (!view) return\n\n const current = view.state.doc.toString()\n if (current === value) return\n\n view.dispatch({\n changes: {\n from: 0,\n insert: value,\n to: current.length,\n },\n })\n }, [value])\n\n return (\n <div\n style={{\n border: isDarkMode ? '1px solid rgba(120, 120, 120, .4)' : '1px solid rgba(120, 120, 120, .8)',\n borderRadius: '5px',\n maxHeight: '80vh',\n minHeight: '125px',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }}>\n <div ref={containerRef} />\n </div>\n )\n}\n"],"names":["defaultKeymap","history","historyKeymap","EditorState","placeholder","cmPlaceholder","EditorView","keymap","React","useEffect","useRef","payloadMarkdownTheme","MarkdownCodeMirror","onChangeAction","value","containerRef","viewRef","isDarkMode","window","matchMedia","matches","current","state","create","doc","extensions","of","lineWrapping","updateListener","update","docChanged","toString","parent","destroy","view","dispatch","changes","from","insert","to","length","div","style","border","borderRadius","maxHeight","minHeight","overflowX","overflowY","ref"],"mappings":"AAAA;;AAEA,SAASA,aAAa,EAAEC,OAAO,EAAEC,aAAa,QAAQ,uBAAsB;AAC5E,SAASC,WAAW,QAAQ,oBAAmB;AAC/C,SAASC,eAAeC,aAAa,EAAEC,UAAU,EAAEC,MAAM,QAAQ,mBAAkB;AACnF,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,oBAAoB,QAAQ,sBAAqB;AAQ1D,OAAO,MAAMC,qBAAwD,CAAC,EACpEC,cAAc,EACdT,cAAc,mBAAmB,EACjCU,QAAQ,EAAE,EACX;IACC,MAAMC,eAAeL,OAA8B;IACnD,MAAMM,UAAUN,OAA0B;IAC1C,MAAMO,aAAaC,OAAOC,UAAU,IAAID,OAAOC,UAAU,CAAC,gCAAgCC,OAAO;IAEjGX,UAAU;QACR,IAAI,CAACM,aAAaM,OAAO,IAAIL,QAAQK,OAAO,EAAE;QAE9C,MAAMC,QAAQnB,YAAYoB,MAAM,CAAC;YAC/BC,KAAKV;YACLW,YAAY;gBACVxB;gBACAM,OAAOmB,EAAE,CAAC;uBAAI1B;uBAAkBE;iBAAc;gBAC9CI,WAAWqB,YAAY;gBACvBtB,cAAcD;gBACdO;gBACAL,WAAWsB,cAAc,CAACF,EAAE,CAAC,CAACG;oBAC5B,IAAI,CAACA,OAAOC,UAAU,EAAE;oBACxBjB,eAAegB,OAAOP,KAAK,CAACE,GAAG,CAACO,QAAQ;gBAC1C;aACD;QACH;QAEAf,QAAQK,OAAO,GAAG,IAAIf,WAAW;YAC/B0B,QAAQjB,aAAaM,OAAO;YAC5BC;QACF;QAEA,OAAO;YACLN,QAAQK,OAAO,EAAEY;YACjBjB,QAAQK,OAAO,GAAG;QACpB;IACA,uDAAuD;IACzD,GAAG;QAACR;QAAgBT;KAAY;IAEhCK,UAAU;QACR,MAAMyB,OAAOlB,QAAQK,OAAO;QAC5B,IAAI,CAACa,MAAM;QAEX,MAAMb,UAAUa,KAAKZ,KAAK,CAACE,GAAG,CAACO,QAAQ;QACvC,IAAIV,YAAYP,OAAO;QAEvBoB,KAAKC,QAAQ,CAAC;YACZC,SAAS;gBACPC,MAAM;gBACNC,QAAQxB;gBACRyB,IAAIlB,QAAQmB,MAAM;YACpB;QACF;IACF,GAAG;QAAC1B;KAAM;IAEV,qBACE,KAAC2B;QACCC,OAAO;YACLC,QAAQ1B,aAAa,sCAAsC;YAC3D2B,cAAc;YACdC,WAAW;YACXC,WAAW;YACXC,WAAW;YACXC,WAAW;QACb;kBACA,cAAA,KAACP;YAAIQ,KAAKlC;;;AAGhB,EAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StaticLabel } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
type MarkdownEditorProps = {
|
|
4
|
+
label?: StaticLabel;
|
|
5
|
+
onChangeAction: (value: string) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
value?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const MarkdownEditor: React.FC<MarkdownEditorProps>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { MarkdownCodeMirror } from './MarkdownCodeMirror/Component.js';
|
|
4
|
+
export const MarkdownEditor = ({ label = 'Markdown', onChangeAction, placeholder = 'Write markdown...', value = '' })=>{
|
|
5
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
6
|
+
children: [
|
|
7
|
+
/*#__PURE__*/ _jsx("div", {
|
|
8
|
+
style: {
|
|
9
|
+
margin: '1rem 0'
|
|
10
|
+
},
|
|
11
|
+
children: String(label)
|
|
12
|
+
}),
|
|
13
|
+
/*#__PURE__*/ _jsx(MarkdownCodeMirror, {
|
|
14
|
+
onChangeAction: onChangeAction,
|
|
15
|
+
placeholder: placeholder,
|
|
16
|
+
value: value
|
|
17
|
+
})
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=MarkdownEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/editor/MarkdownEditor.tsx"],"sourcesContent":["import type { StaticLabel } from 'payload'\n\nimport React from 'react'\n\nimport { MarkdownCodeMirror } from './MarkdownCodeMirror/Component.js'\n\ntype MarkdownEditorProps = {\n label?: StaticLabel\n onChangeAction: (value: string) => void\n placeholder?: string\n value?: string\n}\n\nexport const MarkdownEditor: React.FC<MarkdownEditorProps> = ({\n label = 'Markdown',\n onChangeAction,\n placeholder = 'Write markdown...',\n value = '',\n}) => {\n return (\n <>\n {/* eslint-disable-next-line @typescript-eslint/no-base-to-string */}\n <div style={{ margin: '1rem 0' }}>{String(label)}</div>\n <MarkdownCodeMirror onChangeAction={onChangeAction} placeholder={placeholder} value={value} />\n </>\n )\n}\n"],"names":["React","MarkdownCodeMirror","MarkdownEditor","label","onChangeAction","placeholder","value","div","style","margin","String"],"mappings":";AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,kBAAkB,QAAQ,oCAAmC;AAStE,OAAO,MAAMC,iBAAgD,CAAC,EAC5DC,QAAQ,UAAU,EAClBC,cAAc,EACdC,cAAc,mBAAmB,EACjCC,QAAQ,EAAE,EACX;IACC,qBACE;;0BAEE,KAACC;gBAAIC,OAAO;oBAAEC,QAAQ;gBAAS;0BAAIC,OAAOP;;0BAC1C,KAACF;gBAAmBG,gBAAgBA;gBAAgBC,aAAaA;gBAAaC,OAAOA;;;;AAG3F,EAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Completion } from '@codemirror/autocomplete';
|
|
2
|
+
export declare function getDirectiveCompletionOptions(): Completion[];
|
|
3
|
+
export declare function getDirectiveAttributeCompletionOptions(name: string): Completion[];
|
|
4
|
+
export declare function getDirectiveThemeValueCompletionOptions(name: string, attribute: string): Completion[];
|
|
5
|
+
export declare const directiveCompletions: import("@codemirror/state").Extension;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { autocompletion, snippetCompletion } from '@codemirror/autocomplete';
|
|
2
|
+
import { layoutDirectiveRegistry } from '../../directives/registry.js';
|
|
3
|
+
import { getDirectiveThemeNames } from '../../directives/themes.js';
|
|
4
|
+
export function getDirectiveCompletionOptions() {
|
|
5
|
+
return layoutDirectiveRegistry.getPublicDefinitions().flatMap((definition)=>{
|
|
6
|
+
const snippets = [
|
|
7
|
+
{
|
|
8
|
+
detail: definition.editor.detail,
|
|
9
|
+
label: `:::${definition.name}`,
|
|
10
|
+
snippet: definition.editor.snippet
|
|
11
|
+
},
|
|
12
|
+
...(definition.editor.snippets ?? []).map((snippet)=>({
|
|
13
|
+
detail: snippet.detail ?? definition.editor.detail,
|
|
14
|
+
label: snippet.label,
|
|
15
|
+
snippet: snippet.snippet
|
|
16
|
+
}))
|
|
17
|
+
];
|
|
18
|
+
return snippets.map((snippet)=>snippetCompletion(snippet.snippet, {
|
|
19
|
+
type: 'keyword',
|
|
20
|
+
detail: snippet.detail,
|
|
21
|
+
info: definition.description,
|
|
22
|
+
label: snippet.label
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function getDirectiveAttributeCompletionOptions(name) {
|
|
27
|
+
const definition = layoutDirectiveRegistry.get(name);
|
|
28
|
+
const attributes = definition?.allowedAttributes ?? [];
|
|
29
|
+
return attributes.map((attribute)=>snippetCompletion(`${attribute}="\${${attribute}}"`, {
|
|
30
|
+
type: 'property',
|
|
31
|
+
detail: `:::${name} attribute`,
|
|
32
|
+
label: attribute
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
export function getDirectiveThemeValueCompletionOptions(name, attribute) {
|
|
36
|
+
const definition = layoutDirectiveRegistry.get(name);
|
|
37
|
+
const groupName = definition?.themeAttributes?.[attribute];
|
|
38
|
+
if (!groupName) return (definition?.attributeValues?.[attribute] ?? []).map((value)=>({
|
|
39
|
+
type: 'constant',
|
|
40
|
+
detail: `:::${name} ${attribute}`,
|
|
41
|
+
label: value
|
|
42
|
+
}));
|
|
43
|
+
return getDirectiveThemeNames(groupName).map((themeName)=>({
|
|
44
|
+
type: 'constant',
|
|
45
|
+
detail: `${groupName} theme`,
|
|
46
|
+
label: themeName
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
function attributeCompletionSource(context) {
|
|
50
|
+
const line = context.state.doc.lineAt(context.pos);
|
|
51
|
+
const beforeCursor = line.text.slice(0, context.pos - line.from);
|
|
52
|
+
const directiveMatch = beforeCursor.match(/^\s*:::(\w+)\s+\{([^}]*)$/);
|
|
53
|
+
if (!directiveMatch) return null;
|
|
54
|
+
const [, name, attributesBeforeCursor] = directiveMatch;
|
|
55
|
+
const valueMatch = attributesBeforeCursor.match(/(?:^|\s)(theme|cardTheme|cellTheme|stepTheme|tabTheme)="([^"]*)$/);
|
|
56
|
+
if (valueMatch) {
|
|
57
|
+
const [, attribute, typedValue] = valueMatch;
|
|
58
|
+
const options = getDirectiveThemeValueCompletionOptions(name, attribute);
|
|
59
|
+
if (options.length === 0) return null;
|
|
60
|
+
return {
|
|
61
|
+
from: context.pos - typedValue.length,
|
|
62
|
+
options
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const attributeMatch = attributesBeforeCursor.match(/(?:^|\s)([\w-]*)$/);
|
|
66
|
+
const typedAttribute = attributeMatch?.[1] ?? '';
|
|
67
|
+
const options = getDirectiveAttributeCompletionOptions(name);
|
|
68
|
+
if (options.length === 0) return null;
|
|
69
|
+
if (!context.explicit && typedAttribute.length === 0) return null;
|
|
70
|
+
return {
|
|
71
|
+
from: context.pos - typedAttribute.length,
|
|
72
|
+
options
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function directiveCompletionSource(context) {
|
|
76
|
+
const attributeResult = attributeCompletionSource(context);
|
|
77
|
+
if (attributeResult) return attributeResult;
|
|
78
|
+
const match = context.matchBefore(/:::[\w-]*/);
|
|
79
|
+
if (!match) return null;
|
|
80
|
+
if (match.from === match.to && !context.explicit) return null;
|
|
81
|
+
return {
|
|
82
|
+
from: match.from,
|
|
83
|
+
options: getDirectiveCompletionOptions()
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export const directiveCompletions = autocompletion({
|
|
87
|
+
activateOnTyping: true,
|
|
88
|
+
override: [
|
|
89
|
+
directiveCompletionSource
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/directives/completions.ts"],"sourcesContent":["import type { Completion, CompletionContext } from '@codemirror/autocomplete'\n\nimport { autocompletion, snippetCompletion } from '@codemirror/autocomplete'\n\nimport { layoutDirectiveRegistry } from '../../directives/registry.js'\nimport { getDirectiveThemeNames } from '../../directives/themes.js'\n\nexport function getDirectiveCompletionOptions() {\n return layoutDirectiveRegistry.getPublicDefinitions().flatMap((definition) => {\n const snippets = [\n {\n detail: definition.editor.detail,\n label: `:::${definition.name}`,\n snippet: definition.editor.snippet,\n },\n ...(definition.editor.snippets ?? []).map((snippet) => ({\n detail: snippet.detail ?? definition.editor.detail,\n label: snippet.label,\n snippet: snippet.snippet,\n })),\n ]\n\n return snippets.map((snippet) =>\n snippetCompletion(snippet.snippet, {\n type: 'keyword',\n detail: snippet.detail,\n info: definition.description,\n label: snippet.label,\n }),\n )\n })\n}\n\nexport function getDirectiveAttributeCompletionOptions(name: string): Completion[] {\n const definition = layoutDirectiveRegistry.get(name)\n const attributes = definition?.allowedAttributes ?? []\n\n return attributes.map((attribute) =>\n snippetCompletion(`${attribute}=\"\\${${attribute}}\"`, {\n type: 'property',\n detail: `:::${name} attribute`,\n label: attribute,\n }),\n )\n}\n\nexport function getDirectiveThemeValueCompletionOptions(\n name: string,\n attribute: string,\n): Completion[] {\n const definition = layoutDirectiveRegistry.get(name)\n const groupName = definition?.themeAttributes?.[attribute]\n\n if (!groupName)\n return (definition?.attributeValues?.[attribute] ?? []).map((value) => ({\n type: 'constant',\n detail: `:::${name} ${attribute}`,\n label: value,\n }))\n\n return getDirectiveThemeNames(groupName).map((themeName) => ({\n type: 'constant',\n detail: `${groupName} theme`,\n label: themeName,\n }))\n}\n\nfunction attributeCompletionSource(context: CompletionContext) {\n const line = context.state.doc.lineAt(context.pos)\n const beforeCursor = line.text.slice(0, context.pos - line.from)\n const directiveMatch = beforeCursor.match(/^\\s*:::(\\w+)\\s+\\{([^}]*)$/)\n\n if (!directiveMatch) return null\n\n const [, name, attributesBeforeCursor] = directiveMatch\n const valueMatch = attributesBeforeCursor.match(\n /(?:^|\\s)(theme|cardTheme|cellTheme|stepTheme|tabTheme)=\"([^\"]*)$/,\n )\n\n if (valueMatch) {\n const [, attribute, typedValue] = valueMatch\n const options = getDirectiveThemeValueCompletionOptions(name, attribute)\n\n if (options.length === 0) return null\n\n return {\n from: context.pos - typedValue.length,\n options,\n }\n }\n\n const attributeMatch = attributesBeforeCursor.match(/(?:^|\\s)([\\w-]*)$/)\n const typedAttribute = attributeMatch?.[1] ?? ''\n const options = getDirectiveAttributeCompletionOptions(name)\n\n if (options.length === 0) return null\n if (!context.explicit && typedAttribute.length === 0) return null\n\n return {\n from: context.pos - typedAttribute.length,\n options,\n }\n}\n\nfunction directiveCompletionSource(context: CompletionContext) {\n const attributeResult = attributeCompletionSource(context)\n if (attributeResult) return attributeResult\n\n const match = context.matchBefore(/:::[\\w-]*/)\n\n if (!match) return null\n if (match.from === match.to && !context.explicit) return null\n\n return {\n from: match.from,\n options: getDirectiveCompletionOptions(),\n }\n}\n\nexport const directiveCompletions = autocompletion({\n activateOnTyping: true,\n override: [directiveCompletionSource],\n})\n"],"names":["autocompletion","snippetCompletion","layoutDirectiveRegistry","getDirectiveThemeNames","getDirectiveCompletionOptions","getPublicDefinitions","flatMap","definition","snippets","detail","editor","label","name","snippet","map","type","info","description","getDirectiveAttributeCompletionOptions","get","attributes","allowedAttributes","attribute","getDirectiveThemeValueCompletionOptions","groupName","themeAttributes","attributeValues","value","themeName","attributeCompletionSource","context","line","state","doc","lineAt","pos","beforeCursor","text","slice","from","directiveMatch","match","attributesBeforeCursor","valueMatch","typedValue","options","length","attributeMatch","typedAttribute","explicit","directiveCompletionSource","attributeResult","matchBefore","to","directiveCompletions","activateOnTyping","override"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const directiveDiagnostics: import("@codemirror/state").Extension;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { linter } from '@codemirror/lint';
|
|
2
|
+
import { lintMarkdownDirectives } from '../../directives/diagnostics.js';
|
|
3
|
+
export const directiveDiagnostics = linter((view)=>{
|
|
4
|
+
return lintMarkdownDirectives(view.state.doc.toString()).map((diagnostic)=>({
|
|
5
|
+
from: diagnostic.from,
|
|
6
|
+
message: diagnostic.message,
|
|
7
|
+
severity: diagnostic.severity,
|
|
8
|
+
to: diagnostic.to
|
|
9
|
+
}));
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/directives/diagnostics.ts"],"sourcesContent":["import type { Diagnostic } from '@codemirror/lint'\n\nimport { linter } from '@codemirror/lint'\n\nimport { lintMarkdownDirectives } from '../../directives/diagnostics.js'\n\nexport const directiveDiagnostics = linter((view): Diagnostic[] => {\n return lintMarkdownDirectives(view.state.doc.toString()).map((diagnostic) => ({\n from: diagnostic.from,\n message: diagnostic.message,\n severity: diagnostic.severity,\n to: diagnostic.to,\n }))\n})\n"],"names":["linter","lintMarkdownDirectives","directiveDiagnostics","view","state","doc","toString","map","diagnostic","from","message","severity","to"],"mappings":"AAEA,SAASA,MAAM,QAAQ,mBAAkB;AAEzC,SAASC,sBAAsB,QAAQ,kCAAiC;AAExE,OAAO,MAAMC,uBAAuBF,OAAO,CAACG;IAC1C,OAAOF,uBAAuBE,KAAKC,KAAK,CAACC,GAAG,CAACC,QAAQ,IAAIC,GAAG,CAAC,CAACC,aAAgB,CAAA;YAC5EC,MAAMD,WAAWC,IAAI;YACrBC,SAASF,WAAWE,OAAO;YAC3BC,UAAUH,WAAWG,QAAQ;YAC7BC,IAAIJ,WAAWI,EAAE;QACnB,CAAA;AACF,GAAE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import { HighlightStyle } from '@codemirror/language';
|
|
3
|
+
export declare const color: {
|
|
4
|
+
activeLine: string;
|
|
5
|
+
bracketMatch: string;
|
|
6
|
+
chalky: string;
|
|
7
|
+
coral: string;
|
|
8
|
+
cursor: string;
|
|
9
|
+
cyan: string;
|
|
10
|
+
highlightBackground: string;
|
|
11
|
+
invalid: string;
|
|
12
|
+
ivory: string;
|
|
13
|
+
malibu: string;
|
|
14
|
+
sage: string;
|
|
15
|
+
searchMatch: string;
|
|
16
|
+
searchMatchOutline: string;
|
|
17
|
+
selection: string;
|
|
18
|
+
selectionBackground: string;
|
|
19
|
+
selectionMatch: string;
|
|
20
|
+
stone: string;
|
|
21
|
+
tooltipBackground: string;
|
|
22
|
+
violet: string;
|
|
23
|
+
whiskey: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const payloadTheme: Extension;
|
|
26
|
+
export declare const payloadHighlightStyle: HighlightStyle;
|
|
27
|
+
export declare const payloadMarkdownTheme: Extension;
|