@neo4j-cypher/react-codemirror 2.0.0-next.40 → 2.0.0-next.42
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 +34 -0
- package/dist/src/CypherEditor.d.ts +12 -6
- package/dist/src/CypherEditor.js +11 -3
- package/dist/src/CypherEditor.js.map +1 -1
- package/dist/src/CypherEditor.test.js +20 -11
- package/dist/src/CypherEditor.test.js.map +1 -1
- package/dist/src/editorActions.js +83 -18
- package/dist/src/editorActions.js.map +1 -1
- package/dist/src/historyNavigation.d.ts +1 -1
- package/dist/src/historyNavigation.js.map +1 -1
- package/dist/src/index.d.ts +8 -3
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/lang-cypher/autocomplete.d.ts +1 -1
- package/dist/src/lang-cypher/autocomplete.js +1 -1
- package/dist/src/lang-cypher/autocomplete.js.map +1 -1
- package/dist/src/lang-cypher/constants.d.ts +2 -2
- package/dist/src/lang-cypher/constants.js.map +1 -1
- package/dist/src/lang-cypher/createCypherTheme.d.ts +2 -2
- package/dist/src/lang-cypher/createCypherTheme.js +47 -1
- package/dist/src/lang-cypher/createCypherTheme.js.map +1 -1
- package/dist/src/lang-cypher/hover/hover.d.ts +3 -0
- package/dist/src/lang-cypher/hover/hover.js +26 -0
- package/dist/src/lang-cypher/hover/hover.js.map +1 -0
- package/dist/src/lang-cypher/hover/hoverRender.d.ts +9 -0
- package/dist/src/lang-cypher/hover/hoverRender.js +142 -0
- package/dist/src/lang-cypher/hover/hoverRender.js.map +1 -0
- package/dist/src/lang-cypher/hover/hoverRender.test.js +123 -0
- package/dist/src/lang-cypher/hover/hoverRender.test.js.map +1 -0
- package/dist/src/lang-cypher/langCypher.d.ts +2 -1
- package/dist/src/lang-cypher/langCypher.js +3 -0
- package/dist/src/lang-cypher/langCypher.js.map +1 -1
- package/dist/src/lang-cypher/lintWorker.mjs +168 -166
- package/dist/src/lang-cypher/parser-adapter.d.ts +6 -4
- package/dist/src/lang-cypher/parser-adapter.js +4 -1
- package/dist/src/lang-cypher/parser-adapter.js.map +1 -1
- package/dist/src/lang-cypher/prism-global.js +7 -0
- package/dist/src/lang-cypher/prism-global.js.map +1 -0
- package/dist/src/lang-cypher/signatureHelp.d.ts +2 -2
- package/dist/src/lang-cypher/signatureHelp.js +14 -24
- package/dist/src/lang-cypher/signatureHelp.js.map +1 -1
- package/dist/src/lang-cypher/syntaxValidation.d.ts +1 -1
- package/dist/src/lang-cypher/syntaxValidation.js +7 -2
- package/dist/src/lang-cypher/syntaxValidation.js.map +1 -1
- package/dist/src/lang-cypher/tooltipHighlighting.d.ts +21 -0
- package/dist/src/lang-cypher/tooltipHighlighting.js +76 -0
- package/dist/src/lang-cypher/tooltipHighlighting.js.map +1 -0
- package/dist/src/lang-cypher/tooltipHighlighting.test.js +63 -0
- package/dist/src/lang-cypher/tooltipHighlighting.test.js.map +1 -0
- package/dist/src/neo4jSetup.d.ts +1 -1
- package/dist/src/neo4jSetup.js.map +1 -1
- package/dist/src/richClipboardCopier.js +2 -2
- package/dist/src/richClipboardCopier.js.map +1 -1
- package/dist/src/richClipboardCopier.test.js.map +1 -1
- package/dist/src/{e2e_tests → tests/e2e}/autoCompletion.spec.js +1 -2
- package/dist/src/tests/e2e/autoCompletion.spec.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/configuration.spec.js +1 -1
- package/dist/src/tests/e2e/configuration.spec.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/debounce.spec.js +2 -2
- package/dist/src/tests/e2e/debounce.spec.js.map +1 -0
- package/dist/src/tests/e2e/e2eUtils.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/extraKeybindings.spec.js +1 -1
- package/dist/src/tests/e2e/extraKeybindings.spec.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/historyNavigation.spec.js +1 -1
- package/dist/src/tests/e2e/historyNavigation.spec.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/sanityChecks.spec.js +1 -1
- package/dist/src/tests/e2e/sanityChecks.spec.js.map +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/signatureHelp.spec.js +1 -2
- package/dist/src/tests/e2e/signatureHelp.spec.js.map +1 -0
- package/dist/src/tests/e2e/snippets.spec.d.ts +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/snippets.spec.js +1 -1
- package/dist/src/tests/e2e/snippets.spec.js.map +1 -0
- package/dist/src/tests/e2e/syntaxHighlighting.spec.d.ts +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/syntaxHighlighting.spec.js +2 -2
- package/dist/src/tests/e2e/syntaxHighlighting.spec.js.map +1 -0
- package/dist/src/tests/e2e/syntaxValidation.spec.d.ts +1 -0
- package/dist/src/{e2e_tests → tests/e2e}/syntaxValidation.spec.js +1 -1
- package/dist/src/tests/e2e/syntaxValidation.spec.js.map +1 -0
- package/dist/src/themes.d.ts +2 -2
- package/dist/src/themes.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.mts +2 -0
- package/dist/vitest.config.mjs +16 -0
- package/dist/vitest.config.mjs.map +1 -0
- package/package.json +15 -12
- package/src/CypherEditor.test.tsx +28 -19
- package/src/CypherEditor.tsx +33 -19
- package/src/editorActions.ts +103 -22
- package/src/historyNavigation.ts +5 -3
- package/src/index.ts +17 -3
- package/src/lang-cypher/autocomplete.ts +3 -6
- package/src/lang-cypher/constants.ts +3 -2
- package/src/lang-cypher/createCypherTheme.ts +59 -10
- package/src/lang-cypher/hover/hover.ts +32 -0
- package/src/lang-cypher/hover/hoverRender.test.ts +176 -0
- package/src/lang-cypher/hover/hoverRender.ts +198 -0
- package/src/lang-cypher/langCypher.ts +5 -4
- package/src/lang-cypher/lintWorker.mjs +168 -166
- package/src/lang-cypher/parser-adapter.ts +10 -9
- package/src/lang-cypher/prism-global.ts +7 -0
- package/src/lang-cypher/signatureHelp.ts +26 -31
- package/src/lang-cypher/syntaxValidation.ts +9 -4
- package/src/lang-cypher/tooltipHighlighting.test.ts +78 -0
- package/src/lang-cypher/tooltipHighlighting.ts +119 -0
- package/src/neo4jSetup.tsx +3 -3
- package/src/richClipboardCopier.test.ts +7 -5
- package/src/richClipboardCopier.ts +2 -2
- package/src/{e2e_tests → tests/e2e}/autoCompletion.spec.tsx +1 -2
- package/src/{e2e_tests → tests/e2e}/configuration.spec.tsx +1 -1
- package/src/{e2e_tests → tests/e2e}/debounce.spec.tsx +2 -2
- package/src/{e2e_tests → tests/e2e}/extraKeybindings.spec.tsx +1 -1
- package/src/{e2e_tests → tests/e2e}/historyNavigation.spec.tsx +2 -2
- package/src/{e2e_tests → tests/e2e}/sanityChecks.spec.tsx +1 -1
- package/src/{e2e_tests → tests/e2e}/signatureHelp.spec.tsx +2 -3
- package/src/{e2e_tests → tests/e2e}/snippets.spec.tsx +1 -1
- package/src/{e2e_tests → tests/e2e}/syntaxHighlighting.spec.tsx +2 -2
- package/src/{e2e_tests → tests/e2e}/syntaxValidation.spec.tsx +1 -1
- package/src/themes.ts +2 -2
- package/dist/src/e2e_tests/autoCompletion.spec.js.map +0 -1
- package/dist/src/e2e_tests/configuration.spec.js.map +0 -1
- package/dist/src/e2e_tests/debounce.spec.js.map +0 -1
- package/dist/src/e2e_tests/e2eUtils.js.map +0 -1
- package/dist/src/e2e_tests/extraKeybindings.spec.js.map +0 -1
- package/dist/src/e2e_tests/historyNavigation.spec.js.map +0 -1
- package/dist/src/e2e_tests/performanceTest.spec.d.ts +0 -6
- package/dist/src/e2e_tests/performanceTest.spec.js +0 -97
- package/dist/src/e2e_tests/performanceTest.spec.js.map +0 -1
- package/dist/src/e2e_tests/sanityChecks.spec.js.map +0 -1
- package/dist/src/e2e_tests/signatureHelp.spec.js.map +0 -1
- package/dist/src/e2e_tests/snippets.spec.js.map +0 -1
- package/dist/src/e2e_tests/syntaxHighlighting.spec.js.map +0 -1
- package/dist/src/e2e_tests/syntaxValidation.spec.js.map +0 -1
- package/src/e2e_tests/performanceTest.spec.tsx +0 -163
- /package/dist/src/{e2e_tests/autoCompletion.spec.d.ts → lang-cypher/hover/hoverRender.test.d.ts} +0 -0
- /package/dist/src/{e2e_tests/configuration.spec.d.ts → lang-cypher/prism-global.d.ts} +0 -0
- /package/dist/src/{e2e_tests/debounce.spec.d.ts → lang-cypher/tooltipHighlighting.test.d.ts} +0 -0
- /package/dist/src/{e2e_tests/extraKeybindings.spec.d.ts → tests/e2e/autoCompletion.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests/historyNavigation.spec.d.ts → tests/e2e/configuration.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests/sanityChecks.spec.d.ts → tests/e2e/debounce.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests → tests/e2e}/e2eUtils.d.ts +0 -0
- /package/dist/src/{e2e_tests → tests/e2e}/e2eUtils.js +0 -0
- /package/dist/src/{e2e_tests/signatureHelp.spec.d.ts → tests/e2e/extraKeybindings.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests/snippets.spec.d.ts → tests/e2e/historyNavigation.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests/syntaxHighlighting.spec.d.ts → tests/e2e/sanityChecks.spec.d.ts} +0 -0
- /package/dist/src/{e2e_tests/syntaxValidation.spec.d.ts → tests/e2e/signatureHelp.spec.d.ts} +0 -0
- /package/src/{e2e_tests → tests/e2e}/e2eUtils.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lang-cypher/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lang-cypher/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Extension } from '@codemirror/state';
|
|
2
|
-
import { HighlightedCypherTokenTypes } from './constants';
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import type { HighlightedCypherTokenTypes } from './constants';
|
|
3
3
|
export interface DiffColors {
|
|
4
4
|
/** Background fill for the whole inserted/changed line. */
|
|
5
5
|
insertedLine: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HighlightStyle, syntaxHighlighting
|
|
1
|
+
import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
|
2
2
|
import { EditorView } from '@codemirror/view';
|
|
3
3
|
import { CypherTokenType } from '@neo4j-cypher/language-support';
|
|
4
4
|
import { tokenTypeToStyleTag } from './constants';
|
|
@@ -83,6 +83,52 @@ export const createCypherTheme = ({ dark, editorSettings: settings, highlightSty
|
|
|
83
83
|
'& .cm-signature-help-panel-description': {
|
|
84
84
|
padding: '5px',
|
|
85
85
|
},
|
|
86
|
+
// Shared between both hover tooltips and hover errors
|
|
87
|
+
'& .cm-tooltip-hover': {
|
|
88
|
+
maxWidth: '800px',
|
|
89
|
+
},
|
|
90
|
+
'& .cm-hover-tooltip': {
|
|
91
|
+
backgroundColor: settings.autoCompletionPanel.backgroundColor,
|
|
92
|
+
color: settings.foreground,
|
|
93
|
+
maxHeight: '300px',
|
|
94
|
+
overflow: 'auto',
|
|
95
|
+
padding: '2px 10px',
|
|
96
|
+
},
|
|
97
|
+
'& .cm-hover-info': {
|
|
98
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif',
|
|
99
|
+
fontSize: '13px',
|
|
100
|
+
lineHeight: '1.5',
|
|
101
|
+
'& p': {
|
|
102
|
+
margin: '6px 0',
|
|
103
|
+
},
|
|
104
|
+
'& ul': {
|
|
105
|
+
margin: '6px 0',
|
|
106
|
+
paddingLeft: '18px',
|
|
107
|
+
},
|
|
108
|
+
'& li': {
|
|
109
|
+
margin: '2px 0',
|
|
110
|
+
},
|
|
111
|
+
'& code': {
|
|
112
|
+
fontFamily: 'Fira Code, Menlo, Monaco, Lucida Console, monospace',
|
|
113
|
+
fontSize: '12px',
|
|
114
|
+
},
|
|
115
|
+
'& pre': {
|
|
116
|
+
margin: '6px 0',
|
|
117
|
+
padding: '6px 8px',
|
|
118
|
+
borderRadius: '3px',
|
|
119
|
+
whiteSpace: 'pre-wrap',
|
|
120
|
+
overflowWrap: 'break-word',
|
|
121
|
+
backgroundColor: dark
|
|
122
|
+
? 'rgba(255, 255, 255, 0.08)'
|
|
123
|
+
: 'rgba(0, 0, 0, 0.05)',
|
|
124
|
+
},
|
|
125
|
+
'& > *:first-child': {
|
|
126
|
+
marginTop: '0',
|
|
127
|
+
},
|
|
128
|
+
'& > *:last-child': {
|
|
129
|
+
marginBottom: '0',
|
|
130
|
+
},
|
|
131
|
+
},
|
|
86
132
|
'.cm-completionInfo-signature': {
|
|
87
133
|
color: 'darkgrey',
|
|
88
134
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCypherTheme.js","sourceRoot":"","sources":["../../../src/lang-cypher/createCypherTheme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createCypherTheme.js","sourceRoot":"","sources":["../../../src/lang-cypher/createCypherTheme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { renderHoverInfo } from './hoverRender';
|
|
2
|
+
import { tooltipCypherHighlighter } from '../tooltipHighlighting.js';
|
|
3
|
+
export function getHoverSource(cfg) {
|
|
4
|
+
const hoverSource = (view, pos) => {
|
|
5
|
+
const doc = view.state.doc.toString();
|
|
6
|
+
const hoverInfo = cfg.languageService.hoverInfo(doc, {
|
|
7
|
+
caretPosition: pos,
|
|
8
|
+
dbSchema: cfg.schema ?? {},
|
|
9
|
+
});
|
|
10
|
+
if (!hoverInfo) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
pos: pos,
|
|
15
|
+
above: true,
|
|
16
|
+
create() {
|
|
17
|
+
const dom = document.createElement('div');
|
|
18
|
+
dom.className = 'cm-hover-tooltip';
|
|
19
|
+
dom.appendChild(renderHoverInfo(hoverInfo, tooltipCypherHighlighter(view.state, cfg)));
|
|
20
|
+
return { dom };
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
return hoverSource;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../../../src/lang-cypher/hover/hover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,MAAM,WAAW,GAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE;YACnD,aAAa,EAAE,GAAG;YAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,IAAI;YACX,MAAM;gBACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAC;gBACnC,GAAG,CAAC,WAAW,CACb,eAAe,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CACtE,CAAC;gBACF,OAAO,EAAE,GAAG,EAAE,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders language-support's HoverInfo into the hover tooltip.
|
|
3
|
+
*
|
|
4
|
+
* Everything is inserted as text nodes, so schema-provided descriptions can
|
|
5
|
+
* never inject HTML into the editor.
|
|
6
|
+
*/
|
|
7
|
+
import type { HoverInfo } from '@neo4j-cypher/language-support';
|
|
8
|
+
import type { TooltipCypherHighlighter } from '../tooltipHighlighting.js';
|
|
9
|
+
export declare function renderHoverInfo(info: HoverInfo, highlightHoverCode?: TooltipCypherHighlighter): HTMLElement;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders language-support's HoverInfo into the hover tooltip.
|
|
3
|
+
*
|
|
4
|
+
* Everything is inserted as text nodes, so schema-provided descriptions can
|
|
5
|
+
* never inject HTML into the editor.
|
|
6
|
+
*/
|
|
7
|
+
// The schema writes the bullet lists of its descriptions with *
|
|
8
|
+
const bullet = '* ';
|
|
9
|
+
export function renderHoverInfo(info, highlightHoverCode) {
|
|
10
|
+
const dom = document.createElement('div');
|
|
11
|
+
dom.className = 'cm-hover-info';
|
|
12
|
+
if (info.kind === 'variable') {
|
|
13
|
+
const typeLine = document.createElement('p');
|
|
14
|
+
typeLine.appendChild(element('code', `${info.variable}: ${info.types.join(', ')}`));
|
|
15
|
+
dom.appendChild(typeLine);
|
|
16
|
+
if (info.labelExpression !== undefined) {
|
|
17
|
+
dom.appendChild(codeBlock(info.labelExpression, 'labelExpression', highlightHoverCode));
|
|
18
|
+
}
|
|
19
|
+
return dom;
|
|
20
|
+
}
|
|
21
|
+
dom.appendChild(codeBlock(info.signature, info.kind, highlightHoverCode));
|
|
22
|
+
const deprecatedMarker = info.isDeprecated
|
|
23
|
+
? [
|
|
24
|
+
document.createTextNode('('),
|
|
25
|
+
element('em', 'deprecated'),
|
|
26
|
+
document.createTextNode(') '),
|
|
27
|
+
]
|
|
28
|
+
: [];
|
|
29
|
+
renderDescription(dom, info.description, deprecatedMarker);
|
|
30
|
+
appendDescribedList(dom, 'Parameters', info.parameters);
|
|
31
|
+
if (info.kind === 'function') {
|
|
32
|
+
if (info.returnType) {
|
|
33
|
+
const returns = document.createElement('p');
|
|
34
|
+
returns.append(element('strong', 'Returns:'), ' ', element('code', info.returnType));
|
|
35
|
+
dom.appendChild(returns);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
appendDescribedList(dom, 'Returns', info.returnValues);
|
|
40
|
+
}
|
|
41
|
+
return dom;
|
|
42
|
+
}
|
|
43
|
+
function element(tag, text) {
|
|
44
|
+
const created = document.createElement(tag);
|
|
45
|
+
created.textContent = text;
|
|
46
|
+
return created;
|
|
47
|
+
}
|
|
48
|
+
function codeBlock(code, kind, highlightHoverCode) {
|
|
49
|
+
const pre = document.createElement('pre');
|
|
50
|
+
const codeElement = document.createElement('code');
|
|
51
|
+
if (kind && highlightHoverCode) {
|
|
52
|
+
highlightHoverCode(code, kind, codeElement);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
codeElement.textContent = code;
|
|
56
|
+
}
|
|
57
|
+
pre.appendChild(codeElement);
|
|
58
|
+
return pre;
|
|
59
|
+
}
|
|
60
|
+
function appendDescribedList(dom, heading, descriptions) {
|
|
61
|
+
if (descriptions.length === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const headingParagraph = document.createElement('p');
|
|
65
|
+
headingParagraph.appendChild(element('strong', heading));
|
|
66
|
+
dom.appendChild(headingParagraph);
|
|
67
|
+
const list = document.createElement('ul');
|
|
68
|
+
descriptions.forEach(({ name, description }) => {
|
|
69
|
+
const item = document.createElement('li');
|
|
70
|
+
item.append(element('code', name), ' -');
|
|
71
|
+
// Map-style descriptions (often configs) are laid out over several lines
|
|
72
|
+
const trimmed = description.trimEnd();
|
|
73
|
+
if (trimmed.includes('\n')) {
|
|
74
|
+
item.appendChild(codeBlock(trimmed, undefined));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
item.append(' ');
|
|
78
|
+
renderInline(item, description);
|
|
79
|
+
}
|
|
80
|
+
list.appendChild(item);
|
|
81
|
+
});
|
|
82
|
+
dom.appendChild(list);
|
|
83
|
+
}
|
|
84
|
+
/* A schema description is prose that can bring paragraphs and * bullet lists.
|
|
85
|
+
`lead` goes in front of its first paragraph. */
|
|
86
|
+
function renderDescription(dom, description, lead) {
|
|
87
|
+
const lines = description.split('\n');
|
|
88
|
+
let paragraph = [];
|
|
89
|
+
const flushParagraph = () => {
|
|
90
|
+
if (paragraph.length === 0 && lead.length === 0)
|
|
91
|
+
return;
|
|
92
|
+
const p = document.createElement('p');
|
|
93
|
+
p.append(...lead.splice(0));
|
|
94
|
+
renderInline(p, paragraph.join('\n'));
|
|
95
|
+
dom.appendChild(p);
|
|
96
|
+
paragraph = [];
|
|
97
|
+
};
|
|
98
|
+
let i = 0;
|
|
99
|
+
while (i < lines.length) {
|
|
100
|
+
if (lines[i].startsWith(bullet)) {
|
|
101
|
+
flushParagraph();
|
|
102
|
+
const list = document.createElement('ul');
|
|
103
|
+
while (i < lines.length && lines[i].startsWith(bullet)) {
|
|
104
|
+
const item = document.createElement('li');
|
|
105
|
+
renderInline(item, lines[i].slice(bullet.length));
|
|
106
|
+
list.appendChild(item);
|
|
107
|
+
i++;
|
|
108
|
+
}
|
|
109
|
+
dom.appendChild(list);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (lines[i].trim() === '') {
|
|
113
|
+
if (paragraph.length > 0)
|
|
114
|
+
flushParagraph();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
paragraph.push(lines[i]);
|
|
118
|
+
}
|
|
119
|
+
i++;
|
|
120
|
+
}
|
|
121
|
+
flushParagraph();
|
|
122
|
+
}
|
|
123
|
+
/* Code spans and italics, the markup descriptions write. Underscores only
|
|
124
|
+
count as emphasis outside a word, so that descriptions listing values like
|
|
125
|
+
'DEFAULT_PATH_LEAF_TO_NULL' keep them - the same rule CommonMark
|
|
126
|
+
(https://spec.commonmark.org/0.31.2/#example-374) follows. */
|
|
127
|
+
const inlineMarkup = /`([^`]+)`|(?<!\w)_([^_\n]+)_(?!\w)/g;
|
|
128
|
+
function renderInline(target, text) {
|
|
129
|
+
let lastEnd = 0;
|
|
130
|
+
for (const match of text.matchAll(inlineMarkup)) {
|
|
131
|
+
const [matched, code, italic] = match;
|
|
132
|
+
if (match.index > lastEnd) {
|
|
133
|
+
target.append(text.slice(lastEnd, match.index));
|
|
134
|
+
}
|
|
135
|
+
target.appendChild(code !== undefined ? element('code', code.trim()) : element('em', italic));
|
|
136
|
+
lastEnd = match.index + matched.length;
|
|
137
|
+
}
|
|
138
|
+
if (lastEnd < text.length) {
|
|
139
|
+
target.append(text.slice(lastEnd));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=hoverRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hoverRender.js","sourceRoot":"","sources":["../../../../src/lang-cypher/hover/hoverRender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { CypherLanguageService, testData, } from '@neo4j-cypher/language-support';
|
|
3
|
+
import { describe, expect, test } from 'vitest';
|
|
4
|
+
import { renderHoverInfo } from './hoverRender';
|
|
5
|
+
function methodHover(query) {
|
|
6
|
+
const languageService = new CypherLanguageService();
|
|
7
|
+
return languageService.hoverInfo(query, {
|
|
8
|
+
caretPosition: query.indexOf('(') - 1,
|
|
9
|
+
dbSchema: testData.mockSchema,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function renderMethodHover(query) {
|
|
13
|
+
return renderHoverInfo(methodHover(query));
|
|
14
|
+
}
|
|
15
|
+
describe('hover info html rendering', () => {
|
|
16
|
+
function highlightedFragments(info) {
|
|
17
|
+
const seen = [];
|
|
18
|
+
renderHoverInfo(info, (code, kind, target) => {
|
|
19
|
+
seen.push([code, kind]);
|
|
20
|
+
target.textContent = code;
|
|
21
|
+
});
|
|
22
|
+
return seen;
|
|
23
|
+
}
|
|
24
|
+
test('passes the fragment kind of each cypher block to the highlighter', () => {
|
|
25
|
+
expect(highlightedFragments({
|
|
26
|
+
kind: 'variable',
|
|
27
|
+
variable: 'n',
|
|
28
|
+
types: ['Node'],
|
|
29
|
+
labelExpression: '(Person | Pet)',
|
|
30
|
+
})).toEqual([['(Person | Pet)', 'labelExpression']]);
|
|
31
|
+
expect(highlightedFragments(methodHover('RETURN abs(1)'))).toEqual([
|
|
32
|
+
['abs(input :: INTEGER | FLOAT) :: INTEGER | FLOAT', 'function'],
|
|
33
|
+
]);
|
|
34
|
+
expect(highlightedFragments(methodHover('CALL db.labels()'))).toEqual([
|
|
35
|
+
['db.labels() :: (label :: STRING)', 'procedure'],
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
test('renders a variable hover', () => {
|
|
39
|
+
expect(renderHoverInfo({
|
|
40
|
+
kind: 'variable',
|
|
41
|
+
variable: 'n',
|
|
42
|
+
types: ['Node'],
|
|
43
|
+
labelExpression: '(Person | Pet)',
|
|
44
|
+
}).innerHTML).toBe('<p><code>n: Node</code></p><pre><code>(Person | Pet)</code></pre>');
|
|
45
|
+
expect(renderHoverInfo({ kind: 'variable', variable: 'x', types: ['Integer'] })
|
|
46
|
+
.innerHTML).toBe('<p><code>x: Integer</code></p>');
|
|
47
|
+
});
|
|
48
|
+
test('renders a function hover', () => {
|
|
49
|
+
expect(renderMethodHover('RETURN toFloat(1)').innerHTML).toBe([
|
|
50
|
+
'<pre><code>toFloat(input :: STRING | INTEGER | FLOAT) :: FLOAT</code></pre>',
|
|
51
|
+
'<p>Converts a <code>STRING</code>, <code>INTEGER</code> or <code>FLOAT</code> value to a <code>FLOAT</code> value.</p>',
|
|
52
|
+
'<p><strong>Parameters</strong></p>',
|
|
53
|
+
'<ul><li><code>input</code> - A value to be converted into a float.</li></ul>',
|
|
54
|
+
'<p><strong>Returns:</strong> <code>FLOAT</code></p>',
|
|
55
|
+
].join(''));
|
|
56
|
+
});
|
|
57
|
+
test('renders a procedure hover', () => {
|
|
58
|
+
expect(renderMethodHover('CALL db.labels()').innerHTML).toBe([
|
|
59
|
+
'<pre><code>db.labels() :: (label :: STRING)</code></pre>',
|
|
60
|
+
"<p>List all labels attached to nodes within a database according to the user's access rights. The procedure returns empty results if the user is not authorized to view those labels.</p>",
|
|
61
|
+
'<p><strong>Returns</strong></p>',
|
|
62
|
+
'<ul><li><code>label</code> - A label within the database.</li></ul>',
|
|
63
|
+
].join(''));
|
|
64
|
+
});
|
|
65
|
+
test('italicises the deprecation marker of a deprecated method', () => {
|
|
66
|
+
expect(renderMethodHover('CYPHER 5 RETURN apoc.create.uuid()').innerHTML).toContain('<p>(<em>deprecated</em>) Returns a UUID.</p>');
|
|
67
|
+
});
|
|
68
|
+
// The wildcards of dbms.queryJmx' descriptions are shown as written, both
|
|
69
|
+
// in prose and inside a code span
|
|
70
|
+
test('renders the wildcards of a procedure description', () => {
|
|
71
|
+
const html = renderMethodHover('CALL dbms.queryJmx()').innerHTML;
|
|
72
|
+
expect(html).toContain('<p>Query JMX management data by domain and name. For instance, use <code>*:*</code> to find all JMX beans.</p>');
|
|
73
|
+
expect(html).toContain("<li><code>query</code> - A query for MBeans on this MBeanServer (e.g. '*:*,name=*neo4j*' for all metrics in neo4j database).</li>");
|
|
74
|
+
});
|
|
75
|
+
test('renders the paragraphs, bullet list and italics of a procedure description', () => {
|
|
76
|
+
const html = renderMethodHover('CALL db.index.fulltext.queryNodes()').innerHTML;
|
|
77
|
+
expect(html).toContain('Valid <em>key: value</em> pairs');
|
|
78
|
+
expect(html).toContain([
|
|
79
|
+
'<ul>',
|
|
80
|
+
"<li>'skip' -- to skip the top N results.</li>",
|
|
81
|
+
"<li>'limit' -- to limit the number of results returned.</li>",
|
|
82
|
+
"<li>'analyzer' -- to use the specified analyzer as a search analyzer for this query.</li>",
|
|
83
|
+
'</ul>',
|
|
84
|
+
'<p>The <code>options</code> map and any of the keys are optional.',
|
|
85
|
+
].join(''));
|
|
86
|
+
});
|
|
87
|
+
test('renders a parameter that carries its own layout as a code block', () => {
|
|
88
|
+
expect(renderMethodHover('CALL apoc.export.csv.all()').innerHTML).toContain([
|
|
89
|
+
'<ul><li><code>file</code> - The name of the file to which the data will be exported.</li>',
|
|
90
|
+
'<li><code>config</code> -<pre><code>{\n',
|
|
91
|
+
' stream = false :: BOOLEAN,\n',
|
|
92
|
+
].join(''));
|
|
93
|
+
});
|
|
94
|
+
// Schema descriptions list values such as 'AS_PATH_LIST', which must not
|
|
95
|
+
// turn into emphasis
|
|
96
|
+
test('leaves the underscores inside words alone', () => {
|
|
97
|
+
const description = "JSON path options: ('ALWAYS_RETURN_LIST', 'AS_PATH_LIST', 'DEFAULT_PATH_LEAF_TO_NULL').";
|
|
98
|
+
const dom = renderHoverInfo({
|
|
99
|
+
kind: 'function',
|
|
100
|
+
signature: 'f(pathOptions :: LIST<STRING>) :: ANY',
|
|
101
|
+
description: '',
|
|
102
|
+
isDeprecated: false,
|
|
103
|
+
parameters: [{ name: 'pathOptions', description }],
|
|
104
|
+
returnType: 'ANY',
|
|
105
|
+
});
|
|
106
|
+
expect(dom.querySelector('em')).toBeNull();
|
|
107
|
+
expect(dom.querySelector('li').textContent).toBe(`pathOptions - ${description}`);
|
|
108
|
+
});
|
|
109
|
+
test('never renders descriptions as html', () => {
|
|
110
|
+
const dom = renderHoverInfo({
|
|
111
|
+
kind: 'procedure',
|
|
112
|
+
signature: 'p()',
|
|
113
|
+
description: '<img src=x onerror=alert(1)>',
|
|
114
|
+
isDeprecated: false,
|
|
115
|
+
parameters: [],
|
|
116
|
+
returnValues: [{ name: 'r', description: '<b>bold</b>' }],
|
|
117
|
+
});
|
|
118
|
+
expect(dom.querySelector('img')).toBeNull();
|
|
119
|
+
expect(dom.querySelector('b')).toBeNull();
|
|
120
|
+
expect(dom.textContent).toContain('<img src=x onerror=alert(1)>');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=hoverRender.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hoverRender.test.js","sourceRoot":"","sources":["../../../../src/lang-cypher/hover/hoverRender.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LanguageSupport } from '@codemirror/language';
|
|
2
|
-
import { CypherLanguageService
|
|
2
|
+
import type { CypherLanguageService } from '@neo4j-cypher/language-support';
|
|
3
|
+
import { type DbSchema } from '@neo4j-cypher/language-support';
|
|
3
4
|
export type CypherConfig = {
|
|
4
5
|
languageService: CypherLanguageService;
|
|
5
6
|
lint?: boolean;
|
|
@@ -4,6 +4,8 @@ import { completionStyles, cypherAutocomplete } from './autocomplete';
|
|
|
4
4
|
import { ParserAdapter } from './parser-adapter';
|
|
5
5
|
import { signatureHelpTooltip } from './signatureHelp';
|
|
6
6
|
import { cypherLinter } from './syntaxValidation';
|
|
7
|
+
import { hoverTooltip } from '@codemirror/view';
|
|
8
|
+
import { getHoverSource } from './hover/hover.js';
|
|
7
9
|
const facet = defineLanguageFacet({
|
|
8
10
|
commentTokens: { block: { open: '/*', close: '*/' }, line: '//' },
|
|
9
11
|
closeBrackets: { brackets: ['(', '[', '{', "'", '"', '`'] },
|
|
@@ -18,6 +20,7 @@ export function cypher(config) {
|
|
|
18
20
|
}),
|
|
19
21
|
cypherLinter(config),
|
|
20
22
|
signatureHelpTooltip(config),
|
|
23
|
+
hoverTooltip(getHoverSource(config)),
|
|
21
24
|
]);
|
|
22
25
|
}
|
|
23
26
|
//# sourceMappingURL=langCypher.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAG9B,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,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,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,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,oBAAoB,CAAC,MAAM,CAAC;QAC5B,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC,CAAC;AACL,CAAC"}
|