@furystack/shades
Version:
Google Authentication Provider for FuryStack
46 lines • 1.47 kB
JavaScript
import { Shade } from '../shade.js';
export const LazyLoad = Shade({
shadowDomName: 'lazy-load',
constructed: async ({ props, useState, element }) => {
const [_component, setComponent] = useState('component', undefined);
const [_errorState, setErrorState] = useState('error', undefined);
try {
const loaded = await props.component();
if (element.isConnected) {
setComponent(loaded);
}
}
catch (error) {
if (props.error) {
if (element.isConnected) {
setErrorState(error);
}
}
else {
throw error;
}
}
},
render: ({ props, useState }) => {
const [error, setError] = useState('error', undefined);
const [component, setComponent] = useState('component', undefined);
if (error && props.error) {
return props.error(error, async () => {
try {
setError(undefined);
setComponent(undefined);
const loaded = await props.component();
setComponent(loaded);
}
catch (e) {
setError(e);
}
});
}
if (component) {
return component;
}
return props.loader;
},
});
//# sourceMappingURL=lazy-load.js.map