{ "version": 3, "sources": ["../../../../../../owl-nest/common/messages/src/useMessage.ts", "../../../../../../owl-nest/common/messages/src/messagesContext.tsx", "../../../../../../owl-nest/common/messages/src/reducer.ts"], "sourcesContent": ["import { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { type Message, useMessagesContext } from './messagesContext'\n\ntype ComponentType = 'toast' | 'callout' | 'flash'\ntype ActionPropsBase = {\n context: string\n message: React.ReactNode\n onClose?: () => void\n forceClose?: boolean\n zIndexLevel?: 'high' | 'low'\n timeOpen?: number\n} & (ActionLinkProps | ActionButtonProps)\n\ntype ActionLinkProps = {\n button?: undefined\n link?: plume.LinkProps\n}\n\ntype ActionButtonProps = {\n button?: plume.LinkAsButtonProps\n link?: undefined\n}\n\nexport function useMessage(contexts: string[] = []) {\n const { dispatch, state } = useMessagesContext()\n const messagesFromState = contexts\n .map((context) => {\n return state[context]\n })\n .filter((message) => message !== undefined)\n\n function alert(props: ActionPropsBase & { type: ComponentType }): void {\n create({ level: 'alert', ...props })\n }\n\n function clear(context: string): void {\n dispatch({ type: 'clear', context })\n }\n\n function confirm(props: ActionPropsBase & { type: ComponentType }): void {\n create({ level: 'success', ...props })\n }\n\n function create(message: Message): void {\n dispatch({ type: 'create', message })\n }\n\n function error(props: ActionPropsBase & { type: ComponentType }): void {\n create({ level: 'error', ...props })\n }\n\n function inform(props: ActionPropsBase & { type: ComponentType }): void {\n create({ level: 'info', ...props })\n }\n\n // TODO : add focus\n function internalError(props: Omit & { type: ComponentType }): void {\n create({ message: t('Oops, an internal error has occurred... Please retry!'), level: 'error', ...props } as Message)\n }\n\n function notification(props: ActionPropsBase & { type: 'callout' | 'flash' }): void {\n create({ level: 'notification', ...props })\n }\n\n function softDelete(context: string): void {\n dispatch({ type: 'soft-delete', context })\n }\n\n return {\n alert,\n clear,\n confirm,\n create,\n error,\n inform,\n internalError,\n messages: messagesFromState,\n notification,\n softDelete,\n }\n}\n", "import * as React from 'react'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { type Action, type State, messagesReducer } from './reducer'\n\nexport type LevelCallout = 'alert' | 'error' | 'info' | 'notification' | 'success'\nexport type LevelToast = 'alert' | 'error' | 'info' | 'success'\nexport type LevelFlash = LevelCallout\n\nexport type MessageBase = {\n context: string\n deleted?: boolean\n forceClose?: boolean\n message: React.ReactNode\n onClose?: () => void\n timeOpen?: number\n zIndexLevel?: 'high' | 'low'\n} & (MessageLinkProps | MessageButtonProps)\n\ntype MessageLinkProps = {\n link?: plume.LinkProps\n button?: undefined\n}\n\ntype MessageButtonProps = {\n link?: undefined\n button?: plume.LinkAsButtonProps\n}\n\nexport type MessageCallout = MessageBase & {\n level: LevelCallout\n type: 'callout'\n}\n\nexport type MessageToast = MessageBase & {\n level: LevelToast\n type: 'toast'\n}\n\nexport type MessageFlash = MessageBase & {\n message: React.ReactNode\n level: LevelFlash\n type: 'flash'\n}\n\nexport type Message = MessageFlash | MessageToast | MessageCallout\n\ntype Value = {\n state: State\n dispatch: React.Dispatch\n}\n\nconst messagesContext = React.createContext(undefined)\n\nfunction MessagesProvider({ children }: { children: React.ReactNode }): React.ReactElement {\n const [state, dispatch] = React.useReducer>(messagesReducer, {})\n const value = { state, dispatch }\n return {children}\n}\n\nfunction useMessagesContext() {\n const context = React.useContext(messagesContext)\n if (context === undefined) {\n throw new Error('useMessagesContext must be used within a messagesProvider')\n }\n return context\n}\n\nexport { MessagesProvider, useMessagesContext }\n", "import { Message } from './messagesContext'\n\ntype CreateAction = {\n type: 'create'\n message: Message\n}\n\ntype ClearAction = {\n type: 'clear'\n context: string\n}\n\ntype SoftDeleteAction = {\n type: 'soft-delete'\n context: string\n}\n\ntype InitAction = {\n type: 'default'\n}\n\nexport type Action = CreateAction | ClearAction | InitAction | SoftDeleteAction\n\nexport type State = { [context: string]: Message }\n\nexport function messagesReducer(state: State, action: Action) {\n switch (action.type) {\n case 'create': {\n const { context } = action.message\n return {\n ...state,\n [context]: {\n ...action.message,\n deleted: false,\n timeOpen: action.message.timeOpen ?? 5000,\n },\n }\n }\n case 'soft-delete': {\n const context = action.context\n if (context !== undefined && state && state[context]) {\n return {\n ...state,\n [context]: {\n ...state[context],\n deleted: true,\n },\n }\n }\n break\n }\n case 'clear': {\n const context = action.context\n if (context !== undefined) {\n if (state && state[context]) {\n const { [context]: _, ...nextState } = state\n return nextState\n }\n break\n } else {\n // clear all messages\n return {}\n }\n }\n default: {\n return state\n }\n }\n return state\n}\n"], "mappings": "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", "names": ["init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "React", "init_define_process_env", "init_sentry_release_injection_stub", "messagesReducer", "state", "action", "_a", "context", "__spreadProps", "__spreadValues", "_b", "_", "__objRest", "__restKey", "messagesContext", "MessagesProvider", "children", "state", "dispatch", "messagesReducer", "value", "useMessagesContext", "context", "useMessage", "contexts", "dispatch", "state", "useMessagesContext", "messagesFromState", "context", "message", "alert", "props", "create", "__spreadValues", "clear", "confirm", "error", "inform", "internalError", "notification", "softDelete"] }