react-simple-loadable 3.0.0 → 3.1.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 +7 -0
- package/loadable.d.ts.map +1 -1
- package/loadable.js +19 -4
- package/package.json +1 -1
package/loadable.d.ts
CHANGED
|
@@ -38,6 +38,13 @@ export interface LoadableConfig {
|
|
|
38
38
|
* Component which renders with the lazy component
|
|
39
39
|
*/
|
|
40
40
|
extra?: ComponentType<any>;
|
|
41
|
+
/**
|
|
42
|
+
* Use cache for input import functions
|
|
43
|
+
* @example
|
|
44
|
+
* const Comp = loadable(() => import().then(m => m));
|
|
45
|
+
* // cached Comp by `'() => import().then(m => m)'`
|
|
46
|
+
*/
|
|
47
|
+
cache?: boolean | string;
|
|
41
48
|
}
|
|
42
49
|
export interface LoadableConfigWithLoad<P = any> extends LoadableConfig {
|
|
43
50
|
load: LoadComponentFn<P>;
|
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,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,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,CAAC,CACxD,KAAK,EAAE,CAAC,KACL,SAAS,CAAC,GACb,aAAa,CAAC;AAIhB,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"loadable.d.ts","sourceRoot":"","sources":["../src/loadable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,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,CAAC,CACxD,KAAK,EAAE,CAAC,KACL,SAAS,CAAC,GACb,aAAa,CAAC;AAIhB,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAIhE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc;IACrE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAC1B;AAiID,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,sBAAsB,CAAC,CAAC,CAAC,GAChC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzB,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAC9B,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EACxB,eAAe,CAAC,EACZ,IAAI,GACJ,SAAS,GACT,cAAc,CAAC,SAAS,CAAC,GACzB,cAAc,GACjB,kBAAkB,CAAC,CAAC,CAAC,CAAC"}
|
package/loadable.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Component } from 'react';
|
|
3
3
|
const DefaultLoadingComponent = () => null;
|
|
4
|
+
const componentsCache = new Map();
|
|
4
5
|
const loadingStates = new WeakMap();
|
|
5
6
|
const getLoadingState = (loadFn, modify) => {
|
|
6
7
|
if (!loadingStates.has(loadFn)) {
|
|
@@ -113,12 +114,26 @@ export function loadable(...args) {
|
|
|
113
114
|
Object.assign(config, args[1] || {});
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
let cacheKey;
|
|
118
|
+
if (config.cache) {
|
|
119
|
+
cacheKey =
|
|
120
|
+
typeof config.cache === 'string' ? config.cache : config.load.toString();
|
|
121
|
+
}
|
|
122
|
+
let LoadableComponent;
|
|
123
|
+
if (!cacheKey || !componentsCache.has(cacheKey)) {
|
|
124
|
+
LoadableComponent = class LoadableComponent extends (LoadableComponentBase) {
|
|
125
|
+
static loadFn = config.load;
|
|
126
|
+
constructor(props) {
|
|
127
|
+
super(config, props);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
if (cacheKey) {
|
|
131
|
+
componentsCache.set(cacheKey, LoadableComponent);
|
|
120
132
|
}
|
|
121
133
|
}
|
|
134
|
+
else if (cacheKey) {
|
|
135
|
+
LoadableComponent = componentsCache.get(cacheKey);
|
|
136
|
+
}
|
|
122
137
|
if (config.preload) {
|
|
123
138
|
LoadableComponent.preload();
|
|
124
139
|
}
|