@mongodb-js/compass-editor 0.6.0 → 0.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.
Files changed (65) hide show
  1. package/dist/ace/aggregation-autocompleter.d.ts +1 -1
  2. package/dist/ace/aggregation-autocompleter.d.ts.map +1 -1
  3. package/dist/ace/aggregation-autocompleter.js +7 -6
  4. package/dist/ace/aggregation-autocompleter.js.map +1 -1
  5. package/dist/actions.d.ts +11 -0
  6. package/dist/actions.d.ts.map +1 -0
  7. package/dist/actions.js +90 -0
  8. package/dist/actions.js.map +1 -0
  9. package/dist/autocompleter.d.ts +10 -7
  10. package/dist/autocompleter.d.ts.map +1 -1
  11. package/dist/autocompleter.js +28 -8
  12. package/dist/autocompleter.js.map +1 -1
  13. package/dist/base-editor.d.ts +1 -1
  14. package/dist/base-editor.d.ts.map +1 -1
  15. package/dist/codemirror/ace-compat-autocompleter.d.ts +26 -0
  16. package/dist/codemirror/ace-compat-autocompleter.d.ts.map +1 -0
  17. package/dist/codemirror/ace-compat-autocompleter.js +67 -0
  18. package/dist/codemirror/ace-compat-autocompleter.js.map +1 -0
  19. package/dist/codemirror/aggregation-autocompleter.d.ts +3 -0
  20. package/dist/codemirror/aggregation-autocompleter.d.ts.map +1 -0
  21. package/dist/codemirror/aggregation-autocompleter.js +58 -0
  22. package/dist/codemirror/aggregation-autocompleter.js.map +1 -0
  23. package/dist/codemirror/document-autocompleter.d.ts +3 -0
  24. package/dist/codemirror/document-autocompleter.d.ts.map +1 -0
  25. package/dist/codemirror/document-autocompleter.js +50 -0
  26. package/dist/codemirror/document-autocompleter.js.map +1 -0
  27. package/dist/codemirror/query-autocompleter.d.ts +4 -0
  28. package/dist/codemirror/query-autocompleter.d.ts.map +1 -0
  29. package/dist/codemirror/query-autocompleter.js +22 -0
  30. package/dist/codemirror/query-autocompleter.js.map +1 -0
  31. package/dist/codemirror/stage-autocompleter.d.ts +6 -0
  32. package/dist/codemirror/stage-autocompleter.d.ts.map +1 -0
  33. package/dist/codemirror/stage-autocompleter.js +58 -0
  34. package/dist/codemirror/stage-autocompleter.js.map +1 -0
  35. package/dist/codemirror/utils.d.ts +14 -0
  36. package/dist/codemirror/utils.d.ts.map +1 -0
  37. package/dist/codemirror/utils.js +80 -0
  38. package/dist/codemirror/utils.js.map +1 -0
  39. package/dist/codemirror/validation-autocompleter.d.ts +4 -0
  40. package/dist/codemirror/validation-autocompleter.d.ts.map +1 -0
  41. package/dist/codemirror/validation-autocompleter.js +123 -0
  42. package/dist/codemirror/validation-autocompleter.js.map +1 -0
  43. package/dist/index.d.ts +9 -4
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +13 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/inline-editor.d.ts +1 -1
  48. package/dist/inline-editor.d.ts.map +1 -1
  49. package/dist/json-editor.d.ts +51 -16
  50. package/dist/json-editor.d.ts.map +1 -1
  51. package/dist/json-editor.js +373 -50
  52. package/dist/json-editor.js.map +1 -1
  53. package/dist/multiline-editor.d.ts +2 -2
  54. package/dist/multiline-editor.d.ts.map +1 -1
  55. package/dist/multiline-editor.js +4 -60
  56. package/dist/multiline-editor.js.map +1 -1
  57. package/dist/prettify.d.ts +1 -1
  58. package/dist/prettify.d.ts.map +1 -1
  59. package/dist/syntax-highlight.d.ts +2 -2
  60. package/dist/syntax-highlight.d.ts.map +1 -1
  61. package/dist/syntax-highlight.js +2 -2
  62. package/dist/syntax-highlight.js.map +1 -1
  63. package/dist/types.d.ts +3 -2
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +9 -9
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createQueryAutocompleter = void 0;
4
+ const autocompleter_1 = require("../autocompleter");
5
+ const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
6
+ const utils_1 = require("./utils");
7
+ const createQueryAutocompleter = (options = {}) => {
8
+ const completions = (0, autocompleter_1.completer)('', {
9
+ meta: ['query', 'bson', 'field:identifier'],
10
+ ...options,
11
+ });
12
+ return (0, ace_compat_autocompleter_1.createAceCompatAutocompleter)({
13
+ String({ context }) {
14
+ return (0, utils_1.completeWordsInString)(context);
15
+ },
16
+ IdentifierLike({ prefix }) {
17
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({ prefix, completions });
18
+ },
19
+ });
20
+ };
21
+ exports.createQueryAutocompleter = createQueryAutocompleter;
22
+ //# sourceMappingURL=query-autocompleter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAgD;AAMzC,MAAM,wBAAwB,GAAG,CACtC,UAA6D,EAAE,EAC7C,EAAE;IACpB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;QAC3C,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,OAAO,EAAE;YAChB,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE;YACvB,OAAO,IAAA,4DAAiC,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,wBAAwB,4BAgBnC"}
@@ -0,0 +1,6 @@
1
+ import type { CompletionSource } from '@codemirror/autocomplete';
2
+ import type { CompleteOptions } from '../autocompleter';
3
+ export declare const createStageAutocompleter: ({ stageOperator, ...options }?: Pick<CompleteOptions, "serverVersion" | "fields"> & {
4
+ stageOperator?: string | undefined;
5
+ }) => CompletionSource;
6
+ //# sourceMappingURL=stage-autocompleter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/stage-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASxD,eAAO,MAAM,wBAAwB;;MAK5B,gBAqDR,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStageAutocompleter = void 0;
4
+ const autocompleter_1 = require("../autocompleter");
5
+ const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
6
+ const utils_1 = require("./utils");
7
+ const query_autocompleter_1 = require("./query-autocompleter");
8
+ const createStageAutocompleter = ({ stageOperator, ...options } = {}) => {
9
+ const queryAutocompleter = (0, query_autocompleter_1.createQueryAutocompleter)(options);
10
+ const fieldsReferenceCompletions = (0, autocompleter_1.completer)('', {
11
+ ...options,
12
+ meta: ['field:reference'],
13
+ });
14
+ const stageCompletions = (0, autocompleter_1.completer)('', {
15
+ ...options,
16
+ meta: [
17
+ 'expr:*',
18
+ 'conv',
19
+ 'bson',
20
+ 'field:identifier',
21
+ ...(['$project', '$group'].includes(stageOperator !== null && stageOperator !== void 0 ? stageOperator : '')
22
+ ? ['accumulator', 'accumulator:*']
23
+ : []),
24
+ ],
25
+ }).map((completion) => {
26
+ var _a;
27
+ if ((_a = completion.meta) === null || _a === void 0 ? void 0 : _a.startsWith('expr:')) {
28
+ return {
29
+ ...completion,
30
+ description: `<p>${(0, utils_1.aggLink)(completion.value)} pipeline operator</p>`,
31
+ };
32
+ }
33
+ return completion;
34
+ });
35
+ return (0, ace_compat_autocompleter_1.createAceCompatAutocompleter)({
36
+ String({ prefix, context }) {
37
+ if (prefix.text.startsWith('$')) {
38
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
39
+ prefix,
40
+ completions: fieldsReferenceCompletions,
41
+ escape: 'never',
42
+ });
43
+ }
44
+ return (0, utils_1.completeWordsInString)(context);
45
+ },
46
+ IdentifierLike({ prefix, context }) {
47
+ if (stageOperator === '$match') {
48
+ return queryAutocompleter(context);
49
+ }
50
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
51
+ prefix,
52
+ completions: stageCompletions,
53
+ });
54
+ },
55
+ });
56
+ };
57
+ exports.createStageAutocompleter = createStageAutocompleter;
58
+ //# sourceMappingURL=stage-autocompleter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/stage-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAyD;AACzD,+DAAiE;AAE1D,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,EACb,GAAG,OAAO,KAGR,EAAE,EAAoB,EAAE;IAC1B,MAAM,kBAAkB,GAAG,IAAA,8CAAwB,EAAC,OAAO,CAAC,CAAC;IAE7D,MAAM,0BAA0B,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAC/C,GAAG,OAAO;QACV,IAAI,EAAE,CAAC,iBAAiB,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QACrC,GAAG,OAAO;QACV,IAAI,EAAE;YACJ,QAAQ;YACR,MAAM;YACN,MAAM;YACN,kBAAkB;YAClB,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC;gBACtD,CAAC,CAAE,CAAC,aAAa,EAAE,eAAe,CAAW;gBAC7C,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;;QACpB,IAAI,MAAA,UAAU,CAAC,IAAI,0CAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO;gBACL,GAAG,UAAU;gBACb,WAAW,EAAE,MAAM,IAAA,eAAO,EAAC,UAAU,CAAC,KAAK,CAAC,wBAAwB;aACrE,CAAC;SACH;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YACxB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,IAAA,4DAAiC,EAAC;oBACvC,MAAM;oBACN,WAAW,EAAE,0BAA0B;oBAEvC,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;aACJ;YAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YAChC,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;aACpC;YACD,OAAO,IAAA,4DAAiC,EAAC;gBACvC,MAAM;gBACN,WAAW,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AA1DW,QAAA,wBAAwB,4BA0DnC"}
@@ -0,0 +1,14 @@
1
+ import type { CompletionContext } from '@codemirror/autocomplete';
2
+ import type { EditorState } from '@codemirror/state';
3
+ export declare const completeWordsInString: import("@codemirror/autocomplete").CompletionSource;
4
+ export declare function resolveTokenAtCursor(context: CompletionContext): import("@lezer/common").SyntaxNode;
5
+ export type Token = ReturnType<typeof resolveTokenAtCursor>;
6
+ export declare function aggLink(op: string): string;
7
+ export declare function padLines(str: string, pad?: string): string;
8
+ export declare function parents(token: Token): Generator<import("@lezer/common").SyntaxNode, void, unknown>;
9
+ export declare function removeQuotes(str: string): string;
10
+ export declare function isTokenEqual(a: Token, b: Token): boolean;
11
+ export declare function getPropertyNameFromPropertyToken(editorState: EditorState, propertyToken: Token): string;
12
+ export declare function getTokenText(editorState: EditorState, token: Token): string;
13
+ export declare function getAncestryOfToken(token: Token, document: string): string[];
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,qBAAqB,qDAAoC,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,sCAE9D;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5D,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG1C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAO,UAK/C;AAED,wBAAiB,OAAO,CAAC,KAAK,EAAE,KAAK,gEAKpC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAE9C;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,KAAK,GACnB,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,UAElE;AA0CD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3E"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAncestryOfToken = exports.getTokenText = exports.getPropertyNameFromPropertyToken = exports.isTokenEqual = exports.removeQuotes = exports.parents = exports.padLines = exports.aggLink = exports.resolveTokenAtCursor = exports.completeWordsInString = void 0;
4
+ const autocomplete_1 = require("@codemirror/autocomplete");
5
+ const language_1 = require("@codemirror/language");
6
+ exports.completeWordsInString = (0, autocomplete_1.ifIn)(['String'], autocomplete_1.completeAnyWord);
7
+ function resolveTokenAtCursor(context) {
8
+ return (0, language_1.syntaxTree)(context.state).resolveInner(context.pos, -1);
9
+ }
10
+ exports.resolveTokenAtCursor = resolveTokenAtCursor;
11
+ function aggLink(op) {
12
+ op = op.replace(/^\$/, '');
13
+ return `<a target="_blank" href="https://www.mongodb.com/docs/manual/reference/operator/aggregation/${op}/">$${op}</a>`;
14
+ }
15
+ exports.aggLink = aggLink;
16
+ function padLines(str, pad = ' ') {
17
+ return str
18
+ .split('\n')
19
+ .map((line) => `${pad}${line}`)
20
+ .join('\n');
21
+ }
22
+ exports.padLines = padLines;
23
+ function* parents(token) {
24
+ let parent = token;
25
+ while ((parent = parent.parent)) {
26
+ yield parent;
27
+ }
28
+ }
29
+ exports.parents = parents;
30
+ function removeQuotes(str) {
31
+ return str.replace(/(^('|")|('|")$)/g, '');
32
+ }
33
+ exports.removeQuotes = removeQuotes;
34
+ function isTokenEqual(a, b) {
35
+ return a.from === b.from && a.to === b.to;
36
+ }
37
+ exports.isTokenEqual = isTokenEqual;
38
+ function getPropertyNameFromPropertyToken(editorState, propertyToken) {
39
+ if (!propertyToken.firstChild) {
40
+ return '';
41
+ }
42
+ return removeQuotes(getTokenText(editorState, propertyToken.firstChild));
43
+ }
44
+ exports.getPropertyNameFromPropertyToken = getPropertyNameFromPropertyToken;
45
+ function getTokenText(editorState, token) {
46
+ return editorState.sliceDoc(token.from, token.to);
47
+ }
48
+ exports.getTokenText = getTokenText;
49
+ const getAncestorList = (node, doc) => {
50
+ const ancestors = [];
51
+ if (!(node === null || node === void 0 ? void 0 : node.parent)) {
52
+ return ancestors;
53
+ }
54
+ if (['ArrayExpression', 'Array'].includes(node.parent.name)) {
55
+ let prevSibling = node.prevSibling;
56
+ let index = 0;
57
+ while (prevSibling) {
58
+ if (![':', ',', '['].includes(prevSibling.name)) {
59
+ index++;
60
+ }
61
+ prevSibling = prevSibling.prevSibling;
62
+ }
63
+ ancestors.push(`[${index}]`);
64
+ }
65
+ if (node.name === 'Property' && node.firstChild) {
66
+ const { from, to } = node.firstChild;
67
+ const ancestor = doc.slice(from, to).replace(/"/g, '').replace(/'/g, '');
68
+ ancestors.push(ancestor);
69
+ }
70
+ return ancestors.concat(getAncestorList(node.parent, doc));
71
+ };
72
+ function getAncestryOfToken(token, document) {
73
+ var _a, _b, _c;
74
+ const isAutocompletingPropertyName = ['ObjectExpression', 'PropertyDefinition'].includes(token.name) ||
75
+ (((_b = (_a = token.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.name) === 'ObjectExpression' && !token.prevSibling);
76
+ const list = getAncestorList(isAutocompletingPropertyName ? (_c = token.parent) === null || _c === void 0 ? void 0 : _c.parent : token, document).reverse();
77
+ return list;
78
+ }
79
+ exports.getAncestryOfToken = getAncestryOfToken;
80
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CompletionSource } from '@codemirror/autocomplete';
2
+ import type { CompleteOptions } from '../autocompleter';
3
+ export declare const createValidationAutocompleter: (options?: Pick<CompleteOptions, 'fields' | 'serverVersion'>) => CompletionSource;
4
+ //# sourceMappingURL=validation-autocompleter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/validation-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6F1E,eAAO,MAAM,6BAA6B,aAC/B,KAAK,eAAe,EAAE,QAAQ,GAAG,eAAe,CAAC,KACzD,gBAqEF,CAAC"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createValidationAutocompleter = void 0;
4
+ const autocomplete_1 = require("@codemirror/autocomplete");
5
+ const autocompleter_1 = require("../autocompleter");
6
+ const utils_1 = require("./utils");
7
+ const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
8
+ const query_autocompleter_1 = require("./query-autocompleter");
9
+ const rootJsonSchemaCompletion = (from, to) => ({
10
+ filter: false,
11
+ from,
12
+ to,
13
+ options: [
14
+ (0, autocomplete_1.snippetCompletion)('{\n\t$jsonSchema: {\n\t\t${}\n\t}\n}', {
15
+ label: '$jsonSchema',
16
+ info: 'json-schema validation object',
17
+ }),
18
+ ],
19
+ });
20
+ const isCompletingRequired = (ancestors) => {
21
+ return ancestors[ancestors.length - 2] === 'required';
22
+ };
23
+ const isCompletingProperties = (ancestors) => {
24
+ return ancestors[ancestors.length - 1] === 'properties';
25
+ };
26
+ const isCompletingBsonType = (ancestors) => {
27
+ var _a;
28
+ const immediateParent = (_a = ancestors[ancestors.length - 1]) !== null && _a !== void 0 ? _a : '';
29
+ return (immediateParent === 'bsonType' ||
30
+ ancestors[ancestors.length - 2] === 'bsonType');
31
+ };
32
+ const isCompletingQueryOperator = (ancestors, operators) => {
33
+ return ancestors
34
+ .filter((x) => x !== '$jsonSchema')
35
+ .some((x) => operators.includes(x));
36
+ };
37
+ const getNestingAncestor = (ancestors) => {
38
+ return (ancestors
39
+ .filter((x) => !['$jsonSchema'].includes(x))
40
+ .map((x, i, a) => {
41
+ if (['required', 'properties'].includes(x)) {
42
+ return a[i - 1];
43
+ }
44
+ })
45
+ .filter(Boolean)
46
+ .join('.'));
47
+ };
48
+ const filterFieldsByAncestor = (fields, ancestor) => {
49
+ if (ancestor === '') {
50
+ return fields;
51
+ }
52
+ return fields
53
+ .filter((x) => x.value !== ancestor && x.value.startsWith(ancestor))
54
+ .map((x) => {
55
+ const value = x.value.replace(`${ancestor}.`, '');
56
+ return {
57
+ ...x,
58
+ value,
59
+ };
60
+ })
61
+ .filter((x) => x.value);
62
+ };
63
+ const createValidationAutocompleter = (options = {}) => {
64
+ const defaultCompletions = (0, autocompleter_1.completer)('', {
65
+ meta: ['json-schema', 'bson', 'query'],
66
+ ...options,
67
+ });
68
+ const fieldCompletions = (0, autocompleter_1.completer)('', {
69
+ meta: ['field:identifier'],
70
+ ...options,
71
+ });
72
+ const bsonTypeCompletions = (0, autocompleter_1.completer)('', {
73
+ meta: ['bson-type-aliases'],
74
+ ...options,
75
+ });
76
+ const queryAutocompleter = (0, query_autocompleter_1.createQueryAutocompleter)(options);
77
+ const queryCompletions = (0, autocompleter_1.completer)('', {
78
+ meta: ['query'],
79
+ ...options,
80
+ });
81
+ const queryOperators = queryCompletions.map((x) => x.value);
82
+ return (context) => {
83
+ const token = (0, utils_1.resolveTokenAtCursor)(context);
84
+ const document = context.state.sliceDoc(0);
85
+ const prefix = context.matchBefore(ace_compat_autocompleter_1.ID_REGEX);
86
+ if (token.type.isTop) {
87
+ return rootJsonSchemaCompletion(0, document.length);
88
+ }
89
+ if (!prefix) {
90
+ return null;
91
+ }
92
+ const ancestors = (0, utils_1.getAncestryOfToken)(token, document);
93
+ if (ancestors.length === 0) {
94
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
95
+ prefix,
96
+ completions: queryCompletions,
97
+ });
98
+ }
99
+ if (isCompletingQueryOperator(ancestors, queryOperators)) {
100
+ return queryAutocompleter(context);
101
+ }
102
+ if (isCompletingRequired(ancestors) || isCompletingProperties(ancestors)) {
103
+ const ancestor = getNestingAncestor(ancestors);
104
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
105
+ prefix,
106
+ completions: filterFieldsByAncestor(fieldCompletions, ancestor),
107
+ });
108
+ }
109
+ if (isCompletingBsonType(ancestors)) {
110
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
111
+ prefix,
112
+ completions: bsonTypeCompletions,
113
+ escape: 'always',
114
+ });
115
+ }
116
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
117
+ prefix,
118
+ completions: defaultCompletions,
119
+ });
120
+ };
121
+ };
122
+ exports.createValidationAutocompleter = createValidationAutocompleter;
123
+ //# sourceMappingURL=validation-autocompleter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/validation-autocompleter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,14 +4,19 @@ export { ValidationAutoCompleter } from './ace/validation-autocompleter';
4
4
  export { QueryAutoCompleter } from './ace/query-autocompleter';
5
5
  export { StageAutoCompleter } from './ace/stage-autocompleter';
6
6
  export { AggregationAutoCompleter } from './ace/aggregation-autocompleter';
7
- export declare type AceEditor = Ace.Editor;
8
- export declare type AceAnnotation = Ace.Annotation;
7
+ export type AceEditor = Ace.Editor;
8
+ export type AceAnnotation = Ace.Annotation;
9
9
  export type { CompletionWithServerInfo } from './types';
10
10
  export { InlineEditor } from './inline-editor';
11
11
  export { prettify } from './prettify';
12
12
  export type { FormatOptions } from './prettify';
13
13
  export { Editor } from './multiline-editor';
14
- export { JSONEditor } from './json-editor';
15
- export type { EditorView } from './json-editor';
14
+ export { CodemirrorInlineEditor, CodemirrorMultilineEditor, } from './json-editor';
15
+ export type { EditorView, Command, Annotation, Action, EditorRef, } from './json-editor';
16
16
  export { SyntaxHighlight } from './syntax-highlight';
17
+ export { createDocumentAutocompleter } from './codemirror/document-autocompleter';
18
+ export { createValidationAutocompleter } from './codemirror/validation-autocompleter';
19
+ export { createQueryAutocompleter } from './codemirror/query-autocompleter';
20
+ export { createStageAutocompleter } from './codemirror/stage-autocompleter';
21
+ export { createAggregationAutocompleter } from './codemirror/aggregation-autocompleter';
17
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,oBAAY,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC,oBAAY,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SyntaxHighlight = exports.JSONEditor = exports.Editor = exports.prettify = exports.InlineEditor = exports.AggregationAutoCompleter = exports.StageAutoCompleter = exports.QueryAutoCompleter = exports.ValidationAutoCompleter = void 0;
17
+ exports.createAggregationAutocompleter = exports.createStageAutocompleter = exports.createQueryAutocompleter = exports.createValidationAutocompleter = exports.createDocumentAutocompleter = exports.SyntaxHighlight = exports.CodemirrorMultilineEditor = exports.CodemirrorInlineEditor = exports.Editor = exports.prettify = exports.InlineEditor = exports.AggregationAutoCompleter = exports.StageAutoCompleter = exports.QueryAutoCompleter = exports.ValidationAutoCompleter = void 0;
18
18
  __exportStar(require("./base-editor"), exports);
19
19
  var validation_autocompleter_1 = require("./ace/validation-autocompleter");
20
20
  Object.defineProperty(exports, "ValidationAutoCompleter", { enumerable: true, get: function () { return validation_autocompleter_1.ValidationAutoCompleter; } });
@@ -31,7 +31,18 @@ Object.defineProperty(exports, "prettify", { enumerable: true, get: function ()
31
31
  var multiline_editor_1 = require("./multiline-editor");
32
32
  Object.defineProperty(exports, "Editor", { enumerable: true, get: function () { return multiline_editor_1.Editor; } });
33
33
  var json_editor_1 = require("./json-editor");
34
- Object.defineProperty(exports, "JSONEditor", { enumerable: true, get: function () { return json_editor_1.JSONEditor; } });
34
+ Object.defineProperty(exports, "CodemirrorInlineEditor", { enumerable: true, get: function () { return json_editor_1.CodemirrorInlineEditor; } });
35
+ Object.defineProperty(exports, "CodemirrorMultilineEditor", { enumerable: true, get: function () { return json_editor_1.CodemirrorMultilineEditor; } });
35
36
  var syntax_highlight_1 = require("./syntax-highlight");
36
37
  Object.defineProperty(exports, "SyntaxHighlight", { enumerable: true, get: function () { return syntax_highlight_1.SyntaxHighlight; } });
38
+ var document_autocompleter_1 = require("./codemirror/document-autocompleter");
39
+ Object.defineProperty(exports, "createDocumentAutocompleter", { enumerable: true, get: function () { return document_autocompleter_1.createDocumentAutocompleter; } });
40
+ var validation_autocompleter_2 = require("./codemirror/validation-autocompleter");
41
+ Object.defineProperty(exports, "createValidationAutocompleter", { enumerable: true, get: function () { return validation_autocompleter_2.createValidationAutocompleter; } });
42
+ var query_autocompleter_2 = require("./codemirror/query-autocompleter");
43
+ Object.defineProperty(exports, "createQueryAutocompleter", { enumerable: true, get: function () { return query_autocompleter_2.createQueryAutocompleter; } });
44
+ var stage_autocompleter_2 = require("./codemirror/stage-autocompleter");
45
+ Object.defineProperty(exports, "createStageAutocompleter", { enumerable: true, get: function () { return stage_autocompleter_2.createStageAutocompleter; } });
46
+ var aggregation_autocompleter_2 = require("./codemirror/aggregation-autocompleter");
47
+ Object.defineProperty(exports, "createAggregationAutocompleter", { enumerable: true, get: function () { return aggregation_autocompleter_2.createAggregationAutocompleter; } });
37
48
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,gDAA8B;AAC9B,2EAAyE;AAAhE,mIAAA,uBAAuB,OAAA;AAChC,iEAA+D;AAAtD,yHAAA,kBAAkB,OAAA;AAC3B,iEAA+D;AAAtD,yHAAA,kBAAkB,OAAA;AAC3B,6EAA2E;AAAlE,qIAAA,wBAAwB,OAAA;AAIjC,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,uDAA4C;AAAnC,0GAAA,MAAM,OAAA;AACf,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,gDAA8B;AAC9B,2EAAyE;AAAhE,mIAAA,uBAAuB,OAAA;AAChC,iEAA+D;AAAtD,yHAAA,kBAAkB,OAAA;AAC3B,iEAA+D;AAAtD,yHAAA,kBAAkB,OAAA;AAC3B,6EAA2E;AAAlE,qIAAA,wBAAwB,OAAA;AAIjC,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,uDAA4C;AAAnC,0GAAA,MAAM,OAAA;AACf,6CAGuB;AAFrB,qHAAA,sBAAsB,OAAA;AACtB,wHAAA,yBAAyB,OAAA;AAS3B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,8EAAkF;AAAzE,qIAAA,2BAA2B,OAAA;AACpC,kFAAsF;AAA7E,yIAAA,6BAA6B,OAAA;AACtC,wEAA4E;AAAnE,+HAAA,wBAAwB,OAAA;AACjC,wEAA4E;AAAnE,+HAAA,wBAAwB,OAAA;AACjC,oFAAwF;AAA/E,2IAAA,8BAA8B,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { EditorProps } from './base-editor';
3
- declare type InlineEditorProps = Omit<EditorProps, 'options' | 'editorClassName'> & {
3
+ type InlineEditorProps = Omit<EditorProps, 'options' | 'editorClassName'> & {
4
4
  options?: Omit<EditorProps['options'], 'showGutter' | 'highlightActiveLine' | 'highlightGutterLine' | 'minLines'>;
5
5
  };
6
6
  declare const InlineEditor: React.FunctionComponent<InlineEditorProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"inline-editor.d.ts","sourceRoot":"","sources":["../src/inline-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,aAAK,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,iBAAiB,CAAC,GAAG;IAC1E,OAAO,CAAC,EAAE,IAAI,CACZ,WAAW,CAAC,SAAS,CAAC,EACtB,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,UAAU,CAC1E,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAmB5D,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"inline-editor.d.ts","sourceRoot":"","sources":["../src/inline-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,KAAK,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,iBAAiB,CAAC,GAAG;IAC1E,OAAO,CAAC,EAAE,IAAI,CACZ,WAAW,CAAC,SAAS,CAAC,EACtB,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,UAAU,CAC1E,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAmB5D,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1,39 +1,74 @@
1
1
  import React from 'react';
2
- import type { Command } from '@codemirror/view';
2
+ import type { KeyBinding } from '@codemirror/view';
3
3
  import { EditorView } from '@codemirror/view';
4
- import { unfoldAll } from '@codemirror/language';
5
4
  import type { Diagnostic } from '@codemirror/lint';
6
5
  import type { CompletionSource } from '@codemirror/autocomplete';
7
- declare type EditorLanguage = 'json' | 'javascript';
8
- declare type Annotation = Pick<Diagnostic, 'from' | 'to' | 'severity' | 'message'>;
9
- declare type EditorProps = {
6
+ import type { IconGlyph } from '@mongodb-js/compass-components';
7
+ import { Facet } from '@codemirror/state';
8
+ import { LanguageSupport } from '@codemirror/language';
9
+ type EditorLanguage = 'json' | 'javascript';
10
+ export type Annotation = Pick<Diagnostic, 'from' | 'to' | 'severity' | 'message'>;
11
+ type EditorProps = {
10
12
  language?: EditorLanguage;
11
13
  onChangeText?: (text: string, event?: any) => void;
12
14
  onLoad?: (editor: EditorView) => void;
13
15
  darkMode?: boolean;
14
16
  showLineNumbers?: boolean;
15
17
  showFoldGutter?: boolean;
18
+ showAnnotationsGutter?: boolean;
19
+ showScroll?: boolean;
20
+ highlightActiveLine?: boolean;
16
21
  readOnly?: boolean;
17
- className?: string;
18
22
  'data-testid'?: string;
19
23
  annotations?: Annotation[];
20
24
  completer?: CompletionSource;
25
+ minLines?: number;
26
+ maxLines?: number;
27
+ lineHeight?: number;
28
+ placeholder?: string;
29
+ commands?: readonly KeyBinding[];
21
30
  } & ({
22
31
  text: string;
23
32
  initialText?: never;
24
33
  } | {
25
34
  text?: never;
26
35
  initialText: string;
36
+ }) & Pick<React.HTMLProps<HTMLDivElement>, 'id' | 'className' | 'onFocus' | 'onBlur'>;
37
+ export declare const languages: Record<EditorLanguage, () => LanguageSupport>;
38
+ export declare const languageName: Facet<EditorLanguage, readonly EditorLanguage[]>;
39
+ export type EditorRef = {
40
+ foldAll: () => boolean;
41
+ unfoldAll: () => boolean;
42
+ copyAll: () => boolean;
43
+ prettify: () => boolean;
44
+ applySnippet: (template: string) => boolean;
45
+ focus: () => boolean;
46
+ readonly editor: EditorView | null;
47
+ };
48
+ declare const BaseEditor: React.ForwardRefExoticComponent<EditorProps & React.RefAttributes<EditorRef>>;
49
+ export type { EditorView, KeyBinding as Command };
50
+ type InlineEditorProps = Omit<EditorProps, 'text' | 'showLineNumbers' | 'showFoldGutter' | 'showAnnotationsGutter' | 'showScroll' | 'highlightActiveLine' | 'minLines' | 'maxLines' | 'annotations'> & ({
51
+ text: string;
52
+ initialText?: never;
53
+ } | {
54
+ text?: never;
55
+ initialText: string;
27
56
  });
28
- declare const BaseEditor: React.FunctionComponent<EditorProps> & {
29
- foldAll: typeof foldAll;
30
- unfoldAll: typeof unfoldAll;
31
- copyAll: typeof copyAll;
32
- prettify: typeof prettify;
57
+ declare const InlineEditor: React.ForwardRefExoticComponent<InlineEditorProps & React.RefAttributes<EditorRef>>;
58
+ export type Action = {
59
+ icon: IconGlyph;
60
+ label: string;
61
+ action: (editor: EditorView) => boolean | void;
62
+ };
63
+ type MultilineEditorProps = EditorProps & {
64
+ customActions?: Action[];
65
+ copyable?: boolean;
66
+ formattable?: boolean;
67
+ editorClassName?: string;
68
+ actionsClassName?: string;
33
69
  };
34
- declare const foldAll: Command;
35
- declare const copyAll: Command;
36
- declare const prettify: Command;
37
- export type { EditorView };
38
- export { BaseEditor as JSONEditor };
70
+ declare const MultilineEditor: React.ForwardRefExoticComponent<MultilineEditorProps & React.RefAttributes<EditorRef>>;
71
+ export { BaseEditor };
72
+ export { InlineEditor as CodemirrorInlineEditor };
73
+ export { MultilineEditor as CodemirrorMultilineEditor };
39
74
  //# sourceMappingURL=json-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-editor.d.ts","sourceRoot":"","sources":["../src/json-editor.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAML,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAKL,SAAS,EAOV,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAqQjE,aAAK,cAAc,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5C,aAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;AAE3E,aAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACnD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GAAG,CACA;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,GACrC;IAAE,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CACxC,CAAC;AAgEF,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG;IACvD,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,QAAQ,CAAC;CA4O3B,CAAC;AAYF,QAAA,MAAM,OAAO,EAAE,OAgCd,CAAC;AAEF,QAAA,MAAM,OAAO,EAAE,OAGd,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,OA2Bf,CAAC;AAOF,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,OAAO,EAAE,UAAU,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"json-editor.d.ts","sourceRoot":"","sources":["../src/json-editor.tsx"],"names":[],"mappings":"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"}