@vimeo/iris
Version:
Vimeo Design System
105 lines (102 loc) • 6.49 kB
JavaScript
import { b as __rest, _ as __read, c as __assign } from '../../tslib.es6-7f0e734f.js';
import React__default, { useState } from 'react';
import { adjustHue, setSaturation } from 'polished';
import { FeatureTourPanelContent } from './FeatureTourPanelContent.esm.js';
import { Dot } from './Dot.esm.js';
import { PopOver } from '../../components/PopOver/PopOver.esm.js';
import { blue } from '../../color/colors.esm.js';
import { withIris } from '../../utils/HOCs/withIris.esm.js';
import { useClose } from '../../utils/events/onClose.esm.js';
import 'styled-components';
import '../../components/Button/Button.esm.js';
import '../../components/Button/Button.style.esm.js';
import '../../components/Button/Button.config.esm.js';
import '../../components/Button/FeaturedIcon.esm.js';
import '../../themes/index.esm.js';
import '../../tokens/core.esm.js';
import '../../tokens/color/index.esm.js';
import '../../tokens/color/background/background.esm.js';
import '../../tokens/util/readToken.esm.js';
import '../../tokens/util/clamp.esm.js';
import '../../tokens/color/format/format.esm.js';
import '../../tokens/color/format/primary.esm.js';
import '../../tokens/color/format/secondary.esm.js';
import '../../tokens/color/format/tertiary.esm.js';
import '../../tokens/color/rainbow/rainbow.esm.js';
import '../../tokens/color/rainbow/conic/index.esm.js';
import '../../tokens/color/rainbow/conic/sm.esm.js';
import '../../tokens/color/rainbow/conic/xl.esm.js';
import '../../tokens/color/rainbow/linear/index.esm.js';
import '../../tokens/color/rainbow/linear/sm.esm.js';
import '../../tokens/color/rainbow/linear/xl.esm.js';
import '../../tokens/color/livestream/livestream.esm.js';
import '../../tokens/color/status/status.esm.js';
import '../../tokens/color/status/caution.esm.js';
import '../../tokens/color/status/negative.esm.js';
import '../../tokens/color/status/positive.esm.js';
import '../../tokens/color/stroke/stroke.esm.js';
import '../../tokens/color/surface/surface.esm.js';
import '../../tokens/color/text/text.esm.js';
import '../../tokens/util/round.esm.js';
import '../../tokens/color/upsell/upsell.esm.js';
import '../../tokens/color/upsell/sm.esm.js';
import '../../tokens/color/upsell/xl.esm.js';
import '../../tokens/color/upsell/new.esm.js';
import '../../tokens/edge/edge.esm.js';
import '../../tokens/space/space.esm.js';
import '../../tokens/typography/index.esm.js';
import '../../tokens/typography/size/size.esm.js';
import '../../components/LoaderCircular/LoaderCircular.esm.js';
import '../../components/LoaderCircular/LoaderCircular.style.esm.js';
import '../../utils/hooks/useDeprecate.esm.js';
import '../../utils/general/mergeReactRefs.esm.js';
import '../../utils/css.esm.js';
import '../../icons/ui/DismissX.esm.js';
import '../../typography/Header/Header.esm.js';
import '../../typography/Header/Header.style.esm.js';
import '../../typography/typography.esm.js';
import '../../typography/Text/Text.esm.js';
import '../../typography/Text/Text.style.esm.js';
import '../../typography/Text/EditableText.esm.js';
import '../../utils/hooks/useLayoutStyles.esm.js';
import '../../utils/DOM/geometry.esm.js';
import '../../typography/Paragraph/Paragraph.esm.js';
import '../../typography/Paragraph/Paragraph.style.esm.js';
import '../../components/PopOver/PopOver.style.esm.js';
import '../../components/PopOver/PopOver.error.esm.js';
import '../../utils/hooks/usePortal_DEPRECATED/usePortal_DEPRECATED.esm.js';
import 'react-dom';
import '../../utils/hooks/usePortal_DEPRECATED/usePortal_DEPRECATED.style.esm.js';
import '../../utils/hooks/usePortal_DEPRECATED/useMountAnimations.esm.js';
import '../../utils/hooks/useIsomorphicEffect.esm.js';
import '../../utils/DOM/getComputedStyles.esm.js';
import '../../utils/DOM/animate.esm.js';
import '../../utils/events/onEvent.esm.js';
import '../../utils/hooks/usePortal_DEPRECATED/coordinates.esm.js';
import '../../utils/hooks/usePortal_DEPRECATED/Anchor.esm.js';
import '../../utils/hooks/useOutsideClick.esm.js';
import '../../utils/DOM/SSR.esm.js';
import '../../utils/DOM/createPortalOutlet.esm.js';
import '../../utils/DOM/createElement.esm.js';
var BLUE = adjustHue(30, setSaturation(0.9, blue(600)));
var FeatureTourPanel = withIris(FeatureTourPanelComponent);
function FeatureTourPanelComponent(_a) {
var actionArea = _a.actionArea, _b = _a.attach, attach = _b === void 0 ? 'right' : _b, _c = _a.beaconDelayIndex, beaconDelayIndex = _c === void 0 ? 0 : _c, beaconA11yText = _a.beaconA11yText, children = _a.children, _d = _a.color, color = _d === void 0 ? BLUE : _d, contextualInfo = _a.contextualInfo, dismissButtonA11yLabel = _a.dismissButtonA11yLabel, dismissButtonProps = _a.dismissButtonProps, _e = _a.dotZIndex, dotZIndex = _e === void 0 ? 1 : _e; _a.forwardRef; var headerText = _a.headerText; _a.isOpen; var onOpen = _a.onOpen, onClose = _a.onClose; _a.shouldHideOnClose; _a.shouldRefocusTriggerOnClose; _a.wrapperClass; var _h = _a.size, size = _h === void 0 ? 'md' : _h, style = _a.style, props = __rest(_a, ["actionArea", "attach", "beaconDelayIndex", "beaconA11yText", "children", "color", "contextualInfo", "dismissButtonA11yLabel", "dismissButtonProps", "dotZIndex", "forwardRef", "headerText", "isOpen", "onOpen", "onClose", "shouldHideOnClose", "shouldRefocusTriggerOnClose", "wrapperClass", "size", "style"]);
var _j = __read(useState('active'), 2), mode = _j[0], setMode = _j[1];
var _k = useClose(onClose), reject = _k.reject, complete = _k.complete;
function doOpen(e) {
setMode('open');
onOpen && onOpen(e);
}
var doClose = function (event) {
event.preventDefault();
setMode('inactive');
if (reject)
reject(event);
if (complete)
complete(event);
};
return (React__default.createElement(PopOver, { onClose: doClose, onOpen: doOpen, attach: attach, style: { background: 'transparent' }, content: React__default.createElement(FeatureTourPanelContent, __assign({ actionArea: actionArea, children: children, color: color, contextualInfo: contextualInfo, dismissButtonA11yLabel: dismissButtonA11yLabel, dismissButtonProps: dismissButtonProps, headerText: headerText, onClose: doClose, size: size }, props)) },
React__default.createElement(Dot, { style: __assign({ zIndex: dotZIndex }, style), beaconA11yText: beaconA11yText, beaconDelayIndex: beaconDelayIndex, mode: mode, color: color, clear: function () { return setMode('inactive'); } })));
}
export { FeatureTourPanel };