@ttt-productions/chat-react 0.13.18 → 0.13.19

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.
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { ChatNameResolution, ChatNameResolver, ChatPrewarmSenders } from '@ttt-productions/chat-core';
2
+ import type { ChatNameReadFailure, ChatNameResolution, ChatNameResolver, ChatPrewarmSenders } from '@ttt-productions/chat-core';
3
3
  export type UnresolvedChatName = Exclude<ChatNameResolution, {
4
4
  status: 'resolved';
5
5
  }>;
@@ -7,11 +7,13 @@ type ChatNameResolverContextValue = {
7
7
  resolveName: ChatNameResolver;
8
8
  prewarm?: ChatPrewarmSenders;
9
9
  renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;
10
+ renderHeldNameFailure?: (failure: ChatNameReadFailure) => React.ReactNode;
10
11
  };
11
12
  export type ChatNameResolverProviderProps = {
12
13
  resolveName: ChatNameResolver;
13
14
  prewarm?: ChatPrewarmSenders;
14
15
  renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;
16
+ renderHeldNameFailure?: (failure: ChatNameReadFailure) => React.ReactNode;
15
17
  children: React.ReactNode;
16
18
  };
17
19
  export declare function ChatNameResolverProvider(props: ChatNameResolverProviderProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatNameResolverContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatNameResolverContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAErF,KAAK,4BAA4B,GAAG;IAClC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;CAC5E,CAAC;AAIF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,qBAS5E;AAED,wBAAgB,mBAAmB,IAAI,4BAA4B,CAQlE;AAED,wBAAgB,2BAA2B,IAAI,4BAA4B,GAAG,IAAI,CAEjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAG5E"}
1
+ {"version":3,"file":"ChatNameResolverContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatNameResolverContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAErF,KAAK,4BAA4B,GAAG;IAClC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3E,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;CAC3E,CAAC;AAIF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3E,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,qBAS5E;AAED,wBAAgB,mBAAmB,IAAI,4BAA4B,CAQlE;AAED,wBAAgB,2BAA2B,IAAI,4BAA4B,GAAG,IAAI,CAEjF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAG5E"}
@@ -3,8 +3,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  const ChatNameResolverContext = React.createContext(null);
5
5
  export function ChatNameResolverProvider(props) {
6
- const { resolveName, prewarm, renderUnresolvedName, children } = props;
7
- const value = React.useMemo(() => ({ resolveName, prewarm, renderUnresolvedName }), [resolveName, prewarm, renderUnresolvedName]);
6
+ const { resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure, children } = props;
7
+ const value = React.useMemo(() => ({ resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure }), [resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure]);
8
8
  return (_jsx(ChatNameResolverContext.Provider, { value: value, children: children }));
9
9
  }
10
10
  export function useChatNameResolver() {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatNameResolverContext.js","sourceRoot":"","sources":["../../src/context/ChatNameResolverContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAsC,IAAI,CAAC,CAAC;AAS/F,MAAM,UAAU,wBAAwB,CAAC,KAAoC;IAC3E,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EACtD,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAC7C,CAAC;IACF,OAAO,CACL,KAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAoC,CAC9F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC9C,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type {\n ChatNameResolution,\n ChatNameResolver,\n ChatPrewarmSenders,\n} from '@ttt-productions/chat-core';\n\nexport type UnresolvedChatName = Exclude<ChatNameResolution, { status: 'resolved' }>;\n\ntype ChatNameResolverContextValue = {\n resolveName: ChatNameResolver;\n prewarm?: ChatPrewarmSenders;\n renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;\n};\n\nconst ChatNameResolverContext = React.createContext<ChatNameResolverContextValue | null>(null);\n\nexport type ChatNameResolverProviderProps = {\n resolveName: ChatNameResolver;\n prewarm?: ChatPrewarmSenders;\n renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;\n children: React.ReactNode;\n};\n\nexport function ChatNameResolverProvider(props: ChatNameResolverProviderProps) {\n const { resolveName, prewarm, renderUnresolvedName, children } = props;\n const value = React.useMemo(\n () => ({ resolveName, prewarm, renderUnresolvedName }),\n [resolveName, prewarm, renderUnresolvedName],\n );\n return (\n <ChatNameResolverContext.Provider value={value}>{children}</ChatNameResolverContext.Provider>\n );\n}\n\nexport function useChatNameResolver(): ChatNameResolverContextValue {\n const ctx = React.useContext(ChatNameResolverContext);\n if (!ctx) {\n throw new Error(\n '[chat-react] ChatNameResolverProvider is required. Wrap your ChatShell tree with <ChatNameResolverProvider>.',\n );\n }\n return ctx;\n}\n\nexport function useOptionalChatNameResolver(): ChatNameResolverContextValue | null {\n return React.useContext(ChatNameResolverContext);\n}\n\nexport function useSenderNameResolution(senderId: string): ChatNameResolution {\n const { resolveName } = useChatNameResolver();\n return resolveName(senderId);\n}\n"]}
1
+ {"version":3,"file":"ChatNameResolverContext.js","sourceRoot":"","sources":["../../src/context/ChatNameResolverContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAsC,IAAI,CAAC,CAAC;AAU/F,MAAM,UAAU,wBAAwB,CAAC,KAAoC;IAC3E,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC,EAC7E,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CACpE,CAAC;IACF,OAAO,CACL,KAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAoC,CAC9F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC9C,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type {\n ChatNameReadFailure,\n ChatNameResolution,\n ChatNameResolver,\n ChatPrewarmSenders,\n} from '@ttt-productions/chat-core';\n\nexport type UnresolvedChatName = Exclude<ChatNameResolution, { status: 'resolved' }>;\n\ntype ChatNameResolverContextValue = {\n resolveName: ChatNameResolver;\n prewarm?: ChatPrewarmSenders;\n renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;\n renderHeldNameFailure?: (failure: ChatNameReadFailure) => React.ReactNode;\n};\n\nconst ChatNameResolverContext = React.createContext<ChatNameResolverContextValue | null>(null);\n\nexport type ChatNameResolverProviderProps = {\n resolveName: ChatNameResolver;\n prewarm?: ChatPrewarmSenders;\n renderUnresolvedName?: (resolution: UnresolvedChatName) => React.ReactNode;\n renderHeldNameFailure?: (failure: ChatNameReadFailure) => React.ReactNode;\n children: React.ReactNode;\n};\n\nexport function ChatNameResolverProvider(props: ChatNameResolverProviderProps) {\n const { resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure, children } = props;\n const value = React.useMemo(\n () => ({ resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure }),\n [resolveName, prewarm, renderUnresolvedName, renderHeldNameFailure],\n );\n return (\n <ChatNameResolverContext.Provider value={value}>{children}</ChatNameResolverContext.Provider>\n );\n}\n\nexport function useChatNameResolver(): ChatNameResolverContextValue {\n const ctx = React.useContext(ChatNameResolverContext);\n if (!ctx) {\n throw new Error(\n '[chat-react] ChatNameResolverProvider is required. Wrap your ChatShell tree with <ChatNameResolverProvider>.',\n );\n }\n return ctx;\n}\n\nexport function useOptionalChatNameResolver(): ChatNameResolverContextValue | null {\n return React.useContext(ChatNameResolverContext);\n}\n\nexport function useSenderNameResolution(senderId: string): ChatNameResolution {\n const { resolveName } = useChatNameResolver();\n return resolveName(senderId);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SenderName.d.ts","sourceRoot":"","sources":["../../src/ui/SenderName.tsx"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAK5D"}
1
+ {"version":3,"file":"SenderName.d.ts","sourceRoot":"","sources":["../../src/ui/SenderName.tsx"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAY5D"}
@@ -1,11 +1,12 @@
1
1
  'use client';
2
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useChatNameResolver } from '../context/ChatNameResolverContext.js';
4
4
  export function SenderName({ senderId }) {
5
- const { resolveName, renderUnresolvedName } = useChatNameResolver();
5
+ const { resolveName, renderUnresolvedName, renderHeldNameFailure } = useChatNameResolver();
6
6
  const resolution = resolveName(senderId);
7
- if (resolution.status === 'resolved')
8
- return _jsx(_Fragment, { children: resolution.name });
7
+ if (resolution.status === 'resolved') {
8
+ return (_jsxs(_Fragment, { children: [resolution.name, resolution.failure ? (renderHeldNameFailure?.(resolution.failure) ?? null) : null] }));
9
+ }
9
10
  return _jsx(_Fragment, { children: renderUnresolvedName?.(resolution) ?? null });
10
11
  }
11
12
  //# sourceMappingURL=SenderName.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SenderName.js","sourceRoot":"","sources":["../../src/ui/SenderName.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAwB;IAC3D,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpE,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,4BAAG,UAAU,CAAC,IAAI,GAAI,CAAC;IACpE,OAAO,4BAAG,oBAAoB,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,GAAI,CAAC;AAC3D,CAAC","sourcesContent":["'use client';\n\nimport { useChatNameResolver } from '../context/ChatNameResolverContext.js';\n\nexport function SenderName({ senderId }: { senderId: string }) {\n const { resolveName, renderUnresolvedName } = useChatNameResolver();\n const resolution = resolveName(senderId);\n if (resolution.status === 'resolved') return <>{resolution.name}</>;\n return <>{renderUnresolvedName?.(resolution) ?? null}</>;\n}\n"]}
1
+ {"version":3,"file":"SenderName.js","sourceRoot":"","sources":["../../src/ui/SenderName.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAwB;IAC3D,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC3F,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CACL,8BACG,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,4BAAG,oBAAoB,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,GAAI,CAAC;AAC3D,CAAC","sourcesContent":["'use client';\n\nimport { useChatNameResolver } from '../context/ChatNameResolverContext.js';\n\nexport function SenderName({ senderId }: { senderId: string }) {\n const { resolveName, renderUnresolvedName, renderHeldNameFailure } = useChatNameResolver();\n const resolution = resolveName(senderId);\n if (resolution.status === 'resolved') {\n return (\n <>\n {resolution.name}\n {resolution.failure ? (renderHeldNameFailure?.(resolution.failure) ?? null) : null}\n </>\n );\n }\n return <>{renderUnresolvedName?.(resolution) ?? null}</>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttt-productions/chat-react",
3
- "version": "0.13.18",
3
+ "version": "0.13.19",
4
4
  "description": "Chat React UI, hooks, and Firebase-client adapter for TTT Productions apps (realtime newest window + infinite older pagination)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "peerDependencies": {
35
35
  "@tanstack/react-query": ">=5.0.0",
36
- "@ttt-productions/query-core": "^0.14.24",
36
+ "@ttt-productions/query-core": "^0.14.25",
37
37
  "firebase": ">=12.0.0",
38
38
  "lucide-react": "^1.30.0",
39
39
  "react": ">=19.0.0",
@@ -60,8 +60,8 @@
60
60
  }
61
61
  },
62
62
  "dependencies": {
63
- "@ttt-productions/chat-core": "^0.11.6",
64
- "@ttt-productions/chat-schemas": "^0.10.9",
63
+ "@ttt-productions/chat-core": "^0.11.7",
64
+ "@ttt-productions/chat-schemas": "^0.10.10",
65
65
  "@ttt-productions/realtime-core": "^0.1.5",
66
66
  "@ttt-productions/ui-core": "^0.11.35",
67
67
  "@ttt-productions/upload-ui": "^0.7.19",
@@ -69,7 +69,7 @@
69
69
  "@ttt-productions/firebase-helpers": "^0.12.16"
70
70
  },
71
71
  "devDependencies": {
72
- "@ttt-productions/query-core": "^0.14.24",
72
+ "@ttt-productions/query-core": "^0.14.25",
73
73
  "@types/react": "^19.0.0",
74
74
  "@types/react-dom": "^19.0.0",
75
75
  "lucide-react": "^1.30.0",