@prosekit/core 0.2.1 → 0.2.2
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 +73 -5
- package/dist/prosekit-core.d.ts +8 -1
- package/dist/prosekit-core.js +92 -58
- package/package.json +1 -1
- package/src/index.ts +12 -1
@@ -277,6 +277,15 @@ NODES: "doc";
|
|
277
277
|
export { defineDoc }
|
278
278
|
export { defineDoc as defineDoc_alias_1 }
|
279
279
|
|
280
|
+
/**
|
281
|
+
* Registers a event handler that is called when the editor document is changed.
|
282
|
+
*
|
283
|
+
* @public
|
284
|
+
*/
|
285
|
+
declare function defineDocChangeHandler(handler: DocChangeHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
|
286
|
+
export { defineDocChangeHandler }
|
287
|
+
export { defineDocChangeHandler as defineDocChangeHandler_alias_1 }
|
288
|
+
|
280
289
|
/**
|
281
290
|
* Add undo/redo history to the editor.
|
282
291
|
*/
|
@@ -321,6 +330,15 @@ declare function defineMarkSpec<Mark extends string>(options: MarkSpecOptions<Ma
|
|
321
330
|
export { defineMarkSpec }
|
322
331
|
export { defineMarkSpec as defineMarkSpec_alias_1 }
|
323
332
|
|
333
|
+
/**
|
334
|
+
* Registers a event handler that is called when the editor view is mounted.
|
335
|
+
*
|
336
|
+
* @public
|
337
|
+
*/
|
338
|
+
declare function defineMountHandler(handler: MountHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
|
339
|
+
export { defineMountHandler }
|
340
|
+
export { defineMountHandler as defineMountHandler_alias_1 }
|
341
|
+
|
324
342
|
/**
|
325
343
|
* @public
|
326
344
|
*/
|
@@ -385,12 +403,35 @@ export { defineText }
|
|
385
403
|
export { defineText as defineText_alias_1 }
|
386
404
|
|
387
405
|
/**
|
388
|
-
*
|
406
|
+
* Registers a event handler that is called when the editor view is unmounted.
|
407
|
+
*
|
408
|
+
* @public
|
409
|
+
*/
|
410
|
+
declare function defineUnmountHandler(handler: UnmountHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
|
411
|
+
export { defineUnmountHandler }
|
412
|
+
export { defineUnmountHandler as defineUnmountHandler_alias_1 }
|
413
|
+
|
414
|
+
/**
|
415
|
+
* Registers a event handler that is called when the editor state is updated.
|
416
|
+
*
|
417
|
+
* @public
|
389
418
|
*/
|
390
419
|
declare function defineUpdateHandler(handler: UpdateHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
|
391
420
|
export { defineUpdateHandler }
|
392
421
|
export { defineUpdateHandler as defineUpdateHandler_alias_1 }
|
393
422
|
|
423
|
+
/**
|
424
|
+
* A function that is called when the editor document is changed.
|
425
|
+
*
|
426
|
+
* @param view - The editor view.
|
427
|
+
* @param prevState - The previous editor state.
|
428
|
+
*
|
429
|
+
* @public
|
430
|
+
*/
|
431
|
+
declare type DocChangeHandler = (view: EditorView, prevState: EditorState) => void;
|
432
|
+
export { DocChangeHandler }
|
433
|
+
export { DocChangeHandler as DocChangeHandler_alias_1 }
|
434
|
+
|
394
435
|
/**
|
395
436
|
* @public
|
396
437
|
*/
|
@@ -770,6 +811,17 @@ declare interface MarkSpecOptions<MarkName extends string = string> extends Mark
|
|
770
811
|
export { MarkSpecOptions }
|
771
812
|
export { MarkSpecOptions as MarkSpecOptions_alias_1 }
|
772
813
|
|
814
|
+
/**
|
815
|
+
* A function that is called when the editor view is mounted.
|
816
|
+
*
|
817
|
+
* @param view - The editor view.
|
818
|
+
*
|
819
|
+
* @public
|
820
|
+
*/
|
821
|
+
declare type MountHandler = (view: EditorView) => void;
|
822
|
+
export { MountHandler }
|
823
|
+
export { MountHandler as MountHandler_alias_1 }
|
824
|
+
|
773
825
|
export declare interface NodeBuilder {
|
774
826
|
(attrs: Attrs | null, ...children: NodeChild[]): ProseMirrorNode;
|
775
827
|
(...children: NodeChild[]): ProseMirrorNode;
|
@@ -1053,6 +1105,15 @@ export declare function uniqPush<T>(prev: readonly T[], next: readonly T[]): T[]
|
|
1053
1105
|
|
1054
1106
|
export declare function uniqRemove<T>(prev: T[], next: T[]): T[];
|
1055
1107
|
|
1108
|
+
/**
|
1109
|
+
* A function that is called when the editor view is unmounted.
|
1110
|
+
*
|
1111
|
+
* @public
|
1112
|
+
*/
|
1113
|
+
declare type UnmountHandler = () => void;
|
1114
|
+
export { UnmountHandler }
|
1115
|
+
export { UnmountHandler as UnmountHandler_alias_1 }
|
1116
|
+
|
1056
1117
|
export declare function updateExtension(prevInputs: Payloads, prevConverters: Converters, extension: Extension, mode: 'add' | 'remove'): {
|
1057
1118
|
schemaInput: SchemaPayload | null;
|
1058
1119
|
stateInput: StatePayload | null;
|
@@ -1060,10 +1121,17 @@ export declare function updateExtension(prevInputs: Payloads, prevConverters: Co
|
|
1060
1121
|
commandInput: CommandCreators | null;
|
1061
1122
|
};
|
1062
1123
|
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1124
|
+
/**
|
1125
|
+
* A function that is called when the editor state is updated.
|
1126
|
+
*
|
1127
|
+
* @param view - The editor view.
|
1128
|
+
* @param prevState - The previous editor state.
|
1129
|
+
*
|
1130
|
+
* @public
|
1131
|
+
*/
|
1132
|
+
declare type UpdateHandler = (view: EditorView, prevState: EditorState) => void;
|
1133
|
+
export { UpdateHandler }
|
1134
|
+
export { UpdateHandler as UpdateHandler_alias_1 }
|
1067
1135
|
|
1068
1136
|
export declare const viewFacet: Facet<ViewPayload, ViewPayload>;
|
1069
1137
|
|
package/dist/prosekit-core.d.ts
CHANGED
@@ -15,6 +15,14 @@ export { defineCommands } from './_tsup-dts-rollup';
|
|
15
15
|
export { defineDefaultState } from './_tsup-dts-rollup';
|
16
16
|
export { DefaultStateOptions } from './_tsup-dts-rollup';
|
17
17
|
export { defineDoc } from './_tsup-dts-rollup';
|
18
|
+
export { defineMountHandler } from './_tsup-dts-rollup';
|
19
|
+
export { defineUnmountHandler } from './_tsup-dts-rollup';
|
20
|
+
export { defineUpdateHandler } from './_tsup-dts-rollup';
|
21
|
+
export { MountHandler } from './_tsup-dts-rollup';
|
22
|
+
export { UnmountHandler } from './_tsup-dts-rollup';
|
23
|
+
export { UpdateHandler } from './_tsup-dts-rollup';
|
24
|
+
export { defineDocChangeHandler } from './_tsup-dts-rollup';
|
25
|
+
export { DocChangeHandler } from './_tsup-dts-rollup';
|
18
26
|
export { defineHistory } from './_tsup-dts-rollup';
|
19
27
|
export { defineInputRule } from './_tsup-dts-rollup';
|
20
28
|
export { defineBaseKeymap } from './_tsup-dts-rollup';
|
@@ -35,7 +43,6 @@ export { definePlugin } from './_tsup-dts-rollup';
|
|
35
43
|
export { pluginFacet } from './_tsup-dts-rollup';
|
36
44
|
export { PluginPayload } from './_tsup-dts-rollup';
|
37
45
|
export { defineText } from './_tsup-dts-rollup';
|
38
|
-
export { defineUpdateHandler } from './_tsup-dts-rollup';
|
39
46
|
export { Facet } from './_tsup-dts-rollup';
|
40
47
|
export { FacetOptions } from './_tsup-dts-rollup';
|
41
48
|
export { BaseNodeViewOptions } from './_tsup-dts-rollup';
|
package/dist/prosekit-core.js
CHANGED
@@ -1130,16 +1130,8 @@ function defineDoc() {
|
|
1130
1130
|
});
|
1131
1131
|
}
|
1132
1132
|
|
1133
|
-
// src/extensions/
|
1134
|
-
import {
|
1135
|
-
|
1136
|
-
// src/utils/env.ts
|
1137
|
-
var isMac = typeof navigator !== "undefined" ? /Mac|iP(hone|[ao]d)/.test(navigator.platform) : false;
|
1138
|
-
|
1139
|
-
// src/extensions/keymap.ts
|
1140
|
-
import { baseKeymap, chainCommands } from "@prosekit/pm/commands";
|
1141
|
-
import { keydownHandler } from "@prosekit/pm/keymap";
|
1142
|
-
import { Plugin as Plugin3, PluginKey } from "@prosekit/pm/state";
|
1133
|
+
// src/extensions/events/plugin-view.ts
|
1134
|
+
import { PluginKey, ProseMirrorPlugin } from "@prosekit/pm/state";
|
1143
1135
|
|
1144
1136
|
// src/extensions/plugin.ts
|
1145
1137
|
import "@prosekit/pm/model";
|
@@ -1177,7 +1169,89 @@ var pluginFacet = Facet.define({
|
|
1177
1169
|
next: stateFacet
|
1178
1170
|
});
|
1179
1171
|
|
1172
|
+
// src/extensions/events/plugin-view.ts
|
1173
|
+
function defineMountHandler(handler) {
|
1174
|
+
return pluginViewFacet.extension([["mount", handler]]);
|
1175
|
+
}
|
1176
|
+
function defineUpdateHandler(handler) {
|
1177
|
+
return pluginViewFacet.extension([["update", handler]]);
|
1178
|
+
}
|
1179
|
+
function defineUnmountHandler(handler) {
|
1180
|
+
return pluginViewFacet.extension([["unmount", handler]]);
|
1181
|
+
}
|
1182
|
+
var pluginViewFacet = Facet.define({
|
1183
|
+
converter: () => {
|
1184
|
+
let mountHandlers = [];
|
1185
|
+
let updateHandlers = [];
|
1186
|
+
let unmountHandlers = [];
|
1187
|
+
const plugin = new ProseMirrorPlugin({
|
1188
|
+
key: pluginKey,
|
1189
|
+
view: (view) => {
|
1190
|
+
mountHandlers.forEach((fn) => fn(view));
|
1191
|
+
return {
|
1192
|
+
update: (view2, prevState) => {
|
1193
|
+
updateHandlers.forEach((fn) => fn(view2, prevState));
|
1194
|
+
},
|
1195
|
+
destroy: () => {
|
1196
|
+
unmountHandlers.forEach((fn) => fn());
|
1197
|
+
}
|
1198
|
+
};
|
1199
|
+
}
|
1200
|
+
});
|
1201
|
+
const pluginFunc = () => [plugin];
|
1202
|
+
const register = (input) => {
|
1203
|
+
mountHandlers = [];
|
1204
|
+
updateHandlers = [];
|
1205
|
+
unmountHandlers = [];
|
1206
|
+
for (const args of input) {
|
1207
|
+
switch (args[0]) {
|
1208
|
+
case "mount":
|
1209
|
+
mountHandlers.push(args[1]);
|
1210
|
+
break;
|
1211
|
+
case "update":
|
1212
|
+
updateHandlers.push(args[1]);
|
1213
|
+
break;
|
1214
|
+
case "unmount":
|
1215
|
+
unmountHandlers.push(args[1]);
|
1216
|
+
break;
|
1217
|
+
}
|
1218
|
+
}
|
1219
|
+
};
|
1220
|
+
return {
|
1221
|
+
create: (input) => {
|
1222
|
+
register(input);
|
1223
|
+
return pluginFunc;
|
1224
|
+
},
|
1225
|
+
update: (input) => {
|
1226
|
+
register(input);
|
1227
|
+
return null;
|
1228
|
+
}
|
1229
|
+
};
|
1230
|
+
},
|
1231
|
+
next: pluginFacet,
|
1232
|
+
singleton: true
|
1233
|
+
});
|
1234
|
+
var pluginKey = new PluginKey("prosekit-plugin-view-handler");
|
1235
|
+
|
1236
|
+
// src/extensions/events/doc-change.ts
|
1237
|
+
function defineDocChangeHandler(handler) {
|
1238
|
+
return defineUpdateHandler((view, prevState) => {
|
1239
|
+
if (!view.state.doc.eq(prevState.doc)) {
|
1240
|
+
handler(view, prevState);
|
1241
|
+
}
|
1242
|
+
});
|
1243
|
+
}
|
1244
|
+
|
1245
|
+
// src/extensions/history.ts
|
1246
|
+
import { history, redo, undo } from "@prosekit/pm/history";
|
1247
|
+
|
1248
|
+
// src/utils/env.ts
|
1249
|
+
var isMac = typeof navigator !== "undefined" ? /Mac|iP(hone|[ao]d)/.test(navigator.platform) : false;
|
1250
|
+
|
1180
1251
|
// src/extensions/keymap.ts
|
1252
|
+
import { baseKeymap, chainCommands } from "@prosekit/pm/commands";
|
1253
|
+
import { keydownHandler } from "@prosekit/pm/keymap";
|
1254
|
+
import { Plugin as Plugin3, PluginKey as PluginKey2 } from "@prosekit/pm/state";
|
1181
1255
|
function defineKeymap(keymap) {
|
1182
1256
|
return keymapFacet.extension([keymap]);
|
1183
1257
|
}
|
@@ -1228,7 +1302,7 @@ function mergeKeymaps(keymaps) {
|
|
1228
1302
|
])
|
1229
1303
|
);
|
1230
1304
|
}
|
1231
|
-
var keymapPluginKey = new
|
1305
|
+
var keymapPluginKey = new PluginKey2("prosekit-keymap");
|
1232
1306
|
|
1233
1307
|
// src/extensions/history.ts
|
1234
1308
|
function defineHistory() {
|
@@ -1294,7 +1368,7 @@ var markSpecFacet = Facet.define({
|
|
1294
1368
|
});
|
1295
1369
|
|
1296
1370
|
// src/extensions/node-view.ts
|
1297
|
-
import { ProseMirrorPlugin } from "@prosekit/pm/state";
|
1371
|
+
import { ProseMirrorPlugin as ProseMirrorPlugin2 } from "@prosekit/pm/state";
|
1298
1372
|
import "@prosekit/pm/view";
|
1299
1373
|
function defineNodeView(options) {
|
1300
1374
|
return nodeViewFacet.extension([options]);
|
@@ -1307,13 +1381,13 @@ var nodeViewFacet = Facet.define({
|
|
1307
1381
|
nodeViews[input.name] = input.constructor;
|
1308
1382
|
}
|
1309
1383
|
}
|
1310
|
-
return () => [new
|
1384
|
+
return () => [new ProseMirrorPlugin2({ props: { nodeViews } })];
|
1311
1385
|
},
|
1312
1386
|
next: pluginFacet
|
1313
1387
|
});
|
1314
1388
|
|
1315
1389
|
// src/extensions/node-view-effect.ts
|
1316
|
-
import { ProseMirrorPlugin as
|
1390
|
+
import { ProseMirrorPlugin as ProseMirrorPlugin3 } from "@prosekit/pm/state";
|
1317
1391
|
import "@prosekit/pm/view";
|
1318
1392
|
function defineNodeViewFactory(options) {
|
1319
1393
|
return nodeViewFactoryFacet.extension([options]);
|
@@ -1341,7 +1415,7 @@ var nodeViewFactoryFacet = Facet.define({
|
|
1341
1415
|
nodeViews[name] = factory(args);
|
1342
1416
|
}
|
1343
1417
|
}
|
1344
|
-
return () => [new
|
1418
|
+
return () => [new ProseMirrorPlugin3({ props: { nodeViews } })];
|
1345
1419
|
},
|
1346
1420
|
next: pluginFacet
|
1347
1421
|
});
|
@@ -1370,49 +1444,6 @@ function defineText() {
|
|
1370
1444
|
});
|
1371
1445
|
}
|
1372
1446
|
|
1373
|
-
// src/extensions/update-handler.ts
|
1374
|
-
import { PluginKey as PluginKey2, ProseMirrorPlugin as ProseMirrorPlugin3 } from "@prosekit/pm/state";
|
1375
|
-
|
1376
|
-
// src/utils/is-not-null.ts
|
1377
|
-
function isNotNull(value) {
|
1378
|
-
return value != null;
|
1379
|
-
}
|
1380
|
-
|
1381
|
-
// src/extensions/update-handler.ts
|
1382
|
-
function defineUpdateHandler(handler) {
|
1383
|
-
return updateHandlerFacet.extension([handler]);
|
1384
|
-
}
|
1385
|
-
var updateHandlerFacet = Facet.define({
|
1386
|
-
converter: () => {
|
1387
|
-
let updateHandlers = [];
|
1388
|
-
const plugin = new ProseMirrorPlugin3({
|
1389
|
-
key: pluginKey,
|
1390
|
-
view: (view) => {
|
1391
|
-
updateHandlers.forEach((fn) => fn({ view }));
|
1392
|
-
return {
|
1393
|
-
update: (view2, prevState) => {
|
1394
|
-
updateHandlers.forEach((fn) => fn({ view: view2, prevState }));
|
1395
|
-
}
|
1396
|
-
};
|
1397
|
-
}
|
1398
|
-
});
|
1399
|
-
const pluginFunc = () => [plugin];
|
1400
|
-
return {
|
1401
|
-
create: (handlers) => {
|
1402
|
-
updateHandlers = handlers.filter(isNotNull);
|
1403
|
-
return pluginFunc;
|
1404
|
-
},
|
1405
|
-
update: (handlers) => {
|
1406
|
-
updateHandlers = handlers.filter(isNotNull);
|
1407
|
-
return null;
|
1408
|
-
}
|
1409
|
-
};
|
1410
|
-
},
|
1411
|
-
next: pluginFacet,
|
1412
|
-
singleton: true
|
1413
|
-
});
|
1414
|
-
var pluginKey = new PluginKey2("prosekit-event-handler");
|
1415
|
-
|
1416
1447
|
// src/utils/get-id.ts
|
1417
1448
|
var id = 0;
|
1418
1449
|
function getId() {
|
@@ -1432,16 +1463,19 @@ export {
|
|
1432
1463
|
defineCommands,
|
1433
1464
|
defineDefaultState,
|
1434
1465
|
defineDoc,
|
1466
|
+
defineDocChangeHandler,
|
1435
1467
|
defineHistory,
|
1436
1468
|
defineInputRule,
|
1437
1469
|
defineKeymap,
|
1438
1470
|
defineMarkSpec,
|
1471
|
+
defineMountHandler,
|
1439
1472
|
defineNodeSpec,
|
1440
1473
|
defineNodeView,
|
1441
1474
|
defineNodeViewFactory,
|
1442
1475
|
defineParagraph,
|
1443
1476
|
definePlugin,
|
1444
1477
|
defineText,
|
1478
|
+
defineUnmountHandler,
|
1445
1479
|
defineUpdateHandler,
|
1446
1480
|
getMarkType,
|
1447
1481
|
getNodeType,
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -14,6 +14,18 @@ export {
|
|
14
14
|
type DefaultStateOptions,
|
15
15
|
} from './extensions/default-state'
|
16
16
|
export { defineDoc } from './extensions/doc'
|
17
|
+
export {
|
18
|
+
defineMountHandler,
|
19
|
+
defineUnmountHandler,
|
20
|
+
defineUpdateHandler,
|
21
|
+
type MountHandler,
|
22
|
+
type UnmountHandler,
|
23
|
+
type UpdateHandler,
|
24
|
+
} from './extensions/events/plugin-view'
|
25
|
+
export {
|
26
|
+
defineDocChangeHandler,
|
27
|
+
type DocChangeHandler,
|
28
|
+
} from './extensions/events/doc-change'
|
17
29
|
export { defineHistory } from './extensions/history'
|
18
30
|
export { defineInputRule } from './extensions/input-rules'
|
19
31
|
export {
|
@@ -37,7 +49,6 @@ export {
|
|
37
49
|
type PluginPayload,
|
38
50
|
} from './extensions/plugin'
|
39
51
|
export { defineText } from './extensions/text'
|
40
|
-
export { defineUpdateHandler } from './extensions/update-handler'
|
41
52
|
export { Facet, type FacetOptions } from './facets/facet'
|
42
53
|
export type { BaseNodeViewOptions } from './types/base-node-view-options'
|
43
54
|
export { type CommandArgs } from './types/command'
|