@fileverse/content-processor 0.0.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/README.md +77 -0
- package/dist/dom-setup.d.ts +4 -0
- package/dist/dom-setup.d.ts.map +1 -0
- package/dist/dom-setup.js +53 -0
- package/dist/dom-setup.js.map +1 -0
- package/dist/extensions.d.ts +13 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +261 -0
- package/dist/extensions.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-parser.d.ts +5 -0
- package/dist/markdown-parser.d.ts.map +1 -0
- package/dist/markdown-parser.js +114 -0
- package/dist/markdown-parser.js.map +1 -0
- package/package.json +68 -0
- package/src/dom-setup.ts +60 -0
- package/src/extensions.ts +294 -0
- package/src/index.ts +117 -0
- package/src/markdown-parser.ts +148 -0
- package/test/sample.md +80 -0
- package/test/test.ts +30 -0
- package/tsconfig.json +20 -0
package/README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# markdown-to-yjs
|
|
2
|
+
|
|
3
|
+
Convert markdown files to Yjs-encoded strings compatible with the ddoc Tiptap editor.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Build
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run build
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { markdownToYjs } from 'markdown-to-yjs';
|
|
21
|
+
import fs from 'fs';
|
|
22
|
+
|
|
23
|
+
const markdown = fs.readFileSync('document.md', 'utf-8');
|
|
24
|
+
const yjsContent = markdownToYjs(markdown);
|
|
25
|
+
|
|
26
|
+
// yjsContent is a base64-encoded Yjs state string
|
|
27
|
+
// ready to be used with the ddoc editor
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## API
|
|
31
|
+
|
|
32
|
+
### `markdownToYjs(markdown: string, options?: MarkdownToYjsOptions): string`
|
|
33
|
+
|
|
34
|
+
Converts a markdown string to a Yjs-encoded string.
|
|
35
|
+
|
|
36
|
+
**Options:**
|
|
37
|
+
- `wrapInDBlock` (boolean, default: `true`): Wrap content in dBlock nodes for ddoc compatibility.
|
|
38
|
+
|
|
39
|
+
### `mergeYjsUpdates(updates: string[]): string`
|
|
40
|
+
|
|
41
|
+
Merges multiple Yjs update strings into one.
|
|
42
|
+
|
|
43
|
+
### `applyYjsUpdate(existingContent: string, update: string): string`
|
|
44
|
+
|
|
45
|
+
Applies a Yjs update to existing content.
|
|
46
|
+
|
|
47
|
+
### `isYjsEncoded(content: string): boolean`
|
|
48
|
+
|
|
49
|
+
Checks if a string is Yjs-encoded (base64).
|
|
50
|
+
|
|
51
|
+
### `convertMarkdownToHTML(markdown: string): string`
|
|
52
|
+
|
|
53
|
+
Converts markdown to HTML (intermediate step).
|
|
54
|
+
|
|
55
|
+
### `stripFrontmatter(markdown: string): string`
|
|
56
|
+
|
|
57
|
+
Removes YAML frontmatter from markdown.
|
|
58
|
+
|
|
59
|
+
## Supported Markdown Features
|
|
60
|
+
|
|
61
|
+
- Headings (h1-h6)
|
|
62
|
+
- Bold, italic, strikethrough, underline
|
|
63
|
+
- Links and images
|
|
64
|
+
- Code blocks and inline code
|
|
65
|
+
- Bullet lists, ordered lists, task lists
|
|
66
|
+
- Blockquotes
|
|
67
|
+
- Tables
|
|
68
|
+
- Footnotes
|
|
69
|
+
- Superscript (`^text^`) and subscript (`~text~`)
|
|
70
|
+
- Page breaks (`===`)
|
|
71
|
+
- Callouts (`<aside class="callout">`)
|
|
72
|
+
|
|
73
|
+
## Test
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm test
|
|
77
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-setup.d.ts","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,SA2CvB;AAED,wBAAgB,uBAAuB,kCAGtC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAGtD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { JSDOM } from 'jsdom';
|
|
2
|
+
import createDOMPurify from 'dompurify';
|
|
3
|
+
let domSetup = false;
|
|
4
|
+
let jsdomInstance = null;
|
|
5
|
+
export function setupDOM() {
|
|
6
|
+
if (domSetup)
|
|
7
|
+
return;
|
|
8
|
+
jsdomInstance = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
|
|
9
|
+
pretendToBeVisual: true,
|
|
10
|
+
});
|
|
11
|
+
const { window } = jsdomInstance;
|
|
12
|
+
const { document } = window;
|
|
13
|
+
const g = globalThis;
|
|
14
|
+
g.window = window;
|
|
15
|
+
g.document = document;
|
|
16
|
+
g.Node = window.Node;
|
|
17
|
+
g.HTMLElement = window.HTMLElement;
|
|
18
|
+
g.Text = window.Text;
|
|
19
|
+
g.DOMParser = window.DOMParser;
|
|
20
|
+
g.Element = window.Element;
|
|
21
|
+
g.DocumentFragment = window.DocumentFragment;
|
|
22
|
+
g.getComputedStyle = window.getComputedStyle.bind(window);
|
|
23
|
+
g.requestAnimationFrame = (cb) => setTimeout(cb, 0);
|
|
24
|
+
g.cancelAnimationFrame = clearTimeout;
|
|
25
|
+
g.innerHeight = 768;
|
|
26
|
+
g.innerWidth = 1024;
|
|
27
|
+
g.scrollTo = () => { };
|
|
28
|
+
g.scrollBy = () => { };
|
|
29
|
+
g.MutationObserver = window.MutationObserver;
|
|
30
|
+
g.Range = window.Range;
|
|
31
|
+
g.Selection = window.Selection;
|
|
32
|
+
g.getSelection = () => window.getSelection();
|
|
33
|
+
try {
|
|
34
|
+
Object.defineProperty(globalThis, 'navigator', {
|
|
35
|
+
value: window.navigator,
|
|
36
|
+
writable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// navigator may already be defined
|
|
42
|
+
}
|
|
43
|
+
domSetup = true;
|
|
44
|
+
}
|
|
45
|
+
export function createDOMPurifyInstance() {
|
|
46
|
+
const jsdomWindow = new JSDOM('').window;
|
|
47
|
+
return createDOMPurify(jsdomWindow);
|
|
48
|
+
}
|
|
49
|
+
export function parseHTMLString(html) {
|
|
50
|
+
const dom = new JSDOM(`<!DOCTYPE html><html><body>${html}</body></html>`);
|
|
51
|
+
return dom.window.document;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=dom-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-setup.js","sourceRoot":"","sources":["../src/dom-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,eAAe,MAAM,WAAW,CAAC;AAExC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,aAAa,GAAiB,IAAI,CAAC;AAEvC,MAAM,UAAU,QAAQ;IACtB,IAAI,QAAQ;QAAE,OAAO;IAErB,aAAa,GAAG,IAAI,KAAK,CAAC,2CAA2C,EAAE;QACrE,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,CAAC,GAAG,UAAiB,CAAC;IAE5B,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,qBAAqB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,oBAAoB,GAAG,YAAY,CAAC;IACtC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC7C,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE;YAC7C,KAAK,EAAE,MAAM,CAAC,SAAS;YACvB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,eAAe,CAAC,WAAkB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,8BAA8B,IAAI,gBAAgB,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Node, Mark } from '@tiptap/core';
|
|
2
|
+
import * as Y from 'yjs';
|
|
3
|
+
export declare const Document: Node<any, any>;
|
|
4
|
+
export declare const DBlock: Node<any, any>;
|
|
5
|
+
export declare const PageBreak: Node<any, any>;
|
|
6
|
+
export declare const Callout: Node<any, any>;
|
|
7
|
+
export declare const Columns: Node<any, any>;
|
|
8
|
+
export declare const Column: Node<any, any>;
|
|
9
|
+
export declare const ResizableMedia: Node<any, any>;
|
|
10
|
+
export declare const Footnote: Node<any, any>;
|
|
11
|
+
export declare const FootnoteRef: Mark<any, any>;
|
|
12
|
+
export declare function getExtensions(ydoc: Y.Doc): (Node<any, any> | Mark<any, any> | import("@tiptap/core").Extension<any, any>)[];
|
|
13
|
+
//# sourceMappingURL=extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAC;AA+B3D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,QAAQ,gBAEnB,CAAC;AAEH,eAAO,MAAM,MAAM,gBA4BjB,CAAC;AAEH,eAAO,MAAM,SAAS,gBAuBpB,CAAC;AAEH,eAAO,MAAM,OAAO,gBAuClB,CAAC;AAEH,eAAO,MAAM,OAAO,gBAkBlB,CAAC;AAEH,eAAO,MAAM,MAAM,gBAgBjB,CAAC;AAEH,eAAO,MAAM,cAAc,gBAqCzB,CAAC;AAEH,eAAO,MAAM,QAAQ,gBAsBnB,CAAC;AAEH,eAAO,MAAM,WAAW,gBAgBtB,CAAC;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,oFAyCxC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { Node, mergeAttributes, Mark } from '@tiptap/core';
|
|
2
|
+
import { Document as TiptapDocument } from '@tiptap/extension-document';
|
|
3
|
+
import Paragraph from '@tiptap/extension-paragraph';
|
|
4
|
+
import Text from '@tiptap/extension-text';
|
|
5
|
+
import Bold from '@tiptap/extension-bold';
|
|
6
|
+
import Italic from '@tiptap/extension-italic';
|
|
7
|
+
import Strike from '@tiptap/extension-strike';
|
|
8
|
+
import Underline from '@tiptap/extension-underline';
|
|
9
|
+
import Code from '@tiptap/extension-code';
|
|
10
|
+
import CodeBlock from '@tiptap/extension-code-block';
|
|
11
|
+
import Heading from '@tiptap/extension-heading';
|
|
12
|
+
import BulletList from '@tiptap/extension-bullet-list';
|
|
13
|
+
import OrderedList from '@tiptap/extension-ordered-list';
|
|
14
|
+
import ListItem from '@tiptap/extension-list-item';
|
|
15
|
+
import TaskList from '@tiptap/extension-task-list';
|
|
16
|
+
import TaskItem from '@tiptap/extension-task-item';
|
|
17
|
+
import Blockquote from '@tiptap/extension-blockquote';
|
|
18
|
+
import HorizontalRule from '@tiptap/extension-horizontal-rule';
|
|
19
|
+
import HardBreak from '@tiptap/extension-hard-break';
|
|
20
|
+
import Link from '@tiptap/extension-link';
|
|
21
|
+
import Image from '@tiptap/extension-image';
|
|
22
|
+
import Table from '@tiptap/extension-table';
|
|
23
|
+
import TableRow from '@tiptap/extension-table-row';
|
|
24
|
+
import TableCell from '@tiptap/extension-table-cell';
|
|
25
|
+
import TableHeader from '@tiptap/extension-table-header';
|
|
26
|
+
import Highlight from '@tiptap/extension-highlight';
|
|
27
|
+
import Subscript from '@tiptap/extension-subscript';
|
|
28
|
+
import Superscript from '@tiptap/extension-superscript';
|
|
29
|
+
import Dropcursor from '@tiptap/extension-dropcursor';
|
|
30
|
+
import Gapcursor from '@tiptap/extension-gapcursor';
|
|
31
|
+
import Collaboration from '@tiptap/extension-collaboration';
|
|
32
|
+
export const Document = TiptapDocument.extend({
|
|
33
|
+
content: '(dBlock|columns|pageBreak)+',
|
|
34
|
+
});
|
|
35
|
+
export const DBlock = Node.create({
|
|
36
|
+
name: 'dBlock',
|
|
37
|
+
priority: 1000,
|
|
38
|
+
group: 'dBlock',
|
|
39
|
+
content: '(block|columns)',
|
|
40
|
+
draggable: true,
|
|
41
|
+
selectable: false,
|
|
42
|
+
inline: false,
|
|
43
|
+
addAttributes() {
|
|
44
|
+
return {
|
|
45
|
+
isCorrupted: {
|
|
46
|
+
default: false,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
parseHTML() {
|
|
51
|
+
return [{ tag: 'div[data-type="d-block"]' }];
|
|
52
|
+
},
|
|
53
|
+
renderHTML({ HTMLAttributes }) {
|
|
54
|
+
return [
|
|
55
|
+
'div',
|
|
56
|
+
mergeAttributes(HTMLAttributes, { 'data-type': 'd-block' }),
|
|
57
|
+
0,
|
|
58
|
+
];
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
export const PageBreak = Node.create({
|
|
62
|
+
name: 'pageBreak',
|
|
63
|
+
group: 'pageBreak',
|
|
64
|
+
addOptions() {
|
|
65
|
+
return {
|
|
66
|
+
HTMLAttributes: {
|
|
67
|
+
style: 'page-break-after: always',
|
|
68
|
+
'data-page-break': 'true',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
parseHTML() {
|
|
73
|
+
return [
|
|
74
|
+
{ tag: 'br[data-type="page-break"]' },
|
|
75
|
+
{ tag: 'div[data-type="page-break"]' },
|
|
76
|
+
];
|
|
77
|
+
},
|
|
78
|
+
renderHTML({ HTMLAttributes }) {
|
|
79
|
+
return ['br', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
export const Callout = Node.create({
|
|
83
|
+
name: 'callout',
|
|
84
|
+
group: 'block',
|
|
85
|
+
content: '(paragraph | bulletList | orderedList | taskList | block)+',
|
|
86
|
+
defining: true,
|
|
87
|
+
draggable: true,
|
|
88
|
+
isolating: true,
|
|
89
|
+
addOptions() {
|
|
90
|
+
return {
|
|
91
|
+
HTMLAttributes: {
|
|
92
|
+
class: 'callout',
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
addAttributes() {
|
|
97
|
+
return {
|
|
98
|
+
dataType: {
|
|
99
|
+
default: 'callout',
|
|
100
|
+
parseHTML: (element) => element.getAttribute('data-type'),
|
|
101
|
+
renderHTML: (attributes) => ({
|
|
102
|
+
'data-type': attributes.dataType,
|
|
103
|
+
}),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
parseHTML() {
|
|
108
|
+
return [{ tag: 'aside[data-type="callout"]' }];
|
|
109
|
+
},
|
|
110
|
+
renderHTML({ HTMLAttributes }) {
|
|
111
|
+
return [
|
|
112
|
+
'aside',
|
|
113
|
+
mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
|
|
114
|
+
0,
|
|
115
|
+
];
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
export const Columns = Node.create({
|
|
119
|
+
name: 'columns',
|
|
120
|
+
group: 'columns',
|
|
121
|
+
content: 'column{2,}',
|
|
122
|
+
isolating: true,
|
|
123
|
+
defining: true,
|
|
124
|
+
parseHTML() {
|
|
125
|
+
return [{ tag: 'div[data-type="columns"]' }];
|
|
126
|
+
},
|
|
127
|
+
renderHTML({ HTMLAttributes }) {
|
|
128
|
+
return [
|
|
129
|
+
'div',
|
|
130
|
+
mergeAttributes(HTMLAttributes, { 'data-type': 'columns' }),
|
|
131
|
+
0,
|
|
132
|
+
];
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
export const Column = Node.create({
|
|
136
|
+
name: 'column',
|
|
137
|
+
group: 'column',
|
|
138
|
+
content: '(block|columns)+',
|
|
139
|
+
parseHTML() {
|
|
140
|
+
return [{ tag: 'div[data-type="column"]' }];
|
|
141
|
+
},
|
|
142
|
+
renderHTML({ HTMLAttributes }) {
|
|
143
|
+
return [
|
|
144
|
+
'div',
|
|
145
|
+
mergeAttributes(HTMLAttributes, { 'data-type': 'column' }),
|
|
146
|
+
0,
|
|
147
|
+
];
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
export const ResizableMedia = Node.create({
|
|
151
|
+
name: 'resizableMedia',
|
|
152
|
+
group: 'block',
|
|
153
|
+
atom: true,
|
|
154
|
+
draggable: true,
|
|
155
|
+
addAttributes() {
|
|
156
|
+
return {
|
|
157
|
+
src: { default: null },
|
|
158
|
+
'media-type': { default: 'img' },
|
|
159
|
+
alt: { default: null },
|
|
160
|
+
title: { default: null },
|
|
161
|
+
width: { default: '100%' },
|
|
162
|
+
height: { default: 'auto' },
|
|
163
|
+
dataAlign: { default: 'center' },
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
parseHTML() {
|
|
167
|
+
return [
|
|
168
|
+
{
|
|
169
|
+
tag: 'img',
|
|
170
|
+
getAttrs: (element) => ({
|
|
171
|
+
src: element.getAttribute('src'),
|
|
172
|
+
'media-type': element.getAttribute('media-type') || 'img',
|
|
173
|
+
alt: element.getAttribute('alt'),
|
|
174
|
+
title: element.getAttribute('title'),
|
|
175
|
+
width: element.getAttribute('width') || '100%',
|
|
176
|
+
height: element.getAttribute('height') || 'auto',
|
|
177
|
+
}),
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
},
|
|
181
|
+
renderHTML({ HTMLAttributes }) {
|
|
182
|
+
return ['img', mergeAttributes(HTMLAttributes)];
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
export const Footnote = Node.create({
|
|
186
|
+
name: 'footnote',
|
|
187
|
+
group: 'block',
|
|
188
|
+
content: 'inline*',
|
|
189
|
+
addAttributes() {
|
|
190
|
+
return {
|
|
191
|
+
id: { default: null },
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
parseHTML() {
|
|
195
|
+
return [{ tag: 'div[data-type="footnote"]' }];
|
|
196
|
+
},
|
|
197
|
+
renderHTML({ HTMLAttributes }) {
|
|
198
|
+
return [
|
|
199
|
+
'div',
|
|
200
|
+
mergeAttributes(HTMLAttributes, { 'data-type': 'footnote' }),
|
|
201
|
+
0,
|
|
202
|
+
];
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
export const FootnoteRef = Mark.create({
|
|
206
|
+
name: 'footnoteRef',
|
|
207
|
+
addAttributes() {
|
|
208
|
+
return {
|
|
209
|
+
id: { default: null },
|
|
210
|
+
};
|
|
211
|
+
},
|
|
212
|
+
parseHTML() {
|
|
213
|
+
return [{ tag: 'sup.footnote-ref' }];
|
|
214
|
+
},
|
|
215
|
+
renderHTML({ HTMLAttributes }) {
|
|
216
|
+
return ['sup', mergeAttributes(HTMLAttributes, { class: 'footnote-ref' }), 0];
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
export function getExtensions(ydoc) {
|
|
220
|
+
return [
|
|
221
|
+
Document,
|
|
222
|
+
DBlock,
|
|
223
|
+
PageBreak,
|
|
224
|
+
Callout,
|
|
225
|
+
Columns,
|
|
226
|
+
Column,
|
|
227
|
+
ResizableMedia,
|
|
228
|
+
Footnote,
|
|
229
|
+
FootnoteRef,
|
|
230
|
+
Paragraph,
|
|
231
|
+
Text,
|
|
232
|
+
Bold,
|
|
233
|
+
Italic,
|
|
234
|
+
Strike,
|
|
235
|
+
Underline,
|
|
236
|
+
Code,
|
|
237
|
+
CodeBlock,
|
|
238
|
+
Heading.configure({ levels: [1, 2, 3, 4, 5, 6] }),
|
|
239
|
+
BulletList,
|
|
240
|
+
OrderedList,
|
|
241
|
+
ListItem,
|
|
242
|
+
TaskList,
|
|
243
|
+
TaskItem.configure({ nested: true }),
|
|
244
|
+
Blockquote,
|
|
245
|
+
HorizontalRule,
|
|
246
|
+
HardBreak,
|
|
247
|
+
Link.configure({ openOnClick: false }),
|
|
248
|
+
Image,
|
|
249
|
+
Table.configure({ resizable: false }),
|
|
250
|
+
TableRow,
|
|
251
|
+
TableCell,
|
|
252
|
+
TableHeader,
|
|
253
|
+
Highlight.configure({ multicolor: true }),
|
|
254
|
+
Subscript,
|
|
255
|
+
Superscript,
|
|
256
|
+
Dropcursor,
|
|
257
|
+
Gapcursor,
|
|
258
|
+
Collaboration.configure({ document: ydoc }),
|
|
259
|
+
];
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,UAAU,MAAM,+BAA+B,CAAC;AACvD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,UAAU,MAAM,8BAA8B,CAAC;AACtD,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAC/D,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,UAAU,MAAM,8BAA8B,CAAC;AACtD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAG5D,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,6BAA6B;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,iBAAiB;IAC1B,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,KAAK;IAEb,aAAa;QACX,OAAO;YACL,WAAW,EAAE;gBACX,OAAO,EAAE,KAAK;aACf;SACF,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,KAAK;YACL,eAAe,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;IAElB,UAAU;QACR,OAAO;YACL,cAAc,EAAE;gBACd,KAAK,EAAE,0BAA0B;gBACjC,iBAAiB,EAAE,MAAM;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO;YACL,EAAE,GAAG,EAAE,4BAA4B,EAAE;YACrC,EAAE,GAAG,EAAE,6BAA6B,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,4DAA4D;IACrE,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IAEf,UAAU;QACR,OAAO;YACL,cAAc,EAAE;gBACd,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC,OAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;gBACtE,UAAU,EAAE,CAAC,UAAgC,EAAE,EAAE,CAAC,CAAC;oBACjD,WAAW,EAAE,UAAU,CAAC,QAAQ;iBACjC,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,OAAO;YACP,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IAEd,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,KAAK;YACL,eAAe,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,kBAAkB;IAE3B,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,KAAK;YACL,eAAe,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YAC1D,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IAEf,aAAa;QACX,OAAO;YACL,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACtB,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAChC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACtB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACxB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC3B,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;SACjC,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO;YACL;gBACE,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,CAAC,OAAoB,EAAE,EAAE,CAAC,CAAC;oBACnC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;oBAChC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK;oBACzD,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;oBACpC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM;oBAC9C,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM;iBACjD,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAElB,aAAa;QACX,OAAO;YACL,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO;YACL,KAAK;YACL,eAAe,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,aAAa;IAEnB,aAAa;QACX,OAAO;YACL,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,IAAW;IACvC,OAAO;QACL,QAAQ;QACR,MAAM;QACN,SAAS;QACT,OAAO;QACP,OAAO;QACP,MAAM;QACN,cAAc;QACd,QAAQ;QACR,WAAW;QACX,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM;QACN,SAAS;QACT,IAAI;QACJ,SAAS;QACT,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACjD,UAAU;QACV,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACpC,UAAU;QACV,cAAc;QACd,SAAS;QACT,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtC,KAAK;QACL,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrC,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACzC,SAAS;QACT,WAAW;QACX,UAAU;QACV,SAAS;QACT,aAAa,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface MarkdownToYjsOptions {
|
|
2
|
+
wrapInDBlock?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare function markdownToYjs(markdown: string, options?: MarkdownToYjsOptions): string;
|
|
5
|
+
export declare function mergeYjsUpdates(updates: string[]): string;
|
|
6
|
+
export declare function applyYjsUpdate(existingContent: string, update: string): string;
|
|
7
|
+
export declare function isYjsEncoded(content: string): boolean;
|
|
8
|
+
export { convertMarkdownToHTML } from './markdown-parser.js';
|
|
9
|
+
export { stripFrontmatter } from './markdown-parser.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA+DR;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAGzD;AAED,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,MAAM,CAOR;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAcrD;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { setupDOM, parseHTMLString } from './dom-setup.js';
|
|
2
|
+
import { getExtensions } from './extensions.js';
|
|
3
|
+
import { convertMarkdownToHTML } from './markdown-parser.js';
|
|
4
|
+
import { Editor } from '@tiptap/core';
|
|
5
|
+
import { DOMParser as ProseMirrorDOMParser } from '@tiptap/pm/model';
|
|
6
|
+
import * as Y from 'yjs';
|
|
7
|
+
import { fromUint8Array, toUint8Array } from 'js-base64';
|
|
8
|
+
setupDOM();
|
|
9
|
+
export function markdownToYjs(markdown, options = {}) {
|
|
10
|
+
const { wrapInDBlock = true } = options;
|
|
11
|
+
const ydoc = new Y.Doc();
|
|
12
|
+
const extensions = getExtensions(ydoc);
|
|
13
|
+
const editor = new Editor({
|
|
14
|
+
extensions,
|
|
15
|
+
content: '',
|
|
16
|
+
});
|
|
17
|
+
try {
|
|
18
|
+
const html = convertMarkdownToHTML(markdown);
|
|
19
|
+
const doc = parseHTMLString(html);
|
|
20
|
+
const domContent = doc.body;
|
|
21
|
+
const proseMirrorNodes = ProseMirrorDOMParser.fromSchema(editor.schema).parse(domContent);
|
|
22
|
+
if (wrapInDBlock) {
|
|
23
|
+
const wrappedContent = [];
|
|
24
|
+
proseMirrorNodes.content.forEach((node) => {
|
|
25
|
+
const nodeJSON = node.toJSON();
|
|
26
|
+
if (nodeJSON.type === 'dBlock' ||
|
|
27
|
+
nodeJSON.type === 'columns' ||
|
|
28
|
+
nodeJSON.type === 'pageBreak') {
|
|
29
|
+
wrappedContent.push(nodeJSON);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
wrappedContent.push({
|
|
33
|
+
type: 'dBlock',
|
|
34
|
+
content: [nodeJSON],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (wrappedContent.length === 0) {
|
|
39
|
+
wrappedContent.push({
|
|
40
|
+
type: 'dBlock',
|
|
41
|
+
content: [{ type: 'paragraph' }],
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
editor.commands.setContent({
|
|
45
|
+
type: 'doc',
|
|
46
|
+
content: wrappedContent,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
editor.commands.setContent(proseMirrorNodes.toJSON());
|
|
51
|
+
}
|
|
52
|
+
const yjsContent = Y.encodeStateAsUpdate(ydoc);
|
|
53
|
+
const result = fromUint8Array(yjsContent);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
editor.destroy();
|
|
58
|
+
if (!ydoc.isDestroyed) {
|
|
59
|
+
ydoc.destroy();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function mergeYjsUpdates(updates) {
|
|
64
|
+
const parsedUpdates = updates.map((update) => toUint8Array(update));
|
|
65
|
+
return fromUint8Array(Y.mergeUpdates(parsedUpdates));
|
|
66
|
+
}
|
|
67
|
+
export function applyYjsUpdate(existingContent, update) {
|
|
68
|
+
const ydoc = new Y.Doc();
|
|
69
|
+
Y.applyUpdate(ydoc, toUint8Array(existingContent));
|
|
70
|
+
Y.applyUpdate(ydoc, toUint8Array(update));
|
|
71
|
+
const result = fromUint8Array(Y.encodeStateAsUpdate(ydoc));
|
|
72
|
+
ydoc.destroy();
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
export function isYjsEncoded(content) {
|
|
76
|
+
if (typeof content !== 'string')
|
|
77
|
+
return false;
|
|
78
|
+
try {
|
|
79
|
+
JSON.parse(content);
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
try {
|
|
84
|
+
const decoded = toUint8Array(content);
|
|
85
|
+
return decoded.length > 0;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export { convertMarkdownToHTML } from './markdown-parser.js';
|
|
93
|
+
export { stripFrontmatter } from './markdown-parser.js';
|
|
94
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzD,QAAQ,EAAE,CAAC;AAMX,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,UAAgC,EAAE;IAElC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAExC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,UAAU;QACV,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAE5B,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,CACtD,MAAM,CAAC,MAAM,CACd,CAAC,KAAK,CAAC,UAA6B,CAAC,CAAC;QAEvC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,cAAc,GAAU,EAAE,CAAC;YACjC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,IACE,QAAQ,CAAC,IAAI,KAAK,QAAQ;oBAC1B,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAC3B,QAAQ,CAAC,IAAI,KAAK,WAAW,EAC7B,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,CAAC,QAAQ,CAAC;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,cAAc,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,cAAc;aACjB,CAAC,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAE1C,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAiB;IAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,OAAO,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,eAAuB,EACvB,MAAc;IAEd,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE9C,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function stripFrontmatter(markdown: string): string;
|
|
2
|
+
export declare function parseMarkdownToHTML(markdown: string): string;
|
|
3
|
+
export declare function processHTMLForEditor(html: string): string;
|
|
4
|
+
export declare function convertMarkdownToHTML(markdown: string): string;
|
|
5
|
+
//# sourceMappingURL=markdown-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../src/markdown-parser.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuHzD;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9D"}
|