@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.
- package/CHANGELOG.md +26 -0
- package/dist/CypherEditor.d.ts +60 -2
- package/dist/CypherEditor.js +115 -20
- package/dist/CypherEditor.js.map +1 -1
- package/dist/e2e_tests/autoCompletion.spec.js +112 -17
- package/dist/e2e_tests/autoCompletion.spec.js.map +1 -1
- package/dist/e2e_tests/configuration.spec.d.ts +1 -0
- package/dist/e2e_tests/configuration.spec.js +83 -0
- package/dist/e2e_tests/configuration.spec.js.map +1 -0
- package/dist/e2e_tests/debounce.spec.d.ts +1 -0
- package/dist/e2e_tests/debounce.spec.js +63 -0
- package/dist/e2e_tests/debounce.spec.js.map +1 -0
- package/dist/e2e_tests/e2eUtils.js +9 -1
- package/dist/e2e_tests/e2eUtils.js.map +1 -1
- package/dist/e2e_tests/extraKeybindings.spec.js +0 -1
- package/dist/e2e_tests/extraKeybindings.spec.js.map +1 -1
- package/dist/e2e_tests/historyNavigation.spec.js +107 -16
- package/dist/e2e_tests/historyNavigation.spec.js.map +1 -1
- package/dist/e2e_tests/sanityChecks.spec.js +0 -10
- package/dist/e2e_tests/sanityChecks.spec.js.map +1 -1
- package/dist/e2e_tests/signatureHelp.spec.js +43 -15
- package/dist/e2e_tests/signatureHelp.spec.js.map +1 -1
- package/dist/e2e_tests/snippets.spec.d.ts +1 -0
- package/dist/e2e_tests/snippets.spec.js +62 -0
- package/dist/e2e_tests/snippets.spec.js.map +1 -0
- package/dist/e2e_tests/syntaxHighlighting.spec.js +0 -1
- package/dist/e2e_tests/syntaxHighlighting.spec.js.map +1 -1
- package/dist/e2e_tests/syntaxValidation.spec.js +3 -3
- package/dist/e2e_tests/syntaxValidation.spec.js.map +1 -1
- package/dist/historyNavigation.js +1 -1
- package/dist/historyNavigation.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lang-cypher/autocomplete.d.ts +4 -1
- package/dist/lang-cypher/autocomplete.js +79 -17
- package/dist/lang-cypher/autocomplete.js.map +1 -1
- package/dist/lang-cypher/contants.test.js +2 -2
- package/dist/lang-cypher/contants.test.js.map +1 -1
- package/dist/lang-cypher/createCypherTheme.js +34 -2
- package/dist/lang-cypher/createCypherTheme.js.map +1 -1
- package/dist/lang-cypher/langCypher.d.ts +5 -0
- package/dist/lang-cypher/langCypher.js +11 -5
- package/dist/lang-cypher/langCypher.js.map +1 -1
- package/dist/lang-cypher/signatureHelp.js +39 -22
- package/dist/lang-cypher/signatureHelp.js.map +1 -1
- package/dist/lang-cypher/utils.d.ts +2 -0
- package/dist/lang-cypher/utils.js +10 -0
- package/dist/lang-cypher/utils.js.map +1 -0
- package/dist/neo4jSetup.js +35 -1
- package/dist/neo4jSetup.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/CypherEditor.tsx +233 -31
- package/src/e2e_tests/autoCompletion.spec.tsx +189 -18
- package/src/e2e_tests/configuration.spec.tsx +111 -0
- package/src/e2e_tests/debounce.spec.tsx +100 -0
- package/src/e2e_tests/e2eUtils.ts +11 -1
- package/src/e2e_tests/extraKeybindings.spec.tsx +0 -2
- package/src/e2e_tests/historyNavigation.spec.tsx +136 -17
- package/src/e2e_tests/sanityChecks.spec.tsx +0 -16
- package/src/e2e_tests/signatureHelp.spec.tsx +86 -18
- package/src/e2e_tests/snippets.spec.tsx +92 -0
- package/src/e2e_tests/syntaxHighlighting.spec.tsx +0 -2
- package/src/e2e_tests/syntaxValidation.spec.tsx +3 -3
- package/src/historyNavigation.ts +1 -1
- package/src/index.ts +4 -1
- package/src/lang-cypher/autocomplete.ts +95 -19
- package/src/lang-cypher/contants.test.ts +5 -2
- package/src/lang-cypher/createCypherTheme.ts +34 -2
- package/src/lang-cypher/langCypher.ts +17 -5
- package/src/lang-cypher/signatureHelp.ts +61 -30
- package/src/lang-cypher/utils.ts +9 -0
- 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
|
|
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 ===
|
|
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":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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,
|
|
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
|
|
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:
|
|
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":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAW,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,SAAS,mBAAmB,CAAC,KAAa,EAAE,aAAqB;IAC/D,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnC,8EAA8E;IAC9E,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,CAAC,IAAI,CAAC,CAAC;QACP,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAChC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"signatureHelp.js","sourceRoot":"","sources":["../../src/lang-cypher/signatureHelp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAW,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,SAAS,mBAAmB,CAAC,KAAa,EAAE,aAAqB;IAC/D,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnC,8EAA8E;IAC9E,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,CAAC,IAAI,CAAC,CAAC;QACP,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAChC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,0BAA0B,GAC9B,CAAC,EACC,SAAS,EACT,eAAe,GAIhB,EAAE,EAAE,CACL,GAAG,EAAE;IACH,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;IACxC,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,SAAS,GAAG,yBAAyB,CAAC;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,GAAG,kCAAkC,CAAC;IACxD,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrD,cAAc,CAAC,SAAS,GAAG,8BAA8B,CAAC;IAC1D,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAE3E,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/D,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,KAAK,KAAK,eAAe,EAAE;gBAC7B,IAAI,CAAC,SAAS,GAAG,0CAA0C,CAAC;aAC7D;YACD,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAClC;IACH,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzD,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,SAAS,GAAG,mCAAmC,CAAC;IAE1D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,WAAW,CAAC,SAAS,GAAG,qCAAqC,CAAC;IAC9D,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtD,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAElC,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAEJ,SAAS,uBAAuB,CAC9B,KAAkB,EAClB,MAAoB;IAEpB,IAAI,MAAM,GAAc,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE;QAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAEnE,IAAI,gBAAgB,KAAK,GAAG,IAAI,gBAAgB,KAAK,GAAG,EAAE;YACxD,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YACtE,MAAM,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;YAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;YAChD,MAAM,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;YAE1D,IACE,eAAe,KAAK,SAAS;gBAC7B,eAAe,IAAI,CAAC;gBACpB,eAAe,GAAG,UAAU,CAAC,MAAM;gBACnC,UAAU,CAAC,eAAe,CAAC,CAAC,aAAa,KAAK,SAAS,EACvD;gBACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC7B,MAAM,CAAC,yBAAyB,IAAI,IAAI,CAAC;gBAE3C,MAAM,GAAG;oBACP;wBACE,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,CAAC,yBAAyB;wBACjC,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,0BAA0B,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;qBACnE;iBACF,CAAC;aACH;SACF;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,UAAU,CAAC,MAAM,CAAqB;QAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC;QAEzD,MAAM,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,OAAO,QAAQ,CAAC;YACrD,OAAO,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACrE,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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"}
|
package/dist/neo4jSetup.js
CHANGED
|
@@ -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
|
package/dist/neo4jSetup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neo4jSetup.js","sourceRoot":"","sources":["../src/neo4jSetup.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"neo4jSetup.js","sourceRoot":"","sources":["../src/neo4jSetup.tsx"],"names":[],"mappings":"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"}
|