@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.
@@ -39,7 +39,7 @@ import {
39
39
  stateFromJSON,
40
40
  toReversed,
41
41
  union
42
- } from "./chunk-RNBMCB5M.js";
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 TextSelection3 } from "@prosekit/pm/state";
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 = TextSelection3.findFrom(tr.doc.resolve(pos), 1);
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 { TextSelection as TextSelection4 } from "@prosekit/pm/state";
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 defineFacetPayload(domEventFacet, [
848
- [event, handler]
855
+ return defineDomEventFacetPayload([
856
+ event,
857
+ handler
849
858
  ]);
850
859
  }
851
- var domEventFacet = defineFacet({
852
- reduce: () => {
853
- const setHandlersMap = {};
854
- const combinedHandlerMap = {};
855
- let plugin;
856
- const update = (payloads) => {
857
- var _a;
858
- let hasNewEvent = false;
859
- for (const [event] of payloads) {
860
- if (!setHandlersMap[event]) {
861
- hasNewEvent = true;
862
- const [setHandlers, combinedHandler] = combineEventHandlers();
863
- setHandlersMap[event] = setHandlers;
864
- const e = (view, eventObject) => {
865
- return combinedHandler(view, eventObject);
866
- };
867
- combinedHandlerMap[event] = e;
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
- const map = groupEntries(payloads);
871
- for (const [event, setHandlers] of Object.entries(setHandlersMap)) {
872
- const handlers = (_a = map[event]) != null ? _a : [];
873
- setHandlers(handlers);
874
- }
875
- if (hasNewEvent) {
876
- plugin = new ProseMirrorPlugin2({
877
- key: new PluginKey2("prosekit-dom-event-handler"),
878
- props: { handleDOMEvents: combinedHandlerMap }
879
- });
880
- }
881
- };
882
- return function reducer(inputs) {
883
- update(inputs);
884
- return plugin != null ? plugin : [];
885
- };
886
- },
887
- parent: pluginFacet,
888
- singleton: true
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 defineFacetPayload(editorEventFacet, [["keyDown", handler]]);
908
+ return defineEventFacetPayload(["keyDown", handler]);
895
909
  }
896
910
  function defineKeyPressHandler(handler) {
897
- return defineFacetPayload(editorEventFacet, [["keyPress", handler]]);
911
+ return defineEventFacetPayload(["keyPress", handler]);
898
912
  }
899
913
  function defineTextInputHandler(handler) {
900
- return defineFacetPayload(editorEventFacet, [["textInput", handler]]);
914
+ return defineEventFacetPayload(["textInput", handler]);
901
915
  }
902
916
  function defineClickOnHandler(handler) {
903
- return defineFacetPayload(editorEventFacet, [["clickOn", handler]]);
917
+ return defineEventFacetPayload(["clickOn", handler]);
904
918
  }
905
919
  function defineClickHandler(handler) {
906
- return defineFacetPayload(editorEventFacet, [["click", handler]]);
920
+ return defineEventFacetPayload(["click", handler]);
907
921
  }
908
922
  function defineDoubleClickOnHandler(handler) {
909
- return defineFacetPayload(editorEventFacet, [["doubleClickOn", handler]]);
923
+ return defineEventFacetPayload(["doubleClickOn", handler]);
910
924
  }
911
925
  function defineDoubleClickHandler(handler) {
912
- return defineFacetPayload(editorEventFacet, [["doubleClick", handler]]);
926
+ return defineEventFacetPayload(["doubleClick", handler]);
913
927
  }
914
928
  function defineTripleClickOnHandler(handler) {
915
- return defineFacetPayload(editorEventFacet, [["tripleClickOn", handler]]);
929
+ return defineEventFacetPayload(["tripleClickOn", handler]);
916
930
  }
917
931
  function defineTripleClickHandler(handler) {
918
- return defineFacetPayload(editorEventFacet, [["tripleClick", handler]]);
932
+ return defineEventFacetPayload(["tripleClick", handler]);
919
933
  }
920
934
  function definePasteHandler(handler) {
921
- return defineFacetPayload(editorEventFacet, [["paste", handler]]);
935
+ return defineEventFacetPayload(["paste", handler]);
922
936
  }
923
937
  function defineDropHandler(handler) {
924
- return defineFacetPayload(editorEventFacet, [["drop", handler]]);
938
+ return defineEventFacetPayload(["drop", handler]);
925
939
  }
926
940
  function defineScrollToSelectionHandler(handler) {
927
- return defineFacetPayload(editorEventFacet, [["scrollToSelection", handler]]);
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 defineFacetPayload(domEventFacet, [
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.11",
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.0",
49
- "@prosekit/pm": "^0.1.8"
48
+ "type-fest": "^4.26.1",
49
+ "@prosekit/pm": "^0.1.9"
50
50
  },
51
51
  "devDependencies": {
52
- "@vitest/browser": "^2.0.5",
53
- "tsup": "^8.2.4",
54
- "typescript": "^5.5.4",
55
- "vitest": "^2.0.5",
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": {