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

40 lines 1.76 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React, { useEffect, useRef, useState } from 'react'; function RuntimeActionWrapper({ mountContent, updateContent, unmountContent, context }) { const ref = useRef(null); const mountedRef = useRef(false); useEffect(() => { if (mountedRef.current && ref.current) { updateContent === null || updateContent === void 0 ? void 0 : updateContent(ref.current, context); } }); useEffect(() => { const container = ref.current; mountContent(container, context); mountedRef.current = true; return () => { mountedRef.current = false; unmountContent(container); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return React.createElement("div", { ref: ref }); } export function createUseDiscoveredAction(onActionRegistered) { return function useDiscoveredAction(type) { const [actionConfigs, setActionConfigs] = useState([]); const headerRef = useRef(null); const contentRef = useRef(null); useEffect(() => { return onActionRegistered(actions => setActionConfigs(actions)); }, [type]); const discoveredActions = actionConfigs.map(action => (React.createElement(RuntimeActionWrapper, { key: action.id + '-' + type, context: { type, headerRef, contentRef, }, mountContent: action.mountContent, updateContent: action.updateContent, unmountContent: action.unmountContent }))); return { discoveredActions, headerRef, contentRef }; }; } //# sourceMappingURL=use-discovered-action.js.map