@acorex/components 21.0.1-next.92 → 21.0.2-next.1
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.
- package/fesm2022/acorex-components-accordion.mjs +17 -22
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +17 -17
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +14 -14
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-aspect-ratio.mjs +4 -4
- package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +12 -11
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +9 -9
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs +13 -13
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs +10 -10
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +41 -26
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +22 -22
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +18 -18
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +11 -11
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-chips.mjs +12 -14
- package/fesm2022/acorex-components-chips.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +13 -11
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-code-editor.mjs +14 -14
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +11 -11
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +31 -31
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +11 -11
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +33 -33
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +63 -63
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation2.mjs +256 -248
- package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +55 -55
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +6 -6
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +33 -33
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +50 -486
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +10 -10
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +10 -10
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +11 -11
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +48 -41
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +13 -13
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +16 -17
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +19 -11
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +18 -18
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-editor.mjs +12 -12
- package/fesm2022/acorex-components-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-fab.mjs +9 -9
- package/fesm2022/acorex-components-fab.mjs.map +1 -1
- package/fesm2022/acorex-components-flow-chart.mjs +22 -22
- package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +35 -27
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +13 -14
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +48 -48
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +10 -10
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +9 -9
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +9 -7
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +10 -10
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +9 -9
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +10 -10
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +12 -12
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +21 -21
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +15 -15
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +45 -45
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +45 -30
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/{acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs → acorex-components-modal-acorex-components-modal-DWNqU6or.mjs} +24 -24
- package/fesm2022/acorex-components-modal-acorex-components-modal-DWNqU6or.mjs.map +1 -0
- package/fesm2022/acorex-components-modal-modal-content.component-DplJbJyk.mjs +214 -0
- package/fesm2022/acorex-components-modal-modal-content.component-DplJbJyk.mjs.map +1 -0
- package/fesm2022/acorex-components-modal.mjs +1 -1
- package/fesm2022/acorex-components-navbar.mjs +9 -9
- package/fesm2022/acorex-components-navbar.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +13 -13
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +10 -10
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +10 -10
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-page.mjs +10 -10
- package/fesm2022/acorex-components-page.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +35 -40
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +15 -23
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs +9 -9
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +10 -10
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +20 -20
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +8 -8
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +17 -17
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +11 -9
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-qrcode.mjs +10 -10
- package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-components-query-builder.mjs +9 -9
- package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +10 -9
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +40 -38
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +11 -11
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +20 -35
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +28 -28
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs +8 -8
- package/fesm2022/acorex-components-result.mjs.map +1 -1
- package/fesm2022/acorex-components-routing-progress.mjs +8 -8
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +11 -11
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +173 -179
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +52 -52
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +17 -11
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +21 -15
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list-2.mjs +12 -12
- package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +10 -10
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +81 -24
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs +8 -8
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-slider.mjs +13 -13
- package/fesm2022/acorex-components-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-sliding-item.mjs +19 -19
- package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +16 -16
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +14 -14
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +17 -17
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +10 -10
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs +10 -10
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +9 -9
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +12 -12
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +8 -8
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs +14 -14
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +13 -13
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs +10 -10
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +14 -14
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +13 -13
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +17 -17
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-video-player.mjs +9 -9
- package/fesm2022/acorex-components-video-player.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +45 -45
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/package.json +122 -146
- package/{accordion/index.d.ts → types/acorex-components-accordion.d.ts} +0 -1
- package/{button-group/index.d.ts → types/acorex-components-button-group.d.ts} +14 -12
- package/{button/index.d.ts → types/acorex-components-button.d.ts} +3 -3
- package/{check-box/index.d.ts → types/acorex-components-check-box.d.ts} +1 -1
- package/{chips/index.d.ts → types/acorex-components-chips.d.ts} +3 -8
- package/{conversation2/index.d.ts → types/acorex-components-conversation2.d.ts} +1539 -1539
- package/{data-table/index.d.ts → types/acorex-components-data-table.d.ts} +4 -253
- package/{dropdown-button/index.d.ts → types/acorex-components-dropdown-button.d.ts} +4 -2
- package/{form/index.d.ts → types/acorex-components-form.d.ts} +24 -24
- package/{grid-layout-builder/index.d.ts → types/acorex-components-grid-layout-builder.d.ts} +0 -1
- package/{loading/index.d.ts → types/acorex-components-loading.d.ts} +1 -1
- package/{menu/index.d.ts → types/acorex-components-menu.d.ts} +6 -6
- package/{paint/index.d.ts → types/acorex-components-paint.d.ts} +1 -6
- package/{radio/index.d.ts → types/acorex-components-radio.d.ts} +1 -1
- package/{rate-picker/index.d.ts → types/acorex-components-rate-picker.d.ts} +5 -15
- package/{scheduler-picker/index.d.ts → types/acorex-components-scheduler-picker.d.ts} +82 -81
- package/{select-box/index.d.ts → types/acorex-components-select-box.d.ts} +2 -1
- package/{side-menu/index.d.ts → types/acorex-components-side-menu.d.ts} +9 -2
- package/{slider/index.d.ts → types/acorex-components-slider.d.ts} +2 -2
- package/{tabs/index.d.ts → types/acorex-components-tabs.d.ts} +1 -1
- package/{tag/index.d.ts → types/acorex-components-tag.d.ts} +3 -3
- package/collapse/README.md +0 -3
- package/collapse/index.d.ts +0 -174
- package/drawer-legacy/README.md +0 -3
- package/drawer-legacy/index.d.ts +0 -86
- package/fesm2022/acorex-components-collapse.mjs +0 -366
- package/fesm2022/acorex-components-collapse.mjs.map +0 -1
- package/fesm2022/acorex-components-drawer-legacy.mjs +0 -218
- package/fesm2022/acorex-components-drawer-legacy.mjs.map +0 -1
- package/fesm2022/acorex-components-file-explorer.mjs +0 -307
- package/fesm2022/acorex-components-file-explorer.mjs.map +0 -1
- package/fesm2022/acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs.map +0 -1
- package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs +0 -212
- package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs.map +0 -1
- package/fesm2022/acorex-components-number-box-legacy.mjs +0 -430
- package/fesm2022/acorex-components-number-box-legacy.mjs.map +0 -1
- package/fesm2022/acorex-components-scss.mjs +0 -22
- package/fesm2022/acorex-components-scss.mjs.map +0 -1
- package/fesm2022/acorex-components-tree-view-legacy.mjs +0 -515
- package/fesm2022/acorex-components-tree-view-legacy.mjs.map +0 -1
- package/file-explorer/README.md +0 -3
- package/file-explorer/index.d.ts +0 -103
- package/number-box-legacy/README.md +0 -3
- package/number-box-legacy/index.d.ts +0 -191
- package/scss/README.md +0 -3
- package/scss/index.d.ts +0 -10
- package/tree-view-legacy/README.md +0 -3
- package/tree-view-legacy/index.d.ts +0 -185
- /package/{action-sheet/index.d.ts → types/acorex-components-action-sheet.d.ts} +0 -0
- /package/{alert/index.d.ts → types/acorex-components-alert.d.ts} +0 -0
- /package/{aspect-ratio/index.d.ts → types/acorex-components-aspect-ratio.d.ts} +0 -0
- /package/{audio-wave/index.d.ts → types/acorex-components-audio-wave.d.ts} +0 -0
- /package/{autocomplete/index.d.ts → types/acorex-components-autocomplete.d.ts} +0 -0
- /package/{avatar/index.d.ts → types/acorex-components-avatar.d.ts} +0 -0
- /package/{badge/index.d.ts → types/acorex-components-badge.d.ts} +0 -0
- /package/{bottom-navigation/index.d.ts → types/acorex-components-bottom-navigation.d.ts} +0 -0
- /package/{breadcrumbs/index.d.ts → types/acorex-components-breadcrumbs.d.ts} +0 -0
- /package/{calendar/index.d.ts → types/acorex-components-calendar.d.ts} +0 -0
- /package/{circular-progress/index.d.ts → types/acorex-components-circular-progress.d.ts} +0 -0
- /package/{code-editor/index.d.ts → types/acorex-components-code-editor.d.ts} +0 -0
- /package/{color-box/index.d.ts → types/acorex-components-color-box.d.ts} +0 -0
- /package/{color-palette/index.d.ts → types/acorex-components-color-palette.d.ts} +0 -0
- /package/{command/index.d.ts → types/acorex-components-command.d.ts} +0 -0
- /package/{comment/index.d.ts → types/acorex-components-comment.d.ts} +0 -0
- /package/{conversation/index.d.ts → types/acorex-components-conversation.d.ts} +0 -0
- /package/{cron-job/index.d.ts → types/acorex-components-cron-job.d.ts} +0 -0
- /package/{data-list/index.d.ts → types/acorex-components-data-list.d.ts} +0 -0
- /package/{data-pager/index.d.ts → types/acorex-components-data-pager.d.ts} +0 -0
- /package/{datetime-box/index.d.ts → types/acorex-components-datetime-box.d.ts} +0 -0
- /package/{datetime-input/index.d.ts → types/acorex-components-datetime-input.d.ts} +0 -0
- /package/{datetime-picker/index.d.ts → types/acorex-components-datetime-picker.d.ts} +0 -0
- /package/{decorators/index.d.ts → types/acorex-components-decorators.d.ts} +0 -0
- /package/{dialog/index.d.ts → types/acorex-components-dialog.d.ts} +0 -0
- /package/{drawer/index.d.ts → types/acorex-components-drawer.d.ts} +0 -0
- /package/{dropdown/index.d.ts → types/acorex-components-dropdown.d.ts} +0 -0
- /package/{editor/index.d.ts → types/acorex-components-editor.d.ts} +0 -0
- /package/{fab/index.d.ts → types/acorex-components-fab.d.ts} +0 -0
- /package/{flow-chart/index.d.ts → types/acorex-components-flow-chart.d.ts} +0 -0
- /package/{image-editor/index.d.ts → types/acorex-components-image-editor.d.ts} +0 -0
- /package/{image/index.d.ts → types/acorex-components-image.d.ts} +0 -0
- /package/{json-viewer/index.d.ts → types/acorex-components-json-viewer.d.ts} +0 -0
- /package/{kanban/index.d.ts → types/acorex-components-kanban.d.ts} +0 -0
- /package/{kbd/index.d.ts → types/acorex-components-kbd.d.ts} +0 -0
- /package/{label/index.d.ts → types/acorex-components-label.d.ts} +0 -0
- /package/{list/index.d.ts → types/acorex-components-list.d.ts} +0 -0
- /package/{loading-dialog/index.d.ts → types/acorex-components-loading-dialog.d.ts} +0 -0
- /package/{map/index.d.ts → types/acorex-components-map.d.ts} +0 -0
- /package/{media-viewer/index.d.ts → types/acorex-components-media-viewer.d.ts} +0 -0
- /package/{modal/index.d.ts → types/acorex-components-modal.d.ts} +0 -0
- /package/{navbar/index.d.ts → types/acorex-components-navbar.d.ts} +0 -0
- /package/{notification/index.d.ts → types/acorex-components-notification.d.ts} +0 -0
- /package/{number-box/index.d.ts → types/acorex-components-number-box.d.ts} +0 -0
- /package/{otp/index.d.ts → types/acorex-components-otp.d.ts} +0 -0
- /package/{page/index.d.ts → types/acorex-components-page.d.ts} +0 -0
- /package/{password-box/index.d.ts → types/acorex-components-password-box.d.ts} +0 -0
- /package/{pdf-reader/index.d.ts → types/acorex-components-pdf-reader.d.ts} +0 -0
- /package/{phone-box/index.d.ts → types/acorex-components-phone-box.d.ts} +0 -0
- /package/{picker/index.d.ts → types/acorex-components-picker.d.ts} +0 -0
- /package/{popover/index.d.ts → types/acorex-components-popover.d.ts} +0 -0
- /package/{popup/index.d.ts → types/acorex-components-popup.d.ts} +0 -0
- /package/{progress-bar/index.d.ts → types/acorex-components-progress-bar.d.ts} +0 -0
- /package/{qrcode/index.d.ts → types/acorex-components-qrcode.d.ts} +0 -0
- /package/{query-builder/index.d.ts → types/acorex-components-query-builder.d.ts} +0 -0
- /package/{rail-navigation/index.d.ts → types/acorex-components-rail-navigation.d.ts} +0 -0
- /package/{range-slider/index.d.ts → types/acorex-components-range-slider.d.ts} +0 -0
- /package/{rest-api-generator/index.d.ts → types/acorex-components-rest-api-generator.d.ts} +0 -0
- /package/{result/index.d.ts → types/acorex-components-result.d.ts} +0 -0
- /package/{routing-progress/index.d.ts → types/acorex-components-routing-progress.d.ts} +0 -0
- /package/{rrule/index.d.ts → types/acorex-components-rrule.d.ts} +0 -0
- /package/{scheduler/index.d.ts → types/acorex-components-scheduler.d.ts} +0 -0
- /package/{search-box/index.d.ts → types/acorex-components-search-box.d.ts} +0 -0
- /package/{selection-list-2/index.d.ts → types/acorex-components-selection-list-2.d.ts} +0 -0
- /package/{selection-list/index.d.ts → types/acorex-components-selection-list.d.ts} +0 -0
- /package/{skeleton/index.d.ts → types/acorex-components-skeleton.d.ts} +0 -0
- /package/{sliding-item/index.d.ts → types/acorex-components-sliding-item.d.ts} +0 -0
- /package/{step-wizard/index.d.ts → types/acorex-components-step-wizard.d.ts} +0 -0
- /package/{switch/index.d.ts → types/acorex-components-switch.d.ts} +0 -0
- /package/{tag-box/index.d.ts → types/acorex-components-tag-box.d.ts} +0 -0
- /package/{text-area/index.d.ts → types/acorex-components-text-area.d.ts} +0 -0
- /package/{text-box/index.d.ts → types/acorex-components-text-box.d.ts} +0 -0
- /package/{time-duration/index.d.ts → types/acorex-components-time-duration.d.ts} +0 -0
- /package/{time-line/index.d.ts → types/acorex-components-time-line.d.ts} +0 -0
- /package/{toast/index.d.ts → types/acorex-components-toast.d.ts} +0 -0
- /package/{toolbar/index.d.ts → types/acorex-components-toolbar.d.ts} +0 -0
- /package/{tooltip/index.d.ts → types/acorex-components-tooltip.d.ts} +0 -0
- /package/{tree-view/index.d.ts → types/acorex-components-tree-view.d.ts} +0 -0
- /package/{uploader/index.d.ts → types/acorex-components-uploader.d.ts} +0 -0
- /package/{video-player/index.d.ts → types/acorex-components-video-player.d.ts} +0 -0
- /package/{wysiwyg/index.d.ts → types/acorex-components-wysiwyg.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-components.d.ts} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as _acorex_components_conversation2 from '@acorex/components/conversation2';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal,
|
|
3
|
+
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, OnInit, EventEmitter, TemplateRef, InjectionToken, ElementRef, ModuleWithProviders, Provider } from '@angular/core';
|
|
4
4
|
import { AXComponentCloseEvent, AXHtmlEvent, AXDataSource, AXClosableComponent } from '@acorex/cdk/common';
|
|
5
5
|
import { AXUploaderChangedEvent } from '@acorex/cdk/uploader';
|
|
6
|
-
import * as rxjs from 'rxjs';
|
|
7
|
-
import { Observable, BehaviorSubject, Subject } from 'rxjs';
|
|
8
6
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
9
7
|
import { AXListComponent } from '@acorex/components/list';
|
|
10
8
|
import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
|
|
9
|
+
import * as rxjs from 'rxjs';
|
|
10
|
+
import { Observable, BehaviorSubject, Subject } from 'rxjs';
|
|
11
11
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
12
12
|
import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
|
|
13
13
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
@@ -661,6 +661,144 @@ interface AXConversationSort {
|
|
|
661
661
|
direction: 'asc' | 'desc';
|
|
662
662
|
}
|
|
663
663
|
|
|
664
|
+
declare class AXComposerComponent implements OnDestroy {
|
|
665
|
+
#private;
|
|
666
|
+
private readonly conversationService;
|
|
667
|
+
private readonly messageApi;
|
|
668
|
+
private readonly composerService;
|
|
669
|
+
private readonly messageListService;
|
|
670
|
+
private readonly popupService;
|
|
671
|
+
private readonly config;
|
|
672
|
+
private readonly translation;
|
|
673
|
+
/** Access registry through conversation service */
|
|
674
|
+
private get registry();
|
|
675
|
+
/** Input element reference */
|
|
676
|
+
private readonly inputElementRef;
|
|
677
|
+
/** Draft text - use service */
|
|
678
|
+
readonly draftText: _angular_core.WritableSignal<string>;
|
|
679
|
+
/** Attachments - use service */
|
|
680
|
+
readonly attachments: _angular_core.WritableSignal<File[]>;
|
|
681
|
+
/** Editing message */
|
|
682
|
+
readonly editingMessage: _angular_core.WritableSignal<any>;
|
|
683
|
+
/** Replying to message */
|
|
684
|
+
readonly replyingToMessage: _angular_core.WritableSignal<AXMessage>;
|
|
685
|
+
/** Show typing indicator - use service */
|
|
686
|
+
readonly showTypingIndicator: _angular_core.WritableSignal<boolean>;
|
|
687
|
+
/** Message sent event */
|
|
688
|
+
readonly messageSent: _angular_core.OutputEmitterRef<AXSendMessageCommand>;
|
|
689
|
+
/** Emoji clicked event */
|
|
690
|
+
readonly emojiClick: _angular_core.OutputEmitterRef<void>;
|
|
691
|
+
/** Attach clicked event */
|
|
692
|
+
readonly attachClick: _angular_core.OutputEmitterRef<void>;
|
|
693
|
+
/** Voice clicked event */
|
|
694
|
+
readonly voiceClick: _angular_core.OutputEmitterRef<void>;
|
|
695
|
+
/** Active conversation */
|
|
696
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
697
|
+
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
698
|
+
/** Active component from service */
|
|
699
|
+
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation2.AXComposerActiveComponent>;
|
|
700
|
+
/** Emoji popover state */
|
|
701
|
+
private readonly emojiPopoverRef;
|
|
702
|
+
readonly emojiPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
703
|
+
readonly composerPopupComponent: typeof AXComposerPopupComponent;
|
|
704
|
+
/** Input placeholder - use service */
|
|
705
|
+
readonly placeholder: _angular_core.Signal<string>;
|
|
706
|
+
/** Sending message state */
|
|
707
|
+
readonly sendingMessage: _angular_core.WritableSignal<boolean>;
|
|
708
|
+
/** Typing indicator subject for rate limiting */
|
|
709
|
+
private readonly typingSubject;
|
|
710
|
+
constructor();
|
|
711
|
+
private draftSaveTimeout?;
|
|
712
|
+
/** Number of input rows - use service */
|
|
713
|
+
readonly inputRows: _angular_core.Signal<number>;
|
|
714
|
+
/** Can send message - use service */
|
|
715
|
+
readonly canSend: _angular_core.Signal<boolean>;
|
|
716
|
+
/** Left actions from registry - use service */
|
|
717
|
+
readonly leftActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
718
|
+
/** Right actions from registry - use service */
|
|
719
|
+
readonly rightActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
720
|
+
/** Left inline actions (location = 'inline' or undefined) */
|
|
721
|
+
readonly leftInlineActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
722
|
+
/** Left menu actions (location = 'menu') */
|
|
723
|
+
readonly leftMenuActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
724
|
+
/** Right inline actions (location = 'inline' or undefined) */
|
|
725
|
+
readonly rightInlineActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
726
|
+
/** Right menu actions (location = 'menu') */
|
|
727
|
+
readonly rightMenuActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
728
|
+
/** Handle key down */
|
|
729
|
+
onKeyDown(event: AXHtmlEvent<KeyboardEvent>): void;
|
|
730
|
+
/** Handle input */
|
|
731
|
+
onInput(): void;
|
|
732
|
+
/** Send typing indicator (throttled via RxJS) */
|
|
733
|
+
private sendTypingIndicator;
|
|
734
|
+
/** Cleanup on destroy */
|
|
735
|
+
ngOnDestroy(): void;
|
|
736
|
+
/** Handle send click */
|
|
737
|
+
onSendClick(): Promise<void>;
|
|
738
|
+
/** Handle emoji click */
|
|
739
|
+
onEmojiClick(event?: MouseEvent): Promise<void>;
|
|
740
|
+
/** Handle emoji popover closed */
|
|
741
|
+
onEmojiPopoverClosed(): void;
|
|
742
|
+
/** Handle emoji/sticker selection from popup */
|
|
743
|
+
onEmojiItemSelected(item: string | AXStickerPayload): void;
|
|
744
|
+
/** Send sticker message */
|
|
745
|
+
private sendSticker;
|
|
746
|
+
/** Get inputs for emoji popup component */
|
|
747
|
+
getEmojiPopupInputs(): Record<string, unknown>;
|
|
748
|
+
/** Handle attach click */
|
|
749
|
+
onAttachClick(): void;
|
|
750
|
+
/** Handle voice click */
|
|
751
|
+
onVoiceClick(): void;
|
|
752
|
+
/** Remove attachment */
|
|
753
|
+
removeAttachment(index: number): void;
|
|
754
|
+
/** Files selected via uploader */
|
|
755
|
+
onFilesSelected(e: AXUploaderChangedEvent): Promise<void>;
|
|
756
|
+
/**
|
|
757
|
+
* Validate file before upload
|
|
758
|
+
* @param file - File to validate
|
|
759
|
+
* @throws {Error} If file is invalid
|
|
760
|
+
*/
|
|
761
|
+
private validateFile;
|
|
762
|
+
/** Cancel edit/reply mode */
|
|
763
|
+
cancelEditReply(): void;
|
|
764
|
+
/** Reset all composer states (used when switching conversations) */
|
|
765
|
+
private resetComposerState;
|
|
766
|
+
/** Start editing a message */
|
|
767
|
+
startEdit(message: any): void;
|
|
768
|
+
/** Start replying to a message */
|
|
769
|
+
startReply(message: AXMessage): void;
|
|
770
|
+
/** Handle action click */
|
|
771
|
+
onActionClick(actionId: string, event?: MouseEvent): Promise<void>;
|
|
772
|
+
/** Check if action is enabled */
|
|
773
|
+
isActionEnabled(action: any): boolean;
|
|
774
|
+
/** Get replying sender name */
|
|
775
|
+
getReplyingSenderName(): string;
|
|
776
|
+
getActionLabel(action: {
|
|
777
|
+
label: string;
|
|
778
|
+
}): string;
|
|
779
|
+
/** Get replying message text */
|
|
780
|
+
getReplyingMessageText(): string;
|
|
781
|
+
/** Preview object for replying banner (type, icon, value) */
|
|
782
|
+
getReplyingPreview(): {
|
|
783
|
+
value: string;
|
|
784
|
+
type: string;
|
|
785
|
+
icon: string;
|
|
786
|
+
} | null;
|
|
787
|
+
/** Preview object for editing banner (type, icon, value) */
|
|
788
|
+
getEditingPreview(): {
|
|
789
|
+
value: string;
|
|
790
|
+
type: string;
|
|
791
|
+
icon: string;
|
|
792
|
+
} | null;
|
|
793
|
+
/** Handle reply preview click - scroll to original message */
|
|
794
|
+
onReplyPreviewClick(): void;
|
|
795
|
+
/** Get inputs for dynamic component */
|
|
796
|
+
getComponentInputs(): Record<string, unknown>;
|
|
797
|
+
onEnter(event: AXHtmlEvent<KeyboardEvent>): Promise<void>;
|
|
798
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXComposerComponent, never>;
|
|
799
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
800
|
+
}
|
|
801
|
+
|
|
664
802
|
/**
|
|
665
803
|
* Abstract Base Registry
|
|
666
804
|
* Base class for all registries with common functionality
|
|
@@ -1399,7 +1537,7 @@ declare class AXComposerService {
|
|
|
1399
1537
|
private readonly _editMessage;
|
|
1400
1538
|
readonly replyMessage: _angular_core.Signal<AXMessage>;
|
|
1401
1539
|
readonly editMessage: _angular_core.Signal<AXMessage>;
|
|
1402
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
1540
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
1403
1541
|
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
1404
1542
|
/** Active component being shown in composer (full-width mode) */
|
|
1405
1543
|
private readonly _activeComponent;
|
|
@@ -1471,735 +1609,385 @@ declare class AXComposerService {
|
|
|
1471
1609
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXComposerService>;
|
|
1472
1610
|
}
|
|
1473
1611
|
|
|
1474
|
-
declare class
|
|
1475
|
-
#private;
|
|
1612
|
+
declare class AXConversationContainerComponent {
|
|
1476
1613
|
private readonly conversationService;
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
readonly
|
|
1495
|
-
/**
|
|
1496
|
-
readonly
|
|
1497
|
-
/**
|
|
1498
|
-
readonly
|
|
1499
|
-
/**
|
|
1500
|
-
readonly
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1614
|
+
protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
|
|
1615
|
+
/** Custom CSS class */
|
|
1616
|
+
readonly customClass: _angular_core.InputSignal<string>;
|
|
1617
|
+
/** Loading state */
|
|
1618
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
1619
|
+
/** Error state */
|
|
1620
|
+
readonly error: _angular_core.Signal<Error>;
|
|
1621
|
+
/** Active conversation */
|
|
1622
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
1623
|
+
/** Container CSS classes */
|
|
1624
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
1625
|
+
closeActiveConversation(): void;
|
|
1626
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
|
|
1627
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationContainerComponent, "ax-conversation-container", never, { "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, ["ax-conversation-sidebar, [ax-conversation-sidebar]", "ax-conversation-info-bar, [ax-conversation-info-bar]", "ax-conversation-message-list, [ax-conversation-message-list]", "ax-conversation-composer, [ax-conversation-composer]", "ax-conversation-empty"], true, never>;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
declare class AXConversationContainerDirective {
|
|
1631
|
+
private readonly conversationService;
|
|
1632
|
+
/** Active conversation */
|
|
1633
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
1634
|
+
/** Loading state */
|
|
1635
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
1636
|
+
/** Error state */
|
|
1637
|
+
readonly error: _angular_core.Signal<Error>;
|
|
1638
|
+
closeActiveConversation(): void;
|
|
1639
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
|
|
1640
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationContainerDirective, "[axConversationContainer]", never, {}, {}, never, never, true, never>;
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
interface DropdownMenuItem {
|
|
1644
|
+
id: string;
|
|
1645
|
+
label: string;
|
|
1646
|
+
icon?: string;
|
|
1647
|
+
disabled?: boolean;
|
|
1648
|
+
divider?: boolean;
|
|
1649
|
+
destructive?: boolean;
|
|
1650
|
+
shortcut?: string;
|
|
1651
|
+
}
|
|
1652
|
+
declare class AXInfoBarComponent {
|
|
1653
|
+
private readonly conversationService;
|
|
1654
|
+
private readonly infoBar;
|
|
1655
|
+
protected get registry(): _acorex_components_conversation2.AXRegistryService;
|
|
1505
1656
|
/** Active conversation */
|
|
1506
1657
|
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
1507
|
-
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
1508
1658
|
/** Active component from service */
|
|
1509
|
-
readonly activeComponent: _angular_core.Signal<
|
|
1510
|
-
/**
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
readonly
|
|
1514
|
-
/**
|
|
1515
|
-
readonly
|
|
1516
|
-
/**
|
|
1517
|
-
readonly
|
|
1518
|
-
/**
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
/**
|
|
1523
|
-
readonly
|
|
1524
|
-
/**
|
|
1525
|
-
readonly
|
|
1526
|
-
/**
|
|
1527
|
-
readonly
|
|
1528
|
-
/**
|
|
1529
|
-
readonly
|
|
1530
|
-
/**
|
|
1531
|
-
|
|
1532
|
-
/**
|
|
1533
|
-
|
|
1534
|
-
/**
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
/** Handle
|
|
1539
|
-
|
|
1540
|
-
/** Handle
|
|
1541
|
-
|
|
1542
|
-
/**
|
|
1543
|
-
|
|
1544
|
-
/**
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
/** Handle
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
/** Handle
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
/**
|
|
1563
|
-
|
|
1564
|
-
/**
|
|
1565
|
-
|
|
1566
|
-
/**
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
/**
|
|
1573
|
-
|
|
1574
|
-
/**
|
|
1575
|
-
|
|
1576
|
-
/**
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
/**
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
onReplyPreviewClick(): void;
|
|
1605
|
-
/** Get inputs for dynamic component */
|
|
1606
|
-
getComponentInputs(): Record<string, unknown>;
|
|
1607
|
-
onEnter(event: AXHtmlEvent<KeyboardEvent>): Promise<void>;
|
|
1608
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXComposerComponent, never>;
|
|
1609
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
/**
|
|
1613
|
-
* Conversation Configuration Interface
|
|
1614
|
-
* Centralized configuration values to avoid magic numbers
|
|
1615
|
-
*/
|
|
1616
|
-
/**
|
|
1617
|
-
* Main configuration interface for the conversation component
|
|
1618
|
-
*/
|
|
1619
|
-
interface AXConversationConfig {
|
|
1620
|
-
/** Number of messages to load per page */
|
|
1621
|
-
messagePageSize?: number;
|
|
1622
|
-
/** Number of conversations to load per page */
|
|
1623
|
-
conversationPageSize?: number;
|
|
1624
|
-
/** Scroll threshold for detecting scroll events */
|
|
1625
|
-
scrollThreshold?: number;
|
|
1626
|
-
/** Infinite scroll threshold */
|
|
1627
|
-
infiniteScrollThreshold?: number;
|
|
1628
|
-
/** Typing indicator timeout in milliseconds */
|
|
1629
|
-
typingIndicatorTimeout?: number;
|
|
1630
|
-
/** Typing indicator throttle in milliseconds (for rate limiting) */
|
|
1631
|
-
typingIndicatorThrottle?: number;
|
|
1632
|
-
/** Message highlight duration in milliseconds */
|
|
1633
|
-
messageHighlightDuration?: number;
|
|
1634
|
-
/** Search debounce delay in milliseconds */
|
|
1635
|
-
debounceSearch?: number;
|
|
1636
|
-
/** Date separator inactivity fade delay in milliseconds */
|
|
1637
|
-
/** Maximum messages per conversation */
|
|
1638
|
-
maxMessagesPerConversation?: number;
|
|
1639
|
-
/** Maximum total messages in store */
|
|
1640
|
-
maxTotalMessages?: number;
|
|
1641
|
-
/** Maximum cached conversations */
|
|
1642
|
-
maxCachedConversations?: number;
|
|
1643
|
-
/** Minimum sidebar width in pixels */
|
|
1644
|
-
minSidebarWidth?: number;
|
|
1645
|
-
/** Maximum sidebar width in pixels */
|
|
1646
|
-
maxSidebarWidth?: number;
|
|
1647
|
-
/** Default sidebar width in pixels */
|
|
1648
|
-
defaultSidebarWidth?: number;
|
|
1649
|
-
/** Filter cache size */
|
|
1650
|
-
filterCacheSize?: number;
|
|
1651
|
-
/** Maximum file size in bytes */
|
|
1652
|
-
maxFileSize?: number;
|
|
1653
|
-
/** Allowed file types (glob patterns like 'image/*') */
|
|
1654
|
-
allowedFileTypes?: string[];
|
|
1655
|
-
/** Maximum message length in characters */
|
|
1656
|
-
maxMessageLength?: number;
|
|
1657
|
-
/** Minimum message length in characters */
|
|
1658
|
-
minMessageLength?: number;
|
|
1659
|
-
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
1660
|
-
messageReadThreshold?: number;
|
|
1661
|
-
/**
|
|
1662
|
-
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
1663
|
-
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
1664
|
-
* Empty string = library default soft gradient. `transparent` or `none` = flat background.
|
|
1665
|
-
*/
|
|
1666
|
-
messageListBackground?: string;
|
|
1667
|
-
}
|
|
1668
|
-
|
|
1669
|
-
/**
|
|
1670
|
-
* Default Configuration Values
|
|
1671
|
-
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
1672
|
-
*/
|
|
1673
|
-
|
|
1674
|
-
/**
|
|
1675
|
-
* Default conversation configuration
|
|
1676
|
-
* All values are explicitly defined here for easy maintenance and documentation
|
|
1677
|
-
*/
|
|
1678
|
-
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
1679
|
-
/**
|
|
1680
|
-
* Helper function to merge user config with defaults
|
|
1681
|
-
* Properly handles array merging to avoid reference issues
|
|
1682
|
-
* @param userConfig - User-provided configuration
|
|
1683
|
-
* @returns Merged configuration with all required fields
|
|
1684
|
-
*/
|
|
1685
|
-
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
1686
|
-
|
|
1687
|
-
/**
|
|
1688
|
-
* Shared API Types
|
|
1689
|
-
* Common types used across all API services
|
|
1690
|
-
*/
|
|
1691
|
-
/**
|
|
1692
|
-
* Pagination parameters
|
|
1693
|
-
*/
|
|
1694
|
-
interface AXPagination {
|
|
1695
|
-
/** Page number (0-based) */
|
|
1696
|
-
page: number;
|
|
1697
|
-
/** Items per page */
|
|
1698
|
-
pageSize: number;
|
|
1699
|
-
/** Cursor for cursor-based pagination (optional) */
|
|
1700
|
-
cursor?: string;
|
|
1701
|
-
/** Sort field */
|
|
1702
|
-
sortBy?: string;
|
|
1703
|
-
/** Sort direction */
|
|
1704
|
-
sortDirection?: 'asc' | 'desc';
|
|
1705
|
-
}
|
|
1706
|
-
/**
|
|
1707
|
-
* Paginated response
|
|
1708
|
-
*/
|
|
1709
|
-
interface AXPaginatedResult<T> {
|
|
1710
|
-
/** Result items */
|
|
1711
|
-
items: T[];
|
|
1712
|
-
/** Total count (if available) */
|
|
1713
|
-
total?: number;
|
|
1714
|
-
/** Next page cursor (for cursor-based pagination) */
|
|
1715
|
-
nextCursor?: string;
|
|
1716
|
-
/** Previous page cursor */
|
|
1717
|
-
prevCursor?: string;
|
|
1718
|
-
/** Whether there are more pages */
|
|
1719
|
-
hasMore: boolean;
|
|
1720
|
-
/** Current page number */
|
|
1721
|
-
page?: number;
|
|
1722
|
-
/** Total pages */
|
|
1723
|
-
totalPages?: number;
|
|
1724
|
-
}
|
|
1725
|
-
/**
|
|
1726
|
-
* Connection status
|
|
1727
|
-
*/
|
|
1728
|
-
type AXConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error';
|
|
1729
|
-
/**
|
|
1730
|
-
* API Error with details
|
|
1731
|
-
*/
|
|
1732
|
-
interface AXApiError {
|
|
1733
|
-
/** Error code */
|
|
1734
|
-
code: string;
|
|
1735
|
-
/** Error message */
|
|
1736
|
-
message: string;
|
|
1737
|
-
/** HTTP status code */
|
|
1738
|
-
statusCode?: number;
|
|
1739
|
-
/** Additional details */
|
|
1740
|
-
details?: unknown;
|
|
1741
|
-
/** Timestamp */
|
|
1742
|
-
timestamp?: Date;
|
|
1743
|
-
}
|
|
1744
|
-
/**
|
|
1745
|
-
* User presence status
|
|
1746
|
-
*/
|
|
1747
|
-
type AXPresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'invisible';
|
|
1748
|
-
/**
|
|
1749
|
-
* User role in conversation
|
|
1750
|
-
*/
|
|
1751
|
-
type AXUserRole = 'owner' | 'admin' | 'member' | 'guest';
|
|
1752
|
-
|
|
1753
|
-
/**
|
|
1754
|
-
* Abstract Conversation Management API
|
|
1755
|
-
* Handle conversation CRUD operations, participants, and settings
|
|
1756
|
-
*/
|
|
1757
|
-
|
|
1758
|
-
/**
|
|
1759
|
-
* Conversation creation data
|
|
1760
|
-
*/
|
|
1761
|
-
interface AXConversationCreateData {
|
|
1762
|
-
/** Conversation type */
|
|
1763
|
-
type: AXConversationType;
|
|
1764
|
-
/** Participant user IDs */
|
|
1765
|
-
participantIds: string[];
|
|
1766
|
-
/** Conversation title (for groups/channels) */
|
|
1767
|
-
title?: string;
|
|
1768
|
-
/** Conversation description */
|
|
1769
|
-
description?: string;
|
|
1770
|
-
/** Avatar URL */
|
|
1771
|
-
avatar?: string;
|
|
1772
|
-
/**
|
|
1773
|
-
* Font Awesome icon class(es) for this conversation when no image avatar is used.
|
|
1774
|
-
* Implementations should treat empty/whitespace `avatar` values as absent and use this icon fallback.
|
|
1775
|
-
*/
|
|
1776
|
-
icon?: string;
|
|
1777
|
-
/** Custom metadata */
|
|
1778
|
-
metadata?: Record<string, unknown>;
|
|
1779
|
-
}
|
|
1780
|
-
/**
|
|
1781
|
-
* Conversation update data
|
|
1782
|
-
*/
|
|
1783
|
-
interface AXConversationUpdateData {
|
|
1784
|
-
/** Conversation title */
|
|
1785
|
-
title?: string;
|
|
1786
|
-
/** Conversation description */
|
|
1787
|
-
description?: string;
|
|
1788
|
-
/** Avatar URL */
|
|
1789
|
-
avatar?: string;
|
|
1790
|
-
/**
|
|
1791
|
-
* Font Awesome icon class(es) for this conversation when no image avatar is used.
|
|
1792
|
-
* Implementations should treat empty/whitespace `avatar` values as absent and use this icon fallback.
|
|
1793
|
-
*/
|
|
1794
|
-
icon?: string;
|
|
1795
|
-
/** Custom metadata */
|
|
1796
|
-
metadata?: Record<string, unknown>;
|
|
1797
|
-
}
|
|
1798
|
-
/**
|
|
1799
|
-
* Conversation filter options
|
|
1800
|
-
*/
|
|
1801
|
-
interface AXConversationFilters {
|
|
1802
|
-
/** Filter by type */
|
|
1803
|
-
type?: AXConversationType;
|
|
1804
|
-
/** Filter by unread */
|
|
1805
|
-
unread?: boolean;
|
|
1806
|
-
/** Filter by archived */
|
|
1807
|
-
archived?: boolean;
|
|
1808
|
-
/** Filter by pinned */
|
|
1809
|
-
pinned?: boolean;
|
|
1810
|
-
/** Search query */
|
|
1811
|
-
searchQuery?: string;
|
|
1812
|
-
/** Filter by tags */
|
|
1813
|
-
tags?: string[];
|
|
1814
|
-
/** Custom filters */
|
|
1815
|
-
custom?: Record<string, unknown>;
|
|
1816
|
-
}
|
|
1817
|
-
/**
|
|
1818
|
-
* Conversation settings update
|
|
1819
|
-
*/
|
|
1820
|
-
interface AXConversationSettingsUpdate {
|
|
1821
|
-
/** Muted until timestamp */
|
|
1822
|
-
mutedUntil?: Date;
|
|
1823
|
-
/** Show notifications */
|
|
1824
|
-
notifications?: boolean;
|
|
1825
|
-
/** Custom notification sound */
|
|
1826
|
-
notificationSound?: string;
|
|
1827
|
-
/** Show message preview in notifications */
|
|
1828
|
-
showPreview?: boolean;
|
|
1829
|
-
/** Custom settings */
|
|
1830
|
-
custom?: Record<string, unknown>;
|
|
1831
|
-
}
|
|
1832
|
-
/**
|
|
1833
|
-
* Participant update data
|
|
1834
|
-
*/
|
|
1835
|
-
interface AXParticipantUpdate {
|
|
1836
|
-
/** User ID */
|
|
1837
|
-
userId: string;
|
|
1838
|
-
/** New role */
|
|
1839
|
-
role?: AXUserRole;
|
|
1840
|
-
/** Custom permissions */
|
|
1841
|
-
permissions?: Record<string, boolean>;
|
|
1842
|
-
}
|
|
1843
|
-
/**
|
|
1844
|
-
* Abstract Conversation Management API
|
|
1845
|
-
*
|
|
1846
|
-
* Implement this abstract class to handle conversation operations.
|
|
1847
|
-
*
|
|
1848
|
-
* @example
|
|
1849
|
-
* ```typescript
|
|
1850
|
-
* @Injectable()
|
|
1851
|
-
* export class MyConversationApi extends AXConversationManagementApi {
|
|
1852
|
-
* constructor(private http: HttpClient) {
|
|
1853
|
-
* super();
|
|
1854
|
-
* }
|
|
1855
|
-
*
|
|
1856
|
-
* async createConversation(data: AXConversationCreateData): Promise<AXConversation> {
|
|
1857
|
-
* const response = await this.http.post('/api/conversations', data).toPromise();
|
|
1858
|
-
* return response;
|
|
1859
|
-
* }
|
|
1860
|
-
*
|
|
1861
|
-
* // ... implement other methods
|
|
1862
|
-
* }
|
|
1863
|
-
* ```
|
|
1864
|
-
*/
|
|
1865
|
-
declare abstract class AXConversationApi {
|
|
1866
|
-
/**
|
|
1867
|
-
* Create a new conversation
|
|
1868
|
-
*
|
|
1869
|
-
* @param data - Conversation creation data
|
|
1870
|
-
* @returns Created conversation
|
|
1871
|
-
* @throws {AXApiError} If creation fails
|
|
1872
|
-
*/
|
|
1873
|
-
abstract createConversation(data: AXConversationCreateData): Promise<AXConversation>;
|
|
1874
|
-
/**
|
|
1875
|
-
* Get conversation by ID
|
|
1876
|
-
*
|
|
1877
|
-
* @param conversationId - Conversation ID
|
|
1878
|
-
* @returns Conversation details
|
|
1879
|
-
* @throws {AXApiError} If conversation not found
|
|
1880
|
-
*/
|
|
1881
|
-
abstract getConversation(conversationId: string): Promise<AXConversation>;
|
|
1882
|
-
/**
|
|
1883
|
-
* Get conversations list with pagination
|
|
1884
|
-
*
|
|
1885
|
-
* @param pagination - Pagination parameters
|
|
1886
|
-
* @param filters - Optional filters
|
|
1887
|
-
* @returns Paginated conversation list
|
|
1888
|
-
* @throws {AXApiError} If request fails
|
|
1889
|
-
*/
|
|
1890
|
-
abstract getConversations(pagination: AXPagination, filters?: AXConversationFilters): Promise<AXPaginatedResult<AXConversation>>;
|
|
1891
|
-
/**
|
|
1892
|
-
* Update conversation details
|
|
1893
|
-
*
|
|
1894
|
-
* @param conversationId - Conversation ID
|
|
1895
|
-
* @param updates - Update data
|
|
1896
|
-
* @returns Updated conversation
|
|
1897
|
-
* @throws {AXApiError} If update fails
|
|
1898
|
-
*/
|
|
1899
|
-
abstract updateConversation(conversationId: string, updates: AXConversationUpdateData): Promise<AXConversation>;
|
|
1900
|
-
/**
|
|
1901
|
-
* Delete conversation
|
|
1902
|
-
*
|
|
1903
|
-
* @param conversationId - Conversation ID
|
|
1904
|
-
* @throws {AXApiError} If deletion fails
|
|
1905
|
-
*/
|
|
1906
|
-
abstract deleteConversation(conversationId: string): Promise<boolean>;
|
|
1907
|
-
/**
|
|
1908
|
-
* Archive conversation
|
|
1909
|
-
*
|
|
1910
|
-
* @param conversationId - Conversation ID
|
|
1911
|
-
* @throws {AXApiError} If archiving fails
|
|
1912
|
-
*/
|
|
1913
|
-
abstract archiveConversation(conversationId: string): Promise<void>;
|
|
1914
|
-
/**
|
|
1915
|
-
* Unarchive conversation
|
|
1916
|
-
*
|
|
1917
|
-
* @param conversationId - Conversation ID
|
|
1918
|
-
* @throws {AXApiError} If unarchiving fails
|
|
1919
|
-
*/
|
|
1920
|
-
abstract unarchiveConversation(conversationId: string): Promise<void>;
|
|
1921
|
-
/**
|
|
1922
|
-
* Pin conversation
|
|
1923
|
-
*
|
|
1924
|
-
* @param conversationId - Conversation ID
|
|
1925
|
-
* @throws {AXApiError} If pinning fails
|
|
1926
|
-
*/
|
|
1927
|
-
abstract pinConversation(conversationId: string): Promise<void>;
|
|
1928
|
-
/**
|
|
1929
|
-
* Unpin conversation
|
|
1930
|
-
*
|
|
1931
|
-
* @param conversationId - Conversation ID
|
|
1932
|
-
* @throws {AXApiError} If unpinning fails
|
|
1933
|
-
*/
|
|
1934
|
-
abstract unpinConversation(conversationId: string): Promise<void>;
|
|
1935
|
-
/**
|
|
1936
|
-
* Mark conversation as read
|
|
1937
|
-
*
|
|
1938
|
-
* @param conversationId - Conversation ID
|
|
1939
|
-
* @throws {AXApiError} If marking fails
|
|
1940
|
-
*/
|
|
1941
|
-
abstract markConversationAsRead(conversationId: string): Promise<void>;
|
|
1942
|
-
/**
|
|
1943
|
-
* Mark conversation as unread
|
|
1944
|
-
*
|
|
1945
|
-
* @param conversationId - Conversation ID
|
|
1946
|
-
* @throws {AXApiError} If marking fails
|
|
1947
|
-
*/
|
|
1948
|
-
abstract markConversationAsUnread(conversationId: string): Promise<void>;
|
|
1949
|
-
/**
|
|
1950
|
-
* Search conversations
|
|
1951
|
-
*
|
|
1952
|
-
* @param query - Search query
|
|
1953
|
-
* @returns Matching conversations
|
|
1954
|
-
* @throws {AXApiError} If search fails
|
|
1955
|
-
*/
|
|
1956
|
-
abstract searchConversations(query: string): Promise<AXConversation[]>;
|
|
1957
|
-
/**
|
|
1958
|
-
* Filter conversations
|
|
1959
|
-
*
|
|
1960
|
-
* @param filters - Filter options
|
|
1961
|
-
* @param pagination - Pagination parameters
|
|
1962
|
-
* @returns Filtered conversations
|
|
1963
|
-
* @throws {AXApiError} If filtering fails
|
|
1964
|
-
*/
|
|
1965
|
-
abstract filterConversations(filters: AXConversationFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXConversation>>;
|
|
1966
|
-
/**
|
|
1967
|
-
* Get conversation participants
|
|
1968
|
-
*
|
|
1969
|
-
* @param conversationId - Conversation ID
|
|
1970
|
-
* @returns List of participants
|
|
1971
|
-
* @throws {AXApiError} If request fails
|
|
1972
|
-
*/
|
|
1973
|
-
abstract getParticipants(conversationId: string): Promise<AXParticipant[]>;
|
|
1974
|
-
/**
|
|
1975
|
-
* Add participants to conversation
|
|
1976
|
-
*
|
|
1977
|
-
* @param conversationId - Conversation ID
|
|
1978
|
-
* @param userIds - User IDs to add
|
|
1979
|
-
* @returns Updated conversation
|
|
1980
|
-
* @throws {AXApiError} If adding fails
|
|
1981
|
-
*/
|
|
1982
|
-
abstract addParticipants(conversationId: string, userIds: string[]): Promise<AXConversation>;
|
|
1983
|
-
/**
|
|
1984
|
-
* Remove participant from conversation
|
|
1985
|
-
*
|
|
1986
|
-
* @param conversationId - Conversation ID
|
|
1987
|
-
* @param userId - User ID to remove
|
|
1988
|
-
* @returns Updated conversation
|
|
1989
|
-
* @throws {AXApiError} If removal fails
|
|
1990
|
-
*/
|
|
1991
|
-
abstract removeParticipant(conversationId: string, userId: string): Promise<AXConversation>;
|
|
1992
|
-
/**
|
|
1993
|
-
* Leave conversation (remove self)
|
|
1994
|
-
*
|
|
1995
|
-
* @param conversationId - Conversation ID
|
|
1996
|
-
* @throws {AXApiError} If leaving fails
|
|
1997
|
-
*/
|
|
1998
|
-
abstract leaveConversation(conversationId: string): Promise<void>;
|
|
1999
|
-
/**
|
|
2000
|
-
* Update participant role/permissions
|
|
2001
|
-
*
|
|
2002
|
-
* @param conversationId - Conversation ID
|
|
2003
|
-
* @param update - Participant update data
|
|
2004
|
-
* @returns Updated conversation
|
|
2005
|
-
* @throws {AXApiError} If update fails
|
|
2006
|
-
*/
|
|
2007
|
-
abstract updateParticipant(conversationId: string, update: AXParticipantUpdate): Promise<AXConversation>;
|
|
1659
|
+
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarActiveComponent>;
|
|
1660
|
+
/** Active banner from service */
|
|
1661
|
+
readonly activeBanner: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarActiveBanner>;
|
|
1662
|
+
/** Members popover reference */
|
|
1663
|
+
readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
|
|
1664
|
+
/** Members popover target element */
|
|
1665
|
+
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
1666
|
+
/** Loading state for async actions */
|
|
1667
|
+
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
1668
|
+
/** Avatar clicked event */
|
|
1669
|
+
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
1670
|
+
/** Search clicked event */
|
|
1671
|
+
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
1672
|
+
/** Search query changed event */
|
|
1673
|
+
readonly searchQuery: _angular_core.OutputEmitterRef<string>;
|
|
1674
|
+
/** Menu item clicked event */
|
|
1675
|
+
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
1676
|
+
/** Inline action buttons from registry */
|
|
1677
|
+
readonly inlineActions: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarAction[]>;
|
|
1678
|
+
/** Dropdown menu items from registry */
|
|
1679
|
+
readonly menuItems: _angular_core.Signal<DropdownMenuItem[]>;
|
|
1680
|
+
/** Get conversation status - delegate to utils */
|
|
1681
|
+
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
1682
|
+
/** Get subtitle text - delegate to utils */
|
|
1683
|
+
getSubtitle(conversation: AXConversation): string;
|
|
1684
|
+
/** Get initials from name - delegate to utils */
|
|
1685
|
+
getInitials(name: string): string;
|
|
1686
|
+
getConversationAvatar(conversation: AXConversation): string | undefined;
|
|
1687
|
+
getConversationAvatarIcon(conversation: AXConversation): string | undefined;
|
|
1688
|
+
/** Handle avatar click */
|
|
1689
|
+
onAvatarClick(): void;
|
|
1690
|
+
/** Handle members click - open popover */
|
|
1691
|
+
onMembersClick(event: MouseEvent): void;
|
|
1692
|
+
/** Handle inline action click */
|
|
1693
|
+
onInlineActionClick(actionId: string): Promise<void>;
|
|
1694
|
+
/** Get inputs for dynamic component */
|
|
1695
|
+
getComponentInputs(): Record<string, unknown>;
|
|
1696
|
+
getInlineComponentInputs(): Record<string, unknown>;
|
|
1697
|
+
isActiveComponentFullWidth(): boolean;
|
|
1698
|
+
/** Handle close component */
|
|
1699
|
+
onCloseComponent(): void;
|
|
1700
|
+
getBannerInputs(): Record<string, unknown>;
|
|
1701
|
+
onCloseBanner(): void;
|
|
1702
|
+
/** Handle menu item click */
|
|
1703
|
+
onMenuItemClick(item: DropdownMenuItem): Promise<void>;
|
|
1704
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
|
|
1705
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
/**
|
|
1709
|
+
* Active component state in info-bar
|
|
1710
|
+
*/
|
|
1711
|
+
interface AXInfoBarActiveComponent {
|
|
1712
|
+
/** Action that triggered this component */
|
|
1713
|
+
action: AXInfoBarAction;
|
|
1714
|
+
/** Component to render */
|
|
1715
|
+
component: Type<unknown>;
|
|
1716
|
+
/** Component inputs */
|
|
1717
|
+
inputs?: Record<string, unknown>;
|
|
1718
|
+
}
|
|
1719
|
+
interface AXInfoBarActiveBanner {
|
|
1720
|
+
/** Message that owns this banner */
|
|
1721
|
+
message: AXMessage;
|
|
1722
|
+
/** Banner component */
|
|
1723
|
+
component: Type<AXMessageInfoBarBannerComponent>;
|
|
1724
|
+
/** Additional component inputs (only keys that match declared `input()` on the banner) */
|
|
1725
|
+
inputs?: Record<string, unknown>;
|
|
1726
|
+
/** Callback invoked when the banner is dismissed (e.g. pause playback) */
|
|
1727
|
+
onClose?: () => void;
|
|
1728
|
+
}
|
|
1729
|
+
/**
|
|
1730
|
+
* Info Bar Service
|
|
1731
|
+
* Manages info bar state and actions
|
|
1732
|
+
*/
|
|
1733
|
+
declare class AXInfoBarService {
|
|
1734
|
+
private readonly conversationService;
|
|
1735
|
+
private readonly injector;
|
|
1736
|
+
private get registry();
|
|
1737
|
+
/** Active conversation */
|
|
1738
|
+
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
1739
|
+
/** Active component being shown in info-bar */
|
|
1740
|
+
private readonly _activeComponent;
|
|
1741
|
+
readonly activeComponent: _angular_core.Signal<AXInfoBarActiveComponent>;
|
|
1742
|
+
/** Active banner shown under info-bar */
|
|
1743
|
+
private readonly _activeBanner;
|
|
1744
|
+
readonly activeBanner: _angular_core.Signal<AXInfoBarActiveBanner>;
|
|
1745
|
+
/** Search query signal */
|
|
1746
|
+
private readonly _searchQuery;
|
|
1747
|
+
readonly searchQuery: _angular_core.Signal<string>;
|
|
1748
|
+
private readonly _searchResultsCount;
|
|
1749
|
+
readonly searchResultsCount: _angular_core.Signal<number>;
|
|
1750
|
+
/** Current search result index */
|
|
1751
|
+
private readonly _currentSearchIndex;
|
|
1752
|
+
readonly currentSearchIndex: _angular_core.Signal<number>;
|
|
1753
|
+
constructor();
|
|
2008
1754
|
/**
|
|
2009
|
-
* Get conversation
|
|
2010
|
-
*
|
|
2011
|
-
* @param conversationId - Conversation ID
|
|
2012
|
-
* @returns Conversation settings
|
|
2013
|
-
* @throws {AXApiError} If request fails
|
|
1755
|
+
* Get actions for the active conversation
|
|
2014
1756
|
*/
|
|
2015
|
-
|
|
1757
|
+
getActionsForConversation(conversation: AXConversation): AXInfoBarAction[];
|
|
2016
1758
|
/**
|
|
2017
|
-
*
|
|
2018
|
-
*
|
|
2019
|
-
* @param conversationId - Conversation ID
|
|
2020
|
-
* @param settings - Settings to update
|
|
2021
|
-
* @throws {AXApiError} If update fails
|
|
1759
|
+
* Execute an action
|
|
2022
1760
|
*/
|
|
2023
|
-
|
|
1761
|
+
executeAction(actionId: string, conversation: AXConversation, data?: Record<string, unknown>): Promise<void>;
|
|
2024
1762
|
/**
|
|
2025
|
-
*
|
|
2026
|
-
*
|
|
2027
|
-
* @param conversationId - Conversation ID
|
|
2028
|
-
* @param duration - Mute duration in milliseconds (undefined = forever)
|
|
2029
|
-
* @throws {AXApiError} If muting fails
|
|
1763
|
+
* Get action label
|
|
2030
1764
|
*/
|
|
2031
|
-
|
|
1765
|
+
getActionLabel(action: AXInfoBarAction, conversation: AXConversation): string;
|
|
2032
1766
|
/**
|
|
2033
|
-
*
|
|
2034
|
-
*
|
|
2035
|
-
* @param conversationId - Conversation ID
|
|
2036
|
-
* @throws {AXApiError} If unmuting fails
|
|
1767
|
+
* Get action icon
|
|
2037
1768
|
*/
|
|
2038
|
-
|
|
1769
|
+
getActionIcon(action: AXInfoBarAction, conversation: AXConversation): string | undefined;
|
|
2039
1770
|
/**
|
|
2040
|
-
*
|
|
2041
|
-
*
|
|
2042
|
-
* @param conversationId - Conversation ID
|
|
2043
|
-
* @param file - Avatar image file
|
|
2044
|
-
* @returns Avatar URL
|
|
2045
|
-
* @throws {AXApiError} If upload fails
|
|
1771
|
+
* Show a component in the info-bar
|
|
2046
1772
|
*/
|
|
2047
|
-
|
|
1773
|
+
showComponent(action: AXInfoBarAction, inputs?: Record<string, unknown>): void;
|
|
2048
1774
|
/**
|
|
2049
|
-
*
|
|
2050
|
-
*
|
|
2051
|
-
* @param conversationId - Conversation ID
|
|
2052
|
-
* @param pagination - Pagination parameters
|
|
2053
|
-
* @returns Paginated media items
|
|
2054
|
-
* @throws {AXApiError} If request fails
|
|
1775
|
+
* Hide the active component
|
|
2055
1776
|
*/
|
|
2056
|
-
|
|
1777
|
+
hideComponent(): void;
|
|
2057
1778
|
/**
|
|
2058
|
-
*
|
|
2059
|
-
*
|
|
2060
|
-
* @param conversationId - Conversation ID
|
|
2061
|
-
* @param tags - Tags to add
|
|
2062
|
-
* @throws {AXApiError} If adding fails
|
|
1779
|
+
* Show message-owned banner under info-bar if renderer provides one
|
|
2063
1780
|
*/
|
|
2064
|
-
|
|
1781
|
+
showMessageBanner(message: AXMessage, inputs?: Record<string, unknown>): void;
|
|
2065
1782
|
/**
|
|
2066
|
-
*
|
|
2067
|
-
*
|
|
2068
|
-
* @param conversationId - Conversation ID
|
|
2069
|
-
* @param tags - Tags to remove
|
|
2070
|
-
* @throws {AXApiError} If removal fails
|
|
1783
|
+
* Update active banner inputs for a specific message
|
|
2071
1784
|
*/
|
|
2072
|
-
|
|
1785
|
+
updateMessageBannerInputs(messageId: string, inputs: Record<string, unknown>): void;
|
|
2073
1786
|
/**
|
|
2074
|
-
*
|
|
2075
|
-
*
|
|
2076
|
-
* @param conversationId - Conversation ID
|
|
2077
|
-
* @returns Array of tags
|
|
2078
|
-
* @throws {AXApiError} If request fails
|
|
1787
|
+
* Hide active banner. If messageId is provided, hide only when it matches.
|
|
2079
1788
|
*/
|
|
2080
|
-
|
|
1789
|
+
hideMessageBanner(messageId?: string): void;
|
|
1790
|
+
isMessageBannerActive(messageId: string): boolean;
|
|
2081
1791
|
/**
|
|
2082
|
-
*
|
|
2083
|
-
*
|
|
2084
|
-
* @param conversationId - Conversation ID
|
|
2085
|
-
* @returns User permissions
|
|
2086
|
-
* @throws {AXApiError} If request fails
|
|
1792
|
+
* Toggle component visibility
|
|
2087
1793
|
*/
|
|
2088
|
-
|
|
1794
|
+
toggleComponent(action: AXInfoBarAction, inputs?: Record<string, unknown>): void;
|
|
2089
1795
|
/**
|
|
2090
|
-
*
|
|
2091
|
-
*
|
|
2092
|
-
* @param conversationId - Conversation ID
|
|
2093
|
-
* @param permissions - Permissions to update
|
|
2094
|
-
* @throws {AXApiError} If update fails
|
|
1796
|
+
* Set search query
|
|
2095
1797
|
*/
|
|
2096
|
-
|
|
1798
|
+
setSearchQuery(query: string): void;
|
|
2097
1799
|
/**
|
|
2098
|
-
*
|
|
2099
|
-
*
|
|
2100
|
-
* @param conversationId - Conversation ID
|
|
2101
|
-
* @param draft - Draft text
|
|
2102
|
-
* @throws {AXApiError} If saving fails
|
|
1800
|
+
* Set search results
|
|
2103
1801
|
*/
|
|
2104
|
-
|
|
1802
|
+
setSearchResults(count: number, currentIndex?: number): void;
|
|
2105
1803
|
/**
|
|
2106
|
-
*
|
|
2107
|
-
*
|
|
2108
|
-
* @param conversationId - Conversation ID
|
|
2109
|
-
* @returns Draft text or null
|
|
2110
|
-
* @throws {AXApiError} If request fails
|
|
1804
|
+
* Navigate to next search result
|
|
2111
1805
|
*/
|
|
2112
|
-
|
|
1806
|
+
nextSearchResult(): void;
|
|
2113
1807
|
/**
|
|
2114
|
-
*
|
|
2115
|
-
*
|
|
2116
|
-
* @param conversationId - Conversation ID
|
|
2117
|
-
* @throws {AXApiError} If clearing fails
|
|
1808
|
+
* Navigate to previous search result
|
|
2118
1809
|
*/
|
|
2119
|
-
|
|
1810
|
+
previousSearchResult(): void;
|
|
2120
1811
|
/**
|
|
2121
|
-
*
|
|
2122
|
-
* Helper method for consistent error creation
|
|
2123
|
-
*
|
|
2124
|
-
* @param code - Error code
|
|
2125
|
-
* @param message - Error message
|
|
2126
|
-
* @param statusCode - HTTP status code
|
|
2127
|
-
* @param details - Additional details
|
|
2128
|
-
* @returns API error object
|
|
1812
|
+
* Clear search
|
|
2129
1813
|
*/
|
|
2130
|
-
|
|
1814
|
+
clearSearch(): void;
|
|
1815
|
+
private _extractOnClose;
|
|
1816
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarService, never>;
|
|
1817
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXInfoBarService>;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
/**
|
|
1821
|
+
* Shared API Types
|
|
1822
|
+
* Common types used across all API services
|
|
1823
|
+
*/
|
|
1824
|
+
/**
|
|
1825
|
+
* Pagination parameters
|
|
1826
|
+
*/
|
|
1827
|
+
interface AXPagination {
|
|
1828
|
+
/** Page number (0-based) */
|
|
1829
|
+
page: number;
|
|
1830
|
+
/** Items per page */
|
|
1831
|
+
pageSize: number;
|
|
1832
|
+
/** Cursor for cursor-based pagination (optional) */
|
|
1833
|
+
cursor?: string;
|
|
1834
|
+
/** Sort field */
|
|
1835
|
+
sortBy?: string;
|
|
1836
|
+
/** Sort direction */
|
|
1837
|
+
sortDirection?: 'asc' | 'desc';
|
|
1838
|
+
}
|
|
1839
|
+
/**
|
|
1840
|
+
* Paginated response
|
|
1841
|
+
*/
|
|
1842
|
+
interface AXPaginatedResult<T> {
|
|
1843
|
+
/** Result items */
|
|
1844
|
+
items: T[];
|
|
1845
|
+
/** Total count (if available) */
|
|
1846
|
+
total?: number;
|
|
1847
|
+
/** Next page cursor (for cursor-based pagination) */
|
|
1848
|
+
nextCursor?: string;
|
|
1849
|
+
/** Previous page cursor */
|
|
1850
|
+
prevCursor?: string;
|
|
1851
|
+
/** Whether there are more pages */
|
|
1852
|
+
hasMore: boolean;
|
|
1853
|
+
/** Current page number */
|
|
1854
|
+
page?: number;
|
|
1855
|
+
/** Total pages */
|
|
1856
|
+
totalPages?: number;
|
|
1857
|
+
}
|
|
1858
|
+
/**
|
|
1859
|
+
* Connection status
|
|
1860
|
+
*/
|
|
1861
|
+
type AXConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error';
|
|
1862
|
+
/**
|
|
1863
|
+
* API Error with details
|
|
1864
|
+
*/
|
|
1865
|
+
interface AXApiError {
|
|
1866
|
+
/** Error code */
|
|
1867
|
+
code: string;
|
|
1868
|
+
/** Error message */
|
|
1869
|
+
message: string;
|
|
1870
|
+
/** HTTP status code */
|
|
1871
|
+
statusCode?: number;
|
|
1872
|
+
/** Additional details */
|
|
1873
|
+
details?: unknown;
|
|
1874
|
+
/** Timestamp */
|
|
1875
|
+
timestamp?: Date;
|
|
2131
1876
|
}
|
|
1877
|
+
/**
|
|
1878
|
+
* User presence status
|
|
1879
|
+
*/
|
|
1880
|
+
type AXPresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'invisible';
|
|
1881
|
+
/**
|
|
1882
|
+
* User role in conversation
|
|
1883
|
+
*/
|
|
1884
|
+
type AXUserRole = 'owner' | 'admin' | 'member' | 'guest';
|
|
2132
1885
|
|
|
2133
1886
|
/**
|
|
2134
|
-
* Abstract
|
|
2135
|
-
* Handle
|
|
1887
|
+
* Abstract Conversation Management API
|
|
1888
|
+
* Handle conversation CRUD operations, participants, and settings
|
|
2136
1889
|
*/
|
|
2137
1890
|
|
|
2138
1891
|
/**
|
|
2139
|
-
*
|
|
1892
|
+
* Conversation creation data
|
|
2140
1893
|
*/
|
|
2141
|
-
interface
|
|
2142
|
-
/**
|
|
2143
|
-
|
|
2144
|
-
/**
|
|
2145
|
-
|
|
2146
|
-
/**
|
|
2147
|
-
|
|
2148
|
-
/**
|
|
2149
|
-
|
|
2150
|
-
/**
|
|
2151
|
-
|
|
2152
|
-
/**
|
|
2153
|
-
|
|
1894
|
+
interface AXConversationCreateData {
|
|
1895
|
+
/** Conversation type */
|
|
1896
|
+
type: AXConversationType;
|
|
1897
|
+
/** Participant user IDs */
|
|
1898
|
+
participantIds: string[];
|
|
1899
|
+
/** Conversation title (for groups/channels) */
|
|
1900
|
+
title?: string;
|
|
1901
|
+
/** Conversation description */
|
|
1902
|
+
description?: string;
|
|
1903
|
+
/** Avatar URL */
|
|
1904
|
+
avatar?: string;
|
|
1905
|
+
/**
|
|
1906
|
+
* Font Awesome icon class(es) for this conversation when no image avatar is used.
|
|
1907
|
+
* Implementations should treat empty/whitespace `avatar` values as absent and use this icon fallback.
|
|
1908
|
+
*/
|
|
1909
|
+
icon?: string;
|
|
1910
|
+
/** Custom metadata */
|
|
1911
|
+
metadata?: Record<string, unknown>;
|
|
2154
1912
|
}
|
|
2155
1913
|
/**
|
|
2156
|
-
*
|
|
1914
|
+
* Conversation update data
|
|
2157
1915
|
*/
|
|
2158
|
-
interface
|
|
2159
|
-
/**
|
|
2160
|
-
|
|
2161
|
-
/**
|
|
2162
|
-
|
|
2163
|
-
/**
|
|
2164
|
-
|
|
1916
|
+
interface AXConversationUpdateData {
|
|
1917
|
+
/** Conversation title */
|
|
1918
|
+
title?: string;
|
|
1919
|
+
/** Conversation description */
|
|
1920
|
+
description?: string;
|
|
1921
|
+
/** Avatar URL */
|
|
1922
|
+
avatar?: string;
|
|
1923
|
+
/**
|
|
1924
|
+
* Font Awesome icon class(es) for this conversation when no image avatar is used.
|
|
1925
|
+
* Implementations should treat empty/whitespace `avatar` values as absent and use this icon fallback.
|
|
1926
|
+
*/
|
|
1927
|
+
icon?: string;
|
|
1928
|
+
/** Custom metadata */
|
|
1929
|
+
metadata?: Record<string, unknown>;
|
|
2165
1930
|
}
|
|
2166
1931
|
/**
|
|
2167
|
-
*
|
|
1932
|
+
* Conversation filter options
|
|
2168
1933
|
*/
|
|
2169
|
-
interface
|
|
2170
|
-
/**
|
|
2171
|
-
|
|
2172
|
-
/**
|
|
2173
|
-
|
|
2174
|
-
/**
|
|
2175
|
-
|
|
1934
|
+
interface AXConversationFilters {
|
|
1935
|
+
/** Filter by type */
|
|
1936
|
+
type?: AXConversationType;
|
|
1937
|
+
/** Filter by unread */
|
|
1938
|
+
unread?: boolean;
|
|
1939
|
+
/** Filter by archived */
|
|
1940
|
+
archived?: boolean;
|
|
1941
|
+
/** Filter by pinned */
|
|
1942
|
+
pinned?: boolean;
|
|
1943
|
+
/** Search query */
|
|
1944
|
+
searchQuery?: string;
|
|
1945
|
+
/** Filter by tags */
|
|
1946
|
+
tags?: string[];
|
|
1947
|
+
/** Custom filters */
|
|
1948
|
+
custom?: Record<string, unknown>;
|
|
2176
1949
|
}
|
|
2177
1950
|
/**
|
|
2178
|
-
*
|
|
1951
|
+
* Conversation settings update
|
|
2179
1952
|
*/
|
|
2180
|
-
interface
|
|
2181
|
-
/**
|
|
2182
|
-
|
|
2183
|
-
/**
|
|
2184
|
-
|
|
2185
|
-
/**
|
|
2186
|
-
|
|
1953
|
+
interface AXConversationSettingsUpdate {
|
|
1954
|
+
/** Muted until timestamp */
|
|
1955
|
+
mutedUntil?: Date;
|
|
1956
|
+
/** Show notifications */
|
|
1957
|
+
notifications?: boolean;
|
|
1958
|
+
/** Custom notification sound */
|
|
1959
|
+
notificationSound?: string;
|
|
1960
|
+
/** Show message preview in notifications */
|
|
1961
|
+
showPreview?: boolean;
|
|
1962
|
+
/** Custom settings */
|
|
1963
|
+
custom?: Record<string, unknown>;
|
|
2187
1964
|
}
|
|
2188
1965
|
/**
|
|
2189
|
-
*
|
|
1966
|
+
* Participant update data
|
|
1967
|
+
*/
|
|
1968
|
+
interface AXParticipantUpdate {
|
|
1969
|
+
/** User ID */
|
|
1970
|
+
userId: string;
|
|
1971
|
+
/** New role */
|
|
1972
|
+
role?: AXUserRole;
|
|
1973
|
+
/** Custom permissions */
|
|
1974
|
+
permissions?: Record<string, boolean>;
|
|
1975
|
+
}
|
|
1976
|
+
/**
|
|
1977
|
+
* Abstract Conversation Management API
|
|
2190
1978
|
*
|
|
2191
|
-
* Implement this abstract class to handle
|
|
1979
|
+
* Implement this abstract class to handle conversation operations.
|
|
2192
1980
|
*
|
|
2193
1981
|
* @example
|
|
2194
1982
|
* ```typescript
|
|
2195
1983
|
* @Injectable()
|
|
2196
|
-
* export class
|
|
1984
|
+
* export class MyConversationApi extends AXConversationManagementApi {
|
|
2197
1985
|
* constructor(private http: HttpClient) {
|
|
2198
1986
|
* super();
|
|
2199
1987
|
* }
|
|
2200
1988
|
*
|
|
2201
|
-
* async
|
|
2202
|
-
* const response = await this.http.post('/api/
|
|
1989
|
+
* async createConversation(data: AXConversationCreateData): Promise<AXConversation> {
|
|
1990
|
+
* const response = await this.http.post('/api/conversations', data).toPromise();
|
|
2203
1991
|
* return response;
|
|
2204
1992
|
* }
|
|
2205
1993
|
*
|
|
@@ -2207,269 +1995,261 @@ interface AXPinnedMessage {
|
|
|
2207
1995
|
* }
|
|
2208
1996
|
* ```
|
|
2209
1997
|
*/
|
|
2210
|
-
declare abstract class
|
|
1998
|
+
declare abstract class AXConversationApi {
|
|
2211
1999
|
/**
|
|
2212
|
-
*
|
|
2000
|
+
* Create a new conversation
|
|
2213
2001
|
*
|
|
2214
|
-
* @param
|
|
2215
|
-
* @returns
|
|
2216
|
-
* @throws {AXApiError} If
|
|
2002
|
+
* @param data - Conversation creation data
|
|
2003
|
+
* @returns Created conversation
|
|
2004
|
+
* @throws {AXApiError} If creation fails
|
|
2217
2005
|
*/
|
|
2218
|
-
abstract
|
|
2006
|
+
abstract createConversation(data: AXConversationCreateData): Promise<AXConversation>;
|
|
2219
2007
|
/**
|
|
2220
|
-
* Get
|
|
2008
|
+
* Get conversation by ID
|
|
2221
2009
|
*
|
|
2222
|
-
* @param
|
|
2223
|
-
* @returns
|
|
2224
|
-
* @throws {AXApiError} If
|
|
2010
|
+
* @param conversationId - Conversation ID
|
|
2011
|
+
* @returns Conversation details
|
|
2012
|
+
* @throws {AXApiError} If conversation not found
|
|
2225
2013
|
*/
|
|
2226
|
-
abstract
|
|
2014
|
+
abstract getConversation(conversationId: string): Promise<AXConversation>;
|
|
2227
2015
|
/**
|
|
2228
|
-
* Get
|
|
2016
|
+
* Get conversations list with pagination
|
|
2229
2017
|
*
|
|
2230
|
-
* @param conversationId - Conversation ID
|
|
2231
2018
|
* @param pagination - Pagination parameters
|
|
2232
|
-
* @
|
|
2019
|
+
* @param filters - Optional filters
|
|
2020
|
+
* @returns Paginated conversation list
|
|
2233
2021
|
* @throws {AXApiError} If request fails
|
|
2234
2022
|
*/
|
|
2235
|
-
abstract
|
|
2023
|
+
abstract getConversations(pagination: AXPagination, filters?: AXConversationFilters): Promise<AXPaginatedResult<AXConversation>>;
|
|
2236
2024
|
/**
|
|
2237
|
-
*
|
|
2025
|
+
* Update conversation details
|
|
2238
2026
|
*
|
|
2239
|
-
* @param
|
|
2240
|
-
* @param
|
|
2241
|
-
* @returns Updated
|
|
2242
|
-
* @throws {AXApiError} If
|
|
2027
|
+
* @param conversationId - Conversation ID
|
|
2028
|
+
* @param updates - Update data
|
|
2029
|
+
* @returns Updated conversation
|
|
2030
|
+
* @throws {AXApiError} If update fails
|
|
2243
2031
|
*/
|
|
2244
|
-
abstract
|
|
2032
|
+
abstract updateConversation(conversationId: string, updates: AXConversationUpdateData): Promise<AXConversation>;
|
|
2245
2033
|
/**
|
|
2246
|
-
* Delete
|
|
2034
|
+
* Delete conversation
|
|
2247
2035
|
*
|
|
2248
|
-
* @param
|
|
2249
|
-
* @param forEveryone - Delete for all participants (vs just for current user)
|
|
2036
|
+
* @param conversationId - Conversation ID
|
|
2250
2037
|
* @throws {AXApiError} If deletion fails
|
|
2251
2038
|
*/
|
|
2252
|
-
abstract
|
|
2039
|
+
abstract deleteConversation(conversationId: string): Promise<boolean>;
|
|
2253
2040
|
/**
|
|
2254
|
-
*
|
|
2041
|
+
* Archive conversation
|
|
2255
2042
|
*
|
|
2256
|
-
* @param
|
|
2257
|
-
* @
|
|
2258
|
-
* @throws {AXApiError} If deletion fails
|
|
2043
|
+
* @param conversationId - Conversation ID
|
|
2044
|
+
* @throws {AXApiError} If archiving fails
|
|
2259
2045
|
*/
|
|
2260
|
-
abstract
|
|
2046
|
+
abstract archiveConversation(conversationId: string): Promise<void>;
|
|
2261
2047
|
/**
|
|
2262
|
-
*
|
|
2048
|
+
* Unarchive conversation
|
|
2263
2049
|
*
|
|
2264
2050
|
* @param conversationId - Conversation ID
|
|
2265
|
-
* @
|
|
2266
|
-
* @param pagination - Pagination parameters
|
|
2267
|
-
* @returns Matching messages
|
|
2268
|
-
* @throws {AXApiError} If search fails
|
|
2051
|
+
* @throws {AXApiError} If unarchiving fails
|
|
2269
2052
|
*/
|
|
2270
|
-
abstract
|
|
2053
|
+
abstract unarchiveConversation(conversationId: string): Promise<void>;
|
|
2271
2054
|
/**
|
|
2272
|
-
*
|
|
2055
|
+
* Pin conversation
|
|
2273
2056
|
*
|
|
2274
|
-
* @param
|
|
2275
|
-
* @
|
|
2276
|
-
* @returns Matching messages
|
|
2277
|
-
* @throws {AXApiError} If search fails
|
|
2057
|
+
* @param conversationId - Conversation ID
|
|
2058
|
+
* @throws {AXApiError} If pinning fails
|
|
2278
2059
|
*/
|
|
2279
|
-
abstract
|
|
2060
|
+
abstract pinConversation(conversationId: string): Promise<void>;
|
|
2280
2061
|
/**
|
|
2281
|
-
*
|
|
2062
|
+
* Unpin conversation
|
|
2282
2063
|
*
|
|
2283
|
-
* @param
|
|
2284
|
-
* @
|
|
2285
|
-
* @throws {AXApiError} If reaction fails
|
|
2064
|
+
* @param conversationId - Conversation ID
|
|
2065
|
+
* @throws {AXApiError} If unpinning fails
|
|
2286
2066
|
*/
|
|
2287
|
-
abstract
|
|
2067
|
+
abstract unpinConversation(conversationId: string): Promise<void>;
|
|
2288
2068
|
/**
|
|
2289
|
-
*
|
|
2069
|
+
* Mark conversation as read
|
|
2290
2070
|
*
|
|
2291
|
-
* @param
|
|
2292
|
-
* @
|
|
2293
|
-
* @throws {AXApiError} If removal fails
|
|
2071
|
+
* @param conversationId - Conversation ID
|
|
2072
|
+
* @throws {AXApiError} If marking fails
|
|
2294
2073
|
*/
|
|
2295
|
-
abstract
|
|
2074
|
+
abstract markConversationAsRead(conversationId: string): Promise<void>;
|
|
2296
2075
|
/**
|
|
2297
|
-
*
|
|
2076
|
+
* Mark conversation as unread
|
|
2298
2077
|
*
|
|
2299
|
-
* @
|
|
2300
|
-
* @throws {AXApiError} If
|
|
2078
|
+
* @param conversationId - Conversation ID
|
|
2079
|
+
* @throws {AXApiError} If marking fails
|
|
2301
2080
|
*/
|
|
2302
|
-
abstract
|
|
2081
|
+
abstract markConversationAsUnread(conversationId: string): Promise<void>;
|
|
2303
2082
|
/**
|
|
2304
|
-
*
|
|
2083
|
+
* Search conversations
|
|
2305
2084
|
*
|
|
2306
|
-
* @param
|
|
2307
|
-
* @
|
|
2308
|
-
* @throws {AXApiError} If
|
|
2085
|
+
* @param query - Search query
|
|
2086
|
+
* @returns Matching conversations
|
|
2087
|
+
* @throws {AXApiError} If search fails
|
|
2088
|
+
*/
|
|
2089
|
+
abstract searchConversations(query: string): Promise<AXConversation[]>;
|
|
2090
|
+
/**
|
|
2091
|
+
* Filter conversations
|
|
2092
|
+
*
|
|
2093
|
+
* @param filters - Filter options
|
|
2094
|
+
* @param pagination - Pagination parameters
|
|
2095
|
+
* @returns Filtered conversations
|
|
2096
|
+
* @throws {AXApiError} If filtering fails
|
|
2309
2097
|
*/
|
|
2310
|
-
abstract
|
|
2098
|
+
abstract filterConversations(filters: AXConversationFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXConversation>>;
|
|
2311
2099
|
/**
|
|
2312
|
-
*
|
|
2100
|
+
* Get conversation participants
|
|
2313
2101
|
*
|
|
2314
2102
|
* @param conversationId - Conversation ID
|
|
2315
|
-
* @
|
|
2103
|
+
* @returns List of participants
|
|
2104
|
+
* @throws {AXApiError} If request fails
|
|
2316
2105
|
*/
|
|
2317
|
-
abstract
|
|
2106
|
+
abstract getParticipants(conversationId: string): Promise<AXParticipant[]>;
|
|
2318
2107
|
/**
|
|
2319
|
-
*
|
|
2108
|
+
* Add participants to conversation
|
|
2320
2109
|
*
|
|
2321
|
-
* @param
|
|
2322
|
-
* @
|
|
2323
|
-
* @
|
|
2110
|
+
* @param conversationId - Conversation ID
|
|
2111
|
+
* @param userIds - User IDs to add
|
|
2112
|
+
* @returns Updated conversation
|
|
2113
|
+
* @throws {AXApiError} If adding fails
|
|
2324
2114
|
*/
|
|
2325
|
-
abstract
|
|
2115
|
+
abstract addParticipants(conversationId: string, userIds: string[]): Promise<AXConversation>;
|
|
2326
2116
|
/**
|
|
2327
|
-
*
|
|
2117
|
+
* Remove participant from conversation
|
|
2328
2118
|
*
|
|
2329
|
-
* @param
|
|
2330
|
-
* @
|
|
2331
|
-
* @
|
|
2119
|
+
* @param conversationId - Conversation ID
|
|
2120
|
+
* @param userId - User ID to remove
|
|
2121
|
+
* @returns Updated conversation
|
|
2122
|
+
* @throws {AXApiError} If removal fails
|
|
2332
2123
|
*/
|
|
2333
|
-
abstract
|
|
2124
|
+
abstract removeParticipant(conversationId: string, userId: string): Promise<AXConversation>;
|
|
2334
2125
|
/**
|
|
2335
|
-
*
|
|
2126
|
+
* Leave conversation (remove self)
|
|
2336
2127
|
*
|
|
2337
2128
|
* @param conversationId - Conversation ID
|
|
2338
|
-
* @
|
|
2339
|
-
* @throws {AXApiError} If pinning fails
|
|
2129
|
+
* @throws {AXApiError} If leaving fails
|
|
2340
2130
|
*/
|
|
2341
|
-
abstract
|
|
2131
|
+
abstract leaveConversation(conversationId: string): Promise<void>;
|
|
2342
2132
|
/**
|
|
2343
|
-
*
|
|
2133
|
+
* Update participant role/permissions
|
|
2344
2134
|
*
|
|
2345
2135
|
* @param conversationId - Conversation ID
|
|
2346
|
-
* @param
|
|
2347
|
-
* @
|
|
2136
|
+
* @param update - Participant update data
|
|
2137
|
+
* @returns Updated conversation
|
|
2138
|
+
* @throws {AXApiError} If update fails
|
|
2348
2139
|
*/
|
|
2349
|
-
abstract
|
|
2140
|
+
abstract updateParticipant(conversationId: string, update: AXParticipantUpdate): Promise<AXConversation>;
|
|
2350
2141
|
/**
|
|
2351
|
-
* Get
|
|
2142
|
+
* Get conversation settings
|
|
2352
2143
|
*
|
|
2353
2144
|
* @param conversationId - Conversation ID
|
|
2354
|
-
* @returns
|
|
2145
|
+
* @returns Conversation settings
|
|
2355
2146
|
* @throws {AXApiError} If request fails
|
|
2356
2147
|
*/
|
|
2357
|
-
abstract
|
|
2148
|
+
abstract getConversationSettings(conversationId: string): Promise<AXConversationSettingsUpdate>;
|
|
2358
2149
|
/**
|
|
2359
|
-
*
|
|
2150
|
+
* Update conversation settings
|
|
2360
2151
|
*
|
|
2361
|
-
* @param
|
|
2362
|
-
* @param
|
|
2363
|
-
* @
|
|
2364
|
-
* @throws {AXApiError} If request fails
|
|
2152
|
+
* @param conversationId - Conversation ID
|
|
2153
|
+
* @param settings - Settings to update
|
|
2154
|
+
* @throws {AXApiError} If update fails
|
|
2365
2155
|
*/
|
|
2366
|
-
abstract
|
|
2156
|
+
abstract updateConversationSettings(conversationId: string, settings: AXConversationSettingsUpdate): Promise<void>;
|
|
2367
2157
|
/**
|
|
2368
|
-
*
|
|
2158
|
+
* Mute conversation
|
|
2369
2159
|
*
|
|
2370
|
-
* @param
|
|
2371
|
-
* @
|
|
2372
|
-
* @throws {AXApiError} If
|
|
2160
|
+
* @param conversationId - Conversation ID
|
|
2161
|
+
* @param duration - Mute duration in milliseconds (undefined = forever)
|
|
2162
|
+
* @throws {AXApiError} If muting fails
|
|
2373
2163
|
*/
|
|
2374
|
-
abstract
|
|
2164
|
+
abstract muteConversation(conversationId: string, duration?: number): Promise<void>;
|
|
2375
2165
|
/**
|
|
2376
|
-
*
|
|
2166
|
+
* Unmute conversation
|
|
2377
2167
|
*
|
|
2378
|
-
* @param
|
|
2379
|
-
* @
|
|
2380
|
-
* @throws {AXApiError} If fetching fails
|
|
2168
|
+
* @param conversationId - Conversation ID
|
|
2169
|
+
* @throws {AXApiError} If unmuting fails
|
|
2381
2170
|
*/
|
|
2382
|
-
abstract
|
|
2171
|
+
abstract unmuteConversation(conversationId: string): Promise<void>;
|
|
2383
2172
|
/**
|
|
2384
|
-
*
|
|
2173
|
+
* Upload conversation avatar
|
|
2385
2174
|
*
|
|
2386
2175
|
* @param conversationId - Conversation ID
|
|
2387
|
-
* @
|
|
2176
|
+
* @param file - Avatar image file
|
|
2177
|
+
* @returns Avatar URL
|
|
2178
|
+
* @throws {AXApiError} If upload fails
|
|
2388
2179
|
*/
|
|
2389
|
-
abstract
|
|
2180
|
+
abstract uploadConversationAvatar(conversationId: string, file: File): Promise<string>;
|
|
2390
2181
|
/**
|
|
2391
|
-
*
|
|
2182
|
+
* Get conversation media gallery
|
|
2392
2183
|
*
|
|
2393
2184
|
* @param conversationId - Conversation ID
|
|
2394
|
-
* @
|
|
2185
|
+
* @param pagination - Pagination parameters
|
|
2186
|
+
* @returns Paginated media items
|
|
2187
|
+
* @throws {AXApiError} If request fails
|
|
2395
2188
|
*/
|
|
2396
|
-
abstract
|
|
2189
|
+
abstract getConversationMedia(conversationId: string, pagination?: AXPagination): Promise<AXPaginatedResult<unknown>>;
|
|
2397
2190
|
/**
|
|
2398
|
-
*
|
|
2191
|
+
* Add tags to conversation
|
|
2399
2192
|
*
|
|
2400
|
-
* @param
|
|
2401
|
-
* @param
|
|
2402
|
-
* @
|
|
2403
|
-
* @throws {AXApiError} If upload fails
|
|
2193
|
+
* @param conversationId - Conversation ID
|
|
2194
|
+
* @param tags - Tags to add
|
|
2195
|
+
* @throws {AXApiError} If adding fails
|
|
2404
2196
|
*/
|
|
2405
|
-
abstract
|
|
2406
|
-
url: string;
|
|
2407
|
-
thumbnailUrl?: string;
|
|
2408
|
-
size: number;
|
|
2409
|
-
mimeType: string;
|
|
2410
|
-
metadata?: Record<string, unknown>;
|
|
2411
|
-
}>;
|
|
2197
|
+
abstract addConversationTags(conversationId: string, tags: string[]): Promise<void>;
|
|
2412
2198
|
/**
|
|
2413
|
-
*
|
|
2199
|
+
* Remove tags from conversation
|
|
2414
2200
|
*
|
|
2415
|
-
* @param
|
|
2416
|
-
* @param
|
|
2417
|
-
* @throws {AXApiError} If
|
|
2201
|
+
* @param conversationId - Conversation ID
|
|
2202
|
+
* @param tags - Tags to remove
|
|
2203
|
+
* @throws {AXApiError} If removal fails
|
|
2418
2204
|
*/
|
|
2419
|
-
abstract
|
|
2205
|
+
abstract removeConversationTags(conversationId: string, tags: string[]): Promise<void>;
|
|
2420
2206
|
/**
|
|
2421
|
-
* Get
|
|
2207
|
+
* Get conversation tags
|
|
2422
2208
|
*
|
|
2423
|
-
* @param
|
|
2424
|
-
* @returns
|
|
2209
|
+
* @param conversationId - Conversation ID
|
|
2210
|
+
* @returns Array of tags
|
|
2425
2211
|
* @throws {AXApiError} If request fails
|
|
2426
2212
|
*/
|
|
2427
|
-
abstract
|
|
2213
|
+
abstract getConversationTags(conversationId: string): Promise<string[]>;
|
|
2428
2214
|
/**
|
|
2429
|
-
*
|
|
2215
|
+
* Get conversation permissions for current user
|
|
2430
2216
|
*
|
|
2431
|
-
* @param
|
|
2432
|
-
* @
|
|
2433
|
-
* @throws {AXApiError} If
|
|
2217
|
+
* @param conversationId - Conversation ID
|
|
2218
|
+
* @returns User permissions
|
|
2219
|
+
* @throws {AXApiError} If request fails
|
|
2434
2220
|
*/
|
|
2435
|
-
abstract
|
|
2221
|
+
abstract getConversationPermissions(conversationId: string): Promise<Record<string, boolean>>;
|
|
2436
2222
|
/**
|
|
2437
|
-
*
|
|
2223
|
+
* Update conversation permissions
|
|
2438
2224
|
*
|
|
2439
|
-
* @param
|
|
2440
|
-
* @
|
|
2441
|
-
* @throws {AXApiError} If
|
|
2225
|
+
* @param conversationId - Conversation ID
|
|
2226
|
+
* @param permissions - Permissions to update
|
|
2227
|
+
* @throws {AXApiError} If update fails
|
|
2442
2228
|
*/
|
|
2443
|
-
abstract
|
|
2444
|
-
delivered: number;
|
|
2445
|
-
read: number;
|
|
2446
|
-
total: number;
|
|
2447
|
-
}>;
|
|
2229
|
+
abstract updateConversationPermissions(conversationId: string, permissions: Record<string, boolean>): Promise<void>;
|
|
2448
2230
|
/**
|
|
2449
|
-
*
|
|
2231
|
+
* Save draft message for conversation
|
|
2450
2232
|
*
|
|
2451
|
-
* @param
|
|
2452
|
-
* @
|
|
2233
|
+
* @param conversationId - Conversation ID
|
|
2234
|
+
* @param draft - Draft text
|
|
2235
|
+
* @throws {AXApiError} If saving fails
|
|
2453
2236
|
*/
|
|
2454
|
-
abstract
|
|
2237
|
+
abstract saveDraft(conversationId: string, draft: string): Promise<void>;
|
|
2455
2238
|
/**
|
|
2456
|
-
*
|
|
2239
|
+
* Get draft message for conversation
|
|
2457
2240
|
*
|
|
2458
2241
|
* @param conversationId - Conversation ID
|
|
2459
|
-
* @
|
|
2460
|
-
* @
|
|
2461
|
-
* @throws {AXApiError} If deletion fails
|
|
2242
|
+
* @returns Draft text or null
|
|
2243
|
+
* @throws {AXApiError} If request fails
|
|
2462
2244
|
*/
|
|
2463
|
-
abstract
|
|
2245
|
+
abstract getDraft(conversationId: string): Promise<string | null>;
|
|
2464
2246
|
/**
|
|
2465
|
-
*
|
|
2247
|
+
* Clear draft message for conversation
|
|
2466
2248
|
*
|
|
2467
2249
|
* @param conversationId - Conversation ID
|
|
2468
|
-
* @
|
|
2469
|
-
* @returns Export data or download URL
|
|
2470
|
-
* @throws {AXApiError} If export fails
|
|
2250
|
+
* @throws {AXApiError} If clearing fails
|
|
2471
2251
|
*/
|
|
2472
|
-
abstract
|
|
2252
|
+
abstract clearDraft(conversationId: string): Promise<void>;
|
|
2473
2253
|
/**
|
|
2474
2254
|
* Create an API error
|
|
2475
2255
|
* Helper method for consistent error creation
|
|
@@ -2484,847 +2264,858 @@ declare abstract class AXMessageApi {
|
|
|
2484
2264
|
}
|
|
2485
2265
|
|
|
2486
2266
|
/**
|
|
2487
|
-
* Abstract
|
|
2488
|
-
* Handle
|
|
2267
|
+
* Abstract Message Management API
|
|
2268
|
+
* Handle message CRUD operations, reactions, and interactions
|
|
2489
2269
|
*/
|
|
2490
2270
|
|
|
2491
2271
|
/**
|
|
2492
|
-
*
|
|
2493
|
-
*/
|
|
2494
|
-
interface AXConnectionOptions {
|
|
2495
|
-
/** WebSocket/SSE endpoint URL */
|
|
2496
|
-
url?: string;
|
|
2497
|
-
/** Authentication token */
|
|
2498
|
-
token?: string;
|
|
2499
|
-
/** Reconnect automatically on disconnect */
|
|
2500
|
-
autoReconnect?: boolean;
|
|
2501
|
-
/** Reconnect delay in milliseconds */
|
|
2502
|
-
reconnectDelay?: number;
|
|
2503
|
-
/** Maximum reconnect attempts */
|
|
2504
|
-
maxReconnectAttempts?: number;
|
|
2505
|
-
/** Heartbeat interval in milliseconds */
|
|
2506
|
-
heartbeatInterval?: number;
|
|
2507
|
-
/** Custom headers */
|
|
2508
|
-
headers?: Record<string, string>;
|
|
2509
|
-
}
|
|
2510
|
-
/**
|
|
2511
|
-
* Connection event
|
|
2272
|
+
* Message search filters
|
|
2512
2273
|
*/
|
|
2513
|
-
interface
|
|
2514
|
-
/**
|
|
2515
|
-
|
|
2516
|
-
/**
|
|
2517
|
-
|
|
2518
|
-
/**
|
|
2519
|
-
|
|
2520
|
-
/**
|
|
2521
|
-
|
|
2274
|
+
interface AXMessageSearchFilters {
|
|
2275
|
+
/** Search query */
|
|
2276
|
+
query: string;
|
|
2277
|
+
/** Filter by sender ID */
|
|
2278
|
+
senderId?: string;
|
|
2279
|
+
/** Filter by message type */
|
|
2280
|
+
type?: string;
|
|
2281
|
+
/** Date range start */
|
|
2282
|
+
dateFrom?: Date;
|
|
2283
|
+
/** Date range end */
|
|
2284
|
+
dateTo?: Date;
|
|
2285
|
+
/** Include only messages with media */
|
|
2286
|
+
mediaOnly?: boolean;
|
|
2522
2287
|
}
|
|
2523
2288
|
/**
|
|
2524
|
-
*
|
|
2289
|
+
* Message forward data
|
|
2525
2290
|
*/
|
|
2526
|
-
interface
|
|
2527
|
-
/**
|
|
2528
|
-
|
|
2529
|
-
/**
|
|
2530
|
-
|
|
2531
|
-
/**
|
|
2532
|
-
|
|
2533
|
-
/** Body text */
|
|
2534
|
-
body: string;
|
|
2535
|
-
/** Related conversation ID */
|
|
2536
|
-
conversationId?: string;
|
|
2537
|
-
/** Related message ID */
|
|
2538
|
-
messageId?: string;
|
|
2539
|
-
/** Icon URL */
|
|
2540
|
-
icon?: string;
|
|
2541
|
-
/** Timestamp */
|
|
2542
|
-
timestamp: Date;
|
|
2543
|
-
/** Custom data */
|
|
2544
|
-
data?: Record<string, unknown>;
|
|
2291
|
+
interface AXMessageForwardData {
|
|
2292
|
+
/** Message ID to forward */
|
|
2293
|
+
messageId: string;
|
|
2294
|
+
/** Target conversation IDs */
|
|
2295
|
+
conversationIds: string[];
|
|
2296
|
+
/** Optional caption */
|
|
2297
|
+
caption?: string;
|
|
2545
2298
|
}
|
|
2546
2299
|
/**
|
|
2547
|
-
*
|
|
2300
|
+
* Read receipt information
|
|
2548
2301
|
*/
|
|
2549
|
-
interface
|
|
2550
|
-
/**
|
|
2551
|
-
|
|
2552
|
-
/**
|
|
2553
|
-
|
|
2554
|
-
/**
|
|
2555
|
-
|
|
2556
|
-
/** Caller user ID */
|
|
2557
|
-
callerId: string;
|
|
2558
|
-
/** Conversation ID */
|
|
2559
|
-
conversationId: string;
|
|
2560
|
-
/** Timestamp */
|
|
2561
|
-
timestamp: Date;
|
|
2562
|
-
/** Call duration in seconds (for ended calls) */
|
|
2563
|
-
duration?: number;
|
|
2302
|
+
interface AXReadReceipt {
|
|
2303
|
+
/** User ID */
|
|
2304
|
+
userId: string;
|
|
2305
|
+
/** User name */
|
|
2306
|
+
userName: string;
|
|
2307
|
+
/** Read timestamp */
|
|
2308
|
+
readAt: Date;
|
|
2564
2309
|
}
|
|
2565
2310
|
/**
|
|
2566
|
-
*
|
|
2311
|
+
* Pinned message information
|
|
2312
|
+
*/
|
|
2313
|
+
interface AXPinnedMessage {
|
|
2314
|
+
/** Message ID */
|
|
2315
|
+
messageId: string;
|
|
2316
|
+
/** Pinned by user ID */
|
|
2317
|
+
pinnedBy: string;
|
|
2318
|
+
/** Pinned timestamp */
|
|
2319
|
+
pinnedAt: Date;
|
|
2320
|
+
}
|
|
2321
|
+
/**
|
|
2322
|
+
* Abstract Message Management API
|
|
2567
2323
|
*
|
|
2568
|
-
* Implement this abstract class to handle
|
|
2569
|
-
* Supports WebSocket, SSE, or any other real-time protocol.
|
|
2324
|
+
* Implement this abstract class to handle message operations.
|
|
2570
2325
|
*
|
|
2571
2326
|
* @example
|
|
2572
2327
|
* ```typescript
|
|
2573
2328
|
* @Injectable()
|
|
2574
|
-
* export class
|
|
2575
|
-
* private
|
|
2576
|
-
*
|
|
2577
|
-
*
|
|
2578
|
-
* async connect(options?: AXConnectionOptions): Promise<void> {
|
|
2579
|
-
* this.socket = new WebSocket(options?.url || 'ws://localhost:3000');
|
|
2580
|
-
* this.socket.onopen = () => this.connectionStatus$.next('connected');
|
|
2581
|
-
* // ... handle other events
|
|
2329
|
+
* export class MyMessageApi extends AXMessageApi {
|
|
2330
|
+
* constructor(private http: HttpClient) {
|
|
2331
|
+
* super();
|
|
2582
2332
|
* }
|
|
2583
2333
|
*
|
|
2584
|
-
*
|
|
2585
|
-
*
|
|
2586
|
-
*
|
|
2587
|
-
* const data = JSON.parse(event.data);
|
|
2588
|
-
* if (data.type === 'message' && data.conversationId === conversationId) {
|
|
2589
|
-
* subscriber.next(data.message);
|
|
2590
|
-
* }
|
|
2591
|
-
* });
|
|
2592
|
-
* });
|
|
2334
|
+
* async sendMessage(command: AXSendMessageCommand): Promise<AXMessage> {
|
|
2335
|
+
* const response = await this.http.post('/api/messages', command).toPromise();
|
|
2336
|
+
* return response;
|
|
2593
2337
|
* }
|
|
2594
2338
|
*
|
|
2595
2339
|
* // ... implement other methods
|
|
2596
2340
|
* }
|
|
2597
2341
|
* ```
|
|
2598
2342
|
*/
|
|
2599
|
-
declare abstract class
|
|
2343
|
+
declare abstract class AXMessageApi {
|
|
2600
2344
|
/**
|
|
2601
|
-
*
|
|
2602
|
-
*
|
|
2345
|
+
* Send a new message
|
|
2346
|
+
*
|
|
2347
|
+
* @param command - Message send command
|
|
2348
|
+
* @returns Sent message with server-generated ID
|
|
2349
|
+
* @throws {AXApiError} If send fails
|
|
2603
2350
|
*/
|
|
2604
|
-
abstract
|
|
2351
|
+
abstract sendMessage(command: AXSendMessageCommand): Promise<AXMessage>;
|
|
2605
2352
|
/**
|
|
2606
|
-
*
|
|
2607
|
-
* Establish WebSocket/SSE connection
|
|
2353
|
+
* Get message by ID
|
|
2608
2354
|
*
|
|
2609
|
-
* @param
|
|
2610
|
-
* @
|
|
2355
|
+
* @param messageId - Message ID
|
|
2356
|
+
* @returns Message details
|
|
2357
|
+
* @throws {AXApiError} If message not found
|
|
2611
2358
|
*/
|
|
2612
|
-
abstract
|
|
2359
|
+
abstract getMessage(messageId: string): Promise<AXMessage>;
|
|
2613
2360
|
/**
|
|
2614
|
-
*
|
|
2615
|
-
*
|
|
2361
|
+
* Get messages for a conversation
|
|
2362
|
+
*
|
|
2363
|
+
* @param conversationId - Conversation ID
|
|
2364
|
+
* @param pagination - Pagination parameters
|
|
2365
|
+
* @returns Paginated message list
|
|
2366
|
+
* @throws {AXApiError} If request fails
|
|
2616
2367
|
*/
|
|
2617
|
-
abstract
|
|
2368
|
+
abstract getMessages(conversationId: string, pagination: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
|
|
2618
2369
|
/**
|
|
2619
|
-
*
|
|
2370
|
+
* Edit an existing message
|
|
2620
2371
|
*
|
|
2621
|
-
* @
|
|
2372
|
+
* @param messageId - Message ID to edit
|
|
2373
|
+
* @param payload - New message payload
|
|
2374
|
+
* @returns Updated message
|
|
2375
|
+
* @throws {AXApiError} If edit fails or message not found
|
|
2622
2376
|
*/
|
|
2623
|
-
abstract
|
|
2377
|
+
abstract editMessage(messageId: string, payload: AXMessagePayload): Promise<AXMessage>;
|
|
2624
2378
|
/**
|
|
2625
|
-
*
|
|
2626
|
-
*
|
|
2379
|
+
* Delete a message
|
|
2380
|
+
*
|
|
2381
|
+
* @param messageId - Message ID to delete
|
|
2382
|
+
* @param forEveryone - Delete for all participants (vs just for current user)
|
|
2383
|
+
* @throws {AXApiError} If deletion fails
|
|
2627
2384
|
*/
|
|
2628
|
-
abstract
|
|
2385
|
+
abstract deleteMessage(messageId: string, forEveryone?: boolean): Promise<void>;
|
|
2629
2386
|
/**
|
|
2630
|
-
*
|
|
2387
|
+
* Delete multiple messages
|
|
2631
2388
|
*
|
|
2632
|
-
* @
|
|
2389
|
+
* @param messageIds - Array of message IDs to delete
|
|
2390
|
+
* @param forEveryone - Delete for all participants
|
|
2391
|
+
* @throws {AXApiError} If deletion fails
|
|
2633
2392
|
*/
|
|
2634
|
-
abstract
|
|
2393
|
+
abstract deleteMessages(messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
2635
2394
|
/**
|
|
2636
|
-
*
|
|
2395
|
+
* Search messages in a conversation
|
|
2637
2396
|
*
|
|
2638
|
-
* @param conversationId - Conversation ID
|
|
2639
|
-
* @
|
|
2397
|
+
* @param conversationId - Conversation ID
|
|
2398
|
+
* @param filters - Search filters
|
|
2399
|
+
* @param pagination - Pagination parameters
|
|
2400
|
+
* @returns Matching messages
|
|
2401
|
+
* @throws {AXApiError} If search fails
|
|
2640
2402
|
*/
|
|
2641
|
-
abstract
|
|
2403
|
+
abstract searchMessages(conversationId: string, filters: AXMessageSearchFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
|
|
2642
2404
|
/**
|
|
2643
|
-
*
|
|
2405
|
+
* Search messages across all conversations
|
|
2644
2406
|
*
|
|
2645
|
-
* @param
|
|
2646
|
-
* @
|
|
2407
|
+
* @param filters - Search filters
|
|
2408
|
+
* @param pagination - Pagination parameters
|
|
2409
|
+
* @returns Matching messages
|
|
2410
|
+
* @throws {AXApiError} If search fails
|
|
2647
2411
|
*/
|
|
2648
|
-
abstract
|
|
2412
|
+
abstract searchAllMessages(filters: AXMessageSearchFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
|
|
2649
2413
|
/**
|
|
2650
|
-
*
|
|
2414
|
+
* Add a reaction to a message
|
|
2651
2415
|
*
|
|
2652
|
-
* @param
|
|
2653
|
-
* @
|
|
2416
|
+
* @param messageId - Message ID
|
|
2417
|
+
* @param emoji - Emoji reaction
|
|
2418
|
+
* @throws {AXApiError} If reaction fails
|
|
2654
2419
|
*/
|
|
2655
|
-
abstract
|
|
2420
|
+
abstract addReaction(messageId: string, emoji: string): Promise<void>;
|
|
2656
2421
|
/**
|
|
2657
|
-
*
|
|
2422
|
+
* Remove a reaction from a message
|
|
2658
2423
|
*
|
|
2659
|
-
* @param
|
|
2660
|
-
* @
|
|
2424
|
+
* @param messageId - Message ID
|
|
2425
|
+
* @param emoji - Emoji reaction to remove
|
|
2426
|
+
* @throws {AXApiError} If removal fails
|
|
2661
2427
|
*/
|
|
2662
|
-
abstract
|
|
2428
|
+
abstract removeReaction(messageId: string, emoji: string): Promise<void>;
|
|
2663
2429
|
/**
|
|
2664
|
-
*
|
|
2665
|
-
* Fires when conversation details change (title, avatar, participants, etc.)
|
|
2430
|
+
* Get available reaction emojis
|
|
2666
2431
|
*
|
|
2667
|
-
* @returns
|
|
2432
|
+
* @returns Array of available emoji reactions
|
|
2433
|
+
* @throws {AXApiError} If fetching fails
|
|
2668
2434
|
*/
|
|
2669
|
-
abstract
|
|
2435
|
+
abstract getAvailableReactions(): Promise<string[]>;
|
|
2670
2436
|
/**
|
|
2671
|
-
*
|
|
2672
|
-
* Fires when user is added to a new conversation
|
|
2437
|
+
* Mark messages as read
|
|
2673
2438
|
*
|
|
2674
|
-
* @
|
|
2439
|
+
* @param conversationId - Conversation ID
|
|
2440
|
+
* @param messageIds - Array of message IDs to mark as read
|
|
2441
|
+
* @throws {AXApiError} If marking fails
|
|
2675
2442
|
*/
|
|
2676
|
-
abstract
|
|
2443
|
+
abstract markAsRead(conversationId: string, messageIds: string[]): Promise<void>;
|
|
2677
2444
|
/**
|
|
2678
|
-
*
|
|
2679
|
-
* Fires when a conversation is deleted
|
|
2445
|
+
* Mark conversation as unread
|
|
2680
2446
|
*
|
|
2681
|
-
* @
|
|
2447
|
+
* @param conversationId - Conversation ID
|
|
2448
|
+
* @throws {AXApiError} If marking fails
|
|
2682
2449
|
*/
|
|
2683
|
-
abstract
|
|
2450
|
+
abstract markAsUnread(conversationId: string): Promise<void>;
|
|
2451
|
+
/**
|
|
2452
|
+
* Get read receipts for a message
|
|
2453
|
+
*
|
|
2454
|
+
* @param messageId - Message ID
|
|
2455
|
+
* @returns Array of read receipts
|
|
2456
|
+
* @throws {AXApiError} If request fails
|
|
2457
|
+
*/
|
|
2458
|
+
abstract getReadReceipts(messageId: string): Promise<AXReadReceipt[]>;
|
|
2459
|
+
/**
|
|
2460
|
+
* Forward message to other conversations
|
|
2461
|
+
*
|
|
2462
|
+
* @param data - Forward data
|
|
2463
|
+
* @returns Array of forwarded messages
|
|
2464
|
+
* @throws {AXApiError} If forwarding fails
|
|
2465
|
+
*/
|
|
2466
|
+
abstract forwardMessage(data: AXMessageForwardData): Promise<AXMessage[]>;
|
|
2467
|
+
/**
|
|
2468
|
+
* Pin message in conversation
|
|
2469
|
+
*
|
|
2470
|
+
* @param conversationId - Conversation ID
|
|
2471
|
+
* @param messageId - Message ID to pin
|
|
2472
|
+
* @throws {AXApiError} If pinning fails
|
|
2473
|
+
*/
|
|
2474
|
+
abstract pinMessage(conversationId: string, messageId: string): Promise<void>;
|
|
2475
|
+
/**
|
|
2476
|
+
* Unpin message from conversation
|
|
2477
|
+
*
|
|
2478
|
+
* @param conversationId - Conversation ID
|
|
2479
|
+
* @param messageId - Message ID to unpin
|
|
2480
|
+
* @throws {AXApiError} If unpinning fails
|
|
2481
|
+
*/
|
|
2482
|
+
abstract unpinMessage(conversationId: string, messageId: string): Promise<void>;
|
|
2483
|
+
/**
|
|
2484
|
+
* Get pinned messages in conversation
|
|
2485
|
+
*
|
|
2486
|
+
* @param conversationId - Conversation ID
|
|
2487
|
+
* @returns Array of pinned messages
|
|
2488
|
+
* @throws {AXApiError} If request fails
|
|
2489
|
+
*/
|
|
2490
|
+
abstract getPinnedMessages(conversationId: string): Promise<AXPinnedMessage[]>;
|
|
2491
|
+
/**
|
|
2492
|
+
* Get replies to a message
|
|
2493
|
+
*
|
|
2494
|
+
* @param messageId - Original message ID
|
|
2495
|
+
* @param pagination - Pagination parameters
|
|
2496
|
+
* @returns Paginated replies
|
|
2497
|
+
* @throws {AXApiError} If request fails
|
|
2498
|
+
*/
|
|
2499
|
+
abstract getMessageReplies(messageId: string, pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
|
|
2500
|
+
/**
|
|
2501
|
+
* Get reply count for a message
|
|
2502
|
+
*
|
|
2503
|
+
* @param messageId - Original message ID
|
|
2504
|
+
* @returns Number of replies
|
|
2505
|
+
* @throws {AXApiError} If fetching fails
|
|
2506
|
+
*/
|
|
2507
|
+
abstract getReplyCount(messageId: string): Promise<number>;
|
|
2508
|
+
/**
|
|
2509
|
+
* Get forward count for a message
|
|
2510
|
+
*
|
|
2511
|
+
* @param messageId - Original message ID
|
|
2512
|
+
* @returns Number of times forwarded
|
|
2513
|
+
* @throws {AXApiError} If fetching fails
|
|
2514
|
+
*/
|
|
2515
|
+
abstract getForwardCount(messageId: string): Promise<number>;
|
|
2684
2516
|
/**
|
|
2685
|
-
*
|
|
2517
|
+
* Send typing indicator
|
|
2686
2518
|
*
|
|
2687
|
-
* @param conversationId - Conversation ID
|
|
2688
|
-
* @
|
|
2519
|
+
* @param conversationId - Conversation ID
|
|
2520
|
+
* @throws {AXApiError} If sending fails
|
|
2689
2521
|
*/
|
|
2690
|
-
abstract
|
|
2522
|
+
abstract sendTypingIndicator(conversationId: string): Promise<void>;
|
|
2691
2523
|
/**
|
|
2692
|
-
*
|
|
2524
|
+
* Stop typing indicator
|
|
2693
2525
|
*
|
|
2694
|
-
* @param
|
|
2695
|
-
* @
|
|
2526
|
+
* @param conversationId - Conversation ID
|
|
2527
|
+
* @throws {AXApiError} If stopping fails
|
|
2696
2528
|
*/
|
|
2697
|
-
abstract
|
|
2529
|
+
abstract stopTypingIndicator(conversationId: string): Promise<void>;
|
|
2698
2530
|
/**
|
|
2699
|
-
*
|
|
2700
|
-
* Fires when someone reads messages
|
|
2531
|
+
* Upload a file/media
|
|
2701
2532
|
*
|
|
2702
|
-
* @param
|
|
2703
|
-
* @
|
|
2533
|
+
* @param file - File to upload
|
|
2534
|
+
* @param conversationId - Conversation ID for context
|
|
2535
|
+
* @returns Upload result with URL and metadata
|
|
2536
|
+
* @throws {AXApiError} If upload fails
|
|
2704
2537
|
*/
|
|
2705
|
-
abstract
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2538
|
+
abstract uploadFile(file: File, conversationId: string): Promise<{
|
|
2539
|
+
url: string;
|
|
2540
|
+
thumbnailUrl?: string;
|
|
2541
|
+
size: number;
|
|
2542
|
+
mimeType: string;
|
|
2543
|
+
metadata?: Record<string, unknown>;
|
|
2709
2544
|
}>;
|
|
2710
2545
|
/**
|
|
2711
|
-
*
|
|
2712
|
-
* Fires for mentions, calls, and other important events
|
|
2546
|
+
* Update message metadata
|
|
2713
2547
|
*
|
|
2714
|
-
* @
|
|
2548
|
+
* @param messageId - Message ID
|
|
2549
|
+
* @param metadata - Metadata to update
|
|
2550
|
+
* @throws {AXApiError} If update fails
|
|
2715
2551
|
*/
|
|
2716
|
-
abstract
|
|
2552
|
+
abstract updateMessageMetadata(messageId: string, metadata: Record<string, unknown>): Promise<void>;
|
|
2717
2553
|
/**
|
|
2718
|
-
*
|
|
2719
|
-
* Fires for incoming/outgoing calls
|
|
2554
|
+
* Get message metadata
|
|
2720
2555
|
*
|
|
2721
|
-
* @
|
|
2556
|
+
* @param messageId - Message ID
|
|
2557
|
+
* @returns Message metadata
|
|
2558
|
+
* @throws {AXApiError} If request fails
|
|
2722
2559
|
*/
|
|
2723
|
-
abstract
|
|
2560
|
+
abstract getMessageMetadata(messageId: string): Promise<Record<string, unknown>>;
|
|
2724
2561
|
/**
|
|
2725
|
-
*
|
|
2562
|
+
* Update message status
|
|
2726
2563
|
*
|
|
2727
|
-
* @
|
|
2564
|
+
* @param messageId - Message ID
|
|
2565
|
+
* @param status - New status
|
|
2566
|
+
* @throws {AXApiError} If update fails
|
|
2728
2567
|
*/
|
|
2729
|
-
abstract
|
|
2730
|
-
userId: string;
|
|
2731
|
-
blocked: boolean;
|
|
2732
|
-
}>;
|
|
2568
|
+
abstract updateMessageStatus(messageId: string, status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
|
|
2733
2569
|
/**
|
|
2734
|
-
*
|
|
2570
|
+
* Get message delivery status
|
|
2735
2571
|
*
|
|
2736
|
-
* @param
|
|
2737
|
-
* @returns
|
|
2572
|
+
* @param messageId - Message ID
|
|
2573
|
+
* @returns Delivery status information
|
|
2574
|
+
* @throws {AXApiError} If request fails
|
|
2738
2575
|
*/
|
|
2739
|
-
abstract
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2576
|
+
abstract getMessageDeliveryStatus(messageId: string): Promise<{
|
|
2577
|
+
delivered: number;
|
|
2578
|
+
read: number;
|
|
2579
|
+
total: number;
|
|
2743
2580
|
}>;
|
|
2744
2581
|
/**
|
|
2745
|
-
*
|
|
2746
|
-
* Fires for maintenance, updates, or other system-wide events
|
|
2582
|
+
* Mark multiple messages as read
|
|
2747
2583
|
*
|
|
2748
|
-
* @
|
|
2584
|
+
* @param messageIds - Array of message IDs
|
|
2585
|
+
* @throws {AXApiError} If marking fails
|
|
2749
2586
|
*/
|
|
2750
|
-
abstract
|
|
2751
|
-
type: string;
|
|
2752
|
-
message: string;
|
|
2753
|
-
data?: unknown;
|
|
2754
|
-
}>;
|
|
2587
|
+
abstract markMessagesAsRead(messageIds: string[]): Promise<void>;
|
|
2755
2588
|
/**
|
|
2756
|
-
*
|
|
2757
|
-
* Fires when message status changes (sending -> sent -> delivered -> read)
|
|
2589
|
+
* Delete multiple messages in bulk
|
|
2758
2590
|
*
|
|
2759
|
-
* @param conversationId -
|
|
2760
|
-
* @
|
|
2591
|
+
* @param conversationId - Conversation ID
|
|
2592
|
+
* @param messageIds - Array of message IDs
|
|
2593
|
+
* @param forEveryone - Delete for all participants
|
|
2594
|
+
* @throws {AXApiError} If deletion fails
|
|
2761
2595
|
*/
|
|
2762
|
-
abstract
|
|
2763
|
-
messageId: string;
|
|
2764
|
-
status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
|
|
2765
|
-
timestamp: Date;
|
|
2766
|
-
}>;
|
|
2596
|
+
abstract bulkDeleteMessages(conversationId: string, messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
2767
2597
|
/**
|
|
2768
|
-
*
|
|
2769
|
-
* Fires when conversation settings are updated
|
|
2598
|
+
* Export conversation messages
|
|
2770
2599
|
*
|
|
2771
|
-
* @param conversationId -
|
|
2772
|
-
* @
|
|
2600
|
+
* @param conversationId - Conversation ID
|
|
2601
|
+
* @param format - Export format (json, csv, txt)
|
|
2602
|
+
* @returns Export data or download URL
|
|
2603
|
+
* @throws {AXApiError} If export fails
|
|
2773
2604
|
*/
|
|
2774
|
-
abstract
|
|
2775
|
-
conversationId: string;
|
|
2776
|
-
settings: Record<string, unknown>;
|
|
2777
|
-
}>;
|
|
2605
|
+
abstract exportMessages(conversationId: string, format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
|
|
2778
2606
|
/**
|
|
2779
|
-
*
|
|
2780
|
-
*
|
|
2607
|
+
* Create an API error
|
|
2608
|
+
* Helper method for consistent error creation
|
|
2781
2609
|
*
|
|
2782
|
-
* @param
|
|
2783
|
-
* @
|
|
2610
|
+
* @param code - Error code
|
|
2611
|
+
* @param message - Error message
|
|
2612
|
+
* @param statusCode - HTTP status code
|
|
2613
|
+
* @param details - Additional details
|
|
2614
|
+
* @returns API error object
|
|
2784
2615
|
*/
|
|
2785
|
-
|
|
2786
|
-
conversationId: string;
|
|
2787
|
-
draft: string | null;
|
|
2788
|
-
}>;
|
|
2616
|
+
protected createError(code: string, message: string, statusCode?: number, details?: unknown): AXApiError;
|
|
2789
2617
|
}
|
|
2790
2618
|
|
|
2791
2619
|
/**
|
|
2792
|
-
* Abstract
|
|
2793
|
-
* Handle
|
|
2620
|
+
* Abstract Real-time Events API
|
|
2621
|
+
* Handle WebSocket/SSE connections and real-time event subscriptions
|
|
2794
2622
|
*/
|
|
2795
2623
|
|
|
2796
2624
|
/**
|
|
2797
|
-
*
|
|
2625
|
+
* Connection options
|
|
2798
2626
|
*/
|
|
2799
|
-
interface
|
|
2800
|
-
/**
|
|
2801
|
-
|
|
2802
|
-
/**
|
|
2803
|
-
|
|
2804
|
-
/**
|
|
2805
|
-
|
|
2806
|
-
/**
|
|
2807
|
-
|
|
2808
|
-
/**
|
|
2809
|
-
|
|
2810
|
-
/**
|
|
2811
|
-
|
|
2812
|
-
/** Custom
|
|
2813
|
-
|
|
2627
|
+
interface AXConnectionOptions {
|
|
2628
|
+
/** WebSocket/SSE endpoint URL */
|
|
2629
|
+
url?: string;
|
|
2630
|
+
/** Authentication token */
|
|
2631
|
+
token?: string;
|
|
2632
|
+
/** Reconnect automatically on disconnect */
|
|
2633
|
+
autoReconnect?: boolean;
|
|
2634
|
+
/** Reconnect delay in milliseconds */
|
|
2635
|
+
reconnectDelay?: number;
|
|
2636
|
+
/** Maximum reconnect attempts */
|
|
2637
|
+
maxReconnectAttempts?: number;
|
|
2638
|
+
/** Heartbeat interval in milliseconds */
|
|
2639
|
+
heartbeatInterval?: number;
|
|
2640
|
+
/** Custom headers */
|
|
2641
|
+
headers?: Record<string, string>;
|
|
2814
2642
|
}
|
|
2815
2643
|
/**
|
|
2816
|
-
*
|
|
2644
|
+
* Connection event
|
|
2817
2645
|
*/
|
|
2818
|
-
interface
|
|
2819
|
-
/**
|
|
2820
|
-
|
|
2821
|
-
/**
|
|
2822
|
-
|
|
2823
|
-
/**
|
|
2824
|
-
|
|
2825
|
-
/**
|
|
2826
|
-
|
|
2646
|
+
interface AXConnectionEvent {
|
|
2647
|
+
/** Event type */
|
|
2648
|
+
type: 'connected' | 'disconnected' | 'reconnecting' | 'error';
|
|
2649
|
+
/** Timestamp */
|
|
2650
|
+
timestamp: Date;
|
|
2651
|
+
/** Error message if applicable */
|
|
2652
|
+
error?: string;
|
|
2653
|
+
/** Attempt number for reconnecting */
|
|
2654
|
+
attempt?: number;
|
|
2827
2655
|
}
|
|
2828
2656
|
/**
|
|
2829
|
-
*
|
|
2657
|
+
* Notification event
|
|
2830
2658
|
*/
|
|
2831
|
-
interface
|
|
2832
|
-
/**
|
|
2833
|
-
|
|
2834
|
-
/**
|
|
2835
|
-
|
|
2659
|
+
interface AXNotificationEvent {
|
|
2660
|
+
/** Notification ID */
|
|
2661
|
+
id: string;
|
|
2662
|
+
/** Notification type */
|
|
2663
|
+
type: 'message' | 'mention' | 'reaction' | 'call' | 'system';
|
|
2664
|
+
/** Title */
|
|
2665
|
+
title: string;
|
|
2666
|
+
/** Body text */
|
|
2667
|
+
body: string;
|
|
2668
|
+
/** Related conversation ID */
|
|
2669
|
+
conversationId?: string;
|
|
2670
|
+
/** Related message ID */
|
|
2671
|
+
messageId?: string;
|
|
2672
|
+
/** Icon URL */
|
|
2673
|
+
icon?: string;
|
|
2674
|
+
/** Timestamp */
|
|
2675
|
+
timestamp: Date;
|
|
2676
|
+
/** Custom data */
|
|
2677
|
+
data?: Record<string, unknown>;
|
|
2836
2678
|
}
|
|
2837
2679
|
/**
|
|
2838
|
-
*
|
|
2680
|
+
* Call event
|
|
2681
|
+
*/
|
|
2682
|
+
interface AXCallEvent {
|
|
2683
|
+
/** Call ID */
|
|
2684
|
+
callId: string;
|
|
2685
|
+
/** Call type */
|
|
2686
|
+
type: 'voice' | 'video';
|
|
2687
|
+
/** Call status */
|
|
2688
|
+
status: 'incoming' | 'outgoing' | 'accepted' | 'rejected' | 'ended' | 'missed';
|
|
2689
|
+
/** Caller user ID */
|
|
2690
|
+
callerId: string;
|
|
2691
|
+
/** Conversation ID */
|
|
2692
|
+
conversationId: string;
|
|
2693
|
+
/** Timestamp */
|
|
2694
|
+
timestamp: Date;
|
|
2695
|
+
/** Call duration in seconds (for ended calls) */
|
|
2696
|
+
duration?: number;
|
|
2697
|
+
}
|
|
2698
|
+
/**
|
|
2699
|
+
* Abstract Real-time Events API
|
|
2839
2700
|
*
|
|
2840
|
-
* Implement this abstract class to handle
|
|
2701
|
+
* Implement this abstract class to handle real-time event subscriptions.
|
|
2702
|
+
* Supports WebSocket, SSE, or any other real-time protocol.
|
|
2841
2703
|
*
|
|
2842
2704
|
* @example
|
|
2843
2705
|
* ```typescript
|
|
2844
2706
|
* @Injectable()
|
|
2845
|
-
* export class
|
|
2846
|
-
*
|
|
2847
|
-
*
|
|
2707
|
+
* export class MyRealtimeApi extends AXRealtimeApi {
|
|
2708
|
+
* private socket: WebSocket;
|
|
2709
|
+
* private connectionStatus$ = new BehaviorSubject<AXConnectionStatus>('disconnected');
|
|
2710
|
+
*
|
|
2711
|
+
* async connect(options?: AXConnectionOptions): Promise<void> {
|
|
2712
|
+
* this.socket = new WebSocket(options?.url || 'ws://localhost:3000');
|
|
2713
|
+
* this.socket.onopen = () => this.connectionStatus$.next('connected');
|
|
2714
|
+
* // ... handle other events
|
|
2848
2715
|
* }
|
|
2849
2716
|
*
|
|
2850
|
-
*
|
|
2851
|
-
*
|
|
2852
|
-
*
|
|
2717
|
+
* subscribeToMessages(conversationId: string): Observable<AXMessage> {
|
|
2718
|
+
* return new Observable(subscriber => {
|
|
2719
|
+
* this.socket.addEventListener('message', (event) => {
|
|
2720
|
+
* const data = JSON.parse(event.data);
|
|
2721
|
+
* if (data.type === 'message' && data.conversationId === conversationId) {
|
|
2722
|
+
* subscriber.next(data.message);
|
|
2723
|
+
* }
|
|
2724
|
+
* });
|
|
2725
|
+
* });
|
|
2853
2726
|
* }
|
|
2854
2727
|
*
|
|
2855
2728
|
* // ... implement other methods
|
|
2856
2729
|
* }
|
|
2857
2730
|
* ```
|
|
2858
2731
|
*/
|
|
2859
|
-
declare abstract class
|
|
2732
|
+
declare abstract class AXRealtimeApi {
|
|
2860
2733
|
/**
|
|
2861
|
-
*
|
|
2862
|
-
*
|
|
2863
|
-
* @returns Current user information
|
|
2864
|
-
* @throws {AXApiError} If user is not authenticated
|
|
2734
|
+
* Current connection status
|
|
2735
|
+
* Emit connection status changes through this observable
|
|
2865
2736
|
*/
|
|
2866
|
-
abstract
|
|
2737
|
+
abstract readonly connectionStatus$: Observable<AXConnectionStatus>;
|
|
2867
2738
|
/**
|
|
2868
|
-
*
|
|
2739
|
+
* Connect to real-time server
|
|
2740
|
+
* Establish WebSocket/SSE connection
|
|
2869
2741
|
*
|
|
2870
|
-
* @param
|
|
2871
|
-
* @
|
|
2872
|
-
* @throws {AXApiError} If update fails
|
|
2742
|
+
* @param options - Connection options
|
|
2743
|
+
* @throws {Error} If connection fails
|
|
2873
2744
|
*/
|
|
2874
|
-
abstract
|
|
2745
|
+
abstract connect(options?: AXConnectionOptions): Promise<void>;
|
|
2875
2746
|
/**
|
|
2876
|
-
*
|
|
2877
|
-
*
|
|
2878
|
-
* @param file - Avatar image file
|
|
2879
|
-
* @returns Avatar URL
|
|
2880
|
-
* @throws {AXApiError} If upload fails
|
|
2747
|
+
* Disconnect from real-time server
|
|
2748
|
+
* Close connection and clean up resources
|
|
2881
2749
|
*/
|
|
2882
|
-
abstract
|
|
2750
|
+
abstract disconnect(): Promise<void>;
|
|
2883
2751
|
/**
|
|
2884
|
-
*
|
|
2752
|
+
* Check if currently connected
|
|
2885
2753
|
*
|
|
2886
|
-
* @
|
|
2887
|
-
* @returns List of users
|
|
2888
|
-
* @throws {AXApiError} If request fails
|
|
2754
|
+
* @returns True if connected
|
|
2889
2755
|
*/
|
|
2890
|
-
abstract
|
|
2756
|
+
abstract isConnected(): boolean;
|
|
2891
2757
|
/**
|
|
2892
|
-
*
|
|
2893
|
-
*
|
|
2894
|
-
* @param query - Search query
|
|
2895
|
-
* @returns Matching users
|
|
2896
|
-
* @throws {AXApiError} If search fails
|
|
2758
|
+
* Reconnect to server
|
|
2759
|
+
* Manually trigger reconnection
|
|
2897
2760
|
*/
|
|
2898
|
-
abstract
|
|
2761
|
+
abstract reconnect(): Promise<void>;
|
|
2899
2762
|
/**
|
|
2900
|
-
*
|
|
2763
|
+
* Subscribe to connection events
|
|
2901
2764
|
*
|
|
2902
|
-
* @
|
|
2903
|
-
* @returns User information
|
|
2904
|
-
* @throws {AXApiError} If user not found
|
|
2765
|
+
* @returns Observable of connection events
|
|
2905
2766
|
*/
|
|
2906
|
-
abstract
|
|
2767
|
+
abstract subscribeToConnectionEvents(): Observable<AXConnectionEvent>;
|
|
2907
2768
|
/**
|
|
2908
|
-
*
|
|
2769
|
+
* Subscribe to new messages in a conversation
|
|
2909
2770
|
*
|
|
2910
|
-
* @param
|
|
2911
|
-
* @returns
|
|
2912
|
-
* @throws {AXApiError} If request fails
|
|
2771
|
+
* @param conversationId - Conversation ID (empty string for all conversations)
|
|
2772
|
+
* @returns Observable stream of new messages
|
|
2913
2773
|
*/
|
|
2914
|
-
abstract
|
|
2774
|
+
abstract subscribeToMessages(conversationId: string): Observable<AXMessage>;
|
|
2915
2775
|
/**
|
|
2916
|
-
*
|
|
2776
|
+
* Subscribe to message updates (edits, status changes)
|
|
2917
2777
|
*
|
|
2918
|
-
* @param
|
|
2919
|
-
* @returns
|
|
2920
|
-
* @throws {AXApiError} If request fails
|
|
2778
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2779
|
+
* @returns Observable stream of updated messages
|
|
2921
2780
|
*/
|
|
2922
|
-
abstract
|
|
2781
|
+
abstract subscribeToMessageUpdates(conversationId?: string): Observable<AXMessage>;
|
|
2923
2782
|
/**
|
|
2924
|
-
*
|
|
2783
|
+
* Subscribe to message deletions
|
|
2925
2784
|
*
|
|
2926
|
-
* @param
|
|
2927
|
-
* @
|
|
2928
|
-
* @throws {AXApiError} If update fails
|
|
2785
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2786
|
+
* @returns Observable stream of deleted message IDs
|
|
2929
2787
|
*/
|
|
2930
|
-
abstract
|
|
2788
|
+
abstract subscribeToMessageDeletions(conversationId?: string): Observable<string>;
|
|
2931
2789
|
/**
|
|
2932
|
-
*
|
|
2790
|
+
* Subscribe to message reactions
|
|
2933
2791
|
*
|
|
2934
|
-
* @param
|
|
2935
|
-
* @
|
|
2936
|
-
* @throws {AXApiError} If blocking fails
|
|
2792
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2793
|
+
* @returns Observable stream of updated messages with reactions
|
|
2937
2794
|
*/
|
|
2938
|
-
abstract
|
|
2795
|
+
abstract subscribeToMessageReactions(conversationId?: string): Observable<AXMessage>;
|
|
2939
2796
|
/**
|
|
2940
|
-
*
|
|
2797
|
+
* Subscribe to conversation updates
|
|
2798
|
+
* Fires when conversation details change (title, avatar, participants, etc.)
|
|
2941
2799
|
*
|
|
2942
|
-
* @
|
|
2943
|
-
* @throws {AXApiError} If unblocking fails
|
|
2800
|
+
* @returns Observable stream of updated conversations
|
|
2944
2801
|
*/
|
|
2945
|
-
abstract
|
|
2802
|
+
abstract subscribeToConversationUpdates(): Observable<AXConversation>;
|
|
2946
2803
|
/**
|
|
2947
|
-
*
|
|
2804
|
+
* Subscribe to conversation creation
|
|
2805
|
+
* Fires when user is added to a new conversation
|
|
2948
2806
|
*
|
|
2949
|
-
* @returns
|
|
2950
|
-
* @throws {AXApiError} If request fails
|
|
2807
|
+
* @returns Observable stream of new conversations
|
|
2951
2808
|
*/
|
|
2952
|
-
abstract
|
|
2809
|
+
abstract subscribeToConversationCreated(): Observable<AXConversation>;
|
|
2953
2810
|
/**
|
|
2954
|
-
*
|
|
2811
|
+
* Subscribe to conversation deletion
|
|
2812
|
+
* Fires when a conversation is deleted
|
|
2955
2813
|
*
|
|
2956
|
-
* @
|
|
2957
|
-
* @param reason - Report reason
|
|
2958
|
-
* @throws {AXApiError} If reporting fails
|
|
2814
|
+
* @returns Observable stream of deleted conversation IDs
|
|
2959
2815
|
*/
|
|
2960
|
-
abstract
|
|
2816
|
+
abstract subscribeToConversationDeleted(): Observable<string>;
|
|
2961
2817
|
/**
|
|
2962
|
-
*
|
|
2818
|
+
* Subscribe to typing indicators
|
|
2963
2819
|
*
|
|
2964
|
-
* @
|
|
2965
|
-
* @
|
|
2820
|
+
* @param conversationId - Conversation ID (empty string for all conversations)
|
|
2821
|
+
* @returns Observable stream of typing indicators
|
|
2966
2822
|
*/
|
|
2967
|
-
abstract
|
|
2823
|
+
abstract subscribeToTypingIndicators(conversationId: string): Observable<AXTypingIndicator>;
|
|
2968
2824
|
/**
|
|
2969
|
-
*
|
|
2825
|
+
* Subscribe to presence updates (online/offline status)
|
|
2970
2826
|
*
|
|
2971
|
-
* @param
|
|
2972
|
-
* @
|
|
2827
|
+
* @param userIds - Optional array of user IDs to filter (empty for all users)
|
|
2828
|
+
* @returns Observable stream of presence updates
|
|
2973
2829
|
*/
|
|
2974
|
-
abstract
|
|
2830
|
+
abstract subscribeToPresenceUpdates(userIds?: string[]): Observable<AXPresenceUpdate>;
|
|
2975
2831
|
/**
|
|
2976
|
-
*
|
|
2977
|
-
*
|
|
2832
|
+
* Subscribe to read receipt updates
|
|
2833
|
+
* Fires when someone reads messages
|
|
2978
2834
|
*
|
|
2979
|
-
* @param
|
|
2980
|
-
* @
|
|
2981
|
-
* @param statusCode - HTTP status code
|
|
2982
|
-
* @param details - Additional details
|
|
2983
|
-
* @returns API error object
|
|
2984
|
-
*/
|
|
2985
|
-
protected createError(code: string, message: string, statusCode?: number, details?: unknown): AXApiError;
|
|
2986
|
-
}
|
|
2987
|
-
|
|
2988
|
-
/**
|
|
2989
|
-
* Error severity levels
|
|
2990
|
-
*/
|
|
2991
|
-
type AXErrorSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
2992
|
-
/**
|
|
2993
|
-
* Conversation error event
|
|
2994
|
-
*/
|
|
2995
|
-
interface AXConversationError {
|
|
2996
|
-
/** Error code */
|
|
2997
|
-
code: string;
|
|
2998
|
-
/** Error message */
|
|
2999
|
-
message: string;
|
|
3000
|
-
/** Severity level */
|
|
3001
|
-
severity: AXErrorSeverity;
|
|
3002
|
-
/** Source operation */
|
|
3003
|
-
operation: string;
|
|
3004
|
-
/** Original error */
|
|
3005
|
-
originalError?: unknown;
|
|
3006
|
-
/** HTTP status code (if applicable) */
|
|
3007
|
-
statusCode?: number;
|
|
3008
|
-
/** Additional context */
|
|
3009
|
-
context?: Record<string, unknown>;
|
|
3010
|
-
/** Timestamp */
|
|
3011
|
-
timestamp: Date;
|
|
3012
|
-
/** Whether error was handled */
|
|
3013
|
-
handled: boolean;
|
|
3014
|
-
/** Recovery suggestions */
|
|
3015
|
-
recoverySuggestions?: string[];
|
|
3016
|
-
}
|
|
3017
|
-
/**
|
|
3018
|
-
* Error Handler Configuration
|
|
3019
|
-
*/
|
|
3020
|
-
interface AXErrorHandlerConfig {
|
|
3021
|
-
/** Log errors to console */
|
|
3022
|
-
logToConsole?: boolean;
|
|
3023
|
-
/** Show user-friendly error messages */
|
|
3024
|
-
showUserMessages?: boolean;
|
|
3025
|
-
/** Retry failed operations automatically */
|
|
3026
|
-
autoRetry?: boolean;
|
|
3027
|
-
/** Number of retry attempts */
|
|
3028
|
-
maxRetries?: number;
|
|
3029
|
-
/** Custom error handler */
|
|
3030
|
-
customHandler?: (error: AXConversationError) => void;
|
|
3031
|
-
}
|
|
3032
|
-
/**
|
|
3033
|
-
* Error Handler Service
|
|
3034
|
-
*/
|
|
3035
|
-
declare class AXErrorHandlerService {
|
|
3036
|
-
private readonly injectedConfig;
|
|
3037
|
-
private readonly _errors$;
|
|
3038
|
-
private readonly _config;
|
|
3039
|
-
/** Error stream */
|
|
3040
|
-
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3041
|
-
constructor();
|
|
3042
|
-
/**
|
|
3043
|
-
* Configure error handler
|
|
3044
|
-
*/
|
|
3045
|
-
configure(config: Partial<AXErrorHandlerConfig>): void;
|
|
3046
|
-
/**
|
|
3047
|
-
* Handle an error
|
|
3048
|
-
*/
|
|
3049
|
-
handle(error: unknown, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3050
|
-
/**
|
|
3051
|
-
* Handle API error (same pipeline as {@link handle}, for typed API failures)
|
|
3052
|
-
*/
|
|
3053
|
-
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3054
|
-
private publish;
|
|
3055
|
-
/**
|
|
3056
|
-
* Normalize any error to conversation error format (does not publish — use {@link handle})
|
|
2835
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2836
|
+
* @returns Observable stream of message IDs that were read
|
|
3057
2837
|
*/
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
2838
|
+
abstract subscribeToReadReceipts(conversationId?: string): Observable<{
|
|
2839
|
+
messageId: string;
|
|
2840
|
+
userId: string;
|
|
2841
|
+
readAt: Date;
|
|
2842
|
+
}>;
|
|
3061
2843
|
/**
|
|
3062
|
-
*
|
|
2844
|
+
* Subscribe to push notifications
|
|
2845
|
+
* Fires for mentions, calls, and other important events
|
|
2846
|
+
*
|
|
2847
|
+
* @returns Observable stream of notification events
|
|
3063
2848
|
*/
|
|
3064
|
-
|
|
2849
|
+
abstract subscribeToNotifications(): Observable<AXNotificationEvent>;
|
|
3065
2850
|
/**
|
|
3066
|
-
*
|
|
2851
|
+
* Subscribe to call events
|
|
2852
|
+
* Fires for incoming/outgoing calls
|
|
2853
|
+
*
|
|
2854
|
+
* @returns Observable stream of call events
|
|
3067
2855
|
*/
|
|
3068
|
-
|
|
2856
|
+
abstract subscribeToCallEvents?(): Observable<AXCallEvent>;
|
|
3069
2857
|
/**
|
|
3070
|
-
*
|
|
2858
|
+
* Subscribe to user blocked/unblocked events
|
|
2859
|
+
*
|
|
2860
|
+
* @returns Observable stream of user IDs and block status
|
|
3071
2861
|
*/
|
|
3072
|
-
|
|
2862
|
+
abstract subscribeToUserBlockEvents(): Observable<{
|
|
2863
|
+
userId: string;
|
|
2864
|
+
blocked: boolean;
|
|
2865
|
+
}>;
|
|
3073
2866
|
/**
|
|
3074
|
-
*
|
|
2867
|
+
* Subscribe to participant added/removed events
|
|
2868
|
+
*
|
|
2869
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2870
|
+
* @returns Observable stream of participant changes
|
|
3075
2871
|
*/
|
|
3076
|
-
|
|
2872
|
+
abstract subscribeToParticipantEvents(conversationId?: string): Observable<{
|
|
2873
|
+
conversationId: string;
|
|
2874
|
+
userId: string;
|
|
2875
|
+
action: 'added' | 'removed';
|
|
2876
|
+
}>;
|
|
3077
2877
|
/**
|
|
3078
|
-
*
|
|
2878
|
+
* Subscribe to system events
|
|
2879
|
+
* Fires for maintenance, updates, or other system-wide events
|
|
2880
|
+
*
|
|
2881
|
+
* @returns Observable stream of system events
|
|
3079
2882
|
*/
|
|
3080
|
-
|
|
2883
|
+
abstract subscribeToSystemEvents(): Observable<{
|
|
2884
|
+
type: string;
|
|
2885
|
+
message: string;
|
|
2886
|
+
data?: unknown;
|
|
2887
|
+
}>;
|
|
3081
2888
|
/**
|
|
3082
|
-
*
|
|
2889
|
+
* Subscribe to message status changes
|
|
2890
|
+
* Fires when message status changes (sending -> sent -> delivered -> read)
|
|
2891
|
+
*
|
|
2892
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2893
|
+
* @returns Observable stream of message status updates
|
|
3083
2894
|
*/
|
|
3084
|
-
|
|
2895
|
+
abstract subscribeToMessageStatusChanges(conversationId?: string): Observable<{
|
|
2896
|
+
messageId: string;
|
|
2897
|
+
status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
|
|
2898
|
+
timestamp: Date;
|
|
2899
|
+
}>;
|
|
3085
2900
|
/**
|
|
3086
|
-
*
|
|
3087
|
-
*
|
|
3088
|
-
*
|
|
3089
|
-
* @param
|
|
3090
|
-
* @returns
|
|
3091
|
-
* @throws {AXConversationError} If all retries fail
|
|
2901
|
+
* Subscribe to conversation settings changes
|
|
2902
|
+
* Fires when conversation settings are updated
|
|
2903
|
+
*
|
|
2904
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2905
|
+
* @returns Observable stream of settings updates
|
|
3092
2906
|
*/
|
|
3093
|
-
|
|
2907
|
+
abstract subscribeToConversationSettingsChanges(conversationId?: string): Observable<{
|
|
2908
|
+
conversationId: string;
|
|
2909
|
+
settings: Record<string, unknown>;
|
|
2910
|
+
}>;
|
|
3094
2911
|
/**
|
|
3095
|
-
*
|
|
3096
|
-
*
|
|
2912
|
+
* Subscribe to draft changes
|
|
2913
|
+
* Fires when draft is saved/updated in a conversation
|
|
2914
|
+
*
|
|
2915
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2916
|
+
* @returns Observable stream of draft updates
|
|
3097
2917
|
*/
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
2918
|
+
abstract subscribeToDraftChanges(conversationId?: string): Observable<{
|
|
2919
|
+
conversationId: string;
|
|
2920
|
+
draft: string | null;
|
|
2921
|
+
}>;
|
|
3101
2922
|
}
|
|
3102
2923
|
|
|
3103
2924
|
/**
|
|
3104
|
-
*
|
|
3105
|
-
*
|
|
3106
|
-
*/
|
|
3107
|
-
|
|
3108
|
-
/**
|
|
3109
|
-
* Configuration token for conversation component
|
|
3110
|
-
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
3111
|
-
*/
|
|
3112
|
-
declare const CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
3113
|
-
/**
|
|
3114
|
-
* Token for configuring AXErrorHandlerService
|
|
3115
|
-
*/
|
|
3116
|
-
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
3117
|
-
|
|
3118
|
-
/**
|
|
3119
|
-
* Registry Configuration Tokens
|
|
3120
|
-
* Injection tokens for configuring default registry values
|
|
2925
|
+
* Abstract User Management API
|
|
2926
|
+
* Handle user profile management and user operations for conversations
|
|
3121
2927
|
*/
|
|
3122
2928
|
|
|
3123
2929
|
/**
|
|
3124
|
-
*
|
|
3125
|
-
* Provide this token to add custom message renderers in addition to built-in ones
|
|
3126
|
-
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
3127
|
-
*/
|
|
3128
|
-
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
3129
|
-
/**
|
|
3130
|
-
* Default message actions configuration
|
|
3131
|
-
* Provide this token to override default message actions
|
|
3132
|
-
*/
|
|
3133
|
-
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
3134
|
-
/**
|
|
3135
|
-
* Default composer tabs configuration
|
|
3136
|
-
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
3137
|
-
*/
|
|
3138
|
-
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
3139
|
-
/**
|
|
3140
|
-
* Default composer actions configuration
|
|
3141
|
-
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
3142
|
-
*/
|
|
3143
|
-
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
3144
|
-
/**
|
|
3145
|
-
* Default conversation tabs configuration
|
|
3146
|
-
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
3147
|
-
*/
|
|
3148
|
-
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
3149
|
-
/**
|
|
3150
|
-
* Default info bar actions configuration
|
|
3151
|
-
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
3152
|
-
*/
|
|
3153
|
-
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
3154
|
-
/**
|
|
3155
|
-
* Default conversation item actions configuration
|
|
3156
|
-
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
3157
|
-
*/
|
|
3158
|
-
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
3159
|
-
/**
|
|
3160
|
-
* Registry configuration interface
|
|
2930
|
+
* User profile update data
|
|
3161
2931
|
*/
|
|
3162
|
-
interface
|
|
3163
|
-
/**
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
infoBarActions?: AXInfoBarAction[];
|
|
3178
|
-
/** Conversation item actions to register by default */
|
|
3179
|
-
conversationItemActions?: AXConversationItemAction[];
|
|
2932
|
+
interface AXUserProfileUpdate {
|
|
2933
|
+
/** Display name */
|
|
2934
|
+
name?: string;
|
|
2935
|
+
/** Avatar URL */
|
|
2936
|
+
avatar?: string;
|
|
2937
|
+
/** Short line under the name in lists (e.g. job title) */
|
|
2938
|
+
description?: string;
|
|
2939
|
+
/** Bio/status text */
|
|
2940
|
+
bio?: string;
|
|
2941
|
+
/** Phone number */
|
|
2942
|
+
phone?: string;
|
|
2943
|
+
/** Email */
|
|
2944
|
+
email?: string;
|
|
2945
|
+
/** Custom fields */
|
|
2946
|
+
custom?: Record<string, unknown>;
|
|
3180
2947
|
}
|
|
3181
2948
|
/**
|
|
3182
|
-
*
|
|
3183
|
-
* Provide this for comprehensive registry configuration
|
|
2949
|
+
* User search filters
|
|
3184
2950
|
*/
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
/**
|
|
3191
|
-
|
|
3192
|
-
/**
|
|
3193
|
-
|
|
3194
|
-
/** Error state */
|
|
3195
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3196
|
-
/** Active conversation */
|
|
3197
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3198
|
-
/** Container CSS classes */
|
|
3199
|
-
readonly containerClasses: _angular_core.Signal<string>;
|
|
3200
|
-
closeActiveConversation(): void;
|
|
3201
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
|
|
3202
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationContainerComponent, "ax-conversation-container", never, { "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, ["ax-conversation-sidebar, [ax-conversation-sidebar]", "ax-conversation-info-bar, [ax-conversation-info-bar]", "ax-conversation-message-list, [ax-conversation-message-list]", "ax-conversation-composer, [ax-conversation-composer]", "ax-conversation-empty"], true, never>;
|
|
3203
|
-
}
|
|
3204
|
-
|
|
3205
|
-
declare class AXConversationContainerDirective {
|
|
3206
|
-
private readonly conversationService;
|
|
3207
|
-
/** Active conversation */
|
|
3208
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3209
|
-
/** Loading state */
|
|
3210
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
3211
|
-
/** Error state */
|
|
3212
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3213
|
-
closeActiveConversation(): void;
|
|
3214
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
|
|
3215
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationContainerDirective, "[axConversationContainer]", never, {}, {}, never, never, true, never>;
|
|
2951
|
+
interface AXUserSearchFilters {
|
|
2952
|
+
/** Search query */
|
|
2953
|
+
query?: string;
|
|
2954
|
+
/** Filter by online status */
|
|
2955
|
+
onlineOnly?: boolean;
|
|
2956
|
+
/** Exclude blocked users */
|
|
2957
|
+
excludeBlocked?: boolean;
|
|
2958
|
+
/** Limit results */
|
|
2959
|
+
limit?: number;
|
|
3216
2960
|
}
|
|
3217
|
-
|
|
3218
2961
|
/**
|
|
3219
|
-
*
|
|
2962
|
+
* Block/Report reason
|
|
3220
2963
|
*/
|
|
3221
|
-
interface
|
|
3222
|
-
/**
|
|
3223
|
-
|
|
3224
|
-
/**
|
|
3225
|
-
|
|
3226
|
-
/** Component inputs */
|
|
3227
|
-
inputs?: Record<string, unknown>;
|
|
3228
|
-
}
|
|
3229
|
-
interface AXInfoBarActiveBanner {
|
|
3230
|
-
/** Message that owns this banner */
|
|
3231
|
-
message: AXMessage;
|
|
3232
|
-
/** Banner component */
|
|
3233
|
-
component: Type<AXMessageInfoBarBannerComponent>;
|
|
3234
|
-
/** Additional component inputs (only keys that match declared `input()` on the banner) */
|
|
3235
|
-
inputs?: Record<string, unknown>;
|
|
3236
|
-
/** Callback invoked when the banner is dismissed (e.g. pause playback) */
|
|
3237
|
-
onClose?: () => void;
|
|
2964
|
+
interface AXBlockReportReason {
|
|
2965
|
+
/** Reason code */
|
|
2966
|
+
code: string;
|
|
2967
|
+
/** Description */
|
|
2968
|
+
description?: string;
|
|
3238
2969
|
}
|
|
3239
2970
|
/**
|
|
3240
|
-
*
|
|
3241
|
-
*
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
readonly currentSearchIndex: _angular_core.Signal<number>;
|
|
3263
|
-
constructor();
|
|
2971
|
+
* Abstract User Management API
|
|
2972
|
+
*
|
|
2973
|
+
* Implement this abstract class to handle user management for conversations.
|
|
2974
|
+
*
|
|
2975
|
+
* @example
|
|
2976
|
+
* ```typescript
|
|
2977
|
+
* @Injectable()
|
|
2978
|
+
* export class MyUserApi extends AXUserApi {
|
|
2979
|
+
* constructor(private http: HttpClient) {
|
|
2980
|
+
* super();
|
|
2981
|
+
* }
|
|
2982
|
+
*
|
|
2983
|
+
* async getCurrentUser(): Promise<AXParticipant> {
|
|
2984
|
+
* const response = await this.http.get('/api/users/me').toPromise();
|
|
2985
|
+
* return response;
|
|
2986
|
+
* }
|
|
2987
|
+
*
|
|
2988
|
+
* // ... implement other methods
|
|
2989
|
+
* }
|
|
2990
|
+
* ```
|
|
2991
|
+
*/
|
|
2992
|
+
declare abstract class AXUserApi {
|
|
3264
2993
|
/**
|
|
3265
|
-
* Get
|
|
2994
|
+
* Get current authenticated user
|
|
2995
|
+
*
|
|
2996
|
+
* @returns Current user information
|
|
2997
|
+
* @throws {AXApiError} If user is not authenticated
|
|
3266
2998
|
*/
|
|
3267
|
-
|
|
2999
|
+
abstract getCurrentUser(): Promise<AXParticipant>;
|
|
3268
3000
|
/**
|
|
3269
|
-
*
|
|
3001
|
+
* Update current user profile
|
|
3002
|
+
*
|
|
3003
|
+
* @param updates - Profile updates
|
|
3004
|
+
* @returns Updated user information
|
|
3005
|
+
* @throws {AXApiError} If update fails
|
|
3270
3006
|
*/
|
|
3271
|
-
|
|
3007
|
+
abstract updateProfile(updates: AXUserProfileUpdate): Promise<AXParticipant>;
|
|
3272
3008
|
/**
|
|
3273
|
-
*
|
|
3009
|
+
* Upload user avatar
|
|
3010
|
+
*
|
|
3011
|
+
* @param file - Avatar image file
|
|
3012
|
+
* @returns Avatar URL
|
|
3013
|
+
* @throws {AXApiError} If upload fails
|
|
3274
3014
|
*/
|
|
3275
|
-
|
|
3015
|
+
abstract uploadAvatar(file: File): Promise<string>;
|
|
3276
3016
|
/**
|
|
3277
|
-
* Get
|
|
3017
|
+
* Get available users for conversation creation
|
|
3018
|
+
*
|
|
3019
|
+
* @param filters - Search filters
|
|
3020
|
+
* @returns List of users
|
|
3021
|
+
* @throws {AXApiError} If request fails
|
|
3278
3022
|
*/
|
|
3279
|
-
|
|
3023
|
+
abstract getUsers(filters?: AXUserSearchFilters): Promise<AXParticipant[]>;
|
|
3280
3024
|
/**
|
|
3281
|
-
*
|
|
3025
|
+
* Search users by query
|
|
3026
|
+
*
|
|
3027
|
+
* @param query - Search query
|
|
3028
|
+
* @returns Matching users
|
|
3029
|
+
* @throws {AXApiError} If search fails
|
|
3282
3030
|
*/
|
|
3283
|
-
|
|
3031
|
+
abstract searchUsers(query: string): Promise<AXParticipant[]>;
|
|
3284
3032
|
/**
|
|
3285
|
-
*
|
|
3033
|
+
* Get user by ID
|
|
3034
|
+
*
|
|
3035
|
+
* @param userId - User ID
|
|
3036
|
+
* @returns User information
|
|
3037
|
+
* @throws {AXApiError} If user not found
|
|
3286
3038
|
*/
|
|
3287
|
-
|
|
3039
|
+
abstract getUserById(userId: string): Promise<AXParticipant>;
|
|
3288
3040
|
/**
|
|
3289
|
-
*
|
|
3041
|
+
* Get multiple users by IDs
|
|
3042
|
+
*
|
|
3043
|
+
* @param userIds - Array of user IDs
|
|
3044
|
+
* @returns Array of users
|
|
3045
|
+
* @throws {AXApiError} If request fails
|
|
3290
3046
|
*/
|
|
3291
|
-
|
|
3047
|
+
abstract getUsersByIds(userIds: string[]): Promise<AXParticipant[]>;
|
|
3292
3048
|
/**
|
|
3293
|
-
*
|
|
3049
|
+
* Get user presence status
|
|
3050
|
+
*
|
|
3051
|
+
* @param userId - User ID
|
|
3052
|
+
* @returns Presence information
|
|
3053
|
+
* @throws {AXApiError} If request fails
|
|
3294
3054
|
*/
|
|
3295
|
-
|
|
3055
|
+
abstract getUserPresence(userId: string): Promise<AXPresenceUpdate>;
|
|
3296
3056
|
/**
|
|
3297
|
-
*
|
|
3057
|
+
* Update current user presence
|
|
3058
|
+
*
|
|
3059
|
+
* @param status - Presence status
|
|
3060
|
+
* @param statusText - Optional status text
|
|
3061
|
+
* @throws {AXApiError} If update fails
|
|
3298
3062
|
*/
|
|
3299
|
-
|
|
3300
|
-
isMessageBannerActive(messageId: string): boolean;
|
|
3063
|
+
abstract updatePresence(status: AXPresenceStatus, statusText?: string): Promise<void>;
|
|
3301
3064
|
/**
|
|
3302
|
-
*
|
|
3065
|
+
* Block a user
|
|
3066
|
+
*
|
|
3067
|
+
* @param userId - User ID to block
|
|
3068
|
+
* @param reason - Optional reason
|
|
3069
|
+
* @throws {AXApiError} If blocking fails
|
|
3303
3070
|
*/
|
|
3304
|
-
|
|
3071
|
+
abstract blockUser(userId: string, reason?: AXBlockReportReason): Promise<void>;
|
|
3305
3072
|
/**
|
|
3306
|
-
*
|
|
3073
|
+
* Unblock a user
|
|
3074
|
+
*
|
|
3075
|
+
* @param userId - User ID to unblock
|
|
3076
|
+
* @throws {AXApiError} If unblocking fails
|
|
3307
3077
|
*/
|
|
3308
|
-
|
|
3078
|
+
abstract unblockUser(userId: string): Promise<void>;
|
|
3309
3079
|
/**
|
|
3310
|
-
*
|
|
3080
|
+
* Get list of blocked users
|
|
3081
|
+
*
|
|
3082
|
+
* @returns Array of blocked user IDs
|
|
3083
|
+
* @throws {AXApiError} If request fails
|
|
3311
3084
|
*/
|
|
3312
|
-
|
|
3085
|
+
abstract getBlockedUsers(): Promise<string[]>;
|
|
3313
3086
|
/**
|
|
3314
|
-
*
|
|
3087
|
+
* Report a user
|
|
3088
|
+
*
|
|
3089
|
+
* @param userId - User ID to report
|
|
3090
|
+
* @param reason - Report reason
|
|
3091
|
+
* @throws {AXApiError} If reporting fails
|
|
3315
3092
|
*/
|
|
3316
|
-
|
|
3093
|
+
abstract reportUser(userId: string, reason: AXBlockReportReason): Promise<void>;
|
|
3317
3094
|
/**
|
|
3318
|
-
*
|
|
3095
|
+
* Get user settings
|
|
3096
|
+
*
|
|
3097
|
+
* @returns User settings
|
|
3098
|
+
* @throws {AXApiError} If request fails
|
|
3319
3099
|
*/
|
|
3320
|
-
|
|
3100
|
+
abstract getUserSettings(): Promise<Record<string, unknown>>;
|
|
3321
3101
|
/**
|
|
3322
|
-
*
|
|
3102
|
+
* Update user settings
|
|
3103
|
+
*
|
|
3104
|
+
* @param settings - Settings to update
|
|
3105
|
+
* @throws {AXApiError} If update fails
|
|
3323
3106
|
*/
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3107
|
+
abstract updateUserSettings(settings: Record<string, unknown>): Promise<void>;
|
|
3108
|
+
/**
|
|
3109
|
+
* Create an API error
|
|
3110
|
+
* Helper method for consistent error creation
|
|
3111
|
+
*
|
|
3112
|
+
* @param code - Error code
|
|
3113
|
+
* @param message - Error message
|
|
3114
|
+
* @param statusCode - HTTP status code
|
|
3115
|
+
* @param details - Additional details
|
|
3116
|
+
* @returns API error object
|
|
3117
|
+
*/
|
|
3118
|
+
protected createError(code: string, message: string, statusCode?: number, details?: unknown): AXApiError;
|
|
3328
3119
|
}
|
|
3329
3120
|
|
|
3330
3121
|
/**
|
|
@@ -3405,9 +3196,9 @@ declare class AXConversationService {
|
|
|
3405
3196
|
/** Error state */
|
|
3406
3197
|
readonly error: _angular_core.Signal<Error>;
|
|
3407
3198
|
/** Connection status */
|
|
3408
|
-
readonly connectionStatus$: rxjs.Observable<AXConnectionStatus>;
|
|
3199
|
+
readonly connectionStatus$: rxjs.Observable<_acorex_components_conversation2.AXConnectionStatus>;
|
|
3409
3200
|
/** Error stream */
|
|
3410
|
-
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3201
|
+
readonly errors$: rxjs.Observable<_acorex_components_conversation2.AXConversationError>;
|
|
3411
3202
|
readonly onMessageReceived: rxjs.Observable<AXMessage>;
|
|
3412
3203
|
readonly onMessageUpdated: rxjs.Observable<AXMessage>;
|
|
3413
3204
|
readonly onMessageDeleted: rxjs.Observable<string>;
|
|
@@ -3419,7 +3210,7 @@ declare class AXConversationService {
|
|
|
3419
3210
|
type: "reply" | "forward";
|
|
3420
3211
|
}>;
|
|
3421
3212
|
private _currentUser;
|
|
3422
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
3213
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
3423
3214
|
constructor();
|
|
3424
3215
|
/**
|
|
3425
3216
|
* Initialize the service
|
|
@@ -3732,25 +3523,140 @@ declare class AXConversationService {
|
|
|
3732
3523
|
*/
|
|
3733
3524
|
unblockUser(userId: string): Promise<void>;
|
|
3734
3525
|
/**
|
|
3735
|
-
* Get blocked users
|
|
3736
|
-
* @returns Array of blocked user IDs
|
|
3526
|
+
* Get blocked users
|
|
3527
|
+
* @returns Array of blocked user IDs
|
|
3528
|
+
*/
|
|
3529
|
+
getBlockedUsers(): Promise<string[]>;
|
|
3530
|
+
/**
|
|
3531
|
+
* Update user presence
|
|
3532
|
+
* @param status - Presence status
|
|
3533
|
+
* @param statusText - Optional status text
|
|
3534
|
+
*/
|
|
3535
|
+
updatePresence(status: 'online' | 'offline' | 'away' | 'busy' | 'invisible', statusText?: string): Promise<void>;
|
|
3536
|
+
/**
|
|
3537
|
+
* Validate message content before sending
|
|
3538
|
+
* Uses centralized validation utilities for consistency
|
|
3539
|
+
* @param command - Message command to validate
|
|
3540
|
+
* @throws {Error} If message content is invalid
|
|
3541
|
+
*/
|
|
3542
|
+
private validateMessageContent;
|
|
3543
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationService, never>;
|
|
3544
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationService>;
|
|
3545
|
+
}
|
|
3546
|
+
|
|
3547
|
+
/**
|
|
3548
|
+
* Error severity levels
|
|
3549
|
+
*/
|
|
3550
|
+
type AXErrorSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
3551
|
+
/**
|
|
3552
|
+
* Conversation error event
|
|
3553
|
+
*/
|
|
3554
|
+
interface AXConversationError {
|
|
3555
|
+
/** Error code */
|
|
3556
|
+
code: string;
|
|
3557
|
+
/** Error message */
|
|
3558
|
+
message: string;
|
|
3559
|
+
/** Severity level */
|
|
3560
|
+
severity: AXErrorSeverity;
|
|
3561
|
+
/** Source operation */
|
|
3562
|
+
operation: string;
|
|
3563
|
+
/** Original error */
|
|
3564
|
+
originalError?: unknown;
|
|
3565
|
+
/** HTTP status code (if applicable) */
|
|
3566
|
+
statusCode?: number;
|
|
3567
|
+
/** Additional context */
|
|
3568
|
+
context?: Record<string, unknown>;
|
|
3569
|
+
/** Timestamp */
|
|
3570
|
+
timestamp: Date;
|
|
3571
|
+
/** Whether error was handled */
|
|
3572
|
+
handled: boolean;
|
|
3573
|
+
/** Recovery suggestions */
|
|
3574
|
+
recoverySuggestions?: string[];
|
|
3575
|
+
}
|
|
3576
|
+
/**
|
|
3577
|
+
* Error Handler Configuration
|
|
3578
|
+
*/
|
|
3579
|
+
interface AXErrorHandlerConfig {
|
|
3580
|
+
/** Log errors to console */
|
|
3581
|
+
logToConsole?: boolean;
|
|
3582
|
+
/** Show user-friendly error messages */
|
|
3583
|
+
showUserMessages?: boolean;
|
|
3584
|
+
/** Retry failed operations automatically */
|
|
3585
|
+
autoRetry?: boolean;
|
|
3586
|
+
/** Number of retry attempts */
|
|
3587
|
+
maxRetries?: number;
|
|
3588
|
+
/** Custom error handler */
|
|
3589
|
+
customHandler?: (error: AXConversationError) => void;
|
|
3590
|
+
}
|
|
3591
|
+
/**
|
|
3592
|
+
* Error Handler Service
|
|
3593
|
+
*/
|
|
3594
|
+
declare class AXErrorHandlerService {
|
|
3595
|
+
private readonly injectedConfig;
|
|
3596
|
+
private readonly _errors$;
|
|
3597
|
+
private readonly _config;
|
|
3598
|
+
/** Error stream */
|
|
3599
|
+
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3600
|
+
constructor();
|
|
3601
|
+
/**
|
|
3602
|
+
* Configure error handler
|
|
3603
|
+
*/
|
|
3604
|
+
configure(config: Partial<AXErrorHandlerConfig>): void;
|
|
3605
|
+
/**
|
|
3606
|
+
* Handle an error
|
|
3607
|
+
*/
|
|
3608
|
+
handle(error: unknown, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3609
|
+
/**
|
|
3610
|
+
* Handle API error (same pipeline as {@link handle}, for typed API failures)
|
|
3611
|
+
*/
|
|
3612
|
+
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3613
|
+
private publish;
|
|
3614
|
+
/**
|
|
3615
|
+
* Normalize any error to conversation error format (does not publish — use {@link handle})
|
|
3616
|
+
*/
|
|
3617
|
+
private normalizeError;
|
|
3618
|
+
private conversationErrorFromApi;
|
|
3619
|
+
private isApiError;
|
|
3620
|
+
/**
|
|
3621
|
+
* Determine severity based on status code
|
|
3622
|
+
*/
|
|
3623
|
+
private determineSeverity;
|
|
3624
|
+
/**
|
|
3625
|
+
* Get recovery suggestions based on error
|
|
3626
|
+
*/
|
|
3627
|
+
private getRecoverySuggestions;
|
|
3628
|
+
/**
|
|
3629
|
+
* Get default recovery suggestions
|
|
3630
|
+
*/
|
|
3631
|
+
private getDefaultRecoverySuggestions;
|
|
3632
|
+
/**
|
|
3633
|
+
* Log error to console
|
|
3634
|
+
*/
|
|
3635
|
+
private logError;
|
|
3636
|
+
/**
|
|
3637
|
+
* Get user-friendly error message
|
|
3638
|
+
*/
|
|
3639
|
+
getUserFriendlyMessage(error: AXConversationError): string;
|
|
3640
|
+
/**
|
|
3641
|
+
* Check if error is retryable
|
|
3737
3642
|
*/
|
|
3738
|
-
|
|
3643
|
+
isRetryable(error: AXConversationError): boolean;
|
|
3739
3644
|
/**
|
|
3740
|
-
*
|
|
3741
|
-
* @param
|
|
3742
|
-
* @param
|
|
3645
|
+
* Execute an operation with automatic retry logic
|
|
3646
|
+
* @param operation - The async operation to execute
|
|
3647
|
+
* @param operationName - Name of the operation for error tracking
|
|
3648
|
+
* @param context - Additional context for error handling
|
|
3649
|
+
* @returns Promise resolving to the operation result
|
|
3650
|
+
* @throws {AXConversationError} If all retries fail
|
|
3743
3651
|
*/
|
|
3744
|
-
|
|
3652
|
+
executeWithRetry<T>(operation: () => Promise<T>, operationName: string, context?: Record<string, unknown>): Promise<T>;
|
|
3745
3653
|
/**
|
|
3746
|
-
*
|
|
3747
|
-
*
|
|
3748
|
-
* @param command - Message command to validate
|
|
3749
|
-
* @throws {Error} If message content is invalid
|
|
3654
|
+
* Delay helper for retry backoff
|
|
3655
|
+
* @param ms - Milliseconds to delay
|
|
3750
3656
|
*/
|
|
3751
|
-
private
|
|
3752
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
3753
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
3657
|
+
private delay;
|
|
3658
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXErrorHandlerService, never>;
|
|
3659
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXErrorHandlerService>;
|
|
3754
3660
|
}
|
|
3755
3661
|
|
|
3756
3662
|
interface FilePreview {
|
|
@@ -3785,71 +3691,6 @@ declare class AXFileUploadService {
|
|
|
3785
3691
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileUploadService>;
|
|
3786
3692
|
}
|
|
3787
3693
|
|
|
3788
|
-
interface DropdownMenuItem {
|
|
3789
|
-
id: string;
|
|
3790
|
-
label: string;
|
|
3791
|
-
icon?: string;
|
|
3792
|
-
disabled?: boolean;
|
|
3793
|
-
divider?: boolean;
|
|
3794
|
-
destructive?: boolean;
|
|
3795
|
-
shortcut?: string;
|
|
3796
|
-
}
|
|
3797
|
-
declare class AXInfoBarComponent {
|
|
3798
|
-
private readonly conversationService;
|
|
3799
|
-
private readonly infoBar;
|
|
3800
|
-
protected get registry(): AXRegistryService;
|
|
3801
|
-
/** Active conversation */
|
|
3802
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3803
|
-
/** Active component from service */
|
|
3804
|
-
readonly activeComponent: _angular_core.Signal<AXInfoBarActiveComponent>;
|
|
3805
|
-
/** Active banner from service */
|
|
3806
|
-
readonly activeBanner: _angular_core.Signal<AXInfoBarActiveBanner>;
|
|
3807
|
-
/** Members popover reference */
|
|
3808
|
-
readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
|
|
3809
|
-
/** Members popover target element */
|
|
3810
|
-
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
3811
|
-
/** Loading state for async actions */
|
|
3812
|
-
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
3813
|
-
/** Avatar clicked event */
|
|
3814
|
-
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
3815
|
-
/** Search clicked event */
|
|
3816
|
-
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
3817
|
-
/** Search query changed event */
|
|
3818
|
-
readonly searchQuery: _angular_core.OutputEmitterRef<string>;
|
|
3819
|
-
/** Menu item clicked event */
|
|
3820
|
-
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
3821
|
-
/** Inline action buttons from registry */
|
|
3822
|
-
readonly inlineActions: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarAction[]>;
|
|
3823
|
-
/** Dropdown menu items from registry */
|
|
3824
|
-
readonly menuItems: _angular_core.Signal<DropdownMenuItem[]>;
|
|
3825
|
-
/** Get conversation status - delegate to utils */
|
|
3826
|
-
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
3827
|
-
/** Get subtitle text - delegate to utils */
|
|
3828
|
-
getSubtitle(conversation: AXConversation): string;
|
|
3829
|
-
/** Get initials from name - delegate to utils */
|
|
3830
|
-
getInitials(name: string): string;
|
|
3831
|
-
getConversationAvatar(conversation: AXConversation): string | undefined;
|
|
3832
|
-
getConversationAvatarIcon(conversation: AXConversation): string | undefined;
|
|
3833
|
-
/** Handle avatar click */
|
|
3834
|
-
onAvatarClick(): void;
|
|
3835
|
-
/** Handle members click - open popover */
|
|
3836
|
-
onMembersClick(event: MouseEvent): void;
|
|
3837
|
-
/** Handle inline action click */
|
|
3838
|
-
onInlineActionClick(actionId: string): Promise<void>;
|
|
3839
|
-
/** Get inputs for dynamic component */
|
|
3840
|
-
getComponentInputs(): Record<string, unknown>;
|
|
3841
|
-
getInlineComponentInputs(): Record<string, unknown>;
|
|
3842
|
-
isActiveComponentFullWidth(): boolean;
|
|
3843
|
-
/** Handle close component */
|
|
3844
|
-
onCloseComponent(): void;
|
|
3845
|
-
getBannerInputs(): Record<string, unknown>;
|
|
3846
|
-
onCloseBanner(): void;
|
|
3847
|
-
/** Handle menu item click */
|
|
3848
|
-
onMenuItemClick(item: DropdownMenuItem): Promise<void>;
|
|
3849
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
|
|
3850
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
3851
|
-
}
|
|
3852
|
-
|
|
3853
3694
|
declare class AXForwardMessageDialogComponent implements OnInit {
|
|
3854
3695
|
private readonly toastService;
|
|
3855
3696
|
private readonly translation;
|
|
@@ -3902,7 +3743,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
3902
3743
|
private readonly conversationService;
|
|
3903
3744
|
private readonly messageListService;
|
|
3904
3745
|
private readonly translation;
|
|
3905
|
-
protected readonly config: Required<AXConversationConfig>;
|
|
3746
|
+
protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
|
|
3906
3747
|
/**
|
|
3907
3748
|
* Background for the message list scroll area from config, or the built-in soft gradient when unset/empty.
|
|
3908
3749
|
* Set `messageListBackground` to `transparent` or `none` for a flat look.
|
|
@@ -3934,7 +3775,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
3934
3775
|
/** Show scroll to bottom button - use service */
|
|
3935
3776
|
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3936
3777
|
/** Active conversation */
|
|
3937
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3778
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3938
3779
|
/** Messages */
|
|
3939
3780
|
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
3940
3781
|
/** Message action event */
|
|
@@ -3943,7 +3784,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
3943
3784
|
action: string;
|
|
3944
3785
|
}>;
|
|
3945
3786
|
/** Current user from service */
|
|
3946
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
3787
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
3947
3788
|
/** Message grouped by date - use service */
|
|
3948
3789
|
readonly messageGroups: _angular_core.Signal<{
|
|
3949
3790
|
date: string;
|
|
@@ -4100,9 +3941,9 @@ declare class AXMessageListService {
|
|
|
4100
3941
|
private readonly conversationService;
|
|
4101
3942
|
private readonly config;
|
|
4102
3943
|
private get registry();
|
|
4103
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3944
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
4104
3945
|
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
4105
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
3946
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
4106
3947
|
/** Loading state */
|
|
4107
3948
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
4108
3949
|
/** Loading more messages state */
|
|
@@ -4178,7 +4019,7 @@ declare class AXSidebarService {
|
|
|
4178
4019
|
|
|
4179
4020
|
declare class AXSidebarComponent implements OnDestroy {
|
|
4180
4021
|
readonly sidebar: AXSidebarService;
|
|
4181
|
-
protected readonly config: Required<AXConversationConfig>;
|
|
4022
|
+
protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
|
|
4182
4023
|
private readonly conversationService;
|
|
4183
4024
|
private readonly popupService;
|
|
4184
4025
|
private readonly translation;
|
|
@@ -4280,6 +4121,165 @@ declare class AXInfiniteScrollDirective {
|
|
|
4280
4121
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
|
|
4281
4122
|
}
|
|
4282
4123
|
|
|
4124
|
+
/**
|
|
4125
|
+
* Conversation Configuration Interface
|
|
4126
|
+
* Centralized configuration values to avoid magic numbers
|
|
4127
|
+
*/
|
|
4128
|
+
/**
|
|
4129
|
+
* Main configuration interface for the conversation component
|
|
4130
|
+
*/
|
|
4131
|
+
interface AXConversationConfig {
|
|
4132
|
+
/** Number of messages to load per page */
|
|
4133
|
+
messagePageSize?: number;
|
|
4134
|
+
/** Number of conversations to load per page */
|
|
4135
|
+
conversationPageSize?: number;
|
|
4136
|
+
/** Scroll threshold for detecting scroll events */
|
|
4137
|
+
scrollThreshold?: number;
|
|
4138
|
+
/** Infinite scroll threshold */
|
|
4139
|
+
infiniteScrollThreshold?: number;
|
|
4140
|
+
/** Typing indicator timeout in milliseconds */
|
|
4141
|
+
typingIndicatorTimeout?: number;
|
|
4142
|
+
/** Typing indicator throttle in milliseconds (for rate limiting) */
|
|
4143
|
+
typingIndicatorThrottle?: number;
|
|
4144
|
+
/** Message highlight duration in milliseconds */
|
|
4145
|
+
messageHighlightDuration?: number;
|
|
4146
|
+
/** Search debounce delay in milliseconds */
|
|
4147
|
+
debounceSearch?: number;
|
|
4148
|
+
/** Date separator inactivity fade delay in milliseconds */
|
|
4149
|
+
/** Maximum messages per conversation */
|
|
4150
|
+
maxMessagesPerConversation?: number;
|
|
4151
|
+
/** Maximum total messages in store */
|
|
4152
|
+
maxTotalMessages?: number;
|
|
4153
|
+
/** Maximum cached conversations */
|
|
4154
|
+
maxCachedConversations?: number;
|
|
4155
|
+
/** Minimum sidebar width in pixels */
|
|
4156
|
+
minSidebarWidth?: number;
|
|
4157
|
+
/** Maximum sidebar width in pixels */
|
|
4158
|
+
maxSidebarWidth?: number;
|
|
4159
|
+
/** Default sidebar width in pixels */
|
|
4160
|
+
defaultSidebarWidth?: number;
|
|
4161
|
+
/** Filter cache size */
|
|
4162
|
+
filterCacheSize?: number;
|
|
4163
|
+
/** Maximum file size in bytes */
|
|
4164
|
+
maxFileSize?: number;
|
|
4165
|
+
/** Allowed file types (glob patterns like 'image/*') */
|
|
4166
|
+
allowedFileTypes?: string[];
|
|
4167
|
+
/** Maximum message length in characters */
|
|
4168
|
+
maxMessageLength?: number;
|
|
4169
|
+
/** Minimum message length in characters */
|
|
4170
|
+
minMessageLength?: number;
|
|
4171
|
+
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
4172
|
+
messageReadThreshold?: number;
|
|
4173
|
+
/**
|
|
4174
|
+
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
4175
|
+
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
4176
|
+
* Empty string = library default soft gradient. `transparent` or `none` = flat background.
|
|
4177
|
+
*/
|
|
4178
|
+
messageListBackground?: string;
|
|
4179
|
+
}
|
|
4180
|
+
|
|
4181
|
+
/**
|
|
4182
|
+
* Default Configuration Values
|
|
4183
|
+
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
4184
|
+
*/
|
|
4185
|
+
|
|
4186
|
+
/**
|
|
4187
|
+
* Default conversation configuration
|
|
4188
|
+
* All values are explicitly defined here for easy maintenance and documentation
|
|
4189
|
+
*/
|
|
4190
|
+
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
4191
|
+
/**
|
|
4192
|
+
* Helper function to merge user config with defaults
|
|
4193
|
+
* Properly handles array merging to avoid reference issues
|
|
4194
|
+
* @param userConfig - User-provided configuration
|
|
4195
|
+
* @returns Merged configuration with all required fields
|
|
4196
|
+
*/
|
|
4197
|
+
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
4198
|
+
|
|
4199
|
+
/**
|
|
4200
|
+
* Dependency Injection Tokens
|
|
4201
|
+
* InjectionTokens for configuration and dependencies
|
|
4202
|
+
*/
|
|
4203
|
+
|
|
4204
|
+
/**
|
|
4205
|
+
* Configuration token for conversation component
|
|
4206
|
+
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
4207
|
+
*/
|
|
4208
|
+
declare const CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
4209
|
+
/**
|
|
4210
|
+
* Token for configuring AXErrorHandlerService
|
|
4211
|
+
*/
|
|
4212
|
+
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
4213
|
+
|
|
4214
|
+
/**
|
|
4215
|
+
* Registry Configuration Tokens
|
|
4216
|
+
* Injection tokens for configuring default registry values
|
|
4217
|
+
*/
|
|
4218
|
+
|
|
4219
|
+
/**
|
|
4220
|
+
* Additional message renderers configuration
|
|
4221
|
+
* Provide this token to add custom message renderers in addition to built-in ones
|
|
4222
|
+
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
4223
|
+
*/
|
|
4224
|
+
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
4225
|
+
/**
|
|
4226
|
+
* Default message actions configuration
|
|
4227
|
+
* Provide this token to override default message actions
|
|
4228
|
+
*/
|
|
4229
|
+
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
4230
|
+
/**
|
|
4231
|
+
* Default composer tabs configuration
|
|
4232
|
+
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
4233
|
+
*/
|
|
4234
|
+
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
4235
|
+
/**
|
|
4236
|
+
* Default composer actions configuration
|
|
4237
|
+
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
4238
|
+
*/
|
|
4239
|
+
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
4240
|
+
/**
|
|
4241
|
+
* Default conversation tabs configuration
|
|
4242
|
+
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
4243
|
+
*/
|
|
4244
|
+
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
4245
|
+
/**
|
|
4246
|
+
* Default info bar actions configuration
|
|
4247
|
+
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
4248
|
+
*/
|
|
4249
|
+
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
4250
|
+
/**
|
|
4251
|
+
* Default conversation item actions configuration
|
|
4252
|
+
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
4253
|
+
*/
|
|
4254
|
+
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
4255
|
+
/**
|
|
4256
|
+
* Registry configuration interface
|
|
4257
|
+
*/
|
|
4258
|
+
interface AXRegistryConfiguration {
|
|
4259
|
+
/**
|
|
4260
|
+
* Additional message renderers to register (built-in renderers are automatic).
|
|
4261
|
+
* Each {@link AXMessageRenderer} may include optional `composerActions` for co-located send UX.
|
|
4262
|
+
*/
|
|
4263
|
+
messageRenderers?: AXMessageRenderer[];
|
|
4264
|
+
/** Message actions to register by default */
|
|
4265
|
+
messageActions?: AXMessageAction[];
|
|
4266
|
+
/** Composer tabs to register by default */
|
|
4267
|
+
composerTabs?: AXComposerTab[];
|
|
4268
|
+
/** Composer actions to register by default */
|
|
4269
|
+
composerActions?: AXComposerAction[];
|
|
4270
|
+
/** Conversation tabs to register by default */
|
|
4271
|
+
conversationTabs?: AXConversationTab[];
|
|
4272
|
+
/** Info bar actions to register by default */
|
|
4273
|
+
infoBarActions?: AXInfoBarAction[];
|
|
4274
|
+
/** Conversation item actions to register by default */
|
|
4275
|
+
conversationItemActions?: AXConversationItemAction[];
|
|
4276
|
+
}
|
|
4277
|
+
/**
|
|
4278
|
+
* Complete registry configuration token
|
|
4279
|
+
* Provide this for comprehensive registry configuration
|
|
4280
|
+
*/
|
|
4281
|
+
declare const REGISTRY_CONFIG: InjectionToken<AXRegistryConfiguration>;
|
|
4282
|
+
|
|
4283
4283
|
/**
|
|
4284
4284
|
* IndexedDB Storage Wrapper
|
|
4285
4285
|
* Provides persistent storage for conversation data
|
|
@@ -5010,7 +5010,7 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5010
5010
|
value: string;
|
|
5011
5011
|
}>;
|
|
5012
5012
|
/** Get filtered members based on search */
|
|
5013
|
-
get filteredMembers(): AXParticipant[];
|
|
5013
|
+
get filteredMembers(): _acorex_components_conversation2.AXParticipant[];
|
|
5014
5014
|
/** Handle tab change */
|
|
5015
5015
|
onTabChange(event: any): void;
|
|
5016
5016
|
ngOnInit(): void;
|
|
@@ -5066,7 +5066,7 @@ declare class AXInfoBarSearchComponent {
|
|
|
5066
5066
|
/** Current index from service */
|
|
5067
5067
|
readonly currentIndex: _angular_core.Signal<number>;
|
|
5068
5068
|
/** Messages from conversation */
|
|
5069
|
-
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
5069
|
+
readonly messages: _angular_core.Signal<_acorex_components_conversation2.AXMessage[]>;
|
|
5070
5070
|
private scrollTimer?;
|
|
5071
5071
|
constructor();
|
|
5072
5072
|
/** Handle search input change */
|
|
@@ -5166,7 +5166,7 @@ declare class AXAudioRendererComponent implements AXMessageRendererComponent {
|
|
|
5166
5166
|
private readonly _contentState;
|
|
5167
5167
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5168
5168
|
readonly rendererState: _angular_core.Signal<{
|
|
5169
|
-
deliveryStatus: AXMessageStatus;
|
|
5169
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5170
5170
|
contentState: AXMessageRendererContentState;
|
|
5171
5171
|
}>;
|
|
5172
5172
|
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|
|
@@ -5209,7 +5209,7 @@ declare class AXFallbackRendererComponent implements AXMessageRendererComponent
|
|
|
5209
5209
|
private readonly _contentState;
|
|
5210
5210
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5211
5211
|
readonly rendererState: _angular_core.Signal<{
|
|
5212
|
-
deliveryStatus: AXMessageStatus;
|
|
5212
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5213
5213
|
contentState: AXMessageRendererContentState;
|
|
5214
5214
|
}>;
|
|
5215
5215
|
readonly messageTypeLabel: _angular_core.Signal<string>;
|
|
@@ -5223,7 +5223,7 @@ declare class AXFileRendererComponent implements AXMessageRendererComponent {
|
|
|
5223
5223
|
private readonly _contentState;
|
|
5224
5224
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5225
5225
|
readonly rendererState: _angular_core.Signal<{
|
|
5226
|
-
deliveryStatus: AXMessageStatus;
|
|
5226
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5227
5227
|
contentState: AXMessageRendererContentState;
|
|
5228
5228
|
}>;
|
|
5229
5229
|
readonly payload: _angular_core.Signal<AXFilePayload>;
|
|
@@ -5243,7 +5243,7 @@ declare class AXImageRendererComponent implements AXMessageRendererComponent {
|
|
|
5243
5243
|
private readonly _contentState;
|
|
5244
5244
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5245
5245
|
readonly rendererState: _angular_core.Signal<{
|
|
5246
|
-
deliveryStatus: AXMessageStatus;
|
|
5246
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5247
5247
|
contentState: AXMessageRendererContentState;
|
|
5248
5248
|
}>;
|
|
5249
5249
|
readonly imageClick: _angular_core.OutputEmitterRef<string>;
|
|
@@ -5263,7 +5263,7 @@ declare class AXLocationRendererComponent implements AXMessageRendererComponent
|
|
|
5263
5263
|
private readonly _contentState;
|
|
5264
5264
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5265
5265
|
readonly rendererState: _angular_core.Signal<{
|
|
5266
|
-
deliveryStatus: AXMessageStatus;
|
|
5266
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5267
5267
|
contentState: AXMessageRendererContentState;
|
|
5268
5268
|
}>;
|
|
5269
5269
|
readonly payload: _angular_core.Signal<AXLocationPayload>;
|
|
@@ -5288,7 +5288,7 @@ declare class AXStickerRendererComponent implements AXMessageRendererComponent {
|
|
|
5288
5288
|
private readonly _contentState;
|
|
5289
5289
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5290
5290
|
readonly rendererState: _angular_core.Signal<{
|
|
5291
|
-
deliveryStatus: AXMessageStatus;
|
|
5291
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5292
5292
|
contentState: AXMessageRendererContentState;
|
|
5293
5293
|
}>;
|
|
5294
5294
|
readonly payload: _angular_core.Signal<AXStickerPayload>;
|
|
@@ -5305,7 +5305,7 @@ declare class AXSystemRendererComponent implements AXMessageRendererComponent {
|
|
|
5305
5305
|
private readonly _contentState;
|
|
5306
5306
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5307
5307
|
readonly rendererState: _angular_core.Signal<{
|
|
5308
|
-
deliveryStatus: AXMessageStatus;
|
|
5308
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5309
5309
|
contentState: AXMessageRendererContentState;
|
|
5310
5310
|
}>;
|
|
5311
5311
|
readonly payload: _angular_core.Signal<AXSystemPayload>;
|
|
@@ -5320,7 +5320,7 @@ declare class AXTextRendererComponent implements AXMessageRendererComponent {
|
|
|
5320
5320
|
private readonly _contentState;
|
|
5321
5321
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5322
5322
|
readonly rendererState: _angular_core.Signal<{
|
|
5323
|
-
deliveryStatus: AXMessageStatus;
|
|
5323
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5324
5324
|
contentState: AXMessageRendererContentState;
|
|
5325
5325
|
}>;
|
|
5326
5326
|
readonly searchQuery: _angular_core.Signal<string>;
|
|
@@ -5342,7 +5342,7 @@ declare class AXVideoRendererComponent implements AXMessageRendererComponent {
|
|
|
5342
5342
|
private readonly _contentState;
|
|
5343
5343
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5344
5344
|
readonly rendererState: _angular_core.Signal<{
|
|
5345
|
-
deliveryStatus: AXMessageStatus;
|
|
5345
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5346
5346
|
contentState: AXMessageRendererContentState;
|
|
5347
5347
|
}>;
|
|
5348
5348
|
readonly showPlayer: _angular_core.WritableSignal<boolean>;
|
|
@@ -5394,7 +5394,7 @@ declare class AXVoiceRendererComponent implements AXMessageRendererComponent {
|
|
|
5394
5394
|
private readonly _contentState;
|
|
5395
5395
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5396
5396
|
readonly rendererState: _angular_core.Signal<{
|
|
5397
|
-
deliveryStatus: AXMessageStatus;
|
|
5397
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5398
5398
|
contentState: AXMessageRendererContentState;
|
|
5399
5399
|
}>;
|
|
5400
5400
|
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|