@datarecce/ui 0.1.21 → 0.1.23

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 (82) hide show
  1. package/dist/RecceCheckContext-DIQjrvH8.mjs +228 -0
  2. package/dist/RecceCheckContext-DIQjrvH8.mjs.map +1 -0
  3. package/dist/RecceCheckContext-_xzNlnbJ.js +302 -0
  4. package/dist/RecceCheckContext-_xzNlnbJ.js.map +1 -0
  5. package/dist/api.d.mts +2 -102
  6. package/dist/api.d.ts +2 -102
  7. package/dist/api.js +59 -497
  8. package/dist/api.mjs +5 -437
  9. package/dist/components-CfY72Lq2.mjs +11686 -0
  10. package/dist/components-CfY72Lq2.mjs.map +1 -0
  11. package/dist/{styles-JV3V5MVO.css → components-D2DRqJsz.css} +28 -0
  12. package/dist/components-D2DRqJsz.css.map +1 -0
  13. package/dist/components-DXbVq9Cw.js +14038 -0
  14. package/dist/components-DXbVq9Cw.js.map +1 -0
  15. package/dist/components-dVXbmdqd.css +70 -0
  16. package/dist/components-dVXbmdqd.css.map +1 -0
  17. package/dist/components.d.mts +2 -471
  18. package/dist/components.d.ts +2 -471
  19. package/dist/components.js +85 -27392
  20. package/dist/components.mjs +8 -27250
  21. package/dist/hooks-C4jkoryM.js +40 -0
  22. package/dist/hooks-C4jkoryM.js.map +1 -0
  23. package/dist/hooks-C8pyX9m_.mjs +34 -0
  24. package/dist/hooks-C8pyX9m_.mjs.map +1 -0
  25. package/dist/hooks.d.mts +2 -296
  26. package/dist/hooks.d.ts +2 -296
  27. package/dist/hooks.js +33 -7583
  28. package/dist/hooks.mjs +6 -7521
  29. package/dist/html2canvas-pro.esm-BR5xeFe-.mjs +7249 -0
  30. package/dist/html2canvas-pro.esm-BR5xeFe-.mjs.map +1 -0
  31. package/dist/html2canvas-pro.esm-CVOsBdk0.js +7250 -0
  32. package/dist/html2canvas-pro.esm-CVOsBdk0.js.map +1 -0
  33. package/dist/index-CVPmrztP.d.ts +1825 -0
  34. package/dist/index-CVPmrztP.d.ts.map +1 -0
  35. package/dist/index-DIHuswfP.d.mts +1827 -0
  36. package/dist/index-DIHuswfP.d.mts.map +1 -0
  37. package/dist/index.d.mts +2 -29
  38. package/dist/index.d.ts +2 -29
  39. package/dist/index.js +177 -28784
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +16 -28555
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/state-AeoqV9ja.js +9176 -0
  44. package/dist/state-AeoqV9ja.js.map +1 -0
  45. package/dist/state-BbgVwFV2.mjs +8204 -0
  46. package/dist/state-BbgVwFV2.mjs.map +1 -0
  47. package/dist/{style-466WWZLM.css → state-IA7HWYOs.css} +81 -0
  48. package/dist/state-IA7HWYOs.css.map +1 -0
  49. package/dist/state-eEsMhIy4.css +215 -0
  50. package/dist/state-eEsMhIy4.css.map +1 -0
  51. package/dist/tooltipMessage-CrXjOmVM.mjs +7 -0
  52. package/dist/tooltipMessage-CrXjOmVM.mjs.map +1 -0
  53. package/dist/tooltipMessage-Dbi1kkfi.js +13 -0
  54. package/dist/tooltipMessage-Dbi1kkfi.js.map +1 -0
  55. package/dist/types.d.mts +2 -32
  56. package/dist/types.d.ts +2 -32
  57. package/dist/types.js +8 -24
  58. package/dist/types.mjs +4 -18
  59. package/dist/urls-D7PrPolY.mjs +16 -0
  60. package/dist/urls-D7PrPolY.mjs.map +1 -0
  61. package/dist/urls-SazAekCZ.js +34 -0
  62. package/dist/urls-SazAekCZ.js.map +1 -0
  63. package/dist/version-C2NU3xyx.mjs +89 -0
  64. package/dist/version-C2NU3xyx.mjs.map +1 -0
  65. package/dist/version-MxW9vrDY.js +137 -0
  66. package/dist/version-MxW9vrDY.js.map +1 -0
  67. package/package.json +7 -7
  68. package/dist/LineageViewContext-DEa54ZNF.d.mts +0 -103
  69. package/dist/LineageViewContext-DPVC8ak8.d.ts +0 -103
  70. package/dist/agGridStyles-VYALGSJU.css +0 -55
  71. package/dist/api.js.map +0 -1
  72. package/dist/api.mjs.map +0 -1
  73. package/dist/components.js.map +0 -1
  74. package/dist/components.mjs.map +0 -1
  75. package/dist/hooks.js.map +0 -1
  76. package/dist/hooks.mjs.map +0 -1
  77. package/dist/lineagecheck-BQaKAQzn.d.mts +0 -597
  78. package/dist/lineagecheck-BQaKAQzn.d.ts +0 -597
  79. package/dist/styles-QUPOR3LM.css +0 -24
  80. package/dist/styles-TU5BYTIL.css +0 -21
  81. package/dist/types.js.map +0 -1
  82. package/dist/types.mjs.map +0 -1
@@ -0,0 +1,228 @@
1
+ "use client"
2
+ import { Ht as EXPLORE_FORM_EVENT, In as toaster, Vt as EXPLORE_ACTION, Yt as trackExploreActionForm, o as shareState } from "./state-BbgVwFV2.mjs";
3
+ import React, { createContext, useCallback, useContext, useRef, useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import Stack from "@mui/material/Stack";
6
+ import Box from "@mui/material/Box";
7
+ import Button from "@mui/material/Button";
8
+ import MuiDialog from "@mui/material/Dialog";
9
+ import DialogActions from "@mui/material/DialogActions";
10
+ import DialogContent from "@mui/material/DialogContent";
11
+ import DialogTitle from "@mui/material/DialogTitle";
12
+ import IconButton from "@mui/material/IconButton";
13
+ import { IoClose } from "react-icons/io5";
14
+
15
+ //#region recce-source/js/src/lib/hooks/RecceQueryContext.tsx
16
+ const defaultSqlQuery = "select * from {{ ref(\"mymodel\") }}";
17
+ const RecceQueryContext = createContext({
18
+ sqlQuery: defaultSqlQuery,
19
+ setSqlQuery: () => {},
20
+ primaryKeys: void 0,
21
+ setPrimaryKeys: () => {},
22
+ isCustomQueries: false,
23
+ setCustomQueries: () => {},
24
+ baseSqlQuery: defaultSqlQuery,
25
+ setBaseSqlQuery: () => {}
26
+ });
27
+ function RecceQueryContextProvider({ children }) {
28
+ const [sqlQuery, setSqlQuery] = React.useState(defaultSqlQuery);
29
+ const [baseSqlQuery, setBaseSqlQuery] = React.useState(defaultSqlQuery);
30
+ const [isCustomQueries, setCustomQueries] = React.useState(false);
31
+ const [primaryKeys, setPrimaryKeys] = React.useState();
32
+ return /* @__PURE__ */ jsx(RecceQueryContext.Provider, {
33
+ value: {
34
+ setSqlQuery,
35
+ sqlQuery,
36
+ setPrimaryKeys,
37
+ primaryKeys,
38
+ isCustomQueries,
39
+ setCustomQueries,
40
+ baseSqlQuery,
41
+ setBaseSqlQuery
42
+ },
43
+ children
44
+ });
45
+ }
46
+ const useRecceQueryContext = () => useContext(RecceQueryContext);
47
+ const RowCountStateContext = createContext({
48
+ isNodesFetching: [],
49
+ setIsNodesFetching: () => {}
50
+ });
51
+ function RowCountStateContextProvider({ children }) {
52
+ const [isNodesFetching, setIsNodesFetching] = React.useState([]);
53
+ return /* @__PURE__ */ jsx(RowCountStateContext.Provider, {
54
+ value: {
55
+ isNodesFetching,
56
+ setIsNodesFetching
57
+ },
58
+ children
59
+ });
60
+ }
61
+ const useRowCountStateContext = () => useContext(RowCountStateContext);
62
+
63
+ //#endregion
64
+ //#region recce-source/js/src/lib/hooks/RecceShareStateContext.tsx
65
+ const ShareState = createContext(void 0);
66
+ function RecceShareStateContextProvider({ children }) {
67
+ const [shareUrl, setShareUrl] = useState();
68
+ const [isLoading, setIsLoading] = useState(false);
69
+ const [error, setError] = useState();
70
+ const handleShareClick = async () => {
71
+ setIsLoading(true);
72
+ setError(void 0);
73
+ setShareUrl(void 0);
74
+ try {
75
+ const response = await shareState();
76
+ if (response.status !== "success") {
77
+ setError(response.message);
78
+ return;
79
+ }
80
+ setShareUrl(response.share_url);
81
+ } catch (err) {
82
+ setError(err.message);
83
+ } finally {
84
+ setIsLoading(false);
85
+ }
86
+ };
87
+ return /* @__PURE__ */ jsx(ShareState.Provider, {
88
+ value: {
89
+ shareUrl,
90
+ isLoading,
91
+ error,
92
+ handleShareClick
93
+ },
94
+ children
95
+ });
96
+ }
97
+ const useRecceShareStateContext = () => {
98
+ const context = useContext(ShareState);
99
+ if (!context) throw new Error("useRecceShareStateContext must be used within a RecceShareStateContextProvider");
100
+ return context;
101
+ };
102
+
103
+ //#endregion
104
+ //#region recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx
105
+ function useValueDiffAlertDialog() {
106
+ const [open, setOpen] = useState(false);
107
+ const [nodeCount, setNodeCount] = useState(0);
108
+ const [resolvePromise, setResolvePromise] = useState();
109
+ const cancelRef = useRef(null);
110
+ const confirm = useCallback((nodeCount$1) => {
111
+ setNodeCount(nodeCount$1);
112
+ return new Promise((resolve) => {
113
+ setResolvePromise(() => resolve);
114
+ setOpen(true);
115
+ });
116
+ }, []);
117
+ const handleConfirm = () => {
118
+ trackExploreActionForm({
119
+ action: EXPLORE_ACTION.VALUE_DIFF,
120
+ event: EXPLORE_FORM_EVENT.EXECUTE
121
+ });
122
+ resolvePromise?.(true);
123
+ setOpen(false);
124
+ };
125
+ const handleCancel = () => {
126
+ trackExploreActionForm({
127
+ action: EXPLORE_ACTION.VALUE_DIFF,
128
+ event: EXPLORE_FORM_EVENT.CANCEL
129
+ });
130
+ resolvePromise?.(false);
131
+ setOpen(false);
132
+ };
133
+ return {
134
+ confirm,
135
+ AlertDialog: /* @__PURE__ */ jsxs(MuiDialog, {
136
+ open,
137
+ onClose: handleCancel,
138
+ maxWidth: "md",
139
+ fullWidth: true,
140
+ "aria-labelledby": "value-diff-alert-dialog-title",
141
+ children: [
142
+ /* @__PURE__ */ jsxs(DialogTitle, {
143
+ id: "value-diff-alert-dialog-title",
144
+ sx: {
145
+ fontSize: "1.125rem",
146
+ fontWeight: "bold"
147
+ },
148
+ children: [
149
+ "Value Diff on ",
150
+ nodeCount,
151
+ " nodes"
152
+ ]
153
+ }),
154
+ /* @__PURE__ */ jsx(IconButton, {
155
+ "aria-label": "close",
156
+ onClick: handleCancel,
157
+ sx: {
158
+ position: "absolute",
159
+ right: 8,
160
+ top: 8,
161
+ color: "grey.500"
162
+ },
163
+ children: /* @__PURE__ */ jsx(IoClose, {})
164
+ }),
165
+ /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(Stack, {
166
+ spacing: "20px",
167
+ children: /* @__PURE__ */ jsxs(Box, { children: [
168
+ "Value diff will be executed on ",
169
+ nodeCount,
170
+ " nodes in the Lineage, which can add extra costs to your bill."
171
+ ] })
172
+ }) }),
173
+ /* @__PURE__ */ jsxs(DialogActions, {
174
+ sx: { gap: .5 },
175
+ children: [/* @__PURE__ */ jsx(Button, {
176
+ ref: cancelRef,
177
+ onClick: handleCancel,
178
+ variant: "outlined",
179
+ color: "neutral",
180
+ children: "Cancel"
181
+ }), /* @__PURE__ */ jsx(Button, {
182
+ color: "iochmara",
183
+ variant: "contained",
184
+ onClick: handleConfirm,
185
+ sx: { ml: 1.5 },
186
+ children: "Execute"
187
+ })]
188
+ })
189
+ ]
190
+ })
191
+ };
192
+ }
193
+ var useValueDiffAlertDialog_default = useValueDiffAlertDialog;
194
+
195
+ //#endregion
196
+ //#region recce-source/js/src/lib/hooks/useCheckToast.tsx
197
+ function useCheckToast() {
198
+ function markedAsApprovedToast() {
199
+ toaster.create({
200
+ title: "Marked as approved",
201
+ type: "success",
202
+ duration: 2e3
203
+ });
204
+ }
205
+ return { markedAsApprovedToast };
206
+ }
207
+
208
+ //#endregion
209
+ //#region recce-source/js/src/lib/hooks/RecceCheckContext.tsx
210
+ const RecceCheckContext = createContext({
211
+ latestSelectedCheckId: "",
212
+ setLatestSelectedCheckId: () => {}
213
+ });
214
+ function RecceCheckContextProvider({ children }) {
215
+ const [selectCheckId, setSelectCheckId] = React.useState("");
216
+ return /* @__PURE__ */ jsx(RecceCheckContext.Provider, {
217
+ value: {
218
+ setLatestSelectedCheckId: setSelectCheckId,
219
+ latestSelectedCheckId: selectCheckId
220
+ },
221
+ children
222
+ });
223
+ }
224
+ const useRecceCheckContext = () => useContext(RecceCheckContext);
225
+
226
+ //#endregion
227
+ export { RecceShareStateContextProvider as a, RowCountStateContextProvider as c, useRowCountStateContext as d, useValueDiffAlertDialog_default as i, defaultSqlQuery as l, useRecceCheckContext as n, useRecceShareStateContext as o, useCheckToast as r, RecceQueryContextProvider as s, RecceCheckContextProvider as t, useRecceQueryContext as u };
228
+ //# sourceMappingURL=RecceCheckContext-DIQjrvH8.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecceCheckContext-DIQjrvH8.mjs","names":["nodeCount"],"sources":["../recce-source/js/src/lib/hooks/RecceQueryContext.tsx","../recce-source/js/src/lib/hooks/RecceShareStateContext.tsx","../recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx","../recce-source/js/src/lib/hooks/useCheckToast.tsx","../recce-source/js/src/lib/hooks/RecceCheckContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\n\nexport interface QueryContext {\n sqlQuery: string;\n setSqlQuery: (sqlQuery: string) => void;\n primaryKeys: string[] | undefined;\n setPrimaryKeys: (primaryKeys: string[] | undefined) => void;\n isCustomQueries: boolean;\n setCustomQueries: (isCustomQueries: boolean) => void;\n baseSqlQuery?: string;\n setBaseSqlQuery?: (baseSqlQuery: string) => void;\n}\n\nexport const defaultSqlQuery = 'select * from {{ ref(\"mymodel\") }}';\n\nconst defaultQueryContext: QueryContext = {\n sqlQuery: defaultSqlQuery,\n setSqlQuery: () => {\n return void 0;\n },\n primaryKeys: undefined,\n setPrimaryKeys: () => {\n return void 0;\n },\n isCustomQueries: false,\n setCustomQueries: () => {\n return void 0;\n },\n baseSqlQuery: defaultSqlQuery,\n setBaseSqlQuery: () => {\n return void 0;\n },\n};\n\nconst RecceQueryContext = createContext(defaultQueryContext);\n\ninterface QueryContextProps {\n children: React.ReactNode;\n}\n\nexport function RecceQueryContextProvider({ children }: QueryContextProps) {\n const [sqlQuery, setSqlQuery] = React.useState<string>(defaultSqlQuery);\n const [baseSqlQuery, setBaseSqlQuery] =\n React.useState<string>(defaultSqlQuery);\n const [isCustomQueries, setCustomQueries] = React.useState<boolean>(false);\n const [primaryKeys, setPrimaryKeys] = React.useState<string[] | undefined>();\n return (\n <RecceQueryContext.Provider\n value={{\n setSqlQuery,\n sqlQuery,\n setPrimaryKeys,\n primaryKeys,\n isCustomQueries,\n setCustomQueries,\n baseSqlQuery,\n setBaseSqlQuery,\n }}\n >\n {children}\n </RecceQueryContext.Provider>\n );\n}\n\nexport const useRecceQueryContext = () => useContext(RecceQueryContext);\n\nexport interface RowCountStateContext {\n isNodesFetching: string[];\n setIsNodesFetching: (nodes: string[]) => void;\n}\n\nconst defaultRowCountStateContext: RowCountStateContext = {\n isNodesFetching: [],\n setIsNodesFetching: () => {\n return void 0;\n },\n};\n\nconst RowCountStateContext = createContext(defaultRowCountStateContext);\n\ninterface RowCountStateContextProps {\n children: React.ReactNode;\n}\n\nexport function RowCountStateContextProvider({\n children,\n}: RowCountStateContextProps) {\n const [isNodesFetching, setIsNodesFetching] = React.useState<string[]>([]);\n return (\n <RowCountStateContext.Provider\n value={{ isNodesFetching, setIsNodesFetching }}\n >\n {children}\n </RowCountStateContext.Provider>\n );\n}\n\nexport const useRowCountStateContext = () => useContext(RowCountStateContext);\n","import React, { createContext, useContext, useState } from \"react\";\nimport { shareState } from \"@/lib/api/state\";\n\ninterface ShareStateProps {\n shareUrl?: string;\n isLoading: boolean;\n error?: string;\n handleShareClick: () => Promise<void>;\n}\n\nconst ShareState = createContext<ShareStateProps | undefined>(undefined);\n\nexport function RecceShareStateContextProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const [shareUrl, setShareUrl] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const handleShareClick = async () => {\n setIsLoading(true);\n setError(undefined);\n setShareUrl(undefined);\n try {\n const response = await shareState();\n if (response.status !== \"success\") {\n setError(response.message);\n return;\n }\n setShareUrl(response.share_url);\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <ShareState.Provider\n value={{ shareUrl, isLoading, error, handleShareClick }}\n >\n {children}\n </ShareState.Provider>\n );\n}\n\nexport const useRecceShareStateContext = () => {\n const context = useContext(ShareState);\n if (!context) {\n throw new Error(\n \"useRecceShareStateContext must be used within a RecceShareStateContextProvider\",\n );\n }\n return context;\n};\n","import Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport MuiDialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Stack from \"@mui/material/Stack\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport {\n EXPLORE_ACTION,\n EXPLORE_FORM_EVENT,\n trackExploreActionForm,\n} from \"@/lib/api/track\";\n\nfunction useValueDiffAlertDialog() {\n const [open, setOpen] = useState(false);\n const [nodeCount, setNodeCount] = useState(0);\n const [resolvePromise, setResolvePromise] =\n useState<(value: boolean) => void>();\n const cancelRef = useRef<HTMLButtonElement>(null);\n\n const confirm = useCallback((nodeCount: number) => {\n setNodeCount(nodeCount);\n return new Promise<boolean>((resolve) => {\n setResolvePromise(() => resolve);\n setOpen(true);\n });\n }, []);\n\n const handleConfirm = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.EXECUTE,\n });\n resolvePromise?.(true);\n setOpen(false);\n };\n\n const handleCancel = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.CANCEL,\n });\n resolvePromise?.(false);\n setOpen(false);\n };\n\n const ValueDiffAlertDialog = (\n <MuiDialog\n open={open}\n onClose={handleCancel}\n maxWidth=\"md\"\n fullWidth\n aria-labelledby=\"value-diff-alert-dialog-title\"\n >\n <DialogTitle\n id=\"value-diff-alert-dialog-title\"\n sx={{ fontSize: \"1.125rem\", fontWeight: \"bold\" }}\n >\n Value Diff on {nodeCount} nodes\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleCancel}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: \"grey.500\",\n }}\n >\n <IoClose />\n </IconButton>\n <DialogContent>\n <Stack spacing=\"20px\">\n <Box>\n Value diff will be executed on {nodeCount} nodes in the Lineage,\n which can add extra costs to your bill.\n </Box>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ gap: 0.5 }}>\n <Button\n ref={cancelRef}\n onClick={handleCancel}\n variant=\"outlined\"\n color=\"neutral\"\n >\n Cancel\n </Button>\n <Button\n color=\"iochmara\"\n variant=\"contained\"\n onClick={handleConfirm}\n sx={{ ml: 1.5 }}\n >\n Execute\n </Button>\n </DialogActions>\n </MuiDialog>\n );\n\n return { confirm, AlertDialog: ValueDiffAlertDialog };\n}\n\nexport default useValueDiffAlertDialog;\n","import { toaster } from \"@/components/ui/toaster\";\n\nexport function useCheckToast() {\n function markedAsApprovedToast() {\n toaster.create({\n title: \"Marked as approved\",\n type: \"success\",\n duration: 2000,\n });\n }\n return {\n markedAsApprovedToast,\n };\n}\n","import React, { createContext, useContext } from \"react\";\n\nexport interface CheckContext {\n latestSelectedCheckId: string;\n setLatestSelectedCheckId: (selectCheckId: string) => void;\n}\n\ninterface CheckContextProps {\n children: React.ReactNode;\n}\n\nconst RecceCheckContext = createContext<CheckContext>({\n latestSelectedCheckId: \"\",\n setLatestSelectedCheckId: () => {\n return void 0;\n },\n});\n\nexport function RecceCheckContextProvider({ children }: CheckContextProps) {\n const [selectCheckId, setSelectCheckId] = React.useState<string>(\"\");\n return (\n <RecceCheckContext.Provider\n value={{\n setLatestSelectedCheckId: setSelectCheckId,\n latestSelectedCheckId: selectCheckId,\n }}\n >\n {children}\n </RecceCheckContext.Provider>\n );\n}\n\nexport const useRecceCheckContext = () => useContext(RecceCheckContext);\n"],"mappings":"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"}
@@ -0,0 +1,302 @@
1
+ "use client"
2
+ const require_state = require('./state-AeoqV9ja.js');
3
+ let react = require("react");
4
+ react = require_state.__toESM(react);
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ let _mui_material_Stack = require("@mui/material/Stack");
7
+ _mui_material_Stack = require_state.__toESM(_mui_material_Stack);
8
+ let _mui_material_Box = require("@mui/material/Box");
9
+ _mui_material_Box = require_state.__toESM(_mui_material_Box);
10
+ let _mui_material_Button = require("@mui/material/Button");
11
+ _mui_material_Button = require_state.__toESM(_mui_material_Button);
12
+ let _mui_material_Dialog = require("@mui/material/Dialog");
13
+ _mui_material_Dialog = require_state.__toESM(_mui_material_Dialog);
14
+ let _mui_material_DialogActions = require("@mui/material/DialogActions");
15
+ _mui_material_DialogActions = require_state.__toESM(_mui_material_DialogActions);
16
+ let _mui_material_DialogContent = require("@mui/material/DialogContent");
17
+ _mui_material_DialogContent = require_state.__toESM(_mui_material_DialogContent);
18
+ let _mui_material_DialogTitle = require("@mui/material/DialogTitle");
19
+ _mui_material_DialogTitle = require_state.__toESM(_mui_material_DialogTitle);
20
+ let _mui_material_IconButton = require("@mui/material/IconButton");
21
+ _mui_material_IconButton = require_state.__toESM(_mui_material_IconButton);
22
+ let react_icons_io5 = require("react-icons/io5");
23
+
24
+ //#region recce-source/js/src/lib/hooks/RecceQueryContext.tsx
25
+ const defaultSqlQuery = "select * from {{ ref(\"mymodel\") }}";
26
+ const RecceQueryContext = (0, react.createContext)({
27
+ sqlQuery: defaultSqlQuery,
28
+ setSqlQuery: () => {},
29
+ primaryKeys: void 0,
30
+ setPrimaryKeys: () => {},
31
+ isCustomQueries: false,
32
+ setCustomQueries: () => {},
33
+ baseSqlQuery: defaultSqlQuery,
34
+ setBaseSqlQuery: () => {}
35
+ });
36
+ function RecceQueryContextProvider({ children }) {
37
+ const [sqlQuery, setSqlQuery] = react.default.useState(defaultSqlQuery);
38
+ const [baseSqlQuery, setBaseSqlQuery] = react.default.useState(defaultSqlQuery);
39
+ const [isCustomQueries, setCustomQueries] = react.default.useState(false);
40
+ const [primaryKeys, setPrimaryKeys] = react.default.useState();
41
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RecceQueryContext.Provider, {
42
+ value: {
43
+ setSqlQuery,
44
+ sqlQuery,
45
+ setPrimaryKeys,
46
+ primaryKeys,
47
+ isCustomQueries,
48
+ setCustomQueries,
49
+ baseSqlQuery,
50
+ setBaseSqlQuery
51
+ },
52
+ children
53
+ });
54
+ }
55
+ const useRecceQueryContext = () => (0, react.useContext)(RecceQueryContext);
56
+ const RowCountStateContext = (0, react.createContext)({
57
+ isNodesFetching: [],
58
+ setIsNodesFetching: () => {}
59
+ });
60
+ function RowCountStateContextProvider({ children }) {
61
+ const [isNodesFetching, setIsNodesFetching] = react.default.useState([]);
62
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RowCountStateContext.Provider, {
63
+ value: {
64
+ isNodesFetching,
65
+ setIsNodesFetching
66
+ },
67
+ children
68
+ });
69
+ }
70
+ const useRowCountStateContext = () => (0, react.useContext)(RowCountStateContext);
71
+
72
+ //#endregion
73
+ //#region recce-source/js/src/lib/hooks/RecceShareStateContext.tsx
74
+ const ShareState = (0, react.createContext)(void 0);
75
+ function RecceShareStateContextProvider({ children }) {
76
+ const [shareUrl, setShareUrl] = (0, react.useState)();
77
+ const [isLoading, setIsLoading] = (0, react.useState)(false);
78
+ const [error, setError] = (0, react.useState)();
79
+ const handleShareClick = async () => {
80
+ setIsLoading(true);
81
+ setError(void 0);
82
+ setShareUrl(void 0);
83
+ try {
84
+ const response = await require_state.shareState();
85
+ if (response.status !== "success") {
86
+ setError(response.message);
87
+ return;
88
+ }
89
+ setShareUrl(response.share_url);
90
+ } catch (err) {
91
+ setError(err.message);
92
+ } finally {
93
+ setIsLoading(false);
94
+ }
95
+ };
96
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShareState.Provider, {
97
+ value: {
98
+ shareUrl,
99
+ isLoading,
100
+ error,
101
+ handleShareClick
102
+ },
103
+ children
104
+ });
105
+ }
106
+ const useRecceShareStateContext = () => {
107
+ const context = (0, react.useContext)(ShareState);
108
+ if (!context) throw new Error("useRecceShareStateContext must be used within a RecceShareStateContextProvider");
109
+ return context;
110
+ };
111
+
112
+ //#endregion
113
+ //#region recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx
114
+ function useValueDiffAlertDialog() {
115
+ const [open, setOpen] = (0, react.useState)(false);
116
+ const [nodeCount, setNodeCount] = (0, react.useState)(0);
117
+ const [resolvePromise, setResolvePromise] = (0, react.useState)();
118
+ const cancelRef = (0, react.useRef)(null);
119
+ const confirm = (0, react.useCallback)((nodeCount$1) => {
120
+ setNodeCount(nodeCount$1);
121
+ return new Promise((resolve) => {
122
+ setResolvePromise(() => resolve);
123
+ setOpen(true);
124
+ });
125
+ }, []);
126
+ const handleConfirm = () => {
127
+ require_state.trackExploreActionForm({
128
+ action: require_state.EXPLORE_ACTION.VALUE_DIFF,
129
+ event: require_state.EXPLORE_FORM_EVENT.EXECUTE
130
+ });
131
+ resolvePromise?.(true);
132
+ setOpen(false);
133
+ };
134
+ const handleCancel = () => {
135
+ require_state.trackExploreActionForm({
136
+ action: require_state.EXPLORE_ACTION.VALUE_DIFF,
137
+ event: require_state.EXPLORE_FORM_EVENT.CANCEL
138
+ });
139
+ resolvePromise?.(false);
140
+ setOpen(false);
141
+ };
142
+ return {
143
+ confirm,
144
+ AlertDialog: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_Dialog.default, {
145
+ open,
146
+ onClose: handleCancel,
147
+ maxWidth: "md",
148
+ fullWidth: true,
149
+ "aria-labelledby": "value-diff-alert-dialog-title",
150
+ children: [
151
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_DialogTitle.default, {
152
+ id: "value-diff-alert-dialog-title",
153
+ sx: {
154
+ fontSize: "1.125rem",
155
+ fontWeight: "bold"
156
+ },
157
+ children: [
158
+ "Value Diff on ",
159
+ nodeCount,
160
+ " nodes"
161
+ ]
162
+ }),
163
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_IconButton.default, {
164
+ "aria-label": "close",
165
+ onClick: handleCancel,
166
+ sx: {
167
+ position: "absolute",
168
+ right: 8,
169
+ top: 8,
170
+ color: "grey.500"
171
+ },
172
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_icons_io5.IoClose, {})
173
+ }),
174
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_DialogContent.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Stack.default, {
175
+ spacing: "20px",
176
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_Box.default, { children: [
177
+ "Value diff will be executed on ",
178
+ nodeCount,
179
+ " nodes in the Lineage, which can add extra costs to your bill."
180
+ ] })
181
+ }) }),
182
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_DialogActions.default, {
183
+ sx: { gap: .5 },
184
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Button.default, {
185
+ ref: cancelRef,
186
+ onClick: handleCancel,
187
+ variant: "outlined",
188
+ color: "neutral",
189
+ children: "Cancel"
190
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Button.default, {
191
+ color: "iochmara",
192
+ variant: "contained",
193
+ onClick: handleConfirm,
194
+ sx: { ml: 1.5 },
195
+ children: "Execute"
196
+ })]
197
+ })
198
+ ]
199
+ })
200
+ };
201
+ }
202
+ var useValueDiffAlertDialog_default = useValueDiffAlertDialog;
203
+
204
+ //#endregion
205
+ //#region recce-source/js/src/lib/hooks/useCheckToast.tsx
206
+ function useCheckToast() {
207
+ function markedAsApprovedToast() {
208
+ require_state.toaster.create({
209
+ title: "Marked as approved",
210
+ type: "success",
211
+ duration: 2e3
212
+ });
213
+ }
214
+ return { markedAsApprovedToast };
215
+ }
216
+
217
+ //#endregion
218
+ //#region recce-source/js/src/lib/hooks/RecceCheckContext.tsx
219
+ const RecceCheckContext = (0, react.createContext)({
220
+ latestSelectedCheckId: "",
221
+ setLatestSelectedCheckId: () => {}
222
+ });
223
+ function RecceCheckContextProvider({ children }) {
224
+ const [selectCheckId, setSelectCheckId] = react.default.useState("");
225
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RecceCheckContext.Provider, {
226
+ value: {
227
+ setLatestSelectedCheckId: setSelectCheckId,
228
+ latestSelectedCheckId: selectCheckId
229
+ },
230
+ children
231
+ });
232
+ }
233
+ const useRecceCheckContext = () => (0, react.useContext)(RecceCheckContext);
234
+
235
+ //#endregion
236
+ Object.defineProperty(exports, 'RecceCheckContextProvider', {
237
+ enumerable: true,
238
+ get: function () {
239
+ return RecceCheckContextProvider;
240
+ }
241
+ });
242
+ Object.defineProperty(exports, 'RecceQueryContextProvider', {
243
+ enumerable: true,
244
+ get: function () {
245
+ return RecceQueryContextProvider;
246
+ }
247
+ });
248
+ Object.defineProperty(exports, 'RecceShareStateContextProvider', {
249
+ enumerable: true,
250
+ get: function () {
251
+ return RecceShareStateContextProvider;
252
+ }
253
+ });
254
+ Object.defineProperty(exports, 'RowCountStateContextProvider', {
255
+ enumerable: true,
256
+ get: function () {
257
+ return RowCountStateContextProvider;
258
+ }
259
+ });
260
+ Object.defineProperty(exports, 'defaultSqlQuery', {
261
+ enumerable: true,
262
+ get: function () {
263
+ return defaultSqlQuery;
264
+ }
265
+ });
266
+ Object.defineProperty(exports, 'useCheckToast', {
267
+ enumerable: true,
268
+ get: function () {
269
+ return useCheckToast;
270
+ }
271
+ });
272
+ Object.defineProperty(exports, 'useRecceCheckContext', {
273
+ enumerable: true,
274
+ get: function () {
275
+ return useRecceCheckContext;
276
+ }
277
+ });
278
+ Object.defineProperty(exports, 'useRecceQueryContext', {
279
+ enumerable: true,
280
+ get: function () {
281
+ return useRecceQueryContext;
282
+ }
283
+ });
284
+ Object.defineProperty(exports, 'useRecceShareStateContext', {
285
+ enumerable: true,
286
+ get: function () {
287
+ return useRecceShareStateContext;
288
+ }
289
+ });
290
+ Object.defineProperty(exports, 'useRowCountStateContext', {
291
+ enumerable: true,
292
+ get: function () {
293
+ return useRowCountStateContext;
294
+ }
295
+ });
296
+ Object.defineProperty(exports, 'useValueDiffAlertDialog_default', {
297
+ enumerable: true,
298
+ get: function () {
299
+ return useValueDiffAlertDialog_default;
300
+ }
301
+ });
302
+ //# sourceMappingURL=RecceCheckContext-_xzNlnbJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecceCheckContext-_xzNlnbJ.js","names":["React","shareState","nodeCount","EXPLORE_ACTION","EXPLORE_FORM_EVENT","MuiDialog","DialogTitle","IconButton","IoClose","DialogContent","Stack","Box","DialogActions","Button","React"],"sources":["../recce-source/js/src/lib/hooks/RecceQueryContext.tsx","../recce-source/js/src/lib/hooks/RecceShareStateContext.tsx","../recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx","../recce-source/js/src/lib/hooks/useCheckToast.tsx","../recce-source/js/src/lib/hooks/RecceCheckContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\n\nexport interface QueryContext {\n sqlQuery: string;\n setSqlQuery: (sqlQuery: string) => void;\n primaryKeys: string[] | undefined;\n setPrimaryKeys: (primaryKeys: string[] | undefined) => void;\n isCustomQueries: boolean;\n setCustomQueries: (isCustomQueries: boolean) => void;\n baseSqlQuery?: string;\n setBaseSqlQuery?: (baseSqlQuery: string) => void;\n}\n\nexport const defaultSqlQuery = 'select * from {{ ref(\"mymodel\") }}';\n\nconst defaultQueryContext: QueryContext = {\n sqlQuery: defaultSqlQuery,\n setSqlQuery: () => {\n return void 0;\n },\n primaryKeys: undefined,\n setPrimaryKeys: () => {\n return void 0;\n },\n isCustomQueries: false,\n setCustomQueries: () => {\n return void 0;\n },\n baseSqlQuery: defaultSqlQuery,\n setBaseSqlQuery: () => {\n return void 0;\n },\n};\n\nconst RecceQueryContext = createContext(defaultQueryContext);\n\ninterface QueryContextProps {\n children: React.ReactNode;\n}\n\nexport function RecceQueryContextProvider({ children }: QueryContextProps) {\n const [sqlQuery, setSqlQuery] = React.useState<string>(defaultSqlQuery);\n const [baseSqlQuery, setBaseSqlQuery] =\n React.useState<string>(defaultSqlQuery);\n const [isCustomQueries, setCustomQueries] = React.useState<boolean>(false);\n const [primaryKeys, setPrimaryKeys] = React.useState<string[] | undefined>();\n return (\n <RecceQueryContext.Provider\n value={{\n setSqlQuery,\n sqlQuery,\n setPrimaryKeys,\n primaryKeys,\n isCustomQueries,\n setCustomQueries,\n baseSqlQuery,\n setBaseSqlQuery,\n }}\n >\n {children}\n </RecceQueryContext.Provider>\n );\n}\n\nexport const useRecceQueryContext = () => useContext(RecceQueryContext);\n\nexport interface RowCountStateContext {\n isNodesFetching: string[];\n setIsNodesFetching: (nodes: string[]) => void;\n}\n\nconst defaultRowCountStateContext: RowCountStateContext = {\n isNodesFetching: [],\n setIsNodesFetching: () => {\n return void 0;\n },\n};\n\nconst RowCountStateContext = createContext(defaultRowCountStateContext);\n\ninterface RowCountStateContextProps {\n children: React.ReactNode;\n}\n\nexport function RowCountStateContextProvider({\n children,\n}: RowCountStateContextProps) {\n const [isNodesFetching, setIsNodesFetching] = React.useState<string[]>([]);\n return (\n <RowCountStateContext.Provider\n value={{ isNodesFetching, setIsNodesFetching }}\n >\n {children}\n </RowCountStateContext.Provider>\n );\n}\n\nexport const useRowCountStateContext = () => useContext(RowCountStateContext);\n","import React, { createContext, useContext, useState } from \"react\";\nimport { shareState } from \"@/lib/api/state\";\n\ninterface ShareStateProps {\n shareUrl?: string;\n isLoading: boolean;\n error?: string;\n handleShareClick: () => Promise<void>;\n}\n\nconst ShareState = createContext<ShareStateProps | undefined>(undefined);\n\nexport function RecceShareStateContextProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const [shareUrl, setShareUrl] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const handleShareClick = async () => {\n setIsLoading(true);\n setError(undefined);\n setShareUrl(undefined);\n try {\n const response = await shareState();\n if (response.status !== \"success\") {\n setError(response.message);\n return;\n }\n setShareUrl(response.share_url);\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <ShareState.Provider\n value={{ shareUrl, isLoading, error, handleShareClick }}\n >\n {children}\n </ShareState.Provider>\n );\n}\n\nexport const useRecceShareStateContext = () => {\n const context = useContext(ShareState);\n if (!context) {\n throw new Error(\n \"useRecceShareStateContext must be used within a RecceShareStateContextProvider\",\n );\n }\n return context;\n};\n","import Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport MuiDialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Stack from \"@mui/material/Stack\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport {\n EXPLORE_ACTION,\n EXPLORE_FORM_EVENT,\n trackExploreActionForm,\n} from \"@/lib/api/track\";\n\nfunction useValueDiffAlertDialog() {\n const [open, setOpen] = useState(false);\n const [nodeCount, setNodeCount] = useState(0);\n const [resolvePromise, setResolvePromise] =\n useState<(value: boolean) => void>();\n const cancelRef = useRef<HTMLButtonElement>(null);\n\n const confirm = useCallback((nodeCount: number) => {\n setNodeCount(nodeCount);\n return new Promise<boolean>((resolve) => {\n setResolvePromise(() => resolve);\n setOpen(true);\n });\n }, []);\n\n const handleConfirm = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.EXECUTE,\n });\n resolvePromise?.(true);\n setOpen(false);\n };\n\n const handleCancel = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.CANCEL,\n });\n resolvePromise?.(false);\n setOpen(false);\n };\n\n const ValueDiffAlertDialog = (\n <MuiDialog\n open={open}\n onClose={handleCancel}\n maxWidth=\"md\"\n fullWidth\n aria-labelledby=\"value-diff-alert-dialog-title\"\n >\n <DialogTitle\n id=\"value-diff-alert-dialog-title\"\n sx={{ fontSize: \"1.125rem\", fontWeight: \"bold\" }}\n >\n Value Diff on {nodeCount} nodes\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleCancel}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: \"grey.500\",\n }}\n >\n <IoClose />\n </IconButton>\n <DialogContent>\n <Stack spacing=\"20px\">\n <Box>\n Value diff will be executed on {nodeCount} nodes in the Lineage,\n which can add extra costs to your bill.\n </Box>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ gap: 0.5 }}>\n <Button\n ref={cancelRef}\n onClick={handleCancel}\n variant=\"outlined\"\n color=\"neutral\"\n >\n Cancel\n </Button>\n <Button\n color=\"iochmara\"\n variant=\"contained\"\n onClick={handleConfirm}\n sx={{ ml: 1.5 }}\n >\n Execute\n </Button>\n </DialogActions>\n </MuiDialog>\n );\n\n return { confirm, AlertDialog: ValueDiffAlertDialog };\n}\n\nexport default useValueDiffAlertDialog;\n","import { toaster } from \"@/components/ui/toaster\";\n\nexport function useCheckToast() {\n function markedAsApprovedToast() {\n toaster.create({\n title: \"Marked as approved\",\n type: \"success\",\n duration: 2000,\n });\n }\n return {\n markedAsApprovedToast,\n };\n}\n","import React, { createContext, useContext } from \"react\";\n\nexport interface CheckContext {\n latestSelectedCheckId: string;\n setLatestSelectedCheckId: (selectCheckId: string) => void;\n}\n\ninterface CheckContextProps {\n children: React.ReactNode;\n}\n\nconst RecceCheckContext = createContext<CheckContext>({\n latestSelectedCheckId: \"\",\n setLatestSelectedCheckId: () => {\n return void 0;\n },\n});\n\nexport function RecceCheckContextProvider({ children }: CheckContextProps) {\n const [selectCheckId, setSelectCheckId] = React.useState<string>(\"\");\n return (\n <RecceCheckContext.Provider\n value={{\n setLatestSelectedCheckId: setSelectCheckId,\n latestSelectedCheckId: selectCheckId,\n }}\n >\n {children}\n </RecceCheckContext.Provider>\n );\n}\n\nexport const useRecceCheckContext = () => useContext(RecceCheckContext);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,kBAAkB;AAqB/B,MAAM,6CAnBoC;CACxC,UAAU;CACV,mBAAmB;CAGnB,aAAa;CACb,sBAAsB;CAGtB,iBAAiB;CACjB,wBAAwB;CAGxB,cAAc;CACd,uBAAuB;CAGxB,CAE2D;AAM5D,SAAgB,0BAA0B,EAAE,YAA+B;CACzE,MAAM,CAAC,UAAU,eAAeA,cAAM,SAAiB,gBAAgB;CACvE,MAAM,CAAC,cAAc,mBACnBA,cAAM,SAAiB,gBAAgB;CACzC,MAAM,CAAC,iBAAiB,oBAAoBA,cAAM,SAAkB,MAAM;CAC1E,MAAM,CAAC,aAAa,kBAAkBA,cAAM,UAAgC;AAC5E,QACE,2CAAC,kBAAkB;EACjB,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EAEA;GAC0B;;AAIjC,MAAa,mDAAwC,kBAAkB;AAcvE,MAAM,gDAPoD;CACxD,iBAAiB,EAAE;CACnB,0BAA0B;CAG3B,CAEsE;AAMvE,SAAgB,6BAA6B,EAC3C,YAC4B;CAC5B,MAAM,CAAC,iBAAiB,sBAAsBA,cAAM,SAAmB,EAAE,CAAC;AAC1E,QACE,2CAAC,qBAAqB;EACpB,OAAO;GAAE;GAAiB;GAAoB;EAE7C;GAC6B;;AAIpC,MAAa,sDAA2C,qBAAqB;;;;ACvF7E,MAAM,sCAAwD,OAAU;AAExE,SAAgB,+BAA+B,EAC7C,YAGC;CACD,MAAM,CAAC,UAAU,oCAAiC;CAClD,MAAM,CAAC,WAAW,oCAAyB,MAAM;CACjD,MAAM,CAAC,OAAO,iCAA8B;CAE5C,MAAM,mBAAmB,YAAY;AACnC,eAAa,KAAK;AAClB,WAAS,OAAU;AACnB,cAAY,OAAU;AACtB,MAAI;GACF,MAAM,WAAW,MAAMC,0BAAY;AACnC,OAAI,SAAS,WAAW,WAAW;AACjC,aAAS,SAAS,QAAQ;AAC1B;;AAEF,eAAY,SAAS,UAAU;WACxB,KAAK;AACZ,YAAU,IAAc,QAAQ;YACxB;AACR,gBAAa,MAAM;;;AAIvB,QACE,2CAAC,WAAW;EACV,OAAO;GAAE;GAAU;GAAW;GAAO;GAAkB;EAEtD;GACmB;;AAI1B,MAAa,kCAAkC;CAC7C,MAAM,gCAAqB,WAAW;AACtC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,iFACD;AAEH,QAAO;;;;;ACvCT,SAAS,0BAA0B;CACjC,MAAM,CAAC,MAAM,+BAAoB,MAAM;CACvC,MAAM,CAAC,WAAW,oCAAyB,EAAE;CAC7C,MAAM,CAAC,gBAAgB,0CACe;CACtC,MAAM,8BAAsC,KAAK;CAEjD,MAAM,kCAAuB,gBAAsB;AACjD,eAAaC,YAAU;AACvB,SAAO,IAAI,SAAkB,YAAY;AACvC,2BAAwB,QAAQ;AAChC,WAAQ,KAAK;IACb;IACD,EAAE,CAAC;CAEN,MAAM,sBAAsB;AAC1B,uCAAuB;GACrB,QAAQC,6BAAe;GACvB,OAAOC,iCAAmB;GAC3B,CAAC;AACF,mBAAiB,KAAK;AACtB,UAAQ,MAAM;;CAGhB,MAAM,qBAAqB;AACzB,uCAAuB;GACrB,QAAQD,6BAAe;GACvB,OAAOC,iCAAmB;GAC3B,CAAC;AACF,mBAAiB,MAAM;AACvB,UAAQ,MAAM;;AA0DhB,QAAO;EAAE;EAAS,aAtDhB,4CAACC;GACO;GACN,SAAS;GACT,UAAS;GACT;GACA,mBAAgB;;IAEhB,4CAACC;KACC,IAAG;KACH,IAAI;MAAE,UAAU;MAAY,YAAY;MAAQ;;MACjD;MACgB;MAAU;;MACb;IACd,2CAACC;KACC,cAAW;KACX,SAAS;KACT,IAAI;MACF,UAAU;MACV,OAAO;MACP,KAAK;MACL,OAAO;MACR;eAED,2CAACC,4BAAU;MACA;IACb,2CAACC,iDACC,2CAACC;KAAM,SAAQ;eACb,4CAACC;MAAI;MAC6B;MAAU;SAEtC;MACA,GACM;IAChB,4CAACC;KAAc,IAAI,EAAE,KAAK,IAAK;gBAC7B,2CAACC;MACC,KAAK;MACL,SAAS;MACT,SAAQ;MACR,OAAM;gBACP;OAEQ,EACT,2CAACA;MACC,OAAM;MACN,SAAQ;MACR,SAAS;MACT,IAAI,EAAE,IAAI,KAAK;gBAChB;OAEQ;MACK;;IACN;EAGuC;;AAGvD,sCAAe;;;;ACzGf,SAAgB,gBAAgB;CAC9B,SAAS,wBAAwB;AAC/B,wBAAQ,OAAO;GACb,OAAO;GACP,MAAM;GACN,UAAU;GACX,CAAC;;AAEJ,QAAO,EACL,uBACD;;;;;ACDH,MAAM,6CAAgD;CACpD,uBAAuB;CACvB,gCAAgC;CAGjC,CAAC;AAEF,SAAgB,0BAA0B,EAAE,YAA+B;CACzE,MAAM,CAAC,eAAe,oBAAoBC,cAAM,SAAiB,GAAG;AACpE,QACE,2CAAC,kBAAkB;EACjB,OAAO;GACL,0BAA0B;GAC1B,uBAAuB;GACxB;EAEA;GAC0B;;AAIjC,MAAa,mDAAwC,kBAAkB"}