UNPKG

@base-ui/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

62 lines (60 loc) 2.29 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.PreviewCardViewport = void 0; var React = _interopRequireWildcard(require("react")); var _PreviewCardContext = require("../root/PreviewCardContext"); var _PreviewCardPositionerContext = require("../positioner/PreviewCardPositionerContext"); var _useRenderElement = require("../../utils/useRenderElement"); var _PreviewCardViewportCssVars = require("./PreviewCardViewportCssVars"); var _usePopupViewport = require("../../utils/usePopupViewport"); const stateAttributesMapping = { activationDirection: value => value ? { 'data-activation-direction': value } : null }; /** * A viewport for displaying content transitions. * This component is only required if one popup can be opened by multiple triggers, its content change based on the trigger * and switching between them is animated. * Renders a `<div>` element. * * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card) */ const PreviewCardViewport = exports.PreviewCardViewport = /*#__PURE__*/React.forwardRef(function PreviewCardViewport(componentProps, forwardedRef) { const { render, className, children, ...elementProps } = componentProps; const store = (0, _PreviewCardContext.usePreviewCardRootContext)(); const positioner = (0, _PreviewCardPositionerContext.usePreviewCardPositionerContext)(); const instantType = store.useState('instantType'); const { children: childrenToRender, state: viewportState } = (0, _usePopupViewport.usePopupViewport)({ store, side: positioner.side, cssVars: _PreviewCardViewportCssVars.PreviewCardViewportCssVars, children }); const state = { activationDirection: viewportState.activationDirection, transitioning: viewportState.transitioning, instant: instantType }; return (0, _useRenderElement.useRenderElement)('div', componentProps, { state, ref: forwardedRef, props: [elementProps, { children: childrenToRender }], stateAttributesMapping }); }); if (process.env.NODE_ENV !== "production") PreviewCardViewport.displayName = "PreviewCardViewport";