UNPKG

@vimeo/iris

Version:
105 lines (102 loc) 6.49 kB
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 };