UNPKG

@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
// 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