@neo4j-cypher/react-codemirror 2.0.0-next.7 → 2.0.0-next.9

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/CypherEditor.d.ts +60 -2
  3. package/dist/CypherEditor.js +115 -20
  4. package/dist/CypherEditor.js.map +1 -1
  5. package/dist/e2e_tests/autoCompletion.spec.js +112 -17
  6. package/dist/e2e_tests/autoCompletion.spec.js.map +1 -1
  7. package/dist/e2e_tests/configuration.spec.d.ts +1 -0
  8. package/dist/e2e_tests/configuration.spec.js +83 -0
  9. package/dist/e2e_tests/configuration.spec.js.map +1 -0
  10. package/dist/e2e_tests/debounce.spec.d.ts +1 -0
  11. package/dist/e2e_tests/debounce.spec.js +63 -0
  12. package/dist/e2e_tests/debounce.spec.js.map +1 -0
  13. package/dist/e2e_tests/e2eUtils.js +9 -1
  14. package/dist/e2e_tests/e2eUtils.js.map +1 -1
  15. package/dist/e2e_tests/extraKeybindings.spec.js +0 -1
  16. package/dist/e2e_tests/extraKeybindings.spec.js.map +1 -1
  17. package/dist/e2e_tests/historyNavigation.spec.js +107 -16
  18. package/dist/e2e_tests/historyNavigation.spec.js.map +1 -1
  19. package/dist/e2e_tests/sanityChecks.spec.js +0 -10
  20. package/dist/e2e_tests/sanityChecks.spec.js.map +1 -1
  21. package/dist/e2e_tests/signatureHelp.spec.js +43 -15
  22. package/dist/e2e_tests/signatureHelp.spec.js.map +1 -1
  23. package/dist/e2e_tests/snippets.spec.d.ts +1 -0
  24. package/dist/e2e_tests/snippets.spec.js +62 -0
  25. package/dist/e2e_tests/snippets.spec.js.map +1 -0
  26. package/dist/e2e_tests/syntaxHighlighting.spec.js +0 -1
  27. package/dist/e2e_tests/syntaxHighlighting.spec.js.map +1 -1
  28. package/dist/e2e_tests/syntaxValidation.spec.js +3 -3
  29. package/dist/e2e_tests/syntaxValidation.spec.js.map +1 -1
  30. package/dist/historyNavigation.js +1 -1
  31. package/dist/historyNavigation.js.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +1 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/lang-cypher/autocomplete.d.ts +4 -1
  36. package/dist/lang-cypher/autocomplete.js +79 -17
  37. package/dist/lang-cypher/autocomplete.js.map +1 -1
  38. package/dist/lang-cypher/contants.test.js +2 -2
  39. package/dist/lang-cypher/contants.test.js.map +1 -1
  40. package/dist/lang-cypher/createCypherTheme.js +34 -2
  41. package/dist/lang-cypher/createCypherTheme.js.map +1 -1
  42. package/dist/lang-cypher/langCypher.d.ts +5 -0
  43. package/dist/lang-cypher/langCypher.js +11 -5
  44. package/dist/lang-cypher/langCypher.js.map +1 -1
  45. package/dist/lang-cypher/signatureHelp.js +39 -22
  46. package/dist/lang-cypher/signatureHelp.js.map +1 -1
  47. package/dist/lang-cypher/utils.d.ts +2 -0
  48. package/dist/lang-cypher/utils.js +10 -0
  49. package/dist/lang-cypher/utils.js.map +1 -0
  50. package/dist/neo4jSetup.js +35 -1
  51. package/dist/neo4jSetup.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/package.json +9 -9
  54. package/src/CypherEditor.tsx +233 -31
  55. package/src/e2e_tests/autoCompletion.spec.tsx +189 -18
  56. package/src/e2e_tests/configuration.spec.tsx +111 -0
  57. package/src/e2e_tests/debounce.spec.tsx +100 -0
  58. package/src/e2e_tests/e2eUtils.ts +11 -1
  59. package/src/e2e_tests/extraKeybindings.spec.tsx +0 -2
  60. package/src/e2e_tests/historyNavigation.spec.tsx +136 -17
  61. package/src/e2e_tests/sanityChecks.spec.tsx +0 -16
  62. package/src/e2e_tests/signatureHelp.spec.tsx +86 -18
  63. package/src/e2e_tests/snippets.spec.tsx +92 -0
  64. package/src/e2e_tests/syntaxHighlighting.spec.tsx +0 -2
  65. package/src/e2e_tests/syntaxValidation.spec.tsx +3 -3
  66. package/src/historyNavigation.ts +1 -1
  67. package/src/index.ts +4 -1
  68. package/src/lang-cypher/autocomplete.ts +95 -19
  69. package/src/lang-cypher/contants.test.ts +5 -2
  70. package/src/lang-cypher/createCypherTheme.ts +34 -2
  71. package/src/lang-cypher/langCypher.ts +17 -5
  72. package/src/lang-cypher/signatureHelp.ts +61 -30
  73. package/src/lang-cypher/utils.ts +9 -0
  74. package/src/neo4jSetup.tsx +51 -1
@@ -1,5 +1,6 @@
1
1
  import { HighlightStyle, syntaxHighlighting, } from '@codemirror/language';
2
2
  import { EditorView } from '@codemirror/view';
3
+ import { CypherTokenType } from '@neo4j-cypher/language-support';
3
4
  import { tokenTypeToStyleTag } from './constants';
4
5
  import { byWordSvg, caseSensitiveSvg, downArrowSvg, regexSvg, replaceAllSvg, replaceSvg, upArrowSvg, } from './themeIcons';
5
6
  export const createCypherTheme = ({ dark, editorSettings: settings, highlightStyles, inheritBgColor, }) => {
@@ -20,8 +21,9 @@ export const createCypherTheme = ({ dark, editorSettings: settings, highlightSty
20
21
  color: settings.gutterForeground,
21
22
  border: 'none',
22
23
  },
23
- '&.cm-editor .cm-scroller': {
24
+ '&.cm-editor': {
24
25
  fontFamily: 'Fira Code, Menlo, Monaco, Lucida Console, monospace',
26
+ height: '100%',
25
27
  },
26
28
  '.cm-content': {
27
29
  caretColor: settings.cursor,
@@ -54,7 +56,37 @@ export const createCypherTheme = ({ dark, editorSettings: settings, highlightSty
54
56
  color: settings.autoCompletionPanel.matchingTextColor,
55
57
  textDecoration: 'none',
56
58
  },
59
+ '& .cm-signature-help-panel': {
60
+ backgroundColor: settings.autoCompletionPanel.backgroundColor,
61
+ maxWidth: '700px',
62
+ maxHeight: '250px',
63
+ fontFamily: 'Fira Code, Menlo, Monaco, Lucida Console, monospace',
64
+ },
65
+ '& .cm-signature-help-panel-contents': {
66
+ overflow: 'auto',
67
+ maxHeight: '250px',
68
+ },
69
+ '& .cm-signature-help-panel-current-argument': {
70
+ color: settings.autoCompletionPanel.matchingTextColor,
71
+ fontWeight: 'bold',
72
+ },
73
+ '& .cm-signature-help-panel-separator': {
74
+ borderBottom: '1px solid #ccc',
75
+ },
76
+ '& .cm-signature-help-panel-name': {
77
+ padding: '5px',
78
+ },
79
+ '& .cm-signature-help-panel-description': {
80
+ padding: '5px',
81
+ },
82
+ '.cm-completionInfo-signature': {
83
+ color: 'darkgrey',
84
+ },
85
+ '.cm-deprecated-completion': {
86
+ 'text-decoration': 'line-through',
87
+ },
57
88
  '.cm-tooltip-autocomplete': {
89
+ maxWidth: '430px',
58
90
  '& > ul > li[aria-selected]': {
59
91
  backgroundColor: settings.autoCompletionPanel.selectedColor,
60
92
  color: settings.foreground,
@@ -138,7 +170,7 @@ export const createCypherTheme = ({ dark, editorSettings: settings, highlightSty
138
170
  const styles = Object.entries(highlightStyles).map(([token, color]) => ({
139
171
  tag: tokenTypeToStyleTag[token],
140
172
  color,
141
- class: token === 'consoleCommand' ? 'cm-bold' : undefined,
173
+ class: token === CypherTokenType.consoleCommand ? 'cm-bold' : undefined,
142
174
  }));
143
175
  const highlightStyle = HighlightStyle.define(styles);
144
176
  const extension = [themeExtension, syntaxHighlighting(highlightStyle)];
@@ -1 +1 @@
1
- {"version":3,"file":"createCypherTheme.js","sourceRoot":"","sources":["../../src/lang-cypher/createCypherTheme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createCypherTheme.js","sourceRoot":"","sources":["../../src/lang-cypher/createCypherTheme.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@ import { LanguageSupport } from '@codemirror/language';
2
2
  import { type DbSchema } from '@neo4j-cypher/language-support';
3
3
  export type CypherConfig = {
4
4
  lint?: boolean;
5
+ showSignatureTooltipBelow?: boolean;
6
+ featureFlags?: {
7
+ signatureInfoOnAutoCompletions?: boolean;
8
+ consoleCommands?: boolean;
9
+ };
5
10
  schema?: DbSchema;
6
11
  useLightVersion: boolean;
7
12
  setUseLightVersion?: (useLightVersion: boolean) => void;
@@ -1,6 +1,7 @@
1
+ import { autocompletion } from '@codemirror/autocomplete';
1
2
  import { defineLanguageFacet, Language, LanguageSupport, } from '@codemirror/language';
2
- import { setConsoleCommandsEnabled, } from '@neo4j-cypher/language-support';
3
- import { cypherAutocomplete } from './autocomplete';
3
+ import { _internalFeatureFlags, } from '@neo4j-cypher/language-support';
4
+ import { completionStyles, cypherAutocomplete } from './autocomplete';
4
5
  import { ParserAdapter } from './parser-adapter';
5
6
  import { signatureHelpTooltip } from './signatureHelp';
6
7
  import { cypherLinter, semanticAnalysisLinter } from './syntaxValidation';
@@ -9,12 +10,17 @@ const facet = defineLanguageFacet({
9
10
  closeBrackets: { brackets: ['(', '[', '{', "'", '"', '`'] },
10
11
  });
11
12
  export function cypher(config) {
12
- setConsoleCommandsEnabled(true);
13
+ const featureFlags = config.featureFlags;
14
+ // We allow to override the consoleCommands feature flag
15
+ if (featureFlags.consoleCommands !== undefined) {
16
+ _internalFeatureFlags.consoleCommands = featureFlags.consoleCommands;
17
+ }
13
18
  const parserAdapter = new ParserAdapter(facet, config);
14
19
  const cypherLanguage = new Language(facet, parserAdapter, [], 'cypher');
15
20
  return new LanguageSupport(cypherLanguage, [
16
- cypherLanguage.data.of({
17
- autocomplete: cypherAutocomplete(config),
21
+ autocompletion({
22
+ override: [cypherAutocomplete(config)],
23
+ optionClass: completionStyles,
18
24
  }),
19
25
  cypherLinter(config),
20
26
  semanticAnalysisLinter(config),
@@ -1 +1 @@
1
- {"version":3,"file":"langCypher.js","sourceRoot":"","sources":["../../src/lang-cypher/langCypher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,GAE1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,KAAK,GAAG,mBAAmB,CAAC;IAChC,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjE,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;CAC5D,CAAC,CAAC;AASH,MAAM,UAAU,MAAM,CAAC,MAAoB;IACzC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAExE,OAAO,IAAI,eAAe,CAAC,cAAc,EAAE;QACzC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;SACzC,CAAC;QACF,YAAY,CAAC,MAAM,CAAC;QACpB,sBAAsB,CAAC,MAAM,CAAC;QAC9B,oBAAoB,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"langCypher.js","sourceRoot":"","sources":["../../src/lang-cypher/langCypher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,GAEtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,KAAK,GAAG,mBAAmB,CAAC;IAChC,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjE,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;CAC5D,CAAC,CAAC;AAcH,MAAM,UAAU,MAAM,CAAC,MAAoB;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACzC,wDAAwD;IACxD,IAAI,YAAY,CAAC,eAAe,KAAK,SAAS,EAAE;QAC9C,qBAAqB,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;KACtE;IAED,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAExE,OAAO,IAAI,eAAe,CAAC,cAAc,EAAE;QACzC,cAAc,CAAC;YACb,QAAQ,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACtC,WAAW,EAAE,gBAAgB;SAC9B,CAAC;QACF,YAAY,CAAC,MAAM,CAAC;QACpB,sBAAsB,CAAC,MAAM,CAAC;QAC9B,oBAAoB,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { StateField } from '@codemirror/state';
2
2
  import { showTooltip } from '@codemirror/view';
3
3
  import { signatureHelp } from '@neo4j-cypher/language-support';
4
+ import { getDocString } from './utils';
4
5
  function getTriggerCharacter(query, caretPosition) {
5
6
  let i = caretPosition - 1;
6
7
  let triggerCharacter = query.at(i);
@@ -11,6 +12,41 @@ function getTriggerCharacter(query, caretPosition) {
11
12
  }
12
13
  return triggerCharacter;
13
14
  }
15
+ const createSignatureHelpElement = ({ signature, activeParameter, }) => () => {
16
+ const parameters = signature.parameters;
17
+ const doc = getDocString(signature.documentation);
18
+ const dom = document.createElement('div');
19
+ dom.className = 'cm-signature-help-panel';
20
+ const contents = document.createElement('div');
21
+ contents.className = 'cm-signature-help-panel-contents';
22
+ dom.appendChild(contents);
23
+ const signatureLabel = document.createElement('div');
24
+ signatureLabel.className = 'cm-signature-help-panel-name';
25
+ signatureLabel.appendChild(document.createTextNode(`${signature.label}(`));
26
+ parameters.forEach((param, index) => {
27
+ if (typeof param.documentation === 'string') {
28
+ const span = document.createElement('span');
29
+ span.appendChild(document.createTextNode(param.documentation));
30
+ if (index !== parameters.length - 1) {
31
+ span.appendChild(document.createTextNode(', '));
32
+ }
33
+ if (index === activeParameter) {
34
+ span.className = 'cm-signature-help-panel-current-argument';
35
+ }
36
+ signatureLabel.appendChild(span);
37
+ }
38
+ });
39
+ signatureLabel.appendChild(document.createTextNode(')'));
40
+ contents.appendChild(signatureLabel);
41
+ const separator = document.createElement('div');
42
+ separator.className = 'cm-signature-help-panel-separator';
43
+ contents.appendChild(separator);
44
+ const description = document.createElement('div');
45
+ description.className = 'cm-signature-help-panel-description';
46
+ description.appendChild(document.createTextNode(doc));
47
+ contents.appendChild(description);
48
+ return { dom };
49
+ };
14
50
  function getSignatureHelpTooltip(state, config) {
15
51
  let result = [];
16
52
  const schema = config.schema;
@@ -30,32 +66,13 @@ function getSignatureHelpTooltip(state, config) {
30
66
  activeSignature < signatures.length &&
31
67
  signatures[activeSignature].documentation !== undefined) {
32
68
  const signature = signatures[activeSignature];
33
- const parameters = signature.parameters;
34
- let doc = signature.documentation.toString();
35
- if (activeParameter >= 0 &&
36
- activeParameter <
37
- (signatures[activeSignature].parameters?.length ?? 0)) {
38
- doc =
39
- parameters[activeParameter].documentation.toString() + '\n\n' + doc;
40
- }
69
+ const showSignatureTooltipBelow = config.showSignatureTooltipBelow ?? true;
41
70
  result = [
42
71
  {
43
72
  pos: caretPosition,
44
- above: true,
45
- strictSide: true,
73
+ above: !showSignatureTooltipBelow,
46
74
  arrow: true,
47
- create: () => {
48
- const div = document.createElement('div');
49
- const methodName = document.createElement('div');
50
- const argPlusDescription = document.createElement('div');
51
- const separator = document.createElement('hr');
52
- const lineBreak = document.createElement('br');
53
- div.append(...[methodName, separator, lineBreak, argPlusDescription]);
54
- div.className = 'cm-tooltip-signature-help';
55
- methodName.innerText = signature.label;
56
- argPlusDescription.innerText = doc;
57
- return { dom: div };
58
- },
75
+ create: createSignatureHelpElement({ signature, activeParameter }),
59
76
  },
60
77
  ];
61
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signatureHelp.js","sourceRoot":"","sources":["../../src/lang-cypher/signatureHelp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signatureHelp.js","sourceRoot":"","sources":["../../src/lang-cypher/signatureHelp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { MarkupContent } from 'vscode-languageserver-types';
2
+ export declare function getDocString(result: string | MarkupContent): string;
@@ -0,0 +1,10 @@
1
+ import { MarkupContent } from 'vscode-languageserver-types';
2
+ export function getDocString(result) {
3
+ if (MarkupContent.is(result)) {
4
+ result.value;
5
+ }
6
+ else {
7
+ return result;
8
+ }
9
+ }
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lang-cypher/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5B,MAAM,CAAC,KAAK,CAAC;KACd;SAAM;QACL,OAAO,MAAM,CAAC;KACf;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { acceptCompletion, autocompletion, closeBrackets, closeBracketsKeymap, completionKeymap, } from '@codemirror/autocomplete';
1
+ import { acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completionKeymap, nextSnippetField, prevSnippetField, snippetKeymap, } from '@codemirror/autocomplete';
2
2
  import { defaultKeymap, history, historyKeymap, indentLess, indentMore, } from '@codemirror/commands';
3
3
  import { bracketMatching, defaultHighlightStyle, foldKeymap, indentOnInput, syntaxHighlighting, } from '@codemirror/language';
4
4
  import { highlightSelectionMatches, searchKeymap } from '@codemirror/search';
@@ -81,6 +81,40 @@ export const basicNeo4jSetup = () => {
81
81
  extensions.push(crosshairCursor());
82
82
  extensions.push(highlightSelectionMatches());
83
83
  extensions.push(keymap.of(keymaps));
84
+ extensions.push(snippetKeymap.of([
85
+ {
86
+ key: 'Tab',
87
+ run: acceptCompletionOrGotoNextSnippet,
88
+ shift: acceptCompletionOrGotoPrevSnippet,
89
+ },
90
+ { key: 'Escape', run: closeCompletionsOrClearSnippets },
91
+ ]));
84
92
  return extensions;
85
93
  };
94
+ // The logic to check if there's a completion open is surprisingly complex
95
+ // https://github.com/codemirror/autocomplete/blob/5ad2ebc861f2f61cdc943fc087a5bfb756a7d0fa/src/view.ts#L31
96
+ // For example it respects an interaction delay, so we can't just check if the completion is open
97
+ // instead we just run the acceptCompletion command which returns true if a completion was accepted
98
+ // in that case we know that we shouldn't move to the next snippet field
99
+ const acceptCompletionOrGotoNextSnippet = (view) => {
100
+ const didCompletion = acceptCompletion(view);
101
+ if (didCompletion) {
102
+ return true;
103
+ }
104
+ return nextSnippetField(view);
105
+ };
106
+ const acceptCompletionOrGotoPrevSnippet = (view) => {
107
+ const didCompletion = acceptCompletion(view);
108
+ if (didCompletion) {
109
+ return true;
110
+ }
111
+ return prevSnippetField(view);
112
+ };
113
+ const closeCompletionsOrClearSnippets = (view) => {
114
+ const closedCompletions = closeCompletion(view);
115
+ if (closedCompletions) {
116
+ return true;
117
+ }
118
+ return clearSnippet(view);
119
+ };
86
120
  //# sourceMappingURL=neo4jSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"neo4jSetup.js","sourceRoot":"","sources":["../src/neo4jSetup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neo4jSetup.js","sourceRoot":"","sources":["../src/neo4jSetup.tsx"],"names":[],"mappings":"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"}