@prosekit/extensions 0.16.0-beta.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{prosekit-extensions-autocomplete.d.ts → autocomplete.d.ts} +1 -6
- package/dist/autocomplete.d.ts.map +1 -0
- package/dist/{prosekit-extensions-autocomplete.js → autocomplete.js} +1 -9
- package/dist/autocomplete.js.map +1 -0
- package/dist/{prosekit-extensions-background-color.d.ts → background-color.d.ts} +1 -8
- package/dist/background-color.d.ts.map +1 -0
- package/dist/{prosekit-extensions-background-color.js → background-color.js} +1 -7
- package/dist/background-color.js.map +1 -0
- package/dist/{prosekit-extensions-blockquote.d.ts → blockquote.d.ts} +1 -12
- package/dist/blockquote.d.ts.map +1 -0
- package/dist/{prosekit-extensions-blockquote.js → blockquote.js} +2 -12
- package/dist/blockquote.js.map +1 -0
- package/dist/{prosekit-extensions-bold.d.ts → bold.d.ts} +1 -12
- package/dist/bold.d.ts.map +1 -0
- package/dist/{prosekit-extensions-bold.js → bold.js} +2 -12
- package/dist/bold.js.map +1 -0
- package/dist/{prosekit-extensions-code-block.d.ts → code-block.d.ts} +1 -20
- package/dist/code-block.d.ts.map +1 -0
- package/dist/{prosekit-extensions-code-block.js → code-block.js} +3 -21
- package/dist/code-block.js.map +1 -0
- package/dist/{prosekit-extensions-code.d.ts → code.d.ts} +1 -12
- package/dist/code.d.ts.map +1 -0
- package/dist/{prosekit-extensions-code.js → code.js} +2 -12
- package/dist/code.js.map +1 -0
- package/dist/{prosekit-extensions-commit.d.ts → commit.d.ts} +1 -4
- package/dist/commit.d.ts.map +1 -0
- package/dist/{prosekit-extensions-commit.js → commit.js} +1 -3
- package/dist/commit.js.map +1 -0
- package/dist/{prosekit-extensions-doc.d.ts → doc.d.ts} +1 -4
- package/dist/doc.d.ts.map +1 -0
- package/dist/{prosekit-extensions-doc.js → doc.js} +1 -3
- package/dist/doc.js.map +1 -0
- package/dist/{prosekit-extensions-drop-cursor.d.ts → drop-cursor.d.ts} +1 -4
- package/dist/drop-cursor.d.ts.map +1 -0
- package/dist/{prosekit-extensions-drop-cursor.js → drop-cursor.js} +1 -3
- package/dist/drop-cursor.js.map +1 -0
- package/dist/{prosekit-extensions-drop-indicator.d.ts → drop-indicator.d.ts} +1 -4
- package/dist/drop-indicator.d.ts.map +1 -0
- package/dist/drop-indicator.js +2 -57
- package/dist/drop-indicator2.js +53 -0
- package/dist/drop-indicator2.js.map +1 -0
- package/dist/{prosekit-extensions-enter-rule.d.ts → enter-rule.d.ts} +1 -4
- package/dist/enter-rule.d.ts.map +1 -0
- package/dist/{prosekit-extensions-enter-rule.js → enter-rule.js} +1 -3
- package/dist/enter-rule.js.map +1 -0
- package/dist/file.js +2 -128
- package/dist/file2.js +120 -0
- package/dist/file2.js.map +1 -0
- package/dist/{prosekit-extensions-gap-cursor.d.ts → gap-cursor.d.ts} +1 -4
- package/dist/gap-cursor.d.ts.map +1 -0
- package/dist/{prosekit-extensions-gap-cursor.js → gap-cursor.js} +1 -3
- package/dist/gap-cursor.js.map +1 -0
- package/dist/{prosekit-extensions-hard-break.d.ts → hard-break.d.ts} +1 -10
- package/dist/hard-break.d.ts.map +1 -0
- package/dist/{prosekit-extensions-hard-break.js → hard-break.js} +1 -9
- package/dist/hard-break.js.map +1 -0
- package/dist/{prosekit-extensions-heading.d.ts → heading.d.ts} +1 -14
- package/dist/heading.d.ts.map +1 -0
- package/dist/{prosekit-extensions-heading.js → heading.js} +2 -12
- package/dist/heading.js.map +1 -0
- package/dist/{prosekit-extensions-horizontal-rule.d.ts → horizontal-rule.d.ts} +1 -10
- package/dist/horizontal-rule.d.ts.map +1 -0
- package/dist/{prosekit-extensions-horizontal-rule.js → horizontal-rule.js} +2 -10
- package/dist/horizontal-rule.js.map +1 -0
- package/dist/{prosekit-extensions-image.d.ts → image.d.ts} +1 -14
- package/dist/image.d.ts.map +1 -0
- package/dist/{prosekit-extensions-image.js → image.js} +2 -14
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/{prosekit-extensions-input-rule.d.ts → input-rule.d.ts} +1 -4
- package/dist/input-rule.d.ts.map +1 -0
- package/dist/{prosekit-extensions-input-rule.js → input-rule.js} +1 -3
- package/dist/input-rule.js.map +1 -0
- package/dist/{prosekit-extensions-italic.d.ts → italic.d.ts} +1 -12
- package/dist/italic.d.ts.map +1 -0
- package/dist/{prosekit-extensions-italic.js → italic.js} +2 -12
- package/dist/italic.js.map +1 -0
- package/dist/{prosekit-extensions-link.d.ts → link.d.ts} +1 -8
- package/dist/link.d.ts.map +1 -0
- package/dist/{prosekit-extensions-link.js → link.js} +5 -11
- package/dist/link.js.map +1 -0
- package/dist/{prosekit-extensions-list.d.ts → list.d.ts} +1 -18
- package/dist/list.d.ts.map +1 -0
- package/dist/{prosekit-extensions-list.js → list.js} +3 -19
- package/dist/list.js.map +1 -0
- package/dist/{prosekit-extensions-loro.d.ts → loro.d.ts} +1 -14
- package/dist/loro.d.ts.map +1 -0
- package/dist/{prosekit-extensions-loro.js → loro.js} +1 -13
- package/dist/loro.js.map +1 -0
- package/dist/{prosekit-extensions-mark-rule.d.ts → mark-rule.d.ts} +1 -6
- package/dist/mark-rule.d.ts.map +1 -0
- package/dist/mark-rule.js +2 -157
- package/dist/mark-rule2.js +151 -0
- package/dist/mark-rule2.js.map +1 -0
- package/dist/{prosekit-extensions-math.d.ts → math.d.ts} +1 -10
- package/dist/math.d.ts.map +1 -0
- package/dist/{prosekit-extensions-math.js → math.js} +3 -11
- package/dist/math.js.map +1 -0
- package/dist/{prosekit-extensions-mention.d.ts → mention.d.ts} +1 -4
- package/dist/mention.d.ts.map +1 -0
- package/dist/{prosekit-extensions-mention.js → mention.js} +1 -3
- package/dist/mention.js.map +1 -0
- package/dist/{prosekit-extensions-mod-click-prevention.d.ts → mod-click-prevention.d.ts} +1 -4
- package/dist/mod-click-prevention.d.ts.map +1 -0
- package/dist/{prosekit-extensions-mod-click-prevention.js → mod-click-prevention.js} +1 -3
- package/dist/mod-click-prevention.js.map +1 -0
- package/dist/{prosekit-extensions-page.d.ts → page.d.ts} +1 -12
- package/dist/page.d.ts.map +1 -0
- package/dist/{prosekit-extensions-page.js → page.js} +3 -15
- package/dist/page.js.map +1 -0
- package/dist/{prosekit-extensions-paragraph.d.ts → paragraph.d.ts} +1 -10
- package/dist/paragraph.d.ts.map +1 -0
- package/dist/{prosekit-extensions-paragraph.js → paragraph.js} +1 -9
- package/dist/paragraph.js.map +1 -0
- package/dist/{prosekit-extensions-paste-rule.d.ts → paste-rule.d.ts} +1 -6
- package/dist/paste-rule.d.ts.map +1 -0
- package/dist/paste-rule.js +2 -158
- package/dist/paste-rule2.js +150 -0
- package/dist/paste-rule2.js.map +1 -0
- package/dist/{prosekit-extensions-placeholder.d.ts → placeholder.d.ts} +1 -4
- package/dist/placeholder.d.ts.map +1 -0
- package/dist/{prosekit-extensions-placeholder.js → placeholder.js} +2 -4
- package/dist/placeholder.js.map +1 -0
- package/dist/{prosekit-extensions-readonly.d.ts → readonly.d.ts} +1 -4
- package/dist/readonly.d.ts.map +1 -0
- package/dist/{prosekit-extensions-readonly.js → readonly.js} +6 -3
- package/dist/readonly.js.map +1 -0
- package/dist/{prosekit-extensions-search.d.ts → search.d.ts} +1 -4
- package/dist/search.d.ts.map +1 -0
- package/dist/{prosekit-extensions-search.js → search.js} +1 -3
- package/dist/search.js.map +1 -0
- package/dist/shiki-highlighter-chunk.js +0 -2
- package/dist/shiki-highlighter-chunk.js.map +1 -1
- package/dist/{prosekit-extensions-strike.d.ts → strike.d.ts} +1 -4
- package/dist/strike.d.ts.map +1 -0
- package/dist/{prosekit-extensions-strike.js → strike.js} +2 -4
- package/dist/strike.js.map +1 -0
- package/dist/{prosekit-extensions-table.d.ts → table.d.ts} +1 -26
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +2 -276
- package/dist/table2.js +252 -0
- package/dist/table2.js.map +1 -0
- package/dist/{prosekit-extensions-text-align.d.ts → text-align.d.ts} +1 -4
- package/dist/text-align.d.ts.map +1 -0
- package/dist/{prosekit-extensions-text-align.js → text-align.js} +1 -3
- package/dist/text-align.js.map +1 -0
- package/dist/{prosekit-extensions-text-color.d.ts → text-color.d.ts} +1 -8
- package/dist/text-color.d.ts.map +1 -0
- package/dist/{prosekit-extensions-text-color.js → text-color.js} +1 -7
- package/dist/text-color.js.map +1 -0
- package/dist/{prosekit-extensions-text.d.ts → text.d.ts} +1 -4
- package/dist/text.d.ts.map +1 -0
- package/dist/{prosekit-extensions-text.js → text.js} +1 -3
- package/dist/text.js.map +1 -0
- package/dist/{prosekit-extensions-underline.d.ts → underline.d.ts} +1 -4
- package/dist/underline.d.ts.map +1 -0
- package/dist/{prosekit-extensions-underline.js → underline.js} +1 -3
- package/dist/underline.js.map +1 -0
- package/dist/{prosekit-extensions-virtual-selection.d.ts → virtual-selection.d.ts} +1 -4
- package/dist/virtual-selection.d.ts.map +1 -0
- package/dist/{prosekit-extensions-virtual-selection.js → virtual-selection.js} +1 -3
- package/dist/virtual-selection.js.map +1 -0
- package/dist/{prosekit-extensions-yjs.d.ts → yjs.d.ts} +1 -16
- package/dist/yjs.d.ts.map +1 -0
- package/dist/{prosekit-extensions-yjs.js → yjs.js} +1 -13
- package/dist/yjs.js.map +1 -0
- package/package.json +136 -194
- package/src/page/page-element.ts +2 -2
- package/src/readonly/index.ts +6 -0
- package/dist/drop-indicator.js.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/mark-rule.js.map +0 -1
- package/dist/paste-rule.js.map +0 -1
- package/dist/prosekit-extensions-autocomplete.d.ts.map +0 -1
- package/dist/prosekit-extensions-autocomplete.js.map +0 -1
- package/dist/prosekit-extensions-background-color.d.ts.map +0 -1
- package/dist/prosekit-extensions-background-color.js.map +0 -1
- package/dist/prosekit-extensions-blockquote.d.ts.map +0 -1
- package/dist/prosekit-extensions-blockquote.js.map +0 -1
- package/dist/prosekit-extensions-bold.d.ts.map +0 -1
- package/dist/prosekit-extensions-bold.js.map +0 -1
- package/dist/prosekit-extensions-code-block.d.ts.map +0 -1
- package/dist/prosekit-extensions-code-block.js.map +0 -1
- package/dist/prosekit-extensions-code.d.ts.map +0 -1
- package/dist/prosekit-extensions-code.js.map +0 -1
- package/dist/prosekit-extensions-commit.d.ts.map +0 -1
- package/dist/prosekit-extensions-commit.js.map +0 -1
- package/dist/prosekit-extensions-doc.d.ts.map +0 -1
- package/dist/prosekit-extensions-doc.js.map +0 -1
- package/dist/prosekit-extensions-drop-cursor.d.ts.map +0 -1
- package/dist/prosekit-extensions-drop-cursor.js.map +0 -1
- package/dist/prosekit-extensions-drop-indicator.d.ts.map +0 -1
- package/dist/prosekit-extensions-drop-indicator.js +0 -2
- package/dist/prosekit-extensions-enter-rule.d.ts.map +0 -1
- package/dist/prosekit-extensions-enter-rule.js.map +0 -1
- package/dist/prosekit-extensions-file.js +0 -2
- package/dist/prosekit-extensions-gap-cursor.d.ts.map +0 -1
- package/dist/prosekit-extensions-gap-cursor.js.map +0 -1
- package/dist/prosekit-extensions-hard-break.d.ts.map +0 -1
- package/dist/prosekit-extensions-hard-break.js.map +0 -1
- package/dist/prosekit-extensions-heading.d.ts.map +0 -1
- package/dist/prosekit-extensions-heading.js.map +0 -1
- package/dist/prosekit-extensions-horizontal-rule.d.ts.map +0 -1
- package/dist/prosekit-extensions-horizontal-rule.js.map +0 -1
- package/dist/prosekit-extensions-image.d.ts.map +0 -1
- package/dist/prosekit-extensions-image.js.map +0 -1
- package/dist/prosekit-extensions-input-rule.d.ts.map +0 -1
- package/dist/prosekit-extensions-input-rule.js.map +0 -1
- package/dist/prosekit-extensions-italic.d.ts.map +0 -1
- package/dist/prosekit-extensions-italic.js.map +0 -1
- package/dist/prosekit-extensions-link.d.ts.map +0 -1
- package/dist/prosekit-extensions-link.js.map +0 -1
- package/dist/prosekit-extensions-list.d.ts.map +0 -1
- package/dist/prosekit-extensions-list.js.map +0 -1
- package/dist/prosekit-extensions-loro.d.ts.map +0 -1
- package/dist/prosekit-extensions-loro.js.map +0 -1
- package/dist/prosekit-extensions-mark-rule.d.ts.map +0 -1
- package/dist/prosekit-extensions-mark-rule.js +0 -2
- package/dist/prosekit-extensions-math.d.ts.map +0 -1
- package/dist/prosekit-extensions-math.js.map +0 -1
- package/dist/prosekit-extensions-mention.d.ts.map +0 -1
- package/dist/prosekit-extensions-mention.js.map +0 -1
- package/dist/prosekit-extensions-mod-click-prevention.d.ts.map +0 -1
- package/dist/prosekit-extensions-mod-click-prevention.js.map +0 -1
- package/dist/prosekit-extensions-page.d.ts.map +0 -1
- package/dist/prosekit-extensions-page.js.map +0 -1
- package/dist/prosekit-extensions-paragraph.d.ts.map +0 -1
- package/dist/prosekit-extensions-paragraph.js.map +0 -1
- package/dist/prosekit-extensions-paste-rule.d.ts.map +0 -1
- package/dist/prosekit-extensions-paste-rule.js +0 -2
- package/dist/prosekit-extensions-placeholder.d.ts.map +0 -1
- package/dist/prosekit-extensions-placeholder.js.map +0 -1
- package/dist/prosekit-extensions-readonly.d.ts.map +0 -1
- package/dist/prosekit-extensions-readonly.js.map +0 -1
- package/dist/prosekit-extensions-search.d.ts.map +0 -1
- package/dist/prosekit-extensions-search.js.map +0 -1
- package/dist/prosekit-extensions-strike.d.ts.map +0 -1
- package/dist/prosekit-extensions-strike.js.map +0 -1
- package/dist/prosekit-extensions-table.d.ts.map +0 -1
- package/dist/prosekit-extensions-table.js +0 -2
- package/dist/prosekit-extensions-text-align.d.ts.map +0 -1
- package/dist/prosekit-extensions-text-align.js.map +0 -1
- package/dist/prosekit-extensions-text-color.d.ts.map +0 -1
- package/dist/prosekit-extensions-text-color.js.map +0 -1
- package/dist/prosekit-extensions-text.d.ts.map +0 -1
- package/dist/prosekit-extensions-text.js.map +0 -1
- package/dist/prosekit-extensions-underline.d.ts.map +0 -1
- package/dist/prosekit-extensions-underline.js.map +0 -1
- package/dist/prosekit-extensions-virtual-selection.d.ts.map +0 -1
- package/dist/prosekit-extensions-virtual-selection.js.map +0 -1
- package/dist/prosekit-extensions-yjs.d.ts.map +0 -1
- package/dist/prosekit-extensions-yjs.js.map +0 -1
- package/dist/table.js.map +0 -1
- /package/dist/{prosekit-extensions-file.d.ts → file.d.ts} +0 -0
- /package/dist/{prosekit-extensions.js → index.js} +0 -0
- /package/dist/{prosekit-extensions.d.ts → index2.d.ts} +0 -0
package/dist/file2.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ProseKitError, defineFacet, defineFacetPayload, editorEventFacet } from "@prosekit/core";
|
|
2
|
+
function handleFile(view, event, file, handlers) {
|
|
3
|
+
for (let i = handlers.length - 1; i >= 0; i--) {
|
|
4
|
+
const handler = handlers[i];
|
|
5
|
+
if (handler({
|
|
6
|
+
view,
|
|
7
|
+
event,
|
|
8
|
+
file
|
|
9
|
+
})) return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
function handleEvent(view, event, handlers, getFiles) {
|
|
14
|
+
const files = getFiles(event);
|
|
15
|
+
let handled = false;
|
|
16
|
+
for (const file of files) if (handleFile(view, event, file, handlers)) handled = true;
|
|
17
|
+
return handled;
|
|
18
|
+
}
|
|
19
|
+
function defineFileDropHandler(handler) {
|
|
20
|
+
return defineFacetPayload(facet$1, [handler]);
|
|
21
|
+
}
|
|
22
|
+
function getFiles$1(event) {
|
|
23
|
+
return Array.from(event.dataTransfer?.files ?? []);
|
|
24
|
+
}
|
|
25
|
+
const facet$1 = defineFacet({
|
|
26
|
+
parent: editorEventFacet,
|
|
27
|
+
singleton: true,
|
|
28
|
+
reducer: (handlers) => {
|
|
29
|
+
const dropHandler = (view, event) => {
|
|
30
|
+
const position = view.posAtCoords({
|
|
31
|
+
left: event.x,
|
|
32
|
+
top: event.y
|
|
33
|
+
});
|
|
34
|
+
if (!position) return false;
|
|
35
|
+
const pos = position.inside > 0 ? position.inside : position.pos;
|
|
36
|
+
return handleEvent(view, event, handlers.map((handler) => (options) => handler({
|
|
37
|
+
...options,
|
|
38
|
+
pos
|
|
39
|
+
})), getFiles$1);
|
|
40
|
+
};
|
|
41
|
+
return ["drop", dropHandler];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
function defineFilePasteHandler(handler) {
|
|
45
|
+
return defineFacetPayload(facet, [handler]);
|
|
46
|
+
}
|
|
47
|
+
function getFiles(event) {
|
|
48
|
+
return Array.from(event.clipboardData?.files ?? []);
|
|
49
|
+
}
|
|
50
|
+
const facet = defineFacet({
|
|
51
|
+
parent: editorEventFacet,
|
|
52
|
+
singleton: true,
|
|
53
|
+
reducer: (handlers) => {
|
|
54
|
+
const pasteHandler = (view, event) => {
|
|
55
|
+
return handleEvent(view, event, handlers, getFiles);
|
|
56
|
+
};
|
|
57
|
+
return ["paste", pasteHandler];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* A class that represents a upload task.
|
|
62
|
+
*/
|
|
63
|
+
var UploadTask = class {
|
|
64
|
+
/**
|
|
65
|
+
* Creates a new upload task. You can find the upload task by its object URL
|
|
66
|
+
* later using `UploadTask.get()`.
|
|
67
|
+
*
|
|
68
|
+
* @param options - The options for the upload task.
|
|
69
|
+
*/
|
|
70
|
+
constructor({ file, uploader }) {
|
|
71
|
+
this.done = false;
|
|
72
|
+
this.subscribers = [];
|
|
73
|
+
this.objectURL = URL.createObjectURL(file);
|
|
74
|
+
this.finished = new Promise((resolve, reject) => {
|
|
75
|
+
const maybePromise = uploader({
|
|
76
|
+
file,
|
|
77
|
+
onProgress: (progress) => {
|
|
78
|
+
for (const subscriber of this.subscribers) subscriber(progress);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
Promise.resolve(maybePromise).then((result) => {
|
|
82
|
+
this.done = true;
|
|
83
|
+
URL.revokeObjectURL(this.objectURL);
|
|
84
|
+
this.result = result;
|
|
85
|
+
resolve(result);
|
|
86
|
+
}, (err) => {
|
|
87
|
+
this.done = true;
|
|
88
|
+
const error = new ProseKitError("[prosekit] Failed to upload file", { cause: err });
|
|
89
|
+
this.error = error;
|
|
90
|
+
reject(error);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
store.set(this.objectURL, this);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Subscribes to progress updates. Returns a function to unsubscribe.
|
|
97
|
+
*/
|
|
98
|
+
subscribeProgress(callback) {
|
|
99
|
+
this.subscribers.push(callback);
|
|
100
|
+
return () => {
|
|
101
|
+
this.subscribers = this.subscribers.filter((subscriber) => subscriber !== callback);
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Finds an upload task from the global store by its object URL.
|
|
106
|
+
*/
|
|
107
|
+
static get(objectURL) {
|
|
108
|
+
return store.get(objectURL);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Deletes an upload task from the global store by its object URL.
|
|
112
|
+
*/
|
|
113
|
+
static delete(objectURL) {
|
|
114
|
+
store.delete(objectURL);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const store = /* @__PURE__ */ new Map();
|
|
118
|
+
export { defineFilePasteHandler as n, defineFileDropHandler as r, UploadTask as t };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=file2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file2.js","names":["facet","getFiles"],"sources":["../src/file/helpers.ts","../src/file/file-drop-handler.ts","../src/file/file-paste-handler.ts","../src/file/file-upload.ts"],"sourcesContent":["import type { EditorView } from '@prosekit/pm/view'\n\ntype FileHandler<E extends Event> = (options: {\n view: EditorView\n event: E\n file: File\n}) => boolean | void\n\nfunction handleFile<E extends Event>(\n view: EditorView,\n event: E,\n file: File,\n handlers: FileHandler<E>[],\n) {\n // The last item in `handlers` should has the highest priority.\n for (let i = handlers.length - 1; i >= 0; i--) {\n const handler = handlers[i]\n if (handler({ view, event, file })) {\n return true\n }\n }\n return false\n}\n\nexport function handleEvent<E extends Event>(\n view: EditorView,\n event: E,\n handlers: FileHandler<E>[],\n getFiles: (event: E) => File[],\n): boolean {\n const files = getFiles(event)\n let handled = false\n for (const file of files) {\n if (handleFile(view, event, file, handlers)) {\n handled = true\n }\n }\n return handled\n}\n","import {\n defineFacet,\n defineFacetPayload,\n editorEventFacet,\n type DropHandler,\n type EditorEventPayload,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { EditorView } from '@prosekit/pm/view'\n\nimport { handleEvent } from './helpers.ts'\n\nexport interface FileDropHandlerOptions {\n /**\n * The editor view.\n */\n view: EditorView\n\n /**\n * The event that triggered the drop.\n */\n event: DragEvent\n\n /**\n * The file that was dropped.\n */\n file: File\n\n /**\n * The position of the document where the file was dropped.\n */\n pos: number\n}\n\n/**\n * A function that handles one of the files in a drop event.\n *\n * Returns `true` if the file was handled and thus should not be handled by\n * other handlers.\n */\nexport type FileDropHandler = (\n options: FileDropHandlerOptions,\n) => boolean | void\n\nexport function defineFileDropHandler(\n handler: FileDropHandler,\n): PlainExtension {\n return defineFacetPayload(facet, [handler]) as PlainExtension\n}\n\nfunction getFiles(event: DragEvent) {\n return Array.from(event.dataTransfer?.files ?? [])\n}\n\nconst facet = defineFacet<FileDropHandler, EditorEventPayload>({\n parent: editorEventFacet,\n singleton: true,\n reducer: (handlers: FileDropHandler[]): EditorEventPayload => {\n const dropHandler: DropHandler = (view, event): boolean => {\n const position = view.posAtCoords({ left: event.x, top: event.y })\n if (!position) {\n return false\n }\n const pos = position.inside > 0 ? position.inside : position.pos\n\n return handleEvent<DragEvent>(\n view,\n event,\n handlers.map((handler) => (options) => handler({ ...options, pos })),\n getFiles,\n )\n }\n return ['drop', dropHandler]\n },\n})\n","import {\n defineFacet,\n defineFacetPayload,\n editorEventFacet,\n type EditorEventPayload,\n type PasteHandler,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { EditorView } from '@prosekit/pm/view'\n\nimport { handleEvent } from './helpers.ts'\n\nexport interface FilePasteHandlerOptions {\n /**\n * The editor view.\n */\n view: EditorView\n\n /**\n * The event that triggered the paste.\n */\n event: ClipboardEvent\n\n /**\n * The file that was pasted.\n */\n file: File\n}\n\n/**\n * A function that handles one of the files in a paste event.\n *\n * Returns `true` if the file was handled and thus should not be handled by\n * other handlers.\n */\nexport type FilePasteHandler = (\n options: FilePasteHandlerOptions,\n) => boolean | void\n\nexport function defineFilePasteHandler(\n handler: FilePasteHandler,\n): PlainExtension {\n return defineFacetPayload(facet, [handler]) as PlainExtension\n}\n\nfunction getFiles(event: ClipboardEvent) {\n return Array.from(event.clipboardData?.files ?? [])\n}\n\nconst facet = defineFacet<FilePasteHandler, EditorEventPayload>({\n parent: editorEventFacet,\n singleton: true,\n reducer: (handlers: FilePasteHandler[]): EditorEventPayload => {\n const pasteHandler: PasteHandler = (view, event): boolean => {\n return handleEvent<ClipboardEvent>(view, event, handlers, getFiles)\n }\n return ['paste', pasteHandler]\n },\n})\n","import { ProseKitError } from '@prosekit/core'\n\n/**\n * An interface representing the upload progress.\n */\nexport interface UploadProgress {\n // A number representing the amount of work already performed by the\n // underlying process.\n loaded: number\n // A number representing the total amount of work that the underlying\n // process is in the progress of performing.\n total: number\n}\n\nexport interface UploaderOptions {\n /**\n * The file to be uploaded.\n */\n file: File\n\n /**\n * A callback function that should be called with the upload progress updates.\n */\n onProgress: (progress: UploadProgress) => void\n}\n\n/**\n * The implementation of the actual upload function. You need to implement this\n * function to upload files to your desired destination.\n */\nexport type Uploader<Result> = (options: UploaderOptions) => Promise<Result>\n\n/**\n * A class that represents a upload task.\n */\nexport class UploadTask<Result> {\n /**\n * An [object URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL)\n * representing the file to be uploaded. This URL will be revoked once the\n * upload is complete successfully.\n */\n readonly objectURL: string\n\n /**\n * A boolean indicating whether the upload is complete (either successfully or with an error).\n */\n protected done = false\n\n /**\n * If the upload is complete successfully, this will be the result of the upload.\n */\n protected result: Result | undefined\n\n /**\n * If the upload is complete with an error, this will be the error that occurred.\n */\n protected error: Error | undefined\n\n /**\n * A promise that fulfills once the upload is complete, or rejects if an error occurs.\n */\n readonly finished: Promise<Result>\n\n private subscribers: ((progress: UploadProgress) => void)[] = []\n\n /**\n * Creates a new upload task. You can find the upload task by its object URL\n * later using `UploadTask.get()`.\n *\n * @param options - The options for the upload task.\n */\n constructor({ file, uploader }: { file: File; uploader: Uploader<Result> }) {\n this.objectURL = URL.createObjectURL(file)\n this.finished = new Promise((resolve, reject) => {\n const maybePromise = uploader({\n file,\n onProgress: (progress) => {\n for (const subscriber of this.subscribers) {\n subscriber(progress)\n }\n },\n })\n Promise.resolve(maybePromise).then(\n (result) => {\n this.done = true\n URL.revokeObjectURL(this.objectURL)\n this.result = result\n resolve(result)\n },\n (err) => {\n this.done = true\n const error = new ProseKitError('[prosekit] Failed to upload file', { cause: err })\n this.error = error\n reject(error)\n },\n )\n })\n store.set(this.objectURL, this)\n }\n\n /**\n * Subscribes to progress updates. Returns a function to unsubscribe.\n */\n public subscribeProgress(\n callback: (progress: UploadProgress) => void,\n ): VoidFunction {\n this.subscribers.push(callback)\n return () => {\n this.subscribers = this.subscribers.filter(\n (subscriber) => subscriber !== callback,\n )\n }\n }\n\n /**\n * Finds an upload task from the global store by its object URL.\n */\n static get<Result = unknown>(\n objectURL: string,\n ): UploadTask<Result> | undefined {\n return store.get(objectURL) as UploadTask<Result> | undefined\n }\n\n /**\n * Deletes an upload task from the global store by its object URL.\n */\n static delete(objectURL: string): void {\n store.delete(objectURL)\n }\n}\n\nconst store = new Map<string, UploadTask<unknown>>()\n"],"mappings":";AAQA,SAAS,WACP,MACA,OACA,MACA,UACA;AAEA,MAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;EAC7C,MAAM,UAAU,SAAS;AACzB,MAAI,QAAQ;GAAE;GAAM;GAAO;GAAM,CAAC,CAChC,QAAO;;AAGX,QAAO;;AAGT,SAAgB,YACd,MACA,OACA,UACA,UACS;CACT,MAAM,QAAQ,SAAS,MAAM;CAC7B,IAAI,UAAU;AACd,MAAK,MAAM,QAAQ,MACjB,KAAI,WAAW,MAAM,OAAO,MAAM,SAAS,CACzC,WAAU;AAGd,QAAO;;ACOT,SAAgB,sBACd,SACgB;AAChB,QAAO,mBAAmBA,SAAO,CAAC,QAAQ,CAAC;;AAG7C,SAASC,WAAS,OAAkB;AAClC,QAAO,MAAM,KAAK,MAAM,cAAc,SAAS,EAAE,CAAC;;AAGpD,MAAMD,UAAQ,YAAiD;CAC7D,QAAQ;CACR,WAAW;CACX,UAAU,aAAoD;EAC5D,MAAM,eAA4B,MAAM,UAAmB;GACzD,MAAM,WAAW,KAAK,YAAY;IAAE,MAAM,MAAM;IAAG,KAAK,MAAM;IAAG,CAAC;AAClE,OAAI,CAAC,SACH,QAAO;GAET,MAAM,MAAM,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS;AAE7D,UAAO,YACL,MACA,OACA,SAAS,KAAK,aAAa,YAAY,QAAQ;IAAE,GAAG;IAAS;IAAK,CAAC,CAAC,EACpEC,WACD;;AAEH,SAAO,CAAC,QAAQ,YAAY;;CAE/B,CAAC;ACnCF,SAAgB,uBACd,SACgB;AAChB,QAAO,mBAAmB,OAAO,CAAC,QAAQ,CAAC;;AAG7C,SAAS,SAAS,OAAuB;AACvC,QAAO,MAAM,KAAK,MAAM,eAAe,SAAS,EAAE,CAAC;;AAGrD,MAAM,QAAQ,YAAkD;CAC9D,QAAQ;CACR,WAAW;CACX,UAAU,aAAqD;EAC7D,MAAM,gBAA8B,MAAM,UAAmB;AAC3D,UAAO,YAA4B,MAAM,OAAO,UAAU,SAAS;;AAErE,SAAO,CAAC,SAAS,aAAa;;CAEjC,CAAC;;;;ACvBF,IAAa,aAAb,MAAgC;;;;;;;CAoC9B,YAAY,EAAE,MAAM,YAAwD;cAzB3D;qBAiB6C,EAAE;AAS9D,OAAK,YAAY,IAAI,gBAAgB,KAAK;AAC1C,OAAK,WAAW,IAAI,SAAS,SAAS,WAAW;GAC/C,MAAM,eAAe,SAAS;IAC5B;IACA,aAAa,aAAa;AACxB,UAAK,MAAM,cAAc,KAAK,YAC5B,YAAW,SAAS;;IAGzB,CAAC;AACF,WAAQ,QAAQ,aAAa,CAAC,MAC3B,WAAW;AACV,SAAK,OAAO;AACZ,QAAI,gBAAgB,KAAK,UAAU;AACnC,SAAK,SAAS;AACd,YAAQ,OAAO;OAEhB,QAAQ;AACP,SAAK,OAAO;IACZ,MAAM,QAAQ,IAAI,cAAc,oCAAoC,EAAE,OAAO,KAAK,CAAC;AACnF,SAAK,QAAQ;AACb,WAAO,MAAM;KAEhB;IACD;AACF,QAAM,IAAI,KAAK,WAAW,KAAK;;;;;CAMjC,kBACE,UACc;AACd,OAAK,YAAY,KAAK,SAAS;AAC/B,eAAa;AACX,QAAK,cAAc,KAAK,YAAY,QACjC,eAAe,eAAe,SAChC;;;;;;CAOL,OAAO,IACL,WACgC;AAChC,SAAO,MAAM,IAAI,UAAU;;;;;CAM7B,OAAO,OAAO,WAAyB;AACrC,QAAM,OAAO,UAAU;;;AAI3B,MAAM,wBAAQ,IAAI,KAAkC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { PlainExtension } from "@prosekit/core";
|
|
2
|
-
|
|
3
|
-
//#region src/gap-cursor/gap-cursor.d.ts
|
|
4
2
|
/**
|
|
5
3
|
* @internal
|
|
6
4
|
*/
|
|
@@ -20,6 +18,5 @@ type GapCursorExtension = PlainExtension;
|
|
|
20
18
|
* @public
|
|
21
19
|
*/
|
|
22
20
|
declare function defineGapCursor(): GapCursorExtension;
|
|
23
|
-
//#endregion
|
|
24
21
|
export { type GapCursorExtension, defineGapCursor };
|
|
25
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=gap-cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gap-cursor.d.ts","names":[],"sources":["../src/gap-cursor/gap-cursor.ts"],"mappings":";;AAMA;;KAAY,kBAAA,GAAqB,cAAA;;;AAgBjC;;;;;;;;;;;;iBAAgB,eAAA,CAAA,GAAmB,kBAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { definePlugin } from "@prosekit/core";
|
|
2
2
|
import { gapCursor } from "prosemirror-gapcursor";
|
|
3
|
-
//#region src/gap-cursor/gap-cursor.ts
|
|
4
3
|
/**
|
|
5
4
|
* Capture clicks near and arrow-key-motion past places that don't have a
|
|
6
5
|
* normally selectable position nearby, and create a gap cursor selection for
|
|
@@ -18,7 +17,6 @@ import { gapCursor } from "prosemirror-gapcursor";
|
|
|
18
17
|
function defineGapCursor() {
|
|
19
18
|
return definePlugin(() => gapCursor());
|
|
20
19
|
}
|
|
21
|
-
//#endregion
|
|
22
20
|
export { defineGapCursor };
|
|
23
21
|
|
|
24
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=gap-cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gap-cursor.js","names":[],"sources":["../src/gap-cursor/gap-cursor.ts"],"sourcesContent":["import { definePlugin, type PlainExtension } from '@prosekit/core'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\n/**\n * @internal\n */\nexport type GapCursorExtension = PlainExtension\n\n/**\n * Capture clicks near and arrow-key-motion past places that don't have a\n * normally selectable position nearby, and create a gap cursor selection for\n * them. The cursor is drawn as an element with class `ProseMirror-gapcursor`.\n *\n * You can either include `prosekit/extensions/gap-cursor.css` or add your own\n * styles to make it visible.\n *\n * See\n * [prosemirror-gapcursor](https://github.com/ProseMirror/prosemirror-gapcursor)\n * for more information.\n *\n * @public\n */\nexport function defineGapCursor(): GapCursorExtension {\n return definePlugin(() => gapCursor())\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAsBA,SAAgB,kBAAsC;AACpD,QAAO,mBAAmB,WAAW,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Command } from "@prosekit/pm/state";
|
|
2
2
|
import { Extension, PlainExtension, Union } from "@prosekit/core";
|
|
3
3
|
import { Attrs } from "@prosekit/pm/model";
|
|
4
|
-
|
|
5
|
-
//#region src/hard-break/hard-break-commands.d.ts
|
|
6
4
|
/**
|
|
7
5
|
* @internal
|
|
8
6
|
*/
|
|
@@ -15,14 +13,10 @@ type HardBreakCommandsExtension = Extension<{
|
|
|
15
13
|
* @internal
|
|
16
14
|
*/
|
|
17
15
|
declare function defineHardBreakCommands(): HardBreakCommandsExtension;
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region src/hard-break/hard-break-keymap.d.ts
|
|
20
16
|
/**
|
|
21
17
|
* @internal
|
|
22
18
|
*/
|
|
23
19
|
declare function defineHardBreakKeymap(): PlainExtension;
|
|
24
|
-
//#endregion
|
|
25
|
-
//#region src/hard-break/hard-break-spec.d.ts
|
|
26
20
|
/**
|
|
27
21
|
* @internal
|
|
28
22
|
*/
|
|
@@ -35,8 +29,6 @@ type HardBreakSpecExtension = Extension<{
|
|
|
35
29
|
* @internal
|
|
36
30
|
*/
|
|
37
31
|
declare function defineHardBreakSpec(): HardBreakSpecExtension;
|
|
38
|
-
//#endregion
|
|
39
|
-
//#region src/hard-break/hard-break.d.ts
|
|
40
32
|
/**
|
|
41
33
|
* @internal
|
|
42
34
|
*/
|
|
@@ -45,6 +37,5 @@ type HardBreakExtension = Union<[HardBreakSpecExtension, HardBreakCommandsExtens
|
|
|
45
37
|
* @public
|
|
46
38
|
*/
|
|
47
39
|
declare function defineHardBreak(): HardBreakExtension;
|
|
48
|
-
//#endregion
|
|
49
40
|
export { type HardBreakCommandsExtension, type HardBreakExtension, type HardBreakSpecExtension, defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
|
|
50
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=hard-break.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hard-break.d.ts","names":[],"sources":["../src/hard-break/hard-break-commands.ts","../src/hard-break/hard-break-keymap.ts","../src/hard-break/hard-break-spec.ts","../src/hard-break/hard-break.ts"],"mappings":";;;;;AAMA;KAAY,0BAAA,GAA6B,SAAA;EACvC,QAAA;IACE,eAAA;EAAA;AAAA;;;;iBAcY,uBAAA,CAAA,GAA2B,0BAAA;;;;iBCf3B,qBAAA,CAAA,GAAyB,cAAA;;;ADDzC;KEAY,sBAAA,GAAyB,SAAA;EACnC,KAAA;IACE,SAAA,EAAW,KAAA;EAAA;AAAA;;;;iBAOC,mBAAA,CAAA,GAAuB,sBAAA;;AFTvC;;KGGY,kBAAA,GAAqB,KAAA,EAC9B,sBAAA,EAAwB,0BAAA;;;;iBAMX,eAAA,CAAA,GAAmB,kBAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defineCommands, defineKeymap, defineNodeSpec, insertNode, union } from "@prosekit/core";
|
|
2
|
-
//#region src/hard-break/hard-break-commands.ts
|
|
3
2
|
/**
|
|
4
3
|
* @internal
|
|
5
4
|
*/
|
|
@@ -12,8 +11,6 @@ function insertHardBreak() {
|
|
|
12
11
|
function defineHardBreakCommands() {
|
|
13
12
|
return defineCommands({ insertHardBreak });
|
|
14
13
|
}
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/hard-break/hard-break-keymap.ts
|
|
17
14
|
/**
|
|
18
15
|
* @internal
|
|
19
16
|
*/
|
|
@@ -23,8 +20,6 @@ function defineHardBreakKeymap() {
|
|
|
23
20
|
"Shift-Enter": insertHardBreak()
|
|
24
21
|
});
|
|
25
22
|
}
|
|
26
|
-
//#endregion
|
|
27
|
-
//#region src/hard-break/hard-break-spec.ts
|
|
28
23
|
/**
|
|
29
24
|
* @internal
|
|
30
25
|
*/
|
|
@@ -41,15 +36,12 @@ function defineHardBreakSpec() {
|
|
|
41
36
|
}
|
|
42
37
|
});
|
|
43
38
|
}
|
|
44
|
-
//#endregion
|
|
45
|
-
//#region src/hard-break/hard-break.ts
|
|
46
39
|
/**
|
|
47
40
|
* @public
|
|
48
41
|
*/
|
|
49
42
|
function defineHardBreak() {
|
|
50
43
|
return union(defineHardBreakSpec(), defineHardBreakKeymap(), defineHardBreakCommands());
|
|
51
44
|
}
|
|
52
|
-
//#endregion
|
|
53
45
|
export { defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
|
|
54
46
|
|
|
55
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=hard-break.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hard-break.js","names":[],"sources":["../src/hard-break/hard-break-commands.ts","../src/hard-break/hard-break-keymap.ts","../src/hard-break/hard-break-spec.ts","../src/hard-break/hard-break.ts"],"sourcesContent":["import { defineCommands, insertNode, type Extension } from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\n\n/**\n * @internal\n */\nexport type HardBreakCommandsExtension = Extension<{\n Commands: {\n insertHardBreak: []\n }\n}>\n\n/**\n * @internal\n */\nexport function insertHardBreak(): Command {\n return insertNode({ type: 'hardBreak' })\n}\n\n/**\n * @internal\n */\nexport function defineHardBreakCommands(): HardBreakCommandsExtension {\n return defineCommands({\n insertHardBreak: insertHardBreak,\n })\n}\n","import { defineKeymap, type PlainExtension } from '@prosekit/core'\n\nimport { insertHardBreak } from './hard-break-commands.ts'\n\n/**\n * @internal\n */\nexport function defineHardBreakKeymap(): PlainExtension {\n return defineKeymap({\n 'Mod-Enter': insertHardBreak(),\n 'Shift-Enter': insertHardBreak(),\n })\n}\n","import { defineNodeSpec, type Extension } from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\n/**\n * @internal\n */\nexport type HardBreakSpecExtension = Extension<{\n Nodes: {\n hardBreak: Attrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHardBreakSpec(): HardBreakSpecExtension {\n return defineNodeSpec({\n name: 'hardBreak',\n inline: true,\n selectable: false,\n leafText: () => '\\n',\n group: 'inline',\n parseDOM: [{ tag: 'br' }],\n toDOM() {\n return ['br']\n },\n })\n}\n","import { union, type Union } from '@prosekit/core'\n\nimport { defineHardBreakCommands, type HardBreakCommandsExtension } from './hard-break-commands.ts'\nimport { defineHardBreakKeymap } from './hard-break-keymap.ts'\nimport { defineHardBreakSpec, type HardBreakSpecExtension } from './hard-break-spec.ts'\n\n/**\n * @internal\n */\nexport type HardBreakExtension = Union<\n [HardBreakSpecExtension, HardBreakCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHardBreak(): HardBreakExtension {\n return union(\n defineHardBreakSpec(),\n defineHardBreakKeymap(),\n defineHardBreakCommands(),\n )\n}\n"],"mappings":";;;;AAeA,SAAgB,kBAA2B;AACzC,QAAO,WAAW,EAAE,MAAM,aAAa,CAAC;;;;;AAM1C,SAAgB,0BAAsD;AACpE,QAAO,eAAe,EACH,iBAClB,CAAC;;;;;AClBJ,SAAgB,wBAAwC;AACtD,QAAO,aAAa;EAClB,aAAa,iBAAiB;EAC9B,eAAe,iBAAiB;EACjC,CAAC;;;;;ACIJ,SAAgB,sBAA8C;AAC5D,QAAO,eAAe;EACpB,MAAM;EACN,QAAQ;EACR,YAAY;EACZ,gBAAgB;EAChB,OAAO;EACP,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC;EACzB,QAAQ;AACN,UAAO,CAAC,KAAK;;EAEhB,CAAC;;;;;ACVJ,SAAgB,kBAAsC;AACpD,QAAO,MACL,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,CAC1B"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { Extension, PlainExtension, Union } from "@prosekit/core";
|
|
2
|
-
|
|
3
|
-
//#region src/heading/heading-types.d.ts
|
|
4
2
|
interface HeadingAttrs {
|
|
5
3
|
level: number;
|
|
6
4
|
}
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region src/heading/heading-commands.d.ts
|
|
9
5
|
/**
|
|
10
6
|
* @internal
|
|
11
7
|
*/
|
|
@@ -20,8 +16,6 @@ type HeadingCommandsExtension = Extension<{
|
|
|
20
16
|
* @internal
|
|
21
17
|
*/
|
|
22
18
|
declare function defineHeadingCommands(): HeadingCommandsExtension;
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/heading/heading-input-rule.d.ts
|
|
25
19
|
/**
|
|
26
20
|
* Converts the text block to a heading when `#` is typed at the start of a new
|
|
27
21
|
* line followed by a space.
|
|
@@ -29,14 +23,10 @@ declare function defineHeadingCommands(): HeadingCommandsExtension;
|
|
|
29
23
|
* @internal
|
|
30
24
|
*/
|
|
31
25
|
declare function defineHeadingInputRule(): PlainExtension;
|
|
32
|
-
//#endregion
|
|
33
|
-
//#region src/heading/heading-keymap.d.ts
|
|
34
26
|
/**
|
|
35
27
|
* @internal
|
|
36
28
|
*/
|
|
37
29
|
declare function defineHeadingKeymap(): PlainExtension;
|
|
38
|
-
//#endregion
|
|
39
|
-
//#region src/heading/heading-spec.d.ts
|
|
40
30
|
/**
|
|
41
31
|
* @internal
|
|
42
32
|
*/
|
|
@@ -49,8 +39,6 @@ type HeadingSpecExtension = Extension<{
|
|
|
49
39
|
* @internal
|
|
50
40
|
*/
|
|
51
41
|
declare function defineHeadingSpec(): HeadingSpecExtension;
|
|
52
|
-
//#endregion
|
|
53
|
-
//#region src/heading/heading.d.ts
|
|
54
42
|
/**
|
|
55
43
|
* @internal
|
|
56
44
|
*/
|
|
@@ -59,6 +47,5 @@ type HeadingExtension = Union<[HeadingSpecExtension, HeadingCommandsExtension]>;
|
|
|
59
47
|
* @public
|
|
60
48
|
*/
|
|
61
49
|
declare function defineHeading(): HeadingExtension;
|
|
62
|
-
//#endregion
|
|
63
50
|
export { type HeadingAttrs, type HeadingCommandsExtension, type HeadingExtension, type HeadingSpecExtension, defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
|
|
64
|
-
//# sourceMappingURL=
|
|
51
|
+
//# sourceMappingURL=heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading.d.ts","names":[],"sources":["../src/heading/heading-types.ts","../src/heading/heading-commands.ts","../src/heading/heading-input-rule.ts","../src/heading/heading-keymap.ts","../src/heading/heading-spec.ts","../src/heading/heading.ts"],"mappings":";UAAiB,YAAA;EACf,KAAA;AAAA;AADF;;;AAAA,KCOY,wBAAA,GAA2B,SAAA;EACrC,QAAA;IACE,UAAA,GAAa,KAAA,GAAQ,YAAA;IACrB,aAAA,GAAgB,KAAA,GAAQ,YAAA;IACxB,aAAA,GAAgB,KAAA,GAAQ,YAAA;EAAA;AAAA;;;;iBAOZ,qBAAA,CAAA,GAAyB,wBAAA;;ADlBzC;;;;;iBEYgB,sBAAA,CAAA,GAA0B,cAAA;;AFZ1C;;iBGsBgB,mBAAA,CAAA,GAAuB,cAAA;AHtBvC;;;AAAA,KIOY,oBAAA,GAAuB,SAAA;EACjC,KAAA;IACE,OAAA,EAAS,YAAA;EAAA;AAAA;;;;iBAOG,iBAAA,CAAA,GAAqB,oBAAA;;;;KCNzB,gBAAA,GAAmB,KAAA,EAC5B,oBAAA,EAAsB,wBAAA;;;;iBAMT,aAAA,CAAA,GAAiB,gBAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { defineTextBlockInputRule } from "./
|
|
1
|
+
import { defineTextBlockInputRule } from "./input-rule.js";
|
|
2
2
|
import { defineCommands, defineKeymap, defineNodeSpec, insertNode, isAtBlockStart, setBlockType, toggleNode, union, unsetBlockType, withSkipCodeBlock } from "@prosekit/core";
|
|
3
|
-
//#region src/heading/heading-commands.ts
|
|
4
3
|
/**
|
|
5
4
|
* @internal
|
|
6
5
|
*/
|
|
@@ -26,8 +25,6 @@ function defineHeadingCommands() {
|
|
|
26
25
|
}
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
|
-
//#endregion
|
|
30
|
-
//#region src/heading/heading-input-rule.ts
|
|
31
28
|
/**
|
|
32
29
|
* Converts the text block to a heading when `#` is typed at the start of a new
|
|
33
30
|
* line followed by a space.
|
|
@@ -43,8 +40,6 @@ function defineHeadingInputRule() {
|
|
|
43
40
|
}
|
|
44
41
|
});
|
|
45
42
|
}
|
|
46
|
-
//#endregion
|
|
47
|
-
//#region src/heading/heading-keymap.ts
|
|
48
43
|
function toggleHeadingKeybinding(level) {
|
|
49
44
|
return withSkipCodeBlock(toggleNode({
|
|
50
45
|
type: "heading",
|
|
@@ -73,8 +68,6 @@ function defineHeadingKeymap() {
|
|
|
73
68
|
"Backspace": backspaceUnsetHeading
|
|
74
69
|
});
|
|
75
70
|
}
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/heading/heading-spec.ts
|
|
78
71
|
/**
|
|
79
72
|
* @internal
|
|
80
73
|
*/
|
|
@@ -119,15 +112,12 @@ function defineHeadingSpec() {
|
|
|
119
112
|
}
|
|
120
113
|
});
|
|
121
114
|
}
|
|
122
|
-
//#endregion
|
|
123
|
-
//#region src/heading/heading.ts
|
|
124
115
|
/**
|
|
125
116
|
* @public
|
|
126
117
|
*/
|
|
127
118
|
function defineHeading() {
|
|
128
119
|
return union(defineHeadingSpec(), defineHeadingInputRule(), defineHeadingKeymap(), defineHeadingCommands());
|
|
129
120
|
}
|
|
130
|
-
//#endregion
|
|
131
121
|
export { defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
|
|
132
122
|
|
|
133
|
-
//# sourceMappingURL=
|
|
123
|
+
//# sourceMappingURL=heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading.js","names":[],"sources":["../src/heading/heading-commands.ts","../src/heading/heading-input-rule.ts","../src/heading/heading-keymap.ts","../src/heading/heading-spec.ts","../src/heading/heading.ts"],"sourcesContent":["import { defineCommands, insertNode, setBlockType, toggleNode, type Extension } from '@prosekit/core'\n\nimport type { HeadingAttrs } from './heading-types.ts'\n\n/**\n * @internal\n */\nexport type HeadingCommandsExtension = Extension<{\n Commands: {\n setHeading: [attrs?: HeadingAttrs | undefined]\n insertHeading: [attrs?: HeadingAttrs | undefined]\n toggleHeading: [attrs?: HeadingAttrs | undefined]\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHeadingCommands(): HeadingCommandsExtension {\n return defineCommands({\n setHeading: (attrs?: HeadingAttrs) => {\n return setBlockType({ type: 'heading', attrs })\n },\n insertHeading: (attrs?: HeadingAttrs) => {\n return insertNode({ type: 'heading', attrs })\n },\n toggleHeading: (attrs?: HeadingAttrs) => {\n return toggleNode({ type: 'heading', attrs })\n },\n })\n}\n","import type { PlainExtension } from '@prosekit/core'\n\nimport { defineTextBlockInputRule } from '../input-rule/index.ts'\n\nimport type { HeadingAttrs } from './heading-types.ts'\n\n/**\n * Converts the text block to a heading when `#` is typed at the start of a new\n * line followed by a space.\n *\n * @internal\n */\nexport function defineHeadingInputRule(): PlainExtension {\n return defineTextBlockInputRule({\n regex: /^(#{1,6})\\s$/,\n type: 'heading',\n attrs: (match) => {\n const level: number = match[1]?.length ?? 1\n return { level } satisfies HeadingAttrs\n },\n })\n}\n","import { defineKeymap, isAtBlockStart, toggleNode, unsetBlockType, withSkipCodeBlock, type PlainExtension } from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\n\nfunction toggleHeadingKeybinding(level: number): Command {\n return withSkipCodeBlock(toggleNode({ type: 'heading', attrs: { level } }))\n}\n\n/**\n * Set the block type to default (usually `paragraph`) when pressing Backspace at\n * the start of a heading block.\n */\nconst backspaceUnsetHeading: Command = (state, dispatch, view) => {\n const $pos = isAtBlockStart(state, view)\n if ($pos?.parent.type.name === 'heading') {\n return unsetBlockType()(state, dispatch, view)\n }\n return false\n}\n\n/**\n * @internal\n */\nexport function defineHeadingKeymap(): PlainExtension {\n return defineKeymap({\n 'Mod-Alt-1': toggleHeadingKeybinding(1),\n 'Mod-Alt-2': toggleHeadingKeybinding(2),\n 'Mod-Alt-3': toggleHeadingKeybinding(3),\n 'Mod-Alt-4': toggleHeadingKeybinding(4),\n 'Mod-Alt-5': toggleHeadingKeybinding(5),\n 'Mod-Alt-6': toggleHeadingKeybinding(6),\n 'Backspace': backspaceUnsetHeading,\n })\n}\n","import { defineNodeSpec, type Extension } from '@prosekit/core'\n\nimport type { HeadingAttrs } from './heading-types.ts'\n\n/**\n * @internal\n */\nexport type HeadingSpecExtension = Extension<{\n Nodes: {\n heading: HeadingAttrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHeadingSpec(): HeadingSpecExtension {\n return defineNodeSpec({\n name: 'heading',\n attrs: { level: { default: 1, validate: 'number' } },\n content: 'inline*',\n group: 'block',\n defining: true,\n parseDOM: [\n { tag: 'h1', attrs: { level: 1 } },\n { tag: 'h2', attrs: { level: 2 } },\n { tag: 'h3', attrs: { level: 3 } },\n { tag: 'h4', attrs: { level: 4 } },\n { tag: 'h5', attrs: { level: 5 } },\n { tag: 'h6', attrs: { level: 6 } },\n ],\n toDOM(node) {\n return [`h${node.attrs.level}`, 0]\n },\n })\n}\n","import { union, type Union } from '@prosekit/core'\n\nimport { defineHeadingCommands, type HeadingCommandsExtension } from './heading-commands.ts'\nimport { defineHeadingInputRule } from './heading-input-rule.ts'\nimport { defineHeadingKeymap } from './heading-keymap.ts'\nimport { defineHeadingSpec, type HeadingSpecExtension } from './heading-spec.ts'\n\n/**\n * @internal\n */\nexport type HeadingExtension = Union<\n [HeadingSpecExtension, HeadingCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHeading(): HeadingExtension {\n return union(\n defineHeadingSpec(),\n defineHeadingInputRule(),\n defineHeadingKeymap(),\n defineHeadingCommands(),\n )\n}\n"],"mappings":";;;;;AAkBA,SAAgB,wBAAkD;AAChE,QAAO,eAAe;EACpB,aAAa,UAAyB;AACpC,UAAO,aAAa;IAAE,MAAM;IAAW;IAAO,CAAC;;EAEjD,gBAAgB,UAAyB;AACvC,UAAO,WAAW;IAAE,MAAM;IAAW;IAAO,CAAC;;EAE/C,gBAAgB,UAAyB;AACvC,UAAO,WAAW;IAAE,MAAM;IAAW;IAAO,CAAC;;EAEhD,CAAC;;;;;;;;ACjBJ,SAAgB,yBAAyC;AACvD,QAAO,yBAAyB;EAC9B,OAAO;EACP,MAAM;EACN,QAAQ,UAAU;AAEhB,UAAO,EAAE,OADa,MAAM,IAAI,UAAU,GAC1B;;EAEnB,CAAC;;ACjBJ,SAAS,wBAAwB,OAAwB;AACvD,QAAO,kBAAkB,WAAW;EAAE,MAAM;EAAW,OAAO,EAAE,OAAO;EAAE,CAAC,CAAC;;;;;;AAO7E,MAAM,yBAAkC,OAAO,UAAU,SAAS;AAEhE,KADa,eAAe,OAAO,KAC3B,EAAE,OAAO,KAAK,SAAS,UAC7B,QAAO,gBAAgB,CAAC,OAAO,UAAU,KAAK;AAEhD,QAAO;;;;;AAMT,SAAgB,sBAAsC;AACpD,QAAO,aAAa;EAClB,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa;EACd,CAAC;;;;;ACfJ,SAAgB,oBAA0C;AACxD,QAAO,eAAe;EACpB,MAAM;EACN,OAAO,EAAE,OAAO;GAAE,SAAS;GAAG,UAAU;GAAU,EAAE;EACpD,SAAS;EACT,OAAO;EACP,UAAU;EACV,UAAU;GACR;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GACnC;EACD,MAAM,MAAM;AACV,UAAO,CAAC,IAAI,KAAK,MAAM,SAAS,EAAE;;EAErC,CAAC;;;;;ACjBJ,SAAgB,gBAAkC;AAChD,QAAO,MACL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,CACxB"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Command } from "@prosekit/pm/state";
|
|
2
2
|
import { Extension, PlainExtension, Union } from "@prosekit/core";
|
|
3
3
|
import { Attrs } from "@prosekit/pm/model";
|
|
4
|
-
|
|
5
|
-
//#region src/horizontal-rule/horizontal-rule-commands.d.ts
|
|
6
4
|
type HorizontalRuleCommandsExtension = Extension<{
|
|
7
5
|
Commands: {
|
|
8
6
|
insertHorizontalRule: [];
|
|
@@ -13,27 +11,20 @@ type HorizontalRuleCommandsExtension = Extension<{
|
|
|
13
11
|
*/
|
|
14
12
|
declare function insertHorizontalRule(): Command;
|
|
15
13
|
declare function defineHorizontalRuleCommands(): HorizontalRuleCommandsExtension;
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/horizontal-rule/horizontal-rule-input-rule.d.ts
|
|
18
14
|
/**
|
|
19
15
|
* @public
|
|
20
16
|
*/
|
|
21
17
|
declare function defineHorizontalRuleInputRule(): PlainExtension;
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region src/horizontal-rule/horizontal-rule-spec.d.ts
|
|
24
18
|
type HorizontalRuleSpecExtension = Extension<{
|
|
25
19
|
Nodes: {
|
|
26
20
|
horizontalRule: Attrs;
|
|
27
21
|
};
|
|
28
22
|
}>;
|
|
29
23
|
declare function defineHorizontalRuleSpec(): HorizontalRuleSpecExtension;
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region src/horizontal-rule/horizontal-rule.d.ts
|
|
32
24
|
type HorizontalRuleExtension = Union<[HorizontalRuleSpecExtension, HorizontalRuleCommandsExtension]>;
|
|
33
25
|
/**
|
|
34
26
|
* @public
|
|
35
27
|
*/
|
|
36
28
|
declare function defineHorizontalRule(): HorizontalRuleExtension;
|
|
37
|
-
//#endregion
|
|
38
29
|
export { type HorizontalRuleCommandsExtension, type HorizontalRuleExtension, type HorizontalRuleSpecExtension, defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
|
|
39
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=horizontal-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"horizontal-rule.d.ts","names":[],"sources":["../src/horizontal-rule/horizontal-rule-commands.ts","../src/horizontal-rule/horizontal-rule-input-rule.ts","../src/horizontal-rule/horizontal-rule-spec.ts","../src/horizontal-rule/horizontal-rule.ts"],"mappings":";;;KAIY,+BAAA,GAAkC,SAAA;EAC5C,QAAA;IACE,oBAAA;EAAA;AAAA;;;;iBAoBY,oBAAA,CAAA,GAAwB,OAAA;AAAA,iBAIxB,4BAAA,CAAA,GAAgC,+BAAA;;;;iBCtBhC,6BAAA,CAAA,GAAiC,cAAA;AAAA,KCLrC,2BAAA,GAA8B,SAAA;EACxC,KAAA;IACE,cAAA,EAAgB,KAAA;EAAA;AAAA;AAAA,iBAIJ,wBAAA,CAAA,GAA4B,2BAAA;AAAA,KCHhC,uBAAA,GAA0B,KAAA,EACnC,2BAAA,EAA6B,+BAAA;;;;iBAMhB,oBAAA,CAAA,GAAwB,uBAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { defineInputRule } from "./
|
|
1
|
+
import { defineInputRule } from "./input-rule.js";
|
|
2
2
|
import { defineCommands, defineNodeSpec, getNodeType, union } from "@prosekit/core";
|
|
3
3
|
import { InputRule } from "@prosekit/pm/inputrules";
|
|
4
4
|
import { Fragment, Slice } from "@prosekit/pm/model";
|
|
5
|
-
//#region src/horizontal-rule/horizontal-rule-commands.ts
|
|
6
5
|
const insertHorizontalRuleCommand = (state, dispatch) => {
|
|
7
6
|
if (!dispatch) return true;
|
|
8
7
|
const { schema, tr } = state;
|
|
@@ -22,8 +21,6 @@ function insertHorizontalRule() {
|
|
|
22
21
|
function defineHorizontalRuleCommands() {
|
|
23
22
|
return defineCommands({ insertHorizontalRule });
|
|
24
23
|
}
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/horizontal-rule/horizontal-rule-input-rule.ts
|
|
27
24
|
/**
|
|
28
25
|
* @public
|
|
29
26
|
*/
|
|
@@ -36,8 +33,6 @@ function defineHorizontalRuleInputRule() {
|
|
|
36
33
|
return tr.scrollIntoView();
|
|
37
34
|
})));
|
|
38
35
|
}
|
|
39
|
-
//#endregion
|
|
40
|
-
//#region src/horizontal-rule/horizontal-rule-spec.ts
|
|
41
36
|
function defineHorizontalRuleSpec() {
|
|
42
37
|
return defineNodeSpec({
|
|
43
38
|
name: "horizontalRule",
|
|
@@ -50,15 +45,12 @@ function defineHorizontalRuleSpec() {
|
|
|
50
45
|
]
|
|
51
46
|
});
|
|
52
47
|
}
|
|
53
|
-
//#endregion
|
|
54
|
-
//#region src/horizontal-rule/horizontal-rule.ts
|
|
55
48
|
/**
|
|
56
49
|
* @public
|
|
57
50
|
*/
|
|
58
51
|
function defineHorizontalRule() {
|
|
59
52
|
return union(defineHorizontalRuleSpec(), defineHorizontalRuleInputRule(), defineHorizontalRuleCommands());
|
|
60
53
|
}
|
|
61
|
-
//#endregion
|
|
62
54
|
export { defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
|
|
63
55
|
|
|
64
|
-
//# sourceMappingURL=
|
|
56
|
+
//# sourceMappingURL=horizontal-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"horizontal-rule.js","names":[],"sources":["../src/horizontal-rule/horizontal-rule-commands.ts","../src/horizontal-rule/horizontal-rule-input-rule.ts","../src/horizontal-rule/horizontal-rule-spec.ts","../src/horizontal-rule/horizontal-rule.ts"],"sourcesContent":["import { defineCommands, getNodeType, type Extension } from '@prosekit/core'\nimport { Fragment, Slice } from '@prosekit/pm/model'\nimport type { Command } from '@prosekit/pm/state'\n\nexport type HorizontalRuleCommandsExtension = Extension<{\n Commands: {\n insertHorizontalRule: []\n }\n}>\n\nconst insertHorizontalRuleCommand: Command = (state, dispatch): boolean => {\n if (!dispatch) return true\n\n const { schema, tr } = state\n const type = getNodeType(schema, 'horizontalRule')\n const node = type.createChecked()\n const pos = tr.selection.anchor\n const slice = new Slice(Fragment.from(node), 0, 0)\n tr.replaceRange(pos, pos, slice).scrollIntoView()\n dispatch(tr)\n return true\n}\n\n/**\n * Returns a command that inserts a horizontal rule at the current selection.\n */\nexport function insertHorizontalRule(): Command {\n return insertHorizontalRuleCommand\n}\n\nexport function defineHorizontalRuleCommands(): HorizontalRuleCommandsExtension {\n return defineCommands({ insertHorizontalRule })\n}\n","import { getNodeType, union, type PlainExtension } from '@prosekit/core'\nimport { InputRule } from '@prosekit/pm/inputrules'\n\nimport { defineInputRule } from '../input-rule/index.ts'\n\n/**\n * @public\n */\nexport function defineHorizontalRuleInputRule(): PlainExtension {\n return union(\n defineInputRule(\n new InputRule(/^---$/, (state, match, start, end) => {\n const { schema } = state\n const { tr } = state\n const type = getNodeType(schema, 'horizontalRule')\n const node = type.createChecked()\n tr.delete(start, end).insert(start - 1, node)\n return tr.scrollIntoView()\n }),\n ),\n )\n}\n","import { defineNodeSpec, type Extension } from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\nexport type HorizontalRuleSpecExtension = Extension<{\n Nodes: {\n horizontalRule: Attrs\n }\n}>\n\nexport function defineHorizontalRuleSpec(): HorizontalRuleSpecExtension {\n return defineNodeSpec({\n name: 'horizontalRule',\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n // Wrap the `<hr>` in a `<div>` so that we can make it taller and easier to click.\n toDOM: () => ['div', { class: 'prosekit-horizontal-rule' }, ['hr']],\n })\n}\n","import { union, type Union } from '@prosekit/core'\n\nimport { defineHorizontalRuleCommands, type HorizontalRuleCommandsExtension } from './horizontal-rule-commands.ts'\nimport { defineHorizontalRuleInputRule } from './horizontal-rule-input-rule.ts'\nimport { defineHorizontalRuleSpec, type HorizontalRuleSpecExtension } from './horizontal-rule-spec.ts'\n\nexport type HorizontalRuleExtension = Union<\n [HorizontalRuleSpecExtension, HorizontalRuleCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHorizontalRule(): HorizontalRuleExtension {\n return union(\n defineHorizontalRuleSpec(),\n defineHorizontalRuleInputRule(),\n defineHorizontalRuleCommands(),\n )\n}\n"],"mappings":";;;;AAUA,MAAM,+BAAwC,OAAO,aAAsB;AACzE,KAAI,CAAC,SAAU,QAAO;CAEtB,MAAM,EAAE,QAAQ,OAAO;CAEvB,MAAM,OADO,YAAY,QAAQ,iBAChB,CAAC,eAAe;CACjC,MAAM,MAAM,GAAG,UAAU;CACzB,MAAM,QAAQ,IAAI,MAAM,SAAS,KAAK,KAAK,EAAE,GAAG,EAAE;AAClD,IAAG,aAAa,KAAK,KAAK,MAAM,CAAC,gBAAgB;AACjD,UAAS,GAAG;AACZ,QAAO;;;;;AAMT,SAAgB,uBAAgC;AAC9C,QAAO;;AAGT,SAAgB,+BAAgE;AAC9E,QAAO,eAAe,EAAE,sBAAsB,CAAC;;;;;ACvBjD,SAAgB,gCAAgD;AAC9D,QAAO,MACL,gBACE,IAAI,UAAU,UAAU,OAAO,OAAO,OAAO,QAAQ;EACnD,MAAM,EAAE,WAAW;EACnB,MAAM,EAAE,OAAO;EAEf,MAAM,OADO,YAAY,QAAQ,iBAChB,CAAC,eAAe;AACjC,KAAG,OAAO,OAAO,IAAI,CAAC,OAAO,QAAQ,GAAG,KAAK;AAC7C,SAAO,GAAG,gBAAgB;GAC1B,CACH,CACF;;ACXH,SAAgB,2BAAwD;AACtE,QAAO,eAAe;EACpB,MAAM;EACN,OAAO;EACP,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC;EAEzB,aAAa;GAAC;GAAO,EAAE,OAAO,4BAA4B;GAAE,CAAC,KAAK;GAAC;EACpE,CAAC;;;;;ACHJ,SAAgB,uBAAgD;AAC9D,QAAO,MACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,CAC/B"}
|
|
@@ -2,8 +2,6 @@ import { l as FileDropHandlerOptions, n as UploadTask, o as FilePasteHandlerOpti
|
|
|
2
2
|
import { Command } from "@prosekit/pm/state";
|
|
3
3
|
import { Extension, PlainExtension, Union } from "@prosekit/core";
|
|
4
4
|
import { EditorView } from "@prosekit/pm/view";
|
|
5
|
-
|
|
6
|
-
//#region src/image/image-commands/upload-image.d.ts
|
|
7
5
|
/**
|
|
8
6
|
* Options for {@link uploadImage}.
|
|
9
7
|
*
|
|
@@ -82,8 +80,6 @@ declare function uploadImage({
|
|
|
82
80
|
* @internal
|
|
83
81
|
*/
|
|
84
82
|
declare function replaceImageURL(view: EditorView, oldURL: string, newURL: string): void;
|
|
85
|
-
//#endregion
|
|
86
|
-
//#region src/image/image-spec.d.ts
|
|
87
83
|
/**
|
|
88
84
|
* @public
|
|
89
85
|
*/
|
|
@@ -104,8 +100,6 @@ type ImageSpecExtension = Extension<{
|
|
|
104
100
|
* @internal
|
|
105
101
|
*/
|
|
106
102
|
declare function defineImageSpec(): ImageSpecExtension;
|
|
107
|
-
//#endregion
|
|
108
|
-
//#region src/image/image-commands.d.ts
|
|
109
103
|
/**
|
|
110
104
|
* @internal
|
|
111
105
|
*/
|
|
@@ -119,8 +113,6 @@ type ImageCommandsExtension = Extension<{
|
|
|
119
113
|
* @internal
|
|
120
114
|
*/
|
|
121
115
|
declare function defineImageCommands(): ImageCommandsExtension;
|
|
122
|
-
//#endregion
|
|
123
|
-
//#region src/image/image-commands/insert-image.d.ts
|
|
124
116
|
/**
|
|
125
117
|
* Returns a command that inserts an image node with the given attributes at the
|
|
126
118
|
* current selection position.
|
|
@@ -128,8 +120,6 @@ declare function defineImageCommands(): ImageCommandsExtension;
|
|
|
128
120
|
* @public
|
|
129
121
|
*/
|
|
130
122
|
declare function insertImage(attrs?: ImageAttrs): Command;
|
|
131
|
-
//#endregion
|
|
132
|
-
//#region src/image/image-upload-handler.d.ts
|
|
133
123
|
/**
|
|
134
124
|
* A predicate to determine if the pasted file should be uploaded and inserted as an image.
|
|
135
125
|
*/
|
|
@@ -175,8 +165,6 @@ declare function defineImageUploadHandler({
|
|
|
175
165
|
canDrop,
|
|
176
166
|
onError
|
|
177
167
|
}: ImageUploadHandlerOptions): PlainExtension;
|
|
178
|
-
//#endregion
|
|
179
|
-
//#region src/image/image.d.ts
|
|
180
168
|
/**
|
|
181
169
|
* @internal
|
|
182
170
|
*/
|
|
@@ -185,6 +173,5 @@ type ImageExtension = Union<[ImageSpecExtension, ImageCommandsExtension]>;
|
|
|
185
173
|
* @public
|
|
186
174
|
*/
|
|
187
175
|
declare function defineImage(): ImageExtension;
|
|
188
|
-
//#endregion
|
|
189
176
|
export { type ImageAttrs, type ImageCanDropPredicate, type ImageCanPastePredicate, type ImageCommandsExtension, type ImageExtension, type ImageSpecExtension, type ImageUploadErrorHandler, type ImageUploadErrorHandlerOptions, type ImageUploadHandlerOptions, type UploadImageOptions, defineImage, defineImageCommands, defineImageSpec, defineImageUploadHandler, insertImage, replaceImageURL, uploadImage };
|
|
190
|
-
//# sourceMappingURL=
|
|
177
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","names":[],"sources":["../src/image/image-commands/upload-image.ts","../src/image/image-spec.ts","../src/image/image-commands.ts","../src/image/image-commands/insert-image.ts","../src/image/image-upload-handler.ts","../src/image/image.ts"],"mappings":";;;;;;AAYA;;;UAAiB,kBAAA;EAST;;;;EAJN,QAAA,EAAU,QAAA;EAAA;;;EAIV,IAAA,EAAM,IAAA;EAYN;;;;EAPA,GAAA;EAmBe;;;;;;EAZf,OAAA;EAwBA;;;EApBA,OAAA,GAAU,uBAAA;AAAA;;;;;AAsCZ;UA9BiB,8BAAA;;;;EAIf,IAAA,EAAM,IAAA;EA8BN;;;EA1BA,KAAA;EA4B6B;;;EAxB7B,UAAA,EAAY,UAAA;AAAA;;;;;;KAQF,uBAAA,IAA2B,OAAA,EAAS,8BAAA;;;;;;AAkFhD;;;iBAxEgB,WAAA,CAAA;EACd,QAAA;EACA,IAAA;EACA,GAAA;EACA,OAAA;EACA;AAAA,GACC,kBAAA,GAAqB,OAAA;;;;;;iBAkER,eAAA,CACd,IAAA,EAAM,UAAA,EACN,MAAA,UACA,MAAA;;;;UCjJe,UAAA;EACf,GAAA;EACA,KAAA;EACA,MAAA;AAAA;;;;KAMU,kBAAA,GAAqB,SAAA;EAC/B,KAAA;IACE,KAAA,EAAO,UAAA;EAAA;AAAA;;;;iBAOK,eAAA,CAAA,GAAmB,kBAAA;;;ADXnC;KEHY,sBAAA,GAAyB,SAAA;EACnC,QAAA;IACE,WAAA,GAAc,KAAA,GAAQ,UAAA;IACtB,WAAA,GAAc,OAAA,EAAS,kBAAA;EAAA;AAAA;;;;iBAOX,mBAAA,CAAA,GAAuB,sBAAA;;;;AFPvC;;;iBGDgB,WAAA,CAAY,KAAA,GAAQ,UAAA,GAAa,OAAA;;;AHCjD;KIKY,sBAAA,IAA0B,OAAA,EAAS,uBAAA;;;;KAKnC,qBAAA,IAAyB,OAAA,EAAS,sBAAA;;;;UAK7B,yBAAA;EJNf;;;;EIWA,QAAA,EAAU,QAAA;EJKA;;;AAQZ;EIRE,QAAA,GAAW,sBAAA;;;;;EAKX,OAAA,GAAU,qBAAA;EJeV;;;;EIVA,OAAA,GAAU,uBAAA;AAAA;;;;AJ4BZ;;;iBIVgB,wBAAA,CAAA;EACd,QAAA;EACA,QAAA;EACA,OAAA;EACA;AAAA,GACC,yBAAA,GAA4B,cAAA;;;AJ1D/B;KKJY,cAAA,GAAiB,KAAA,EAAO,kBAAA,EAAoB,sBAAA;;;;iBAKxC,WAAA,CAAA,GAAe,cAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { n as defineFilePasteHandler, r as defineFileDropHandler, t as UploadTask } from "./
|
|
1
|
+
import { n as defineFilePasteHandler, r as defineFileDropHandler, t as UploadTask } from "./file2.js";
|
|
2
2
|
import { ProseKitError, defineCommands, defineNodeSpec, insertNode, union } from "@prosekit/core";
|
|
3
|
-
//#region src/image/image-commands/insert-image.ts
|
|
4
3
|
/**
|
|
5
4
|
* Returns a command that inserts an image node with the given attributes at the
|
|
6
5
|
* current selection position.
|
|
@@ -13,8 +12,6 @@ function insertImage(attrs) {
|
|
|
13
12
|
attrs
|
|
14
13
|
});
|
|
15
14
|
}
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/image/image-commands/upload-image.ts
|
|
18
15
|
/**
|
|
19
16
|
* Returns a command that uploads an image file and inserts an image node with a
|
|
20
17
|
* temporary URL which is replaced once the upload completes.
|
|
@@ -95,8 +92,6 @@ function replaceImageURL(view, oldURL, newURL) {
|
|
|
95
92
|
for (const pos of positions) tr.setNodeAttribute(pos, "src", newURL);
|
|
96
93
|
view.dispatch(tr);
|
|
97
94
|
}
|
|
98
|
-
//#endregion
|
|
99
|
-
//#region src/image/image-commands.ts
|
|
100
95
|
/**
|
|
101
96
|
* @internal
|
|
102
97
|
*/
|
|
@@ -106,8 +101,6 @@ function defineImageCommands() {
|
|
|
106
101
|
uploadImage
|
|
107
102
|
});
|
|
108
103
|
}
|
|
109
|
-
//#endregion
|
|
110
|
-
//#region src/image/image-spec.ts
|
|
111
104
|
/**
|
|
112
105
|
* @internal
|
|
113
106
|
*/
|
|
@@ -158,8 +151,6 @@ function defineImageSpec() {
|
|
|
158
151
|
}
|
|
159
152
|
});
|
|
160
153
|
}
|
|
161
|
-
//#endregion
|
|
162
|
-
//#region src/image/image-upload-handler.ts
|
|
163
154
|
function defaultCanUpload({ file }) {
|
|
164
155
|
return file.type.startsWith("image/");
|
|
165
156
|
}
|
|
@@ -194,15 +185,12 @@ function defineImageUploadHandler({ uploader, canPaste = defaultCanUpload, canDr
|
|
|
194
185
|
};
|
|
195
186
|
return union(defineFilePasteHandler(handlePaste), defineFileDropHandler(handleDrop));
|
|
196
187
|
}
|
|
197
|
-
//#endregion
|
|
198
|
-
//#region src/image/image.ts
|
|
199
188
|
/**
|
|
200
189
|
* @public
|
|
201
190
|
*/
|
|
202
191
|
function defineImage() {
|
|
203
192
|
return union(defineImageSpec(), defineImageCommands());
|
|
204
193
|
}
|
|
205
|
-
//#endregion
|
|
206
194
|
export { defineImage, defineImageCommands, defineImageSpec, defineImageUploadHandler, insertImage, replaceImageURL, uploadImage };
|
|
207
195
|
|
|
208
|
-
//# sourceMappingURL=
|
|
196
|
+
//# sourceMappingURL=image.js.map
|