@heritsilavo/react-error-boundary 2.1.0 → 2.1.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/next/CustomError.d.ts +5 -0
- package/dist/next/ErrorBoundary.d.ts +5 -0
- package/dist/next/ErrorContext.d.ts +20 -0
- package/dist/next/components/DefaultErrorComponents.d.ts +14 -0
- package/dist/next/index.d.ts +4 -0
- package/dist/next/index.js +188 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/index.mjs +181 -0
- package/dist/next/index.mjs.map +1 -0
- package/dist/react/CustomError.d.ts +5 -0
- package/dist/react/ErrorBoundary.d.ts +5 -0
- package/dist/react/ErrorContext.d.ts +20 -0
- package/dist/react/components/DefaultErrorComponents.d.ts +14 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.js +187 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +180 -0
- package/dist/react/index.mjs.map +1 -0
- package/package.json +1 -1
@@ -0,0 +1,20 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { CustomError } from './CustomError';
|
3
|
+
import { ErrorComponentType } from './components/DefaultErrorComponents';
|
4
|
+
interface ContextType {
|
5
|
+
handleError: (error: Error) => void;
|
6
|
+
error: CustomError | null;
|
7
|
+
clearError: () => void;
|
8
|
+
}
|
9
|
+
interface ErrorProviderProps {
|
10
|
+
children: React.ReactNode;
|
11
|
+
ErrorComponent?: React.ComponentType<ErrorComponentType>;
|
12
|
+
autoHideDelay?: number;
|
13
|
+
onError?: () => void;
|
14
|
+
closeErrorComponetOnClick?: boolean;
|
15
|
+
handleError?: (error: Error) => void;
|
16
|
+
}
|
17
|
+
export declare const ErrorProvider: React.FC<ErrorProviderProps>;
|
18
|
+
export declare const useError: () => ContextType;
|
19
|
+
export declare const useThrowError: () => (code: string, message: string, description: string) => void;
|
20
|
+
export {};
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import './style.css';
|
3
|
+
export interface ErrorComponentType {
|
4
|
+
error: {
|
5
|
+
code: string;
|
6
|
+
message: string;
|
7
|
+
description?: string;
|
8
|
+
};
|
9
|
+
onClose: () => void;
|
10
|
+
closeOnClick?: boolean;
|
11
|
+
visiblityTime?: number;
|
12
|
+
}
|
13
|
+
export declare const DefaultErrorComponent: React.FC<ErrorComponentType>;
|
14
|
+
export default DefaultErrorComponent;
|
@@ -0,0 +1,188 @@
|
|
1
|
+
"use client";
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
var React = require('react');
|
5
|
+
|
6
|
+
class CustomError extends Error {
|
7
|
+
constructor(code, message, description) {
|
8
|
+
super(message);
|
9
|
+
this.code = code;
|
10
|
+
this.description = description;
|
11
|
+
this.name = 'CustomError';
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
// Composant de classe qui capture les erreurs React
|
16
|
+
class ErrorBoundaryComponent extends React.Component {
|
17
|
+
constructor(props) {
|
18
|
+
super(props);
|
19
|
+
this.state = { hasError: false };
|
20
|
+
}
|
21
|
+
// Appelé quand une erreur est détectée dans un composant enfant
|
22
|
+
static getDerivedStateFromError(error) {
|
23
|
+
return { hasError: true };
|
24
|
+
}
|
25
|
+
// Permet de logger l'erreur et d'exécuter du code de récupération
|
26
|
+
componentDidCatch(error, errorInfo) {
|
27
|
+
if (this.props.handleError) {
|
28
|
+
this.props.handleError(error);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
render() {
|
32
|
+
if (this.state.hasError) {
|
33
|
+
this.setState({ hasError: false });
|
34
|
+
return this.props.children;
|
35
|
+
}
|
36
|
+
return this.props.children;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
const ErrorBoundary = ({ children, handleError }) => {
|
40
|
+
return React.createElement(ErrorBoundaryComponent, { handleError: handleError }, children);
|
41
|
+
};
|
42
|
+
|
43
|
+
function styleInject(css, ref) {
|
44
|
+
if ( ref === void 0 ) ref = {};
|
45
|
+
var insertAt = ref.insertAt;
|
46
|
+
|
47
|
+
if (!css || typeof document === 'undefined') { return; }
|
48
|
+
|
49
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
50
|
+
var style = document.createElement('style');
|
51
|
+
style.type = 'text/css';
|
52
|
+
|
53
|
+
if (insertAt === 'top') {
|
54
|
+
if (head.firstChild) {
|
55
|
+
head.insertBefore(style, head.firstChild);
|
56
|
+
} else {
|
57
|
+
head.appendChild(style);
|
58
|
+
}
|
59
|
+
} else {
|
60
|
+
head.appendChild(style);
|
61
|
+
}
|
62
|
+
|
63
|
+
if (style.styleSheet) {
|
64
|
+
style.styleSheet.cssText = css;
|
65
|
+
} else {
|
66
|
+
style.appendChild(document.createTextNode(css));
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
var css_248z = ":root {\n --tsila-err-color: rgb(177, 34, 34);\n --tsila-err-bg: white;\n --tsila-err-shadow: rgba(65, 64, 64, 0.2);\n}\n\n#__tsila_err_container__ {\n background-color: var(--tsila-err-bg);\n min-height: 50px;\n padding: 12px 20px;\n border-radius: 8px;\n position: fixed;\n z-index: 10000;\n top: 15px;\n right: 15px;\n box-shadow: 0 4px 12px var(--tsila-err-shadow);\n color: var(--tsila-err-color);\n width: 320px;\n animation: __tsila_slide_in__ 0.3s ease-out;\n cursor: pointer;\n transition: all .3s;\n}\n\n#__tsila_err_header__ {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n#__tsila_code_error__ {\n font-size: 16px;\n font-weight: 700;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n#__tsila_close_button__ {\n background: none;\n border: none;\n color: var(--tsila-err-color);\n cursor: pointer;\n padding: 4px;\n font-size: 18px;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n#__tsila_close_button__:hover {\n opacity: 1;\n}\n\n#__tsila_message_error__ {\n color: #555;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n#__tsila_description_error__ {\n color: #777;\n font-size: 12px;\n opacity: 0.9;\n}\n\n@keyframes __tsila_slide_in__ {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes __tsila_fade_out__ {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n}\n\n#__tsila_err_container__.fade-out {\n animation: __tsila_fade_out__ 0.3s ease-in forwards;\n}";
|
71
|
+
styleInject(css_248z);
|
72
|
+
|
73
|
+
const DefaultErrorComponent = ({ error, onClose, closeOnClick = false, visiblityTime = 5000 }) => {
|
74
|
+
const [progress, setProgress] = React.useState(0);
|
75
|
+
const intervalRef = React.useRef(null);
|
76
|
+
const incrementProgress = React.useCallback(() => {
|
77
|
+
setProgress(prevProgress => {
|
78
|
+
const newProgress = prevProgress + (100 * 100 / visiblityTime);
|
79
|
+
if (newProgress >= 100) {
|
80
|
+
onClose();
|
81
|
+
return 100;
|
82
|
+
}
|
83
|
+
return newProgress;
|
84
|
+
});
|
85
|
+
}, [visiblityTime, onClose]);
|
86
|
+
React.useEffect(() => {
|
87
|
+
intervalRef.current = setInterval(incrementProgress, 100);
|
88
|
+
return () => {
|
89
|
+
if (intervalRef.current) {
|
90
|
+
clearInterval(intervalRef.current);
|
91
|
+
}
|
92
|
+
};
|
93
|
+
}, [incrementProgress]);
|
94
|
+
const onClick = () => {
|
95
|
+
if (closeOnClick) {
|
96
|
+
onClose();
|
97
|
+
}
|
98
|
+
};
|
99
|
+
return (React.createElement("div", { id: "__tsila_err_container__", onClick: onClick },
|
100
|
+
React.createElement("div", { id: "__tsila_err_header__" },
|
101
|
+
React.createElement("div", { id: "__tsila_code_error__" },
|
102
|
+
"\u26A0\uFE0F ",
|
103
|
+
error.code)),
|
104
|
+
React.createElement("div", { id: "__tsila_message_error__" }, error.message),
|
105
|
+
error.description && (React.createElement("div", { id: "__tsila_description_error__" }, error.description)),
|
106
|
+
React.createElement("div", { style: {
|
107
|
+
position: 'absolute',
|
108
|
+
bottom: 0,
|
109
|
+
right: 0,
|
110
|
+
height: '4px',
|
111
|
+
width: `${progress}%`,
|
112
|
+
backgroundColor: 'var(--tsila-err-color)',
|
113
|
+
transition: 'width 0.1s linear'
|
114
|
+
} })));
|
115
|
+
};
|
116
|
+
|
117
|
+
// Création du contexte avec une valeur par défaut
|
118
|
+
const ErrorContext = React.createContext({
|
119
|
+
handleError: () => { },
|
120
|
+
error: null,
|
121
|
+
clearError: () => { }
|
122
|
+
});
|
123
|
+
const ErrorProvider = ({ children, ErrorComponent = DefaultErrorComponent, autoHideDelay = 5000, onError = () => { }, closeErrorComponetOnClick = false, handleError: externalHandleError }) => {
|
124
|
+
const [error, setError] = React.useState(null);
|
125
|
+
const timeoutRef = React.useRef(null);
|
126
|
+
// Fonction de nettoyage du timeout
|
127
|
+
const clearTimeout = () => {
|
128
|
+
if (timeoutRef.current) {
|
129
|
+
window.clearTimeout(timeoutRef.current);
|
130
|
+
timeoutRef.current = null;
|
131
|
+
}
|
132
|
+
};
|
133
|
+
// Nettoyage du timeout lors du démontage du composant
|
134
|
+
React.useEffect(() => {
|
135
|
+
return () => clearTimeout();
|
136
|
+
}, []);
|
137
|
+
const handleError = React.useCallback((error) => {
|
138
|
+
onError();
|
139
|
+
clearTimeout();
|
140
|
+
const newError = error instanceof CustomError
|
141
|
+
? error
|
142
|
+
: new CustomError('UNKNOWN_ERROR', 'Une erreur inattendue est survenue', error.message);
|
143
|
+
setError(newError);
|
144
|
+
// Appel du gestionnaire d'erreurs externe s'il est fourni
|
145
|
+
if (externalHandleError) {
|
146
|
+
externalHandleError(newError);
|
147
|
+
}
|
148
|
+
if (autoHideDelay > 0) {
|
149
|
+
timeoutRef.current = setTimeout(() => setError(null), autoHideDelay);
|
150
|
+
}
|
151
|
+
}, [autoHideDelay, externalHandleError, onError]);
|
152
|
+
const clearError = React.useCallback(() => {
|
153
|
+
clearTimeout();
|
154
|
+
setError(null);
|
155
|
+
}, []);
|
156
|
+
const contextValue = React.useMemo(() => ({
|
157
|
+
handleError,
|
158
|
+
error,
|
159
|
+
clearError
|
160
|
+
}), [handleError, error, clearError]);
|
161
|
+
return (React.createElement(ErrorContext.Provider, { value: contextValue },
|
162
|
+
React.createElement(ErrorBoundary, { handleError: handleError },
|
163
|
+
error && (React.createElement(ErrorComponent, { error: error, onClose: clearError, closeOnClick: closeErrorComponetOnClick, visiblityTime: autoHideDelay })),
|
164
|
+
children)));
|
165
|
+
};
|
166
|
+
// Hook personnalisé pour accéder au contexte d'erreur
|
167
|
+
const useError = () => {
|
168
|
+
const context = React.useContext(ErrorContext);
|
169
|
+
if (!context) {
|
170
|
+
throw new Error('useError doit être utilisé dans un ErrorProvider');
|
171
|
+
}
|
172
|
+
return context;
|
173
|
+
};
|
174
|
+
// Hook pour lancer une erreur personnalisée
|
175
|
+
const useThrowError = () => {
|
176
|
+
const { handleError } = useError();
|
177
|
+
return React.useCallback((code, message, description) => {
|
178
|
+
handleError(new CustomError(code, message, description));
|
179
|
+
}, [handleError]);
|
180
|
+
};
|
181
|
+
|
182
|
+
exports.CustomError = CustomError;
|
183
|
+
exports.DefaultErrorComponent = DefaultErrorComponent;
|
184
|
+
exports.ErrorBoundary = ErrorBoundary;
|
185
|
+
exports.ErrorProvider = ErrorProvider;
|
186
|
+
exports.useError = useError;
|
187
|
+
exports.useThrowError = useThrowError;
|
188
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/CustomError.ts","../../../src/ErrorBoundary.tsx","../../node_modules/style-inject/dist/style-inject.es.js","../../../src/components/DefaultErrorComponents.tsx","../../../src/ErrorContext.tsx"],"sourcesContent":[null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null],"names":["Component","useState","useRef","useCallback","useEffect","createContext","useContext"],"mappings":"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","x_google_ignoreList":[2]}
|
@@ -0,0 +1,181 @@
|
|
1
|
+
"use client";
|
2
|
+
import React, { Component, useState, useRef, useCallback, useEffect, createContext, useContext } from 'react';
|
3
|
+
|
4
|
+
class CustomError extends Error {
|
5
|
+
constructor(code, message, description) {
|
6
|
+
super(message);
|
7
|
+
this.code = code;
|
8
|
+
this.description = description;
|
9
|
+
this.name = 'CustomError';
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
// Composant de classe qui capture les erreurs React
|
14
|
+
class ErrorBoundaryComponent extends Component {
|
15
|
+
constructor(props) {
|
16
|
+
super(props);
|
17
|
+
this.state = { hasError: false };
|
18
|
+
}
|
19
|
+
// Appelé quand une erreur est détectée dans un composant enfant
|
20
|
+
static getDerivedStateFromError(error) {
|
21
|
+
return { hasError: true };
|
22
|
+
}
|
23
|
+
// Permet de logger l'erreur et d'exécuter du code de récupération
|
24
|
+
componentDidCatch(error, errorInfo) {
|
25
|
+
if (this.props.handleError) {
|
26
|
+
this.props.handleError(error);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
render() {
|
30
|
+
if (this.state.hasError) {
|
31
|
+
this.setState({ hasError: false });
|
32
|
+
return this.props.children;
|
33
|
+
}
|
34
|
+
return this.props.children;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
const ErrorBoundary = ({ children, handleError }) => {
|
38
|
+
return React.createElement(ErrorBoundaryComponent, { handleError: handleError }, children);
|
39
|
+
};
|
40
|
+
|
41
|
+
function styleInject(css, ref) {
|
42
|
+
if ( ref === void 0 ) ref = {};
|
43
|
+
var insertAt = ref.insertAt;
|
44
|
+
|
45
|
+
if (!css || typeof document === 'undefined') { return; }
|
46
|
+
|
47
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
48
|
+
var style = document.createElement('style');
|
49
|
+
style.type = 'text/css';
|
50
|
+
|
51
|
+
if (insertAt === 'top') {
|
52
|
+
if (head.firstChild) {
|
53
|
+
head.insertBefore(style, head.firstChild);
|
54
|
+
} else {
|
55
|
+
head.appendChild(style);
|
56
|
+
}
|
57
|
+
} else {
|
58
|
+
head.appendChild(style);
|
59
|
+
}
|
60
|
+
|
61
|
+
if (style.styleSheet) {
|
62
|
+
style.styleSheet.cssText = css;
|
63
|
+
} else {
|
64
|
+
style.appendChild(document.createTextNode(css));
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
var css_248z = ":root {\n --tsila-err-color: rgb(177, 34, 34);\n --tsila-err-bg: white;\n --tsila-err-shadow: rgba(65, 64, 64, 0.2);\n}\n\n#__tsila_err_container__ {\n background-color: var(--tsila-err-bg);\n min-height: 50px;\n padding: 12px 20px;\n border-radius: 8px;\n position: fixed;\n z-index: 10000;\n top: 15px;\n right: 15px;\n box-shadow: 0 4px 12px var(--tsila-err-shadow);\n color: var(--tsila-err-color);\n width: 320px;\n animation: __tsila_slide_in__ 0.3s ease-out;\n cursor: pointer;\n transition: all .3s;\n}\n\n#__tsila_err_header__ {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n#__tsila_code_error__ {\n font-size: 16px;\n font-weight: 700;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n#__tsila_close_button__ {\n background: none;\n border: none;\n color: var(--tsila-err-color);\n cursor: pointer;\n padding: 4px;\n font-size: 18px;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n#__tsila_close_button__:hover {\n opacity: 1;\n}\n\n#__tsila_message_error__ {\n color: #555;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n#__tsila_description_error__ {\n color: #777;\n font-size: 12px;\n opacity: 0.9;\n}\n\n@keyframes __tsila_slide_in__ {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes __tsila_fade_out__ {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n}\n\n#__tsila_err_container__.fade-out {\n animation: __tsila_fade_out__ 0.3s ease-in forwards;\n}";
|
69
|
+
styleInject(css_248z);
|
70
|
+
|
71
|
+
const DefaultErrorComponent = ({ error, onClose, closeOnClick = false, visiblityTime = 5000 }) => {
|
72
|
+
const [progress, setProgress] = useState(0);
|
73
|
+
const intervalRef = useRef(null);
|
74
|
+
const incrementProgress = useCallback(() => {
|
75
|
+
setProgress(prevProgress => {
|
76
|
+
const newProgress = prevProgress + (100 * 100 / visiblityTime);
|
77
|
+
if (newProgress >= 100) {
|
78
|
+
onClose();
|
79
|
+
return 100;
|
80
|
+
}
|
81
|
+
return newProgress;
|
82
|
+
});
|
83
|
+
}, [visiblityTime, onClose]);
|
84
|
+
useEffect(() => {
|
85
|
+
intervalRef.current = setInterval(incrementProgress, 100);
|
86
|
+
return () => {
|
87
|
+
if (intervalRef.current) {
|
88
|
+
clearInterval(intervalRef.current);
|
89
|
+
}
|
90
|
+
};
|
91
|
+
}, [incrementProgress]);
|
92
|
+
const onClick = () => {
|
93
|
+
if (closeOnClick) {
|
94
|
+
onClose();
|
95
|
+
}
|
96
|
+
};
|
97
|
+
return (React.createElement("div", { id: "__tsila_err_container__", onClick: onClick },
|
98
|
+
React.createElement("div", { id: "__tsila_err_header__" },
|
99
|
+
React.createElement("div", { id: "__tsila_code_error__" },
|
100
|
+
"\u26A0\uFE0F ",
|
101
|
+
error.code)),
|
102
|
+
React.createElement("div", { id: "__tsila_message_error__" }, error.message),
|
103
|
+
error.description && (React.createElement("div", { id: "__tsila_description_error__" }, error.description)),
|
104
|
+
React.createElement("div", { style: {
|
105
|
+
position: 'absolute',
|
106
|
+
bottom: 0,
|
107
|
+
right: 0,
|
108
|
+
height: '4px',
|
109
|
+
width: `${progress}%`,
|
110
|
+
backgroundColor: 'var(--tsila-err-color)',
|
111
|
+
transition: 'width 0.1s linear'
|
112
|
+
} })));
|
113
|
+
};
|
114
|
+
|
115
|
+
// Création du contexte avec une valeur par défaut
|
116
|
+
const ErrorContext = createContext({
|
117
|
+
handleError: () => { },
|
118
|
+
error: null,
|
119
|
+
clearError: () => { }
|
120
|
+
});
|
121
|
+
const ErrorProvider = ({ children, ErrorComponent = DefaultErrorComponent, autoHideDelay = 5000, onError = () => { }, closeErrorComponetOnClick = false, handleError: externalHandleError }) => {
|
122
|
+
const [error, setError] = useState(null);
|
123
|
+
const timeoutRef = useRef(null);
|
124
|
+
// Fonction de nettoyage du timeout
|
125
|
+
const clearTimeout = () => {
|
126
|
+
if (timeoutRef.current) {
|
127
|
+
window.clearTimeout(timeoutRef.current);
|
128
|
+
timeoutRef.current = null;
|
129
|
+
}
|
130
|
+
};
|
131
|
+
// Nettoyage du timeout lors du démontage du composant
|
132
|
+
React.useEffect(() => {
|
133
|
+
return () => clearTimeout();
|
134
|
+
}, []);
|
135
|
+
const handleError = React.useCallback((error) => {
|
136
|
+
onError();
|
137
|
+
clearTimeout();
|
138
|
+
const newError = error instanceof CustomError
|
139
|
+
? error
|
140
|
+
: new CustomError('UNKNOWN_ERROR', 'Une erreur inattendue est survenue', error.message);
|
141
|
+
setError(newError);
|
142
|
+
// Appel du gestionnaire d'erreurs externe s'il est fourni
|
143
|
+
if (externalHandleError) {
|
144
|
+
externalHandleError(newError);
|
145
|
+
}
|
146
|
+
if (autoHideDelay > 0) {
|
147
|
+
timeoutRef.current = setTimeout(() => setError(null), autoHideDelay);
|
148
|
+
}
|
149
|
+
}, [autoHideDelay, externalHandleError, onError]);
|
150
|
+
const clearError = React.useCallback(() => {
|
151
|
+
clearTimeout();
|
152
|
+
setError(null);
|
153
|
+
}, []);
|
154
|
+
const contextValue = React.useMemo(() => ({
|
155
|
+
handleError,
|
156
|
+
error,
|
157
|
+
clearError
|
158
|
+
}), [handleError, error, clearError]);
|
159
|
+
return (React.createElement(ErrorContext.Provider, { value: contextValue },
|
160
|
+
React.createElement(ErrorBoundary, { handleError: handleError },
|
161
|
+
error && (React.createElement(ErrorComponent, { error: error, onClose: clearError, closeOnClick: closeErrorComponetOnClick, visiblityTime: autoHideDelay })),
|
162
|
+
children)));
|
163
|
+
};
|
164
|
+
// Hook personnalisé pour accéder au contexte d'erreur
|
165
|
+
const useError = () => {
|
166
|
+
const context = useContext(ErrorContext);
|
167
|
+
if (!context) {
|
168
|
+
throw new Error('useError doit être utilisé dans un ErrorProvider');
|
169
|
+
}
|
170
|
+
return context;
|
171
|
+
};
|
172
|
+
// Hook pour lancer une erreur personnalisée
|
173
|
+
const useThrowError = () => {
|
174
|
+
const { handleError } = useError();
|
175
|
+
return React.useCallback((code, message, description) => {
|
176
|
+
handleError(new CustomError(code, message, description));
|
177
|
+
}, [handleError]);
|
178
|
+
};
|
179
|
+
|
180
|
+
export { CustomError, DefaultErrorComponent, ErrorBoundary, ErrorProvider, useError, useThrowError };
|
181
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/CustomError.ts","../../../src/ErrorBoundary.tsx","../../node_modules/style-inject/dist/style-inject.es.js","../../../src/components/DefaultErrorComponents.tsx","../../../src/ErrorContext.tsx"],"sourcesContent":[null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null],"names":[],"mappings":"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","x_google_ignoreList":[2]}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { CustomError } from './CustomError';
|
3
|
+
import { ErrorComponentType } from './components/DefaultErrorComponents';
|
4
|
+
interface ContextType {
|
5
|
+
handleError: (error: Error) => void;
|
6
|
+
error: CustomError | null;
|
7
|
+
clearError: () => void;
|
8
|
+
}
|
9
|
+
interface ErrorProviderProps {
|
10
|
+
children: React.ReactNode;
|
11
|
+
ErrorComponent?: React.ComponentType<ErrorComponentType>;
|
12
|
+
autoHideDelay?: number;
|
13
|
+
onError?: () => void;
|
14
|
+
closeErrorComponetOnClick?: boolean;
|
15
|
+
handleError?: (error: Error) => void;
|
16
|
+
}
|
17
|
+
export declare const ErrorProvider: React.FC<ErrorProviderProps>;
|
18
|
+
export declare const useError: () => ContextType;
|
19
|
+
export declare const useThrowError: () => (code: string, message: string, description: string) => void;
|
20
|
+
export {};
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import './style.css';
|
3
|
+
export interface ErrorComponentType {
|
4
|
+
error: {
|
5
|
+
code: string;
|
6
|
+
message: string;
|
7
|
+
description?: string;
|
8
|
+
};
|
9
|
+
onClose: () => void;
|
10
|
+
closeOnClick?: boolean;
|
11
|
+
visiblityTime?: number;
|
12
|
+
}
|
13
|
+
export declare const DefaultErrorComponent: React.FC<ErrorComponentType>;
|
14
|
+
export default DefaultErrorComponent;
|
@@ -0,0 +1,187 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var React = require('react');
|
4
|
+
|
5
|
+
class CustomError extends Error {
|
6
|
+
constructor(code, message, description) {
|
7
|
+
super(message);
|
8
|
+
this.code = code;
|
9
|
+
this.description = description;
|
10
|
+
this.name = 'CustomError';
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
// Composant de classe qui capture les erreurs React
|
15
|
+
class ErrorBoundaryComponent extends React.Component {
|
16
|
+
constructor(props) {
|
17
|
+
super(props);
|
18
|
+
this.state = { hasError: false };
|
19
|
+
}
|
20
|
+
// Appelé quand une erreur est détectée dans un composant enfant
|
21
|
+
static getDerivedStateFromError(error) {
|
22
|
+
return { hasError: true };
|
23
|
+
}
|
24
|
+
// Permet de logger l'erreur et d'exécuter du code de récupération
|
25
|
+
componentDidCatch(error, errorInfo) {
|
26
|
+
if (this.props.handleError) {
|
27
|
+
this.props.handleError(error);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
render() {
|
31
|
+
if (this.state.hasError) {
|
32
|
+
this.setState({ hasError: false });
|
33
|
+
return this.props.children;
|
34
|
+
}
|
35
|
+
return this.props.children;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
const ErrorBoundary = ({ children, handleError }) => {
|
39
|
+
return React.createElement(ErrorBoundaryComponent, { handleError: handleError }, children);
|
40
|
+
};
|
41
|
+
|
42
|
+
function styleInject(css, ref) {
|
43
|
+
if ( ref === void 0 ) ref = {};
|
44
|
+
var insertAt = ref.insertAt;
|
45
|
+
|
46
|
+
if (!css || typeof document === 'undefined') { return; }
|
47
|
+
|
48
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
49
|
+
var style = document.createElement('style');
|
50
|
+
style.type = 'text/css';
|
51
|
+
|
52
|
+
if (insertAt === 'top') {
|
53
|
+
if (head.firstChild) {
|
54
|
+
head.insertBefore(style, head.firstChild);
|
55
|
+
} else {
|
56
|
+
head.appendChild(style);
|
57
|
+
}
|
58
|
+
} else {
|
59
|
+
head.appendChild(style);
|
60
|
+
}
|
61
|
+
|
62
|
+
if (style.styleSheet) {
|
63
|
+
style.styleSheet.cssText = css;
|
64
|
+
} else {
|
65
|
+
style.appendChild(document.createTextNode(css));
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
var css_248z = ":root {\n --tsila-err-color: rgb(177, 34, 34);\n --tsila-err-bg: white;\n --tsila-err-shadow: rgba(65, 64, 64, 0.2);\n}\n\n#__tsila_err_container__ {\n background-color: var(--tsila-err-bg);\n min-height: 50px;\n padding: 12px 20px;\n border-radius: 8px;\n position: fixed;\n z-index: 10000;\n top: 15px;\n right: 15px;\n box-shadow: 0 4px 12px var(--tsila-err-shadow);\n color: var(--tsila-err-color);\n width: 320px;\n animation: __tsila_slide_in__ 0.3s ease-out;\n cursor: pointer;\n transition: all .3s;\n}\n\n#__tsila_err_header__ {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n#__tsila_code_error__ {\n font-size: 16px;\n font-weight: 700;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n#__tsila_close_button__ {\n background: none;\n border: none;\n color: var(--tsila-err-color);\n cursor: pointer;\n padding: 4px;\n font-size: 18px;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n#__tsila_close_button__:hover {\n opacity: 1;\n}\n\n#__tsila_message_error__ {\n color: #555;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n#__tsila_description_error__ {\n color: #777;\n font-size: 12px;\n opacity: 0.9;\n}\n\n@keyframes __tsila_slide_in__ {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes __tsila_fade_out__ {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n}\n\n#__tsila_err_container__.fade-out {\n animation: __tsila_fade_out__ 0.3s ease-in forwards;\n}";
|
70
|
+
styleInject(css_248z);
|
71
|
+
|
72
|
+
const DefaultErrorComponent = ({ error, onClose, closeOnClick = false, visiblityTime = 5000 }) => {
|
73
|
+
const [progress, setProgress] = React.useState(0);
|
74
|
+
const intervalRef = React.useRef(null);
|
75
|
+
const incrementProgress = React.useCallback(() => {
|
76
|
+
setProgress(prevProgress => {
|
77
|
+
const newProgress = prevProgress + (100 * 100 / visiblityTime);
|
78
|
+
if (newProgress >= 100) {
|
79
|
+
onClose();
|
80
|
+
return 100;
|
81
|
+
}
|
82
|
+
return newProgress;
|
83
|
+
});
|
84
|
+
}, [visiblityTime, onClose]);
|
85
|
+
React.useEffect(() => {
|
86
|
+
intervalRef.current = setInterval(incrementProgress, 100);
|
87
|
+
return () => {
|
88
|
+
if (intervalRef.current) {
|
89
|
+
clearInterval(intervalRef.current);
|
90
|
+
}
|
91
|
+
};
|
92
|
+
}, [incrementProgress]);
|
93
|
+
const onClick = () => {
|
94
|
+
if (closeOnClick) {
|
95
|
+
onClose();
|
96
|
+
}
|
97
|
+
};
|
98
|
+
return (React.createElement("div", { id: "__tsila_err_container__", onClick: onClick },
|
99
|
+
React.createElement("div", { id: "__tsila_err_header__" },
|
100
|
+
React.createElement("div", { id: "__tsila_code_error__" },
|
101
|
+
"\u26A0\uFE0F ",
|
102
|
+
error.code)),
|
103
|
+
React.createElement("div", { id: "__tsila_message_error__" }, error.message),
|
104
|
+
error.description && (React.createElement("div", { id: "__tsila_description_error__" }, error.description)),
|
105
|
+
React.createElement("div", { style: {
|
106
|
+
position: 'absolute',
|
107
|
+
bottom: 0,
|
108
|
+
right: 0,
|
109
|
+
height: '4px',
|
110
|
+
width: `${progress}%`,
|
111
|
+
backgroundColor: 'var(--tsila-err-color)',
|
112
|
+
transition: 'width 0.1s linear'
|
113
|
+
} })));
|
114
|
+
};
|
115
|
+
|
116
|
+
// Création du contexte avec une valeur par défaut
|
117
|
+
const ErrorContext = React.createContext({
|
118
|
+
handleError: () => { },
|
119
|
+
error: null,
|
120
|
+
clearError: () => { }
|
121
|
+
});
|
122
|
+
const ErrorProvider = ({ children, ErrorComponent = DefaultErrorComponent, autoHideDelay = 5000, onError = () => { }, closeErrorComponetOnClick = false, handleError: externalHandleError }) => {
|
123
|
+
const [error, setError] = React.useState(null);
|
124
|
+
const timeoutRef = React.useRef(null);
|
125
|
+
// Fonction de nettoyage du timeout
|
126
|
+
const clearTimeout = () => {
|
127
|
+
if (timeoutRef.current) {
|
128
|
+
window.clearTimeout(timeoutRef.current);
|
129
|
+
timeoutRef.current = null;
|
130
|
+
}
|
131
|
+
};
|
132
|
+
// Nettoyage du timeout lors du démontage du composant
|
133
|
+
React.useEffect(() => {
|
134
|
+
return () => clearTimeout();
|
135
|
+
}, []);
|
136
|
+
const handleError = React.useCallback((error) => {
|
137
|
+
onError();
|
138
|
+
clearTimeout();
|
139
|
+
const newError = error instanceof CustomError
|
140
|
+
? error
|
141
|
+
: new CustomError('UNKNOWN_ERROR', 'Une erreur inattendue est survenue', error.message);
|
142
|
+
setError(newError);
|
143
|
+
// Appel du gestionnaire d'erreurs externe s'il est fourni
|
144
|
+
if (externalHandleError) {
|
145
|
+
externalHandleError(newError);
|
146
|
+
}
|
147
|
+
if (autoHideDelay > 0) {
|
148
|
+
timeoutRef.current = setTimeout(() => setError(null), autoHideDelay);
|
149
|
+
}
|
150
|
+
}, [autoHideDelay, externalHandleError, onError]);
|
151
|
+
const clearError = React.useCallback(() => {
|
152
|
+
clearTimeout();
|
153
|
+
setError(null);
|
154
|
+
}, []);
|
155
|
+
const contextValue = React.useMemo(() => ({
|
156
|
+
handleError,
|
157
|
+
error,
|
158
|
+
clearError
|
159
|
+
}), [handleError, error, clearError]);
|
160
|
+
return (React.createElement(ErrorContext.Provider, { value: contextValue },
|
161
|
+
React.createElement(ErrorBoundary, { handleError: handleError },
|
162
|
+
error && (React.createElement(ErrorComponent, { error: error, onClose: clearError, closeOnClick: closeErrorComponetOnClick, visiblityTime: autoHideDelay })),
|
163
|
+
children)));
|
164
|
+
};
|
165
|
+
// Hook personnalisé pour accéder au contexte d'erreur
|
166
|
+
const useError = () => {
|
167
|
+
const context = React.useContext(ErrorContext);
|
168
|
+
if (!context) {
|
169
|
+
throw new Error('useError doit être utilisé dans un ErrorProvider');
|
170
|
+
}
|
171
|
+
return context;
|
172
|
+
};
|
173
|
+
// Hook pour lancer une erreur personnalisée
|
174
|
+
const useThrowError = () => {
|
175
|
+
const { handleError } = useError();
|
176
|
+
return React.useCallback((code, message, description) => {
|
177
|
+
handleError(new CustomError(code, message, description));
|
178
|
+
}, [handleError]);
|
179
|
+
};
|
180
|
+
|
181
|
+
exports.CustomError = CustomError;
|
182
|
+
exports.DefaultErrorComponent = DefaultErrorComponent;
|
183
|
+
exports.ErrorBoundary = ErrorBoundary;
|
184
|
+
exports.ErrorProvider = ErrorProvider;
|
185
|
+
exports.useError = useError;
|
186
|
+
exports.useThrowError = useThrowError;
|
187
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/CustomError.ts","../../../src/ErrorBoundary.tsx","../../node_modules/style-inject/dist/style-inject.es.js","../../../src/components/DefaultErrorComponents.tsx","../../../src/ErrorContext.tsx"],"sourcesContent":[null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null],"names":["Component","useState","useRef","useCallback","useEffect","createContext","useContext"],"mappings":"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","x_google_ignoreList":[2]}
|
@@ -0,0 +1,180 @@
|
|
1
|
+
import React, { Component, useState, useRef, useCallback, useEffect, createContext, useContext } from 'react';
|
2
|
+
|
3
|
+
class CustomError extends Error {
|
4
|
+
constructor(code, message, description) {
|
5
|
+
super(message);
|
6
|
+
this.code = code;
|
7
|
+
this.description = description;
|
8
|
+
this.name = 'CustomError';
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
// Composant de classe qui capture les erreurs React
|
13
|
+
class ErrorBoundaryComponent extends Component {
|
14
|
+
constructor(props) {
|
15
|
+
super(props);
|
16
|
+
this.state = { hasError: false };
|
17
|
+
}
|
18
|
+
// Appelé quand une erreur est détectée dans un composant enfant
|
19
|
+
static getDerivedStateFromError(error) {
|
20
|
+
return { hasError: true };
|
21
|
+
}
|
22
|
+
// Permet de logger l'erreur et d'exécuter du code de récupération
|
23
|
+
componentDidCatch(error, errorInfo) {
|
24
|
+
if (this.props.handleError) {
|
25
|
+
this.props.handleError(error);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
render() {
|
29
|
+
if (this.state.hasError) {
|
30
|
+
this.setState({ hasError: false });
|
31
|
+
return this.props.children;
|
32
|
+
}
|
33
|
+
return this.props.children;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
const ErrorBoundary = ({ children, handleError }) => {
|
37
|
+
return React.createElement(ErrorBoundaryComponent, { handleError: handleError }, children);
|
38
|
+
};
|
39
|
+
|
40
|
+
function styleInject(css, ref) {
|
41
|
+
if ( ref === void 0 ) ref = {};
|
42
|
+
var insertAt = ref.insertAt;
|
43
|
+
|
44
|
+
if (!css || typeof document === 'undefined') { return; }
|
45
|
+
|
46
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
47
|
+
var style = document.createElement('style');
|
48
|
+
style.type = 'text/css';
|
49
|
+
|
50
|
+
if (insertAt === 'top') {
|
51
|
+
if (head.firstChild) {
|
52
|
+
head.insertBefore(style, head.firstChild);
|
53
|
+
} else {
|
54
|
+
head.appendChild(style);
|
55
|
+
}
|
56
|
+
} else {
|
57
|
+
head.appendChild(style);
|
58
|
+
}
|
59
|
+
|
60
|
+
if (style.styleSheet) {
|
61
|
+
style.styleSheet.cssText = css;
|
62
|
+
} else {
|
63
|
+
style.appendChild(document.createTextNode(css));
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
var css_248z = ":root {\n --tsila-err-color: rgb(177, 34, 34);\n --tsila-err-bg: white;\n --tsila-err-shadow: rgba(65, 64, 64, 0.2);\n}\n\n#__tsila_err_container__ {\n background-color: var(--tsila-err-bg);\n min-height: 50px;\n padding: 12px 20px;\n border-radius: 8px;\n position: fixed;\n z-index: 10000;\n top: 15px;\n right: 15px;\n box-shadow: 0 4px 12px var(--tsila-err-shadow);\n color: var(--tsila-err-color);\n width: 320px;\n animation: __tsila_slide_in__ 0.3s ease-out;\n cursor: pointer;\n transition: all .3s;\n}\n\n#__tsila_err_header__ {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n#__tsila_code_error__ {\n font-size: 16px;\n font-weight: 700;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n#__tsila_close_button__ {\n background: none;\n border: none;\n color: var(--tsila-err-color);\n cursor: pointer;\n padding: 4px;\n font-size: 18px;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n#__tsila_close_button__:hover {\n opacity: 1;\n}\n\n#__tsila_message_error__ {\n color: #555;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n#__tsila_description_error__ {\n color: #777;\n font-size: 12px;\n opacity: 0.9;\n}\n\n@keyframes __tsila_slide_in__ {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes __tsila_fade_out__ {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n}\n\n#__tsila_err_container__.fade-out {\n animation: __tsila_fade_out__ 0.3s ease-in forwards;\n}";
|
68
|
+
styleInject(css_248z);
|
69
|
+
|
70
|
+
const DefaultErrorComponent = ({ error, onClose, closeOnClick = false, visiblityTime = 5000 }) => {
|
71
|
+
const [progress, setProgress] = useState(0);
|
72
|
+
const intervalRef = useRef(null);
|
73
|
+
const incrementProgress = useCallback(() => {
|
74
|
+
setProgress(prevProgress => {
|
75
|
+
const newProgress = prevProgress + (100 * 100 / visiblityTime);
|
76
|
+
if (newProgress >= 100) {
|
77
|
+
onClose();
|
78
|
+
return 100;
|
79
|
+
}
|
80
|
+
return newProgress;
|
81
|
+
});
|
82
|
+
}, [visiblityTime, onClose]);
|
83
|
+
useEffect(() => {
|
84
|
+
intervalRef.current = setInterval(incrementProgress, 100);
|
85
|
+
return () => {
|
86
|
+
if (intervalRef.current) {
|
87
|
+
clearInterval(intervalRef.current);
|
88
|
+
}
|
89
|
+
};
|
90
|
+
}, [incrementProgress]);
|
91
|
+
const onClick = () => {
|
92
|
+
if (closeOnClick) {
|
93
|
+
onClose();
|
94
|
+
}
|
95
|
+
};
|
96
|
+
return (React.createElement("div", { id: "__tsila_err_container__", onClick: onClick },
|
97
|
+
React.createElement("div", { id: "__tsila_err_header__" },
|
98
|
+
React.createElement("div", { id: "__tsila_code_error__" },
|
99
|
+
"\u26A0\uFE0F ",
|
100
|
+
error.code)),
|
101
|
+
React.createElement("div", { id: "__tsila_message_error__" }, error.message),
|
102
|
+
error.description && (React.createElement("div", { id: "__tsila_description_error__" }, error.description)),
|
103
|
+
React.createElement("div", { style: {
|
104
|
+
position: 'absolute',
|
105
|
+
bottom: 0,
|
106
|
+
right: 0,
|
107
|
+
height: '4px',
|
108
|
+
width: `${progress}%`,
|
109
|
+
backgroundColor: 'var(--tsila-err-color)',
|
110
|
+
transition: 'width 0.1s linear'
|
111
|
+
} })));
|
112
|
+
};
|
113
|
+
|
114
|
+
// Création du contexte avec une valeur par défaut
|
115
|
+
const ErrorContext = createContext({
|
116
|
+
handleError: () => { },
|
117
|
+
error: null,
|
118
|
+
clearError: () => { }
|
119
|
+
});
|
120
|
+
const ErrorProvider = ({ children, ErrorComponent = DefaultErrorComponent, autoHideDelay = 5000, onError = () => { }, closeErrorComponetOnClick = false, handleError: externalHandleError }) => {
|
121
|
+
const [error, setError] = useState(null);
|
122
|
+
const timeoutRef = useRef(null);
|
123
|
+
// Fonction de nettoyage du timeout
|
124
|
+
const clearTimeout = () => {
|
125
|
+
if (timeoutRef.current) {
|
126
|
+
window.clearTimeout(timeoutRef.current);
|
127
|
+
timeoutRef.current = null;
|
128
|
+
}
|
129
|
+
};
|
130
|
+
// Nettoyage du timeout lors du démontage du composant
|
131
|
+
React.useEffect(() => {
|
132
|
+
return () => clearTimeout();
|
133
|
+
}, []);
|
134
|
+
const handleError = React.useCallback((error) => {
|
135
|
+
onError();
|
136
|
+
clearTimeout();
|
137
|
+
const newError = error instanceof CustomError
|
138
|
+
? error
|
139
|
+
: new CustomError('UNKNOWN_ERROR', 'Une erreur inattendue est survenue', error.message);
|
140
|
+
setError(newError);
|
141
|
+
// Appel du gestionnaire d'erreurs externe s'il est fourni
|
142
|
+
if (externalHandleError) {
|
143
|
+
externalHandleError(newError);
|
144
|
+
}
|
145
|
+
if (autoHideDelay > 0) {
|
146
|
+
timeoutRef.current = setTimeout(() => setError(null), autoHideDelay);
|
147
|
+
}
|
148
|
+
}, [autoHideDelay, externalHandleError, onError]);
|
149
|
+
const clearError = React.useCallback(() => {
|
150
|
+
clearTimeout();
|
151
|
+
setError(null);
|
152
|
+
}, []);
|
153
|
+
const contextValue = React.useMemo(() => ({
|
154
|
+
handleError,
|
155
|
+
error,
|
156
|
+
clearError
|
157
|
+
}), [handleError, error, clearError]);
|
158
|
+
return (React.createElement(ErrorContext.Provider, { value: contextValue },
|
159
|
+
React.createElement(ErrorBoundary, { handleError: handleError },
|
160
|
+
error && (React.createElement(ErrorComponent, { error: error, onClose: clearError, closeOnClick: closeErrorComponetOnClick, visiblityTime: autoHideDelay })),
|
161
|
+
children)));
|
162
|
+
};
|
163
|
+
// Hook personnalisé pour accéder au contexte d'erreur
|
164
|
+
const useError = () => {
|
165
|
+
const context = useContext(ErrorContext);
|
166
|
+
if (!context) {
|
167
|
+
throw new Error('useError doit être utilisé dans un ErrorProvider');
|
168
|
+
}
|
169
|
+
return context;
|
170
|
+
};
|
171
|
+
// Hook pour lancer une erreur personnalisée
|
172
|
+
const useThrowError = () => {
|
173
|
+
const { handleError } = useError();
|
174
|
+
return React.useCallback((code, message, description) => {
|
175
|
+
handleError(new CustomError(code, message, description));
|
176
|
+
}, [handleError]);
|
177
|
+
};
|
178
|
+
|
179
|
+
export { CustomError, DefaultErrorComponent, ErrorBoundary, ErrorProvider, useError, useThrowError };
|
180
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/CustomError.ts","../../../src/ErrorBoundary.tsx","../../node_modules/style-inject/dist/style-inject.es.js","../../../src/components/DefaultErrorComponents.tsx","../../../src/ErrorContext.tsx"],"sourcesContent":[null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null],"names":[],"mappings":"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","x_google_ignoreList":[2]}
|