@memberjunction/ng-conversations 5.43.0 → 5.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +0 -1
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +56 -52
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +37 -41
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +10 -14
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +41 -45
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +22 -36
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +134 -166
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +73 -8
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +487 -123
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +6 -9
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +20 -24
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +10 -11
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +49 -28
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +24 -10
- package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
- package/dist/lib/components/message/message-input-box.component.d.ts +11 -16
- package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input-box.component.js +52 -46
- package/dist/lib/components/message/message-input-box.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +83 -18
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +238 -151
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +10 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +67 -15
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.js +6 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +3 -0
- package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +9 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +45 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +10 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts +46 -0
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js +174 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts +123 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +397 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts +103 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.js +143 -0
- package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts +24 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js +107 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts +89 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.js +253 -0
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +141 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +574 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -0
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +59 -14
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +277 -74
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +28 -27
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +144 -143
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -0
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.js +105 -43
- package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +41 -7
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +216 -102
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +0 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +67 -71
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +364 -44
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +839 -153
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.d.ts +5 -5
- package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts +70 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js +115 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +55 -57
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +165 -143
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +80 -71
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +83 -113
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +270 -0
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-ui-config.js +212 -0
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +2 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +92 -101
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +10 -11
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +12 -15
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +5 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +18 -7
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +29 -26
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +37 -6
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +6 -3
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/models/conversation-state.model.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +2 -2
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +6 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts +17 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +58 -2
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +143 -0
- package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -0
- package/dist/lib/services/realtime-audio-recorder.js +379 -0
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts +75 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.js +205 -0
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -0
- package/dist/lib/services/realtime-session-review.service.d.ts +28 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js +12 -3
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts +210 -20
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +452 -21
- package/dist/lib/services/realtime-session.service.js.map +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +7 -2
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +6 -2
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +62 -0
- package/dist/lib/utils/plan-mode-preference.d.ts.map +1 -0
- package/dist/lib/utils/plan-mode-preference.js +130 -0
- package/dist/lib/utils/plan-mode-preference.js.map +1 -0
- package/dist/public-api.d.ts +6 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +8 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +28 -26
- package/dist/__tests__/attachment-badge.test.d.ts +0 -2
- package/dist/__tests__/attachment-badge.test.d.ts.map +0 -1
- package/dist/__tests__/attachment-badge.test.js +0 -66
- package/dist/__tests__/attachment-badge.test.js.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.d.ts +0 -2
- package/dist/__tests__/channel-optional-surface.test.d.ts.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.js +0 -53
- package/dist/__tests__/channel-optional-surface.test.js.map +0 -1
- package/dist/__tests__/chat-events.test.d.ts +0 -14
- package/dist/__tests__/chat-events.test.d.ts.map +0 -1
- package/dist/__tests__/chat-events.test.js +0 -109
- package/dist/__tests__/chat-events.test.js.map +0 -1
- package/dist/__tests__/collections-full-view.test.d.ts +0 -2
- package/dist/__tests__/collections-full-view.test.d.ts.map +0 -1
- package/dist/__tests__/collections-full-view.test.js +0 -225
- package/dist/__tests__/collections-full-view.test.js.map +0 -1
- package/dist/__tests__/conversation-cache.test.d.ts +0 -2
- package/dist/__tests__/conversation-cache.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-cache.test.js +0 -233
- package/dist/__tests__/conversation-cache.test.js.map +0 -1
- package/dist/__tests__/conversation-naming.test.d.ts +0 -2
- package/dist/__tests__/conversation-naming.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-naming.test.js +0 -110
- package/dist/__tests__/conversation-naming.test.js.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.d.ts +0 -2
- package/dist/__tests__/delegation-result-parser.test.d.ts.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.js +0 -107
- package/dist/__tests__/delegation-result-parser.test.js.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.d.ts +0 -2
- package/dist/__tests__/distinct-artifacts.test.d.ts.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.js +0 -56
- package/dist/__tests__/distinct-artifacts.test.js.map +0 -1
- package/dist/__tests__/event-wiring.test.d.ts +0 -15
- package/dist/__tests__/event-wiring.test.d.ts.map +0 -1
- package/dist/__tests__/event-wiring.test.js +0 -100
- package/dist/__tests__/event-wiring.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/narration-template.test.d.ts +0 -2
- package/dist/__tests__/narration-template.test.d.ts.map +0 -1
- package/dist/__tests__/narration-template.test.js +0 -76
- package/dist/__tests__/narration-template.test.js.map +0 -1
- package/dist/__tests__/notification-model.test.d.ts +0 -2
- package/dist/__tests__/notification-model.test.d.ts.map +0 -1
- package/dist/__tests__/notification-model.test.js +0 -68
- package/dist/__tests__/notification-model.test.js.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts +0 -2
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.js +0 -49
- package/dist/__tests__/realtime-agent-picker-models.test.js.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.d.ts +0 -2
- package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.js +0 -123
- package/dist/__tests__/realtime-audio-visuals.test.js.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +0 -2
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.js +0 -48
- package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.d.ts +0 -2
- package/dist/__tests__/realtime-disclosure.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.js +0 -164
- package/dist/__tests__/realtime-disclosure.test.js.map +0 -1
- package/dist/__tests__/realtime-pairing.test.d.ts +0 -2
- package/dist/__tests__/realtime-pairing.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-pairing.test.js +0 -207
- package/dist/__tests__/realtime-pairing.test.js.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts +0 -2
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.js +0 -154
- package/dist/__tests__/realtime-review-lifecycle.test.js.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.js +0 -230
- package/dist/__tests__/realtime-session-cancel-usage.test.js.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-channels.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.js +0 -252
- package/dist/__tests__/realtime-session-channels.test.js.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.js +0 -103
- package/dist/__tests__/realtime-session-client-tools.test.js.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-minimized.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.js +0 -32
- package/dist/__tests__/realtime-session-minimized.test.js.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-mint.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.js +0 -69
- package/dist/__tests__/realtime-session-mint.test.js.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-policy.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.js +0 -303
- package/dist/__tests__/realtime-session-policy.test.js.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-review.service.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.js +0 -743
- package/dist/__tests__/realtime-session-review.service.test.js.map +0 -1
- package/dist/__tests__/realtime-session-state.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-state.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-state.test.js +0 -83
- package/dist/__tests__/realtime-session-state.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.js +0 -106
- package/dist/__tests__/realtime-session-timeline-card.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.js +0 -142
- package/dist/__tests__/realtime-session-timeline.test.js.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts +0 -19
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.js +0 -188
- package/dist/__tests__/realtime-sessions-adapter.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.js +0 -100
- package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.js +0 -193
- package/dist/__tests__/realtime-surface-tabs-model.test.js.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.js +0 -137
- package/dist/__tests__/remote-browser-audio-player.test.js.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-channel.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.js +0 -585
- package/dist/__tests__/remote-browser-channel.test.js.map +0 -1
- package/dist/__tests__/search-service.test.d.ts +0 -2
- package/dist/__tests__/search-service.test.d.ts.map +0 -1
- package/dist/__tests__/search-service.test.js +0 -114
- package/dist/__tests__/search-service.test.js.map +0 -1
- package/dist/__tests__/slot-defaults.test.d.ts +0 -24
- package/dist/__tests__/slot-defaults.test.d.ts.map +0 -1
- package/dist/__tests__/slot-defaults.test.js +0 -63
- package/dist/__tests__/slot-defaults.test.js.map +0 -1
- package/dist/__tests__/toast-service.test.d.ts +0 -2
- package/dist/__tests__/toast-service.test.d.ts.map +0 -1
- package/dist/__tests__/toast-service.test.js +0 -143
- package/dist/__tests__/toast-service.test.js.map +0 -1
- package/dist/__tests__/user-authorization.test.d.ts +0 -2
- package/dist/__tests__/user-authorization.test.d.ts.map +0 -1
- package/dist/__tests__/user-authorization.test.js +0 -97
- package/dist/__tests__/user-authorization.test.js.map +0 -1
- package/dist/__tests__/voice-session-narration.test.d.ts +0 -2
- package/dist/__tests__/voice-session-narration.test.d.ts.map +0 -1
- package/dist/__tests__/voice-session-narration.test.js +0 -609
- package/dist/__tests__/voice-session-narration.test.js.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.js +0 -101
- package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-channel.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.js +0 -260
- package/dist/__tests__/whiteboard-channel.test.js.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.js +0 -108
- package/dist/__tests__/whiteboard-restore-state.test.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, inject } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { RealtimeSessionService } from '../../services/realtime-session.service';
|
|
@@ -6,135 +6,188 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "@angular/common";
|
|
7
7
|
import * as i2 from "@angular/forms";
|
|
8
8
|
const _c0 = ["dockInput"];
|
|
9
|
-
function
|
|
10
|
-
const
|
|
11
|
-
i0.ɵɵelementStart(0, "
|
|
12
|
-
i0.ɵɵlistener("click", function
|
|
13
|
-
i0.ɵɵelement(
|
|
9
|
+
function RealtimeComposerComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
12
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.DetailsToggled.emit(); return i0.ɵɵresetView(ctx_r2.MoreOpen = false); });
|
|
13
|
+
i0.ɵɵelement(1, "i", 18);
|
|
14
|
+
i0.ɵɵelementStart(2, "small");
|
|
15
|
+
i0.ɵɵtext(3, "Details");
|
|
16
|
+
i0.ɵɵelementEnd()();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
19
|
+
i0.ɵɵclassProp("lean-sheet__btn--on", ctx_r2.DetailsOn);
|
|
20
|
+
i0.ɵɵproperty("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
|
|
21
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.DetailsOn);
|
|
22
|
+
} }
|
|
23
|
+
function RealtimeComposerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
25
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 4)(2, "div", 5);
|
|
26
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_div_click_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
27
|
+
i0.ɵɵconditionalCreate(3, RealtimeComposerComponent_Conditional_0_Conditional_3_Template, 4, 4, "button", 6);
|
|
28
|
+
i0.ɵɵelementStart(4, "button", 7);
|
|
29
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.OpenChanged.emit(true); return i0.ɵɵresetView(ctx_r2.MoreOpen = false); });
|
|
30
|
+
i0.ɵɵelement(5, "i", 8);
|
|
31
|
+
i0.ɵɵelementStart(6, "small");
|
|
32
|
+
i0.ɵɵtext(7, "Type");
|
|
33
|
+
i0.ɵɵelementEnd()()();
|
|
34
|
+
i0.ɵɵelementStart(8, "button", 9);
|
|
35
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_8_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMore($event)); });
|
|
36
|
+
i0.ɵɵelement(9, "i", 10);
|
|
37
|
+
i0.ɵɵelementEnd()();
|
|
38
|
+
i0.ɵɵelementStart(10, "button", 11);
|
|
39
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
|
|
40
|
+
i0.ɵɵelement(11, "i", 12);
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
i0.ɵɵelementStart(12, "button", 13);
|
|
43
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); });
|
|
44
|
+
i0.ɵɵelement(13, "i", 14);
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
i0.ɵɵelementStart(14, "button", 15);
|
|
47
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_0_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.EndRequested.emit()); });
|
|
48
|
+
i0.ɵɵelement(15, "i", 16);
|
|
49
|
+
i0.ɵɵelementEnd()();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
52
|
+
i0.ɵɵadvance();
|
|
53
|
+
i0.ɵɵclassProp("lean-more--open", ctx_r2.MoreOpen);
|
|
54
|
+
i0.ɵɵadvance(2);
|
|
55
|
+
i0.ɵɵconditional(ctx_r2.ShowDetails ? 3 : -1);
|
|
56
|
+
i0.ɵɵadvance(5);
|
|
57
|
+
i0.ɵɵclassProp("lean-ctrl--on", ctx_r2.MoreOpen);
|
|
58
|
+
i0.ɵɵattribute("aria-expanded", ctx_r2.MoreOpen);
|
|
59
|
+
i0.ɵɵadvance(2);
|
|
60
|
+
i0.ɵɵclassProp("lean-ctrl--on", ctx_r2.CaptionsOn);
|
|
61
|
+
i0.ɵɵproperty("title", ctx_r2.CaptionsOn ? "Voice-first \u2014 back to the orb" : "Show the conversation as text");
|
|
62
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.CaptionsOn);
|
|
63
|
+
i0.ɵɵadvance(2);
|
|
64
|
+
i0.ɵɵclassProp("lean-ctrl--muted", ctx_r2.IsMuted);
|
|
65
|
+
i0.ɵɵproperty("title", ctx_r2.IsMuted ? "Unmute microphone" : "Mute microphone");
|
|
66
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.IsMuted);
|
|
67
|
+
i0.ɵɵadvance();
|
|
68
|
+
i0.ɵɵproperty("ngClass", ctx_r2.IsMuted ? "fa-microphone-slash" : "fa-microphone");
|
|
69
|
+
} }
|
|
70
|
+
function RealtimeComposerComponent_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "button", 20);
|
|
73
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Conditional_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.DetailsToggled.emit()); });
|
|
74
|
+
i0.ɵɵelement(2, "i", 18);
|
|
14
75
|
i0.ɵɵelementEnd();
|
|
15
|
-
i0.ɵɵelementStart(3, "span",
|
|
76
|
+
i0.ɵɵelementStart(3, "span", 21);
|
|
16
77
|
i0.ɵɵtext(4, "Details");
|
|
17
78
|
i0.ɵɵelementEnd()();
|
|
18
79
|
} if (rf & 2) {
|
|
19
|
-
const
|
|
80
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
20
81
|
i0.ɵɵadvance();
|
|
21
|
-
i0.ɵɵclassProp("ctrl--on",
|
|
22
|
-
i0.ɵɵproperty("title",
|
|
23
|
-
i0.ɵɵattribute("aria-pressed",
|
|
82
|
+
i0.ɵɵclassProp("ctrl--on", ctx_r2.DetailsOn);
|
|
83
|
+
i0.ɵɵproperty("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Peek at the session panels");
|
|
84
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.DetailsOn);
|
|
24
85
|
} }
|
|
25
|
-
function
|
|
26
|
-
const
|
|
27
|
-
i0.ɵɵelementStart(0, "div",
|
|
28
|
-
i0.ɵɵlistener("click", function
|
|
29
|
-
i0.ɵɵelement(3, "i",
|
|
86
|
+
function RealtimeComposerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "div", 19)(2, "button", 20);
|
|
89
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); });
|
|
90
|
+
i0.ɵɵelement(3, "i", 14);
|
|
30
91
|
i0.ɵɵelementEnd();
|
|
31
|
-
i0.ɵɵelementStart(4, "span",
|
|
92
|
+
i0.ɵɵelementStart(4, "span", 21);
|
|
32
93
|
i0.ɵɵtext(5);
|
|
33
94
|
i0.ɵɵelementEnd()();
|
|
34
|
-
i0.ɵɵelementStart(6, "div",
|
|
35
|
-
i0.ɵɵlistener("click", function
|
|
36
|
-
i0.ɵɵelement(8, "i",
|
|
95
|
+
i0.ɵɵelementStart(6, "div", 19)(7, "button", 20);
|
|
96
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
|
|
97
|
+
i0.ɵɵelement(8, "i", 12);
|
|
37
98
|
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵelementStart(9, "span",
|
|
99
|
+
i0.ɵɵelementStart(9, "span", 21);
|
|
39
100
|
i0.ɵɵtext(10, "Captions");
|
|
40
101
|
i0.ɵɵelementEnd()();
|
|
41
|
-
i0.ɵɵconditionalCreate(11,
|
|
42
|
-
i0.ɵɵelementStart(12, "div",
|
|
43
|
-
i0.ɵɵlistener("click", function
|
|
44
|
-
i0.ɵɵelement(14, "i",
|
|
102
|
+
i0.ɵɵconditionalCreate(11, RealtimeComposerComponent_Conditional_1_Conditional_11_Template, 5, 4, "div", 19);
|
|
103
|
+
i0.ɵɵelementStart(12, "div", 19)(13, "button", 22);
|
|
104
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenChanged.emit(true)); });
|
|
105
|
+
i0.ɵɵelement(14, "i", 8);
|
|
45
106
|
i0.ɵɵelementEnd();
|
|
46
|
-
i0.ɵɵelementStart(15, "span",
|
|
107
|
+
i0.ɵɵelementStart(15, "span", 21);
|
|
47
108
|
i0.ɵɵtext(16, "Type");
|
|
48
109
|
i0.ɵɵelementEnd()();
|
|
49
|
-
i0.ɵɵelementStart(17, "div",
|
|
50
|
-
i0.ɵɵlistener("click", function
|
|
51
|
-
i0.ɵɵelement(19, "i",
|
|
110
|
+
i0.ɵɵelementStart(17, "div", 19)(18, "button", 23);
|
|
111
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_1_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.EndRequested.emit()); });
|
|
112
|
+
i0.ɵɵelement(19, "i", 16);
|
|
52
113
|
i0.ɵɵelementEnd();
|
|
53
|
-
i0.ɵɵelementStart(20, "span",
|
|
114
|
+
i0.ɵɵelementStart(20, "span", 24);
|
|
54
115
|
i0.ɵɵtext(21, "End call");
|
|
55
|
-
i0.ɵɵelementEnd()();
|
|
56
|
-
i0.ɵɵelementStart(22, "span", 13);
|
|
57
|
-
i0.ɵɵelement(23, "i", 9);
|
|
58
|
-
i0.ɵɵtext(24, " press ");
|
|
59
|
-
i0.ɵɵelementStart(25, "kbd");
|
|
60
|
-
i0.ɵɵtext(26, "T");
|
|
61
|
-
i0.ɵɵelementEnd();
|
|
62
|
-
i0.ɵɵtext(27, " to type");
|
|
63
|
-
i0.ɵɵelementEnd()();
|
|
116
|
+
i0.ɵɵelementEnd()()();
|
|
64
117
|
} if (rf & 2) {
|
|
65
|
-
const
|
|
118
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
66
119
|
i0.ɵɵadvance(2);
|
|
67
|
-
i0.ɵɵclassProp("ctrl--muted",
|
|
68
|
-
i0.ɵɵproperty("title",
|
|
69
|
-
i0.ɵɵattribute("aria-pressed",
|
|
120
|
+
i0.ɵɵclassProp("ctrl--muted", ctx_r2.IsMuted);
|
|
121
|
+
i0.ɵɵproperty("title", ctx_r2.IsMuted ? "Unmute microphone" : "Mute microphone");
|
|
122
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.IsMuted);
|
|
70
123
|
i0.ɵɵadvance();
|
|
71
|
-
i0.ɵɵproperty("ngClass",
|
|
124
|
+
i0.ɵɵproperty("ngClass", ctx_r2.IsMuted ? "fa-microphone-slash" : "fa-microphone");
|
|
72
125
|
i0.ɵɵadvance(2);
|
|
73
|
-
i0.ɵɵtextInterpolate(
|
|
126
|
+
i0.ɵɵtextInterpolate(ctx_r2.IsMuted ? "Unmute" : "Mute");
|
|
74
127
|
i0.ɵɵadvance(2);
|
|
75
|
-
i0.ɵɵclassProp("ctrl--on",
|
|
76
|
-
i0.ɵɵproperty("title",
|
|
77
|
-
i0.ɵɵattribute("aria-pressed",
|
|
128
|
+
i0.ɵɵclassProp("ctrl--on", ctx_r2.CaptionsOn);
|
|
129
|
+
i0.ɵɵproperty("title", ctx_r2.CaptionsOn ? "Voice-first \u2014 back to the orb" : "Show the conversation as text");
|
|
130
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.CaptionsOn);
|
|
78
131
|
i0.ɵɵadvance(4);
|
|
79
|
-
i0.ɵɵconditional(
|
|
132
|
+
i0.ɵɵconditional(ctx_r2.ShowDetails ? 11 : -1);
|
|
80
133
|
} }
|
|
81
|
-
function
|
|
82
|
-
const
|
|
83
|
-
i0.ɵɵelementStart(0, "button",
|
|
84
|
-
i0.ɵɵlistener("click", function
|
|
85
|
-
i0.ɵɵelement(1, "i",
|
|
134
|
+
function RealtimeComposerComponent_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
136
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
137
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.DetailsToggled.emit()); });
|
|
138
|
+
i0.ɵɵelement(1, "i", 18);
|
|
86
139
|
i0.ɵɵelementEnd();
|
|
87
140
|
} if (rf & 2) {
|
|
88
|
-
const
|
|
89
|
-
i0.ɵɵclassProp("mini--on",
|
|
90
|
-
i0.ɵɵproperty("title",
|
|
91
|
-
i0.ɵɵattribute("aria-pressed",
|
|
141
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
142
|
+
i0.ɵɵclassProp("mini--on", ctx_r2.DetailsOn);
|
|
143
|
+
i0.ɵɵproperty("title", ctx_r2.DetailsOn ? "Hide the session panels" : "Show the session panels");
|
|
144
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.DetailsOn);
|
|
92
145
|
} }
|
|
93
|
-
function
|
|
94
|
-
const
|
|
95
|
-
i0.ɵɵelementStart(0, "div",
|
|
96
|
-
i0.ɵɵlistener("click", function
|
|
97
|
-
i0.ɵɵelement(3, "i",
|
|
146
|
+
function RealtimeComposerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 25)(2, "button", 26);
|
|
149
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleMute()); });
|
|
150
|
+
i0.ɵɵelement(3, "i", 14);
|
|
98
151
|
i0.ɵɵelementEnd();
|
|
99
|
-
i0.ɵɵelementStart(4, "button",
|
|
100
|
-
i0.ɵɵlistener("click", function
|
|
101
|
-
i0.ɵɵelement(5, "i",
|
|
152
|
+
i0.ɵɵelementStart(4, "button", 26);
|
|
153
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleCaptions()); });
|
|
154
|
+
i0.ɵɵelement(5, "i", 12);
|
|
102
155
|
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵconditionalCreate(6,
|
|
156
|
+
i0.ɵɵconditionalCreate(6, RealtimeComposerComponent_Conditional_2_Conditional_6_Template, 2, 4, "button", 27);
|
|
104
157
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵelementStart(7, "div",
|
|
106
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
107
|
-
i0.ɵɵlistener("keydown", function
|
|
158
|
+
i0.ɵɵelementStart(7, "div", 28)(8, "input", 29, 0);
|
|
159
|
+
i0.ɵɵtwoWayListener("ngModelChange", function RealtimeComposerComponent_Conditional_2_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.Draft, $event) || (ctx_r2.Draft = $event); return i0.ɵɵresetView($event); });
|
|
160
|
+
i0.ɵɵlistener("keydown", function RealtimeComposerComponent_Conditional_2_Template_input_keydown_8_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnKeydown($event)); });
|
|
108
161
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵelementStart(10, "span",
|
|
162
|
+
i0.ɵɵelementStart(10, "span", 30);
|
|
110
163
|
i0.ɵɵtext(11, "\u21B5 send");
|
|
111
164
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(12, "button",
|
|
113
|
-
i0.ɵɵlistener("click", function
|
|
114
|
-
i0.ɵɵelement(13, "i",
|
|
165
|
+
i0.ɵɵelementStart(12, "button", 31);
|
|
166
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Send()); });
|
|
167
|
+
i0.ɵɵelement(13, "i", 32);
|
|
115
168
|
i0.ɵɵelementEnd()();
|
|
116
|
-
i0.ɵɵelementStart(14, "button",
|
|
117
|
-
i0.ɵɵlistener("click", function
|
|
118
|
-
i0.ɵɵelement(15, "i",
|
|
169
|
+
i0.ɵɵelementStart(14, "button", 33);
|
|
170
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_Conditional_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenChanged.emit(false)); });
|
|
171
|
+
i0.ɵɵelement(15, "i", 34);
|
|
119
172
|
i0.ɵɵelementEnd()();
|
|
120
173
|
} if (rf & 2) {
|
|
121
|
-
const
|
|
174
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
122
175
|
i0.ɵɵadvance(2);
|
|
123
|
-
i0.ɵɵclassProp("mini--muted",
|
|
124
|
-
i0.ɵɵproperty("title",
|
|
125
|
-
i0.ɵɵattribute("aria-pressed",
|
|
176
|
+
i0.ɵɵclassProp("mini--muted", ctx_r2.IsMuted);
|
|
177
|
+
i0.ɵɵproperty("title", ctx_r2.IsMuted ? "Unmute microphone" : "Mute microphone");
|
|
178
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.IsMuted);
|
|
126
179
|
i0.ɵɵadvance();
|
|
127
|
-
i0.ɵɵproperty("ngClass",
|
|
180
|
+
i0.ɵɵproperty("ngClass", ctx_r2.IsMuted ? "fa-microphone-slash" : "fa-microphone");
|
|
128
181
|
i0.ɵɵadvance();
|
|
129
|
-
i0.ɵɵclassProp("mini--on",
|
|
130
|
-
i0.ɵɵproperty("title",
|
|
131
|
-
i0.ɵɵattribute("aria-pressed",
|
|
182
|
+
i0.ɵɵclassProp("mini--on", ctx_r2.CaptionsOn);
|
|
183
|
+
i0.ɵɵproperty("title", ctx_r2.CaptionsOn ? "Voice-first \u2014 back to the orb" : "Show the conversation as text");
|
|
184
|
+
i0.ɵɵattribute("aria-pressed", ctx_r2.CaptionsOn);
|
|
132
185
|
i0.ɵɵadvance(2);
|
|
133
|
-
i0.ɵɵconditional(
|
|
186
|
+
i0.ɵɵconditional(ctx_r2.ShowDetails ? 6 : -1);
|
|
134
187
|
i0.ɵɵadvance(2);
|
|
135
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
188
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.Draft);
|
|
136
189
|
i0.ɵɵadvance(4);
|
|
137
|
-
i0.ɵɵproperty("disabled", !
|
|
190
|
+
i0.ɵɵproperty("disabled", !ctx_r2.CanSend);
|
|
138
191
|
} }
|
|
139
192
|
/**
|
|
140
193
|
* The call overlay's BOTTOM DOCK — the progressive-disclosure composer
|
|
@@ -144,8 +197,9 @@ function RealtimeComposerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
|
|
|
144
197
|
* - **Levels 0–1 (phone-call strip)** — big round call controls, centered: Mute, the
|
|
145
198
|
* Captions toggle (level 1+, arriving WITH the text it controls), the Details peek
|
|
146
199
|
* (level 0 paths where the surface panel isn't earned yet — lets the user look at the
|
|
147
|
-
* Activity/Whiteboard panels on demand), and End call.
|
|
148
|
-
*
|
|
200
|
+
* Activity/Whiteboard panels on demand), the Type control, and End call. There's no visible
|
|
201
|
+
* composer yet — the Type control opens it, and so does simply starting to type (the overlay
|
|
202
|
+
* captures the first printable keystroke and seeds it via {@link AppendAndFocus}).
|
|
149
203
|
* - **Level 2+ (the dock)** — mute/captions shrink to compact minis and the in-call text
|
|
150
204
|
* input docks beside them (one bottom bar, per Redesign A's fused composer+controls).
|
|
151
205
|
* Submit calls {@link RealtimeSessionService.SendText}, which injects the text as a user
|
|
@@ -161,6 +215,14 @@ export class RealtimeComposerComponent {
|
|
|
161
215
|
* never becomes permanent chrome. Default closed (voice-first), reset per session.
|
|
162
216
|
*/
|
|
163
217
|
Open = false;
|
|
218
|
+
/**
|
|
219
|
+
* COMPACT (Calm Orb · overlay) presentation: collapse the phone-call strip to the
|
|
220
|
+
* mockup's lean dock — **Mute + End + a "•••"** overflow button. The "•••" blooms a small
|
|
221
|
+
* sheet hosting the secondary actions (Captions / Details / Type). The fused level-2 dock
|
|
222
|
+
* (minis + text input) is unchanged. Fed from the overlay's resolved `Ui.compact`.
|
|
223
|
+
* Default `false` (the full 5-button strip is unchanged).
|
|
224
|
+
*/
|
|
225
|
+
Compact = false;
|
|
164
226
|
/** Emitted when the user opens (Type control / typing) or closes (hide control) the dock. */
|
|
165
227
|
OpenChanged = new EventEmitter();
|
|
166
228
|
/** Whether captions are currently shown (drives the captions control's active state). */
|
|
@@ -175,12 +237,18 @@ export class RealtimeComposerComponent {
|
|
|
175
237
|
DetailsToggled = new EventEmitter();
|
|
176
238
|
/** Emitted when the user ends the call from the strip's End control. */
|
|
177
239
|
EndRequested = new EventEmitter();
|
|
240
|
+
/** Emitted with the new muted state whenever the user toggles the mic from the dock. */
|
|
241
|
+
MuteChanged = new EventEmitter();
|
|
178
242
|
/** Current draft text in the dock's composer input. */
|
|
179
243
|
Draft = '';
|
|
180
|
-
/**
|
|
244
|
+
/**
|
|
245
|
+
* The mic mute state. A two-way reflection: the overlay may push it down (e.g. its
|
|
246
|
+
* `SetMuted()` / focus-pill toggle) so all mute affordances stay in sync, and this
|
|
247
|
+
* component updates it locally + emits {@link MuteChanged} when its own button is used.
|
|
248
|
+
*/
|
|
181
249
|
IsMuted = false;
|
|
182
250
|
dockInput;
|
|
183
|
-
|
|
251
|
+
realtime = inject(RealtimeSessionService);
|
|
184
252
|
/** True when there's non-whitespace text to send. */
|
|
185
253
|
get CanSend() {
|
|
186
254
|
return this.Draft.trim().length > 0;
|
|
@@ -189,25 +257,60 @@ export class RealtimeComposerComponent {
|
|
|
189
257
|
get StripMode() {
|
|
190
258
|
return !this.Open;
|
|
191
259
|
}
|
|
192
|
-
/**
|
|
260
|
+
/**
|
|
261
|
+
* Whether the compact "•••" overflow sheet (Captions / Details / Type) is open. Only used
|
|
262
|
+
* in {@link Compact} strip mode; any outside click or action selection closes it.
|
|
263
|
+
*/
|
|
264
|
+
MoreOpen = false;
|
|
265
|
+
/** Open/close the compact overflow sheet (stops propagation so the outside-click close skips it). */
|
|
266
|
+
ToggleMore(event) {
|
|
267
|
+
event.stopPropagation();
|
|
268
|
+
this.MoreOpen = !this.MoreOpen;
|
|
269
|
+
}
|
|
270
|
+
/** Any outside click closes the compact overflow sheet. */
|
|
271
|
+
OnDocumentClick() {
|
|
272
|
+
if (this.MoreOpen) {
|
|
273
|
+
this.MoreOpen = false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/** Toggle the local microphone mute and surface the new state to the overlay. */
|
|
193
277
|
ToggleMute() {
|
|
194
|
-
this.IsMuted = this.
|
|
278
|
+
this.IsMuted = this.realtime.ToggleMute();
|
|
279
|
+
this.MuteChanged.emit(this.IsMuted);
|
|
195
280
|
}
|
|
196
281
|
/** Toggle captions visibility and notify the overlay. */
|
|
197
282
|
ToggleCaptions() {
|
|
198
283
|
this.CaptionsOn = !this.CaptionsOn;
|
|
199
284
|
this.CaptionsToggled.emit(this.CaptionsOn);
|
|
200
285
|
}
|
|
201
|
-
/** Focuses the dock's text input (the overlay's
|
|
286
|
+
/** Focuses the dock's text input (the overlay's Type control lands here). */
|
|
202
287
|
FocusInput() {
|
|
203
288
|
this.dockInput?.nativeElement.focus();
|
|
204
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* TYPE-TO-COMPOSE: the overlay captured a printable keystroke while nothing was focused, so seed
|
|
292
|
+
* the draft with that character, focus the input, and put the caret at the end — the user just
|
|
293
|
+
* keeps typing and their first key isn't lost. Appends (rather than replaces) so a leftover draft
|
|
294
|
+
* is preserved. The native value is synced inline so the caret math is correct before Angular's
|
|
295
|
+
* next change-detection pass reconciles ngModel.
|
|
296
|
+
*
|
|
297
|
+
* @param text the character(s) to seed (typically the single key that opened the composer).
|
|
298
|
+
*/
|
|
299
|
+
AppendAndFocus(text) {
|
|
300
|
+
this.Draft = (this.Draft ?? '') + text;
|
|
301
|
+
const el = this.dockInput?.nativeElement;
|
|
302
|
+
if (el) {
|
|
303
|
+
el.value = this.Draft;
|
|
304
|
+
el.focus();
|
|
305
|
+
el.setSelectionRange(this.Draft.length, this.Draft.length);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
205
308
|
/** Send the typed text into the live session, then clear the input. */
|
|
206
309
|
Send() {
|
|
207
310
|
if (!this.CanSend) {
|
|
208
311
|
return;
|
|
209
312
|
}
|
|
210
|
-
this.
|
|
313
|
+
this.realtime.SendText(this.Draft);
|
|
211
314
|
this.Draft = '';
|
|
212
315
|
}
|
|
213
316
|
/** Enter sends (Shift+Enter is free for future multiline if the input becomes a textarea). */
|
|
@@ -223,17 +326,21 @@ export class RealtimeComposerComponent {
|
|
|
223
326
|
} if (rf & 2) {
|
|
224
327
|
let _t;
|
|
225
328
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dockInput = _t.first);
|
|
226
|
-
} },
|
|
227
|
-
i0.ɵɵ
|
|
329
|
+
} }, hostBindings: function RealtimeComposerComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
330
|
+
i0.ɵɵlistener("click", function RealtimeComposerComponent_click_HostBindingHandler() { return ctx.OnDocumentClick(); }, i0.ɵɵresolveDocument);
|
|
331
|
+
} }, inputs: { Open: "Open", Compact: "Compact", CaptionsOn: "CaptionsOn", ShowDetails: "ShowDetails", DetailsOn: "DetailsOn", IsMuted: "IsMuted" }, outputs: { OpenChanged: "OpenChanged", CaptionsToggled: "CaptionsToggled", DetailsToggled: "DetailsToggled", EndRequested: "EndRequested", MuteChanged: "MuteChanged" }, decls: 3, vars: 1, consts: [["dockInput", ""], ["role", "group", "aria-label", "Call controls", 1, "dock-lean"], ["role", "group", "aria-label", "Call controls", 1, "strip"], [1, "dock"], [1, "lean-more"], ["role", "menu", "aria-label", "More call controls", 1, "lean-sheet", 3, "click"], ["type", "button", 1, "lean-sheet__btn", 3, "lean-sheet__btn--on", "title"], ["type", "button", "title", "Type into the live session", "aria-label", "Open the typed-input composer", 1, "lean-sheet__btn", 3, "click"], ["aria-hidden", "true", 1, "fa-regular", "fa-keyboard"], ["type", "button", "title", "More controls", "aria-label", "More call controls", 1, "lean-ctrl", "lean-ctrl--more", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-ellipsis"], ["type", "button", 1, "lean-ctrl", "lean-ctrl--more", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-closed-captioning"], ["type", "button", 1, "lean-ctrl", "lean-ctrl--lg", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", 3, "ngClass"], ["type", "button", "title", "End call", "aria-label", "End call", 1, "lean-ctrl", "lean-ctrl--lg", "lean-ctrl--end", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-phone-slash"], ["type", "button", 1, "lean-sheet__btn", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-table-columns"], [1, "ctrl-group"], ["type", "button", 1, "ctrl", 3, "click", "title"], [1, "ctrl-label"], ["type", "button", "title", "Type into the live session", "aria-label", "Open the typed-input composer", 1, "ctrl", 3, "click"], ["type", "button", "title", "End call", "aria-label", "End call", 1, "ctrl", "ctrl--end", 3, "click"], [1, "ctrl-label", "ctrl-label--end"], [1, "dock__minis"], ["type", "button", 1, "mini", 3, "click", "title"], ["type", "button", 1, "mini", 3, "mini--on", "title"], [1, "dock__box"], ["type", "text", "placeholder", "Type into the live session \u2014 joins this same voice call\u2026", "aria-label", "Type a message into the live voice session", 1, "dock__input", 3, "ngModelChange", "keydown", "ngModel"], ["aria-hidden", "true", 1, "dock__hint"], ["type", "button", "title", "Send into live session", "aria-label", "Send", 1, "dock__send", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-paper-plane"], ["type", "button", "title", "Hide typing \u2014 back to the voice controls", "aria-label", "Close the typed-input composer", 1, "mini", "dock__hide", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"]], template: function RealtimeComposerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
+
i0.ɵɵconditionalCreate(0, RealtimeComposerComponent_Conditional_0_Template, 16, 15, "div", 1)(1, RealtimeComposerComponent_Conditional_1_Template, 22, 11, "div", 2)(2, RealtimeComposerComponent_Conditional_2_Template, 16, 12, "div", 3);
|
|
228
333
|
} if (rf & 2) {
|
|
229
|
-
i0.ɵɵconditional(ctx.StripMode ? 0 : 1);
|
|
230
|
-
} }, dependencies: [CommonModule, i1.NgClass, FormsModule, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n\n\n.strip[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding:
|
|
334
|
+
i0.ɵɵconditional(ctx.StripMode && ctx.Compact ? 0 : ctx.StripMode ? 1 : 2);
|
|
335
|
+
} }, dependencies: [CommonModule, i1.NgClass, FormsModule, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n\n\n.strip[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.ctrl[_ngcontent-%COMP%] {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 18px;\n transition: all 150ms ease;\n}\n.ctrl[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.ctrl--on[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n}\n.ctrl--muted[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n.ctrl--end[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n color: var(--mj-text-inverse, #fff);\n font-size: 20px;\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-status-error) 40%, transparent);\n}\n.ctrl--end[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n filter: brightness(0.92);\n}\n\n.ctrl-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: 6px;\n font-weight: 500;\n}\n.ctrl-label--end[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.dock[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: _ngcontent-%COMP%_dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes _ngcontent-%COMP%_dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis[_ngcontent-%COMP%] {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n.mini[_ngcontent-%COMP%] {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 13.5px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n transition: all 140ms ease;\n}\n.mini[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.mini--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.mini--muted[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.dock__box[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-full, 9999px);\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease;\n}\n.dock__box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n}\n.dock__input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send[_ngcontent-%COMP%]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n\n\n.dock__hide[_ngcontent-%COMP%] {\n border-style: dashed;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n.dock__hide[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n.dock-lean[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 14px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n.lean-ctrl[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n border-radius: 50%;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 150ms ease;\n}\n.lean-ctrl[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateY(-1px);\n}\n.lean-ctrl--lg[_ngcontent-%COMP%] {\n width: 58px;\n height: 58px;\n font-size: 19px;\n}\n.lean-ctrl--more[_ngcontent-%COMP%] {\n width: 46px;\n height: 46px;\n font-size: 16px;\n}\n.lean-ctrl--on[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n}\n.lean-ctrl--muted[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n.lean-ctrl--end[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n color: var(--mj-text-inverse, #fff);\n font-size: 20px;\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-status-error) 40%, transparent);\n}\n.lean-ctrl--end[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n filter: brightness(0.94);\n}\n\n\n\n.lean-more[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet[_ngcontent-%COMP%] {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-more--open[_ngcontent-%COMP%] .lean-sheet[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}"] });
|
|
231
336
|
}
|
|
232
337
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RealtimeComposerComponent, [{
|
|
233
338
|
type: Component,
|
|
234
|
-
args: [{ standalone: true, selector: 'mj-realtime-composer', imports: [CommonModule, FormsModule], template: "@if (StripMode) {\n <!-- Levels 0\u20131: phone-call strip \u2014 big round controls, nothing to configure.\n Captions arrives at level 1 WITH the text it controls; Details peeks at the\n surface panels on demand; End stays the deliberate rightmost action. -->\n <div class=\"strip\" role=\"group\" aria-label=\"Call controls\">\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--muted]=\"IsMuted\"\n (click)=\"ToggleMute()\"\n [title]=\"IsMuted ? 'Unmute microphone' : 'Mute microphone'\"\n [attr.aria-pressed]=\"IsMuted\">\n <i class=\"fa-solid\" [ngClass]=\"IsMuted ? 'fa-microphone-slash' : 'fa-microphone'\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">{{ IsMuted ? 'Unmute' : 'Mute' }}</span>\n </div>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--on]=\"CaptionsOn\"\n (click)=\"ToggleCaptions()\"\n [title]=\"CaptionsOn ? 'Voice-first \u2014 back to the orb' : 'Show the conversation as text'\"\n [attr.aria-pressed]=\"CaptionsOn\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Captions</span>\n </div>\n\n @if (ShowDetails) {\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit()\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Details</span>\n </div>\n }\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" (click)=\"OpenChanged.emit(true)\"\n title=\"Type into the live session\" aria-label=\"Open the typed-input composer\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Type</span>\n </div>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl ctrl--end\" (click)=\"EndRequested.emit()\"\n title=\"End call\" aria-label=\"End call\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label ctrl-label--end\">End call</span>\n </div>\n\n <span class=\"thint\"><i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i> press <kbd>T</kbd> to type</span>\n </div>\n} @else {\n <!-- Level 2+: the fused dock \u2014 compact minis + the in-call composer in ONE bottom bar. -->\n <div class=\"dock\">\n <div class=\"dock__minis\">\n <button type=\"button\" class=\"mini\" [class.mini--muted]=\"IsMuted\"\n (click)=\"ToggleMute()\"\n [title]=\"IsMuted ? 'Unmute microphone' : 'Mute microphone'\"\n [attr.aria-pressed]=\"IsMuted\">\n <i class=\"fa-solid\" [ngClass]=\"IsMuted ? 'fa-microphone-slash' : 'fa-microphone'\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\" class=\"mini\" [class.mini--on]=\"CaptionsOn\"\n (click)=\"ToggleCaptions()\"\n [title]=\"CaptionsOn ? 'Voice-first \u2014 back to the orb' : 'Show the conversation as text'\"\n [attr.aria-pressed]=\"CaptionsOn\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n @if (ShowDetails) {\n <button type=\"button\" class=\"mini\" [class.mini--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit()\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Show the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <div class=\"dock__box\">\n <input\n #dockInput\n type=\"text\"\n class=\"dock__input\"\n placeholder=\"Type into the live session \u2014 joins this same voice call\u2026\"\n [(ngModel)]=\"Draft\"\n (keydown)=\"OnKeydown($event)\"\n aria-label=\"Type a message into the live voice session\" />\n <span class=\"dock__hint\" aria-hidden=\"true\">\u21B5 send</span>\n <button\n class=\"dock__send\"\n type=\"button\"\n [disabled]=\"!CanSend\"\n (click)=\"Send()\"\n title=\"Send into live session\"\n aria-label=\"Send\">\n <i class=\"fa-solid fa-paper-plane\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button type=\"button\" class=\"mini dock__hide\" (click)=\"OpenChanged.emit(false)\"\n title=\"Hide typing \u2014 back to the voice controls\"\n aria-label=\"Close the typed-input composer\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n}\n", styles: [":host {\n display: block;\n}\n\n/* ---------- Levels 0\u20131: phone-call strip (big round controls, centered) ---------- */\n.strip {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 16px 22px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.ctrl {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 18px;\n transition: all 150ms ease;\n}\n.ctrl:hover {\n background: var(--mj-bg-surface-hover);\n}\n.ctrl--on {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n}\n.ctrl--muted {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n.ctrl--end {\n width: 60px;\n height: 60px;\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n color: var(--mj-text-inverse, #fff);\n font-size: 20px;\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-status-error) 40%, transparent);\n}\n.ctrl--end:hover {\n background: var(--mj-status-error);\n filter: brightness(0.92);\n}\n\n.ctrl-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: 6px;\n font-weight: 500;\n}\n.ctrl-label--end {\n color: var(--mj-status-error);\n}\n\n/* The whispered type-to-text hint (level 1: typing exists, no visible composer yet). */\n.thint {\n position: absolute;\n right: 22px;\n bottom: 20px;\n display: inline-flex;\n align-items: center;\n gap: 7px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n}\n.thint i {\n font-size: 12px;\n}\nkbd {\n font-family: var(--mj-font-mono, ui-monospace, monospace);\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-strong);\n border-bottom-width: 2px;\n border-radius: 4px;\n padding: 0 5px;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* ---------- Level 2+: the fused dock (minis + composer in one bar) ---------- */\n.dock {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n.mini {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 13.5px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n transition: all 140ms ease;\n}\n.mini:hover {\n background: var(--mj-bg-surface-hover);\n}\n.mini--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.mini--muted {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.dock__box {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-full, 9999px);\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease;\n}\n.dock__box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n}\n.dock__input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n/* The dock's hide control \u2014 typing is a two-way door, never permanent chrome. */\n.dock__hide {\n border-style: dashed;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n.dock__hide:hover {\n color: var(--mj-text-primary);\n}\n"] }]
|
|
339
|
+
args: [{ standalone: true, selector: 'mj-realtime-composer', imports: [CommonModule, FormsModule], template: "@if (StripMode && Compact) {\n <!-- COMPACT (Calm Orb \u00B7 overlay): the lean dock \u2014 Mute + End + a first-class Captions toggle\n (kept out of the \"\u2022\u2022\u2022\" so text stays ONE TAP in the overlay, where the banner no longer\n carries a duplicate CC) + a \"\u2022\u2022\u2022\" that blooms a small sheet with the remaining secondary\n actions (Details / Type). Round controls, red End \u2014 matches the mockup. -->\n <div class=\"dock-lean\" role=\"group\" aria-label=\"Call controls\">\n <div class=\"lean-more\" [class.lean-more--open]=\"MoreOpen\">\n <div class=\"lean-sheet\" (click)=\"$event.stopPropagation()\" role=\"menu\" aria-label=\"More call controls\">\n @if (ShowDetails) {\n <button type=\"button\" class=\"lean-sheet__btn\" [class.lean-sheet__btn--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit(); MoreOpen = false\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n <small>Details</small>\n </button>\n }\n <button type=\"button\" class=\"lean-sheet__btn\"\n (click)=\"OpenChanged.emit(true); MoreOpen = false\"\n title=\"Type into the live session\" aria-label=\"Open the typed-input composer\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n <small>Type</small>\n </button>\n </div>\n <button type=\"button\" class=\"lean-ctrl lean-ctrl--more\" [class.lean-ctrl--on]=\"MoreOpen\"\n (click)=\"ToggleMore($event)\"\n title=\"More controls\" aria-label=\"More call controls\"\n [attr.aria-expanded]=\"MoreOpen\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <!-- Captions: first-class in the lean dock (the overlay's only text toggle now). -->\n <button type=\"button\" class=\"lean-ctrl lean-ctrl--more\" [class.lean-ctrl--on]=\"CaptionsOn\"\n (click)=\"ToggleCaptions()\"\n [title]=\"CaptionsOn ? 'Voice-first \u2014 back to the orb' : 'Show the conversation as text'\"\n [attr.aria-pressed]=\"CaptionsOn\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n\n <button type=\"button\" class=\"lean-ctrl lean-ctrl--lg\" [class.lean-ctrl--muted]=\"IsMuted\"\n (click)=\"ToggleMute()\"\n [title]=\"IsMuted ? 'Unmute microphone' : 'Mute microphone'\"\n [attr.aria-pressed]=\"IsMuted\">\n <i class=\"fa-solid\" [ngClass]=\"IsMuted ? 'fa-microphone-slash' : 'fa-microphone'\" aria-hidden=\"true\"></i>\n </button>\n\n <button type=\"button\" class=\"lean-ctrl lean-ctrl--lg lean-ctrl--end\" (click)=\"EndRequested.emit()\"\n title=\"End call\" aria-label=\"End call\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n </div>\n} @else if (StripMode) {\n <!-- Levels 0\u20131: phone-call strip \u2014 big round controls, nothing to configure.\n Captions arrives at level 1 WITH the text it controls; Details peeks at the\n surface panels on demand; End stays the deliberate rightmost action. -->\n <div class=\"strip\" role=\"group\" aria-label=\"Call controls\">\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--muted]=\"IsMuted\"\n (click)=\"ToggleMute()\"\n [title]=\"IsMuted ? 'Unmute microphone' : 'Mute microphone'\"\n [attr.aria-pressed]=\"IsMuted\">\n <i class=\"fa-solid\" [ngClass]=\"IsMuted ? 'fa-microphone-slash' : 'fa-microphone'\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">{{ IsMuted ? 'Unmute' : 'Mute' }}</span>\n </div>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--on]=\"CaptionsOn\"\n (click)=\"ToggleCaptions()\"\n [title]=\"CaptionsOn ? 'Voice-first \u2014 back to the orb' : 'Show the conversation as text'\"\n [attr.aria-pressed]=\"CaptionsOn\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Captions</span>\n </div>\n\n @if (ShowDetails) {\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" [class.ctrl--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit()\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Peek at the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Details</span>\n </div>\n }\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl\" (click)=\"OpenChanged.emit(true)\"\n title=\"Type into the live session\" aria-label=\"Open the typed-input composer\">\n <i class=\"fa-regular fa-keyboard\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label\">Type</span>\n </div>\n\n <div class=\"ctrl-group\">\n <button type=\"button\" class=\"ctrl ctrl--end\" (click)=\"EndRequested.emit()\"\n title=\"End call\" aria-label=\"End call\">\n <i class=\"fa-solid fa-phone-slash\" aria-hidden=\"true\"></i>\n </button>\n <span class=\"ctrl-label ctrl-label--end\">End call</span>\n </div>\n </div>\n} @else {\n <!-- Level 2+: the fused dock \u2014 compact minis + the in-call composer in ONE bottom bar. -->\n <div class=\"dock\">\n <div class=\"dock__minis\">\n <button type=\"button\" class=\"mini\" [class.mini--muted]=\"IsMuted\"\n (click)=\"ToggleMute()\"\n [title]=\"IsMuted ? 'Unmute microphone' : 'Mute microphone'\"\n [attr.aria-pressed]=\"IsMuted\">\n <i class=\"fa-solid\" [ngClass]=\"IsMuted ? 'fa-microphone-slash' : 'fa-microphone'\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\" class=\"mini\" [class.mini--on]=\"CaptionsOn\"\n (click)=\"ToggleCaptions()\"\n [title]=\"CaptionsOn ? 'Voice-first \u2014 back to the orb' : 'Show the conversation as text'\"\n [attr.aria-pressed]=\"CaptionsOn\">\n <i class=\"fa-solid fa-closed-captioning\" aria-hidden=\"true\"></i>\n </button>\n @if (ShowDetails) {\n <button type=\"button\" class=\"mini\" [class.mini--on]=\"DetailsOn\"\n (click)=\"DetailsToggled.emit()\"\n [title]=\"DetailsOn ? 'Hide the session panels' : 'Show the session panels'\"\n [attr.aria-pressed]=\"DetailsOn\">\n <i class=\"fa-solid fa-table-columns\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <div class=\"dock__box\">\n <input\n #dockInput\n type=\"text\"\n class=\"dock__input\"\n placeholder=\"Type into the live session \u2014 joins this same voice call\u2026\"\n [(ngModel)]=\"Draft\"\n (keydown)=\"OnKeydown($event)\"\n aria-label=\"Type a message into the live voice session\" />\n <span class=\"dock__hint\" aria-hidden=\"true\">\u21B5 send</span>\n <button\n class=\"dock__send\"\n type=\"button\"\n [disabled]=\"!CanSend\"\n (click)=\"Send()\"\n title=\"Send into live session\"\n aria-label=\"Send\">\n <i class=\"fa-solid fa-paper-plane\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button type=\"button\" class=\"mini dock__hide\" (click)=\"OpenChanged.emit(false)\"\n title=\"Hide typing \u2014 back to the voice controls\"\n aria-label=\"Close the typed-input composer\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n}\n", styles: [":host {\n display: block;\n}\n\n/* ---------- Levels 0\u20131: phone-call strip (big round controls, centered) ---------- */\n.strip {\n position: relative;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: 22px;\n padding: 20px 22px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.ctrl-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.ctrl {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 18px;\n transition: all 150ms ease;\n}\n.ctrl:hover {\n background: var(--mj-bg-surface-hover);\n}\n.ctrl--on {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n}\n.ctrl--muted {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n.ctrl--end {\n width: 60px;\n height: 60px;\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n color: var(--mj-text-inverse, #fff);\n font-size: 20px;\n box-shadow: 0 6px 20px color-mix(in srgb, var(--mj-status-error) 40%, transparent);\n}\n.ctrl--end:hover {\n background: var(--mj-status-error);\n filter: brightness(0.92);\n}\n\n.ctrl-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-align: center;\n margin-top: 6px;\n font-weight: 500;\n}\n.ctrl-label--end {\n color: var(--mj-status-error);\n}\n\n/* ---------- Level 2+: the fused dock (minis + composer in one bar) ---------- */\n.dock {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n animation: dock-in 320ms cubic-bezier(0.2, 0.8, 0.3, 1);\n}\n@keyframes dock-in {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.dock__minis {\n display: flex;\n gap: 7px;\n flex-shrink: 0;\n}\n.mini {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 13.5px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n transition: all 140ms ease;\n}\n.mini:hover {\n background: var(--mj-bg-surface-hover);\n}\n.mini--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.mini--muted {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.dock__box {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 5px 6px 5px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-full, 9999px);\n background: var(--mj-bg-surface-card);\n transition: border-color 140ms ease, box-shadow 140ms ease;\n}\n.dock__box:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.dock__input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: 0;\n outline: none;\n color: var(--mj-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n}\n.dock__input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.dock__hint {\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.dock__send {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n border: 0;\n display: grid;\n place-items: center;\n cursor: pointer;\n font-size: 12px;\n flex-shrink: 0;\n transition: background 150ms ease;\n}\n.dock__send:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover, var(--mj-brand-primary));\n}\n.dock__send:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n/* The dock's hide control \u2014 typing is a two-way door, never permanent chrome. */\n.dock__hide {\n border-style: dashed;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n.dock__hide:hover {\n color: var(--mj-text-primary);\n}\n\n/* ============================================================= COMPACT (Calm Orb \u00B7 overlay)\n The lean dock \u2014 Mute + End + a \"\u2022\u2022\u2022\" that blooms a small sheet (Captions / Details / Type).\n Round controls, red End \u2014 matches the mockup. No 5-button bar, no overlapping hint. */\n.dock-lean {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 14px;\n padding: 16px 18px 20px;\n background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--mj-bg-page) 35%, transparent));\n}\n\n.lean-ctrl {\n display: grid;\n place-items: center;\n border-radius: 50%;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 150ms ease;\n}\n.lean-ctrl:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateY(-1px);\n}\n.lean-ctrl--lg {\n width: 58px;\n height: 58px;\n font-size: 19px;\n}\n.lean-ctrl--more {\n width: 46px;\n height: 46px;\n font-size: 16px;\n}\n.lean-ctrl--on {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse, #fff);\n}\n.lean-ctrl--muted {\n background: var(--mj-status-warning-bg);\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n.lean-ctrl--end {\n background: var(--mj-status-error);\n border-color: var(--mj-status-error);\n color: var(--mj-text-inverse, #fff);\n font-size: 20px;\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-status-error) 40%, transparent);\n}\n.lean-ctrl--end:hover {\n background: var(--mj-status-error);\n filter: brightness(0.94);\n}\n\n/* The \"\u2022\u2022\u2022\" overflow + its blooming sheet. */\n.lean-more {\n position: relative;\n display: flex;\n align-items: center;\n}\n.lean-sheet {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%) translateY(8px);\n display: flex;\n gap: 10px;\n padding: 10px;\n border-radius: var(--mj-radius-lg, 16px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.6);\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 5;\n}\n.lean-more--open .lean-sheet {\n opacity: 1;\n pointer-events: auto;\n transform: translateX(-50%) translateY(0);\n}\n.lean-sheet__btn {\n display: grid;\n place-items: center;\n gap: 3px;\n width: 56px;\n padding: 8px 4px;\n border-radius: var(--mj-radius-md, 10px);\n border: 1px solid transparent;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: all 140ms ease;\n}\n.lean-sheet__btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.lean-sheet__btn--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n.lean-sheet__btn small {\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n.lean-sheet__btn--on small {\n color: var(--mj-brand-accent, var(--mj-brand-primary));\n}\n"] }]
|
|
235
340
|
}], null, { Open: [{
|
|
236
341
|
type: Input
|
|
342
|
+
}], Compact: [{
|
|
343
|
+
type: Input
|
|
237
344
|
}], OpenChanged: [{
|
|
238
345
|
type: Output
|
|
239
346
|
}], CaptionsOn: [{
|
|
@@ -248,9 +355,16 @@ export class RealtimeComposerComponent {
|
|
|
248
355
|
type: Output
|
|
249
356
|
}], EndRequested: [{
|
|
250
357
|
type: Output
|
|
358
|
+
}], MuteChanged: [{
|
|
359
|
+
type: Output
|
|
360
|
+
}], IsMuted: [{
|
|
361
|
+
type: Input
|
|
251
362
|
}], dockInput: [{
|
|
252
363
|
type: ViewChild,
|
|
253
364
|
args: ['dockInput']
|
|
365
|
+
}], OnDocumentClick: [{
|
|
366
|
+
type: HostListener,
|
|
367
|
+
args: ['document:click']
|
|
254
368
|
}] }); })();
|
|
255
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RealtimeComposerComponent, { className: "RealtimeComposerComponent", filePath: "src/lib/components/realtime/realtime-composer.component.ts", lineNumber:
|
|
369
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RealtimeComposerComponent, { className: "RealtimeComposerComponent", filePath: "src/lib/components/realtime/realtime-composer.component.ts", lineNumber: 32 }); })();
|
|
256
370
|
//# sourceMappingURL=realtime-composer.component.js.map
|