@prosekit/core 0.7.11 → 0.7.13
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 +2958 -2913
- package/dist/{chunk-RNBMCB5M.js → chunk-LAFNHJDR.js} +3 -7
- package/dist/prosekit-core-test.d.ts +2 -2
- package/dist/prosekit-core-test.js +1 -1
- package/dist/prosekit-core.d.ts +194 -190
- package/dist/prosekit-core.js +138 -125
- package/package.json +7 -7
package/dist/prosekit-core.js
CHANGED
@@ -39,7 +39,7 @@ import {
|
|
39
39
|
stateFromJSON,
|
40
40
|
toReversed,
|
41
41
|
union
|
42
|
-
} from "./chunk-
|
42
|
+
} from "./chunk-LAFNHJDR.js";
|
43
43
|
|
44
44
|
// src/commands/add-mark.ts
|
45
45
|
function addMark(options) {
|
@@ -109,41 +109,8 @@ function expandMarkAfter($pos, predicate) {
|
|
109
109
|
return $pos.posAtIndex(boundaryIndex) + parent.child(boundaryIndex).nodeSize;
|
110
110
|
}
|
111
111
|
|
112
|
-
// src/commands/insert-node.ts
|
113
|
-
import { insertPoint } from "@prosekit/pm/transform";
|
114
|
-
|
115
|
-
// src/utils/set-selection-around.ts
|
116
|
-
import { TextSelection as TextSelection2 } from "@prosekit/pm/state";
|
117
|
-
function setSelectionAround(tr, pos) {
|
118
|
-
const docSize = tr.doc.content.size;
|
119
|
-
const $pos = tr.doc.resolve(pos > docSize ? docSize : pos < 0 ? 0 : pos);
|
120
|
-
const selection = TextSelection2.between($pos, $pos);
|
121
|
-
tr.setSelection(selection);
|
122
|
-
}
|
123
|
-
|
124
|
-
// src/commands/insert-node.ts
|
125
|
-
function insertNode(options) {
|
126
|
-
return (state, dispatch) => {
|
127
|
-
var _a;
|
128
|
-
const node = options.node ? options.node : options.type ? getNodeType(state.schema, options.type).createAndFill(options.attrs) : null;
|
129
|
-
assert(node, "You must provide either a node or a type");
|
130
|
-
const insertPos = insertPoint(
|
131
|
-
state.doc,
|
132
|
-
(_a = options.pos) != null ? _a : state.selection.anchor,
|
133
|
-
node.type
|
134
|
-
);
|
135
|
-
if (insertPos == null) return false;
|
136
|
-
if (dispatch) {
|
137
|
-
const tr = state.tr.insert(insertPos, node);
|
138
|
-
setSelectionAround(tr, insertPos + node.nodeSize);
|
139
|
-
dispatch(tr);
|
140
|
-
}
|
141
|
-
return true;
|
142
|
-
};
|
143
|
-
}
|
144
|
-
|
145
112
|
// src/commands/insert-default-block.ts
|
146
|
-
import { TextSelection as
|
113
|
+
import { TextSelection as TextSelection2 } from "@prosekit/pm/state";
|
147
114
|
|
148
115
|
// src/utils/default-block-at.ts
|
149
116
|
function defaultBlockAt(match) {
|
@@ -168,7 +135,7 @@ function insertDefaultBlock(options) {
|
|
168
135
|
const node = type.createAndFill();
|
169
136
|
if (!node) return false;
|
170
137
|
const tr = state.tr.insert(pos, node);
|
171
|
-
const selection =
|
138
|
+
const selection = TextSelection2.findFrom(tr.doc.resolve(pos), 1);
|
172
139
|
if (!selection) return false;
|
173
140
|
tr.setSelection(selection);
|
174
141
|
dispatch(tr.scrollIntoView());
|
@@ -177,6 +144,39 @@ function insertDefaultBlock(options) {
|
|
177
144
|
};
|
178
145
|
}
|
179
146
|
|
147
|
+
// src/commands/insert-node.ts
|
148
|
+
import { insertPoint } from "@prosekit/pm/transform";
|
149
|
+
|
150
|
+
// src/utils/set-selection-around.ts
|
151
|
+
import { TextSelection as TextSelection3 } from "@prosekit/pm/state";
|
152
|
+
function setSelectionAround(tr, pos) {
|
153
|
+
const docSize = tr.doc.content.size;
|
154
|
+
const $pos = tr.doc.resolve(pos > docSize ? docSize : pos < 0 ? 0 : pos);
|
155
|
+
const selection = TextSelection3.between($pos, $pos);
|
156
|
+
tr.setSelection(selection);
|
157
|
+
}
|
158
|
+
|
159
|
+
// src/commands/insert-node.ts
|
160
|
+
function insertNode(options) {
|
161
|
+
return (state, dispatch) => {
|
162
|
+
var _a;
|
163
|
+
const node = options.node ? options.node : options.type ? getNodeType(state.schema, options.type).createAndFill(options.attrs) : null;
|
164
|
+
assert(node, "You must provide either a node or a type");
|
165
|
+
const insertPos = insertPoint(
|
166
|
+
state.doc,
|
167
|
+
(_a = options.pos) != null ? _a : state.selection.anchor,
|
168
|
+
node.type
|
169
|
+
);
|
170
|
+
if (insertPos == null) return false;
|
171
|
+
if (dispatch) {
|
172
|
+
const tr = state.tr.insert(insertPos, node);
|
173
|
+
setSelectionAround(tr, insertPos + node.nodeSize);
|
174
|
+
dispatch(tr);
|
175
|
+
}
|
176
|
+
return true;
|
177
|
+
};
|
178
|
+
}
|
179
|
+
|
180
180
|
// src/commands/remove-mark.ts
|
181
181
|
function removeMark(options) {
|
182
182
|
return (state, dispatch) => {
|
@@ -224,7 +224,9 @@ function removeNode(options) {
|
|
224
224
|
}
|
225
225
|
|
226
226
|
// src/utils/get-custom-selection.ts
|
227
|
-
import {
|
227
|
+
import {
|
228
|
+
TextSelection as TextSelection4
|
229
|
+
} from "@prosekit/pm/state";
|
228
230
|
function getCustomSelection(state, from, to) {
|
229
231
|
const pos = from != null ? from : to;
|
230
232
|
if (pos != null) {
|
@@ -347,6 +349,35 @@ function toggleNode({ type, attrs }) {
|
|
347
349
|
};
|
348
350
|
}
|
349
351
|
|
352
|
+
// src/commands/toggle-wrap.ts
|
353
|
+
import { lift } from "@prosekit/pm/commands";
|
354
|
+
|
355
|
+
// src/commands/wrap.ts
|
356
|
+
import { findWrapping } from "@prosekit/pm/transform";
|
357
|
+
function wrap(options) {
|
358
|
+
return (state, dispatch) => {
|
359
|
+
const { $from, $to } = state.selection;
|
360
|
+
const range = $from.blockRange($to);
|
361
|
+
if (!range) return false;
|
362
|
+
const nodeType = getNodeType(state.schema, options.nodeType || options.type);
|
363
|
+
const wrapping = findWrapping(range, nodeType, options.attrs);
|
364
|
+
if (!wrapping) return false;
|
365
|
+
dispatch == null ? void 0 : dispatch(state.tr.wrap(range, wrapping));
|
366
|
+
return true;
|
367
|
+
};
|
368
|
+
}
|
369
|
+
|
370
|
+
// src/commands/toggle-wrap.ts
|
371
|
+
function toggleWrap(options) {
|
372
|
+
const { type, attrs } = options;
|
373
|
+
return (state, dispatch) => {
|
374
|
+
if (isNodeActive(state, type, attrs)) {
|
375
|
+
return lift(state, dispatch);
|
376
|
+
}
|
377
|
+
return wrap({ type, attrs })(state, dispatch);
|
378
|
+
};
|
379
|
+
}
|
380
|
+
|
350
381
|
// src/commands/unset-block-type.ts
|
351
382
|
import { Fragment, Slice } from "@prosekit/pm/model";
|
352
383
|
import { ReplaceAroundStep } from "@prosekit/pm/transform";
|
@@ -401,35 +432,6 @@ function unsetMark(options) {
|
|
401
432
|
};
|
402
433
|
}
|
403
434
|
|
404
|
-
// src/commands/toggle-wrap.ts
|
405
|
-
import { lift } from "@prosekit/pm/commands";
|
406
|
-
|
407
|
-
// src/commands/wrap.ts
|
408
|
-
import { findWrapping } from "@prosekit/pm/transform";
|
409
|
-
function wrap(options) {
|
410
|
-
return (state, dispatch) => {
|
411
|
-
const { $from, $to } = state.selection;
|
412
|
-
const range = $from.blockRange($to);
|
413
|
-
if (!range) return false;
|
414
|
-
const nodeType = getNodeType(state.schema, options.nodeType || options.type);
|
415
|
-
const wrapping = findWrapping(range, nodeType, options.attrs);
|
416
|
-
if (!wrapping) return false;
|
417
|
-
dispatch == null ? void 0 : dispatch(state.tr.wrap(range, wrapping));
|
418
|
-
return true;
|
419
|
-
};
|
420
|
-
}
|
421
|
-
|
422
|
-
// src/commands/toggle-wrap.ts
|
423
|
-
function toggleWrap(options) {
|
424
|
-
const { type, attrs } = options;
|
425
|
-
return (state, dispatch) => {
|
426
|
-
if (isNodeActive(state, type, attrs)) {
|
427
|
-
return lift(state, dispatch);
|
428
|
-
}
|
429
|
-
return wrap({ type, attrs })(state, dispatch);
|
430
|
-
};
|
431
|
-
}
|
432
|
-
|
433
435
|
// src/editor/with-priority.ts
|
434
436
|
function withPriority(extension, priority) {
|
435
437
|
const result = union(extension);
|
@@ -843,88 +845,100 @@ function combineEventHandlers() {
|
|
843
845
|
}
|
844
846
|
|
845
847
|
// src/extensions/events/dom-event.ts
|
848
|
+
function defineDomEventFacetPayload(...payloads) {
|
849
|
+
return defineFacetPayload(
|
850
|
+
domEventFacet,
|
851
|
+
payloads
|
852
|
+
);
|
853
|
+
}
|
846
854
|
function defineDOMEventHandler(event, handler) {
|
847
|
-
return
|
848
|
-
|
855
|
+
return defineDomEventFacetPayload([
|
856
|
+
event,
|
857
|
+
handler
|
849
858
|
]);
|
850
859
|
}
|
851
|
-
var domEventFacet = defineFacet(
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
860
|
+
var domEventFacet = defineFacet(
|
861
|
+
{
|
862
|
+
reduce: () => {
|
863
|
+
const setHandlersMap = {};
|
864
|
+
const combinedHandlerMap = {};
|
865
|
+
let plugin;
|
866
|
+
const update = (payloads) => {
|
867
|
+
var _a;
|
868
|
+
let hasNewEvent = false;
|
869
|
+
for (const [event] of payloads) {
|
870
|
+
if (!setHandlersMap[event]) {
|
871
|
+
hasNewEvent = true;
|
872
|
+
const [setHandlers, combinedHandler] = combineEventHandlers();
|
873
|
+
setHandlersMap[event] = setHandlers;
|
874
|
+
const e = (view, eventObject) => {
|
875
|
+
return combinedHandler(view, eventObject);
|
876
|
+
};
|
877
|
+
combinedHandlerMap[event] = e;
|
878
|
+
}
|
868
879
|
}
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
}
|
880
|
-
}
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
}
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
880
|
+
const map = groupEntries(payloads);
|
881
|
+
for (const [event, setHandlers] of Object.entries(setHandlersMap)) {
|
882
|
+
const handlers = (_a = map[event]) != null ? _a : [];
|
883
|
+
setHandlers(handlers);
|
884
|
+
}
|
885
|
+
if (hasNewEvent) {
|
886
|
+
plugin = new ProseMirrorPlugin2({
|
887
|
+
key: new PluginKey2("prosekit-dom-event-handler"),
|
888
|
+
props: { handleDOMEvents: combinedHandlerMap }
|
889
|
+
});
|
890
|
+
}
|
891
|
+
};
|
892
|
+
return function reducer(inputs) {
|
893
|
+
update(inputs);
|
894
|
+
return plugin != null ? plugin : [];
|
895
|
+
};
|
896
|
+
},
|
897
|
+
parent: pluginFacet,
|
898
|
+
singleton: true
|
899
|
+
}
|
900
|
+
);
|
890
901
|
|
891
902
|
// src/extensions/events/editor-event.ts
|
892
903
|
import { PluginKey as PluginKey3, ProseMirrorPlugin as ProseMirrorPlugin3 } from "@prosekit/pm/state";
|
904
|
+
function defineEventFacetPayload(payload) {
|
905
|
+
return defineFacetPayload(editorEventFacet, [payload]);
|
906
|
+
}
|
893
907
|
function defineKeyDownHandler(handler) {
|
894
|
-
return
|
908
|
+
return defineEventFacetPayload(["keyDown", handler]);
|
895
909
|
}
|
896
910
|
function defineKeyPressHandler(handler) {
|
897
|
-
return
|
911
|
+
return defineEventFacetPayload(["keyPress", handler]);
|
898
912
|
}
|
899
913
|
function defineTextInputHandler(handler) {
|
900
|
-
return
|
914
|
+
return defineEventFacetPayload(["textInput", handler]);
|
901
915
|
}
|
902
916
|
function defineClickOnHandler(handler) {
|
903
|
-
return
|
917
|
+
return defineEventFacetPayload(["clickOn", handler]);
|
904
918
|
}
|
905
919
|
function defineClickHandler(handler) {
|
906
|
-
return
|
920
|
+
return defineEventFacetPayload(["click", handler]);
|
907
921
|
}
|
908
922
|
function defineDoubleClickOnHandler(handler) {
|
909
|
-
return
|
923
|
+
return defineEventFacetPayload(["doubleClickOn", handler]);
|
910
924
|
}
|
911
925
|
function defineDoubleClickHandler(handler) {
|
912
|
-
return
|
926
|
+
return defineEventFacetPayload(["doubleClick", handler]);
|
913
927
|
}
|
914
928
|
function defineTripleClickOnHandler(handler) {
|
915
|
-
return
|
929
|
+
return defineEventFacetPayload(["tripleClickOn", handler]);
|
916
930
|
}
|
917
931
|
function defineTripleClickHandler(handler) {
|
918
|
-
return
|
932
|
+
return defineEventFacetPayload(["tripleClick", handler]);
|
919
933
|
}
|
920
934
|
function definePasteHandler(handler) {
|
921
|
-
return
|
935
|
+
return defineEventFacetPayload(["paste", handler]);
|
922
936
|
}
|
923
937
|
function defineDropHandler(handler) {
|
924
|
-
return
|
938
|
+
return defineEventFacetPayload(["drop", handler]);
|
925
939
|
}
|
926
940
|
function defineScrollToSelectionHandler(handler) {
|
927
|
-
return
|
941
|
+
return defineEventFacetPayload(["scrollToSelection", handler]);
|
928
942
|
}
|
929
943
|
var editorEventFacet = defineFacet({
|
930
944
|
reduce: () => {
|
@@ -990,10 +1004,10 @@ function setupEditorEventPlugin() {
|
|
990
1004
|
function defineFocusChangeHandler(handler) {
|
991
1005
|
const handleFocus = () => handler(true);
|
992
1006
|
const handleBlur = () => handler(false);
|
993
|
-
return
|
1007
|
+
return defineDomEventFacetPayload(
|
994
1008
|
["focus", handleFocus],
|
995
1009
|
["blur", handleBlur]
|
996
|
-
|
1010
|
+
);
|
997
1011
|
}
|
998
1012
|
|
999
1013
|
// src/extensions/history.ts
|
@@ -1103,10 +1117,7 @@ var customBaseKeymap = {
|
|
1103
1117
|
function defineBaseKeymap(options) {
|
1104
1118
|
var _a;
|
1105
1119
|
const priority = (_a = options == null ? void 0 : options.priority) != null ? _a : 1 /* low */;
|
1106
|
-
return withPriority(
|
1107
|
-
defineKeymap(customBaseKeymap),
|
1108
|
-
priority
|
1109
|
-
);
|
1120
|
+
return withPriority(defineKeymap(customBaseKeymap), priority);
|
1110
1121
|
}
|
1111
1122
|
|
1112
1123
|
// src/extensions/mark-spec.ts
|
@@ -1328,7 +1339,7 @@ function isAtBlockStart(state, view) {
|
|
1328
1339
|
|
1329
1340
|
// src/utils/is-in-code-block.ts
|
1330
1341
|
function isCodeBlockType(type) {
|
1331
|
-
return type.spec.code && type.isBlock;
|
1342
|
+
return !!(type.spec.code && type.isBlock);
|
1332
1343
|
}
|
1333
1344
|
function isInCodeBlock(selection) {
|
1334
1345
|
return isCodeBlockType(selection.$from.parent.type) || isCodeBlockType(selection.$to.parent.type);
|
@@ -1404,6 +1415,7 @@ export {
|
|
1404
1415
|
defineTripleClickOnHandler,
|
1405
1416
|
defineUnmountHandler,
|
1406
1417
|
defineUpdateHandler,
|
1418
|
+
editorEventFacet,
|
1407
1419
|
elementFromJSON,
|
1408
1420
|
elementFromNode,
|
1409
1421
|
expandMark,
|
@@ -1441,6 +1453,7 @@ export {
|
|
1441
1453
|
removeNode,
|
1442
1454
|
setBlockType,
|
1443
1455
|
setNodeAttrs,
|
1456
|
+
setSelectionAround,
|
1444
1457
|
stateFromJSON,
|
1445
1458
|
toggleMark,
|
1446
1459
|
toggleNode,
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@prosekit/core",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.7.
|
4
|
+
"version": "0.7.13",
|
5
5
|
"private": false,
|
6
6
|
"author": {
|
7
7
|
"name": "ocavue",
|
@@ -45,14 +45,14 @@
|
|
45
45
|
"just-map-values": "^3.2.0",
|
46
46
|
"orderedmap": "^2.1.1",
|
47
47
|
"prosemirror-splittable": "^0.1.1",
|
48
|
-
"type-fest": "^4.26.
|
49
|
-
"@prosekit/pm": "^0.1.
|
48
|
+
"type-fest": "^4.26.1",
|
49
|
+
"@prosekit/pm": "^0.1.9"
|
50
50
|
},
|
51
51
|
"devDependencies": {
|
52
|
-
"@vitest/browser": "^2.
|
53
|
-
"tsup": "^8.
|
54
|
-
"typescript": "^5.
|
55
|
-
"vitest": "^2.
|
52
|
+
"@vitest/browser": "^2.1.6",
|
53
|
+
"tsup": "^8.3.5",
|
54
|
+
"typescript": "^5.6.3",
|
55
|
+
"vitest": "^2.1.6",
|
56
56
|
"@prosekit/dev": "0.0.0"
|
57
57
|
},
|
58
58
|
"scripts": {
|