{
  "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<ActionPropsBase, 'message'> & { 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<Action>\n}\n\nconst messagesContext = React.createContext<Value | undefined>(undefined)\n\nfunction MessagesProvider({ children }: { children: React.ReactNode }): React.ReactElement {\n  const [state, dispatch] = React.useReducer<React.Reducer<State, Action>>(messagesReducer, {})\n  const value = { state, dispatch }\n  return <messagesContext.Provider value={value}>{children}</messagesContext.Provider>\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"]
}