@servicetitan/anvil2 3.15.2 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/{AiMark-N8UfGfcV.js → AiMark-BfmK30vL.js} +2 -2
- package/dist/{AiMark-N8UfGfcV.js.map → AiMark-BfmK30vL.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-DTKIlitZ.js → Alert-lLo1N7Tj.js} +2 -2
- package/dist/{Alert-DTKIlitZ.js.map → Alert-lLo1N7Tj.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-Cnz80WGx.js → Announcement-PfnsVVz1.js} +5 -2
- package/dist/Announcement-PfnsVVz1.js.map +1 -0
- package/dist/Announcement.js +1 -1
- package/dist/{Breadcrumbs-B8UGx4Mq.js → Breadcrumbs-RdL4Fvmu.js} +2 -2
- package/dist/{Breadcrumbs-B8UGx4Mq.js.map → Breadcrumbs-RdL4Fvmu.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-Cv07q_tE.js → Calendar-DoLRAWLp.js} +2 -2
- package/dist/{Calendar-Cv07q_tE.js.map → Calendar-DoLRAWLp.js.map} +1 -1
- package/dist/{Calendar-CpmaI3b6.js → Calendar-IzXG1aJw.js} +2 -2
- package/dist/{Calendar-CpmaI3b6.js.map → Calendar-IzXG1aJw.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-cB0D9W0a.js → Checkbox-CVxbe-iN.js} +3 -3
- package/dist/{Checkbox-cB0D9W0a.js.map → Checkbox-CVxbe-iN.js.map} +1 -1
- package/dist/{Checkbox-jomKCuAj.js → Checkbox-U-kuWhgc.js} +2 -2
- package/dist/{Checkbox-jomKCuAj.js.map → Checkbox-U-kuWhgc.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-DivZ3OuB.js → Chip-2OydLs66.js} +2 -2
- package/dist/{Chip-DivZ3OuB.js.map → Chip-2OydLs66.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-_XXxSbvH.js → DataTable-DIXP9-Bx.js} +7 -7
- package/dist/{DataTable-_XXxSbvH.js.map → DataTable-DIXP9-Bx.js.map} +1 -1
- package/dist/{DateFieldRange-31zIfcR2.js → DateFieldRange-X2jdOTYY.js} +4 -4
- package/dist/{DateFieldRange-31zIfcR2.js.map → DateFieldRange-X2jdOTYY.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DDFe1inZ.js → DateFieldSingle-BJ16tpOz.js} +4 -4
- package/dist/{DateFieldSingle-DDFe1inZ.js.map → DateFieldSingle-BJ16tpOz.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Cv34myLZ.js → DateFieldYearless-CMm8vtz_.js} +4 -4
- package/dist/{DateFieldYearless-Cv34myLZ.js.map → DateFieldYearless-CMm8vtz_.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-D_ftkt3w.js → DateFieldYearlessRange-BHHs-Z1Q.js} +3 -3
- package/dist/{DateFieldYearlessRange-D_ftkt3w.js.map → DateFieldYearlessRange-BHHs-Z1Q.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-D4tUHUay.js → DaysOfTheWeek-BHXxs0Bo.js} +2 -2
- package/dist/{DaysOfTheWeek-D4tUHUay.js.map → DaysOfTheWeek-BHXxs0Bo.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-B2QAFibn.js → Dialog-_tHqOsbr.js} +4 -4
- package/dist/{Dialog-B2QAFibn.js.map → Dialog-_tHqOsbr.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-CBIOWwh3.js → Drawer-D-ThWNp0.js} +4 -4
- package/dist/{Drawer-CBIOWwh3.js.map → Drawer-D-ThWNp0.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-Q6WlsM4O.js → EditCard-B6l2vhBS.js} +2 -2
- package/dist/{EditCard-Q6WlsM4O.js.map → EditCard-B6l2vhBS.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-FsNIjn8T.js → FieldLabel-ThEmUiAq.js} +2 -2
- package/dist/{FieldLabel-FsNIjn8T.js.map → FieldLabel-ThEmUiAq.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-PXv7_svO.js → FilterBar-jFn8O7v7.js} +18 -16
- package/dist/FilterBar-jFn8O7v7.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-BgZX650-.js → InputMask-BQigi5oW.js} +3 -3
- package/dist/{InputMask-BgZX650-.js.map → InputMask-BQigi5oW.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-aRwUEGI3.js → ListView-YJscfG4x.js} +2 -2
- package/dist/{ListView-aRwUEGI3.js.map → ListView-YJscfG4x.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BCszel4v.js → Listbox-CD9ZptSZ.js} +2 -2
- package/dist/{Listbox-BCszel4v.js.map → Listbox-CD9ZptSZ.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-DY5wr7cT.js → MultiSelectFieldSync-DuImKXuj.js} +6 -6
- package/dist/{MultiSelectFieldSync-DY5wr7cT.js.map → MultiSelectFieldSync-DuImKXuj.js.map} +1 -1
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-D3sfHivW.js → MultiSelectMenuSync-BhNXsgAN.js} +4 -4
- package/dist/{MultiSelectMenuSync-D3sfHivW.js.map → MultiSelectMenuSync-BhNXsgAN.js.map} +1 -1
- package/dist/{NumberField-CrvEEy_h.js → NumberField-CxmJx4gs.js} +3 -3
- package/dist/{NumberField-CrvEEy_h.js.map → NumberField-CxmJx4gs.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-CS6x6C7Y.js → Page-ZSHNJs7z.js} +8 -8
- package/dist/{Page-CS6x6C7Y.js.map → Page-ZSHNJs7z.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DianLtHs.js → Pagination-Bsl99RRI.js} +5 -3
- package/dist/{Pagination-DianLtHs.js.map → Pagination-Bsl99RRI.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-BsEwcuu4.js → Popover-CIh1CsoJ.js} +2 -2
- package/dist/{Popover-BsEwcuu4.js.map → Popover-CIh1CsoJ.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-0pebwBJ0.js → ProgressBar-zPKYv4Il.js} +11 -14
- package/dist/ProgressBar-zPKYv4Il.js.map +1 -0
- package/dist/ProgressBar.css +10 -14
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BxXN612_.js → Radio-BYowelK2.js} +3 -3
- package/dist/{Radio-BxXN612_.js.map → Radio-BYowelK2.js.map} +1 -1
- package/dist/{Radio-CU2--1uW.js → Radio-C1VnatcL.js} +2 -2
- package/dist/{Radio-CU2--1uW.js.map → Radio-C1VnatcL.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-Dnc7vOjq.js → RichTextEditor-DcAVqd2d.js} +8 -8
- package/dist/{RichTextEditor-Dnc7vOjq.js.map → RichTextEditor-DcAVqd2d.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-BWlE7UnI.js → SavedFiltersButton-Bl8mr-LB.js} +9 -9
- package/dist/{SavedFiltersButton-BWlE7UnI.js.map → SavedFiltersButton-Bl8mr-LB.js.map} +1 -1
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SelectCard-D2PAyR7T.js → SelectCard-DrmMU_GD.js} +3 -3
- package/dist/{SelectCard-D2PAyR7T.js.map → SelectCard-DrmMU_GD.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-BXJJQ0zt.js → SelectFieldLabel-BxsKvfqo.js} +2 -2
- package/dist/{SelectFieldLabel-BXJJQ0zt.js.map → SelectFieldLabel-BxsKvfqo.js.map} +1 -1
- package/dist/{SelectFieldSync-CkWoMhrv.js → SelectFieldSync-SS7FELT3.js} +5 -5
- package/dist/{SelectFieldSync-CkWoMhrv.js.map → SelectFieldSync-SS7FELT3.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-C-6mULc_.js → SelectMenuSync-CPpE6vUG.js} +4 -4
- package/dist/{SelectMenuSync-C-6mULc_.js.map → SelectMenuSync-CPpE6vUG.js.map} +1 -1
- package/dist/{SelectOptions-pAkVhulQ.js → SelectOptions-BDAu_9dv.js} +2 -2
- package/dist/{SelectOptions-pAkVhulQ.js.map → SelectOptions-BDAu_9dv.js.map} +1 -1
- package/dist/{SelectTrigger-B9WUUdIu.js → SelectTrigger-B5h-aqhl.js} +2 -2
- package/dist/{SelectTrigger-B9WUUdIu.js.map → SelectTrigger-B5h-aqhl.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Dq7QDlPS.js → SelectTriggerBase-SML2Mlt-.js} +3 -3
- package/dist/{SelectTriggerBase-Dq7QDlPS.js.map → SelectTriggerBase-SML2Mlt-.js.map} +1 -1
- package/dist/{Switch-BS4bw5KF.js → Switch-1iNdXTik.js} +2 -2
- package/dist/{Switch-BS4bw5KF.js.map → Switch-1iNdXTik.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-B_-Ldn9K.js → Text-rihxXHSe.js} +2 -2
- package/dist/{Text-B_-Ldn9K.js.map → Text-rihxXHSe.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-B6tVKoxq.js → TextField-Bxd-Qzoi.js} +2 -2
- package/dist/{TextField-B6tVKoxq.js.map → TextField-Bxd-Qzoi.js.map} +1 -1
- package/dist/{TextField-DxQ6-IhP.js → TextField-vuS7xeo-.js} +3 -3
- package/dist/{TextField-DxQ6-IhP.js.map → TextField-vuS7xeo-.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-oChzBuWz.js → Textarea-ppapJUwh.js} +3 -3
- package/dist/{Textarea-oChzBuWz.js.map → Textarea-ppapJUwh.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Dq7l8xNU.js → TimeField-Hwt_oRbg.js} +4 -4
- package/dist/{TimeField-Dq7l8xNU.js.map → TimeField-Hwt_oRbg.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-oK4dSBPK.js → Toaster-SqkX0Kes.js} +3 -3
- package/dist/{Toaster-oK4dSBPK.js.map → Toaster-SqkX0Kes.js.map} +1 -1
- package/dist/{Toaster-CsZkAOVn.js → Toaster-dVGVVcat.js} +2 -2
- package/dist/{Toaster-CsZkAOVn.js.map → Toaster-dVGVVcat.js.map} +1 -1
- package/dist/{Toolbar-Bp-A2P4L.js → Toolbar-CMulzswf.js} +3 -3
- package/dist/{Toolbar-Bp-A2P4L.js.map → Toolbar-CMulzswf.js.map} +1 -1
- package/dist/{Toolbar-Do8KEjJJ.js → Toolbar-DGHZpFi9.js} +3 -3
- package/dist/{Toolbar-Do8KEjJJ.js.map → Toolbar-DGHZpFi9.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-BXfLbDBM.js → TreeSelectFieldSync-C0mXwYZL.js} +5 -5
- package/dist/{TreeSelectFieldSync-BXfLbDBM.js.map → TreeSelectFieldSync-C0mXwYZL.js.map} +1 -1
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-D7fQIyHr.js → TreeSelectMenuSync-D2TvKxP-.js} +3 -3
- package/dist/{TreeSelectMenuSync-D7fQIyHr.js.map → TreeSelectMenuSync-D2TvKxP-.js.map} +1 -1
- package/dist/{TypeaheadTextField-Dkh84OCF.js → TypeaheadTextField-DgazozK7.js} +3 -3
- package/dist/{TypeaheadTextField-Dkh84OCF.js.map → TypeaheadTextField-DgazozK7.js.map} +1 -1
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-7y8xhacx.js → YearlessDateInputWithPicker-Bc8a33D5.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-7y8xhacx.js.map → YearlessDateInputWithPicker-Bc8a33D5.js.map} +1 -1
- package/dist/beta.js +16 -16
- package/dist/{bulkActionTypes-BVJZ01mE.js → bulkActionTypes-SukoplGV.js} +2 -2
- package/dist/{bulkActionTypes-BVJZ01mE.js.map → bulkActionTypes-SukoplGV.js.map} +1 -1
- package/dist/downshift.esm-U4VMqrF-.js.map +1 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/{filter-state-CPCn-owS.js → filter-state-hDtCUggM.js} +18 -18
- package/dist/{filter-state-CPCn-owS.js.map → filter-state-hDtCUggM.js.map} +1 -1
- package/dist/{index-D1WfdON1.js → index-C2dOrf4N.js} +2 -2
- package/dist/{index-D1WfdON1.js.map → index-C2dOrf4N.js.map} +1 -1
- package/dist/index.js +42 -42
- package/dist/src/components/Pagination/Pagination.d.ts +28 -0
- package/dist/src/internal/components/LoadMoreSlot.d.ts +13 -0
- package/dist/src/internal/hooks/useAutoLoadMore.d.ts +40 -0
- package/dist/src/internal/hooks/useFocusReturnOnUnmount.d.ts +10 -0
- package/dist/{stripInlineMarkdown-CcwDEdw0.js → stripInlineMarkdown-BhYLEiXu.js} +2 -2
- package/dist/{stripInlineMarkdown-CcwDEdw0.js.map → stripInlineMarkdown-BhYLEiXu.js.map} +1 -1
- package/dist/{syncFilterUtils-ubEYuRGQ.js → syncFilterUtils-SMop8ckR.js} +179 -64
- package/dist/syncFilterUtils-SMop8ckR.js.map +1 -0
- package/dist/{treeSync-CkjyJSVq.js → treeSync-B38r1dRQ.js} +3 -3
- package/dist/{treeSync-CkjyJSVq.js.map → treeSync-B38r1dRQ.js.map} +1 -1
- package/dist/{useDrilldown-DOXav1An.js → useDrilldown-BOeeNUsy.js} +3 -3
- package/dist/{useDrilldown-DOXav1An.js.map → useDrilldown-BOeeNUsy.js.map} +1 -1
- package/dist/{useInfiniteCombobox-15_SoeWw.js → useInfiniteCombobox-7oIT2Mzn.js} +4 -4
- package/dist/{useInfiniteCombobox-15_SoeWw.js.map → useInfiniteCombobox-7oIT2Mzn.js.map} +1 -1
- package/dist/{useInitialFocus-0TZ78bPz.js → useInitialFocus-CGybEc6x.js} +2 -2
- package/dist/{useInitialFocus-0TZ78bPz.js.map → useInitialFocus-CGybEc6x.js.map} +1 -1
- package/dist/{useInvalidateOnOptionsChange-DiRbyJFp.js → useInvalidateOnOptionsChange-BD2VBpbK.js} +4 -4
- package/dist/{useInvalidateOnOptionsChange-DiRbyJFp.js.map → useInvalidateOnOptionsChange-BD2VBpbK.js.map} +1 -1
- package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
- package/dist/{usePopoverTransitionStates-B1opfxxn.js.map → usePopoverTransitionStates-CDXCdyKa.js.map} +1 -1
- package/package.json +6 -6
- package/dist/Announcement-Cnz80WGx.js.map +0 -1
- package/dist/FilterBar-PXv7_svO.js.map +0 -1
- package/dist/ProgressBar-0pebwBJ0.js.map +0 -1
- package/dist/check_circle-C3DDoVXp.js +0 -8
- package/dist/check_circle-C3DDoVXp.js.map +0 -1
- package/dist/src/internal/components/InView.d.ts +0 -14
- package/dist/syncFilterUtils-ubEYuRGQ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toaster-oK4dSBPK.js","sources":["../src/components/Toast/internal/ToastProvider.tsx","../src/components/Toast/internal/useToasts.ts","../src/components/Toast/internal/ToasterPopover.tsx","../src/components/Toast/internal/constants.ts","../src/components/Toast/internal/addOrUpdateToastHeight.ts","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/v4.js","../src/components/Toast/toast.ts","../src/components/Toast/internal/useCloseToast.tsx","../src/components/Toast/internal/useToastPositionStyles.ts","../src/components/Toast/internal/Toast.tsx","../src/components/Toast/internal/useHotkeyFocus.tsx","../src/components/Toast/internal/useShowMoreButtonPositionStyles.ts","../src/components/Toast/internal/ToastStack.tsx","../src/components/Toast/internal/Toaster.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport {\n createContext,\n type Dispatch,\n type FC,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type { ToastProps } from \"./Toast\";\n\nexport type ToastProviderProps = PropsWithChildren<{\n /** Coordinates top-layer ordering for a toaster inside a dialog. Defaults to `false`. */\n isDialogToaster?: boolean;\n}>;\n\nexport type ToastProviderContextProps = {\n toasts: ToastProps[];\n setToasts: Dispatch<SetStateAction<ToastProps[]>>;\n toastHeights: { id: string; height: number }[];\n setToastHeights: Dispatch<\n SetStateAction<ToastProviderContextProps[\"toastHeights\"]>\n >;\n getToastStackHeight: (index?: number) => number;\n toastsBeforeStack: number;\n setToastsBeforeStack: Dispatch<SetStateAction<number>>;\n extraToastsVisible: boolean;\n setExtraToastsVisible: Dispatch<SetStateAction<boolean>>;\n isDialogToaster: boolean;\n};\n\nexport const ToastProviderContext = createContext<ToastProviderContextProps>({\n toasts: [],\n setToasts: () => [],\n toastHeights: [],\n setToastHeights: () => [],\n getToastStackHeight: () => 0,\n toastsBeforeStack: 3,\n setToastsBeforeStack: () => [],\n extraToastsVisible: false,\n setExtraToastsVisible: () => [],\n isDialogToaster: false,\n});\n\nexport const getSetToasts: {\n setToasts: ToastProviderContextProps[\"setToasts\"];\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"];\n} = {\n setToasts: () => [],\n setToastHeights: () => [],\n};\n\n/** Owns notification state and measurements for one toaster. */\nexport const ToastProvider: FC<ToastProviderProps> = ({\n children,\n isDialogToaster: isDialogToasterProp = false,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const [toastHeights, setToastHeights] = useState<\n ToastProviderContextProps[\"toastHeights\"]\n >([]);\n const [toastsBeforeStack, setToastsBeforeStack] = useState<number>(3);\n const [extraToastsVisible, setExtraToastsVisible] = useState<boolean>(false);\n getSetToasts.setToasts = setToasts;\n getSetToasts.setToastHeights = setToastHeights;\n const [isDialogToaster, setIsDialogToaster] =\n useState<boolean>(isDialogToasterProp);\n\n const removeDuplicateToasts = (toasts: ToastProps[]) => {\n const toastIds = new Set<ToastProps[\"id\"]>();\n const uniqueToasts = toasts.filter((toast) => {\n if (toastIds.has(toast.id)) {\n console.error(\n `Encountered toast with duplicate id ${toast.id}. Each toast id needs to be unique.`,\n );\n return false;\n } else {\n toastIds.add(toast.id);\n return true;\n }\n });\n return uniqueToasts;\n };\n\n useEffect(() => {\n const uniqueToasts = removeDuplicateToasts(toasts);\n if (toasts.length !== uniqueToasts.length) {\n setToasts(uniqueToasts);\n }\n }, [toasts]);\n\n useEffect(() => {\n setIsDialogToaster(isDialogToasterProp);\n }, [isDialogToasterProp]);\n\n // Memoize the ID→height map once per toastHeights change, so\n // getToastStackHeight (called once per toast) doesn't rebuild it each time.\n const heightMap = useMemo(\n () => new Map(toastHeights.map((t) => [t.id, t.height])),\n [toastHeights],\n );\n\n const getToastStackHeight = useCallback(\n (index?: number) => {\n const relevantToasts =\n index !== undefined ? toasts.slice(index + 1) : toasts;\n\n const heights = relevantToasts\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined);\n\n if (heights.length > 0) {\n if (extraToastsVisible) {\n return heights.reduce((total, current) => total + current);\n }\n return heights\n .slice(-toastsBeforeStack)\n .reduce((total, current) => total + current);\n }\n return 0;\n },\n [toasts, heightMap, extraToastsVisible, toastsBeforeStack],\n );\n\n const value = useMemo(\n () => ({\n toasts,\n setToasts,\n toastHeights,\n setToastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n isDialogToaster,\n }),\n [\n extraToastsVisible,\n getToastStackHeight,\n toastHeights,\n toasts,\n toastsBeforeStack,\n isDialogToaster,\n ],\n );\n\n return (\n <ToastProviderContext.Provider value={value}>\n {children}\n </ToastProviderContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { ToastProviderContext } from \"./ToastProvider\";\n\n/** Returns the nearest toast provider state; throws outside `ToastProvider`. */\nexport const useToasts = () => {\n const context = useContext(ToastProviderContext);\n\n if (context == null) {\n throw new Error(\"useToasts must be wrapped in <ToastProvider />\");\n }\n\n return context;\n};\n","import {\n forwardRef,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../../hooks\";\nimport { safeHidePopover, safeShowPopover } from \"../../../internal/functions\";\n\nimport { useToasts } from \"./useToasts\";\n\nimport {\n portalScopeClassNames,\n usePortalScopeStyle,\n} from \"../../../internal/functions/portalScopeClassNames\";\n\ntype ToasterPopoverProps = PropsWithChildren;\n\n/**\n * Native `[popover]` UA styles (`inset: 0`, `margin: auto`, `border: solid`)\n * collapse this wrapper to a centered box when the inner toaster is\n * `position: fixed`. Inline so the reset is not nested under PostCSS's\n * `.anvil2` descendant wrapper — this node self-applies `.anvil2` and often\n * has no ancestor scope.\n */\nconst toasterPopoverUaReset = {\n background: \"none\",\n border: \"none\",\n inset: \"auto\",\n margin: 0,\n padding: 0,\n right: 0,\n top: 0,\n} as const;\n\n/** Keeps active notifications in the browser's top layer. */\nexport const ToasterPopover = forwardRef<HTMLDivElement, ToasterPopoverProps>(\n (props, ref) => {\n const { isDialogToaster } = useToasts();\n const popoverRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([popoverRef, ref]);\n\n const { toasts } = useToasts();\n const toastCount = useMemo(() => toasts.length, [toasts]);\n\n useEffect(() => {\n if (!popoverRef.current) return;\n const currentPopover = popoverRef.current;\n let timeout: NodeJS.Timeout | undefined;\n\n if (toastCount > 0) {\n if (isDialogToaster) {\n // Reopening puts a pre-existing popover above the newly opened dialog.\n timeout = setTimeout(() => {\n safeHidePopover(currentPopover);\n safeShowPopover(currentPopover);\n });\n } else {\n safeShowPopover(currentPopover);\n }\n } else {\n safeHidePopover(currentPopover);\n }\n\n return () => {\n if (timeout) clearTimeout(timeout);\n if (toastCount === 0) {\n safeHidePopover(currentPopover);\n }\n };\n }, [toastCount, isDialogToaster]);\n\n const portalStyle = usePortalScopeStyle(toasterPopoverUaReset);\n\n return (\n <div\n ref={combinedRef}\n // The toaster renders in a native `popover` (top layer), escaping any\n // ancestor `AnvilProvider`'s `.anvil2` scope; self-apply it so portaled\n // toasts still receive the `--a2-*` tokens and scoped component rules.\n className={portalScopeClassNames}\n data-anv=\"toaster-popover\"\n popover=\"manual\"\n style={portalStyle}\n >\n {props.children}\n </div>\n );\n },\n);\n\nToasterPopover.displayName = \"ToasterPopover\";\n","export const ANIMATION_DURATION = 300;\n\nexport const TOAST_STACK_PADDING = 48;\n\nexport const EXPAND_BUTTON_HEIGHT_WITH_PADDING = 64;\n\nexport const SCROLL_THRESHOLD = 64;\n\nexport const EVENT_THROTTLE_MS = 16;\n","import type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/** Records the latest measured height for a toast. */\nexport const addOrUpdateToastHeight = (\n toastId: string,\n toastHeight: number,\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n) => {\n setToastHeights((prev) => {\n if (prev.find((t) => t.id === toastId)) {\n return prev.map((t) => {\n if (t.id === toastId) {\n return { ...t, height: toastHeight };\n }\n return t;\n });\n }\n return [\n ...prev,\n {\n id: toastId,\n height: toastHeight,\n },\n ];\n });\n};\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { MouseEvent } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport type { Status } from \"../../types\";\nimport type {\n ToastCustomEventDetail,\n ToastUpdateProps,\n} from \"./internal/types\";\nimport type { ToastProps } from \"./internal/Toast\";\n\n/** Content and behavior shared by the status-specific toast methods. */\nexport type toastProps = Pick<\n ToastProps,\n | \"actions\"\n | \"aiMark\"\n | \"containerClassName\"\n | \"duration\"\n | \"message\"\n | \"onClose\"\n | \"onDismiss\"\n | \"progress\"\n | \"title\"\n | \"toastClassName\"\n>;\n\n/**\n * Imperative methods for adding, updating, and dismissing notifications in a\n * mounted {@link Toaster}.\n */\nexport const toast = () => {\n const toastMethods = [\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"promise\",\n \"update\",\n \"dismiss\",\n ];\n console.error(\n \"Please use one of the following toast methods:\\n\",\n ...toastMethods.map((m) => `\\ttoast.${m}()\\n`),\n );\n};\ntype ToastCustomEvent = CustomEvent<ToastCustomEventDetail>;\n\nconst TOAST_EVENT_NAME = \"hammer-toast\";\n\nconst TOAST_TYPES: readonly Status[] = [\"info\", \"success\", \"warning\", \"danger\"];\n\nconst methods: Record<string, (props: toastProps) => string> = {};\n\nTOAST_TYPES.forEach((type) => {\n methods[type] = (props: toastProps) => {\n const uniqueId = uuid();\n\n const ToastAddEvent: ToastCustomEvent =\n new CustomEvent<ToastCustomEventDetail>(TOAST_EVENT_NAME, {\n composed: true,\n detail: {\n id: uniqueId,\n eventType: \"add\",\n status: type,\n createdAt: Date.now(),\n ...props,\n },\n });\n dispatchEvent(ToastAddEvent);\n return uniqueId;\n };\n});\n\nconst update = (id: string, props: Omit<ToastUpdateProps, \"id\">) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"update\",\n id,\n ...props,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst dismiss = (id?: string) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"dismiss\",\n id,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst promise = async (\n promise: Promise<string>,\n toastConfig: {\n /** Content shown while the promise is pending. */\n loading: toastProps;\n /** Maps the resolved value to the result toast. */\n success: (data: string) => Omit<toastProps, \"id\">;\n /** Maps the rejection value to the result toast. */\n error: (error: string) => Omit<toastProps, \"id\">;\n },\n): Promise<string> => {\n const { onClose, ...loadingToastConfig } = toastConfig.loading;\n let closedWhileLoading = false;\n\n const onCloseWhileLoading: toastProps[\"onClose\"] = (\n e: MouseEvent<HTMLButtonElement>,\n ) => {\n toastConfig.loading.onClose?.(e);\n closedWhileLoading = true;\n };\n\n const id = toast.info({\n ...loadingToastConfig,\n onClose: onCloseWhileLoading,\n duration: false,\n });\n await Promise.resolve(promise)\n .then((res) => {\n if (closedWhileLoading) {\n toast.success({\n ...toastConfig.success(res),\n });\n } else {\n toast.update(id, {\n ...toastConfig.success(res),\n status: \"success\",\n });\n }\n })\n .catch((err) => {\n if (closedWhileLoading) {\n toast.danger({\n ...toastConfig.error(err),\n });\n } else {\n toast.update(id, {\n ...toastConfig.error(err),\n status: \"danger\",\n });\n }\n });\n return id;\n};\n\n/**\n * Adds an informational toast and returns its generated ID.\n */\ntoast.info = methods.info;\n/**\n * Adds a success toast and returns its generated ID.\n */\ntoast.success = methods.success;\n/**\n * Adds a warning toast and returns its generated ID.\n */\ntoast.warning = methods.warning;\n/**\n * Adds a danger toast and returns its generated ID.\n */\ntoast.danger = methods.danger;\n/**\n * Updates the toast with the matching ID.\n */\ntoast.update = update;\n/**\n * Dismisses the matching toast, or every toast when no ID is provided.\n */\ntoast.dismiss = dismiss;\n/**\n * Shows a non-expiring loading toast, then replaces it with the resolved or\n * rejected configuration. Closing it while pending creates a new result toast.\n *\n * @example\n * ```ts\n * import { toast } from \"@servicetitan/anvil2\";\n * toast.promise(\n * new Promise((resolve, reject) => {\n * setTimeout(() => {\n * resolve(\"This is a success toast\");\n * }, 2000);\n * }),\n * {\n * loading: {\n * message: \"This is a loading toast\",\n * title: \"Loading\",\n * },\n * success: (data) => ({\n * message: data,\n * title: \"Success\",\n * }),\n * error: (error) => ({\n * message: error,\n * title: \"Error\",\n * }),\n * },\n * );\n * ```\n */\ntoast.promise = promise;\n","import type { ToastProps } from \"./Toast\";\nimport { useToasts } from \"./useToasts\";\nimport { ANIMATION_DURATION } from \"./constants\";\nimport type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/**\n * Removes one toast by id, or every toast when no id is given. Returns the\n * previous array unchanged when there is nothing to remove, so React can bail\n * out of re-rendering every toast context consumer.\n */\nconst withoutToast = <T extends { id: string }>(prev: T[], id?: string) => {\n if (prev.length === 0) {\n return prev;\n }\n if (!id) {\n return [];\n }\n const next = prev.filter((t) => t.id !== id);\n return next.length === prev.length ? prev : next;\n};\n\nconst setToastsAfterClose = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n id?: string,\n) => {\n setToasts((prev) => withoutToast(prev, id));\n setToastHeights((prev) => withoutToast(prev, id));\n};\n\nconst closeToast = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n closingToastClassName: ToastProps[\"toastClassName\"],\n id?: string,\n) => {\n const prefersReducedMotion = globalThis.matchMedia(\n `(prefers-reduced-motion: reduce)`,\n ).matches;\n\n if (prefersReducedMotion) {\n setToastsAfterClose(setToasts, setToastHeights, id);\n } else {\n setToasts((prev) => {\n let hasClosingToast = false;\n const next = prev.map((t) => {\n if (!id || t.id === id) {\n hasClosingToast = true;\n return {\n ...t,\n toastClassName: closingToastClassName,\n };\n }\n return t;\n });\n return hasClosingToast ? next : prev;\n });\n // Keep the entry mounted until its closing animation finishes.\n setTimeout(() => {\n setToastsAfterClose(setToasts, setToastHeights, id);\n }, ANIMATION_DURATION - 10);\n }\n};\n\n/** Returns a callback that closes one toast, or every toast when passed no ID. */\nexport const useCloseToast = (\n closingToastClassName: ToastProps[\"toastClassName\"],\n) => {\n const { setToasts, setToastHeights } = useToasts();\n return (id?: string) => {\n closeToast(setToasts, setToastHeights, closingToastClassName, id);\n };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\nconst STACKED_TOAST_HEIGHT = \"5.3125rem\";\nconst STACKED_TOAST_PEEK_HEIGHT = \"1rem\";\n\n/** Positions one toast within the visible or collapsed stack. */\nexport const useToastPositionStyles = (\n index: number,\n): CSSProperties | undefined => {\n const {\n toasts,\n toastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n extraToastsVisible,\n } = useToasts();\n const toastCount = toasts.length;\n const toasterHeight = getToastStackHeight(index);\n\n return useMemo(() => {\n if (index === toastCount - 1) {\n return {\n top: 0,\n zIndex: 3,\n };\n } else if (\n extraToastsVisible ||\n (!extraToastsVisible &&\n (toastCount <= toastsBeforeStack ||\n (toastCount > toastsBeforeStack &&\n index >= toastCount - toastsBeforeStack)))\n ) {\n return {\n top: toasterHeight,\n };\n } else {\n if (toastCount > toastsBeforeStack) {\n if (index === toastCount - toastsBeforeStack - 1) {\n return {\n top: `calc(${toasterHeight || 0}px - ${STACKED_TOAST_HEIGHT} +\n ${STACKED_TOAST_PEEK_HEIGHT})`,\n zIndex: 1,\n };\n } else if (index <= toastCount - toastsBeforeStack - 2) {\n return {\n top: `calc(${toasterHeight || 0}px -\n ${STACKED_TOAST_HEIGHT} \n + ${STACKED_TOAST_PEEK_HEIGHT} * 2)`,\n zIndex: 0,\n };\n }\n }\n }\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toastHeights]);\n};\n","import cx from \"classnames\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\n\nimport { Alert, type AlertProps } from \"../../Alert\";\nimport { Button, type ButtonProps } from \"../../Button\";\nimport { ProgressBar, type ProgressBarProps } from \"../../ProgressBar\";\nimport { useSwipe, type UseSwipeFn } from \"../../../hooks\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { addOrUpdateToastHeight } from \"./addOrUpdateToastHeight\";\nimport { toast } from \"../toast\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useToastPositionStyles } from \"./useToastPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\ntype ToastAction = Pick<ButtonProps, \"appearance\" | \"onClick\"> & {\n /** Visible button text. */\n label: string;\n};\n\nexport type ToastProps = {\n /** One required and one optional action; providing actions disables auto-dismiss. */\n actions?: { primary: ToastAction; secondary?: ToastAction };\n /** Extra classes on the positioning wrapper, not the alert. */\n containerClassName?: string;\n /** Overrides the toaster timeout; `false` keeps the toast open. */\n duration?: number | false;\n /** Optional detail rendered below the title. */\n message?: string;\n /** Runs whenever the toast is removed, regardless of the dismissal path. */\n onDismiss?: () => void;\n /** Shows determinate progress or an indeterminate loading bar. */\n progress?: ProgressBarProps[\"value\"] | \"indeterminate\";\n /** Extra classes on the alert, not the positioning wrapper. */\n toastClassName?: string;\n\n /**\n * When set, displays the AI mark inline after the toast title.\n * Use `true` for the sparkle only, or pass tooltip/popover configuration.\n */\n aiMark?: AlertProps[\"aiMark\"];\n /** Generated by status-specific toast methods and used for updates or dismissal. */\n id: string;\n /**\n * Runs only from the close button. Use `onDismiss` to observe every removal\n * path.\n */\n onClose?: AlertProps[\"onClose\"];\n /** Determines the alert treatment and status icon. */\n status: AlertProps[\"status\"];\n /** Rendered as the notification heading. */\n title: string;\n\n createdAt?: number;\n index?: number;\n isBelowStackIndex?: boolean;\n isStacked?: boolean;\n pausedStatus?: number | \"resumed\";\n};\n\n/** Renders one alert within a toast stack. */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n actions,\n containerClassName,\n createdAt,\n duration: durationProp,\n index = 0,\n isBelowStackIndex,\n isStacked,\n message,\n onClose,\n onDismiss,\n pausedStatus,\n progress,\n toastClassName,\n ...alertProps\n },\n ref,\n ) => {\n const { setToastHeights, extraToastsVisible, isDialogToaster } =\n useToasts();\n const closeToast = useCloseToast(styles.close);\n const toastPositionStyles = useToastPositionStyles(index);\n\n const toastWrapperRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<NodeJS.Timeout | undefined>();\n const pausedAtRef = useRef<number>(0);\n const createdAtRef = useRef<number>(createdAt ?? 0);\n const hasBeenStackedRef = useRef<boolean>(false);\n\n const [transitionClass, setTransitionClass] = useState<string | undefined>(\n styles.hidden,\n );\n const [toastOpened, setToastOpened] = useState<boolean>(false);\n\n const duration = actions ? false : durationProp;\n\n const alertClasses = cx(\n styles[\"toast-alert\"],\n toastClassName,\n transitionClass,\n );\n\n useEffect(() => {\n if (!toastOpened) {\n setTransitionClass(styles.open);\n\n setTimeout(() => {\n setTransitionClass(undefined);\n }, ANIMATION_DURATION);\n\n // Reduced motion may suppress the animation event.\n setToastOpened(true);\n }\n return () => {\n onDismiss?.();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (toastWrapperRef.current && toastOpened && !isStacked) {\n if ((isBelowStackIndex && extraToastsVisible) || isDialogToaster) {\n const delay = isDialogToaster ? 0 : ANIMATION_DURATION;\n\n setTimeout(() => {\n const height = toastWrapperRef.current?.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height ?? 0, setToastHeights);\n }, delay); // Wait for the width transition before measuring.\n } else {\n const height = toastWrapperRef.current.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height, setToastHeights);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n toastOpened,\n isStacked,\n extraToastsVisible,\n isDialogToaster,\n actions,\n message,\n alertProps.title,\n ]);\n\n useEffect(() => {\n if (duration && !isStacked) {\n if (!pausedStatus) {\n timerRef.current = setTimeout(\n () => closeToast(alertProps.id),\n duration,\n );\n return () => clearTimeout(timerRef.current);\n } else if (typeof pausedStatus === \"number\") {\n clearTimeout(timerRef.current);\n pausedAtRef.current = pausedStatus;\n } else if (pausedStatus === \"resumed\") {\n const remainingDuration =\n pausedAtRef.current === 0\n ? duration\n : duration + (createdAtRef.current || 0) - pausedAtRef.current;\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n pausedAtRef.current = 0;\n }, remainingDuration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [createdAtRef.current, duration, pausedStatus]);\n\n useEffect(() => {\n if (duration) {\n if (isStacked) {\n clearTimeout(timerRef.current);\n hasBeenStackedRef.current = true;\n } else if (\n !isStacked &&\n hasBeenStackedRef.current &&\n !(typeof pausedStatus === \"number\")\n ) {\n createdAtRef.current = Date.now();\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n hasBeenStackedRef.current = false;\n }, duration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isStacked, duration]);\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"right\") {\n toast.dismiss(alertProps.id);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n const alertCloseProps:\n | {\n onClose: AlertProps[\"onClose\"];\n }\n | Record<string, never> =\n isStacked && !extraToastsVisible\n ? {}\n : {\n onClose,\n };\n\n const hasMessage = message && message !== \"\";\n const hasProgress = progress != null;\n\n return (\n <div\n data-anv=\"toast\"\n className={containerClassName}\n style={toastPositionStyles ?? { top: \"1.5rem\" }}\n ref={toastWrapperRef}\n onAnimationStart={() => setToastOpened(true)}\n role={isStacked ? \"presentation\" : undefined}\n {...touchProps}\n >\n <Alert\n className={alertClasses}\n {...alertProps}\n {...alertCloseProps}\n ref={ref}\n tabIndex={isStacked && !extraToastsVisible ? -1 : 0}\n >\n {hasMessage || hasProgress || actions ? (\n <>\n {hasMessage ? (\n <div\n className={styles[\"message-container\"]}\n id={`toast-message-${alertProps.id}`}\n >\n {message}\n </div>\n ) : null}\n\n {hasProgress ? (\n <>\n {progress === \"indeterminate\" ? (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n indeterminate\n />\n ) : (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n value={progress}\n />\n )}\n </>\n ) : null}\n\n {actions ? (\n <div className={styles[\"alert-action\"]}>\n <Button\n appearance={actions.primary.appearance}\n onClick={actions.primary.onClick}\n size=\"small\"\n >\n {actions.primary.label}\n </Button>\n\n {actions.secondary && (\n <Button\n appearance={actions.secondary.appearance}\n onClick={actions.secondary.onClick}\n size=\"small\"\n >\n {actions.secondary.label}\n </Button>\n )}\n </div>\n ) : null}\n </>\n ) : null}\n </Alert>\n </div>\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import { type MutableRefObject, useEffect, useRef, useState } from \"react\";\nimport { getActiveElement } from \"../../../internal/functions\";\n\ntype HotkeyFocusParams = {\n disabled: boolean;\n hotkey: string;\n onHotkeyIn?: () => void | Promise<void>;\n onHotkeyOut?: () => void | Promise<void>;\n refToFocus: MutableRefObject<HTMLElement>;\n rootRef: MutableRefObject<HTMLElement>;\n};\n\n/**\n * Moves focus into a region on a hotkey and restores the previous target on\n * Escape.\n */\nexport const useHotkeyFocus = ({\n disabled,\n hotkey,\n onHotkeyIn,\n onHotkeyOut,\n refToFocus,\n rootRef,\n}: HotkeyFocusParams) => {\n const [shouldEscapeRefocus, setShouldEscapeRefocus] = useState(false);\n const previousFocusElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (disabled || typeof document === \"undefined\") return;\n const rootElement = rootRef.current;\n\n const blurHandler = (e: FocusEvent) => {\n if (e.relatedTarget && rootElement.contains(e.relatedTarget as Node)) {\n return;\n }\n // Manual focus departure cancels Escape restoration.\n setShouldEscapeRefocus(false);\n };\n\n const keyDownHandler = async (e: KeyboardEvent) => {\n const activeElement = getActiveElement(document);\n\n if (\n activeElement?.tagName.toLowerCase() !== \"input\" &&\n activeElement?.tagName.toLowerCase() !== \"textarea\" &&\n activeElement?.tagName.toLowerCase() !== \"pre\" &&\n e.key === hotkey\n ) {\n e.preventDefault();\n previousFocusElement.current = activeElement as HTMLElement | null;\n await onHotkeyIn?.();\n\n if (refToFocus.current) {\n refToFocus.current.focus();\n setShouldEscapeRefocus(true);\n if (refToFocus.current.scrollTo) {\n refToFocus.current.scrollTo();\n }\n }\n } else if (e.code === \"Escape\" && shouldEscapeRefocus) {\n onHotkeyOut?.();\n if (\n previousFocusElement.current &&\n previousFocusElement.current.tagName.toLowerCase() !== \"body\"\n ) {\n (previousFocusElement.current as HTMLElement).focus();\n } else {\n (activeElement as HTMLElement).blur();\n }\n }\n };\n\n document.addEventListener(\"keydown\", keyDownHandler);\n rootElement.addEventListener(\"focusout\", blurHandler);\n\n return () => {\n document.removeEventListener(\"keydown\", keyDownHandler);\n rootElement.removeEventListener(\"focusout\", blurHandler);\n };\n }, [\n hotkey,\n disabled,\n rootRef,\n shouldEscapeRefocus,\n onHotkeyIn,\n refToFocus,\n onHotkeyOut,\n ]);\n\n return { returnFocusRef: previousFocusElement };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\n/** Positions the expand button after the visible toast heights. */\nexport const useShowMoreButtonPositionStyles = (): CSSProperties => {\n const { toasts, toastHeights, toastsBeforeStack } = useToasts();\n const totalToasts = toasts.length;\n const extraSpace = totalToasts > toastsBeforeStack + 1 ? \"2rem\" : \"1rem\";\n const top = useMemo(() => {\n if (totalToasts > toastsBeforeStack) {\n const heightMap = new Map(toastHeights.map((t) => [t.id, t.height]));\n\n return toasts\n .slice(-toastsBeforeStack)\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined)\n .reduce((t, c) => t + c, 0);\n }\n return \"unset\";\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toasts, toastHeights, toastsBeforeStack]);\n\n return {\n // Compensate for rem-to-pixel rounding at non-default root sizes.\n top: `calc(${top}px + ${extraSpace} - 0.75px)`,\n position: \"absolute\",\n display: totalToasts > toastsBeforeStack ? undefined : \"none\",\n transition: \"top var(--a2-toaster-animation-duration) ease-in\",\n };\n};\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useRef,\n useCallback,\n useState,\n useMemo,\n type CSSProperties,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Button } from \"../../Button\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { SrOnly } from \"../../SrOnly\";\n\nimport {\n ANIMATION_DURATION,\n TOAST_STACK_PADDING,\n EXPAND_BUTTON_HEIGHT_WITH_PADDING,\n SCROLL_THRESHOLD,\n EVENT_THROTTLE_MS,\n} from \"./constants\";\nimport { Toast, type ToastProps } from \"./Toast\";\nimport { toast } from \"../toast\";\nimport { useHotkeyFocus } from \"./useHotkeyFocus\";\nimport { useShowMoreButtonPositionStyles } from \"./useShowMoreButtonPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastStackProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /**\n * Auto-dismiss timeout shared by the stack. Actionable toasts ignore it.\n * Defaults to `false`.\n */\n duration?: number | false;\n /**\n * Shortcut that expands the stack, focuses its first toast, and is named in\n * the live region. Defaults to `\"t\"`.\n */\n focusKey?: string;\n /** Number of newest toasts shown before older ones stack. Defaults to `3`. */\n toastsBeforeStack?: number;\n /** Ordered toast entries managed by the provider. */\n toasts: ToastProps[];\n};\n\n/** Positions, collapses, and manages focus for the active notifications. */\nexport const ToastStack = forwardRef<HTMLDivElement, ToastStackProps>(\n (\n {\n className,\n duration = false,\n focusKey = \"t\",\n toasts,\n toastsBeforeStack = 3,\n ...props\n },\n ref,\n ) => {\n const toastStackRef = useRef<HTMLDivElement>(null);\n const firstToastRef = useRef<HTMLDivElement | null>(null);\n const mergedToastStackRef = useMergeRefs([toastStackRef, ref]);\n const {\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n getToastStackHeight,\n isDialogToaster,\n } = useToasts();\n const toastCount = toasts.length;\n const isToastStackEmpty = toastCount === 0;\n\n const lastToastCount = useRef<number>(0);\n const resizeThrottleRef = useRef(false);\n const resizeTimerRef = useRef<ReturnType<typeof setTimeout>>();\n const scrollThrottleRef = useRef(false);\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n const [toastStackHeight, setToastStackHeight] = useState<number>(0);\n const [disableAnimations, setDisableAnimations] = useState(false);\n const [toastPausedStatus, setToastPausedStatus] =\n useState<ToastProps[\"pausedStatus\"]>(undefined);\n const [showTopGradient, setShowTopGradient] = useState(false);\n const [showBottomGradient, setShowBottomGradient] = useState(true);\n // Avoid reading `window` during SSR.\n const [viewportHeight, setViewportHeight] = useState<number>(0);\n\n const isOverflowing =\n toastStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n useEffect(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n\n const handleResize = () => {\n if (resizeThrottleRef.current) return;\n\n resizeThrottleRef.current = true;\n resizeTimerRef.current = setTimeout(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n resizeThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n clearTimeout(resizeTimerRef.current);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n if (toastCount === 0) {\n setToastPausedStatus(undefined);\n }\n }, [toastCount]);\n\n useEffect(() => {\n const toastStackElement = toastStackRef.current;\n\n if (!extraToastsVisible) {\n setShowTopGradient(false);\n setShowBottomGradient(isOverflowing);\n return;\n }\n\n if (!toastStackElement) {\n setShowTopGradient(false);\n setShowBottomGradient(true);\n return;\n }\n\n const updateGradients = () => {\n const { scrollTop, scrollHeight, clientHeight } = toastStackElement;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n setShowTopGradient(scrollTop > 0);\n setShowBottomGradient(distanceFromBottom > SCROLL_THRESHOLD);\n };\n\n const handleScroll = () => {\n if (scrollThrottleRef.current) return;\n\n scrollThrottleRef.current = true;\n scrollTimerRef.current = setTimeout(() => {\n updateGradients();\n scrollThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n updateGradients();\n\n toastStackElement.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n });\n return () => {\n clearTimeout(scrollTimerRef.current);\n toastStackElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [extraToastsVisible, isOverflowing]);\n\n useEffect(() => {\n const scrollListener = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n toastStackRef.current?.scrollTo({\n top: toastStackRef.current.scrollTop + e.deltaY,\n });\n };\n\n if (isDialogToaster) {\n // Opening a dialog would otherwise replay existing toast animations.\n setDisableAnimations(isDialogToaster);\n const animationTimer = setTimeout(() => {\n setDisableAnimations(false);\n }, 500);\n\n // Keep wheel scrolling inside the top-layer toast stack.\n const toastStackRefCurrent = toastStackRef.current;\n toastStackRefCurrent?.addEventListener(\"wheel\", scrollListener, {\n passive: false,\n });\n\n return () => {\n clearTimeout(animationTimer);\n toastStackRefCurrent?.removeEventListener(\"wheel\", scrollListener);\n };\n }\n }, [isDialogToaster]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n if (\n toastCount > lastToastCount.current ||\n isDialogToaster ||\n extraToastsVisible\n ) {\n setToastStackHeight(getToastStackHeight());\n } else {\n // Preserve the old height until the closing animation finishes.\n timer = setTimeout(\n () => setToastStackHeight(getToastStackHeight()),\n ANIMATION_DURATION - 10,\n );\n }\n lastToastCount.current = toastCount;\n return () => {\n clearTimeout(timer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getToastStackHeight, isDialogToaster, extraToastsVisible]);\n\n useEffect(() => {\n setToastsBeforeStack(toastsBeforeStack);\n }, [setToastsBeforeStack, toastsBeforeStack]);\n\n const handleCollapseStack = useCallback(() => {\n setExtraToastsVisible(false);\n setToastPausedStatus(\"resumed\");\n\n if (toastStackRef.current?.scrollTo) {\n toastStackRef.current?.scrollTo(0, 0);\n }\n }, [setExtraToastsVisible]);\n\n const handleResumeToastTimers = useCallback(() => {\n setToastPausedStatus(\"resumed\");\n }, []);\n\n const { returnFocusRef } = useHotkeyFocus({\n disabled: isToastStackEmpty,\n hotkey: focusKey,\n onHotkeyIn: async () => {\n setExtraToastsVisible(true);\n return new Promise((resolve) => {\n // Focus waits until expansion renders the hidden toast.\n setTimeout(() => {\n resolve();\n }, 100);\n });\n },\n onHotkeyOut: () => {\n handleResumeToastTimers();\n },\n refToFocus: firstToastRef as React.MutableRefObject<HTMLElement>,\n rootRef: toastStackRef as React.MutableRefObject<HTMLElement>,\n });\n\n const showMoreButtonPositionStyles = useShowMoreButtonPositionStyles();\n\n const showExpandCollapseButton = toastCount > toastsBeforeStack;\n const expandCollapseButtonText = extraToastsVisible\n ? \"Collapse all\"\n : \"Expand all\";\n\n // Expansion needs the latest measured height before state catches up.\n const currentStackHeight = useMemo(\n () => getToastStackHeight(),\n [getToastStackHeight],\n );\n\n // Reserve the button's space when deciding whether it remains in view.\n const hasOverflow =\n currentStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n const expandCollapseButtonTop: CSSProperties[\"top\"] = hasOverflow\n ? `calc(100dvh - 4.5rem)`\n : extraToastsVisible\n ? `calc(${currentStackHeight}px - 1rem)`\n : showMoreButtonPositionStyles.top;\n\n const toastStackClasses = cx(styles[\"toast-stack\"], className, {\n [styles[\"show-more-button\"]]:\n showExpandCollapseButton && !extraToastsVisible,\n [styles[\"show-extra-toast\"]]: extraToastsVisible,\n [styles[\"disable-animations\"]]: disableAnimations,\n [styles[\"has-overflow\"]]: hasOverflow,\n });\n\n const handleToastStackFocusHover = () => {\n if (toastPausedStatus === \"resumed\" || toastPausedStatus === undefined) {\n setToastPausedStatus(Date.now());\n }\n };\n\n const handleToastStackOnBlur = () => {\n if (!toastStackRef.current?.matches(\":focus-within\")) {\n handleResumeToastTimers();\n }\n };\n\n const handleExpandCollapseClick = () => {\n if (extraToastsVisible) {\n handleCollapseStack();\n } else {\n setExtraToastsVisible(true);\n }\n };\n\n let toastStackHeightStyle: CSSProperties[\"height\"] = 0;\n\n if (extraToastsVisible) {\n // The stack uses content-box, so its padding is outside this height.\n toastStackHeightStyle =\n \"calc(100vh - var(--a2-mod-toaster-stack-padding) * 2)\";\n } else if (toastCount > toastsBeforeStack) {\n toastStackHeightStyle = `calc(${toastStackHeight}px + 3rem + var(--a2-mod-toaster-stack-padding))`;\n } else {\n toastStackHeightStyle = toastStackHeight;\n }\n\n return (\n <>\n <div\n data-anv=\"ToastStack\"\n className={toastStackClasses}\n ref={mergedToastStackRef}\n onMouseOver={handleToastStackFocusHover}\n onMouseLeave={handleResumeToastTimers}\n onFocus={handleToastStackFocusHover}\n onBlur={handleToastStackOnBlur}\n style={{\n height: toastStackHeightStyle,\n }}\n {...props}\n >\n {toasts.map(({ toastClassName, onClose, ...toastProps }, index) => {\n const isStacked =\n !extraToastsVisible && index < toastCount - toastsBeforeStack;\n\n const isLastToastDisplayed =\n index === toastCount - toastsBeforeStack;\n\n const isHidden = index < toastCount - toastsBeforeStack - 2;\n\n const toastClasses = cx(styles.toast, toastClassName);\n const toastContainerClasses = cx(styles[\"toast-wrapper\"], {\n [styles.stacked]: isStacked || isLastToastDisplayed,\n [styles[\"stack-one\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 1,\n [styles[\"stack-two\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 2,\n [styles[\"stacked-extra\"]]: isHidden,\n [styles[\"stacked-show-extra\"]]: extraToastsVisible,\n });\n\n const handleOnClose = (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n onClose?.(e);\n returnFocusRef.current?.focus();\n toast.dismiss(toastProps.id);\n };\n\n return (\n <Toast\n containerClassName={toastContainerClasses}\n duration={duration}\n index={index}\n isStacked={isStacked}\n isBelowStackIndex={index < toastCount - toastsBeforeStack}\n key={toastProps.id}\n onClose={handleOnClose}\n pausedStatus={toastPausedStatus}\n toastClassName={toastClasses}\n ref={index === 0 ? firstToastRef : undefined}\n {...toastProps}\n />\n );\n })}\n {showExpandCollapseButton && (\n <div\n className={cx(styles[\"show-more-button-container\"], {\n [styles[\"fixed-position\"]]: hasOverflow,\n })}\n style={{ top: expandCollapseButtonTop }}\n >\n <Button\n className={styles[\"show-collapse-button\"]}\n onClick={handleExpandCollapseClick}\n appearance=\"secondary\"\n >\n {expandCollapseButtonText}\n </Button>\n </div>\n )}\n {/* Keeps the last toast scrollable above the fixed button. */}\n {extraToastsVisible && hasOverflow && (\n <div\n className={styles[\"toast-stack-spacer\"]}\n style={{ top: `calc(${currentStackHeight}px + 2rem)` }}\n aria-hidden=\"true\"\n />\n )}\n <SrOnly aria-live=\"polite\">\n New toast message appeared. Press the {focusKey} key to focus on the\n toast messages. Press escape to return focus to previous position.\n </SrOnly>\n </div>\n {hasOverflow && (\n <>\n <div\n className={cx(styles[\"toast-stack-gradient-top\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showTopGradient,\n })}\n aria-hidden=\"true\"\n />\n <div\n className={cx(styles[\"toast-stack-gradient-bottom\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showBottomGradient,\n })}\n aria-hidden=\"true\"\n />\n </>\n )}\n </>\n );\n },\n);\n\nToastStack.displayName = \"ToastStack\";\n","import cx from \"classnames\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useCallback,\n useId,\n useRef,\n useState,\n} from \"react\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { ToastProvider } from \"./ToastProvider\";\nimport type {\n ToastCustomEventDetail,\n ToastCustomEventDetailAdd,\n ToastCustomEventDetailUpdate,\n ToastUpdateProps,\n} from \"./types\";\nimport type { ToastProps } from \"./Toast\";\nimport { ToastStack, type ToastStackProps } from \"./ToastStack\";\nimport { ToasterPopover } from \"./ToasterPopover\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastEventType = {\n /** Lifecycle operation reported by the toaster. */\n eventType: \"add\" | \"update\" | \"dismiss\" | \"dismiss-all\";\n /** Number of toasts remaining when the callback runs. */\n toastCount: number;\n /** Toast affected by the operation. Omitted for `dismiss-all`. */\n id?: string;\n /** Toaster that handled the operation. */\n toasterId?: string;\n /** Values used to add or update the toast. */\n toastProps?: ToastProps | ToastUpdateProps;\n};\n\nexport type ToasterProps = ComponentPropsWithoutRef<\"div\"> &\n Omit<ToastStackProps, \"toasts\"> & {\n /**\n * Prevents this instance from handling shared toast events. Defaults to\n * `false`.\n */\n disableEvents?: boolean;\n /** Identifies this toaster in lifecycle callbacks and targeted add events. */\n id: string;\n /** Runs after a shared toast event is handled. */\n onToastEvent?: (toastEvent: ToastEventType) => void;\n /**\n * Callback function that is called with the number of toasts this toaster is\n * rendering, whenever that number changes. Unlike `onToastEvent` it also\n * reports dismissals that dispatch no event, such as an elapsed `duration`,\n * so it is safe to gate work on.\n */\n onToastCountChange?: (toastCount: number) => void;\n };\n\nconst DIALOG_TOASTER_STORAGE_KEY = \"dialog-toasters\";\n\n/**\n * The instance token distinguishes dialog toasters that share an ID, while\n * bare IDs remain readable for compatibility with older bundles.\n */\nconst toasterIdFromEntry = (entry: string) => {\n const separator = entry.lastIndexOf(\"#\");\n return separator === -1 ? entry : entry.slice(0, separator);\n};\n\ntype DialogToasterCustomEventDetail = {\n eventType: \"dialog-toaster\";\n};\ntype DialogToasterCustomEvent = CustomEvent<DialogToasterCustomEventDetail>;\n\n/** Event-driven toaster content shared by page and dialog hosts. */\nexport const ToasterContent = forwardRef<HTMLDivElement, ToasterProps>(\n (\n {\n className,\n disableEvents = false,\n id,\n onToastEvent,\n onToastCountChange,\n\n duration,\n focusKey,\n toastsBeforeStack,\n ...props\n },\n ref,\n ) => {\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const { toasts, setToasts, isDialogToaster } = useToasts();\n\n // Event listeners stay mounted while these values change.\n const disableEventsRef = useRef<boolean>(disableEvents);\n const toastCountRef = useRef<number>(0);\n const isDialogToasterRef = useRef<boolean>(isDialogToaster);\n const isRegisteredDialogToasterRef = useRef<boolean>(false);\n const instanceToken = useId();\n const dialogToasterEntry = `${id}#${instanceToken}`;\n const onToastCountChangeRef = useRef(onToastCountChange);\n\n const [shouldHideToaster, setShouldHideToaster] = useState(false);\n\n /** Persists each instance so dialogs sharing an ID unregister independently. */\n const updateDialogToasterStorage = useCallback(\n (isDialogToaster: boolean) => {\n if (isDialogToaster === isRegisteredDialogToasterRef.current) {\n return;\n }\n isRegisteredDialogToasterRef.current = isDialogToaster;\n\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n\n if (isDialogToaster) {\n dialogToasters.push(dialogToasterEntry);\n } else {\n const index = dialogToasters.indexOf(dialogToasterEntry);\n if (index === -1) {\n return;\n }\n dialogToasters.splice(index, 1);\n }\n\n window?.sessionStorage.setItem(\n DIALOG_TOASTER_STORAGE_KEY,\n JSON.stringify(dialogToasters),\n );\n },\n [dialogToasterEntry],\n );\n\n useEffect(() => {\n disableEventsRef.current = disableEvents;\n }, [disableEvents]);\n\n useEffect(() => {\n onToastCountChangeRef.current = onToastCountChange;\n }, [onToastCountChange]);\n\n useEffect(() => {\n toastCountRef.current = toasts.length;\n onToastCountChangeRef.current?.(toasts.length);\n }, [toasts.length]);\n\n useEffect(() => {\n updateDialogToasterStorage(isDialogToaster);\n isDialogToasterRef.current = isDialogToaster;\n\n const DialogToasterEvent: DialogToasterCustomEvent =\n new CustomEvent<DialogToasterCustomEventDetail>(\"dialog-toaster\", {\n composed: true,\n detail: {\n eventType: \"dialog-toaster\",\n },\n });\n dispatchEvent(DialogToasterEvent);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDialogToaster]);\n\n const closeToast = useCloseToast(styles.close);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout | undefined;\n updateDialogToasterStorage(isDialogToaster);\n\n const toastEventListener = (e: Event) => {\n if (disableEventsRef.current) {\n return;\n }\n\n const { eventType, ...toastProps } = (\n e as CustomEvent<ToastCustomEventDetail>\n ).detail;\n\n if (eventType === \"add\") {\n const toastAddProps = toastProps as ToastCustomEventDetailAdd;\n\n if (!toastAddProps.toasterId || toastAddProps.toasterId === id) {\n setToasts((prev) => [...prev, toastProps as ToastProps]);\n }\n\n // allow for state change to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"add\",\n toastCount: toastCountRef.current,\n id: toastAddProps.id,\n toasterId: id,\n toastProps: toastAddProps,\n });\n });\n } else if (eventType === \"update\") {\n const toastUpdateProps = toastProps as ToastCustomEventDetailUpdate;\n\n setToasts((prev) => {\n return prev.map((t) => {\n if (t.id === toastUpdateProps.id) {\n return {\n ...t,\n ...toastUpdateProps,\n };\n } else {\n return t;\n }\n });\n });\n\n onToastEvent?.({\n eventType: \"update\",\n toastCount: toastCountRef.current,\n id: toastUpdateProps.id,\n toasterId: id,\n toastProps: toastUpdateProps,\n });\n } else if (eventType === \"dismiss\") {\n if (toastProps.id) {\n closeToast(toastProps.id);\n\n // allow for animation to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"dismiss\",\n toastCount: toastCountRef.current,\n id: toastProps.id,\n toasterId: id,\n });\n }, ANIMATION_DURATION);\n } else {\n closeToast();\n\n onToastEvent?.({\n eventType: \"dismiss-all\",\n toastCount: 0,\n toasterId: id,\n });\n }\n }\n };\n\n const dialogToasterEventListener = (e: Event) => {\n const { eventType } = (e as CustomEvent<DialogToasterCustomEventDetail>)\n .detail;\n if (eventType === \"dialog-toaster\") {\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n if (dialogToasters.length > 0) {\n if (\n isDialogToasterRef.current &&\n toasterIdFromEntry(dialogToasters[dialogToasters.length - 1]) ===\n id\n ) {\n setShouldHideToaster(false);\n } else {\n setShouldHideToaster(true);\n }\n } else {\n setShouldHideToaster(false);\n }\n }\n };\n\n const onPageRefreshListener = () => {\n window?.sessionStorage.removeItem(DIALOG_TOASTER_STORAGE_KEY);\n };\n\n window?.addEventListener(\"hammer-toast\", toastEventListener);\n window?.addEventListener(\"dialog-toaster\", dialogToasterEventListener);\n window?.addEventListener(\"beforeunload\", onPageRefreshListener);\n\n return () => {\n window?.removeEventListener(\"hammer-toast\", toastEventListener);\n window?.removeEventListener(\n \"dialog-toaster\",\n dialogToasterEventListener,\n );\n window?.removeEventListener(\"beforeunload\", onPageRefreshListener);\n\n clearTimeout(timeout);\n updateDialogToasterStorage(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const toasterClasses = cx(styles.toaster, {\n [styles[\"hidden\"]]: shouldHideToaster,\n [`${className}`]: className != null,\n });\n\n return (\n <div\n data-anv=\"toaster\"\n data-toaster-id={id}\n aria-hidden={shouldHideToaster}\n className={toasterClasses}\n ref={mergedToasterRef}\n {...props}\n >\n <ToastStack\n toasts={toasts}\n duration={duration}\n focusKey={focusKey}\n toastsBeforeStack={toastsBeforeStack}\n />\n </div>\n );\n },\n);\n\nexport const Toaster = forwardRef<HTMLDivElement, ToasterProps>(\n (props, ref) => {\n return (\n <ToastProvider>\n <ToasterPopover>\n <ToasterContent {...props} ref={ref} />\n </ToasterPopover>\n </ToastProvider>\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\nToasterContent.displayName = \"ToasterContent\";\n"],"names":["toasts","uuid","promise","isDialogToaster"],"mappings":"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","x_google_ignoreList":[5,6,7]}
|
|
1
|
+
{"version":3,"file":"Toaster-SqkX0Kes.js","sources":["../src/components/Toast/internal/ToastProvider.tsx","../src/components/Toast/internal/useToasts.ts","../src/components/Toast/internal/ToasterPopover.tsx","../src/components/Toast/internal/constants.ts","../src/components/Toast/internal/addOrUpdateToastHeight.ts","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/v4.js","../src/components/Toast/toast.ts","../src/components/Toast/internal/useCloseToast.tsx","../src/components/Toast/internal/useToastPositionStyles.ts","../src/components/Toast/internal/Toast.tsx","../src/components/Toast/internal/useHotkeyFocus.tsx","../src/components/Toast/internal/useShowMoreButtonPositionStyles.ts","../src/components/Toast/internal/ToastStack.tsx","../src/components/Toast/internal/Toaster.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport {\n createContext,\n type Dispatch,\n type FC,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type { ToastProps } from \"./Toast\";\n\nexport type ToastProviderProps = PropsWithChildren<{\n /** Coordinates top-layer ordering for a toaster inside a dialog. Defaults to `false`. */\n isDialogToaster?: boolean;\n}>;\n\nexport type ToastProviderContextProps = {\n toasts: ToastProps[];\n setToasts: Dispatch<SetStateAction<ToastProps[]>>;\n toastHeights: { id: string; height: number }[];\n setToastHeights: Dispatch<\n SetStateAction<ToastProviderContextProps[\"toastHeights\"]>\n >;\n getToastStackHeight: (index?: number) => number;\n toastsBeforeStack: number;\n setToastsBeforeStack: Dispatch<SetStateAction<number>>;\n extraToastsVisible: boolean;\n setExtraToastsVisible: Dispatch<SetStateAction<boolean>>;\n isDialogToaster: boolean;\n};\n\nexport const ToastProviderContext = createContext<ToastProviderContextProps>({\n toasts: [],\n setToasts: () => [],\n toastHeights: [],\n setToastHeights: () => [],\n getToastStackHeight: () => 0,\n toastsBeforeStack: 3,\n setToastsBeforeStack: () => [],\n extraToastsVisible: false,\n setExtraToastsVisible: () => [],\n isDialogToaster: false,\n});\n\nexport const getSetToasts: {\n setToasts: ToastProviderContextProps[\"setToasts\"];\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"];\n} = {\n setToasts: () => [],\n setToastHeights: () => [],\n};\n\n/** Owns notification state and measurements for one toaster. */\nexport const ToastProvider: FC<ToastProviderProps> = ({\n children,\n isDialogToaster: isDialogToasterProp = false,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const [toastHeights, setToastHeights] = useState<\n ToastProviderContextProps[\"toastHeights\"]\n >([]);\n const [toastsBeforeStack, setToastsBeforeStack] = useState<number>(3);\n const [extraToastsVisible, setExtraToastsVisible] = useState<boolean>(false);\n getSetToasts.setToasts = setToasts;\n getSetToasts.setToastHeights = setToastHeights;\n const [isDialogToaster, setIsDialogToaster] =\n useState<boolean>(isDialogToasterProp);\n\n const removeDuplicateToasts = (toasts: ToastProps[]) => {\n const toastIds = new Set<ToastProps[\"id\"]>();\n const uniqueToasts = toasts.filter((toast) => {\n if (toastIds.has(toast.id)) {\n console.error(\n `Encountered toast with duplicate id ${toast.id}. Each toast id needs to be unique.`,\n );\n return false;\n } else {\n toastIds.add(toast.id);\n return true;\n }\n });\n return uniqueToasts;\n };\n\n useEffect(() => {\n const uniqueToasts = removeDuplicateToasts(toasts);\n if (toasts.length !== uniqueToasts.length) {\n setToasts(uniqueToasts);\n }\n }, [toasts]);\n\n useEffect(() => {\n setIsDialogToaster(isDialogToasterProp);\n }, [isDialogToasterProp]);\n\n // Memoize the ID→height map once per toastHeights change, so\n // getToastStackHeight (called once per toast) doesn't rebuild it each time.\n const heightMap = useMemo(\n () => new Map(toastHeights.map((t) => [t.id, t.height])),\n [toastHeights],\n );\n\n const getToastStackHeight = useCallback(\n (index?: number) => {\n const relevantToasts =\n index !== undefined ? toasts.slice(index + 1) : toasts;\n\n const heights = relevantToasts\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined);\n\n if (heights.length > 0) {\n if (extraToastsVisible) {\n return heights.reduce((total, current) => total + current);\n }\n return heights\n .slice(-toastsBeforeStack)\n .reduce((total, current) => total + current);\n }\n return 0;\n },\n [toasts, heightMap, extraToastsVisible, toastsBeforeStack],\n );\n\n const value = useMemo(\n () => ({\n toasts,\n setToasts,\n toastHeights,\n setToastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n isDialogToaster,\n }),\n [\n extraToastsVisible,\n getToastStackHeight,\n toastHeights,\n toasts,\n toastsBeforeStack,\n isDialogToaster,\n ],\n );\n\n return (\n <ToastProviderContext.Provider value={value}>\n {children}\n </ToastProviderContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { ToastProviderContext } from \"./ToastProvider\";\n\n/** Returns the nearest toast provider state; throws outside `ToastProvider`. */\nexport const useToasts = () => {\n const context = useContext(ToastProviderContext);\n\n if (context == null) {\n throw new Error(\"useToasts must be wrapped in <ToastProvider />\");\n }\n\n return context;\n};\n","import {\n forwardRef,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../../hooks\";\nimport { safeHidePopover, safeShowPopover } from \"../../../internal/functions\";\n\nimport { useToasts } from \"./useToasts\";\n\nimport {\n portalScopeClassNames,\n usePortalScopeStyle,\n} from \"../../../internal/functions/portalScopeClassNames\";\n\ntype ToasterPopoverProps = PropsWithChildren;\n\n/**\n * Native `[popover]` UA styles (`inset: 0`, `margin: auto`, `border: solid`)\n * collapse this wrapper to a centered box when the inner toaster is\n * `position: fixed`. Inline so the reset is not nested under PostCSS's\n * `.anvil2` descendant wrapper — this node self-applies `.anvil2` and often\n * has no ancestor scope.\n */\nconst toasterPopoverUaReset = {\n background: \"none\",\n border: \"none\",\n inset: \"auto\",\n margin: 0,\n padding: 0,\n right: 0,\n top: 0,\n} as const;\n\n/** Keeps active notifications in the browser's top layer. */\nexport const ToasterPopover = forwardRef<HTMLDivElement, ToasterPopoverProps>(\n (props, ref) => {\n const { isDialogToaster } = useToasts();\n const popoverRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([popoverRef, ref]);\n\n const { toasts } = useToasts();\n const toastCount = useMemo(() => toasts.length, [toasts]);\n\n useEffect(() => {\n if (!popoverRef.current) return;\n const currentPopover = popoverRef.current;\n let timeout: NodeJS.Timeout | undefined;\n\n if (toastCount > 0) {\n if (isDialogToaster) {\n // Reopening puts a pre-existing popover above the newly opened dialog.\n timeout = setTimeout(() => {\n safeHidePopover(currentPopover);\n safeShowPopover(currentPopover);\n });\n } else {\n safeShowPopover(currentPopover);\n }\n } else {\n safeHidePopover(currentPopover);\n }\n\n return () => {\n if (timeout) clearTimeout(timeout);\n if (toastCount === 0) {\n safeHidePopover(currentPopover);\n }\n };\n }, [toastCount, isDialogToaster]);\n\n const portalStyle = usePortalScopeStyle(toasterPopoverUaReset);\n\n return (\n <div\n ref={combinedRef}\n // The toaster renders in a native `popover` (top layer), escaping any\n // ancestor `AnvilProvider`'s `.anvil2` scope; self-apply it so portaled\n // toasts still receive the `--a2-*` tokens and scoped component rules.\n className={portalScopeClassNames}\n data-anv=\"toaster-popover\"\n popover=\"manual\"\n style={portalStyle}\n >\n {props.children}\n </div>\n );\n },\n);\n\nToasterPopover.displayName = \"ToasterPopover\";\n","export const ANIMATION_DURATION = 300;\n\nexport const TOAST_STACK_PADDING = 48;\n\nexport const EXPAND_BUTTON_HEIGHT_WITH_PADDING = 64;\n\nexport const SCROLL_THRESHOLD = 64;\n\nexport const EVENT_THROTTLE_MS = 16;\n","import type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/** Records the latest measured height for a toast. */\nexport const addOrUpdateToastHeight = (\n toastId: string,\n toastHeight: number,\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n) => {\n setToastHeights((prev) => {\n if (prev.find((t) => t.id === toastId)) {\n return prev.map((t) => {\n if (t.id === toastId) {\n return { ...t, height: toastHeight };\n }\n return t;\n });\n }\n return [\n ...prev,\n {\n id: toastId,\n height: toastHeight,\n },\n ];\n });\n};\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { MouseEvent } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport type { Status } from \"../../types\";\nimport type {\n ToastCustomEventDetail,\n ToastUpdateProps,\n} from \"./internal/types\";\nimport type { ToastProps } from \"./internal/Toast\";\n\n/** Content and behavior shared by the status-specific toast methods. */\nexport type toastProps = Pick<\n ToastProps,\n | \"actions\"\n | \"aiMark\"\n | \"containerClassName\"\n | \"duration\"\n | \"message\"\n | \"onClose\"\n | \"onDismiss\"\n | \"progress\"\n | \"title\"\n | \"toastClassName\"\n>;\n\n/**\n * Imperative methods for adding, updating, and dismissing notifications in a\n * mounted {@link Toaster}.\n */\nexport const toast = () => {\n const toastMethods = [\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"promise\",\n \"update\",\n \"dismiss\",\n ];\n console.error(\n \"Please use one of the following toast methods:\\n\",\n ...toastMethods.map((m) => `\\ttoast.${m}()\\n`),\n );\n};\ntype ToastCustomEvent = CustomEvent<ToastCustomEventDetail>;\n\nconst TOAST_EVENT_NAME = \"hammer-toast\";\n\nconst TOAST_TYPES: readonly Status[] = [\"info\", \"success\", \"warning\", \"danger\"];\n\nconst methods: Record<string, (props: toastProps) => string> = {};\n\nTOAST_TYPES.forEach((type) => {\n methods[type] = (props: toastProps) => {\n const uniqueId = uuid();\n\n const ToastAddEvent: ToastCustomEvent =\n new CustomEvent<ToastCustomEventDetail>(TOAST_EVENT_NAME, {\n composed: true,\n detail: {\n id: uniqueId,\n eventType: \"add\",\n status: type,\n createdAt: Date.now(),\n ...props,\n },\n });\n dispatchEvent(ToastAddEvent);\n return uniqueId;\n };\n});\n\nconst update = (id: string, props: Omit<ToastUpdateProps, \"id\">) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"update\",\n id,\n ...props,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst dismiss = (id?: string) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"dismiss\",\n id,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst promise = async (\n promise: Promise<string>,\n toastConfig: {\n /** Content shown while the promise is pending. */\n loading: toastProps;\n /** Maps the resolved value to the result toast. */\n success: (data: string) => Omit<toastProps, \"id\">;\n /** Maps the rejection value to the result toast. */\n error: (error: string) => Omit<toastProps, \"id\">;\n },\n): Promise<string> => {\n const { onClose, ...loadingToastConfig } = toastConfig.loading;\n let closedWhileLoading = false;\n\n const onCloseWhileLoading: toastProps[\"onClose\"] = (\n e: MouseEvent<HTMLButtonElement>,\n ) => {\n toastConfig.loading.onClose?.(e);\n closedWhileLoading = true;\n };\n\n const id = toast.info({\n ...loadingToastConfig,\n onClose: onCloseWhileLoading,\n duration: false,\n });\n await Promise.resolve(promise)\n .then((res) => {\n if (closedWhileLoading) {\n toast.success({\n ...toastConfig.success(res),\n });\n } else {\n toast.update(id, {\n ...toastConfig.success(res),\n status: \"success\",\n });\n }\n })\n .catch((err) => {\n if (closedWhileLoading) {\n toast.danger({\n ...toastConfig.error(err),\n });\n } else {\n toast.update(id, {\n ...toastConfig.error(err),\n status: \"danger\",\n });\n }\n });\n return id;\n};\n\n/**\n * Adds an informational toast and returns its generated ID.\n */\ntoast.info = methods.info;\n/**\n * Adds a success toast and returns its generated ID.\n */\ntoast.success = methods.success;\n/**\n * Adds a warning toast and returns its generated ID.\n */\ntoast.warning = methods.warning;\n/**\n * Adds a danger toast and returns its generated ID.\n */\ntoast.danger = methods.danger;\n/**\n * Updates the toast with the matching ID.\n */\ntoast.update = update;\n/**\n * Dismisses the matching toast, or every toast when no ID is provided.\n */\ntoast.dismiss = dismiss;\n/**\n * Shows a non-expiring loading toast, then replaces it with the resolved or\n * rejected configuration. Closing it while pending creates a new result toast.\n *\n * @example\n * ```ts\n * import { toast } from \"@servicetitan/anvil2\";\n * toast.promise(\n * new Promise((resolve, reject) => {\n * setTimeout(() => {\n * resolve(\"This is a success toast\");\n * }, 2000);\n * }),\n * {\n * loading: {\n * message: \"This is a loading toast\",\n * title: \"Loading\",\n * },\n * success: (data) => ({\n * message: data,\n * title: \"Success\",\n * }),\n * error: (error) => ({\n * message: error,\n * title: \"Error\",\n * }),\n * },\n * );\n * ```\n */\ntoast.promise = promise;\n","import type { ToastProps } from \"./Toast\";\nimport { useToasts } from \"./useToasts\";\nimport { ANIMATION_DURATION } from \"./constants\";\nimport type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/**\n * Removes one toast by id, or every toast when no id is given. Returns the\n * previous array unchanged when there is nothing to remove, so React can bail\n * out of re-rendering every toast context consumer.\n */\nconst withoutToast = <T extends { id: string }>(prev: T[], id?: string) => {\n if (prev.length === 0) {\n return prev;\n }\n if (!id) {\n return [];\n }\n const next = prev.filter((t) => t.id !== id);\n return next.length === prev.length ? prev : next;\n};\n\nconst setToastsAfterClose = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n id?: string,\n) => {\n setToasts((prev) => withoutToast(prev, id));\n setToastHeights((prev) => withoutToast(prev, id));\n};\n\nconst closeToast = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n closingToastClassName: ToastProps[\"toastClassName\"],\n id?: string,\n) => {\n const prefersReducedMotion = globalThis.matchMedia(\n `(prefers-reduced-motion: reduce)`,\n ).matches;\n\n if (prefersReducedMotion) {\n setToastsAfterClose(setToasts, setToastHeights, id);\n } else {\n setToasts((prev) => {\n let hasClosingToast = false;\n const next = prev.map((t) => {\n if (!id || t.id === id) {\n hasClosingToast = true;\n return {\n ...t,\n toastClassName: closingToastClassName,\n };\n }\n return t;\n });\n return hasClosingToast ? next : prev;\n });\n // Keep the entry mounted until its closing animation finishes.\n setTimeout(() => {\n setToastsAfterClose(setToasts, setToastHeights, id);\n }, ANIMATION_DURATION - 10);\n }\n};\n\n/** Returns a callback that closes one toast, or every toast when passed no ID. */\nexport const useCloseToast = (\n closingToastClassName: ToastProps[\"toastClassName\"],\n) => {\n const { setToasts, setToastHeights } = useToasts();\n return (id?: string) => {\n closeToast(setToasts, setToastHeights, closingToastClassName, id);\n };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\nconst STACKED_TOAST_HEIGHT = \"5.3125rem\";\nconst STACKED_TOAST_PEEK_HEIGHT = \"1rem\";\n\n/** Positions one toast within the visible or collapsed stack. */\nexport const useToastPositionStyles = (\n index: number,\n): CSSProperties | undefined => {\n const {\n toasts,\n toastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n extraToastsVisible,\n } = useToasts();\n const toastCount = toasts.length;\n const toasterHeight = getToastStackHeight(index);\n\n return useMemo(() => {\n if (index === toastCount - 1) {\n return {\n top: 0,\n zIndex: 3,\n };\n } else if (\n extraToastsVisible ||\n (!extraToastsVisible &&\n (toastCount <= toastsBeforeStack ||\n (toastCount > toastsBeforeStack &&\n index >= toastCount - toastsBeforeStack)))\n ) {\n return {\n top: toasterHeight,\n };\n } else {\n if (toastCount > toastsBeforeStack) {\n if (index === toastCount - toastsBeforeStack - 1) {\n return {\n top: `calc(${toasterHeight || 0}px - ${STACKED_TOAST_HEIGHT} +\n ${STACKED_TOAST_PEEK_HEIGHT})`,\n zIndex: 1,\n };\n } else if (index <= toastCount - toastsBeforeStack - 2) {\n return {\n top: `calc(${toasterHeight || 0}px -\n ${STACKED_TOAST_HEIGHT} \n + ${STACKED_TOAST_PEEK_HEIGHT} * 2)`,\n zIndex: 0,\n };\n }\n }\n }\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toastHeights]);\n};\n","import cx from \"classnames\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\n\nimport { Alert, type AlertProps } from \"../../Alert\";\nimport { Button, type ButtonProps } from \"../../Button\";\nimport { ProgressBar, type ProgressBarProps } from \"../../ProgressBar\";\nimport { useSwipe, type UseSwipeFn } from \"../../../hooks\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { addOrUpdateToastHeight } from \"./addOrUpdateToastHeight\";\nimport { toast } from \"../toast\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useToastPositionStyles } from \"./useToastPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\ntype ToastAction = Pick<ButtonProps, \"appearance\" | \"onClick\"> & {\n /** Visible button text. */\n label: string;\n};\n\nexport type ToastProps = {\n /** One required and one optional action; providing actions disables auto-dismiss. */\n actions?: { primary: ToastAction; secondary?: ToastAction };\n /** Extra classes on the positioning wrapper, not the alert. */\n containerClassName?: string;\n /** Overrides the toaster timeout; `false` keeps the toast open. */\n duration?: number | false;\n /** Optional detail rendered below the title. */\n message?: string;\n /** Runs whenever the toast is removed, regardless of the dismissal path. */\n onDismiss?: () => void;\n /** Shows determinate progress or an indeterminate loading bar. */\n progress?: ProgressBarProps[\"value\"] | \"indeterminate\";\n /** Extra classes on the alert, not the positioning wrapper. */\n toastClassName?: string;\n\n /**\n * When set, displays the AI mark inline after the toast title.\n * Use `true` for the sparkle only, or pass tooltip/popover configuration.\n */\n aiMark?: AlertProps[\"aiMark\"];\n /** Generated by status-specific toast methods and used for updates or dismissal. */\n id: string;\n /**\n * Runs only from the close button. Use `onDismiss` to observe every removal\n * path.\n */\n onClose?: AlertProps[\"onClose\"];\n /** Determines the alert treatment and status icon. */\n status: AlertProps[\"status\"];\n /** Rendered as the notification heading. */\n title: string;\n\n createdAt?: number;\n index?: number;\n isBelowStackIndex?: boolean;\n isStacked?: boolean;\n pausedStatus?: number | \"resumed\";\n};\n\n/** Renders one alert within a toast stack. */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n actions,\n containerClassName,\n createdAt,\n duration: durationProp,\n index = 0,\n isBelowStackIndex,\n isStacked,\n message,\n onClose,\n onDismiss,\n pausedStatus,\n progress,\n toastClassName,\n ...alertProps\n },\n ref,\n ) => {\n const { setToastHeights, extraToastsVisible, isDialogToaster } =\n useToasts();\n const closeToast = useCloseToast(styles.close);\n const toastPositionStyles = useToastPositionStyles(index);\n\n const toastWrapperRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<NodeJS.Timeout | undefined>();\n const pausedAtRef = useRef<number>(0);\n const createdAtRef = useRef<number>(createdAt ?? 0);\n const hasBeenStackedRef = useRef<boolean>(false);\n\n const [transitionClass, setTransitionClass] = useState<string | undefined>(\n styles.hidden,\n );\n const [toastOpened, setToastOpened] = useState<boolean>(false);\n\n const duration = actions ? false : durationProp;\n\n const alertClasses = cx(\n styles[\"toast-alert\"],\n toastClassName,\n transitionClass,\n );\n\n useEffect(() => {\n if (!toastOpened) {\n setTransitionClass(styles.open);\n\n setTimeout(() => {\n setTransitionClass(undefined);\n }, ANIMATION_DURATION);\n\n // Reduced motion may suppress the animation event.\n setToastOpened(true);\n }\n return () => {\n onDismiss?.();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (toastWrapperRef.current && toastOpened && !isStacked) {\n if ((isBelowStackIndex && extraToastsVisible) || isDialogToaster) {\n const delay = isDialogToaster ? 0 : ANIMATION_DURATION;\n\n setTimeout(() => {\n const height = toastWrapperRef.current?.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height ?? 0, setToastHeights);\n }, delay); // Wait for the width transition before measuring.\n } else {\n const height = toastWrapperRef.current.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height, setToastHeights);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n toastOpened,\n isStacked,\n extraToastsVisible,\n isDialogToaster,\n actions,\n message,\n alertProps.title,\n ]);\n\n useEffect(() => {\n if (duration && !isStacked) {\n if (!pausedStatus) {\n timerRef.current = setTimeout(\n () => closeToast(alertProps.id),\n duration,\n );\n return () => clearTimeout(timerRef.current);\n } else if (typeof pausedStatus === \"number\") {\n clearTimeout(timerRef.current);\n pausedAtRef.current = pausedStatus;\n } else if (pausedStatus === \"resumed\") {\n const remainingDuration =\n pausedAtRef.current === 0\n ? duration\n : duration + (createdAtRef.current || 0) - pausedAtRef.current;\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n pausedAtRef.current = 0;\n }, remainingDuration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [createdAtRef.current, duration, pausedStatus]);\n\n useEffect(() => {\n if (duration) {\n if (isStacked) {\n clearTimeout(timerRef.current);\n hasBeenStackedRef.current = true;\n } else if (\n !isStacked &&\n hasBeenStackedRef.current &&\n !(typeof pausedStatus === \"number\")\n ) {\n createdAtRef.current = Date.now();\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n hasBeenStackedRef.current = false;\n }, duration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isStacked, duration]);\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"right\") {\n toast.dismiss(alertProps.id);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n const alertCloseProps:\n | {\n onClose: AlertProps[\"onClose\"];\n }\n | Record<string, never> =\n isStacked && !extraToastsVisible\n ? {}\n : {\n onClose,\n };\n\n const hasMessage = message && message !== \"\";\n const hasProgress = progress != null;\n\n return (\n <div\n data-anv=\"toast\"\n className={containerClassName}\n style={toastPositionStyles ?? { top: \"1.5rem\" }}\n ref={toastWrapperRef}\n onAnimationStart={() => setToastOpened(true)}\n role={isStacked ? \"presentation\" : undefined}\n {...touchProps}\n >\n <Alert\n className={alertClasses}\n {...alertProps}\n {...alertCloseProps}\n ref={ref}\n tabIndex={isStacked && !extraToastsVisible ? -1 : 0}\n >\n {hasMessage || hasProgress || actions ? (\n <>\n {hasMessage ? (\n <div\n className={styles[\"message-container\"]}\n id={`toast-message-${alertProps.id}`}\n >\n {message}\n </div>\n ) : null}\n\n {hasProgress ? (\n <>\n {progress === \"indeterminate\" ? (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n indeterminate\n />\n ) : (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n value={progress}\n />\n )}\n </>\n ) : null}\n\n {actions ? (\n <div className={styles[\"alert-action\"]}>\n <Button\n appearance={actions.primary.appearance}\n onClick={actions.primary.onClick}\n size=\"small\"\n >\n {actions.primary.label}\n </Button>\n\n {actions.secondary && (\n <Button\n appearance={actions.secondary.appearance}\n onClick={actions.secondary.onClick}\n size=\"small\"\n >\n {actions.secondary.label}\n </Button>\n )}\n </div>\n ) : null}\n </>\n ) : null}\n </Alert>\n </div>\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import { type MutableRefObject, useEffect, useRef, useState } from \"react\";\nimport { getActiveElement } from \"../../../internal/functions\";\n\ntype HotkeyFocusParams = {\n disabled: boolean;\n hotkey: string;\n onHotkeyIn?: () => void | Promise<void>;\n onHotkeyOut?: () => void | Promise<void>;\n refToFocus: MutableRefObject<HTMLElement>;\n rootRef: MutableRefObject<HTMLElement>;\n};\n\n/**\n * Moves focus into a region on a hotkey and restores the previous target on\n * Escape.\n */\nexport const useHotkeyFocus = ({\n disabled,\n hotkey,\n onHotkeyIn,\n onHotkeyOut,\n refToFocus,\n rootRef,\n}: HotkeyFocusParams) => {\n const [shouldEscapeRefocus, setShouldEscapeRefocus] = useState(false);\n const previousFocusElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (disabled || typeof document === \"undefined\") return;\n const rootElement = rootRef.current;\n\n const blurHandler = (e: FocusEvent) => {\n if (e.relatedTarget && rootElement.contains(e.relatedTarget as Node)) {\n return;\n }\n // Manual focus departure cancels Escape restoration.\n setShouldEscapeRefocus(false);\n };\n\n const keyDownHandler = async (e: KeyboardEvent) => {\n const activeElement = getActiveElement(document);\n\n if (\n activeElement?.tagName.toLowerCase() !== \"input\" &&\n activeElement?.tagName.toLowerCase() !== \"textarea\" &&\n activeElement?.tagName.toLowerCase() !== \"pre\" &&\n e.key === hotkey\n ) {\n e.preventDefault();\n previousFocusElement.current = activeElement as HTMLElement | null;\n await onHotkeyIn?.();\n\n if (refToFocus.current) {\n refToFocus.current.focus();\n setShouldEscapeRefocus(true);\n if (refToFocus.current.scrollTo) {\n refToFocus.current.scrollTo();\n }\n }\n } else if (e.code === \"Escape\" && shouldEscapeRefocus) {\n onHotkeyOut?.();\n if (\n previousFocusElement.current &&\n previousFocusElement.current.tagName.toLowerCase() !== \"body\"\n ) {\n (previousFocusElement.current as HTMLElement).focus();\n } else {\n (activeElement as HTMLElement).blur();\n }\n }\n };\n\n document.addEventListener(\"keydown\", keyDownHandler);\n rootElement.addEventListener(\"focusout\", blurHandler);\n\n return () => {\n document.removeEventListener(\"keydown\", keyDownHandler);\n rootElement.removeEventListener(\"focusout\", blurHandler);\n };\n }, [\n hotkey,\n disabled,\n rootRef,\n shouldEscapeRefocus,\n onHotkeyIn,\n refToFocus,\n onHotkeyOut,\n ]);\n\n return { returnFocusRef: previousFocusElement };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\n/** Positions the expand button after the visible toast heights. */\nexport const useShowMoreButtonPositionStyles = (): CSSProperties => {\n const { toasts, toastHeights, toastsBeforeStack } = useToasts();\n const totalToasts = toasts.length;\n const extraSpace = totalToasts > toastsBeforeStack + 1 ? \"2rem\" : \"1rem\";\n const top = useMemo(() => {\n if (totalToasts > toastsBeforeStack) {\n const heightMap = new Map(toastHeights.map((t) => [t.id, t.height]));\n\n return toasts\n .slice(-toastsBeforeStack)\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined)\n .reduce((t, c) => t + c, 0);\n }\n return \"unset\";\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toasts, toastHeights, toastsBeforeStack]);\n\n return {\n // Compensate for rem-to-pixel rounding at non-default root sizes.\n top: `calc(${top}px + ${extraSpace} - 0.75px)`,\n position: \"absolute\",\n display: totalToasts > toastsBeforeStack ? undefined : \"none\",\n transition: \"top var(--a2-toaster-animation-duration) ease-in\",\n };\n};\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useRef,\n useCallback,\n useState,\n useMemo,\n type CSSProperties,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Button } from \"../../Button\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { SrOnly } from \"../../SrOnly\";\n\nimport {\n ANIMATION_DURATION,\n TOAST_STACK_PADDING,\n EXPAND_BUTTON_HEIGHT_WITH_PADDING,\n SCROLL_THRESHOLD,\n EVENT_THROTTLE_MS,\n} from \"./constants\";\nimport { Toast, type ToastProps } from \"./Toast\";\nimport { toast } from \"../toast\";\nimport { useHotkeyFocus } from \"./useHotkeyFocus\";\nimport { useShowMoreButtonPositionStyles } from \"./useShowMoreButtonPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastStackProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /**\n * Auto-dismiss timeout shared by the stack. Actionable toasts ignore it.\n * Defaults to `false`.\n */\n duration?: number | false;\n /**\n * Shortcut that expands the stack, focuses its first toast, and is named in\n * the live region. Defaults to `\"t\"`.\n */\n focusKey?: string;\n /** Number of newest toasts shown before older ones stack. Defaults to `3`. */\n toastsBeforeStack?: number;\n /** Ordered toast entries managed by the provider. */\n toasts: ToastProps[];\n};\n\n/** Positions, collapses, and manages focus for the active notifications. */\nexport const ToastStack = forwardRef<HTMLDivElement, ToastStackProps>(\n (\n {\n className,\n duration = false,\n focusKey = \"t\",\n toasts,\n toastsBeforeStack = 3,\n ...props\n },\n ref,\n ) => {\n const toastStackRef = useRef<HTMLDivElement>(null);\n const firstToastRef = useRef<HTMLDivElement | null>(null);\n const mergedToastStackRef = useMergeRefs([toastStackRef, ref]);\n const {\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n getToastStackHeight,\n isDialogToaster,\n } = useToasts();\n const toastCount = toasts.length;\n const isToastStackEmpty = toastCount === 0;\n\n const lastToastCount = useRef<number>(0);\n const resizeThrottleRef = useRef(false);\n const resizeTimerRef = useRef<ReturnType<typeof setTimeout>>();\n const scrollThrottleRef = useRef(false);\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n const [toastStackHeight, setToastStackHeight] = useState<number>(0);\n const [disableAnimations, setDisableAnimations] = useState(false);\n const [toastPausedStatus, setToastPausedStatus] =\n useState<ToastProps[\"pausedStatus\"]>(undefined);\n const [showTopGradient, setShowTopGradient] = useState(false);\n const [showBottomGradient, setShowBottomGradient] = useState(true);\n // Avoid reading `window` during SSR.\n const [viewportHeight, setViewportHeight] = useState<number>(0);\n\n const isOverflowing =\n toastStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n useEffect(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n\n const handleResize = () => {\n if (resizeThrottleRef.current) return;\n\n resizeThrottleRef.current = true;\n resizeTimerRef.current = setTimeout(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n resizeThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n clearTimeout(resizeTimerRef.current);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n if (toastCount === 0) {\n setToastPausedStatus(undefined);\n }\n }, [toastCount]);\n\n useEffect(() => {\n const toastStackElement = toastStackRef.current;\n\n if (!extraToastsVisible) {\n setShowTopGradient(false);\n setShowBottomGradient(isOverflowing);\n return;\n }\n\n if (!toastStackElement) {\n setShowTopGradient(false);\n setShowBottomGradient(true);\n return;\n }\n\n const updateGradients = () => {\n const { scrollTop, scrollHeight, clientHeight } = toastStackElement;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n setShowTopGradient(scrollTop > 0);\n setShowBottomGradient(distanceFromBottom > SCROLL_THRESHOLD);\n };\n\n const handleScroll = () => {\n if (scrollThrottleRef.current) return;\n\n scrollThrottleRef.current = true;\n scrollTimerRef.current = setTimeout(() => {\n updateGradients();\n scrollThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n updateGradients();\n\n toastStackElement.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n });\n return () => {\n clearTimeout(scrollTimerRef.current);\n toastStackElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [extraToastsVisible, isOverflowing]);\n\n useEffect(() => {\n const scrollListener = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n toastStackRef.current?.scrollTo({\n top: toastStackRef.current.scrollTop + e.deltaY,\n });\n };\n\n if (isDialogToaster) {\n // Opening a dialog would otherwise replay existing toast animations.\n setDisableAnimations(isDialogToaster);\n const animationTimer = setTimeout(() => {\n setDisableAnimations(false);\n }, 500);\n\n // Keep wheel scrolling inside the top-layer toast stack.\n const toastStackRefCurrent = toastStackRef.current;\n toastStackRefCurrent?.addEventListener(\"wheel\", scrollListener, {\n passive: false,\n });\n\n return () => {\n clearTimeout(animationTimer);\n toastStackRefCurrent?.removeEventListener(\"wheel\", scrollListener);\n };\n }\n }, [isDialogToaster]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n if (\n toastCount > lastToastCount.current ||\n isDialogToaster ||\n extraToastsVisible\n ) {\n setToastStackHeight(getToastStackHeight());\n } else {\n // Preserve the old height until the closing animation finishes.\n timer = setTimeout(\n () => setToastStackHeight(getToastStackHeight()),\n ANIMATION_DURATION - 10,\n );\n }\n lastToastCount.current = toastCount;\n return () => {\n clearTimeout(timer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getToastStackHeight, isDialogToaster, extraToastsVisible]);\n\n useEffect(() => {\n setToastsBeforeStack(toastsBeforeStack);\n }, [setToastsBeforeStack, toastsBeforeStack]);\n\n const handleCollapseStack = useCallback(() => {\n setExtraToastsVisible(false);\n setToastPausedStatus(\"resumed\");\n\n if (toastStackRef.current?.scrollTo) {\n toastStackRef.current?.scrollTo(0, 0);\n }\n }, [setExtraToastsVisible]);\n\n const handleResumeToastTimers = useCallback(() => {\n setToastPausedStatus(\"resumed\");\n }, []);\n\n const { returnFocusRef } = useHotkeyFocus({\n disabled: isToastStackEmpty,\n hotkey: focusKey,\n onHotkeyIn: async () => {\n setExtraToastsVisible(true);\n return new Promise((resolve) => {\n // Focus waits until expansion renders the hidden toast.\n setTimeout(() => {\n resolve();\n }, 100);\n });\n },\n onHotkeyOut: () => {\n handleResumeToastTimers();\n },\n refToFocus: firstToastRef as React.MutableRefObject<HTMLElement>,\n rootRef: toastStackRef as React.MutableRefObject<HTMLElement>,\n });\n\n const showMoreButtonPositionStyles = useShowMoreButtonPositionStyles();\n\n const showExpandCollapseButton = toastCount > toastsBeforeStack;\n const expandCollapseButtonText = extraToastsVisible\n ? \"Collapse all\"\n : \"Expand all\";\n\n // Expansion needs the latest measured height before state catches up.\n const currentStackHeight = useMemo(\n () => getToastStackHeight(),\n [getToastStackHeight],\n );\n\n // Reserve the button's space when deciding whether it remains in view.\n const hasOverflow =\n currentStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n const expandCollapseButtonTop: CSSProperties[\"top\"] = hasOverflow\n ? `calc(100dvh - 4.5rem)`\n : extraToastsVisible\n ? `calc(${currentStackHeight}px - 1rem)`\n : showMoreButtonPositionStyles.top;\n\n const toastStackClasses = cx(styles[\"toast-stack\"], className, {\n [styles[\"show-more-button\"]]:\n showExpandCollapseButton && !extraToastsVisible,\n [styles[\"show-extra-toast\"]]: extraToastsVisible,\n [styles[\"disable-animations\"]]: disableAnimations,\n [styles[\"has-overflow\"]]: hasOverflow,\n });\n\n const handleToastStackFocusHover = () => {\n if (toastPausedStatus === \"resumed\" || toastPausedStatus === undefined) {\n setToastPausedStatus(Date.now());\n }\n };\n\n const handleToastStackOnBlur = () => {\n if (!toastStackRef.current?.matches(\":focus-within\")) {\n handleResumeToastTimers();\n }\n };\n\n const handleExpandCollapseClick = () => {\n if (extraToastsVisible) {\n handleCollapseStack();\n } else {\n setExtraToastsVisible(true);\n }\n };\n\n let toastStackHeightStyle: CSSProperties[\"height\"] = 0;\n\n if (extraToastsVisible) {\n // The stack uses content-box, so its padding is outside this height.\n toastStackHeightStyle =\n \"calc(100vh - var(--a2-mod-toaster-stack-padding) * 2)\";\n } else if (toastCount > toastsBeforeStack) {\n toastStackHeightStyle = `calc(${toastStackHeight}px + 3rem + var(--a2-mod-toaster-stack-padding))`;\n } else {\n toastStackHeightStyle = toastStackHeight;\n }\n\n return (\n <>\n <div\n data-anv=\"ToastStack\"\n className={toastStackClasses}\n ref={mergedToastStackRef}\n onMouseOver={handleToastStackFocusHover}\n onMouseLeave={handleResumeToastTimers}\n onFocus={handleToastStackFocusHover}\n onBlur={handleToastStackOnBlur}\n style={{\n height: toastStackHeightStyle,\n }}\n {...props}\n >\n {toasts.map(({ toastClassName, onClose, ...toastProps }, index) => {\n const isStacked =\n !extraToastsVisible && index < toastCount - toastsBeforeStack;\n\n const isLastToastDisplayed =\n index === toastCount - toastsBeforeStack;\n\n const isHidden = index < toastCount - toastsBeforeStack - 2;\n\n const toastClasses = cx(styles.toast, toastClassName);\n const toastContainerClasses = cx(styles[\"toast-wrapper\"], {\n [styles.stacked]: isStacked || isLastToastDisplayed,\n [styles[\"stack-one\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 1,\n [styles[\"stack-two\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 2,\n [styles[\"stacked-extra\"]]: isHidden,\n [styles[\"stacked-show-extra\"]]: extraToastsVisible,\n });\n\n const handleOnClose = (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n onClose?.(e);\n returnFocusRef.current?.focus();\n toast.dismiss(toastProps.id);\n };\n\n return (\n <Toast\n containerClassName={toastContainerClasses}\n duration={duration}\n index={index}\n isStacked={isStacked}\n isBelowStackIndex={index < toastCount - toastsBeforeStack}\n key={toastProps.id}\n onClose={handleOnClose}\n pausedStatus={toastPausedStatus}\n toastClassName={toastClasses}\n ref={index === 0 ? firstToastRef : undefined}\n {...toastProps}\n />\n );\n })}\n {showExpandCollapseButton && (\n <div\n className={cx(styles[\"show-more-button-container\"], {\n [styles[\"fixed-position\"]]: hasOverflow,\n })}\n style={{ top: expandCollapseButtonTop }}\n >\n <Button\n className={styles[\"show-collapse-button\"]}\n onClick={handleExpandCollapseClick}\n appearance=\"secondary\"\n >\n {expandCollapseButtonText}\n </Button>\n </div>\n )}\n {/* Keeps the last toast scrollable above the fixed button. */}\n {extraToastsVisible && hasOverflow && (\n <div\n className={styles[\"toast-stack-spacer\"]}\n style={{ top: `calc(${currentStackHeight}px + 2rem)` }}\n aria-hidden=\"true\"\n />\n )}\n <SrOnly aria-live=\"polite\">\n New toast message appeared. Press the {focusKey} key to focus on the\n toast messages. Press escape to return focus to previous position.\n </SrOnly>\n </div>\n {hasOverflow && (\n <>\n <div\n className={cx(styles[\"toast-stack-gradient-top\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showTopGradient,\n })}\n aria-hidden=\"true\"\n />\n <div\n className={cx(styles[\"toast-stack-gradient-bottom\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showBottomGradient,\n })}\n aria-hidden=\"true\"\n />\n </>\n )}\n </>\n );\n },\n);\n\nToastStack.displayName = \"ToastStack\";\n","import cx from \"classnames\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useCallback,\n useId,\n useRef,\n useState,\n} from \"react\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { ToastProvider } from \"./ToastProvider\";\nimport type {\n ToastCustomEventDetail,\n ToastCustomEventDetailAdd,\n ToastCustomEventDetailUpdate,\n ToastUpdateProps,\n} from \"./types\";\nimport type { ToastProps } from \"./Toast\";\nimport { ToastStack, type ToastStackProps } from \"./ToastStack\";\nimport { ToasterPopover } from \"./ToasterPopover\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastEventType = {\n /** Lifecycle operation reported by the toaster. */\n eventType: \"add\" | \"update\" | \"dismiss\" | \"dismiss-all\";\n /** Number of toasts remaining when the callback runs. */\n toastCount: number;\n /** Toast affected by the operation. Omitted for `dismiss-all`. */\n id?: string;\n /** Toaster that handled the operation. */\n toasterId?: string;\n /** Values used to add or update the toast. */\n toastProps?: ToastProps | ToastUpdateProps;\n};\n\nexport type ToasterProps = ComponentPropsWithoutRef<\"div\"> &\n Omit<ToastStackProps, \"toasts\"> & {\n /**\n * Prevents this instance from handling shared toast events. Defaults to\n * `false`.\n */\n disableEvents?: boolean;\n /** Identifies this toaster in lifecycle callbacks and targeted add events. */\n id: string;\n /** Runs after a shared toast event is handled. */\n onToastEvent?: (toastEvent: ToastEventType) => void;\n /**\n * Callback function that is called with the number of toasts this toaster is\n * rendering, whenever that number changes. Unlike `onToastEvent` it also\n * reports dismissals that dispatch no event, such as an elapsed `duration`,\n * so it is safe to gate work on.\n */\n onToastCountChange?: (toastCount: number) => void;\n };\n\nconst DIALOG_TOASTER_STORAGE_KEY = \"dialog-toasters\";\n\n/**\n * The instance token distinguishes dialog toasters that share an ID, while\n * bare IDs remain readable for compatibility with older bundles.\n */\nconst toasterIdFromEntry = (entry: string) => {\n const separator = entry.lastIndexOf(\"#\");\n return separator === -1 ? entry : entry.slice(0, separator);\n};\n\ntype DialogToasterCustomEventDetail = {\n eventType: \"dialog-toaster\";\n};\ntype DialogToasterCustomEvent = CustomEvent<DialogToasterCustomEventDetail>;\n\n/** Event-driven toaster content shared by page and dialog hosts. */\nexport const ToasterContent = forwardRef<HTMLDivElement, ToasterProps>(\n (\n {\n className,\n disableEvents = false,\n id,\n onToastEvent,\n onToastCountChange,\n\n duration,\n focusKey,\n toastsBeforeStack,\n ...props\n },\n ref,\n ) => {\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const { toasts, setToasts, isDialogToaster } = useToasts();\n\n // Event listeners stay mounted while these values change.\n const disableEventsRef = useRef<boolean>(disableEvents);\n const toastCountRef = useRef<number>(0);\n const isDialogToasterRef = useRef<boolean>(isDialogToaster);\n const isRegisteredDialogToasterRef = useRef<boolean>(false);\n const instanceToken = useId();\n const dialogToasterEntry = `${id}#${instanceToken}`;\n const onToastCountChangeRef = useRef(onToastCountChange);\n\n const [shouldHideToaster, setShouldHideToaster] = useState(false);\n\n /** Persists each instance so dialogs sharing an ID unregister independently. */\n const updateDialogToasterStorage = useCallback(\n (isDialogToaster: boolean) => {\n if (isDialogToaster === isRegisteredDialogToasterRef.current) {\n return;\n }\n isRegisteredDialogToasterRef.current = isDialogToaster;\n\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n\n if (isDialogToaster) {\n dialogToasters.push(dialogToasterEntry);\n } else {\n const index = dialogToasters.indexOf(dialogToasterEntry);\n if (index === -1) {\n return;\n }\n dialogToasters.splice(index, 1);\n }\n\n window?.sessionStorage.setItem(\n DIALOG_TOASTER_STORAGE_KEY,\n JSON.stringify(dialogToasters),\n );\n },\n [dialogToasterEntry],\n );\n\n useEffect(() => {\n disableEventsRef.current = disableEvents;\n }, [disableEvents]);\n\n useEffect(() => {\n onToastCountChangeRef.current = onToastCountChange;\n }, [onToastCountChange]);\n\n useEffect(() => {\n toastCountRef.current = toasts.length;\n onToastCountChangeRef.current?.(toasts.length);\n }, [toasts.length]);\n\n useEffect(() => {\n updateDialogToasterStorage(isDialogToaster);\n isDialogToasterRef.current = isDialogToaster;\n\n const DialogToasterEvent: DialogToasterCustomEvent =\n new CustomEvent<DialogToasterCustomEventDetail>(\"dialog-toaster\", {\n composed: true,\n detail: {\n eventType: \"dialog-toaster\",\n },\n });\n dispatchEvent(DialogToasterEvent);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDialogToaster]);\n\n const closeToast = useCloseToast(styles.close);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout | undefined;\n updateDialogToasterStorage(isDialogToaster);\n\n const toastEventListener = (e: Event) => {\n if (disableEventsRef.current) {\n return;\n }\n\n const { eventType, ...toastProps } = (\n e as CustomEvent<ToastCustomEventDetail>\n ).detail;\n\n if (eventType === \"add\") {\n const toastAddProps = toastProps as ToastCustomEventDetailAdd;\n\n if (!toastAddProps.toasterId || toastAddProps.toasterId === id) {\n setToasts((prev) => [...prev, toastProps as ToastProps]);\n }\n\n // allow for state change to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"add\",\n toastCount: toastCountRef.current,\n id: toastAddProps.id,\n toasterId: id,\n toastProps: toastAddProps,\n });\n });\n } else if (eventType === \"update\") {\n const toastUpdateProps = toastProps as ToastCustomEventDetailUpdate;\n\n setToasts((prev) => {\n return prev.map((t) => {\n if (t.id === toastUpdateProps.id) {\n return {\n ...t,\n ...toastUpdateProps,\n };\n } else {\n return t;\n }\n });\n });\n\n onToastEvent?.({\n eventType: \"update\",\n toastCount: toastCountRef.current,\n id: toastUpdateProps.id,\n toasterId: id,\n toastProps: toastUpdateProps,\n });\n } else if (eventType === \"dismiss\") {\n if (toastProps.id) {\n closeToast(toastProps.id);\n\n // allow for animation to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"dismiss\",\n toastCount: toastCountRef.current,\n id: toastProps.id,\n toasterId: id,\n });\n }, ANIMATION_DURATION);\n } else {\n closeToast();\n\n onToastEvent?.({\n eventType: \"dismiss-all\",\n toastCount: 0,\n toasterId: id,\n });\n }\n }\n };\n\n const dialogToasterEventListener = (e: Event) => {\n const { eventType } = (e as CustomEvent<DialogToasterCustomEventDetail>)\n .detail;\n if (eventType === \"dialog-toaster\") {\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n if (dialogToasters.length > 0) {\n if (\n isDialogToasterRef.current &&\n toasterIdFromEntry(dialogToasters[dialogToasters.length - 1]) ===\n id\n ) {\n setShouldHideToaster(false);\n } else {\n setShouldHideToaster(true);\n }\n } else {\n setShouldHideToaster(false);\n }\n }\n };\n\n const onPageRefreshListener = () => {\n window?.sessionStorage.removeItem(DIALOG_TOASTER_STORAGE_KEY);\n };\n\n window?.addEventListener(\"hammer-toast\", toastEventListener);\n window?.addEventListener(\"dialog-toaster\", dialogToasterEventListener);\n window?.addEventListener(\"beforeunload\", onPageRefreshListener);\n\n return () => {\n window?.removeEventListener(\"hammer-toast\", toastEventListener);\n window?.removeEventListener(\n \"dialog-toaster\",\n dialogToasterEventListener,\n );\n window?.removeEventListener(\"beforeunload\", onPageRefreshListener);\n\n clearTimeout(timeout);\n updateDialogToasterStorage(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const toasterClasses = cx(styles.toaster, {\n [styles[\"hidden\"]]: shouldHideToaster,\n [`${className}`]: className != null,\n });\n\n return (\n <div\n data-anv=\"toaster\"\n data-toaster-id={id}\n aria-hidden={shouldHideToaster}\n className={toasterClasses}\n ref={mergedToasterRef}\n {...props}\n >\n <ToastStack\n toasts={toasts}\n duration={duration}\n focusKey={focusKey}\n toastsBeforeStack={toastsBeforeStack}\n />\n </div>\n );\n },\n);\n\nexport const Toaster = forwardRef<HTMLDivElement, ToasterProps>(\n (props, ref) => {\n return (\n <ToastProvider>\n <ToasterPopover>\n <ToasterContent {...props} ref={ref} />\n </ToasterPopover>\n </ToastProvider>\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\nToasterContent.displayName = \"ToasterContent\";\n"],"names":["toasts","uuid","promise","isDialogToaster"],"mappings":"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","x_google_ignoreList":[5,6,7]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useRef, useState, useEffect, useCallback } from 'react';
|
|
3
|
-
import { T as Toaster$1 } from './Toaster-
|
|
3
|
+
import { T as Toaster$1 } from './Toaster-SqkX0Kes.js';
|
|
4
4
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
5
5
|
|
|
6
6
|
const SHADOW_HOST_DATA_ATTRS = "[data-mfe-portal-name], [data-mfe-name]";
|
|
@@ -99,4 +99,4 @@ const Toaster = forwardRef(
|
|
|
99
99
|
Toaster.displayName = "Toaster";
|
|
100
100
|
|
|
101
101
|
export { Toaster as T };
|
|
102
|
-
//# sourceMappingURL=Toaster-
|
|
102
|
+
//# sourceMappingURL=Toaster-dVGVVcat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toaster-
|
|
1
|
+
{"version":3,"file":"Toaster-dVGVVcat.js","sources":["../src/components/Toast/Toaster.tsx"],"sourcesContent":["import {\n type Ref,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../hooks\";\n\nimport {\n type ToasterProps as BaseToasterProps,\n Toaster as BaseToaster,\n} from \"./internal/Toaster\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\nconst isSameElementList = (a: Element[], b: Element[]) =>\n a.length === b.length && a.every((element, index) => element === b[index]);\n\nexport type ToasterProps = Omit<\n BaseToasterProps,\n \"disableEvents\" | \"onToastCountChange\"\n>;\n\n/**\n * Displays notifications dispatched through {@link toast}. The first toaster\n * in each document or shadow root handles shared toast events.\n */\nexport const Toaster = forwardRef(\n (\n props: Omit<BaseToasterProps, \"onToastCountChange\">,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const a1ToastGroupRescan = useRef<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const collectA1ToastGroups = useCallback(() => {\n const groups: Element[] = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n let hasPendingShadowRoot = false;\n\n document.querySelectorAll(SHADOW_HOST_DATA_ATTRS).forEach((host) => {\n if (host.shadowRoot) {\n groups.push(...host.shadowRoot.querySelectorAll(\".ToastGroup\"));\n } else {\n hasPendingShadowRoot = true;\n }\n });\n\n setA1ToastGroups((previous) =>\n isSameElementList(previous, groups) ? previous : groups,\n );\n\n return hasPendingShadowRoot;\n }, []);\n\n const updateA1ToastGroups = useCallback(() => {\n // A shadow host can be in the DOM before it attaches its shadow root, so\n // re-scan on the next task — once per burst, not once per host.\n if (collectA1ToastGroups() && a1ToastGroupRescan.current === undefined) {\n a1ToastGroupRescan.current = setTimeout(() => {\n a1ToastGroupRescan.current = undefined;\n collectA1ToastGroups();\n });\n }\n }, [collectA1ToastGroups]);\n\n useEffect(() => {\n const observer = new MutationObserver(updateA1ToastGroups);\n a1ToastGroupObserver.current = observer;\n\n return () => {\n observer.disconnect();\n a1ToastGroupObserverConnected.current = false;\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n };\n }, [updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // Existing A1 groups also need to move above this stack.\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n // A re-scan queued by the last batch would otherwise still walk the\n // document and set state after every toast is gone.\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n }\n }\n }, [toastCount, updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n }, [a1ToastGroups, toastCount]);\n\n return (\n <BaseToaster\n {...props}\n onToastCountChange={setToastCount}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\n"],"names":["BaseToaster"],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ import { useTrackingId } from './useTrackingId.js';
|
|
|
10
10
|
import { B as ButtonToggle } from './ButtonToggle-BSU8GBxr.js';
|
|
11
11
|
import { B as ButtonLink } from './ButtonLink-DOFAxNvC.js';
|
|
12
12
|
import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
|
|
13
|
-
import { L as Listbox } from './Listbox-
|
|
14
|
-
import { P as Popover } from './AiMark-
|
|
13
|
+
import { L as Listbox } from './Listbox-CD9ZptSZ.js';
|
|
14
|
+
import { P as Popover } from './AiMark-BfmK30vL.js';
|
|
15
15
|
import { F as Flex } from './Flex-CRF7gj0_.js';
|
|
16
16
|
import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
|
|
17
17
|
import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
|
|
@@ -731,4 +731,4 @@ const Toolbar = Object.assign(
|
|
|
731
731
|
Toolbar.displayName = "Toolbar";
|
|
732
732
|
|
|
733
733
|
export { Toolbar as T };
|
|
734
|
-
//# sourceMappingURL=Toolbar-
|
|
734
|
+
//# sourceMappingURL=Toolbar-CMulzswf.js.map
|