@acorex-platform/module-communication-management-client 0.0.28 → 0.0.32

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 (23) hide show
  1. package/fesm2022/{acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-09UhY2Rc.mjs → acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-G4wzzccx.mjs} +357 -121
  2. package/fesm2022/acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-G4wzzccx.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-communication-management-client-communication-email-send.command-wuqLiY8s.mjs → acorex-platform-module-communication-management-client-communication-email-send.command-De8K6vIB.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-communication-management-client-communication-email-send.command-wuqLiY8s.mjs.map → acorex-platform-module-communication-management-client-communication-email-send.command-De8K6vIB.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-communication-management-client-communication-email-show-dialog.command-CP0zAEe4.mjs → acorex-platform-module-communication-management-client-communication-email-show-dialog.command-NuJLiYs_.mjs} +5 -9
  6. package/fesm2022/acorex-platform-module-communication-management-client-communication-email-show-dialog.command-NuJLiYs_.mjs.map +1 -0
  7. package/fesm2022/{acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-b7ZqkMTt.mjs → acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-BjJjqWja.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-b7ZqkMTt.mjs.map → acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-BjJjqWja.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-communication-management-client-communication-send.command-D7_MmGQe.mjs → acorex-platform-module-communication-management-client-communication-send.command-NEXrsogP.mjs} +3 -2
  10. package/fesm2022/acorex-platform-module-communication-management-client-communication-send.command-NEXrsogP.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-communication-management-client-communication-show-sent-message.command-D8125Jxi.mjs → acorex-platform-module-communication-management-client-communication-show-sent-message.command-D9KRxkdp.mjs} +21 -13
  12. package/fesm2022/acorex-platform-module-communication-management-client-communication-show-sent-message.command-D9KRxkdp.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-module-communication-management-client-communication-test-smtp.command-BySmN1Lz.mjs → acorex-platform-module-communication-management-client-communication-test-smtp.command-Cp5fHOh4.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-communication-management-client-communication-test-smtp.command-BySmN1Lz.mjs.map → acorex-platform-module-communication-management-client-communication-test-smtp.command-Cp5fHOh4.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-module-communication-management-client-contracts.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-module-communication-management-client.mjs +1 -1
  17. package/package.json +3 -3
  18. package/types/acorex-platform-module-communication-management-client-contracts.d.ts +6 -1
  19. package/types/acorex-platform-module-communication-management-client.d.ts +102 -1
  20. package/fesm2022/acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-09UhY2Rc.mjs.map +0 -1
  21. package/fesm2022/acorex-platform-module-communication-management-client-communication-email-show-dialog.command-CP0zAEe4.mjs.map +0 -1
  22. package/fesm2022/acorex-platform-module-communication-management-client-communication-send.command-D7_MmGQe.mjs.map +0 -1
  23. package/fesm2022/acorex-platform-module-communication-management-client-communication-show-sent-message.command-D8125Jxi.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-communication-management-client-contracts.mjs","sources":["../../../../libs/modules/communication-management/contracts/src/channels/channel.adapter.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.registration.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.types.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.registry.ts","../../../../libs/modules/communication-management/contracts/src/channels/debug-redirect.registration.ts","../../../../libs/modules/communication-management/contracts/src/communication-email.keys.ts","../../../../libs/modules/communication-management/contracts/src/communication-email.types.ts","../../../../libs/modules/communication-management/contracts/src/commands.keys.ts","../../../../libs/modules/communication-management/contracts/src/communication.types.ts","../../../../libs/modules/communication-management/contracts/src/communication-message.util.ts","../../../../libs/modules/communication-management/contracts/src/communication-delivery-job-title.util.ts","../../../../libs/modules/communication-management/contracts/src/engagement.types.ts","../../../../libs/modules/communication-management/contracts/src/menu.keys.ts","../../../../libs/modules/communication-management/contracts/src/permission.keys.ts","../../../../libs/modules/communication-management/contracts/src/root-config.ts","../../../../libs/modules/communication-management/contracts/src/server-commands.ts","../../../../libs/modules/communication-management/contracts/src/communication-user-notifications-settings.constants.ts","../../../../libs/modules/communication-management/contracts/src/settings.keys.ts","../../../../libs/modules/communication-management/contracts/src/status.keys.ts","../../../../libs/modules/communication-management/contracts/src/acorex-platform-module-communication-management-client-contracts.ts"],"sourcesContent":["import type {\n CommunicationAggregateStatus,\n CommunicationDeliveryStatus,\n CommunicationSendInput,\n} from '../communication.types';\nimport type { CommunicationChannelDefinition } from './channel.types';\n\n//#region ---- Channel adapter port (Phase 2+) ----\n\nexport interface CommunicationChannelAdapterContext {\n communicationId: string;\n deliveryId: string;\n input: CommunicationSendInput;\n channel: CommunicationChannelDefinition;\n now: Date;\n}\n\nexport interface CommunicationChannelDeliverResult {\n status: CommunicationDeliveryStatus;\n sentAt?: Date | null;\n deliveredAt?: Date | null;\n timelineLines: string[];\n communicationStatus: CommunicationAggregateStatus;\n}\n\nexport interface CommunicationChannelAdapter {\n readonly channelKey: string;\n deliver(context: CommunicationChannelAdapterContext): Promise<CommunicationChannelDeliverResult>;\n}\n\n//#endregion\n","import type {\n CommunicationDeliverPayload,\n CommunicationDeliverResult,\n CommunicationSendInput,\n} from '../communication.types';\n\n//#region ---- Channel adapter registration ----\n\nexport const COMMUNICATION_CHANNEL_ADAPTER = Symbol('COMMUNICATION_CHANNEL_ADAPTER');\n\n//#endregion\n\n//#region ---- Delivery executor registration ----\n\nexport const COMMUNICATION_DELIVERY_EXECUTOR = Symbol('COMMUNICATION_DELIVERY_EXECUTOR');\n\nexport interface CommunicationDeliveryExecutor {\n readonly channelKey: string;\n execute(payload: CommunicationDeliverPayload): Promise<CommunicationDeliverResult>;\n}\n\n//#endregion\n\n//#region ---- Send validation registration ----\n\nexport const COMMUNICATION_CHANNEL_SEND_VALIDATOR = Symbol('COMMUNICATION_CHANNEL_SEND_VALIDATOR');\n\nexport interface CommunicationChannelSendValidator {\n readonly channelKey: string;\n validate(input: CommunicationSendInput): void;\n}\n\n//#endregion\n","//#region ---- Channel capabilities ----\n\nexport interface CommunicationChannelCapabilities {\n deliveryConfirmation: boolean;\n deliveryReceipt: boolean;\n seenTracking: boolean;\n readReceipt: boolean;\n replyTracking: boolean;\n webhookCallbacks: boolean;\n}\n\nexport interface CommunicationChannelDefinition {\n key: string;\n title: string;\n builtIn: boolean;\n capabilities: CommunicationChannelCapabilities;\n}\n\nexport const COMMUNICATION_BUILTIN_CHANNEL_KEYS = ['in-app', 'email-smtp'] as const;\nexport type CommunicationBuiltinChannelKey = (typeof COMMUNICATION_BUILTIN_CHANNEL_KEYS)[number];\n\nexport const BUILTIN_CHANNEL_DEFINITIONS: readonly CommunicationChannelDefinition[] = [\n {\n key: 'in-app',\n title: 'In-App',\n builtIn: true,\n capabilities: {\n deliveryConfirmation: true,\n deliveryReceipt: true,\n seenTracking: true,\n readReceipt: true,\n replyTracking: false,\n webhookCallbacks: false,\n },\n },\n {\n key: 'email-smtp',\n title: 'Email (SMTP)',\n builtIn: true,\n capabilities: {\n deliveryConfirmation: true,\n deliveryReceipt: false,\n seenTracking: false,\n readReceipt: false,\n replyTracking: false,\n webhookCallbacks: false,\n },\n },\n] as const;\n\n//#endregion\n","import {\n BUILTIN_CHANNEL_DEFINITIONS,\n type CommunicationChannelDefinition,\n} from './channel.types';\n\n//#region ---- Built-in channel registry ----\n\nconst registry = new Map<string, CommunicationChannelDefinition>(\n BUILTIN_CHANNEL_DEFINITIONS.map((channel) => [channel.key, channel]),\n);\n\nexport function listCommunicationChannels(): CommunicationChannelDefinition[] {\n return [...registry.values()];\n}\n\nexport function getCommunicationChannel(key: string): CommunicationChannelDefinition | undefined {\n return registry.get(key);\n}\n\nexport function registerCommunicationChannel(definition: CommunicationChannelDefinition): void {\n registry.set(definition.key, definition);\n}\n\nexport function isBuiltInCommunicationChannel(key: string): boolean {\n return BUILTIN_CHANNEL_DEFINITIONS.some((channel) => channel.key === key);\n}\n\n//#endregion\n","//#region ---- Debug redirect resolver registration ----\n\nexport const COMMUNICATION_DEBUG_REDIRECT_RESOLVER = Symbol('COMMUNICATION_DEBUG_REDIRECT_RESOLVER');\n\nexport interface CommunicationDebugRedirectResolver {\n readonly channelKey: string;\n resolveOverride(tenantId: string): Promise<string | null>;\n}\n\nexport interface CommunicationDebugRedirectResult {\n effectiveRecipient: string | null;\n redirected: boolean;\n skipped: boolean;\n timelineNote?: string;\n}\n\n//#endregion\n","//#region ---- Email command keys ----\n\nexport const COMMUNICATION_MANAGEMENT_EMAIL_SHOW_DIALOG_COMMAND_KEY =\n 'CommunicationManagement:Email:ShowDialog' as const;\n\nexport const COMMUNICATION_MANAGEMENT_EMAIL_SEND_COMMAND_KEY =\n 'CommunicationManagement:Email:Send' as const;\n\n//#endregion\n","//#region ---- Email compose types ----\n\n/** Opens the send-email layout dialog (optional text template pre-render). */\nexport interface CommunicationManagementEmailShowDialogInput {\n dialogTitle?: string;\n to?: string;\n cc?: string;\n bcc?: string;\n subject?: string;\n body?: string;\n textTemplateId?: string;\n merge?: Record<string, string>;\n}\n\nexport interface CommunicationManagementEmailSendInput {\n to: string;\n cc?: string;\n bcc?: string;\n subject: string;\n body: string;\n textTemplateId?: string;\n}\n\nexport interface CommunicationManagementEmailSendResult {\n communicationId: string;\n deliveryId: string;\n}\n\n//#endregion\n","//#region ---- Client command keys ----\n\nexport const AXMCommunicationManagementCommandKeys = {\n Send: 'CommunicationManagement:Communication:Send',\n TestSmtp: 'CommunicationManagement:Communication:TestSmtp',\n EmailShowDialog: 'CommunicationManagement:Email:ShowDialog',\n EmailSend: 'CommunicationManagement:Email:Send',\n ShowSentMessage: 'CommunicationManagement:Communication:ShowSentMessage',\n} as const;\n\n//#endregion\n","//#region ---- Communication domain types ----\n\nexport type CommunicationAggregateStatus = 'Pending' | 'Processing' | 'Completed' | 'Failed' | 'Cancelled';\n\nexport type CommunicationDeliveryStatus =\n | 'Pending'\n | 'Queued'\n | 'Processing'\n | 'Accepted'\n | 'Sent'\n | 'Delivered'\n | 'Failed'\n | 'RetryScheduled'\n | 'Cancelled'\n | 'DeadLettered';\n\nexport interface CommunicationMessage {\n subject: string;\n body: string;\n}\n\nexport interface CommunicationNotificationAction {\n title: string;\n command: {\n name: string;\n options?: Record<string, unknown>;\n };\n}\n\nexport type CommunicationPriority = 'Notice' | 'Danger' | 'Warning';\n\nexport interface AXMCommunicationModel {\n id: string;\n title: string;\n message?: CommunicationMessage;\n definitionKey?: string;\n correlationId?: string;\n idempotencyKey?: string;\n actions?: CommunicationNotificationAction[];\n status: CommunicationAggregateStatus;\n primaryChannel?: string;\n recipientSummary?: string;\n priority?: CommunicationPriority;\n}\n\nexport interface AXMCommunicationDeliveryModel {\n id: string;\n communicationId: string;\n channel: string;\n providerKey?: string;\n status: CommunicationDeliveryStatus;\n recipientUserId?: string;\n recipientAddress?: string;\n /** Provider-assigned message id (SMTP Message-ID, Telegram message_id, WhatsApp wamid, etc.). */\n providerMessageId?: string | null;\n sentAt?: Date | null;\n deliveredAt?: Date | null;\n seenAt?: Date | null;\n readAt?: Date | null;\n repliedAt?: Date | null;\n isPinned?: boolean;\n archivedAt?: Date | null;\n timelineSummary?: string;\n}\n\nexport interface CommunicationSendInput {\n title: string;\n message: CommunicationMessage;\n channel: string;\n recipientUserId?: string;\n recipientAddress?: string;\n /** Human-readable recipient label (e.g. employee full name) for summaries and job titles. */\n recipientName?: string;\n /**\n * Tenant scope for system/unauthenticated sends (e.g. public password-reset).\n * When omitted, channel adapters use the authenticated session tenant.\n */\n tenantId?: string;\n definitionKey?: string;\n correlationId?: string;\n idempotencyKey?: string;\n priority?: CommunicationPriority;\n actions?: CommunicationNotificationAction[];\n}\n\nexport interface CommunicationSendResult {\n communicationId: string;\n deliveryId: string;\n status: CommunicationDeliveryStatus;\n}\n\nexport interface CommunicationDeliverPayload {\n deliveryId: string;\n communicationId: string;\n tenantId: string;\n}\n\nexport interface CommunicationDeliverResult {\n deliveryId: string;\n status: CommunicationDeliveryStatus;\n messageId?: string;\n}\n\nexport interface CommunicationSmtpTestInput {\n recipientAddress: string;\n}\n\nexport interface CommunicationSmtpTestResult {\n recipientAddress: string;\n messageId?: string;\n}\n\n//#endregion\n","//#region ---- Communication message helpers ----\n\nimport type { CommunicationMessage } from './communication.types';\n\nexport function resolveCommunicationMessage(\n communication: Record<string, unknown>,\n fallbackTitle = 'Message',\n): CommunicationMessage {\n const message = communication['message'];\n if (message != null && typeof message === 'object' && !Array.isArray(message)) {\n const nested = message as Record<string, unknown>;\n const subject = typeof nested['subject'] === 'string' ? nested['subject'] : '';\n const body = typeof nested['body'] === 'string' ? nested['body'] : '';\n if (subject || body) {\n return {\n subject: subject || String(communication['title'] ?? fallbackTitle),\n body,\n };\n }\n }\n\n const legacySubject = typeof communication['subject'] === 'string' ? communication['subject'] : '';\n const legacyBody = typeof communication['body'] === 'string' ? communication['body'] : '';\n return {\n subject: legacySubject || String(communication['title'] ?? fallbackTitle),\n body: legacyBody,\n };\n}\n\n//#endregion\n","//#region ---- Communication delivery job title helpers ----\n\nimport type { CommunicationSendInput } from './communication.types';\n\nexport type CommunicationRecipientLabelInput = Pick<\n CommunicationSendInput,\n 'recipientName' | 'recipientAddress' | 'recipientUserId'\n>;\n\nexport function resolveCommunicationRecipientLabel(input: CommunicationRecipientLabelInput): string {\n const name = input.recipientName?.trim();\n if (name) {\n return name;\n }\n\n const address = input.recipientAddress?.trim();\n if (address) {\n return address;\n }\n\n const userId = input.recipientUserId?.trim();\n if (userId) {\n return userId;\n }\n\n return 'Unknown recipient';\n}\n\nexport function formatCommunicationDeliveryJobTitle(\n channelLabel: string,\n input: CommunicationRecipientLabelInput,\n): string {\n return `${channelLabel} — ${resolveCommunicationRecipientLabel(input)}`;\n}\n\n//#endregion\n","//#region ---- In-app engagement types ----\n\nexport interface CommunicationDeliveryEngagementRequest {\n deliveryIds: string[];\n}\n\nexport interface CommunicationDeliveryEngagementResult {\n updatedIds: string[];\n}\n\nexport interface CommunicationDeliveryMutationResult {\n affectedIds: string[];\n}\n\n//#endregion\n","//#region ----- Menu keys -----\n\nexport const AXMCommunicationManagementMenuKeys = {\n Root: 'CommunicationManagement:Menu:Root',\n Communications: 'CommunicationManagement:Menu:Communications',\n} as const;\n\n//#endregion\n","/**\n * Collaboration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPCollaborationPermissionKeys = {\n Access: 'Collaboration:Permission:Access',\n MaintainConversations: 'Collaboration:Permission:MaintainConversations',\n MaintainMeetings: 'Collaboration:Permission:MaintainMeetings',\n MaintainCalendars: 'Collaboration:Permission:MaintainCalendars',\n MaintainCommunications: 'Collaboration:Permission:MaintainCommunications',\n MaintainReservations: 'Collaboration:Permission:MaintainReservations',\n MaintainHelpDesk: 'Collaboration:Permission:MaintainHelpDesk',\n Setup: 'Collaboration:Permission:Setup',\n} as const;\n\nconst maintainCommunications = AXPCollaborationPermissionKeys.MaintainCommunications;\n\n/**\n * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.\n * Legacy flat shape kept so existing imports compile during migration.\n */\nexport const AXMCommunicationManagementPermissionKeys = {\n Management: maintainCommunications,\n Send: maintainCommunications,\n Email: {\n ShowDialog: maintainCommunications,\n Send: maintainCommunications,\n },\n} as const;\n","const config = {\n i18n: 'communication-management',\n};\n\nconst dashboardWidgetId = (segment: string): string =>\n `CommunicationManagement:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n name: 'CommunicationManagement',\n title: '@communication-management:module.title',\n icon: 'fa-light fa-paper-plane',\n },\n entities: {\n communication: {\n name: 'Communications',\n title: '@communication-management:entities.communication.title',\n titlePlural: '@communication-management:entities.communication.plural',\n icon: 'fa-light fa-envelope',\n },\n communicationDelivery: {\n name: 'CommunicationDeliveries',\n title: '@communication-management:entities.communication-delivery.title',\n titlePlural: '@communication-management:entities.communication-delivery.plural',\n icon: 'fa-light fa-truck-fast',\n },\n },\n widgets: {\n myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),\n },\n queries: {\n dashboard: {\n deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',\n },\n },\n} as const;\n\nexport const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;\nexport const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;\n","//#region ---- Server command keys ----\n\nexport const AXMCommunicationManagementServerCommands = {\n Send: 'CommunicationManagement:Server:Send',\n Deliver: 'CommunicationManagement:Server:Deliver',\n InApp: {\n MarkSeen: 'CommunicationManagement:InApp:MarkSeen',\n MarkRead: 'CommunicationManagement:InApp:MarkRead',\n MarkAllRead: 'CommunicationManagement:InApp:MarkAllRead',\n TogglePin: 'CommunicationManagement:InApp:TogglePin',\n Archive: 'CommunicationManagement:InApp:Archive',\n Delete: 'CommunicationManagement:InApp:Delete',\n },\n Smtp: {\n Test: 'CommunicationManagement:Smtp:Test',\n },\n} as const;\n\n//#endregion\n","//#region ---- User notification settings layout (shared with channel extensions) ----\n\n/** Settings group slug → `/:app/settings/user/communication-notifications` */\nexport const AXP_COMMUNICATION_USER_NOTIFICATIONS_SETTINGS_GROUP = 'communication-notifications';\n\n/** Section within {@link AXP_COMMUNICATION_USER_NOTIFICATIONS_SETTINGS_GROUP}. */\nexport const AXP_COMMUNICATION_DELIVERY_CHANNELS_SETTINGS_SECTION = 'delivery-channels';\n\n//#endregion\n","//#region ---- Communication management SMTP settings ----\n\nexport enum AXPCommunicationManagementSettingKeys {\n EmailServer = 'CommunicationManagement:Setting:Email.Server',\n EmailPort = 'CommunicationManagement:Setting:Email.Port',\n EmailUsername = 'CommunicationManagement:Setting:Email.Username',\n EmailPassword = 'CommunicationManagement:Setting:Email.Password',\n EmailFromAddress = 'CommunicationManagement:Setting:Email.FromAddress',\n EmailUseSsl = 'CommunicationManagement:Setting:Email.UseSSL',\n EmailUseTls = 'CommunicationManagement:Setting:Email.UseTLS',\n DebugRedirectEmailAddress = 'CommunicationManagement:Setting:Debug.Redirect.EmailAddress',\n UserChannelInAppEnabled = 'CommunicationManagement:Setting:User.Channel.InApp.Enabled',\n UserChannelEmailEnabled = 'CommunicationManagement:Setting:User.Channel.Email.Enabled',\n}\n\nexport const AXP_COMMUNICATION_USER_NOTIFICATION_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationManagementSettingKeys.UserChannelInAppEnabled]: true,\n [AXPCommunicationManagementSettingKeys.UserChannelEmailEnabled]: true,\n};\n\nexport const AXP_COMMUNICATION_SMTP_SETTING_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationManagementSettingKeys.EmailServer]: '',\n [AXPCommunicationManagementSettingKeys.EmailPort]: 587,\n [AXPCommunicationManagementSettingKeys.EmailUsername]: '',\n [AXPCommunicationManagementSettingKeys.EmailPassword]: '',\n [AXPCommunicationManagementSettingKeys.EmailFromAddress]: '',\n [AXPCommunicationManagementSettingKeys.EmailUseSsl]: false,\n [AXPCommunicationManagementSettingKeys.EmailUseTls]: true,\n [AXPCommunicationManagementSettingKeys.DebugRedirectEmailAddress]: '',\n};\n\nexport interface CommunicationSmtpSettings {\n server: string;\n port: number;\n username: string;\n password: string;\n fromAddress: string;\n useSsl: boolean;\n useTls: boolean;\n}\n\n//#endregion\n","//#region ---- Status definition keys ----\n\n/** Registered client status provider key for logical communications. */\nexport const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';\n\n/** Registered client status provider key for communication deliveries. */\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY =\n 'communication-management.status.communication-delivery';\n\nexport const AXP_COMMUNICATION_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing' as const;\nexport const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed' as const;\nexport const AXP_COMMUNICATION_STATUS_FAILED = 'Failed' as const;\n\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered' as const;\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AA8BA;;ACxBA;MAEa,6BAA6B,GAAG,MAAM,CAAC,+BAA+B;AAEnF;AAEA;MAEa,+BAA+B,GAAG,MAAM,CAAC,iCAAiC;AAOvF;AAEA;MAEa,oCAAoC,GAAG,MAAM,CAAC,sCAAsC;AAOjG;;AChCA;MAkBa,kCAAkC,GAAG,CAAC,QAAQ,EAAE,YAAY;AAGlE,MAAM,2BAA2B,GAA8C;AACpF,IAAA;AACE,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE;AACZ,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,gBAAgB,EAAE,KAAK;AACxB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE;AACZ,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,gBAAgB,EAAE,KAAK;AACxB,SAAA;AACF,KAAA;;AAGH;;AC7CA;AAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,2BAA2B,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CACrE;SAEe,yBAAyB,GAAA;AACvC,IAAA,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/B;AAEM,SAAU,uBAAuB,CAAC,GAAW,EAAA;AACjD,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B;AAEM,SAAU,4BAA4B,CAAC,UAA0C,EAAA;IACrF,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;AAC1C;AAEM,SAAU,6BAA6B,CAAC,GAAW,EAAA;AACvD,IAAA,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC;AAC3E;AAEA;;AC3BA;MAEa,qCAAqC,GAAG,MAAM,CAAC,uCAAuC;AAcnG;;AChBA;AAEO,MAAM,sDAAsD,GACjE;AAEK,MAAM,+CAA+C,GAC1D;AAEF;;ACRA;AA4BA;;AC5BA;AAEO,MAAM,qCAAqC,GAAG;AACnD,IAAA,IAAI,EAAE,4CAA4C;AAClD,IAAA,QAAQ,EAAE,gDAAgD;AAC1D,IAAA,eAAe,EAAE,0CAA0C;AAC3D,IAAA,SAAS,EAAE,oCAAoC;AAC/C,IAAA,eAAe,EAAE,uDAAuD;;AAG1E;;ACVA;AAgHA;;AChHA;SAIgB,2BAA2B,CACzC,aAAsC,EACtC,aAAa,GAAG,SAAS,EAAA;AAEzB,IAAA,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC;AACxC,IAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7E,MAAM,MAAM,GAAG,OAAkC;QACjD,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;AACrE,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO;gBACL,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC;gBACnE,IAAI;aACL;QACH;IACF;IAEA,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,SAAS,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE;IAClG,MAAM,UAAU,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE;IACzF,OAAO;QACL,OAAO,EAAE,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC;AACzE,QAAA,IAAI,EAAE,UAAU;KACjB;AACH;AAEA;;AC7BA;AASM,SAAU,kCAAkC,CAAC,KAAuC,EAAA;IACxF,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE;IACxC,IAAI,IAAI,EAAE;AACR,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE;IAC9C,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,OAAO;IAChB;IAEA,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE;IAC5C,IAAI,MAAM,EAAE;AACV,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,OAAO,mBAAmB;AAC5B;AAEM,SAAU,mCAAmC,CACjD,YAAoB,EACpB,KAAuC,EAAA;IAEvC,OAAO,CAAA,EAAG,YAAY,CAAA,GAAA,EAAM,kCAAkC,CAAC,KAAK,CAAC,EAAE;AACzE;AAEA;;ACnCA;AAcA;;ACdA;AAEO,MAAM,kCAAkC,GAAG;AAChD,IAAA,IAAI,EAAE,mCAAmC;AACzC,IAAA,cAAc,EAAE,6CAA6C;;AAG/D;;ACPA;;;AAGG;AACI,MAAM,8BAA8B,GAAG;AAC5C,IAAA,MAAM,EAAE,iCAAiC;AACzC,IAAA,qBAAqB,EAAE,gDAAgD;AACvE,IAAA,gBAAgB,EAAE,2CAA2C;AAC7D,IAAA,iBAAiB,EAAE,4CAA4C;AAC/D,IAAA,sBAAsB,EAAE,iDAAiD;AACzE,IAAA,oBAAoB,EAAE,+CAA+C;AACrE,IAAA,gBAAgB,EAAE,2CAA2C;AAC7D,IAAA,KAAK,EAAE,gCAAgC;;AAGzC,MAAM,sBAAsB,GAAG,8BAA8B,CAAC,sBAAsB;AAEpF;;;AAGG;AACI,MAAM,wCAAwC,GAAG;AACtD,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,UAAU,EAAE,sBAAsB;AAClC,QAAA,IAAI,EAAE,sBAAsB;AAC7B,KAAA;;;AC3BH,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,0BAA0B;CACjC;AAED,MAAM,iBAAiB,GAAG,CAAC,OAAe,KACxC,CAAA,yCAAA,EAA4C,OAAO,CAAA,CAAE;AAEhD,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,yBAAyB;AAC/B,QAAA,KAAK,EAAE,wCAAwC;AAC/C,QAAA,IAAI,EAAE,yBAAyB;AAChC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,wDAAwD;AAC/D,YAAA,WAAW,EAAE,yDAAyD;AACtE,YAAA,IAAI,EAAE,sBAAsB;AAC7B,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,KAAK,EAAE,iEAAiE;AACxE,YAAA,WAAW,EAAE,kEAAkE;AAC/E,YAAA,IAAI,EAAE,wBAAwB;AAC/B,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,qBAAqB,EAAE,iBAAiB,CAAC,uBAAuB,CAAC;AAClE,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE;AACT,YAAA,mBAAmB,EAAE,uDAAuD;AAC7E,SAAA;AACF,KAAA;;AAGI,MAAM,yBAAyB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI;AACrG,MAAM,kCAAkC,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI;;ACvC7H;AAEO,MAAM,wCAAwC,GAAG;AACtD,IAAA,IAAI,EAAE,qCAAqC;AAC3C,IAAA,OAAO,EAAE,wCAAwC;AACjD,IAAA,KAAK,EAAE;AACL,QAAA,QAAQ,EAAE,wCAAwC;AAClD,QAAA,QAAQ,EAAE,wCAAwC;AAClD,QAAA,WAAW,EAAE,2CAA2C;AACxD,QAAA,SAAS,EAAE,yCAAyC;AACpD,QAAA,OAAO,EAAE,uCAAuC;AAChD,QAAA,MAAM,EAAE,sCAAsC;AAC/C,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,mCAAmC;AAC1C,KAAA;;AAGH;;AClBA;AAEA;AACO,MAAM,mDAAmD,GAAG;AAEnE;AACO,MAAM,oDAAoD,GAAG;AAEpE;;ACRA;IAEY;AAAZ,CAAA,UAAY,qCAAqC,EAAA;AAC/C,IAAA,qCAAA,CAAA,aAAA,CAAA,GAAA,8CAA4D;AAC5D,IAAA,qCAAA,CAAA,WAAA,CAAA,GAAA,4CAAwD;AACxD,IAAA,qCAAA,CAAA,eAAA,CAAA,GAAA,gDAAgE;AAChE,IAAA,qCAAA,CAAA,eAAA,CAAA,GAAA,gDAAgE;AAChE,IAAA,qCAAA,CAAA,kBAAA,CAAA,GAAA,mDAAsE;AACtE,IAAA,qCAAA,CAAA,aAAA,CAAA,GAAA,8CAA4D;AAC5D,IAAA,qCAAA,CAAA,aAAA,CAAA,GAAA,8CAA4D;AAC5D,IAAA,qCAAA,CAAA,2BAAA,CAAA,GAAA,6DAAyF;AACzF,IAAA,qCAAA,CAAA,yBAAA,CAAA,GAAA,4DAAsF;AACtF,IAAA,qCAAA,CAAA,yBAAA,CAAA,GAAA,4DAAsF;AACxF,CAAC,EAXW,qCAAqC,KAArC,qCAAqC,GAAA,EAAA,CAAA,CAAA;AAa1C,MAAM,4CAA4C,GAA4B;AACnF,IAAA,CAAC,qCAAqC,CAAC,uBAAuB,GAAG,IAAI;AACrE,IAAA,CAAC,qCAAqC,CAAC,uBAAuB,GAAG,IAAI;;AAGhE,MAAM,uCAAuC,GAA4B;AAC9E,IAAA,CAAC,qCAAqC,CAAC,WAAW,GAAG,EAAE;AACvD,IAAA,CAAC,qCAAqC,CAAC,SAAS,GAAG,GAAG;AACtD,IAAA,CAAC,qCAAqC,CAAC,aAAa,GAAG,EAAE;AACzD,IAAA,CAAC,qCAAqC,CAAC,aAAa,GAAG,EAAE;AACzD,IAAA,CAAC,qCAAqC,CAAC,gBAAgB,GAAG,EAAE;AAC5D,IAAA,CAAC,qCAAqC,CAAC,WAAW,GAAG,KAAK;AAC1D,IAAA,CAAC,qCAAqC,CAAC,WAAW,GAAG,IAAI;AACzD,IAAA,CAAC,qCAAqC,CAAC,yBAAyB,GAAG,EAAE;;AAavE;;ACzCA;AAEA;AACO,MAAM,uCAAuC,GAAG;AAEvD;AACO,MAAM,gDAAgD,GAC3D;AAEK,MAAM,gCAAgC,GAAG;AACzC,MAAM,mCAAmC,GAAG;AAC5C,MAAM,kCAAkC,GAAG;AAC3C,MAAM,+BAA+B,GAAG;AAExC,MAAM,yCAAyC,GAAG;AAClD,MAAM,2CAA2C,GAAG;AAE3D;;ACjBA;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-communication-management-client-contracts.mjs","sources":["../../../../libs/modules/communication-management/contracts/src/channels/channel.adapter.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.registration.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.types.ts","../../../../libs/modules/communication-management/contracts/src/channels/channel.registry.ts","../../../../libs/modules/communication-management/contracts/src/channels/debug-redirect.registration.ts","../../../../libs/modules/communication-management/contracts/src/communication-email.keys.ts","../../../../libs/modules/communication-management/contracts/src/communication-email.types.ts","../../../../libs/modules/communication-management/contracts/src/commands.keys.ts","../../../../libs/modules/communication-management/contracts/src/communication.types.ts","../../../../libs/modules/communication-management/contracts/src/communication-message.util.ts","../../../../libs/modules/communication-management/contracts/src/communication-delivery-job-title.util.ts","../../../../libs/modules/communication-management/contracts/src/engagement.types.ts","../../../../libs/modules/communication-management/contracts/src/menu.keys.ts","../../../../libs/modules/communication-management/contracts/src/permission.keys.ts","../../../../libs/modules/communication-management/contracts/src/root-config.ts","../../../../libs/modules/communication-management/contracts/src/server-commands.ts","../../../../libs/modules/communication-management/contracts/src/communication-user-notifications-settings.constants.ts","../../../../libs/modules/communication-management/contracts/src/settings.keys.ts","../../../../libs/modules/communication-management/contracts/src/status.keys.ts","../../../../libs/modules/communication-management/contracts/src/acorex-platform-module-communication-management-client-contracts.ts"],"sourcesContent":["import type {\n CommunicationAggregateStatus,\n CommunicationDeliveryStatus,\n CommunicationSendInput,\n} from '../communication.types';\nimport type { CommunicationChannelDefinition } from './channel.types';\n\n//#region ---- Channel adapter port (Phase 2+) ----\n\nexport interface CommunicationChannelAdapterContext {\n communicationId: string;\n deliveryId: string;\n input: CommunicationSendInput;\n channel: CommunicationChannelDefinition;\n now: Date;\n}\n\nexport interface CommunicationChannelDeliverResult {\n status: CommunicationDeliveryStatus;\n sentAt?: Date | null;\n deliveredAt?: Date | null;\n timelineLines: string[];\n communicationStatus: CommunicationAggregateStatus;\n}\n\nexport interface CommunicationChannelAdapter {\n readonly channelKey: string;\n deliver(context: CommunicationChannelAdapterContext): Promise<CommunicationChannelDeliverResult>;\n}\n\n//#endregion\n","import type {\n CommunicationDeliverPayload,\n CommunicationDeliverResult,\n CommunicationSendInput,\n} from '../communication.types';\n\n//#region ---- Channel adapter registration ----\n\nexport const COMMUNICATION_CHANNEL_ADAPTER = Symbol('COMMUNICATION_CHANNEL_ADAPTER');\n\n//#endregion\n\n//#region ---- Delivery executor registration ----\n\nexport const COMMUNICATION_DELIVERY_EXECUTOR = Symbol('COMMUNICATION_DELIVERY_EXECUTOR');\n\nexport interface CommunicationDeliveryExecutor {\n readonly channelKey: string;\n execute(payload: CommunicationDeliverPayload): Promise<CommunicationDeliverResult>;\n}\n\n//#endregion\n\n//#region ---- Send validation registration ----\n\nexport const COMMUNICATION_CHANNEL_SEND_VALIDATOR = Symbol('COMMUNICATION_CHANNEL_SEND_VALIDATOR');\n\nexport interface CommunicationChannelSendValidator {\n readonly channelKey: string;\n validate(input: CommunicationSendInput): void;\n}\n\n//#endregion\n","//#region ---- Channel capabilities ----\n\nexport interface CommunicationChannelCapabilities {\n deliveryConfirmation: boolean;\n deliveryReceipt: boolean;\n seenTracking: boolean;\n readReceipt: boolean;\n replyTracking: boolean;\n webhookCallbacks: boolean;\n}\n\nexport interface CommunicationChannelDefinition {\n key: string;\n title: string;\n builtIn: boolean;\n capabilities: CommunicationChannelCapabilities;\n}\n\nexport const COMMUNICATION_BUILTIN_CHANNEL_KEYS = ['in-app', 'email-smtp'] as const;\nexport type CommunicationBuiltinChannelKey = (typeof COMMUNICATION_BUILTIN_CHANNEL_KEYS)[number];\n\nexport const BUILTIN_CHANNEL_DEFINITIONS: readonly CommunicationChannelDefinition[] = [\n {\n key: 'in-app',\n title: 'In-App',\n builtIn: true,\n capabilities: {\n deliveryConfirmation: true,\n deliveryReceipt: true,\n seenTracking: true,\n readReceipt: true,\n replyTracking: false,\n webhookCallbacks: false,\n },\n },\n {\n key: 'email-smtp',\n title: 'Email (SMTP)',\n builtIn: true,\n capabilities: {\n deliveryConfirmation: true,\n deliveryReceipt: false,\n seenTracking: false,\n readReceipt: false,\n replyTracking: false,\n webhookCallbacks: false,\n },\n },\n] as const;\n\n//#endregion\n","import {\n BUILTIN_CHANNEL_DEFINITIONS,\n type CommunicationChannelDefinition,\n} from './channel.types';\n\n//#region ---- Built-in channel registry ----\n\nconst registry = new Map<string, CommunicationChannelDefinition>(\n BUILTIN_CHANNEL_DEFINITIONS.map((channel) => [channel.key, channel]),\n);\n\nexport function listCommunicationChannels(): CommunicationChannelDefinition[] {\n return [...registry.values()];\n}\n\nexport function getCommunicationChannel(key: string): CommunicationChannelDefinition | undefined {\n return registry.get(key);\n}\n\nexport function registerCommunicationChannel(definition: CommunicationChannelDefinition): void {\n registry.set(definition.key, definition);\n}\n\nexport function isBuiltInCommunicationChannel(key: string): boolean {\n return BUILTIN_CHANNEL_DEFINITIONS.some((channel) => channel.key === key);\n}\n\n//#endregion\n","//#region ---- Debug redirect resolver registration ----\n\nexport const COMMUNICATION_DEBUG_REDIRECT_RESOLVER = Symbol('COMMUNICATION_DEBUG_REDIRECT_RESOLVER');\n\nexport interface CommunicationDebugRedirectResolver {\n readonly channelKey: string;\n resolveOverride(tenantId: string): Promise<string | null>;\n}\n\nexport interface CommunicationDebugRedirectResult {\n effectiveRecipient: string | null;\n redirected: boolean;\n skipped: boolean;\n timelineNote?: string;\n}\n\n//#endregion\n","//#region ---- Email command keys ----\n\nexport const COMMUNICATION_MANAGEMENT_EMAIL_SHOW_DIALOG_COMMAND_KEY =\n 'CommunicationManagement:Email:ShowDialog' as const;\n\nexport const COMMUNICATION_MANAGEMENT_EMAIL_SEND_COMMAND_KEY =\n 'CommunicationManagement:Email:Send' as const;\n\n//#endregion\n","//#region ---- Email compose types ----\n\n/** Opens the send-email layout dialog (optional text template pre-render). */\nexport interface CommunicationManagementEmailShowDialogInput {\n dialogTitle?: string;\n to?: string;\n cc?: string;\n bcc?: string;\n subject?: string;\n body?: string;\n textTemplateId?: string;\n data?: Record<string, unknown>;\n}\n\nexport interface CommunicationManagementEmailSendInput {\n to: string;\n cc?: string;\n bcc?: string;\n subject: string;\n body: string;\n textTemplateId?: string;\n}\n\nexport interface CommunicationManagementEmailSendResult {\n communicationId: string;\n deliveryId: string;\n}\n\n//#endregion\n","//#region ---- Client command keys ----\n\nexport const AXMCommunicationManagementCommandKeys = {\n Send: 'CommunicationManagement:Communication:Send',\n TestSmtp: 'CommunicationManagement:Communication:TestSmtp',\n EmailShowDialog: 'CommunicationManagement:Email:ShowDialog',\n EmailSend: 'CommunicationManagement:Email:Send',\n ShowSentMessage: 'CommunicationManagement:Communication:ShowSentMessage',\n} as const;\n\n//#endregion\n","//#region ---- Communication domain types ----\n\nexport type CommunicationAggregateStatus = 'Pending' | 'Processing' | 'Completed' | 'Failed' | 'Cancelled';\n\nexport type CommunicationDeliveryStatus =\n | 'Pending'\n | 'Queued'\n | 'Processing'\n | 'Accepted'\n | 'Sent'\n | 'Delivered'\n | 'Failed'\n | 'RetryScheduled'\n | 'Cancelled'\n | 'DeadLettered';\n\nexport interface CommunicationMessage {\n subject: string;\n body: string;\n}\n\nexport interface CommunicationNotificationAction {\n title: string;\n command: {\n name: string;\n options?: Record<string, unknown>;\n };\n}\n\nexport type CommunicationPriority = 'Notice' | 'Danger' | 'Warning';\n\nexport interface AXMCommunicationModel {\n id: string;\n title: string;\n message?: CommunicationMessage;\n definitionKey?: string;\n correlationId?: string;\n idempotencyKey?: string;\n actions?: CommunicationNotificationAction[];\n status: CommunicationAggregateStatus;\n primaryChannel?: string;\n recipientSummary?: string;\n priority?: CommunicationPriority;\n}\n\nexport interface AXMCommunicationDeliveryModel {\n id: string;\n communicationId: string;\n channel: string;\n providerKey?: string;\n status: CommunicationDeliveryStatus;\n recipientUserId?: string;\n recipientAddress?: string;\n /** Provider-assigned message id (SMTP Message-ID, Telegram message_id, WhatsApp wamid, etc.). */\n providerMessageId?: string | null;\n sentAt?: Date | null;\n deliveredAt?: Date | null;\n seenAt?: Date | null;\n readAt?: Date | null;\n repliedAt?: Date | null;\n isPinned?: boolean;\n archivedAt?: Date | null;\n timelineSummary?: string;\n}\n\nexport interface CommunicationSendInput {\n title: string;\n message: CommunicationMessage;\n channel: string;\n recipientUserId?: string;\n recipientAddress?: string;\n /** Human-readable recipient label (e.g. employee full name) for summaries and job titles. */\n recipientName?: string;\n /**\n * Tenant scope for system/unauthenticated sends (e.g. public password-reset).\n * When omitted, channel adapters use the authenticated session tenant.\n */\n tenantId?: string;\n definitionKey?: string;\n correlationId?: string;\n idempotencyKey?: string;\n priority?: CommunicationPriority;\n actions?: CommunicationNotificationAction[];\n /**\n * When true, in-app debug redirect must not rewrite the recipient.\n * Required for conversation chat rows created in the sender's HTTP session.\n */\n bypassDebugRedirect?: boolean;\n}\n\nexport interface CommunicationSendResult {\n communicationId: string;\n deliveryId: string;\n status: CommunicationDeliveryStatus;\n}\n\nexport interface CommunicationDeliverPayload {\n deliveryId: string;\n communicationId: string;\n tenantId: string;\n}\n\nexport interface CommunicationDeliverResult {\n deliveryId: string;\n status: CommunicationDeliveryStatus;\n messageId?: string;\n}\n\nexport interface CommunicationSmtpTestInput {\n recipientAddress: string;\n}\n\nexport interface CommunicationSmtpTestResult {\n recipientAddress: string;\n messageId?: string;\n}\n\n//#endregion\n","//#region ---- Communication message helpers ----\n\nimport type { CommunicationMessage } from './communication.types';\n\nexport function resolveCommunicationMessage(\n communication: Record<string, unknown>,\n fallbackTitle = 'Message',\n): CommunicationMessage {\n const message = communication['message'];\n if (message != null && typeof message === 'object' && !Array.isArray(message)) {\n const nested = message as Record<string, unknown>;\n const subject = typeof nested['subject'] === 'string' ? nested['subject'] : '';\n const body = typeof nested['body'] === 'string' ? nested['body'] : '';\n if (subject || body) {\n return {\n subject: subject || String(communication['title'] ?? fallbackTitle),\n body,\n };\n }\n }\n\n const legacySubject = typeof communication['subject'] === 'string' ? communication['subject'] : '';\n const legacyBody = typeof communication['body'] === 'string' ? communication['body'] : '';\n return {\n subject: legacySubject || String(communication['title'] ?? fallbackTitle),\n body: legacyBody,\n };\n}\n\n//#endregion\n","//#region ---- Communication delivery job title helpers ----\n\nimport type { CommunicationSendInput } from './communication.types';\n\nexport type CommunicationRecipientLabelInput = Pick<\n CommunicationSendInput,\n 'recipientName' | 'recipientAddress' | 'recipientUserId'\n>;\n\nexport function resolveCommunicationRecipientLabel(input: CommunicationRecipientLabelInput): string {\n const name = input.recipientName?.trim();\n if (name) {\n return name;\n }\n\n const address = input.recipientAddress?.trim();\n if (address) {\n return address;\n }\n\n const userId = input.recipientUserId?.trim();\n if (userId) {\n return userId;\n }\n\n return 'Unknown recipient';\n}\n\nexport function formatCommunicationDeliveryJobTitle(\n channelLabel: string,\n input: CommunicationRecipientLabelInput,\n): string {\n return `${channelLabel} — ${resolveCommunicationRecipientLabel(input)}`;\n}\n\n//#endregion\n","//#region ---- In-app engagement types ----\n\nexport interface CommunicationDeliveryEngagementRequest {\n deliveryIds: string[];\n}\n\nexport interface CommunicationDeliveryEngagementResult {\n updatedIds: string[];\n}\n\nexport interface CommunicationDeliveryMutationResult {\n affectedIds: string[];\n}\n\n//#endregion\n","//#region ----- Menu keys -----\n\nexport const AXMCommunicationManagementMenuKeys = {\n Root: 'CommunicationManagement:Menu:Root',\n Communications: 'CommunicationManagement:Menu:Communications',\n} as const;\n\n//#endregion\n","/**\n * Collaboration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPCollaborationPermissionKeys = {\n Access: 'Collaboration:Permission:Access',\n MaintainConversations: 'Collaboration:Permission:MaintainConversations',\n MaintainMeetings: 'Collaboration:Permission:MaintainMeetings',\n MaintainCalendars: 'Collaboration:Permission:MaintainCalendars',\n MaintainCommunications: 'Collaboration:Permission:MaintainCommunications',\n MaintainReservations: 'Collaboration:Permission:MaintainReservations',\n MaintainHelpDesk: 'Collaboration:Permission:MaintainHelpDesk',\n Setup: 'Collaboration:Permission:Setup',\n} as const;\n\nconst maintainCommunications = AXPCollaborationPermissionKeys.MaintainCommunications;\n\n/**\n * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.\n * Legacy flat shape kept so existing imports compile during migration.\n */\nexport const AXMCommunicationManagementPermissionKeys = {\n Management: maintainCommunications,\n Send: maintainCommunications,\n Email: {\n ShowDialog: maintainCommunications,\n Send: maintainCommunications,\n },\n} as const;\n","const config = {\n i18n: 'communication-management',\n};\n\nconst dashboardWidgetId = (segment: string): string =>\n `CommunicationManagement:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n name: 'CommunicationManagement',\n title: '@communication-management:module.title',\n icon: 'fa-light fa-paper-plane',\n },\n entities: {\n communication: {\n name: 'Communications',\n title: '@communication-management:entities.communication.title',\n titlePlural: '@communication-management:entities.communication.plural',\n icon: 'fa-light fa-envelope',\n },\n communicationDelivery: {\n name: 'CommunicationDeliveries',\n title: '@communication-management:entities.communication-delivery.title',\n titlePlural: '@communication-management:entities.communication-delivery.plural',\n icon: 'fa-light fa-truck-fast',\n },\n },\n widgets: {\n myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),\n },\n queries: {\n dashboard: {\n deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',\n },\n },\n} as const;\n\nexport const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;\nexport const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;\n","//#region ---- Server command keys ----\n\nexport const AXMCommunicationManagementServerCommands = {\n Send: 'CommunicationManagement:Server:Send',\n Deliver: 'CommunicationManagement:Server:Deliver',\n InApp: {\n MarkSeen: 'CommunicationManagement:InApp:MarkSeen',\n MarkRead: 'CommunicationManagement:InApp:MarkRead',\n MarkAllRead: 'CommunicationManagement:InApp:MarkAllRead',\n TogglePin: 'CommunicationManagement:InApp:TogglePin',\n Archive: 'CommunicationManagement:InApp:Archive',\n Delete: 'CommunicationManagement:InApp:Delete',\n },\n Smtp: {\n Test: 'CommunicationManagement:Smtp:Test',\n },\n} as const;\n\n//#endregion\n","//#region ---- User notification settings layout (shared with channel extensions) ----\n\n/** Settings group slug → `/:app/settings/user/communication-notifications` */\nexport const AXP_COMMUNICATION_USER_NOTIFICATIONS_SETTINGS_GROUP = 'communication-notifications';\n\n/** Section within {@link AXP_COMMUNICATION_USER_NOTIFICATIONS_SETTINGS_GROUP}. */\nexport const AXP_COMMUNICATION_DELIVERY_CHANNELS_SETTINGS_SECTION = 'delivery-channels';\n\n//#endregion\n","//#region ---- Communication management SMTP settings ----\n\nexport enum AXPCommunicationManagementSettingKeys {\n EmailServer = 'CommunicationManagement:Setting:Email.Server',\n EmailPort = 'CommunicationManagement:Setting:Email.Port',\n EmailUsername = 'CommunicationManagement:Setting:Email.Username',\n EmailPassword = 'CommunicationManagement:Setting:Email.Password',\n EmailFromAddress = 'CommunicationManagement:Setting:Email.FromAddress',\n EmailUseSsl = 'CommunicationManagement:Setting:Email.UseSSL',\n EmailUseTls = 'CommunicationManagement:Setting:Email.UseTLS',\n DebugRedirectEmailAddress = 'CommunicationManagement:Setting:Debug.Redirect.EmailAddress',\n UserChannelInAppEnabled = 'CommunicationManagement:Setting:User.Channel.InApp.Enabled',\n UserChannelEmailEnabled = 'CommunicationManagement:Setting:User.Channel.Email.Enabled',\n}\n\nexport const AXP_COMMUNICATION_USER_NOTIFICATION_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationManagementSettingKeys.UserChannelInAppEnabled]: true,\n [AXPCommunicationManagementSettingKeys.UserChannelEmailEnabled]: true,\n};\n\nexport const AXP_COMMUNICATION_SMTP_SETTING_DEFAULTS: Record<string, unknown> = {\n [AXPCommunicationManagementSettingKeys.EmailServer]: '',\n [AXPCommunicationManagementSettingKeys.EmailPort]: 587,\n [AXPCommunicationManagementSettingKeys.EmailUsername]: '',\n [AXPCommunicationManagementSettingKeys.EmailPassword]: '',\n [AXPCommunicationManagementSettingKeys.EmailFromAddress]: '',\n [AXPCommunicationManagementSettingKeys.EmailUseSsl]: false,\n [AXPCommunicationManagementSettingKeys.EmailUseTls]: true,\n [AXPCommunicationManagementSettingKeys.DebugRedirectEmailAddress]: '',\n};\n\nexport interface CommunicationSmtpSettings {\n server: string;\n port: number;\n username: string;\n password: string;\n fromAddress: string;\n useSsl: boolean;\n useTls: boolean;\n}\n\n//#endregion\n","//#region ---- Status definition keys ----\n\n/** Registered client status provider key for logical communications. */\nexport const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';\n\n/** Registered client status provider key for communication deliveries. */\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY =\n 'communication-management.status.communication-delivery';\n\nexport const AXP_COMMUNICATION_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing' as const;\nexport const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed' as const;\nexport const AXP_COMMUNICATION_STATUS_FAILED = 'Failed' as const;\n\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered' as const;\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { f as AXMCommunicationManagementMenuProvider, g as AXMCommunicationManagementModule, h as AXMCommunicationManagementPermissionDefinitionProvider, i as AXMCommunicationManagementSearchCommandProvider, j as AXPCommunicationInAppInboxWidgetViewComponent, d as AXPCommunicationManagementClient, A as AXPInAppInboxConnectorService, c as AXPInAppInboxItemComponent, k as AXPInAppInboxPanelComponent, e as AXPInAppInboxRealtimeService, l as AXPInAppInboxSlotComponent, m as AXPMyInAppInboxDashboardWidget, n as AXP_IN_APP_INBOX_CONFIG, b as AXP_IN_APP_INBOX_I18N, o as AXP_IN_APP_INBOX_LEGACY_DB_NAME, p as AXP_IN_APP_INBOX_LOCAL_ENTITY_KEY, q as AXP_IN_APP_INBOX_LOCAL_MAX_ITEMS, r as AXP_IN_APP_INBOX_PORT, s as AXP_IN_APP_INBOX_SYNC_STATUS, t as AXP_MY_IN_APP_INBOX_DASHBOARD_DIMENSIONS, u as buildMyInAppInboxDashboardWidget, v as filterInAppInboxItemsLocally, w as getInAppInboxPriorityClass, x as isArchiveCategoryFilter, y as isInAppInboxUnread, z as isInAppInboxUnseen, B as normalizeInAppInboxItem, C as resolveCommunicationDeliveryChannelsSettingsSection, D as sortInAppInboxItems } from './acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-09UhY2Rc.mjs';
1
+ export { f as AXMCommunicationManagementMenuProvider, g as AXMCommunicationManagementModule, h as AXMCommunicationManagementPermissionDefinitionProvider, i as AXMCommunicationManagementSearchCommandProvider, j as AXPCommunicationInAppInboxWidgetViewComponent, d as AXPCommunicationManagementClient, A as AXPInAppInboxConnectorService, c as AXPInAppInboxItemComponent, k as AXPInAppInboxPanelComponent, e as AXPInAppInboxRealtimeService, l as AXPInAppInboxSlotComponent, m as AXPMyInAppInboxDashboardWidget, n as AXP_IN_APP_INBOX_CONFIG, b as AXP_IN_APP_INBOX_I18N, o as AXP_IN_APP_INBOX_LEGACY_DB_NAME, p as AXP_IN_APP_INBOX_LOCAL_ENTITY_KEY, q as AXP_IN_APP_INBOX_LOCAL_MAX_ITEMS, r as AXP_IN_APP_INBOX_PORT, s as AXP_IN_APP_INBOX_SYNC_STATUS, t as AXP_MY_IN_APP_INBOX_DASHBOARD_DIMENSIONS, u as buildMyInAppInboxDashboardWidget, v as dedupeInAppInboxItems, w as filterInAppInboxItemsLocally, x as getInAppInboxPriorityClass, y as isArchiveCategoryFilter, z as isInAppInboxUnread, B as isInAppInboxUnseen, C as normalizeInAppInboxItem, D as resolveCommunicationDeliveryChannelsSettingsSection, E as sortInAppInboxItems } from './acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-G4wzzccx.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-communication-management-client.mjs.map
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-communication-management-client",
3
- "version": "0.0.28",
3
+ "version": "0.0.32",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-dashboard-management-client": "0.0.28",
7
- "@acorex-platform/module-organization-management-client": "0.0.28",
6
+ "@acorex-platform/module-dashboard-management-client": "0.0.32",
7
+ "@acorex-platform/module-organization-management-client": "0.0.32",
8
8
  "@angular/common": "^21.0.0 || ^22.0.0",
9
9
  "@angular/core": "^21.0.0 || ^22.0.0"
10
10
  },
@@ -62,6 +62,11 @@ interface CommunicationSendInput {
62
62
  idempotencyKey?: string;
63
63
  priority?: CommunicationPriority;
64
64
  actions?: CommunicationNotificationAction[];
65
+ /**
66
+ * When true, in-app debug redirect must not rewrite the recipient.
67
+ * Required for conversation chat rows created in the sender's HTTP session.
68
+ */
69
+ bypassDebugRedirect?: boolean;
65
70
  }
66
71
  interface CommunicationSendResult {
67
72
  communicationId: string;
@@ -164,7 +169,7 @@ interface CommunicationManagementEmailShowDialogInput {
164
169
  subject?: string;
165
170
  body?: string;
166
171
  textTemplateId?: string;
167
- merge?: Record<string, string>;
172
+ data?: Record<string, unknown>;
168
173
  }
169
174
  interface CommunicationManagementEmailSendInput {
170
175
  to: string;
@@ -10,6 +10,8 @@ import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layou
10
10
  import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
11
11
  import { AXPUserReference, AXPFilterQuery, AXPPagedListResult } from '@acorex-platform/framework-shared/core';
12
12
  import * as rxjs from 'rxjs';
13
+ import * as _ngrx_signals from '@ngrx/signals';
14
+ import * as _acorex_platform_framework_client_themes_shared from '@acorex-platform/framework-client/themes/shared';
13
15
  import * as _acorex_platform_framework_client_common from '@acorex-platform/framework-client/common';
14
16
  import { AXPSettingDefinitionProviderContext, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex-platform/framework-client/common';
15
17
  import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
@@ -80,6 +82,9 @@ interface AXPInAppInboxItem {
80
82
  isPinned?: boolean;
81
83
  category?: string;
82
84
  definitionKey?: string;
85
+ correlationId?: string;
86
+ /** Delivery recipient; used to keep the local inbox scoped to the signed-in user. */
87
+ recipientUserId?: string;
83
88
  archivedAt?: Date | null;
84
89
  actions?: Array<{
85
90
  title: string;
@@ -137,6 +142,8 @@ declare function isInAppInboxUnread(readAt: Date | null | undefined): boolean;
137
142
  declare function isInAppInboxUnseen(seenAt: Date | null | undefined): boolean;
138
143
  declare function getInAppInboxPriorityClass(priority: AXPInAppInboxPriority | undefined): string;
139
144
  declare function sortInAppInboxItems<T extends AXPInAppInboxItem>(items: T[]): T[];
145
+ /** Collapse duplicate chat-message rows that share the same correlation id. */
146
+ declare function dedupeInAppInboxItems<T extends AXPInAppInboxItem>(items: T[]): T[];
140
147
  declare function normalizeInAppInboxItem<T extends Partial<AXPInAppInboxItem>>(item: T): AXPInAppInboxItem;
141
148
 
142
149
  /**
@@ -234,6 +241,22 @@ declare class AXPInAppInboxConnectorService {
234
241
  togglePin(id: string): Promise<void>;
235
242
  archive(ids: string[]): Promise<void>;
236
243
  deleteOne(id: string): Promise<void>;
244
+ /** Removes in-app deliveries whose communication correlation id matches (best-effort). */
245
+ dismissByCorrelationId(correlationId: string): Promise<void>;
246
+ /** Removes in-app deliveries whose correlation id starts with the prefix (e.g. chat thread). */
247
+ dismissByCorrelationIdPrefix(correlationIdPrefix: string): Promise<void>;
248
+ /**
249
+ * Upserts rows into the local hot inbox without a server round-trip.
250
+ * Used for optimistic chat previews while Communication:Send persists the delivery.
251
+ */
252
+ upsertLocalItems(items: AXPInAppInboxItem[]): Promise<void>;
253
+ /** Drops local-only rows (e.g. optimistic chat placeholders) without calling the API. */
254
+ removeLocalIds(ids: string[]): Promise<void>;
255
+ /**
256
+ * After Communication:Send, swap the optimistic chat row for the real delivery when
257
+ * the recipient can read it. If the delivery is not visible yet, keep the local preview.
258
+ */
259
+ replacePendingChatWithDelivery(pendingId: string, deliveryId: string): Promise<void>;
237
260
  private bootstrap;
238
261
  private syncActiveFromServer;
239
262
  private syncActiveFromServerInternal;
@@ -244,8 +267,10 @@ declare class AXPInAppInboxConnectorService {
244
267
  private canLoadInbox;
245
268
  private clearInboxState;
246
269
  private readLocalItems;
270
+ private resolveDeliveryIdsForCorrelationPrefix;
247
271
  private toPayload;
248
272
  private deleteLegacyInboxDb;
273
+ private isBenignDeliveryDeleteError;
249
274
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPInAppInboxConnectorService, never>;
250
275
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPInAppInboxConnectorService>;
251
276
  }
@@ -276,6 +301,10 @@ declare class AXPInAppInboxItemComponent {
276
301
  protected readonly showItemLeading: _angular_core.Signal<boolean>;
277
302
  protected readonly showItemIcon: _angular_core.Signal<boolean>;
278
303
  protected readonly showItemAvatar: _angular_core.Signal<boolean>;
304
+ protected readonly showDismiss: _angular_core.Signal<boolean>;
305
+ protected readonly showMeta: _angular_core.Signal<boolean>;
306
+ protected readonly bodyIsHtml: _angular_core.Signal<boolean>;
307
+ protected readonly bodyHtml: _angular_core.Signal<string>;
279
308
  itemPress: _angular_core.OutputEmitterRef<string>;
280
309
  markAsRead: _angular_core.OutputEmitterRef<string>;
281
310
  togglePin: _angular_core.OutputEmitterRef<string>;
@@ -326,6 +355,78 @@ declare class AXPInAppInboxPanelComponent implements OnInit {
326
355
  declare class AXPInAppInboxSlotComponent {
327
356
  protected readonly config: _acorex_platform_module_communication_management_client.AXPInAppInboxConfig;
328
357
  protected readonly i18n: _acorex_platform_module_communication_management_client.AXPInAppInboxI18nKeys;
358
+ protected readonly themeStore: {
359
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
360
+ currentPalette: _angular_core.Signal<string>;
361
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
362
+ font: _ngrx_signals.DeepSignal<{
363
+ family: string;
364
+ size: string;
365
+ }>;
366
+ overlayLoading: _angular_core.Signal<boolean>;
367
+ navigationLoading: _angular_core.Signal<boolean>;
368
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
369
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
370
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
371
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
372
+ sideMenuWidth: _angular_core.Signal<number>;
373
+ sideMenuCompactWidth: _angular_core.Signal<number>;
374
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
375
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
376
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
377
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
378
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
379
+ isPrinting: _angular_core.Signal<boolean>;
380
+ isDarkMode: _angular_core.Signal<boolean>;
381
+ isLightMode: _angular_core.Signal<boolean>;
382
+ isSystemMode: _angular_core.Signal<boolean>;
383
+ isSideMenuOpen: _angular_core.Signal<boolean>;
384
+ isOverlayLoading: _angular_core.Signal<boolean>;
385
+ overlayTaskCount: _angular_core.Signal<number>;
386
+ isNavigationLoading: _angular_core.Signal<boolean>;
387
+ isMenuHorizontal: _angular_core.Signal<boolean>;
388
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
389
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
390
+ menuDarkEnabled: _angular_core.Signal<boolean>;
391
+ menuBrandEnabled: _angular_core.Signal<boolean>;
392
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
393
+ headerBrandEnabled: _angular_core.Signal<boolean>;
394
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
395
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
396
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
397
+ openSideMenu: () => void;
398
+ closeSideMenu: () => void;
399
+ setSideMenuWidth: (width: number) => void;
400
+ setSideMenuCompactWidth: (width: number) => void;
401
+ setSideMenuDrawerWidth: (width: number) => void;
402
+ toggleSideMenu: () => void;
403
+ setNavigationLoading: (value: boolean, delay?: number) => void;
404
+ setOverlayLoading: (value: boolean, delay?: number) => void;
405
+ clearOverlayLoading: () => void;
406
+ loadSettings: () => Promise<void>;
407
+ } & _ngrx_signals.StateSource<{
408
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
409
+ currentPalette: string;
410
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
411
+ font: {
412
+ family: string;
413
+ size: string;
414
+ };
415
+ overlayLoading: boolean;
416
+ navigationLoading: boolean;
417
+ overlayLoadingTaskCount: number;
418
+ navigationLoadingTaskCount: number;
419
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
420
+ overlaySideMenuOpen: boolean;
421
+ sideMenuWidth: number;
422
+ sideMenuCompactWidth: number;
423
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
424
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
425
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
426
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
427
+ mainFooterFullWidth: boolean;
428
+ isPrinting: boolean;
429
+ }>;
329
430
  private readonly connector;
330
431
  private readonly syncStatus;
331
432
  protected liveUpdatesOffline: _angular_core.Signal<boolean>;
@@ -356,5 +457,5 @@ declare class AXMCommunicationManagementPermissionDefinitionProvider implements
356
457
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMCommunicationManagementPermissionDefinitionProvider>;
357
458
  }
358
459
 
359
- export { AXMCommunicationManagementMenuProvider, AXMCommunicationManagementModule, AXMCommunicationManagementPermissionDefinitionProvider, AXMCommunicationManagementSearchCommandProvider, AXPCommunicationInAppInboxWidgetViewComponent, AXPCommunicationManagementClient, AXPInAppInboxConnectorService, AXPInAppInboxItemComponent, AXPInAppInboxPanelComponent, AXPInAppInboxRealtimeService, AXPInAppInboxSlotComponent, AXPMyInAppInboxDashboardWidget, AXP_IN_APP_INBOX_CONFIG, AXP_IN_APP_INBOX_I18N, AXP_IN_APP_INBOX_LEGACY_DB_NAME, AXP_IN_APP_INBOX_LOCAL_ENTITY_KEY, AXP_IN_APP_INBOX_LOCAL_MAX_ITEMS, AXP_IN_APP_INBOX_PORT, AXP_IN_APP_INBOX_SYNC_STATUS, AXP_MY_IN_APP_INBOX_DASHBOARD_DIMENSIONS, buildMyInAppInboxDashboardWidget, filterInAppInboxItemsLocally, getInAppInboxPriorityClass, isArchiveCategoryFilter, isInAppInboxUnread, isInAppInboxUnseen, normalizeInAppInboxItem, resolveCommunicationDeliveryChannelsSettingsSection, sortInAppInboxItems };
460
+ export { AXMCommunicationManagementMenuProvider, AXMCommunicationManagementModule, AXMCommunicationManagementPermissionDefinitionProvider, AXMCommunicationManagementSearchCommandProvider, AXPCommunicationInAppInboxWidgetViewComponent, AXPCommunicationManagementClient, AXPInAppInboxConnectorService, AXPInAppInboxItemComponent, AXPInAppInboxPanelComponent, AXPInAppInboxRealtimeService, AXPInAppInboxSlotComponent, AXPMyInAppInboxDashboardWidget, AXP_IN_APP_INBOX_CONFIG, AXP_IN_APP_INBOX_I18N, AXP_IN_APP_INBOX_LEGACY_DB_NAME, AXP_IN_APP_INBOX_LOCAL_ENTITY_KEY, AXP_IN_APP_INBOX_LOCAL_MAX_ITEMS, AXP_IN_APP_INBOX_PORT, AXP_IN_APP_INBOX_SYNC_STATUS, AXP_MY_IN_APP_INBOX_DASHBOARD_DIMENSIONS, buildMyInAppInboxDashboardWidget, dedupeInAppInboxItems, filterInAppInboxItemsLocally, getInAppInboxPriorityClass, isArchiveCategoryFilter, isInAppInboxUnread, isInAppInboxUnseen, normalizeInAppInboxItem, resolveCommunicationDeliveryChannelsSettingsSection, sortInAppInboxItems };
360
461
  export type { AXPInAppInboxCapabilities, AXPInAppInboxChangeEvent, AXPInAppInboxConfig, AXPInAppInboxI18nKeys, AXPInAppInboxItem, AXPInAppInboxListResult$1 as AXPInAppInboxListResult, AXPInAppInboxLoadQuery, AXPInAppInboxPort, AXPInAppInboxPriority, AXPInAppInboxSyncStatus, AXPInAppInboxTabKey };