@konce-pt/angular 0.8.3 → 0.8.5

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"konce-pt-angular-chat.mjs","sources":["../../chat/src/lib/chat-message.component.html","../../chat/src/lib/chat-message.component.ts","../../chat/src/lib/chat-typing.component.html","../../chat/src/lib/chat-typing.component.ts","../../chat/src/lib/chat.component.html","../../chat/src/lib/chat.component.ts","../../chat/src/lib/chat-composer.component.html","../../chat/src/lib/chat-composer.component.ts","../../chat/src/lib/chat-dock.component.html","../../chat/src/lib/chat-dock.component.ts","../../chat/src/public-api.ts","../../chat/src/konce-pt-angular-chat.ts"],"sourcesContent":["@if (isSystem()) {\n <p class=\"kpt-chat-message__system\">{{ resolvedText() }}</p>\n} @else {\n <div class=\"kpt-chat-message__row\" [attr.data-align]=\"align()\">\n @if (align() === 'start') {\n <span class=\"kpt-chat-message__avatar\" aria-hidden=\"true\">\n @if (showAvatar()) {\n <kpt-avatar size=\"sm\" [src]=\"resolvedAuthor()?.avatar ?? null\" [name]=\"resolvedAuthor()?.name ?? ''\" />\n }\n </span>\n }\n\n <div class=\"kpt-chat-message__stack\">\n @if (showAuthor() && resolvedAuthor(); as author) {\n <span class=\"kpt-chat-message__author\">{{ author.name }}</span>\n }\n\n <div\n class=\"kpt-chat-message__bubble\"\n [attr.data-variant]=\"resolvedVariant()\"\n [attr.data-align]=\"align()\"\n [attr.data-position]=\"position()\"\n [attr.data-status]=\"resolvedStatus()\"\n [attr.data-tail]=\"hasTail() ? '' : null\"\n >\n @if (resolvedReplyTo(); as quote) {\n <button type=\"button\" class=\"kpt-chat-message__quote\" (click)=\"quoted.emit(quote)\">\n <span class=\"kpt-chat-message__quote-author\">{{ quote.author }}</span>\n <span class=\"kpt-chat-message__quote-text\">{{ quote.excerpt }}</span>\n </button>\n }\n\n @if (resolvedText()) {\n <p class=\"kpt-chat-message__text\">{{ resolvedText() }}</p>\n }\n <ng-content />\n\n @if (resolvedAttachments().length) {\n <ul class=\"kpt-chat-message__files\">\n @for (file of resolvedAttachments(); track file.id) {\n <li class=\"kpt-chat-message__file\">\n @if (file.thumbnail) {\n <img class=\"kpt-chat-message__file-thumb\" [src]=\"file.thumbnail\" [alt]=\"file.name\" />\n } @else {\n <kpt-icon name=\"paperclip\" aria-hidden=\"true\" />\n }\n <a class=\"kpt-chat-message__file-name\" [attr.href]=\"file.url ?? null\" [attr.download]=\"file.url ? file.name : null\">\n {{ file.name }}\n </a>\n @if (file.size) {\n <span class=\"kpt-chat-message__file-size\">{{ fileSize(file.size) }}</span>\n }\n </li>\n }\n </ul>\n }\n\n @if (showMeta()) {\n <span class=\"kpt-chat-message__meta\">\n @if (timeLabel()) {\n <time class=\"kpt-chat-message__time\" [attr.datetime]=\"isoTime()\">{{ timeLabel() }}</time>\n }\n @if (statusIcon(); as icon) {\n <kpt-icon class=\"kpt-chat-message__status\" [name]=\"icon\" aria-hidden=\"true\" />\n }\n </span>\n }\n\n @if (resolvedReactions().length) {\n <ul class=\"kpt-chat-message__reactions\" [attr.data-align]=\"align()\">\n @for (reaction of resolvedReactions(); track reaction.emoji) {\n <li class=\"kpt-chat-message__reaction\" [attr.data-reacted]=\"reaction.reacted ? '' : null\">\n <span aria-hidden=\"true\">{{ reaction.emoji }}</span>\n <span class=\"kpt-chat-message__reaction-count\">{{ reaction.count }}</span>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n\n <span class=\"kpt-chat-message__actions\" [attr.data-open]=\"pickerOpen() ? '' : null\">\n @if (canRetry()) {\n <kpt-icon-button\n class=\"kpt-chat-message__retry\"\n size=\"sm\"\n [ariaLabel]=\"i18n.t('chat.retry')\"\n (click)=\"retry.emit()\"\n >\n <kpt-icon name=\"refresh\" />\n </kpt-icon-button>\n } @else if (actions()) {\n <kpt-icon-button size=\"sm\" [ariaLabel]=\"i18n.t('chat.replyTo', { author: resolvedAuthor()?.name ?? '' })\" (click)=\"reply.emit()\">\n <kpt-icon name=\"corner-up-left\" />\n </kpt-icon-button>\n\n <span class=\"kpt-chat-message__react\" (keydown.escape)=\"pickerOpen.set(false)\" (focusout)=\"onPickerFocusOut($event)\">\n <kpt-icon-button\n size=\"sm\"\n [ariaLabel]=\"i18n.t('chat.react')\"\n [ariaExpanded]=\"pickerOpen()\"\n (click)=\"pickerOpen.set(!pickerOpen())\"\n >\n <kpt-icon name=\"mood-smile\" />\n </kpt-icon-button>\n\n @if (pickerOpen()) {\n <span class=\"kpt-chat-message__picker\" role=\"group\" [attr.aria-label]=\"i18n.t('chat.react')\">\n @for (option of reactionOptions(); track option.kind) {\n <button\n type=\"button\"\n class=\"kpt-chat-message__pick\"\n [attr.aria-label]=\"reactionLabel(option)\"\n [attr.title]=\"reactionLabel(option)\"\n [attr.aria-pressed]=\"hasReacted(option.emoji)\"\n (click)=\"pick(option.emoji)\"\n >\n <span aria-hidden=\"true\">{{ option.emoji }}</span>\n </button>\n }\n </span>\n }\n </span>\n }\n </span>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { KptAvatar, KptI18n, KptIcon, KptIconButton } from '@konce-pt/angular';\nimport { KPT_CHAT_REACTIONS, canRetry, toDate } from '@konce-pt/chat';\nimport type {\n KptChatAttachment,\n KptChatAuthor,\n KptChatGroupPosition,\n KptChatMessage as KptChatMessageModel,\n KptChatReaction,\n KptChatReactionOption,\n KptChatReplyRef,\n KptChatStatus,\n} from '@konce-pt/chat';\n\n/** Wygląd bąbla. `system` nie rysuje bąbla w ogóle — to komunikat, nie wypowiedź. */\nexport type KptChatMessageVariant = 'neutral' | 'primary' | 'solid' | 'ghost' | 'system';\n\n/** Ikona statusu wysyłki. `read` używa tej samej ikony co `delivered`, różni je kolor. */\nconst STATUS_ICONS: Record<KptChatStatus, string> = {\n sending: 'clock',\n sent: 'check',\n delivered: 'checks',\n read: 'checks',\n failed: 'alert-triangle',\n};\n\n/**\n * Pojedyncza wiadomość czatu — bąbel z treścią, godziną, statusem wysyłki i opcjonalnym\n * awatarem, cytatem, załącznikami i reakcjami.\n *\n * Działa na dwa sposoby: dostaje gotowy obiekt przez `[message]` (tak używa go `kpt-chat`)\n * albo pojedyncze inputy, gdy budujesz listę samodzielnie. Treść można też wrzucić\n * przez `<ng-content />` — projekcja wygrywa z `text`, więc bąbel przyjmuje cokolwiek.\n *\n * Wygląd wewnątrz grupy steruje `position`: zapadnięty narożnik od strony nadawcy i ogonek\n * tylko przy ostatnim bąblu. Wylicza to `buildChatRows()` z `@konce-pt/chat`.\n *\n * @example\n * <kpt-chat-message [message]=\"msg\" align=\"end\" position=\"last\" />\n * <kpt-chat-message align=\"end\" status=\"failed\" (retry)=\"resend()\">Nie poszło</kpt-chat-message>\n */\n@Component({\n selector: 'kpt-chat-message',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptAvatar, KptIcon, KptIconButton],\n templateUrl: './chat-message.component.html',\n styleUrl: './chat-message.component.scss',\n host: {\n class: 'kpt-chat-message-host',\n '[attr.role]': 'isSystem() ? \"note\" : \"article\"',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class KptChatMessage {\n /** Cała wiadomość naraz. Pojedyncze inputy poniżej mają nad nią priorytet. */\n readonly message = input<KptChatMessageModel | null>(null);\n\n readonly author = input<KptChatAuthor | null>(null);\n readonly text = input<string | null>(null);\n readonly time = input<Date | string | number | null>(null);\n readonly attachments = input<readonly KptChatAttachment[] | null>(null);\n readonly reactions = input<readonly KptChatReaction[] | null>(null);\n readonly replyTo = input<KptChatReplyRef | null>(null);\n readonly status = input<KptChatStatus | null>(null);\n\n /** Strona listy: `start` to cudza wiadomość, `end` własna. */\n readonly align = input<'start' | 'end'>('start');\n /** Wariant kolorystyczny; bez niego wynika z `align` (własna = `primary`). */\n readonly variant = input<KptChatMessageVariant | null>(null);\n readonly position = input<KptChatGroupPosition>('single');\n readonly system = input(false, { transform: booleanAttribute });\n\n readonly showAuthor = input(false, { transform: booleanAttribute });\n readonly showAvatar = input(false, { transform: booleanAttribute });\n readonly showMeta = input(true, { transform: booleanAttribute });\n readonly tail = input(true, { transform: booleanAttribute });\n /** Akcje pod kursorem: odpowiedz i zareaguj. Domyślnie wyłączone. */\n readonly actions = input(false, { transform: booleanAttribute });\n /** Zestaw wybieraka reakcji. Domyślnie pięć wbudowanych; można go skrócić lub przestawić. */\n readonly reactionOptions = input<readonly KptChatReactionOption[]>(KPT_CHAT_REACTIONS);\n\n readonly retry = output<void>();\n readonly reply = output<void>();\n /** Wybrana reakcja (emoji). Biblioteka niczego nie dopisuje do modelu — robi to aplikacja. */\n readonly react = output<string>();\n /** Kliknięcie w cytat — aplikacja może przewinąć listę do oryginału. */\n readonly quoted = output<KptChatReplyRef>();\n\n protected readonly i18n = inject(KptI18n);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n /** Czy wybierak reakcji jest otwarty. */\n protected readonly pickerOpen = signal(false);\n\n constructor() {\n // Kliknięcie obok zamyka wybierak. Sam `focusout` nie wystarcza: w Safari kliknięcie\n // w przycisk nie przenosi na niego fokusu, więc wybierak zostawałby otwarty na zawsze.\n effect((onCleanup) => {\n if (!this.pickerOpen()) return;\n const close = (event: Event) => {\n if (!this.host.nativeElement.contains(event.target as Node)) this.pickerOpen.set(false);\n };\n // Faza przechwytywania: własne `click` na opcji zdąży się wykonać przed zamknięciem,\n // bo wybierak zamyka `pointerdown`, nie `click`.\n document.addEventListener('pointerdown', close, true);\n onCleanup(() => document.removeEventListener('pointerdown', close, true));\n });\n }\n\n protected readonly isSystem = computed(() => this.system() || (this.message()?.system ?? false));\n protected readonly resolvedAuthor = computed(() => this.author() ?? this.message()?.author ?? null);\n protected readonly resolvedText = computed(() => this.text() ?? this.message()?.text ?? '');\n protected readonly resolvedStatus = computed(() => this.status() ?? this.message()?.status ?? null);\n protected readonly resolvedReplyTo = computed(() => this.replyTo() ?? this.message()?.replyTo ?? null);\n protected readonly resolvedAttachments = computed(\n () => this.attachments() ?? this.message()?.attachments ?? [],\n );\n protected readonly resolvedReactions = computed(\n () => this.reactions() ?? this.message()?.reactions ?? [],\n );\n\n protected readonly sentAt = computed(() => {\n const value = this.time() ?? this.message()?.sentAt ?? null;\n return value === null ? null : toDate(value);\n });\n\n /**\n * Wariant domyślny bierze się z wyrównania. Własna wiadomość dostaje pełny `solid`,\n * bo motyw biblioteki jest monochromatyczny: pastelowy `primary-subtle` ma tę samą\n * jasność co `muted`, więc własny i cudzy bąbel byłyby nie do odróżnienia. Kto woli\n * ciszej, ustawia `variant=\"primary\"` ręcznie.\n */\n protected readonly resolvedVariant = computed<KptChatMessageVariant>(() => {\n if (this.isSystem()) return 'system';\n return this.variant() ?? (this.align() === 'end' ? 'solid' : 'neutral');\n });\n\n /** Ogonek tylko na końcu grupy i tylko tam, gdzie bąbel ma tło, z którego da się go wyciąć. */\n protected readonly hasTail = computed(() => {\n const variant = this.resolvedVariant();\n if (!this.tail() || variant === 'ghost' || variant === 'system') return false;\n return this.position() === 'last' || this.position() === 'single';\n });\n\n protected readonly canRetry = computed(() => canRetry(this.resolvedStatus()));\n\n protected readonly statusIcon = computed(() => {\n const status = this.resolvedStatus();\n return status ? STATUS_ICONS[status] : null;\n });\n\n protected readonly timeLabel = computed(() => {\n const date = this.sentAt();\n if (!date) return '';\n return new Intl.DateTimeFormat(this.i18n.locale(), { hour: '2-digit', minute: '2-digit' }).format(date);\n });\n\n protected readonly isoTime = computed(() => this.sentAt()?.toISOString() ?? null);\n\n /**\n * Etykieta dla czytnika ekranu. Bez niej z bąbla płynie sama treść — bez nadawcy,\n * godziny i informacji, że wiadomość się nie wysłała.\n */\n protected readonly ariaLabel = computed(() => {\n if (this.isSystem()) return this.resolvedText();\n const parts = [this.resolvedAuthor()?.name, this.timeLabel()];\n const status = this.resolvedStatus();\n if (status) parts.push(this.i18n.t('chat.' + status));\n return parts.filter(Boolean).join(', ');\n });\n\n protected readonly statusLabel = computed(() => {\n const status = this.resolvedStatus();\n return status ? this.i18n.t('chat.' + status) : '';\n });\n\n /** Etykieta opcji wybieraka — `like` → `chat.reactLike`. */\n protected reactionLabel(option: KptChatReactionOption): string {\n return this.i18n.t('chat.react' + option.kind[0]!.toUpperCase() + option.kind.slice(1));\n }\n\n /** Czy bieżący użytkownik dał już tę reakcję — opcja wybieraka pokazuje to przez `aria-pressed`. */\n protected hasReacted(emoji: string): boolean {\n return this.resolvedReactions().some((reaction) => reaction.emoji === emoji && reaction.reacted);\n }\n\n protected pick(emoji: string): void {\n this.react.emit(emoji);\n this.pickerOpen.set(false);\n }\n\n /** Wyjście fokusu poza wybierak zamyka go — przechodzenie Tabem między opcjami nie. */\n protected onPickerFocusOut(event: FocusEvent): void {\n const container = event.currentTarget as HTMLElement;\n const next = event.relatedTarget as Node | null;\n if (!next || !container.contains(next)) this.pickerOpen.set(false);\n }\n\n /** Rozmiar załącznika w kB/MB — surowe bajty nic nie mówią przy pliku obok nazwy. */\n protected fileSize(bytes?: number): string {\n if (!bytes) return '';\n if (bytes < 1024) return bytes + ' B';\n if (bytes < 1024 * 1024) return Math.round(bytes / 1024) + ' kB';\n return (bytes / (1024 * 1024)).toFixed(1) + ' MB';\n }\n}\n","@if (visible()) {\n <div class=\"kpt-chat-typing\">\n <span class=\"kpt-chat-typing__bubble\" aria-hidden=\"true\">\n <span class=\"kpt-chat-typing__dot\"></span>\n <span class=\"kpt-chat-typing__dot\"></span>\n <span class=\"kpt-chat-typing__dot\"></span>\n </span>\n @if (text()) {\n <span class=\"kpt-chat-typing__label\">{{ text() }}</span>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { KptI18n } from '@konce-pt/angular';\nimport type { KptChatAuthor } from '@konce-pt/chat';\n\n/**\n * Wskaźnik pisania — trzy kropki i informacja, kto pisze.\n *\n * Pusta lista autorów nie renderuje niczego, więc można go trzymać w szablonie na stałe\n * i sterować wyłącznie danymi.\n *\n * Element jest `role=\"status\"` z `aria-live=\"polite\"`: czytnik ogłasza wejście i zniknięcie\n * wskaźnika, ale nie przerywa czytania wiadomości. Sama animacja kropek nic nie mówi —\n * informację niesie etykieta.\n *\n * @example\n * <kpt-chat-typing [authors]=\"typing()\" />\n */\n@Component({\n selector: 'kpt-chat-typing',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './chat-typing.component.html',\n styleUrl: './chat-typing.component.scss',\n host: {\n class: 'kpt-chat-typing-host',\n role: 'status',\n 'aria-live': 'polite',\n },\n})\nexport class KptChatTyping {\n /** Osoby piszące w tej chwili. Pusta lista chowa wskaźnik. */\n readonly authors = input<readonly KptChatAuthor[]>([]);\n /** Własna etykieta zamiast tej ze słownika. */\n readonly label = input<string>('');\n\n protected readonly i18n = inject(KptI18n);\n\n protected readonly visible = computed(() => this.authors().length > 0 || !!this.label());\n\n /**\n * Jedna osoba jest wymieniona z imienia, przy większej liczbie liczy się głowy —\n * lista nazwisk rozjeżdża wiersz i i tak nikt jej nie czyta.\n */\n protected readonly text = computed(() => {\n const custom = this.label();\n if (custom) return custom;\n const authors = this.authors();\n if (authors.length === 0) return '';\n if (authors.length === 1) return this.i18n.t('chat.typing', { name: authors[0]!.name });\n return this.i18n.t('chat.typingMany', { count: authors.length });\n });\n}\n","@if (offline()) {\n <p class=\"kpt-chat__offline\" role=\"status\">\n <kpt-icon name=\"alert-triangle\" aria-hidden=\"true\" />\n <span>{{ i18n.t('chat.offline') }}</span>\n @if (pending()) {\n <span class=\"kpt-chat__offline-count\">{{ i18n.t('chat.pending', { count: pending() }) }}</span>\n }\n </p>\n}\n\n<div class=\"kpt-chat__body\">\n <div\n #viewport\n class=\"kpt-chat__viewport\"\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n (scroll)=\"onScroll(viewport)\"\n >\n @if (!viewRows().length) {\n <p class=\"kpt-chat__empty\">{{ emptyLabel() || i18n.t('chat.empty') }}</p>\n }\n\n @for (row of viewRows(); track row.key) {\n @switch (row.kind) {\n @case ('date') {\n <p class=\"kpt-chat__date\" role=\"separator\" [attr.aria-label]=\"row.text\">{{ row.text }}</p>\n }\n @case ('unread') {\n <p class=\"kpt-chat__unread\" role=\"separator\" [attr.aria-label]=\"i18n.t('chat.newMessages', { count: row.count })\">\n <span>{{ i18n.t('chat.unread') }}</span>\n </p>\n }\n @case ('message') {\n <kpt-chat-message\n [message]=\"row.message\"\n [text]=\"messageTpl() ? '' : null\"\n [align]=\"row.own ? 'end' : 'start'\"\n [position]=\"row.position\"\n [showAuthor]=\"row.showAuthor\"\n [showAvatar]=\"row.showAvatar\"\n [showMeta]=\"row.showMeta\"\n [actions]=\"actions()\"\n [reactionOptions]=\"reactionOptions()\"\n (retry)=\"retry.emit(row.message)\"\n (reply)=\"reply.emit(row.message)\"\n (react)=\"react.emit({ message: row.message, emoji: $event })\"\n (quoted)=\"quoted.emit($event)\"\n >\n @if (messageTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: row.message, row: row }\" />\n }\n </kpt-chat-message>\n }\n }\n }\n\n @if (typing().length) {\n <kpt-chat-typing [authors]=\"typing()\" />\n }\n </div>\n\n <!-- Pigułka dnia wisi nad listą, a nie w niej: w liście jadą separatory z `role=\"separator\"`,\n więc dla czytnika ekranu jest tylko ich wizualnym echem — stąd `aria-hidden`. W DOM stoi\n zawsze, bo skrypt musi umieć zmierzyć jej pas także wtedy, gdy jest zgaszona. -->\n <p #day class=\"kpt-chat__day\" aria-hidden=\"true\" [attr.data-hidden]=\"dayVisible() ? null : ''\">{{ dayLabel() }}</p>\n\n @if (newCount()) {\n <button type=\"button\" class=\"kpt-chat__jump\" (click)=\"jumpToLatest()\">\n <kpt-icon name=\"arrow-down\" aria-hidden=\"true\" />\n {{ i18n.t('chat.newMessages', { count: newCount() }) }}\n </button>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { KptI18n, KptIcon } from '@konce-pt/angular';\nimport { KPT_CHAT_GROUP_GAP_MS, KPT_CHAT_REACTIONS, buildChatRows, chatDayIndicator, pendingCount } from '@konce-pt/chat';\nimport type {\n KptChatAuthor,\n KptChatDateLabel,\n KptChatMessage as KptChatMessageModel,\n KptChatReactionOption,\n KptChatReplyRef,\n KptChatRow,\n} from '@konce-pt/chat';\nimport { KptChatMessage } from './chat-message.component';\nimport { KptChatTyping } from './chat-typing.component';\n\n/** Wybór reakcji na wiadomości — komponent mówi, w co kliknięto, dopisanie należy do aplikacji. */\nexport interface KptChatReactEvent<T = unknown> {\n message: KptChatMessageModel<T>;\n emoji: string;\n}\n\n/** Wiersz separatora daty z gotową etykietą — tłumaczenie robi komponent, nie rdzeń. */\ntype KptChatDateViewRow = { kind: 'date'; key: string; date: Date; label: KptChatDateLabel; text: string };\ntype KptChatViewRow<T> = KptChatDateViewRow | Exclude<KptChatRow<T>, { kind: 'date' }>;\n\n/** Odległość od dołu (px), przy której listę uznajemy jeszcze za przypiętą. */\nconst PIN_THRESHOLD = 48;\n\n/**\n * Wiersze, które nie mogą znaleźć się pod pływającą pigułką dnia: separatory i komunikaty\n * systemowe, czyli wszystko wyśrodkowane, co czyta się jak jej bliźniak. Bąble są poza listą —\n * pigułka nad wypowiedzią to normalny obrazek czatu.\n */\nconst BLOCKING_ROWS = '.kpt-chat__date, .kpt-chat__unread, .kpt-chat-message__system';\n\n/**\n * Lista rozmowy — grupuje wiadomości, wstawia separatory dni i dzielnik nieprzeczytanych,\n * trzyma widok przy dole i pokazuje pasek offline z liczbą wiadomości czekających na wysłanie.\n *\n * Sama logika wierszy mieszka w `@konce-pt/chat` (`buildChatRows`), więc port Reacta liczy ją\n * tak samo. Komponent nie ma nic wspólnego z transportem: wiadomości dostaje, a `(retry)`\n * i `(loadMore)` tylko zgłasza — ponowieniem wysyłki i dociąganiem historii zajmuje się aplikacja.\n *\n * Treść bąbla można podmienić własnym `<ng-template>`; kontekst dostaje wiadomość jako\n * `$implicit` i cały wiersz jako `row`.\n *\n * Kompozytor (`kpt-chat-composer`) jest osobnym komponentem i stoi obok listy — dzięki temu\n * czat bez pola wpisywania (podgląd, archiwum) nie wozi go ze sobą.\n *\n * @example\n * <kpt-chat [messages]=\"messages()\" currentUser=\"me\" [typing]=\"typing()\" (retry)=\"resend($event)\" />\n */\n@Component({\n selector: 'kpt-chat',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptChatMessage, KptChatTyping, KptIcon],\n templateUrl: './chat.component.html',\n styleUrl: './chat.component.scss',\n host: { class: 'kpt-chat-host' },\n})\nexport class KptChat<T = unknown> {\n /** Wiadomości w kolejności chronologicznej — komponent ich nie sortuje. */\n readonly messages = input<readonly KptChatMessageModel<T>[]>([]);\n /** `id` nadawcy uznawanego za „mnie\": jego wiadomości idą na prawo i mają status. */\n readonly currentUser = input<string>('');\n /** Przerwa łamiąca grupę wiadomości jednego nadawcy. */\n readonly groupGapMs = input(KPT_CHAT_GROUP_GAP_MS);\n /** `id` pierwszej nieprzeczytanej wiadomości — nad nią stanie dzielnik. */\n readonly unreadFrom = input<string | null>(null);\n /** Brak połączenia: pasek u góry listy z liczbą wiadomości czekających na wysłanie. */\n readonly offline = input(false, { transform: booleanAttribute });\n /** Osoby piszące w tej chwili. */\n readonly typing = input<readonly KptChatAuthor[]>([]);\n /** Dosuwanie widoku do najnowszej wiadomości, dopóki użytkownik nie odjedzie w górę. */\n readonly autoScroll = input(true, { transform: booleanAttribute });\n /** Akcje bąbla pod kursorem: odpowiedz i zareaguj. */\n readonly actions = input(false, { transform: booleanAttribute });\n /** Zestaw wybieraka reakcji, przekazywany bąblom. Domyślnie pięć wbudowanych. */\n readonly reactionOptions = input<readonly KptChatReactionOption[]>(KPT_CHAT_REACTIONS);\n /** Własny komunikat pustej rozmowy. */\n readonly emptyLabel = input<string>('');\n\n readonly retry = output<KptChatMessageModel<T>>();\n readonly reply = output<KptChatMessageModel<T>>();\n /** Kliknięcie w reakcję w wybieraku: wiadomość i wybrane emoji. */\n readonly react = output<KptChatReactEvent<T>>();\n readonly quoted = output<KptChatReplyRef>();\n /** Przewinięcie na sam szczyt — moment na dociągnięcie starszych wiadomości. */\n readonly loadMore = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly messageTpl = contentChild(TemplateRef);\n\n private readonly viewport = viewChild<ElementRef<HTMLElement>>('viewport');\n private readonly day = viewChild<ElementRef<HTMLElement>>('day');\n private readonly destroyRef = inject(DestroyRef);\n\n /** Czy widok stoi przy dole listy. Odjazd w górę wyłącza dosuwanie. */\n protected readonly pinned = signal(true);\n /** Ile wiadomości przyszło, odkąd użytkownik odjechał w górę. */\n protected readonly newCount = signal(0);\n /** Tekst pływającej pigułki dnia — zostaje po zgaszeniu, żeby jej pas nie zmieniał wysokości. */\n protected readonly dayLabel = signal('');\n /** Czy pigułka dnia jest widoczna. */\n protected readonly dayVisible = signal(false);\n\n private lastCount = 0;\n private wasAtTop = false;\n\n protected readonly rows = computed(() =>\n buildChatRows(this.messages(), {\n currentUserId: this.currentUser(),\n gapMs: this.groupGapMs(),\n unreadFrom: this.unreadFrom(),\n }),\n );\n\n protected readonly viewRows = computed<KptChatViewRow<T>[]>(() =>\n this.rows().map((row) => (row.kind === 'date' ? { ...row, text: this.dateText(row.label) } : row)),\n );\n\n protected readonly pending = computed(() => pendingCount(this.messages()));\n\n constructor() {\n afterRenderEffect(() => {\n // Zależność: przerysowanie po każdej zmianie listy.\n this.viewRows();\n const element = this.viewport()?.nativeElement;\n if (!element) return;\n\n untracked(() => {\n const count = this.messages().length;\n const grew = count > this.lastCount;\n const first = this.lastCount === 0;\n this.lastCount = count;\n if (!grew) return;\n\n // Pierwsze wejście zawsze ląduje na dole — rozmowę czyta się od końca.\n if (first || (this.autoScroll() && this.pinned())) {\n this.scrollToBottom(first ? 'auto' : undefined);\n } else {\n this.newCount.update((value) => value + 1);\n }\n });\n\n untracked(() => this.syncDay());\n });\n\n // Zmiana szerokości zawija tekst w wierszach i przesuwa je spod pigułki — bez tego pigułka\n // zostałaby zgaszona (albo zapalona) na podstawie układu sprzed zmiany rozmiaru.\n afterNextRender(() => {\n const element = this.viewport()?.nativeElement;\n if (!element || !globalThis.ResizeObserver) return;\n const observer = new ResizeObserver(() => this.syncDay());\n observer.observe(element);\n this.destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n /** Przewija do najnowszej wiadomości i kasuje licznik nowych. */\n jumpToLatest(): void {\n this.pinned.set(true);\n this.newCount.set(0);\n this.scrollToBottom();\n }\n\n protected onScroll(element: HTMLElement): void {\n const distance = element.scrollHeight - element.scrollTop - element.clientHeight;\n const atBottom = distance < PIN_THRESHOLD;\n this.pinned.set(atBottom);\n if (atBottom) this.newCount.set(0);\n\n // `loadMore` tylko na wejściu w strefę szczytu — przy każdym zdarzeniu scroll\n // aplikacja dostawałaby dziesiątki żądań na jedno przewinięcie.\n const atTop = element.scrollTop < PIN_THRESHOLD;\n if (atTop && !this.wasAtTop) this.loadMore.emit();\n this.wasAtTop = atTop;\n\n this.syncDay();\n }\n\n /**\n * Ustawia tekst pływającej pigułki dnia — co ma na niej być, liczy `chatDayIndicator`\n * z `@konce-pt/chat`, tutaj zostaje czytanie prostokątów i przepisanie etykiety.\n *\n * Wszystkie pomiary idą przed zapisem sygnału, więc przeglądarka przelicza układ raz\n * na klatkę zamiast przy każdym wierszu.\n */\n private syncDay(): void {\n const element = this.viewport()?.nativeElement;\n const pill = this.day()?.nativeElement;\n if (!element || !pill) return;\n\n const separators = Array.from(element.querySelectorAll<HTMLElement>('.kpt-chat__date'));\n const blockers = Array.from(element.querySelectorAll<HTMLElement>(BLOCKING_ROWS));\n const box = (node: HTMLElement) => {\n const rect = node.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n };\n\n const active = chatDayIndicator(separators.map(box), blockers.map(box), box(pill));\n this.dayVisible.set(active >= 0);\n if (active < 0) return;\n\n // Etykieta zostaje po zgaszeniu pigułki: pusta zmieniałaby jej wysokość, a skrypt mierzy\n // ten pas także wtedy, gdy pigułki nie widać.\n const label = separators[active]?.textContent?.trim() ?? '';\n if (label !== this.dayLabel()) this.dayLabel.set(label);\n }\n\n private scrollToBottom(behavior?: ScrollBehavior): void {\n const element = this.viewport()?.nativeElement;\n if (!element) return;\n const reduced = globalThis.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n element.scrollTo({ top: element.scrollHeight, behavior: behavior ?? (reduced ? 'auto' : 'smooth') });\n }\n\n /**\n * Etykieta separatora dnia. Rdzeń zwraca rodzaj, słownik daje „dziś\"/„wczoraj\",\n * a nazwę dnia i pełną datę — `Intl`, żeby nie trzymać w słowniku kalendarza.\n */\n private dateText(label: KptChatDateLabel): string {\n const locale = this.i18n.locale();\n switch (label.kind) {\n case 'today':\n return this.i18n.t('chat.today');\n case 'yesterday':\n return this.i18n.t('chat.yesterday');\n case 'weekday':\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(label.date);\n default:\n return new Intl.DateTimeFormat(locale, { day: 'numeric', month: 'long', year: 'numeric' }).format(label.date);\n }\n }\n}\n","@if (replyTo(); as quote) {\n <div class=\"kpt-chat-composer__reply\">\n <span class=\"kpt-chat-composer__reply-body\">\n <span class=\"kpt-chat-composer__reply-author\">{{ i18n.t('chat.replyTo', { author: quote.author }) }}</span>\n <span class=\"kpt-chat-composer__reply-text\">{{ quote.excerpt }}</span>\n </span>\n <kpt-icon-button size=\"sm\" [ariaLabel]=\"i18n.t('chat.cancelReply')\" (click)=\"replyTo.set(null)\">\n <kpt-icon name=\"x\" />\n </kpt-icon-button>\n </div>\n}\n\n@if (files().length) {\n <ul class=\"kpt-chat-composer__files\">\n @for (file of files(); track file.name + file.size + file.lastModified) {\n <li class=\"kpt-chat-composer__file\">\n <kpt-icon name=\"paperclip\" aria-hidden=\"true\" />\n <span class=\"kpt-chat-composer__file-name\">{{ file.name }}</span>\n <kpt-icon-button size=\"sm\" [ariaLabel]=\"i18n.t('chat.removeAttachment')\" (click)=\"removeFile(file)\">\n <kpt-icon name=\"x\" />\n </kpt-icon-button>\n </li>\n }\n </ul>\n}\n\n<div class=\"kpt-chat-composer\">\n @if (allowAttachments()) {\n <input #picker type=\"file\" class=\"kpt-chat-composer__picker\" multiple (change)=\"onFiles(picker)\" />\n <kpt-icon-button\n size=\"sm\"\n [disabled]=\"disabled()\"\n [ariaLabel]=\"i18n.t('chat.attach')\"\n (click)=\"picker.click()\"\n >\n <kpt-icon name=\"paperclip\" />\n </kpt-icon-button>\n }\n\n <textarea\n #field\n class=\"kpt-chat-composer__field\"\n rows=\"1\"\n [style.--_max-rows]=\"maxRows()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.placeholder]=\"placeholder() || i18n.t('chat.placeholder')\"\n [attr.aria-label]=\"placeholder() || i18n.t('chat.placeholder')\"\n (input)=\"onInput(field)\"\n (keydown)=\"onKeydown($event, field)\"\n ></textarea>\n\n <kpt-icon-button\n variant=\"filled\"\n [disabled]=\"!canSend()\"\n [ariaLabel]=\"sendLabel()\"\n (click)=\"submit(field)\"\n >\n <kpt-icon [name]=\"offline() ? 'clock' : 'send'\" />\n </kpt-icon-button>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output, signal } from '@angular/core';\nimport { KptI18n, KptIcon, KptIconButton } from '@konce-pt/angular';\nimport type { KptChatReplyRef } from '@konce-pt/chat';\n\n/** Ładunek wysyłki. Kompozytor niczego nie wysyła — pakuje dane i oddaje aplikacji. */\nexport interface KptChatComposerSubmit {\n text: string;\n files: readonly File[];\n replyTo: KptChatReplyRef | null;\n}\n\n/**\n * Pole pisania wiadomości — autorosnące, z załącznikami i paskiem cytatu.\n *\n * Nie jest kontrolką Signal Forms i celowo nią nie będzie: nie wchodzi do formularza, nie ma\n * stanu `touched`/`invalid`, a jego wartość znika po wysłaniu. `model('')` opisuje to wiernie.\n *\n * `Enter` wysyła, `Shift+Enter` łamie linię (`[enterToSend]=\"false\"` odwraca układ).\n * Przy `[offline]` przycisk zmienia etykietę na kolejkowanie — wiadomość dalej da się napisać\n * i oddać aplikacji, bo to ona decyduje, co zrobić z kolejką.\n *\n * @example\n * <kpt-chat-composer [(value)]=\"draft\" allowAttachments (send)=\"onSend($event)\" />\n */\n@Component({\n selector: 'kpt-chat-composer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon, KptIconButton],\n templateUrl: './chat-composer.component.html',\n styleUrl: './chat-composer.component.scss',\n host: { class: 'kpt-chat-composer-host' },\n})\nexport class KptChatComposer {\n readonly value = model('');\n /** Podpowiedź w pustym polu; bez niej etykieta ze słownika. */\n readonly placeholder = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Brak połączenia — przycisk mówi o kolejkowaniu, nie o wysyłce. */\n readonly offline = input(false, { transform: booleanAttribute });\n readonly allowAttachments = input(false, { transform: booleanAttribute });\n /** Ile wierszy pole może urosnąć, zanim zacznie się przewijać. */\n readonly maxRows = input(6);\n readonly enterToSend = input(true, { transform: booleanAttribute });\n /** Wiadomość, na którą odpowiadamy. Po wysłaniu czyści się razem z treścią. */\n readonly replyTo = model<KptChatReplyRef | null>(null);\n\n readonly send = output<KptChatComposerSubmit>();\n /** Pierwsze uderzenie w klawiaturę — sygnał „piszę\" dla drugiej strony. */\n readonly typing = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly files = signal<readonly File[]>([]);\n\n protected readonly canSend = computed(\n () => !this.disabled() && (this.value().trim().length > 0 || this.files().length > 0),\n );\n\n protected readonly sendLabel = computed(() =>\n this.offline() ? this.i18n.t('chat.queue') : this.i18n.t('chat.send'),\n );\n\n protected onInput(element: HTMLTextAreaElement): void {\n this.value.set(element.value);\n this.grow(element);\n this.typing.emit();\n }\n\n protected onKeydown(event: KeyboardEvent, element: HTMLTextAreaElement): void {\n if (event.key !== 'Enter') return;\n const wantsSend = this.enterToSend() ? !event.shiftKey : event.shiftKey;\n if (!wantsSend || event.isComposing) return;\n event.preventDefault();\n this.submit(element);\n }\n\n protected submit(element?: HTMLTextAreaElement): void {\n if (!this.canSend()) return;\n this.send.emit({ text: this.value().trim(), files: this.files(), replyTo: this.replyTo() });\n this.value.set('');\n this.files.set([]);\n this.replyTo.set(null);\n if (element) {\n element.value = '';\n this.grow(element);\n }\n }\n\n protected onFiles(input: HTMLInputElement): void {\n const picked = Array.from(input.files ?? []);\n if (picked.length) this.files.update((current) => [...current, ...picked]);\n // Bez wyzerowania ten sam plik wybrany drugi raz nie wywoła `change`.\n input.value = '';\n }\n\n protected removeFile(file: File): void {\n this.files.update((current) => current.filter((item) => item !== file));\n }\n\n /**\n * Wysokość liczona od treści. Zerowanie przed odczytem `scrollHeight` jest konieczne:\n * bez niego pole potrafi tylko rosnąć, bo `scrollHeight` nigdy nie zejdzie poniżej\n * ustawionej wcześniej wysokości. Górny limit trzyma CSS (`--_max-rows`).\n */\n private grow(element: HTMLTextAreaElement): void {\n element.style.height = 'auto';\n // `scrollHeight` liczy treść z paddingiem, ale BEZ ramki, a pole jest `border-box`.\n // Sama wysokość ze `scrollHeight` zostawia je o grubość ramki za niskie, więc puste\n // pole na jeden wiersz dostaje pasek przewijania i nigdy się go nie pozbywa.\n const borders = element.offsetHeight - element.clientHeight;\n element.style.height = element.scrollHeight + borders + 'px';\n }\n}\n","<div\n #panel\n class=\"kpt-chat-dock__panel\"\n role=\"dialog\"\n tabindex=\"-1\"\n [class.is-open]=\"open()\"\n [attr.data-position]=\"position()\"\n [style.--_width]=\"width()\"\n [style.--_offset]=\"offset() || null\"\n [attr.aria-label]=\"header() || i18n.t('chat.open')\"\n [attr.aria-hidden]=\"open() ? null : 'true'\"\n [attr.inert]=\"open() ? null : ''\"\n>\n <header class=\"kpt-chat-dock__header\">\n <span class=\"kpt-chat-dock__title\">{{ header() }}</span>\n <kpt-icon-button size=\"sm\" [ariaLabel]=\"i18n.t('chat.close')\" (click)=\"close()\">\n <kpt-icon name=\"x\" />\n </kpt-icon-button>\n </header>\n\n <div class=\"kpt-chat-dock__content\">\n <ng-content />\n </div>\n</div>\n\n<span\n #trigger\n class=\"kpt-chat-dock__trigger\"\n [attr.data-position]=\"position()\"\n [style.--_offset]=\"offset() || null\"\n>\n <!-- Plakietka wchodzi dopiero, gdy jest co policzyć: `kpt-badge` z pustą wartością\n rysuje kropkę, a ta na FAB-ie czatu kłamie o nieprzeczytanych wiadomościach. -->\n <ng-template #fab>\n <kpt-fab [ariaLabel]=\"triggerLabel()\" (click)=\"toggle()\">\n <kpt-icon [name]=\"open() ? 'x' : icon()\" />\n </kpt-fab>\n </ng-template>\n\n @if (unread() > 0) {\n <kpt-badge\n [value]=\"unread()\"\n variant=\"danger\"\n size=\"sm\"\n overlay\n [attr.aria-label]=\"i18n.t('chat.unreadBadge', { count: unread() })\"\n >\n <ng-container [ngTemplateOutlet]=\"fab\" />\n </kpt-badge>\n } @else {\n <ng-container [ngTemplateOutlet]=\"fab\" />\n }\n</span>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, effect, inject, input, model, untracked, viewChild } from '@angular/core';\nimport { KptBadge, KptFab, KptI18n, KptIcon, KptIconButton } from '@konce-pt/angular';\n\nexport type KptChatDockPosition = 'bottom-end' | 'bottom-start';\n\n/**\n * Pływający czat w rogu ekranu — FAB z licznikiem nieprzeczytanych i panel z rozmową.\n *\n * Zawartość panelu jest rzutowana, więc dock nie wie nic o wiadomościach: wkłada się do niego\n * `kpt-chat` i `kpt-chat-composer` (albo cokolwiek innego). Sam FAB to `kpt-fab` — dock go\n * używa, nie zastępuje.\n *\n * Poniżej `--kpt-breakpoint-sm` panel wchodzi na pełny ekran: 22,5 cm szerokości na telefonie\n * to nie panel, tylko szpara.\n *\n * @example\n * <kpt-chat-dock [(open)]=\"chatOpen\" [unread]=\"unread()\" header=\"Wsparcie\">\n * <kpt-chat [messages]=\"messages()\" currentUser=\"me\" />\n * <kpt-chat-composer (send)=\"onSend($event)\" />\n * </kpt-chat-dock>\n */\n@Component({\n selector: 'kpt-chat-dock',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptBadge, KptFab, KptIcon, KptIconButton],\n templateUrl: './chat-dock.component.html',\n styleUrl: './chat-dock.component.scss',\n host: {\n class: 'kpt-chat-dock-host',\n '(keydown.escape)': 'close()',\n },\n})\nexport class KptChatDock {\n readonly open = model(false);\n readonly position = input<KptChatDockPosition>('bottom-end');\n /** Licznik na plakietce FAB-a. Zero chowa plakietkę. */\n readonly unread = input(0);\n readonly header = input<string>('');\n /** Ikona zamkniętego FAB-a; otwarty zawsze pokazuje krzyżyk. */\n readonly icon = input('message-circle');\n /** Szerokość panelu na ekranach powyżej `--kpt-breakpoint-sm`. */\n readonly width = input('22.5rem');\n /**\n * Odsunięcie od rogu ekranu (dowolna długość CSS), wspólne dla obu osi.\n * Domyślnie `--kpt-space-6`. Przydaje się, gdy w tym samym rogu stoi już inny widget —\n * `kpt-scroll-top` przykleja się dokładnie tam samo i bez tego oba się nakładają.\n */\n readonly offset = input<string>('');\n\n protected readonly i18n = inject(KptI18n);\n\n private readonly panel = viewChild<ElementRef<HTMLElement>>('panel');\n private readonly trigger = viewChild<ElementRef<HTMLElement>>('trigger');\n\n protected readonly triggerLabel = computed(() =>\n this.open() ? this.i18n.t('chat.close') : this.i18n.t('chat.open'),\n );\n\n constructor() {\n effect(() => {\n const open = this.open();\n untracked(() => (open ? this.focusPanel() : undefined));\n });\n }\n\n protected toggle(): void {\n this.open.update((value) => !value);\n }\n\n close(): void {\n if (!this.open()) return;\n this.open.set(false);\n // Fokus wraca na FAB — po zamknięciu panelu nie może zostać na elemencie,\n // który przed chwilą zniknął z drzewa dostępności.\n this.trigger()?.nativeElement.querySelector('button')?.focus();\n }\n\n /**\n * Fokus ląduje na polu pisania, jeśli w panelu jest — po to się czat otwiera.\n * Bez pola bierze pierwszy element interaktywny, a w ostateczności sam panel.\n */\n private focusPanel(): void {\n const element = this.panel()?.nativeElement;\n if (!element) return;\n requestAnimationFrame(() => {\n const target =\n element.querySelector<HTMLElement>('textarea:not([disabled])') ??\n element.querySelector<HTMLElement>('input:not([disabled]), button:not([disabled])') ??\n element;\n target.focus();\n });\n }\n}\n","/*\n * Public API — @konce-pt/angular/chat\n * Rodzina komponentów rozmowy (sygnały, zoneless). Rdzeń obliczeń — grupowanie wiadomości,\n * etykiety dni i arytmetyka statusów — mieszka w `@konce-pt/chat`, paczce bez frameworka,\n * wspólnej z portem Reacta; tu tylko re-eksport, żeby publiczne API subpathu niosło komplet.\n */\nexport { KptChat } from './lib/chat.component';\nexport type { KptChatReactEvent } from './lib/chat.component';\nexport { KptChatMessage } from './lib/chat-message.component';\nexport type { KptChatMessageVariant } from './lib/chat-message.component';\nexport { KptChatTyping } from './lib/chat-typing.component';\nexport { KptChatComposer } from './lib/chat-composer.component';\nexport type { KptChatComposerSubmit } from './lib/chat-composer.component';\nexport { KptChatDock } from './lib/chat-dock.component';\nexport type { KptChatDockPosition } from './lib/chat-dock.component';\n\n// Model i rdzeń obliczeniowy (pure TS) — przydatne do własnych list, SSR i testów.\nexport type {\n KptChatAttachment,\n KptChatAuthor,\n KptChatDateLabel,\n KptChatDateRow,\n KptChatGroupOptions,\n KptChatGroupPosition,\n KptChatMessage as KptChatMessageModel,\n KptChatMessageRow,\n KptChatReaction,\n KptChatReactionKind,\n KptChatReactionOption,\n KptChatReplyRef,\n KptChatRow,\n KptChatStatus,\n KptChatUnreadRow,\n} from '@konce-pt/chat';\n\nexport {\n KPT_CHAT_GROUP_GAP_MS,\n KPT_CHAT_REACTIONS,\n buildChatRows,\n canRetry,\n chatDayIndicator,\n dateLabel,\n diffInDays,\n isSameDay,\n mergeStatus,\n pendingCount,\n replyRefFrom,\n startOfDay,\n statusRank,\n toDate,\n toggleReaction,\n} from '@konce-pt/chat';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_forTrack0","_c1","_c2","_c3","_c0"],"mappings":"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"}