@mp-lb/mdkit 0.2.2-main.16.1 → 0.2.3-main.20.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/dist/collaboration/useMdKitCollaboration.d.ts +1 -1
- package/dist/document/MdKitConflictPanel.d.ts +1 -1
- package/dist/document/MdKitConflictPanel.js +1 -1
- package/dist/document/MdKitDocumentToolbar.d.ts +3 -3
- package/dist/document/MdKitDocumentToolbar.js +1 -1
- package/dist/document/useMdKitDocument.d.ts +1 -1
- package/dist/fastify.d.ts +3 -3
- package/dist/fastify.js +1 -1
- package/dist/index.d.ts +27 -25
- package/dist/index.js +13 -12
- package/dist/markdown/MarkdownBubbleMenu.js +1 -1
- package/dist/markdown/MdKitEditor.d.ts +2 -2
- package/dist/markdown/MdKitEditor.js +2 -2
- package/dist/markdown/MdKitView.js +1 -1
- package/dist/markdown/TiptapMarkdownSurface.d.ts +2 -2
- package/dist/markdown/TiptapMarkdownSurface.js +33 -25
- package/dist/markdown/createMdKitTiptapExtensions.d.ts +8 -0
- package/dist/markdown/createMdKitTiptapExtensions.js +27 -0
- package/dist/markdown/prepareMarkdownForEditorHydration.js +1 -1
- package/dist/markdown/preserveMarkdownWhitespace.js +1 -1
- package/dist/theme/MdKitThemeEditor.d.ts +1 -1
- package/dist/transport/fastify.d.ts +1 -1
- package/dist/transport/fastify.js +1 -1
- package/dist/transport/http.d.ts +1 -1
- package/dist/transport/index.d.ts +5 -5
- package/dist/transport/index.js +2 -2
- package/dist/transport/rest.d.ts +1 -1
- package/dist/transport/store.d.ts +1 -1
- package/dist/transport/trpcClient.d.ts +2 -2
- package/dist/transport/trpcServer.d.ts +1 -1
- package/dist/trpc/client.d.ts +3 -3
- package/dist/trpc/client.js +1 -1
- package/dist/trpc/server.d.ts +3 -3
- package/dist/trpc/server.js +1 -1
- package/dist/trpc.d.ts +3 -3
- package/dist/trpc.js +1 -1
- package/dist/versioning/VersionHistoryPanel.d.ts +2 -2
- package/dist/versioning/VersionHistoryPanel.js +1 -1
- package/dist/versioning/useMdKitDocumentVersions.d.ts +1 -1
- package/dist/yjs/MdKitMarkdownYjs.d.ts +12 -0
- package/dist/yjs/MdKitMarkdownYjs.js +40 -0
- package/dist/yjs/index.d.ts +2 -0
- package/dist/yjs/index.js +1 -0
- package/package.json +10 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MdKitCollaborationParticipant, MdKitCollaborationSession } from "../document/documentTypes";
|
|
1
|
+
import type { MdKitCollaborationParticipant, MdKitCollaborationSession } from "../document/documentTypes.js";
|
|
2
2
|
export type UseMdKitCollaborationOptions = {
|
|
3
3
|
collaborator: MdKitCollaborationParticipant;
|
|
4
4
|
documentId: string | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
3
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
4
4
|
export const MdKitConflictPanel = ({ className, document, title = "Document conflict", }) => {
|
|
5
5
|
const [pendingAction, setPendingAction] = useState(null);
|
|
6
6
|
const [activePreview, setActivePreview] = useState("remote");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { MdKitCollaborationSession } from "./documentTypes";
|
|
2
|
-
import type { MdKitDocumentController } from "./useMdKitDocument";
|
|
3
|
-
import type { MdKitDocumentVersionsController } from "../versioning/useMdKitDocumentVersions";
|
|
1
|
+
import type { MdKitCollaborationSession } from "./documentTypes.js";
|
|
2
|
+
import type { MdKitDocumentController } from "./useMdKitDocument.js";
|
|
3
|
+
import type { MdKitDocumentVersionsController } from "../versioning/useMdKitDocumentVersions.js";
|
|
4
4
|
export type MdKitDocumentToolbarProps = {
|
|
5
5
|
className?: string;
|
|
6
6
|
collaboration?: MdKitCollaborationSession | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
3
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
4
4
|
const formatUpdatedAt = (updatedAt) => {
|
|
5
5
|
if (!updatedAt) {
|
|
6
6
|
return "Never saved";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MdKitDocumentAdapter, MdKitDocumentVersionToken } from "./documentTypes";
|
|
1
|
+
import type { MdKitDocumentAdapter, MdKitDocumentVersionToken } from "./documentTypes.js";
|
|
2
2
|
export type UseMdKitDocumentOptions = {
|
|
3
3
|
adapter: Pick<MdKitDocumentAdapter, "readDocument" | "writeDocument" | "resyncDocument">;
|
|
4
4
|
debounceMs?: number;
|
package/dist/fastify.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { registerMdKitFastify } from "./transport/fastify";
|
|
2
|
-
export type { RegisterMdKitFastifyOptions } from "./transport/fastify";
|
|
3
|
-
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "./transport/store";
|
|
1
|
+
export { registerMdKitFastify } from "./transport/fastify.js";
|
|
2
|
+
export type { RegisterMdKitFastifyOptions } from "./transport/fastify.js";
|
|
3
|
+
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "./transport/store.js";
|
package/dist/fastify.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { registerMdKitFastify } from "./transport/fastify";
|
|
1
|
+
export { registerMdKitFastify } from "./transport/fastify.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
export { useMdKitCollaboration } from "./collaboration/useMdKitCollaboration";
|
|
2
|
-
export { createMdKitDocumentRecord, detectMdKitDocumentConflict, normalizeMdKitVersionToken, restoreMdKitDocumentVersion, writeMdKitDocumentRecord, } from "./core/documentEngine";
|
|
3
|
-
export { useMdKitDocument } from "./document/useMdKitDocument";
|
|
4
|
-
export { MdKitConflictPanel } from "./document/MdKitConflictPanel";
|
|
5
|
-
export { MdKitDocumentToolbar } from "./document/MdKitDocumentToolbar";
|
|
6
|
-
export { MdKitEditor } from "./markdown/MdKitEditor";
|
|
7
|
-
export { MdKitView } from "./markdown/MdKitView";
|
|
8
|
-
export { MdKitThemeEditor } from "./theme/MdKitThemeEditor";
|
|
9
|
-
export { createMdKitRestAdapter } from "./transport/rest";
|
|
10
|
-
export { createMdKitEditorThemeStyle, darkMdKitEditorTheme, defaultMdKitEditorTheme, } from "./theme/editorTheme";
|
|
11
|
-
export { VersionHistoryPanel } from "./versioning/VersionHistoryPanel";
|
|
12
|
-
export { useMdKitDocumentVersions } from "./versioning/useMdKitDocumentVersions";
|
|
13
|
-
export
|
|
14
|
-
export type {
|
|
15
|
-
export type {
|
|
16
|
-
export type {
|
|
17
|
-
export type {
|
|
18
|
-
export type {
|
|
19
|
-
export type {
|
|
20
|
-
export type {
|
|
21
|
-
export type {
|
|
22
|
-
export type {
|
|
23
|
-
export type {
|
|
24
|
-
export type {
|
|
25
|
-
export type {
|
|
1
|
+
export { useMdKitCollaboration } from "./collaboration/useMdKitCollaboration.js";
|
|
2
|
+
export { createMdKitDocumentRecord, detectMdKitDocumentConflict, normalizeMdKitVersionToken, restoreMdKitDocumentVersion, writeMdKitDocumentRecord, } from "./core/documentEngine.js";
|
|
3
|
+
export { useMdKitDocument } from "./document/useMdKitDocument.js";
|
|
4
|
+
export { MdKitConflictPanel } from "./document/MdKitConflictPanel.js";
|
|
5
|
+
export { MdKitDocumentToolbar } from "./document/MdKitDocumentToolbar.js";
|
|
6
|
+
export { MdKitEditor } from "./markdown/MdKitEditor.js";
|
|
7
|
+
export { MdKitView } from "./markdown/MdKitView.js";
|
|
8
|
+
export { MdKitThemeEditor } from "./theme/MdKitThemeEditor.js";
|
|
9
|
+
export { createMdKitRestAdapter } from "./transport/rest.js";
|
|
10
|
+
export { createMdKitEditorThemeStyle, darkMdKitEditorTheme, defaultMdKitEditorTheme, } from "./theme/editorTheme.js";
|
|
11
|
+
export { VersionHistoryPanel } from "./versioning/VersionHistoryPanel.js";
|
|
12
|
+
export { useMdKitDocumentVersions } from "./versioning/useMdKitDocumentVersions.js";
|
|
13
|
+
export { yjs } from "./yjs/index.js";
|
|
14
|
+
export type { CreateMdKitDocumentRecordInput, MdKitDocumentRecord, RestoreMdKitDocumentVersionInput, RestoreMdKitDocumentVersionResult, WriteMdKitDocumentRecordInput, WriteMdKitDocumentRecordResult, } from "./core/documentEngine.js";
|
|
15
|
+
export type { MdKitCollaborationParticipant, MdKitCollaborationSession, MdKitCollaborationStatus, MdKitDocumentAdapter, MdKitDocumentSnapshot, MdKitDocumentVersionDetail, MdKitDocumentVersionSummary, MdKitDocumentVersionToken, MdKitDocumentWriteInput, MdKitDocumentWriteResult, } from "./document/documentTypes.js";
|
|
16
|
+
export type { MdKitDocumentConflictDetails, MdKitDocumentController, } from "./document/useMdKitDocument.js";
|
|
17
|
+
export type { MdKitConflictPanelProps } from "./document/MdKitConflictPanel.js";
|
|
18
|
+
export type { MdKitDocumentToolbarProps } from "./document/MdKitDocumentToolbar.js";
|
|
19
|
+
export type { MdKitEditorProps } from "./markdown/MdKitEditor.js";
|
|
20
|
+
export type { MdKitEditorDebugEvent } from "./markdown/editorDebug.js";
|
|
21
|
+
export type { MdKitViewProps } from "./markdown/MdKitView.js";
|
|
22
|
+
export type { MdKitThemeEditorProps } from "./theme/MdKitThemeEditor.js";
|
|
23
|
+
export type { CreateMdKitRestAdapterOptions } from "./transport/rest.js";
|
|
24
|
+
export type { MdKitEditorTheme, MdKitEditorThemeStyle, } from "./theme/editorTheme.js";
|
|
25
|
+
export type { MdKitDocumentVersionsController, UseMdKitDocumentVersionsOptions, } from "./versioning/useMdKitDocumentVersions.js";
|
|
26
|
+
export type { VersionHistoryPanelProps } from "./versioning/VersionHistoryPanel.js";
|
|
27
|
+
export type { MdKitMarkdownYjsOptions } from "./yjs/index.js";
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export { useMdKitCollaboration } from "./collaboration/useMdKitCollaboration";
|
|
2
|
-
export { createMdKitDocumentRecord, detectMdKitDocumentConflict, normalizeMdKitVersionToken, restoreMdKitDocumentVersion, writeMdKitDocumentRecord, } from "./core/documentEngine";
|
|
3
|
-
export { useMdKitDocument } from "./document/useMdKitDocument";
|
|
4
|
-
export { MdKitConflictPanel } from "./document/MdKitConflictPanel";
|
|
5
|
-
export { MdKitDocumentToolbar } from "./document/MdKitDocumentToolbar";
|
|
6
|
-
export { MdKitEditor } from "./markdown/MdKitEditor";
|
|
7
|
-
export { MdKitView } from "./markdown/MdKitView";
|
|
8
|
-
export { MdKitThemeEditor } from "./theme/MdKitThemeEditor";
|
|
9
|
-
export { createMdKitRestAdapter } from "./transport/rest";
|
|
10
|
-
export { createMdKitEditorThemeStyle, darkMdKitEditorTheme, defaultMdKitEditorTheme, } from "./theme/editorTheme";
|
|
11
|
-
export { VersionHistoryPanel } from "./versioning/VersionHistoryPanel";
|
|
12
|
-
export { useMdKitDocumentVersions } from "./versioning/useMdKitDocumentVersions";
|
|
1
|
+
export { useMdKitCollaboration } from "./collaboration/useMdKitCollaboration.js";
|
|
2
|
+
export { createMdKitDocumentRecord, detectMdKitDocumentConflict, normalizeMdKitVersionToken, restoreMdKitDocumentVersion, writeMdKitDocumentRecord, } from "./core/documentEngine.js";
|
|
3
|
+
export { useMdKitDocument } from "./document/useMdKitDocument.js";
|
|
4
|
+
export { MdKitConflictPanel } from "./document/MdKitConflictPanel.js";
|
|
5
|
+
export { MdKitDocumentToolbar } from "./document/MdKitDocumentToolbar.js";
|
|
6
|
+
export { MdKitEditor } from "./markdown/MdKitEditor.js";
|
|
7
|
+
export { MdKitView } from "./markdown/MdKitView.js";
|
|
8
|
+
export { MdKitThemeEditor } from "./theme/MdKitThemeEditor.js";
|
|
9
|
+
export { createMdKitRestAdapter } from "./transport/rest.js";
|
|
10
|
+
export { createMdKitEditorThemeStyle, darkMdKitEditorTheme, defaultMdKitEditorTheme, } from "./theme/editorTheme.js";
|
|
11
|
+
export { VersionHistoryPanel } from "./versioning/VersionHistoryPanel.js";
|
|
12
|
+
export { useMdKitDocumentVersions } from "./versioning/useMdKitDocumentVersions.js";
|
|
13
|
+
export { yjs } from "./yjs/index.js";
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEditorState } from "@tiptap/react";
|
|
3
3
|
import { BubbleMenu } from "@tiptap/react/menus";
|
|
4
4
|
import { Bold, Code2, Heading1, Heading2, Italic, Link2, List, ListOrdered, Quote, Strikethrough, } from "lucide-react";
|
|
5
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
5
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
6
6
|
const toolbarActiveStateIsEqual = (left, right) => {
|
|
7
7
|
if (!right) {
|
|
8
8
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CSSProperties } from "react";
|
|
2
|
-
import type { MdKitCollaborationSession } from "../document/documentTypes";
|
|
3
|
-
import type { MdKitEditorDebugEvent } from "./editorDebug";
|
|
2
|
+
import type { MdKitCollaborationSession } from "../document/documentTypes.js";
|
|
3
|
+
import type { MdKitEditorDebugEvent } from "./editorDebug.js";
|
|
4
4
|
type MdKitEditorBaseProps = {
|
|
5
5
|
className?: string;
|
|
6
6
|
fillHeight?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
3
|
-
import { TiptapMarkdownSurface } from "./TiptapMarkdownSurface";
|
|
2
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
3
|
+
import { TiptapMarkdownSurface } from "./TiptapMarkdownSurface.js";
|
|
4
4
|
export const MdKitEditor = (props) => {
|
|
5
5
|
const { className, fillHeight = false, readOnly = false, style, ...surfaceProps } = props;
|
|
6
6
|
return (_jsx("div", { className: joinClassNames("mp-lb-mdkit-markdown-editor", fillHeight && "mp-lb-mdkit-markdown-editor-fill-height", className), "data-read-only": readOnly ? "true" : undefined, style: style, children: _jsx(TiptapMarkdownSurface, { readOnly: readOnly, ...surfaceProps }, props.instanceKey) }));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import ReactMarkdown from "react-markdown";
|
|
3
3
|
import remarkGfm from "remark-gfm";
|
|
4
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
4
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
5
5
|
export const MdKitView = ({ className, fillHeight = false, placeholder, style, value, }) => {
|
|
6
6
|
const renderedValue = value.trim().length > 0 ? value : (placeholder ?? "");
|
|
7
7
|
return (_jsx("div", { className: joinClassNames("mp-lb-mdkit-markdown-editor", "mp-lb-mdkit-markdown-view", fillHeight && "mp-lb-mdkit-markdown-editor-fill-height", className), "data-read-only": "true", style: style, children: _jsx("div", { className: "mp-lb-mdkit-editor-shell", children: _jsx("div", { className: "mp-lb-mdkit-editor-surface", children: renderedValue.length > 0 ? (_jsx("div", { className: "mp-lb-mdkit-tiptap mp-lb-mdkit-view-content", children: _jsx(ReactMarkdown, { components: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { MdKitCollaborationSession } from "../document/documentTypes";
|
|
2
|
-
import type { MdKitEditorDebugEvent } from "./editorDebug";
|
|
1
|
+
import type { MdKitCollaborationSession } from "../document/documentTypes.js";
|
|
2
|
+
import type { MdKitEditorDebugEvent } from "./editorDebug.js";
|
|
3
3
|
type LocalTiptapMarkdownSurfaceProps = {
|
|
4
4
|
collaboration?: null;
|
|
5
5
|
onChange?: (markdown: string) => void;
|
|
@@ -2,13 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useMemo, useRef } from "react";
|
|
3
3
|
import Collaboration from "@tiptap/extension-collaboration";
|
|
4
4
|
import CollaborationCaret from "@tiptap/extension-collaboration-caret";
|
|
5
|
-
import { Markdown } from "@tiptap/markdown";
|
|
6
|
-
import Placeholder from "@tiptap/extension-placeholder";
|
|
7
5
|
import { EditorContent, useEditor } from "@tiptap/react";
|
|
8
|
-
import
|
|
9
|
-
import { MarkdownBubbleMenu } from "./MarkdownBubbleMenu";
|
|
10
|
-
import { normalizeMarkdownSerialization } from "./normalizeMarkdownSerialization";
|
|
11
|
-
import { prepareMarkdownForEditorHydration } from "./prepareMarkdownForEditorHydration";
|
|
6
|
+
import { createMdKitTiptapExtensions } from "./createMdKitTiptapExtensions.js";
|
|
7
|
+
import { MarkdownBubbleMenu } from "./MarkdownBubbleMenu.js";
|
|
8
|
+
import { normalizeMarkdownSerialization } from "./normalizeMarkdownSerialization.js";
|
|
9
|
+
import { prepareMarkdownForEditorHydration } from "./prepareMarkdownForEditorHydration.js";
|
|
12
10
|
const describeElement = (element) => {
|
|
13
11
|
const classes = element instanceof HTMLElement && element.className
|
|
14
12
|
? `.${String(element.className).trim().replace(/\s+/g, ".")}`
|
|
@@ -123,26 +121,9 @@ export const TiptapMarkdownSurface = (props) => {
|
|
|
123
121
|
},
|
|
124
122
|
},
|
|
125
123
|
extensions: [
|
|
126
|
-
|
|
127
|
-
heading: { levels: [1, 2] },
|
|
128
|
-
link: {
|
|
129
|
-
HTMLAttributes: {
|
|
130
|
-
rel: "noopener noreferrer",
|
|
131
|
-
target: "_blank",
|
|
132
|
-
},
|
|
133
|
-
autolink: true,
|
|
134
|
-
linkOnPaste: true,
|
|
135
|
-
openOnClick: true,
|
|
136
|
-
},
|
|
137
|
-
undoRedo: hasCollaboration ? false : undefined,
|
|
138
|
-
}),
|
|
139
|
-
Placeholder.configure({
|
|
124
|
+
...createMdKitTiptapExtensions({
|
|
140
125
|
placeholder,
|
|
141
|
-
|
|
142
|
-
Markdown.configure({
|
|
143
|
-
markedOptions: {
|
|
144
|
-
gfm: true,
|
|
145
|
-
},
|
|
126
|
+
undoRedo: !hasCollaboration,
|
|
146
127
|
}),
|
|
147
128
|
...(collaborationDocument
|
|
148
129
|
? [
|
|
@@ -191,6 +172,33 @@ export const TiptapMarkdownSurface = (props) => {
|
|
|
191
172
|
useEffect(() => {
|
|
192
173
|
editor?.setEditable(!readOnly);
|
|
193
174
|
}, [editor, readOnly]);
|
|
175
|
+
useEffect(() => {
|
|
176
|
+
if (!editor) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const blurEditorOnExternalPointerDown = (event) => {
|
|
180
|
+
if (editor.isDestroyed) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const target = event.target;
|
|
184
|
+
if (!(target instanceof Element)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (editorSurfaceRef.current?.contains(target) ||
|
|
188
|
+
target.closest(".mp-lb-mdkit-toolbar")) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
editor.commands.blur();
|
|
192
|
+
};
|
|
193
|
+
document.addEventListener("pointerdown", blurEditorOnExternalPointerDown, {
|
|
194
|
+
capture: true,
|
|
195
|
+
});
|
|
196
|
+
return () => {
|
|
197
|
+
document.removeEventListener("pointerdown", blurEditorOnExternalPointerDown, {
|
|
198
|
+
capture: true,
|
|
199
|
+
});
|
|
200
|
+
};
|
|
201
|
+
}, [editor]);
|
|
194
202
|
useEffect(() => {
|
|
195
203
|
if (!editor) {
|
|
196
204
|
return;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Extensions } from "@tiptap/core";
|
|
2
|
+
type CreateMdKitTiptapExtensionsOptions = {
|
|
3
|
+
placeholder?: string;
|
|
4
|
+
undoRedo?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const defaultMdKitMarkdownPlaceholder = "Start writing...";
|
|
7
|
+
export declare const createMdKitTiptapExtensions: ({ placeholder, undoRedo, }?: CreateMdKitTiptapExtensionsOptions) => Extensions;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Markdown } from "@tiptap/markdown";
|
|
2
|
+
import Placeholder from "@tiptap/extension-placeholder";
|
|
3
|
+
import StarterKit from "@tiptap/starter-kit";
|
|
4
|
+
export const defaultMdKitMarkdownPlaceholder = "Start writing...";
|
|
5
|
+
export const createMdKitTiptapExtensions = ({ placeholder = defaultMdKitMarkdownPlaceholder, undoRedo = true, } = {}) => [
|
|
6
|
+
StarterKit.configure({
|
|
7
|
+
heading: { levels: [1, 2] },
|
|
8
|
+
link: {
|
|
9
|
+
HTMLAttributes: {
|
|
10
|
+
rel: "noopener noreferrer",
|
|
11
|
+
target: "_blank",
|
|
12
|
+
},
|
|
13
|
+
autolink: true,
|
|
14
|
+
linkOnPaste: true,
|
|
15
|
+
openOnClick: true,
|
|
16
|
+
},
|
|
17
|
+
undoRedo: undoRedo ? undefined : false,
|
|
18
|
+
}),
|
|
19
|
+
Placeholder.configure({
|
|
20
|
+
placeholder,
|
|
21
|
+
}),
|
|
22
|
+
Markdown.configure({
|
|
23
|
+
markedOptions: {
|
|
24
|
+
gfm: true,
|
|
25
|
+
},
|
|
26
|
+
}),
|
|
27
|
+
];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getMarkdownFenceRanges, isInsideMarkdownFence, } from "./markdownFenceRanges";
|
|
1
|
+
import { getMarkdownFenceRanges, isInsideMarkdownFence, } from "./markdownFenceRanges.js";
|
|
2
2
|
const expandedBlankLineRunPattern = /\n{3,}/g;
|
|
3
3
|
export const prepareMarkdownForEditorHydration = (markdown) => {
|
|
4
4
|
const fenceRanges = getMarkdownFenceRanges(markdown);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getMarkdownFenceRanges, isInsideMarkdownFence, } from "./markdownFenceRanges";
|
|
1
|
+
import { getMarkdownFenceRanges, isInsideMarkdownFence, } from "./markdownFenceRanges.js";
|
|
2
2
|
const tokenizeMarkdownBlocks = (markdown) => {
|
|
3
3
|
const ranges = getMarkdownFenceRanges(markdown);
|
|
4
4
|
const tokens = [];
|
package/dist/transport/http.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createMdKitHttpHandlers } from "./http";
|
|
2
|
-
export { createMdKitRestAdapter } from "./rest";
|
|
3
|
-
export type { MdKitHttpHandlers, MdKitHttpRequest, MdKitHttpResponse, } from "./http";
|
|
4
|
-
export type { CreateMdKitRestAdapterOptions } from "./rest";
|
|
5
|
-
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "./store";
|
|
1
|
+
export { createMdKitHttpHandlers } from "./http.js";
|
|
2
|
+
export { createMdKitRestAdapter } from "./rest.js";
|
|
3
|
+
export type { MdKitHttpHandlers, MdKitHttpRequest, MdKitHttpResponse, } from "./http.js";
|
|
4
|
+
export type { CreateMdKitRestAdapterOptions } from "./rest.js";
|
|
5
|
+
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "./store.js";
|
package/dist/transport/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createMdKitHttpHandlers } from "./http";
|
|
2
|
-
export { createMdKitRestAdapter } from "./rest";
|
|
1
|
+
export { createMdKitHttpHandlers } from "./http.js";
|
|
2
|
+
export { createMdKitRestAdapter } from "./rest.js";
|
package/dist/transport/rest.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MdKitDocumentSnapshot, MdKitDocumentVersionDetail, MdKitDocumentVersionSummary, MdKitDocumentWriteInput, MdKitDocumentWriteResult } from "../document/documentTypes";
|
|
1
|
+
import type { MdKitDocumentSnapshot, MdKitDocumentVersionDetail, MdKitDocumentVersionSummary, MdKitDocumentWriteInput, MdKitDocumentWriteResult } from "../document/documentTypes.js";
|
|
2
2
|
export type MdKitTransportStore = {
|
|
3
3
|
readDocument(documentId: string): Promise<MdKitDocumentSnapshot> | MdKitDocumentSnapshot;
|
|
4
4
|
writeDocument(input: MdKitDocumentWriteInput): Promise<MdKitDocumentWriteResult> | MdKitDocumentWriteResult;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createTRPCProxyClient } from "@trpc/client";
|
|
2
|
-
import type { MdKitDocumentAdapter } from "../document/documentTypes";
|
|
3
|
-
import type { MdKitTrpcRouter } from "./trpcServer";
|
|
2
|
+
import type { MdKitDocumentAdapter } from "../document/documentTypes.js";
|
|
3
|
+
import type { MdKitTrpcRouter } from "./trpcServer.js";
|
|
4
4
|
export type CreateMdKitTrpcClientAdapterOptions = {
|
|
5
5
|
url: string;
|
|
6
6
|
};
|
package/dist/trpc/client.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "../transport/trpcClient";
|
|
2
|
-
export type { CreateMdKitTrpcAdapterOptions, CreateMdKitTrpcClientAdapterOptions, } from "../transport/trpcClient";
|
|
3
|
-
export type { MdKitTrpcRouter } from "../transport/trpcServer";
|
|
1
|
+
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "../transport/trpcClient.js";
|
|
2
|
+
export type { CreateMdKitTrpcAdapterOptions, CreateMdKitTrpcClientAdapterOptions, } from "../transport/trpcClient.js";
|
|
3
|
+
export type { MdKitTrpcRouter } from "../transport/trpcServer.js";
|
package/dist/trpc/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "../transport/trpcClient";
|
|
1
|
+
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "../transport/trpcClient.js";
|
package/dist/trpc/server.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createMdKitTrpcRouter } from "../transport/trpcServer";
|
|
2
|
-
export type { MdKitTrpcRouter } from "../transport/trpcServer";
|
|
3
|
-
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "../transport/store";
|
|
1
|
+
export { createMdKitTrpcRouter } from "../transport/trpcServer.js";
|
|
2
|
+
export type { MdKitTrpcRouter } from "../transport/trpcServer.js";
|
|
3
|
+
export type { MdKitRestoreDocumentVersionInput, MdKitTransportStore, } from "../transport/store.js";
|
package/dist/trpc/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createMdKitTrpcRouter } from "../transport/trpcServer";
|
|
1
|
+
export { createMdKitTrpcRouter } from "../transport/trpcServer.js";
|
package/dist/trpc.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "./transport/trpcClient";
|
|
2
|
-
export type { CreateMdKitTrpcAdapterOptions, CreateMdKitTrpcClientAdapterOptions, } from "./transport/trpcClient";
|
|
3
|
-
export type { MdKitTrpcRouter } from "./transport/trpcServer";
|
|
1
|
+
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "./transport/trpcClient.js";
|
|
2
|
+
export type { CreateMdKitTrpcAdapterOptions, CreateMdKitTrpcClientAdapterOptions, } from "./transport/trpcClient.js";
|
|
3
|
+
export type { MdKitTrpcRouter } from "./transport/trpcServer.js";
|
package/dist/trpc.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "./transport/trpcClient";
|
|
1
|
+
export { createMdKitTrpcAdapter, createMdKitTrpcClient, createMdKitTrpcClientAdapter, } from "./transport/trpcClient.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { MdKitDocumentVersionDetail } from "../document/documentTypes";
|
|
2
|
-
import type { MdKitDocumentVersionsController } from "./useMdKitDocumentVersions";
|
|
1
|
+
import type { MdKitDocumentVersionDetail } from "../document/documentTypes.js";
|
|
2
|
+
import type { MdKitDocumentVersionsController } from "./useMdKitDocumentVersions.js";
|
|
3
3
|
export type VersionHistoryPanelProps = {
|
|
4
4
|
className?: string;
|
|
5
5
|
controller: MdKitDocumentVersionsController;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { joinClassNames } from "../ui/joinClassNames";
|
|
3
|
+
import { joinClassNames } from "../ui/joinClassNames.js";
|
|
4
4
|
const getVersionLabel = (version) => {
|
|
5
5
|
if (version.label) {
|
|
6
6
|
return version.label;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MdKitDocumentAdapter, MdKitDocumentVersionDetail, MdKitDocumentVersionSummary } from "../document/documentTypes";
|
|
1
|
+
import type { MdKitDocumentAdapter, MdKitDocumentVersionDetail, MdKitDocumentVersionSummary } from "../document/documentTypes.js";
|
|
2
2
|
export type UseMdKitDocumentVersionsOptions = {
|
|
3
3
|
adapter: Pick<MdKitDocumentAdapter, "listDocumentVersions" | "readDocumentVersion">;
|
|
4
4
|
documentId: string | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Y from "yjs";
|
|
2
|
+
export type MdKitMarkdownYjsOptions = {
|
|
3
|
+
fragmentName?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const replaceMdKitYjsMarkdown: (ydoc: Y.Doc, markdown: string, options?: MdKitMarkdownYjsOptions) => Uint8Array;
|
|
6
|
+
export declare const markdownToMdKitYjs: (markdown: string, options?: MdKitMarkdownYjsOptions) => Uint8Array;
|
|
7
|
+
export declare const mdKitYjsToMarkdown: (yjsState: Uint8Array, options?: MdKitMarkdownYjsOptions) => string;
|
|
8
|
+
export declare const yjs: {
|
|
9
|
+
markdownToMdKitYjs: (markdown: string, options?: MdKitMarkdownYjsOptions) => Uint8Array;
|
|
10
|
+
mdKitYjsToMarkdown: (yjsState: Uint8Array, options?: MdKitMarkdownYjsOptions) => string;
|
|
11
|
+
replaceMdKitYjsMarkdown: (ydoc: Y.Doc, markdown: string, options?: MdKitMarkdownYjsOptions) => Uint8Array;
|
|
12
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getSchema } from "@tiptap/core";
|
|
2
|
+
import { MarkdownManager } from "@tiptap/markdown";
|
|
3
|
+
import { prosemirrorJSONToYXmlFragment, yXmlFragmentToProsemirrorJSON, } from "@tiptap/y-tiptap";
|
|
4
|
+
import * as Y from "yjs";
|
|
5
|
+
import { createMdKitTiptapExtensions } from "../markdown/createMdKitTiptapExtensions.js";
|
|
6
|
+
import { normalizeMarkdownSerialization } from "../markdown/normalizeMarkdownSerialization.js";
|
|
7
|
+
import { prepareMarkdownForEditorHydration } from "../markdown/prepareMarkdownForEditorHydration.js";
|
|
8
|
+
const defaultMdKitYjsFragmentName = "default";
|
|
9
|
+
const getMdKitYjsFragmentName = (options) => options?.fragmentName ?? defaultMdKitYjsFragmentName;
|
|
10
|
+
const createMdKitMarkdownManager = () => new MarkdownManager({
|
|
11
|
+
extensions: createMdKitTiptapExtensions(),
|
|
12
|
+
markedOptions: {
|
|
13
|
+
gfm: true,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const createMdKitProseMirrorSchema = () => getSchema(createMdKitTiptapExtensions());
|
|
17
|
+
const markdownToProseMirrorJson = (markdown) => createMdKitMarkdownManager().parse(prepareMarkdownForEditorHydration(markdown));
|
|
18
|
+
const proseMirrorJsonToMarkdown = (json) => normalizeMarkdownSerialization(createMdKitMarkdownManager().serialize(json));
|
|
19
|
+
export const replaceMdKitYjsMarkdown = (ydoc, markdown, options) => {
|
|
20
|
+
const fragment = ydoc.getXmlFragment(getMdKitYjsFragmentName(options));
|
|
21
|
+
const schema = createMdKitProseMirrorSchema();
|
|
22
|
+
const json = markdownToProseMirrorJson(markdown);
|
|
23
|
+
prosemirrorJSONToYXmlFragment(schema, json, fragment);
|
|
24
|
+
return Y.encodeStateAsUpdate(ydoc);
|
|
25
|
+
};
|
|
26
|
+
export const markdownToMdKitYjs = (markdown, options) => {
|
|
27
|
+
const ydoc = new Y.Doc();
|
|
28
|
+
return replaceMdKitYjsMarkdown(ydoc, markdown, options);
|
|
29
|
+
};
|
|
30
|
+
export const mdKitYjsToMarkdown = (yjsState, options) => {
|
|
31
|
+
const ydoc = new Y.Doc();
|
|
32
|
+
Y.applyUpdate(ydoc, yjsState);
|
|
33
|
+
const json = yXmlFragmentToProsemirrorJSON(ydoc.getXmlFragment(getMdKitYjsFragmentName(options)));
|
|
34
|
+
return proseMirrorJsonToMarkdown(json);
|
|
35
|
+
};
|
|
36
|
+
export const yjs = {
|
|
37
|
+
markdownToMdKitYjs,
|
|
38
|
+
mdKitYjsToMarkdown,
|
|
39
|
+
replaceMdKitYjsMarkdown,
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { markdownToMdKitYjs, mdKitYjsToMarkdown, replaceMdKitYjsMarkdown, yjs, } from "./MdKitMarkdownYjs.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mp-lb/mdkit",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3-main.20.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -34,6 +34,11 @@
|
|
|
34
34
|
"import": "./dist/trpc.js",
|
|
35
35
|
"types": "./dist/trpc.d.ts"
|
|
36
36
|
},
|
|
37
|
+
"./yjs": {
|
|
38
|
+
"source": "./src/yjs/index.ts",
|
|
39
|
+
"import": "./dist/yjs/index.js",
|
|
40
|
+
"types": "./dist/yjs/index.d.ts"
|
|
41
|
+
},
|
|
37
42
|
"./styles.css": "./src/styles.css",
|
|
38
43
|
"./trpc/client": {
|
|
39
44
|
"source": "./src/trpc/client.ts",
|
|
@@ -70,13 +75,16 @@
|
|
|
70
75
|
},
|
|
71
76
|
"dependencies": {
|
|
72
77
|
"@hocuspocus/provider": "^2.15.0",
|
|
78
|
+
"@tiptap/core": "^3.14.0",
|
|
73
79
|
"@tiptap/extension-collaboration": "^3.14.0",
|
|
74
80
|
"@tiptap/extension-collaboration-caret": "^3.14.0",
|
|
75
81
|
"@tiptap/extension-link": "^3.14.0",
|
|
76
82
|
"@tiptap/extension-placeholder": "^3.14.0",
|
|
77
83
|
"@tiptap/markdown": "^3.20.1",
|
|
84
|
+
"@tiptap/pm": "^3.14.0",
|
|
78
85
|
"@tiptap/react": "^3.14.0",
|
|
79
86
|
"@tiptap/starter-kit": "^3.14.0",
|
|
87
|
+
"@tiptap/y-tiptap": "^3.0.2",
|
|
80
88
|
"lucide-react": "^0.554.0",
|
|
81
89
|
"react-markdown": "10.1.0",
|
|
82
90
|
"remark-gfm": "4.0.1",
|
|
@@ -100,7 +108,7 @@
|
|
|
100
108
|
},
|
|
101
109
|
"scripts": {
|
|
102
110
|
"dev": "tsc --watch --project tsconfig.json",
|
|
103
|
-
"build": "tsc --project tsconfig.json",
|
|
111
|
+
"build": "tsc --project tsconfig.json && node scripts/add-js-extensions.mjs",
|
|
104
112
|
"docs:build": "vitepress build docs",
|
|
105
113
|
"docs:dev": "node scripts/load-docs-env.mjs dev",
|
|
106
114
|
"docs:preview": "node scripts/load-docs-env.mjs preview",
|