@zayne-labs/ui-react 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/chunk-CWUEUCR5.js +3 -0
- package/dist/esm/chunk-CWUEUCR5.js.map +1 -0
- package/dist/esm/chunk-DJIVSXN7.js +24 -0
- package/dist/esm/chunk-DJIVSXN7.js.map +1 -0
- package/dist/esm/chunk-NPIJ4XZP.js +13 -0
- package/dist/esm/chunk-NPIJ4XZP.js.map +1 -0
- package/dist/esm/{chunk-P6HRTILR.js → chunk-OM4ZFFQS.js} +7 -25
- package/dist/esm/chunk-OM4ZFFQS.js.map +1 -0
- package/dist/esm/common/await/index.d.ts +15 -0
- package/dist/esm/common/await/index.js +5 -0
- package/dist/esm/common/await/index.js.map +1 -0
- package/dist/esm/common/error-boundary/index.d.ts +41 -0
- package/dist/esm/common/error-boundary/index.js +4 -0
- package/dist/esm/common/error-boundary/index.js.map +1 -0
- package/dist/esm/common/index.d.ts +6 -71
- package/dist/esm/common/index.js +6 -3
- package/dist/esm/common/suspense-with-boundary/index.d.ts +11 -0
- package/dist/esm/common/suspense-with-boundary/index.js +5 -0
- package/dist/esm/common/suspense-with-boundary/index.js.map +1 -0
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.js +6 -3
- package/dist/esm/types-CeWumkhm.d.ts +22 -0
- package/dist/esm/ui/form/index.js +6 -3
- package/dist/esm/ui/index.js +6 -3
- package/package.json +1 -1
- package/dist/esm/chunk-P6HRTILR.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CWUEUCR5.js"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ErrorBoundary } from './chunk-OM4ZFFQS.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Fragment, Suspense, use } from 'react';
|
|
4
|
+
|
|
5
|
+
function Await(props) {
|
|
6
|
+
const { errorFallback, fallback, wrapperVariant = "suspense-and-boundary", ...restOfProps } = props;
|
|
7
|
+
const WithErrorBoundary = wrapperVariant === "only-boundary" || wrapperVariant === "suspense-and-boundary" ? ErrorBoundary : Fragment;
|
|
8
|
+
const WithSuspense = wrapperVariant === "only-suspense" || wrapperVariant === "suspense-and-boundary" ? Suspense : Fragment;
|
|
9
|
+
const errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };
|
|
10
|
+
const suspenseProps = Boolean(fallback) && { fallback };
|
|
11
|
+
return /* @__PURE__ */ React.createElement(WithErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React.createElement(WithSuspense, { ...suspenseProps }, /* @__PURE__ */ React.createElement(AwaitInner, { ...restOfProps })));
|
|
12
|
+
}
|
|
13
|
+
function AwaitInner(props) {
|
|
14
|
+
const { children, promise, render } = props;
|
|
15
|
+
const result = use(promise);
|
|
16
|
+
if (typeof children === "function") {
|
|
17
|
+
return children(result);
|
|
18
|
+
}
|
|
19
|
+
return render(result);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { Await };
|
|
23
|
+
//# sourceMappingURL=chunk-DJIVSXN7.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-DJIVSXN7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/common/await/await.tsx"],"names":["ReactFragment"],"mappings":";;;;AAcO,SAAS,MAAc,KAA2B,EAAA;AACxD,EAAA,MAAM,EAAE,aAAe,EAAA,QAAA,EAAU,iBAAiB,uBAAyB,EAAA,GAAG,aAAgB,GAAA,KAAA;AAE9F,EAAA,MAAM,iBACL,GAAA,cAAA,KAAmB,eAAmB,IAAA,cAAA,KAAmB,0BACtD,aACA,GAAAA,QAAA;AAEJ,EAAA,MAAM,YACL,GAAA,cAAA,KAAmB,eAAmB,IAAA,cAAA,KAAmB,0BACtD,QACA,GAAAA,QAAA;AAEJ,EAAA,MAAM,qBAAqB,OAAQ,CAAA,aAAa,CAAK,IAAA,EAAE,UAAU,aAAc,EAAA;AAE/E,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,EAAE,QAAS,EAAA;AAEtD,EAAA,uBACE,KAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAmB,GAAG,kBAAA,EAAA,kBACrB,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAc,GAAG,aAAA,EAAA,kBAChB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAY,GAAG,WAAA,EAAa,CAC9B,CACD,CAAA;AAEF;AAMA,SAAS,WAAmB,KAAgC,EAAA;AAC3D,EAAA,MAAM,EAAE,QAAA,EAAU,OAAS,EAAA,MAAA,EAAW,GAAA,KAAA;AAEtC,EAAM,MAAA,MAAA,GAAS,IAAI,OAAO,CAAA;AAE1B,EAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AACnC,IAAA,OAAO,SAAS,MAAM,CAAA;AAAA;AAGvB,EAAA,OAAO,OAAO,MAAM,CAAA;AACrB","file":"chunk-DJIVSXN7.js","sourcesContent":["import * as React from \"react\";\n\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { Fragment as ReactFragment, Suspense, use } from \"react\";\nimport { ErrorBoundary } from \"../error-boundary\";\nimport type { SuspenseWithBoundaryProps } from \"../suspense-with-boundary\";\n\ntype RenderPropFn<Tvalue> = (result: Tvalue) => React.ReactNode;\n\ntype AwaitProps<Tvalue> = AwaitInnerProps<Tvalue>\n\t& Pick<SuspenseWithBoundaryProps, \"errorFallback\" | \"fallback\"> & {\n\t\twrapperVariant?: \"none\" | \"only-boundary\" | \"only-suspense\" | \"suspense-and-boundary\";\n\t};\n\nexport function Await<Tvalue>(props: AwaitProps<Tvalue>) {\n\tconst { errorFallback, fallback, wrapperVariant = \"suspense-and-boundary\", ...restOfProps } = props;\n\n\tconst WithErrorBoundary =\n\t\twrapperVariant === \"only-boundary\" || wrapperVariant === \"suspense-and-boundary\"\n\t\t\t? ErrorBoundary\n\t\t\t: ReactFragment;\n\n\tconst WithSuspense =\n\t\twrapperVariant === \"only-suspense\" || wrapperVariant === \"suspense-and-boundary\"\n\t\t\t? Suspense\n\t\t\t: ReactFragment;\n\n\tconst errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };\n\n\tconst suspenseProps = Boolean(fallback) && { fallback };\n\n\treturn (\n\t\t<WithErrorBoundary {...errorBoundaryProps}>\n\t\t\t<WithSuspense {...suspenseProps}>\n\t\t\t\t<AwaitInner {...restOfProps} />\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\nexport type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {\n\tpromise: Promise<Tvalue>;\n};\n\nfunction AwaitInner<TValue>(props: AwaitInnerProps<TValue>) {\n\tconst { children, promise, render } = props;\n\n\tconst result = use(promise);\n\n\tif (typeof children === \"function\") {\n\t\treturn children(result);\n\t}\n\n\treturn render(result);\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ErrorBoundary } from './chunk-OM4ZFFQS.js';
|
|
2
|
+
import { Suspense } from 'react';
|
|
3
|
+
|
|
4
|
+
function SuspenseWithBoundary(props) {
|
|
5
|
+
const { children, errorFallback, fallback } = props;
|
|
6
|
+
const errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };
|
|
7
|
+
const suspenseProps = Boolean(fallback) && { fallback };
|
|
8
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React.createElement(Suspense, { ...suspenseProps }, children));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { SuspenseWithBoundary };
|
|
12
|
+
//# sourceMappingURL=chunk-NPIJ4XZP.js.map
|
|
13
|
+
//# sourceMappingURL=chunk-NPIJ4XZP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/common/suspense-with-boundary/suspense-with-boundary.tsx"],"names":[],"mappings":";;;AASO,SAAS,qBAAqB,KAAkC,EAAA;AACtE,EAAA,MAAM,EAAE,QAAA,EAAU,aAAe,EAAA,QAAA,EAAa,GAAA,KAAA;AAE9C,EAAA,MAAM,qBAAqB,OAAQ,CAAA,aAAa,CAAK,IAAA,EAAE,UAAU,aAAc,EAAA;AAC/E,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,EAAE,QAAS,EAAA;AAEtD,EACC,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAe,GAAG,kBAAA,EAAA,sCACjB,QAAU,EAAA,EAAA,GAAG,aAAgB,EAAA,EAAA,QAAS,CACxC,CAAA;AAEF","file":"chunk-NPIJ4XZP.js","sourcesContent":["import { Suspense } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps } from \"../error-boundary\";\n\nexport type SuspenseWithBoundaryProps = {\n\tchildren: React.ReactNode;\n\terrorFallback?: ErrorBoundaryProps[\"fallback\"];\n\tfallback?: React.ReactNode;\n};\n\nexport function SuspenseWithBoundary(props: SuspenseWithBoundaryProps) {\n\tconst { children, errorFallback, fallback } = props;\n\n\tconst errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };\n\tconst suspenseProps = Boolean(fallback) && { fallback };\n\n\treturn (\n\t\t<ErrorBoundary {...errorBoundaryProps}>\n\t\t\t<Suspense {...suspenseProps}>{children}</Suspense>\n\t\t</ErrorBoundary>\n\t);\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import * as React2 from 'react';
|
|
2
|
-
import { useState, Component, Fragment, Suspense, use } from 'react';
|
|
3
1
|
import { createCustomContext, useCallbackRef } from '@zayne-labs/toolkit-react';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useState, Component } from 'react';
|
|
4
4
|
import { isFunction } from '@zayne-labs/toolkit-type-helpers';
|
|
5
5
|
|
|
6
|
-
// src/components/common/
|
|
6
|
+
// src/components/common/error-boundary/error-boundary-context.ts
|
|
7
7
|
var [ErrorBoundaryContextProvider, useErrorBoundaryContext] = createCustomContext({
|
|
8
8
|
hookName: "useErrorBoundaryContext",
|
|
9
9
|
name: "ErrorBoundaryContext",
|
|
@@ -80,7 +80,7 @@ var ErrorBoundary = class extends Component {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
return /* @__PURE__ */
|
|
83
|
+
return /* @__PURE__ */ React.createElement(
|
|
84
84
|
ErrorBoundaryContextProvider,
|
|
85
85
|
{
|
|
86
86
|
value: { error, hasError, resetErrorBoundary: this.#resetErrorBoundary }
|
|
@@ -97,24 +97,6 @@ var ErrorBoundary = class extends Component {
|
|
|
97
97
|
};
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const WithErrorBoundary = errorFallback ? ErrorBoundary : Fragment;
|
|
104
|
-
const WithSuspense = fallback ? Suspense : Fragment;
|
|
105
|
-
const errorBoundaryProps = { fallback: errorFallback };
|
|
106
|
-
const suspenseProps = { fallback };
|
|
107
|
-
return /* @__PURE__ */ React2.createElement(WithErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React2.createElement(WithSuspense, { ...suspenseProps }, /* @__PURE__ */ React2.createElement(AwaitInner, { ...restOfProps })));
|
|
108
|
-
}
|
|
109
|
-
function AwaitInner(props) {
|
|
110
|
-
const { children, promise, render } = props;
|
|
111
|
-
const result = use(promise);
|
|
112
|
-
if (typeof children === "function") {
|
|
113
|
-
return children(result);
|
|
114
|
-
}
|
|
115
|
-
return render(result);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export { Await, ErrorBoundary, useErrorBoundary, useErrorBoundaryContext };
|
|
119
|
-
//# sourceMappingURL=chunk-P6HRTILR.js.map
|
|
120
|
-
//# sourceMappingURL=chunk-P6HRTILR.js.map
|
|
100
|
+
export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext };
|
|
101
|
+
//# sourceMappingURL=chunk-OM4ZFFQS.js.map
|
|
102
|
+
//# sourceMappingURL=chunk-OM4ZFFQS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/common/error-boundary/error-boundary-context.ts","../../src/components/common/error-boundary/useErrorBoundary.ts","../../src/components/common/error-boundary/error-boundary.tsx"],"names":[],"mappings":"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","file":"chunk-OM4ZFFQS.js","sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type ErrorBoundaryContextType = {\n\terror: unknown;\n\thasError: boolean;\n\tresetErrorBoundary: (...args: unknown[]) => void;\n};\n\nexport const [ErrorBoundaryContextProvider, useErrorBoundaryContext] =\n\tcreateCustomContext<ErrorBoundaryContextType>({\n\t\thookName: \"useErrorBoundaryContext\",\n\t\tname: \"ErrorBoundaryContext\",\n\t\tproviderName: \"ErrorBoundaryContextProvider\",\n\t});\n","import { useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useErrorBoundaryContext } from \"./error-boundary-context\";\n\ntype UseErrorBoundaryState<TError extends Error> =\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t }\n\t| {\n\t\t\terror: TError;\n\t\t\thasError: true;\n\t };\n\nexport const useErrorBoundary = <TError extends Error>() => {\n\tconst { resetErrorBoundary } = useErrorBoundaryContext();\n\n\tconst [state, setState] = useState<UseErrorBoundaryState<TError>>({\n\t\terror: null,\n\t\thasError: false,\n\t});\n\n\tif (state.hasError) {\n\t\tthrow state.error;\n\t}\n\n\tconst resetBoundary = useCallbackRef(() => {\n\t\tresetErrorBoundary();\n\n\t\tsetState({\n\t\t\terror: null,\n\t\t\thasError: false,\n\t\t});\n\t});\n\n\tconst showBoundary = useCallbackRef((error: TError) => {\n\t\tsetState({\n\t\t\terror,\n\t\t\thasError: true,\n\t\t});\n\t});\n\n\treturn { resetBoundary, showBoundary };\n};\n","import { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Component } from \"react\";\nimport { ErrorBoundaryContextProvider } from \"./error-boundary-context\";\nimport type { ErrorBoundaryProps, FallbackProps } from \"./types\";\n\ntype ErrorBoundaryState =\n\t| {\n\t\t\terror: Error;\n\t\t\thasError: true;\n\t }\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t };\n\nconst initialState: ErrorBoundaryState = {\n\terror: null,\n\thasError: false,\n};\n\nconst hasArrayChanged = (a: unknown[] = [], b: unknown[] = []) => {\n\treturn a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n};\n\n/**\n * Copied from react-error-boundary package\n * @see https://github.com/bvaughn/react-error-boundary\n */\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n\tconstructor(props: ErrorBoundaryProps) {\n\t\tsuper(props);\n\n\t\tthis.state = initialState;\n\t}\n\n\tstatic getDerivedStateFromError(error: Error) {\n\t\treturn { error, hasError: true };\n\t}\n\n\toverride componentDidCatch(error: Error, info: React.ErrorInfo) {\n\t\tthis.props.onError?.(error, info);\n\t}\n\n\toverride componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n\t\tconst { hasError } = this.state;\n\t\tconst { resetKeys } = this.props;\n\n\t\t// There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array, we'd end up resetting the error boundary immediately.\n\t\t// This would likely trigger a second error to be thrown.\n\t\t// So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n\t\tif (hasError && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n\t\t\tthis.props.onReset?.({ next: resetKeys, prev: prevProps.resetKeys, reason: \"keys\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst { children, fallback } = this.props;\n\t\tconst { error, hasError } = this.state;\n\n\t\tlet childToRender = children;\n\n\t\tif (hasError) {\n\t\t\tswitch (true) {\n\t\t\t\tcase isFunction(fallback): {\n\t\t\t\t\tconst props: FallbackProps = { error, resetErrorBoundary: this.#resetErrorBoundary };\n\n\t\t\t\t\tchildToRender = fallback(props);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase fallback !== undefined: {\n\t\t\t\t\tchildToRender = fallback;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconsole.error(\"error-boundary requires a fallback prop\");\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundaryContextProvider\n\t\t\t\tvalue={{ error, hasError, resetErrorBoundary: this.#resetErrorBoundary }}\n\t\t\t>\n\t\t\t\t{childToRender}\n\t\t\t</ErrorBoundaryContextProvider>\n\t\t);\n\t}\n\n\t#resetErrorBoundary = (...parameters: unknown[]) => {\n\t\tconst { error } = this.state;\n\n\t\tif (error !== null) {\n\t\t\tthis.props.onReset?.({ parameters, reason: \"imperative-api\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t};\n}\n\nexport { ErrorBoundary };\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { DiscriminatedRenderProps } from '@zayne-labs/toolkit-react/utils';
|
|
3
|
+
import { SuspenseWithBoundaryProps } from '../suspense-with-boundary/index.js';
|
|
4
|
+
import '../../types-CeWumkhm.js';
|
|
5
|
+
|
|
6
|
+
type RenderPropFn<Tvalue> = (result: Tvalue) => react.ReactNode;
|
|
7
|
+
type AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & Pick<SuspenseWithBoundaryProps, "errorFallback" | "fallback"> & {
|
|
8
|
+
wrapperVariant?: "none" | "only-boundary" | "only-suspense" | "suspense-and-boundary";
|
|
9
|
+
};
|
|
10
|
+
declare function Await<Tvalue>(props: AwaitProps<Tvalue>): react.JSX.Element;
|
|
11
|
+
type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {
|
|
12
|
+
promise: Promise<Tvalue>;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { Await, type AwaitInnerProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { E as ErrorBoundaryProps } from '../../types-CeWumkhm.js';
|
|
2
|
+
export { F as FallbackProps } from '../../types-CeWumkhm.js';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import { Component } from 'react';
|
|
5
|
+
|
|
6
|
+
type ErrorBoundaryContextType = {
|
|
7
|
+
error: unknown;
|
|
8
|
+
hasError: boolean;
|
|
9
|
+
resetErrorBoundary: (...args: unknown[]) => void;
|
|
10
|
+
};
|
|
11
|
+
declare const useErrorBoundaryContext: () => ErrorBoundaryContextType;
|
|
12
|
+
|
|
13
|
+
declare const useErrorBoundary: <TError extends Error>() => {
|
|
14
|
+
resetBoundary: () => void;
|
|
15
|
+
showBoundary: (error: TError) => void;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
type ErrorBoundaryState = {
|
|
19
|
+
error: Error;
|
|
20
|
+
hasError: true;
|
|
21
|
+
} | {
|
|
22
|
+
error: null;
|
|
23
|
+
hasError: false;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Copied from react-error-boundary package
|
|
27
|
+
* @see https://github.com/bvaughn/react-error-boundary
|
|
28
|
+
*/
|
|
29
|
+
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(props: ErrorBoundaryProps);
|
|
32
|
+
static getDerivedStateFromError(error: Error): {
|
|
33
|
+
error: Error;
|
|
34
|
+
hasError: boolean;
|
|
35
|
+
};
|
|
36
|
+
componentDidCatch(error: Error, info: react.ErrorInfo): void;
|
|
37
|
+
componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState): void;
|
|
38
|
+
render(): react.JSX.Element;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { ErrorBoundary, type ErrorBoundaryContextType, ErrorBoundaryProps, useErrorBoundary, useErrorBoundaryContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1,77 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export { Await, AwaitInnerProps } from './await/index.js';
|
|
2
|
+
export { ErrorBoundary, ErrorBoundaryContextType, useErrorBoundary, useErrorBoundaryContext } from './error-boundary/index.js';
|
|
3
|
+
export { E as ErrorBoundaryProps, F as FallbackProps } from '../types-CeWumkhm.js';
|
|
4
4
|
export { ForBase, ForList, ForRenderProps, getElementList } from './for/index.js';
|
|
5
5
|
export { Show, ShowContent, ShowFallback, ShowRoot } from './show/index.js';
|
|
6
6
|
export { Slot, Slottable } from './slot/index.js';
|
|
7
|
+
export { SuspenseWithBoundary, SuspenseWithBoundaryProps } from './suspense-with-boundary/index.js';
|
|
7
8
|
export { Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './switch/index.js';
|
|
8
9
|
export { Teleport } from './teleport/index.js';
|
|
10
|
+
import 'react';
|
|
11
|
+
import '@zayne-labs/toolkit-react/utils';
|
|
9
12
|
import '@zayne-labs/toolkit-type-helpers';
|
|
10
|
-
|
|
11
|
-
type ErrorBoundaryContextType = {
|
|
12
|
-
error: unknown;
|
|
13
|
-
hasError: boolean;
|
|
14
|
-
resetErrorBoundary: (...args: unknown[]) => void;
|
|
15
|
-
};
|
|
16
|
-
declare const useErrorBoundaryContext: () => ErrorBoundaryContextType;
|
|
17
|
-
|
|
18
|
-
declare const useErrorBoundary: <TError extends Error>() => {
|
|
19
|
-
resetBoundary: () => void;
|
|
20
|
-
showBoundary: (error: TError) => void;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
type FallbackProps = {
|
|
24
|
-
error: unknown;
|
|
25
|
-
resetErrorBoundary: (...args: unknown[]) => void;
|
|
26
|
-
};
|
|
27
|
-
type ErrorBoundaryProps = {
|
|
28
|
-
children: React.ReactNode;
|
|
29
|
-
fallback: React.ReactNode | ((props: FallbackProps) => React.ReactNode);
|
|
30
|
-
onError?: (error: Error, info: React.ErrorInfo & {
|
|
31
|
-
ownerStack?: string;
|
|
32
|
-
}) => void;
|
|
33
|
-
onReset?: (details: {
|
|
34
|
-
next: unknown[] | undefined;
|
|
35
|
-
prev: unknown[] | undefined;
|
|
36
|
-
reason: "keys";
|
|
37
|
-
} | {
|
|
38
|
-
parameters: unknown[];
|
|
39
|
-
reason: "imperative-api";
|
|
40
|
-
}) => void;
|
|
41
|
-
resetKeys?: unknown[];
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
type ErrorBoundaryState = {
|
|
45
|
-
error: Error;
|
|
46
|
-
hasError: true;
|
|
47
|
-
} | {
|
|
48
|
-
error: null;
|
|
49
|
-
hasError: false;
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Copied from react-error-boundary package
|
|
53
|
-
* @see https://github.com/bvaughn/react-error-boundary
|
|
54
|
-
*/
|
|
55
|
-
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
56
|
-
#private;
|
|
57
|
-
constructor(props: ErrorBoundaryProps);
|
|
58
|
-
static getDerivedStateFromError(error: Error): {
|
|
59
|
-
error: Error;
|
|
60
|
-
hasError: boolean;
|
|
61
|
-
};
|
|
62
|
-
componentDidCatch(error: Error, info: react.ErrorInfo): void;
|
|
63
|
-
componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState): void;
|
|
64
|
-
render(): react.JSX.Element;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
type RenderPropFn<Tvalue> = (result: Tvalue) => react.ReactNode;
|
|
68
|
-
type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {
|
|
69
|
-
promise: Promise<Tvalue>;
|
|
70
|
-
};
|
|
71
|
-
type AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & {
|
|
72
|
-
errorFallback?: ErrorBoundaryProps["fallback"];
|
|
73
|
-
fallback?: react.ReactNode;
|
|
74
|
-
};
|
|
75
|
-
declare function Await<Tvalue>(props: AwaitProps<Tvalue>): react.JSX.Element;
|
|
76
|
-
|
|
77
|
-
export { Await, type AwaitInnerProps, ErrorBoundary, type ErrorBoundaryContextType, type ErrorBoundaryProps, type FallbackProps, useErrorBoundary, useErrorBoundaryContext };
|
package/dist/esm/common/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import '../chunk-CWUEUCR5.js';
|
|
2
|
+
export { SuspenseWithBoundary } from '../chunk-NPIJ4XZP.js';
|
|
3
|
+
export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from '../chunk-SVQ4WBSO.js';
|
|
4
|
+
export { Teleport } from '../chunk-CB2EZJYW.js';
|
|
5
|
+
export { Await } from '../chunk-DJIVSXN7.js';
|
|
6
|
+
export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from '../chunk-OM4ZFFQS.js';
|
|
2
7
|
export { ForBase, ForList, getElementList } from '../chunk-DW3FXTFL.js';
|
|
3
8
|
export { show_parts_exports as Show, ShowContent, ShowFallback, ShowRoot } from '../chunk-FPCKBOJN.js';
|
|
4
9
|
export { Slot, Slottable } from '../chunk-ENDWJXPF.js';
|
|
5
|
-
export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from '../chunk-SVQ4WBSO.js';
|
|
6
|
-
export { Teleport } from '../chunk-CB2EZJYW.js';
|
|
7
10
|
import '../chunk-PZ5AY32C.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
|
9
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { E as ErrorBoundaryProps } from '../../types-CeWumkhm.js';
|
|
3
|
+
|
|
4
|
+
type SuspenseWithBoundaryProps = {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
errorFallback?: ErrorBoundaryProps["fallback"];
|
|
7
|
+
fallback?: React.ReactNode;
|
|
8
|
+
};
|
|
9
|
+
declare function SuspenseWithBoundary(props: SuspenseWithBoundaryProps): react.JSX.Element;
|
|
10
|
+
|
|
11
|
+
export { SuspenseWithBoundary, type SuspenseWithBoundaryProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -4,10 +4,13 @@ export { useDragScroll } from './ui/drag-scroll/index.js';
|
|
|
4
4
|
export { DropZone, InputProps, RootProps, UseDropZoneProps, useDropZone } from './ui/drop-zone/index.js';
|
|
5
5
|
export { FieldValues, Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useFormFieldContext } from './ui/form/index.js';
|
|
6
6
|
export { useFormContext as useFormRootContext } from 'react-hook-form';
|
|
7
|
-
export { Await, AwaitInnerProps
|
|
7
|
+
export { Await, AwaitInnerProps } from './common/await/index.js';
|
|
8
|
+
export { ErrorBoundary, ErrorBoundaryContextType, useErrorBoundary, useErrorBoundaryContext } from './common/error-boundary/index.js';
|
|
9
|
+
export { E as ErrorBoundaryProps, F as FallbackProps } from './types-CeWumkhm.js';
|
|
8
10
|
export { ForBase, ForList, ForRenderProps, getElementList } from './common/for/index.js';
|
|
9
11
|
export { Show, ShowContent, ShowFallback, ShowRoot } from './common/show/index.js';
|
|
10
12
|
export { Slot, Slottable } from './common/slot/index.js';
|
|
13
|
+
export { SuspenseWithBoundary, SuspenseWithBoundaryProps } from './common/suspense-with-boundary/index.js';
|
|
11
14
|
export { Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './common/switch/index.js';
|
|
12
15
|
export { Teleport } from './common/teleport/index.js';
|
|
13
16
|
import 'react';
|
package/dist/esm/index.js
CHANGED
|
@@ -5,12 +5,15 @@ export { useDragScroll } from './chunk-E42DOTGX.js';
|
|
|
5
5
|
export { DropZone, useDropZone } from './chunk-RQZL6ZG6.js';
|
|
6
6
|
export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from './chunk-66T5K46O.js';
|
|
7
7
|
import './chunk-OHG7GB7O.js';
|
|
8
|
-
|
|
8
|
+
import './chunk-CWUEUCR5.js';
|
|
9
|
+
export { SuspenseWithBoundary } from './chunk-NPIJ4XZP.js';
|
|
10
|
+
export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './chunk-SVQ4WBSO.js';
|
|
11
|
+
export { Teleport } from './chunk-CB2EZJYW.js';
|
|
12
|
+
export { Await } from './chunk-DJIVSXN7.js';
|
|
13
|
+
export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from './chunk-OM4ZFFQS.js';
|
|
9
14
|
export { ForBase, ForList, getElementList } from './chunk-DW3FXTFL.js';
|
|
10
15
|
export { show_parts_exports as Show, ShowContent, ShowFallback, ShowRoot } from './chunk-FPCKBOJN.js';
|
|
11
16
|
export { Slot, Slottable } from './chunk-ENDWJXPF.js';
|
|
12
|
-
export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './chunk-SVQ4WBSO.js';
|
|
13
|
-
export { Teleport } from './chunk-CB2EZJYW.js';
|
|
14
17
|
import './chunk-PZ5AY32C.js';
|
|
15
18
|
//# sourceMappingURL=index.js.map
|
|
16
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type FallbackProps = {
|
|
2
|
+
error: unknown;
|
|
3
|
+
resetErrorBoundary: (...args: unknown[]) => void;
|
|
4
|
+
};
|
|
5
|
+
type ErrorBoundaryProps = {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
fallback?: React.ReactNode | ((props: FallbackProps) => React.ReactNode);
|
|
8
|
+
onError?: (error: Error, info: React.ErrorInfo & {
|
|
9
|
+
ownerStack?: string;
|
|
10
|
+
}) => void;
|
|
11
|
+
onReset?: (details: {
|
|
12
|
+
next: unknown[] | undefined;
|
|
13
|
+
prev: unknown[] | undefined;
|
|
14
|
+
reason: "keys";
|
|
15
|
+
} | {
|
|
16
|
+
parameters: unknown[];
|
|
17
|
+
reason: "imperative-api";
|
|
18
|
+
}) => void;
|
|
19
|
+
resetKeys?: unknown[];
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type { ErrorBoundaryProps as E, FallbackProps as F };
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../../chunk-66T5K46O.js';
|
|
2
2
|
import '../../chunk-OHG7GB7O.js';
|
|
3
|
-
import '../../chunk-
|
|
3
|
+
import '../../chunk-CWUEUCR5.js';
|
|
4
|
+
import '../../chunk-NPIJ4XZP.js';
|
|
5
|
+
import '../../chunk-SVQ4WBSO.js';
|
|
6
|
+
import '../../chunk-CB2EZJYW.js';
|
|
7
|
+
import '../../chunk-DJIVSXN7.js';
|
|
8
|
+
import '../../chunk-OM4ZFFQS.js';
|
|
4
9
|
import '../../chunk-DW3FXTFL.js';
|
|
5
10
|
import '../../chunk-FPCKBOJN.js';
|
|
6
11
|
import '../../chunk-ENDWJXPF.js';
|
|
7
|
-
import '../../chunk-SVQ4WBSO.js';
|
|
8
|
-
import '../../chunk-CB2EZJYW.js';
|
|
9
12
|
import '../../chunk-PZ5AY32C.js';
|
|
10
13
|
//# sourceMappingURL=index.js.map
|
|
11
14
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/ui/index.js
CHANGED
|
@@ -5,12 +5,15 @@ export { useDragScroll } from '../chunk-E42DOTGX.js';
|
|
|
5
5
|
export { DropZone, useDropZone } from '../chunk-RQZL6ZG6.js';
|
|
6
6
|
export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../chunk-66T5K46O.js';
|
|
7
7
|
import '../chunk-OHG7GB7O.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-CWUEUCR5.js';
|
|
9
|
+
import '../chunk-NPIJ4XZP.js';
|
|
10
|
+
import '../chunk-SVQ4WBSO.js';
|
|
11
|
+
import '../chunk-CB2EZJYW.js';
|
|
12
|
+
import '../chunk-DJIVSXN7.js';
|
|
13
|
+
import '../chunk-OM4ZFFQS.js';
|
|
9
14
|
import '../chunk-DW3FXTFL.js';
|
|
10
15
|
import '../chunk-FPCKBOJN.js';
|
|
11
16
|
import '../chunk-ENDWJXPF.js';
|
|
12
|
-
import '../chunk-SVQ4WBSO.js';
|
|
13
|
-
import '../chunk-CB2EZJYW.js';
|
|
14
17
|
import '../chunk-PZ5AY32C.js';
|
|
15
18
|
//# sourceMappingURL=index.js.map
|
|
16
19
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/common/error-boundary/error-boundary-context.ts","../../src/components/common/error-boundary/useErrorBoundary.ts","../../src/components/common/error-boundary/error-boundary.tsx","../../src/components/common/await/await.tsx"],"names":["React","ReactFragment"],"mappings":";;;;;;AAQO,IAAM,CAAC,4BAAA,EAA8B,uBAAuB,CAAA,GAClE,mBAA8C,CAAA;AAAA,EAC7C,QAAU,EAAA,yBAAA;AAAA,EACV,IAAM,EAAA,sBAAA;AAAA,EACN,YAAc,EAAA;AACf,CAAC;ACCK,IAAM,mBAAmB,MAA4B;AAC3D,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,uBAAwB,EAAA;AAEvD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAwC,CAAA;AAAA,IACjE,KAAO,EAAA,IAAA;AAAA,IACP,QAAU,EAAA;AAAA,GACV,CAAA;AAED,EAAA,IAAI,MAAM,QAAU,EAAA;AACnB,IAAA,MAAM,KAAM,CAAA,KAAA;AAAA;AAGb,EAAM,MAAA,aAAA,GAAgB,eAAe,MAAM;AAC1C,IAAmB,kBAAA,EAAA;AAEnB,IAAS,QAAA,CAAA;AAAA,MACR,KAAO,EAAA,IAAA;AAAA,MACP,QAAU,EAAA;AAAA,KACV,CAAA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,cAAe,CAAA,CAAC,KAAkB,KAAA;AACtD,IAAS,QAAA,CAAA;AAAA,MACR,KAAA;AAAA,MACA,QAAU,EAAA;AAAA,KACV,CAAA;AAAA,GACD,CAAA;AAED,EAAO,OAAA,EAAE,eAAe,YAAa,EAAA;AACtC;AC3BA,IAAM,YAAmC,GAAA;AAAA,EACxC,KAAO,EAAA,IAAA;AAAA,EACP,QAAU,EAAA;AACX,CAAA;AAEA,IAAM,kBAAkB,CAAC,CAAA,GAAe,EAAI,EAAA,CAAA,GAAe,EAAO,KAAA;AACjE,EAAA,OAAO,EAAE,MAAW,KAAA,CAAA,CAAE,MAAU,IAAA,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAU,KAAA,CAAC,OAAO,EAAG,CAAA,IAAA,EAAM,CAAE,CAAA,KAAK,CAAC,CAAC,CAAA;AACnF,CAAA;AAOM,IAAA,aAAA,GAAN,cAA4B,SAAkD,CAAA;AAAA,EAC7E,YAAY,KAA2B,EAAA;AACtC,IAAA,KAAA,CAAM,KAAK,CAAA;AAEX,IAAA,IAAA,CAAK,KAAQ,GAAA,YAAA;AAAA;AACd,EAEA,OAAO,yBAAyB,KAAc,EAAA;AAC7C,IAAO,OAAA,EAAE,KAAO,EAAA,QAAA,EAAU,IAAK,EAAA;AAAA;AAChC,EAES,iBAAA,CAAkB,OAAc,IAAuB,EAAA;AAC/D,IAAK,IAAA,CAAA,KAAA,CAAM,OAAU,GAAA,KAAA,EAAO,IAAI,CAAA;AAAA;AACjC,EAES,kBAAA,CAAmB,WAA+B,SAA+B,EAAA;AACzF,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAC1B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,KAAA;AAM3B,IAAI,IAAA,QAAA,IAAY,UAAU,KAAU,KAAA,IAAA,IAAQ,gBAAgB,SAAU,CAAA,SAAA,EAAW,SAAS,CAAG,EAAA;AAC5F,MAAK,IAAA,CAAA,KAAA,CAAM,OAAU,GAAA,EAAE,IAAM,EAAA,SAAA,EAAW,MAAM,SAAU,CAAA,SAAA,EAAW,MAAQ,EAAA,MAAA,EAAQ,CAAA;AAEnF,MAAA,IAAA,CAAK,SAAS,YAAY,CAAA;AAAA;AAC3B;AACD,EAES,MAAS,GAAA;AACjB,IAAA,MAAM,EAAE,QAAA,EAAU,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AACpC,IAAA,MAAM,EAAE,KAAA,EAAO,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAEjC,IAAA,IAAI,aAAgB,GAAA,QAAA;AAEpB,IAAA,IAAI,QAAU,EAAA;AACb,MAAA,QAAQ,IAAM;AAAA,QACb,KAAK,UAAW,CAAA,QAAQ,CAAG,EAAA;AAC1B,UAAA,MAAM,KAAuB,GAAA,EAAE,KAAO,EAAA,kBAAA,EAAoB,KAAK,mBAAoB,EAAA;AAEnF,UAAA,aAAA,GAAgB,SAAS,KAAK,CAAA;AAC9B,UAAA;AAAA;AACD,QAEA,KAAK,aAAa,MAAW,EAAA;AAC5B,UAAgB,aAAA,GAAA,QAAA;AAChB,UAAA;AAAA;AACD,QAEA,SAAS;AACR,UAAA,OAAA,CAAQ,MAAM,yCAAyC,CAAA;AACvD,UAAM,MAAA,KAAA;AAAA;AACP;AACD;AAGD,IACC,uBAAAA,MAAA,CAAA,aAAA;AAAA,MAAC,4BAAA;AAAA,MAAA;AAAA,QACA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,kBAAA,EAAoB,KAAK,mBAAoB;AAAA,OAAA;AAAA,MAEtE;AAAA,KACF;AAAA;AAEF,EAEA,mBAAA,GAAsB,IAAI,UAA0B,KAAA;AACnD,IAAM,MAAA,EAAE,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AAEvB,IAAA,IAAI,UAAU,IAAM,EAAA;AACnB,MAAA,IAAA,CAAK,MAAM,OAAU,GAAA,EAAE,UAAY,EAAA,MAAA,EAAQ,kBAAkB,CAAA;AAE7D,MAAA,IAAA,CAAK,SAAS,YAAY,CAAA;AAAA;AAC3B,GACD;AACD;;;ACxFO,SAAS,MAAc,KAA2B,EAAA;AACxD,EAAA,MAAM,EAAE,aAAA,EAAe,QAAU,EAAA,GAAG,aAAgB,GAAA,KAAA;AAEpD,EAAM,MAAA,iBAAA,GAAoB,gBAAgB,aAAgB,GAAAC,QAAA;AAC1D,EAAM,MAAA,YAAA,GAAe,WAAW,QAAW,GAAAA,QAAA;AAE3C,EAAM,MAAA,kBAAA,GAAqB,EAAE,QAAA,EAAU,aAAc,EAAA;AACrD,EAAM,MAAA,aAAA,GAAgB,EAAE,QAAS,EAAA;AAEjC,EAAA,uBACE,MAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAmB,GAAG,kBAAA,EAAA,kBACrB,MAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAc,GAAG,aAAA,EAAA,kBAChB,MAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAY,GAAG,WAAA,EAAa,CAC9B,CACD,CAAA;AAEF;AAEA,SAAS,WAAmB,KAAgC,EAAA;AAC3D,EAAA,MAAM,EAAE,QAAA,EAAU,OAAS,EAAA,MAAA,EAAW,GAAA,KAAA;AAEtC,EAAM,MAAA,MAAA,GAAS,IAAI,OAAO,CAAA;AAE1B,EAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AACnC,IAAA,OAAO,SAAS,MAAM,CAAA;AAAA;AAGvB,EAAA,OAAO,OAAO,MAAM,CAAA;AACrB","file":"chunk-P6HRTILR.js","sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type ErrorBoundaryContextType = {\n\terror: unknown;\n\thasError: boolean;\n\tresetErrorBoundary: (...args: unknown[]) => void;\n};\n\nexport const [ErrorBoundaryContextProvider, useErrorBoundaryContext] =\n\tcreateCustomContext<ErrorBoundaryContextType>({\n\t\thookName: \"useErrorBoundaryContext\",\n\t\tname: \"ErrorBoundaryContext\",\n\t\tproviderName: \"ErrorBoundaryContextProvider\",\n\t});\n","import { useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useErrorBoundaryContext } from \"./error-boundary-context\";\n\ntype UseErrorBoundaryState<TError extends Error> =\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t }\n\t| {\n\t\t\terror: TError;\n\t\t\thasError: true;\n\t };\n\nexport const useErrorBoundary = <TError extends Error>() => {\n\tconst { resetErrorBoundary } = useErrorBoundaryContext();\n\n\tconst [state, setState] = useState<UseErrorBoundaryState<TError>>({\n\t\terror: null,\n\t\thasError: false,\n\t});\n\n\tif (state.hasError) {\n\t\tthrow state.error;\n\t}\n\n\tconst resetBoundary = useCallbackRef(() => {\n\t\tresetErrorBoundary();\n\n\t\tsetState({\n\t\t\terror: null,\n\t\t\thasError: false,\n\t\t});\n\t});\n\n\tconst showBoundary = useCallbackRef((error: TError) => {\n\t\tsetState({\n\t\t\terror,\n\t\t\thasError: true,\n\t\t});\n\t});\n\n\treturn { resetBoundary, showBoundary };\n};\n","import { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Component } from \"react\";\nimport { ErrorBoundaryContextProvider } from \"./error-boundary-context\";\nimport type { ErrorBoundaryProps, FallbackProps } from \"./types\";\n\ntype ErrorBoundaryState =\n\t| {\n\t\t\terror: Error;\n\t\t\thasError: true;\n\t }\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t };\n\nconst initialState: ErrorBoundaryState = {\n\terror: null,\n\thasError: false,\n};\n\nconst hasArrayChanged = (a: unknown[] = [], b: unknown[] = []) => {\n\treturn a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n};\n\n/**\n * Copied from react-error-boundary package\n * @see https://github.com/bvaughn/react-error-boundary\n */\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n\tconstructor(props: ErrorBoundaryProps) {\n\t\tsuper(props);\n\n\t\tthis.state = initialState;\n\t}\n\n\tstatic getDerivedStateFromError(error: Error) {\n\t\treturn { error, hasError: true };\n\t}\n\n\toverride componentDidCatch(error: Error, info: React.ErrorInfo) {\n\t\tthis.props.onError?.(error, info);\n\t}\n\n\toverride componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n\t\tconst { hasError } = this.state;\n\t\tconst { resetKeys } = this.props;\n\n\t\t// There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array, we'd end up resetting the error boundary immediately.\n\t\t// This would likely trigger a second error to be thrown.\n\t\t// So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n\t\tif (hasError && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n\t\t\tthis.props.onReset?.({ next: resetKeys, prev: prevProps.resetKeys, reason: \"keys\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst { children, fallback } = this.props;\n\t\tconst { error, hasError } = this.state;\n\n\t\tlet childToRender = children;\n\n\t\tif (hasError) {\n\t\t\tswitch (true) {\n\t\t\t\tcase isFunction(fallback): {\n\t\t\t\t\tconst props: FallbackProps = { error, resetErrorBoundary: this.#resetErrorBoundary };\n\n\t\t\t\t\tchildToRender = fallback(props);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase fallback !== undefined: {\n\t\t\t\t\tchildToRender = fallback;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconsole.error(\"error-boundary requires a fallback prop\");\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundaryContextProvider\n\t\t\t\tvalue={{ error, hasError, resetErrorBoundary: this.#resetErrorBoundary }}\n\t\t\t>\n\t\t\t\t{childToRender}\n\t\t\t</ErrorBoundaryContextProvider>\n\t\t);\n\t}\n\n\t#resetErrorBoundary = (...parameters: unknown[]) => {\n\t\tconst { error } = this.state;\n\n\t\tif (error !== null) {\n\t\t\tthis.props.onReset?.({ parameters, reason: \"imperative-api\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t};\n}\n\nexport { ErrorBoundary };\n","import * as React from \"react\";\n\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { Fragment as ReactFragment, Suspense, use } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps } from \"../error-boundary\";\n\ntype RenderPropFn<Tvalue> = (result: Tvalue) => React.ReactNode;\n\nexport type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {\n\tpromise: Promise<Tvalue>;\n};\n\ntype AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & {\n\terrorFallback?: ErrorBoundaryProps[\"fallback\"];\n\tfallback?: React.ReactNode;\n};\n\nexport function Await<Tvalue>(props: AwaitProps<Tvalue>) {\n\tconst { errorFallback, fallback, ...restOfProps } = props;\n\n\tconst WithErrorBoundary = errorFallback ? ErrorBoundary : ReactFragment;\n\tconst WithSuspense = fallback ? Suspense : ReactFragment;\n\n\tconst errorBoundaryProps = { fallback: errorFallback };\n\tconst suspenseProps = { fallback };\n\n\treturn (\n\t\t<WithErrorBoundary {...errorBoundaryProps}>\n\t\t\t<WithSuspense {...suspenseProps}>\n\t\t\t\t<AwaitInner {...restOfProps} />\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\nfunction AwaitInner<TValue>(props: AwaitInnerProps<TValue>) {\n\tconst { children, promise, render } = props;\n\n\tconst result = use(promise);\n\n\tif (typeof children === \"function\") {\n\t\treturn children(result);\n\t}\n\n\treturn render(result);\n}\n"]}
|