Outlook_Addin_LLM/node_modules/@fluentui/react-toast/lib/state/useToastController.js

58 lines
2.1 KiB
JavaScript

import * as React from 'react';
import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
import { dispatchToast as dispatchToastVanilla, dismissToast as dismissToastVanilla, dismissAllToasts as dismissAllToastsVanilla, updateToast as updateToastVanilla, playToast as playToastVanilla, pauseToast as pauseToastVanilla } from './vanilla';
const noop = ()=>undefined;
/**
* @param toasterId - If an id is provided all imperative methods control that specific toaster
* @returns Imperative methods to control toasts
*/ export function useToastController(toasterId) {
const { targetDocument } = useFluent();
return React.useMemo(()=>{
if (!targetDocument) {
return {
dispatchToast: noop,
dismissToast: noop,
dismissAllToasts: noop,
updateToast: noop,
pauseToast: noop,
playToast: noop
};
}
return {
dispatchToast: (content, options)=>{
dispatchToastVanilla(content, {
...options,
toasterId,
data: {
root: options === null || options === void 0 ? void 0 : options.root
}
}, targetDocument);
},
dismissToast: (toastId)=>{
dismissToastVanilla(toastId, toasterId, targetDocument);
},
dismissAllToasts: ()=>{
dismissAllToastsVanilla(toasterId, targetDocument);
},
updateToast: (options)=>{
updateToastVanilla({
...options,
data: {
root: options.root
},
toasterId
}, targetDocument);
},
pauseToast: (toastId)=>{
pauseToastVanilla(toastId, toasterId, targetDocument);
},
playToast: (toastId)=>{
playToastVanilla(toastId, toasterId, targetDocument);
}
};
}, [
targetDocument,
toasterId
]);
}