var __rest = (this && this.__rest) || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
};
import React, { Children, useEffect } from 'react';
import { createTeleporter } from 'react-teleporter';
import { useShellStore } from '../../stores/shellStore';
const SubHeaderActions = createTeleporter({
    multiSources: true
});
/**
 * @param {any} props
 */
export function SubHeaderActionsTarget(props) {
    return React.createElement(SubHeaderActions.Target, Object.assign({}, props));
}
/**
 * Places a button in the App SubHeader
 */
export const SubHeaderAction = (props) => {
    const { children, className } = props, buttonProps = __rest(props, ["children", "className"]);
    const setSubHeaderActionHasChildren = useShellStore((state) => state.setSubHeaderActionHasChildren);
    // 1. Derive the primitive boolean value first
    const hasChildren = Children.count(children) > 0;
    useEffect(() => {
        // 2. Only run when the *status* changes, not the children object itself
        setSubHeaderActionHasChildren(hasChildren);
    }, [hasChildren, setSubHeaderActionHasChildren]);
    return React.createElement(SubHeaderActions.Source, null, children);
};
//# sourceMappingURL=SubHeaderAction.js.map