@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
43 lines • 1.71 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import React, { useEffect, useState } from 'react';
const getCustomFlag = (flagName) => {
var _a;
const flagHolder = typeof window !== 'undefined' ? window : globalThis;
const awsuiCustomFlagsSymbol = Symbol.for('awsui-custom-flags');
return (_a = flagHolder === null || flagHolder === void 0 ? void 0 : flagHolder[awsuiCustomFlagsSymbol]) === null || _a === void 0 ? void 0 : _a[flagName];
};
const isAppLayoutDelayedWidget = () => {
return !!getCustomFlag('appLayoutDelayedWidget');
};
const enableDelayedComponents = isAppLayoutDelayedWidget();
let loadPromise;
export function createLoadableComponent(Component) {
if (!enableDelayedComponents) {
return;
}
return ((props) => {
const [mounted, setMounted] = useState(false);
useEffect(() => {
if (!loadPromise) {
loadPromise = new Promise(resolve => setTimeout(() => resolve(), 1000));
}
let mounted = true;
loadPromise.then(() => {
if (mounted) {
setMounted(true);
}
});
return () => {
mounted = false;
};
}, []);
if (mounted) {
return React.createElement(Component, { ...props });
}
// this prop is injected in `createWidgetizedComponent` and is not a part of the component signature
const { Skeleton } = props;
return Skeleton ? React.createElement(Skeleton, { ...props }) : React.createElement("div", null);
});
}
//# sourceMappingURL=loader-mock.js.map