@prosekit/core 0.0.10 → 0.0.11
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/_tsup-dts-rollup.d.ts +31 -14
- package/dist/prosekit-core.d.ts +2 -1
- package/dist/prosekit-core.js +61 -24
- package/dist/style.css +1 -1
- package/package.json +3 -3
- package/src/index.ts +2 -1
@@ -95,6 +95,18 @@ declare function addEventHandler(options: {
|
|
95
95
|
export { addEventHandler }
|
96
96
|
export { addEventHandler as addEventHandler_alias_1 }
|
97
97
|
|
98
|
+
/**
|
99
|
+
* Add undo/redo history to the editor.
|
100
|
+
*/
|
101
|
+
declare function addHistory(): Extension< {
|
102
|
+
COMMAND_ARGS: {
|
103
|
+
undo: [];
|
104
|
+
redo: [];
|
105
|
+
};
|
106
|
+
}>;
|
107
|
+
export { addHistory }
|
108
|
+
export { addHistory as addHistory_alias_1 }
|
109
|
+
|
98
110
|
/**
|
99
111
|
* @public
|
100
112
|
*/
|
@@ -189,6 +201,11 @@ export declare function assertTypeEqual<T, U>(_val: IsEqual<T, U>): void;
|
|
189
201
|
|
190
202
|
export declare function collectNodes(content: NodeContent): ProseMirrorNode[];
|
191
203
|
|
204
|
+
export declare interface CommandApplier<Args extends any[] = any[]> {
|
205
|
+
(...args: Args): boolean;
|
206
|
+
canApply(...args: Args): boolean;
|
207
|
+
}
|
208
|
+
|
192
209
|
/** @internal */
|
193
210
|
declare interface CommandArgs {
|
194
211
|
[name: string]: any[];
|
@@ -202,8 +219,6 @@ export declare interface CommandCreators {
|
|
202
219
|
[name: string]: CommandCreator;
|
203
220
|
}
|
204
221
|
|
205
|
-
export declare type CommandDispatcher<Args extends any[] = any[]> = (...arg: Args) => boolean;
|
206
|
-
|
207
222
|
export declare const commandSlot: Facet<CommandSlotInput, CommandSlotInput>;
|
208
223
|
|
209
224
|
export declare type CommandSlotInput = Record<string, CommandCreator<any>>;
|
@@ -248,7 +263,7 @@ declare class Editor<E extends Extension = any> {
|
|
248
263
|
get mounted(): boolean;
|
249
264
|
get view(): EditorView;
|
250
265
|
get schema(): Schema<ExtractNodes<E>, ExtractMarks<E>>;
|
251
|
-
get commands():
|
266
|
+
get commands(): ExtractCommandAppliers<E>;
|
252
267
|
mount(place: HTMLElement | null | undefined | void): void;
|
253
268
|
unmount(): void;
|
254
269
|
use(extension: Extension): VoidFunction;
|
@@ -312,6 +327,13 @@ declare interface ExtensionTyping<Node extends string = string, Mark extends str
|
|
312
327
|
export { ExtensionTyping }
|
313
328
|
export { ExtensionTyping as ExtensionTyping_alias_1 }
|
314
329
|
|
330
|
+
/**
|
331
|
+
* @public
|
332
|
+
*/
|
333
|
+
declare type ExtractCommandAppliers<E extends Extension> = ToCommandApplier<ExtractCommandArgs<E>>;
|
334
|
+
export { ExtractCommandAppliers }
|
335
|
+
export { ExtractCommandAppliers as ExtractCommandAppliers_alias_1 }
|
336
|
+
|
315
337
|
/**
|
316
338
|
* @internal
|
317
339
|
*/
|
@@ -326,13 +348,6 @@ declare type ExtractCommandCreators<E extends Extension> = ToCommandCreators<Ext
|
|
326
348
|
export { ExtractCommandCreators }
|
327
349
|
export { ExtractCommandCreators as ExtractCommandCreators_alias_1 }
|
328
350
|
|
329
|
-
/**
|
330
|
-
* @public
|
331
|
-
*/
|
332
|
-
declare type ExtractCommandDispatchers<E extends Extension> = ToCommandDispatcher<ExtractCommandArgs<E>>;
|
333
|
-
export { ExtractCommandDispatchers }
|
334
|
-
export { ExtractCommandDispatchers as ExtractCommandDispatchers_alias_1 }
|
335
|
-
|
336
351
|
/**
|
337
352
|
* @intneral
|
338
353
|
*/
|
@@ -421,6 +436,8 @@ export declare function insertNode({ node, pos, }: {
|
|
421
436
|
pos?: number;
|
422
437
|
}): Action;
|
423
438
|
|
439
|
+
export declare const isMac: boolean;
|
440
|
+
|
424
441
|
export declare function isMark(mark: unknown): mark is Mark;
|
425
442
|
|
426
443
|
export declare function isMarkActive(state: EditorState, type: string | MarkType, attrs?: Attrs | null): boolean;
|
@@ -611,6 +628,10 @@ export { StateJson as StateJson_alias_1 }
|
|
611
628
|
|
612
629
|
export declare const stateSlot: Facet<StateConfigCallback, StateConfigCallback>;
|
613
630
|
|
631
|
+
export declare type ToCommandApplier<T extends CommandArgs> = {
|
632
|
+
[K in keyof T]: CommandApplier<T[K]>;
|
633
|
+
};
|
634
|
+
|
614
635
|
export declare type ToCommandArgs<T extends CommandCreators> = {
|
615
636
|
[K in keyof T]: Parameters<T[K]>;
|
616
637
|
};
|
@@ -619,10 +640,6 @@ export declare type ToCommandCreators<T extends CommandArgs> = {
|
|
619
640
|
[K in keyof T]: CommandCreator<T[K]>;
|
620
641
|
};
|
621
642
|
|
622
|
-
export declare type ToCommandDispatcher<T extends CommandArgs> = {
|
623
|
-
[K in keyof T]: CommandDispatcher<T[K]>;
|
624
|
-
};
|
625
|
-
|
626
643
|
declare function toggleMark(options: ToggleMarkOptions): Command;
|
627
644
|
export { toggleMark }
|
628
645
|
export { toggleMark as toggleMark_alias_1 }
|
package/dist/prosekit-core.d.ts
CHANGED
@@ -19,6 +19,7 @@ export { addDefaultState } from './_tsup-dts-rollup';
|
|
19
19
|
export { DefaultStateOptions } from './_tsup-dts-rollup';
|
20
20
|
export { addDoc } from './_tsup-dts-rollup';
|
21
21
|
export { addEventHandler } from './_tsup-dts-rollup';
|
22
|
+
export { addHistory } from './_tsup-dts-rollup';
|
22
23
|
export { addInputRule } from './_tsup-dts-rollup';
|
23
24
|
export { addBaseKeymap } from './_tsup-dts-rollup';
|
24
25
|
export { addKeymap } from './_tsup-dts-rollup';
|
@@ -36,8 +37,8 @@ export { PluginFacetInput } from './_tsup-dts-rollup';
|
|
36
37
|
export { addText } from './_tsup-dts-rollup';
|
37
38
|
export { CommandArgs } from './_tsup-dts-rollup';
|
38
39
|
export { Extension } from './_tsup-dts-rollup';
|
40
|
+
export { ExtractCommandAppliers } from './_tsup-dts-rollup';
|
39
41
|
export { ExtractCommandCreators } from './_tsup-dts-rollup';
|
40
|
-
export { ExtractCommandDispatchers } from './_tsup-dts-rollup';
|
41
42
|
export { ExtractMarks } from './_tsup-dts-rollup';
|
42
43
|
export { ExtractNodes } from './_tsup-dts-rollup';
|
43
44
|
export { SimplifyExtension } from './_tsup-dts-rollup';
|
package/dist/prosekit-core.js
CHANGED
@@ -624,7 +624,7 @@ function createEditor({
|
|
624
624
|
var EditorInstance = class {
|
625
625
|
constructor(extension) {
|
626
626
|
this.view = null;
|
627
|
-
this.
|
627
|
+
this.commandAppliers = {};
|
628
628
|
this.inputs = [];
|
629
629
|
this.slots = [];
|
630
630
|
this.mount = this.mount.bind(this);
|
@@ -724,15 +724,26 @@ var EditorInstance = class {
|
|
724
724
|
view.setProps({ state: newState });
|
725
725
|
}
|
726
726
|
addCommand(name, commandCreator) {
|
727
|
-
const
|
728
|
-
const view = this.
|
727
|
+
const applier = (...args) => {
|
728
|
+
const view = this.view;
|
729
|
+
if (!view) {
|
730
|
+
return false;
|
731
|
+
}
|
729
732
|
const command = commandCreator(...args);
|
730
733
|
return command(view.state, view.dispatch.bind(view), view);
|
731
734
|
};
|
732
|
-
|
735
|
+
applier.canApply = (...args) => {
|
736
|
+
const view = this.view;
|
737
|
+
if (!view) {
|
738
|
+
return false;
|
739
|
+
}
|
740
|
+
const command = commandCreator(...args);
|
741
|
+
return command(view.state, void 0, view);
|
742
|
+
};
|
743
|
+
this.commandAppliers[name] = applier;
|
733
744
|
}
|
734
745
|
removeCommand(name) {
|
735
|
-
delete this.
|
746
|
+
delete this.commandAppliers[name];
|
736
747
|
}
|
737
748
|
};
|
738
749
|
var Editor = class _Editor {
|
@@ -760,7 +771,7 @@ var Editor = class _Editor {
|
|
760
771
|
return this.instance.schema;
|
761
772
|
}
|
762
773
|
get commands() {
|
763
|
-
return this.instance.
|
774
|
+
return this.instance.commandAppliers;
|
764
775
|
}
|
765
776
|
mount(place) {
|
766
777
|
if (!place) {
|
@@ -986,27 +997,16 @@ var eventFacet = Facet.define({
|
|
986
997
|
});
|
987
998
|
var pluginKey = new PluginKey("prosekit-event-handler");
|
988
999
|
|
989
|
-
// src/extensions/
|
990
|
-
import {
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
return inputRuleFacet.extension([rules]);
|
995
|
-
}
|
996
|
-
var inputRuleFacet = Facet.define({
|
997
|
-
combine: (inputs) => {
|
998
|
-
return (context) => {
|
999
|
-
const rules = inputs.flatMap((callback) => callback(context));
|
1000
|
-
return [inputRules({ rules })];
|
1001
|
-
};
|
1002
|
-
},
|
1003
|
-
next: pluginFacet
|
1004
|
-
});
|
1000
|
+
// src/extensions/history.ts
|
1001
|
+
import { history, redo, undo } from "@prosekit/pm/history";
|
1002
|
+
|
1003
|
+
// src/utils/env.ts
|
1004
|
+
var isMac = typeof navigator !== "undefined" ? /Mac|iP(hone|[ao]d)/.test(navigator.platform) : false;
|
1005
1005
|
|
1006
1006
|
// src/extensions/keymap.ts
|
1007
1007
|
import { baseKeymap, chainCommands } from "@prosekit/pm/commands";
|
1008
1008
|
import { keydownHandler } from "@prosekit/pm/keymap";
|
1009
|
-
import { Plugin as
|
1009
|
+
import { Plugin as Plugin3, PluginKey as PluginKey2 } from "@prosekit/pm/state";
|
1010
1010
|
function addKeymap(keymap) {
|
1011
1011
|
return keymapFacet.extension([keymap]);
|
1012
1012
|
}
|
@@ -1021,7 +1021,7 @@ var keymapFacet = Facet.define({
|
|
1021
1021
|
return handler(view, event);
|
1022
1022
|
return false;
|
1023
1023
|
};
|
1024
|
-
const plugin = new
|
1024
|
+
const plugin = new Plugin3({
|
1025
1025
|
key: keymapPluginKey,
|
1026
1026
|
props: { handleKeyDown: handlerWrapper }
|
1027
1027
|
});
|
@@ -1057,6 +1057,42 @@ function mergeKeymaps(keymaps) {
|
|
1057
1057
|
}
|
1058
1058
|
var keymapPluginKey = new PluginKey2("prosekit-keymap");
|
1059
1059
|
|
1060
|
+
// src/extensions/history.ts
|
1061
|
+
function addHistory() {
|
1062
|
+
const keymap = {
|
1063
|
+
"Mod-z": undo,
|
1064
|
+
"Shift-Mod-z": redo
|
1065
|
+
};
|
1066
|
+
if (!isMac) {
|
1067
|
+
keymap["Mod-y"] = redo;
|
1068
|
+
}
|
1069
|
+
return defineExtension([
|
1070
|
+
addPlugin(history()),
|
1071
|
+
addKeymap(keymap),
|
1072
|
+
addCommands({
|
1073
|
+
undo: () => undo,
|
1074
|
+
redo: () => redo
|
1075
|
+
})
|
1076
|
+
]);
|
1077
|
+
}
|
1078
|
+
|
1079
|
+
// src/extensions/input-rules.ts
|
1080
|
+
import { inputRules } from "@prosekit/pm/inputrules";
|
1081
|
+
import "@prosekit/pm/model";
|
1082
|
+
import "@prosekit/pm/state";
|
1083
|
+
function addInputRule(rules) {
|
1084
|
+
return inputRuleFacet.extension([rules]);
|
1085
|
+
}
|
1086
|
+
var inputRuleFacet = Facet.define({
|
1087
|
+
combine: (inputs) => {
|
1088
|
+
return (context) => {
|
1089
|
+
const rules = inputs.flatMap((callback) => callback(context));
|
1090
|
+
return [inputRules({ rules })];
|
1091
|
+
};
|
1092
|
+
},
|
1093
|
+
next: pluginFacet
|
1094
|
+
});
|
1095
|
+
|
1060
1096
|
// src/extensions/mark-spec.ts
|
1061
1097
|
function addMarkSpec(options) {
|
1062
1098
|
return markSpecFacet.extension([options]);
|
@@ -1126,6 +1162,7 @@ export {
|
|
1126
1162
|
addDefaultState,
|
1127
1163
|
addDoc,
|
1128
1164
|
addEventHandler,
|
1165
|
+
addHistory,
|
1129
1166
|
addInputRule,
|
1130
1167
|
addKeymap,
|
1131
1168
|
addMark,
|
package/dist/style.css
CHANGED
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@prosekit/core",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.0.
|
4
|
+
"version": "0.0.11",
|
5
5
|
"private": false,
|
6
6
|
"author": {
|
7
7
|
"name": "ocavue",
|
@@ -38,7 +38,7 @@
|
|
38
38
|
"dist"
|
39
39
|
],
|
40
40
|
"dependencies": {
|
41
|
-
"@prosekit/pm": "^0.0.
|
41
|
+
"@prosekit/pm": "^0.0.6",
|
42
42
|
"orderedmap": "^2.1.1",
|
43
43
|
"type-fest": "^4.3.1"
|
44
44
|
},
|
@@ -46,7 +46,7 @@
|
|
46
46
|
"@prosekit/dev": "*",
|
47
47
|
"tsup": "^7.2.0",
|
48
48
|
"typescript": "^5.2.2",
|
49
|
-
"vitest": "^0.34.
|
49
|
+
"vitest": "^0.34.5"
|
50
50
|
},
|
51
51
|
"scripts": {
|
52
52
|
"build:tsup": "tsup",
|
package/src/index.ts
CHANGED
@@ -13,6 +13,7 @@ export {
|
|
13
13
|
} from './extensions/default-state'
|
14
14
|
export { addDoc } from './extensions/doc'
|
15
15
|
export { addEventHandler } from './extensions/event-handler'
|
16
|
+
export { addHistory } from './extensions/history'
|
16
17
|
export { addInputRule } from './extensions/input-rules'
|
17
18
|
export { addBaseKeymap, addKeymap, type Keymap } from './extensions/keymap'
|
18
19
|
export { addMarkSpec, type MarkSpecOptions } from './extensions/mark-spec'
|
@@ -29,8 +30,8 @@ export { type CommandArgs as CommandArgs } from './types/command'
|
|
29
30
|
export * from './types/editor'
|
30
31
|
export {
|
31
32
|
type Extension,
|
33
|
+
type ExtractCommandAppliers,
|
32
34
|
type ExtractCommandCreators,
|
33
|
-
type ExtractCommandDispatchers,
|
34
35
|
type ExtractMarks,
|
35
36
|
type ExtractNodes,
|
36
37
|
type SimplifyExtension,
|