@acorex/components 21.0.1-next.57 → 21.0.1-next.58
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 +19 -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 +20 -20
- 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-collapse.mjs +22 -19
- package/fesm2022/acorex-components-collapse.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 +56 -56
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation2.mjs +249 -249
- package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +53 -53
- 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-legacy.mjs +14 -14
- package/fesm2022/acorex-components-drawer-legacy.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 +9 -9
- 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-file-explorer.mjs +28 -28
- package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
- package/fesm2022/acorex-components-flow-chart.mjs +18 -18
- 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 +12 -13
- 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 +29 -29
- 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-Bjw8EpLk.mjs} +24 -24
- package/fesm2022/acorex-components-modal-acorex-components-modal-Bjw8EpLk.mjs.map +1 -0
- package/fesm2022/acorex-components-modal-modal-content.component-A2h_OC6e.mjs +214 -0
- package/fesm2022/acorex-components-modal-modal-content.component-A2h_OC6e.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-legacy.mjs +14 -32
- package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +46 -27
- 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 +14 -14
- 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 +25 -25
- 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 +73 -73
- 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-scss.mjs +4 -4
- package/fesm2022/acorex-components-scss.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 +14 -12
- 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-legacy.mjs +15 -15
- package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +12 -12
- 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 +121 -121
- package/{accordion/index.d.ts → types/acorex-components-accordion.d.ts} +2 -2
- 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/{collapse/index.d.ts → types/acorex-components-collapse.d.ts} +4 -6
- package/{conversation2/index.d.ts → types/acorex-components-conversation2.d.ts} +1542 -1542
- package/{data-table/index.d.ts → types/acorex-components-data-table.d.ts} +4 -253
- 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/{number-box/index.d.ts → types/acorex-components-number-box.d.ts} +3 -0
- 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} +1 -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/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/{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-legacy/index.d.ts → types/acorex-components-drawer-legacy.d.ts} +0 -0
- /package/{drawer/index.d.ts → types/acorex-components-drawer.d.ts} +0 -0
- /package/{dropdown-button/index.d.ts → types/acorex-components-dropdown-button.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/{file-explorer/index.d.ts → types/acorex-components-file-explorer.d.ts} +0 -0
- /package/{flow-chart/index.d.ts → types/acorex-components-flow-chart.d.ts} +0 -0
- /package/{form/index.d.ts → types/acorex-components-form.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-legacy/index.d.ts → types/acorex-components-number-box-legacy.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/{scss/index.d.ts → types/acorex-components-scss.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-legacy/index.d.ts → types/acorex-components-tree-view-legacy.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
|
|
2309
2088
|
*/
|
|
2310
|
-
abstract
|
|
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
|
|
2097
|
+
*/
|
|
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,852 +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
|
-
*
|
|
2272
|
+
* Message search filters
|
|
2493
2273
|
*/
|
|
2494
|
-
interface
|
|
2495
|
-
/**
|
|
2496
|
-
|
|
2497
|
-
/**
|
|
2498
|
-
|
|
2499
|
-
/**
|
|
2500
|
-
|
|
2501
|
-
/**
|
|
2502
|
-
|
|
2503
|
-
/**
|
|
2504
|
-
|
|
2505
|
-
/**
|
|
2506
|
-
|
|
2507
|
-
/** Custom headers */
|
|
2508
|
-
headers?: Record<string, string>;
|
|
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;
|
|
2509
2287
|
}
|
|
2510
2288
|
/**
|
|
2511
|
-
*
|
|
2289
|
+
* Message forward data
|
|
2512
2290
|
*/
|
|
2513
|
-
interface
|
|
2514
|
-
/**
|
|
2515
|
-
|
|
2516
|
-
/**
|
|
2517
|
-
|
|
2518
|
-
/**
|
|
2519
|
-
|
|
2520
|
-
/** Attempt number for reconnecting */
|
|
2521
|
-
attempt?: number;
|
|
2291
|
+
interface AXMessageForwardData {
|
|
2292
|
+
/** Message ID to forward */
|
|
2293
|
+
messageId: string;
|
|
2294
|
+
/** Target conversation IDs */
|
|
2295
|
+
conversationIds: string[];
|
|
2296
|
+
/** Optional caption */
|
|
2297
|
+
caption?: string;
|
|
2522
2298
|
}
|
|
2523
2299
|
/**
|
|
2524
|
-
*
|
|
2525
|
-
*/
|
|
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>;
|
|
2300
|
+
* Read receipt information
|
|
2301
|
+
*/
|
|
2302
|
+
interface AXReadReceipt {
|
|
2303
|
+
/** User ID */
|
|
2304
|
+
userId: string;
|
|
2305
|
+
/** User name */
|
|
2306
|
+
userName: string;
|
|
2307
|
+
/** Read timestamp */
|
|
2308
|
+
readAt: Date;
|
|
2545
2309
|
}
|
|
2546
2310
|
/**
|
|
2547
|
-
*
|
|
2311
|
+
* Pinned message information
|
|
2548
2312
|
*/
|
|
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;
|
|
2313
|
+
interface AXPinnedMessage {
|
|
2314
|
+
/** Message ID */
|
|
2315
|
+
messageId: string;
|
|
2316
|
+
/** Pinned by user ID */
|
|
2317
|
+
pinnedBy: string;
|
|
2318
|
+
/** Pinned timestamp */
|
|
2319
|
+
pinnedAt: Date;
|
|
2564
2320
|
}
|
|
2565
2321
|
/**
|
|
2566
|
-
* Abstract
|
|
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>;
|
|
2684
2451
|
/**
|
|
2685
|
-
*
|
|
2452
|
+
* Get read receipts for a message
|
|
2686
2453
|
*
|
|
2687
|
-
* @param
|
|
2688
|
-
* @returns
|
|
2454
|
+
* @param messageId - Message ID
|
|
2455
|
+
* @returns Array of read receipts
|
|
2456
|
+
* @throws {AXApiError} If request fails
|
|
2689
2457
|
*/
|
|
2690
|
-
abstract
|
|
2458
|
+
abstract getReadReceipts(messageId: string): Promise<AXReadReceipt[]>;
|
|
2691
2459
|
/**
|
|
2692
|
-
*
|
|
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>;
|
|
2516
|
+
/**
|
|
2517
|
+
* Send typing indicator
|
|
2518
|
+
*
|
|
2519
|
+
* @param conversationId - Conversation ID
|
|
2520
|
+
* @throws {AXApiError} If sending fails
|
|
2521
|
+
*/
|
|
2522
|
+
abstract sendTypingIndicator(conversationId: string): Promise<void>;
|
|
2523
|
+
/**
|
|
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
|
|
3052
|
-
*/
|
|
3053
|
-
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3054
|
-
/**
|
|
3055
|
-
* Normalize any error to conversation error format
|
|
3056
|
-
*/
|
|
3057
|
-
private normalizeError;
|
|
3058
|
-
/**
|
|
3059
|
-
* Check if error is API error
|
|
3060
|
-
*/
|
|
3061
|
-
private isApiError;
|
|
3062
|
-
/**
|
|
3063
|
-
* Determine severity based on status code
|
|
2835
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2836
|
+
* @returns Observable stream of message IDs that were read
|
|
3064
2837
|
*/
|
|
3065
|
-
|
|
2838
|
+
abstract subscribeToReadReceipts(conversationId?: string): Observable<{
|
|
2839
|
+
messageId: string;
|
|
2840
|
+
userId: string;
|
|
2841
|
+
readAt: Date;
|
|
2842
|
+
}>;
|
|
3066
2843
|
/**
|
|
3067
|
-
*
|
|
2844
|
+
* Subscribe to push notifications
|
|
2845
|
+
* Fires for mentions, calls, and other important events
|
|
2846
|
+
*
|
|
2847
|
+
* @returns Observable stream of notification events
|
|
3068
2848
|
*/
|
|
3069
|
-
|
|
2849
|
+
abstract subscribeToNotifications(): Observable<AXNotificationEvent>;
|
|
3070
2850
|
/**
|
|
3071
|
-
*
|
|
2851
|
+
* Subscribe to call events
|
|
2852
|
+
* Fires for incoming/outgoing calls
|
|
2853
|
+
*
|
|
2854
|
+
* @returns Observable stream of call events
|
|
3072
2855
|
*/
|
|
3073
|
-
|
|
2856
|
+
abstract subscribeToCallEvents?(): Observable<AXCallEvent>;
|
|
3074
2857
|
/**
|
|
3075
|
-
*
|
|
2858
|
+
* Subscribe to user blocked/unblocked events
|
|
2859
|
+
*
|
|
2860
|
+
* @returns Observable stream of user IDs and block status
|
|
3076
2861
|
*/
|
|
3077
|
-
|
|
2862
|
+
abstract subscribeToUserBlockEvents(): Observable<{
|
|
2863
|
+
userId: string;
|
|
2864
|
+
blocked: boolean;
|
|
2865
|
+
}>;
|
|
3078
2866
|
/**
|
|
3079
|
-
*
|
|
2867
|
+
* Subscribe to participant added/removed events
|
|
2868
|
+
*
|
|
2869
|
+
* @param conversationId - Optional conversation ID to filter
|
|
2870
|
+
* @returns Observable stream of participant changes
|
|
3080
2871
|
*/
|
|
3081
|
-
|
|
2872
|
+
abstract subscribeToParticipantEvents(conversationId?: string): Observable<{
|
|
2873
|
+
conversationId: string;
|
|
2874
|
+
userId: string;
|
|
2875
|
+
action: 'added' | 'removed';
|
|
2876
|
+
}>;
|
|
3082
2877
|
/**
|
|
3083
|
-
*
|
|
2878
|
+
* Subscribe to system events
|
|
2879
|
+
* Fires for maintenance, updates, or other system-wide events
|
|
2880
|
+
*
|
|
2881
|
+
* @returns Observable stream of system events
|
|
3084
2882
|
*/
|
|
3085
|
-
|
|
2883
|
+
abstract subscribeToSystemEvents(): Observable<{
|
|
2884
|
+
type: string;
|
|
2885
|
+
message: string;
|
|
2886
|
+
data?: unknown;
|
|
2887
|
+
}>;
|
|
3086
2888
|
/**
|
|
3087
|
-
*
|
|
3088
|
-
*
|
|
3089
|
-
*
|
|
3090
|
-
* @param
|
|
3091
|
-
* @returns
|
|
3092
|
-
* @throws {AXConversationError} If all retries fail
|
|
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
|
|
3093
2894
|
*/
|
|
3094
|
-
|
|
2895
|
+
abstract subscribeToMessageStatusChanges(conversationId?: string): Observable<{
|
|
2896
|
+
messageId: string;
|
|
2897
|
+
status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
|
|
2898
|
+
timestamp: Date;
|
|
2899
|
+
}>;
|
|
3095
2900
|
/**
|
|
3096
|
-
*
|
|
3097
|
-
*
|
|
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
|
|
3098
2906
|
*/
|
|
3099
|
-
|
|
2907
|
+
abstract subscribeToConversationSettingsChanges(conversationId?: string): Observable<{
|
|
2908
|
+
conversationId: string;
|
|
2909
|
+
settings: Record<string, unknown>;
|
|
2910
|
+
}>;
|
|
3100
2911
|
/**
|
|
3101
|
-
*
|
|
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
|
|
3102
2917
|
*/
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
2918
|
+
abstract subscribeToDraftChanges(conversationId?: string): Observable<{
|
|
2919
|
+
conversationId: string;
|
|
2920
|
+
draft: string | null;
|
|
2921
|
+
}>;
|
|
3106
2922
|
}
|
|
3107
2923
|
|
|
3108
2924
|
/**
|
|
3109
|
-
*
|
|
3110
|
-
*
|
|
3111
|
-
*/
|
|
3112
|
-
|
|
3113
|
-
/**
|
|
3114
|
-
* Configuration token for conversation component
|
|
3115
|
-
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
3116
|
-
*/
|
|
3117
|
-
declare const CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
3118
|
-
/**
|
|
3119
|
-
* Token for configuring AXErrorHandlerService
|
|
3120
|
-
*/
|
|
3121
|
-
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
3122
|
-
|
|
3123
|
-
/**
|
|
3124
|
-
* Registry Configuration Tokens
|
|
3125
|
-
* Injection tokens for configuring default registry values
|
|
2925
|
+
* Abstract User Management API
|
|
2926
|
+
* Handle user profile management and user operations for conversations
|
|
3126
2927
|
*/
|
|
3127
2928
|
|
|
3128
2929
|
/**
|
|
3129
|
-
*
|
|
3130
|
-
* Provide this token to add custom message renderers in addition to built-in ones
|
|
3131
|
-
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
3132
|
-
*/
|
|
3133
|
-
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
3134
|
-
/**
|
|
3135
|
-
* Default message actions configuration
|
|
3136
|
-
* Provide this token to override default message actions
|
|
3137
|
-
*/
|
|
3138
|
-
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
3139
|
-
/**
|
|
3140
|
-
* Default composer tabs configuration
|
|
3141
|
-
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
3142
|
-
*/
|
|
3143
|
-
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
3144
|
-
/**
|
|
3145
|
-
* Default composer actions configuration
|
|
3146
|
-
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
3147
|
-
*/
|
|
3148
|
-
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
3149
|
-
/**
|
|
3150
|
-
* Default conversation tabs configuration
|
|
3151
|
-
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
3152
|
-
*/
|
|
3153
|
-
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
3154
|
-
/**
|
|
3155
|
-
* Default info bar actions configuration
|
|
3156
|
-
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
3157
|
-
*/
|
|
3158
|
-
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
3159
|
-
/**
|
|
3160
|
-
* Default conversation item actions configuration
|
|
3161
|
-
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
3162
|
-
*/
|
|
3163
|
-
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
3164
|
-
/**
|
|
3165
|
-
* Registry configuration interface
|
|
2930
|
+
* User profile update data
|
|
3166
2931
|
*/
|
|
3167
|
-
interface
|
|
3168
|
-
/**
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
infoBarActions?: AXInfoBarAction[];
|
|
3183
|
-
/** Conversation item actions to register by default */
|
|
3184
|
-
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>;
|
|
3185
2947
|
}
|
|
3186
2948
|
/**
|
|
3187
|
-
*
|
|
3188
|
-
* Provide this for comprehensive registry configuration
|
|
2949
|
+
* User search filters
|
|
3189
2950
|
*/
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
/**
|
|
3196
|
-
|
|
3197
|
-
/**
|
|
3198
|
-
|
|
3199
|
-
/** Error state */
|
|
3200
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3201
|
-
/** Active conversation */
|
|
3202
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3203
|
-
/** Container CSS classes */
|
|
3204
|
-
readonly containerClasses: _angular_core.Signal<string>;
|
|
3205
|
-
closeActiveConversation(): void;
|
|
3206
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
|
|
3207
|
-
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>;
|
|
3208
|
-
}
|
|
3209
|
-
|
|
3210
|
-
declare class AXConversationContainerDirective {
|
|
3211
|
-
private readonly conversationService;
|
|
3212
|
-
/** Active conversation */
|
|
3213
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3214
|
-
/** Loading state */
|
|
3215
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
3216
|
-
/** Error state */
|
|
3217
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3218
|
-
closeActiveConversation(): void;
|
|
3219
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
|
|
3220
|
-
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;
|
|
3221
2960
|
}
|
|
3222
|
-
|
|
3223
2961
|
/**
|
|
3224
|
-
*
|
|
2962
|
+
* Block/Report reason
|
|
3225
2963
|
*/
|
|
3226
|
-
interface
|
|
3227
|
-
/**
|
|
3228
|
-
|
|
3229
|
-
/**
|
|
3230
|
-
|
|
3231
|
-
/** Component inputs */
|
|
3232
|
-
inputs?: Record<string, unknown>;
|
|
3233
|
-
}
|
|
3234
|
-
interface AXInfoBarActiveBanner {
|
|
3235
|
-
/** Message that owns this banner */
|
|
3236
|
-
message: AXMessage;
|
|
3237
|
-
/** Banner component */
|
|
3238
|
-
component: Type<AXMessageInfoBarBannerComponent>;
|
|
3239
|
-
/** Additional component inputs (only keys that match declared `input()` on the banner) */
|
|
3240
|
-
inputs?: Record<string, unknown>;
|
|
3241
|
-
/** Callback invoked when the banner is dismissed (e.g. pause playback) */
|
|
3242
|
-
onClose?: () => void;
|
|
2964
|
+
interface AXBlockReportReason {
|
|
2965
|
+
/** Reason code */
|
|
2966
|
+
code: string;
|
|
2967
|
+
/** Description */
|
|
2968
|
+
description?: string;
|
|
3243
2969
|
}
|
|
3244
2970
|
/**
|
|
3245
|
-
*
|
|
3246
|
-
*
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
readonly currentSearchIndex: _angular_core.Signal<number>;
|
|
3268
|
-
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 {
|
|
3269
2993
|
/**
|
|
3270
|
-
* Get
|
|
2994
|
+
* Get current authenticated user
|
|
2995
|
+
*
|
|
2996
|
+
* @returns Current user information
|
|
2997
|
+
* @throws {AXApiError} If user is not authenticated
|
|
3271
2998
|
*/
|
|
3272
|
-
|
|
2999
|
+
abstract getCurrentUser(): Promise<AXParticipant>;
|
|
3273
3000
|
/**
|
|
3274
|
-
*
|
|
3001
|
+
* Update current user profile
|
|
3002
|
+
*
|
|
3003
|
+
* @param updates - Profile updates
|
|
3004
|
+
* @returns Updated user information
|
|
3005
|
+
* @throws {AXApiError} If update fails
|
|
3275
3006
|
*/
|
|
3276
|
-
|
|
3007
|
+
abstract updateProfile(updates: AXUserProfileUpdate): Promise<AXParticipant>;
|
|
3277
3008
|
/**
|
|
3278
|
-
*
|
|
3009
|
+
* Upload user avatar
|
|
3010
|
+
*
|
|
3011
|
+
* @param file - Avatar image file
|
|
3012
|
+
* @returns Avatar URL
|
|
3013
|
+
* @throws {AXApiError} If upload fails
|
|
3279
3014
|
*/
|
|
3280
|
-
|
|
3015
|
+
abstract uploadAvatar(file: File): Promise<string>;
|
|
3281
3016
|
/**
|
|
3282
|
-
* 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
|
|
3283
3022
|
*/
|
|
3284
|
-
|
|
3023
|
+
abstract getUsers(filters?: AXUserSearchFilters): Promise<AXParticipant[]>;
|
|
3285
3024
|
/**
|
|
3286
|
-
*
|
|
3025
|
+
* Search users by query
|
|
3026
|
+
*
|
|
3027
|
+
* @param query - Search query
|
|
3028
|
+
* @returns Matching users
|
|
3029
|
+
* @throws {AXApiError} If search fails
|
|
3287
3030
|
*/
|
|
3288
|
-
|
|
3031
|
+
abstract searchUsers(query: string): Promise<AXParticipant[]>;
|
|
3289
3032
|
/**
|
|
3290
|
-
*
|
|
3033
|
+
* Get user by ID
|
|
3034
|
+
*
|
|
3035
|
+
* @param userId - User ID
|
|
3036
|
+
* @returns User information
|
|
3037
|
+
* @throws {AXApiError} If user not found
|
|
3291
3038
|
*/
|
|
3292
|
-
|
|
3039
|
+
abstract getUserById(userId: string): Promise<AXParticipant>;
|
|
3293
3040
|
/**
|
|
3294
|
-
*
|
|
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
|
|
3295
3046
|
*/
|
|
3296
|
-
|
|
3047
|
+
abstract getUsersByIds(userIds: string[]): Promise<AXParticipant[]>;
|
|
3297
3048
|
/**
|
|
3298
|
-
*
|
|
3049
|
+
* Get user presence status
|
|
3050
|
+
*
|
|
3051
|
+
* @param userId - User ID
|
|
3052
|
+
* @returns Presence information
|
|
3053
|
+
* @throws {AXApiError} If request fails
|
|
3299
3054
|
*/
|
|
3300
|
-
|
|
3055
|
+
abstract getUserPresence(userId: string): Promise<AXPresenceUpdate>;
|
|
3301
3056
|
/**
|
|
3302
|
-
*
|
|
3057
|
+
* Update current user presence
|
|
3058
|
+
*
|
|
3059
|
+
* @param status - Presence status
|
|
3060
|
+
* @param statusText - Optional status text
|
|
3061
|
+
* @throws {AXApiError} If update fails
|
|
3303
3062
|
*/
|
|
3304
|
-
|
|
3305
|
-
isMessageBannerActive(messageId: string): boolean;
|
|
3063
|
+
abstract updatePresence(status: AXPresenceStatus, statusText?: string): Promise<void>;
|
|
3306
3064
|
/**
|
|
3307
|
-
*
|
|
3065
|
+
* Block a user
|
|
3066
|
+
*
|
|
3067
|
+
* @param userId - User ID to block
|
|
3068
|
+
* @param reason - Optional reason
|
|
3069
|
+
* @throws {AXApiError} If blocking fails
|
|
3308
3070
|
*/
|
|
3309
|
-
|
|
3071
|
+
abstract blockUser(userId: string, reason?: AXBlockReportReason): Promise<void>;
|
|
3310
3072
|
/**
|
|
3311
|
-
*
|
|
3073
|
+
* Unblock a user
|
|
3074
|
+
*
|
|
3075
|
+
* @param userId - User ID to unblock
|
|
3076
|
+
* @throws {AXApiError} If unblocking fails
|
|
3312
3077
|
*/
|
|
3313
|
-
|
|
3078
|
+
abstract unblockUser(userId: string): Promise<void>;
|
|
3314
3079
|
/**
|
|
3315
|
-
*
|
|
3080
|
+
* Get list of blocked users
|
|
3081
|
+
*
|
|
3082
|
+
* @returns Array of blocked user IDs
|
|
3083
|
+
* @throws {AXApiError} If request fails
|
|
3316
3084
|
*/
|
|
3317
|
-
|
|
3085
|
+
abstract getBlockedUsers(): Promise<string[]>;
|
|
3318
3086
|
/**
|
|
3319
|
-
*
|
|
3087
|
+
* Report a user
|
|
3088
|
+
*
|
|
3089
|
+
* @param userId - User ID to report
|
|
3090
|
+
* @param reason - Report reason
|
|
3091
|
+
* @throws {AXApiError} If reporting fails
|
|
3320
3092
|
*/
|
|
3321
|
-
|
|
3093
|
+
abstract reportUser(userId: string, reason: AXBlockReportReason): Promise<void>;
|
|
3322
3094
|
/**
|
|
3323
|
-
*
|
|
3095
|
+
* Get user settings
|
|
3096
|
+
*
|
|
3097
|
+
* @returns User settings
|
|
3098
|
+
* @throws {AXApiError} If request fails
|
|
3324
3099
|
*/
|
|
3325
|
-
|
|
3100
|
+
abstract getUserSettings(): Promise<Record<string, unknown>>;
|
|
3326
3101
|
/**
|
|
3327
|
-
*
|
|
3102
|
+
* Update user settings
|
|
3103
|
+
*
|
|
3104
|
+
* @param settings - Settings to update
|
|
3105
|
+
* @throws {AXApiError} If update fails
|
|
3328
3106
|
*/
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
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;
|
|
3333
3119
|
}
|
|
3334
3120
|
|
|
3335
3121
|
/**
|
|
@@ -3581,9 +3367,9 @@ declare class AXConversationService {
|
|
|
3581
3367
|
/** Error state */
|
|
3582
3368
|
readonly error: _angular_core.Signal<Error>;
|
|
3583
3369
|
/** Connection status */
|
|
3584
|
-
readonly connectionStatus$: rxjs.Observable<AXConnectionStatus>;
|
|
3370
|
+
readonly connectionStatus$: rxjs.Observable<_acorex_components_conversation2.AXConnectionStatus>;
|
|
3585
3371
|
/** Error stream */
|
|
3586
|
-
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3372
|
+
readonly errors$: rxjs.Observable<_acorex_components_conversation2.AXConversationError>;
|
|
3587
3373
|
readonly onMessageReceived: rxjs.Observable<AXMessage>;
|
|
3588
3374
|
readonly onMessageUpdated: rxjs.Observable<AXMessage>;
|
|
3589
3375
|
readonly onMessageDeleted: rxjs.Observable<string>;
|
|
@@ -3595,7 +3381,7 @@ declare class AXConversationService {
|
|
|
3595
3381
|
type: "reply" | "forward";
|
|
3596
3382
|
}>;
|
|
3597
3383
|
private _currentUser;
|
|
3598
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
3384
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
3599
3385
|
constructor();
|
|
3600
3386
|
/**
|
|
3601
3387
|
* Initialize the service
|
|
@@ -3908,25 +3694,145 @@ declare class AXConversationService {
|
|
|
3908
3694
|
*/
|
|
3909
3695
|
unblockUser(userId: string): Promise<void>;
|
|
3910
3696
|
/**
|
|
3911
|
-
* Get blocked users
|
|
3912
|
-
* @returns Array of blocked user IDs
|
|
3697
|
+
* Get blocked users
|
|
3698
|
+
* @returns Array of blocked user IDs
|
|
3699
|
+
*/
|
|
3700
|
+
getBlockedUsers(): Promise<string[]>;
|
|
3701
|
+
/**
|
|
3702
|
+
* Update user presence
|
|
3703
|
+
* @param status - Presence status
|
|
3704
|
+
* @param statusText - Optional status text
|
|
3705
|
+
*/
|
|
3706
|
+
updatePresence(status: 'online' | 'offline' | 'away' | 'busy' | 'invisible', statusText?: string): Promise<void>;
|
|
3707
|
+
/**
|
|
3708
|
+
* Validate message content before sending
|
|
3709
|
+
* Uses centralized validation utilities for consistency
|
|
3710
|
+
* @param command - Message command to validate
|
|
3711
|
+
* @throws {Error} If message content is invalid
|
|
3712
|
+
*/
|
|
3713
|
+
private validateMessageContent;
|
|
3714
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationService, never>;
|
|
3715
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationService>;
|
|
3716
|
+
}
|
|
3717
|
+
|
|
3718
|
+
/**
|
|
3719
|
+
* Error severity levels
|
|
3720
|
+
*/
|
|
3721
|
+
type AXErrorSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
3722
|
+
/**
|
|
3723
|
+
* Conversation error event
|
|
3724
|
+
*/
|
|
3725
|
+
interface AXConversationError {
|
|
3726
|
+
/** Error code */
|
|
3727
|
+
code: string;
|
|
3728
|
+
/** Error message */
|
|
3729
|
+
message: string;
|
|
3730
|
+
/** Severity level */
|
|
3731
|
+
severity: AXErrorSeverity;
|
|
3732
|
+
/** Source operation */
|
|
3733
|
+
operation: string;
|
|
3734
|
+
/** Original error */
|
|
3735
|
+
originalError?: unknown;
|
|
3736
|
+
/** HTTP status code (if applicable) */
|
|
3737
|
+
statusCode?: number;
|
|
3738
|
+
/** Additional context */
|
|
3739
|
+
context?: Record<string, unknown>;
|
|
3740
|
+
/** Timestamp */
|
|
3741
|
+
timestamp: Date;
|
|
3742
|
+
/** Whether error was handled */
|
|
3743
|
+
handled: boolean;
|
|
3744
|
+
/** Recovery suggestions */
|
|
3745
|
+
recoverySuggestions?: string[];
|
|
3746
|
+
}
|
|
3747
|
+
/**
|
|
3748
|
+
* Error Handler Configuration
|
|
3749
|
+
*/
|
|
3750
|
+
interface AXErrorHandlerConfig {
|
|
3751
|
+
/** Log errors to console */
|
|
3752
|
+
logToConsole?: boolean;
|
|
3753
|
+
/** Show user-friendly error messages */
|
|
3754
|
+
showUserMessages?: boolean;
|
|
3755
|
+
/** Retry failed operations automatically */
|
|
3756
|
+
autoRetry?: boolean;
|
|
3757
|
+
/** Number of retry attempts */
|
|
3758
|
+
maxRetries?: number;
|
|
3759
|
+
/** Custom error handler */
|
|
3760
|
+
customHandler?: (error: AXConversationError) => void;
|
|
3761
|
+
}
|
|
3762
|
+
/**
|
|
3763
|
+
* Error Handler Service
|
|
3764
|
+
*/
|
|
3765
|
+
declare class AXErrorHandlerService {
|
|
3766
|
+
private readonly injectedConfig;
|
|
3767
|
+
private readonly _errors$;
|
|
3768
|
+
private readonly _config;
|
|
3769
|
+
/** Error stream */
|
|
3770
|
+
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3771
|
+
constructor();
|
|
3772
|
+
/**
|
|
3773
|
+
* Configure error handler
|
|
3774
|
+
*/
|
|
3775
|
+
configure(config: Partial<AXErrorHandlerConfig>): void;
|
|
3776
|
+
/**
|
|
3777
|
+
* Handle an error
|
|
3778
|
+
*/
|
|
3779
|
+
handle(error: unknown, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3780
|
+
/**
|
|
3781
|
+
* Handle API error
|
|
3782
|
+
*/
|
|
3783
|
+
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3784
|
+
/**
|
|
3785
|
+
* Normalize any error to conversation error format
|
|
3786
|
+
*/
|
|
3787
|
+
private normalizeError;
|
|
3788
|
+
/**
|
|
3789
|
+
* Check if error is API error
|
|
3790
|
+
*/
|
|
3791
|
+
private isApiError;
|
|
3792
|
+
/**
|
|
3793
|
+
* Determine severity based on status code
|
|
3794
|
+
*/
|
|
3795
|
+
private determineSeverity;
|
|
3796
|
+
/**
|
|
3797
|
+
* Get recovery suggestions based on error
|
|
3798
|
+
*/
|
|
3799
|
+
private getRecoverySuggestions;
|
|
3800
|
+
/**
|
|
3801
|
+
* Get default recovery suggestions
|
|
3802
|
+
*/
|
|
3803
|
+
private getDefaultRecoverySuggestions;
|
|
3804
|
+
/**
|
|
3805
|
+
* Log error to console
|
|
3806
|
+
*/
|
|
3807
|
+
private logError;
|
|
3808
|
+
/**
|
|
3809
|
+
* Get user-friendly error message
|
|
3810
|
+
*/
|
|
3811
|
+
getUserFriendlyMessage(error: AXConversationError): string;
|
|
3812
|
+
/**
|
|
3813
|
+
* Check if error is retryable
|
|
3814
|
+
*/
|
|
3815
|
+
isRetryable(error: AXConversationError): boolean;
|
|
3816
|
+
/**
|
|
3817
|
+
* Execute an operation with automatic retry logic
|
|
3818
|
+
* @param operation - The async operation to execute
|
|
3819
|
+
* @param operationName - Name of the operation for error tracking
|
|
3820
|
+
* @param context - Additional context for error handling
|
|
3821
|
+
* @returns Promise resolving to the operation result
|
|
3822
|
+
* @throws {AXConversationError} If all retries fail
|
|
3913
3823
|
*/
|
|
3914
|
-
|
|
3824
|
+
executeWithRetry<T>(operation: () => Promise<T>, operationName: string, context?: Record<string, unknown>): Promise<T>;
|
|
3915
3825
|
/**
|
|
3916
|
-
*
|
|
3917
|
-
* @param
|
|
3918
|
-
* @param statusText - Optional status text
|
|
3826
|
+
* Delay helper for retry backoff
|
|
3827
|
+
* @param ms - Milliseconds to delay
|
|
3919
3828
|
*/
|
|
3920
|
-
|
|
3829
|
+
private delay;
|
|
3921
3830
|
/**
|
|
3922
|
-
*
|
|
3923
|
-
* Uses centralized validation utilities for consistency
|
|
3924
|
-
* @param command - Message command to validate
|
|
3925
|
-
* @throws {Error} If message content is invalid
|
|
3831
|
+
* Clear error history
|
|
3926
3832
|
*/
|
|
3927
|
-
|
|
3928
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
3929
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
3833
|
+
clear(): void;
|
|
3834
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXErrorHandlerService, never>;
|
|
3835
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXErrorHandlerService>;
|
|
3930
3836
|
}
|
|
3931
3837
|
|
|
3932
3838
|
interface FileUploadProgress {
|
|
@@ -4014,71 +3920,6 @@ declare class AXFileUploadService {
|
|
|
4014
3920
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileUploadService>;
|
|
4015
3921
|
}
|
|
4016
3922
|
|
|
4017
|
-
interface DropdownMenuItem {
|
|
4018
|
-
id: string;
|
|
4019
|
-
label: string;
|
|
4020
|
-
icon?: string;
|
|
4021
|
-
disabled?: boolean;
|
|
4022
|
-
divider?: boolean;
|
|
4023
|
-
destructive?: boolean;
|
|
4024
|
-
shortcut?: string;
|
|
4025
|
-
}
|
|
4026
|
-
declare class AXInfoBarComponent {
|
|
4027
|
-
private readonly conversationService;
|
|
4028
|
-
private readonly infoBar;
|
|
4029
|
-
protected get registry(): AXRegistryService;
|
|
4030
|
-
/** Active conversation */
|
|
4031
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
4032
|
-
/** Active component from service */
|
|
4033
|
-
readonly activeComponent: _angular_core.Signal<AXInfoBarActiveComponent>;
|
|
4034
|
-
/** Active banner from service */
|
|
4035
|
-
readonly activeBanner: _angular_core.Signal<AXInfoBarActiveBanner>;
|
|
4036
|
-
/** Members popover reference */
|
|
4037
|
-
readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
|
|
4038
|
-
/** Members popover target element */
|
|
4039
|
-
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
4040
|
-
/** Loading state for async actions */
|
|
4041
|
-
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
4042
|
-
/** Avatar clicked event */
|
|
4043
|
-
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
4044
|
-
/** Search clicked event */
|
|
4045
|
-
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
4046
|
-
/** Search query changed event */
|
|
4047
|
-
readonly searchQuery: _angular_core.OutputEmitterRef<string>;
|
|
4048
|
-
/** Menu item clicked event */
|
|
4049
|
-
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
4050
|
-
/** Inline action buttons from registry */
|
|
4051
|
-
readonly inlineActions: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarAction[]>;
|
|
4052
|
-
/** Dropdown menu items from registry */
|
|
4053
|
-
readonly menuItems: _angular_core.Signal<DropdownMenuItem[]>;
|
|
4054
|
-
/** Get conversation status - delegate to utils */
|
|
4055
|
-
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
4056
|
-
/** Get subtitle text - delegate to utils */
|
|
4057
|
-
getSubtitle(conversation: AXConversation): string;
|
|
4058
|
-
/** Get initials from name - delegate to utils */
|
|
4059
|
-
getInitials(name: string): string;
|
|
4060
|
-
getConversationAvatar(conversation: AXConversation): string | undefined;
|
|
4061
|
-
getConversationAvatarIcon(conversation: AXConversation): string | undefined;
|
|
4062
|
-
/** Handle avatar click */
|
|
4063
|
-
onAvatarClick(): void;
|
|
4064
|
-
/** Handle members click - open popover */
|
|
4065
|
-
onMembersClick(event: MouseEvent): void;
|
|
4066
|
-
/** Handle inline action click */
|
|
4067
|
-
onInlineActionClick(actionId: string): Promise<void>;
|
|
4068
|
-
/** Get inputs for dynamic component */
|
|
4069
|
-
getComponentInputs(): Record<string, unknown>;
|
|
4070
|
-
getInlineComponentInputs(): Record<string, unknown>;
|
|
4071
|
-
isActiveComponentFullWidth(): boolean;
|
|
4072
|
-
/** Handle close component */
|
|
4073
|
-
onCloseComponent(): void;
|
|
4074
|
-
getBannerInputs(): Record<string, unknown>;
|
|
4075
|
-
onCloseBanner(): void;
|
|
4076
|
-
/** Handle menu item click */
|
|
4077
|
-
onMenuItemClick(item: DropdownMenuItem): Promise<void>;
|
|
4078
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
|
|
4079
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
4080
|
-
}
|
|
4081
|
-
|
|
4082
3923
|
declare class AXForwardMessageDialogComponent implements OnInit {
|
|
4083
3924
|
private readonly toastService;
|
|
4084
3925
|
private readonly translation;
|
|
@@ -4126,7 +3967,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
4126
3967
|
private readonly conversationService;
|
|
4127
3968
|
private readonly messageListService;
|
|
4128
3969
|
private readonly translation;
|
|
4129
|
-
protected readonly config: Required<AXConversationConfig>;
|
|
3970
|
+
protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
|
|
4130
3971
|
/**
|
|
4131
3972
|
* Background for the message list scroll area from config, or the built-in soft gradient when unset/empty.
|
|
4132
3973
|
* Set `messageListBackground` to `transparent` or `none` for a flat look.
|
|
@@ -4158,7 +3999,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
4158
3999
|
/** Show scroll to bottom button - use service */
|
|
4159
4000
|
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
4160
4001
|
/** Active conversation */
|
|
4161
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
4002
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
4162
4003
|
/** Messages */
|
|
4163
4004
|
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
4164
4005
|
/** Message action event */
|
|
@@ -4167,7 +4008,7 @@ declare class AXMessageListComponent implements OnDestroy {
|
|
|
4167
4008
|
action: string;
|
|
4168
4009
|
}>;
|
|
4169
4010
|
/** Current user from service */
|
|
4170
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
4011
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
4171
4012
|
/** Message grouped by date - use service */
|
|
4172
4013
|
readonly messageGroups: _angular_core.Signal<{
|
|
4173
4014
|
date: string;
|
|
@@ -4324,9 +4165,9 @@ declare class AXMessageListService {
|
|
|
4324
4165
|
private readonly conversationService;
|
|
4325
4166
|
private readonly config;
|
|
4326
4167
|
private get registry();
|
|
4327
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
4168
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
4328
4169
|
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
4329
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
4170
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
4330
4171
|
/** Loading state */
|
|
4331
4172
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
4332
4173
|
/** Loading more messages state */
|
|
@@ -4402,7 +4243,7 @@ declare class AXSidebarService {
|
|
|
4402
4243
|
|
|
4403
4244
|
declare class AXSidebarComponent implements OnDestroy {
|
|
4404
4245
|
readonly sidebar: AXSidebarService;
|
|
4405
|
-
protected readonly config: Required<AXConversationConfig>;
|
|
4246
|
+
protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
|
|
4406
4247
|
private readonly conversationService;
|
|
4407
4248
|
private readonly popupService;
|
|
4408
4249
|
private readonly translation;
|
|
@@ -4499,6 +4340,165 @@ declare class AXInfiniteScrollDirective {
|
|
|
4499
4340
|
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>;
|
|
4500
4341
|
}
|
|
4501
4342
|
|
|
4343
|
+
/**
|
|
4344
|
+
* Conversation Configuration Interface
|
|
4345
|
+
* Centralized configuration values to avoid magic numbers
|
|
4346
|
+
*/
|
|
4347
|
+
/**
|
|
4348
|
+
* Main configuration interface for the conversation component
|
|
4349
|
+
*/
|
|
4350
|
+
interface AXConversationConfig {
|
|
4351
|
+
/** Number of messages to load per page */
|
|
4352
|
+
messagePageSize?: number;
|
|
4353
|
+
/** Number of conversations to load per page */
|
|
4354
|
+
conversationPageSize?: number;
|
|
4355
|
+
/** Scroll threshold for detecting scroll events */
|
|
4356
|
+
scrollThreshold?: number;
|
|
4357
|
+
/** Infinite scroll threshold */
|
|
4358
|
+
infiniteScrollThreshold?: number;
|
|
4359
|
+
/** Typing indicator timeout in milliseconds */
|
|
4360
|
+
typingIndicatorTimeout?: number;
|
|
4361
|
+
/** Typing indicator throttle in milliseconds (for rate limiting) */
|
|
4362
|
+
typingIndicatorThrottle?: number;
|
|
4363
|
+
/** Message highlight duration in milliseconds */
|
|
4364
|
+
messageHighlightDuration?: number;
|
|
4365
|
+
/** Search debounce delay in milliseconds */
|
|
4366
|
+
debounceSearch?: number;
|
|
4367
|
+
/** Date separator inactivity fade delay in milliseconds */
|
|
4368
|
+
/** Maximum messages per conversation */
|
|
4369
|
+
maxMessagesPerConversation?: number;
|
|
4370
|
+
/** Maximum total messages in store */
|
|
4371
|
+
maxTotalMessages?: number;
|
|
4372
|
+
/** Maximum cached conversations */
|
|
4373
|
+
maxCachedConversations?: number;
|
|
4374
|
+
/** Minimum sidebar width in pixels */
|
|
4375
|
+
minSidebarWidth?: number;
|
|
4376
|
+
/** Maximum sidebar width in pixels */
|
|
4377
|
+
maxSidebarWidth?: number;
|
|
4378
|
+
/** Default sidebar width in pixels */
|
|
4379
|
+
defaultSidebarWidth?: number;
|
|
4380
|
+
/** Filter cache size */
|
|
4381
|
+
filterCacheSize?: number;
|
|
4382
|
+
/** Maximum file size in bytes */
|
|
4383
|
+
maxFileSize?: number;
|
|
4384
|
+
/** Allowed file types (glob patterns like 'image/*') */
|
|
4385
|
+
allowedFileTypes?: string[];
|
|
4386
|
+
/** Maximum message length in characters */
|
|
4387
|
+
maxMessageLength?: number;
|
|
4388
|
+
/** Minimum message length in characters */
|
|
4389
|
+
minMessageLength?: number;
|
|
4390
|
+
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
4391
|
+
messageReadThreshold?: number;
|
|
4392
|
+
/**
|
|
4393
|
+
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
4394
|
+
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
4395
|
+
* Empty string = library default soft gradient. `transparent` or `none` = flat background.
|
|
4396
|
+
*/
|
|
4397
|
+
messageListBackground?: string;
|
|
4398
|
+
}
|
|
4399
|
+
|
|
4400
|
+
/**
|
|
4401
|
+
* Default Configuration Values
|
|
4402
|
+
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
4403
|
+
*/
|
|
4404
|
+
|
|
4405
|
+
/**
|
|
4406
|
+
* Default conversation configuration
|
|
4407
|
+
* All values are explicitly defined here for easy maintenance and documentation
|
|
4408
|
+
*/
|
|
4409
|
+
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
4410
|
+
/**
|
|
4411
|
+
* Helper function to merge user config with defaults
|
|
4412
|
+
* Properly handles array merging to avoid reference issues
|
|
4413
|
+
* @param userConfig - User-provided configuration
|
|
4414
|
+
* @returns Merged configuration with all required fields
|
|
4415
|
+
*/
|
|
4416
|
+
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
4417
|
+
|
|
4418
|
+
/**
|
|
4419
|
+
* Dependency Injection Tokens
|
|
4420
|
+
* InjectionTokens for configuration and dependencies
|
|
4421
|
+
*/
|
|
4422
|
+
|
|
4423
|
+
/**
|
|
4424
|
+
* Configuration token for conversation component
|
|
4425
|
+
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
4426
|
+
*/
|
|
4427
|
+
declare const CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
4428
|
+
/**
|
|
4429
|
+
* Token for configuring AXErrorHandlerService
|
|
4430
|
+
*/
|
|
4431
|
+
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
4432
|
+
|
|
4433
|
+
/**
|
|
4434
|
+
* Registry Configuration Tokens
|
|
4435
|
+
* Injection tokens for configuring default registry values
|
|
4436
|
+
*/
|
|
4437
|
+
|
|
4438
|
+
/**
|
|
4439
|
+
* Additional message renderers configuration
|
|
4440
|
+
* Provide this token to add custom message renderers in addition to built-in ones
|
|
4441
|
+
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
4442
|
+
*/
|
|
4443
|
+
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
4444
|
+
/**
|
|
4445
|
+
* Default message actions configuration
|
|
4446
|
+
* Provide this token to override default message actions
|
|
4447
|
+
*/
|
|
4448
|
+
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
4449
|
+
/**
|
|
4450
|
+
* Default composer tabs configuration
|
|
4451
|
+
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
4452
|
+
*/
|
|
4453
|
+
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
4454
|
+
/**
|
|
4455
|
+
* Default composer actions configuration
|
|
4456
|
+
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
4457
|
+
*/
|
|
4458
|
+
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
4459
|
+
/**
|
|
4460
|
+
* Default conversation tabs configuration
|
|
4461
|
+
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
4462
|
+
*/
|
|
4463
|
+
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
4464
|
+
/**
|
|
4465
|
+
* Default info bar actions configuration
|
|
4466
|
+
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
4467
|
+
*/
|
|
4468
|
+
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
4469
|
+
/**
|
|
4470
|
+
* Default conversation item actions configuration
|
|
4471
|
+
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
4472
|
+
*/
|
|
4473
|
+
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
4474
|
+
/**
|
|
4475
|
+
* Registry configuration interface
|
|
4476
|
+
*/
|
|
4477
|
+
interface AXRegistryConfiguration {
|
|
4478
|
+
/**
|
|
4479
|
+
* Additional message renderers to register (built-in renderers are automatic).
|
|
4480
|
+
* Each {@link AXMessageRenderer} may include optional `composerActions` for co-located send UX.
|
|
4481
|
+
*/
|
|
4482
|
+
messageRenderers?: AXMessageRenderer[];
|
|
4483
|
+
/** Message actions to register by default */
|
|
4484
|
+
messageActions?: AXMessageAction[];
|
|
4485
|
+
/** Composer tabs to register by default */
|
|
4486
|
+
composerTabs?: AXComposerTab[];
|
|
4487
|
+
/** Composer actions to register by default */
|
|
4488
|
+
composerActions?: AXComposerAction[];
|
|
4489
|
+
/** Conversation tabs to register by default */
|
|
4490
|
+
conversationTabs?: AXConversationTab[];
|
|
4491
|
+
/** Info bar actions to register by default */
|
|
4492
|
+
infoBarActions?: AXInfoBarAction[];
|
|
4493
|
+
/** Conversation item actions to register by default */
|
|
4494
|
+
conversationItemActions?: AXConversationItemAction[];
|
|
4495
|
+
}
|
|
4496
|
+
/**
|
|
4497
|
+
* Complete registry configuration token
|
|
4498
|
+
* Provide this for comprehensive registry configuration
|
|
4499
|
+
*/
|
|
4500
|
+
declare const REGISTRY_CONFIG: InjectionToken<AXRegistryConfiguration>;
|
|
4501
|
+
|
|
4502
4502
|
/**
|
|
4503
4503
|
* IndexedDB Storage Wrapper
|
|
4504
4504
|
* Provides persistent storage for conversation data
|
|
@@ -5229,7 +5229,7 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5229
5229
|
value: string;
|
|
5230
5230
|
}>;
|
|
5231
5231
|
/** Get filtered members based on search */
|
|
5232
|
-
get filteredMembers(): AXParticipant[];
|
|
5232
|
+
get filteredMembers(): _acorex_components_conversation2.AXParticipant[];
|
|
5233
5233
|
/** Handle tab change */
|
|
5234
5234
|
onTabChange(event: any): void;
|
|
5235
5235
|
ngOnInit(): void;
|
|
@@ -5285,7 +5285,7 @@ declare class AXInfoBarSearchComponent {
|
|
|
5285
5285
|
/** Current index from service */
|
|
5286
5286
|
readonly currentIndex: _angular_core.Signal<number>;
|
|
5287
5287
|
/** Messages from conversation */
|
|
5288
|
-
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
5288
|
+
readonly messages: _angular_core.Signal<_acorex_components_conversation2.AXMessage[]>;
|
|
5289
5289
|
private scrollTimer?;
|
|
5290
5290
|
constructor();
|
|
5291
5291
|
/** Handle search input change */
|
|
@@ -5385,7 +5385,7 @@ declare class AXAudioRendererComponent implements AXMessageRendererComponent {
|
|
|
5385
5385
|
private readonly _contentState;
|
|
5386
5386
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5387
5387
|
readonly rendererState: _angular_core.Signal<{
|
|
5388
|
-
deliveryStatus: AXMessageStatus;
|
|
5388
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5389
5389
|
contentState: AXMessageRendererContentState;
|
|
5390
5390
|
}>;
|
|
5391
5391
|
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|
|
@@ -5428,7 +5428,7 @@ declare class AXFallbackRendererComponent implements AXMessageRendererComponent
|
|
|
5428
5428
|
private readonly _contentState;
|
|
5429
5429
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5430
5430
|
readonly rendererState: _angular_core.Signal<{
|
|
5431
|
-
deliveryStatus: AXMessageStatus;
|
|
5431
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5432
5432
|
contentState: AXMessageRendererContentState;
|
|
5433
5433
|
}>;
|
|
5434
5434
|
readonly messageTypeLabel: _angular_core.Signal<string>;
|
|
@@ -5442,7 +5442,7 @@ declare class AXFileRendererComponent implements AXMessageRendererComponent {
|
|
|
5442
5442
|
private readonly _contentState;
|
|
5443
5443
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5444
5444
|
readonly rendererState: _angular_core.Signal<{
|
|
5445
|
-
deliveryStatus: AXMessageStatus;
|
|
5445
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5446
5446
|
contentState: AXMessageRendererContentState;
|
|
5447
5447
|
}>;
|
|
5448
5448
|
readonly payload: _angular_core.Signal<AXFilePayload>;
|
|
@@ -5462,7 +5462,7 @@ declare class AXImageRendererComponent implements AXMessageRendererComponent {
|
|
|
5462
5462
|
private readonly _contentState;
|
|
5463
5463
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5464
5464
|
readonly rendererState: _angular_core.Signal<{
|
|
5465
|
-
deliveryStatus: AXMessageStatus;
|
|
5465
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5466
5466
|
contentState: AXMessageRendererContentState;
|
|
5467
5467
|
}>;
|
|
5468
5468
|
readonly imageClick: _angular_core.OutputEmitterRef<string>;
|
|
@@ -5482,7 +5482,7 @@ declare class AXLocationRendererComponent implements AXMessageRendererComponent
|
|
|
5482
5482
|
private readonly _contentState;
|
|
5483
5483
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5484
5484
|
readonly rendererState: _angular_core.Signal<{
|
|
5485
|
-
deliveryStatus: AXMessageStatus;
|
|
5485
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5486
5486
|
contentState: AXMessageRendererContentState;
|
|
5487
5487
|
}>;
|
|
5488
5488
|
readonly payload: _angular_core.Signal<AXLocationPayload>;
|
|
@@ -5507,7 +5507,7 @@ declare class AXStickerRendererComponent implements AXMessageRendererComponent {
|
|
|
5507
5507
|
private readonly _contentState;
|
|
5508
5508
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5509
5509
|
readonly rendererState: _angular_core.Signal<{
|
|
5510
|
-
deliveryStatus: AXMessageStatus;
|
|
5510
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5511
5511
|
contentState: AXMessageRendererContentState;
|
|
5512
5512
|
}>;
|
|
5513
5513
|
readonly payload: _angular_core.Signal<AXStickerPayload>;
|
|
@@ -5524,7 +5524,7 @@ declare class AXSystemRendererComponent implements AXMessageRendererComponent {
|
|
|
5524
5524
|
private readonly _contentState;
|
|
5525
5525
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5526
5526
|
readonly rendererState: _angular_core.Signal<{
|
|
5527
|
-
deliveryStatus: AXMessageStatus;
|
|
5527
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5528
5528
|
contentState: AXMessageRendererContentState;
|
|
5529
5529
|
}>;
|
|
5530
5530
|
readonly payload: _angular_core.Signal<AXSystemPayload>;
|
|
@@ -5539,7 +5539,7 @@ declare class AXTextRendererComponent implements AXMessageRendererComponent {
|
|
|
5539
5539
|
private readonly _contentState;
|
|
5540
5540
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5541
5541
|
readonly rendererState: _angular_core.Signal<{
|
|
5542
|
-
deliveryStatus: AXMessageStatus;
|
|
5542
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5543
5543
|
contentState: AXMessageRendererContentState;
|
|
5544
5544
|
}>;
|
|
5545
5545
|
readonly searchQuery: _angular_core.Signal<string>;
|
|
@@ -5561,7 +5561,7 @@ declare class AXVideoRendererComponent implements AXMessageRendererComponent {
|
|
|
5561
5561
|
private readonly _contentState;
|
|
5562
5562
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5563
5563
|
readonly rendererState: _angular_core.Signal<{
|
|
5564
|
-
deliveryStatus: AXMessageStatus;
|
|
5564
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5565
5565
|
contentState: AXMessageRendererContentState;
|
|
5566
5566
|
}>;
|
|
5567
5567
|
readonly showPlayer: _angular_core.WritableSignal<boolean>;
|
|
@@ -5613,7 +5613,7 @@ declare class AXVoiceRendererComponent implements AXMessageRendererComponent {
|
|
|
5613
5613
|
private readonly _contentState;
|
|
5614
5614
|
readonly message: _angular_core.InputSignal<AXMessage>;
|
|
5615
5615
|
readonly rendererState: _angular_core.Signal<{
|
|
5616
|
-
deliveryStatus: AXMessageStatus;
|
|
5616
|
+
deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
|
|
5617
5617
|
contentState: AXMessageRendererContentState;
|
|
5618
5618
|
}>;
|
|
5619
5619
|
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|