@xyo-network/react-error 2.81.9 → 2.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts +3 -2
  2. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
  3. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.mts +3 -2
  4. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
  5. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.ts +3 -2
  6. package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
  7. package/dist/browser/components/ErrorBoundary/index.d.cts +1 -1
  8. package/dist/browser/components/ErrorBoundary/index.d.cts.map +1 -1
  9. package/dist/browser/components/ErrorBoundary/index.d.mts +1 -1
  10. package/dist/browser/components/ErrorBoundary/index.d.mts.map +1 -1
  11. package/dist/browser/components/ErrorBoundary/index.d.ts +1 -1
  12. package/dist/browser/components/ErrorBoundary/index.d.ts.map +1 -1
  13. package/dist/browser/components/ErrorRender/ErrorAlert.d.cts +2 -1
  14. package/dist/browser/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
  15. package/dist/browser/components/ErrorRender/ErrorAlert.d.mts +2 -1
  16. package/dist/browser/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
  17. package/dist/browser/components/ErrorRender/ErrorAlert.d.ts +2 -1
  18. package/dist/browser/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
  19. package/dist/browser/components/ErrorRender/Render.d.cts +2 -1
  20. package/dist/browser/components/ErrorRender/Render.d.cts.map +1 -1
  21. package/dist/browser/components/ErrorRender/Render.d.mts +2 -1
  22. package/dist/browser/components/ErrorRender/Render.d.mts.map +1 -1
  23. package/dist/browser/components/ErrorRender/Render.d.ts +2 -1
  24. package/dist/browser/components/ErrorRender/Render.d.ts.map +1 -1
  25. package/dist/browser/components/ErrorRender/index.d.cts +3 -3
  26. package/dist/browser/components/ErrorRender/index.d.cts.map +1 -1
  27. package/dist/browser/components/ErrorRender/index.d.mts +3 -3
  28. package/dist/browser/components/ErrorRender/index.d.mts.map +1 -1
  29. package/dist/browser/components/ErrorRender/index.d.ts +3 -3
  30. package/dist/browser/components/ErrorRender/index.d.ts.map +1 -1
  31. package/dist/browser/components/index.d.cts +2 -2
  32. package/dist/browser/components/index.d.mts +2 -2
  33. package/dist/browser/components/index.d.ts +2 -2
  34. package/dist/browser/contexts/ErrorReporter/Context.d.cts +1 -1
  35. package/dist/browser/contexts/ErrorReporter/Context.d.mts +1 -1
  36. package/dist/browser/contexts/ErrorReporter/Context.d.ts +1 -1
  37. package/dist/browser/contexts/ErrorReporter/Provider.d.cts +1 -0
  38. package/dist/browser/contexts/ErrorReporter/Provider.d.cts.map +1 -1
  39. package/dist/browser/contexts/ErrorReporter/Provider.d.mts +1 -0
  40. package/dist/browser/contexts/ErrorReporter/Provider.d.mts.map +1 -1
  41. package/dist/browser/contexts/ErrorReporter/Provider.d.ts +1 -0
  42. package/dist/browser/contexts/ErrorReporter/Provider.d.ts.map +1 -1
  43. package/dist/browser/contexts/ErrorReporter/index.d.cts +3 -3
  44. package/dist/browser/contexts/ErrorReporter/index.d.cts.map +1 -1
  45. package/dist/browser/contexts/ErrorReporter/index.d.mts +3 -3
  46. package/dist/browser/contexts/ErrorReporter/index.d.mts.map +1 -1
  47. package/dist/browser/contexts/ErrorReporter/index.d.ts +3 -3
  48. package/dist/browser/contexts/ErrorReporter/index.d.ts.map +1 -1
  49. package/dist/browser/contexts/ErrorReporter/useRollbar.d.cts +1 -1
  50. package/dist/browser/contexts/ErrorReporter/useRollbar.d.mts +1 -1
  51. package/dist/browser/contexts/ErrorReporter/useRollbar.d.ts +1 -1
  52. package/dist/browser/contexts/index.d.cts +1 -1
  53. package/dist/browser/contexts/index.d.mts +1 -1
  54. package/dist/browser/contexts/index.d.ts +1 -1
  55. package/dist/browser/index.cjs +102 -52
  56. package/dist/browser/index.cjs.map +1 -1
  57. package/dist/browser/index.d.cts +2 -2
  58. package/dist/browser/index.d.mts +2 -2
  59. package/dist/browser/index.d.ts +2 -2
  60. package/dist/browser/index.mjs +163 -0
  61. package/dist/browser/index.mjs.map +1 -0
  62. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.cts +3 -2
  63. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
  64. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.mts +3 -2
  65. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
  66. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.ts +3 -2
  67. package/dist/neutral/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
  68. package/dist/neutral/components/ErrorBoundary/index.d.cts +1 -1
  69. package/dist/neutral/components/ErrorBoundary/index.d.cts.map +1 -1
  70. package/dist/neutral/components/ErrorBoundary/index.d.mts +1 -1
  71. package/dist/neutral/components/ErrorBoundary/index.d.mts.map +1 -1
  72. package/dist/neutral/components/ErrorBoundary/index.d.ts +1 -1
  73. package/dist/neutral/components/ErrorBoundary/index.d.ts.map +1 -1
  74. package/dist/neutral/components/ErrorRender/ErrorAlert.d.cts +2 -1
  75. package/dist/neutral/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
  76. package/dist/neutral/components/ErrorRender/ErrorAlert.d.mts +2 -1
  77. package/dist/neutral/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
  78. package/dist/neutral/components/ErrorRender/ErrorAlert.d.ts +2 -1
  79. package/dist/neutral/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
  80. package/dist/neutral/components/ErrorRender/Render.d.cts +2 -1
  81. package/dist/neutral/components/ErrorRender/Render.d.cts.map +1 -1
  82. package/dist/neutral/components/ErrorRender/Render.d.mts +2 -1
  83. package/dist/neutral/components/ErrorRender/Render.d.mts.map +1 -1
  84. package/dist/neutral/components/ErrorRender/Render.d.ts +2 -1
  85. package/dist/neutral/components/ErrorRender/Render.d.ts.map +1 -1
  86. package/dist/neutral/components/ErrorRender/index.d.cts +3 -3
  87. package/dist/neutral/components/ErrorRender/index.d.cts.map +1 -1
  88. package/dist/neutral/components/ErrorRender/index.d.mts +3 -3
  89. package/dist/neutral/components/ErrorRender/index.d.mts.map +1 -1
  90. package/dist/neutral/components/ErrorRender/index.d.ts +3 -3
  91. package/dist/neutral/components/ErrorRender/index.d.ts.map +1 -1
  92. package/dist/neutral/components/index.d.cts +2 -2
  93. package/dist/neutral/components/index.d.mts +2 -2
  94. package/dist/neutral/components/index.d.ts +2 -2
  95. package/dist/neutral/contexts/ErrorReporter/Context.d.cts +1 -1
  96. package/dist/neutral/contexts/ErrorReporter/Context.d.mts +1 -1
  97. package/dist/neutral/contexts/ErrorReporter/Context.d.ts +1 -1
  98. package/dist/neutral/contexts/ErrorReporter/Provider.d.cts +1 -0
  99. package/dist/neutral/contexts/ErrorReporter/Provider.d.cts.map +1 -1
  100. package/dist/neutral/contexts/ErrorReporter/Provider.d.mts +1 -0
  101. package/dist/neutral/contexts/ErrorReporter/Provider.d.mts.map +1 -1
  102. package/dist/neutral/contexts/ErrorReporter/Provider.d.ts +1 -0
  103. package/dist/neutral/contexts/ErrorReporter/Provider.d.ts.map +1 -1
  104. package/dist/neutral/contexts/ErrorReporter/index.d.cts +3 -3
  105. package/dist/neutral/contexts/ErrorReporter/index.d.cts.map +1 -1
  106. package/dist/neutral/contexts/ErrorReporter/index.d.mts +3 -3
  107. package/dist/neutral/contexts/ErrorReporter/index.d.mts.map +1 -1
  108. package/dist/neutral/contexts/ErrorReporter/index.d.ts +3 -3
  109. package/dist/neutral/contexts/ErrorReporter/index.d.ts.map +1 -1
  110. package/dist/neutral/contexts/ErrorReporter/useRollbar.d.cts +1 -1
  111. package/dist/neutral/contexts/ErrorReporter/useRollbar.d.mts +1 -1
  112. package/dist/neutral/contexts/ErrorReporter/useRollbar.d.ts +1 -1
  113. package/dist/neutral/contexts/index.d.cts +1 -1
  114. package/dist/neutral/contexts/index.d.mts +1 -1
  115. package/dist/neutral/contexts/index.d.ts +1 -1
  116. package/dist/neutral/index.cjs +102 -52
  117. package/dist/neutral/index.cjs.map +1 -1
  118. package/dist/neutral/index.d.cts +2 -2
  119. package/dist/neutral/index.d.mts +2 -2
  120. package/dist/neutral/index.d.ts +2 -2
  121. package/dist/neutral/index.mjs +163 -0
  122. package/dist/neutral/index.mjs.map +1 -0
  123. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts +3 -2
  124. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -1
  125. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.mts +3 -2
  126. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.mts.map +1 -1
  127. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.ts +3 -2
  128. package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -1
  129. package/dist/node/components/ErrorBoundary/index.d.cts +1 -1
  130. package/dist/node/components/ErrorBoundary/index.d.cts.map +1 -1
  131. package/dist/node/components/ErrorBoundary/index.d.mts +1 -1
  132. package/dist/node/components/ErrorBoundary/index.d.mts.map +1 -1
  133. package/dist/node/components/ErrorBoundary/index.d.ts +1 -1
  134. package/dist/node/components/ErrorBoundary/index.d.ts.map +1 -1
  135. package/dist/node/components/ErrorRender/ErrorAlert.d.cts +2 -1
  136. package/dist/node/components/ErrorRender/ErrorAlert.d.cts.map +1 -1
  137. package/dist/node/components/ErrorRender/ErrorAlert.d.mts +2 -1
  138. package/dist/node/components/ErrorRender/ErrorAlert.d.mts.map +1 -1
  139. package/dist/node/components/ErrorRender/ErrorAlert.d.ts +2 -1
  140. package/dist/node/components/ErrorRender/ErrorAlert.d.ts.map +1 -1
  141. package/dist/node/components/ErrorRender/Render.d.cts +2 -1
  142. package/dist/node/components/ErrorRender/Render.d.cts.map +1 -1
  143. package/dist/node/components/ErrorRender/Render.d.mts +2 -1
  144. package/dist/node/components/ErrorRender/Render.d.mts.map +1 -1
  145. package/dist/node/components/ErrorRender/Render.d.ts +2 -1
  146. package/dist/node/components/ErrorRender/Render.d.ts.map +1 -1
  147. package/dist/node/components/ErrorRender/index.d.cts +3 -3
  148. package/dist/node/components/ErrorRender/index.d.cts.map +1 -1
  149. package/dist/node/components/ErrorRender/index.d.mts +3 -3
  150. package/dist/node/components/ErrorRender/index.d.mts.map +1 -1
  151. package/dist/node/components/ErrorRender/index.d.ts +3 -3
  152. package/dist/node/components/ErrorRender/index.d.ts.map +1 -1
  153. package/dist/node/components/index.d.cts +2 -2
  154. package/dist/node/components/index.d.mts +2 -2
  155. package/dist/node/components/index.d.ts +2 -2
  156. package/dist/node/contexts/ErrorReporter/Context.d.cts +1 -1
  157. package/dist/node/contexts/ErrorReporter/Context.d.mts +1 -1
  158. package/dist/node/contexts/ErrorReporter/Context.d.ts +1 -1
  159. package/dist/node/contexts/ErrorReporter/Provider.d.cts +1 -0
  160. package/dist/node/contexts/ErrorReporter/Provider.d.cts.map +1 -1
  161. package/dist/node/contexts/ErrorReporter/Provider.d.mts +1 -0
  162. package/dist/node/contexts/ErrorReporter/Provider.d.mts.map +1 -1
  163. package/dist/node/contexts/ErrorReporter/Provider.d.ts +1 -0
  164. package/dist/node/contexts/ErrorReporter/Provider.d.ts.map +1 -1
  165. package/dist/node/contexts/ErrorReporter/index.d.cts +3 -3
  166. package/dist/node/contexts/ErrorReporter/index.d.cts.map +1 -1
  167. package/dist/node/contexts/ErrorReporter/index.d.mts +3 -3
  168. package/dist/node/contexts/ErrorReporter/index.d.mts.map +1 -1
  169. package/dist/node/contexts/ErrorReporter/index.d.ts +3 -3
  170. package/dist/node/contexts/ErrorReporter/index.d.ts.map +1 -1
  171. package/dist/node/contexts/ErrorReporter/useRollbar.d.cts +1 -1
  172. package/dist/node/contexts/ErrorReporter/useRollbar.d.mts +1 -1
  173. package/dist/node/contexts/ErrorReporter/useRollbar.d.ts +1 -1
  174. package/dist/node/contexts/index.d.cts +1 -1
  175. package/dist/node/contexts/index.d.mts +1 -1
  176. package/dist/node/contexts/index.d.ts +1 -1
  177. package/dist/node/index.cjs +101 -52
  178. package/dist/node/index.cjs.map +1 -1
  179. package/dist/node/index.d.cts +2 -2
  180. package/dist/node/index.d.mts +2 -2
  181. package/dist/node/index.d.ts +2 -2
  182. package/dist/node/index.mjs +162 -0
  183. package/dist/node/index.mjs.map +1 -0
  184. package/package.json +13 -13
  185. package/src/components/ErrorBoundary/ThrownErrorBoundary.stories.tsx +8 -4
  186. package/src/components/ErrorBoundary/ThrownErrorBoundary.tsx +8 -7
  187. package/src/components/ErrorBoundary/index.ts +1 -1
  188. package/src/components/ErrorRender/ErrorAlert.stories.tsx +41 -0
  189. package/src/components/ErrorRender/ErrorAlert.tsx +35 -24
  190. package/src/components/ErrorRender/Render.tsx +15 -12
  191. package/src/components/ErrorRender/index.ts +3 -3
  192. package/src/components/index.ts +2 -2
  193. package/src/contexts/ErrorReporter/Context.ts +1 -1
  194. package/src/contexts/ErrorReporter/Provider.stories.tsx +11 -4
  195. package/src/contexts/ErrorReporter/Provider.tsx +3 -2
  196. package/src/contexts/ErrorReporter/index.ts +3 -3
  197. package/src/contexts/ErrorReporter/useRollbar.tsx +1 -1
  198. package/src/contexts/index.ts +1 -1
  199. package/src/index.ts +2 -2
  200. package/dist/browser/index.js +0 -121
  201. package/dist/browser/index.js.map +0 -1
  202. package/dist/neutral/index.js +0 -121
  203. package/dist/neutral/index.js.map +0 -1
  204. package/dist/node/index.js +0 -121
  205. package/dist/node/index.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import { Meta, StoryFn } from '@storybook/react'
2
+ import React from 'react'
3
+
4
+ import { ErrorAlert } from './ErrorAlert.tsx'
5
+
6
+ const StorybookEntry: Meta = {
7
+ argTypes: {},
8
+ component: ErrorAlert,
9
+ parameters: {
10
+ docs: {
11
+ page: null,
12
+ },
13
+ },
14
+ title: 'error/ErrorAlert',
15
+ }
16
+
17
+ const Template: StoryFn<typeof ErrorAlert> = (props) => {
18
+ return <ErrorAlert {...props} />
19
+ }
20
+
21
+ const Default = Template.bind({})
22
+ Default.args = {}
23
+
24
+ const WithTitle = Template.bind({})
25
+ WithTitle.args = { title: 'Oh No!' }
26
+
27
+ const WithError = Template.bind({})
28
+ WithError.args = { error: 'An error happened' }
29
+
30
+ const WithScope = Template.bind({})
31
+ WithScope.args = { scope: 'Storybook' }
32
+
33
+ const WithErrorAndScope = Template.bind({})
34
+ WithErrorAndScope.args = { error: 'An error happened', scope: 'Storybook' }
35
+
36
+ const WithErrorAndScopeAndTitle = Template.bind({})
37
+ WithErrorAndScopeAndTitle.args = { error: 'An error happened', scope: 'Storybook', title: 'Oh No!' }
38
+
39
+ export { Default, WithError, WithErrorAndScope, WithErrorAndScopeAndTitle, WithScope, WithTitle }
40
+
41
+ export default StorybookEntry
@@ -2,40 +2,51 @@ 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
- error?: ModuleError | Error
8
+ error?: ModuleError | Error | string
9
+ /** @deprecated use scope instead */
8
10
  errorContext?: string
9
11
  onCancel?: () => void
10
12
  scope?: string
11
13
  }
12
14
 
13
- export const ErrorAlert: React.FC<ErrorAlertProps> = ({ onCancel, error, errorContext, scope, ...props }) => {
15
+ export const ErrorAlert: React.FC<ErrorAlertProps> = ({
16
+ title = 'Whoops! Something went wrong',
17
+ onCancel,
18
+ error = 'An unknown error occurred',
19
+ errorContext,
20
+ scope,
21
+ ...props
22
+ }) => {
23
+ const finalScope = scope ?? errorContext
14
24
  return (
15
25
  <Alert severity="error" {...props}>
16
- <AlertTitle>Whoops! Something went wrong</AlertTitle>
17
- {errorContext ?
18
- <Typography variant="caption" my={0.5} lineHeight="1" display="block">
19
- {errorContext}
26
+ <AlertTitle>{title}</AlertTitle>
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}
37
+ <div>
38
+ <Typography variant="caption" mr={0.5} fontWeight="bold">
39
+ Error:
20
40
  </Typography>
21
- : null}
22
- {scope ?
23
- <>
24
- <Typography variant="caption" mr={0.5} fontWeight="bold">
25
- Scope:
26
- </Typography>
27
- <Typography variant="caption">{scope}</Typography>
28
- </>
29
- : null}
30
- <Typography variant="caption" mr={0.5} fontWeight="bold">
31
- Error:
32
- </Typography>
33
- <Typography variant="caption">{error?.message}</Typography>
34
- {onCancel ?
35
- <ButtonEx variant="outlined" size="small" onClick={onCancel} position="absolute" style={{ right: 8, top: 8 }}>
36
- <ExitIcon fontSize="small" />
37
- </ButtonEx>
38
- : null}
41
+ <Typography variant="caption">{typeof error === 'string' ? error : error?.message}</Typography>
42
+ </div>
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}
39
50
  </Alert>
40
51
  )
41
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.js'
5
- import { ErrorRenderProps } from './Props.js'
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
- <FlexCol alignItems="stretch" {...props}>
32
- {noErrorDisplay ?
33
- customError
34
- : <FlexCol alignItems="center" {...props}>
35
- <ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} scope={scope} />
36
- </FlexCol>
37
- }
38
- </FlexCol>
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.js'
2
- export * from './Props.js'
3
- export * from './Render.js'
1
+ export * from './ErrorAlert.tsx'
2
+ export * from './Props.ts'
3
+ export * from './Render.tsx'
@@ -1,2 +1,2 @@
1
- export * from './ErrorBoundary/index.js'
2
- export * from './ErrorRender/index.js'
1
+ export * from './ErrorBoundary/index.ts'
2
+ export * from './ErrorRender/index.ts'
@@ -1,5 +1,5 @@
1
1
  import { createContext } from 'react'
2
2
 
3
- import { ErrorReporterContextState } from './State.js'
3
+ import { ErrorReporterContextState } from './State.ts'
4
4
 
5
5
  export const ErrorReporterContext = createContext<ErrorReporterContextState>({})
@@ -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.js'
6
- import { useRollbar } from './useRollbar.js'
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 <Typography color={rollbarFound ? 'green' : 'red'}>Rollbar instance {rollbarFound ? '' : 'NOT'} found from context!</Typography>
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.js'
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.js'
2
- export * from './State.js'
3
- export * from './useRollbar.js'
1
+ export * from './Provider.tsx'
2
+ export * from './State.ts'
3
+ export * from './useRollbar.tsx'
@@ -1,6 +1,6 @@
1
1
  import { useContext } from 'react'
2
2
 
3
- import { ErrorReporterContext } from './Context.js'
3
+ import { ErrorReporterContext } from './Context.ts'
4
4
 
5
5
  const useRollbar = () => {
6
6
  const context = useContext(ErrorReporterContext)
@@ -1 +1 @@
1
- export * from './ErrorReporter/index.js'
1
+ export * from './ErrorReporter/index.ts'
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './components/index.js'
2
- export * from './contexts/index.js'
1
+ export * from './components/index.ts'
2
+ export * from './contexts/index.ts'
@@ -1,121 +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 { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
- var ErrorAlert = ({ onCancel, error, errorContext, scope, ...props }) => {
11
- return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
12
- /* @__PURE__ */ jsx(AlertTitle, { children: "Whoops! Something went wrong" }),
13
- errorContext ? /* @__PURE__ */ jsx(Typography, { variant: "caption", my: 0.5, lineHeight: "1", display: "block", children: errorContext }) : null,
14
- scope ? /* @__PURE__ */ jsxs(Fragment, { children: [
15
- /* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Scope:" }),
16
- /* @__PURE__ */ jsx(Typography, { variant: "caption", children: scope })
17
- ] }) : null,
18
- /* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
19
- /* @__PURE__ */ jsx(Typography, { variant: "caption", children: error?.message }),
20
- onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
21
- ] });
22
- };
23
-
24
- // src/components/ErrorRender/Render.tsx
25
- import { FlexCol } from "@xylabs/react-flexbox";
26
- import { useEffect } from "react";
27
- import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
28
- var ErrorRender = ({
29
- onCancel,
30
- error,
31
- noErrorDisplay = false,
32
- customError = null,
33
- children,
34
- errorContext,
35
- scope,
36
- useLocation,
37
- ...props
38
- }) => {
39
- const location = useLocation?.();
40
- useEffect(() => {
41
- if (location) {
42
- location.state = {
43
- from: {
44
- pathname: window.location.pathname
45
- }
46
- };
47
- }
48
- }, [location]);
49
- 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(Fragment2, { children }) ?? null;
50
- };
51
-
52
- // src/components/ErrorBoundary/ThrownErrorBoundary.tsx
53
- import { jsx as jsx3 } from "react/jsx-runtime";
54
- var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
55
- state = {
56
- xyoError: void 0
57
- };
58
- static getDerivedStateFromError(error) {
59
- return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
60
- }
61
- static normalizeError(error) {
62
- return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
63
- }
64
- componentDidCatch(error, errorInfo) {
65
- const { rethrow, rollbar } = this.props;
66
- const { xyoError } = this.state;
67
- rollbar?.error(error);
68
- console.error("Error:", xyoError, errorInfo);
69
- if (rethrow) {
70
- throw error;
71
- }
72
- }
73
- render() {
74
- const { xyoError } = this.state;
75
- const { children, boundaryName, errorComponent, scope } = this.props;
76
- if (xyoError) {
77
- if (errorComponent) {
78
- return errorComponent(xyoError);
79
- }
80
- return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary`, scope });
81
- }
82
- return children;
83
- }
84
- };
85
-
86
- // src/contexts/ErrorReporter/Provider.tsx
87
- import { useEffect as useEffect2, useState } from "react";
88
-
89
- // src/contexts/ErrorReporter/Context.ts
90
- import { createContext } from "react";
91
- var ErrorReporterContext = createContext({});
92
-
93
- // src/contexts/ErrorReporter/Provider.tsx
94
- import { jsx as jsx4 } from "react/jsx-runtime";
95
- var ErrorReporterProvider = ({ children, rollbar }) => {
96
- const [rollbarInstance, setRollBarInstance] = useState();
97
- useEffect2(() => {
98
- if (rollbarInstance) {
99
- setRollBarInstance(rollbarInstance);
100
- }
101
- }, [rollbar, rollbarInstance]);
102
- return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
103
- };
104
-
105
- // src/contexts/ErrorReporter/useRollbar.tsx
106
- import { useContext } from "react";
107
- var useRollbar = () => {
108
- const context = useContext(ErrorReporterContext);
109
- if (context === void 0) {
110
- console.warn("useRollbar must be used within a ErrorReporterContext");
111
- }
112
- return context ?? {};
113
- };
114
- export {
115
- ErrorAlert,
116
- ErrorRender,
117
- ErrorReporterProvider,
118
- ThrownErrorBoundary,
119
- useRollbar
120
- };
121
- //# 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}\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 } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} scope={scope} />\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\n errorContext?: string\n onCancel?: () => void\n scope?: string\n}\n\nexport const ErrorAlert: React.FC<ErrorAlertProps> = ({ onCancel, error, errorContext, scope, ...props }) => {\n return (\n <Alert severity=\"error\" {...props}>\n <AlertTitle>Whoops! Something went wrong</AlertTitle>\n {errorContext ?\n <Typography variant=\"caption\" my={0.5} lineHeight=\"1\" display=\"block\">\n {errorContext}\n </Typography>\n : null}\n {scope ?\n <>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Scope:\n </Typography>\n <Typography variant=\"caption\">{scope}</Typography>\n </>\n : null}\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Error:\n </Typography>\n <Typography variant=\"caption\">{error?.message}</Typography>\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":["Fragment","jsx","jsx","useEffect","jsx","useEffect"]}
@@ -1,121 +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 { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
- var ErrorAlert = ({ onCancel, error, errorContext, scope, ...props }) => {
11
- return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
12
- /* @__PURE__ */ jsx(AlertTitle, { children: "Whoops! Something went wrong" }),
13
- errorContext ? /* @__PURE__ */ jsx(Typography, { variant: "caption", my: 0.5, lineHeight: "1", display: "block", children: errorContext }) : null,
14
- scope ? /* @__PURE__ */ jsxs(Fragment, { children: [
15
- /* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Scope:" }),
16
- /* @__PURE__ */ jsx(Typography, { variant: "caption", children: scope })
17
- ] }) : null,
18
- /* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
19
- /* @__PURE__ */ jsx(Typography, { variant: "caption", children: error?.message }),
20
- onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
21
- ] });
22
- };
23
-
24
- // src/components/ErrorRender/Render.tsx
25
- import { FlexCol } from "@xylabs/react-flexbox";
26
- import { useEffect } from "react";
27
- import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
28
- var ErrorRender = ({
29
- onCancel,
30
- error,
31
- noErrorDisplay = false,
32
- customError = null,
33
- children,
34
- errorContext,
35
- scope,
36
- useLocation,
37
- ...props
38
- }) => {
39
- const location = useLocation?.();
40
- useEffect(() => {
41
- if (location) {
42
- location.state = {
43
- from: {
44
- pathname: window.location.pathname
45
- }
46
- };
47
- }
48
- }, [location]);
49
- 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(Fragment2, { children }) ?? null;
50
- };
51
-
52
- // src/components/ErrorBoundary/ThrownErrorBoundary.tsx
53
- import { jsx as jsx3 } from "react/jsx-runtime";
54
- var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
55
- state = {
56
- xyoError: void 0
57
- };
58
- static getDerivedStateFromError(error) {
59
- return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
60
- }
61
- static normalizeError(error) {
62
- return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
63
- }
64
- componentDidCatch(error, errorInfo) {
65
- const { rethrow, rollbar } = this.props;
66
- const { xyoError } = this.state;
67
- rollbar?.error(error);
68
- console.error("Error:", xyoError, errorInfo);
69
- if (rethrow) {
70
- throw error;
71
- }
72
- }
73
- render() {
74
- const { xyoError } = this.state;
75
- const { children, boundaryName, errorComponent, scope } = this.props;
76
- if (xyoError) {
77
- if (errorComponent) {
78
- return errorComponent(xyoError);
79
- }
80
- return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary`, scope });
81
- }
82
- return children;
83
- }
84
- };
85
-
86
- // src/contexts/ErrorReporter/Provider.tsx
87
- import { useEffect as useEffect2, useState } from "react";
88
-
89
- // src/contexts/ErrorReporter/Context.ts
90
- import { createContext } from "react";
91
- var ErrorReporterContext = createContext({});
92
-
93
- // src/contexts/ErrorReporter/Provider.tsx
94
- import { jsx as jsx4 } from "react/jsx-runtime";
95
- var ErrorReporterProvider = ({ children, rollbar }) => {
96
- const [rollbarInstance, setRollBarInstance] = useState();
97
- useEffect2(() => {
98
- if (rollbarInstance) {
99
- setRollBarInstance(rollbarInstance);
100
- }
101
- }, [rollbar, rollbarInstance]);
102
- return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
103
- };
104
-
105
- // src/contexts/ErrorReporter/useRollbar.tsx
106
- import { useContext } from "react";
107
- var useRollbar = () => {
108
- const context = useContext(ErrorReporterContext);
109
- if (context === void 0) {
110
- console.warn("useRollbar must be used within a ErrorReporterContext");
111
- }
112
- return context ?? {};
113
- };
114
- export {
115
- ErrorAlert,
116
- ErrorRender,
117
- ErrorReporterProvider,
118
- ThrownErrorBoundary,
119
- useRollbar
120
- };
121
- //# 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}\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 } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} scope={scope} />\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\n errorContext?: string\n onCancel?: () => void\n scope?: string\n}\n\nexport const ErrorAlert: React.FC<ErrorAlertProps> = ({ onCancel, error, errorContext, scope, ...props }) => {\n return (\n <Alert severity=\"error\" {...props}>\n <AlertTitle>Whoops! Something went wrong</AlertTitle>\n {errorContext ?\n <Typography variant=\"caption\" my={0.5} lineHeight=\"1\" display=\"block\">\n {errorContext}\n </Typography>\n : null}\n {scope ?\n <>\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Scope:\n </Typography>\n <Typography variant=\"caption\">{scope}</Typography>\n </>\n : null}\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Error:\n </Typography>\n <Typography variant=\"caption\">{error?.message}</Typography>\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":["Fragment","jsx","jsx","useEffect","jsx","useEffect"]}