"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { always: function() { return always; }, optional: function() { return optional; }, resolveShorthand: function() { return resolveShorthand; } }); const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); const _constants = require("./constants"); function always(value, options) { const { defaultProps, elementType } = options; const props = resolveShorthand(value); /** * Casting is required here as SlotComponentType is a function, not an object. * Although SlotComponentType has a function signature, it is still just an object. * This is required to make a slot callable (JSX compatible), this is the exact same approach * that is used on `@types/react` components */ const propsWithMetadata = { ...defaultProps, ...props, [_constants.SLOT_ELEMENT_TYPE_SYMBOL]: elementType }; if (props && typeof props.children === 'function') { propsWithMetadata[_constants.SLOT_RENDER_FUNCTION_SYMBOL] = props.children; propsWithMetadata.children = defaultProps === null || defaultProps === void 0 ? void 0 : defaultProps.children; } return propsWithMetadata; } function optional(value, options) { if (value === null || value === undefined && !options.renderByDefault) { return undefined; } return always(value, options); } function resolveShorthand(value) { if (typeof value === 'string' || typeof value === 'number' || Array.isArray(value) || // eslint-disable-next-line @typescript-eslint/no-explicit-any /*#__PURE__*/ _react.isValidElement(value)) { return { children: value }; } if (value && typeof value !== 'object' && process.env.NODE_ENV !== 'production') { // TODO: would be nice to have a link to slot documentation in this error message // eslint-disable-next-line no-console console.error(`@fluentui/react-utilities [slot.${resolveShorthand.name}]: A slot got an invalid value "${value}" (${typeof value}). A valid value for a slot is a slot shorthand or slot properties object. Slot shorthands can be strings, numbers, arrays or JSX elements`); } return value; }