@finos/legend-lego 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. package/lib/application/DocumentationLink.d.ts +27 -0
  2. package/lib/application/DocumentationLink.d.ts.map +1 -0
  3. package/lib/application/DocumentationLink.js +45 -0
  4. package/lib/application/DocumentationLink.js.map +1 -0
  5. package/lib/application/FuzzySearchAdvancedConfigMenu.d.ts +23 -0
  6. package/lib/application/FuzzySearchAdvancedConfigMenu.d.ts.map +1 -0
  7. package/lib/application/FuzzySearchAdvancedConfigMenu.js +35 -0
  8. package/lib/application/FuzzySearchAdvancedConfigMenu.js.map +1 -0
  9. package/lib/application/TabManager.d.ts +24 -0
  10. package/lib/application/TabManager.d.ts.map +1 -0
  11. package/lib/application/TabManager.js +117 -0
  12. package/lib/application/TabManager.js.map +1 -0
  13. package/lib/application/TabManagerState.d.ts +40 -0
  14. package/lib/application/TabManagerState.d.ts.map +1 -0
  15. package/lib/application/TabManagerState.js +93 -0
  16. package/lib/application/TabManagerState.js.map +1 -0
  17. package/lib/application/index.d.ts +20 -0
  18. package/lib/application/index.d.ts.map +1 -0
  19. package/lib/application/index.js +20 -0
  20. package/lib/application/index.js.map +1 -0
  21. package/lib/code-editor/CodeDiffView.d.ts +35 -0
  22. package/lib/code-editor/CodeDiffView.d.ts.map +1 -0
  23. package/lib/code-editor/CodeDiffView.js +78 -0
  24. package/lib/code-editor/CodeDiffView.js.map +1 -0
  25. package/lib/code-editor/CodeEditor.d.ts +1 -1
  26. package/lib/code-editor/CodeEditor.d.ts.map +1 -1
  27. package/lib/code-editor/CodeEditor.js +5 -3
  28. package/lib/code-editor/CodeEditor.js.map +1 -1
  29. package/lib/code-editor/CodeEditorConfig.d.ts +31 -0
  30. package/lib/code-editor/CodeEditorConfig.d.ts.map +1 -0
  31. package/lib/code-editor/CodeEditorConfig.js +33 -0
  32. package/lib/code-editor/CodeEditorConfig.js.map +1 -0
  33. package/lib/code-editor/CodeEditorUtils.d.ts +2 -0
  34. package/lib/code-editor/CodeEditorUtils.d.ts.map +1 -1
  35. package/lib/code-editor/CodeEditorUtils.js +46 -1
  36. package/lib/code-editor/CodeEditorUtils.js.map +1 -1
  37. package/lib/code-editor/PureLanguageCodeEditorSupport.d.ts +70 -0
  38. package/lib/code-editor/PureLanguageCodeEditorSupport.d.ts.map +1 -0
  39. package/lib/code-editor/PureLanguageCodeEditorSupport.js +237 -0
  40. package/lib/code-editor/PureLanguageCodeEditorSupport.js.map +1 -0
  41. package/lib/code-editor/PureLanguageService.d.ts +42 -0
  42. package/lib/code-editor/PureLanguageService.d.ts.map +1 -0
  43. package/lib/code-editor/PureLanguageService.js +437 -0
  44. package/lib/code-editor/PureLanguageService.js.map +1 -0
  45. package/lib/code-editor/__test-utils__/MockedMonacoEditor.d.ts.map +1 -0
  46. package/lib/code-editor/__test-utils__/MockedMonacoEditor.js.map +1 -0
  47. package/lib/code-editor/__test-utils__/MonacoEditorMockUtils.d.ts.map +1 -0
  48. package/lib/code-editor/{testing → __test-utils__}/MonacoEditorMockUtils.js +1 -1
  49. package/lib/code-editor/__test-utils__/MonacoEditorMockUtils.js.map +1 -0
  50. package/lib/code-editor/__test__.d.ts +17 -0
  51. package/lib/code-editor/__test__.d.ts.map +1 -0
  52. package/lib/code-editor/{testing/index.js → __test__.js} +2 -2
  53. package/lib/code-editor/__test__.js.map +1 -0
  54. package/lib/code-editor/index.d.ts +4 -0
  55. package/lib/code-editor/index.d.ts.map +1 -1
  56. package/lib/code-editor/index.js +4 -0
  57. package/lib/code-editor/index.js.map +1 -1
  58. package/lib/graph-editor/ElementIconUtils.d.ts +18 -0
  59. package/lib/graph-editor/ElementIconUtils.d.ts.map +1 -0
  60. package/lib/graph-editor/ElementIconUtils.js +37 -0
  61. package/lib/graph-editor/ElementIconUtils.js.map +1 -0
  62. package/lib/graph-editor/PackageableElementOption.d.ts +25 -0
  63. package/lib/graph-editor/PackageableElementOption.d.ts.map +1 -0
  64. package/lib/graph-editor/PackageableElementOption.js +46 -0
  65. package/lib/graph-editor/PackageableElementOption.js.map +1 -0
  66. package/lib/graph-editor/index.d.ts +18 -0
  67. package/lib/graph-editor/index.d.ts.map +1 -0
  68. package/lib/graph-editor/index.js +18 -0
  69. package/lib/graph-editor/index.js.map +1 -0
  70. package/lib/index.css +2 -2
  71. package/lib/index.css.map +1 -1
  72. package/package.json +14 -9
  73. package/src/application/DocumentationLink.tsx +82 -0
  74. package/src/application/FuzzySearchAdvancedConfigMenu.tsx +66 -0
  75. package/src/application/TabManager.tsx +285 -0
  76. package/src/application/TabManagerState.ts +124 -0
  77. package/src/application/index.ts +22 -0
  78. package/src/code-editor/CodeDiffView.tsx +128 -0
  79. package/src/code-editor/CodeEditor.tsx +8 -5
  80. package/src/code-editor/CodeEditorConfig.ts +32 -0
  81. package/src/code-editor/CodeEditorUtils.ts +76 -1
  82. package/src/code-editor/PureLanguageCodeEditorSupport.ts +338 -0
  83. package/src/code-editor/PureLanguageService.ts +501 -0
  84. package/src/code-editor/{testing → __test-utils__}/MonacoEditorMockUtils.tsx +1 -1
  85. package/src/code-editor/{testing/index.ts → __test__.ts} +1 -1
  86. package/src/code-editor/index.ts +8 -0
  87. package/src/graph-editor/ElementIconUtils.tsx +47 -0
  88. package/src/graph-editor/PackageableElementOption.tsx +86 -0
  89. package/{lib/code-editor/testing/index.d.ts → src/graph-editor/index.ts} +3 -2
  90. package/tsconfig.json +16 -4
  91. package/lib/code-editor/testing/MockedMonacoEditor.d.ts.map +0 -1
  92. package/lib/code-editor/testing/MockedMonacoEditor.js.map +0 -1
  93. package/lib/code-editor/testing/MonacoEditorMockUtils.d.ts.map +0 -1
  94. package/lib/code-editor/testing/MonacoEditorMockUtils.js.map +0 -1
  95. package/lib/code-editor/testing/index.d.ts.map +0 -1
  96. package/lib/code-editor/testing/index.js.map +0 -1
  97. /package/lib/code-editor/{testing → __test-utils__}/MockedMonacoEditor.d.ts +0 -0
  98. /package/lib/code-editor/{testing → __test-utils__}/MockedMonacoEditor.js +0 -0
  99. /package/lib/code-editor/{testing → __test-utils__}/MonacoEditorMockUtils.d.ts +0 -0
  100. /package/src/code-editor/{testing → __test-utils__}/MockedMonacoEditor.ts +0 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /// <reference types="react" resolution-mode="require"/>
17
+ export declare const DocumentationLink: React.FC<{
18
+ documentationKey: string;
19
+ title?: string | undefined;
20
+ className?: string | undefined;
21
+ }>;
22
+ export declare const DocumentationPreview: React.FC<{
23
+ text?: string | undefined;
24
+ documentationKey: string;
25
+ className?: string | undefined;
26
+ }>;
27
+ //# sourceMappingURL=DocumentationLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentationLink.d.ts","sourceRoot":"","sources":["../../src/application/DocumentationLink.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAQH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CA+BA,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAkBA,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2020-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { shouldDisplayVirtualAssistantDocumentationEntry, useApplicationStore, } from '@finos/legend-application';
18
+ import { clsx, QuestionCircleIcon } from '@finos/legend-art';
19
+ export const DocumentationLink = (props) => {
20
+ const { documentationKey, title, className } = props;
21
+ const applicationStore = useApplicationStore();
22
+ const documentationEntry = applicationStore.documentationService.getDocEntry(documentationKey);
23
+ const openDocLink = (event) => {
24
+ event.preventDefault();
25
+ event.stopPropagation();
26
+ applicationStore.assistantService.openDocumentationEntryLink(documentationKey);
27
+ };
28
+ if (!documentationEntry ||
29
+ (!documentationEntry.url &&
30
+ !shouldDisplayVirtualAssistantDocumentationEntry(documentationEntry))) {
31
+ return null;
32
+ }
33
+ return (_jsx("div", { onClick: openDocLink, title: title ?? 'Click to see documentation', className: clsx('documentation-link', className), children: _jsx(QuestionCircleIcon, {}) }));
34
+ };
35
+ export const DocumentationPreview = (props) => {
36
+ const { documentationKey, text, className } = props;
37
+ const applicationStore = useApplicationStore();
38
+ const documentationEntry = applicationStore.documentationService.getDocEntry(documentationKey);
39
+ const textContent = text ?? documentationEntry?.text;
40
+ if (!documentationEntry || !textContent) {
41
+ return null;
42
+ }
43
+ return (_jsxs("div", { className: clsx('documentation-preview', className), children: [_jsx("div", { className: "documentation-preview__text", children: textContent }), _jsx("div", { className: "documentation-preview__hint", children: _jsx(DocumentationLink, { documentationKey: documentationKey }) })] }));
44
+ };
45
+ //# sourceMappingURL=DocumentationLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentationLink.js","sourceRoot":"","sources":["../../src/application/DocumentationLink.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,+CAA+C,EAC/C,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAIzB,CAAC,KAAK,EAAE,EAAE;IACb,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,WAAW,GAA4C,CAC3D,KAAK,EACC,EAAE;QACR,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,gBAAgB,CAAC,gBAAgB,CAAC,0BAA0B,CAC1D,gBAAgB,CACjB,CAAC;IACJ,CAAC,CAAC;IAEF,IACE,CAAC,kBAAkB;QACnB,CAAC,CAAC,kBAAkB,CAAC,GAAG;YACtB,CAAC,+CAA+C,CAAC,kBAAkB,CAAC,CAAC,EACvE;QACA,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CACL,cACE,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,KAAK,IAAI,4BAA4B,EAC5C,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,YAEhD,KAAC,kBAAkB,KAAG,GAClB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI5B,CAAC,KAAK,EAAE,EAAE;IACb,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,IAAI,kBAAkB,EAAE,IAAI,CAAC;IAErD,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE;QACvC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,aACtD,cAAK,SAAS,EAAC,6BAA6B,YAAE,WAAW,GAAO,EAChE,cAAK,SAAS,EAAC,6BAA6B,YAC1C,KAAC,iBAAiB,IAAC,gBAAgB,EAAE,gBAAgB,GAAI,GACrD,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /// <reference types="react" resolution-mode="require"/>
17
+ import { type FuzzySearchAdvancedConfigState } from '@finos/legend-shared';
18
+ export declare const FuzzySearchAdvancedConfigMenu: ((props: {
19
+ configState: FuzzySearchAdvancedConfigState;
20
+ }) => JSX.Element) & {
21
+ displayName: string;
22
+ };
23
+ //# sourceMappingURL=FuzzySearchAdvancedConfigMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FuzzySearchAdvancedConfigMenu.d.ts","sourceRoot":"","sources":["../../src/application/FuzzySearchAdvancedConfigMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAKH,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,6BAA6B,WAChC;IAAE,WAAW,EAAE,8BAA8B,CAAA;CAAE;;CAuCxD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2020-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { BaseRadioGroup } from '@finos/legend-art';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { DocumentationLink } from './DocumentationLink.js';
20
+ import { ADVANCED_FUZZY_SEARCH_MODE, } from '@finos/legend-shared';
21
+ import { LEGEND_APPLICATION_DOCUMENTATION_KEY } from '@finos/legend-application';
22
+ export const FuzzySearchAdvancedConfigMenu = observer((props) => {
23
+ const { configState } = props;
24
+ const handleSearchMode = (event) => {
25
+ const searchMode = event.target.value;
26
+ configState.setCurrentMode(searchMode);
27
+ };
28
+ return (_jsxs("div", { className: "fuzzy-search__advanced-config__panel", children: [_jsxs("div", { className: "fuzzy-search__advanced-config__panel__header__label", children: ["search config", _jsx(DocumentationLink, { className: "fuzzy-search__advanced-config__panel__header__hint", documentationKey: LEGEND_APPLICATION_DOCUMENTATION_KEY.QUESTION_HOW_TO_USE_ADVANCED_SEARCH_SYNTAX })] }), _jsx("div", { children: _jsx(BaseRadioGroup, { className: "text-search-advanced-config__options", value: configState.currentMode, onChange: handleSearchMode, row: false, options: [
29
+ ADVANCED_FUZZY_SEARCH_MODE.STANDARD,
30
+ ADVANCED_FUZZY_SEARCH_MODE.INCLUDE,
31
+ ADVANCED_FUZZY_SEARCH_MODE.EXACT,
32
+ ADVANCED_FUZZY_SEARCH_MODE.INVERSE,
33
+ ], size: 1 }) })] }));
34
+ });
35
+ //# sourceMappingURL=FuzzySearchAdvancedConfigMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FuzzySearchAdvancedConfigMenu.js","sourceRoot":"","sources":["../../src/application/FuzzySearchAdvancedConfigMenu.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AAEjF,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAQ,CACnD,CAAC,KAAsD,EAAE,EAAE;IACzD,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9B,MAAM,gBAAgB,GAA+C,CACnE,KAAK,EACC,EAAE;QACR,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAmC,CAAC;QACpE,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,sCAAsC,aACnD,eAAK,SAAS,EAAC,qDAAqD,8BAElE,KAAC,iBAAiB,IAChB,SAAS,EAAC,oDAAoD,EAC9D,gBAAgB,EACd,oCAAoC,CAAC,0CAA0C,GAEjF,IACE,EACN,wBACE,KAAC,cAAc,IACb,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,WAAW,CAAC,WAAW,EAC9B,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,KAAK,EACV,OAAO,EAAE;wBACP,0BAA0B,CAAC,QAAQ;wBACnC,0BAA0B,CAAC,OAAO;wBAClC,0BAA0B,CAAC,KAAK;wBAChC,0BAA0B,CAAC,OAAO;qBACnC,EACD,IAAI,EAAE,CAAC,GACP,GACE,IACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /// <reference types="react" resolution-mode="require"/>
17
+ import type { TabManagerState, TabState } from './TabManagerState.js';
18
+ export declare const TabManager: ((props: {
19
+ tabManagerState: TabManagerState;
20
+ tabRenderer?: ((editorState: TabState) => React.ReactNode) | undefined;
21
+ }) => JSX.Element) & {
22
+ displayName: string;
23
+ };
24
+ //# sourceMappingURL=TabManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabManager.d.ts","sourceRoot":"","sources":["../../src/application/TabManager.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAiBH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA+NtE,eAAO,MAAM,UAAU;qBAEF,eAAe;iCACH,QAAQ,KAAK,MAAM,SAAS;;;CA2B5D,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2020-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { ChevronDownIcon, clsx, ContextMenu, DragPreviewLayer, DropdownMenu, MenuContent, MenuContentItem, PanelEntryDropZonePlaceholder, TimesIcon, useDragPreviewLayer, } from '@finos/legend-art';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { useRef, useCallback } from 'react';
20
+ import { useDrop, useDrag } from 'react-dnd';
21
+ const horizontalToVerticalScroll = (event) => {
22
+ // if scrolling is more horizontal than vertical, there's nothing much to do, the OS should handle it just fine
23
+ // else, intercept
24
+ if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) {
25
+ return;
26
+ }
27
+ event.stopPropagation();
28
+ let deltaX;
29
+ // NOTE: only convert horizontal to vertical scroll when the scroll causes more horizontal than vertical displacement
30
+ // let the direction of `deltaY` be the direction of the scroll, i.e.
31
+ // - if we scroll upward, that translate to a left scroll
32
+ // - if we scroll downward, that translates to a right scroll
33
+ if (event.deltaY === 0) {
34
+ deltaX = event.deltaY;
35
+ }
36
+ else if (event.deltaY < 0) {
37
+ deltaX = -Math.abs(event.deltaY);
38
+ }
39
+ else {
40
+ deltaX = Math.abs(event.deltaY);
41
+ }
42
+ event.currentTarget.scrollBy(deltaX, 0);
43
+ };
44
+ const TabContextMenu = observer((props) => {
45
+ const { tabState, managerTabState } = props;
46
+ const close = () => managerTabState.closeTab(tabState);
47
+ const closeOthers = () => managerTabState.closeAllOtherTabs(tabState);
48
+ const closeAll = () => managerTabState.closeAllTabs();
49
+ return (_jsxs(MenuContent, { children: [_jsx(MenuContentItem, { onClick: close, children: "Close" }), _jsx(MenuContentItem, { disabled: managerTabState.tabs.length < 2, onClick: closeOthers, children: "Close Others" }), _jsx(MenuContentItem, { onClick: closeAll, children: "Close All" })] }));
50
+ });
51
+ const Tab = observer((props) => {
52
+ const ref = useRef(null);
53
+ const { tabManagerState, tabState, tabRenderer } = props;
54
+ // Drag and Drop
55
+ const handleHover = useCallback((item, monitor) => {
56
+ const draggingTab = item.tab;
57
+ const hoveredTab = tabState;
58
+ const dragIndex = tabManagerState.tabs.findIndex((e) => e === draggingTab);
59
+ const hoverIndex = tabManagerState.tabs.findIndex((e) => e === hoveredTab);
60
+ const hoverBoundingReact = ref.current?.getBoundingClientRect();
61
+ const distanceThreshold = ((hoverBoundingReact?.left ?? 0) - (hoverBoundingReact?.right ?? 0)) /
62
+ 2;
63
+ const dragDistance = (monitor.getClientOffset()?.x ?? 0) -
64
+ (hoverBoundingReact?.right ?? 0);
65
+ if (dragIndex < hoverIndex && dragDistance < distanceThreshold) {
66
+ return;
67
+ }
68
+ if (dragIndex > hoverIndex && dragDistance > distanceThreshold) {
69
+ return;
70
+ }
71
+ tabManagerState.swapTabs(draggingTab, hoveredTab);
72
+ }, [tabManagerState, tabState]);
73
+ const closeTabOnMiddleClick = (currTab) => (event) => {
74
+ if (event.nativeEvent.button === 1) {
75
+ tabManagerState.closeTab(currTab);
76
+ }
77
+ };
78
+ const [{ isBeingDraggedEditorPanel }, dropConnector] = useDrop(() => ({
79
+ accept: [tabManagerState.dndType],
80
+ hover: (item, monitor) => handleHover(item, monitor),
81
+ collect: (monitor) => ({
82
+ isBeingDraggedEditorPanel: monitor.getItem()
83
+ ?.tab,
84
+ }),
85
+ }), [handleHover]);
86
+ const isBeingDragged = tabState === isBeingDraggedEditorPanel;
87
+ const [, dragConnector, dragPreviewConnector] = useDrag(() => ({
88
+ type: tabManagerState.dndType,
89
+ item: () => ({
90
+ tab: tabState,
91
+ }),
92
+ }), [tabState, tabManagerState]);
93
+ dragConnector(dropConnector(ref));
94
+ useDragPreviewLayer(dragPreviewConnector);
95
+ return (_jsx("div", { ref: ref, className: clsx('tab-manager__tab', {
96
+ 'tab-manager__tab--active': tabState === tabManagerState.currentTab,
97
+ 'tab-manager__tab--dragged': isBeingDragged,
98
+ }), onMouseUp: closeTabOnMiddleClick(tabState), children: _jsx(PanelEntryDropZonePlaceholder, { showPlaceholder: false, className: "tab-manager__tab__dnd__placeholder", children: _jsxs(ContextMenu, { content: _jsx(TabContextMenu, { tabState: tabState, managerTabState: tabManagerState }), className: "tab-manager__tab__content", children: [_jsx("button", { className: "tab-manager__tab__label", tabIndex: -1, onClick: () => tabManagerState.openTab(tabState), title: tabState.description, children: tabRenderer?.(tabState) ?? tabState.label }), _jsx("button", { className: "tab-manager__tab__close-btn", onClick: () => tabManagerState.closeTab(tabState), tabIndex: -1, title: "Close", children: _jsx(TimesIcon, {}) })] }) }) }));
99
+ });
100
+ const TabMenu = observer((props) => {
101
+ const { managerTabState } = props;
102
+ return (_jsx(DropdownMenu, { className: "tab-manager__menu__toggler", title: "Show All Tabs", content: _jsx(MenuContent, { className: "tab-manager__menu", children: managerTabState.tabs.map((tabState) => (_jsxs(MenuContentItem, { className: clsx('tab-manager__menu__item', {
103
+ 'tab-manager__menu__item--active': tabState === managerTabState.currentTab,
104
+ }), onClick: () => managerTabState.openTab(tabState), children: [_jsx("div", { className: "tab-manager__menu__item__label", children: tabState.label }), _jsx("div", { className: "tab-manager__menu__item__close-btn", onClick: (event) => {
105
+ // NOTE: prevent default action of dropdown menu
106
+ event.stopPropagation();
107
+ managerTabState.closeTab(tabState);
108
+ }, tabIndex: -1, title: "Close", children: _jsx(TimesIcon, {}) })] }, tabState.uuid))) }), menuProps: {
109
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
110
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
111
+ }, children: _jsx(ChevronDownIcon, {}) }));
112
+ });
113
+ export const TabManager = observer((props) => {
114
+ const { tabManagerState, tabRenderer } = props;
115
+ return (_jsxs("div", { className: "tab-manager", children: [_jsxs("div", { className: "tab-manager__content", onWheel: horizontalToVerticalScroll, children: [tabManagerState.tabs.map((tab) => (_jsx(Tab, { tabState: tab, tabManagerState: tabManagerState, tabRenderer: tabRenderer }, tab.uuid))), _jsx(DragPreviewLayer, { labelGetter: (item) => item.tab.label, types: [tabManagerState.dndType] })] }), _jsx(TabMenu, { managerTabState: tabManagerState })] }));
116
+ });
117
+ //# sourceMappingURL=TabManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabManager.js","sourceRoot":"","sources":["../../src/application/TabManager.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare abstract class TabState {
17
+ readonly uuid: string;
18
+ abstract get label(): string;
19
+ get description(): string | undefined;
20
+ match(tab: TabState): boolean;
21
+ onOpen(): void;
22
+ onClose(): void;
23
+ }
24
+ export declare abstract class TabManagerState {
25
+ currentTab?: TabState | undefined;
26
+ tabs: TabState[];
27
+ constructor();
28
+ setCurrentTab(val: TabState | undefined): void;
29
+ closeAllOtherTabs(tab: TabState): void;
30
+ closeAllTabs(): void;
31
+ swapTabs(tab1: TabState, tab2: TabState): void;
32
+ /**
33
+ * The unique drag and drop type
34
+ * See https://react-dnd.github.io/react-dnd/docs/overview#items-and-types
35
+ */
36
+ abstract get dndType(): string;
37
+ openTab(tab: TabState): void;
38
+ closeTab(tab: TabState): void;
39
+ }
40
+ //# sourceMappingURL=TabManagerState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabManagerState.d.ts","sourceRoot":"","sources":["../../src/application/TabManagerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,8BAAsB,QAAQ;IAC5B,QAAQ,CAAC,IAAI,SAAU;IAEvB,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC;IAE7B,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,KAAK,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAI7B,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAGhB;AAED,8BAAsB,eAAe;IACnC,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,QAAQ,EAAE,CAAM;;IAetB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;IAI9C,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAStC,YAAY,IAAI,IAAI;IAKpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAI9C;;;OAGG;IACH,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;IAE/B,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAe5B,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;CAiB9B"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { assertNonNullable, assertTrue, swapEntry, uuid, } from '@finos/legend-shared';
17
+ import { action, makeObservable, observable } from 'mobx';
18
+ export class TabState {
19
+ uuid = uuid();
20
+ get description() {
21
+ return undefined;
22
+ }
23
+ match(tab) {
24
+ return this === tab;
25
+ }
26
+ onOpen() {
27
+ // do nothing
28
+ }
29
+ onClose() {
30
+ // do nothing
31
+ }
32
+ }
33
+ export class TabManagerState {
34
+ currentTab;
35
+ tabs = [];
36
+ constructor() {
37
+ makeObservable(this, {
38
+ currentTab: observable,
39
+ tabs: observable,
40
+ setCurrentTab: action,
41
+ closeTab: action,
42
+ closeAllTabs: action,
43
+ closeAllOtherTabs: action,
44
+ openTab: action,
45
+ swapTabs: action,
46
+ });
47
+ }
48
+ setCurrentTab(val) {
49
+ this.currentTab = val;
50
+ }
51
+ closeAllOtherTabs(tab) {
52
+ assertNonNullable(this.tabs.find((e) => e === tab), 'Specified tab should be currently opened');
53
+ this.setCurrentTab(tab);
54
+ this.tabs = [tab];
55
+ }
56
+ closeAllTabs() {
57
+ this.setCurrentTab(undefined);
58
+ this.tabs = [];
59
+ }
60
+ swapTabs(tab1, tab2) {
61
+ swapEntry(this.tabs, tab1, tab2);
62
+ }
63
+ openTab(tab) {
64
+ const existingTab = this.tabs.find((t) => t.match(tab));
65
+ if (!existingTab) {
66
+ if (this.currentTab) {
67
+ const currIndex = this.tabs.findIndex((e) => e === this.currentTab);
68
+ this.tabs.splice(currIndex + 1, 0, tab);
69
+ }
70
+ else {
71
+ this.tabs.push(tab);
72
+ }
73
+ }
74
+ this.setCurrentTab(tab);
75
+ tab.onOpen();
76
+ }
77
+ closeTab(tab) {
78
+ const tabIndex = this.tabs.findIndex((t) => t.match(tab));
79
+ assertTrue(tabIndex !== -1, `Can't close a tab which is not opened`);
80
+ this.tabs.splice(tabIndex, 1);
81
+ if (this.currentTab === tab) {
82
+ if (this.tabs.length) {
83
+ const openIndex = tabIndex - 1;
84
+ this.setCurrentTab(openIndex >= 0 ? this.tabs[openIndex] : this.tabs[0]);
85
+ }
86
+ else {
87
+ this.setCurrentTab(undefined);
88
+ }
89
+ }
90
+ tab.onClose();
91
+ }
92
+ }
93
+ //# sourceMappingURL=TabManagerState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabManagerState.js","sourceRoot":"","sources":["../../src/application/TabManagerState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './DocumentationLink.js';
17
+ export * from './TabManager.js';
18
+ export * from './TabManagerState.js';
19
+ export * from './FuzzySearchAdvancedConfigMenu.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,wBAAwB,CAAC;AAEvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './DocumentationLink.js';
17
+ export * from './TabManager.js';
18
+ export * from './TabManagerState.js';
19
+ export * from './FuzzySearchAdvancedConfigMenu.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,wBAAwB,CAAC;AAEvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /// <reference types="react" resolution-mode="require"/>
17
+ import { CODE_EDITOR_LANGUAGE } from './CodeEditorConfig.js';
18
+ export declare const CodeDiffView: ((props: {
19
+ language: CODE_EDITOR_LANGUAGE;
20
+ from?: string | undefined;
21
+ to?: string | undefined;
22
+ }) => JSX.Element) & {
23
+ displayName: string;
24
+ };
25
+ export declare const JSONDiffView: ((props: {
26
+ from?: unknown;
27
+ to?: unknown;
28
+ /**
29
+ * Use lossless algorithm while parsing/stringifying JSON-like value
30
+ */
31
+ lossless?: boolean;
32
+ }) => JSX.Element) & {
33
+ displayName: string;
34
+ };
35
+ //# sourceMappingURL=CodeDiffView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeDiffView.d.ts","sourceRoot":"","sources":["../../src/code-editor/CodeDiffView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAoBH,OAAO,EAAE,oBAAoB,EAAqB,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,YAAY,WACf;IACN,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;;CAsDF,CAAC;AAaF,eAAO,MAAM,YAAY,WACf;IACN,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;;CAWF,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2020-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { useEffect, useState, useRef } from 'react';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { editor as monacoEditorAPI } from 'monaco-editor';
20
+ import { DEFAULT_TAB_SIZE, useApplicationStore, } from '@finos/legend-application';
21
+ import { useResizeDetector } from '@finos/legend-art';
22
+ import { isString, stringifyLosslessJSON, tryToFormatJSONString, tryToFormatLosslessJSONString, } from '@finos/legend-shared';
23
+ import { disposeDiffCodeEditor, getBaseCodeEditorOptions, } from './CodeEditorUtils.js';
24
+ import { CODE_EDITOR_LANGUAGE, CODE_EDITOR_THEME } from './CodeEditorConfig.js';
25
+ export const CodeDiffView = observer((props) => {
26
+ const { from, to, language } = props;
27
+ const applicationStore = useApplicationStore();
28
+ const [editor, setEditor] = useState();
29
+ const editorRef = useRef(null);
30
+ const originalText = from ?? '';
31
+ const modifiedText = to ?? '';
32
+ const { ref, width, height } = useResizeDetector();
33
+ useEffect(() => {
34
+ if (width !== undefined && height !== undefined) {
35
+ editor?.layout({ width, height });
36
+ }
37
+ }, [editor, width, height]);
38
+ useEffect(() => {
39
+ if (!editor && editorRef.current) {
40
+ const element = editorRef.current;
41
+ const _editor = monacoEditorAPI.createDiffEditor(element, {
42
+ ...getBaseCodeEditorOptions(),
43
+ theme: CODE_EDITOR_THEME.LEGEND,
44
+ readOnly: true,
45
+ });
46
+ setEditor(_editor);
47
+ }
48
+ }, [applicationStore, editor]);
49
+ if (editor) {
50
+ const originalModel = monacoEditorAPI.createModel(originalText, language);
51
+ const modifiedModel = monacoEditorAPI.createModel(modifiedText, language);
52
+ editor.setModel({
53
+ original: originalModel,
54
+ modified: modifiedModel,
55
+ });
56
+ }
57
+ // dispose editor
58
+ useEffect(() => () => {
59
+ if (editor) {
60
+ disposeDiffCodeEditor(editor);
61
+ }
62
+ }, [editor]);
63
+ return (_jsx("div", { ref: ref, className: "code-editor__container", children: _jsx("div", { className: "code-editor__body", ref: editorRef }) }));
64
+ });
65
+ const formatJSONLikeValue = (value, lossless) => value
66
+ ? isString(value)
67
+ ? lossless
68
+ ? tryToFormatLosslessJSONString(value)
69
+ : tryToFormatJSONString(value)
70
+ : lossless
71
+ ? stringifyLosslessJSON(value, undefined, DEFAULT_TAB_SIZE)
72
+ : JSON.stringify(value, undefined, DEFAULT_TAB_SIZE)
73
+ : '';
74
+ export const JSONDiffView = observer((props) => {
75
+ const { from, to, lossless } = props;
76
+ return (_jsx(CodeDiffView, { language: CODE_EDITOR_LANGUAGE.JSON, from: formatJSONLikeValue(from, Boolean(lossless)), to: formatJSONLikeValue(to, Boolean(lossless)) }));
77
+ });
78
+ //# sourceMappingURL=CodeDiffView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeDiffView.js","sourceRoot":"","sources":["../../src/code-editor/CodeDiffView.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAClC,CAAC,KAIA,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACvB,QAAQ,EAAyC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,CAAC;IAE9B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAkB,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;YAC/C,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SACnC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE;YAChC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAClC,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACxD,GAAG,wBAAwB,EAAE;gBAC7B,KAAK,EAAE,iBAAiB,CAAC,MAAM;gBAC/B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,CAAC;SACpB;IACH,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/B,IAAI,MAAM,EAAE;QACV,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,CAAC,QAAQ,CAAC;YACd,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;KACJ;IAED,iBAAiB;IACjB,SAAS,CACP,GAAG,EAAE,CAAC,GAAS,EAAE;QACf,IAAI,MAAM,EAAE;YACV,qBAAqB,CAAC,MAAM,CAAC,CAAC;SAC/B;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,wBAAwB,YAC/C,cAAK,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,SAAS,GAAI,GACjD,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,QAAiB,EAAU,EAAE,CACxE,KAAK;IACH,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAChC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAClC,CAAC,KAOA,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAErC,OAAO,CACL,KAAC,YAAY,IACX,QAAQ,EAAE,oBAAoB,CAAC,IAAI,EACnC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAClD,EAAE,EAAE,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAC9C,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}