react-simple-loadable 2.1.0 → 2.3.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.
- package/loadable.d.ts +8 -1
- package/loadable.d.ts.map +1 -1
- package/loadable.js +19 -4
- package/package.json +2 -2
package/loadable.d.ts
CHANGED
|
@@ -4,14 +4,21 @@ export type LoadableMixin = {
|
|
|
4
4
|
preload(): void;
|
|
5
5
|
};
|
|
6
6
|
export type LoadableComponent<P = Record<string, any>> = ComponentType<P> & LoadableMixin;
|
|
7
|
+
export interface LoaderComponentProps {
|
|
8
|
+
error?: any;
|
|
9
|
+
isLoading?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type LoaderComponent = ComponentType<LoaderComponentProps>;
|
|
7
12
|
export interface LoadableConfig {
|
|
8
|
-
|
|
13
|
+
throwOnError?: boolean;
|
|
14
|
+
loader?: LoaderComponent;
|
|
9
15
|
/**
|
|
10
16
|
* Component which renders with the lazy component
|
|
11
17
|
*/
|
|
12
18
|
extra?: ComponentType<any>;
|
|
13
19
|
}
|
|
14
20
|
type LoadableComponent$<P> = LoadableComponent<P>;
|
|
21
|
+
export declare const loadableDefaultConfig: Partial<LoadableConfig>;
|
|
15
22
|
export declare function loadable<P = any>(loadFn: LoadComponentFn<P>, loaderOrConfig?: null | undefined | LoadableConfig['loader'] | LoadableConfig): LoadableComponent$<P>;
|
|
16
23
|
export {};
|
|
17
24
|
//# sourceMappingURL=loadable.d.ts.map
|
package/loadable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadable.d.ts","sourceRoot":"","sources":["../src/loadable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,OAAO,CAClE,aAAa,CAAC,CAAC,CAAC,CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GACvE,aAAa,CAAC;AAIhB,MAAM,WAAW,cAAc;IAC7B,
|
|
1
|
+
{"version":3,"file":"loadable.d.ts","sourceRoot":"","sources":["../src/loadable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,OAAO,CAClE,aAAa,CAAC,CAAC,CAAC,CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GACvE,aAAa,CAAC;AAIhB,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5B;AAoID,KAAK,kBAAkB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,cAAc,CAEzD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAC9B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAC1B,cAAc,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,GAC5E,kBAAkB,CAAC,CAAC,CAAC,CAqBvB"}
|
package/loadable.js
CHANGED
|
@@ -63,10 +63,22 @@ class LoadableComponentBase extends Component {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
render() {
|
|
66
|
-
const { loader } = this.config;
|
|
66
|
+
const { loader, throwOnError } = this.config;
|
|
67
67
|
const Loader = loader || DefaultLoader;
|
|
68
|
+
if (throwOnError && this.state.error) {
|
|
69
|
+
throw this.state.error;
|
|
70
|
+
}
|
|
68
71
|
if (this.state.loading || this.state.error) {
|
|
69
|
-
|
|
72
|
+
const loaderProps = {
|
|
73
|
+
...this.props,
|
|
74
|
+
};
|
|
75
|
+
if (this.state.error) {
|
|
76
|
+
loaderProps.error = this.state.error;
|
|
77
|
+
}
|
|
78
|
+
else if (!loaderProps.isLoading) {
|
|
79
|
+
loaderProps.isLoading = true;
|
|
80
|
+
}
|
|
81
|
+
return _jsx(Loader, { ...loaderProps });
|
|
70
82
|
}
|
|
71
83
|
else if (this.state.result) {
|
|
72
84
|
const Component = this.state.result;
|
|
@@ -78,10 +90,13 @@ class LoadableComponentBase extends Component {
|
|
|
78
90
|
}
|
|
79
91
|
}
|
|
80
92
|
}
|
|
93
|
+
export const loadableDefaultConfig = {
|
|
94
|
+
throwOnError: false,
|
|
95
|
+
};
|
|
81
96
|
export function loadable(loadFn, loaderOrConfig) {
|
|
82
97
|
const config = typeof loaderOrConfig === 'object'
|
|
83
|
-
? loaderOrConfig
|
|
84
|
-
: { loader: loaderOrConfig };
|
|
98
|
+
? { ...loadableDefaultConfig, ...loaderOrConfig }
|
|
99
|
+
: { ...loadableDefaultConfig, loader: loaderOrConfig };
|
|
85
100
|
class LoadableComponent extends LoadableComponentBase {
|
|
86
101
|
static loadFn = loadFn;
|
|
87
102
|
constructor(props) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-simple-loadable",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Really simple React Loadable component",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"type": "module",
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"react": "^18.
|
|
20
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/react": "^18.3.18",
|