@acorex-platform/module-conversation-client 0.0.57 → 0.0.59

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.
Files changed (28) hide show
  1. package/fesm2022/{acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BTmQeViz.mjs → acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-1tv00m7Y.mjs} +226 -165
  2. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-1tv00m7Y.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-BNk7zaP4.mjs → acorex-platform-module-conversation-client-after-message-sent.command-e_3t71gw.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-BNk7zaP4.mjs.map → acorex-platform-module-conversation-client-after-message-sent.command-e_3t71gw.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-LKjjSJ5L.mjs → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BmfLuUaU.mjs} +3 -3
  6. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-LKjjSJ5L.mjs.map → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BmfLuUaU.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-conversation-client-assist-message-renderer.component-B3j1g0zP.mjs → acorex-platform-module-conversation-client-assist-message-renderer.component-jsHo7NZq.mjs} +40 -27
  8. package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-jsHo7NZq.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-BRlpKAUb.mjs → acorex-platform-module-conversation-client-chat-call-session-page.component-ePQikBd2.mjs} +3 -3
  10. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-BRlpKAUb.mjs.map → acorex-platform-module-conversation-client-chat-call-session-page.component-ePQikBd2.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-CS3wAOf9.mjs → acorex-platform-module-conversation-client-chat-call-start-popup.component-ooiJkC8U.mjs} +6 -2
  12. package/fesm2022/acorex-platform-module-conversation-client-chat-call-start-popup.component-ooiJkC8U.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-BDHn6lsM.mjs → acorex-platform-module-conversation-client-comments-page.component-BW_XRzT6.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-BDHn6lsM.mjs.map → acorex-platform-module-conversation-client-comments-page.component-BW_XRzT6.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-BL336_ps.mjs → acorex-platform-module-conversation-client-mark-conversation-unread.command-Cdd6Cxkf.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-BL336_ps.mjs.map → acorex-platform-module-conversation-client-mark-conversation-unread.command-Cdd6Cxkf.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-BrDiRNsa.mjs → acorex-platform-module-conversation-client-open-chat.command-TfSLQn3K.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-BrDiRNsa.mjs.map → acorex-platform-module-conversation-client-open-chat.command-TfSLQn3K.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-DMW93mNL.mjs → acorex-platform-module-conversation-client-retry-assist-response.command-CC0jPXGP.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-DMW93mNL.mjs.map → acorex-platform-module-conversation-client-retry-assist-response.command-CC0jPXGP.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-Bz_jgHiS.mjs → acorex-platform-module-conversation-client-sync-read-state.command-BUtdyniC.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-Bz_jgHiS.mjs.map → acorex-platform-module-conversation-client-sync-read-state.command-BUtdyniC.mjs.map} +1 -1
  23. package/fesm2022/acorex-platform-module-conversation-client.mjs +1 -1
  24. package/package.json +2 -2
  25. package/types/acorex-platform-module-conversation-client.d.ts +4 -0
  26. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BTmQeViz.mjs.map +0 -1
  27. package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-B3j1g0zP.mjs.map +0 -1
  28. package/fesm2022/acorex-platform-module-conversation-client-chat-call-start-popup.component-CS3wAOf9.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
2
2
  import { AXPFilterOperatorMiddlewareService, AXPSearchCommandProvider, createEntityCommandOptions, AXP_PROTECTED_ROUTE_GUARDS, AXPBackgroundOperationHandler, AXP_BACKGROUND_OPERATION_HANDLERS, AXPSettingsService, AXPCommonSettings, AXP_IN_APP_NOTIFICATION_SERVICE, AXPFileStorageService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
3
- import { AXPEntityBroadcastService, AXPTagService, AXPPageContextRegistry, AXPDeviceService, provideAppStartUpTask, AXP_APP_STARTUP_PRIORITY, AXP_HOOK_PROVIDER } from '@acorex-platform/framework-client/core';
3
+ import { AXPEntityBroadcastService, AXPTagService, AXPPageContextRegistry, AXPDialogOpener, AXPDeviceService, provideAppStartUpTask, AXP_APP_STARTUP_PRIORITY, AXP_HOOK_PROVIDER } from '@acorex-platform/framework-client/core';
4
4
  import { USER_CARD_ITEMS_HOOK, AXPTaskBadgeProvider, AXPFileViewerService, AXPUserAvatarService, AXPUserAvatarComponent, AXPUserCardDirective, mergeInfiniteScrollPage, AXPThemeLayoutBlockComponent, AXPInfiniteScrollDirective, AXPStateMessageComponent, AXPAvatarComponent, AXPMarkdownViewerComponent, AXPTaskBadgeService, AXPThemeLayoutStartSideComponent, AXP_PAGE_COMPONENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS } from '@acorex-platform/framework-client/layout/components';
5
5
  import { AXPEntityService, AXPFileListComponent, AXPEntityDefinitionRegistryService, cloneLayoutArrays, ensureLayoutSection, ensureLayoutPropertyView, resolveEntityPluginDetailPageOrder, ensureListActions, actionExists, AXP_ENTITY_ACTION_PLUGIN } from '@acorex-platform/framework-client/layout/entity';
6
6
  import { AXPQueryService, AXPCommandEventsService, AXPCommandService, provideCommandSetups } from '@acorex-platform/framework-client/runtime';
@@ -7598,16 +7598,20 @@ async function axmOpenChatConversationInfoPanelDialog(options) {
7598
7598
  return;
7599
7599
  }
7600
7600
  const popupService = options.popupService ?? inject(AXPopupService);
7601
+ const dialogOpener = options.dialogOpener ?? inject(AXPDialogOpener);
7601
7602
  const conversationService = options.conversationService ?? inject(AXConversationService);
7602
- const comp = (await import('./acorex-platform-module-conversation-client-chat-conversation-info-panel.component-bwT1-lAn.mjs')).AXMChatConversationInfoPanelComponent;
7603
- await popupService.open(comp, {
7604
- title: conversation.title,
7605
- closeButton: true,
7606
- size: 'sm',
7607
- data: {
7608
- conversation,
7609
- conversationService,
7610
- },
7603
+ await dialogOpener.openPopup({
7604
+ load: () => import('./acorex-platform-module-conversation-client-chat-conversation-info-panel.component-bwT1-lAn.mjs').then((module) => module.AXMChatConversationInfoPanelComponent),
7605
+ data: { conversationId: conversation.id },
7606
+ show: (component) => popupService.open(component, {
7607
+ title: conversation.title,
7608
+ closeButton: true,
7609
+ size: 'sm',
7610
+ data: {
7611
+ conversation,
7612
+ conversationService,
7613
+ },
7614
+ }),
7611
7615
  });
7612
7616
  }
7613
7617
  //#endregion
@@ -7731,6 +7735,7 @@ class AXMMiniChatComponent {
7731
7735
  //#region ---- Services & Dependencies ----
7732
7736
  this.conversationService = inject(AXConversationService);
7733
7737
  this.popupService = inject(AXPopupService);
7738
+ this.dialogOpener = inject(AXPDialogOpener);
7734
7739
  this.conversationApi = inject(AXMChatConversationApi);
7735
7740
  this.assistResponse = inject(AXM_CONVERSATION_ASSIST_RESPONSE_PORT, { optional: true });
7736
7741
  this.destroyRef = inject(DestroyRef);
@@ -7814,6 +7819,7 @@ class AXMMiniChatComponent {
7814
7819
  void axmOpenChatConversationInfoPanelDialog({
7815
7820
  conversation,
7816
7821
  popupService: this.popupService,
7822
+ dialogOpener: this.dialogOpener,
7817
7823
  conversationService: this.conversationService,
7818
7824
  });
7819
7825
  }
@@ -8395,6 +8401,7 @@ class AXMMiniChatPanelService {
8395
8401
  constructor() {
8396
8402
  //#region ---- Services & Dependencies ----
8397
8403
  this.popupService = inject(AXPopupService);
8404
+ this.dialogOpener = inject(AXPDialogOpener);
8398
8405
  this.settingsService = inject(AXPSettingsService);
8399
8406
  this.document = inject(DOCUMENT);
8400
8407
  this.translation = inject(AXTranslationService);
@@ -8480,104 +8487,113 @@ class AXMMiniChatPanelService {
8480
8487
  this.windowApi.show();
8481
8488
  return;
8482
8489
  }
8483
- await this.ensurePopupFrameLoaded();
8484
- this.abandonOpenWindow();
8485
- this.activeOpenOptions = options;
8486
- this.boundRouteKey = axmMiniChatPathKey(this.router.url);
8487
- this.activePageKey = this.currentPageChatKey();
8488
- const generation = this.windowGeneration;
8489
- const retainOnClose = options.retainOnClose === true;
8490
- this.retainOnClose = retainOnClose;
8491
- this.retainedHidden = false;
8492
- this.retainedSessionKey = retainOnClose ? entityKey : null;
8493
- this.captureFocusedConversation();
8494
- this.captureActiveConversation();
8495
- const session = this.sessions.get(entityKey);
8496
- const samePage = session?.pageKey === this.activePageKey;
8497
- const restoreSession = Boolean(session?.hasOpened) && !options.forceNewChat && samePage;
8498
- const startWithNewChat = !restoreSession;
8499
- const initialView = restoreSession ? session.view : 'thread';
8500
- const initialConversationId = restoreSession ? session.selectedChatId : undefined;
8501
- const onSessionChange = (state) => {
8502
- this.sessions.set(entityKey, {
8503
- view: state.view,
8504
- selectedChatId: state.selectedChatId,
8505
- hasOpened: true,
8506
- pageKey: this.activePageKey,
8507
- });
8508
- };
8509
- const data = {
8510
- scope,
8511
- entityId: options.entityId,
8512
- entityType: options.entityType,
8513
- assistId: options.assistId,
8514
- assistSelection: options.assistSelection ?? 'optional',
8515
- panelTitle: options.title,
8516
- showInfoBar: options.showInfoBar ?? false,
8517
- showComposer: options.showComposer ?? true,
8518
- initialView,
8519
- initialConversationId,
8520
- startWithNewChat,
8521
- launchContext: options.launchContext ? axmSanitizeContextualAssistContext(options.launchContext) : undefined,
8522
- minimizable: options.minimizable !== false,
8523
- retainOnClose,
8524
- onSessionChange,
8525
- onVisibilityChange: (visible) => {
8526
- if (!this.retainOnClose || generation !== this.windowGeneration) {
8527
- return;
8490
+ await this.dialogOpener.run({
8491
+ load: () => Promise.resolve(AXMMiniChatPopupWindowComponent),
8492
+ data: { window: 'mini-chat', entityKey },
8493
+ present: async (notifyShown, component) => {
8494
+ await this.ensurePopupFrameLoaded();
8495
+ this.abandonOpenWindow();
8496
+ this.activeOpenOptions = options;
8497
+ this.boundRouteKey = axmMiniChatPathKey(this.router.url);
8498
+ this.activePageKey = this.currentPageChatKey();
8499
+ try {
8500
+ const generation = this.windowGeneration;
8501
+ const retainOnClose = options.retainOnClose === true;
8502
+ this.retainOnClose = retainOnClose;
8503
+ this.retainedHidden = false;
8504
+ this.retainedSessionKey = retainOnClose ? entityKey : null;
8505
+ this.captureFocusedConversation();
8506
+ this.captureActiveConversation();
8507
+ const session = this.sessions.get(entityKey);
8508
+ const samePage = session?.pageKey === this.activePageKey;
8509
+ const restoreSession = Boolean(session?.hasOpened) && !options.forceNewChat && samePage;
8510
+ const startWithNewChat = !restoreSession;
8511
+ const initialView = restoreSession ? session.view : 'thread';
8512
+ const initialConversationId = restoreSession ? session.selectedChatId : undefined;
8513
+ const onSessionChange = (state) => {
8514
+ this.sessions.set(entityKey, {
8515
+ view: state.view,
8516
+ selectedChatId: state.selectedChatId,
8517
+ hasOpened: true,
8518
+ pageKey: this.activePageKey,
8519
+ });
8520
+ };
8521
+ const data = {
8522
+ scope,
8523
+ entityId: options.entityId,
8524
+ entityType: options.entityType,
8525
+ assistId: options.assistId,
8526
+ assistSelection: options.assistSelection ?? 'optional',
8527
+ panelTitle: options.title,
8528
+ showInfoBar: options.showInfoBar ?? false,
8529
+ showComposer: options.showComposer ?? true,
8530
+ initialView,
8531
+ initialConversationId,
8532
+ startWithNewChat,
8533
+ launchContext: options.launchContext ? axmSanitizeContextualAssistContext(options.launchContext) : undefined,
8534
+ minimizable: options.minimizable !== false,
8535
+ retainOnClose,
8536
+ onSessionChange,
8537
+ onVisibilityChange: (visible) => {
8538
+ if (!this.retainOnClose || generation !== this.windowGeneration) {
8539
+ return;
8540
+ }
8541
+ this.retainedHidden = !visible;
8542
+ },
8543
+ registerWindow: (api) => {
8544
+ this.windowApi = api;
8545
+ },
8546
+ };
8547
+ const title = await this.resolveWindowTitle(options.title);
8548
+ const closed = this.popupService.open(component, {
8549
+ header: false,
8550
+ footer: false,
8551
+ draggable: true,
8552
+ hasBackdrop: false,
8553
+ closeButton: false,
8554
+ closeOnBackdropClick: false,
8555
+ closeOnEscape: true,
8556
+ size: 'sm',
8557
+ title,
8558
+ panelClass: ['axm-mini-chat-popup'],
8559
+ resizable: {
8560
+ handles: ['top-end', 'bottom-end', 'top-start', 'bottom-start'],
8561
+ minWidth: 320,
8562
+ minHeight: 280,
8563
+ },
8564
+ buttons: {
8565
+ close: false,
8566
+ maximize: true,
8567
+ minimize: {
8568
+ enable: options.minimizable !== false,
8569
+ position: 'bottom-right',
8570
+ dock: AXM_MINI_CHAT_POPUP_DOCK,
8571
+ },
8572
+ },
8573
+ data,
8574
+ });
8575
+ notifyShown();
8576
+ this.closePromise = closed;
8577
+ this.panelOpen.set(true);
8578
+ this.watchAnchorPlacement(options, generation);
8579
+ void closed.finally(() => {
8580
+ if (generation !== this.windowGeneration) {
8581
+ return;
8582
+ }
8583
+ this.closePromise = null;
8584
+ this.windowApi = null;
8585
+ this.finishWindowClose();
8586
+ });
8587
+ return closed;
8528
8588
  }
8529
- this.retainedHidden = !visible;
8530
- },
8531
- registerWindow: (api) => {
8532
- this.windowApi = api;
8533
- },
8534
- };
8535
- const title = await this.resolveWindowTitle(options.title);
8536
- try {
8537
- const closed = this.popupService.open(AXMMiniChatPopupWindowComponent, {
8538
- header: false,
8539
- footer: false,
8540
- draggable: true,
8541
- hasBackdrop: false,
8542
- closeButton: false,
8543
- closeOnBackdropClick: false,
8544
- closeOnEscape: true,
8545
- size: 'sm',
8546
- title,
8547
- panelClass: ['axm-mini-chat-popup'],
8548
- resizable: {
8549
- handles: ['top-end', 'bottom-end', 'top-start', 'bottom-start'],
8550
- minWidth: 320,
8551
- minHeight: 280,
8552
- },
8553
- buttons: {
8554
- close: false,
8555
- maximize: true,
8556
- minimize: {
8557
- enable: options.minimizable !== false,
8558
- position: 'bottom-right',
8559
- dock: AXM_MINI_CHAT_POPUP_DOCK,
8560
- },
8561
- },
8562
- data,
8563
- });
8564
- this.closePromise = closed;
8565
- this.panelOpen.set(true);
8566
- this.watchAnchorPlacement(options, generation);
8567
- void closed.finally(() => {
8568
- if (generation !== this.windowGeneration) {
8569
- return;
8589
+ catch (error) {
8590
+ this.windowApi = null;
8591
+ this.closePromise = null;
8592
+ this.finishWindowClose();
8593
+ throw error;
8570
8594
  }
8571
- this.closePromise = null;
8572
- this.windowApi = null;
8573
- this.finishWindowClose();
8574
- });
8575
- }
8576
- catch {
8577
- this.windowApi = null;
8578
- this.closePromise = null;
8579
- this.finishWindowClose();
8580
- }
8595
+ },
8596
+ });
8581
8597
  }
8582
8598
  //#endregion
8583
8599
  //#region ---- Utility Methods ----
@@ -8968,6 +8984,7 @@ const AXM_CHAT_SIDEBAR_ACTION_PROVIDER = new InjectionToken('AXM_CHAT_SIDEBAR_AC
8968
8984
  class AXMChatSidebarNewActionsComponent {
8969
8985
  constructor() {
8970
8986
  this.popupService = inject(AXPopupService);
8987
+ this.dialogOpener = inject(AXPDialogOpener);
8971
8988
  this.conversationService = inject(AXConversationService);
8972
8989
  this.translationService = inject(AXTranslationService);
8973
8990
  this.contributedActions = inject(AXM_CHAT_SIDEBAR_ACTION_PROVIDER, { optional: true }) ?? [];
@@ -9004,14 +9021,20 @@ class AXMChatSidebarNewActionsComponent {
9004
9021
  }
9005
9022
  async openNewConversation(event) {
9006
9023
  event?.nativeEvent?.stopPropagation();
9007
- const title = await this.translationService.translateAsync('@conversation:new-conversation.header');
9008
- const result = await this.popupService.open(AXConversationNewDialogComponent, {
9009
- title,
9010
- size: 'sm',
9011
- closeButton: true,
9012
- data: {
9013
- conversationService: this.conversationService,
9024
+ let title = '';
9025
+ const result = await this.dialogOpener.openPopup({
9026
+ load: () => Promise.resolve(AXConversationNewDialogComponent),
9027
+ prepare: async () => {
9028
+ title = await this.translationService.translateAsync('@conversation:new-conversation.header');
9014
9029
  },
9030
+ show: (component) => this.popupService.open(component, {
9031
+ title,
9032
+ size: 'sm',
9033
+ closeButton: true,
9034
+ data: {
9035
+ conversationService: this.conversationService,
9036
+ },
9037
+ }),
9015
9038
  });
9016
9039
  if (result?.data) {
9017
9040
  return result.data;
@@ -9102,6 +9125,7 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
9102
9125
  //#region ---- Services & Dependencies ----
9103
9126
  this.conversationService = inject(AXConversationService);
9104
9127
  this.popupService = inject(AXPopupService);
9128
+ this.dialogOpener = inject(AXPDialogOpener);
9105
9129
  this.chatConversationApi = inject(AXMChatConversationApi);
9106
9130
  this.assistResponse = inject(AXM_CONVERSATION_ASSIST_RESPONSE_PORT, { optional: true });
9107
9131
  this.miniChatPanelService = inject(AXMMiniChatPanelService);
@@ -9256,6 +9280,7 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
9256
9280
  void axmOpenChatConversationInfoPanelDialog({
9257
9281
  conversation,
9258
9282
  popupService: this.popupService,
9283
+ dialogOpener: this.dialogOpener,
9259
9284
  conversationService: this.conversationService,
9260
9285
  });
9261
9286
  }
@@ -12817,7 +12842,7 @@ class AXMCommentComponent {
12817
12842
  return axmExtractTextFromPayload(comment.payload);
12818
12843
  }
12819
12844
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12820
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMCommentComponent, isStandalone: true, selector: "axm-comment", inputs: { refrenceType: { classPropertyName: "refrenceType", publicName: "refrenceType", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: "refrenceId", publicName: "refrenceId", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editorRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-comment size-full flex flex-col overflow-hidden\">\n <div class=\"axm-comment__list flex-1 min-h-0 overflow-y-auto\">\n <ax-comment-container>\n @if (isLoading()) {\n <div class=\"axm-comment__skeleton\">\n <ax-skeleton class=\"size-10 shrink-0 rounded-full\"></ax-skeleton>\n <div class=\"axm-comment__skeleton-body\">\n <ax-skeleton class=\"h-4 w-32 rounded\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-full rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-11/12 rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-4/5 rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (comments().length > 0) {\n <ax-comment-view class=\"axm-comment__view\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item\n [id]=\"comment.id!\"\n [replyCount]=\"comment.replyCount\"\n [repliesExpanded]=\"isRepliesExpanded(comment.id!)\"\n (repliesExpandedChange)=\"\n onRepliesExpandedChange(comment.id!, $event)\n \"\n [class.highlighted]=\"highlightedCommentId() === comment.id\"\n [@fadeIn]\n >\n <axp-user-avatar\n #user\n [size]=\"36\"\n [userId]=\"comment.senderId\"\n [axpUserCard]=\"comment.senderId\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title class=\"axm-comment__author\" [axpUserCard]=\"comment.senderId\">{{\n user.title()\n }}</ax-title>\n <ax-comment-date class=\"axm-comment__date\">\n {{ comment.timestamp | format: 'timeleft' | async }}\n </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button\n class=\"axm-comment__menu-btn ax-sm\"\n look=\"blank\"\n color=\"neutral\"\n >\n <ax-icon icon=\"fa-regular fa-ellipsis\"></ax-icon>\n </ax-button>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.edit.title'\n | translate\n | async) ?? ''\n \"\n color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.title())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.delete.title'\n | translate\n | async) ?? ''\n \"\n color=\"danger\"\n (click)=\"deleteComment(comment.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content\n [innerHTML]=\"sanitizeHtml(getCommentText(comment))\"\n ></ax-content>\n <ax-comment-like\n (click)=\"toggleLike(comment)\"\n [like]=\"isLikedByUser(comment)\"\n >\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.title())\"\n ></ax-comment-reply-text>\n\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item\n [id]=\"reply.id\"\n [class.highlighted]=\"highlightedCommentId() === reply.id\"\n [@fadeIn]\n >\n <axp-user-avatar\n #replyUser\n [size]=\"36\"\n [userId]=\"reply.senderId\"\n [axpUserCard]=\"reply.senderId\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title class=\"axm-comment__author\" [axpUserCard]=\"reply.senderId\">{{\n replyUser.title()\n }}</ax-title>\n <ax-comment-date class=\"axm-comment__date\">\n {{ reply.timestamp | format: 'timeleft' | async }}\n </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button\n class=\"axm-comment__menu-btn ax-sm\"\n look=\"blank\"\n color=\"neutral\"\n >\n <ax-icon icon=\"fa-regular fa-ellipsis\"></ax-icon>\n </ax-button>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.edit.title'\n | translate\n | async) ?? ''\n \"\n color=\"neutral\"\n (click)=\"\n editMessage(comment, reply, replyUser.title())\n \"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.delete.title'\n | translate\n | async) ?? ''\n \"\n color=\"danger\"\n (click)=\"deleteComment(reply.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content\n [innerHTML]=\"sanitizeHtml(getCommentText(reply))\"\n ></ax-content>\n <ax-comment-like\n (click)=\"toggleLike(reply)\"\n [like]=\"isLikedByUser(reply)\"\n >\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, replyUser.title())\"\n ></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n }\n <!-- ----- Empty state when no comments exist ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-comments\"\n [title]=\"\n '@conversation:comments.components.comment.empty-states.no-comments.title'\n \"\n [description]=\"\n '@conversation:comments.components.comment.empty-states.no-comments.description'\n \"\n >\n </axp-state-message>\n }\n </ax-comment-container>\n </div>\n\n <div class=\"axm-comment__composer\">\n @if (isReplyingMode() || isEditingMode()) {\n <div class=\"axm-comment__context\">\n <button\n type=\"button\"\n class=\"axm-comment__context-main\"\n (click)=\"scrollMain()\"\n >\n <i\n class=\"fa-light axm-comment__context-icon\"\n [class.fa-reply]=\"isReplyingMode()\"\n [class.fa-pen]=\"isEditingMode()\"\n ></i>\n <div class=\"axm-comment__context-copy\">\n <p class=\"axm-comment__context-label\">\n @if (isReplyingMode()) {\n {{\n '@conversation:comments.actions.reply-to' | translate | async\n }}\n <span>{{ activeReplyComment()?.userName }}</span>\n } @else {\n {{\n '@conversation:comments.actions.edit-message'\n | translate\n | async\n }}\n }\n </p>\n <div\n class=\"axm-comment__context-preview\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(getCommentText(activeReplyComment()!))\n : sanitizeHtml(getCommentText(activeEditComment()!))\n \"\n ></div>\n </div>\n </button>\n <button\n type=\"button\"\n class=\"axm-comment__context-close\"\n (click)=\"resetReplyEditState()\"\n [attr.aria-label]=\"\n ('@conversation:comments.actions.cancel.title'\n | translate\n | async) ?? 'Cancel'\n \"\n >\n <i class=\"fa-light fa-xmark\"></i>\n </button>\n </div>\n }\n\n <div class=\"axm-comment__editor\">\n <ax-text-editor\n #editorRef\n outputFormat=\"html\"\n [look]=\"editorOptions().look\"\n [(ngModel)]=\"commentContent\"\n >\n <ax-text-editor-content class=\"min-h-24\"></ax-text-editor-content>\n <ax-text-editor-toolbar>\n <ax-prefix>\n <ax-text-editor-history></ax-text-editor-history>\n <ax-text-editor-font-style></ax-text-editor-font-style>\n <ax-text-editor-colors></ax-text-editor-colors>\n <ax-text-editor-list></ax-text-editor-list>\n <ax-text-editor-alignment></ax-text-editor-alignment>\n </ax-prefix>\n </ax-text-editor-toolbar>\n </ax-text-editor>\n <!-- ----- Send sits under the editor, aligned to the inline end ----- -->\n <div class=\"axm-comment__editor-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n [disabled]=\"hasCooldown() || !commentContent()\"\n (click)=\"submitComment()\"\n [text]=\"\n '@conversation:comments.actions.send.title' | translate | async\n \"\n >\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;:host{display:block;height:100%;min-height:0px;width:100%}.axm-comment{min-height:0px;height:calc(100vh - 210px);background-color:rgb(var(--ax-sys-color-lightest-surface))}.axm-comment .axm-comment__list{min-height:0px}.axm-comment .axm-comment__skeleton{display:flex;align-items:flex-start;gap:.875rem;padding:1.25rem 1.25rem 1.5rem}.axm-comment .axm-comment__skeleton-body{display:flex;min-width:0px;flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-comment .axm-comment__composer{flex-shrink:0;background-color:rgb(var(--ax-sys-color-surface-surface))}.axm-comment .axm-comment__context{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);padding:.625rem .75rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-bottom:none;border-inline-start:3px solid rgb(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.35);font-size:.8125rem;line-height:1.4}.axm-comment .axm-comment__context-main{display:flex;min-width:0px;flex:1;cursor:pointer;align-items:center;gap:.625rem}.axm-comment .axm-comment__context-icon{flex-shrink:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgb(var(--ax-sys-color-primary-surface))}.axm-comment .axm-comment__context-copy{display:flex;min-width:0px;flex-direction:column;gap:.125rem}.axm-comment .axm-comment__context-label{margin:0;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-primary-surface))}.axm-comment .axm-comment__context-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;color:rgb(var(--ax-sys-color-neutral-600-surface, 107 114 128))}.axm-comment .axm-comment__context-close{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md, .375rem);--tw-border-style: none;border-style:none;padding:.25rem;background:transparent;color:rgb(var(--ax-sys-color-neutral-500-surface, 107 114 128));font-size:1rem;line-height:1}.axm-comment .axm-comment__context-close:hover{background-color:rgba(var(--ax-sys-color-neutral-100-surface, 243 244 246),.8)}.axm-comment .axm-comment__editor{overflow:hidden;border:1px solid rgb(var(--ax-sys-color-border-light-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));box-shadow:0 1px 2px #0f172a0a}.axm-comment .axm-comment__editor-actions{display:flex;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid rgb(var(--ax-sys-color-border-light-surface))}.axm-comment .axm-comment__author{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-comment .axm-comment__date{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgb(var(--ax-sys-color-neutral-500-surface, 107 114 128))}.axm-comment .axm-comment__menu-btn{opacity:0;transition:opacity .15s ease}ax-comment-item{border-radius:.75rem;transition:background-color .2s ease}ax-comment-item:hover{background-color:rgba(var(--ax-sys-color-neutral-100-surface, 243 244 246),.45)}ax-comment-item:hover .axm-comment__menu-btn{opacity:1}ax-comment-item.highlighted{animation:axm-comment-highlight 2.5s cubic-bezier(.4,0,.2,1) forwards}ax-text-editor{flex-shrink:0}ax-text-editor .ax-editor-container{border:none!important;border-radius:0!important;box-shadow:none!important}ax-text-editor .ax-error-message{padding-inline-start:.75rem}@keyframes axm-comment-highlight{0%{background-color:transparent;box-shadow:inset 3px 0 0 0 transparent}10%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5);box-shadow:inset 3px 0 rgb(var(--ax-sys-color-primary-surface))}35%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.3);box-shadow:inset 3px 0 rgba(var(--ax-sys-color-primary-lighter-surface),.8)}60%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.4);box-shadow:inset 3px 0 rgba(var(--ax-sys-color-primary-lightest-surface),.6)}to{background-color:transparent;box-shadow:inset 3px 0 0 0 transparent}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTextEditorModule }, { kind: "component", type: i1$3.AXTextEditorComponent, selector: "ax-text-editor", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "look", "placeHolder", "outputFormat", "initialLine"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i1$3.AXTextEditorToolbarComponent, selector: "ax-text-editor-toolbar", inputs: ["orientation"] }, { kind: "component", type: i1$3.AXTextEditorContentComponent, selector: "ax-text-editor-content" }, { kind: "component", type: i1$3.AXTextEditorHistoryComponent, selector: "ax-text-editor-history" }, { kind: "component", type: i1$3.AXTextEditorFontStyleComponent, selector: "ax-text-editor-font-style" }, { kind: "component", type: i1$3.AXTextEditorAlignmentComponent, selector: "ax-text-editor-alignment" }, { kind: "component", type: i1$3.AXTextEditorColorsComponent, selector: "ax-text-editor-colors" }, { kind: "component", type: i1$3.AXTextEditorListComponent, selector: "ax-text-editor-list" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AXCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount", "repliesExpanded"], outputs: ["repliesExpandedChange"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["like"], outputs: ["likeChange"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i7.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "directive", type: AXPUserCardDirective, selector: "[axpUserCard]", inputs: ["axpUserCard", "axpUserCardDisabled", "axpUserCardTrigger"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }, { kind: "pipe", type: i1$2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
12845
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMCommentComponent, isStandalone: true, selector: "axm-comment", inputs: { refrenceType: { classPropertyName: "refrenceType", publicName: "refrenceType", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: "refrenceId", publicName: "refrenceId", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editorRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axm-comment size-full flex flex-col overflow-hidden\">\n <div class=\"axm-comment__list flex-1 min-h-0 overflow-y-auto\">\n <ax-comment-container>\n @if (isLoading()) {\n <div class=\"axm-comment__skeleton\">\n <ax-skeleton class=\"size-10 shrink-0 rounded-full\"></ax-skeleton>\n <div class=\"axm-comment__skeleton-body\">\n <ax-skeleton class=\"h-4 w-32 rounded\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-full rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-11/12 rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"h-3 w-4/5 rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (comments().length > 0) {\n <ax-comment-view class=\"axm-comment__view\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item\n [id]=\"comment.id!\"\n [replyCount]=\"comment.replyCount\"\n [repliesExpanded]=\"isRepliesExpanded(comment.id!)\"\n (repliesExpandedChange)=\"\n onRepliesExpandedChange(comment.id!, $event)\n \"\n [class.highlighted]=\"highlightedCommentId() === comment.id\"\n [@fadeIn]\n >\n <axp-user-avatar\n #user\n [size]=\"36\"\n [userId]=\"comment.senderId\"\n [axpUserCard]=\"comment.senderId\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title class=\"axm-comment__author\" [axpUserCard]=\"comment.senderId\">{{\n user.title()\n }}</ax-title>\n <ax-comment-date class=\"axm-comment__date\">\n {{ comment.timestamp | format: 'timeleft' | async }}\n </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button\n class=\"axm-comment__menu-btn ax-sm\"\n look=\"blank\"\n color=\"neutral\"\n >\n <ax-icon icon=\"fa-regular fa-ellipsis\"></ax-icon>\n </ax-button>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.edit.title'\n | translate\n | async) ?? ''\n \"\n color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.title())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.delete.title'\n | translate\n | async) ?? ''\n \"\n color=\"danger\"\n (click)=\"deleteComment(comment.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content\n [innerHTML]=\"sanitizeHtml(getCommentText(comment))\"\n ></ax-content>\n <ax-comment-like\n (click)=\"toggleLike(comment)\"\n [like]=\"isLikedByUser(comment)\"\n >\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.title())\"\n ></ax-comment-reply-text>\n\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item\n [id]=\"reply.id\"\n [class.highlighted]=\"highlightedCommentId() === reply.id\"\n [@fadeIn]\n >\n <axp-user-avatar\n #replyUser\n [size]=\"36\"\n [userId]=\"reply.senderId\"\n [axpUserCard]=\"reply.senderId\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title class=\"axm-comment__author\" [axpUserCard]=\"reply.senderId\">{{\n replyUser.title()\n }}</ax-title>\n <ax-comment-date class=\"axm-comment__date\">\n {{ reply.timestamp | format: 'timeleft' | async }}\n </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button\n class=\"axm-comment__menu-btn ax-sm\"\n look=\"blank\"\n color=\"neutral\"\n >\n <ax-icon icon=\"fa-regular fa-ellipsis\"></ax-icon>\n </ax-button>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.edit.title'\n | translate\n | async) ?? ''\n \"\n color=\"neutral\"\n (click)=\"\n editMessage(comment, reply, replyUser.title())\n \"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"\n ('@conversation:comments.actions.delete.title'\n | translate\n | async) ?? ''\n \"\n color=\"danger\"\n (click)=\"deleteComment(reply.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content\n [innerHTML]=\"sanitizeHtml(getCommentText(reply))\"\n ></ax-content>\n <ax-comment-like\n (click)=\"toggleLike(reply)\"\n [like]=\"isLikedByUser(reply)\"\n >\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, replyUser.title())\"\n ></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n }\n <!-- ----- Empty state when no comments exist ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-comments\"\n [title]=\"\n '@conversation:comments.components.comment.empty-states.no-comments.title'\n \"\n [description]=\"\n '@conversation:comments.components.comment.empty-states.no-comments.description'\n \"\n >\n </axp-state-message>\n }\n </ax-comment-container>\n </div>\n\n <div class=\"axm-comment__composer\">\n @if (isReplyingMode() || isEditingMode()) {\n <div class=\"axm-comment__context\">\n <button\n type=\"button\"\n class=\"axm-comment__context-main\"\n (click)=\"scrollMain()\"\n >\n <i\n class=\"fa-light axm-comment__context-icon\"\n [class.fa-reply]=\"isReplyingMode()\"\n [class.fa-pen]=\"isEditingMode()\"\n ></i>\n <div class=\"axm-comment__context-copy\">\n <p class=\"axm-comment__context-label\">\n @if (isReplyingMode()) {\n {{\n '@conversation:comments.actions.reply-to' | translate | async\n }}\n <span>{{ activeReplyComment()?.userName }}</span>\n } @else {\n {{\n '@conversation:comments.actions.edit-message'\n | translate\n | async\n }}\n }\n </p>\n <div\n class=\"axm-comment__context-preview\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(getCommentText(activeReplyComment()!))\n : sanitizeHtml(getCommentText(activeEditComment()!))\n \"\n ></div>\n </div>\n </button>\n <button\n type=\"button\"\n class=\"axm-comment__context-close\"\n (click)=\"resetReplyEditState()\"\n [attr.aria-label]=\"\n ('@conversation:comments.actions.cancel.title'\n | translate\n | async) ?? 'Cancel'\n \"\n >\n <i class=\"fa-light fa-xmark\"></i>\n </button>\n </div>\n }\n\n <div class=\"axm-comment__editor\">\n <ax-text-editor\n #editorRef\n outputFormat=\"html\"\n [look]=\"editorOptions().look\"\n [(ngModel)]=\"commentContent\"\n >\n <ax-text-editor-content class=\"min-h-24\"></ax-text-editor-content>\n <ax-text-editor-toolbar>\n <ax-prefix>\n <ax-text-editor-history></ax-text-editor-history>\n <ax-text-editor-font-style></ax-text-editor-font-style>\n <ax-text-editor-colors></ax-text-editor-colors>\n <ax-text-editor-list></ax-text-editor-list>\n <ax-text-editor-alignment></ax-text-editor-alignment>\n </ax-prefix>\n </ax-text-editor-toolbar>\n </ax-text-editor>\n <!-- ----- Send sits under the editor, aligned to the inline end ----- -->\n <div class=\"axm-comment__editor-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n [disabled]=\"hasCooldown() || !commentContent()\"\n (click)=\"submitComment()\"\n [text]=\"\n '@conversation:comments.actions.send.title' | translate | async\n \"\n >\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;:host{display:block;height:100%;min-height:0px;width:100%}.axm-comment{min-height:0px;height:calc(100vh - 210px);background-color:rgb(var(--ax-sys-color-lightest-surface))}.axm-comment .axm-comment__list{min-height:0px}.axm-comment .axm-comment__skeleton{display:flex;align-items:flex-start;gap:.875rem;padding:1.25rem 1.25rem 1.5rem}.axm-comment .axm-comment__skeleton-body{display:flex;min-width:0px;flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-comment .axm-comment__composer{flex-shrink:0;background-color:rgb(var(--ax-sys-color-surface-surface))}.axm-comment .axm-comment__context{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);padding:.625rem .75rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-bottom:none;border-inline-start:3px solid rgb(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.35);font-size:.8125rem;line-height:1.4}.axm-comment .axm-comment__context-main{display:flex;min-width:0px;flex:1;cursor:pointer;align-items:center;gap:.625rem}.axm-comment .axm-comment__context-icon{flex-shrink:0;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgb(var(--ax-sys-color-primary-surface))}.axm-comment .axm-comment__context-copy{display:flex;min-width:0px;flex-direction:column;gap:.125rem}.axm-comment .axm-comment__context-label{margin:0;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-primary-surface))}.axm-comment .axm-comment__context-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;color:rgb(var(--ax-sys-color-neutral-600-surface, 107 114 128))}.axm-comment .axm-comment__context-close{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md, .375rem);--tw-border-style: none;border-style:none;padding:.25rem;background:transparent;color:rgb(var(--ax-sys-color-neutral-500-surface, 107 114 128));font-size:1rem;line-height:1}.axm-comment .axm-comment__context-close:hover{background-color:rgba(var(--ax-sys-color-neutral-100-surface, 243 244 246),.8)}.axm-comment .axm-comment__editor{overflow:hidden;border:1px solid rgb(var(--ax-sys-color-border-light-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));box-shadow:0 1px 2px #0f172a0a}.axm-comment .axm-comment__editor-actions{display:flex;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid rgb(var(--ax-sys-color-border-light-surface))}.axm-comment .axm-comment__author{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axm-comment .axm-comment__date{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgb(var(--ax-sys-color-neutral-500-surface, 107 114 128))}.axm-comment .axm-comment__menu-btn{opacity:0;transition:opacity .15s ease}ax-comment-item{border-radius:.75rem;transition:background-color .2s ease}ax-comment-item:hover{background-color:rgba(var(--ax-sys-color-neutral-100-surface, 243 244 246),.45)}ax-comment-item:hover .axm-comment__menu-btn{opacity:1}ax-comment-item.highlighted{animation:axm-comment-highlight 2.5s cubic-bezier(.4,0,.2,1) forwards}ax-text-editor{flex-shrink:0}ax-text-editor .ax-editor-container{border:none!important;border-radius:0!important;box-shadow:none!important}ax-text-editor .ax-error-message{padding-inline-start:.75rem}@keyframes axm-comment-highlight{0%{background-color:transparent;box-shadow:inset 3px 0 0 0 transparent}10%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5);box-shadow:inset 3px 0 rgb(var(--ax-sys-color-primary-surface))}35%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.3);box-shadow:inset 3px 0 rgba(var(--ax-sys-color-primary-lighter-surface),.8)}60%{background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.4);box-shadow:inset 3px 0 rgba(var(--ax-sys-color-primary-lightest-surface),.6)}to{background-color:transparent;box-shadow:inset 3px 0 0 0 transparent}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTextEditorModule }, { kind: "component", type: i1$3.AXTextEditorComponent, selector: "ax-text-editor", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "look", "placeHolder", "outputFormat", "line", "initialLine", "maxLine"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i1$3.AXTextEditorToolbarComponent, selector: "ax-text-editor-toolbar", inputs: ["orientation"] }, { kind: "component", type: i1$3.AXTextEditorContentComponent, selector: "ax-text-editor-content" }, { kind: "component", type: i1$3.AXTextEditorHistoryComponent, selector: "ax-text-editor-history" }, { kind: "component", type: i1$3.AXTextEditorFontStyleComponent, selector: "ax-text-editor-font-style" }, { kind: "component", type: i1$3.AXTextEditorAlignmentComponent, selector: "ax-text-editor-alignment" }, { kind: "component", type: i1$3.AXTextEditorColorsComponent, selector: "ax-text-editor-colors" }, { kind: "component", type: i1$3.AXTextEditorListComponent, selector: "ax-text-editor-list" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view", inputs: ["datasource", "itemTemplate"], outputs: ["datasourceChange", "onReply", "onLikeChange", "onRepliesToggle", "onAction"] }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AXCommentItemComponent, selector: "ax-comment-item", inputs: ["item", "replyCount", "repliesExpanded", "loading", "itemTemplate", "itemContext"], outputs: ["repliesExpandedChange", "likeChange", "replyClick", "actionClick"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["like"], outputs: ["likeChange"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i7.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "directive", type: AXPUserCardDirective, selector: "[axpUserCard]", inputs: ["axpUserCard", "axpUserCardDisabled", "axpUserCardTrigger"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }, { kind: "pipe", type: i1$2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
12821
12846
  trigger('fadeIn', [
12822
12847
  transition(':enter', [
12823
12848
  style({ opacity: 0, transform: 'translateY(10px)' }),
@@ -13011,6 +13036,7 @@ function resolveCommentPopupOptions(input = {}) {
13011
13036
  class AXMShowCommentPopupCommand {
13012
13037
  constructor() {
13013
13038
  this.popupService = inject(AXPopupService);
13039
+ this.dialogOpener = inject(AXPDialogOpener);
13014
13040
  this.translate = inject(AXTranslationService);
13015
13041
  }
13016
13042
  async execute(input = {}) {
@@ -13021,15 +13047,22 @@ class AXMShowCommentPopupCommand {
13021
13047
  message: { text: 'Comment popup requires refType and refId.' },
13022
13048
  };
13023
13049
  }
13024
- const comp = (await Promise.resolve().then(function () { return commentPopup_component; })).AXMCommentPopupComponent;
13025
- await this.popupService.open(comp, {
13026
- title: await this.translate.translateAsync('@conversation:comments.feature.title'),
13027
- size: 'lg',
13028
- data: {
13029
- refrenceType: signal(refType),
13030
- refrenceId: signal(refId),
13031
- subject: signal(subject),
13050
+ let title = '';
13051
+ await this.dialogOpener.openPopup({
13052
+ load: () => Promise.resolve().then(function () { return commentPopup_component; }).then((module) => module.AXMCommentPopupComponent),
13053
+ data: { refType, refId },
13054
+ prepare: async () => {
13055
+ title = await this.translate.translateAsync('@conversation:comments.feature.title');
13032
13056
  },
13057
+ show: (component) => this.popupService.open(component, {
13058
+ title,
13059
+ size: 'lg',
13060
+ data: {
13061
+ refrenceType: signal(refType),
13062
+ refrenceId: signal(refId),
13063
+ subject: signal(subject),
13064
+ },
13065
+ }),
13033
13066
  });
13034
13067
  return {
13035
13068
  success: true,
@@ -14279,17 +14312,21 @@ async function axmOpenChatCallStartDialog(options) {
14279
14312
  }
14280
14313
  // Capture DI before any await (dynamic import below).
14281
14314
  const popupService = options.popupService ?? inject(AXPopupService);
14282
- const comp = (await import('./acorex-platform-module-conversation-client-chat-call-start-popup.component-CS3wAOf9.mjs')).AXMChatCallStartPopupComponent;
14315
+ const dialogOpener = options.dialogOpener ?? inject(AXPDialogOpener);
14283
14316
  const data = { conversation };
14284
- await popupService.open(comp, {
14285
- header: false,
14286
- closeButton: false,
14287
- footer: false,
14288
- size: 'sm',
14289
- closeOnBackdropClick: true,
14290
- panelClass: ['animate-fadeIn', 'animate-fast', 'axm-chat-call-start-overlay'],
14291
- contextElement: axmChatCallDarkThemeContextElement(),
14292
- data,
14317
+ await dialogOpener.openPopup({
14318
+ load: () => import('./acorex-platform-module-conversation-client-chat-call-start-popup.component-ooiJkC8U.mjs').then((module) => module.AXMChatCallStartPopupComponent),
14319
+ data: { conversationId: conversation.id },
14320
+ show: (component) => popupService.open(component, {
14321
+ header: false,
14322
+ closeButton: false,
14323
+ footer: false,
14324
+ size: 'sm',
14325
+ closeOnBackdropClick: true,
14326
+ panelClass: ['animate-fadeIn', 'animate-fast', 'axm-chat-call-start-overlay'],
14327
+ contextElement: axmChatCallDarkThemeContextElement(),
14328
+ data,
14329
+ }),
14293
14330
  });
14294
14331
  }
14295
14332
  //#endregion
@@ -14528,6 +14565,7 @@ const AXM_CHAT_INFO_BAR_CALL_ACTION = {
14528
14565
  // Resolve DI synchronously — info-bar runs the handler in runInInjectionContext,
14529
14566
  // but that context is lost after the first await.
14530
14567
  const popupService = inject(AXPopupService);
14568
+ const dialogOpener = inject(AXPDialogOpener);
14531
14569
  const rtc = inject(AXPRtcApiAbstract, { optional: true });
14532
14570
  const translation = inject(AXTranslationService);
14533
14571
  const toast = inject(AXToastService);
@@ -14540,6 +14578,7 @@ const AXM_CHAT_INFO_BAR_CALL_ACTION = {
14540
14578
  await axmOpenChatCallStartDialog({
14541
14579
  conversation: context.conversation,
14542
14580
  popupService,
14581
+ dialogOpener,
14543
14582
  });
14544
14583
  },
14545
14584
  };
@@ -14558,7 +14597,7 @@ const AXM_CHAT_INFO_BAR_CALL_ACTION = {
14558
14597
  */
14559
14598
  const AXM_CONVERSATION_BOT_RENDERER = {
14560
14599
  type: 'assist-response',
14561
- componentLoader: () => import('./acorex-platform-module-conversation-client-assist-message-renderer.component-B3j1g0zP.mjs').then(function (n) { return n.b; }).then((m) => m.AXMAssistMessageRendererComponent),
14600
+ componentLoader: () => import('./acorex-platform-module-conversation-client-assist-message-renderer.component-jsHo7NZq.mjs').then(function (n) { return n.b; }).then((m) => m.AXMAssistMessageRendererComponent),
14562
14601
  canHandle: (message) => message.type === 'assist-response' || !!message.metadata?.['isAssistResponse'],
14563
14602
  capabilities: {
14564
14603
  supportsReactions: false,
@@ -14696,31 +14735,49 @@ async function axmOpenChatCallSessionDialog(options) {
14696
14735
  return;
14697
14736
  }
14698
14737
  const popupService = options.popupService ?? inject(AXPopupService);
14738
+ const dialogOpener = options.dialogOpener ?? inject(AXPDialogOpener);
14699
14739
  const activeCallSessions = options.activeCallSessions ?? inject(AXMChatCallActiveSessionService);
14700
- const comp = (await import('./acorex-platform-module-conversation-client-chat-call-session-page.component-BRlpKAUb.mjs')).AXMChatCallSessionPageComponent;
14701
- const scopedCallId = options.callId?.trim() || createRandomUuid();
14702
- activeCallSessions.engage(scopedCallId);
14703
- const data = {
14704
- sessionConversation: conversation,
14705
- sessionMedia: options.media === 'video' ? 'video' : 'voice',
14706
- sessionPhase: options.phase ?? 'outgoing-waiting',
14707
- sessionCallId: scopedCallId,
14708
- sessionInitiatorUserId: options.initiatorUserId?.trim() || undefined,
14709
- };
14740
+ const sessionMedia = options.media === 'video' ? 'video' : 'voice';
14741
+ let scopedCallId = options.callId?.trim() || '';
14710
14742
  try {
14711
- await popupService.open(comp, {
14712
- header: false,
14713
- closeButton: false,
14714
- footer: false,
14715
- size: 'full',
14716
- closeOnBackdropClick: false,
14717
- panelClass: ['animate-fadeIn', 'animate-fast'],
14718
- contextElement: axmChatCallDarkThemeContextElement(),
14719
- data,
14743
+ const opened = await dialogOpener.openPopup({
14744
+ load: () => import('./acorex-platform-module-conversation-client-chat-call-session-page.component-ePQikBd2.mjs').then((module) => module.AXMChatCallSessionPageComponent),
14745
+ data: {
14746
+ conversationId: conversation.id,
14747
+ callId: scopedCallId,
14748
+ media: sessionMedia,
14749
+ phase: options.phase ?? 'outgoing-waiting',
14750
+ },
14751
+ show: (component) => {
14752
+ scopedCallId = scopedCallId || createRandomUuid();
14753
+ activeCallSessions.engage(scopedCallId);
14754
+ const data = {
14755
+ sessionConversation: conversation,
14756
+ sessionMedia,
14757
+ sessionPhase: options.phase ?? 'outgoing-waiting',
14758
+ sessionCallId: scopedCallId,
14759
+ sessionInitiatorUserId: options.initiatorUserId?.trim() || undefined,
14760
+ };
14761
+ return popupService.open(component, {
14762
+ header: false,
14763
+ closeButton: false,
14764
+ footer: false,
14765
+ size: 'full',
14766
+ closeOnBackdropClick: false,
14767
+ panelClass: ['animate-fadeIn', 'animate-fast'],
14768
+ contextElement: axmChatCallDarkThemeContextElement(),
14769
+ data,
14770
+ });
14771
+ },
14720
14772
  });
14773
+ if (opened === undefined) {
14774
+ return;
14775
+ }
14721
14776
  }
14722
14777
  catch (error) {
14723
- activeCallSessions.release(scopedCallId);
14778
+ if (scopedCallId) {
14779
+ activeCallSessions.release(scopedCallId);
14780
+ }
14724
14781
  throw error;
14725
14782
  }
14726
14783
  }
@@ -14741,6 +14798,7 @@ class AXMChatCallLogMessageRendererComponent {
14741
14798
  this.settings = inject(AXPSettingsService);
14742
14799
  this.conversationService = inject(AXConversationService);
14743
14800
  this.popupService = inject(AXPopupService);
14801
+ this.dialogOpener = inject(AXPDialogOpener);
14744
14802
  this.activeCallSessions = inject(AXMChatCallActiveSessionService);
14745
14803
  this.toastService = inject(AXToastService);
14746
14804
  this.rtcApi = inject(AXPRtcApiAbstract, { optional: true });
@@ -14880,6 +14938,7 @@ class AXMChatCallLogMessageRendererComponent {
14880
14938
  conversation,
14881
14939
  media: this.log()?.media === 'video' ? 'video' : 'voice',
14882
14940
  popupService: this.popupService,
14941
+ dialogOpener: this.dialogOpener,
14883
14942
  activeCallSessions: this.activeCallSessions,
14884
14943
  });
14885
14944
  }
@@ -16385,6 +16444,7 @@ class AXMChatCallRtcSignalInboxService {
16385
16444
  this.session = inject(AXPSessionService);
16386
16445
  this.store = inject(AXMConversationEntityStoreService);
16387
16446
  this.popupService = inject(AXPopupService);
16447
+ this.dialogOpener = inject(AXPDialogOpener);
16388
16448
  this.translation = inject(AXTranslationService);
16389
16449
  this.toast = inject(AXToastService);
16390
16450
  this.activeSessions = inject(AXMChatCallActiveSessionService);
@@ -16591,6 +16651,7 @@ class AXMChatCallRtcSignalInboxService {
16591
16651
  callId: ring.callId,
16592
16652
  initiatorUserId: ring.fromUserId,
16593
16653
  popupService: this.popupService,
16654
+ dialogOpener: this.dialogOpener,
16594
16655
  activeCallSessions: this.activeSessions,
16595
16656
  });
16596
16657
  }
@@ -16800,7 +16861,7 @@ class AXMCommentsPageComponentProvider {
16800
16861
  return [
16801
16862
  {
16802
16863
  key: COMMENTS_PAGE_COMPONENT_KEY,
16803
- loader: () => import('./acorex-platform-module-conversation-client-comments-page.component-BDHn6lsM.mjs').then((m) => m.AXMCommentsPageComponent),
16864
+ loader: () => import('./acorex-platform-module-conversation-client-comments-page.component-BW_XRzT6.mjs').then((m) => m.AXMCommentsPageComponent),
16804
16865
  },
16805
16866
  ];
16806
16867
  }
@@ -17106,19 +17167,19 @@ class AXMConversationModule {
17106
17167
  provideCommandSetups([
17107
17168
  {
17108
17169
  key: CONVERSATION_AFTER_MESSAGE_SENT_COMMAND,
17109
- command: () => import('./acorex-platform-module-conversation-client-after-message-sent.command-BNk7zaP4.mjs').then((m) => m.AXMConversationAfterMessageSentCommand),
17170
+ command: () => import('./acorex-platform-module-conversation-client-after-message-sent.command-e_3t71gw.mjs').then((m) => m.AXMConversationAfterMessageSentCommand),
17110
17171
  },
17111
17172
  {
17112
17173
  key: CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND,
17113
- command: () => import('./acorex-platform-module-conversation-client-retry-assist-response.command-DMW93mNL.mjs').then((m) => m.AXMConversationRetryAssistResponseCommand),
17174
+ command: () => import('./acorex-platform-module-conversation-client-retry-assist-response.command-CC0jPXGP.mjs').then((m) => m.AXMConversationRetryAssistResponseCommand),
17114
17175
  },
17115
17176
  {
17116
17177
  key: CONVERSATION_SYNC_READ_STATE_COMMAND,
17117
- command: () => import('./acorex-platform-module-conversation-client-sync-read-state.command-Bz_jgHiS.mjs').then((m) => m.AXMConversationSyncReadStateCommand),
17178
+ command: () => import('./acorex-platform-module-conversation-client-sync-read-state.command-BUtdyniC.mjs').then((m) => m.AXMConversationSyncReadStateCommand),
17118
17179
  },
17119
17180
  {
17120
17181
  key: CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND,
17121
- command: () => import('./acorex-platform-module-conversation-client-mark-conversation-unread.command-BL336_ps.mjs').then((m) => m.AXMConversationMarkConversationUnreadCommand),
17182
+ command: () => import('./acorex-platform-module-conversation-client-mark-conversation-unread.command-Cdd6Cxkf.mjs').then((m) => m.AXMConversationMarkConversationUnreadCommand),
17122
17183
  },
17123
17184
  {
17124
17185
  key: CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND,
@@ -17130,7 +17191,7 @@ class AXMConversationModule {
17130
17191
  },
17131
17192
  {
17132
17193
  key: CONVERSATION_OPEN_CHAT_COMMAND,
17133
- command: () => import('./acorex-platform-module-conversation-client-open-chat.command-BrDiRNsa.mjs').then((m) => m.AXMConversationOpenChatCommand),
17194
+ command: () => import('./acorex-platform-module-conversation-client-open-chat.command-TfSLQn3K.mjs').then((m) => m.AXMConversationOpenChatCommand),
17134
17195
  },
17135
17196
  {
17136
17197
  key: 'show-comment-popup',
@@ -17249,19 +17310,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17249
17310
  provideCommandSetups([
17250
17311
  {
17251
17312
  key: CONVERSATION_AFTER_MESSAGE_SENT_COMMAND,
17252
- command: () => import('./acorex-platform-module-conversation-client-after-message-sent.command-BNk7zaP4.mjs').then((m) => m.AXMConversationAfterMessageSentCommand),
17313
+ command: () => import('./acorex-platform-module-conversation-client-after-message-sent.command-e_3t71gw.mjs').then((m) => m.AXMConversationAfterMessageSentCommand),
17253
17314
  },
17254
17315
  {
17255
17316
  key: CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND,
17256
- command: () => import('./acorex-platform-module-conversation-client-retry-assist-response.command-DMW93mNL.mjs').then((m) => m.AXMConversationRetryAssistResponseCommand),
17317
+ command: () => import('./acorex-platform-module-conversation-client-retry-assist-response.command-CC0jPXGP.mjs').then((m) => m.AXMConversationRetryAssistResponseCommand),
17257
17318
  },
17258
17319
  {
17259
17320
  key: CONVERSATION_SYNC_READ_STATE_COMMAND,
17260
- command: () => import('./acorex-platform-module-conversation-client-sync-read-state.command-Bz_jgHiS.mjs').then((m) => m.AXMConversationSyncReadStateCommand),
17321
+ command: () => import('./acorex-platform-module-conversation-client-sync-read-state.command-BUtdyniC.mjs').then((m) => m.AXMConversationSyncReadStateCommand),
17261
17322
  },
17262
17323
  {
17263
17324
  key: CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND,
17264
- command: () => import('./acorex-platform-module-conversation-client-mark-conversation-unread.command-BL336_ps.mjs').then((m) => m.AXMConversationMarkConversationUnreadCommand),
17325
+ command: () => import('./acorex-platform-module-conversation-client-mark-conversation-unread.command-Cdd6Cxkf.mjs').then((m) => m.AXMConversationMarkConversationUnreadCommand),
17265
17326
  },
17266
17327
  {
17267
17328
  key: CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND,
@@ -17273,7 +17334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17273
17334
  },
17274
17335
  {
17275
17336
  key: CONVERSATION_OPEN_CHAT_COMMAND,
17276
- command: () => import('./acorex-platform-module-conversation-client-open-chat.command-BrDiRNsa.mjs').then((m) => m.AXMConversationOpenChatCommand),
17337
+ command: () => import('./acorex-platform-module-conversation-client-open-chat.command-TfSLQn3K.mjs').then((m) => m.AXMConversationOpenChatCommand),
17277
17338
  },
17278
17339
  {
17279
17340
  key: 'show-comment-popup',
@@ -17309,4 +17370,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
17309
17370
  */
17310
17371
 
17311
17372
  export { axmShouldForkPrivateToGroup as $, AXMConversationEntityStoreService as A, axmSanitizeAssistUserAnswerText as B, axmAssistUserVisibleItemsForLine as C, axmReadAssistFollowUpStatus as D, axmReadPlainTextMessagePayload as E, AXMNodeMessageRendererComponent as F, AXMAssistSuggestionChipsComponent as G, AXMChatCallActiveSessionService as H, axmResolveConversationListAvatar as I, axmEnsureChatCallRtcReady as J, axmOpenChatCallSessionDialog as K, axmChatCallMediaRoomName as L, axmResolveChatCallLiveKitServerUrl as M, axmChatCallRoomConnectOptions as N, loadLiveKitClient as O, AXM_CHAT_CALL_RTC_API_PROVIDERS as P, AXMConversationAppearanceSyncService as Q, axmCancelAssistComposerGeneration as R, AXMChatEmptyStateHostComponent as S, AXMChatComposerEnsureAssistConversationDirective as T, AXMChatUserApi as U, AXMChatEntityConversationApi as V, AXMChatConversationApi as W, AXMChatCallRtcSignalInboxService as X, AXMChatCallEventsService as Y, AXMConversationRealtimeBus as Z, axmReadChatCallLog as _, AXM_CONVERSATION_ASSIST_RESPONSE_PORT as a, CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND as a$, axmIsConversationParticipant as a0, axmBuildChatCallLogMessage as a1, axmMatchesForkedGroupForCall as a2, axmAssistWidgetNodeFromUnknown as a3, AXMAddReactionCommand as a4, AXMChannelFeedItemComponent as a5, AXMChannelFeedPage as a6, AXMChatAnnouncementChannelService as a7, AXMChatComponent as a8, AXMChatComposerAssistPickerComponent as a9, AXMMiniChatPanelService as aA, AXMMiniChatPopupWindowComponent as aB, AXMShowCommentPopupCommand as aC, AXM_AI_MANAGEMENT_ASSIST_ENTITY_NAME as aD, AXM_ASSIST_DEFAULT_RESOLVER_PORT as aE, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE as aF, AXM_CHAT_ASSIST_CATALOG_PORT as aG, AXM_CHAT_EMPTY_STATE_COMPONENT as aH, AXM_CHAT_SIDEBAR_ACTION_PROVIDER as aI, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS as aJ, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY as aK, AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY as aL, AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE as aM, AXM_CONVERSATION_TAB_BOT as aN, AXM_ENTITY_LIST_CHAT_ID as aO, AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER as aP, AXM_MINI_CHAT_INBOX_SESSION_KEY as aQ, AXM_MINI_CHAT_POPUP_DOCK as aR, AXM_MINI_CHAT_SCOPE_ENTITY as aS, AXM_MINI_CHAT_SCOPE_METADATA_KEY as aT, AXPCommentWidget as aU, COMMENTS_PAGE_COMPONENT_KEY as aV, CONVERSATION_AFTER_MESSAGE_SENT_COMMAND as aW, CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND as aX, CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND as aY, CONVERSATION_OPEN_CHAT_COMMAND as aZ, CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND as a_, AXMChatEmptyAssistSessionService as aa, AXMChatEntityConversationFocusHandler as ab, AXMChatEntityConversationRoomQueryService as ac, AXMChatEntityMessageApi as ad, AXMChatEntityRealtimeApi as ae, AXMChatEntityUserApi as af, AXMChatRealtimeApi as ag, AXMCommentManagementService as ah, AXMCommentPopupComponent as ai, AXMCommentRealtimeService as aj, AXMCommentRealtimeServiceImpl as ak, AXMCommentService as al, AXMCommentServiceImpl as am, AXMCommentWidgetViewComponent as an, AXMConversationAssistBackgroundOperationHandler as ao, AXMConversationModule as ap, AXMEntityChatService as aq, AXMMiniChatComponent as ar, AXMMiniChatFileDropService as as, AXMMiniChatFooterDockComponent as at, AXMMiniChatHeaderSlotComponent as au, AXMMiniChatHistoryComponent as av, AXMMiniChatInboxHistoryComponent as aw, AXMMiniChatLauncherComponent as ax, AXMMiniChatPageActionComponent as ay, AXMMiniChatPanelComponent as az, AXM_CONVERSATION_REGULAR_AUTO_REPLY_PORT as b, axmResolveChatAiTargetText as b$, CONVERSATION_START_ASSIST_CHAT_COMMAND as b0, CONVERSATION_START_DIRECT_CHAT_COMMAND as b1, CONVERSATION_SYNC_READ_STATE_COMMAND as b2, axmApplyAnswerTextToAssistPayloadLine as b3, axmAssistFollowUpItemsFromUnknown as b4, axmAssistLastTranscriptLine as b5, axmAssistNormalizeFollowUpItemForConversation as b6, axmAssistNormalizeFollowUpItemsForConversation as b7, axmAssistPersistedMessageLooksComplete as b8, axmAssistResolveFollowUpCommandName as b9, axmExtractAssistSnapshotFromMetadata as bA, axmExtractDirectAgentIdFromMetadata as bB, axmExtractEntityRefFromMetadata as bC, axmExtractModelEntityIdFromMetadata as bD, axmExtractTextFromPayload as bE, axmFilterChatAiTargets as bF, axmFlattenConversationCreateMetadata as bG, axmHydrateRealtimeConversationMessage as bH, axmInboxConversationTab as bI, axmIsAssistBotConversation as bJ, axmIsAssistPeerParticipant as bK, axmIsAssistResponseMessage as bL, axmIsAssistStreamingMessage as bM, axmIsAssistTerminalStatus as bN, axmIsUnsupportedLegacyAgentAssistConversation as bO, axmLoadChatAiTargets as bP, axmMessageEntityToMessage as bQ, axmMiniChatHistoryScopeFromDraft as bR, axmMiniChatHistoryScopeFromOpen as bS, axmMiniChatHistoryScopeKey as bT, axmMiniChatWindowOwnsRoute as bU, axmNormalizeAssistTranscriptForChatUi as bV, axmNormalizeAssistTranscriptLineResponses as bW, axmPreferLocalUnreadCount as bX, axmReadReplyToUserMessageId as bY, axmRemoveMiniChatHistoryItem as bZ, axmResolveAssistFinalAnswerText as b_, axmAssistStarterPromptChipItems as ba, axmAssistSuggestionIconForLabel as bb, axmAssistWidgetNodeDedupeKey as bc, axmBuildAiChatConversationMetadata as bd, axmBuildAssistPeerParticipantFromCreateData as be, axmBuildAssistPeerParticipantFromId as bf, axmBuildAssistTranscriptLinePayload as bg, axmBuildAutoTitleFromUserText as bh, axmBuildEntityChatConversationMetadata as bi, axmBuildEntityChatRoomEntityRef as bj, axmChatAiPeerParticipantId as bk, axmChatAiTargetAvatarUrl as bl, axmChatAiTargetDisplayDescription as bm, axmChatAiTargetDisplayName as bn, axmChatAiTargetShortcutDescriptionKey as bo, axmCoerceDate as bp, axmCoerceTimestampMs as bq, axmComputeConversationUnreadCount as br, axmConversationIsEntityChat as bs, axmConversationIsGlobalChat as bt, axmConversationMatchesEntity as bu, axmConversationMatchesHistoryScope as bv, axmEntityRefForMiniChatPageContext as bw, axmEntityRefFromLaunchContext as bx, axmExcludeEntityChatConversations as by, axmExtractAssistIdFromMetadata as bz, axmConversationHasAiChat$1 as c, axmRoomEntityToConversation as c0, axmRoomIsEntityChat as c1, axmRoomLaunchContext as c2, axmRoomMatchesEntity as c3, axmRoomWithAssistPeerDisplayName as c4, axmShouldPreferPersistedAssistOverLiveCache as c5, axmSortMessagesNewestFirst as c6, axmSyncAssistPeerDisplayName as c7, axmUpsertMiniChatHistoryItem as c8, axmUserRowToParticipant as c9, axpShowCommentPopupCommandDefinition as ca, channelFeedPageRoutes as cb, commentsPlugin as cc, createConversationServiceSessionAdapter as cd, persistChatAttachment as ce, AXMConversationFocusService as d, AXMConversationInAppNotificationSyncService as e, axmMessageCountsTowardUnread as f, buildConversationChatInAppCorrelationPrefix as g, AXMCommentComponent as h, axmResolveI18nLabel as i, axmSyntheticEmbedMessage as j, axmChatRenderableAssistWidgetNode as k, axmPartitionAssistAnswerText as l, axmParseAssistTranscriptTextEnvelope as m, AXMAssistChatDebugModeService as n, AXMChatMessageApi as o, AXM_AI_MANAGEMENT_MODULE_NAME as p, AXM_AI_MANAGEMENT_AGENT_ENTITY_NAME as q, axmReadAssistResponseStatus as r, axmIsAssistRetryableStatus as s, axmReadAssistResponseError as t, axmReadAssistAiTranscript as u, axmParseAssistTranscriptLinePayload as v, axmReadAssistAiTranscriptRaw as w, axmAssistUserFacingPayloadLine as x, axmIsAssistStreamingStatus as y, axmAssistHasFinalizeMetadata as z };
17312
- //# sourceMappingURL=acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-BTmQeViz.mjs.map
17373
+ //# sourceMappingURL=acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-1tv00m7Y.mjs.map