@konce-pt/chat
v0.11.1
Published
Chat core for Koncept UI — message grouping, day separators, date-label kinds and send-status arithmetic. Framework-free TypeScript, zero runtime dependencies.
Downloads
843
Maintainers
Readme
@konce-pt/chat
Rdzeń czatu Koncept UI: grupowanie wiadomości, separatory dni, rodzaje etykiet dat i arytmetyka statusów wysyłki. Czysty TypeScript, zero zależności runtime, bez wiązania z frameworkiem.
Zwykle nie instalujesz go samodzielnie: używają go KptChat i KptChatMessage
z @konce-pt/angular/chat oraz z @konce-pt/react/chat. Sięgnij po niego wprost, gdy budujesz
własną listę rozmowy na tym samym grupowaniu.
npm i @konce-pt/chatimport { buildChatRows, mergeStatus, pendingCount } from '@konce-pt/chat';
// Z płaskiej listy wychodzą wiersze: separatory dat, dzielnik nieprzeczytanych i wiadomości
// z wyliczoną pozycją w grupie.
const rows = buildChatRows(messages, { currentUserId: 'me', unreadFrom: 'm-42' });
// Spóźniony ACK nie cofnie „przeczytane" do „dostarczone".
mergeStatus('read', 'delivered'); // 'read'
// Ile czeka na wysłanie — w locie i nieudane razem.
pendingCount(messages); // 2Grupowanie to nie kosmetyka
Pozycja wiadomości w grupie decyduje, który bąbel zapada narożnik, nosi ogonek, dostaje awatar i pokazuje godzinę. Dlatego liczy to jedna funkcja, wspólna dla obu portów, i dlatego ma testy — błąd tutaj to awatar przy niewłaściwej wiadomości, nie przesunięty piksel.
API
- Grupowanie —
buildChatRows,KPT_CHAT_GROUP_GAP_MS, typyKptChatRow,KptChatMessageRow,KptChatGroupPosition,KptChatGroupOptions - Etykiety dat —
dateLabel, typKptChatDateLabel - Czas —
toDate,startOfDay,isSameDay,diffInDays - Statusy —
statusRank,mergeStatus,canRetry,pendingCount - Model — typy
KptChatMessage,KptChatAuthor,KptChatAttachment,KptChatReaction,KptChatReplyRef,KptChatStatus
Pełny opis: llms.txt (EN)
i llms-pl.txt (PL).
Testy
pnpm --filter @konce-pt/chat exec node --test "src/**/*.test.ts"Licencja
MIT © konce.pt
