{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;;;;;;;;;AAsCM,MAAM,4CAAQ;IACnB,MAAM,CAAA,GAAA,0DAAS;IACf,UAAU,CAAA,GAAA,2DAAU;IACpB,UAAU,CAAA,GAAA,6DAAY;AACxB;AAEO,MAAM,0DAAQ,CAAA,GAAA,sCAAI,EAAE,UAAU,CAAC,SAAS,MAC7C,KAAyB,EACzB,GAA2B;IAE3B,IAAI,EACF,OAAO,OACL,GAAG,EACH,SAAS,YAAC,QAAQ,WAAE,OAAO,eAAE,WAAW,YAAE,QAAQ,uBAAE,mBAAmB,EAAC,EACzE,SACD,KAAK,EACL,GAAG,YACJ,GAAG;IACJ,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,gBAAgB,cAAE,UAAU,cAAE,UAAU,gBAAE,YAAY,EAAC,GAAG,CAAA,GAAA,iCAAO,EAAE,OAAO,OAAO;IACtF,IAAI,cAAC,UAAU,EAAC,GAAG,CAAA,GAAA,uCAAY,EAAE;IAEjC,IAAI,kBAAkB,CAAA,GAAA,uEAA0B,EAAE,CAAA,GAAA,mDAAW,GAAG;IAChE,IAAI,YAAY,WAAW,YAAY,YAAY,gBAAgB,MAAM,CAAC,WAAW;IACrF,IAAI,OAAO,yCAAK,CAAC,QAAQ;IACzB,IAAI,kBAAC,cAAc,cAAE,UAAU,EAAC,GAAG,CAAA,GAAA,yCAAW;IAE9C,MAAM,eAAe;QACnB,IAAI,UACF;QAGF,IAAI,qBACF,MAAM,KAAK,CAAC;IAEhB;IAEA,qBACE,0DAAC;QACE,GAAG,UAAU;QACb,GAAG,CAAA,GAAA,qCAAS,EAAE,YAAY,WAAW;QACrC,GAAG,CAAA,GAAA,6CAAa,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;QACvC,KAAK;QACL,WAAW,CAAA,GAAA,oCAAS,EAClB,CAAA,GAAA,mDAAK,GACL,kBACA;YAAC,CAAC,qBAAqB,QAAQ,EAAE;QAAO,GACxC,WAAW,SAAS,EACpB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAmB,GAAG,kBAAkB;YAAC,cAAc;QAAc;qBAElF,0DAAC;QACE,GAAG,YAAY;QAChB,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAmB,GAAG;OAC3C,sBACC,0DAAC;QACC,cAAY;QACZ,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;sBAGzC,0DAAC;QAAI,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;QAAwB,MAAK;qBAC9D,0DAAC;QACC,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;QAC9B,MAAK;QACJ,GAAG,UAAU;OACb,WAEF,6BACC,0DAAC,CAAA,GAAA,gCAAK;QACJ,SAAS;QACT,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;QACrC,SAAQ;QACR,aAAY;QACZ,eAAY;OACX,8BAKT,0DAAC;QAAI,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;qBACjC,0DAAC,CAAA,GAAA,qCAAU;QACR,GAAG,gBAAgB;QACpB,SAAQ;QACR,eAAY;qBACZ,0DAAC,CAAA,GAAA,2DAAU;AAKrB","sources":["packages/@adobe/react-spectrum/src/toast/Toast.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport {Button} from '../button/Button';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport CrossMedium from '@spectrum-icons/ui/CrossMedium';\nimport {DOMProps, DOMRef} from '@react-types/shared';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport InfoMedium from '@spectrum-icons/ui/InfoMedium';\nimport intlMessages from '../../intl/toast/*.json';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {QueuedToast, ToastState} from 'react-stately/useToastState';\n// @ts-ignore\nimport React from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/toast/vars.css';\nimport SuccessMedium from '@spectrum-icons/ui/SuccessMedium';\nimport toastContainerStyles from './toastContainer.css';\nimport {useDOMRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useStyleProps} from '../utils/styleProps';\nimport {useToast} from 'react-aria/useToast';\n\nexport interface SpectrumToastValue extends DOMProps {\n  children: string;\n  variant: 'positive' | 'negative' | 'info' | 'neutral';\n  actionLabel?: string;\n  onAction?: () => void;\n  shouldCloseOnAction?: boolean;\n}\n\nexport interface SpectrumToastProps {\n  toast: QueuedToast<SpectrumToastValue>;\n  state: ToastState<SpectrumToastValue>;\n}\n\n// TODO: express should use filled icons...\nexport const ICONS = {\n  info: InfoMedium,\n  negative: AlertMedium,\n  positive: SuccessMedium\n};\n\nexport const Toast = React.forwardRef(function Toast(\n  props: SpectrumToastProps,\n  ref: DOMRef<HTMLDivElement>\n) {\n  let {\n    toast: {\n      key,\n      content: {children, variant, actionLabel, onAction, shouldCloseOnAction}\n    },\n    state,\n    ...otherProps\n  } = props;\n  let domRef = useDOMRef(ref);\n  let {closeButtonProps, titleProps, toastProps, contentProps} = useToast(props, state, domRef);\n  let {styleProps} = useStyleProps(otherProps);\n\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/toast');\n  let iconLabel = variant && variant !== 'neutral' ? stringFormatter.format(variant) : null;\n  let Icon = ICONS[variant];\n  let {isFocusVisible, focusProps} = useFocusRing();\n\n  const handleAction = () => {\n    if (onAction) {\n      onAction();\n    }\n\n    if (shouldCloseOnAction) {\n      state.close(key);\n    }\n  };\n\n  return (\n    <div\n      {...styleProps}\n      {...mergeProps(toastProps, focusProps)}\n      {...filterDOMProps(props.toast.content)}\n      ref={domRef}\n      className={classNames(\n        styles,\n        'spectrum-Toast',\n        {['spectrum-Toast--' + variant]: variant},\n        styleProps.className,\n        classNames(toastContainerStyles, 'spectrum-Toast', {'focus-ring': isFocusVisible})\n      )}>\n      <div\n        {...contentProps}\n        className={classNames(toastContainerStyles, 'spectrum-Toast-contentWrapper')}>\n        {Icon && (\n          <Icon\n            aria-label={iconLabel}\n            UNSAFE_className={classNames(styles, 'spectrum-Toast-typeIcon')}\n          />\n        )}\n        <div className={classNames(styles, 'spectrum-Toast-body')} role=\"presentation\">\n          <div\n            className={classNames(styles, 'spectrum-Toast-content')}\n            role=\"presentation\"\n            {...titleProps}>\n            {children}\n          </div>\n          {actionLabel && (\n            <Button\n              onPress={handleAction}\n              UNSAFE_className={classNames(styles, 'spectrum-Button')}\n              variant=\"secondary\"\n              staticColor=\"white\"\n              data-testid=\"rsp-Toast-secondaryButton\">\n              {actionLabel}\n            </Button>\n          )}\n        </div>\n      </div>\n      <div className={classNames(styles, 'spectrum-Toast-buttons')}>\n        <ClearButton\n          {...closeButtonProps}\n          variant=\"overBackground\"\n          data-testid=\"rsp-Toast-closeButton\">\n          <CrossMedium />\n        </ClearButton>\n      </div>\n    </div>\n  );\n});\n"],"names":[],"version":3,"file":"Toast.cjs.map"}