@xyo-network/react-error 2.81.10 → 2.82.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts +2 -2
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.mts +2 -2
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.ts +2 -2
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.cts +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.cts.map +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.mts +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.mts.map +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.ts +1 -1
- package/dist/browser/components/ErrorBoundary/index.d.ts.map +1 -1
- package/dist/browser/components/ErrorRender/ErrorAlert.d.cts +1 -0
- package/dist/browser/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
- package/dist/browser/components/ErrorRender/ErrorAlert.d.mts +1 -0
- package/dist/browser/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
- package/dist/browser/components/ErrorRender/ErrorAlert.d.ts +1 -0
- package/dist/browser/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
- package/dist/browser/components/ErrorRender/Render.d.cts +2 -1
- package/dist/browser/components/ErrorRender/Render.d.cts.map +1 -1
- package/dist/browser/components/ErrorRender/Render.d.mts +2 -1
- package/dist/browser/components/ErrorRender/Render.d.mts.map +1 -1
- package/dist/browser/components/ErrorRender/Render.d.ts +2 -1
- package/dist/browser/components/ErrorRender/Render.d.ts.map +1 -1
- package/dist/browser/components/ErrorRender/index.d.cts +3 -3
- package/dist/browser/components/ErrorRender/index.d.cts.map +1 -1
- package/dist/browser/components/ErrorRender/index.d.mts +3 -3
- package/dist/browser/components/ErrorRender/index.d.mts.map +1 -1
- package/dist/browser/components/ErrorRender/index.d.ts +3 -3
- package/dist/browser/components/ErrorRender/index.d.ts.map +1 -1
- package/dist/browser/components/index.d.cts +2 -2
- package/dist/browser/components/index.d.mts +2 -2
- package/dist/browser/components/index.d.ts +2 -2
- package/dist/browser/contexts/ErrorReporter/Context.d.cts +1 -1
- package/dist/browser/contexts/ErrorReporter/Context.d.mts +1 -1
- package/dist/browser/contexts/ErrorReporter/Context.d.ts +1 -1
- package/dist/browser/contexts/ErrorReporter/Provider.d.cts +1 -0
- package/dist/browser/contexts/ErrorReporter/Provider.d.cts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/Provider.d.mts +1 -0
- package/dist/browser/contexts/ErrorReporter/Provider.d.mts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/Provider.d.ts +1 -0
- package/dist/browser/contexts/ErrorReporter/Provider.d.ts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/index.d.cts +3 -3
- package/dist/browser/contexts/ErrorReporter/index.d.cts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/index.d.mts +3 -3
- package/dist/browser/contexts/ErrorReporter/index.d.mts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/index.d.ts +3 -3
- package/dist/browser/contexts/ErrorReporter/index.d.ts.map +1 -1
- package/dist/browser/contexts/ErrorReporter/useRollbar.d.cts +1 -1
- package/dist/browser/contexts/ErrorReporter/useRollbar.d.mts +1 -1
- package/dist/browser/contexts/ErrorReporter/useRollbar.d.ts +1 -1
- package/dist/browser/contexts/index.d.cts +1 -1
- package/dist/browser/contexts/index.d.mts +1 -1
- package/dist/browser/contexts/index.d.ts +1 -1
- package/dist/browser/index.cjs +100 -59
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +2 -2
- package/dist/browser/index.d.mts +2 -2
- package/dist/browser/index.d.ts +2 -2
- package/dist/browser/index.mjs +163 -0
- package/dist/browser/index.mjs.map +1 -0
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.cts +2 -2
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.mts +2 -2
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.ts +2 -2
- package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.cts +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.cts.map +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.mts +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.mts.map +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.ts +1 -1
- package/dist/neutral/components/ErrorBoundary/index.d.ts.map +1 -1
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.cts +1 -0
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.mts +1 -0
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.ts +1 -0
- package/dist/neutral/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
- package/dist/neutral/components/ErrorRender/Render.d.cts +2 -1
- package/dist/neutral/components/ErrorRender/Render.d.cts.map +1 -1
- package/dist/neutral/components/ErrorRender/Render.d.mts +2 -1
- package/dist/neutral/components/ErrorRender/Render.d.mts.map +1 -1
- package/dist/neutral/components/ErrorRender/Render.d.ts +2 -1
- package/dist/neutral/components/ErrorRender/Render.d.ts.map +1 -1
- package/dist/neutral/components/ErrorRender/index.d.cts +3 -3
- package/dist/neutral/components/ErrorRender/index.d.cts.map +1 -1
- package/dist/neutral/components/ErrorRender/index.d.mts +3 -3
- package/dist/neutral/components/ErrorRender/index.d.mts.map +1 -1
- package/dist/neutral/components/ErrorRender/index.d.ts +3 -3
- package/dist/neutral/components/ErrorRender/index.d.ts.map +1 -1
- package/dist/neutral/components/index.d.cts +2 -2
- package/dist/neutral/components/index.d.mts +2 -2
- package/dist/neutral/components/index.d.ts +2 -2
- package/dist/neutral/contexts/ErrorReporter/Context.d.cts +1 -1
- package/dist/neutral/contexts/ErrorReporter/Context.d.mts +1 -1
- package/dist/neutral/contexts/ErrorReporter/Context.d.ts +1 -1
- package/dist/neutral/contexts/ErrorReporter/Provider.d.cts +1 -0
- package/dist/neutral/contexts/ErrorReporter/Provider.d.cts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/Provider.d.mts +1 -0
- package/dist/neutral/contexts/ErrorReporter/Provider.d.mts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/Provider.d.ts +1 -0
- package/dist/neutral/contexts/ErrorReporter/Provider.d.ts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/index.d.cts +3 -3
- package/dist/neutral/contexts/ErrorReporter/index.d.cts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/index.d.mts +3 -3
- package/dist/neutral/contexts/ErrorReporter/index.d.mts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/index.d.ts +3 -3
- package/dist/neutral/contexts/ErrorReporter/index.d.ts.map +1 -1
- package/dist/neutral/contexts/ErrorReporter/useRollbar.d.cts +1 -1
- package/dist/neutral/contexts/ErrorReporter/useRollbar.d.mts +1 -1
- package/dist/neutral/contexts/ErrorReporter/useRollbar.d.ts +1 -1
- package/dist/neutral/contexts/index.d.cts +1 -1
- package/dist/neutral/contexts/index.d.mts +1 -1
- package/dist/neutral/contexts/index.d.ts +1 -1
- package/dist/neutral/index.cjs +100 -59
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.d.cts +2 -2
- package/dist/neutral/index.d.mts +2 -2
- package/dist/neutral/index.d.ts +2 -2
- package/dist/neutral/index.mjs +163 -0
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts +2 -2
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.mts +2 -2
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.ts +2 -2
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
- package/dist/node/components/ErrorBoundary/index.d.cts +1 -1
- package/dist/node/components/ErrorBoundary/index.d.cts.map +1 -1
- package/dist/node/components/ErrorBoundary/index.d.mts +1 -1
- package/dist/node/components/ErrorBoundary/index.d.mts.map +1 -1
- package/dist/node/components/ErrorBoundary/index.d.ts +1 -1
- package/dist/node/components/ErrorBoundary/index.d.ts.map +1 -1
- package/dist/node/components/ErrorRender/ErrorAlert.d.cts +1 -0
- package/dist/node/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
- package/dist/node/components/ErrorRender/ErrorAlert.d.mts +1 -0
- package/dist/node/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
- package/dist/node/components/ErrorRender/ErrorAlert.d.ts +1 -0
- package/dist/node/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
- package/dist/node/components/ErrorRender/Render.d.cts +2 -1
- package/dist/node/components/ErrorRender/Render.d.cts.map +1 -1
- package/dist/node/components/ErrorRender/Render.d.mts +2 -1
- package/dist/node/components/ErrorRender/Render.d.mts.map +1 -1
- package/dist/node/components/ErrorRender/Render.d.ts +2 -1
- package/dist/node/components/ErrorRender/Render.d.ts.map +1 -1
- package/dist/node/components/ErrorRender/index.d.cts +3 -3
- package/dist/node/components/ErrorRender/index.d.cts.map +1 -1
- package/dist/node/components/ErrorRender/index.d.mts +3 -3
- package/dist/node/components/ErrorRender/index.d.mts.map +1 -1
- package/dist/node/components/ErrorRender/index.d.ts +3 -3
- package/dist/node/components/ErrorRender/index.d.ts.map +1 -1
- package/dist/node/components/index.d.cts +2 -2
- package/dist/node/components/index.d.mts +2 -2
- package/dist/node/components/index.d.ts +2 -2
- package/dist/node/contexts/ErrorReporter/Context.d.cts +1 -1
- package/dist/node/contexts/ErrorReporter/Context.d.mts +1 -1
- package/dist/node/contexts/ErrorReporter/Context.d.ts +1 -1
- package/dist/node/contexts/ErrorReporter/Provider.d.cts +1 -0
- package/dist/node/contexts/ErrorReporter/Provider.d.cts.map +1 -1
- package/dist/node/contexts/ErrorReporter/Provider.d.mts +1 -0
- package/dist/node/contexts/ErrorReporter/Provider.d.mts.map +1 -1
- package/dist/node/contexts/ErrorReporter/Provider.d.ts +1 -0
- package/dist/node/contexts/ErrorReporter/Provider.d.ts.map +1 -1
- package/dist/node/contexts/ErrorReporter/index.d.cts +3 -3
- package/dist/node/contexts/ErrorReporter/index.d.cts.map +1 -1
- package/dist/node/contexts/ErrorReporter/index.d.mts +3 -3
- package/dist/node/contexts/ErrorReporter/index.d.mts.map +1 -1
- package/dist/node/contexts/ErrorReporter/index.d.ts +3 -3
- package/dist/node/contexts/ErrorReporter/index.d.ts.map +1 -1
- package/dist/node/contexts/ErrorReporter/useRollbar.d.cts +1 -1
- package/dist/node/contexts/ErrorReporter/useRollbar.d.mts +1 -1
- package/dist/node/contexts/ErrorReporter/useRollbar.d.ts +1 -1
- package/dist/node/contexts/index.d.cts +1 -1
- package/dist/node/contexts/index.d.mts +1 -1
- package/dist/node/contexts/index.d.ts +1 -1
- package/dist/node/index.cjs +99 -59
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +2 -2
- package/dist/node/index.d.mts +2 -2
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.mjs +162 -0
- package/dist/node/index.mjs.map +1 -0
- package/package.json +13 -13
- package/src/components/ErrorBoundary/ThrownErrorBoundary.stories.tsx +8 -4
- package/src/components/ErrorBoundary/ThrownErrorBoundary.tsx +5 -5
- package/src/components/ErrorBoundary/index.ts +1 -1
- package/src/components/ErrorRender/ErrorAlert.stories.tsx +1 -2
- package/src/components/ErrorRender/ErrorAlert.tsx +18 -14
- package/src/components/ErrorRender/Render.tsx +15 -12
- package/src/components/ErrorRender/index.ts +3 -3
- package/src/components/index.ts +2 -2
- package/src/contexts/ErrorReporter/Context.ts +1 -1
- package/src/contexts/ErrorReporter/Provider.stories.tsx +11 -4
- package/src/contexts/ErrorReporter/Provider.tsx +3 -2
- package/src/contexts/ErrorReporter/index.ts +3 -3
- package/src/contexts/ErrorReporter/useRollbar.tsx +1 -1
- package/src/contexts/index.ts +1 -1
- package/src/index.ts +2 -2
- package/dist/browser/index.js +0 -130
- package/dist/browser/index.js.map +0 -1
- package/dist/neutral/index.js +0 -130
- package/dist/neutral/index.js.map +0 -1
- package/dist/node/index.js +0 -130
- package/dist/node/index.js.map +0 -1
@@ -2,6 +2,7 @@ import { ExitToApp as ExitIcon } from '@mui/icons-material'
|
|
2
2
|
import { Alert, AlertProps, AlertTitle, Typography } from '@mui/material'
|
3
3
|
import { ButtonEx } from '@xylabs/react-button'
|
4
4
|
import { ModuleError } from '@xyo-network/payload-model'
|
5
|
+
import React from 'react'
|
5
6
|
|
6
7
|
export interface ErrorAlertProps extends AlertProps {
|
7
8
|
error?: ModuleError | Error | string
|
@@ -11,7 +12,6 @@ export interface ErrorAlertProps extends AlertProps {
|
|
11
12
|
scope?: string
|
12
13
|
}
|
13
14
|
|
14
|
-
// eslint-disable-next-line deprecation/deprecation
|
15
15
|
export const ErrorAlert: React.FC<ErrorAlertProps> = ({
|
16
16
|
title = 'Whoops! Something went wrong',
|
17
17
|
onCancel,
|
@@ -24,25 +24,29 @@ export const ErrorAlert: React.FC<ErrorAlertProps> = ({
|
|
24
24
|
return (
|
25
25
|
<Alert severity="error" {...props}>
|
26
26
|
<AlertTitle>{title}</AlertTitle>
|
27
|
-
{finalScope
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
{finalScope
|
28
|
+
? (
|
29
|
+
<div>
|
30
|
+
<Typography variant="caption" mr={0.5} fontWeight="bold">
|
31
|
+
Scope:
|
32
|
+
</Typography>
|
33
|
+
<Typography variant="caption">{finalScope}</Typography>
|
34
|
+
</div>
|
35
|
+
)
|
36
|
+
: null}
|
35
37
|
<div>
|
36
38
|
<Typography variant="caption" mr={0.5} fontWeight="bold">
|
37
39
|
Error:
|
38
40
|
</Typography>
|
39
41
|
<Typography variant="caption">{typeof error === 'string' ? error : error?.message}</Typography>
|
40
42
|
</div>
|
41
|
-
{onCancel
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
{onCancel
|
44
|
+
? (
|
45
|
+
<ButtonEx variant="outlined" size="small" onClick={onCancel} position="absolute" style={{ right: 8, top: 8 }}>
|
46
|
+
<ExitIcon fontSize="small" />
|
47
|
+
</ButtonEx>
|
48
|
+
)
|
49
|
+
: null}
|
46
50
|
</Alert>
|
47
51
|
)
|
48
52
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { FlexCol } from '@xylabs/react-flexbox'
|
2
|
-
import { useEffect } from 'react'
|
2
|
+
import React, { useEffect } from 'react'
|
3
3
|
|
4
|
-
import { ErrorAlert } from './ErrorAlert.
|
5
|
-
import { ErrorRenderProps } from './Props.
|
4
|
+
import { ErrorAlert } from './ErrorAlert.tsx'
|
5
|
+
import { ErrorRenderProps } from './Props.ts'
|
6
6
|
|
7
7
|
export const ErrorRender: React.FC<ErrorRenderProps> = ({
|
8
8
|
onCancel,
|
@@ -27,14 +27,17 @@ export const ErrorRender: React.FC<ErrorRenderProps> = ({
|
|
27
27
|
}
|
28
28
|
}, [location])
|
29
29
|
|
30
|
-
return error
|
31
|
-
|
32
|
-
{
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
return error
|
31
|
+
? (
|
32
|
+
<FlexCol alignItems="stretch" {...props}>
|
33
|
+
{noErrorDisplay
|
34
|
+
? customError
|
35
|
+
: (
|
36
|
+
<FlexCol alignItems="center" {...props}>
|
37
|
+
<ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} scope={scope} />
|
38
|
+
</FlexCol>
|
39
|
+
)}
|
40
|
+
</FlexCol>
|
41
|
+
)
|
39
42
|
: (<>{children}</> ?? null)
|
40
43
|
}
|
@@ -1,3 +1,3 @@
|
|
1
|
-
export * from './ErrorAlert.
|
2
|
-
export * from './Props.
|
3
|
-
export * from './Render.
|
1
|
+
export * from './ErrorAlert.tsx'
|
2
|
+
export * from './Props.ts'
|
3
|
+
export * from './Render.tsx'
|
package/src/components/index.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export * from './ErrorBoundary/index.
|
2
|
-
export * from './ErrorRender/index.
|
1
|
+
export * from './ErrorBoundary/index.ts'
|
2
|
+
export * from './ErrorRender/index.ts'
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { Typography } from '@mui/material'
|
2
2
|
import { Meta, StoryFn } from '@storybook/react'
|
3
|
+
import React from 'react'
|
3
4
|
import Rollbar from 'rollbar'
|
4
5
|
|
5
|
-
import { ErrorReporterProvider } from './Provider.
|
6
|
-
import { useRollbar } from './useRollbar.
|
6
|
+
import { ErrorReporterProvider } from './Provider.tsx'
|
7
|
+
import { useRollbar } from './useRollbar.tsx'
|
7
8
|
|
8
9
|
const StorybookEntry = {
|
9
10
|
argTypes: {},
|
@@ -20,7 +21,14 @@ const RollbarComponent = () => {
|
|
20
21
|
const { rollbar } = useRollbar()
|
21
22
|
const rollbarFound = typeof rollbar?.error === 'function'
|
22
23
|
|
23
|
-
return
|
24
|
+
return (
|
25
|
+
<Typography color={rollbarFound ? 'green' : 'red'}>
|
26
|
+
Rollbar instance
|
27
|
+
{rollbarFound ? '' : 'NOT'}
|
28
|
+
{' '}
|
29
|
+
found from context!
|
30
|
+
</Typography>
|
31
|
+
)
|
24
32
|
}
|
25
33
|
|
26
34
|
const Template: StoryFn<typeof ErrorReporterProvider> = () => {
|
@@ -36,5 +44,4 @@ const Default = Template.bind({})
|
|
36
44
|
|
37
45
|
export { Default }
|
38
46
|
|
39
|
-
// eslint-disable-next-line import/no-default-export
|
40
47
|
export default StorybookEntry
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { WithChildren } from '@xylabs/react-shared'
|
2
|
-
import { useEffect, useState } from 'react'
|
2
|
+
import React, { useEffect, useState } from 'react'
|
3
3
|
import Rollbar from 'rollbar'
|
4
4
|
|
5
|
-
import { ErrorReporterContext } from './Context.
|
5
|
+
import { ErrorReporterContext } from './Context.ts'
|
6
6
|
|
7
7
|
export interface ErrorReporterProviderProps {
|
8
8
|
rollbar: Rollbar
|
@@ -17,6 +17,7 @@ const ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>>
|
|
17
17
|
}
|
18
18
|
}, [rollbar, rollbarInstance])
|
19
19
|
|
20
|
+
// eslint-disable-next-line @eslint-react/no-unstable-context-value
|
20
21
|
return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>
|
21
22
|
}
|
22
23
|
|
@@ -1,3 +1,3 @@
|
|
1
|
-
export * from './Provider.
|
2
|
-
export * from './State.
|
3
|
-
export * from './useRollbar.
|
1
|
+
export * from './Provider.tsx'
|
2
|
+
export * from './State.ts'
|
3
|
+
export * from './useRollbar.tsx'
|
package/src/contexts/index.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export * from './ErrorReporter/index.
|
1
|
+
export * from './ErrorReporter/index.ts'
|
package/src/index.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export * from './components/index.
|
2
|
-
export * from './contexts/index.
|
1
|
+
export * from './components/index.ts'
|
2
|
+
export * from './contexts/index.ts'
|
package/dist/browser/index.js
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
2
|
-
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
3
|
-
import { Component } from "react";
|
4
|
-
|
5
|
-
// src/components/ErrorRender/ErrorAlert.tsx
|
6
|
-
import { ExitToApp as ExitIcon } from "@mui/icons-material";
|
7
|
-
import { Alert, AlertTitle, Typography } from "@mui/material";
|
8
|
-
import { ButtonEx } from "@xylabs/react-button";
|
9
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
10
|
-
var ErrorAlert = ({
|
11
|
-
title = "Whoops! Something went wrong",
|
12
|
-
onCancel,
|
13
|
-
error = "An unknown error occurred",
|
14
|
-
errorContext,
|
15
|
-
scope,
|
16
|
-
...props
|
17
|
-
}) => {
|
18
|
-
const finalScope = scope ?? errorContext;
|
19
|
-
return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
|
20
|
-
/* @__PURE__ */ jsx(AlertTitle, { children: title }),
|
21
|
-
finalScope ? /* @__PURE__ */ jsxs("div", { children: [
|
22
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Scope:" }),
|
23
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: finalScope })
|
24
|
-
] }) : null,
|
25
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
26
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
|
27
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: typeof error === "string" ? error : error?.message })
|
28
|
-
] }),
|
29
|
-
onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
|
30
|
-
] });
|
31
|
-
};
|
32
|
-
|
33
|
-
// src/components/ErrorRender/Render.tsx
|
34
|
-
import { FlexCol } from "@xylabs/react-flexbox";
|
35
|
-
import { useEffect } from "react";
|
36
|
-
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
37
|
-
var ErrorRender = ({
|
38
|
-
onCancel,
|
39
|
-
error,
|
40
|
-
noErrorDisplay = false,
|
41
|
-
customError = null,
|
42
|
-
children,
|
43
|
-
errorContext,
|
44
|
-
scope,
|
45
|
-
useLocation,
|
46
|
-
...props
|
47
|
-
}) => {
|
48
|
-
const location = useLocation?.();
|
49
|
-
useEffect(() => {
|
50
|
-
if (location) {
|
51
|
-
location.state = {
|
52
|
-
from: {
|
53
|
-
pathname: window.location.pathname
|
54
|
-
}
|
55
|
-
};
|
56
|
-
}
|
57
|
-
}, [location]);
|
58
|
-
return error ? /* @__PURE__ */ jsx2(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? customError : /* @__PURE__ */ jsx2(FlexCol, { alignItems: "center", ...props, children: /* @__PURE__ */ jsx2(ErrorAlert, { error, errorContext, onCancel, scope }) }) }) : /* @__PURE__ */ jsx2(Fragment, { children }) ?? null;
|
59
|
-
};
|
60
|
-
|
61
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
62
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
63
|
-
var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
|
64
|
-
state = {
|
65
|
-
xyoError: void 0
|
66
|
-
};
|
67
|
-
static getDerivedStateFromError(error) {
|
68
|
-
return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
|
69
|
-
}
|
70
|
-
static normalizeError(error) {
|
71
|
-
return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
|
72
|
-
}
|
73
|
-
componentDidCatch(error, errorInfo) {
|
74
|
-
const { rethrow, rollbar } = this.props;
|
75
|
-
const { xyoError } = this.state;
|
76
|
-
rollbar?.error(error);
|
77
|
-
console.error("Error:", xyoError, errorInfo);
|
78
|
-
if (rethrow) {
|
79
|
-
throw error;
|
80
|
-
}
|
81
|
-
}
|
82
|
-
render() {
|
83
|
-
const { xyoError } = this.state;
|
84
|
-
const { children, boundaryName, errorComponent, scope, title } = this.props;
|
85
|
-
if (xyoError) {
|
86
|
-
if (errorComponent) {
|
87
|
-
return errorComponent(xyoError);
|
88
|
-
}
|
89
|
-
return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary`, scope, title });
|
90
|
-
}
|
91
|
-
return children;
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
96
|
-
import { useEffect as useEffect2, useState } from "react";
|
97
|
-
|
98
|
-
// src/contexts/ErrorReporter/Context.ts
|
99
|
-
import { createContext } from "react";
|
100
|
-
var ErrorReporterContext = createContext({});
|
101
|
-
|
102
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
103
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
104
|
-
var ErrorReporterProvider = ({ children, rollbar }) => {
|
105
|
-
const [rollbarInstance, setRollBarInstance] = useState();
|
106
|
-
useEffect2(() => {
|
107
|
-
if (rollbarInstance) {
|
108
|
-
setRollBarInstance(rollbarInstance);
|
109
|
-
}
|
110
|
-
}, [rollbar, rollbarInstance]);
|
111
|
-
return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
|
112
|
-
};
|
113
|
-
|
114
|
-
// src/contexts/ErrorReporter/useRollbar.tsx
|
115
|
-
import { useContext } from "react";
|
116
|
-
var useRollbar = () => {
|
117
|
-
const context = useContext(ErrorReporterContext);
|
118
|
-
if (context === void 0) {
|
119
|
-
console.warn("useRollbar must be used within a ErrorReporterContext");
|
120
|
-
}
|
121
|
-
return context ?? {};
|
122
|
-
};
|
123
|
-
export {
|
124
|
-
ErrorAlert,
|
125
|
-
ErrorRender,
|
126
|
-
ErrorReporterProvider,
|
127
|
-
ThrownErrorBoundary,
|
128
|
-
useRollbar
|
129
|
-
};
|
130
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/components/ErrorBoundary/ThrownErrorBoundary.tsx","../../src/components/ErrorRender/ErrorAlert.tsx","../../src/components/ErrorRender/Render.tsx","../../src/contexts/ErrorReporter/Provider.tsx","../../src/contexts/ErrorReporter/Context.ts","../../src/contexts/ErrorReporter/useRollbar.tsx"],"sourcesContent":["import { ModuleError, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { Component, ErrorInfo, ReactNode } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorRender } from '../ErrorRender/index.js'\n\nexport interface ThrownErrorBoundaryProps {\n boundaryName?: string\n children: ReactNode\n errorComponent?: (e: ModuleError, boundaryName?: string) => ReactNode\n rethrow?: boolean\n rollbar?: Rollbar\n scope?: string\n title?: string\n}\n\nexport interface ThrownErrorBoundaryState {\n xyoError?: ModuleError\n}\n\nexport class ThrownErrorBoundary extends Component<ThrownErrorBoundaryProps, ThrownErrorBoundaryState> {\n override state: ThrownErrorBoundaryState = {\n xyoError: undefined,\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, xyoError: ThrownErrorBoundary.normalizeError(error) } as ThrownErrorBoundaryState\n }\n\n static normalizeError(error: Error | ModuleError): ModuleError {\n return (\n (error as ModuleError).schema === ModuleErrorSchema ?\n error\n : { message: error.message, schema: ModuleErrorSchema, sources: [] }) as ModuleError\n }\n\n override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { rethrow, rollbar } = this.props\n const { xyoError } = this.state\n\n rollbar?.error(error)\n\n console.error('Error:', xyoError, errorInfo)\n if (rethrow) {\n throw error\n }\n }\n\n override render() {\n const { xyoError } = this.state\n const { children, boundaryName, errorComponent, scope, title } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} scope={scope} title={title} />\n }\n\n return children\n }\n}\n","import { ExitToApp as ExitIcon } from '@mui/icons-material'\nimport { Alert, AlertProps, AlertTitle, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { ModuleError } from '@xyo-network/payload-model'\n\nexport interface ErrorAlertProps extends AlertProps {\n error?: ModuleError | Error | string\n /** @deprecated use scope instead */\n errorContext?: string\n onCancel?: () => void\n scope?: string\n}\n\n// eslint-disable-next-line deprecation/deprecation\nexport const ErrorAlert: React.FC<ErrorAlertProps> = ({\n title = 'Whoops! Something went wrong',\n onCancel,\n error = 'An unknown error occurred',\n errorContext,\n scope,\n ...props\n}) => {\n const finalScope = scope ?? errorContext\n return (\n <Alert severity=\"error\" {...props}>\n <AlertTitle>{title}</AlertTitle>\n {finalScope ?\n <div>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Scope:\n </Typography>\n <Typography variant=\"caption\">{finalScope}</Typography>\n </div>\n : null}\n <div>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Error:\n </Typography>\n <Typography variant=\"caption\">{typeof error === 'string' ? error : error?.message}</Typography>\n </div>\n {onCancel ?\n <ButtonEx variant=\"outlined\" size=\"small\" onClick={onCancel} position=\"absolute\" style={{ right: 8, top: 8 }}>\n <ExitIcon fontSize=\"small\" />\n </ButtonEx>\n : null}\n </Alert>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { useEffect } from 'react'\n\nimport { ErrorAlert } from './ErrorAlert.js'\nimport { ErrorRenderProps } from './Props.js'\n\nexport const ErrorRender: React.FC<ErrorRenderProps> = ({\n onCancel,\n error,\n noErrorDisplay = false,\n customError = null,\n children,\n errorContext,\n scope,\n useLocation,\n ...props\n}) => {\n const location = useLocation?.()\n useEffect(() => {\n if (location) {\n // ensure we end up at the same place we are now after logging in\n location.state = {\n from: {\n pathname: window.location.pathname,\n },\n }\n }\n }, [location])\n\n return error ?\n <FlexCol alignItems=\"stretch\" {...props}>\n {noErrorDisplay ?\n customError\n : <FlexCol alignItems=\"center\" {...props}>\n <ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} scope={scope} />\n </FlexCol>\n }\n </FlexCol>\n : (<>{children}</> ?? null)\n}\n","import { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorReporterContext } from './Context.js'\n\nexport interface ErrorReporterProviderProps {\n rollbar: Rollbar\n}\n\nconst ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>> = ({ children, rollbar }) => {\n const [rollbarInstance, setRollBarInstance] = useState<Rollbar>()\n\n useEffect(() => {\n if (rollbarInstance) {\n setRollBarInstance(rollbarInstance)\n }\n }, [rollbar, rollbarInstance])\n\n return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>\n}\n\nexport { ErrorReporterProvider }\n","import { createContext } from 'react'\n\nimport { ErrorReporterContextState } from './State.js'\n\nexport const ErrorReporterContext = createContext<ErrorReporterContextState>({})\n","import { useContext } from 'react'\n\nimport { ErrorReporterContext } from './Context.js'\n\nconst useRollbar = () => {\n const context = useContext(ErrorReporterContext)\n if (context === undefined) {\n console.warn('useRollbar must be used within a ErrorReporterContext')\n }\n\n return context ?? {}\n}\n\nexport { useRollbar }\n"],"mappings":"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","names":["jsx","jsx","useEffect","jsx","useEffect"]}
|
package/dist/neutral/index.js
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
2
|
-
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
3
|
-
import { Component } from "react";
|
4
|
-
|
5
|
-
// src/components/ErrorRender/ErrorAlert.tsx
|
6
|
-
import { ExitToApp as ExitIcon } from "@mui/icons-material";
|
7
|
-
import { Alert, AlertTitle, Typography } from "@mui/material";
|
8
|
-
import { ButtonEx } from "@xylabs/react-button";
|
9
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
10
|
-
var ErrorAlert = ({
|
11
|
-
title = "Whoops! Something went wrong",
|
12
|
-
onCancel,
|
13
|
-
error = "An unknown error occurred",
|
14
|
-
errorContext,
|
15
|
-
scope,
|
16
|
-
...props
|
17
|
-
}) => {
|
18
|
-
const finalScope = scope ?? errorContext;
|
19
|
-
return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
|
20
|
-
/* @__PURE__ */ jsx(AlertTitle, { children: title }),
|
21
|
-
finalScope ? /* @__PURE__ */ jsxs("div", { children: [
|
22
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Scope:" }),
|
23
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: finalScope })
|
24
|
-
] }) : null,
|
25
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
26
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
|
27
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: typeof error === "string" ? error : error?.message })
|
28
|
-
] }),
|
29
|
-
onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
|
30
|
-
] });
|
31
|
-
};
|
32
|
-
|
33
|
-
// src/components/ErrorRender/Render.tsx
|
34
|
-
import { FlexCol } from "@xylabs/react-flexbox";
|
35
|
-
import { useEffect } from "react";
|
36
|
-
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
37
|
-
var ErrorRender = ({
|
38
|
-
onCancel,
|
39
|
-
error,
|
40
|
-
noErrorDisplay = false,
|
41
|
-
customError = null,
|
42
|
-
children,
|
43
|
-
errorContext,
|
44
|
-
scope,
|
45
|
-
useLocation,
|
46
|
-
...props
|
47
|
-
}) => {
|
48
|
-
const location = useLocation?.();
|
49
|
-
useEffect(() => {
|
50
|
-
if (location) {
|
51
|
-
location.state = {
|
52
|
-
from: {
|
53
|
-
pathname: window.location.pathname
|
54
|
-
}
|
55
|
-
};
|
56
|
-
}
|
57
|
-
}, [location]);
|
58
|
-
return error ? /* @__PURE__ */ jsx2(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? customError : /* @__PURE__ */ jsx2(FlexCol, { alignItems: "center", ...props, children: /* @__PURE__ */ jsx2(ErrorAlert, { error, errorContext, onCancel, scope }) }) }) : /* @__PURE__ */ jsx2(Fragment, { children }) ?? null;
|
59
|
-
};
|
60
|
-
|
61
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
62
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
63
|
-
var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
|
64
|
-
state = {
|
65
|
-
xyoError: void 0
|
66
|
-
};
|
67
|
-
static getDerivedStateFromError(error) {
|
68
|
-
return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
|
69
|
-
}
|
70
|
-
static normalizeError(error) {
|
71
|
-
return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
|
72
|
-
}
|
73
|
-
componentDidCatch(error, errorInfo) {
|
74
|
-
const { rethrow, rollbar } = this.props;
|
75
|
-
const { xyoError } = this.state;
|
76
|
-
rollbar?.error(error);
|
77
|
-
console.error("Error:", xyoError, errorInfo);
|
78
|
-
if (rethrow) {
|
79
|
-
throw error;
|
80
|
-
}
|
81
|
-
}
|
82
|
-
render() {
|
83
|
-
const { xyoError } = this.state;
|
84
|
-
const { children, boundaryName, errorComponent, scope, title } = this.props;
|
85
|
-
if (xyoError) {
|
86
|
-
if (errorComponent) {
|
87
|
-
return errorComponent(xyoError);
|
88
|
-
}
|
89
|
-
return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary`, scope, title });
|
90
|
-
}
|
91
|
-
return children;
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
96
|
-
import { useEffect as useEffect2, useState } from "react";
|
97
|
-
|
98
|
-
// src/contexts/ErrorReporter/Context.ts
|
99
|
-
import { createContext } from "react";
|
100
|
-
var ErrorReporterContext = createContext({});
|
101
|
-
|
102
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
103
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
104
|
-
var ErrorReporterProvider = ({ children, rollbar }) => {
|
105
|
-
const [rollbarInstance, setRollBarInstance] = useState();
|
106
|
-
useEffect2(() => {
|
107
|
-
if (rollbarInstance) {
|
108
|
-
setRollBarInstance(rollbarInstance);
|
109
|
-
}
|
110
|
-
}, [rollbar, rollbarInstance]);
|
111
|
-
return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
|
112
|
-
};
|
113
|
-
|
114
|
-
// src/contexts/ErrorReporter/useRollbar.tsx
|
115
|
-
import { useContext } from "react";
|
116
|
-
var useRollbar = () => {
|
117
|
-
const context = useContext(ErrorReporterContext);
|
118
|
-
if (context === void 0) {
|
119
|
-
console.warn("useRollbar must be used within a ErrorReporterContext");
|
120
|
-
}
|
121
|
-
return context ?? {};
|
122
|
-
};
|
123
|
-
export {
|
124
|
-
ErrorAlert,
|
125
|
-
ErrorRender,
|
126
|
-
ErrorReporterProvider,
|
127
|
-
ThrownErrorBoundary,
|
128
|
-
useRollbar
|
129
|
-
};
|
130
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/components/ErrorBoundary/ThrownErrorBoundary.tsx","../../src/components/ErrorRender/ErrorAlert.tsx","../../src/components/ErrorRender/Render.tsx","../../src/contexts/ErrorReporter/Provider.tsx","../../src/contexts/ErrorReporter/Context.ts","../../src/contexts/ErrorReporter/useRollbar.tsx"],"sourcesContent":["import { ModuleError, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { Component, ErrorInfo, ReactNode } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorRender } from '../ErrorRender/index.js'\n\nexport interface ThrownErrorBoundaryProps {\n boundaryName?: string\n children: ReactNode\n errorComponent?: (e: ModuleError, boundaryName?: string) => ReactNode\n rethrow?: boolean\n rollbar?: Rollbar\n scope?: string\n title?: string\n}\n\nexport interface ThrownErrorBoundaryState {\n xyoError?: ModuleError\n}\n\nexport class ThrownErrorBoundary extends Component<ThrownErrorBoundaryProps, ThrownErrorBoundaryState> {\n override state: ThrownErrorBoundaryState = {\n xyoError: undefined,\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, xyoError: ThrownErrorBoundary.normalizeError(error) } as ThrownErrorBoundaryState\n }\n\n static normalizeError(error: Error | ModuleError): ModuleError {\n return (\n (error as ModuleError).schema === ModuleErrorSchema ?\n error\n : { message: error.message, schema: ModuleErrorSchema, sources: [] }) as ModuleError\n }\n\n override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { rethrow, rollbar } = this.props\n const { xyoError } = this.state\n\n rollbar?.error(error)\n\n console.error('Error:', xyoError, errorInfo)\n if (rethrow) {\n throw error\n }\n }\n\n override render() {\n const { xyoError } = this.state\n const { children, boundaryName, errorComponent, scope, title } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} scope={scope} title={title} />\n }\n\n return children\n }\n}\n","import { ExitToApp as ExitIcon } from '@mui/icons-material'\nimport { Alert, AlertProps, AlertTitle, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { ModuleError } from '@xyo-network/payload-model'\n\nexport interface ErrorAlertProps extends AlertProps {\n error?: ModuleError | Error | string\n /** @deprecated use scope instead */\n errorContext?: string\n onCancel?: () => void\n scope?: string\n}\n\n// eslint-disable-next-line deprecation/deprecation\nexport const ErrorAlert: React.FC<ErrorAlertProps> = ({\n title = 'Whoops! Something went wrong',\n onCancel,\n error = 'An unknown error occurred',\n errorContext,\n scope,\n ...props\n}) => {\n const finalScope = scope ?? errorContext\n return (\n <Alert severity=\"error\" {...props}>\n <AlertTitle>{title}</AlertTitle>\n {finalScope ?\n <div>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Scope:\n </Typography>\n <Typography variant=\"caption\">{finalScope}</Typography>\n </div>\n : null}\n <div>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Error:\n </Typography>\n <Typography variant=\"caption\">{typeof error === 'string' ? error : error?.message}</Typography>\n </div>\n {onCancel ?\n <ButtonEx variant=\"outlined\" size=\"small\" onClick={onCancel} position=\"absolute\" style={{ right: 8, top: 8 }}>\n <ExitIcon fontSize=\"small\" />\n </ButtonEx>\n : null}\n </Alert>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { useEffect } from 'react'\n\nimport { ErrorAlert } from './ErrorAlert.js'\nimport { ErrorRenderProps } from './Props.js'\n\nexport const ErrorRender: React.FC<ErrorRenderProps> = ({\n onCancel,\n error,\n noErrorDisplay = false,\n customError = null,\n children,\n errorContext,\n scope,\n useLocation,\n ...props\n}) => {\n const location = useLocation?.()\n useEffect(() => {\n if (location) {\n // ensure we end up at the same place we are now after logging in\n location.state = {\n from: {\n pathname: window.location.pathname,\n },\n }\n }\n }, [location])\n\n return error ?\n <FlexCol alignItems=\"stretch\" {...props}>\n {noErrorDisplay ?\n customError\n : <FlexCol alignItems=\"center\" {...props}>\n <ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} scope={scope} />\n </FlexCol>\n }\n </FlexCol>\n : (<>{children}</> ?? null)\n}\n","import { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorReporterContext } from './Context.js'\n\nexport interface ErrorReporterProviderProps {\n rollbar: Rollbar\n}\n\nconst ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>> = ({ children, rollbar }) => {\n const [rollbarInstance, setRollBarInstance] = useState<Rollbar>()\n\n useEffect(() => {\n if (rollbarInstance) {\n setRollBarInstance(rollbarInstance)\n }\n }, [rollbar, rollbarInstance])\n\n return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>\n}\n\nexport { ErrorReporterProvider }\n","import { createContext } from 'react'\n\nimport { ErrorReporterContextState } from './State.js'\n\nexport const ErrorReporterContext = createContext<ErrorReporterContextState>({})\n","import { useContext } from 'react'\n\nimport { ErrorReporterContext } from './Context.js'\n\nconst useRollbar = () => {\n const context = useContext(ErrorReporterContext)\n if (context === undefined) {\n console.warn('useRollbar must be used within a ErrorReporterContext')\n }\n\n return context ?? {}\n}\n\nexport { useRollbar }\n"],"mappings":"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","names":["jsx","jsx","useEffect","jsx","useEffect"]}
|
package/dist/node/index.js
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
2
|
-
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
3
|
-
import { Component } from "react";
|
4
|
-
|
5
|
-
// src/components/ErrorRender/ErrorAlert.tsx
|
6
|
-
import { ExitToApp as ExitIcon } from "@mui/icons-material";
|
7
|
-
import { Alert, AlertTitle, Typography } from "@mui/material";
|
8
|
-
import { ButtonEx } from "@xylabs/react-button";
|
9
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
10
|
-
var ErrorAlert = ({
|
11
|
-
title = "Whoops! Something went wrong",
|
12
|
-
onCancel,
|
13
|
-
error = "An unknown error occurred",
|
14
|
-
errorContext,
|
15
|
-
scope,
|
16
|
-
...props
|
17
|
-
}) => {
|
18
|
-
const finalScope = scope ?? errorContext;
|
19
|
-
return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
|
20
|
-
/* @__PURE__ */ jsx(AlertTitle, { children: title }),
|
21
|
-
finalScope ? /* @__PURE__ */ jsxs("div", { children: [
|
22
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Scope:" }),
|
23
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: finalScope })
|
24
|
-
] }) : null,
|
25
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
26
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
|
27
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: typeof error === "string" ? error : error == null ? void 0 : error.message })
|
28
|
-
] }),
|
29
|
-
onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
|
30
|
-
] });
|
31
|
-
};
|
32
|
-
|
33
|
-
// src/components/ErrorRender/Render.tsx
|
34
|
-
import { FlexCol } from "@xylabs/react-flexbox";
|
35
|
-
import { useEffect } from "react";
|
36
|
-
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
37
|
-
var ErrorRender = ({
|
38
|
-
onCancel,
|
39
|
-
error,
|
40
|
-
noErrorDisplay = false,
|
41
|
-
customError = null,
|
42
|
-
children,
|
43
|
-
errorContext,
|
44
|
-
scope,
|
45
|
-
useLocation,
|
46
|
-
...props
|
47
|
-
}) => {
|
48
|
-
const location = useLocation == null ? void 0 : useLocation();
|
49
|
-
useEffect(() => {
|
50
|
-
if (location) {
|
51
|
-
location.state = {
|
52
|
-
from: {
|
53
|
-
pathname: window.location.pathname
|
54
|
-
}
|
55
|
-
};
|
56
|
-
}
|
57
|
-
}, [location]);
|
58
|
-
return error ? /* @__PURE__ */ jsx2(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? customError : /* @__PURE__ */ jsx2(FlexCol, { alignItems: "center", ...props, children: /* @__PURE__ */ jsx2(ErrorAlert, { error, errorContext, onCancel, scope }) }) }) : /* @__PURE__ */ jsx2(Fragment, { children }) ?? null;
|
59
|
-
};
|
60
|
-
|
61
|
-
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
62
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
63
|
-
var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
|
64
|
-
state = {
|
65
|
-
xyoError: void 0
|
66
|
-
};
|
67
|
-
static getDerivedStateFromError(error) {
|
68
|
-
return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
|
69
|
-
}
|
70
|
-
static normalizeError(error) {
|
71
|
-
return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
|
72
|
-
}
|
73
|
-
componentDidCatch(error, errorInfo) {
|
74
|
-
const { rethrow, rollbar } = this.props;
|
75
|
-
const { xyoError } = this.state;
|
76
|
-
rollbar == null ? void 0 : rollbar.error(error);
|
77
|
-
console.error("Error:", xyoError, errorInfo);
|
78
|
-
if (rethrow) {
|
79
|
-
throw error;
|
80
|
-
}
|
81
|
-
}
|
82
|
-
render() {
|
83
|
-
const { xyoError } = this.state;
|
84
|
-
const { children, boundaryName, errorComponent, scope, title } = this.props;
|
85
|
-
if (xyoError) {
|
86
|
-
if (errorComponent) {
|
87
|
-
return errorComponent(xyoError);
|
88
|
-
}
|
89
|
-
return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary`, scope, title });
|
90
|
-
}
|
91
|
-
return children;
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
96
|
-
import { useEffect as useEffect2, useState } from "react";
|
97
|
-
|
98
|
-
// src/contexts/ErrorReporter/Context.ts
|
99
|
-
import { createContext } from "react";
|
100
|
-
var ErrorReporterContext = createContext({});
|
101
|
-
|
102
|
-
// src/contexts/ErrorReporter/Provider.tsx
|
103
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
104
|
-
var ErrorReporterProvider = ({ children, rollbar }) => {
|
105
|
-
const [rollbarInstance, setRollBarInstance] = useState();
|
106
|
-
useEffect2(() => {
|
107
|
-
if (rollbarInstance) {
|
108
|
-
setRollBarInstance(rollbarInstance);
|
109
|
-
}
|
110
|
-
}, [rollbar, rollbarInstance]);
|
111
|
-
return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
|
112
|
-
};
|
113
|
-
|
114
|
-
// src/contexts/ErrorReporter/useRollbar.tsx
|
115
|
-
import { useContext } from "react";
|
116
|
-
var useRollbar = () => {
|
117
|
-
const context = useContext(ErrorReporterContext);
|
118
|
-
if (context === void 0) {
|
119
|
-
console.warn("useRollbar must be used within a ErrorReporterContext");
|
120
|
-
}
|
121
|
-
return context ?? {};
|
122
|
-
};
|
123
|
-
export {
|
124
|
-
ErrorAlert,
|
125
|
-
ErrorRender,
|
126
|
-
ErrorReporterProvider,
|
127
|
-
ThrownErrorBoundary,
|
128
|
-
useRollbar
|
129
|
-
};
|
130
|
-
//# sourceMappingURL=index.js.map
|