mediasfu-angular 1.0.2 → 2.0.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/README.md +678 -578
- package/dist/README.md +677 -578
- package/dist/fesm2022/mediasfu-angular.mjs +5551 -2944
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/@types/types.d.ts +22 -1
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +1 -0
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +153 -61
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +154 -66
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +190 -76
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +184 -70
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +192 -78
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +6 -1
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +5 -2
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +4 -2
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +71 -66
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +5 -1
- package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +43 -11
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +87 -46
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +89 -43
- package/dist/lib/consumers/connect-send-transport.service.d.ts +5 -1
- package/dist/lib/consumers/create-send-transport.service.d.ts +130 -40
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +77 -40
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +48 -14
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +81 -44
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +5 -1
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +5 -1
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +54 -21
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +124 -40
- package/dist/lib/consumers/trigger.service.d.ts +3 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +5 -1
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +3 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +4 -1
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +3 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +3 -0
- package/dist/lib/methods/utils/check-limits-and-make-request.service.d.ts +23 -0
- package/dist/lib/methods/utils/create-response-join-room.util.d.ts +33 -0
- package/dist/lib/methods/utils/create-room-on-media-sfu.service.d.ts +25 -0
- package/dist/lib/methods/utils/initial-values.util.d.ts +6 -0
- package/dist/lib/methods/utils/join-room-on-media-sfu.service.d.ts +52 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +37 -20
- package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +5 -1
- package/dist/lib/sockets/socket-manager.service.d.ts +90 -0
- package/dist/public-api.d.ts +11 -1
- package/package.json +17 -20
- package/dist/esm2022/lib/@types/types.mjs +0 -2
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +0 -799
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -366
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -143
- package/dist/esm2022/lib/components/breakout-components/room-list/room-list.component.mjs +0 -40
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +0 -245
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -79
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -356
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -80
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -129
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -138
- package/dist/esm2022/lib/components/display-components/control-buttons-component/control-buttons-component.component.mjs +0 -231
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +0 -282
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -82
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -65
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -51
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -101
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -151
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -250
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -102
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -140
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -131
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -120
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -201
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -115
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -319
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -161
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +0 -230
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +0 -126
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -334
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -112
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -392
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -106
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -199
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -132
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -220
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4238
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3754
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5071
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5380
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5068
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -83
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -125
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -106
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -228
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -277
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -130
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -343
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -127
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -241
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -82
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -139
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -40
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -60
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -124
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -92
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -133
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -90
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -81
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -147
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -627
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -391
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -286
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1833
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -345
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -109
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -60
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -551
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -93
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -105
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -331
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -98
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -154
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -146
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -102
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -99
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -140
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -368
- package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -113
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -108
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -513
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -82
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -79
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -95
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -541
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -128
- package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -114
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -173
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -87
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -69
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -150
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +0 -136
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +0 -96
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -100
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -78
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -175
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -185
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -193
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -135
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -84
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -48
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -183
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -104
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -46
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -194
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -52
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -42
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -85
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -44
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -45
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -143
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -47
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -98
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -96
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -107
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -75
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -72
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -83
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -43
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -95
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -69
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -56
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -278
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -125
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -67
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -130
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -134
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -80
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -197
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -112
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -272
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -51
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -84
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -51
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -109
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -275
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -75
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -178
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -271
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -80
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -116
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -132
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -57
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -120
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -126
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -78
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -90
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -59
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -32
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -31
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +0 -379
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +0 -96
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -315
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -58
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -61
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -84
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -17
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -63
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -49
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -41
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -69
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -98
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -44
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -74
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -96
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -276
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -228
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -218
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -76
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -183
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -50
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -64
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -78
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -150
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -73
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -47
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -54
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -129
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -99
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -67
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -134
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -233
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -121
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -86
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -60
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -62
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -105
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -66
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -96
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -52
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -113
- package/dist/esm2022/mediasfu-angular.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -187
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Closes and resizes the video and audio elements based on the provided options.
|
|
5
|
-
*
|
|
6
|
-
* @param {CloseAndResizeOptions} options - The options for closing and resizing.
|
|
7
|
-
* @param {string} options.producerId - The ID of the producer.
|
|
8
|
-
* @param {string} options.kind - The kind of media (audio, video, screenshare, or screen).
|
|
9
|
-
* @param {object} options.parameters - The parameters for the operation.
|
|
10
|
-
* @param {function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
|
|
11
|
-
* @param {Array} options.parameters.allAudioStreams - Array of all audio streams.
|
|
12
|
-
* @param {Array} options.parameters.allVideoStreams - Array of all video streams.
|
|
13
|
-
* @param {Array} options.parameters.activeNames - Array of active participant names.
|
|
14
|
-
* @param {Array} options.parameters.participants - Array of participants.
|
|
15
|
-
* @param {Array} options.parameters.streamNames - Array of stream names.
|
|
16
|
-
* @param {string} options.parameters.recordingDisplayType - Type of recording display.
|
|
17
|
-
* @param {boolean} options.parameters.recordingVideoOptimized - Whether recording is video optimized.
|
|
18
|
-
* @param {string} options.parameters.adminIDStream - ID of the admin stream.
|
|
19
|
-
* @param {Array} options.parameters.newLimitedStreams - Array of new limited streams.
|
|
20
|
-
* @param {Array} options.parameters.newLimitedStreamsIDs - Array of new limited stream IDs.
|
|
21
|
-
* @param {Array} options.parameters.oldAllStreams - Array of old all streams.
|
|
22
|
-
* @param {boolean} options.parameters.shareScreenStarted - Whether screen sharing has started.
|
|
23
|
-
* @param {boolean} options.parameters.shared - Whether sharing is active.
|
|
24
|
-
* @param {string} options.parameters.meetingDisplayType - Type of meeting display.
|
|
25
|
-
* @param {boolean} options.parameters.defer_receive - Whether to defer receiving.
|
|
26
|
-
* @param {boolean} options.parameters.lock_screen - Whether the screen is locked.
|
|
27
|
-
* @param {boolean} options.parameters.firstAll - Whether it is the first all.
|
|
28
|
-
* @param {boolean} options.parameters.first_round - Whether it is the first round.
|
|
29
|
-
* @param {boolean} options.parameters.gotAllVids - Whether all videos are received.
|
|
30
|
-
* @param {string} options.parameters.eventType - Type of event.
|
|
31
|
-
* @param {string} options.parameters.hostLabel - Label of the host.
|
|
32
|
-
* @param {boolean} options.parameters.shareEnded - Whether sharing has ended.
|
|
33
|
-
* @param {boolean} options.parameters.updateMainWindow - Whether to update the main window.
|
|
34
|
-
* @param {function} options.parameters.updateActiveNames - Function to update active names.
|
|
35
|
-
* @param {function} options.parameters.updateAllAudioStreams - Function to update all audio streams.
|
|
36
|
-
* @param {function} options.parameters.updateAllVideoStreams - Function to update all video streams.
|
|
37
|
-
* @param {function} options.parameters.updateShareScreenStarted - Function to update share screen started status.
|
|
38
|
-
* @param {function} options.parameters.updateUpdateMainWindow - Function to update main window status.
|
|
39
|
-
* @param {function} options.parameters.updateNewLimitedStreams - Function to update new limited streams.
|
|
40
|
-
* @param {function} options.parameters.updateOldAllStreams - Function to update old all streams.
|
|
41
|
-
* @param {function} options.parameters.updateDefer_receive - Function to update defer receive status.
|
|
42
|
-
* @param {function} options.parameters.updateMainHeightWidth - Function to update main height and width.
|
|
43
|
-
* @param {function} options.parameters.updateShareEnded - Function to update share ended status.
|
|
44
|
-
* @param {function} options.parameters.updateLock_screen - Function to update lock screen status.
|
|
45
|
-
* @param {function} options.parameters.updateFirstAll - Function to update first all status.
|
|
46
|
-
* @param {function} options.parameters.updateFirst_round - Function to update first round status.
|
|
47
|
-
* @param {function} options.parameters.reorderStreams - Function to reorder streams.
|
|
48
|
-
* @param {function} options.parameters.prepopulateUserMedia - Function to prepopulate user media.
|
|
49
|
-
* @param {function} options.parameters.getVideos - Function to get videos.
|
|
50
|
-
* @param {function} options.parameters.rePort - Function to report.
|
|
51
|
-
*
|
|
52
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* const options = {
|
|
56
|
-
* producerId: '12345',
|
|
57
|
-
* kind: 'video',
|
|
58
|
-
* parameters: {
|
|
59
|
-
* getUpdatedAllParams: () => { /* Logic to get updated parameters *\/ },
|
|
60
|
-
* allAudioStreams: [],
|
|
61
|
-
* allVideoStreams: [],
|
|
62
|
-
* activeNames: ['Participant1', 'Participant2'],
|
|
63
|
-
* participants: [],
|
|
64
|
-
* streamNames: [],
|
|
65
|
-
* recordingDisplayType: 'video',
|
|
66
|
-
* recordingVideoOptimized: true,
|
|
67
|
-
* adminIDStream: 'admin123',
|
|
68
|
-
* newLimitedStreams: [],
|
|
69
|
-
* newLimitedStreamsIDs: [],
|
|
70
|
-
* oldAllStreams: [],
|
|
71
|
-
* shareScreenStarted: false,
|
|
72
|
-
* shared: false,
|
|
73
|
-
* meetingDisplayType: 'media',
|
|
74
|
-
* defer_receive: false,
|
|
75
|
-
* lock_screen: false,
|
|
76
|
-
* firstAll: false,
|
|
77
|
-
* first_round: false,
|
|
78
|
-
* gotAllVids: false,
|
|
79
|
-
* eventType: 'conference',
|
|
80
|
-
* hostLabel: 'Host',
|
|
81
|
-
* shareEnded: false,
|
|
82
|
-
* updateMainWindow: false,
|
|
83
|
-
* updateActiveNames: (names) => { /* Logic to update active names *\/ },
|
|
84
|
-
* updateAllAudioStreams: (streams) => { /* Logic to update audio streams *\/ },
|
|
85
|
-
* updateShareScreenStarted: (status) => { /* Logic to update share screen status *\/ },
|
|
86
|
-
* updateUpdateMainWindow: (status) => { /* Logic to update main window status *\/ },
|
|
87
|
-
* updateNewLimitedStreams: (streams) => { /* Logic to update new limited streams *\/ },
|
|
88
|
-
* updateOldAllStreams: (streams) => { /* Logic to update old streams *\/ },
|
|
89
|
-
* updateDefer_receive: (status) => { /* Logic to update defer receive status *\/ },
|
|
90
|
-
* updateMainHeightWidth: (size) => { /* Logic to update main height and width *\/ },
|
|
91
|
-
* updateShareEnded: (status) => { /* Logic to update share ended status *\/ },
|
|
92
|
-
* updateLock_screen: (status) => { /* Logic to update lock screen status *\/ },
|
|
93
|
-
* updateFirstAll: (status) => { /* Logic to update first all status *\/ },
|
|
94
|
-
* updateFirst_round: (status) => { /* Logic to update first round status *\/ },
|
|
95
|
-
* reorderStreams: async () => { /* Logic to reorder streams *\/ },
|
|
96
|
-
* prepopulateUserMedia: async () => { /* Logic to prepopulate user media *\/ },
|
|
97
|
-
* getVideos: async () => { /* Logic to get videos *\/ },
|
|
98
|
-
* rePort: async () => { /* Logic to report *\/ },
|
|
99
|
-
* },
|
|
100
|
-
* };
|
|
101
|
-
*
|
|
102
|
-
* await closeAndResizeService.closeAndResize(options);
|
|
103
|
-
* // The operation will adjust the video and audio elements as per the given parameters.
|
|
104
|
-
*/
|
|
105
|
-
export class CloseAndResize {
|
|
106
|
-
/**
|
|
107
|
-
* Closes and resizes the video and audio elements based on the provided options.
|
|
108
|
-
*
|
|
109
|
-
* @param {CloseAndResizeOptions} options - The options for closing and resizing.
|
|
110
|
-
* @param {string} options.producerId - The ID of the producer.
|
|
111
|
-
* @param {string} options.kind - The kind of media (audio, video, screenshare, or screen).
|
|
112
|
-
* @param {object} options.parameters - The parameters for the operation.
|
|
113
|
-
* @param {function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
|
|
114
|
-
* @param {Array} options.parameters.allAudioStreams - Array of all audio streams.
|
|
115
|
-
* @param {Array} options.parameters.allVideoStreams - Array of all video streams.
|
|
116
|
-
* @param {Array} options.parameters.activeNames - Array of active participant names.
|
|
117
|
-
* @param {Array} options.parameters.participants - Array of participants.
|
|
118
|
-
* @param {Array} options.parameters.streamNames - Array of stream names.
|
|
119
|
-
* @param {string} options.parameters.recordingDisplayType - Type of recording display.
|
|
120
|
-
* @param {boolean} options.parameters.recordingVideoOptimized - Whether recording is video optimized.
|
|
121
|
-
* @param {string} options.parameters.adminIDStream - ID of the admin stream.
|
|
122
|
-
* @param {Array} options.parameters.newLimitedStreams - Array of new limited streams.
|
|
123
|
-
* @param {Array} options.parameters.newLimitedStreamsIDs - Array of new limited stream IDs.
|
|
124
|
-
* @param {Array} options.parameters.oldAllStreams - Array of old all streams.
|
|
125
|
-
* @param {boolean} options.parameters.shareScreenStarted - Whether screen sharing has started.
|
|
126
|
-
* @param {boolean} options.parameters.shared - Whether sharing is active.
|
|
127
|
-
* @param {string} options.parameters.meetingDisplayType - Type of meeting display.
|
|
128
|
-
* @param {boolean} options.parameters.defer_receive - Whether to defer receiving.
|
|
129
|
-
* @param {boolean} options.parameters.lock_screen - Whether the screen is locked.
|
|
130
|
-
* @param {boolean} options.parameters.firstAll - Whether it is the first all.
|
|
131
|
-
* @param {boolean} options.parameters.first_round - Whether it is the first round.
|
|
132
|
-
* @param {boolean} options.parameters.gotAllVids - Whether all videos are received.
|
|
133
|
-
* @param {string} options.parameters.eventType - Type of event.
|
|
134
|
-
* @param {string} options.parameters.hostLabel - Label of the host.
|
|
135
|
-
* @param {boolean} options.parameters.shareEnded - Whether sharing has ended.
|
|
136
|
-
* @param {boolean} options.parameters.updateMainWindow - Whether to update the main window.
|
|
137
|
-
* @param {function} options.parameters.updateActiveNames - Function to update active names.
|
|
138
|
-
* @param {function} options.parameters.updateAllAudioStreams - Function to update all audio streams.
|
|
139
|
-
* @param {function} options.parameters.updateAllVideoStreams - Function to update all video streams.
|
|
140
|
-
* @param {function} options.parameters.updateShareScreenStarted - Function to update share screen started status.
|
|
141
|
-
* @param {function} options.parameters.updateUpdateMainWindow - Function to update main window status.
|
|
142
|
-
* @param {function} options.parameters.updateNewLimitedStreams - Function to update new limited streams.
|
|
143
|
-
* @param {function} options.parameters.updateOldAllStreams - Function to update old all streams.
|
|
144
|
-
* @param {function} options.parameters.updateDefer_receive - Function to update defer receive status.
|
|
145
|
-
* @param {function} options.parameters.updateMainHeightWidth - Function to update main height and width.
|
|
146
|
-
* @param {function} options.parameters.updateShareEnded - Function to update share ended status.
|
|
147
|
-
* @param {function} options.parameters.updateLock_screen - Function to update lock screen status.
|
|
148
|
-
* @param {function} options.parameters.updateFirstAll - Function to update first all status.
|
|
149
|
-
* @param {function} options.parameters.updateFirst_round - Function to update first round status.
|
|
150
|
-
* @param {function} options.parameters.reorderStreams - Function to reorder streams.
|
|
151
|
-
* @param {function} options.parameters.prepopulateUserMedia - Function to prepopulate user media.
|
|
152
|
-
* @param {function} options.parameters.getVideos - Function to get videos.
|
|
153
|
-
* @param {function} options.parameters.rePort - Function to report.
|
|
154
|
-
*
|
|
155
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
156
|
-
*/
|
|
157
|
-
closeAndResize = async ({ producerId, kind, parameters, }) => {
|
|
158
|
-
let { getUpdatedAllParams } = parameters;
|
|
159
|
-
parameters = getUpdatedAllParams();
|
|
160
|
-
let { allAudioStreams, allVideoStreams, activeNames, participants, streamNames, recordingDisplayType, recordingVideoOptimized, adminIDStream, newLimitedStreams, newLimitedStreamsIDs, oldAllStreams, shareScreenStarted, shared, meetingDisplayType, defer_receive, lock_screen, firstAll, first_round, gotAllVids, eventType, hostLabel, shareEnded, updateMainWindow, updateActiveNames, updateAllAudioStreams, updateAllVideoStreams, updateShareScreenStarted, updateUpdateMainWindow, updateNewLimitedStreams, updateOldAllStreams, updateDefer_receive, updateMainHeightWidth, updateShareEnded, updateLock_screen, updateFirstAll, updateFirst_round,
|
|
161
|
-
//mediasfu functions
|
|
162
|
-
reorderStreams, prepopulateUserMedia, getVideos, rePort, } = parameters;
|
|
163
|
-
//function to close and resize the video and audio elements
|
|
164
|
-
let participant;
|
|
165
|
-
if (kind === 'audio') {
|
|
166
|
-
//stop the audio by removing the miniAudio with id = producerId
|
|
167
|
-
//remove the audio from the allAudioStreams array
|
|
168
|
-
allAudioStreams = allAudioStreams.filter(function (audioStream) {
|
|
169
|
-
return audioStream.producerId !== producerId;
|
|
170
|
-
});
|
|
171
|
-
updateAllAudioStreams(allAudioStreams);
|
|
172
|
-
if (recordingDisplayType == 'video' && recordingVideoOptimized == true) {
|
|
173
|
-
// do nothing
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
//get the name of the participant with the producerId
|
|
177
|
-
participant = participants.find((obj) => obj.audioID === producerId);
|
|
178
|
-
if (participant) {
|
|
179
|
-
//check if the participants videoID is not null or ""
|
|
180
|
-
if (participant.videoID !== null && participant.videoID !== '') {
|
|
181
|
-
// do nothing
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
//remove the participant from the activeNames array
|
|
185
|
-
activeNames = activeNames.filter(function (name) {
|
|
186
|
-
return name !== participant?.name;
|
|
187
|
-
});
|
|
188
|
-
updateActiveNames(activeNames);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
let checker = false;
|
|
193
|
-
let alt_checker = false;
|
|
194
|
-
if (meetingDisplayType == 'video' && participant) {
|
|
195
|
-
checker =
|
|
196
|
-
participant[0].videoID != null &&
|
|
197
|
-
participant[0].videoID != '' &&
|
|
198
|
-
participant[0].videoID != undefined;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
checker = true;
|
|
202
|
-
alt_checker = true;
|
|
203
|
-
}
|
|
204
|
-
if (checker) {
|
|
205
|
-
if (shareScreenStarted || shared) {
|
|
206
|
-
if (!alt_checker) {
|
|
207
|
-
await reorderStreams({ parameters });
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
if (alt_checker && meetingDisplayType != 'video') {
|
|
212
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else if (kind === 'video') {
|
|
218
|
-
//update the video elements by removing the miniVideo with id = producerId
|
|
219
|
-
//remove the video from the allVideoStreams array
|
|
220
|
-
//check if producerId == adminidstream
|
|
221
|
-
if (producerId == adminIDStream) {
|
|
222
|
-
updateMainWindow = true;
|
|
223
|
-
updateUpdateMainWindow(updateMainWindow);
|
|
224
|
-
}
|
|
225
|
-
try {
|
|
226
|
-
allVideoStreams = allVideoStreams.filter(function (videoStream) {
|
|
227
|
-
return videoStream.producerId !== producerId;
|
|
228
|
-
});
|
|
229
|
-
updateAllVideoStreams(allVideoStreams);
|
|
230
|
-
try {
|
|
231
|
-
//try remove it from oldVideoStreams
|
|
232
|
-
oldAllStreams = oldAllStreams.filter(function (videoStream) {
|
|
233
|
-
return videoStream.producerId !== producerId;
|
|
234
|
-
});
|
|
235
|
-
updateOldAllStreams(oldAllStreams);
|
|
236
|
-
}
|
|
237
|
-
catch {
|
|
238
|
-
/* handle error */
|
|
239
|
-
}
|
|
240
|
-
try {
|
|
241
|
-
//try remove it from newLimitedStreams
|
|
242
|
-
newLimitedStreams = newLimitedStreams.filter(function (videoStream) {
|
|
243
|
-
return videoStream.producerId !== producerId;
|
|
244
|
-
});
|
|
245
|
-
updateNewLimitedStreams(newLimitedStreams);
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
/* handle error */
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
try {
|
|
253
|
-
//try remove it from oldVideoStreams
|
|
254
|
-
oldAllStreams = oldAllStreams.filter(function (videoStream) {
|
|
255
|
-
return videoStream.producerId !== producerId;
|
|
256
|
-
});
|
|
257
|
-
updateOldAllStreams(oldAllStreams);
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
/* handle error */
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
try {
|
|
264
|
-
//remove the participant from activeNames
|
|
265
|
-
activeNames = activeNames.filter(function (name) {
|
|
266
|
-
//get the participant with the producerId
|
|
267
|
-
let participant = streamNames.find((obj) => obj.producerId === producerId);
|
|
268
|
-
return name !== (participant?.name ?? '');
|
|
269
|
-
});
|
|
270
|
-
updateActiveNames(activeNames);
|
|
271
|
-
}
|
|
272
|
-
catch {
|
|
273
|
-
/* handle error */
|
|
274
|
-
}
|
|
275
|
-
if (lock_screen) {
|
|
276
|
-
defer_receive = true;
|
|
277
|
-
// check if the video is the one being displayed (i.e. (newLimitedStreamsIDs))
|
|
278
|
-
if (newLimitedStreamsIDs.includes(producerId)) {
|
|
279
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
280
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
285
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
else if (kind === 'screenshare' || kind === 'screen') {
|
|
289
|
-
//update the video elements by removing the mainVideo with id = producerId
|
|
290
|
-
updateMainWindow = true;
|
|
291
|
-
//screenshare stuff
|
|
292
|
-
shareScreenStarted = false;
|
|
293
|
-
shareEnded = true;
|
|
294
|
-
lock_screen = false;
|
|
295
|
-
firstAll = false;
|
|
296
|
-
first_round = false;
|
|
297
|
-
updateUpdateMainWindow(updateMainWindow);
|
|
298
|
-
updateShareScreenStarted(shareScreenStarted);
|
|
299
|
-
updateShareEnded(shareEnded);
|
|
300
|
-
updateLock_screen(lock_screen);
|
|
301
|
-
updateFirstAll(firstAll);
|
|
302
|
-
updateFirst_round(first_round);
|
|
303
|
-
if (!gotAllVids || defer_receive) {
|
|
304
|
-
defer_receive = false;
|
|
305
|
-
updateDefer_receive(defer_receive);
|
|
306
|
-
await getVideos({
|
|
307
|
-
participants,
|
|
308
|
-
allVideoStreams,
|
|
309
|
-
oldAllStreams,
|
|
310
|
-
updateAllVideoStreams,
|
|
311
|
-
updateOldAllStreams,
|
|
312
|
-
});
|
|
313
|
-
await rePort({ parameters });
|
|
314
|
-
}
|
|
315
|
-
if (eventType == 'conference') {
|
|
316
|
-
updateMainHeightWidth(0);
|
|
317
|
-
}
|
|
318
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
319
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
320
|
-
}
|
|
321
|
-
};
|
|
322
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
323
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, providedIn: 'root' });
|
|
324
|
-
}
|
|
325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, decorators: [{
|
|
326
|
-
type: Injectable,
|
|
327
|
-
args: [{
|
|
328
|
-
providedIn: 'root',
|
|
329
|
-
}]
|
|
330
|
-
}] });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2UtYW5kLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jbG9zZS1hbmQtcmVzaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF3RXpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFHRztBQUtMLE1BQU0sT0FBTyxjQUFjO0lBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtERztJQUVILGNBQWMsR0FBRyxLQUFLLEVBQUUsRUFDdEIsVUFBVSxFQUNWLElBQUksRUFDSixVQUFVLEdBQ1ksRUFBaUIsRUFBRTtRQUN6QyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDekMsVUFBVSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFbkMsSUFBSSxFQUNGLGVBQWUsRUFDZixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBRVQsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsd0JBQXdCLEVBQ3hCLHNCQUFzQixF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QUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDLENBQUM7dUdBeFJTLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RyZWFtLFxuICBQYXJ0aWNpcGFudCxcbiAgUmVvcmRlclN0cmVhbXNUeXBlLFxuICBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlLFxuICBHZXRWaWRlb3NUeXBlLFxuICBSZVBvcnRUeXBlLFxuICBSZVBvcnRQYXJhbWV0ZXJzLFxuICBFdmVudFR5cGUsXG59IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvc2VBbmRSZXNpemVQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgUmVvcmRlclN0cmVhbXNQYXJhbWV0ZXJzLFxuICAgIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBSZVBvcnRQYXJhbWV0ZXJzIHtcbiAgYWxsQXVkaW9TdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIGFsbFZpZGVvU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBhY3RpdmVOYW1lczogc3RyaW5nW107XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgc3RyZWFtTmFtZXM6IFN0cmVhbVtdO1xuICByZWNvcmRpbmdEaXNwbGF5VHlwZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJztcbiAgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQ6IGJvb2xlYW47XG4gIGFkbWluSURTdHJlYW0/OiBzdHJpbmc7XG4gIG5ld0xpbWl0ZWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIG5ld0xpbWl0ZWRTdHJlYW1zSURzOiBzdHJpbmdbXTtcbiAgb2xkQWxsU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgbWVldGluZ0Rpc3BsYXlUeXBlOiBzdHJpbmc7XG4gIGRlZmVyX3JlY2VpdmU6IGJvb2xlYW47XG4gIGxvY2tfc2NyZWVuOiBib29sZWFuO1xuICBmaXJzdEFsbDogYm9vbGVhbjtcbiAgZmlyc3Rfcm91bmQ6IGJvb2xlYW47XG4gIGdvdEFsbFZpZHM6IGJvb2xlYW47XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgc2hhcmVFbmRlZDogYm9vbGVhbjtcbiAgdXBkYXRlTWFpbldpbmRvdzogYm9vbGVhbjtcbiAgdXBkYXRlQWN0aXZlTmFtZXM6IChhY3RpdmVOYW1lczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZUFsbEF1ZGlvU3RyZWFtczogKGFsbEF1ZGlvU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdKSA9PiB2b2lkO1xuICB1cGRhdGVTaGFyZVNjcmVlblN0YXJ0ZWQ6IChzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6ICh1cGRhdGVNYWluV2luZG93OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVOZXdMaW1pdGVkU3RyZWFtczogKG5ld0xpbWl0ZWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW10pID0+IHZvaWQ7XG4gIHVwZGF0ZU9sZEFsbFN0cmVhbXM6IChvbGRBbGxTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW10pID0+IHZvaWQ7XG4gIHVwZGF0ZURlZmVyX3JlY2VpdmU6IChkZWZlcl9yZWNlaXZlOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVNYWluSGVpZ2h0V2lkdGg6IChoZWlnaHRXaWR0aDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVTaGFyZUVuZGVkOiAoc2hhcmVFbmRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlTG9ja19zY3JlZW46IChsb2NrX3NjcmVlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRmlyc3RBbGw6IChmaXJzdEFsbDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRmlyc3Rfcm91bmQ6IChmaXJzdF9yb3VuZDogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgcmVvcmRlclN0cmVhbXM6IFJlb3JkZXJTdHJlYW1zVHlwZTtcbiAgcHJlcG9wdWxhdGVVc2VyTWVkaWE6IFByZXBvcHVsYXRlVXNlck1lZGlhVHlwZTtcbiAgZ2V0VmlkZW9zOiBHZXRWaWRlb3NUeXBlO1xuICByZVBvcnQ6IFJlUG9ydFR5cGU7XG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IENsb3NlQW5kUmVzaXplUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3NlQW5kUmVzaXplT3B0aW9ucyB7XG4gIHByb2R1Y2VySWQ6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBDbG9zZUFuZFJlc2l6ZVBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsb3NlQW5kUmVzaXplVHlwZSA9IChvcHRpb25zOiBDbG9zZUFuZFJlc2l6ZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIENsb3NlcyBhbmQgcmVzaXplcyB0aGUgdmlkZW8gYW5kIGF1ZGlvIGVsZW1lbnRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge0Nsb3NlQW5kUmVzaXplT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjbG9zaW5nIGFuZCByZXNpemluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucHJvZHVjZXJJZCAtIFRoZSBJRCBvZiB0aGUgcHJvZHVjZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmtpbmQgLSBUaGUga2luZCBvZiBtZWRpYSAoYXVkaW8sIHZpZGVvLCBzY3JlZW5zaGFyZSwgb3Igc2NyZWVuKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgb3BlcmF0aW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5hbGxBdWRpb1N0cmVhbXMgLSBBcnJheSBvZiBhbGwgYXVkaW8gc3RyZWFtcy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFsbFZpZGVvU3RyZWFtcyAtIEFycmF5IG9mIGFsbCB2aWRlbyBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMuYWN0aXZlTmFtZXMgLSBBcnJheSBvZiBhY3RpdmUgcGFydGljaXBhbnQgbmFtZXMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5wYXJ0aWNpcGFudHMgLSBBcnJheSBvZiBwYXJ0aWNpcGFudHMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5zdHJlYW1OYW1lcyAtIEFycmF5IG9mIHN0cmVhbSBuYW1lcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRpbmdEaXNwbGF5VHlwZSAtIFR5cGUgb2YgcmVjb3JkaW5nIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZGluZ1ZpZGVvT3B0aW1pemVkIC0gV2hldGhlciByZWNvcmRpbmcgaXMgdmlkZW8gb3B0aW1pemVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmFkbWluSURTdHJlYW0gLSBJRCBvZiB0aGUgYWRtaW4gc3RyZWFtLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMubmV3TGltaXRlZFN0cmVhbXMgLSBBcnJheSBvZiBuZXcgbGltaXRlZCBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMubmV3TGltaXRlZFN0cmVhbXNJRHMgLSBBcnJheSBvZiBuZXcgbGltaXRlZCBzdHJlYW0gSURzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMub2xkQWxsU3RyZWFtcyAtIEFycmF5IG9mIG9sZCBhbGwgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVTY3JlZW5TdGFydGVkIC0gV2hldGhlciBzY3JlZW4gc2hhcmluZyBoYXMgc3RhcnRlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVkIC0gV2hldGhlciBzaGFyaW5nIGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5tZWV0aW5nRGlzcGxheVR5cGUgLSBUeXBlIG9mIG1lZXRpbmcgZGlzcGxheS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZGVmZXJfcmVjZWl2ZSAtIFdoZXRoZXIgdG8gZGVmZXIgcmVjZWl2aW5nLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5sb2NrX3NjcmVlbiAtIFdoZXRoZXIgdGhlIHNjcmVlbiBpcyBsb2NrZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmZpcnN0QWxsIC0gV2hldGhlciBpdCBpcyB0aGUgZmlyc3QgYWxsLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5maXJzdF9yb3VuZCAtIFdoZXRoZXIgaXQgaXMgdGhlIGZpcnN0IHJvdW5kLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5nb3RBbGxWaWRzIC0gV2hldGhlciBhbGwgdmlkZW9zIGFyZSByZWNlaXZlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5ldmVudFR5cGUgLSBUeXBlIG9mIGV2ZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmhvc3RMYWJlbCAtIExhYmVsIG9mIHRoZSBob3N0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZUVuZGVkIC0gV2hldGhlciBzaGFyaW5nIGhhcyBlbmRlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTWFpbldpbmRvdyAtIFdoZXRoZXIgdG8gdXBkYXRlIHRoZSBtYWluIHdpbmRvdy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUFjdGl2ZU5hbWVzIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGFjdGl2ZSBuYW1lcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUFsbEF1ZGlvU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBhbGwgYXVkaW8gc3RyZWFtcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUFsbFZpZGVvU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBhbGwgdmlkZW8gc3RyZWFtcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVNoYXJlU2NyZWVuU3RhcnRlZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBzaGFyZSBzY3JlZW4gc3RhcnRlZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVVcGRhdGVNYWluV2luZG93IC0gRnVuY3Rpb24gdG8gdXBkYXRlIG1haW4gd2luZG93IHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZU5ld0xpbWl0ZWRTdHJlYW1zIC0gRnVuY3Rpb24gdG8gdXBkYXRlIG5ldyBsaW1pdGVkIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVPbGRBbGxTdHJlYW1zIC0gRnVuY3Rpb24gdG8gdXBkYXRlIG9sZCBhbGwgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZURlZmVyX3JlY2VpdmUgLSBGdW5jdGlvbiB0byB1cGRhdGUgZGVmZXIgcmVjZWl2ZSBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVNYWluSGVpZ2h0V2lkdGggLSBGdW5jdGlvbiB0byB1cGRhdGUgbWFpbiBoZWlnaHQgYW5kIHdpZHRoLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlU2hhcmVFbmRlZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBzaGFyZSBlbmRlZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVMb2NrX3NjcmVlbiAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBsb2NrIHNjcmVlbiBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVGaXJzdEFsbCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBmaXJzdCBhbGwgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlRmlyc3Rfcm91bmQgLSBGdW5jdGlvbiB0byB1cGRhdGUgZmlyc3Qgcm91bmQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMucmVvcmRlclN0cmVhbXMgLSBGdW5jdGlvbiB0byByZW9yZGVyIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5wcmVwb3B1bGF0ZVVzZXJNZWRpYSAtIEZ1bmN0aW9uIHRvIHByZXBvcHVsYXRlIHVzZXIgbWVkaWEuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5nZXRWaWRlb3MgLSBGdW5jdGlvbiB0byBnZXQgdmlkZW9zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMucmVQb3J0IC0gRnVuY3Rpb24gdG8gcmVwb3J0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIHByb2R1Y2VySWQ6ICcxMjM0NScsXG4gICAqICAga2luZDogJ3ZpZGVvJyxcbiAgICogICBwYXJhbWV0ZXJzOiB7XG4gICAqICAgICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiB7IC8qIExvZ2ljIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMgKlxcLyB9LFxuICAgKiAgICAgYWxsQXVkaW9TdHJlYW1zOiBbXSxcbiAgICogICAgIGFsbFZpZGVvU3RyZWFtczogW10sXG4gICAqICAgICBhY3RpdmVOYW1lczogWydQYXJ0aWNpcGFudDEnLCAnUGFydGljaXBhbnQyJ10sXG4gICAqICAgICBwYXJ0aWNpcGFudHM6IFtdLFxuICAgKiAgICAgc3RyZWFtTmFtZXM6IFtdLFxuICAgKiAgICAgcmVjb3JkaW5nRGlzcGxheVR5cGU6ICd2aWRlbycsXG4gICAqICAgICByZWNvcmRpbmdWaWRlb09wdGltaXplZDogdHJ1ZSxcbiAgICogICAgIGFkbWluSURTdHJlYW06ICdhZG1pbjEyMycsXG4gICAqICAgICBuZXdMaW1pdGVkU3RyZWFtczogW10sXG4gICAqICAgICBuZXdMaW1pdGVkU3RyZWFtc0lEczogW10sXG4gICAqICAgICBvbGRBbGxTdHJlYW1zOiBbXSxcbiAgICogICAgIHNoYXJlU2NyZWVuU3RhcnRlZDogZmFsc2UsXG4gICAqICAgICBzaGFyZWQ6IGZhbHNlLFxuICAgKiAgICAgbWVldGluZ0Rpc3BsYXlUeXBlOiAnbWVkaWEnLFxuICAgKiAgICAgZGVmZXJfcmVjZWl2ZTogZmFsc2UsXG4gICAqICAgICBsb2NrX3NjcmVlbjogZmFsc2UsXG4gICAqICAgICBmaXJzdEFsbDogZmFsc2UsXG4gICAqICAgICBmaXJzdF9yb3VuZDogZmFsc2UsXG4gICAqICAgICBnb3RBbGxWaWRzOiBmYWxzZSxcbiAgICogICAgIGV2ZW50VHlwZTogJ2NvbmZlcmVuY2UnLFxuICAgKiAgICAgaG9zdExhYmVsOiAnSG9zdCcsXG4gICAqICAgICBzaGFyZUVuZGVkOiBmYWxzZSxcbiAgICogICAgIHVwZGF0ZU1haW5XaW5kb3c6IGZhbHNlLFxuICAgKiAgICAgdXBkYXRlQWN0aXZlTmFtZXM6IChuYW1lcykgPT4geyAvKiBMb2dpYyB0byB1cGRhdGUgYWN0aXZlIG5hbWVzICpcXC8gfSxcbiAgICogICAgIHVwZGF0ZUFsbEF1ZGlvU3RyZWFtczogKHN0cmVhbXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIGF1ZGlvIHN0cmVhbXMgKlxcLyB9LFxuICAgKiAgICAgdXBkYXRlU2hhcmVTY3JlZW5TdGFydGVkOiAoc3RhdHVzKSA9PiB7IC8qIExvZ2ljIHRvIHVwZGF0ZSBzaGFyZSBzY3JlZW4gc3RhdHVzICpcXC8gfSxcbiAgICogICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6IChzdGF0dXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIG1haW4gd2luZG93IHN0YXR1cyAqXFwvIH0sXG4gICAqICAgICB1cGRhdGVOZXdMaW1pdGVkU3RyZWFtczogKHN0cmVhbXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIG5ldyBsaW1pdGVkIHN0cmVhbXMgKlxcLyB9LFxuICAgKiAgICAgdXBkYXRlT2xkQWxsU3RyZWFtczogKHN0cmVhbXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIG9sZCBzdHJlYW1zICpcXC8gfSxcbiAgICogICAgIHVwZGF0ZURlZmVyX3JlY2VpdmU6IChzdGF0dXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIGRlZmVyIHJlY2VpdmUgc3RhdHVzICpcXC8gfSxcbiAgICogICAgIHVwZGF0ZU1haW5IZWlnaHRXaWR0aDogKHNpemUpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIG1haW4gaGVpZ2h0IGFuZCB3aWR0aCAqXFwvIH0sXG4gICAqICAgICB1cGRhdGVTaGFyZUVuZGVkOiAoc3RhdHVzKSA9PiB7IC8qIExvZ2ljIHRvIHVwZGF0ZSBzaGFyZSBlbmRlZCBzdGF0dXMgKlxcLyB9LFxuICAgKiAgICAgdXBkYXRlTG9ja19zY3JlZW46IChzdGF0dXMpID0+IHsgLyogTG9naWMgdG8gdXBkYXRlIGxvY2sgc2NyZWVuIHN0YXR1cyAqXFwvIH0sXG4gICAqICAgICB1cGRhdGVGaXJzdEFsbDogKHN0YXR1cykgPT4geyAvKiBMb2dpYyB0byB1cGRhdGUgZmlyc3QgYWxsIHN0YXR1cyAqXFwvIH0sXG4gICAqICAgICB1cGRhdGVGaXJzdF9yb3VuZDogKHN0YXR1cykgPT4geyAvKiBMb2dpYyB0byB1cGRhdGUgZmlyc3Qgcm91bmQgc3RhdHVzICpcXC8gfSxcbiAgICogICAgIHJlb3JkZXJTdHJlYW1zOiBhc3luYyAoKSA9PiB7IC8qIExvZ2ljIHRvIHJlb3JkZXIgc3RyZWFtcyAqXFwvIH0sXG4gICAqICAgICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogYXN5bmMgKCkgPT4geyAvKiBMb2dpYyB0byBwcmVwb3B1bGF0ZSB1c2VyIG1lZGlhICpcXC8gfSxcbiAgICogICAgIGdldFZpZGVvczogYXN5bmMgKCkgPT4geyAvKiBMb2dpYyB0byBnZXQgdmlkZW9zICpcXC8gfSxcbiAgICogICAgIHJlUG9ydDogYXN5bmMgKCkgPT4geyAvKiBMb2dpYyB0byByZXBvcnQgKlxcLyB9LFxuICAgKiAgIH0sXG4gICAqIH07XG4gICAqXG4gICAqIGF3YWl0IGNsb3NlQW5kUmVzaXplU2VydmljZS5jbG9zZUFuZFJlc2l6ZShvcHRpb25zKTtcbiAgICogLy8gVGhlIG9wZXJhdGlvbiB3aWxsIGFkanVzdCB0aGUgdmlkZW8gYW5kIGF1ZGlvIGVsZW1lbnRzIGFzIHBlciB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAgICovXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9zZUFuZFJlc2l6ZSB7XG4gIC8qKlxuICAgKiBDbG9zZXMgYW5kIHJlc2l6ZXMgdGhlIHZpZGVvIGFuZCBhdWRpbyBlbGVtZW50cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtDbG9zZUFuZFJlc2l6ZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY2xvc2luZyBhbmQgcmVzaXppbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnByb2R1Y2VySWQgLSBUaGUgSUQgb2YgdGhlIHByb2R1Y2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5raW5kIC0gVGhlIGtpbmQgb2YgbWVkaWEgKGF1ZGlvLCB2aWRlbywgc2NyZWVuc2hhcmUsIG9yIHNjcmVlbikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG9wZXJhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMgLSBGdW5jdGlvbiB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMuYWxsQXVkaW9TdHJlYW1zIC0gQXJyYXkgb2YgYWxsIGF1ZGlvIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5hbGxWaWRlb1N0cmVhbXMgLSBBcnJheSBvZiBhbGwgdmlkZW8gc3RyZWFtcy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFjdGl2ZU5hbWVzIC0gQXJyYXkgb2YgYWN0aXZlIHBhcnRpY2lwYW50IG5hbWVzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMucGFydGljaXBhbnRzIC0gQXJyYXkgb2YgcGFydGljaXBhbnRzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMuc3RyZWFtTmFtZXMgLSBBcnJheSBvZiBzdHJlYW0gbmFtZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nRGlzcGxheVR5cGUgLSBUeXBlIG9mIHJlY29yZGluZyBkaXNwbGF5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRpbmdWaWRlb09wdGltaXplZCAtIFdoZXRoZXIgcmVjb3JkaW5nIGlzIHZpZGVvIG9wdGltaXplZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5hZG1pbklEU3RyZWFtIC0gSUQgb2YgdGhlIGFkbWluIHN0cmVhbS5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLm5ld0xpbWl0ZWRTdHJlYW1zIC0gQXJyYXkgb2YgbmV3IGxpbWl0ZWQgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLm5ld0xpbWl0ZWRTdHJlYW1zSURzIC0gQXJyYXkgb2YgbmV3IGxpbWl0ZWQgc3RyZWFtIElEcy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLm9sZEFsbFN0cmVhbXMgLSBBcnJheSBvZiBvbGQgYWxsIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNoYXJlU2NyZWVuU3RhcnRlZCAtIFdoZXRoZXIgc2NyZWVuIHNoYXJpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNoYXJlZCAtIFdoZXRoZXIgc2hhcmluZyBpcyBhY3RpdmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMubWVldGluZ0Rpc3BsYXlUeXBlIC0gVHlwZSBvZiBtZWV0aW5nIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmRlZmVyX3JlY2VpdmUgLSBXaGV0aGVyIHRvIGRlZmVyIHJlY2VpdmluZy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMubG9ja19zY3JlZW4gLSBXaGV0aGVyIHRoZSBzY3JlZW4gaXMgbG9ja2VkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5maXJzdEFsbCAtIFdoZXRoZXIgaXQgaXMgdGhlIGZpcnN0IGFsbC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZmlyc3Rfcm91bmQgLSBXaGV0aGVyIGl0IGlzIHRoZSBmaXJzdCByb3VuZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZ290QWxsVmlkcyAtIFdoZXRoZXIgYWxsIHZpZGVvcyBhcmUgcmVjZWl2ZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuZXZlbnRUeXBlIC0gVHlwZSBvZiBldmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5ob3N0TGFiZWwgLSBMYWJlbCBvZiB0aGUgaG9zdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVFbmRlZCAtIFdoZXRoZXIgc2hhcmluZyBoYXMgZW5kZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZU1haW5XaW5kb3cgLSBXaGV0aGVyIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVBY3RpdmVOYW1lcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBhY3RpdmUgbmFtZXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVBbGxBdWRpb1N0cmVhbXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgYWxsIGF1ZGlvIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVBbGxWaWRlb1N0cmVhbXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgYWxsIHZpZGVvIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVTaGFyZVNjcmVlblN0YXJ0ZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgc2hhcmUgc2NyZWVuIHN0YXJ0ZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlVXBkYXRlTWFpbldpbmRvdyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBtYWluIHdpbmRvdyBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVOZXdMaW1pdGVkU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBuZXcgbGltaXRlZCBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlT2xkQWxsU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBvbGQgYWxsIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVEZWZlcl9yZWNlaXZlIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGRlZmVyIHJlY2VpdmUgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTWFpbkhlaWdodFdpZHRoIC0gRnVuY3Rpb24gdG8gdXBkYXRlIG1haW4gaGVpZ2h0IGFuZCB3aWR0aC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVNoYXJlRW5kZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgc2hhcmUgZW5kZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTG9ja19zY3JlZW4gLSBGdW5jdGlvbiB0byB1cGRhdGUgbG9jayBzY3JlZW4gc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlRmlyc3RBbGwgLSBGdW5jdGlvbiB0byB1cGRhdGUgZmlyc3QgYWxsIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUZpcnN0X3JvdW5kIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGZpcnN0IHJvdW5kIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlb3JkZXJTdHJlYW1zIC0gRnVuY3Rpb24gdG8gcmVvcmRlciBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMucHJlcG9wdWxhdGVVc2VyTWVkaWEgLSBGdW5jdGlvbiB0byBwcmVwb3B1bGF0ZSB1c2VyIG1lZGlhLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VmlkZW9zIC0gRnVuY3Rpb24gdG8gZ2V0IHZpZGVvcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlUG9ydCAtIEZ1bmN0aW9uIHRvIHJlcG9ydC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAgICovXG5cbiAgY2xvc2VBbmRSZXNpemUgPSBhc3luYyAoe1xuICAgIHByb2R1Y2VySWQsXG4gICAga2luZCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9OiBDbG9zZUFuZFJlc2l6ZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBsZXQgeyBnZXRVcGRhdGVkQWxsUGFyYW1zIH0gPSBwYXJhbWV0ZXJzO1xuICAgIHBhcmFtZXRlcnMgPSBnZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgYWxsQXVkaW9TdHJlYW1zLFxuICAgICAgYWxsVmlkZW9TdHJlYW1zLFxuICAgICAgYWN0aXZlTmFtZXMsXG4gICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICBzdHJlYW1OYW1lcyxcbiAgICAgIHJlY29yZGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQsXG4gICAgICBhZG1pbklEU3RyZWFtLFxuICAgICAgbmV3TGltaXRlZFN0cmVhbXMsXG4gICAgICBuZXdMaW1pdGVkU3RyZWFtc0lEcyxcbiAgICAgIG9sZEFsbFN0cmVhbXMsXG4gICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQsXG4gICAgICBzaGFyZWQsXG4gICAgICBtZWV0aW5nRGlzcGxheVR5cGUsXG4gICAgICBkZWZlcl9yZWNlaXZlLFxuICAgICAgbG9ja19zY3JlZW4sXG4gICAgICBmaXJzdEFsbCxcbiAgICAgIGZpcnN0X3JvdW5kLFxuICAgICAgZ290QWxsVmlkcyxcbiAgICAgIGV2ZW50VHlwZSxcblxuICAgICAgaG9zdExhYmVsLFxuICAgICAgc2hhcmVFbmRlZCxcbiAgICAgIHVwZGF0ZU1haW5XaW5kb3csXG4gICAgICB1cGRhdGVBY3RpdmVOYW1lcyxcbiAgICAgIHVwZGF0ZUFsbEF1ZGlvU3RyZWFtcyxcbiAgICAgIHVwZGF0ZUFsbFZpZGVvU3RyZWFtcyxcblxuICAgICAgdXBkYXRlU2hhcmVTY3JlZW5TdGFydGVkLFxuICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyxcbiAgICAgIHVwZGF0ZU5ld0xpbWl0ZWRTdHJlYW1zLFxuICAgICAgdXBkYXRlT2xkQWxsU3RyZWFtcyxcbiAgICAgIHVwZGF0ZURlZmVyX3JlY2VpdmUsXG4gICAgICB1cGRhdGVNYWluSGVpZ2h0V2lkdGgsXG4gICAgICB1cGRhdGVTaGFyZUVuZGVkLFxuICAgICAgdXBkYXRlTG9ja19zY3JlZW4sXG4gICAgICB1cGRhdGVGaXJzdEFsbCxcbiAgICAgIHVwZGF0ZUZpcnN0X3JvdW5kLFxuXG4gICAgICAvL21lZGlhc2Z1IGZ1bmN0aW9uc1xuICAgICAgcmVvcmRlclN0cmVhbXMsXG4gICAgICBwcmVwb3B1bGF0ZVVzZXJNZWRpYSxcbiAgICAgIGdldFZpZGVvcyxcbiAgICAgIHJlUG9ydCxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIC8vZnVuY3Rpb24gdG8gY2xvc2UgYW5kIHJlc2l6ZSB0aGUgdmlkZW8gYW5kIGF1ZGlvIGVsZW1lbnRzXG5cbiAgICBsZXQgcGFydGljaXBhbnQ6IFBhcnRpY2lwYW50IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgIC8vc3RvcCB0aGUgYXVkaW8gYnkgcmVtb3ZpbmcgdGhlIG1pbmlBdWRpbyB3aXRoIGlkID0gcHJvZHVjZXJJZFxuXG4gICAgICAvL3JlbW92ZSB0aGUgYXVkaW8gZnJvbSB0aGUgYWxsQXVkaW9TdHJlYW1zIGFycmF5XG4gICAgICBhbGxBdWRpb1N0cmVhbXMgPSBhbGxBdWRpb1N0cmVhbXMuZmlsdGVyKGZ1bmN0aW9uIChhdWRpb1N0cmVhbSkge1xuICAgICAgICByZXR1cm4gYXVkaW9TdHJlYW0ucHJvZHVjZXJJZCAhPT0gcHJvZHVjZXJJZDtcbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVBbGxBdWRpb1N0cmVhbXMoYWxsQXVkaW9TdHJlYW1zKTtcblxuICAgICAgaWYgKHJlY29yZGluZ0Rpc3BsYXlUeXBlID09ICd2aWRlbycgJiYgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQgPT0gdHJ1ZSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL2dldCB0aGUgbmFtZSBvZiB0aGUgcGFydGljaXBhbnQgd2l0aCB0aGUgcHJvZHVjZXJJZFxuICAgICAgICBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKChvYmopID0+IG9iai5hdWRpb0lEID09PSBwcm9kdWNlcklkKTtcblxuICAgICAgICBpZiAocGFydGljaXBhbnQpIHtcbiAgICAgICAgICAvL2NoZWNrIGlmIHRoZSBwYXJ0aWNpcGFudHMgdmlkZW9JRCBpcyBub3QgbnVsbCBvciBcIlwiXG4gICAgICAgICAgaWYgKHBhcnRpY2lwYW50LnZpZGVvSUQgIT09IG51bGwgJiYgcGFydGljaXBhbnQudmlkZW9JRCAhPT0gJycpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9yZW1vdmUgdGhlIHBhcnRpY2lwYW50IGZyb20gdGhlIGFjdGl2ZU5hbWVzIGFycmF5XG4gICAgICAgICAgICBhY3RpdmVOYW1lcyA9IGFjdGl2ZU5hbWVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZSAhPT0gcGFydGljaXBhbnQ/Lm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZU5hbWVzKGFjdGl2ZU5hbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IGNoZWNrZXIgPSBmYWxzZTtcbiAgICAgIGxldCBhbHRfY2hlY2tlciA9IGZhbHNlO1xuXG4gICAgICBpZiAobWVldGluZ0Rpc3BsYXlUeXBlID09ICd2aWRlbycgJiYgcGFydGljaXBhbnQpIHtcbiAgICAgICAgY2hlY2tlciA9XG4gICAgICAgICAgcGFydGljaXBhbnRbMF0udmlkZW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgcGFydGljaXBhbnRbMF0udmlkZW9JRCAhPSAnJyAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50WzBdLnZpZGVvSUQgIT0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2tlciA9IHRydWU7XG4gICAgICAgIGFsdF9jaGVja2VyID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoZWNrZXIpIHtcbiAgICAgICAgaWYgKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpIHtcbiAgICAgICAgICBpZiAoIWFsdF9jaGVja2VyKSB7XG4gICAgICAgICAgICBhd2FpdCByZW9yZGVyU3RyZWFtcyh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChhbHRfY2hlY2tlciAmJiBtZWV0aW5nRGlzcGxheVR5cGUgIT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgYXdhaXQgcmVvcmRlclN0cmVhbXMoeyBhZGQ6IGZhbHNlLCBzY3JlZW5DaGFuZ2VkOiB0cnVlLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgLy91cGRhdGUgdGhlIHZpZGVvIGVsZW1lbnRzIGJ5IHJlbW92aW5nIHRoZSBtaW5pVmlkZW8gd2l0aCBpZCA9IHByb2R1Y2VySWRcbiAgICAgIC8vcmVtb3ZlIHRoZSB2aWRlbyBmcm9tIHRoZSBhbGxWaWRlb1N0cmVhbXMgYXJyYXlcblxuICAgICAgLy9jaGVjayBpZiBwcm9kdWNlcklkID09IGFkbWluaWRzdHJlYW1cbiAgICAgIGlmIChwcm9kdWNlcklkID09IGFkbWluSURTdHJlYW0pIHtcbiAgICAgICAgdXBkYXRlTWFpbldpbmRvdyA9IHRydWU7XG4gICAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3codXBkYXRlTWFpbldpbmRvdyk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGFsbFZpZGVvU3RyZWFtcyA9IGFsbFZpZGVvU3RyZWFtcy5maWx0ZXIoZnVuY3Rpb24gKHZpZGVvU3RyZWFtKSB7XG4gICAgICAgICAgcmV0dXJuIHZpZGVvU3RyZWFtLnByb2R1Y2VySWQgIT09IHByb2R1Y2VySWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHVwZGF0ZUFsbFZpZGVvU3RyZWFtcyhhbGxWaWRlb1N0cmVhbXMpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy90cnkgcmVtb3ZlIGl0IGZyb20gb2xkVmlkZW9TdHJlYW1zXG4gICAgICAgICAgb2xkQWxsU3RyZWFtcyA9IG9sZEFsbFN0cmVhbXMuZmlsdGVyKGZ1bmN0aW9uICh2aWRlb1N0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuIHZpZGVvU3RyZWFtLnByb2R1Y2VySWQgIT09IHByb2R1Y2VySWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB1cGRhdGVPbGRBbGxTdHJlYW1zKG9sZEFsbFN0cmVhbXMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy90cnkgcmVtb3ZlIGl0IGZyb20gbmV3TGltaXRlZFN0cmVhbXNcbiAgICAgICAgICBuZXdMaW1pdGVkU3RyZWFtcyA9IG5ld0xpbWl0ZWRTdHJlYW1zLmZpbHRlcihmdW5jdGlvbiAodmlkZW9TdHJlYW0pIHtcbiAgICAgICAgICAgIHJldHVybiB2aWRlb1N0cmVhbS5wcm9kdWNlcklkICE9PSBwcm9kdWNlcklkO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdXBkYXRlTmV3TGltaXRlZFN0cmVhbXMobmV3TGltaXRlZFN0cmVhbXMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvL3RyeSByZW1vdmUgaXQgZnJvbSBvbGRWaWRlb1N0cmVhbXNcbiAgICAgICAgICBvbGRBbGxTdHJlYW1zID0gb2xkQWxsU3RyZWFtcy5maWx0ZXIoZnVuY3Rpb24gKHZpZGVvU3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm4gdmlkZW9TdHJlYW0ucHJvZHVjZXJJZCAhPT0gcHJvZHVjZXJJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1cGRhdGVPbGRBbGxTdHJlYW1zKG9sZEFsbFN0cmVhbXMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvL3JlbW92ZSB0aGUgcGFydGljaXBhbnQgZnJvbSBhY3RpdmVOYW1lc1xuICAgICAgICBhY3RpdmVOYW1lcyA9IGFjdGl2ZU5hbWVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgIC8vZ2V0IHRoZSBwYXJ0aWNpcGFudCB3aXRoIHRoZSBwcm9kdWNlcklkXG4gICAgICAgICAgbGV0IHBhcnRpY2lwYW50ID0gc3RyZWFtTmFtZXMuZmluZCgob2JqKSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gcHJvZHVjZXJJZCk7XG5cbiAgICAgICAgICByZXR1cm4gbmFtZSAhPT0gKHBhcnRpY2lwYW50Py5uYW1lID8/ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdXBkYXRlQWN0aXZlTmFtZXMoYWN0aXZlTmFtZXMpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgICAgfVxuXG4gICAgICBpZiAobG9ja19zY3JlZW4pIHtcbiAgICAgICAgZGVmZXJfcmVjZWl2ZSA9IHRydWU7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSB2aWRlbyBpcyB0aGUgb25lIGJlaW5nIGRpc3BsYXllZCAoaS5lLiAobmV3TGltaXRlZFN0cmVhbXNJRHMpKVxuICAgICAgICBpZiAobmV3TGltaXRlZFN0cmVhbXNJRHMuaW5jbHVkZXMocHJvZHVjZXJJZCkpIHtcbiAgICAgICAgICBhd2FpdCBwcmVwb3B1bGF0ZVVzZXJNZWRpYSh7IG5hbWU6IGhvc3RMYWJlbCwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICBhd2FpdCByZW9yZGVyU3RyZWFtcyh7IGFkZDogZmFsc2UsIHNjcmVlbkNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICBhd2FpdCByZW9yZGVyU3RyZWFtcyh7IGFkZDogZmFsc2UsIHNjcmVlbkNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChraW5kID09PSAnc2NyZWVuc2hhcmUnIHx8IGtpbmQgPT09ICdzY3JlZW4nKSB7XG4gICAgICAvL3VwZGF0ZSB0aGUgdmlkZW8gZWxlbWVudHMgYnkgcmVtb3ZpbmcgdGhlIG1haW5WaWRlbyB3aXRoIGlkID0gcHJvZHVjZXJJZFxuICAgICAgdXBkYXRlTWFpbldpbmRvdyA9IHRydWU7XG5cbiAgICAgIC8vc2NyZWVuc2hhcmUgc3R1ZmZcbiAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgc2hhcmVFbmRlZCA9IHRydWU7XG5cbiAgICAgIGxvY2tfc2NyZWVuID0gZmFsc2U7XG4gICAgICBmaXJzdEFsbCA9IGZhbHNlO1xuICAgICAgZmlyc3Rfcm91bmQgPSBmYWxzZTtcblxuICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyh1cGRhdGVNYWluV2luZG93KTtcbiAgICAgIHVwZGF0ZVNoYXJlU2NyZWVuU3RhcnRlZChzaGFyZVNjcmVlblN0YXJ0ZWQpO1xuICAgICAgdXBkYXRlU2hhcmVFbmRlZChzaGFyZUVuZGVkKTtcbiAgICAgIHVwZGF0ZUxvY2tfc2NyZWVuKGxvY2tfc2NyZWVuKTtcbiAgICAgIHVwZGF0ZUZpcnN0QWxsKGZpcnN0QWxsKTtcbiAgICAgIHVwZGF0ZUZpcnN0X3JvdW5kKGZpcnN0X3JvdW5kKTtcblxuICAgICAgaWYgKCFnb3RBbGxWaWRzIHx8IGRlZmVyX3JlY2VpdmUpIHtcbiAgICAgICAgZGVmZXJfcmVjZWl2ZSA9IGZhbHNlO1xuICAgICAgICB1cGRhdGVEZWZlcl9yZWNlaXZlKGRlZmVyX3JlY2VpdmUpO1xuICAgICAgICBhd2FpdCBnZXRWaWRlb3Moe1xuICAgICAgICAgIHBhcnRpY2lwYW50cyxcbiAgICAgICAgICBhbGxWaWRlb1N0cmVhbXMsXG4gICAgICAgICAgb2xkQWxsU3RyZWFtcyxcbiAgICAgICAgICB1cGRhdGVBbGxWaWRlb1N0cmVhbXMsXG4gICAgICAgICAgdXBkYXRlT2xkQWxsU3RyZWFtcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHJlUG9ydCh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudFR5cGUgPT0gJ2NvbmZlcmVuY2UnKSB7XG4gICAgICAgIHVwZGF0ZU1haW5IZWlnaHRXaWR0aCgwKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICBhd2FpdCByZW9yZGVyU3RyZWFtcyh7IGFkZDogZmFsc2UsIHNjcmVlbkNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnMgfSk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Compares the current active names with the previous active names and triggers an action if there are changes.
|
|
5
|
-
*
|
|
6
|
-
* @param {CompareActiveNamesOptions} options - The options for comparing active names.
|
|
7
|
-
* @param {boolean} [options.restart=false] - Whether to restart the comparison.
|
|
8
|
-
* @param {CompareActiveNamesParameters} options.parameters - The parameters for the comparison.
|
|
9
|
-
* @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
|
|
10
|
-
* @param {string[]} options.parameters.activeNames - The current active names.
|
|
11
|
-
* @param {string[]} options.parameters.prevActiveNames - The previous active names.
|
|
12
|
-
* @param {Function} options.parameters.updatePrevActiveNames - Function to update the previous active names.
|
|
13
|
-
* @param {Function} options.parameters.trigger - Function to trigger an action when names change.
|
|
14
|
-
*
|
|
15
|
-
* @returns {Promise<void>} A promise that resolves when the comparison is complete.
|
|
16
|
-
*
|
|
17
|
-
* @throws Will log an error message if an error occurs during the comparison.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* const options = {
|
|
21
|
-
* restart: false,
|
|
22
|
-
* parameters: {
|
|
23
|
-
* getUpdatedAllParams: () => { /* Logic to get updated parameters *\/ },
|
|
24
|
-
* activeNames: ['Alice', 'Bob'],
|
|
25
|
-
* prevActiveNames: ['Alice', 'Charlie'],
|
|
26
|
-
* updatePrevActiveNames: (names) => { /* Logic to update previous active names *\/ },
|
|
27
|
-
* trigger: async (data) => { /* Logic to handle the trigger *\/ },
|
|
28
|
-
* },
|
|
29
|
-
* };
|
|
30
|
-
*
|
|
31
|
-
* await compareActiveNamesService.compareActiveNames(options);
|
|
32
|
-
* // If 'Bob' is not in the previous active names, it will trigger the action.
|
|
33
|
-
*/
|
|
34
|
-
export class CompareActiveNames {
|
|
35
|
-
/**
|
|
36
|
-
* Compares the current active names with the previous active names and triggers an action if there are changes.
|
|
37
|
-
*
|
|
38
|
-
* @param {Object} options - The options for comparing active names.
|
|
39
|
-
* @param {boolean} [options.restart=false] - Whether to restart the comparison.
|
|
40
|
-
* @param {CompareActiveNamesOptions} options.parameters - The parameters for the comparison.
|
|
41
|
-
* @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
|
|
42
|
-
* @param {string[]} options.parameters.activeNames - The current active names.
|
|
43
|
-
* @param {string[]} options.parameters.prevActiveNames - The previous active names.
|
|
44
|
-
* @param {Function} options.parameters.updatePrevActiveNames - Function to update the previous active names.
|
|
45
|
-
* @param {Function} options.parameters.trigger - Function to trigger an action when names change.
|
|
46
|
-
*
|
|
47
|
-
* @returns {Promise<void>} A promise that resolves when the comparison is complete.
|
|
48
|
-
*
|
|
49
|
-
* @throws Will log an error message if an error occurs during the comparison.
|
|
50
|
-
*/
|
|
51
|
-
async compareActiveNames({ restart = false, parameters, }) {
|
|
52
|
-
try {
|
|
53
|
-
let { getUpdatedAllParams } = parameters;
|
|
54
|
-
parameters = getUpdatedAllParams();
|
|
55
|
-
let { activeNames, prevActiveNames, updatePrevActiveNames, trigger } = parameters;
|
|
56
|
-
// Restart the comparison if needed
|
|
57
|
-
if (restart) {
|
|
58
|
-
await trigger({ ref_ActiveNames: activeNames, parameters });
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
// Array to track changes in activeNames
|
|
62
|
-
let nameChanged = [];
|
|
63
|
-
// Compare each name in activeNames
|
|
64
|
-
for (let i = 0; i < activeNames.length; i++) {
|
|
65
|
-
const currentName = activeNames[i];
|
|
66
|
-
// Check if the name is present in prevActiveNames
|
|
67
|
-
const hasNameChanged = !prevActiveNames.includes(currentName);
|
|
68
|
-
if (hasNameChanged) {
|
|
69
|
-
nameChanged.push(true);
|
|
70
|
-
trigger({ ref_ActiveNames: activeNames, parameters });
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Count the number of true in nameChanged
|
|
75
|
-
let count = nameChanged.filter((value) => value === true).length;
|
|
76
|
-
if (count < 1) {
|
|
77
|
-
// Check for new names in prevActiveNames
|
|
78
|
-
for (let i = 0; i < prevActiveNames.length; i++) {
|
|
79
|
-
const currentName = prevActiveNames[i];
|
|
80
|
-
// Check if the name is present in activeNames
|
|
81
|
-
const hasNameChanged = !activeNames.includes(currentName);
|
|
82
|
-
// Signal change if the name is new
|
|
83
|
-
if (hasNameChanged) {
|
|
84
|
-
trigger({ ref_ActiveNames: activeNames, parameters });
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// Update prevActiveNames with current activeNames
|
|
90
|
-
prevActiveNames = [...activeNames];
|
|
91
|
-
updatePrevActiveNames(prevActiveNames);
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
console.log('compareActiveNames error', error);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareActiveNames, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
98
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareActiveNames, providedIn: 'root' });
|
|
99
|
-
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareActiveNames, decorators: [{
|
|
101
|
-
type: Injectable,
|
|
102
|
-
args: [{
|
|
103
|
-
providedIn: 'root',
|
|
104
|
-
}]
|
|
105
|
-
}] });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS1hY3RpdmUtbmFtZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb25zdW1lcnMvY29tcGFyZS1hY3RpdmUtbmFtZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXVCekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUtMLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQ3ZCLE9BQU8sR0FBRyxLQUFLLEVBQ2YsVUFBVSxHQUNnQjtRQUMxQixJQUFJLENBQUM7WUFDSCxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDekMsVUFBVSxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFFbkMsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBRWxGLG1DQUFtQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE1BQU0sT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxPQUFPO1lBQ1QsQ0FBQztZQUVELHdDQUF3QztZQUN4QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFFckIsbUNBQW1DO1lBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFbkMsa0RBQWtEO2dCQUNsRCxNQUFNLGNBQWMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRTlELElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDdEQsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUVELDBDQUEwQztZQUMxQyxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRWpFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLHlDQUF5QztnQkFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDaEQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV2Qyw4Q0FBOEM7b0JBQzlDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFFMUQsbUNBQW1DO29CQUNuQyxJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUNuQixPQUFPLENBQUMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQ3RELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELGtEQUFrRDtZQUNsRCxlQUFlLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQzt1R0EzRVUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyaWdnZXJUeXBlLCBUcmlnZ2VyUGFyYW1ldGVycyB9IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyZUFjdGl2ZU5hbWVzUGFyYW1ldGVycyBleHRlbmRzIFRyaWdnZXJQYXJhbWV0ZXJzIHtcbiAgYWN0aXZlTmFtZXM6IHN0cmluZ1tdO1xuICBwcmV2QWN0aXZlTmFtZXM6IHN0cmluZ1tdO1xuICB1cGRhdGVBY3RpdmVOYW1lczogKGFjdGl2ZU5hbWVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgdXBkYXRlUHJldkFjdGl2ZU5hbWVzOiAocHJldkFjdGl2ZU5hbWVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgdHJpZ2dlcjogVHJpZ2dlclR5cGU7XG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IENvbXBhcmVBY3RpdmVOYW1lc1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJlQWN0aXZlTmFtZXNPcHRpb25zIHtcbiAgcmVzdGFydD86IGJvb2xlYW47XG4gIHBhcmFtZXRlcnM6IENvbXBhcmVBY3RpdmVOYW1lc1BhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENvbXBhcmVBY3RpdmVOYW1lc1R5cGUgPSAob3B0aW9uczogQ29tcGFyZUFjdGl2ZU5hbWVzT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogQ29tcGFyZXMgdGhlIGN1cnJlbnQgYWN0aXZlIG5hbWVzIHdpdGggdGhlIHByZXZpb3VzIGFjdGl2ZSBuYW1lcyBhbmQgdHJpZ2dlcnMgYW4gYWN0aW9uIGlmIHRoZXJlIGFyZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBhcmVBY3RpdmVOYW1lc09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY29tcGFyaW5nIGFjdGl2ZSBuYW1lcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5yZXN0YXJ0PWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVzdGFydCB0aGUgY29tcGFyaXNvbi5cbiAgICogQHBhcmFtIHtDb21wYXJlQWN0aXZlTmFtZXNQYXJhbWV0ZXJzfSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNvbXBhcmlzb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zIC0gRnVuY3Rpb24gdG8gZ2V0IHVwZGF0ZWQgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFjdGl2ZU5hbWVzIC0gVGhlIGN1cnJlbnQgYWN0aXZlIG5hbWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcHRpb25zLnBhcmFtZXRlcnMucHJldkFjdGl2ZU5hbWVzIC0gVGhlIHByZXZpb3VzIGFjdGl2ZSBuYW1lcy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVByZXZBY3RpdmVOYW1lcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcHJldmlvdXMgYWN0aXZlIG5hbWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudHJpZ2dlciAtIEZ1bmN0aW9uIHRvIHRyaWdnZXIgYW4gYWN0aW9uIHdoZW4gbmFtZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29tcGFyaXNvbiBpcyBjb21wbGV0ZS5cbiAgICpcbiAgICogQHRocm93cyBXaWxsIGxvZyBhbiBlcnJvciBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGNvbXBhcmlzb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAqICAgcmVzdGFydDogZmFsc2UsXG4gICAqICAgcGFyYW1ldGVyczoge1xuICAgKiAgICAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4geyAvKiBMb2dpYyB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzICpcXC8gfSxcbiAgICogICAgIGFjdGl2ZU5hbWVzOiBbJ0FsaWNlJywgJ0JvYiddLFxuICAgKiAgICAgcHJldkFjdGl2ZU5hbWVzOiBbJ0FsaWNlJywgJ0NoYXJsaWUnXSxcbiAgICogICAgIHVwZGF0ZVByZXZBY3RpdmVOYW1lczogKG5hbWVzKSA9PiB7IC8qIExvZ2ljIHRvIHVwZGF0ZSBwcmV2aW91cyBhY3RpdmUgbmFtZXMgKlxcLyB9LFxuICAgKiAgICAgdHJpZ2dlcjogYXN5bmMgKGRhdGEpID0+IHsgLyogTG9naWMgdG8gaGFuZGxlIHRoZSB0cmlnZ2VyICpcXC8gfSxcbiAgICogICB9LFxuICAgKiB9O1xuICAgKlxuICAgKiBhd2FpdCBjb21wYXJlQWN0aXZlTmFtZXNTZXJ2aWNlLmNvbXBhcmVBY3RpdmVOYW1lcyhvcHRpb25zKTtcbiAgICogLy8gSWYgJ0JvYicgaXMgbm90IGluIHRoZSBwcmV2aW91cyBhY3RpdmUgbmFtZXMsIGl0IHdpbGwgdHJpZ2dlciB0aGUgYWN0aW9uLlxuICAgKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbXBhcmVBY3RpdmVOYW1lcyB7XG4gIC8qKlxuICAgKiBDb21wYXJlcyB0aGUgY3VycmVudCBhY3RpdmUgbmFtZXMgd2l0aCB0aGUgcHJldmlvdXMgYWN0aXZlIG5hbWVzIGFuZCB0cmlnZ2VycyBhbiBhY3Rpb24gaWYgdGhlcmUgYXJlIGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNvbXBhcmluZyBhY3RpdmUgbmFtZXMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucmVzdGFydD1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlc3RhcnQgdGhlIGNvbXBhcmlzb24uXG4gICAqIEBwYXJhbSB7Q29tcGFyZUFjdGl2ZU5hbWVzT3B0aW9uc30gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjb21wYXJpc29uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IG9wdGlvbnMucGFyYW1ldGVycy5hY3RpdmVOYW1lcyAtIFRoZSBjdXJyZW50IGFjdGl2ZSBuYW1lcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gb3B0aW9ucy5wYXJhbWV0ZXJzLnByZXZBY3RpdmVOYW1lcyAtIFRoZSBwcmV2aW91cyBhY3RpdmUgbmFtZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVQcmV2QWN0aXZlTmFtZXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHByZXZpb3VzIGFjdGl2ZSBuYW1lcy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnRyaWdnZXIgLSBGdW5jdGlvbiB0byB0cmlnZ2VyIGFuIGFjdGlvbiB3aGVuIG5hbWVzIGNoYW5nZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbXBhcmlzb24gaXMgY29tcGxldGUuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBjb21wYXJpc29uLlxuICAgKi9cbiAgYXN5bmMgY29tcGFyZUFjdGl2ZU5hbWVzKHtcbiAgICByZXN0YXJ0ID0gZmFsc2UsXG4gICAgcGFyYW1ldGVycyxcbiAgfTogQ29tcGFyZUFjdGl2ZU5hbWVzT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBsZXQgeyBnZXRVcGRhdGVkQWxsUGFyYW1zIH0gPSBwYXJhbWV0ZXJzO1xuICAgICAgcGFyYW1ldGVycyA9IGdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgICAgbGV0IHsgYWN0aXZlTmFtZXMsIHByZXZBY3RpdmVOYW1lcywgdXBkYXRlUHJldkFjdGl2ZU5hbWVzLCB0cmlnZ2VyIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBSZXN0YXJ0IHRoZSBjb21wYXJpc29uIGlmIG5lZWRlZFxuICAgICAgaWYgKHJlc3RhcnQpIHtcbiAgICAgICAgYXdhaXQgdHJpZ2dlcih7IHJlZl9BY3RpdmVOYW1lczogYWN0aXZlTmFtZXMsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQXJyYXkgdG8gdHJhY2sgY2hhbmdlcyBpbiBhY3RpdmVOYW1lc1xuICAgICAgbGV0IG5hbWVDaGFuZ2VkID0gW107XG5cbiAgICAgIC8vIENvbXBhcmUgZWFjaCBuYW1lIGluIGFjdGl2ZU5hbWVzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROYW1lID0gYWN0aXZlTmFtZXNbaV07XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5hbWUgaXMgcHJlc2VudCBpbiBwcmV2QWN0aXZlTmFtZXNcbiAgICAgICAgY29uc3QgaGFzTmFtZUNoYW5nZWQgPSAhcHJldkFjdGl2ZU5hbWVzLmluY2x1ZGVzKGN1cnJlbnROYW1lKTtcblxuICAgICAgICBpZiAoaGFzTmFtZUNoYW5nZWQpIHtcbiAgICAgICAgICBuYW1lQ2hhbmdlZC5wdXNoKHRydWUpO1xuICAgICAgICAgIHRyaWdnZXIoeyByZWZfQWN0aXZlTmFtZXM6IGFjdGl2ZU5hbWVzLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgdHJ1ZSBpbiBuYW1lQ2hhbmdlZFxuICAgICAgbGV0IGNvdW50ID0gbmFtZUNoYW5nZWQuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHRydWUpLmxlbmd0aDtcblxuICAgICAgaWYgKGNvdW50IDwgMSkge1xuICAgICAgICAvLyBDaGVjayBmb3IgbmV3IG5hbWVzIGluIHByZXZBY3RpdmVOYW1lc1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZBY3RpdmVOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnROYW1lID0gcHJldkFjdGl2ZU5hbWVzW2ldO1xuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5hbWUgaXMgcHJlc2VudCBpbiBhY3RpdmVOYW1lc1xuICAgICAgICAgIGNvbnN0IGhhc05hbWVDaGFuZ2VkID0gIWFjdGl2ZU5hbWVzLmluY2x1ZGVzKGN1cnJlbnROYW1lKTtcblxuICAgICAgICAgIC8vIFNpZ25hbCBjaGFuZ2UgaWYgdGhlIG5hbWUgaXMgbmV3XG4gICAgICAgICAgaWYgKGhhc05hbWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0cmlnZ2VyKHsgcmVmX0FjdGl2ZU5hbWVzOiBhY3RpdmVOYW1lcywgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgcHJldkFjdGl2ZU5hbWVzIHdpdGggY3VycmVudCBhY3RpdmVOYW1lc1xuICAgICAgcHJldkFjdGl2ZU5hbWVzID0gWy4uLmFjdGl2ZU5hbWVzXTtcbiAgICAgIHVwZGF0ZVByZXZBY3RpdmVOYW1lcyhwcmV2QWN0aXZlTmFtZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29tcGFyZUFjdGl2ZU5hbWVzIGVycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19
|