@axiom-lattice/react-sdk 2.1.80 → 2.1.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +664 -637
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -37
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -5009,12 +5009,26 @@ import { parse } from "best-effort-json-parser";
|
|
|
5009
5009
|
import { Table, Typography as Typography3, Button as Button5, Flex, Space as Space2 } from "antd";
|
|
5010
5010
|
import { useState as useState21 } from "react";
|
|
5011
5011
|
import { DownloadOutlined, ExpandAltOutlined } from "@ant-design/icons";
|
|
5012
|
+
|
|
5013
|
+
// src/components/Chat/SideAppBrowserContext.tsx
|
|
5014
|
+
import { createContext as createContext8, useContext as useContext8 } from "react";
|
|
5015
|
+
var SideAppBrowserContext = createContext8(null);
|
|
5016
|
+
var useSideAppBrowser = () => {
|
|
5017
|
+
return useContext8(SideAppBrowserContext);
|
|
5018
|
+
};
|
|
5019
|
+
var useSideAppOpener = () => {
|
|
5020
|
+
const { openSideApp } = useChatUIContext();
|
|
5021
|
+
const browserCtx = useContext8(SideAppBrowserContext);
|
|
5022
|
+
return browserCtx?.openApp ?? openSideApp;
|
|
5023
|
+
};
|
|
5024
|
+
|
|
5025
|
+
// src/components/GenUI/elements/generic_data_table.tsx
|
|
5012
5026
|
import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
5013
5027
|
var { Text: Text3 } = Typography3;
|
|
5014
5028
|
var GenericDataTable = ({ data, interactive = true, default_open_in_side_app = true }) => {
|
|
5015
5029
|
const { dataSource, message: message23 } = data ?? {};
|
|
5016
5030
|
const [expandedRowKeys, setExpandedRowKeys] = useState21([]);
|
|
5017
|
-
const
|
|
5031
|
+
const openSideApp = useSideAppOpener();
|
|
5018
5032
|
const processedData = dataSource?.map((item, index) => ({
|
|
5019
5033
|
...item,
|
|
5020
5034
|
key: `${index}_${JSON.stringify(item).slice(0, 20)}`
|
|
@@ -6459,7 +6473,7 @@ var FileLink = ({ data }) => {
|
|
|
6459
6473
|
if (!isFileName(data)) {
|
|
6460
6474
|
return /* @__PURE__ */ jsx21(Fragment2, { children: data });
|
|
6461
6475
|
}
|
|
6462
|
-
const
|
|
6476
|
+
const openSideApp = useSideAppOpener();
|
|
6463
6477
|
const { threadId, assistantId } = useConversationContext();
|
|
6464
6478
|
const { config } = useLatticeChatShellContext();
|
|
6465
6479
|
const fileBaseURL = useMemo5(() => {
|
|
@@ -7978,7 +7992,7 @@ var AttachmentsCard = ({
|
|
|
7978
7992
|
const fileBaseURL = `${baseURL}/api/assistants/${assistantId}/threads/${threadId}/sandbox/downloadfile?path=`;
|
|
7979
7993
|
const { Text: Text48 } = Typography10;
|
|
7980
7994
|
const [showAll, setShowAll] = useState30(false);
|
|
7981
|
-
const
|
|
7995
|
+
const openSideApp = useSideAppOpener();
|
|
7982
7996
|
const getStyles = () => {
|
|
7983
7997
|
switch (size) {
|
|
7984
7998
|
case "small":
|
|
@@ -8377,7 +8391,7 @@ var WriteFile = ({
|
|
|
8377
8391
|
}) => {
|
|
8378
8392
|
const toolCallData = data;
|
|
8379
8393
|
const { file_path, content } = toolCallData?.args || {};
|
|
8380
|
-
const
|
|
8394
|
+
const openSideApp = useSideAppOpener();
|
|
8381
8395
|
if (!toolCallData) {
|
|
8382
8396
|
return null;
|
|
8383
8397
|
}
|
|
@@ -8446,7 +8460,7 @@ var EditFile = ({
|
|
|
8446
8460
|
}) => {
|
|
8447
8461
|
const toolCallData = data;
|
|
8448
8462
|
const { file_path, new_string, old_string } = toolCallData?.args || {};
|
|
8449
|
-
const
|
|
8463
|
+
const openSideApp = useSideAppOpener();
|
|
8450
8464
|
if (!toolCallData) {
|
|
8451
8465
|
return null;
|
|
8452
8466
|
}
|
|
@@ -8654,7 +8668,7 @@ var TaskCard = ({
|
|
|
8654
8668
|
}) => {
|
|
8655
8669
|
const { styles } = useStyle5();
|
|
8656
8670
|
const toolCallData = data;
|
|
8657
|
-
const
|
|
8671
|
+
const openSideApp = useSideAppOpener();
|
|
8658
8672
|
if (!toolCallData) {
|
|
8659
8673
|
return null;
|
|
8660
8674
|
}
|
|
@@ -8870,7 +8884,7 @@ var MessageList = ({
|
|
|
8870
8884
|
className
|
|
8871
8885
|
}) => {
|
|
8872
8886
|
const { styles } = useStyle();
|
|
8873
|
-
const
|
|
8887
|
+
const openSideApp = useSideAppOpener();
|
|
8874
8888
|
const messageLengthRef = useRef13(messages?.length ?? 0);
|
|
8875
8889
|
useEffect23(() => {
|
|
8876
8890
|
if (messages?.length) {
|
|
@@ -8982,7 +8996,7 @@ import {
|
|
|
8982
8996
|
Space as Space30,
|
|
8983
8997
|
Typography as Typography42
|
|
8984
8998
|
} from "antd";
|
|
8985
|
-
import React51, { useCallback as useCallback33, useContext as
|
|
8999
|
+
import React51, { useCallback as useCallback33, useContext as useContext11, useEffect as useEffect45, useRef as useRef23, useState as useState65 } from "react";
|
|
8986
9000
|
import { BrainCircuit as BrainCircuit3 } from "lucide-react";
|
|
8987
9001
|
|
|
8988
9002
|
// src/components/GenUI/HITLContainer.tsx
|
|
@@ -9929,7 +9943,7 @@ var AgentHeader = ({
|
|
|
9929
9943
|
};
|
|
9930
9944
|
|
|
9931
9945
|
// src/components/Chat/ThreadManagementButtons.tsx
|
|
9932
|
-
import { useCallback as useCallback23, useContext as
|
|
9946
|
+
import { useCallback as useCallback23, useContext as useContext9 } from "react";
|
|
9933
9947
|
import { Tooltip as Tooltip9, Button as Button23, Dropdown } from "antd";
|
|
9934
9948
|
import { HistoryOutlined, PlusOutlined } from "@ant-design/icons";
|
|
9935
9949
|
import { Fragment as Fragment6, jsx as jsx55, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
@@ -10019,8 +10033,8 @@ var ThreadListButton = () => {
|
|
|
10019
10033
|
) });
|
|
10020
10034
|
};
|
|
10021
10035
|
var ThreadManagementButtons = () => {
|
|
10022
|
-
const shellContext =
|
|
10023
|
-
const conversationContext =
|
|
10036
|
+
const shellContext = useContext9(LatticeChatShellContext);
|
|
10037
|
+
const conversationContext = useContext9(ConversationContext);
|
|
10024
10038
|
if (!shellContext || !conversationContext) {
|
|
10025
10039
|
return null;
|
|
10026
10040
|
}
|
|
@@ -10041,8 +10055,8 @@ var ThreadManagementButtons = () => {
|
|
|
10041
10055
|
|
|
10042
10056
|
// src/context/WorkspaceContext.tsx
|
|
10043
10057
|
import React43, {
|
|
10044
|
-
createContext as
|
|
10045
|
-
useContext as
|
|
10058
|
+
createContext as createContext9,
|
|
10059
|
+
useContext as useContext10,
|
|
10046
10060
|
useState as useState57,
|
|
10047
10061
|
useCallback as useCallback31,
|
|
10048
10062
|
useEffect as useEffect40
|
|
@@ -11967,7 +11981,7 @@ var DatabaseConfigFormModal = ({
|
|
|
11967
11981
|
{
|
|
11968
11982
|
value: formData.connectionString,
|
|
11969
11983
|
onChange: (e) => setFormData({ ...formData, connectionString: e.target.value }),
|
|
11970
|
-
placeholder: "e.g., postgresql://user:pass@host:5432/dbname or
|
|
11984
|
+
placeholder: "e.g., postgresql://user:pass@host:5432/dbname or mysql://user:pass@host:3306/dbname",
|
|
11971
11985
|
rows: 3,
|
|
11972
11986
|
style: { width: "100%" }
|
|
11973
11987
|
}
|
|
@@ -21353,9 +21367,9 @@ var WorkspaceResourceUIContext = ({
|
|
|
21353
21367
|
|
|
21354
21368
|
// src/context/WorkspaceContext.tsx
|
|
21355
21369
|
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
21356
|
-
var WorkspaceContext =
|
|
21370
|
+
var WorkspaceContext = createContext9(null);
|
|
21357
21371
|
var useWorkspaceContext = () => {
|
|
21358
|
-
const context =
|
|
21372
|
+
const context = useContext10(WorkspaceContext);
|
|
21359
21373
|
if (!context) {
|
|
21360
21374
|
throw new Error("useWorkspaceContext must be used within a WorkspaceContextProvider");
|
|
21361
21375
|
}
|
|
@@ -23298,7 +23312,7 @@ var Chating = ({
|
|
|
23298
23312
|
const { baseURL } = config;
|
|
23299
23313
|
const user = useAuthOptional()?.user;
|
|
23300
23314
|
const displayUserName = user?.name || user?.email?.split("@")[0] || "there";
|
|
23301
|
-
const workspaceContext =
|
|
23315
|
+
const workspaceContext = useContext11(WorkspaceContext);
|
|
23302
23316
|
const listPath = workspaceContext?.listPath ?? (async () => []);
|
|
23303
23317
|
const listPathByFolder = workspaceContext?.listPathByFolder ?? (async () => []);
|
|
23304
23318
|
const workspaceId = workspaceContext?.workspaceId ?? null;
|
|
@@ -23917,7 +23931,7 @@ var InternetSearchCard = ({
|
|
|
23917
23931
|
const toolCallData = data;
|
|
23918
23932
|
const { query } = toolCallData?.args || {};
|
|
23919
23933
|
const dataSource = JSON.parse(toolCallData.response || "[]");
|
|
23920
|
-
const
|
|
23934
|
+
const openSideApp = useSideAppOpener();
|
|
23921
23935
|
if (!toolCallData) {
|
|
23922
23936
|
return null;
|
|
23923
23937
|
}
|
|
@@ -24396,7 +24410,7 @@ var BrowserViewer = ({
|
|
|
24396
24410
|
}
|
|
24397
24411
|
)
|
|
24398
24412
|
] });
|
|
24399
|
-
const
|
|
24413
|
+
const openSideApp = useSideAppOpener();
|
|
24400
24414
|
if (!toolCallData) {
|
|
24401
24415
|
return null;
|
|
24402
24416
|
}
|
|
@@ -24443,7 +24457,7 @@ var ExecuteCode = ({
|
|
|
24443
24457
|
}) => {
|
|
24444
24458
|
const toolCallData = data;
|
|
24445
24459
|
const { language, code } = toolCallData?.args || {};
|
|
24446
|
-
const
|
|
24460
|
+
const openSideApp = useSideAppOpener();
|
|
24447
24461
|
if (!toolCallData) {
|
|
24448
24462
|
return null;
|
|
24449
24463
|
}
|
|
@@ -24545,7 +24559,7 @@ var TeamGraph = ({ data }) => {
|
|
|
24545
24559
|
const teammates = safeGetTeammates(data);
|
|
24546
24560
|
const tasks = safeGetTasks(data);
|
|
24547
24561
|
const teamId = safeGetTeamId(data);
|
|
24548
|
-
const
|
|
24562
|
+
const openSideApp = useSideAppOpener();
|
|
24549
24563
|
const { threadId, assistantId } = useAgentChat();
|
|
24550
24564
|
const colors3 = [
|
|
24551
24565
|
"#1890ff",
|
|
@@ -29392,7 +29406,7 @@ var ShowWidget = ({
|
|
|
29392
29406
|
}) => {
|
|
29393
29407
|
const toolCallData = data;
|
|
29394
29408
|
const { title, loading_messages, widget_code } = toolCallData?.args || {};
|
|
29395
|
-
const
|
|
29409
|
+
const openSideApp = useSideAppOpener();
|
|
29396
29410
|
const { sendMessage } = useAgentChat();
|
|
29397
29411
|
if (!toolCallData) {
|
|
29398
29412
|
return null;
|
|
@@ -29620,7 +29634,7 @@ var regsiterElement = (language, ElementMeta) => {
|
|
|
29620
29634
|
// src/components/Chat/SideAppViewBrowser.tsx
|
|
29621
29635
|
import { Dropdown as Dropdown3, Tooltip as Tooltip23 } from "antd";
|
|
29622
29636
|
import { createStyles as createStyles34 } from "antd-style";
|
|
29623
|
-
import { useEffect as useEffect49, useState as useState74 } from "react";
|
|
29637
|
+
import { useEffect as useEffect49, useMemo as useMemo30, useState as useState74 } from "react";
|
|
29624
29638
|
import { Fragment as Fragment21, jsx as jsx113, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
29625
29639
|
var useStyle17 = createStyles34(({ token, css }) => {
|
|
29626
29640
|
return {
|
|
@@ -29814,10 +29828,13 @@ var SideAppViewBrowser = ({ region = "side" }) => {
|
|
|
29814
29828
|
sideAppSelectedCard,
|
|
29815
29829
|
contentAppSelectedCard: contextAppSelectedCard,
|
|
29816
29830
|
closeSideApp,
|
|
29817
|
-
closeContentApp
|
|
29831
|
+
closeContentApp,
|
|
29832
|
+
openSideApp,
|
|
29833
|
+
openContentApp
|
|
29818
29834
|
} = useChatUIContext();
|
|
29819
29835
|
const selectedCard = region === "side" ? sideAppSelectedCard : contextAppSelectedCard;
|
|
29820
29836
|
const closeApp = region === "side" ? closeSideApp : closeContentApp;
|
|
29837
|
+
const openApp = region === "side" ? openSideApp : openContentApp;
|
|
29821
29838
|
const [activeKey, setActiveKey] = useState74(
|
|
29822
29839
|
JSON.stringify(selectedCard)
|
|
29823
29840
|
);
|
|
@@ -29905,6 +29922,10 @@ var SideAppViewBrowser = ({ region = "side" }) => {
|
|
|
29905
29922
|
),
|
|
29906
29923
|
onClick: () => switchTab(item.key)
|
|
29907
29924
|
}));
|
|
29925
|
+
const sideAppBrowserValue = useMemo30(
|
|
29926
|
+
() => ({ openApp }),
|
|
29927
|
+
[openApp]
|
|
29928
|
+
);
|
|
29908
29929
|
return /* @__PURE__ */ jsxs83("div", { className: styles.container, children: [
|
|
29909
29930
|
/* @__PURE__ */ jsxs83("div", { className: styles.header, children: [
|
|
29910
29931
|
/* @__PURE__ */ jsx113("div", { className: styles.tabsStrip, children: items.map((item) => /* @__PURE__ */ jsx113(Tooltip23, { title: item.label, placement: "bottom", children: /* @__PURE__ */ jsxs83(
|
|
@@ -29946,15 +29967,15 @@ var SideAppViewBrowser = ({ region = "side" }) => {
|
|
|
29946
29967
|
/* @__PURE__ */ jsx113(Tooltip23, { title: "Close", children: /* @__PURE__ */ jsx113("button", { className: styles.actionBtn, onClick: closeApp, children: /* @__PURE__ */ jsx113(CloseOutlined4, {}) }) })
|
|
29947
29968
|
] })
|
|
29948
29969
|
] }),
|
|
29949
|
-
/* @__PURE__ */ jsx113("div", { className: styles.content, children: activeItem ? /* @__PURE__ */ jsx113("div", { className: styles.contentWrapper, children: activeItem.children }, activeItem.key) : /* @__PURE__ */ jsxs83("div", { className: styles.emptyState, children: [
|
|
29970
|
+
/* @__PURE__ */ jsx113("div", { className: styles.content, children: /* @__PURE__ */ jsx113(SideAppBrowserContext.Provider, { value: sideAppBrowserValue, children: activeItem ? /* @__PURE__ */ jsx113("div", { className: styles.contentWrapper, children: activeItem.children }, activeItem.key) : /* @__PURE__ */ jsxs83("div", { className: styles.emptyState, children: [
|
|
29950
29971
|
/* @__PURE__ */ jsx113(AppstoreOutlined, { className: "icon" }),
|
|
29951
29972
|
/* @__PURE__ */ jsx113("span", { children: "Select an app to start" })
|
|
29952
|
-
] }) })
|
|
29973
|
+
] }) }) })
|
|
29953
29974
|
] });
|
|
29954
29975
|
};
|
|
29955
29976
|
|
|
29956
29977
|
// src/components/Chat/ProjectSelector.tsx
|
|
29957
|
-
import { useState as useState75, useCallback as useCallback38, useMemo as
|
|
29978
|
+
import { useState as useState75, useCallback as useCallback38, useMemo as useMemo31, useRef as useRef26 } from "react";
|
|
29958
29979
|
import { Modal as Modal20, Input as Input15, Button as Button54, message as message18 } from "antd";
|
|
29959
29980
|
import { createStyles as createStyles35 } from "antd-style";
|
|
29960
29981
|
import { Folder, ChevronDown as ChevronDown6, Building2 as Building24 } from "lucide-react";
|
|
@@ -30198,10 +30219,10 @@ var ProjectSelector = ({
|
|
|
30198
30219
|
const [validationError, setValidationError] = useState75(null);
|
|
30199
30220
|
const [isCreating, setIsCreating] = useState75(false);
|
|
30200
30221
|
const projectNameInputRef = useRef26(null);
|
|
30201
|
-
const currentProject =
|
|
30222
|
+
const currentProject = useMemo31(() => {
|
|
30202
30223
|
return projects.find((p) => p.id === projectId);
|
|
30203
30224
|
}, [projects, projectId]);
|
|
30204
|
-
const currentWorkspace =
|
|
30225
|
+
const currentWorkspace = useMemo31(() => {
|
|
30205
30226
|
return workspaces.find((w) => w.id === workspaceId);
|
|
30206
30227
|
}, [workspaces, workspaceId]);
|
|
30207
30228
|
const handleSelectProject = useCallback38((selectedProjectId) => {
|
|
@@ -30365,7 +30386,7 @@ var ProjectSelector = ({
|
|
|
30365
30386
|
};
|
|
30366
30387
|
|
|
30367
30388
|
// src/components/Chat/ToolPanelFiles.tsx
|
|
30368
|
-
import { useCallback as useCallback39, useEffect as useEffect50, useMemo as
|
|
30389
|
+
import { useCallback as useCallback39, useEffect as useEffect50, useMemo as useMemo32, useState as useState76 } from "react";
|
|
30369
30390
|
import { message as message19 } from "antd";
|
|
30370
30391
|
|
|
30371
30392
|
// src/components/Chat/FileDirectoryPanel.tsx
|
|
@@ -30730,7 +30751,7 @@ var ToolPanelFiles = () => {
|
|
|
30730
30751
|
const [directoryLoading, setDirectoryLoading] = useState76({});
|
|
30731
30752
|
const [directoryExpanded, setDirectoryExpanded] = useState76({});
|
|
30732
30753
|
const [uploadingFolder, setUploadingFolder] = useState76(null);
|
|
30733
|
-
const resourceFolders =
|
|
30754
|
+
const resourceFolders = useMemo32(() => {
|
|
30734
30755
|
return config.resourceFolders && config.resourceFolders.length > 0 ? config.resourceFolders : [{ name: "/", displayName: "Project Assets", allowUpload: true }];
|
|
30735
30756
|
}, [config.resourceFolders]);
|
|
30736
30757
|
const loadAssetsForFolder = useCallback39(
|
|
@@ -30992,7 +31013,7 @@ var LatticeChat = (props) => {
|
|
|
30992
31013
|
// src/components/Chat/AgentConversations.tsx
|
|
30993
31014
|
import { Conversations } from "@ant-design/x";
|
|
30994
31015
|
import { theme as theme16 } from "antd";
|
|
30995
|
-
import { useMemo as
|
|
31016
|
+
import { useMemo as useMemo33 } from "react";
|
|
30996
31017
|
import { jsx as jsx119 } from "react/jsx-runtime";
|
|
30997
31018
|
var AgentConversations = ({
|
|
30998
31019
|
enableThreadCreation = true,
|
|
@@ -31013,7 +31034,7 @@ var AgentConversations = ({
|
|
|
31013
31034
|
background: "transparent",
|
|
31014
31035
|
borderRadius: token.borderRadius
|
|
31015
31036
|
};
|
|
31016
|
-
const threadItems =
|
|
31037
|
+
const threadItems = useMemo33(() => {
|
|
31017
31038
|
return threads || [];
|
|
31018
31039
|
}, [threads]);
|
|
31019
31040
|
const items = threadItems.map((thread2) => ({
|
|
@@ -31048,10 +31069,10 @@ var AgentConversations = ({
|
|
|
31048
31069
|
};
|
|
31049
31070
|
|
|
31050
31071
|
// src/components/Chat/LatticeChatView.tsx
|
|
31051
|
-
import { useContext as
|
|
31072
|
+
import { useContext as useContext12 } from "react";
|
|
31052
31073
|
|
|
31053
31074
|
// src/components/Chat/ChatSidebar.tsx
|
|
31054
|
-
import { useState as useState77, useMemo as
|
|
31075
|
+
import { useState as useState77, useMemo as useMemo34, useCallback as useCallback41 } from "react";
|
|
31055
31076
|
import { Drawer as Drawer3, Avatar as Avatar14, Popover as Popover3, Button as Button56 } from "antd";
|
|
31056
31077
|
import {
|
|
31057
31078
|
History as History2,
|
|
@@ -31299,7 +31320,7 @@ var ChatSidebar = ({
|
|
|
31299
31320
|
sidebarLogoIcon
|
|
31300
31321
|
} = config;
|
|
31301
31322
|
const isExpandedMode = sidebarMode === "expanded";
|
|
31302
|
-
const menuItems =
|
|
31323
|
+
const menuItems = useMemo34(() => {
|
|
31303
31324
|
const items = customMenuItems.length > 0 ? [...customMenuItems] : [...DEFAULT_MENU_ITEMS];
|
|
31304
31325
|
return items.sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
31305
31326
|
}, [customMenuItems]);
|
|
@@ -31518,7 +31539,7 @@ var ChatSidebar = ({
|
|
|
31518
31539
|
// src/components/Chat/LatticeChatView.tsx
|
|
31519
31540
|
import { jsx as jsx122 } from "react/jsx-runtime";
|
|
31520
31541
|
var LatticeChatView = (props) => {
|
|
31521
|
-
const shellContext =
|
|
31542
|
+
const shellContext = useContext12(LatticeChatShellContext);
|
|
31522
31543
|
const { showSideMenu, sideMenuItems } = shellContext.config;
|
|
31523
31544
|
const { assistantId, thread } = useConversationContext();
|
|
31524
31545
|
const { currentAssistant } = useAssistantContext();
|
|
@@ -33282,6 +33303,7 @@ export {
|
|
|
33282
33303
|
ProtectedRoute,
|
|
33283
33304
|
RegisterForm,
|
|
33284
33305
|
ScheduleButton,
|
|
33306
|
+
SideAppBrowserContext,
|
|
33285
33307
|
SideAppViewBrowser,
|
|
33286
33308
|
SkillCategoryPrompts_default as SkillCategoryPrompts,
|
|
33287
33309
|
SkillFlow_default as SkillFlow,
|
|
@@ -33325,6 +33347,8 @@ export {
|
|
|
33325
33347
|
useEvalRuns,
|
|
33326
33348
|
useEvalSuites,
|
|
33327
33349
|
useLatticeChatShellContext,
|
|
33350
|
+
useSideAppBrowser,
|
|
33351
|
+
useSideAppOpener,
|
|
33328
33352
|
useTenants,
|
|
33329
33353
|
useUsers
|
|
33330
33354
|
};
|