{"version":3,"file":"overrides.mjs","sources":["../src/overrides.tsx"],"sourcesContent":["\"use client\";\n\nimport type { PropsWithChildren, ReactNode } from \"react\";\nimport { createContext, useContext, useMemo } from \"react\";\nimport * as React from \"react\";\n\nimport { Emoji } from \"./components/internal/Emoji\";\nimport type { Direction } from \"./types\";\nimport { pluralize } from \"./utils/pluralize\";\n\nexport interface LocalizationOverrides {\n  locale: string;\n  dir: Direction;\n}\n\nexport interface GlobalOverrides {\n  USER_SELF: string;\n  USER_UNKNOWN: string;\n  LIST_REMAINING: (count: number) => string;\n  LIST_REMAINING_USERS: (count: number) => string;\n  LIST_REMAINING_COMMENTS: (count: number) => string;\n  EMOJI_PICKER_SEARCH_PLACEHOLDER: string;\n  EMOJI_PICKER_EMPTY: ReactNode;\n  EMOJI_PICKER_ERROR: (error: Error) => ReactNode;\n}\n\nexport interface CommentOverrides {\n  COMMENT_EDITED: ReactNode;\n  COMMENT_DELETED: ReactNode;\n  COMMENT_MORE: string;\n  COMMENT_EDIT: string;\n  COMMENT_EDIT_COMPOSER_PLACEHOLDER: string;\n  COMMENT_EDIT_COMPOSER_CANCEL: string;\n  COMMENT_EDIT_COMPOSER_SAVE: string;\n  COMMENT_DELETE: string;\n  COMMENT_ADD_REACTION: string;\n  COMMENT_REACTION_LIST: (\n    list: ReactNode,\n    emoji: string,\n    count: number\n  ) => ReactNode;\n  COMMENT_REACTION_DESCRIPTION: (emoji: string, count: number) => string;\n}\n\nexport interface ComposerOverrides {\n  COMPOSER_INSERT_MENTION: string;\n  COMPOSER_INSERT_EMOJI: string;\n  COMPOSER_PLACEHOLDER: string;\n  COMPOSER_SEND: string;\n}\n\nexport interface ThreadOverrides {\n  THREAD_RESOLVE: string;\n  THREAD_UNRESOLVE: string;\n  THREAD_NEW_INDICATOR: string;\n  THREAD_NEW_INDICATOR_DESCRIPTION: string;\n  THREAD_COMPOSER_PLACEHOLDER: string;\n  THREAD_COMPOSER_SEND: string;\n}\n\nexport interface InboxNotificationOverrides {\n  INBOX_NOTIFICATION_MORE: string;\n  INBOX_NOTIFICATION_MARK_AS_READ: string;\n  INBOX_NOTIFICATION_THREAD_COMMENTS_LIST: (\n    list: ReactNode,\n    room: ReactNode | undefined,\n    count: number\n  ) => ReactNode;\n  INBOX_NOTIFICATION_THREAD_MENTION: (\n    user: ReactNode,\n    room: ReactNode | undefined\n  ) => ReactNode;\n}\n\nexport type Overrides = LocalizationOverrides &\n  GlobalOverrides &\n  ComposerOverrides &\n  CommentOverrides &\n  ThreadOverrides &\n  InboxNotificationOverrides;\n\ntype OverridesProviderProps = PropsWithChildren<{\n  overrides?: Partial<Overrides>;\n}>;\n\nexport const defaultOverrides: Overrides = {\n  locale: \"en\",\n  dir: \"ltr\",\n  USER_SELF: \"you\",\n  USER_UNKNOWN: \"Anonymous\",\n  LIST_REMAINING: (count) => `${count} more`,\n  LIST_REMAINING_USERS: (count) => `${count} ${pluralize(count, \"other\")}`,\n  LIST_REMAINING_COMMENTS: (count) =>\n    `${count} more ${pluralize(count, \"comment\")}`,\n  EMOJI_PICKER_SEARCH_PLACEHOLDER: \"Search…\",\n  EMOJI_PICKER_EMPTY: \"No emoji found.\",\n  EMOJI_PICKER_ERROR: () =>\n    \"There was an error while getting the list of emoji.\",\n  COMPOSER_INSERT_MENTION: \"Mention someone\",\n  COMPOSER_INSERT_EMOJI: \"Add emoji\",\n  COMPOSER_PLACEHOLDER: \"Write a comment…\",\n  COMPOSER_SEND: \"Send\",\n  COMMENT_EDITED: \"(edited)\",\n  COMMENT_DELETED: \"This comment has been deleted.\",\n  COMMENT_MORE: \"More\",\n  COMMENT_EDIT: \"Edit comment\",\n  COMMENT_EDIT_COMPOSER_PLACEHOLDER: \"Edit comment…\",\n  COMMENT_EDIT_COMPOSER_CANCEL: \"Cancel\",\n  COMMENT_EDIT_COMPOSER_SAVE: \"Save\",\n  COMMENT_DELETE: \"Delete comment\",\n  COMMENT_ADD_REACTION: \"Add reaction\",\n  COMMENT_REACTION_LIST: (list, emoji) => (\n    <>\n      {list} reacted with <Emoji emoji={emoji} />\n    </>\n  ),\n  COMMENT_REACTION_DESCRIPTION: (emoji, count) =>\n    `${count} ${pluralize(count, \"reaction\")}, react with ${emoji}`,\n  THREAD_RESOLVE: \"Resolve thread\",\n  THREAD_UNRESOLVE: \"Re-open thread\",\n  THREAD_NEW_INDICATOR: \"New\",\n  THREAD_NEW_INDICATOR_DESCRIPTION: \"New comments\",\n  THREAD_COMPOSER_PLACEHOLDER: \"Reply to thread…\",\n  THREAD_COMPOSER_SEND: \"Reply\",\n  INBOX_NOTIFICATION_MORE: \"More\",\n  INBOX_NOTIFICATION_MARK_AS_READ: \"Mark as read\",\n  INBOX_NOTIFICATION_THREAD_COMMENTS_LIST: (\n    list: ReactNode,\n    room: ReactNode\n  ) => (\n    <>\n      {list} commented\n      {room ? <> in {room}</> : <> in a thread</>}\n    </>\n  ),\n  INBOX_NOTIFICATION_THREAD_MENTION: (user: ReactNode, room: ReactNode) => (\n    <>\n      {user} mentioned you{room ? <> in {room}</> : null}\n    </>\n  ),\n};\n\nexport const OverridesContext = createContext<Overrides | undefined>(undefined);\n\nexport function useOverrides(overrides?: Partial<Overrides>): Overrides {\n  const contextOverrides = useContext(OverridesContext);\n\n  return useMemo(\n    () => ({\n      ...defaultOverrides,\n      ...contextOverrides,\n      ...overrides,\n    }),\n    [contextOverrides, overrides]\n  );\n}\n\nexport function OverridesProvider({\n  children,\n  overrides: providerOverrides,\n}: OverridesProviderProps) {\n  const contextOverrides = useContext(OverridesContext);\n  const overrides = useMemo(\n    () => ({\n      ...defaultOverrides,\n      ...contextOverrides,\n      ...providerOverrides,\n    }),\n    [contextOverrides, providerOverrides]\n  );\n\n  return (\n    <OverridesContext.Provider value={overrides}>\n      {children}\n    </OverridesContext.Provider>\n  );\n}\n"],"names":[],"mappings":";;;;;;AAqFO;AAAoC;AACjC;AACH;AACM;AACG;AACgB;AACuC;AAExB;AACZ;AACb;AAElB;AACuB;AACF;AACD;AACP;AACC;AACC;AACH;AACA;AACqB;AACL;AACF;AACZ;AACM;AAGG;AAAM;AAC7B;AAGwD;AAC1C;AACE;AACI;AACY;AACL;AACP;AACG;AACQ;AAQ/B;AAOJ;AAEa;AAEN;AACL;AAEA;AAAO;AACE;AACF;AACA;AACA;AACL;AAC4B;AAEhC;AAEO;AAA2B;AAChC;AAEF;AACE;AACA;AAAkB;AACT;AACF;AACA;AACA;AACL;AACoC;AAGtC;AACG;AAAiC;AAItC;;"}