import React, { useMemo, useState, useLayoutEffect } from 'react';
/**
`<Static>` component permanently renders its output above everything else. It's useful for displaying activity like completed tasks or logs—things that don't change after they're rendered (hence the name "Static").

It's preferred to use `<Static>` for use cases like these when you can't know or control the number of items that need to be rendered.

For example, [Tap](https://github.com/tapjs/node-tap) uses `<Static>` to display a list of completed tests. [Gatsby](https://github.com/gatsbyjs/gatsby) uses it to display a list of generated pages while still displaying a live progress bar.
*/
export default function Static(props) {
    const { items, children: render, style: customStyle } = props;
    const [index, setIndex] = useState(0);
    const itemsToRender = useMemo(() => {
        return items.slice(index);
    }, [items, index]);
    useLayoutEffect(() => {
        setIndex(items.length);
    }, [items.length]);
    // eslint-disable-next-line @typescript-eslint/promise-function-async
    const children = itemsToRender.map((item, itemIndex) => {
        return render(item, index + itemIndex);
    });
    const style = useMemo(() => ({
        position: 'absolute',
        flexDirection: 'column',
        ...customStyle,
    }), [customStyle]);
    return (React.createElement("ink-box", { internal_static: true, style: style }, children));
}
//# sourceMappingURL=Static.js.map