@finos/legend-application-marketplace 0.2.17 → 0.2.20

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 (138) hide show
  1. package/lib/__lib__/LegendMarketplaceNavigation.d.ts +2 -0
  2. package/lib/__lib__/LegendMarketplaceNavigation.d.ts.map +1 -1
  3. package/lib/__lib__/LegendMarketplaceNavigation.js +4 -0
  4. package/lib/__lib__/LegendMarketplaceNavigation.js.map +1 -1
  5. package/lib/application/LegendMarketplaceApplicationConfig.d.ts +9 -0
  6. package/lib/application/LegendMarketplaceApplicationConfig.d.ts.map +1 -1
  7. package/lib/application/LegendMarketplaceApplicationConfig.js +40 -22
  8. package/lib/application/LegendMarketplaceApplicationConfig.js.map +1 -1
  9. package/lib/application/LegendMarketplaceWebApplication.d.ts.map +1 -1
  10. package/lib/application/LegendMarketplaceWebApplication.js +4 -1
  11. package/lib/application/LegendMarketplaceWebApplication.js.map +1 -1
  12. package/lib/application/__test-utils__/LegendMarketplaceApplicationTestUtils.d.ts.map +1 -1
  13. package/lib/application/__test-utils__/LegendMarketplaceApplicationTestUtils.js +7 -0
  14. package/lib/application/__test-utils__/LegendMarketplaceApplicationTestUtils.js.map +1 -1
  15. package/lib/application/providers/LegendMarketplaceAIChatStoreProvider.d.ts +21 -0
  16. package/lib/application/providers/LegendMarketplaceAIChatStoreProvider.d.ts.map +1 -0
  17. package/lib/application/providers/LegendMarketplaceAIChatStoreProvider.js +29 -0
  18. package/lib/application/providers/LegendMarketplaceAIChatStoreProvider.js.map +1 -0
  19. package/lib/components/Header/LegendMarketplaceIconToolbar.d.ts.map +1 -1
  20. package/lib/components/Header/LegendMarketplaceIconToolbar.js +2 -2
  21. package/lib/components/Header/LegendMarketplaceIconToolbar.js.map +1 -1
  22. package/lib/index.css +2 -2
  23. package/lib/index.css.map +1 -1
  24. package/lib/package.json +1 -1
  25. package/lib/pages/Agents/LegendMarketplaceAgents.d.ts.map +1 -1
  26. package/lib/pages/Agents/LegendMarketplaceAgents.js +49 -17
  27. package/lib/pages/Agents/LegendMarketplaceAgents.js.map +1 -1
  28. package/lib/pages/Agents/MarketplaceAIChatView.d.ts +21 -0
  29. package/lib/pages/Agents/MarketplaceAIChatView.d.ts.map +1 -0
  30. package/lib/pages/Agents/MarketplaceAIChatView.js +141 -0
  31. package/lib/pages/Agents/MarketplaceAIChatView.js.map +1 -0
  32. package/lib/pages/Agents/MarketplaceAIInputBar.d.ts +22 -0
  33. package/lib/pages/Agents/MarketplaceAIInputBar.d.ts.map +1 -0
  34. package/lib/pages/Agents/MarketplaceAIInputBar.js +40 -0
  35. package/lib/pages/Agents/MarketplaceAIInputBar.js.map +1 -0
  36. package/lib/pages/Agents/MarketplaceAIProductAutosuggest.d.ts +25 -0
  37. package/lib/pages/Agents/MarketplaceAIProductAutosuggest.d.ts.map +1 -0
  38. package/lib/pages/Agents/MarketplaceAIProductAutosuggest.js +86 -0
  39. package/lib/pages/Agents/MarketplaceAIProductAutosuggest.js.map +1 -0
  40. package/lib/pages/Agents/MarketplaceAIProductCards.d.ts +23 -0
  41. package/lib/pages/Agents/MarketplaceAIProductCards.d.ts.map +1 -0
  42. package/lib/pages/Agents/MarketplaceAIProductCards.js +20 -0
  43. package/lib/pages/Agents/MarketplaceAIProductCards.js.map +1 -0
  44. package/lib/pages/Agents/MarketplaceAIScopeSelector.d.ts +19 -0
  45. package/lib/pages/Agents/MarketplaceAIScopeSelector.d.ts.map +1 -0
  46. package/lib/pages/Agents/MarketplaceAIScopeSelector.js +46 -0
  47. package/lib/pages/Agents/MarketplaceAIScopeSelector.js.map +1 -0
  48. package/lib/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.d.ts.map +1 -1
  49. package/lib/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.js +7 -2
  50. package/lib/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.js.map +1 -1
  51. package/lib/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.d.ts.map +1 -1
  52. package/lib/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.js +7 -2
  53. package/lib/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.js.map +1 -1
  54. package/lib/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.d.ts.map +1 -1
  55. package/lib/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.js +70 -56
  56. package/lib/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.js.map +1 -1
  57. package/lib/pages/Lakehouse/entitlements/EntitlementsPendingContractsDashboard.d.ts.map +1 -1
  58. package/lib/pages/Lakehouse/entitlements/EntitlementsPendingContractsDashboard.js +82 -62
  59. package/lib/pages/Lakehouse/entitlements/EntitlementsPendingContractsDashboard.js.map +1 -1
  60. package/lib/pages/Lakehouse/entitlements/LakehouseDataContract.d.ts.map +1 -1
  61. package/lib/pages/Lakehouse/entitlements/LakehouseDataContract.js +2 -0
  62. package/lib/pages/Lakehouse/entitlements/LakehouseDataContract.js.map +1 -1
  63. package/lib/pages/Lakehouse/entitlements/PermitDataAccessRequest.d.ts +17 -0
  64. package/lib/pages/Lakehouse/entitlements/PermitDataAccessRequest.d.ts.map +1 -0
  65. package/lib/pages/Lakehouse/entitlements/PermitDataAccessRequest.js +126 -0
  66. package/lib/pages/Lakehouse/entitlements/PermitDataAccessRequest.js.map +1 -0
  67. package/lib/pages/Lakehouse/entitlements/WorkflowDataAccessRequest.d.ts.map +1 -1
  68. package/lib/pages/Lakehouse/entitlements/WorkflowDataAccessRequest.js +23 -65
  69. package/lib/pages/Lakehouse/entitlements/WorkflowDataAccessRequest.js.map +1 -1
  70. package/lib/pages/Lakehouse/entitlements/showTaskActionAlert.d.ts +29 -0
  71. package/lib/pages/Lakehouse/entitlements/showTaskActionAlert.d.ts.map +1 -0
  72. package/lib/pages/Lakehouse/entitlements/showTaskActionAlert.js +60 -0
  73. package/lib/pages/Lakehouse/entitlements/showTaskActionAlert.js.map +1 -0
  74. package/lib/stores/LegendMarketplaceBaseStore.d.ts +4 -1
  75. package/lib/stores/LegendMarketplaceBaseStore.d.ts.map +1 -1
  76. package/lib/stores/LegendMarketplaceBaseStore.js +12 -1
  77. package/lib/stores/LegendMarketplaceBaseStore.js.map +1 -1
  78. package/lib/stores/ai/LegendMarketplaceAIChatStore.d.ts +109 -0
  79. package/lib/stores/ai/LegendMarketplaceAIChatStore.d.ts.map +1 -0
  80. package/lib/stores/ai/LegendMarketplaceAIChatStore.js +1106 -0
  81. package/lib/stores/ai/LegendMarketplaceAIChatStore.js.map +1 -0
  82. package/lib/stores/lakehouse/LegendMarketplaceProductViewerStore.d.ts.map +1 -1
  83. package/lib/stores/lakehouse/LegendMarketplaceProductViewerStore.js +3 -2
  84. package/lib/stores/lakehouse/LegendMarketplaceProductViewerStore.js.map +1 -1
  85. package/lib/stores/lakehouse/PendingTasksCache.d.ts +46 -0
  86. package/lib/stores/lakehouse/PendingTasksCache.d.ts.map +1 -0
  87. package/lib/stores/lakehouse/PendingTasksCache.js +75 -0
  88. package/lib/stores/lakehouse/PendingTasksCache.js.map +1 -0
  89. package/lib/stores/lakehouse/admin/LakehouseAdminStore.d.ts +2 -2
  90. package/lib/stores/lakehouse/admin/LakehouseAdminStore.d.ts.map +1 -1
  91. package/lib/stores/lakehouse/admin/LakehouseAdminStore.js +4 -4
  92. package/lib/stores/lakehouse/admin/LakehouseAdminStore.js.map +1 -1
  93. package/lib/stores/lakehouse/dataProducts/ProductCardState.d.ts +1 -1
  94. package/lib/stores/lakehouse/dataProducts/ProductCardState.d.ts.map +1 -1
  95. package/lib/stores/lakehouse/dataProducts/ProductCardState.js +1 -2
  96. package/lib/stores/lakehouse/dataProducts/ProductCardState.js.map +1 -1
  97. package/lib/stores/lakehouse/entitlements/EntitlementsDashboardState.d.ts +4 -1
  98. package/lib/stores/lakehouse/entitlements/EntitlementsDashboardState.d.ts.map +1 -1
  99. package/lib/stores/lakehouse/entitlements/EntitlementsDashboardState.js +25 -3
  100. package/lib/stores/lakehouse/entitlements/EntitlementsDashboardState.js.map +1 -1
  101. package/lib/utils/EntitlementsUtils.d.ts +36 -2
  102. package/lib/utils/EntitlementsUtils.d.ts.map +1 -1
  103. package/lib/utils/EntitlementsUtils.js +225 -46
  104. package/lib/utils/EntitlementsUtils.js.map +1 -1
  105. package/lib/utils/SearchUtils.d.ts.map +1 -1
  106. package/lib/utils/SearchUtils.js +7 -4
  107. package/lib/utils/SearchUtils.js.map +1 -1
  108. package/package.json +10 -10
  109. package/src/__lib__/LegendMarketplaceNavigation.ts +11 -0
  110. package/src/application/LegendMarketplaceApplicationConfig.ts +62 -24
  111. package/src/application/LegendMarketplaceWebApplication.tsx +15 -0
  112. package/src/application/__test-utils__/LegendMarketplaceApplicationTestUtils.ts +7 -0
  113. package/src/application/providers/LegendMarketplaceAIChatStoreProvider.tsx +47 -0
  114. package/src/components/Header/LegendMarketplaceIconToolbar.tsx +5 -6
  115. package/src/pages/Agents/LegendMarketplaceAgents.tsx +145 -23
  116. package/src/pages/Agents/MarketplaceAIChatView.tsx +555 -0
  117. package/src/pages/Agents/MarketplaceAIInputBar.tsx +91 -0
  118. package/src/pages/Agents/MarketplaceAIProductAutosuggest.tsx +181 -0
  119. package/src/pages/Agents/MarketplaceAIProductCards.tsx +111 -0
  120. package/src/pages/Agents/MarketplaceAIScopeSelector.tsx +84 -0
  121. package/src/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.tsx +8 -3
  122. package/src/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.tsx +8 -3
  123. package/src/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.tsx +124 -127
  124. package/src/pages/Lakehouse/entitlements/EntitlementsPendingContractsDashboard.tsx +151 -153
  125. package/src/pages/Lakehouse/entitlements/LakehouseDataContract.tsx +2 -0
  126. package/src/pages/Lakehouse/entitlements/PermitDataAccessRequest.tsx +245 -0
  127. package/src/pages/Lakehouse/entitlements/WorkflowDataAccessRequest.tsx +25 -94
  128. package/src/pages/Lakehouse/entitlements/showTaskActionAlert.tsx +101 -0
  129. package/src/stores/LegendMarketplaceBaseStore.ts +19 -0
  130. package/src/stores/ai/LegendMarketplaceAIChatStore.ts +1720 -0
  131. package/src/stores/lakehouse/LegendMarketplaceProductViewerStore.ts +6 -0
  132. package/src/stores/lakehouse/PendingTasksCache.ts +97 -0
  133. package/src/stores/lakehouse/admin/LakehouseAdminStore.ts +4 -4
  134. package/src/stores/lakehouse/dataProducts/ProductCardState.ts +3 -4
  135. package/src/stores/lakehouse/entitlements/EntitlementsDashboardState.ts +72 -31
  136. package/src/utils/EntitlementsUtils.tsx +341 -86
  137. package/src/utils/SearchUtils.tsx +7 -4
  138. package/tsconfig.json +10 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Copyright (c) 2026-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 const MarketplaceAIInputBar: ((props: {
17
+ placeholder: string;
18
+ onSubmit: () => void;
19
+ }) => React.ReactNode) & {
20
+ displayName: string;
21
+ };
22
+ //# sourceMappingURL=MarketplaceAIInputBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIInputBar.d.ts","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIInputBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,eAAO,MAAM,qBAAqB,WACxB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,KAAG,KAAK,CAAC,SAAS;;CAmExE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-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 { useRef, useLayoutEffect } from 'react';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { SendIcon, LoadingIcon, TimesIcon } from '@finos/legend-art';
20
+ import { useLegendMarketplaceAIChatStore } from '../../application/providers/LegendMarketplaceAIChatStoreProvider.js';
21
+ import { MarketplaceAIScopeSelector } from './MarketplaceAIScopeSelector.js';
22
+ export const MarketplaceAIInputBar = observer((props) => {
23
+ const { placeholder, onSubmit } = props;
24
+ const store = useLegendMarketplaceAIChatStore();
25
+ const textareaRef = useRef(null);
26
+ useLayoutEffect(() => {
27
+ const el = textareaRef.current;
28
+ if (el) {
29
+ el.style.height = 'auto';
30
+ el.style.height = `${el.scrollHeight}px`;
31
+ }
32
+ }, [store.questionText]);
33
+ return (_jsxs(_Fragment, { children: [store.scopeProducts.length > 0 && (_jsx("div", { className: "ai-scope-selector__pills", children: store.scopeProducts.map((sp, idx) => (_jsxs("div", { className: "ai-scope-selector__pill", children: [_jsx("span", { className: "ai-scope-selector__pill-text", children: sp.name }), _jsx("button", { type: "button", className: "ai-scope-selector__pill-dismiss", title: "Remove", "aria-label": `Remove ${sp.name}`, onClick: () => store.removeScopeProduct(idx), children: _jsx(TimesIcon, {}) })] }, `${sp.coordinates.group_id}:${sp.coordinates.artifact_id}:${sp.coordinates.version}`))) })), _jsxs("div", { className: "marketplace-ai-chat__input-row", children: [_jsx(MarketplaceAIScopeSelector, {}), _jsx("textarea", { ref: textareaRef, className: "marketplace-ai-chat__textarea", placeholder: placeholder, rows: 1, spellCheck: false, value: store.questionText, onChange: (e) => store.setQuestionText(e.target.value), onKeyDown: (e) => {
34
+ if (e.key === 'Enter' && !e.shiftKey) {
35
+ e.preventDefault();
36
+ onSubmit();
37
+ }
38
+ } }), _jsx("button", { type: "button", title: "Send", "aria-label": "Send", className: "marketplace-ai-chat__send-btn", disabled: store.isSending || !store.questionText.trim(), onClick: onSubmit, children: store.isSending ? _jsx(LoadingIcon, { isLoading: true }) : _jsx(SendIcon, {}) })] })] }));
39
+ });
40
+ //# sourceMappingURL=MarketplaceAIInputBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIInputBar.js","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIInputBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2026-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 type { AutosuggestResult } from '@finos/legend-server-marketplace';
17
+ export declare const MarketplaceAIProductAutosuggest: ((props: {
18
+ onSelect: (result: AutosuggestResult) => void;
19
+ placeholder?: string;
20
+ className?: string;
21
+ autoFocus?: boolean;
22
+ }) => React.ReactNode) & {
23
+ displayName: string;
24
+ };
25
+ //# sourceMappingURL=MarketplaceAIProductAutosuggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIProductAutosuggest.d.ts","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIProductAutosuggest.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAM1E,eAAO,MAAM,+BAA+B,WAClC;IACN,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,KAAG,KAAK,CAAC,SAAS;;CAoJpB,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-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 { useState, useRef, useEffect, useCallback, useMemo } from 'react';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { SearchIcon, TimesIcon } from '@finos/legend-art';
20
+ import { debounce, noop } from '@finos/legend-shared';
21
+ import { useLegendMarketplaceAIChatStore } from '../../application/providers/LegendMarketplaceAIChatStoreProvider.js';
22
+ const AUTOSUGGEST_DEBOUNCE_MS = 300;
23
+ const AUTOSUGGEST_LIMIT = 6;
24
+ export const MarketplaceAIProductAutosuggest = observer((props) => {
25
+ const { onSelect, placeholder = 'Search data products...', className, autoFocus, } = props;
26
+ const store = useLegendMarketplaceAIChatStore();
27
+ const [searchText, setSearchText] = useState('');
28
+ const [results, setResults] = useState([]);
29
+ const [isSearching, setIsSearching] = useState(false);
30
+ const inputRef = useRef(null);
31
+ const abortControllerRef = useRef(undefined);
32
+ const fetchResults = useCallback(async (query, signal) => {
33
+ if (!query.trim()) {
34
+ setResults([]);
35
+ setIsSearching(false);
36
+ return;
37
+ }
38
+ setIsSearching(true);
39
+ try {
40
+ const response = await store.baseStore.marketplaceServerClient.getAutosuggestions(query, store.baseStore.envState.lakehouseEnvironment, AUTOSUGGEST_LIMIT, signal);
41
+ if (!signal?.aborted) {
42
+ setResults(response.results);
43
+ setIsSearching(false);
44
+ }
45
+ }
46
+ catch {
47
+ if (!signal?.aborted) {
48
+ setResults([]);
49
+ setIsSearching(false);
50
+ }
51
+ }
52
+ }, [store.baseStore]);
53
+ const debouncedFetch = useMemo(() => debounce((query) => {
54
+ if (abortControllerRef.current) {
55
+ abortControllerRef.current.abort();
56
+ }
57
+ const controller = new AbortController();
58
+ abortControllerRef.current = controller;
59
+ fetchResults(query, controller.signal).catch(noop());
60
+ }, AUTOSUGGEST_DEBOUNCE_MS), [fetchResults]);
61
+ const handleSearchChange = useCallback((value) => {
62
+ setSearchText(value);
63
+ debouncedFetch(value);
64
+ }, [debouncedFetch]);
65
+ const handleSelectResult = useCallback((result) => {
66
+ onSelect(result);
67
+ setSearchText('');
68
+ setResults([]);
69
+ }, [onSelect]);
70
+ useEffect(() => () => {
71
+ debouncedFetch.cancel();
72
+ if (abortControllerRef.current) {
73
+ abortControllerRef.current.abort();
74
+ }
75
+ }, [debouncedFetch]);
76
+ const rootClass = className
77
+ ? `ai-product-autosuggest ${className}`
78
+ : 'ai-product-autosuggest';
79
+ return (_jsxs("div", { className: rootClass, children: [_jsxs("div", { className: "ai-product-autosuggest__search", children: [_jsx(SearchIcon, {}), _jsx("input", { ref: inputRef, type: "text", className: "ai-product-autosuggest__input", placeholder: placeholder, autoFocus: autoFocus, value: searchText, onChange: (e) => handleSearchChange(e.target.value) }), searchText && (_jsx("button", { type: "button", className: "ai-product-autosuggest__clear", onClick: () => {
80
+ setSearchText('');
81
+ setResults([]);
82
+ inputRef.current?.focus();
83
+ }, children: _jsx(TimesIcon, {}) }))] }), (isSearching || results.length > 0 || searchText) && (_jsxs("div", { className: "ai-product-autosuggest__results", children: [isSearching && (_jsx("div", { className: "ai-product-autosuggest__status", children: "Searching..." })), !isSearching && searchText && results.length === 0 && (_jsx("div", { className: "ai-product-autosuggest__status", children: "No products found" })), !isSearching &&
84
+ results.map((r) => (_jsxs("button", { type: "button", className: "ai-product-autosuggest__item", onClick: () => handleSelectResult(r), children: [_jsx("div", { className: "ai-product-autosuggest__item-name", children: r.dataProductName }), r.dataProductDescription && (_jsx("div", { className: "ai-product-autosuggest__item-desc", children: r.dataProductDescription }))] }, `${r.dataProductDetails.groupId}:${r.dataProductDetails.artifactId}`)))] }))] }));
85
+ });
86
+ //# sourceMappingURL=MarketplaceAIProductAutosuggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIProductAutosuggest.js","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIProductAutosuggest.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2026-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 type { DataProductSearchResult } from '@finos/legend-server-marketplace';
17
+ import { type ScoredProductCandidate } from '../../stores/ai/LegendMarketplaceAIChatStore.js';
18
+ export declare const MarketplaceAIProductCards: (props: {
19
+ products: DataProductSearchResult[];
20
+ scoredCandidates?: ScoredProductCandidate[];
21
+ onSelect: (product: DataProductSearchResult) => void;
22
+ }) => React.ReactNode;
23
+ //# sourceMappingURL=MarketplaceAIProductCards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIProductCards.d.ts","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIProductCards.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,iDAAiD,CAAC;AAKzD,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAC/C,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACtD,KAAG,KAAK,CAAC,SAgFT,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CheckIcon, TimesIcon, CaretRightIcon } from '@finos/legend-art';
3
+ import { unwrapProductDetails, } from '../../stores/ai/LegendMarketplaceAIChatStore.js';
4
+ const DESCRIPTION_TRUNCATION_LENGTH = 120;
5
+ const UNKNOWN_PRODUCT_LABEL = 'Unknown Product';
6
+ export const MarketplaceAIProductCards = (props) => {
7
+ const { products, scoredCandidates, onSelect } = props;
8
+ return (_jsx("div", { className: "legend-ai__product-cards", children: products.map((product, idx) => {
9
+ const candidate = scoredCandidates?.[idx];
10
+ const hasFieldInfo = candidate &&
11
+ (candidate.matchedFields.length > 0 ||
12
+ candidate.missingFields.length > 0);
13
+ const { groupId, artifactId } = unwrapProductDetails(product);
14
+ return (_jsxs("button", { type: "button", className: "legend-ai__product-card", onClick: () => onSelect(product), children: [_jsx("div", { className: "legend-ai__product-card-title", children: product.dataProductTitle ?? UNKNOWN_PRODUCT_LABEL }), product.dataProductDescription && (_jsx("div", { className: "legend-ai__product-card-desc", children: product.dataProductDescription.length >
15
+ DESCRIPTION_TRUNCATION_LENGTH
16
+ ? `${product.dataProductDescription.slice(0, DESCRIPTION_TRUNCATION_LENGTH)}...`
17
+ : product.dataProductDescription })), hasFieldInfo && (_jsxs("div", { className: "legend-ai__product-card-fields", children: [candidate.matchedFields.map((f) => (_jsxs("span", { className: "legend-ai__product-card-field legend-ai__product-card-field--matched", children: [f, " ", _jsx(CheckIcon, {})] }, f))), candidate.missingFields.map((f) => (_jsxs("span", { className: "legend-ai__product-card-field legend-ai__product-card-field--missing", children: [f, " ", _jsx(TimesIcon, {})] }, f)))] })), _jsxs("div", { className: "legend-ai__product-card-meta", children: [candidate ? (_jsxs("span", { className: "legend-ai__product-card-score", children: ["Score: ", (candidate.compositeScore * 100).toFixed(0), "%"] })) : (product.similarity > 0 && (_jsxs("span", { className: "legend-ai__product-card-score", children: ["Match: ", (product.similarity * 100).toFixed(0), "%"] }))), product.tags1.length > 0 && (_jsx("span", { className: "legend-ai__product-card-tags", children: product.tags1.slice(0, 3).join(', ') }))] }), _jsxs("div", { className: "legend-ai__product-card-action", children: ["Use this product ", _jsx(CaretRightIcon, {})] })] }, `${groupId}:${artifactId}`));
18
+ }) }));
19
+ };
20
+ //# sourceMappingURL=MarketplaceAIProductCards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIProductCards.js","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIProductCards.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) 2026-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 const MarketplaceAIScopeSelector: (() => import("react/jsx-runtime").JSX.Element) & {
17
+ displayName: string;
18
+ };
19
+ //# sourceMappingURL=MarketplaceAIScopeSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIScopeSelector.d.ts","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIScopeSelector.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,eAAO,MAAM,0BAA0B;;CA0DrC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-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 { useState, useRef, useEffect, useCallback } from 'react';
18
+ import { observer } from 'mobx-react-lite';
19
+ import { PlusIcon, DatabaseIcon } from '@finos/legend-art';
20
+ import { useLegendMarketplaceAIChatStore } from '../../application/providers/LegendMarketplaceAIChatStoreProvider.js';
21
+ import { MarketplaceAIProductAutosuggest } from './MarketplaceAIProductAutosuggest.js';
22
+ const MAX_SCOPE_PRODUCTS = 3;
23
+ export const MarketplaceAIScopeSelector = observer(() => {
24
+ const store = useLegendMarketplaceAIChatStore();
25
+ const [isOpen, setIsOpen] = useState(false);
26
+ const dropdownRef = useRef(null);
27
+ useEffect(() => {
28
+ const handleClickOutside = (e) => {
29
+ if (dropdownRef.current &&
30
+ e.target instanceof Node &&
31
+ !dropdownRef.current.contains(e.target)) {
32
+ setIsOpen(false);
33
+ }
34
+ };
35
+ if (isOpen) {
36
+ document.addEventListener('mousedown', handleClickOutside);
37
+ }
38
+ return () => document.removeEventListener('mousedown', handleClickOutside);
39
+ }, [isOpen]);
40
+ const handleSelectProduct = useCallback((result) => {
41
+ store.addScopeProduct(result);
42
+ setIsOpen(false);
43
+ }, [store]);
44
+ return (_jsxs("div", { className: "ai-scope-selector", ref: dropdownRef, children: [store.scopeProducts.length < MAX_SCOPE_PRODUCTS && (_jsx("button", { type: "button", className: "ai-scope-selector__trigger", title: "Scope to a data product", "aria-label": "Scope to a data product", onClick: () => setIsOpen(true), children: _jsx(PlusIcon, {}) })), isOpen && (_jsxs("div", { className: "ai-scope-selector__dropdown", children: [_jsxs("div", { className: "ai-scope-selector__dropdown-header", children: [_jsx(DatabaseIcon, {}), _jsx("span", { children: "Select Data Product" })] }), _jsx(MarketplaceAIProductAutosuggest, { onSelect: handleSelectProduct, className: "ai-scope-selector__autosuggest", autoFocus: true })] }))] }));
45
+ });
46
+ //# sourceMappingURL=MarketplaceAIScopeSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketplaceAIScopeSelector.js","sourceRoot":"","sources":["../../../src/pages/Agents/MarketplaceAIScopeSelector.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,qEAAqE,CAAC;AACtH,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC,GAAG,EAAE;IACtD,MAAM,KAAK,GAAG,+BAA+B,EAAE,CAAC;IAChD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,kBAAkB,GAAG,CAAC,CAAa,EAAQ,EAAE;YACjD,IACE,WAAW,CAAC,OAAO;gBACnB,CAAC,CAAC,MAAM,YAAY,IAAI;gBACxB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EACvC,CAAC;gBACD,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,MAAyB,EAAQ,EAAE;QAClC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9B,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,WAAW,aAChD,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,kBAAkB,IAAI,CAClD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAC,yBAAyB,gBACpB,yBAAyB,EACpC,OAAO,EAAE,GAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAEpC,KAAC,QAAQ,KAAG,GACL,CACV,EAEA,MAAM,IAAI,CACT,eAAK,SAAS,EAAC,6BAA6B,aAC1C,eAAK,SAAS,EAAC,oCAAoC,aACjD,KAAC,YAAY,KAAG,EAChB,iDAAgC,IAC5B,EACN,KAAC,+BAA+B,IAC9B,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAC,gCAAgC,EAC1C,SAAS,EAAE,IAAI,GACf,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LakehouseAdminContractsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAYlG,eAAO,MAAM,gCAAgC,WACnC;IAAE,UAAU,EAAE,mBAAmB,CAAA;CAAE;;CA8G5C,CAAC"}
1
+ {"version":3,"file":"LakehouseAdminContractsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAYlG,eAAO,MAAM,gCAAgC,WACnC;IAAE,UAAU,EAAE,mBAAmB,CAAA;CAAE;;CAmH5C,CAAC"}
@@ -18,18 +18,23 @@ import { observer } from 'mobx-react-lite';
18
18
  import { DataGrid, } from '@finos/legend-lego/data-grid';
19
19
  import { Box } from '@mui/material';
20
20
  import { GraphManagerState, } from '@finos/legend-graph';
21
- import { useMemo, useState } from 'react';
21
+ import { useMemo, useRef, useState } from 'react';
22
22
  import { useAuth } from 'react-oidc-context';
23
23
  import { DataAccessRequestViewer, DataContractViewerState, } from '@finos/legend-extension-dsl-data-product';
24
24
  import { generateContractPagePath, generateLakehouseDataProductPath, } from '../../../__lib__/LegendMarketplaceNavigation.js';
25
25
  export const LakehouseAdminContractsDashboard = observer((props) => {
26
26
  const { adminStore } = props;
27
27
  const auth = useAuth();
28
+ // Keep the latest access token in a ref so the grid datasource always reads
29
+ // the freshest token without being recreated on every token rotation
30
+ // (which would otherwise cause the grid to reset and refetch).
31
+ const tokenRef = useRef(auth.user?.access_token);
32
+ tokenRef.current = auth.user?.access_token;
28
33
  const [selectedContract, setSelectedContract] = useState();
29
34
  const handleRowClicked = (event) => {
30
35
  setSelectedContract(event.data);
31
36
  };
32
- const datasource = useMemo(() => adminStore.createContractsServerSideDatasource(auth.user?.access_token), [adminStore, auth.user?.access_token]);
37
+ const datasource = useMemo(() => adminStore.createContractsServerSideDatasource(() => tokenRef.current), [adminStore]);
33
38
  return (_jsxs(_Fragment, { children: [_jsx(Box, { className: "marketplace-lakehouse-admin__contracts__grid ag-theme-balham", children: _jsx(DataGrid, { rowModelType: "serverSide", serverSideDatasource: datasource, suppressFieldDotNotation: true, suppressContextMenu: false, onRowClicked: handleRowClicked, onGridReady: (params) => {
34
39
  adminStore.setContractsGridApi(params.api);
35
40
  }, columnDefs: [
@@ -1 +1 @@
1
- {"version":3,"file":"LakehouseAdminContractsDashboard.js","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LakehouseAdminContractsDashboard.js","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminContractsDashboard.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LakehouseAdminSubscriptionsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAIlG,eAAO,MAAM,oCAAoC,WACvC;IAAE,UAAU,EAAE,mBAAmB,CAAA;CAAE;;CA+F5C,CAAC"}
1
+ {"version":3,"file":"LakehouseAdminSubscriptionsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAIlG,eAAO,MAAM,oCAAoC,WACvC;IAAE,UAAU,EAAE,mBAAmB,CAAA;CAAE;;CAoG5C,CAAC"}
@@ -19,12 +19,17 @@ import { clsx } from '@finos/legend-art';
19
19
  import { DataGrid } from '@finos/legend-lego/data-grid';
20
20
  import { Box } from '@mui/material';
21
21
  import { V1_SnowflakeTarget, } from '@finos/legend-graph';
22
- import { useMemo } from 'react';
22
+ import { useMemo, useRef } from 'react';
23
23
  import { useAuth } from 'react-oidc-context';
24
24
  export const LakehouseAdminSubscriptionsDashboard = observer((props) => {
25
25
  const { adminStore } = props;
26
26
  const auth = useAuth();
27
- const datasource = useMemo(() => adminStore.createSubscriptionsServerSideDatasource(auth.user?.access_token), [adminStore, auth.user?.access_token]);
27
+ // Keep the latest access token in a ref so the grid datasource always reads
28
+ // the freshest token without being recreated on every token rotation
29
+ // (which would otherwise cause the grid to reset and refetch).
30
+ const tokenRef = useRef(auth.user?.access_token);
31
+ tokenRef.current = auth.user?.access_token;
32
+ const datasource = useMemo(() => adminStore.createSubscriptionsServerSideDatasource(() => tokenRef.current), [adminStore]);
28
33
  return (_jsx(_Fragment, { children: _jsx(Box, { className: clsx('marketplace-lakehouse-admin__subscriptions__grid', {
29
34
  'ag-theme-balham': true,
30
35
  }), children: _jsx(DataGrid, { rowModelType: "serverSide", serverSideDatasource: datasource, suppressFieldDotNotation: true, suppressContextMenu: false, onGridReady: (params) => {
@@ -1 +1 @@
1
- {"version":3,"file":"LakehouseAdminSubscriptionsDashboard.js","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LakehouseAdminSubscriptionsDashboard.js","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/admin/LakehouseAdminSubscriptionsDashboard.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntitlementsClosedContractsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsBH,OAAO,KAAK,EAEV,0BAA0B,EAC3B,MAAM,sEAAsE,CAAC;AAkB9E,eAAO,MAAM,oCAAoC,WACvC;IAAE,cAAc,EAAE,0BAA0B,CAAA;CAAE,KAAG,KAAK,CAAC,SAAS;;CA0NzE,CAAC"}
1
+ {"version":3,"file":"EntitlementsClosedContractsDashboard.d.ts","sourceRoot":"","sources":["../../../../src/pages/Lakehouse/entitlements/EntitlementsClosedContractsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoBH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAC;AA0BvH,eAAO,MAAM,oCAAoC,WACvC;IAAE,cAAc,EAAE,0BAA0B,CAAA;CAAE,KAAG,KAAK,CAAC,SAAS;;CAoNzE,CAAC"}
@@ -14,92 +14,106 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { GraphManagerState, V1_AdhocTeam, V1_ContractState, V1_LiteDataContractWithUserStatus, } from '@finos/legend-graph';
17
+ import { V1_AdhocTeam, V1_ContractState, V1_LiteDataContractWithUserStatus, } from '@finos/legend-graph';
18
18
  import { DataGrid, } from '@finos/legend-lego/data-grid';
19
19
  import { Box, CircularProgress, FormControlLabel, FormGroup, Switch, } from '@mui/material';
20
- import { useMemo, useState } from 'react';
20
+ import { useEffect, useMemo, useState } from 'react';
21
+ import { startCase } from '@finos/legend-shared';
21
22
  import { useLegendMarketplaceBaseStore } from '../../../application/providers/LegendMarketplaceFrameworkProvider.js';
22
23
  import { observer } from 'mobx-react-lite';
23
24
  import { useAuth } from 'react-oidc-context';
24
- import { DataAccessRequestViewer, DataContractViewerState, isApprovalStatusTerminal, isContractInTerminalState, } from '@finos/legend-extension-dsl-data-product';
25
- import { generateContractPagePath, generateLakehouseDataProductPath, } from '../../../__lib__/LegendMarketplaceNavigation.js';
25
+ import { DataAccessRequestViewer, isApprovalStatusTerminal, isContractInTerminalState, } from '@finos/legend-extension-dsl-data-product';
26
26
  import { flowResult } from 'mobx';
27
- import { getCommonEntitlementsColDefs } from '../../../utils/EntitlementsUtils.js';
27
+ import { getCommonEntitlementsColDefs, getSelectedRowId, getSelectedContractGuid, EntitlementsColumnHeader, ENTITLEMENTS_DEFAULT_COL_DEF, ROW_KIND_CONTRACT, ROW_KIND_REQUEST, TERMINAL_DATA_REQUEST_STATES, UNKNOWN, useSelectedViewerState, useGetDataProductUrl, } from '../../../utils/EntitlementsUtils.js';
28
28
  export const EntitlementsClosedContractsDashboard = observer((props) => {
29
29
  const { dashboardState } = props;
30
- const { allContractsForUser, allContractsCreatedByUser } = dashboardState;
30
+ const { allContractsForUser, allContractsCreatedByUser, dataRequestsCreatedByUser, } = dashboardState;
31
31
  const marketplaceBaseStore = useLegendMarketplaceBaseStore();
32
32
  const auth = useAuth();
33
+ const getDataProductUrl = useGetDataProductUrl();
33
34
  const myClosedContracts = useMemo(() => allContractsForUser?.filter((contract) => isApprovalStatusTerminal(contract.status)) ?? [], [allContractsForUser]);
34
35
  const myClosedContractIds = useMemo(() => new Set(myClosedContracts.map((c) => c.contractResultLite.guid)), [myClosedContracts]);
35
36
  const closedContractsForOthers = useMemo(() => allContractsCreatedByUser.filter((contract) => isContractInTerminalState(contract.contractResultLite) &&
36
37
  !myClosedContractIds.has(contract.contractResultLite.guid)), [allContractsCreatedByUser, myClosedContractIds]);
37
- const [selectedContract, setSelectedContract] = useState();
38
+ const closedDataRequests = useMemo(() => (dataRequestsCreatedByUser ?? []).filter((dr) => TERMINAL_DATA_REQUEST_STATES.has(dr.dataRequest.state)), [dataRequestsCreatedByUser]);
39
+ const [selectedRow, setSelectedRow] = useState();
38
40
  const [contractErrors, setContractErrors] = useState(undefined);
39
41
  const [showForOthers, setShowForOthers] = useState(myClosedContracts.length === 0 && closedContractsForOthers.length > 0);
40
- const handleCellClicked = async (event) => {
41
- const contract = event.data?.contractResultLite;
42
- setSelectedContract(contract);
42
+ useEffect(() => {
43
43
  setContractErrors(undefined);
44
- if (contract !== undefined) {
44
+ if (selectedRow?.kind === ROW_KIND_CONTRACT) {
45
+ const contract = selectedRow.data.contractResultLite;
45
46
  const isCompleted = contract.state === V1_ContractState.COMPLETED;
46
- const result = await dashboardState.getContractErrors(contract.guid, auth.user?.access_token, isCompleted);
47
- setContractErrors(result);
47
+ dashboardState
48
+ .getContractErrors(contract.guid, auth.user?.access_token, isCompleted)
49
+ .then((result) => setContractErrors(result))
50
+ .catch(() => setContractErrors(undefined));
48
51
  }
49
- };
50
- const defaultColDef = useMemo(() => ({
51
- minWidth: 50,
52
- sortable: true,
53
- resizable: true,
54
- flex: 1,
55
- }), []);
56
- const colDefs = useMemo(() => [
57
- ...getCommonEntitlementsColDefs(dashboardState),
58
- {
59
- headerName: 'State',
60
- valueGetter: (params) => params.data instanceof V1_LiteDataContractWithUserStatus
61
- ? params.data.status
62
- : (params.data?.contractResultLite.state ?? 'Unknown'),
63
- },
64
- {
65
- headerName: 'Business Justification',
66
- valueGetter: (p) => p.data?.contractResultLite.description,
67
- },
68
- {
69
- hide: true,
70
- headerName: 'Contract ID',
71
- valueGetter: (p) => p.data?.contractResultLite.guid,
72
- },
73
- ], [dashboardState]);
74
- const gridRowData = useMemo(() => showForOthers
75
- ? [...myClosedContracts, ...closedContractsForOthers]
76
- : myClosedContracts, [myClosedContracts, closedContractsForOthers, showForOthers]);
52
+ }, [selectedRow, auth.user?.access_token, dashboardState]);
53
+ const selectedRowId = getSelectedRowId(selectedRow);
54
+ const selectedViewerState = useSelectedViewerState(selectedRow, selectedRowId);
77
55
  const getInitialUserForViewer = () => {
78
- const currentUser = dashboardState.lakehouseEntitlementsStore.applicationStore
79
- .identityService.currentUser;
80
- if (selectedContract && myClosedContractIds.has(selectedContract.guid)) {
56
+ if (selectedRow?.kind !== ROW_KIND_CONTRACT) {
57
+ return undefined;
58
+ }
59
+ const contract = selectedRow.data.contractResultLite;
60
+ const currentUser = marketplaceBaseStore.applicationStore.identityService.currentUser;
61
+ if (myClosedContractIds.has(contract.guid)) {
81
62
  return currentUser;
82
63
  }
83
- if (selectedContract &&
84
- selectedContract.consumer instanceof V1_AdhocTeam &&
85
- selectedContract.consumer.users.some((user) => user.name === currentUser)) {
64
+ if (contract.consumer instanceof V1_AdhocTeam &&
65
+ contract.consumer.users.some((user) => user.name === currentUser)) {
86
66
  return currentUser;
87
67
  }
88
68
  return undefined;
89
69
  };
70
+ const selectedContractGuid = getSelectedContractGuid(selectedRow);
71
+ const colDefs = useMemo(() => [
72
+ ...getCommonEntitlementsColDefs(dashboardState),
73
+ {
74
+ headerName: EntitlementsColumnHeader.STATE,
75
+ valueGetter: (params) => {
76
+ if (!params.data) {
77
+ return UNKNOWN;
78
+ }
79
+ if (params.data.kind === ROW_KIND_CONTRACT) {
80
+ return params.data.data instanceof
81
+ V1_LiteDataContractWithUserStatus
82
+ ? params.data.data.status
83
+ : params.data.data.contractResultLite.state;
84
+ }
85
+ return startCase(params.data.data.dataRequest.state);
86
+ },
87
+ },
88
+ ], [dashboardState]);
89
+ const gridRowData = useMemo(() => {
90
+ const contracts = showForOthers
91
+ ? [...myClosedContracts, ...closedContractsForOthers]
92
+ : myClosedContracts;
93
+ return [
94
+ ...contracts.map((c) => ({ kind: ROW_KIND_CONTRACT, data: c })),
95
+ ...closedDataRequests.map((r) => ({ kind: ROW_KIND_REQUEST, data: r })),
96
+ ];
97
+ }, [
98
+ showForOthers,
99
+ myClosedContracts,
100
+ closedContractsForOthers,
101
+ closedDataRequests,
102
+ ]);
90
103
  return (_jsxs(Box, { className: "marketplace-lakehouse-entitlements__completed-contracts", children: [_jsx(FormGroup, { className: "marketplace-lakehouse-entitlements__completed-contracts__action-btns", children: _jsx(FormControlLabel, { control: dashboardState.fetchingContractsByUserState.isInProgress ? (_jsx(Box, { className: "marketplace-lakehouse-entitlements__pending-contracts__action-btn--loading", children: _jsx(CircularProgress, { size: 20 }) })) : (_jsx(Switch, { checked: showForOthers, onChange: (event) => setShowForOthers(event.target.checked) })), label: "Show my requests for others", title: dashboardState.fetchingContractsByUserState.isInProgress
91
104
  ? 'Loading requests for others'
92
105
  : undefined, disabled: dashboardState.fetchingContractsByUserState.isInProgress, className: "marketplace-lakehouse-entitlements__completed-contracts__action-btn" }) }), _jsx(Box, { className: "marketplace-lakehouse-entitlements__completed-contracts__grid ag-theme-balham", children: _jsx(DataGrid, { rowData: gridRowData, onRowDataUpdated: (params) => {
93
106
  params.api.refreshCells({ force: true });
94
- }, suppressFieldDotNotation: true, suppressContextMenu: false, columnDefs: colDefs, onCellClicked: (event) =>
95
- // eslint-disable-next-line no-void
96
- void handleCellClicked(event), defaultColDef: defaultColDef, rowHeight: 45, overlayNoRowsTemplate: "You have no closed contracts", loading: dashboardState.fetchingContractsForUserState.isInProgress, overlayLoadingTemplate: "Loading contracts" }) }), selectedContract !== undefined && (_jsx(DataAccessRequestViewer, { open: true, onClose: () => {
97
- setSelectedContract(undefined);
107
+ }, suppressFieldDotNotation: true, suppressContextMenu: false, columnDefs: colDefs, onCellClicked: (event) => event.data && setSelectedRow(event.data), defaultColDef: ENTITLEMENTS_DEFAULT_COL_DEF, rowHeight: 45, overlayNoRowsTemplate: "You have no closed contracts or data requests", loading: dashboardState.fetchingContractsForUserState.isInProgress ||
108
+ dashboardState.fetchingDataRequestsCreatedByUserState.isInProgress, overlayLoadingTemplate: "Loading" }) }), selectedRow !== undefined && selectedViewerState !== undefined && (_jsx(DataAccessRequestViewer, { open: true, onClose: () => {
109
+ setSelectedRow(undefined);
98
110
  setContractErrors(undefined);
99
- }, contractErrors: contractErrors, viewerState: new DataContractViewerState(selectedContract, (contractId, taskId) => marketplaceBaseStore.applicationStore.navigationService.navigator.generateAddress(generateContractPagePath(contractId, taskId)), undefined, marketplaceBaseStore.applicationStore, marketplaceBaseStore.lakehouseContractServerClient, new GraphManagerState(marketplaceBaseStore.applicationStore.pluginManager, marketplaceBaseStore.applicationStore.logService), marketplaceBaseStore.userSearchService), initialSelectedUser: getInitialUserForViewer(), onRefresh: async () => {
100
- await flowResult(dashboardState.updateContract(selectedContract.guid, auth.user?.access_token));
101
- }, getDataProductUrl: (dataProductId, deploymentId) => marketplaceBaseStore.applicationStore.navigationService.navigator.generateAddress(generateLakehouseDataProductPath(dataProductId, deploymentId)),
102
- //Derives environment from the fact that other environments are filtered out
103
- dataProductEnvironment: marketplaceBaseStore.envState.lakehouseEnvironment }))] }));
111
+ }, contractErrors: contractErrors, viewerState: selectedViewerState, initialSelectedUser: getInitialUserForViewer(), ...(selectedContractGuid
112
+ ? {
113
+ onRefresh: async () => {
114
+ await flowResult(dashboardState.updateContract(selectedContractGuid, auth.user?.access_token));
115
+ },
116
+ }
117
+ : {}), getDataProductUrl: getDataProductUrl, dataProductEnvironment: marketplaceBaseStore.envState.lakehouseEnvironment }))] }));
104
118
  });
105
119
  //# sourceMappingURL=EntitlementsClosedContractsDashboard.js.map