mediasfu-angular 1.0.1 → 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 +871 -769
- package/dist/README.md +870 -769
- package/dist/fesm2022/mediasfu-angular.mjs +13241 -3372
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/@types/types.d.ts +22 -1
- package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +51 -0
- package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
- package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
- package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
- package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
- package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
- package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
- package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
- package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
- package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
- package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
- package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
- package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
- package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
- package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
- package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
- package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
- package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
- package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
- package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
- package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
- package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
- package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
- package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
- package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
- package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
- package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
- package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
- package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
- package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
- package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
- package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +258 -117
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +254 -117
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +312 -162
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +312 -162
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +310 -162
- package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
- package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
- package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +27 -29
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +20 -15
- package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
- package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +20 -35
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +79 -66
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +19 -1
- package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
- package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
- package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
- package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
- package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
- package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
- package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
- package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
- package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
- package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
- package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
- package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
- package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
- package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
- package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
- package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
- package/dist/lib/consumers/change-vids.service.d.ts +131 -66
- package/dist/lib/consumers/check-grid.service.d.ts +32 -18
- package/dist/lib/consumers/check-permission.service.d.ts +25 -0
- package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
- package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
- package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
- package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
- package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
- package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
- package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +81 -11
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +96 -15
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +101 -11
- package/dist/lib/consumers/connect-send-transport.service.d.ts +59 -1
- package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
- package/dist/lib/consumers/control-media.service.d.ts +45 -0
- package/dist/lib/consumers/create-send-transport.service.d.ts +149 -13
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +100 -13
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +75 -2
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +99 -17
- package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
- package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
- package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +38 -1
- package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
- package/dist/lib/consumers/get-videos.service.d.ts +33 -0
- package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
- package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
- package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
- package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
- package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
- package/dist/lib/consumers/re-port.service.d.ts +48 -0
- package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
- package/dist/lib/consumers/readjust.service.d.ts +50 -0
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +36 -1
- package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
- package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
- package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
- package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
- package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +76 -7
- package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
- package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
- package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
- package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
- package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
- package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +148 -11
- package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
- package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
- package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
- package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
- package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
- package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
- package/dist/lib/consumers/trigger.service.d.ts +41 -0
- package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
- package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
- package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
- package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
- package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
- package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
- package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +29 -1
- package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
- package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
- package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
- package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
- package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
- package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
- package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
- package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
- package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
- package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
- package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
- package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
- package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
- package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
- package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
- package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
- package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
- package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
- package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
- package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +53 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +42 -1
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +51 -0
- package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
- package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
- package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
- package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +100 -0
- package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
- package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
- package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
- package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
- package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
- package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -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/format-number.service.d.ts +26 -14
- package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
- package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
- package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
- package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
- package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
- package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
- 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/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
- package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
- package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
- package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
- package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
- package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
- package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
- package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +46 -0
- package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
- package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
- package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
- package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
- package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
- package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
- package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +80 -2
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +78 -2
- package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
- package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +29 -1
- package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
- package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
- package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
- package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
- package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
- package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
- package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
- package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
- package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
- package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
- package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
- package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
- package/dist/lib/sockets/socket-manager.service.d.ts +130 -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 -763
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -316
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -95
- 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 -246
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -73
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -297
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -60
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -94
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -100
- 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 -298
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -61
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -43
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -114
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -114
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -36
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -74
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -142
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -265
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -100
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -132
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -119
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -106
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -180
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -120
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -326
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -165
- 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 -111
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -328
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -118
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -330
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -95
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -190
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -119
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -209
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4189
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3705
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5024
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5333
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5023
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -85
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -22
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -22
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -132
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -104
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -204
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -243
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -147
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -335
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -113
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -226
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -63
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -120
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -23
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -43
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -100
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -174
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -77
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -121
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -85
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -59
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -130
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -617
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -380
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -142
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -265
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1784
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -296
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -83
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -42
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -486
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -79
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -80
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -71
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -229
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -75
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -63
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -112
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -113
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -46
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -62
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -55
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -86
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -332
- package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -68
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -126
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -58
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -45
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -56
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -421
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -59
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -70
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -49
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -46
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -58
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -73
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -63
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -442
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -72
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -66
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -157
- package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -123
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -56
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -42
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -181
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -67
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -99
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -70
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -55
- 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 -63
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -61
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -51
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -80
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -132
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -149
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -143
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -202
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -87
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -228
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -125
- package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -81
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -39
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -23
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -112
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -22
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -22
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -60
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -24
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -119
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -28
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -22
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -50
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -22
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -23
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -94
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -23
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -52
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -57
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -62
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -37
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -40
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -49
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -23
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -64
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -45
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -34
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -215
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -82
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -40
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -86
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -89
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -48
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -147
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -74
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -224
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -26
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -45
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -26
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -67
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -178
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -44
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -110
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -183
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -33
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -66
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -76
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -45
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -99
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -52
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -54
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -38
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -22
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -21
- 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 -59
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -260
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -21
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -37
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -24
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -37
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -38
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -11
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -42
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -33
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -23
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -40
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -69
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -24
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -51
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -65
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -232
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -114
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -114
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -155
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -147
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -30
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -40
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -146
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -26
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -38
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -167
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -44
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -24
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -36
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -32
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -29
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -68
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -90
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -54
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -38
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -96
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -195
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -59
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -45
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -35
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -37
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -36
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -36
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -56
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -78
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -73
- package/dist/esm2022/mediasfu-angular.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -187
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CheckGrid {
|
|
4
|
-
/**
|
|
5
|
-
* Checks the grid configuration and calculates various parameters based on the number of rows, columns, and active elements.
|
|
6
|
-
*
|
|
7
|
-
* @param {CheckGridOptions} options - The options for checking the grid.
|
|
8
|
-
* @param {number} options.rows - The number of rows in the grid.
|
|
9
|
-
* @param {number} options.cols - The number of columns in the grid.
|
|
10
|
-
* @param {number} options.actives - The number of active elements in the grid.
|
|
11
|
-
* @returns {Promise<[boolean, number, number, number, number, number, number] | void>} A promise that resolves to a tuple containing:
|
|
12
|
-
* - `removeAltGrid` (boolean): Indicates whether to remove the alternate grid.
|
|
13
|
-
* - `numtoadd` (number): The number of elements to add.
|
|
14
|
-
* - `numRows` (number): The number of rows.
|
|
15
|
-
* - `numCols` (number): The number of columns.
|
|
16
|
-
* - `remainingVideos` (number): The number of remaining videos.
|
|
17
|
-
* - `actualRows` (number): The actual number of rows.
|
|
18
|
-
* - `lastrowcols` (number): The number of columns in the last row.
|
|
19
|
-
*
|
|
20
|
-
* If an error occurs, it logs the error to the console.
|
|
21
|
-
*/
|
|
22
|
-
async checkGrid({ rows, cols, actives, }) {
|
|
23
|
-
try {
|
|
24
|
-
let numRows = 0;
|
|
25
|
-
let numCols = 0;
|
|
26
|
-
let lastrow = 0;
|
|
27
|
-
let lastrowcols = 0;
|
|
28
|
-
let remainingVideos = 0;
|
|
29
|
-
let numtoadd = 0;
|
|
30
|
-
let actualRows = 0;
|
|
31
|
-
let removeAltGrid = false;
|
|
32
|
-
if (rows * cols !== actives) {
|
|
33
|
-
if (rows * cols > actives) {
|
|
34
|
-
const res = actives - (rows - 1) * cols;
|
|
35
|
-
if (cols * 0.5 < res) {
|
|
36
|
-
lastrow = rows;
|
|
37
|
-
lastrowcols = res;
|
|
38
|
-
remainingVideos = lastrowcols;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
lastrowcols = res + cols;
|
|
42
|
-
lastrow = rows - 1;
|
|
43
|
-
remainingVideos = lastrowcols;
|
|
44
|
-
}
|
|
45
|
-
numRows = lastrow - 1;
|
|
46
|
-
numCols = cols;
|
|
47
|
-
numtoadd = (lastrow - 1) * numCols;
|
|
48
|
-
actualRows = lastrow;
|
|
49
|
-
removeAltGrid = false;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
// Perfect fit
|
|
54
|
-
numCols = cols;
|
|
55
|
-
numRows = rows;
|
|
56
|
-
lastrow = rows;
|
|
57
|
-
lastrowcols = cols;
|
|
58
|
-
remainingVideos = 0;
|
|
59
|
-
numtoadd = lastrow * numCols;
|
|
60
|
-
actualRows = lastrow;
|
|
61
|
-
removeAltGrid = true;
|
|
62
|
-
}
|
|
63
|
-
return [removeAltGrid, numtoadd, numRows, numCols, remainingVideos, actualRows, lastrowcols];
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
console.log('checkGrid error', error);
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckGrid, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
71
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckGrid, providedIn: 'root' });
|
|
72
|
-
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckGrid, decorators: [{
|
|
74
|
-
type: Injectable,
|
|
75
|
-
args: [{
|
|
76
|
-
providedIn: 'root',
|
|
77
|
-
}]
|
|
78
|
-
}] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jaGVjay1ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFlM0MsTUFBTSxPQUFPLFNBQVM7SUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUNkLElBQUksRUFDSixJQUFJLEVBQ0osT0FBTyxHQUNVO1FBQ2pCLElBQUksQ0FBQztZQUNILElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDaEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDeEIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFFMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ3hDLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDZixXQUFXLEdBQUcsR0FBRyxDQUFDO3dCQUNsQixlQUFlLEdBQUcsV0FBVyxDQUFDO29CQUNoQyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sV0FBVyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7d0JBQ3pCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixlQUFlLEdBQUcsV0FBVyxDQUFDO29CQUNoQyxDQUFDO29CQUVELE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO29CQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLFFBQVEsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ25DLFVBQVUsR0FBRyxPQUFPLENBQUM7b0JBRXJCLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYztnQkFDZCxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDZixXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixlQUFlLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixRQUFRLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsVUFBVSxHQUFHLE9BQU8sQ0FBQztnQkFDckIsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO1lBRUQsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0QyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3VHQXZFVSxTQUFTOzJHQUFULFNBQVMsY0FGUixNQUFNOzsyRkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVja0dyaWRPcHRpb25zIHtcbiAgcm93czogbnVtYmVyO1xuICBjb2xzOiBudW1iZXI7XG4gIGFjdGl2ZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQ2hlY2tHcmlkVHlwZSA9IChcbiAgb3B0aW9uczogQ2hlY2tHcmlkT3B0aW9ucyxcbikgPT4gUHJvbWlzZTxbYm9vbGVhbiwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCB2b2lkPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrR3JpZCB7XG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIGdyaWQgY29uZmlndXJhdGlvbiBhbmQgY2FsY3VsYXRlcyB2YXJpb3VzIHBhcmFtZXRlcnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiByb3dzLCBjb2x1bW5zLCBhbmQgYWN0aXZlIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NoZWNrR3JpZE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY2hlY2tpbmcgdGhlIGdyaWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnJvd3MgLSBUaGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGdyaWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmNvbHMgLSBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmFjdGl2ZXMgLSBUaGUgbnVtYmVyIG9mIGFjdGl2ZSBlbGVtZW50cyBpbiB0aGUgZ3JpZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8W2Jvb2xlYW4sIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgdm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgdHVwbGUgY29udGFpbmluZzpcbiAgICogLSBgcmVtb3ZlQWx0R3JpZGAgKGJvb2xlYW4pOiBJbmRpY2F0ZXMgd2hldGhlciB0byByZW1vdmUgdGhlIGFsdGVybmF0ZSBncmlkLlxuICAgKiAtIGBudW10b2FkZGAgKG51bWJlcik6IFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gYWRkLlxuICAgKiAtIGBudW1Sb3dzYCAobnVtYmVyKTogVGhlIG51bWJlciBvZiByb3dzLlxuICAgKiAtIGBudW1Db2xzYCAobnVtYmVyKTogVGhlIG51bWJlciBvZiBjb2x1bW5zLlxuICAgKiAtIGByZW1haW5pbmdWaWRlb3NgIChudW1iZXIpOiBUaGUgbnVtYmVyIG9mIHJlbWFpbmluZyB2aWRlb3MuXG4gICAqIC0gYGFjdHVhbFJvd3NgIChudW1iZXIpOiBUaGUgYWN0dWFsIG51bWJlciBvZiByb3dzLlxuICAgKiAtIGBsYXN0cm93Y29sc2AgKG51bWJlcik6IFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbGFzdCByb3cuXG4gICAqXG4gICAqIElmIGFuIGVycm9yIG9jY3VycywgaXQgbG9ncyB0aGUgZXJyb3IgdG8gdGhlIGNvbnNvbGUuXG4gICAqL1xuICBhc3luYyBjaGVja0dyaWQoe1xuICAgIHJvd3MsXG4gICAgY29scyxcbiAgICBhY3RpdmVzLFxuICB9OiBDaGVja0dyaWRPcHRpb25zKTogUHJvbWlzZTxbYm9vbGVhbiwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCB2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBudW1Sb3dzID0gMDtcbiAgICAgIGxldCBudW1Db2xzID0gMDtcbiAgICAgIGxldCBsYXN0cm93ID0gMDtcbiAgICAgIGxldCBsYXN0cm93Y29scyA9IDA7XG4gICAgICBsZXQgcmVtYWluaW5nVmlkZW9zID0gMDtcbiAgICAgIGxldCBudW10b2FkZCA9IDA7XG4gICAgICBsZXQgYWN0dWFsUm93cyA9IDA7XG4gICAgICBsZXQgcmVtb3ZlQWx0R3JpZCA9IGZhbHNlO1xuXG4gICAgICBpZiAocm93cyAqIGNvbHMgIT09IGFjdGl2ZXMpIHtcbiAgICAgICAgaWYgKHJvd3MgKiBjb2xzID4gYWN0aXZlcykge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGFjdGl2ZXMgLSAocm93cyAtIDEpICogY29scztcbiAgICAgICAgICBpZiAoY29scyAqIDAuNSA8IHJlcykge1xuICAgICAgICAgICAgbGFzdHJvdyA9IHJvd3M7XG4gICAgICAgICAgICBsYXN0cm93Y29scyA9IHJlcztcbiAgICAgICAgICAgIHJlbWFpbmluZ1ZpZGVvcyA9IGxhc3Ryb3djb2xzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0cm93Y29scyA9IHJlcyArIGNvbHM7XG4gICAgICAgICAgICBsYXN0cm93ID0gcm93cyAtIDE7XG4gICAgICAgICAgICByZW1haW5pbmdWaWRlb3MgPSBsYXN0cm93Y29scztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBudW1Sb3dzID0gbGFzdHJvdyAtIDE7XG4gICAgICAgICAgbnVtQ29scyA9IGNvbHM7XG4gICAgICAgICAgbnVtdG9hZGQgPSAobGFzdHJvdyAtIDEpICogbnVtQ29scztcbiAgICAgICAgICBhY3R1YWxSb3dzID0gbGFzdHJvdztcblxuICAgICAgICAgIHJlbW92ZUFsdEdyaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUGVyZmVjdCBmaXRcbiAgICAgICAgbnVtQ29scyA9IGNvbHM7XG4gICAgICAgIG51bVJvd3MgPSByb3dzO1xuICAgICAgICBsYXN0cm93ID0gcm93cztcbiAgICAgICAgbGFzdHJvd2NvbHMgPSBjb2xzO1xuICAgICAgICByZW1haW5pbmdWaWRlb3MgPSAwO1xuICAgICAgICBudW10b2FkZCA9IGxhc3Ryb3cgKiBudW1Db2xzO1xuICAgICAgICBhY3R1YWxSb3dzID0gbGFzdHJvdztcbiAgICAgICAgcmVtb3ZlQWx0R3JpZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbcmVtb3ZlQWx0R3JpZCwgbnVtdG9hZGQsIG51bVJvd3MsIG51bUNvbHMsIHJlbWFpbmluZ1ZpZGVvcywgYWN0dWFsUm93cywgbGFzdHJvd2NvbHNdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnY2hlY2tHcmlkIGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CheckPermission {
|
|
4
|
-
/**
|
|
5
|
-
* Checks the permission based on the provided settings.
|
|
6
|
-
*
|
|
7
|
-
* @param {CheckPermissionOptions} options - The options for checking permissions.
|
|
8
|
-
* @param {string} options.permissionType - The type of permission to check. Can be "audioSetting", "videoSetting", "screenshareSetting", or "chatSetting".
|
|
9
|
-
* @param {string} options.audioSetting - The setting for audio permission. Can be "allow", "approval", or other.
|
|
10
|
-
* @param {string} options.videoSetting - The setting for video permission. Can be "allow", "approval", or other.
|
|
11
|
-
* @param {string} options.screenshareSetting - The setting for screenshare permission. Can be "allow", "approval", or other.
|
|
12
|
-
* @param {string} options.chatSetting - The setting for chat permission. Can be "allow", "approval", or other.
|
|
13
|
-
* @returns {Promise<number>} - Returns 0 if the setting is "allow", 1 if the setting is "approval", and 2 for other settings or invalid permission types.
|
|
14
|
-
* @throws Will throw an error if an unexpected error occurs during the permission check.
|
|
15
|
-
*/
|
|
16
|
-
async checkPermission({ permissionType, audioSetting, videoSetting, screenshareSetting, chatSetting, }) {
|
|
17
|
-
try {
|
|
18
|
-
// Perform a switch case to check for the permissionType and return the response
|
|
19
|
-
switch (permissionType) {
|
|
20
|
-
case 'audioSetting':
|
|
21
|
-
if (audioSetting === 'allow') {
|
|
22
|
-
return 0;
|
|
23
|
-
}
|
|
24
|
-
else if (audioSetting === 'approval') {
|
|
25
|
-
return 1;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
return 2;
|
|
29
|
-
}
|
|
30
|
-
case 'videoSetting':
|
|
31
|
-
if (videoSetting === 'allow') {
|
|
32
|
-
return 0;
|
|
33
|
-
}
|
|
34
|
-
else if (videoSetting === 'approval') {
|
|
35
|
-
return 1;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
return 2;
|
|
39
|
-
}
|
|
40
|
-
case 'screenshareSetting':
|
|
41
|
-
if (screenshareSetting === 'allow') {
|
|
42
|
-
return 0;
|
|
43
|
-
}
|
|
44
|
-
else if (screenshareSetting === 'approval') {
|
|
45
|
-
return 1;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return 2;
|
|
49
|
-
}
|
|
50
|
-
case 'chatSetting':
|
|
51
|
-
if (chatSetting === 'allow') {
|
|
52
|
-
return 0;
|
|
53
|
-
}
|
|
54
|
-
else if (chatSetting === 'approval') {
|
|
55
|
-
return 1;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
return 2;
|
|
59
|
-
}
|
|
60
|
-
default:
|
|
61
|
-
// throw new Error(`Invalid permissionType: ${permissionType}`);
|
|
62
|
-
return 2;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
// console.log('checkPermission error', error);
|
|
67
|
-
// throw error;
|
|
68
|
-
return 2;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckPermission, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckPermission, providedIn: 'root' });
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckPermission, decorators: [{
|
|
75
|
-
type: Injectable,
|
|
76
|
-
args: [{
|
|
77
|
-
providedIn: 'root',
|
|
78
|
-
}]
|
|
79
|
-
}] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jaGVjay1wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFlM0MsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7Ozs7Ozs7O09BV0c7SUFFSCxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQ3BCLGNBQWMsRUFDZCxZQUFZLEVBQ1osWUFBWSxFQUNaLGtCQUFrQixFQUNsQixXQUFXLEdBQ1k7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsZ0ZBQWdGO1lBQ2hGLFFBQVEsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssY0FBYztvQkFDakIsSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQzdCLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILEtBQUssY0FBYztvQkFDakIsSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQzdCLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILEtBQUssb0JBQW9CO29CQUN2QixJQUFJLGtCQUFrQixLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUNuQyxPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO3lCQUFNLElBQUksa0JBQWtCLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQzdDLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILEtBQUssYUFBYTtvQkFDaEIsSUFBSSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQzVCLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sSUFBSSxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3RDLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNIO29CQUNFLGdFQUFnRTtvQkFDaEUsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZiwrQ0FBK0M7WUFDL0MsZUFBZTtZQUNmLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7dUdBakVVLGVBQWU7MkdBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuZXhwb3J0IGludGVyZmFjZSBDaGVja1Blcm1pc3Npb25PcHRpb25zIHtcbiAgYXVkaW9TZXR0aW5nOiBzdHJpbmc7XG4gIHZpZGVvU2V0dGluZzogc3RyaW5nO1xuICBzY3JlZW5zaGFyZVNldHRpbmc6IHN0cmluZztcbiAgY2hhdFNldHRpbmc6IHN0cmluZztcbiAgcGVybWlzc2lvblR5cGU6ICdhdWRpb1NldHRpbmcnIHwgJ3ZpZGVvU2V0dGluZycgfCAnc2NyZWVuc2hhcmVTZXR0aW5nJyB8ICdjaGF0U2V0dGluZyc7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENoZWNrUGVybWlzc2lvblR5cGUgPSAob3B0aW9uczogQ2hlY2tQZXJtaXNzaW9uT3B0aW9ucykgPT4gUHJvbWlzZTxudW1iZXI+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tQZXJtaXNzaW9uIHtcbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgcGVybWlzc2lvbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7Q2hlY2tQZXJtaXNzaW9uT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjaGVja2luZyBwZXJtaXNzaW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGVybWlzc2lvblR5cGUgLSBUaGUgdHlwZSBvZiBwZXJtaXNzaW9uIHRvIGNoZWNrLiBDYW4gYmUgXCJhdWRpb1NldHRpbmdcIiwgXCJ2aWRlb1NldHRpbmdcIiwgXCJzY3JlZW5zaGFyZVNldHRpbmdcIiwgb3IgXCJjaGF0U2V0dGluZ1wiLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hdWRpb1NldHRpbmcgLSBUaGUgc2V0dGluZyBmb3IgYXVkaW8gcGVybWlzc2lvbi4gQ2FuIGJlIFwiYWxsb3dcIiwgXCJhcHByb3ZhbFwiLCBvciBvdGhlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudmlkZW9TZXR0aW5nIC0gVGhlIHNldHRpbmcgZm9yIHZpZGVvIHBlcm1pc3Npb24uIENhbiBiZSBcImFsbG93XCIsIFwiYXBwcm92YWxcIiwgb3Igb3RoZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnNjcmVlbnNoYXJlU2V0dGluZyAtIFRoZSBzZXR0aW5nIGZvciBzY3JlZW5zaGFyZSBwZXJtaXNzaW9uLiBDYW4gYmUgXCJhbGxvd1wiLCBcImFwcHJvdmFsXCIsIG9yIG90aGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0dGluZyAtIFRoZSBzZXR0aW5nIGZvciBjaGF0IHBlcm1pc3Npb24uIENhbiBiZSBcImFsbG93XCIsIFwiYXBwcm92YWxcIiwgb3Igb3RoZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gUmV0dXJucyAwIGlmIHRoZSBzZXR0aW5nIGlzIFwiYWxsb3dcIiwgMSBpZiB0aGUgc2V0dGluZyBpcyBcImFwcHJvdmFsXCIsIGFuZCAyIGZvciBvdGhlciBzZXR0aW5ncyBvciBpbnZhbGlkIHBlcm1pc3Npb24gdHlwZXMuXG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIHBlcm1pc3Npb24gY2hlY2suXG4gICAqL1xuXG4gIGFzeW5jIGNoZWNrUGVybWlzc2lvbih7XG4gICAgcGVybWlzc2lvblR5cGUsXG4gICAgYXVkaW9TZXR0aW5nLFxuICAgIHZpZGVvU2V0dGluZyxcbiAgICBzY3JlZW5zaGFyZVNldHRpbmcsXG4gICAgY2hhdFNldHRpbmcsXG4gIH06IENoZWNrUGVybWlzc2lvbk9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBQZXJmb3JtIGEgc3dpdGNoIGNhc2UgdG8gY2hlY2sgZm9yIHRoZSBwZXJtaXNzaW9uVHlwZSBhbmQgcmV0dXJuIHRoZSByZXNwb25zZVxuICAgICAgc3dpdGNoIChwZXJtaXNzaW9uVHlwZSkge1xuICAgICAgICBjYXNlICdhdWRpb1NldHRpbmcnOlxuICAgICAgICAgIGlmIChhdWRpb1NldHRpbmcgPT09ICdhbGxvdycpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXVkaW9TZXR0aW5nID09PSAnYXBwcm92YWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICd2aWRlb1NldHRpbmcnOlxuICAgICAgICAgIGlmICh2aWRlb1NldHRpbmcgPT09ICdhbGxvdycpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAodmlkZW9TZXR0aW5nID09PSAnYXBwcm92YWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdzY3JlZW5zaGFyZVNldHRpbmcnOlxuICAgICAgICAgIGlmIChzY3JlZW5zaGFyZVNldHRpbmcgPT09ICdhbGxvdycpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuc2hhcmVTZXR0aW5nID09PSAnYXBwcm92YWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdjaGF0U2V0dGluZyc6XG4gICAgICAgICAgaWYgKGNoYXRTZXR0aW5nID09PSAnYWxsb3cnKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYXRTZXR0aW5nID09PSAnYXBwcm92YWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwZXJtaXNzaW9uVHlwZTogJHtwZXJtaXNzaW9uVHlwZX1gKTtcbiAgICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2NoZWNrUGVybWlzc2lvbiBlcnJvcicsIGVycm9yKTtcbiAgICAgIC8vIHRocm93IGVycm9yO1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CheckScreenShare {
|
|
4
|
-
/**
|
|
5
|
-
* Checks the current screen sharing status and either stops or requests screen sharing based on the provided parameters.
|
|
6
|
-
*
|
|
7
|
-
* @param {CheckScreenShareOptions} options - The options for checking screen share.
|
|
8
|
-
* @param {Object} options.parameters - The parameters for screen sharing.
|
|
9
|
-
* @param {boolean} options.parameters.shared - Indicates if the screen is currently being shared.
|
|
10
|
-
* @param {Function} [options.parameters.showAlert] - Function to show alerts.
|
|
11
|
-
* @param {boolean} options.parameters.whiteboardStarted - Indicates if the whiteboard session has started.
|
|
12
|
-
* @param {boolean} options.parameters.whiteboardEnded - Indicates if the whiteboard session has ended.
|
|
13
|
-
* @param {boolean} options.parameters.breakOutRoomStarted - Indicates if the breakout room session has started.
|
|
14
|
-
* @param {boolean} options.parameters.breakOutRoomEnded - Indicates if the breakout room session has ended.
|
|
15
|
-
* @param {Function} options.parameters.stopShareScreen - Function to stop screen sharing.
|
|
16
|
-
* @param {Function} options.parameters.requestScreenShare - Function to request screen sharing.
|
|
17
|
-
*
|
|
18
|
-
* @returns {Promise<void>} A promise that resolves when the screen sharing status has been checked and the appropriate action has been taken.
|
|
19
|
-
*
|
|
20
|
-
* @throws Will log an error message if an error occurs during the process.
|
|
21
|
-
*/
|
|
22
|
-
checkScreenShare = async ({ parameters }) => {
|
|
23
|
-
try {
|
|
24
|
-
const { shared, showAlert, whiteboardStarted, whiteboardEnded, breakOutRoomStarted, breakOutRoomEnded,
|
|
25
|
-
// mediasfu functions
|
|
26
|
-
stopShareScreen, requestScreenShare, } = parameters;
|
|
27
|
-
// Stop screen share if already shared or request screen share if not shared
|
|
28
|
-
if (shared) {
|
|
29
|
-
if (whiteboardStarted && !whiteboardEnded) {
|
|
30
|
-
showAlert?.({
|
|
31
|
-
message: 'Screen share is not allowed when whiteboard is active',
|
|
32
|
-
type: 'danger',
|
|
33
|
-
});
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
await stopShareScreen({ parameters });
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
// Can't share if breakout room is active
|
|
40
|
-
if (breakOutRoomStarted && !breakOutRoomEnded) {
|
|
41
|
-
showAlert?.({
|
|
42
|
-
message: 'Screen share is not allowed when breakout room is active',
|
|
43
|
-
type: 'danger',
|
|
44
|
-
});
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (whiteboardStarted && !whiteboardEnded) {
|
|
48
|
-
showAlert?.({
|
|
49
|
-
message: 'Screen share is not allowed when whiteboard is active',
|
|
50
|
-
type: 'danger',
|
|
51
|
-
});
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
await requestScreenShare({ parameters });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
console.log('checkScreenShare error', error);
|
|
59
|
-
// throw error;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckScreenShare, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
63
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckScreenShare, providedIn: 'root' });
|
|
64
|
-
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CheckScreenShare, decorators: [{
|
|
66
|
-
type: Injectable,
|
|
67
|
-
args: [{
|
|
68
|
-
providedIn: 'root',
|
|
69
|
-
}]
|
|
70
|
-
}] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stc2NyZWVuLXNoYXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2NoZWNrLXNjcmVlbi1zaGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBb0MzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBMkIsRUFBaUIsRUFBRTtRQUNsRixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixpQkFBaUI7WUFFakIscUJBQXFCO1lBQ3JCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsR0FBRyxVQUFVLENBQUM7WUFFZiw0RUFBNEU7WUFDNUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLGlCQUFpQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzFDLFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSx1REFBdUQ7d0JBQ2hFLElBQUksRUFBRSxRQUFRO3FCQUNmLENBQUMsQ0FBQztvQkFDSCxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsTUFBTSxlQUFlLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTix5Q0FBeUM7Z0JBQ3pDLElBQUksbUJBQW1CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsMERBQTBEO3dCQUNuRSxJQUFJLEVBQUUsUUFBUTtxQkFDZixDQUFDLENBQUM7b0JBQ0gsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksaUJBQWlCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDMUMsU0FBUyxFQUFFLENBQUM7d0JBQ1YsT0FBTyxFQUFFLHVEQUF1RDt3QkFDaEUsSUFBSSxFQUFFLFFBQVE7cUJBQ2YsQ0FBQyxDQUFDO29CQUNILE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxNQUFNLGtCQUFrQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdDLGVBQWU7UUFDakIsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0FuRVMsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RvcFNoYXJlU2NyZWVuVHlwZSxcbiAgU3RvcFNoYXJlU2NyZWVuUGFyYW1ldGVycyxcbiAgUmVxdWVzdFNjcmVlblNoYXJlVHlwZSxcbiAgUmVxdWVzdFNjcmVlblNoYXJlUGFyYW1ldGVycyxcbiAgU2hvd0FsZXJ0LFxufSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDaGVja1NjcmVlblNoYXJlUGFyYW1ldGVyc1xuICBleHRlbmRzIFN0b3BTaGFyZVNjcmVlblBhcmFtZXRlcnMsXG4gICAgUmVxdWVzdFNjcmVlblNoYXJlUGFyYW1ldGVycyB7XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgd2hpdGVib2FyZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHdoaXRlYm9hcmRFbmRlZDogYm9vbGVhbjtcbiAgYnJlYWtPdXRSb29tU3RhcnRlZDogYm9vbGVhbjtcbiAgYnJlYWtPdXRSb29tRW5kZWQ6IGJvb2xlYW47XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcblxuICAvLyBNZWRpYXNmdSBmdW5jdGlvbnNcbiAgc3RvcFNoYXJlU2NyZWVuOiBTdG9wU2hhcmVTY3JlZW5UeXBlO1xuICByZXF1ZXN0U2NyZWVuU2hhcmU6IFJlcXVlc3RTY3JlZW5TaGFyZVR5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQ2hlY2tTY3JlZW5TaGFyZVBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVja1NjcmVlblNoYXJlT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IENoZWNrU2NyZWVuU2hhcmVQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDaGVja1NjcmVlblNoYXJlVHlwZSA9IChvcHRpb25zOiBDaGVja1NjcmVlblNoYXJlT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrU2NyZWVuU2hhcmUge1xuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjdXJyZW50IHNjcmVlbiBzaGFyaW5nIHN0YXR1cyBhbmQgZWl0aGVyIHN0b3BzIG9yIHJlcXVlc3RzIHNjcmVlbiBzaGFyaW5nIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NoZWNrU2NyZWVuU2hhcmVPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNoZWNraW5nIHNjcmVlbiBzaGFyZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBzY3JlZW4gc2hhcmluZy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVkIC0gSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgY3VycmVudGx5IGJlaW5nIHNoYXJlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMucGFyYW1ldGVycy5zaG93QWxlcnRdIC0gRnVuY3Rpb24gdG8gc2hvdyBhbGVydHMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRTdGFydGVkIC0gSW5kaWNhdGVzIGlmIHRoZSB3aGl0ZWJvYXJkIHNlc3Npb24gaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZCAtIEluZGljYXRlcyBpZiB0aGUgd2hpdGVib2FyZCBzZXNzaW9uIGhhcyBlbmRlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuYnJlYWtPdXRSb29tU3RhcnRlZCAtIEluZGljYXRlcyBpZiB0aGUgYnJlYWtvdXQgcm9vbSBzZXNzaW9uIGhhcyBzdGFydGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5icmVha091dFJvb21FbmRlZCAtIEluZGljYXRlcyBpZiB0aGUgYnJlYWtvdXQgcm9vbSBzZXNzaW9uIGhhcyBlbmRlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnN0b3BTaGFyZVNjcmVlbiAtIEZ1bmN0aW9uIHRvIHN0b3Agc2NyZWVuIHNoYXJpbmcuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZXF1ZXN0U2NyZWVuU2hhcmUgLSBGdW5jdGlvbiB0byByZXF1ZXN0IHNjcmVlbiBzaGFyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2NyZWVuIHNoYXJpbmcgc3RhdHVzIGhhcyBiZWVuIGNoZWNrZWQgYW5kIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gaGFzIGJlZW4gdGFrZW4uXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgY2hlY2tTY3JlZW5TaGFyZSA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogQ2hlY2tTY3JlZW5TaGFyZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBzaGFyZWQsXG4gICAgICAgIHNob3dBbGVydCxcbiAgICAgICAgd2hpdGVib2FyZFN0YXJ0ZWQsXG4gICAgICAgIHdoaXRlYm9hcmRFbmRlZCxcbiAgICAgICAgYnJlYWtPdXRSb29tU3RhcnRlZCxcbiAgICAgICAgYnJlYWtPdXRSb29tRW5kZWQsXG5cbiAgICAgICAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gICAgICAgIHN0b3BTaGFyZVNjcmVlbixcbiAgICAgICAgcmVxdWVzdFNjcmVlblNoYXJlLFxuICAgICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICAgIC8vIFN0b3Agc2NyZWVuIHNoYXJlIGlmIGFscmVhZHkgc2hhcmVkIG9yIHJlcXVlc3Qgc2NyZWVuIHNoYXJlIGlmIG5vdCBzaGFyZWRcbiAgICAgIGlmIChzaGFyZWQpIHtcbiAgICAgICAgaWYgKHdoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWQpIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiAnU2NyZWVuIHNoYXJlIGlzIG5vdCBhbGxvd2VkIHdoZW4gd2hpdGVib2FyZCBpcyBhY3RpdmUnLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BTaGFyZVNjcmVlbih7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDYW4ndCBzaGFyZSBpZiBicmVha291dCByb29tIGlzIGFjdGl2ZVxuICAgICAgICBpZiAoYnJlYWtPdXRSb29tU3RhcnRlZCAmJiAhYnJlYWtPdXRSb29tRW5kZWQpIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiAnU2NyZWVuIHNoYXJlIGlzIG5vdCBhbGxvd2VkIHdoZW4gYnJlYWtvdXQgcm9vbSBpcyBhY3RpdmUnLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWQpIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiAnU2NyZWVuIHNoYXJlIGlzIG5vdCBhbGxvd2VkIHdoZW4gd2hpdGVib2FyZCBpcyBhY3RpdmUnLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3RTY3JlZW5TaGFyZSh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdjaGVja1NjcmVlblNoYXJlIGVycm9yJywgZXJyb3IpO1xuICAgICAgLy8gdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CloseAndResize {
|
|
4
|
-
/**
|
|
5
|
-
* Closes and resizes the video and audio elements based on the provided options.
|
|
6
|
-
*
|
|
7
|
-
* @param {CloseAndResizeOptions} options - The options for closing and resizing.
|
|
8
|
-
* @param {string} options.producerId - The ID of the producer.
|
|
9
|
-
* @param {string} options.kind - The kind of media (audio, video, screenshare, or screen).
|
|
10
|
-
* @param {object} options.parameters - The parameters for the operation.
|
|
11
|
-
* @param {function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
|
|
12
|
-
* @param {Array} options.parameters.allAudioStreams - Array of all audio streams.
|
|
13
|
-
* @param {Array} options.parameters.allVideoStreams - Array of all video streams.
|
|
14
|
-
* @param {Array} options.parameters.activeNames - Array of active participant names.
|
|
15
|
-
* @param {Array} options.parameters.participants - Array of participants.
|
|
16
|
-
* @param {Array} options.parameters.streamNames - Array of stream names.
|
|
17
|
-
* @param {string} options.parameters.recordingDisplayType - Type of recording display.
|
|
18
|
-
* @param {boolean} options.parameters.recordingVideoOptimized - Whether recording is video optimized.
|
|
19
|
-
* @param {string} options.parameters.adminIDStream - ID of the admin stream.
|
|
20
|
-
* @param {Array} options.parameters.newLimitedStreams - Array of new limited streams.
|
|
21
|
-
* @param {Array} options.parameters.newLimitedStreamsIDs - Array of new limited stream IDs.
|
|
22
|
-
* @param {Array} options.parameters.oldAllStreams - Array of old all streams.
|
|
23
|
-
* @param {boolean} options.parameters.shareScreenStarted - Whether screen sharing has started.
|
|
24
|
-
* @param {boolean} options.parameters.shared - Whether sharing is active.
|
|
25
|
-
* @param {string} options.parameters.meetingDisplayType - Type of meeting display.
|
|
26
|
-
* @param {boolean} options.parameters.defer_receive - Whether to defer receiving.
|
|
27
|
-
* @param {boolean} options.parameters.lock_screen - Whether the screen is locked.
|
|
28
|
-
* @param {boolean} options.parameters.firstAll - Whether it is the first all.
|
|
29
|
-
* @param {boolean} options.parameters.first_round - Whether it is the first round.
|
|
30
|
-
* @param {boolean} options.parameters.gotAllVids - Whether all videos are received.
|
|
31
|
-
* @param {string} options.parameters.eventType - Type of event.
|
|
32
|
-
* @param {string} options.parameters.hostLabel - Label of the host.
|
|
33
|
-
* @param {boolean} options.parameters.shareEnded - Whether sharing has ended.
|
|
34
|
-
* @param {boolean} options.parameters.updateMainWindow - Whether to update the main window.
|
|
35
|
-
* @param {function} options.parameters.updateActiveNames - Function to update active names.
|
|
36
|
-
* @param {function} options.parameters.updateAllAudioStreams - Function to update all audio streams.
|
|
37
|
-
* @param {function} options.parameters.updateAllVideoStreams - Function to update all video streams.
|
|
38
|
-
* @param {function} options.parameters.updateShareScreenStarted - Function to update share screen started status.
|
|
39
|
-
* @param {function} options.parameters.updateUpdateMainWindow - Function to update main window status.
|
|
40
|
-
* @param {function} options.parameters.updateNewLimitedStreams - Function to update new limited streams.
|
|
41
|
-
* @param {function} options.parameters.updateOldAllStreams - Function to update old all streams.
|
|
42
|
-
* @param {function} options.parameters.updateDefer_receive - Function to update defer receive status.
|
|
43
|
-
* @param {function} options.parameters.updateMainHeightWidth - Function to update main height and width.
|
|
44
|
-
* @param {function} options.parameters.updateShareEnded - Function to update share ended status.
|
|
45
|
-
* @param {function} options.parameters.updateLock_screen - Function to update lock screen status.
|
|
46
|
-
* @param {function} options.parameters.updateFirstAll - Function to update first all status.
|
|
47
|
-
* @param {function} options.parameters.updateFirst_round - Function to update first round status.
|
|
48
|
-
* @param {function} options.parameters.reorderStreams - Function to reorder streams.
|
|
49
|
-
* @param {function} options.parameters.prepopulateUserMedia - Function to prepopulate user media.
|
|
50
|
-
* @param {function} options.parameters.getVideos - Function to get videos.
|
|
51
|
-
* @param {function} options.parameters.rePort - Function to report.
|
|
52
|
-
*
|
|
53
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
54
|
-
*/
|
|
55
|
-
closeAndResize = async ({ producerId, kind, parameters, }) => {
|
|
56
|
-
let { getUpdatedAllParams } = parameters;
|
|
57
|
-
parameters = getUpdatedAllParams();
|
|
58
|
-
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,
|
|
59
|
-
//mediasfu functions
|
|
60
|
-
reorderStreams, prepopulateUserMedia, getVideos, rePort, } = parameters;
|
|
61
|
-
//function to close and resize the video and audio elements
|
|
62
|
-
let participant;
|
|
63
|
-
if (kind === 'audio') {
|
|
64
|
-
//stop the audio by removing the miniAudio with id = producerId
|
|
65
|
-
//remove the audio from the allAudioStreams array
|
|
66
|
-
allAudioStreams = allAudioStreams.filter(function (audioStream) {
|
|
67
|
-
return audioStream.producerId !== producerId;
|
|
68
|
-
});
|
|
69
|
-
updateAllAudioStreams(allAudioStreams);
|
|
70
|
-
if (recordingDisplayType == 'video' && recordingVideoOptimized == true) {
|
|
71
|
-
// do nothing
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
//get the name of the participant with the producerId
|
|
75
|
-
participant = participants.find((obj) => obj.audioID === producerId);
|
|
76
|
-
if (participant) {
|
|
77
|
-
//check if the participants videoID is not null or ""
|
|
78
|
-
if (participant.videoID !== null && participant.videoID !== '') {
|
|
79
|
-
// do nothing
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
//remove the participant from the activeNames array
|
|
83
|
-
activeNames = activeNames.filter(function (name) {
|
|
84
|
-
return name !== participant?.name;
|
|
85
|
-
});
|
|
86
|
-
updateActiveNames(activeNames);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
let checker = false;
|
|
91
|
-
let alt_checker = false;
|
|
92
|
-
if (meetingDisplayType == 'video' && participant) {
|
|
93
|
-
checker =
|
|
94
|
-
participant[0].videoID != null &&
|
|
95
|
-
participant[0].videoID != '' &&
|
|
96
|
-
participant[0].videoID != undefined;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
checker = true;
|
|
100
|
-
alt_checker = true;
|
|
101
|
-
}
|
|
102
|
-
if (checker) {
|
|
103
|
-
if (shareScreenStarted || shared) {
|
|
104
|
-
if (!alt_checker) {
|
|
105
|
-
await reorderStreams({ parameters });
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
if (alt_checker && meetingDisplayType != 'video') {
|
|
110
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else if (kind === 'video') {
|
|
116
|
-
//update the video elements by removing the miniVideo with id = producerId
|
|
117
|
-
//remove the video from the allVideoStreams array
|
|
118
|
-
//check if producerId == adminidstream
|
|
119
|
-
if (producerId == adminIDStream) {
|
|
120
|
-
updateMainWindow = true;
|
|
121
|
-
updateUpdateMainWindow(updateMainWindow);
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
allVideoStreams = allVideoStreams.filter(function (videoStream) {
|
|
125
|
-
return videoStream.producerId !== producerId;
|
|
126
|
-
});
|
|
127
|
-
updateAllVideoStreams(allVideoStreams);
|
|
128
|
-
try {
|
|
129
|
-
//try remove it from oldVideoStreams
|
|
130
|
-
oldAllStreams = oldAllStreams.filter(function (videoStream) {
|
|
131
|
-
return videoStream.producerId !== producerId;
|
|
132
|
-
});
|
|
133
|
-
updateOldAllStreams(oldAllStreams);
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
/* handle error */
|
|
137
|
-
}
|
|
138
|
-
try {
|
|
139
|
-
//try remove it from newLimitedStreams
|
|
140
|
-
newLimitedStreams = newLimitedStreams.filter(function (videoStream) {
|
|
141
|
-
return videoStream.producerId !== producerId;
|
|
142
|
-
});
|
|
143
|
-
updateNewLimitedStreams(newLimitedStreams);
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
/* handle error */
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
try {
|
|
151
|
-
//try remove it from oldVideoStreams
|
|
152
|
-
oldAllStreams = oldAllStreams.filter(function (videoStream) {
|
|
153
|
-
return videoStream.producerId !== producerId;
|
|
154
|
-
});
|
|
155
|
-
updateOldAllStreams(oldAllStreams);
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
/* handle error */
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
try {
|
|
162
|
-
//remove the participant from activeNames
|
|
163
|
-
activeNames = activeNames.filter(function (name) {
|
|
164
|
-
//get the participant with the producerId
|
|
165
|
-
let participant = streamNames.find((obj) => obj.producerId === producerId);
|
|
166
|
-
return name !== (participant?.name ?? '');
|
|
167
|
-
});
|
|
168
|
-
updateActiveNames(activeNames);
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
/* handle error */
|
|
172
|
-
}
|
|
173
|
-
if (lock_screen) {
|
|
174
|
-
defer_receive = true;
|
|
175
|
-
// check if the video is the one being displayed (i.e. (newLimitedStreamsIDs))
|
|
176
|
-
if (newLimitedStreamsIDs.includes(producerId)) {
|
|
177
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
178
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
183
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
else if (kind === 'screenshare' || kind === 'screen') {
|
|
187
|
-
//update the video elements by removing the mainVideo with id = producerId
|
|
188
|
-
updateMainWindow = true;
|
|
189
|
-
//screenshare stuff
|
|
190
|
-
shareScreenStarted = false;
|
|
191
|
-
shareEnded = true;
|
|
192
|
-
lock_screen = false;
|
|
193
|
-
firstAll = false;
|
|
194
|
-
first_round = false;
|
|
195
|
-
updateUpdateMainWindow(updateMainWindow);
|
|
196
|
-
updateShareScreenStarted(shareScreenStarted);
|
|
197
|
-
updateShareEnded(shareEnded);
|
|
198
|
-
updateLock_screen(lock_screen);
|
|
199
|
-
updateFirstAll(firstAll);
|
|
200
|
-
updateFirst_round(first_round);
|
|
201
|
-
if (!gotAllVids || defer_receive) {
|
|
202
|
-
defer_receive = false;
|
|
203
|
-
updateDefer_receive(defer_receive);
|
|
204
|
-
await getVideos({
|
|
205
|
-
participants,
|
|
206
|
-
allVideoStreams,
|
|
207
|
-
oldAllStreams,
|
|
208
|
-
updateAllVideoStreams,
|
|
209
|
-
updateOldAllStreams,
|
|
210
|
-
});
|
|
211
|
-
await rePort({ parameters });
|
|
212
|
-
}
|
|
213
|
-
if (eventType == 'conference') {
|
|
214
|
-
updateMainHeightWidth(0);
|
|
215
|
-
}
|
|
216
|
-
await prepopulateUserMedia({ name: hostLabel, parameters });
|
|
217
|
-
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
221
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, providedIn: 'root' });
|
|
222
|
-
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CloseAndResize, decorators: [{
|
|
224
|
-
type: Injectable,
|
|
225
|
-
args: [{
|
|
226
|
-
providedIn: 'root',
|
|
227
|
-
}]
|
|
228
|
-
}] });
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2UtYW5kLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jbG9zZS1hbmQtcmVzaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUEwRTNDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtERztJQUVILGNBQWMsR0FBRyxLQUFLLEVBQUUsRUFDdEIsVUFBVSxFQUNWLElBQUksRUFDSixVQUFVLEdBQ1ksRUFBaUIsRUFBRTtRQUN6QyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDekMsVUFBVSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFbkMsSUFBSSxFQUNGLGVBQWUsRUFDZixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBRVQsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsaUJBQWlCO1FBRWpCLG9CQUFv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VSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RyZWFtLFxuICBQYXJ0aWNpcGFudCxcbiAgUmVvcmRlclN0cmVhbXNUeXBlLFxuICBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlLFxuICBHZXRWaWRlb3NUeXBlLFxuICBSZVBvcnRUeXBlLFxuICBSZVBvcnRQYXJhbWV0ZXJzLFxuICBFdmVudFR5cGUsXG59IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvc2VBbmRSZXNpemVQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgUmVvcmRlclN0cmVhbXNQYXJhbWV0ZXJzLFxuICAgIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBSZVBvcnRQYXJhbWV0ZXJzIHtcbiAgYWxsQXVkaW9TdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIGFsbFZpZGVvU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBhY3RpdmVOYW1lczogc3RyaW5nW107XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgc3RyZWFtTmFtZXM6IFN0cmVhbVtdO1xuICByZWNvcmRpbmdEaXNwbGF5VHlwZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJztcbiAgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQ6IGJvb2xlYW47XG4gIGFkbWluSURTdHJlYW0/OiBzdHJpbmc7XG4gIG5ld0xpbWl0ZWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIG5ld0xpbWl0ZWRTdHJlYW1zSURzOiBzdHJpbmdbXTtcbiAgb2xkQWxsU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgbWVldGluZ0Rpc3BsYXlUeXBlOiBzdHJpbmc7XG4gIGRlZmVyX3JlY2VpdmU6IGJvb2xlYW47XG4gIGxvY2tfc2NyZWVuOiBib29sZWFuO1xuICBmaXJzdEFsbDogYm9vbGVhbjtcbiAgZmlyc3Rfcm91bmQ6IGJvb2xlYW47XG4gIGdvdEFsbFZpZHM6IGJvb2xlYW47XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgc2hhcmVFbmRlZDogYm9vbGVhbjtcbiAgdXBkYXRlTWFpbldpbmRvdzogYm9vbGVhbjtcbiAgdXBkYXRlQWN0aXZlTmFtZXM6IChhY3RpdmVOYW1lczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZUFsbEF1ZGlvU3RyZWFtczogKGFsbEF1ZGlvU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdKSA9PiB2b2lkO1xuICB1cGRhdGVTaGFyZVNjcmVlblN0YXJ0ZWQ6IChzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6ICh1cGRhdGVNYWluV2luZG93OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVOZXdMaW1pdGVkU3RyZWFtczogKG5ld0xpbWl0ZWRTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW10pID0+IHZvaWQ7XG4gIHVwZGF0ZU9sZEFsbFN0cmVhbXM6IChvbGRBbGxTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW10pID0+IHZvaWQ7XG4gIHVwZGF0ZURlZmVyX3JlY2VpdmU6IChkZWZlcl9yZWNlaXZlOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVNYWluSGVpZ2h0V2lkdGg6IChoZWlnaHRXaWR0aDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVTaGFyZUVuZGVkOiAoc2hhcmVFbmRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlTG9ja19zY3JlZW46IChsb2NrX3NjcmVlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRmlyc3RBbGw6IChmaXJzdEFsbDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRmlyc3Rfcm91bmQ6IChmaXJzdF9yb3VuZDogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgcmVvcmRlclN0cmVhbXM6IFJlb3JkZXJTdHJlYW1zVHlwZTtcbiAgcHJlcG9wdWxhdGVVc2VyTWVkaWE6IFByZXBvcHVsYXRlVXNlck1lZGlhVHlwZTtcbiAgZ2V0VmlkZW9zOiBHZXRWaWRlb3NUeXBlO1xuICByZVBvcnQ6IFJlUG9ydFR5cGU7XG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IENsb3NlQW5kUmVzaXplUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3NlQW5kUmVzaXplT3B0aW9ucyB7XG4gIHByb2R1Y2VySWQ6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBDbG9zZUFuZFJlc2l6ZVBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsb3NlQW5kUmVzaXplVHlwZSA9IChvcHRpb25zOiBDbG9zZUFuZFJlc2l6ZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xvc2VBbmRSZXNpemUge1xuICAvKipcbiAgICogQ2xvc2VzIGFuZCByZXNpemVzIHRoZSB2aWRlbyBhbmQgYXVkaW8gZWxlbWVudHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q2xvc2VBbmRSZXNpemVPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNsb3NpbmcgYW5kIHJlc2l6aW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wcm9kdWNlcklkIC0gVGhlIElEIG9mIHRoZSBwcm9kdWNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2luZCAtIFRoZSBraW5kIG9mIG1lZGlhIChhdWRpbywgdmlkZW8sIHNjcmVlbnNoYXJlLCBvciBzY3JlZW4pLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBvcGVyYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zIC0gRnVuY3Rpb24gdG8gZ2V0IHVwZGF0ZWQgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFsbEF1ZGlvU3RyZWFtcyAtIEFycmF5IG9mIGFsbCBhdWRpbyBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMuYWxsVmlkZW9TdHJlYW1zIC0gQXJyYXkgb2YgYWxsIHZpZGVvIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5hY3RpdmVOYW1lcyAtIEFycmF5IG9mIGFjdGl2ZSBwYXJ0aWNpcGFudCBuYW1lcy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLnBhcnRpY2lwYW50cyAtIEFycmF5IG9mIHBhcnRpY2lwYW50cy5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLnN0cmVhbU5hbWVzIC0gQXJyYXkgb2Ygc3RyZWFtIG5hbWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZGluZ0Rpc3BsYXlUeXBlIC0gVHlwZSBvZiByZWNvcmRpbmcgZGlzcGxheS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQgLSBXaGV0aGVyIHJlY29yZGluZyBpcyB2aWRlbyBvcHRpbWl6ZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuYWRtaW5JRFN0cmVhbSAtIElEIG9mIHRoZSBhZG1pbiBzdHJlYW0uXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5uZXdMaW1pdGVkU3RyZWFtcyAtIEFycmF5IG9mIG5ldyBsaW1pdGVkIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5uZXdMaW1pdGVkU3RyZWFtc0lEcyAtIEFycmF5IG9mIG5ldyBsaW1pdGVkIHN0cmVhbSBJRHMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMucGFyYW1ldGVycy5vbGRBbGxTdHJlYW1zIC0gQXJyYXkgb2Ygb2xkIGFsbCBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgLSBXaGV0aGVyIHNjcmVlbiBzaGFyaW5nIGhhcyBzdGFydGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZWQgLSBXaGV0aGVyIHNoYXJpbmcgaXMgYWN0aXZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLm1lZXRpbmdEaXNwbGF5VHlwZSAtIFR5cGUgb2YgbWVldGluZyBkaXNwbGF5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5kZWZlcl9yZWNlaXZlIC0gV2hldGhlciB0byBkZWZlciByZWNlaXZpbmcuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmxvY2tfc2NyZWVuIC0gV2hldGhlciB0aGUgc2NyZWVuIGlzIGxvY2tlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZmlyc3RBbGwgLSBXaGV0aGVyIGl0IGlzIHRoZSBmaXJzdCBhbGwuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmZpcnN0X3JvdW5kIC0gV2hldGhlciBpdCBpcyB0aGUgZmlyc3Qgcm91bmQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdvdEFsbFZpZHMgLSBXaGV0aGVyIGFsbCB2aWRlb3MgYXJlIHJlY2VpdmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmV2ZW50VHlwZSAtIFR5cGUgb2YgZXZlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuaG9zdExhYmVsIC0gTGFiZWwgb2YgdGhlIGhvc3QuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNoYXJlRW5kZWQgLSBXaGV0aGVyIHNoYXJpbmcgaGFzIGVuZGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVNYWluV2luZG93IC0gV2hldGhlciB0byB1cGRhdGUgdGhlIG1haW4gd2luZG93LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQWN0aXZlTmFtZXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgYWN0aXZlIG5hbWVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQWxsQXVkaW9TdHJlYW1zIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGFsbCBhdWRpbyBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQWxsVmlkZW9TdHJlYW1zIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGFsbCB2aWRlbyBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlU2hhcmVTY3JlZW5TdGFydGVkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHNoYXJlIHNjcmVlbiBzdGFydGVkIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVVwZGF0ZU1haW5XaW5kb3cgLSBGdW5jdGlvbiB0byB1cGRhdGUgbWFpbiB3aW5kb3cgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTmV3TGltaXRlZFN0cmVhbXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgbmV3IGxpbWl0ZWQgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZU9sZEFsbFN0cmVhbXMgLSBGdW5jdGlvbiB0byB1cGRhdGUgb2xkIGFsbCBzdHJlYW1zLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlRGVmZXJfcmVjZWl2ZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBkZWZlciByZWNlaXZlIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZU1haW5IZWlnaHRXaWR0aCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBtYWluIGhlaWdodCBhbmQgd2lkdGguXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVTaGFyZUVuZGVkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHNoYXJlIGVuZGVkIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUxvY2tfc2NyZWVuIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGxvY2sgc2NyZWVuIHN0YXR1cy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUZpcnN0QWxsIC0gRnVuY3Rpb24gdG8gdXBkYXRlIGZpcnN0IGFsbCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVGaXJzdF9yb3VuZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSBmaXJzdCByb3VuZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZW9yZGVyU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHJlb3JkZXIgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnByZXBvcHVsYXRlVXNlck1lZGlhIC0gRnVuY3Rpb24gdG8gcHJlcG9wdWxhdGUgdXNlciBtZWRpYS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFZpZGVvcyAtIEZ1bmN0aW9uIHRvIGdldCB2aWRlb3MuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZVBvcnQgLSBGdW5jdGlvbiB0byByZXBvcnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gICAqL1xuXG4gIGNsb3NlQW5kUmVzaXplID0gYXN5bmMgKHtcbiAgICBwcm9kdWNlcklkLFxuICAgIGtpbmQsXG4gICAgcGFyYW1ldGVycyxcbiAgfTogQ2xvc2VBbmRSZXNpemVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgbGV0IHsgZ2V0VXBkYXRlZEFsbFBhcmFtcyB9ID0gcGFyYW1ldGVycztcbiAgICBwYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgbGV0IHtcbiAgICAgIGFsbEF1ZGlvU3RyZWFtcyxcbiAgICAgIGFsbFZpZGVvU3RyZWFtcyxcbiAgICAgIGFjdGl2ZU5hbWVzLFxuICAgICAgcGFydGljaXBhbnRzLFxuICAgICAgc3RyZWFtTmFtZXMsXG4gICAgICByZWNvcmRpbmdEaXNwbGF5VHlwZSxcbiAgICAgIHJlY29yZGluZ1ZpZGVvT3B0aW1pemVkLFxuICAgICAgYWRtaW5JRFN0cmVhbSxcbiAgICAgIG5ld0xpbWl0ZWRTdHJlYW1zLFxuICAgICAgbmV3TGltaXRlZFN0cmVhbXNJRHMsXG4gICAgICBvbGRBbGxTdHJlYW1zLFxuICAgICAgc2hhcmVTY3JlZW5TdGFydGVkLFxuICAgICAgc2hhcmVkLFxuICAgICAgbWVldGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgZGVmZXJfcmVjZWl2ZSxcbiAgICAgIGxvY2tfc2NyZWVuLFxuICAgICAgZmlyc3RBbGwsXG4gICAgICBmaXJzdF9yb3VuZCxcbiAgICAgIGdvdEFsbFZpZHMsXG4gICAgICBldmVudFR5cGUsXG5cbiAgICAgIGhvc3RMYWJlbCxcbiAgICAgIHNoYXJlRW5kZWQsXG4gICAgICB1cGRhdGVNYWluV2luZG93LFxuICAgICAgdXBkYXRlQWN0aXZlTmFtZXMsXG4gICAgICB1cGRhdGVBbGxBdWRpb1N0cmVhbXMsXG4gICAgICB1cGRhdGVBbGxWaWRlb1N0cmVhbXMsXG5cbiAgICAgIHVwZGF0ZVNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3csXG4gICAgICB1cGRhdGVOZXdMaW1pdGVkU3RyZWFtcyxcbiAgICAgIHVwZGF0ZU9sZEFsbFN0cmVhbXMsXG4gICAgICB1cGRhdGVEZWZlcl9yZWNlaXZlLFxuICAgICAgdXBkYXRlTWFpbkhlaWdodFdpZHRoLFxuICAgICAgdXBkYXRlU2hhcmVFbmRlZCxcbiAgICAgIHVwZGF0ZUxvY2tfc2NyZWVuLFxuICAgICAgdXBkYXRlRmlyc3RBbGwsXG4gICAgICB1cGRhdGVGaXJzdF9yb3VuZCxcblxuICAgICAgLy9tZWRpYXNmdSBmdW5jdGlvbnNcbiAgICAgIHJlb3JkZXJTdHJlYW1zLFxuICAgICAgcHJlcG9wdWxhdGVVc2VyTWVkaWEsXG4gICAgICBnZXRWaWRlb3MsXG4gICAgICByZVBvcnQsXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICAvL2Z1bmN0aW9uIHRvIGNsb3NlIGFuZCByZXNpemUgdGhlIHZpZGVvIGFuZCBhdWRpbyBlbGVtZW50c1xuXG4gICAgbGV0IHBhcnRpY2lwYW50OiBQYXJ0aWNpcGFudCB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAvL3N0b3AgdGhlIGF1ZGlvIGJ5IHJlbW92aW5nIHRoZSBtaW5pQXVkaW8gd2l0aCBpZCA9IHByb2R1Y2VySWRcblxuICAgICAgLy9yZW1vdmUgdGhlIGF1ZGlvIGZyb20gdGhlIGFsbEF1ZGlvU3RyZWFtcyBhcnJheVxuICAgICAgYWxsQXVkaW9TdHJlYW1zID0gYWxsQXVkaW9TdHJlYW1zLmZpbHRlcihmdW5jdGlvbiAoYXVkaW9TdHJlYW0pIHtcbiAgICAgICAgcmV0dXJuIGF1ZGlvU3RyZWFtLnByb2R1Y2VySWQgIT09IHByb2R1Y2VySWQ7XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlQWxsQXVkaW9TdHJlYW1zKGFsbEF1ZGlvU3RyZWFtcyk7XG5cbiAgICAgIGlmIChyZWNvcmRpbmdEaXNwbGF5VHlwZSA9PSAndmlkZW8nICYmIHJlY29yZGluZ1ZpZGVvT3B0aW1pemVkID09IHRydWUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9nZXQgdGhlIG5hbWUgb2YgdGhlIHBhcnRpY2lwYW50IHdpdGggdGhlIHByb2R1Y2VySWRcbiAgICAgICAgcGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudHMuZmluZCgob2JqKSA9PiBvYmouYXVkaW9JRCA9PT0gcHJvZHVjZXJJZCk7XG5cbiAgICAgICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgLy9jaGVjayBpZiB0aGUgcGFydGljaXBhbnRzIHZpZGVvSUQgaXMgbm90IG51bGwgb3IgXCJcIlxuICAgICAgICAgIGlmIChwYXJ0aWNpcGFudC52aWRlb0lEICE9PSBudWxsICYmIHBhcnRpY2lwYW50LnZpZGVvSUQgIT09ICcnKSB7XG4gICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vcmVtb3ZlIHRoZSBwYXJ0aWNpcGFudCBmcm9tIHRoZSBhY3RpdmVOYW1lcyBhcnJheVxuICAgICAgICAgICAgYWN0aXZlTmFtZXMgPSBhY3RpdmVOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgIT09IHBhcnRpY2lwYW50Py5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVBY3RpdmVOYW1lcyhhY3RpdmVOYW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBjaGVja2VyID0gZmFsc2U7XG4gICAgICBsZXQgYWx0X2NoZWNrZXIgPSBmYWxzZTtcblxuICAgICAgaWYgKG1lZXRpbmdEaXNwbGF5VHlwZSA9PSAndmlkZW8nICYmIHBhcnRpY2lwYW50KSB7XG4gICAgICAgIGNoZWNrZXIgPVxuICAgICAgICAgIHBhcnRpY2lwYW50WzBdLnZpZGVvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgIHBhcnRpY2lwYW50WzBdLnZpZGVvSUQgIT0gJycgJiZcbiAgICAgICAgICBwYXJ0aWNpcGFudFswXS52aWRlb0lEICE9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrZXIgPSB0cnVlO1xuICAgICAgICBhbHRfY2hlY2tlciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGVja2VyKSB7XG4gICAgICAgIGlmIChzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSB7XG4gICAgICAgICAgaWYgKCFhbHRfY2hlY2tlcikge1xuICAgICAgICAgICAgYXdhaXQgcmVvcmRlclN0cmVhbXMoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoYWx0X2NoZWNrZXIgJiYgbWVldGluZ0Rpc3BsYXlUeXBlICE9ICd2aWRlbycpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlb3JkZXJTdHJlYW1zKHsgYWRkOiBmYWxzZSwgc2NyZWVuQ2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgIC8vdXBkYXRlIHRoZSB2aWRlbyBlbGVtZW50cyBieSByZW1vdmluZyB0aGUgbWluaVZpZGVvIHdpdGggaWQgPSBwcm9kdWNlcklkXG4gICAgICAvL3JlbW92ZSB0aGUgdmlkZW8gZnJvbSB0aGUgYWxsVmlkZW9TdHJlYW1zIGFycmF5XG5cbiAgICAgIC8vY2hlY2sgaWYgcHJvZHVjZXJJZCA9PSBhZG1pbmlkc3RyZWFtXG4gICAgICBpZiAocHJvZHVjZXJJZCA9PSBhZG1pbklEU3RyZWFtKSB7XG4gICAgICAgIHVwZGF0ZU1haW5XaW5kb3cgPSB0cnVlO1xuICAgICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93KHVwZGF0ZU1haW5XaW5kb3cpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBhbGxWaWRlb1N0cmVhbXMgPSBhbGxWaWRlb1N0cmVhbXMuZmlsdGVyKGZ1bmN0aW9uICh2aWRlb1N0cmVhbSkge1xuICAgICAgICAgIHJldHVybiB2aWRlb1N0cmVhbS5wcm9kdWNlcklkICE9PSBwcm9kdWNlcklkO1xuICAgICAgICB9KTtcblxuICAgICAgICB1cGRhdGVBbGxWaWRlb1N0cmVhbXMoYWxsVmlkZW9TdHJlYW1zKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vdHJ5IHJlbW92ZSBpdCBmcm9tIG9sZFZpZGVvU3RyZWFtc1xuICAgICAgICAgIG9sZEFsbFN0cmVhbXMgPSBvbGRBbGxTdHJlYW1zLmZpbHRlcihmdW5jdGlvbiAodmlkZW9TdHJlYW0pIHtcbiAgICAgICAgICAgIHJldHVybiB2aWRlb1N0cmVhbS5wcm9kdWNlcklkICE9PSBwcm9kdWNlcklkO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdXBkYXRlT2xkQWxsU3RyZWFtcyhvbGRBbGxTdHJlYW1zKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vdHJ5IHJlbW92ZSBpdCBmcm9tIG5ld0xpbWl0ZWRTdHJlYW1zXG4gICAgICAgICAgbmV3TGltaXRlZFN0cmVhbXMgPSBuZXdMaW1pdGVkU3RyZWFtcy5maWx0ZXIoZnVuY3Rpb24gKHZpZGVvU3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm4gdmlkZW9TdHJlYW0ucHJvZHVjZXJJZCAhPT0gcHJvZHVjZXJJZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHVwZGF0ZU5ld0xpbWl0ZWRTdHJlYW1zKG5ld0xpbWl0ZWRTdHJlYW1zKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy90cnkgcmVtb3ZlIGl0IGZyb20gb2xkVmlkZW9TdHJlYW1zXG4gICAgICAgICAgb2xkQWxsU3RyZWFtcyA9IG9sZEFsbFN0cmVhbXMuZmlsdGVyKGZ1bmN0aW9uICh2aWRlb1N0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuIHZpZGVvU3RyZWFtLnByb2R1Y2VySWQgIT09IHByb2R1Y2VySWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXBkYXRlT2xkQWxsU3RyZWFtcyhvbGRBbGxTdHJlYW1zKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy9yZW1vdmUgdGhlIHBhcnRpY2lwYW50IGZyb20gYWN0aXZlTmFtZXNcbiAgICAgICAgYWN0aXZlTmFtZXMgPSBhY3RpdmVOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAvL2dldCB0aGUgcGFydGljaXBhbnQgd2l0aCB0aGUgcHJvZHVjZXJJZFxuICAgICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHN0cmVhbU5hbWVzLmZpbmQoKG9iaikgPT4gb2JqLnByb2R1Y2VySWQgPT09IHByb2R1Y2VySWQpO1xuXG4gICAgICAgICAgcmV0dXJuIG5hbWUgIT09IChwYXJ0aWNpcGFudD8ubmFtZSA/PyAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHVwZGF0ZUFjdGl2ZU5hbWVzKGFjdGl2ZU5hbWVzKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvKiBoYW5kbGUgZXJyb3IgKi9cbiAgICAgIH1cblxuICAgICAgaWYgKGxvY2tfc2NyZWVuKSB7XG4gICAgICAgIGRlZmVyX3JlY2VpdmUgPSB0cnVlO1xuICAgICAgICAvLyBjaGVjayBpZiB0aGUgdmlkZW8gaXMgdGhlIG9uZSBiZWluZyBkaXNwbGF5ZWQgKGkuZS4gKG5ld0xpbWl0ZWRTdHJlYW1zSURzKSlcbiAgICAgICAgaWYgKG5ld0xpbWl0ZWRTdHJlYW1zSURzLmluY2x1ZGVzKHByb2R1Y2VySWQpKSB7XG4gICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgYXdhaXQgcmVvcmRlclN0cmVhbXMoeyBhZGQ6IGZhbHNlLCBzY3JlZW5DaGFuZ2VkOiB0cnVlLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBwcmVwb3B1bGF0ZVVzZXJNZWRpYSh7IG5hbWU6IGhvc3RMYWJlbCwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgYXdhaXQgcmVvcmRlclN0cmVhbXMoeyBhZGQ6IGZhbHNlLCBzY3JlZW5DaGFuZ2VkOiB0cnVlLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gJ3NjcmVlbnNoYXJlJyB8fCBraW5kID09PSAnc2NyZWVuJykge1xuICAgICAgLy91cGRhdGUgdGhlIHZpZGVvIGVsZW1lbnRzIGJ5IHJlbW92aW5nIHRoZSBtYWluVmlkZW8gd2l0aCBpZCA9IHByb2R1Y2VySWRcbiAgICAgIHVwZGF0ZU1haW5XaW5kb3cgPSB0cnVlO1xuXG4gICAgICAvL3NjcmVlbnNoYXJlIHN0dWZmXG4gICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgIHNoYXJlRW5kZWQgPSB0cnVlO1xuXG4gICAgICBsb2NrX3NjcmVlbiA9IGZhbHNlO1xuICAgICAgZmlyc3RBbGwgPSBmYWxzZTtcbiAgICAgIGZpcnN0X3JvdW5kID0gZmFsc2U7XG5cbiAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3codXBkYXRlTWFpbldpbmRvdyk7XG4gICAgICB1cGRhdGVTaGFyZVNjcmVlblN0YXJ0ZWQoc2hhcmVTY3JlZW5TdGFydGVkKTtcbiAgICAgIHVwZGF0ZVNoYXJlRW5kZWQoc2hhcmVFbmRlZCk7XG4gICAgICB1cGRhdGVMb2NrX3NjcmVlbihsb2NrX3NjcmVlbik7XG4gICAgICB1cGRhdGVGaXJzdEFsbChmaXJzdEFsbCk7XG4gICAgICB1cGRhdGVGaXJzdF9yb3VuZChmaXJzdF9yb3VuZCk7XG5cbiAgICAgIGlmICghZ290QWxsVmlkcyB8fCBkZWZlcl9yZWNlaXZlKSB7XG4gICAgICAgIGRlZmVyX3JlY2VpdmUgPSBmYWxzZTtcbiAgICAgICAgdXBkYXRlRGVmZXJfcmVjZWl2ZShkZWZlcl9yZWNlaXZlKTtcbiAgICAgICAgYXdhaXQgZ2V0VmlkZW9zKHtcbiAgICAgICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICAgICAgYWxsVmlkZW9TdHJlYW1zLFxuICAgICAgICAgIG9sZEFsbFN0cmVhbXMsXG4gICAgICAgICAgdXBkYXRlQWxsVmlkZW9TdHJlYW1zLFxuICAgICAgICAgIHVwZGF0ZU9sZEFsbFN0cmVhbXMsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCByZVBvcnQoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnRUeXBlID09ICdjb25mZXJlbmNlJykge1xuICAgICAgICB1cGRhdGVNYWluSGVpZ2h0V2lkdGgoMCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgYXdhaXQgcmVvcmRlclN0cmVhbXMoeyBhZGQ6IGZhbHNlLCBzY3JlZW5DaGFuZ2VkOiB0cnVlLCBwYXJhbWV0ZXJzIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|