@gusto/embedded-react-sdk 0.34.0 → 0.35.0-rc.2
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/CHANGELOG.md +38 -0
- package/dist/components/Base/Base.d.ts +6 -2
- package/dist/components/Base/Base.js +105 -59
- package/dist/components/Base/Base.js.map +1 -1
- package/dist/components/Base/useBase.d.ts +1 -0
- package/dist/components/Base/useBase.js.map +1 -1
- package/dist/components/Base/useBaseSubmit.d.ts +1 -1
- package/dist/components/Base/useBaseSubmit.js +60 -33
- package/dist/components/Base/useBaseSubmit.js.map +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.d.ts +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.js +15 -13
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.js.map +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenuTypes.d.ts +1 -0
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/Menu/Menu.js +26 -25
- package/dist/components/Common/UI/Menu/Menu.js.map +1 -1
- package/dist/components/Common/UI/Menu/Menu.module.scss.js +7 -7
- package/dist/components/Common/UI/Menu/MenuTypes.d.ts +5 -0
- package/dist/components/Common/UI/Menu/MenuTypes.js +4 -3
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +119 -113
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
- package/dist/components/Employee/Compensation/Edit.js +70 -70
- package/dist/components/Employee/Compensation/Edit.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/Form.js +5 -5
- package/dist/components/Employee/DocumentSigner/SignatureForm/Form.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/Preview.js +8 -8
- package/dist/components/Employee/DocumentSigner/SignatureForm/Preview.js.map +1 -1
- package/dist/components/Employee/StateTaxes/StateTaxes.js +69 -61
- package/dist/components/Employee/StateTaxes/StateTaxes.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.d.ts +2 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +101 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js +16 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js.map +1 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModalTypes.d.ts +7 -0
- package/dist/components/Payroll/GrossUpModal/index.d.ts +3 -0
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +86 -67
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +83 -49
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +6 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +102 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.module.scss.js +14 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.module.scss.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js +52 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +16 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +12 -2
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +15 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/index.d.ts +2 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +212 -120
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +76 -64
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.d.ts +2 -0
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js +11 -0
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +67 -57
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +44 -43
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +2 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +58 -38
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.js +6 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.d.ts +7 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.js +11 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/index.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.js +45 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/sanitization.d.ts +19 -0
- package/dist/contexts/ObservabilityProvider/sanitization.js +95 -0
- package/dist/contexts/ObservabilityProvider/sanitization.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/sanitization.test.d.ts +1 -0
- package/dist/contexts/ObservabilityProvider/useObservability.d.ts +2 -0
- package/dist/contexts/ObservabilityProvider/useObservability.js +11 -0
- package/dist/contexts/ObservabilityProvider/useObservability.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.d.ts +8 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.js +28 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.js.map +1 -0
- package/dist/contexts/index.d.ts +2 -0
- package/dist/helpers/rem.d.ts +7 -3
- package/dist/helpers/rem.js +14 -10
- package/dist/helpers/rem.js.map +1 -1
- package/dist/helpers/rem.test.d.ts +1 -0
- package/dist/helpers/retryAsync.d.ts +7 -0
- package/dist/helpers/retryAsync.js +18 -0
- package/dist/helpers/retryAsync.js.map +1 -0
- package/dist/i18n/I18n.js +15 -15
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.PaySchedule.json.js +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +24 -0
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -0
- package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +13 -11
- package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -13
- package/dist/index.js.map +1 -1
- package/dist/shared/constants.d.ts +5 -0
- package/dist/shared/constants.js +11 -8
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +26 -1
- package/dist/types/observability.d.ts +145 -0
- package/docs/reference/endpoint-inventory.json +10 -1
- package/package.json +21 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.35.0
|
|
4
|
+
|
|
5
|
+
### Features & Enhancements
|
|
6
|
+
|
|
7
|
+
- Integrate tax withholding config into off-cycle payroll creation
|
|
8
|
+
- Add gross up modal to PayrollConfiguration kebab menu
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
|
|
12
|
+
- Update payroll deadline time from 1PM to 4PM Pacific in calendar preview
|
|
13
|
+
- Adjust minimum wage controls for states without tip credits
|
|
14
|
+
- Updated to use correct translation keys
|
|
15
|
+
- Handle date field serialization in state taxes form
|
|
16
|
+
- Preset payment date based on company payment speed
|
|
17
|
+
|
|
18
|
+
### Chores & Maintenance
|
|
19
|
+
|
|
20
|
+
- Add comprehensive tests for rem conversion utilities
|
|
21
|
+
- Improve Cursor configuration for team productivity
|
|
22
|
+
- Upgrade vitest to v4, coverage-v8 to v4, and plugin-react-swc to v4
|
|
23
|
+
- Bump react-i18next from 16.5.4 to 16.5.8
|
|
24
|
+
- Bump i18next from 25.8.13 to 25.8.18
|
|
25
|
+
- Bump dompurify from 3.3.2 to 3.3.3
|
|
26
|
+
- Bump react-aria from 3.45.0 to 3.47.0
|
|
27
|
+
- Bump sass-embedded from 1.97.3 to 1.98.0
|
|
28
|
+
- Bump typescript-eslint from 8.56.1 to 8.57.0
|
|
29
|
+
- Bump eslint-plugin-storybook from 10.2.15 to 10.2.17
|
|
30
|
+
- Bump @storybook/react-vite from 10.2.15 to 10.2.17
|
|
31
|
+
- Bump @storybook/addon-docs from 10.2.14 to 10.2.17
|
|
32
|
+
- Bump @storybook/addon-a11y from 10.2.16 to 10.2.17
|
|
33
|
+
- Bump @storybook/addon-onboarding from 10.2.15 to 10.2.17
|
|
34
|
+
- Bump storybook from 10.2.16 to 10.2.17
|
|
35
|
+
- Bump lint-staged from 16.3.2 to 16.3.3
|
|
36
|
+
- Bump eslint from 9.39.3 to 9.39.4
|
|
37
|
+
- Bump @commitlint/cli from 20.4.3 to 20.4.4
|
|
38
|
+
- Bump @commitlint/config-conventional from 20.4.3 to 20.4.4
|
|
39
|
+
|
|
3
40
|
## 0.34.0
|
|
4
41
|
|
|
5
42
|
### Features & Enhancements
|
|
@@ -7,6 +44,7 @@
|
|
|
7
44
|
- Integrate employee selection into OffCycleCreation
|
|
8
45
|
- Add wire-in confirmation alert and API version header
|
|
9
46
|
- Optimize ThemeProvider style tag injection and CSS generation
|
|
47
|
+
- Optimize rem conversion system with caching to improve performance
|
|
10
48
|
|
|
11
49
|
### Fixes
|
|
12
50
|
|
|
@@ -16,7 +16,10 @@ export interface BaseComponentInterface<TResourceKey extends keyof Resources = k
|
|
|
16
16
|
LoaderComponent?: BaseBoundariesProps['LoaderComponent'];
|
|
17
17
|
onEvent: OnEventType<EventType, unknown>;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
interface InternalBaseComponentProps {
|
|
20
|
+
componentName?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const BaseComponent: <TResourceKey extends keyof Resources = keyof Resources>({ children, FallbackComponent, LoaderComponent: LoadingIndicatorFromProps, onEvent, componentName, }: BaseComponentInterface<TResourceKey> & InternalBaseComponentProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
23
|
interface BaseLayoutProps {
|
|
21
24
|
children?: ReactNode;
|
|
22
25
|
error: KnownErrors | null;
|
|
@@ -28,6 +31,7 @@ export interface BaseBoundariesProps {
|
|
|
28
31
|
FallbackComponent?: (props: FallbackProps) => JSX.Element;
|
|
29
32
|
LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator'];
|
|
30
33
|
onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void;
|
|
34
|
+
componentName?: string;
|
|
31
35
|
}
|
|
32
|
-
export declare const BaseBoundaries: ({ children, FallbackComponent, LoaderComponent: LoadingIndicatorFromProps, onErrorBoundaryError, }: BaseBoundariesProps) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare const BaseBoundaries: ({ children, FallbackComponent, LoaderComponent: LoadingIndicatorFromProps, onErrorBoundaryError, componentName, }: BaseBoundariesProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
37
|
export {};
|
|
@@ -1,80 +1,126 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Suspense as
|
|
3
|
-
import { ErrorBoundary as
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { GustoEmbeddedError as
|
|
6
|
-
import { SDKValidationError as
|
|
7
|
-
import { QueryErrorResetBoundary as
|
|
8
|
-
import { FadeIn as
|
|
9
|
-
import { BaseContext as
|
|
10
|
-
import { useBaseSubmit as
|
|
11
|
-
import { componentEvents as
|
|
1
|
+
import { jsx as s, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense as x, useRef as u, useEffect as f } from "react";
|
|
3
|
+
import { ErrorBoundary as B } from "react-error-boundary";
|
|
4
|
+
import { useTranslation as k } from "react-i18next";
|
|
5
|
+
import { GustoEmbeddedError as v } from "@gusto/embedded-api/models/errors/gustoembeddederror";
|
|
6
|
+
import { SDKValidationError as I } from "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
7
|
+
import { QueryErrorResetBoundary as R } from "@tanstack/react-query";
|
|
8
|
+
import { FadeIn as S } from "../Common/FadeIn/FadeIn.js";
|
|
9
|
+
import { BaseContext as w } from "./useBase.js";
|
|
10
|
+
import { useBaseSubmit as D } from "./useBaseSubmit.js";
|
|
11
|
+
import { componentEvents as F } from "../../shared/constants.js";
|
|
12
12
|
import "classnames";
|
|
13
|
-
import { InternalError as
|
|
14
|
-
import { useComponentContext as
|
|
15
|
-
import { useLoadingIndicator as
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
import { InternalError as E } from "../Common/InternalError/InternalError.js";
|
|
14
|
+
import { useComponentContext as T } from "../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
|
+
import { useLoadingIndicator as L } from "../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
|
+
import { useObservability as g } from "../../contexts/ObservabilityProvider/useObservability.js";
|
|
17
|
+
import { renderErrorList as j } from "../../helpers/apiErrorToList.js";
|
|
18
|
+
const rr = ({
|
|
19
|
+
children: i,
|
|
20
|
+
FallbackComponent: r = E,
|
|
21
|
+
LoaderComponent: n,
|
|
22
|
+
onEvent: e,
|
|
23
|
+
componentName: o
|
|
22
24
|
}) => {
|
|
23
|
-
const { error:
|
|
24
|
-
|
|
25
|
+
const { error: t, fieldErrors: a, baseSubmitHandler: m, setError: d } = D(o), { observability: b } = g(), { LoadingIndicator: h } = L(), p = n ?? h, y = (c, C) => {
|
|
26
|
+
e(F.ERROR, c), b?.onError?.({
|
|
27
|
+
type: "boundary_error",
|
|
28
|
+
message: c instanceof Error ? c.message : "Unknown error",
|
|
29
|
+
stack: c instanceof Error ? c.stack : void 0,
|
|
30
|
+
context: {
|
|
31
|
+
componentName: o,
|
|
32
|
+
componentStack: C.componentStack ?? void 0
|
|
33
|
+
},
|
|
34
|
+
originalError: c,
|
|
35
|
+
timestamp: Date.now()
|
|
36
|
+
});
|
|
25
37
|
};
|
|
26
|
-
return /* @__PURE__ */
|
|
27
|
-
|
|
38
|
+
return /* @__PURE__ */ s(
|
|
39
|
+
w.Provider,
|
|
28
40
|
{
|
|
29
41
|
value: {
|
|
30
|
-
error:
|
|
31
|
-
fieldErrors:
|
|
32
|
-
setError:
|
|
33
|
-
onEvent:
|
|
34
|
-
baseSubmitHandler:
|
|
35
|
-
LoadingIndicator:
|
|
42
|
+
error: t,
|
|
43
|
+
fieldErrors: a,
|
|
44
|
+
setError: d,
|
|
45
|
+
onEvent: e,
|
|
46
|
+
baseSubmitHandler: m,
|
|
47
|
+
LoadingIndicator: p,
|
|
48
|
+
componentName: o
|
|
36
49
|
},
|
|
37
|
-
children: /* @__PURE__ */
|
|
38
|
-
|
|
50
|
+
children: /* @__PURE__ */ s(
|
|
51
|
+
U,
|
|
39
52
|
{
|
|
40
|
-
FallbackComponent:
|
|
41
|
-
LoaderComponent:
|
|
42
|
-
onErrorBoundaryError:
|
|
43
|
-
|
|
53
|
+
FallbackComponent: r,
|
|
54
|
+
LoaderComponent: p,
|
|
55
|
+
onErrorBoundaryError: y,
|
|
56
|
+
componentName: o,
|
|
57
|
+
children: /* @__PURE__ */ s(M, { error: t, fieldErrors: a, children: i })
|
|
44
58
|
}
|
|
45
59
|
)
|
|
46
60
|
}
|
|
47
61
|
);
|
|
48
|
-
},
|
|
49
|
-
const
|
|
50
|
-
return /* @__PURE__ */
|
|
51
|
-
(
|
|
52
|
-
t && /* @__PURE__ */
|
|
53
|
-
!t &&
|
|
54
|
-
!t &&
|
|
62
|
+
}, M = ({ children: i, error: r, fieldErrors: n }) => {
|
|
63
|
+
const e = T(), { t: o } = k(), t = !!n?.length;
|
|
64
|
+
return /* @__PURE__ */ l(S, { children: [
|
|
65
|
+
(r || n) && /* @__PURE__ */ l(e.Alert, { label: o("status.errorEncountered"), status: "error", children: [
|
|
66
|
+
t && /* @__PURE__ */ s(e.UnorderedList, { items: j(n) }),
|
|
67
|
+
!t && r instanceof v && /* @__PURE__ */ s(e.Text, { children: o("errors.unknownError") }),
|
|
68
|
+
!t && r instanceof I && /* @__PURE__ */ s(e.Text, { as: "pre", children: r.pretty() })
|
|
55
69
|
] }),
|
|
56
|
-
|
|
70
|
+
i
|
|
57
71
|
] });
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
}, O = ({
|
|
73
|
+
LoaderComponent: i,
|
|
74
|
+
observability: r,
|
|
75
|
+
componentName: n
|
|
76
|
+
}) => {
|
|
77
|
+
const e = u(Date.now()), o = u(r), t = u(n);
|
|
78
|
+
return f(() => {
|
|
79
|
+
o.current = r, t.current = n;
|
|
80
|
+
}, [r, n]), f(() => () => {
|
|
81
|
+
const a = Date.now() - e.current;
|
|
82
|
+
o.current?.onMetric?.({
|
|
83
|
+
name: "sdk.component.loading_duration",
|
|
84
|
+
value: a,
|
|
85
|
+
unit: "ms",
|
|
86
|
+
tags: t.current ? { component: t.current } : void 0,
|
|
87
|
+
timestamp: Date.now()
|
|
88
|
+
});
|
|
89
|
+
}, []), /* @__PURE__ */ s(i, {});
|
|
90
|
+
}, U = ({
|
|
91
|
+
children: i,
|
|
92
|
+
FallbackComponent: r = E,
|
|
93
|
+
LoaderComponent: n,
|
|
94
|
+
onErrorBoundaryError: e,
|
|
95
|
+
componentName: o
|
|
63
96
|
}) => {
|
|
64
|
-
const { LoadingIndicator:
|
|
65
|
-
return /* @__PURE__ */
|
|
66
|
-
|
|
97
|
+
const { LoadingIndicator: t } = L(), a = n ?? t, { observability: m } = g();
|
|
98
|
+
return /* @__PURE__ */ s(R, { children: ({ reset: d }) => /* @__PURE__ */ s(
|
|
99
|
+
B,
|
|
67
100
|
{
|
|
68
|
-
FallbackComponent:
|
|
69
|
-
onReset:
|
|
70
|
-
onError:
|
|
71
|
-
children: /* @__PURE__ */
|
|
101
|
+
FallbackComponent: r,
|
|
102
|
+
onReset: d,
|
|
103
|
+
onError: e,
|
|
104
|
+
children: /* @__PURE__ */ s(
|
|
105
|
+
x,
|
|
106
|
+
{
|
|
107
|
+
fallback: /* @__PURE__ */ s(
|
|
108
|
+
O,
|
|
109
|
+
{
|
|
110
|
+
LoaderComponent: a,
|
|
111
|
+
observability: m,
|
|
112
|
+
componentName: o
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
children: i
|
|
116
|
+
}
|
|
117
|
+
)
|
|
72
118
|
}
|
|
73
119
|
) });
|
|
74
120
|
};
|
|
75
121
|
export {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
122
|
+
U as BaseBoundaries,
|
|
123
|
+
rr as BaseComponent,
|
|
124
|
+
M as BaseLayout
|
|
79
125
|
};
|
|
80
126
|
//# sourceMappingURL=Base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.js","sources":["../../../src/components/Base/Base.tsx"],"sourcesContent":["import type { ReactNode, JSX, ErrorInfo } from 'react'\nimport { Suspense } from 'react'\nimport type { FallbackProps } from 'react-error-boundary'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { useTranslation } from 'react-i18next'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { QueryErrorResetBoundary } from '@tanstack/react-query'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { FadeIn } from '../Common/FadeIn/FadeIn'\nimport { BaseContext, type KnownErrors, type OnEventType } from './useBase'\nimport { useBaseSubmit } from './useBaseSubmit'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport { InternalError } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { ResourceDictionary, Resources } from '@/types/Helpers'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\n\nexport interface CommonComponentInterface<TResourceKey extends keyof Resources = keyof Resources> {\n children?: ReactNode\n className?: string\n defaultValues?: unknown\n dictionary?: ResourceDictionary<TResourceKey>\n}\n\n// Base component wrapper with error and suspense handling\nexport interface BaseComponentInterface<\n TResourceKey extends keyof Resources = keyof Resources,\n> extends CommonComponentInterface<TResourceKey> {\n FallbackComponent?: BaseBoundariesProps['FallbackComponent']\n LoaderComponent?: BaseBoundariesProps['LoaderComponent']\n onEvent: OnEventType<EventType, unknown>\n}\n\nexport const BaseComponent = <TResourceKey extends keyof Resources = keyof Resources>({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onEvent,\n}: BaseComponentInterface<TResourceKey>) => {\n const { error, fieldErrors, baseSubmitHandler, setError } = useBaseSubmit()\n\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n\n const onErrorBoundaryError = (error: unknown) => {\n onEvent(componentEvents.ERROR, error)\n }\n\n return (\n <BaseContext.Provider\n value={{\n error,\n fieldErrors,\n setError,\n onEvent,\n baseSubmitHandler,\n LoadingIndicator: LoaderComponent,\n }}\n >\n <BaseBoundaries\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n onErrorBoundaryError={onErrorBoundaryError}\n >\n <BaseLayout error={error} fieldErrors={fieldErrors}>\n {children}\n </BaseLayout>\n </BaseBoundaries>\n </BaseContext.Provider>\n )\n}\n\ninterface BaseLayoutProps {\n children?: ReactNode\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n}\n\nexport const BaseLayout = ({ children, error, fieldErrors }: BaseLayoutProps) => {\n const Components = useComponentContext()\n const { t } = useTranslation()\n const hasDisplayableFieldErrors = Boolean(fieldErrors?.length)\n\n return (\n <FadeIn>\n {(error || fieldErrors) && (\n <Components.Alert label={t('status.errorEncountered')} status=\"error\">\n {hasDisplayableFieldErrors && (\n <Components.UnorderedList items={renderErrorList(fieldErrors!)} />\n )}\n {!hasDisplayableFieldErrors && error instanceof GustoEmbeddedError && (\n <Components.Text>{t('errors.unknownError')}</Components.Text>\n )}\n {!hasDisplayableFieldErrors && error instanceof SDKValidationError && (\n <Components.Text as=\"pre\">{error.pretty()}</Components.Text>\n )}\n </Components.Alert>\n )}\n {children}\n </FadeIn>\n )\n}\n\nexport interface BaseBoundariesProps {\n children?: ReactNode\n FallbackComponent?: (props: FallbackProps) => JSX.Element\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void\n}\n\nexport const BaseBoundaries = ({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onErrorBoundaryError,\n}: BaseBoundariesProps) => {\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n\n return (\n <QueryErrorResetBoundary>\n {({ reset: resetQueries }) => (\n <ErrorBoundary\n FallbackComponent={FallbackComponent}\n onReset={resetQueries}\n onError={onErrorBoundaryError}\n >\n <Suspense fallback={<LoaderComponent />}>{children}</Suspense>\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n )\n}\n"],"names":["BaseComponent","children","FallbackComponent","InternalError","LoadingIndicatorFromProps","onEvent","error","fieldErrors","baseSubmitHandler","setError","useBaseSubmit","LoadingIndicatorFromContext","useLoadingIndicator","LoaderComponent","onErrorBoundaryError","componentEvents","jsx","BaseContext","BaseBoundaries","BaseLayout","Components","useComponentContext","t","useTranslation","hasDisplayableFieldErrors","FadeIn","jsxs","renderErrorList","GustoEmbeddedError","SDKValidationError","QueryErrorResetBoundary","resetQueries","ErrorBoundary","Suspense"],"mappings":";;;;;;;;;;;;;;;;AAoCO,MAAMA,IAAgB,CAAyD;AAAA,EACpF,UAAAC;AAAA,EACA,mBAAAC,IAAoBC;AAAA,EACpB,iBAAiBC;AAAA,EACjB,SAAAC;AACF,MAA4C;AAC1C,QAAM,EAAE,OAAAC,GAAO,aAAAC,GAAa,mBAAAC,GAAmB,UAAAC,EAAA,IAAaC,EAAA,GAEtD,EAAE,kBAAkBC,EAAA,IAAgCC,EAAA,GACpDC,IAAkBT,KAA6BO,GAE/CG,IAAuB,CAACR,MAAmB;AAC/C,IAAAD,EAAQU,EAAgB,OAAOT,CAAK;AAAA,EACtC;AAEA,SACE,gBAAAU;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL,OAAAX;AAAA,QACA,aAAAC;AAAA,QACA,UAAAE;AAAA,QACA,SAAAJ;AAAA,QACA,mBAAAG;AAAA,QACA,kBAAkBK;AAAA,MAAA;AAAA,MAGpB,UAAA,gBAAAG;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,mBAAAhB;AAAA,UACA,iBAAAW;AAAA,UACA,sBAAAC;AAAA,UAEA,UAAA,gBAAAE,EAACG,GAAA,EAAW,OAAAb,GAAc,aAAAC,GACvB,UAAAN,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GAQakB,IAAa,CAAC,EAAE,UAAAlB,GAAU,OAAAK,GAAO,aAAAC,QAAmC;AAC/E,QAAMa,IAAaC,EAAA,GACb,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAA4B,EAAQjB,GAAa;AAEvD,2BACGkB,GAAA,EACG,UAAA;AAAA,KAAAnB,KAASC,MACT,gBAAAmB,EAACN,EAAW,OAAX,EAAiB,OAAOE,EAAE,yBAAyB,GAAG,QAAO,SAC3D,UAAA;AAAA,MAAAE,uBACEJ,EAAW,eAAX,EAAyB,OAAOO,EAAgBpB,CAAY,GAAG;AAAA,MAEjE,CAACiB,KAA6BlB,aAAiBsB,KAC9C,gBAAAZ,EAACI,EAAW,MAAX,EAAiB,UAAAE,EAAE,qBAAqB,EAAA,CAAE;AAAA,MAE5C,CAACE,KAA6BlB,aAAiBuB,KAC9C,gBAAAb,EAACI,EAAW,MAAX,EAAgB,IAAG,OAAO,UAAAd,EAAM,OAAA,EAAO,CAAE;AAAA,IAAA,GAE9C;AAAA,IAEDL;AAAA,EAAA,GACH;AAEJ,GASaiB,IAAiB,CAAC;AAAA,EAC7B,UAAAjB;AAAA,EACA,mBAAAC,IAAoBC;AAAA,EACpB,iBAAiBC;AAAA,EACjB,sBAAAU;AACF,MAA2B;AACzB,QAAM,EAAE,kBAAkBH,EAAA,IAAgCC,EAAA,GACpDC,IAAkBT,KAA6BO;AAErD,2BACGmB,GAAA,EACE,UAAA,CAAC,EAAE,OAAOC,QACT,gBAAAf;AAAA,IAACgB;AAAA,IAAA;AAAA,MACC,mBAAA9B;AAAA,MACA,SAAS6B;AAAA,MACT,SAASjB;AAAA,MAET,4BAACmB,GAAA,EAAS,UAAU,gBAAAjB,EAACH,GAAA,EAAgB,GAAK,UAAAZ,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA,GAGzD;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"Base.js","sources":["../../../src/components/Base/Base.tsx"],"sourcesContent":["import type { ReactNode, JSX, ErrorInfo } from 'react'\nimport { Suspense, useEffect, useRef } from 'react'\nimport type { FallbackProps } from 'react-error-boundary'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { useTranslation } from 'react-i18next'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { QueryErrorResetBoundary } from '@tanstack/react-query'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { FadeIn } from '../Common/FadeIn/FadeIn'\nimport { BaseContext, type KnownErrors, type OnEventType } from './useBase'\nimport { useBaseSubmit } from './useBaseSubmit'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport { InternalError } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { ResourceDictionary, Resources } from '@/types/Helpers'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport { useObservability } from '@/contexts/ObservabilityProvider/useObservability'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\n\nexport interface CommonComponentInterface<TResourceKey extends keyof Resources = keyof Resources> {\n children?: ReactNode\n className?: string\n defaultValues?: unknown\n dictionary?: ResourceDictionary<TResourceKey>\n}\n\n// Base component wrapper with error and suspense handling\nexport interface BaseComponentInterface<\n TResourceKey extends keyof Resources = keyof Resources,\n> extends CommonComponentInterface<TResourceKey> {\n FallbackComponent?: BaseBoundariesProps['FallbackComponent']\n LoaderComponent?: BaseBoundariesProps['LoaderComponent']\n onEvent: OnEventType<EventType, unknown>\n}\n\n// Internal prop for SDK components to set their component name\ninterface InternalBaseComponentProps {\n componentName?: string\n}\n\nexport const BaseComponent = <TResourceKey extends keyof Resources = keyof Resources>({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onEvent,\n componentName,\n}: BaseComponentInterface<TResourceKey> & InternalBaseComponentProps) => {\n const { error, fieldErrors, baseSubmitHandler, setError } = useBaseSubmit(componentName)\n const { observability } = useObservability()\n\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n\n const onErrorBoundaryError = (error: unknown, errorInfo: ErrorInfo) => {\n onEvent(componentEvents.ERROR, error)\n\n observability?.onError?.({\n type: 'boundary_error',\n message: error instanceof Error ? error.message : 'Unknown error',\n stack: error instanceof Error ? error.stack : undefined,\n context: {\n componentName,\n componentStack: errorInfo.componentStack ?? undefined,\n },\n originalError: error,\n timestamp: Date.now(),\n })\n }\n\n return (\n <BaseContext.Provider\n value={{\n error,\n fieldErrors,\n setError,\n onEvent,\n baseSubmitHandler,\n LoadingIndicator: LoaderComponent,\n componentName,\n }}\n >\n <BaseBoundaries\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n onErrorBoundaryError={onErrorBoundaryError}\n componentName={componentName}\n >\n <BaseLayout error={error} fieldErrors={fieldErrors}>\n {children}\n </BaseLayout>\n </BaseBoundaries>\n </BaseContext.Provider>\n )\n}\n\ninterface BaseLayoutProps {\n children?: ReactNode\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n}\n\nexport const BaseLayout = ({ children, error, fieldErrors }: BaseLayoutProps) => {\n const Components = useComponentContext()\n const { t } = useTranslation()\n const hasDisplayableFieldErrors = Boolean(fieldErrors?.length)\n\n return (\n <FadeIn>\n {(error || fieldErrors) && (\n <Components.Alert label={t('status.errorEncountered')} status=\"error\">\n {hasDisplayableFieldErrors && (\n <Components.UnorderedList items={renderErrorList(fieldErrors!)} />\n )}\n {!hasDisplayableFieldErrors && error instanceof GustoEmbeddedError && (\n <Components.Text>{t('errors.unknownError')}</Components.Text>\n )}\n {!hasDisplayableFieldErrors && error instanceof SDKValidationError && (\n <Components.Text as=\"pre\">{error.pretty()}</Components.Text>\n )}\n </Components.Alert>\n )}\n {children}\n </FadeIn>\n )\n}\n\ninterface LoaderWithMetricsProps {\n LoaderComponent: LoadingIndicatorContextProps['LoadingIndicator']\n observability: ReturnType<typeof useObservability>['observability']\n componentName?: string\n}\n\nconst LoaderWithMetrics = ({\n LoaderComponent,\n observability,\n componentName,\n}: LoaderWithMetricsProps) => {\n const loadingStartTime = useRef(Date.now())\n const observabilityRef = useRef(observability)\n const componentNameRef = useRef(componentName)\n\n useEffect(() => {\n observabilityRef.current = observability\n componentNameRef.current = componentName\n }, [observability, componentName])\n\n useEffect(() => {\n return () => {\n const duration = Date.now() - loadingStartTime.current\n observabilityRef.current?.onMetric?.({\n name: 'sdk.component.loading_duration',\n value: duration,\n unit: 'ms',\n tags: componentNameRef.current ? { component: componentNameRef.current } : undefined,\n timestamp: Date.now(),\n })\n }\n }, [])\n\n return <LoaderComponent />\n}\n\nexport interface BaseBoundariesProps {\n children?: ReactNode\n FallbackComponent?: (props: FallbackProps) => JSX.Element\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void\n componentName?: string\n}\n\nexport const BaseBoundaries = ({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onErrorBoundaryError,\n componentName,\n}: BaseBoundariesProps) => {\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n const { observability } = useObservability()\n\n return (\n <QueryErrorResetBoundary>\n {({ reset: resetQueries }) => (\n <ErrorBoundary\n FallbackComponent={FallbackComponent}\n onReset={resetQueries}\n onError={onErrorBoundaryError}\n >\n <Suspense\n fallback={\n <LoaderWithMetrics\n LoaderComponent={LoaderComponent}\n observability={observability}\n componentName={componentName}\n />\n }\n >\n {children}\n </Suspense>\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n )\n}\n"],"names":["BaseComponent","children","FallbackComponent","InternalError","LoadingIndicatorFromProps","onEvent","componentName","error","fieldErrors","baseSubmitHandler","setError","useBaseSubmit","observability","useObservability","LoadingIndicatorFromContext","useLoadingIndicator","LoaderComponent","onErrorBoundaryError","errorInfo","componentEvents","jsx","BaseContext","BaseBoundaries","BaseLayout","Components","useComponentContext","t","useTranslation","hasDisplayableFieldErrors","FadeIn","jsxs","renderErrorList","GustoEmbeddedError","SDKValidationError","LoaderWithMetrics","loadingStartTime","useRef","observabilityRef","componentNameRef","useEffect","duration","QueryErrorResetBoundary","resetQueries","ErrorBoundary","Suspense"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ interface BaseContextProps {
|
|
|
12
12
|
onEvent: OnEventType<EventType, unknown>;
|
|
13
13
|
baseSubmitHandler: <T>(formData: T, componentHandler: (payload: T) => Promise<void>) => Promise<void>;
|
|
14
14
|
LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator'];
|
|
15
|
+
componentName?: string;
|
|
15
16
|
}
|
|
16
17
|
export declare const BaseContext: import('react').Context<BaseContextProps | undefined>;
|
|
17
18
|
export declare const useBase: () => BaseContextProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBase.js","sources":["../../../src/components/Base/useBase.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport type { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { type EventType } from '@/shared/constants'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\nexport type OnEventType<K, T> = (type: K, data?: T) => void\n\nexport type KnownErrors = GustoEmbeddedError | SDKValidationError\n\ninterface BaseContextProps {\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n setError: (err: KnownErrors | null) => void\n onEvent: OnEventType<EventType, unknown>\n baseSubmitHandler: <T>(\n formData: T,\n componentHandler: (payload: T) => Promise<void>,\n ) => Promise<void>\n LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\nexport const BaseContext = createContext<BaseContextProps | undefined>(undefined)\n\nexport const useBase = () => {\n const context = useContext(BaseContext)\n if (!context) {\n throw new Error('useBase must be used within a BaseProvider')\n }\n return context\n}\n"],"names":["BaseContext","createContext","useBase","context","useContext"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useBase.js","sources":["../../../src/components/Base/useBase.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport type { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { type EventType } from '@/shared/constants'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\nexport type OnEventType<K, T> = (type: K, data?: T) => void\n\nexport type KnownErrors = GustoEmbeddedError | SDKValidationError\n\ninterface BaseContextProps {\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n setError: (err: KnownErrors | null) => void\n onEvent: OnEventType<EventType, unknown>\n baseSubmitHandler: <T>(\n formData: T,\n componentHandler: (payload: T) => Promise<void>,\n ) => Promise<void>\n LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator']\n componentName?: string\n}\n\nexport const BaseContext = createContext<BaseContextProps | undefined>(undefined)\n\nexport const useBase = () => {\n const context = useContext(BaseContext)\n if (!context) {\n throw new Error('useBase must be used within a BaseProvider')\n }\n return context\n}\n"],"names":["BaseContext","createContext","useBase","context","useContext"],"mappings":";AAwBO,MAAMA,IAAcC,EAA4C,MAAS,GAEnEC,IAAU,MAAM;AAC3B,QAAMC,IAAUC,EAAWJ,CAAW;AACtC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,4CAA4C;AAE9D,SAAOA;AACT;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject';
|
|
2
2
|
import { KnownErrors } from './useBase';
|
|
3
3
|
type SubmitHandler<T> = (data: T) => Promise<void>;
|
|
4
|
-
export declare const useBaseSubmit: () => {
|
|
4
|
+
export declare const useBaseSubmit: (componentName?: string) => {
|
|
5
5
|
baseSubmitHandler: <T>(data: T, componentHandler: SubmitHandler<T>) => Promise<void>;
|
|
6
6
|
error: KnownErrors | null;
|
|
7
7
|
fieldErrors: EntityErrorObject[] | null;
|
|
@@ -1,46 +1,73 @@
|
|
|
1
|
-
import { useState as
|
|
1
|
+
import { useState as u, useCallback as c } from "react";
|
|
2
2
|
import { APIError as p } from "@gusto/embedded-api/models/errors/apierror";
|
|
3
|
-
import { GustoEmbeddedError as
|
|
4
|
-
import { SDKValidationError as
|
|
5
|
-
import { UnprocessableEntityErrorObject as
|
|
6
|
-
import { useAsyncError as
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
import { GustoEmbeddedError as g } from "@gusto/embedded-api/models/errors/gustoembeddederror";
|
|
4
|
+
import { SDKValidationError as h } from "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
5
|
+
import { UnprocessableEntityErrorObject as b } from "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
|
|
6
|
+
import { useAsyncError as v } from "../../hooks/useAsyncError.js";
|
|
7
|
+
import { useObservability as w } from "../../contexts/ObservabilityProvider/useObservability.js";
|
|
8
|
+
import { createObservabilityError as S } from "../../contexts/ObservabilityProvider/observabilityUtils.js";
|
|
9
|
+
import { getFieldErrors as A } from "../../helpers/apiErrorToList.js";
|
|
10
|
+
const B = (o) => {
|
|
11
|
+
const [E, i] = u(null), [y, a] = u(null), f = v(), { observability: n } = w(), d = c((t) => {
|
|
12
|
+
i(t), t || a(null);
|
|
13
|
+
}, []), m = c(
|
|
14
|
+
(t) => {
|
|
15
|
+
i(t);
|
|
16
|
+
const e = S(t);
|
|
17
|
+
if (e && n?.onError?.({
|
|
18
|
+
...e,
|
|
19
|
+
context: {
|
|
20
|
+
...e.context,
|
|
21
|
+
componentName: o
|
|
22
|
+
}
|
|
23
|
+
}), t instanceof b && Array.isArray(t.errors)) {
|
|
24
|
+
const l = t.errors.flatMap((s) => A(s));
|
|
25
|
+
if (l.length > 0)
|
|
26
|
+
a(l);
|
|
27
|
+
else {
|
|
28
|
+
const s = t.errors.filter((r) => r.message).map((r) => ({
|
|
29
|
+
errorKey: r.errorKey,
|
|
30
|
+
message: r.message ?? "",
|
|
31
|
+
category: r.category
|
|
32
|
+
}));
|
|
33
|
+
s.length > 0 && a(s);
|
|
34
|
+
}
|
|
23
35
|
}
|
|
24
|
-
}
|
|
25
|
-
|
|
36
|
+
},
|
|
37
|
+
[n, o]
|
|
38
|
+
);
|
|
26
39
|
return {
|
|
27
|
-
baseSubmitHandler:
|
|
28
|
-
async (
|
|
29
|
-
|
|
40
|
+
baseSubmitHandler: c(
|
|
41
|
+
async (t, e) => {
|
|
42
|
+
const l = Date.now();
|
|
43
|
+
i(null), a(null);
|
|
44
|
+
let s = !1;
|
|
30
45
|
try {
|
|
31
|
-
await
|
|
46
|
+
await e(t), s = !0;
|
|
32
47
|
} catch (r) {
|
|
33
|
-
r instanceof p || r instanceof
|
|
48
|
+
r instanceof p || r instanceof h || r instanceof b || r instanceof g ? m(r) : f(r);
|
|
49
|
+
} finally {
|
|
50
|
+
const r = Date.now() - l;
|
|
51
|
+
n?.onMetric?.({
|
|
52
|
+
name: "sdk.form.submit_duration",
|
|
53
|
+
value: r,
|
|
54
|
+
unit: "ms",
|
|
55
|
+
tags: {
|
|
56
|
+
status: s ? "success" : "error",
|
|
57
|
+
...o && { component: o }
|
|
58
|
+
},
|
|
59
|
+
timestamp: Date.now()
|
|
60
|
+
});
|
|
34
61
|
}
|
|
35
62
|
},
|
|
36
|
-
[
|
|
63
|
+
[i, f, n, o, m]
|
|
37
64
|
),
|
|
38
|
-
error:
|
|
39
|
-
fieldErrors:
|
|
40
|
-
setError:
|
|
65
|
+
error: E,
|
|
66
|
+
fieldErrors: y,
|
|
67
|
+
setError: d
|
|
41
68
|
};
|
|
42
69
|
};
|
|
43
70
|
export {
|
|
44
|
-
|
|
71
|
+
B as useBaseSubmit
|
|
45
72
|
};
|
|
46
73
|
//# sourceMappingURL=useBaseSubmit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBaseSubmit.js","sources":["../../../src/components/Base/useBaseSubmit.ts"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { APIError } from '@gusto/embedded-api/models/errors/apierror'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { UnprocessableEntityErrorObject } from '@gusto/embedded-api/models/errors/unprocessableentityerrorobject'\nimport type { KnownErrors } from './useBase'\nimport { useAsyncError } from '@/hooks/useAsyncError'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\ntype SubmitHandler<T> = (data: T) => Promise<void>\n\nexport const useBaseSubmit = () => {\n const [error, setError] = useState<KnownErrors | null>(null)\n const [fieldErrors, setFieldErrors] = useState<EntityErrorObject[] | null>(null)\n const throwError = useAsyncError()\n\n // Enhanced setError that also clears fieldErrors when error is cleared\n const setErrorWithFieldsClear = useCallback((error: KnownErrors | null) => {\n setError(error)\n if (!error) {\n setFieldErrors(null)\n }\n }, [])\n\n const processError = (error: KnownErrors) => {\n
|
|
1
|
+
{"version":3,"file":"useBaseSubmit.js","sources":["../../../src/components/Base/useBaseSubmit.ts"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { APIError } from '@gusto/embedded-api/models/errors/apierror'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { UnprocessableEntityErrorObject } from '@gusto/embedded-api/models/errors/unprocessableentityerrorobject'\nimport type { KnownErrors } from './useBase'\nimport { useAsyncError } from '@/hooks/useAsyncError'\nimport { useObservability } from '@/contexts/ObservabilityProvider/useObservability'\nimport { createObservabilityError } from '@/contexts/ObservabilityProvider/observabilityUtils'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\ntype SubmitHandler<T> = (data: T) => Promise<void>\n\nexport const useBaseSubmit = (componentName?: string) => {\n const [error, setError] = useState<KnownErrors | null>(null)\n const [fieldErrors, setFieldErrors] = useState<EntityErrorObject[] | null>(null)\n const throwError = useAsyncError()\n const { observability } = useObservability()\n\n // Enhanced setError that also clears fieldErrors when error is cleared\n const setErrorWithFieldsClear = useCallback((error: KnownErrors | null) => {\n setError(error)\n if (!error) {\n setFieldErrors(null)\n }\n }, [])\n\n const processError = useCallback(\n (error: KnownErrors) => {\n setError(error)\n\n // Report error to observability\n const observabilityError = createObservabilityError(error)\n if (observabilityError) {\n observability?.onError?.({\n ...observabilityError,\n context: {\n ...observabilityError.context,\n componentName,\n },\n })\n }\n\n if (error instanceof UnprocessableEntityErrorObject && Array.isArray(error.errors)) {\n const parsed = error.errors.flatMap(err => getFieldErrors(err))\n if (parsed.length > 0) {\n setFieldErrors(parsed)\n } else {\n const fallbackErrors: EntityErrorObject[] = error.errors\n .filter(err => err.message)\n .map(err => ({\n errorKey: err.errorKey,\n message: err.message ?? '',\n category: err.category,\n }))\n if (fallbackErrors.length > 0) {\n setFieldErrors(fallbackErrors)\n }\n }\n }\n },\n [observability, componentName],\n )\n\n const baseSubmitHandler = useCallback(\n async <T>(data: T, componentHandler: SubmitHandler<T>) => {\n const startTime = Date.now()\n setError(null)\n setFieldErrors(null)\n\n let success = false\n\n try {\n await componentHandler(data)\n success = true\n } catch (err) {\n if (\n err instanceof APIError ||\n err instanceof SDKValidationError ||\n err instanceof UnprocessableEntityErrorObject ||\n err instanceof GustoEmbeddedError\n ) {\n processError(err)\n } else throwError(err)\n } finally {\n const duration = Date.now() - startTime\n observability?.onMetric?.({\n name: 'sdk.form.submit_duration',\n value: duration,\n unit: 'ms',\n tags: {\n status: success ? 'success' : 'error',\n ...(componentName && { component: componentName }),\n },\n timestamp: Date.now(),\n })\n }\n },\n [setError, throwError, observability, componentName, processError],\n )\n\n return {\n baseSubmitHandler,\n error,\n fieldErrors,\n setError: setErrorWithFieldsClear,\n }\n}\n"],"names":["useBaseSubmit","componentName","error","setError","useState","fieldErrors","setFieldErrors","throwError","useAsyncError","observability","useObservability","setErrorWithFieldsClear","useCallback","processError","observabilityError","createObservabilityError","UnprocessableEntityErrorObject","parsed","err","getFieldErrors","fallbackErrors","data","componentHandler","startTime","success","APIError","SDKValidationError","GustoEmbeddedError","duration"],"mappings":";;;;;;;;;AAcO,MAAMA,IAAgB,CAACC,MAA2B;AACvD,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAA6B,IAAI,GACrD,CAACC,GAAaC,CAAc,IAAIF,EAAqC,IAAI,GACzEG,IAAaC,EAAA,GACb,EAAE,eAAAC,EAAA,IAAkBC,EAAA,GAGpBC,IAA0BC,EAAY,CAACV,MAA8B;AACzE,IAAAC,EAASD,CAAK,GACTA,KACHI,EAAe,IAAI;AAAA,EAEvB,GAAG,CAAA,CAAE,GAECO,IAAeD;AAAA,IACnB,CAACV,MAAuB;AACtB,MAAAC,EAASD,CAAK;AAGd,YAAMY,IAAqBC,EAAyBb,CAAK;AAWzD,UAVIY,KACFL,GAAe,UAAU;AAAA,QACvB,GAAGK;AAAA,QACH,SAAS;AAAA,UACP,GAAGA,EAAmB;AAAA,UACtB,eAAAb;AAAA,QAAA;AAAA,MACF,CACD,GAGCC,aAAiBc,KAAkC,MAAM,QAAQd,EAAM,MAAM,GAAG;AAClF,cAAMe,IAASf,EAAM,OAAO,QAAQ,CAAAgB,MAAOC,EAAeD,CAAG,CAAC;AAC9D,YAAID,EAAO,SAAS;AAClB,UAAAX,EAAeW,CAAM;AAAA,aAChB;AACL,gBAAMG,IAAsClB,EAAM,OAC/C,OAAO,OAAOgB,EAAI,OAAO,EACzB,IAAI,CAAAA,OAAQ;AAAA,YACX,UAAUA,EAAI;AAAA,YACd,SAASA,EAAI,WAAW;AAAA,YACxB,UAAUA,EAAI;AAAA,UAAA,EACd;AACJ,UAAIE,EAAe,SAAS,KAC1Bd,EAAec,CAAc;AAAA,QAEjC;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAACX,GAAeR,CAAa;AAAA,EAAA;AAwC/B,SAAO;AAAA,IACL,mBAtCwBW;AAAA,MACxB,OAAUS,GAASC,MAAuC;AACxD,cAAMC,IAAY,KAAK,IAAA;AACvB,QAAApB,EAAS,IAAI,GACbG,EAAe,IAAI;AAEnB,YAAIkB,IAAU;AAEd,YAAI;AACF,gBAAMF,EAAiBD,CAAI,GAC3BG,IAAU;AAAA,QACZ,SAASN,GAAK;AACZ,UACEA,aAAeO,KACfP,aAAeQ,KACfR,aAAeF,KACfE,aAAeS,IAEfd,EAAaK,CAAG,MACAA,CAAG;AAAA,QACvB,UAAA;AACE,gBAAMU,IAAW,KAAK,IAAA,IAAQL;AAC9B,UAAAd,GAAe,WAAW;AAAA,YACxB,MAAM;AAAA,YACN,OAAOmB;AAAA,YACP,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,QAAQJ,IAAU,YAAY;AAAA,cAC9B,GAAIvB,KAAiB,EAAE,WAAWA,EAAA;AAAA,YAAc;AAAA,YAElD,WAAW,KAAK,IAAA;AAAA,UAAI,CACrB;AAAA,QACH;AAAA,MACF;AAAA,MACA,CAACE,GAAUI,GAAYE,GAAeR,GAAeY,CAAY;AAAA,IAAA;AAAA,IAKjE,OAAAX;AAAA,IACA,aAAAG;AAAA,IACA,UAAUM;AAAA,EAAA;AAEd;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { HamburgerMenuProps } from './HamburgerMenuTypes';
|
|
2
|
-
export declare function HamburgerMenu({ items, triggerLabel, menuLabel, onClose, isLoading, ...props }: HamburgerMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function HamburgerMenu({ items, triggerLabel, menuLabel, onClose, isLoading, placement, ...props }: HamburgerMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { jsxs as f, Fragment as
|
|
2
|
-
import { useTranslation as
|
|
3
|
-
import { useComponentContext as
|
|
4
|
-
import
|
|
5
|
-
import { useMenu as
|
|
6
|
-
function
|
|
1
|
+
import { jsxs as f, Fragment as g, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as C } from "react-i18next";
|
|
3
|
+
import { useComponentContext as x } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
4
|
+
import M from "../../../assets/icons/hamburger.svg.js";
|
|
5
|
+
import { useMenu as d } from "../../../hooks/useMenu.js";
|
|
6
|
+
function v({
|
|
7
7
|
items: t,
|
|
8
8
|
triggerLabel: s,
|
|
9
9
|
menuLabel: m,
|
|
10
10
|
onClose: a,
|
|
11
11
|
isLoading: l = !1,
|
|
12
|
-
|
|
12
|
+
placement: u = "bottom end",
|
|
13
|
+
...i
|
|
13
14
|
}) {
|
|
14
|
-
const { t: e } =
|
|
15
|
-
return /* @__PURE__ */ f(
|
|
15
|
+
const { t: e } = C("common"), r = x(), { triggerProps: p, menuProps: n } = d(), { ref: b, ...c } = p;
|
|
16
|
+
return /* @__PURE__ */ f(g, { children: [
|
|
16
17
|
/* @__PURE__ */ o(
|
|
17
18
|
r.ButtonIcon,
|
|
18
19
|
{
|
|
19
20
|
isLoading: l,
|
|
20
21
|
"aria-label": s || e("labels.openMenu"),
|
|
21
|
-
buttonRef:
|
|
22
|
+
buttonRef: b,
|
|
22
23
|
...c,
|
|
23
|
-
children: /* @__PURE__ */ o(
|
|
24
|
+
children: /* @__PURE__ */ o(M, {})
|
|
24
25
|
}
|
|
25
26
|
),
|
|
26
27
|
/* @__PURE__ */ o(
|
|
@@ -30,12 +31,13 @@ function T({
|
|
|
30
31
|
items: t,
|
|
31
32
|
"aria-label": m || e("labels.menuLabel"),
|
|
32
33
|
onClose: a || n.onClose,
|
|
33
|
-
|
|
34
|
+
placement: u,
|
|
35
|
+
...i
|
|
34
36
|
}
|
|
35
37
|
)
|
|
36
38
|
] });
|
|
37
39
|
}
|
|
38
40
|
export {
|
|
39
|
-
|
|
41
|
+
v as HamburgerMenu
|
|
40
42
|
};
|
|
41
43
|
//# sourceMappingURL=HamburgerMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HamburgerMenu.js","sources":["../../../../src/components/Common/HamburgerMenu/HamburgerMenu.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { type HamburgerMenuProps } from './HamburgerMenuTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport HamburgerIcon from '@/assets/icons/hamburger.svg?react'\nimport { useMenu } from '@/hooks/useMenu'\n\nexport function HamburgerMenu({\n items,\n triggerLabel,\n menuLabel,\n onClose,\n isLoading = false,\n ...props\n}: HamburgerMenuProps) {\n const { t } = useTranslation('common')\n const Components = useComponentContext()\n const { triggerProps, menuProps } = useMenu()\n\n const { ref, ...restTriggerProps } = triggerProps\n\n return (\n <>\n <Components.ButtonIcon\n isLoading={isLoading}\n aria-label={triggerLabel || t('labels.openMenu')}\n buttonRef={ref}\n {...restTriggerProps}\n >\n <HamburgerIcon />\n </Components.ButtonIcon>\n <Components.Menu\n {...menuProps}\n items={items}\n aria-label={menuLabel || t('labels.menuLabel')}\n onClose={onClose || menuProps.onClose}\n {...props}\n />\n </>\n )\n}\n"],"names":["HamburgerMenu","items","triggerLabel","menuLabel","onClose","isLoading","props","t","useTranslation","Components","useComponentContext","triggerProps","menuProps","useMenu","ref","restTriggerProps","jsxs","Fragment","jsx","HamburgerIcon"],"mappings":";;;;;AAMO,SAASA,EAAc;AAAA,EAC5B,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAuB;AACrB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,QAAQ,GAC/BC,IAAaC,EAAA,GACb,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcC,EAAA,GAE9B,EAAE,KAAAC,GAAK,GAAGC,EAAA,IAAqBJ;AAErC,SACE,gBAAAK,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACT,EAAW;AAAA,MAAX;AAAA,QACC,
|
|
1
|
+
{"version":3,"file":"HamburgerMenu.js","sources":["../../../../src/components/Common/HamburgerMenu/HamburgerMenu.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { type HamburgerMenuProps } from './HamburgerMenuTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport HamburgerIcon from '@/assets/icons/hamburger.svg?react'\nimport { useMenu } from '@/hooks/useMenu'\n\nexport function HamburgerMenu({\n items,\n triggerLabel,\n menuLabel,\n onClose,\n isLoading = false,\n placement = 'bottom end',\n ...props\n}: HamburgerMenuProps) {\n const { t } = useTranslation('common')\n const Components = useComponentContext()\n const { triggerProps, menuProps } = useMenu()\n\n const { ref, ...restTriggerProps } = triggerProps\n\n return (\n <>\n <Components.ButtonIcon\n isLoading={isLoading}\n aria-label={triggerLabel || t('labels.openMenu')}\n buttonRef={ref}\n {...restTriggerProps}\n >\n <HamburgerIcon />\n </Components.ButtonIcon>\n <Components.Menu\n {...menuProps}\n items={items}\n aria-label={menuLabel || t('labels.menuLabel')}\n onClose={onClose || menuProps.onClose}\n placement={placement}\n {...props}\n />\n </>\n )\n}\n"],"names":["HamburgerMenu","items","triggerLabel","menuLabel","onClose","isLoading","placement","props","t","useTranslation","Components","useComponentContext","triggerProps","menuProps","useMenu","ref","restTriggerProps","jsxs","Fragment","jsx","HamburgerIcon"],"mappings":";;;;;AAMO,SAASA,EAAc;AAAA,EAC5B,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAuB;AACrB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,QAAQ,GAC/BC,IAAaC,EAAA,GACb,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcC,EAAA,GAE9B,EAAE,KAAAC,GAAK,GAAGC,EAAA,IAAqBJ;AAErC,SACE,gBAAAK,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACT,EAAW;AAAA,MAAX;AAAA,QACC,WAAAL;AAAA,QACA,cAAYH,KAAgBM,EAAE,iBAAiB;AAAA,QAC/C,WAAWO;AAAA,QACV,GAAGC;AAAA,QAEJ,4BAACI,GAAA,CAAA,CAAc;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB,gBAAAD;AAAA,MAACT,EAAW;AAAA,MAAX;AAAA,QACE,GAAGG;AAAA,QACJ,OAAAZ;AAAA,QACA,cAAYE,KAAaK,EAAE,kBAAkB;AAAA,QAC7C,SAASJ,KAAWS,EAAU;AAAA,QAC9B,WAAAP;AAAA,QACC,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GACF;AAEJ;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import h from "classnames";
|
|
3
|
+
import { Flex as u } from "../../Flex/Flex.js";
|
|
3
4
|
import { BreadcrumbsDefaults as k } from "./BreadcrumbsTypes.js";
|
|
4
5
|
import r from "./Breadcrumbs.module.scss.js";
|
|
5
6
|
import { applyMissingDefaults as x } from "../../../../helpers/applyMissingDefaults.js";
|
|
6
|
-
import { Flex as u } from "../../Flex/Flex.js";
|
|
7
7
|
function I(p) {
|
|
8
8
|
const f = x(p, k), {
|
|
9
9
|
className: s,
|
|
@@ -7,13 +7,13 @@ import { FileInputDefaults as K } from "./FileInputTypes.js";
|
|
|
7
7
|
import n from "./FileInput.module.scss.js";
|
|
8
8
|
import { applyMissingDefaults as L } from "../../../../helpers/applyMissingDefaults.js";
|
|
9
9
|
import { FieldLayout as O } from "../../FieldLayout/FieldLayout.js";
|
|
10
|
+
import { Flex as y } from "../../Flex/Flex.js";
|
|
10
11
|
import { ButtonIcon as R } from "../Button/ButtonIcon.js";
|
|
11
12
|
import W from "../../../../assets/icons/icon-trashcan.svg.js";
|
|
12
13
|
import Z from "../../../../assets/icons/icon-file-outline.svg.js";
|
|
13
14
|
import $ from "../../../../assets/icons/icon-file-pdf.svg.js";
|
|
14
15
|
import H from "../../../../assets/icons/icon-file-png.svg.js";
|
|
15
16
|
import V from "../../../../assets/icons/icon-file-jpg.svg.js";
|
|
16
|
-
import { Flex as y } from "../../Flex/Flex.js";
|
|
17
17
|
function Q(i) {
|
|
18
18
|
return i === "application/pdf" ? $ : i === "image/png" ? H : i === "image/jpeg" || i === "image/jpg" ? V : Z;
|
|
19
19
|
}
|