@codemirror/autocomplete 6.6.1 → 6.7.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/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 6.7.0 (2023-05-11)
2
+
3
+ ### New features
4
+
5
+ The new `hasNextSnippetField` and `hasPrevSnippetField` functions can be used to figure out if the snippet-field-motion commands apply to a given state.
6
+
1
7
  ## 6.6.1 (2023-05-03)
2
8
 
3
9
  ### Bug fixes
package/dist/index.cjs CHANGED
@@ -1479,6 +1479,22 @@ const nextSnippetField = moveField(1);
1479
1479
  Move to the previous snippet field, if available.
1480
1480
  */
1481
1481
  const prevSnippetField = moveField(-1);
1482
+ /**
1483
+ Check if there is an active snippet with a next field for
1484
+ `nextSnippetField` to move to.
1485
+ */
1486
+ function hasNextSnippetField(state) {
1487
+ let active = state.field(snippetState, false);
1488
+ return !!(active && active.ranges.some(r => r.field == active.active + 1));
1489
+ }
1490
+ /**
1491
+ Returns true if there is an active snippet and a previous field
1492
+ for `prevSnippetField` to move to.
1493
+ */
1494
+ function hasPrevSnippetField(state) {
1495
+ let active = state.field(snippetState, false);
1496
+ return !!(active && active.active > 0);
1497
+ }
1482
1498
  const defaultSnippetKeymap = [
1483
1499
  { key: "Tab", run: nextSnippetField, shift: prevSnippetField },
1484
1500
  { key: "Escape", run: clearSnippet }
@@ -1938,6 +1954,8 @@ exports.completionKeymap = completionKeymap;
1938
1954
  exports.completionStatus = completionStatus;
1939
1955
  exports.currentCompletions = currentCompletions;
1940
1956
  exports.deleteBracketPair = deleteBracketPair;
1957
+ exports.hasNextSnippetField = hasNextSnippetField;
1958
+ exports.hasPrevSnippetField = hasPrevSnippetField;
1941
1959
  exports.ifIn = ifIn;
1942
1960
  exports.ifNotIn = ifNotIn;
1943
1961
  exports.insertBracket = insertBracket;
package/dist/index.d.ts CHANGED
@@ -398,6 +398,16 @@ Move to the previous snippet field, if available.
398
398
  */
399
399
  declare const prevSnippetField: StateCommand;
400
400
  /**
401
+ Check if there is an active snippet with a next field for
402
+ `nextSnippetField` to move to.
403
+ */
404
+ declare function hasNextSnippetField(state: EditorState): boolean;
405
+ /**
406
+ Returns true if there is an active snippet and a previous field
407
+ for `prevSnippetField` to move to.
408
+ */
409
+ declare function hasPrevSnippetField(state: EditorState): boolean;
410
+ /**
401
411
  A facet that can be used to configure the key bindings used by
402
412
  snippets. The default binds Tab to
403
413
  [`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to
@@ -534,4 +544,4 @@ the currently selected completion.
534
544
  */
535
545
  declare function setSelectedCompletion(index: number): StateEffect<unknown>;
536
546
 
537
- export { CloseBracketConfig, Completion, CompletionContext, CompletionResult, CompletionSection, CompletionSource, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };
547
+ export { CloseBracketConfig, Completion, CompletionContext, CompletionResult, CompletionSection, CompletionSource, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };
package/dist/index.js CHANGED
@@ -1475,6 +1475,22 @@ const nextSnippetField = /*@__PURE__*/moveField(1);
1475
1475
  Move to the previous snippet field, if available.
1476
1476
  */
1477
1477
  const prevSnippetField = /*@__PURE__*/moveField(-1);
1478
+ /**
1479
+ Check if there is an active snippet with a next field for
1480
+ `nextSnippetField` to move to.
1481
+ */
1482
+ function hasNextSnippetField(state) {
1483
+ let active = state.field(snippetState, false);
1484
+ return !!(active && active.ranges.some(r => r.field == active.active + 1));
1485
+ }
1486
+ /**
1487
+ Returns true if there is an active snippet and a previous field
1488
+ for `prevSnippetField` to move to.
1489
+ */
1490
+ function hasPrevSnippetField(state) {
1491
+ let active = state.field(snippetState, false);
1492
+ return !!(active && active.active > 0);
1493
+ }
1478
1494
  const defaultSnippetKeymap = [
1479
1495
  { key: "Tab", run: nextSnippetField, shift: prevSnippetField },
1480
1496
  { key: "Escape", run: clearSnippet }
@@ -1921,4 +1937,4 @@ function setSelectedCompletion(index) {
1921
1937
  return setSelectedEffect.of(index);
1922
1938
  }
1923
1939
 
1924
- export { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };
1940
+ export { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemirror/autocomplete",
3
- "version": "6.6.1",
3
+ "version": "6.7.0",
4
4
  "description": "Autocompletion for the CodeMirror code editor",
5
5
  "scripts": {
6
6
  "test": "cm-runtests",