{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/abstracts/unsubscribe.abstract.ts","webpack:///./src/app/components/actions-bar/actions-bar.component.css","webpack:///./src/app/components/actions-bar/actions-bar.component.html","webpack:///./src/app/components/actions-bar/actions-bar.component.ts","webpack:///./src/app/components/chat/chat.component.css","webpack:///./src/app/components/chat/chat.component.html","webpack:///./src/app/components/chat/chat.component.ts","webpack:///./src/app/components/documents/documents.component.css","webpack:///./src/app/components/documents/documents.component.html","webpack:///./src/app/components/documents/documents.component.ts","webpack:///./src/app/components/header/abstracts/header.abstract.component.ts","webpack:///./src/app/components/header/desktop/header-desktop.component.html","webpack:///./src/app/components/header/desktop/header-desktop.component.scss","webpack:///./src/app/components/header/desktop/header-desktop.component.ts","webpack:///./src/app/components/header/header.component.css","webpack:///./src/app/components/header/header.component.html","webpack:///./src/app/components/header/header.component.ts","webpack:///./src/app/components/header/mobile/header-mobile.component.html","webpack:///./src/app/components/header/mobile/header-mobile.component.scss","webpack:///./src/app/components/header/mobile/header-mobile.component.ts","webpack:///./src/app/components/main/main.component.css","webpack:///./src/app/components/main/main.component.html","webpack:///./src/app/components/main/main.component.ts","webpack:///./src/app/components/notes/notes.component.css","webpack:///./src/app/components/notes/notes.component.html","webpack:///./src/app/components/notes/notes.component.ts","webpack:///./src/app/components/popup/popup.component.css","webpack:///./src/app/components/popup/popup.component.html","webpack:///./src/app/components/popup/popup.component.ts","webpack:///./src/app/components/settings/abstracts/settings.abstract.component.ts","webpack:///./src/app/components/settings/desktop/settings-desktop.component.css","webpack:///./src/app/components/settings/desktop/settings-desktop.component.html","webpack:///./src/app/components/settings/desktop/settings-desktop.component.ts","webpack:///./src/app/components/settings/mobile/settings-mobile.component.css","webpack:///./src/app/components/settings/mobile/settings-mobile.component.html","webpack:///./src/app/components/settings/mobile/settings-mobile.component.ts","webpack:///./src/app/components/settings/settings.component.css","webpack:///./src/app/components/settings/settings.component.html","webpack:///./src/app/components/settings/settings.component.ts","webpack:///./src/app/components/sketch-board/sketch-board.component.css","webpack:///./src/app/components/sketch-board/sketch-board.component.html","webpack:///./src/app/components/sketch-board/sketch-board.component.ts","webpack:///./src/app/components/thanks-page/thanks-page.component.css","webpack:///./src/app/components/thanks-page/thanks-page.component.html","webpack:///./src/app/components/thanks-page/thanks-page.component.ts","webpack:///./src/app/components/videochat/abstracts/videochat.abstract.component.ts","webpack:///./src/app/components/videochat/desktop/videochat-desktop.component.html","webpack:///./src/app/components/videochat/desktop/videochat-desktop.component.scss","webpack:///./src/app/components/videochat/desktop/videochat-desktop.component.ts","webpack:///./src/app/components/videochat/mobile/videochat-mobile.component.html","webpack:///./src/app/components/videochat/mobile/videochat-mobile.component.scss","webpack:///./src/app/components/videochat/mobile/videochat-mobile.component.ts","webpack:///./src/app/components/videochat/videochat.component.html","webpack:///./src/app/components/videochat/videochat.component.ts","webpack:///./src/app/components/waiting-room/abstracts/waiting-room.abstract.component.ts","webpack:///./src/app/components/waiting-room/desktop/waiting-room-desktop.component.css","webpack:///./src/app/components/waiting-room/desktop/waiting-room-desktop.component.html","webpack:///./src/app/components/waiting-room/desktop/waiting-room-desktop.component.ts","webpack:///./src/app/components/waiting-room/mobile/waiting-room-mobile.component.html","webpack:///./src/app/components/waiting-room/mobile/waiting-room-mobile.component.scss","webpack:///./src/app/components/waiting-room/mobile/waiting-room-mobile.component.ts","webpack:///./src/app/components/waiting-room/waiting-room.component.css","webpack:///./src/app/components/waiting-room/waiting-room.component.html","webpack:///./src/app/components/waiting-room/waiting-room.component.ts","webpack:///./src/app/models/settings.ts","webpack:///./src/app/models/user.ts","webpack:///./src/app/services/mobile-debug.service.ts","webpack:///./src/app/services/multilanguage.service.ts","webpack:///./src/app/services/popup.service.ts","webpack:///./src/app/services/settings.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/app/services/video-streaming.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts","webpack:///ws (ignored)"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"main.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ps\": \"./node_modules/moment/locale/ar-ps.js\",\n\t\"./ar-ps.js\": \"./node_modules/moment/locale/ar-ps.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku-kmr\": \"./node_modules/moment/locale/ku-kmr.js\",\n\t\"./ku-kmr.js\": \"./node_modules/moment/locale/ku-kmr.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"
\\n
\\n \\n
{{log.message | json}}
\\n
\\n
\\n\\n\\n\"","import { Component, OnInit } from '@angular/core';\nimport { MobileDebugService } from './services/mobile-debug.service';\nimport { fromEvent, Observable } from 'rxjs';\nimport { bufferWhen, debounceTime, filter, map } from 'rxjs/operators';\nimport { environment } from '../environments/environment';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n})\nexport class AppComponent\n implements OnInit {\n\n logs$: Observable;\n areEnabledLogs = false;\n\n constructor(private logService: MobileDebugService) {\n this.logs$ = logService.logs$;\n }\n\n ngOnInit() {\n document.body.addEventListener('dragover', (e) => {\n e.preventDefault();\n e.stopPropagation();\n }, false);\n document.body.addEventListener('drop', (e) => {\n e.preventDefault();\n e.stopPropagation();\n }, false);\n\n if (!environment.production) {\n const click$ = fromEvent(document.body, 'touchstart');\n click$\n .pipe(\n bufferWhen(() => click$.pipe(debounceTime(250))),\n map(list => list.length),\n filter(length => length >= 3),\n )\n .subscribe(() => this.areEnabledLogs = !this.areEnabledLogs);\n }\n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport {\n MatSliderModule,\n MatDialogModule,\n MatInputModule,\n MatTabsModule,\n MatDividerModule,\n MatSelectModule,\n MatProgressBarModule,\n MatSidenavModule\n} from '@angular/material';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTableModule } from '@angular/material/table';\nimport { ClipboardModule } from 'ngx-clipboard';\nimport { Routes, RouterModule } from '@angular/router';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { DeviceDetectorModule } from 'ngx-device-detector';\n\nimport { PopupService } from './services/popup.service';\nimport { VideoStreamingService } from './services/video-streaming.service';\nimport { UserService } from './services/user.service';\nimport { SettingsService } from './services/settings.service';\n\nimport { AppComponent } from './app.component';\nimport { SettingsComponent } from './components/settings/settings.component';\nimport { VideochatComponent } from './components/videochat/videochat.component';\nimport { WaitingRoomComponent } from './components/waiting-room/waiting-room.component';\nimport { PopupComponent } from './components/popup/popup.component';\nimport { NotesComponent } from './components/notes/notes.component';\nimport { ChatComponent } from './components/chat/chat.component';\nimport { MainComponent } from './components/main/main.component';\nimport { ActionsBarComponent } from './components/actions-bar/actions-bar.component';\nimport { HeaderComponent } from './components/header/header.component';\nimport { SketchBoardComponent } from './components/sketch-board/sketch-board.component';\nimport { DocumentsComponent } from './components/documents/documents.component';\nimport { ThanksPageComponent } from './components/thanks-page/thanks-page.component';\nimport {WaitingRoomDesktopComponent} from './components/waiting-room/desktop/waiting-room-desktop.component';\nimport {WaitingRoomMobileComponent} from './components/waiting-room/mobile/waiting-room-mobile.component';\nimport {HeaderDesktopComponent} from './components/header/desktop/header-desktop.component';\nimport {HeaderMobileComponent} from './components/header/mobile/header-mobile.component';\nimport {VideochatDesktopComponent} from './components/videochat/desktop/videochat-desktop.component';\nimport {VideochatMobileComponent} from './components/videochat/mobile/videochat-mobile.component';\nimport {SettingsDesktopComponent} from './components/settings/desktop/settings-desktop.component';\nimport {SettingsMobileComponent} from './components/settings/mobile/settings-mobile.component';\nimport { MobileDebugService } from './services/mobile-debug.service';\nimport { MatProgressSpinnerModule, MatSpinner } from '@angular/material/progress-spinner';\n\nconst appRoutes: Routes = [\n {path: ':roomId/:token', component: WaitingRoomComponent},\n {path: 'room/:roomId/:token', component: MainComponent},\n {path: 'settings/:roomId/:token', component: SettingsComponent},\n {path: 'thanks', component: ThanksPageComponent}\n];\n\n// AoT requires an exported function for factories\nexport function HttpLoaderFactory(httpClient: HttpClient) {\n return new TranslateHttpLoader(httpClient);\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n SettingsComponent,\n SettingsDesktopComponent,\n SettingsMobileComponent,\n VideochatComponent,\n VideochatDesktopComponent,\n VideochatMobileComponent,\n WaitingRoomComponent,\n WaitingRoomDesktopComponent,\n WaitingRoomMobileComponent,\n PopupComponent,\n NotesComponent,\n ChatComponent,\n MainComponent,\n ActionsBarComponent,\n HeaderComponent,\n HeaderDesktopComponent,\n HeaderMobileComponent,\n SketchBoardComponent,\n DocumentsComponent,\n ThanksPageComponent\n ],\n imports: [\n BrowserModule,\n RouterModule.forRoot(appRoutes),\n MatSliderModule,\n MatTabsModule,\n MatCardModule,\n MatRadioModule,\n FormsModule,\n MatDialogModule,\n BrowserAnimationsModule,\n MatInputModule,\n MatDividerModule,\n ClipboardModule,\n HttpClientModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatTableModule,\n MatProgressSpinnerModule,\n MatSidenavModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n DeviceDetectorModule.forRoot(),\n ],\n providers: [\n VideoStreamingService,\n UserService,\n PopupService,\n SettingsService,\n MobileDebugService\n ],\n entryComponents: [\n PopupComponent,\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n}\n","import { OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class UnsubscribeAbstract implements OnDestroy {\n unsubscribe$ = new Subject();\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","module.exports = \".hide {\\n opacity: 0;\\n height: 0;\\n}\\n.show {\\n opacity: 1;\\n height: 100%;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9hY3Rpb25zLWJhci9hY3Rpb25zLWJhci5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztFQUNYLFVBQVU7Q0FDWDtBQUNEO0VBQ0UsV0FBVztFQUNYLGFBQWE7Q0FDZCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWN0aW9ucy1iYXIvYWN0aW9ucy1iYXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oaWRlIHtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAwO1xufVxuLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4iXX0= */\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","import { Component, OnInit, ViewChild,Output,EventEmitter } from '@angular/core';\nimport { MatTabChangeEvent, MatTabGroup } from '@angular/material';\nimport { takeUntil } from 'rxjs/operators';\nimport { VideoStreamingService } from '../../services/video-streaming.service';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'app-actions-bar',\n templateUrl: './actions-bar.component.html',\n styleUrls: ['./actions-bar.component.css']\n})\nexport class ActionsBarComponent\n extends UnsubscribeAbstract\n implements OnInit {\n isChat = false;\n isDoc = false;\n isNotes = false;\n chat_access=true;\n notes_access=true;\n documents_access=true;\n sketch_access=true;\n\n\n @ViewChild('tabs', { static: false }) tabGroup: MatTabGroup;\n private currentTab = 0;\n\n constructor(public streamingService: VideoStreamingService,public userService: UserService) {\n super();\n }\n ngOnInit() {\n this.userService.observeUser()\n .subscribe(data => {\n if(data.chat_access!=null && data.sketch_access!=null && data.documents_access!=null && data.notes_access!=null)\n {\n this.chat_access=data.chat_access;\n this.sketch_access=data.sketch_access;\n this.documents_access=data.documents_access;\n this.notes_access=data.notes_access;\n }\n });\n\n this.streamingService\n .observeSketchState()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(state => {\n if (!state && this.tabGroup && this.tabGroup.selectedIndex === 3) {\n console.log('returning to chat from sketch', this.isChat, 'sketch state', state);\n this.isChat = true;\n this.tabGroup.selectedIndex = 0;\n }\n });\n }\n\n tabChanged(tabChangeEvent: MatTabChangeEvent) {\n console.log(\"tab\",tabChangeEvent);\n const tab = this.currentTab;\n if (tabChangeEvent.tab.textLabel === \"Skizzen\") {\n this.streamingService\n .checkPermissions()\n .then(res => {\n if (!res) {\n this.tabGroup.selectedIndex = tab;\n } else {\n this.streamingService.sketchIsActive.next(tabChangeEvent.tab.textLabel === \"Skizzen\");\n }\n }\n );\n } else {\n this.streamingService.sketchIsActive.next(false);\n this.isChat = tabChangeEvent.tab.textLabel === \"Chat\";\n this.isNotes = tabChangeEvent.tab.textLabel === \"Notizen\";\n this.isDoc = tabChangeEvent.tab.textLabel === \"Dokumente\";\n }\n this.currentTab = this.tabGroup.selectedIndex;\n }\n}\n","module.exports = \".chat {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n}\\n\\n.chat textarea {\\n resize: none;\\n}\\n\\n.chat #chat-box {\\n height: 100%;\\n padding-left: 0;\\n}\\n\\n#chat-box {\\n overflow-y: auto;\\n}\\n\\n.chat #chat-box::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 5px;\\n}\\n\\n.chat #chat-box::-webkit-scrollbar-track {\\n background-color: #fff;\\n border-radius: 5px;\\n}\\n\\n.chat #chat-box::-webkit-scrollbar-thumb {\\n border-radius: 5px;\\n background-color: rgba(156, 156, 156, .6);\\n}\\n\\n.chat li {\\n list-style: none;\\n}\\n\\n.message {\\n display: flex;\\n margin: 20px 0;\\n /*overflow: hidden;*/\\n}\\n\\n.message-data {\\n background: #F2F2F2;\\n color: #3C4E59;\\n padding: 5px 15px;\\n border-radius: 10px;\\n max-width: 75%;\\n}\\n\\n.highlight {\\n background-color: #049dd9;\\n color: #ffffff;\\n}\\n\\n.message p {\\n margin: 0;\\n font-size: 14px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 600;\\n white-space: pre-line;\\n}\\n\\n.message-text {\\n overflow: hidden;\\n overflow-wrap: break-word;\\n word-wrap: break-word;\\n -ms-word-break: break-all;\\n word-break: break-all;\\n hyphens: auto;\\n}\\n\\n.message-text a {\\n color: #3ec3c3;\\n}\\n\\n.highlight .message-text a {\\n color: lightblue;\\n}\\n\\n.message-data img {\\n max-width: 100%;\\n cursor: pointer;\\n}\\n\\n.avatar {\\n margin: 0 15px;\\n}\\n\\n.time {\\n font-size: 10px;\\n opacity: .5;\\n}\\n\\n.avatar img {\\n width: 45px;\\n height: 45px;\\n border-radius: 50%;\\n}\\n\\n.doctor {\\n justify-content: flex-start;\\n text-align: left;\\n}\\n\\n.patient {\\n justify-content: flex-end;\\n text-align: right;\\n}\\n\\n.chat-form {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n border-top: 0.75px solid rgba(60, 78, 89, 0.75);\\n background-color: white;\\n}\\n\\n.message-input {\\n margin-top: 10px;\\n width: 80%;\\n height: 80px; /* TODO keep in mind this height*/\\n}\\n\\n.chat-form button {\\n border: none;\\n background: none;\\n cursor: pointer;\\n padding: 5px 10px;\\n outline: none;\\n}\\n\\n.chat-form button:disabled {\\n opacity: .5;\\n}\\n\\n/*custom input upload styles*/\\n\\n.attachment-block img {\\n padding: 10px;\\n cursor: pointer;\\n margin-top: -5px;\\n}\\n\\n.file_input_div {\\n margin: auto;\\n width: 250px;\\n height: 40px;\\n}\\n\\n.file_input {\\n float: left;\\n}\\n\\n#file_input_text_div {\\n width: 200px;\\n margin-top: -8px;\\n margin-left: 5px;\\n}\\n\\n.none {\\n display: none;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jaGF0L2NoYXQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFlBQVk7RUFDWixhQUFhO0VBR2IsY0FBYztFQUlkLHVCQUF1QjtFQUd2QiwrQkFBK0I7Q0FDaEM7O0FBRUQ7RUFDRSxhQUFhO0NBQ2Q7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCO0NBQ2pCOztBQUVEO0VBQ0UsaUJBQWlCO0NBQ2xCOztBQUVEO0VBQ0UseUJBQXlCO0VBQ3pCLFdBQVc7Q0FDWjs7QUFFRDtFQUNFLHVCQUF1QjtFQUN2QixtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsMENBQTBDO0NBQzNDOztBQUVEO0VBQ0UsaUJBQWlCO0NBQ2xCOztBQUVEO0VBR0UsY0FBYztFQUNkLGVBQWU7RUFDZixxQkFBcUI7Q0FDdEI7O0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixvQkFBb0I7RUFDcEIsZUFBZTtDQUNoQjs7QUFDRDtFQUNFLDBCQUEwQjtFQUMxQixlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQixvQ0FBb0M7RUFDcEMsaUJBQWlCO0VBQ2pCLHNCQUFzQjtDQUN2Qjs7QUFFRDtFQUNFLGlCQUFpQjtFQUNqQiwwQkFBMEI7RUFDMUIsc0JBQXNCO0VBQ3RCLDBCQUEwQjtFQUMxQixzQkFBc0I7RUFJdEIsY0FBYztDQUNmOztBQUVEO0VBQ0UsZUFBZTtDQUNoQjs7QUFFRDtFQUNFLGlCQUFpQjtDQUNsQjs7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLFlBQVk7RUFDWixhQUFhO0VBQ2IsbUJBQW1CO0NBQ3BCOztBQUVEO0VBR0UsNEJBQTRCO0VBQzVCLGlCQUFpQjtDQUNsQjs7QUFFRDtFQUdFLDBCQUEwQjtFQUMxQixrQkFBa0I7Q0FDbkI7O0FBRUQ7RUFHRSxjQUFjO0VBR2QsK0JBQStCO0VBRy9CLG9CQUFvQjtFQUNwQixnREFBZ0Q7RUFDaEQsd0JBQXdCO0NBQ3pCOztBQUVEO0VBQ0UsaUJBQWlCO0VBQ2pCLFdBQVc7RUFDWCxhQUFhLENBQUMsa0NBQWtDO0NBQ2pEOztBQUVEO0VBQ0UsYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGNBQWM7Q0FDZjs7QUFFRDtFQUNFLFlBQVk7Q0FDYjs7QUFFRCw4QkFBOEI7O0FBQzlCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixpQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsYUFBYTtFQUNiLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLGFBQWE7RUFDYixpQkFBaUI7RUFDakIsaUJBQWlCO0NBQ2xCOztBQUVEO0VBQ0UsY0FBYztDQUNmIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jaGF0L2NoYXQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGF0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLmNoYXQgdGV4dGFyZWEge1xuICByZXNpemU6IG5vbmU7XG59XG5cbi5jaGF0ICNjaGF0LWJveCB7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4jY2hhdC1ib3gge1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uY2hhdCAjY2hhdC1ib3g6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB3aWR0aDogNXB4O1xufVxuXG4uY2hhdCAjY2hhdC1ib3g6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4uY2hhdCAjY2hhdC1ib3g6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NiwgMTU2LCAxNTYsIC42KTtcbn1cblxuLmNoYXQgbGkge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4ubWVzc2FnZSB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luOiAyMHB4IDA7XG4gIC8qb3ZlcmZsb3c6IGhpZGRlbjsqL1xufVxuXG4ubWVzc2FnZS1kYXRhIHtcbiAgYmFja2dyb3VuZDogI0YyRjJGMjtcbiAgY29sb3I6ICMzQzRFNTk7XG4gIHBhZGRpbmc6IDVweCAxNXB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBtYXgtd2lkdGg6IDc1JTtcbn1cbi5oaWdobGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDQ5ZGQ5O1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cblxuLm1lc3NhZ2UgcCB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuXG4ubWVzc2FnZS10ZXh0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIC1tcy1oeXBoZW5zOiBhdXRvO1xuICAtbW96LWh5cGhlbnM6IGF1dG87XG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcbiAgaHlwaGVuczogYXV0bztcbn1cblxuLm1lc3NhZ2UtdGV4dCBhIHtcbiAgY29sb3I6ICMzZWMzYzM7XG59XG5cbi5oaWdobGlnaHQgLm1lc3NhZ2UtdGV4dCBhIHtcbiAgY29sb3I6IGxpZ2h0Ymx1ZTtcbn1cblxuLm1lc3NhZ2UtZGF0YSBpbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmF2YXRhciB7XG4gIG1hcmdpbjogMCAxNXB4O1xufVxuXG4udGltZSB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi5hdmF0YXIgaW1nIHtcbiAgd2lkdGg6IDQ1cHg7XG4gIGhlaWdodDogNDVweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4uZG9jdG9yIHtcbiAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7XG4gIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5wYXRpZW50IHtcbiAgLXdlYmtpdC1ib3gtcGFjazogZW5kO1xuICAtbXMtZmxleC1wYWNrOiBlbmQ7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uY2hhdC1mb3JtIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci10b3A6IDAuNzVweCBzb2xpZCByZ2JhKDYwLCA3OCwgODksIDAuNzUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLm1lc3NhZ2UtaW5wdXQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB3aWR0aDogODAlO1xuICBoZWlnaHQ6IDgwcHg7IC8qIFRPRE8ga2VlcCBpbiBtaW5kIHRoaXMgaGVpZ2h0Ki9cbn1cblxuLmNoYXQtZm9ybSBidXR0b24ge1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi5jaGF0LWZvcm0gYnV0dG9uOmRpc2FibGVkIHtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi8qY3VzdG9tIGlucHV0IHVwbG9hZCBzdHlsZXMqL1xuLmF0dGFjaG1lbnQtYmxvY2sgaW1nIHtcbiAgcGFkZGluZzogMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW4tdG9wOiAtNXB4O1xufVxuXG4uZmlsZV9pbnB1dF9kaXYge1xuICBtYXJnaW46IGF1dG87XG4gIHdpZHRoOiAyNTBweDtcbiAgaGVpZ2h0OiA0MHB4O1xufVxuXG4uZmlsZV9pbnB1dCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuXG4jZmlsZV9pbnB1dF90ZXh0X2RpdiB7XG4gIHdpZHRoOiAyMDBweDtcbiAgbWFyZ2luLXRvcDogLThweDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLm5vbmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuIl19 */\"","module.exports = \"
\\n \\n\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n\\n
\\n\"","import {\n Component,\n ElementRef,\n Input,\n NgZone, OnChanges,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { VideoStreamingService } from '../../services/video-streaming.service';\nimport { takeUntil } from 'rxjs/internal/operators';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\nimport { PopupService } from '../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\n\n@Component({\n selector: 'app-chat',\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.css']\n})\nexport class ChatComponent\n extends UnsubscribeAbstract\n implements OnChanges {\n\n @Input() onChat: boolean;\n @ViewChild('sendM', { static: false }) sendM: any;\n @ViewChild('chatBox', { static: false }) chatBox: ElementRef;\n\n public usersData;\n public role: string;\n public messages = [];\n public message: string;\n public currentMessageData: any;\n public attachment: any;\n public opponentConnected: boolean;\n public src: any;\n public imageCounter = 0;\n\n constructor(private _ngZone: NgZone,\n private streamingService: VideoStreamingService,\n private userService: UserService,\n private popupService: PopupService,\n public translate: TranslateService) {\n super();\n\n const roomData: any = JSON.parse(localStorage.getItem(this.userService.roomId));\n this.messages = roomData && roomData.chat ? roomData.chat : [];\n\n this.streamingService\n .getMessages()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(messageData => { // The check is to ensure we can not send absolutely empty message, but still can send image\n // And to make sure we don't mistake messages from the sketch canvas for messages from the chat\n // update messages, if partner's list of messages is not empty\n if (messageData.message.chat) {\n const chat: any[] = JSON.parse(messageData.message.chat);\n if (chat.length > this.messages.length) { // Updating only if partner has more recent snapshot of the chat\n this.messages = chat;\n this.updateLocalStorage();\n }\n } else {\n if ((messageData.message.src || (messageData.message.text && messageData.message.text.length > 0)\n && !messageData.message.canvasDesignerSyncData && !messageData.message.canvasWidth && !messageData.message.canvasHeight)) {\n this._ngZone.run(() => {\n this.messages.push(messageData.message);\n if (messageData.sender === 'me') {\n this.message = '';\n }\n // Saving chat snapshot to local storage\n this.updateLocalStorage();\n });\n }\n }\n // set timeout necessary for the DOM has time to insert an element before applying scrolltop\n setTimeout(() => {\n this.chatBox.nativeElement.scrollTop = this.chatBox.nativeElement.scrollHeight;\n }, 300);\n });\n\n this.streamingService\n .observePartnerId()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(id => {\n this.opponentConnected = !!id;\n // send current messages(if they exist), if partner connected\n if (this.opponentConnected && this.messages.length) {\n this.streamingService.updateMessages(JSON.stringify(this.messages));\n }\n });\n\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(user => {\n this.role = user.role;\n this.usersData = user;\n });\n }\n\n /** The goal of using local storage is to let participants revisit room shortly after completing the call.\n * in order to see chat history, sketch, etc.\n * Saving is done for each room separately.\n * Can also help in rare test cases, when two participants have internet connection problems almost simultaneously:\n * - their internet provider is having problems;\n * - they both have bad mobile internet, which often loses connection; */\n\n private updateLocalStorage() { // To update local storage for room without erasing canvas data in it\n const roomData: any = JSON.parse(localStorage.getItem(this.userService.roomId)) || {};\n roomData['chat'] = this.messages;\n\n localStorage.setItem(this.userService.roomId, JSON.stringify(roomData));\n }\n\n ngOnChanges() {\n setTimeout(() => this.chatBox.nativeElement.scrollTop = this.chatBox.nativeElement.scrollHeight, 10);\n }\n\n isLink = (message) => {\n return message !== this.linkify(message);\n }\n\n linkify(inputText) {\n // URLs starting with http://, https://, or ftp://\n const replacePattern1 = /(\\b(https?|ftp):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/gim;\n let replacedText = inputText.replace(replacePattern1, '$1');\n\n // URLs starting with www. (without // before it, or it'd re-link the ones done above)\n const replacePattern2 = /(^|[^\\/])(www\\.[\\S]+(\\b|$))/gim;\n replacedText = replacedText.replace(replacePattern2, '$1$2');\n\n // Change email addresses to mailto:: links\n const replacePattern3 = /(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})/gim;\n replacedText = replacedText.replace(replacePattern3, '$1');\n\n return replacedText;\n }\n\n checkConnection(event) {\n if (!this.opponentConnected) {\n event.preventDefault();\n this.popupService.openErrorNotification(this.translate.instant('popups.fileSendingError'));\n }\n }\n\n changeListener($event) {\n this.sendImg($event.target);\n }\n\n sendImg(inputValue: any) {\n const file = inputValue.files[0];\n const myReader = new FileReader();\n\n myReader.onloadend = () => {\n this.src = myReader.result;\n\n this.currentMessageData = {\n avatar: this.usersData.avatar,\n date: new Date(),\n src: this.src,\n roleDoctor: this.usersData.role === 'doctor'\n };\n\n this._ngZone.run(() => {\n this.streamingService.sendStuffP2P(this.currentMessageData);\n });\n\n (document.querySelector('#file_input_file') as HTMLInputElement).value = '';\n };\n\n myReader.readAsDataURL(file);\n }\n\n // convert base64 to blob and save\n public saveImg(dataurl) {\n const arr = dataurl.split(',');\n const mime = arr[0].match(/:(.*?);/)[1];\n const bstr = atob(arr[1]);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n this.imageCounter = ++this.imageCounter;\n const filename = 'chat-image' + this.imageCounter;\n const type = mime.substr(mime.lastIndexOf('/') + 1);\n this.streamingService.blobAcceptor('', new File([u8arr], filename, { type: mime }), 'chat-image' + this.imageCounter + '.' + type);\n }\n\n insertNewLine(e) {\n if (e.keyCode === 13 && e.shiftKey) { // keyCode 13 - Enter\n return;\n } else if (e.keyCode === 13) {\n e.preventDefault();\n this.sendData(e);\n }\n }\n\n // send message through p2p\n sendData(event) {\n event.preventDefault();\n\n this.streamingService\n .checkPermissions()\n .then(() => {\n if (!this.opponentConnected) {\n this.popupService.openErrorNotification(this.translate.instant('popups.fileSendingError'));\n } else {\n\n this.currentMessageData = {\n avatar: this.usersData.avatar,\n date: new Date(),\n text: this.message,\n roleDoctor: this.usersData.role === 'doctor'\n };\n\n this._ngZone.run(() => {\n this.streamingService.sendStuffP2P(this.currentMessageData);\n });\n\n }\n });\n }\n}\n\n","module.exports = \".documents-block {\\n width: 100%;\\n height: 100%;\\n padding: 20px;\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n}\\n.documents {\\n overflow-y: auto;\\n overflow-x: hidden;\\n}\\n.documents.patient {\\n max-height: calc(100vh - 130px);\\n}\\n.documents.doctor {\\n max-height: calc(100vh - 250px);\\n}\\n.documents::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 5px;\\n}\\n.documents::-webkit-scrollbar-track {\\n background-color: #fff;\\n border-radius: 5px;\\n}\\n.documents::-webkit-scrollbar-thumb {\\n border-radius: 5px;\\n background-color: rgba(156, 156, 156, .6);\\n}\\n.documents ul {\\n list-style: none;\\n margin: 5px 0 5px 10px;\\n padding: 0;\\n}\\n.doc-container {\\n display: flex;\\n align-items: flex-end;\\n min-height: 85px;\\n font-family: 'Overpass', sans-serif;\\n}\\n.doc-data {\\n display: flex;\\n flex-direction: column;\\n width: 60%;\\n margin: 0 20px;\\n}\\n.doc-name {\\n text-align: center;\\n margin-bottom: 1px;\\n font-weight: 800;\\n overflow: hidden;\\n overflow-wrap: break-word;\\n word-wrap: break-word;\\n -ms-word-break: break-all;\\n word-break: break-all;\\n word-break: break-word;\\n hyphens: auto;\\n}\\n.doc-size {\\n text-align: center;\\n margin-top: -20px;\\n margin-bottom: 0;\\n font-size: 14px;\\n z-index: 111;\\n}\\n.mat-progress-bar {\\n height: 26px;\\n border-radius: 8px;\\n -moz-border-radius: 8px;\\n -webkit-border-radius: 8px;\\n}\\n.mat-progress-bar .mat-progress-bar-element, .mat-progress-bar .mat-progress-bar-fill::after, .mat-progress-bar .mat-progress-bar-buffer {\\n border-radius: 8px;\\n -moz-border-radius: 8px;\\n -webkit-border-radius: 8px;\\n}\\n::ng-deep .mat-progress-bar-fill::after {\\n border-radius: 8px;\\n -moz-border-radius: 8px;\\n -webkit-border-radius: 8px;\\n}\\ninput[type=\\\"file\\\"] {\\n display: none;\\n}\\n.upload-doc {\\n border: none;\\n border-radius: 5px;\\n color: #313131;\\n cursor: pointer;\\n width: calc(100% - 30px);\\n background: #FFE450;\\n padding: 17px 100px;\\n margin: 25px 15px;\\n font-size: 20px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n /*font-family: Overpass ExtraBold, Regular;*/\\n outline: none;\\n text-align: center;\\n}\\n.upload-doc-disabled {\\n opacity: 0.5;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9kb2N1bWVudHMvZG9jdW1lbnRzLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLGNBQWM7RUFDZCxtQkFBbUI7RUFHbkIsY0FBYztFQUlkLHVCQUF1QjtFQUd2QiwrQkFBK0I7Q0FDaEM7QUFDRDtFQUNFLGlCQUFpQjtFQUNqQixtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLGdDQUFnQztDQUNqQztBQUVEO0VBQ0UsZ0NBQWdDO0NBQ2pDO0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsV0FBVztDQUNaO0FBRUQ7RUFDRSx1QkFBdUI7RUFDdkIsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsMENBQTBDO0NBQzNDO0FBRUQ7RUFDRSxpQkFBaUI7RUFDakIsdUJBQXVCO0VBQ3ZCLFdBQVc7Q0FDWjtBQUNEO0VBR0UsY0FBYztFQUdkLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsb0NBQW9DO0NBQ3JDO0FBQ0Q7RUFHRSxjQUFjO0VBSWQsdUJBQXVCO0VBQ3ZCLFdBQVc7RUFDWCxlQUFlO0NBQ2hCO0FBQ0Q7RUFDRSxtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsMEJBQTBCO0VBQzFCLHNCQUFzQjtFQUN0QiwwQkFBMEI7RUFDMUIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUl2QixjQUFjO0NBQ2Y7QUFDRDtFQUNFLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixhQUFhO0NBQ2Q7QUFDRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsd0JBQXdCO0VBQ3hCLDJCQUEyQjtDQUM1QjtBQUNEO0VBQ0UsbUJBQW1CO0VBQ25CLHdCQUF3QjtFQUN4QiwyQkFBMkI7Q0FDNUI7QUFDRDtFQUNFLG1CQUFtQjtFQUNuQix3QkFBd0I7RUFDeEIsMkJBQTJCO0NBQzVCO0FBQ0Q7RUFDRSxjQUFjO0NBQ2Y7QUFDRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG9DQUFvQztFQUNwQyxpQkFBaUI7RUFDakIsNkNBQTZDO0VBQzdDLGNBQWM7RUFDZCxtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLGFBQWE7Q0FDZCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZG9jdW1lbnRzL2RvY3VtZW50cy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRvY3VtZW50cy1ibG9jayB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5kb2N1bWVudHMge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbi5kb2N1bWVudHMucGF0aWVudCB7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMzBweCk7XG59XG5cbi5kb2N1bWVudHMuZG9jdG9yIHtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDI1MHB4KTtcbn1cblxuLmRvY3VtZW50czo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiA1cHg7XG59XG5cbi5kb2N1bWVudHM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4uZG9jdW1lbnRzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTYsIDE1NiwgMTU2LCAuNik7XG59XG5cbi5kb2N1bWVudHMgdWwge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDVweCAwIDVweCAxMHB4O1xuICBwYWRkaW5nOiAwO1xufVxuLmRvYy1jb250YWluZXIge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7XG4gIC1tcy1mbGV4LWFsaWduOiBlbmQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWluLWhlaWdodDogODVweDtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG59XG4uZG9jLWRhdGEge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDYwJTtcbiAgbWFyZ2luOiAwIDIwcHg7XG59XG4uZG9jLW5hbWUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDFweDtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIC1tcy1oeXBoZW5zOiBhdXRvO1xuICAtbW96LWh5cGhlbnM6IGF1dG87XG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcbiAgaHlwaGVuczogYXV0bztcbn1cbi5kb2Mtc2l6ZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogLTIwcHg7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgei1pbmRleDogMTExO1xufVxuLm1hdC1wcm9ncmVzcy1iYXIge1xuICBoZWlnaHQ6IDI2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4O1xufVxuLm1hdC1wcm9ncmVzcy1iYXIgLm1hdC1wcm9ncmVzcy1iYXItZWxlbWVudCwgLm1hdC1wcm9ncmVzcy1iYXIgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIsIC5tYXQtcHJvZ3Jlc3MtYmFyIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4O1xufVxuOjpuZy1kZWVwIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDhweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA4cHg7XG59XG5pbnB1dFt0eXBlPVwiZmlsZVwiXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udXBsb2FkLWRvYyB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBjb2xvcjogIzMxMzEzMTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCk7XG4gIGJhY2tncm91bmQ6ICNGRkU0NTA7XG4gIHBhZGRpbmc6IDE3cHggMTAwcHg7XG4gIG1hcmdpbjogMjVweCAxNXB4O1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogODAwO1xuICAvKmZvbnQtZmFtaWx5OiBPdmVycGFzcyBFeHRyYUJvbGQsIFJlZ3VsYXI7Ki9cbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udXBsb2FkLWRvYy1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cbiJdfQ== */\"","module.exports = \"
\\n\\n
\\n
    \\n
  • \\n
    \\n
    {{document.date | date:'HH:mm'}}
    \\n
    \\n

    {{document.name}}

    \\n \\n \\n

    {{document.position}}/{{document.size}}

    \\n
    \\n
    {{document.status}}
    \\n
    \\n
\\n
\\n\\n \\n
\\n\"","import {\n Component,\n ViewChild,\n AfterViewInit,\n ChangeDetectorRef,\n OnDestroy,\n ElementRef,\n OnChanges,\n Input\n} from '@angular/core';\nimport { VideoStreamingService } from '../../services/video-streaming.service';\nimport { takeUntil } from 'rxjs/internal/operators';\nimport { PopupService } from '../../services/popup.service';\nimport { UserService } from '../../services/user.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\n\n@Component({\n selector: 'app-documents',\n templateUrl: './documents.component.html',\n styleUrls: ['./documents.component.css']\n})\n\nexport class DocumentsComponent\n extends UnsubscribeAbstract\n implements AfterViewInit, OnDestroy, OnChanges {\n @Input() onDoc: boolean;\n @ViewChild('docs', {static: false}) docs: any;\n @ViewChild('documentsBox', {static: false}) documentsBox: ElementRef;\n @ViewChild('fileInput', {static: false}) fileInput: ElementRef;\n\n public documents: Array = [];\n public chosenDocument = {\n name: '',\n size: 0\n };\n public isDoctor = false;\n public enableSending = true;\n private labelEnable = false;\n\n constructor(private streamingService: VideoStreamingService,\n private popupService: PopupService,\n private userService: UserService,\n public translate: TranslateService,\n private cdr: ChangeDetectorRef) {\n super();\n\n this.streamingService\n .getReceivedFilesStatus()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(file => {\n const currentDocument = this.documents.length ? this.documents[this.documents.length - 1] : null;\n switch (file.status) {\n case 'started':\n break;\n case 'started_file':\n this.documents.push({\n name: file.name,\n size: file.size,\n position: 0,\n status: this.translate.instant('documents.started'),\n showProgress: false,\n date: new Date()\n });\n break;\n case 'progress':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.progress');\n currentDocument.position = file.received;\n currentDocument.size = file.size;\n currentDocument.showProgress = true;\n }\n break;\n case 'done':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.success');\n currentDocument.showProgress = false;\n }\n break;\n\n default:\n console.log('Unknown status');\n }\n this.cdr.detectChanges();\n setTimeout(() => this.documentsBox.nativeElement.scrollTop = this.documentsBox.nativeElement.scrollHeight, 10);\n });\n\n this.streamingService\n .getSentFilesStatus()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(file => {\n const currentDocument = this.documents.length ? this.documents[this.documents.length - 1] : null;\n switch (file.status) {\n case 'waiting':\n this.documents.push({\n status: this.translate.instant('documents.waiting'),\n name: this.chosenDocument.name,\n size: this.chosenDocument.size,\n position: 0,\n showProgress: false,\n date: new Date()\n });\n this.enableSending = false;\n break;\n case 'started':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.started');\n currentDocument.showProgress = true;\n }\n this.enableSending = true;\n break;\n case 'working':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.progress');\n currentDocument.position = file.position;\n currentDocument.showProgress = true;\n }\n break;\n case 'rejected':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.cancelled');\n currentDocument.showProgress = false;\n }\n this.enableSending = true;\n (document.querySelector('#fileInput') as HTMLInputElement).value = '';\n break;\n case 'done':\n if (currentDocument) {\n currentDocument.status = this.translate.instant('documents.success');\n currentDocument.position = currentDocument.size;\n currentDocument.showProgress = false;\n }\n (document.querySelector('#fileInput') as HTMLInputElement).value = '';\n break;\n default:\n console.log('Unknown status');\n }\n this.cdr.detectChanges();\n setTimeout(() => this.documentsBox.nativeElement.scrollTop = this.documentsBox.nativeElement.scrollHeight, 10);\n });\n\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(user => this.isDoctor = user.role === 'doctor');\n }\n\n ngAfterViewInit() {\n this.streamingService.buildDragNDropRegion(this.docs);\n }\n\n ngOnChanges() {\n setTimeout(() => this.documentsBox.nativeElement.scrollTop = this.documentsBox.nativeElement.scrollHeight, 10);\n }\n\n checkConnection(event) {\n if (!this.labelEnable) {\n event.preventDefault();\n\n this.streamingService\n .checkPermissions()\n .then(res => {\n if (!res) {\n event.returnValue = false;\n } else {\n this.labelEnable = true;\n this.fileInput.nativeElement.click();\n }\n });\n } else {\n const isConnected = this.streamingService.getPartnerId();\n if (!isConnected) {\n event.preventDefault();\n this.popupService.openErrorNotification(this.translate.instant('popups.fileSendingError'));\n }\n if (!this.enableSending) {\n event.preventDefault();\n this.popupService.openErrorNotification(this.translate.instant('popups.fileWaitingMessage'));\n }\n }\n }\n\n uploadDocument(event) {\n if (this.fileInput.nativeElement.value.length > 0) {\n const files = event.target.files;\n this.chosenDocument.name = files[0].name;\n this.chosenDocument.size = files[0].size;\n this.streamingService.fileHandler(files);\n }\n }\n}\n","import { NgZone, OnDestroy } from '@angular/core';\nimport { Role } from '../../../models/user';\nimport { Pages, UserService } from '../../../services/user.service';\nimport { MultilanguageService } from '../../../services/multilanguage.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from '../../../services/popup.service';\nimport { Router } from '@angular/router';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { SettingsService } from '../../../services/settings.service';\nimport { first, switchMap, takeUntil, tap } from 'rxjs/internal/operators';\nimport { UnsubscribeAbstract } from '../../abstracts/unsubscribe.abstract';\nimport { take } from 'rxjs/operators';\nimport { iif, of } from 'rxjs';\n\nexport abstract class HeaderAbstractComponent\n extends UnsubscribeAbstract\n implements OnDestroy {\n\n public name: string;\n public avatar: string;\n public doctorStart;\n public roomId: string;\n public token: string;\n public selectedId: string;\n private role: Role;\n public page: string;\n public logoUrl: string;\n\n protected constructor(protected userService: UserService,\n public multiLanguageService: MultilanguageService,\n public translate: TranslateService,\n public popupService: PopupService,\n protected router: Router,\n protected _ngZone: NgZone,\n protected streamingService: VideoStreamingService,\n protected settingsService: SettingsService\n ) {\n super();\n\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(user => {\n this._ngZone.run(() => {\n this.name = user.firstName + ' ' + user.lastName;\n this.avatar = user.avatar;\n this.doctorStart = user.doctor.loggedIn;\n this.role = user.role;\n this.logoUrl=user.logoUrl;\n sessionStorage.setItem('colorPrimary',user.colorPrimary);\n sessionStorage.setItem('colorSecondary',user.colorSecondary);\n });\n });\n\n this.roomId = this.userService.getRoomId();\n this.token = this.userService.getToken();\n\n this.multiLanguageService\n .getLanguage()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((language) => {\n this.selectedId = language;\n });\n\n this.userService\n .observePage()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(page => {\n this._ngZone.run(() => {\n this.page = page;\n });\n });\n }\n\n toggleSettings() {\n if (this.settingsService.isOpened) {\n this.closeSettings()\n .pipe(first())\n .subscribe(() => {\n this.settingsService.isOpened = false;\n });\n } else {\n this.settingsService.isOpened = true;\n }\n }\n\n closeSettings() {\n return iif(\n () => JSON.stringify(this.settingsService.getSettings()) === JSON.stringify(this.settingsService.getSavedSettings()),\n of(true),\n this.popupService.openDialog(\n null,\n this.translate.instant('settings.save-confirm'),\n this.translate.instant('popups.yes'),\n this.translate.instant('popups.no')\n )\n )\n .pipe(\n first(),\n switchMap(result => iif(() => result, this.settingsService.getStream(), this.settingsService.restoreSettings())),\n take(1),\n tap(stream => {\n if (stream) {\n this.streamingService.settingsChangesStream(stream.clone());\n } else {\n console.error('there is no steam');\n }\n })\n );\n }\n\n closeSettingsBySaving() {\n this.settingsService\n .getStream()\n .pipe(take(1))\n .subscribe(stream => {\n if (stream) {\n this.streamingService.settingsChangesStream(stream.clone());\n } else {\n console.error('there is no steam');\n }\n this.settingsService.isOpened = false;\n });\n }\n\n deactivateSketch() {\n this.streamingService.sketchIsActive.next(false);\n }\n\n chooseRoom(page: Pages) {\n this.userService.setPage(page);\n }\n\n getVisibleUserInfo = () => {\n return this.page !== 'thanks' && this.page !== 'settings';\n }\n\n logOut() {\n this.popupService\n .openDialog(\n this.translate.instant('popups.confirmExit'),\n this.translate.instant('popups.exitText'),\n this.translate.instant('popups.yes'),\n this.translate.instant('popups.no')\n )\n .subscribe(result => {\n if (result) {\n this.streamingService.disconnect();\n this.userService.logOut(this.role);\n this.userService.setPage('thanks');\n // sessionStorage.clear();\n this.router.navigate(['/thanks']);\n }\n }\n );\n }\n\n changeLanguage(value: string) {\n try {\n this.multiLanguageService.translateToolTips(value);\n } catch (error) {\n console.log('Changing language outside of sketch, tooltips not yet created.\\nPrevented error: ', error);\n }\n\n if (value === 'en') {\n this.selectedId = 'en';\n } else if (value === 'de') {\n this.selectedId = 'de';\n }\n this.multiLanguageService.setLanguage(value);\n }\n}\n","module.exports = \"
\\n\\n \\n\\n
\\n\\n\"","module.exports = \"header {\\n justify-content: space-between;\\n border-bottom: 0.75px solid #3C4E59; }\\n\\napp-settings-mobile {\\n position: fixed;\\n right: 0;\\n background-color: white;\\n z-index: 3;\\n width: 40vw;\\n height: 100vh;\\n overflow: auto;\\n padding-bottom: 70px; }\\n\\n.container {\\n justify-content: space-between;\\n padding: 20px 40px; }\\n\\n.logo-block .logo {\\n position: relative;\\n height: 45px; }\\n\\nnav ul {\\n margin: 0;\\n padding: 0; }\\n\\nnav ul li {\\n list-style: none;\\n color: #3C4E59;\\n font-size: 14px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 700;\\n margin: 0 15px;\\n cursor: pointer; }\\n\\nnav ul li a {\\n transition: color .3s; }\\n\\nnav ul li a:hover, nav ul li a.active {\\n color: #3EC3C3; }\\n\\nnav ul li img {\\n vertical-align: middle;\\n margin: 0 5px;\\n padding-bottom: 2px; }\\n\\n.user-info img {\\n width: 30px;\\n height: 30px;\\n border-radius: 50%;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n color: #3C4E59;\\n vertical-align: middle;\\n margin: 0 5px; }\\n\\n.user-info .user-name {\\n color: #3C4E59;\\n font-size: 14px;\\n font-weight: 700;\\n font-family: 'Overpass', sans-serif; }\\n\\n.languages {\\n display: inline-block; }\\n\\n.languages .language {\\n border: none;\\n background: transparent;\\n border-radius: 50%;\\n width: 30px;\\n height: 30px;\\n padding: 0;\\n margin-left: 15px;\\n outline: none;\\n cursor: pointer;\\n transition: .3s; }\\n\\n.languages .language img {\\n margin: 0; }\\n\\n.languages .language.selected-language {\\n box-shadow: 0 0 21px 5px #1de9b6; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZGVyL2Rlc2t0b3AvaGVhZGVyLWRlc2t0b3AuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFHRSwrQkFBOEI7RUFDOUIsb0NBQW1DLEVBQ3BDOztBQUVEO0VBQ0UsZ0JBQWU7RUFDZixTQUFRO0VBQ1Isd0JBQXVCO0VBQ3ZCLFdBQVU7RUFDVixZQUFXO0VBQ1gsY0FBYTtFQUNiLGVBQWM7RUFDZCxxQkFBb0IsRUFDckI7O0FBRUQ7RUFHRSwrQkFBOEI7RUFDOUIsbUJBQWtCLEVBQ25COztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLGFBQVksRUFDYjs7QUFDRDtFQUVJLFVBQVM7RUFDVCxXQUFVLEVBeUJYOztBQTVCSDtJQU1NLGlCQUFnQjtJQUNoQixlQUFjO0lBQ2QsZ0JBQWU7SUFDZixvQ0FBbUM7SUFDbkMsaUJBQWdCO0lBQ2hCLGVBQWM7SUFDZCxnQkFBZSxFQWVoQjs7QUEzQkw7TUFlUSxzQkFBcUIsRUFLdEI7O0FBcEJQO1FBa0JVLGVBQWMsRUFDZjs7QUFuQlQ7TUF1QlEsdUJBQXNCO01BQ3RCLGNBQWE7TUFDYixvQkFBbUIsRUFDcEI7O0FBTVA7RUFFSSxZQUFXO0VBQ1gsYUFBWTtFQUNaLG1CQUFrQjtFQUNsQixvQ0FBbUM7RUFDbkMsaUJBQWdCO0VBQ2hCLGVBQWM7RUFDZCx1QkFBc0I7RUFDdEIsY0FBYSxFQUNkOztBQVZIO0VBYUksZUFBYztFQUNkLGdCQUFlO0VBQ2YsaUJBQWdCO0VBQ2hCLG9DQUFtQyxFQUNwQzs7QUFHSDtFQUNFLHNCQUFxQixFQXlCdEI7O0FBMUJEO0lBSUksYUFBWTtJQUNaLHdCQUF1QjtJQUN2QixtQkFBa0I7SUFDbEIsWUFBVztJQUNYLGFBQVk7SUFDWixXQUFVO0lBQ1Ysa0JBQWlCO0lBQ2pCLGNBQWE7SUFDYixnQkFBZTtJQUdmLGdCQUFlLEVBVWhCOztBQXpCSDtNQWtCTSxVQUFTLEVBQ1Y7O0FBbkJMO01BdUJNLGlDQUNGLEVBQUMiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2hlYWRlci9kZXNrdG9wL2hlYWRlci1kZXNrdG9wLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaGVhZGVyIHtcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3JkZXItYm90dG9tOiAwLjc1cHggc29saWQgIzNDNEU1OTtcbn1cblxuYXBwLXNldHRpbmdzLW1vYmlsZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB6LWluZGV4OiAzO1xuICB3aWR0aDogNDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHBhZGRpbmctYm90dG9tOiA3MHB4O1xufVxuXG4uY29udGFpbmVyIHtcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAyMHB4IDQwcHg7XG59XG5cbi5sb2dvLWJsb2NrIC5sb2dvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDQ1cHg7XG59XG5uYXYge1xuICB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBsaSB7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgY29sb3I6ICMzQzRFNTk7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBtYXJnaW46IDAgMTVweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgYSB7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcztcblxuICAgICAgICAmOmhvdmVyLCAmLmFjdGl2ZSB7XG4gICAgICAgICAgY29sb3I6ICMzRUMzQzM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW1nIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luOiAwIDVweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG4udXNlci1pbmZvIHtcbiAgaW1nIHtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgY29sb3I6ICMzQzRFNTk7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW46IDAgNXB4O1xuICB9XG5cbiAgLnVzZXItbmFtZSB7XG4gICAgY29sb3I6ICMzQzRFNTk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIH1cbn1cblxuLmxhbmd1YWdlcyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAubGFuZ3VhZ2Uge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7XG4gICAgLW8tdHJhbnNpdGlvbjogLjNzO1xuICAgIHRyYW5zaXRpb246IC4zcztcblxuICAgIGltZyB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJi5zZWxlY3RlZC1sYW5ndWFnZSB7XG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAyMXB4IDVweCAjMWRlOWI2O1xuICAgICAgYm94LXNoYWRvdzogMCAwIDIxcHggNXB4ICMxZGU5YjZcbiAgICB9XG4gIH1cbn1cblxuXG4iXX0= */\"","import { Component, NgZone } from '@angular/core';\nimport { HeaderAbstractComponent } from '../abstracts/header.abstract.component';\nimport { UserService } from '../../../services/user.service';\nimport { MultilanguageService } from '../../../services/multilanguage.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from '../../../services/popup.service';\nimport { Router } from '@angular/router';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { SettingsService } from '../../../services/settings.service';\n\n@Component({\n selector: 'app-header-desktop',\n templateUrl: './header-desktop.component.html',\n styleUrls: ['./header-desktop.component.scss']\n})\n\nexport class HeaderDesktopComponent\n extends HeaderAbstractComponent {\n constructor(protected userService: UserService,\n public multiLanguageService: MultilanguageService,\n public translate: TranslateService,\n public popupService: PopupService,\n protected router: Router,\n protected _ngZone: NgZone,\n protected streamingService: VideoStreamingService,\n public settingsService: SettingsService\n ) {\n super(userService, multiLanguageService, translate, popupService, router, _ngZone, streamingService, settingsService);\n }\n}\n","module.exports = \"app-header-mobile {\\n position: fixed;\\n background-color: white;\\n z-index: 4;\\n width: 100vw;\\n top: 0;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7RUFDaEIsd0JBQXdCO0VBQ3hCLFdBQVc7RUFDWCxhQUFhO0VBQ2IsT0FBTztDQUNSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJhcHAtaGVhZGVyLW1vYmlsZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDQ7XG4gIHdpZHRoOiAxMDB2dztcbiAgdG9wOiAwO1xufVxuIl19 */\"","module.exports = \"\\n\\n\"","import { Component } from '@angular/core';\nimport {DeviceDetectorService} from 'ngx-device-detector';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css']\n})\n\nexport class HeaderComponent {\n isDesktop: boolean;\n\n constructor(protected deviceDetectorService: DeviceDetectorService) {\n this.isDesktop = this.deviceDetectorService.isDesktop();\n }\n}\n","module.exports = \"
\\n
\\n \\n
  • {{('header.' + page) | translate}}
  • \\n
    \\n \\n
    \\n
    \\n \\n \\n \\n \\n \\n
    \\n\\n\"","module.exports = \"header {\\n justify-content: space-between;\\n border-bottom: 0.75px solid #3C4E59; }\\n\\napp-settings-mobile {\\n position: fixed;\\n background-color: white;\\n z-index: 3;\\n width: 100vw; }\\n\\nmat-sidenav-container {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n background: transparent;\\n z-index: 4; }\\n\\nmat-sidenav {\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n padding-right: 40px;\\n align-items: flex-start; }\\n\\n.sidenav-opened {\\n width: 60vw;\\n transition: width 0.5s;\\n min-width: 200px; }\\n\\n.close-menu {\\n position: absolute;\\n top: 10px;\\n right: 10px; }\\n\\nnav, ul {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start; }\\n\\n.container {\\n justify-content: space-around;\\n padding: 10px;\\n display: flex;\\n flex-direction: column;\\n width: 170px;\\n margin-left: 0; }\\n\\n.row-container {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center; }\\n\\n.icon {\\n background: center no-repeat;\\n width: 20px;\\n height: 20px; }\\n\\n.close-icon {\\n background: center no-repeat;\\n width: 10px;\\n height: 10px; }\\n\\n.logo-block .logo {\\n position: relative;\\n height: 50px;\\n width: 100px;\\n margin-right: 50px;\\n padding-top: 5px;\\n padding-bottom: 5px; }\\n\\nbutton {\\n background: transparent;\\n border: none;\\n padding-top: 10px;\\n padding-bottom: 10px; }\\n\\nbutton:active,\\nbutton:focus {\\n border: 0;\\n outline: 0; }\\n\\nnav ul {\\n margin: 0;\\n padding: 0; }\\n\\nli, button {\\n list-style: none;\\n color: #3C4E59;\\n font-size: 14px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 700;\\n margin: 0 15px;\\n transition: .3s; }\\n\\nli {\\n padding-top: 10px;\\n padding-bottom: 10px; }\\n\\nnav li img button {\\n vertical-align: middle;\\n margin: 0 5px;\\n padding-bottom: 2px; }\\n\\nnav ul a.active li, nav ul a li:hover {\\n color: #3EC3C3; }\\n\\nnav ul a li:hover {\\n color: #3EC3C3; }\\n\\n.user-info img, .language img {\\n width: 30px;\\n height: 30px;\\n border-radius: 50%;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n color: #3C4E59;\\n vertical-align: middle;\\n margin: 0 5px; }\\n\\n.user-info .user-name {\\n color: #3C4E59;\\n font-size: 14px;\\n font-weight: 700;\\n font-family: 'Overpass', sans-serif; }\\n\\n.user-info {\\n padding-left: 10px; }\\n\\n.languages {\\n display: inline-block; }\\n\\n.language {\\n border: none;\\n background: transparent;\\n border-radius: 15px;\\n width: 30px;\\n height: 30px;\\n padding: 0;\\n margin-left: 15px;\\n margin-top: 15px;\\n outline: none;\\n cursor: pointer;\\n transition: .3s; }\\n\\n.language img {\\n margin: 0; }\\n\\n.selected-language {\\n box-shadow: 0 0 21px 5px #1de9b6; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZGVyL21vYmlsZS9oZWFkZXItbW9iaWxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBR0UsK0JBQThCO0VBQzlCLG9DQUFtQyxFQUNwQzs7QUFFRDtFQUNFLGdCQUFlO0VBQ2Ysd0JBQXVCO0VBQ3ZCLFdBQVU7RUFDVixhQUFZLEVBQ2I7O0FBRUQ7RUFDRSxtQkFBa0I7RUFDbEIsT0FBTTtFQUNOLFFBQU87RUFDUCxjQUFhO0VBQ2IsY0FBYTtFQUNiLHVCQUFzQjtFQUN0Qix3QkFBdUI7RUFDdkIsV0FBVSxFQUNYOztBQUVEO0VBQ0UsY0FBYTtFQUNiLGNBQWE7RUFDYix1QkFBc0I7RUFDdEIsb0JBQW1CO0VBQ25CLHdCQUF1QixFQUN4Qjs7QUFFRDtFQUNFLFlBQVc7RUFDWCx1QkFBc0I7RUFDdEIsaUJBQWdCLEVBQ2pCOztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLFVBQVM7RUFDVCxZQUFXLEVBQ1o7O0FBRUQ7RUFDRSxjQUFhO0VBQ2IsdUJBQXNCO0VBQ3RCLHdCQUF1QixFQUN4Qjs7QUFFRDtFQUdFLDhCQUE2QjtFQUM3QixjQUFhO0VBQ2IsY0FBYTtFQUNiLHVCQUFzQjtFQUN0QixhQUFZO0VBQ1osZUFBYyxFQUNmOztBQUVEO0VBQ0UsY0FBYTtFQUNiLG9CQUFtQjtFQUNuQiwrQkFBOEI7RUFDOUIsb0JBQW1CLEVBQ3BCOztBQUVEO0VBQ0UsNkJBQTRCO0VBQzVCLFlBQVc7RUFDWCxhQUFZLEVBQ2I7O0FBRUQ7RUFDRSw2QkFBNEI7RUFDNUIsWUFBVztFQUNYLGFBQVksRUFDYjs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixhQUFZO0VBQ1osYUFBWTtFQUNaLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsb0JBQW1CLEVBQ3BCOztBQUVEO0VBQ0Usd0JBQXVCO0VBQ3ZCLGFBQVk7RUFDWixrQkFBaUI7RUFDakIscUJBQW9CLEVBQ3JCOztBQUVEOztFQUVFLFVBQVM7RUFDVCxXQUFVLEVBQ1g7O0FBRUQ7RUFDRSxVQUFTO0VBQ1QsV0FBVSxFQUNYOztBQUVEO0VBQ0UsaUJBQWdCO0VBQ2hCLGVBQWM7RUFDZCxnQkFBZTtFQUNmLG9DQUFtQztFQUNuQyxpQkFBZ0I7RUFDaEIsZUFBYztFQUdkLGdCQUFlLEVBQ2hCOztBQUVEO0VBQ0Usa0JBQWlCO0VBQ2pCLHFCQUFvQixFQUNyQjs7QUFFRDtFQUNFLHVCQUFzQjtFQUN0QixjQUFhO0VBQ2Isb0JBQW1CLEVBQ3BCOztBQUVEO0VBQ0UsZUFBYyxFQUNmOztBQUVEO0VBQ0UsZUFBYyxFQUNmOztBQUVEO0VBQ0UsWUFBVztFQUNYLGFBQVk7RUFDWixtQkFBa0I7RUFDbEIsb0NBQW1DO0VBQ25DLGlCQUFnQjtFQUNoQixlQUFjO0VBQ2QsdUJBQXNCO0VBQ3RCLGNBQWEsRUFDZDs7QUFFRDtFQUNFLGVBQWM7RUFDZCxnQkFBZTtFQUNmLGlCQUFnQjtFQUNoQixvQ0FBbUMsRUFDcEM7O0FBRUQ7RUFDRSxtQkFBa0IsRUFDbkI7O0FBRUQ7RUFDRSxzQkFBcUIsRUFDdEI7O0FBRUQ7RUFDRSxhQUFZO0VBQ1osd0JBQXVCO0VBQ3ZCLG9CQUFtQjtFQUNuQixZQUFXO0VBQ1gsYUFBWTtFQUNaLFdBQVU7RUFDVixrQkFBaUI7RUFDakIsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixnQkFBZTtFQUdmLGdCQUFlLEVBQ2hCOztBQUVEO0VBQ0UsVUFBUyxFQUNWOztBQUVEO0VBRUUsaUNBQ0YsRUFBQyIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGVhZGVyL21vYmlsZS9oZWFkZXItbW9iaWxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaGVhZGVyIHtcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3JkZXItYm90dG9tOiAwLjc1cHggc29saWQgIzNDNEU1OTtcbn1cblxuYXBwLXNldHRpbmdzLW1vYmlsZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDM7XG4gIHdpZHRoOiAxMDB2dztcbn1cblxubWF0LXNpZGVuYXYtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB6LWluZGV4OiA0O1xufVxuXG5tYXQtc2lkZW5hdiB7XG4gIGhlaWdodDogMTAwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uc2lkZW5hdi1vcGVuZWQge1xuICB3aWR0aDogNjB2dztcbiAgdHJhbnNpdGlvbjogd2lkdGggMC41cztcbiAgbWluLXdpZHRoOiAyMDBweDtcbn1cblxuLmNsb3NlLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTBweDtcbiAgcmlnaHQ6IDEwcHg7XG59XG5cbm5hdiwgdWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cblxuLmNvbnRhaW5lciB7XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBwYWRkaW5nOiAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTcwcHg7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4ucm93LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmljb24ge1xuICBiYWNrZ3JvdW5kOiBjZW50ZXIgbm8tcmVwZWF0O1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuXG4uY2xvc2UtaWNvbiB7XG4gIGJhY2tncm91bmQ6IGNlbnRlciBuby1yZXBlYXQ7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG59XG5cbi5sb2dvLWJsb2NrIC5sb2dvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDUwcHg7XG4gIHdpZHRoOiAxMDBweDtcbiAgbWFyZ2luLXJpZ2h0OiA1MHB4O1xuICBwYWRkaW5nLXRvcDogNXB4O1xuICBwYWRkaW5nLWJvdHRvbTogNXB4O1xufVxuXG5idXR0b24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG59XG5cbmJ1dHRvbjphY3RpdmUsXG5idXR0b246Zm9jdXMge1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG59XG5cbm5hdiB1bCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxubGksIGJ1dHRvbiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGNvbG9yOiAjM0M0RTU5O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDAgMTVweDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuM3M7XG4gIC1vLXRyYW5zaXRpb246IC4zcztcbiAgdHJhbnNpdGlvbjogLjNzO1xufVxuXG5saSB7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cblxubmF2IGxpIGltZyBidXR0b24ge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46IDAgNXB4O1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xufVxuXG5uYXYgdWwgYS5hY3RpdmUgbGksIG5hdiB1bCBhIGxpOmhvdmVyIHtcbiAgY29sb3I6ICMzRUMzQzM7XG59XG5cbm5hdiB1bCBhIGxpOmhvdmVyIHtcbiAgY29sb3I6ICMzRUMzQzM7XG59XG5cbi51c2VyLWluZm8gaW1nLCAubGFuZ3VhZ2UgaW1nIHtcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMzQzRFNTk7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5cbi51c2VyLWluZm8gLnVzZXItbmFtZSB7XG4gIGNvbG9yOiAjM0M0RTU5O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xufVxuXG4udXNlci1pbmZvIHtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4ubGFuZ3VhZ2VzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubGFuZ3VhZ2Uge1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tbGVmdDogMTVweDtcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRyYW5zaXRpb246IC4zcztcbiAgLW8tdHJhbnNpdGlvbjogLjNzO1xuICB0cmFuc2l0aW9uOiAuM3M7XG59XG5cbi5sYW5ndWFnZSBpbWcge1xuICBtYXJnaW46IDA7XG59XG5cbi5zZWxlY3RlZC1sYW5ndWFnZSB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDIxcHggNXB4ICMxZGU5YjY7XG4gIGJveC1zaGFkb3c6IDAgMCAyMXB4IDVweCAjMWRlOWI2XG59XG4iXX0= */\"","import { Component, NgZone, OnDestroy } from '@angular/core';\nimport { switchMap, take, tap } from 'rxjs/operators';\nimport { HeaderAbstractComponent } from '../abstracts/header.abstract.component';\nimport { Pages, UserService } from '../../../services/user.service';\nimport { MultilanguageService } from '../../../services/multilanguage.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from '../../../services/popup.service';\nimport { Router } from '@angular/router';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { SettingsService } from '../../../services/settings.service';\n\n@Component({\n selector: 'app-header-mobile',\n templateUrl: './header-mobile.component.html',\n styleUrls: ['./header-mobile.component.scss']\n})\n\nexport class HeaderMobileComponent\n extends HeaderAbstractComponent\n implements OnDestroy {\n\n displayMenu = false;\n\n constructor(protected userService: UserService,\n public multiLanguageService: MultilanguageService,\n public translate: TranslateService,\n public popupService: PopupService,\n protected router: Router,\n protected _ngZone: NgZone,\n protected streamingService: VideoStreamingService,\n public settingsService: SettingsService\n ) {\n super(userService, multiLanguageService, translate, popupService, router, _ngZone, streamingService, settingsService);\n }\n\n toggleActive(pageName: Pages) {\n if (this.settingsService.isOpened) {\n this.closeSettings()\n .subscribe(() => {\n this.page = pageName;\n this.streamingService.activeArea = this.page;\n this.settingsService.isOpened = false;\n });\n } else {\n this.page = pageName;\n this.streamingService.activeArea = this.page;\n }\n }\n\n toggleMenu() {\n this.displayMenu = !this.displayMenu;\n }\n\n closeMenu() {\n this.displayMenu = false;\n }\n\n chooseRoom(page: Pages) {\n super.chooseRoom(page);\n this.closeMenu();\n }\n\n deactivateSketch() {\n super.deactivateSketch();\n this.closeMenu();\n }\n\n getVisibleUserInfo = () => {\n return this.page !== 'thanks';\n }\n}\n","module.exports = \".main-block {\\n width: 100%;\\n position: fixed;\\n}\\n.main-block-mobile {\\n display: flex;\\n height: calc(100% - 61px);\\n align-items: flex-start;\\n bottom: 0;\\n}\\n.main-block-desktop {\\n top: 61px;\\n height: calc(100% - 87px);\\n}\\n.video-block {\\n flex-grow: 1;\\n width: 100vw;\\n overflow: hidden;\\n}\\n.video-block-desktop {\\n margin-top: 50px;\\n height: 100%;\\n}\\n.video-block-mobile {\\n height: 100%; /*possible adjustments*/\\n}\\n.video {\\n height: 100%;\\n}\\n.tab-block {\\n width: 30%;\\n min-width: 380px;\\n height: 100%;\\n margin-top: 50px;\\n}\\n.hide {\\n opacity: 0;\\n height: 0;\\n}\\n.small {\\n opacity: 1;\\n height: 100%;\\n}\\n.show {\\n opacity: 1;\\n height: 100%;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluL21haW4uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFlBQVk7RUFDWixnQkFBZ0I7Q0FDakI7QUFDRDtFQUNFLGNBQWM7RUFDZCwwQkFBMEI7RUFDMUIsd0JBQXdCO0VBQ3hCLFVBQVU7Q0FDWDtBQUVEO0VBQ0UsVUFBVTtFQUNWLDBCQUEwQjtDQUMzQjtBQUVEO0VBQ0UsYUFBYTtFQUNiLGFBQWE7RUFDYixpQkFBaUI7Q0FDbEI7QUFDRDtFQUNFLGlCQUFpQjtFQUNqQixhQUFhO0NBQ2Q7QUFDRDtFQUNFLGFBQWEsQ0FBQyx3QkFBd0I7Q0FDdkM7QUFDRDtFQUNFLGFBQWE7Q0FDZDtBQUNEO0VBQ0UsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsaUJBQWlCO0NBQ2xCO0FBQ0Q7RUFDRSxXQUFXO0VBQ1gsVUFBVTtDQUNYO0FBRUQ7RUFDRSxXQUFXO0VBQ1gsYUFBYTtDQUNkO0FBRUQ7RUFDRSxXQUFXO0VBQ1gsYUFBYTtDQUNkIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9tYWluL21haW4uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tYWluLWJsb2NrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5tYWluLWJsb2NrLW1vYmlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNjFweCk7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBib3R0b206IDA7XG59XG5cbi5tYWluLWJsb2NrLWRlc2t0b3Age1xuICB0b3A6IDYxcHg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gODdweCk7XG59XG5cbi52aWRlby1ibG9jayB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgd2lkdGg6IDEwMHZ3O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnZpZGVvLWJsb2NrLWRlc2t0b3Age1xuICBtYXJnaW4tdG9wOiA1MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG4udmlkZW8tYmxvY2stbW9iaWxlIHtcbiAgaGVpZ2h0OiAxMDAlOyAvKnBvc3NpYmxlIGFkanVzdG1lbnRzKi9cbn1cbi52aWRlbyB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi50YWItYmxvY2sge1xuICB3aWR0aDogMzAlO1xuICBtaW4td2lkdGg6IDM4MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDUwcHg7XG59XG4uaGlkZSB7XG4gIG9wYWNpdHk6IDA7XG4gIGhlaWdodDogMDtcbn1cblxuLnNtYWxsIHtcbiAgb3BhY2l0eTogMTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIGhlaWdodDogMTAwJTtcbn1cbiJdfQ== */\"","module.exports = \"
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n\"","import { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { VideoStreamingService } from '../../services/video-streaming.service';\nimport { UserService } from '../../services/user.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { PopupService } from '../../services/popup.service';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\n\n@Component({\n selector: 'app-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.css']\n})\nexport class MainComponent\n extends UnsubscribeAbstract\n implements OnInit {\n\n @ViewChild('sketchBoard', { static: false }) board: ElementRef;\n\n private opponentConnected = false;\n private hacker = false;\n private roomId: string;\n private token: string;\n isDesktop: boolean;\n isActionToggleBarVisible=true;\n\n constructor(public userService: UserService,\n private _ngZone: NgZone,\n private router: Router,\n private popupService: PopupService,\n private streamingService: VideoStreamingService,\n public translate: TranslateService,\n protected deviceDetectorService: DeviceDetectorService) {\n super();\n\n this.isDesktop = this.deviceDetectorService.isDesktop();\n\n this.roomId = this.userService.getRoomId();\n this.token = this.userService.getToken();\n\n this.streamingService\n .getConnectionStatus()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(status => {\n this.opponentConnected = status;\n if (this.opponentConnected === false && this.hacker) {\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.interlocutor'));\n });\n }\n });\n\n this.streamingService\n .observeThirdConnection()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(connections => {\n if (!connections) {\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.accessDenied'));\n this.streamingService.disconnect();\n this.router.navigateByUrl(`/${this.roomId}/${this.token}`)\n .catch(error => {\n console.log(error);\n });\n });\n }\n });\n }\n toggleActionBarVisibility() {\n this.isActionToggleBarVisible=!this.isActionToggleBarVisible;\n\n}\n\n async ngOnInit() {\n\n this.userService.setPage('videoChat');\n\n\n this.userService\n .observeRole()\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(v => !!v)\n )\n .subscribe(role => {\n this.userService.logIn(role);\n });\n\n const cameraId = sessionStorage.camera || null;\n const microphoneId = sessionStorage.microphone || null;\n\n const videoDevice = await navigator.mediaDevices.enumerateDevices().then(devices => {\n return devices.find(device => device.kind === 'videoinput');\n });\n\n if (navigator.userAgent.includes('Chrome') && navigator['permissions'] && typeof navigator['permissions'].query === 'function') {\n \n Promise.all([\n navigator['permissions'].query({ name: 'camera', deviceId: cameraId }),\n navigator['permissions'].query({ name: 'microphone', deviceId: microphoneId }),\n ])\n .then(([{ state: videoState }, { state: audioState }]) => {\n if (videoState === 'denied' || audioState === 'denied') {\n console.log('denied');\n setTimeout(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.deniedPermission'));\n }, 0);\n } else {\n if (videoState === 'prompt' || audioState === 'prompt') {\n console.log('prompt');\n\n setTimeout(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.promptPermission'));\n }, 0);\n \n }\n }\n\n this.streamingService.connect(!!videoDevice && videoState !== 'denied', audioState !== 'denied');\n\n })\n .catch(error => {\n this.streamingService.connect(false, false);\n });\n } else {\n const constraints = {\n ...videoDevice && {\n video: {deviceId: cameraId}\n },\n audio: {deviceId: microphoneId}\n };\n // Firefox and Safari\n navigator.mediaDevices\n .getUserMedia(constraints)\n .then(stream => {\n if (stream) {\n this.streamingService.connect(!!videoDevice && !!stream.getVideoTracks()[0], !!stream.getAudioTracks()[0]);\n }\n })\n .catch(error => {\n console.log('navigator.mediaDevices.getUserMedia error ', error);\n this.streamingService.connect(false, false);\n if (error.name === 'NotAllowedError') {\n setTimeout(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.deniedPermissionFF'));\n }, 0);\n }\n });\n\n }\n\n }\n\n}\n","module.exports = \".notes-block {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n}\\n\\n.notes-form {\\n width: 100%;\\n border-top: 1px solid #c1c1c1;\\n padding-left: 20px;\\n padding-top: 10px;\\n padding-right: 20px;\\n background-color: white;\\n position: relative;\\n}\\n\\n.notes-form-mobile {\\n overflow-y: auto;\\n}\\n\\n.save-note-mobile {\\n border: none;\\n background: none;\\n cursor: pointer;\\n padding: 5px 10px;\\n outline: none;\\n position: absolute;\\n right: 10px;\\n top: 23px;\\n}\\n\\n.notes-form-desktop textarea {\\n height: 100px;\\n overflow-y: auto;\\n color: #313131;\\n padding: 5px 10px;\\n margin-bottom: 30px;\\n resize: none;\\n}\\n\\n.notes-form-mobile textarea {\\n height: 50px;\\n overflow-y: auto;\\n color: #313131;\\n padding: 5px 10px;\\n margin-bottom: 30px;\\n resize: none;\\n}\\n\\n.notes-form-mobile input {\\n width: calc(100% - 25px);\\n}\\n\\n.notes-form input {\\n padding: 5px 10px;\\n}\\n\\n.full-width {\\n width: 100%;\\n}\\n\\n.notes {\\n height: 100%;\\n overflow-y: auto;\\n}\\n\\n.notes::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 5px;\\n}\\n\\n.notes::-webkit-scrollbar-track {\\n background-color: #fff;\\n border-radius: 5px;\\n}\\n\\n.notes::-webkit-scrollbar-thumb {\\n border-radius: 5px;\\n background-color: rgba(156, 156, 156, .6);\\n}\\n\\n.notes ul {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.notes li {\\n list-style: none;\\n padding: 10px;\\n border-bottom: 1px solid rgb(224, 224, 224);\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n margin-left: 10px;\\n margin-right: 10px;\\n}\\n\\n.notes li:last-child {\\n border-bottom: none;\\n}\\n\\n.notes .date, .notes i {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n\\n.date {\\n font-size: 12px;\\n}\\n\\n.headline {\\n color: rgba(0, 0, 0, 0.54);\\n font-size: 12px;\\n font-weight: bold;\\n margin: 0 10px;\\n text-transform: uppercase;\\n word-break: break-all;\\n}\\n\\n.tooltip-row {\\n display: flex;\\n flex-direction: row;\\n width: 100px;\\n}\\n\\n.notes i {\\n cursor: pointer;\\n margin-left: 15px;\\n}\\n\\n.notes .flex {\\n margin: 10px 0;\\n position: relative;\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-start;\\n}\\n\\n.notes .note-text {\\n width: 96%;\\n margin: 0 auto;\\n text-align: justify;\\n white-space: pre-line;\\n}\\n\\n.note-text {\\n word-break: break-all;\\n}\\n\\n.save-note {\\n border: none;\\n border-radius: 5px;\\n color: #313131;\\n position: relative;\\n bottom: 17px;\\n width: 100%;\\n cursor: pointer;\\n background: #FFE450;\\n padding: 17px 25px;\\n font-size: 20px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n}\\n\\nbutton:disabled {\\n opacity: 0.5;\\n}\\n\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9ub3Rlcy9ub3Rlcy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixtQkFBbUI7RUFHbkIsY0FBYztFQUlkLHVCQUF1QjtFQUd2QiwrQkFBK0I7Q0FDaEM7O0FBRUQ7RUFDRSxZQUFZO0VBQ1osOEJBQThCO0VBQzlCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsb0JBQW9CO0VBQ3BCLHdCQUF3QjtFQUN4QixtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxpQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osVUFBVTtDQUNYOztBQUVEO0VBQ0UsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLG9CQUFvQjtFQUNwQixhQUFhO0NBQ2Q7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsb0JBQW9CO0VBQ3BCLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLHlCQUF5QjtDQUMxQjs7QUFFRDtFQUNFLGtCQUFrQjtDQUNuQjs7QUFFRDtFQUNFLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLGFBQWE7RUFDYixpQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsV0FBVztDQUNaOztBQUVEO0VBQ0UsdUJBQXVCO0VBQ3ZCLG1CQUFtQjtDQUNwQjs7QUFFRDtFQUNFLG1CQUFtQjtFQUNuQiwwQ0FBMEM7Q0FDM0M7O0FBRUQ7RUFDRSxXQUFXO0VBQ1gsVUFBVTtDQUNYOztBQUVEO0VBQ0UsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCw0Q0FBNEM7RUFDNUMsb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsbUJBQW1CO0NBQ3BCOztBQUVEO0VBQ0Usb0JBQW9CO0NBQ3JCOztBQUVEO0VBQ0UsMkJBQTJCO0NBQzVCOztBQUVEO0VBQ0UsZ0JBQWdCO0NBQ2pCOztBQUVEO0VBQ0UsMkJBQTJCO0VBQzNCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLDBCQUEwQjtFQUMxQixzQkFBc0I7Q0FDdkI7O0FBRUQ7RUFDRSxjQUFjO0VBQ2Qsb0JBQW9CO0VBQ3BCLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixrQkFBa0I7Q0FDbkI7O0FBRUQ7RUFDRSxlQUFlO0VBQ2YsbUJBQW1CO0VBR25CLGNBQWM7RUFHZCwrQkFBK0I7RUFHL0Isd0JBQXdCO0NBQ3pCOztBQUVEO0VBQ0UsV0FBVztFQUNYLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsc0JBQXNCO0NBQ3ZCOztBQUVEO0VBQ0Usc0JBQXNCO0NBQ3ZCOztBQUVEO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLGFBQWE7RUFDYixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLG9DQUFvQztFQUNwQyxpQkFBaUI7RUFDakIsY0FBYztDQUNmOztBQUVEO0VBQ0UsYUFBYTtDQUNkIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ub3Rlcy9ub3Rlcy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm5vdGVzLWJsb2NrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ubm90ZXMtZm9ybSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2MxYzFjMTtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm5vdGVzLWZvcm0tbW9iaWxlIHtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLnNhdmUtbm90ZS1tb2JpbGUge1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEwcHg7XG4gIHRvcDogMjNweDtcbn1cblxuLm5vdGVzLWZvcm0tZGVza3RvcCB0ZXh0YXJlYSB7XG4gIGhlaWdodDogMTAwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGNvbG9yOiAjMzEzMTMxO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgcmVzaXplOiBub25lO1xufVxuXG4ubm90ZXMtZm9ybS1tb2JpbGUgdGV4dGFyZWEge1xuICBoZWlnaHQ6IDUwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGNvbG9yOiAjMzEzMTMxO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgcmVzaXplOiBub25lO1xufVxuXG4ubm90ZXMtZm9ybS1tb2JpbGUgaW5wdXQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gMjVweCk7XG59XG5cbi5ub3Rlcy1mb3JtIGlucHV0IHtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cbi5mdWxsLXdpZHRoIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5ub3RlcyB7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLm5vdGVzOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgd2lkdGg6IDVweDtcbn1cblxuLm5vdGVzOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cblxuLm5vdGVzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTYsIDE1NiwgMTU2LCAuNik7XG59XG5cbi5ub3RlcyB1bCB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLm5vdGVzIGxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigyMjQsIDIyNCwgMjI0KTtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5cbi5ub3RlcyBsaTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLm5vdGVzIC5kYXRlLCAubm90ZXMgaSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4uZGF0ZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmhlYWRsaW5lIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbjogMCAxMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG59XG5cbi50b29sdGlwLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHdpZHRoOiAxMDBweDtcbn1cblxuLm5vdGVzIGkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAxNXB4O1xufVxuXG4ubm90ZXMgLmZsZXgge1xuICBtYXJnaW46IDEwcHggMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0O1xuICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ubm90ZXMgLm5vdGUtdGV4dCB7XG4gIHdpZHRoOiA5NiU7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5ub3RlLXRleHQge1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG59XG5cbi5zYXZlLW5vdGUge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgY29sb3I6ICMzMTMxMzE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm90dG9tOiAxN3B4O1xuICB3aWR0aDogMTAwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiAjRkZFNDUwO1xuICBwYWRkaW5nOiAxN3B4IDI1cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbmJ1dHRvbjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuIl19 */\"","module.exports = \"
    \\n\\n
    \\n \\n
    \\n\\n
    \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
    \\n\\n
    \\n\"","import {Component, OnChanges, ViewChild, ElementRef, Input} from '@angular/core';\nimport { UserService } from '../../services/user.service';\nimport { takeUntil } from 'rxjs/operators';\nimport {DeviceDetectorService} from 'ngx-device-detector';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\n\n@Component({\n selector: 'app-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.css']\n})\nexport class NotesComponent\n extends UnsubscribeAbstract\n implements OnChanges {\n\n @Input() onNotes: boolean;\n @ViewChild('notesBox', {static: false}) notesBox: ElementRef;\n\n private noteId = 0;\n private setting = {\n element: {\n dynamicDownload: null as HTMLElement\n }\n };\n\n public userName: string;\n public fileName: string;\n public currentNote: string;\n public currentHeadline: string;\n public notes: any = [];\n\n isMobile: boolean;\n\n constructor(private userService: UserService,\n protected deviceDetectorService: DeviceDetectorService) {\n super();\n this.isMobile = this.deviceDetectorService.isMobile();\n\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(user => {\n this.userName = user.firstName + ' ' + user.lastName;\n });\n }\n\n ngOnChanges() {\n setTimeout(() => this.notesBox.nativeElement.scrollTop = this.notesBox.nativeElement.scrollHeight, 5);\n }\n\n // Add note to array\n saveNote() {\n if (this.currentNote === ' ' || this.currentNote === undefined) {\n return;\n }\n\n const note = {\n id: ++this.noteId,\n date: new Date(),\n headline: this.currentHeadline,\n text: this.currentNote.replace('\\\\n', '
    ')\n };\n\n this.notes.push(note);\n\n setTimeout(() => this.notesBox.nativeElement.scrollTop = this.notesBox.nativeElement.scrollHeight, 5);\n\n this.currentHeadline = '';\n this.currentNote = '';\n }\n\n // Save note as .txt\n dynamicDownloadTxt(note) {\n if (!note.headline) {\n note.headline = 'not specified';\n }\n this.fileName = this.userName + ':' + note.headline + '.txt';\n this.dynamicDownloadByHtmlTag({\n fileName: this.fileName,\n text: note.text\n });\n }\n\n delete(selectedNote) {\n this.notes = this.notes.filter(note => note.id !== selectedNote.id);\n }\n\n private dynamicDownloadByHtmlTag(arg: {fileName: string, text: string}) {\n if (!this.setting.element.dynamicDownload) {\n this.setting.element.dynamicDownload = document.createElement('a');\n }\n const element = this.setting.element.dynamicDownload;\n const fileType = arg.fileName.indexOf('.json') > -1 ? 'text/json' : 'text/plain';\n element.setAttribute('href', `data:${fileType};charset=utf-8,${encodeURIComponent(arg.text)}`);\n element.setAttribute('download', arg.fileName);\n\n const event = new MouseEvent('click');\n element.dispatchEvent(event);\n }\n}\n","module.exports = \".mat-dialog-title {\\n font-size: 24px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n color: #049DD9;\\n text-align: center;\\n}\\n::ng-deep .mat-dialog-container {\\n box-shadow: rgba(0, 0, 0, 0.16) 0 3px 10px;\\n border-color: transparent;\\n border-radius: 10px;\\n background-color: #fff;\\n outline-width: 0;\\n padding: 40px;\\n max-width: 580px;\\n width: 100%;\\n}\\n.mat-dialog-content {\\n text-align: center;\\n margin: 30px 0;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 300;\\n font-size: 18px;\\n}\\n.mat-dialog-actions {\\n display: flex;\\n justify-content: center;\\n}\\n.mat-dialog-actions button {\\n font-size: 16px;\\n color: #3C4E59;\\n padding: 8px 20px;\\n height: 40px;\\n border-radius: 3px;\\n border: 1px solid #FFE450;\\n outline: none;\\n margin: 15px;\\n}\\n.mat-dialog-actions button::-moz-focus-inner {\\n border: 0;\\n}\\n.accept-btn {\\n background-color: #FFE450;\\n}\\n.reject-btn {\\n background-color: #FFFFFF;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9wb3B1cC9wb3B1cC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLG9DQUFvQztFQUNwQyxpQkFBaUI7RUFDakIsZUFBZTtFQUNmLG1CQUFtQjtDQUNwQjtBQUNEO0VBRUUsMkNBQTJDO0VBQzNDLDBCQUEwQjtFQUMxQixvQkFBb0I7RUFDcEIsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLFlBQVk7Q0FDYjtBQUNEO0VBQ0UsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixvQ0FBb0M7RUFDcEMsaUJBQWlCO0VBQ2pCLGdCQUFnQjtDQUNqQjtBQUNEO0VBR0UsY0FBYztFQUdkLHdCQUF3QjtDQUN6QjtBQUNEO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsY0FBYztFQUNkLGFBQWE7Q0FDZDtBQUNEO0VBQ0UsVUFBVTtDQUNYO0FBQ0Q7RUFDRSwwQkFBMEI7Q0FDM0I7QUFDRDtFQUNFLDBCQUEwQjtDQUMzQiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcG9wdXAvcG9wdXAuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgY29sb3I6ICMwNDlERDk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbjo6bmctZGVlcCAubWF0LWRpYWxvZy1jb250YWluZXIge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNikgMCAzcHggMTBweDtcbiAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE2KSAwIDNweCAxMHB4O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBvdXRsaW5lLXdpZHRoOiAwO1xuICBwYWRkaW5nOiA0MHB4O1xuICBtYXgtd2lkdGg6IDU4MHB4O1xuICB3aWR0aDogMTAwJTtcbn1cbi5tYXQtZGlhbG9nLWNvbnRlbnQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbjogMzBweCAwO1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLm1hdC1kaWFsb2ctYWN0aW9ucyB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLm1hdC1kaWFsb2ctYWN0aW9ucyBidXR0b24ge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjM0M0RTU5O1xuICBwYWRkaW5nOiA4cHggMjBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNGRkU0NTA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIG1hcmdpbjogMTVweDtcbn1cbi5tYXQtZGlhbG9nLWFjdGlvbnMgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xufVxuLmFjY2VwdC1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFNDUwO1xufVxuLnJlamVjdC1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xufVxuIl19 */\"","module.exports = \"

    {{title}}

    \\n \\n {{content}}\\n plugin\\n {{additionalContent}}\\n \\n\\n \\n \\n \\n \\n\"","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n templateUrl: './popup.component.html',\n styleUrls: ['./popup.component.css']\n})\nexport class PopupComponent {\n\n acceptBtn: string;\n additionalContent: string;\n content: string;\n isNotification: boolean;\n link: string;\n rejectBtn: string;\n title: string;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public translate: TranslateService) {\n\n this.content = data.content;\n this.title = data.title ? data.title : this.translate.instant('popups.notification');\n this.acceptBtn = data.acceptBtn ? data.acceptBtn : this.translate.instant('popups.accept');\n this.rejectBtn = data.rejectBtn;\n this.isNotification = data.isNotification;\n this.link = data.link;\n this.additionalContent = data.additionalContent;\n this.dialogRef.disableClose = true;\n }\n}\n","import { ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UserService } from '../../../services/user.service';\nimport { SettingsService } from '../../../services/settings.service';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { takeUntil } from 'rxjs/operators';\nimport { UnsubscribeAbstract } from '../../abstracts/unsubscribe.abstract';\n\nconst _AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext || (window as any).mozAudioContext;\n\nexport abstract class SettingsAbstractComponent\n extends UnsubscribeAbstract\n implements OnInit, OnDestroy {\n\n @ViewChild('testVideo', {static: true}) _testVideoRef: ElementRef;\n\n volumeValue = 100;\n\n audioContext = new _AudioContext();\n gainNode = this.audioContext.createGain();\n\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n isSafari: boolean;\n streamFailed: boolean;\n audioFailed: boolean;\n\n videoErroredDevice: any;\n audioErroredDevice: any;\n\n constructor(public userService: UserService,\n protected settingsService: SettingsService,\n protected popupService: PopupService,\n protected translate: TranslateService,\n protected deviceDetectorService: DeviceDetectorService) {\n super();\n\n this.isMobile = this.deviceDetectorService.isMobile();\n this.isTablet = this.deviceDetectorService.isTablet();\n this.isDesktop = this.deviceDetectorService.isDesktop();\n this.isSafari = this.deviceDetectorService.browser === 'Safari';\n\n this.settingsService\n .observeSettings()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(settings => {\n this.volumeValue = settings.microVolume;\n });\n\n this.settingsService\n .getStream()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(\n stream => {\n if (stream && this._testVideoRef) {\n this.streamFailed = false;\n this._testVideoRef.nativeElement.srcObject = stream;\n this._testVideoRef.nativeElement.muted = true;\n } else {\n this.streamFailed = true;\n }\n\n },\n error => {\n this.streamFailed = true;\n console.log('Error getting stream: ', error);\n });\n }\n\n public get videoSelect() {\n return this.settingsService.videoSelect;\n }\n\n public set videoSelect(value: MediaDeviceInfo) {\n this.settingsService.videoSelect = value;\n }\n\n public get audioSelect() {\n return this.settingsService.audioSelect;\n }\n\n public set audioSelect(value: MediaDeviceInfo) {\n this.settingsService.audioSelect = value;\n }\n\n public get audioInputDevices() {\n return this.settingsService.audioInputDevices;\n }\n\n public get videoDevices() {\n return this.settingsService.videoDevices;\n }\n\n ngOnInit() {\n sessionStorage.removeItem('wasInTheCall');\n\n if (this.userService.page && (this.userService.page.getValue() === 'waitingRoom' || !this.userService.page.getValue())) {\n this.userService.setPage('settings');\n }\n\n this.settingsService\n .mediaError$\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((mediaError) => {\n this.videoErroredDevice = mediaError.videoErroredDevice;\n this.audioErroredDevice = mediaError.audioErroredDevice;\n });\n\n if (navigator.userAgent.includes('Chrome')) {\n\n Promise.all([\n navigator['permissions'].query({name: 'camera'}),\n navigator['permissions'].query({name: 'microphone'})\n ])\n .then(([{state: videoState}, {state: audioState}]) => {\n\n if (videoState === 'denied' || audioState === 'denied') {\n\n setTimeout(() => {\n this.streamFailed = videoState === 'denied';\n this.audioFailed = audioState === 'denied';\n this.settingsService.getMedia();\n this.popupService.openErrorNotification(this.translate.instant('popups.deniedPermission'));\n }, 100);\n\n } else {\n\n if (videoState === 'prompt' || audioState === 'prompt') {\n setTimeout(() => {\n this.popupService.openErrorNotification(this.translate.instant('popups.promptPermission'));\n }, 0);\n }\n\n this.settingsService.getDevicesList();\n this.settingsService.getMedia();\n this.handleChangeVolume();\n }\n\n });\n\n } else {\n this.settingsService.getDevicesList();\n this.settingsService.getMedia();\n this.handleChangeVolume();\n }\n }\n\n handleChangeVolume() {\n this.gainNode.gain.value = this.volumeValue;\n\n this.settingsService.updateSettings({\n ...this.settingsService.getSettings(),\n microVolume: this.volumeValue\n });\n }\n\n handleChangeAudio(e) {\n this.settingsService.setAudioDevice(e);\n this.settingsService.getMedia();\n }\n\n handleChangeVideo(e) {\n this.settingsService.setVideoDevice(e);\n this.settingsService.getMedia();\n }\n\n ngOnDestroy() {\n this.settingsService.clearStream();\n super.ngOnDestroy();\n }\n}\n","module.exports = \".container {\\n align-items: normal;\\n justify-content: space-between;\\n max-width: 1300px;\\n margin: auto;\\n padding: 30px;\\n}\\n\\n.container > mat-card {\\n width: 32%;\\n max-width: 650px;\\n box-shadow: none;\\n border-radius: 5px;\\n}\\n\\nmat-radio-button .mat-radio-label {\\n white-space: pre-wrap !important;\\n margin: 10px 0 !important;\\n}\\n\\n.mat-radio-label-content {\\n white-space: normal !important;\\n padding: 10px 10px 10px 0 !important;\\n}\\n\\nh3 {\\n margin-top: 0;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 900;\\n color: #3C4E59;\\n font-size: 24px;\\n}\\n\\n.warning-text {\\n color: red;\\n}\\n\\na {\\n color: #1de9b6;\\n text-decoration: none;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n font-size: 14px;\\n}\\n\\n.options-narrow {\\n width: 48%;\\n}\\n\\n.options-wide {\\n width: 98%;\\n}\\n\\n.option {\\n display: block;\\n margin: 10px 0;\\n}\\n\\n.radio-group {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.test-video {\\n width: auto;\\n max-width: 50%;\\n}\\n\\n.test-video video {\\n border-radius: 5px;\\n width: 100%;\\n max-height: 150px;\\n}\\n\\n.video-block, .audio-block, .test-block {\\n background: #ececec;\\n display: flex;\\n align-items: normal;\\n justify-content: space-between;\\n}\\n\\n.test-block {\\n display: block;\\n}\\n\\n.link-for-test {\\n display: block;\\n}\\n\\n.volume {\\n width: 48%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9zZXR0aW5ncy9kZXNrdG9wL3NldHRpbmdzLWRlc2t0b3AuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUdFLG9CQUFvQjtFQUdwQiwrQkFBK0I7RUFDL0Isa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixjQUFjO0NBQ2Y7O0FBRUQ7RUFDRSxXQUFXO0VBQ1gsaUJBQWlCO0VBRWpCLGlCQUFpQjtFQUNqQixtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxpQ0FBaUM7RUFDakMsMEJBQTBCO0NBQzNCOztBQUVEO0VBQ0UsK0JBQStCO0VBQy9CLHFDQUFxQztDQUN0Qzs7QUFFRDtFQUNFLGNBQWM7RUFDZCxvQ0FBb0M7RUFDcEMsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxlQUFlO0VBQ2Ysc0JBQXNCO0VBQ3RCLG9DQUFvQztFQUNwQyxpQkFBaUI7RUFDakIsZ0JBQWdCO0NBQ2pCOztBQUVEO0VBQ0UsV0FBVztDQUNaOztBQUVEO0VBQ0UsV0FBVztDQUNaOztBQUVEO0VBQ0UsZUFBZTtFQUNmLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0NBQ3hCOztBQUVEO0VBQ0UsWUFBWTtFQUNaLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLGtCQUFrQjtDQUNuQjs7QUFFRDtFQUNFLG9CQUFvQjtFQUdwQixjQUFjO0VBR2Qsb0JBQW9CO0VBR3BCLCtCQUErQjtDQUNoQzs7QUFFRDtFQUNFLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsV0FBVztFQUdYLGNBQWM7RUFHZCx3QkFBd0I7RUFHeEIsb0JBQW9CO0NBQ3JCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9zZXR0aW5ncy9kZXNrdG9wL3NldHRpbmdzLWRlc2t0b3AuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICAtd2Via2l0LWJveC1hbGlnbjogbm9ybWFsO1xuICAtbXMtZmxleC1hbGlnbjogbm9ybWFsO1xuICBhbGlnbi1pdGVtczogbm9ybWFsO1xuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1heC13aWR0aDogMTMwMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIHBhZGRpbmc6IDMwcHg7XG59XG5cbi5jb250YWluZXIgPiBtYXQtY2FyZCB7XG4gIHdpZHRoOiAzMiU7XG4gIG1heC13aWR0aDogNjUwcHg7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG5tYXQtcmFkaW8tYnV0dG9uIC5tYXQtcmFkaW8tbGFiZWwge1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDtcbn1cblxuLm1hdC1yYWRpby1sYWJlbC1jb250ZW50IHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAwICFpbXBvcnRhbnQ7XG59XG5cbmgzIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGNvbG9yOiAjM0M0RTU5O1xuICBmb250LXNpemU6IDI0cHg7XG59XG5cbi53YXJuaW5nLXRleHQge1xuICBjb2xvcjogcmVkO1xufVxuXG5hIHtcbiAgY29sb3I6ICMxZGU5YjY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLm9wdGlvbnMtbmFycm93IHtcbiAgd2lkdGg6IDQ4JTtcbn1cblxuLm9wdGlvbnMtd2lkZSB7XG4gIHdpZHRoOiA5OCU7XG59XG5cbi5vcHRpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbi5yYWRpby1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi50ZXN0LXZpZGVvIHtcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4udGVzdC12aWRlbyB2aWRlbyB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDE1MHB4O1xufVxuXG4udmlkZW8tYmxvY2ssIC5hdWRpby1ibG9jaywgLnRlc3QtYmxvY2sge1xuICBiYWNrZ3JvdW5kOiAjZWNlY2VjO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LWFsaWduOiBub3JtYWw7XG4gIC1tcy1mbGV4LWFsaWduOiBub3JtYWw7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnRlc3QtYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmxpbmstZm9yLXRlc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnZvbHVtZSB7XG4gIHdpZHRoOiA0OCU7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuIl19 */\"","module.exports = \"
    \\n \\n\\n
    \\n

    {{'settings.video' | translate }}

    \\n

    0\\\">{{'settings.noCamera' | translate }}

    \\n

    {{'settings.cameraWarning' | translate }}

    \\n \\n \\n {{videoDevice.label}}\\n

    \\n {{'settings.cameraWarning' | translate }}

    \\n \\n \\n
    \\n
    \\n \\n
    \\n\\n
    \\n\\n \\n
    \\n

    {{'settings.sound' | translate }}

    \\n

    0\\\">{{'settings.noMicrophone' | translate }}

    \\n \\n \\n {{audioDevice.label}}\\n

    \\n {{'settings.microphoneWarning' | translate }}

    \\n
    \\n \\n
    \\n\\n
    0\\\" class=\\\"volume\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
    \\n
    \\n\\n \\n

    {{'settings.deviceTest' | translate }}

    \\n https://test.webprax.de/\\n
    \\n
    \\n\"","import { Component } from '@angular/core';\nimport { SettingsAbstractComponent } from '../abstracts/settings.abstract.component';\nimport { UserService } from '../../../services/user.service';\nimport { SettingsService } from '../../../services/settings.service';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\n@Component({\n selector: 'app-settings-desktop',\n templateUrl: './settings-desktop.component.html',\n styleUrls: ['./settings-desktop.component.css']\n})\nexport class SettingsDesktopComponent\n extends SettingsAbstractComponent {\n constructor(public userService: UserService,\n protected settingsService: SettingsService,\n protected popupService: PopupService,\n protected translate: TranslateService,\n protected deviceDetectorService: DeviceDetectorService) {\n super(userService, settingsService, popupService, translate, deviceDetectorService);\n }\n}\n","module.exports = \".container {\\n display: flex;\\n flex-direction: column;\\n align-items: normal;\\n justify-content: space-between;\\n max-width: 1300px;\\n margin: auto;\\n padding: 30px;\\n max-height: calc(100vh - 150px);\\n overflow: auto;\\n}\\n\\n.container > mat-card {\\n box-shadow: none;\\n border-radius: 5px;\\n margin-bottom: 10px;\\n}\\n\\nmat-radio-button .mat-radio-label {\\n white-space: pre-wrap !important;\\n margin: 0 !important;\\n}\\n\\n.mat-radio-label-content {\\n white-space: normal !important;\\n padding: 10px 5px 5px 0 !important;\\n}\\n\\nh6 {\\n margin-top: 0;\\n margin-bottom: 0;\\n font-family: 'Overpass', sans-serif;\\n color: #3C4E59;\\n font-size: 14px;\\n}\\n\\na {\\n color: #1de9b6;\\n text-decoration: none;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n font-size: 14px;\\n}\\n\\n.options {\\n width: 48%;\\n}\\n\\n.audio-options {\\n width: 98%;\\n}\\n\\n.options-wide {\\n width: 98%;\\n}\\n\\n.warning-text {\\n color: red;\\n}\\n\\n.option {\\n display: block;\\n margin: 0;\\n}\\n\\n.radio-group {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.test-video {\\n width: auto;\\n max-width: 50%;\\n}\\n\\n.test-video video {\\n border-radius: 5px;\\n width: 100%;\\n max-height: 150px;\\n}\\n\\n.video-block, .audio-block, .test-block {\\n background: #ececec;\\n display: flex;\\n align-items: normal;\\n justify-content: space-between;\\n}\\n\\n.video-block {\\n height: -moz-fit-content;\\n height: fit-content;\\n}\\n\\n.test-block {\\n display: block;\\n}\\n\\n.link-for-test {\\n display: block;\\n}\\n\\n.volume {\\n width: 100%;\\n display: flex;\\n justify-content: start;\\n align-items: center;\\n margin-left: 2px;\\n}\\n\\nmat-slider {\\n width: 98%;\\n}\\n\\n.save-settings {\\n border: none;\\n border-radius: 5px;\\n color: #313131;\\n cursor: pointer;\\n width: calc(100% - 30px);\\n background: #FFE450;\\n padding: 17px 100px;\\n margin: 25px 15px;\\n font-size: 20px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n text-align: center;\\n}\\n\\n.save-settings:disabled {\\n opacity: 0.5;\\n cursor: auto;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9zZXR0aW5ncy9tb2JpbGUvc2V0dGluZ3MtbW9iaWxlLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBR3ZCLG9CQUFvQjtFQUdwQiwrQkFBK0I7RUFDL0Isa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixjQUFjO0VBQ2QsZ0NBQWdDO0VBQ2hDLGVBQWU7Q0FDaEI7O0FBRUQ7RUFFRSxpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLG9CQUFvQjtDQUNyQjs7QUFFRDtFQUNFLGlDQUFpQztFQUNqQyxxQkFBcUI7Q0FDdEI7O0FBRUQ7RUFDRSwrQkFBK0I7RUFDL0IsbUNBQW1DO0NBQ3BDOztBQUVEO0VBQ0UsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixvQ0FBb0M7RUFDcEMsZUFBZTtFQUNmLGdCQUFnQjtDQUNqQjs7QUFFRDtFQUNFLGVBQWU7RUFDZixzQkFBc0I7RUFDdEIsb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxlQUFlO0VBQ2YsVUFBVTtDQUNYOztBQUVEO0VBQ0UsY0FBYztFQUNkLHVCQUF1QjtDQUN4Qjs7QUFFRDtFQUNFLFlBQVk7RUFDWixlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsbUJBQW1CO0VBQ25CLFlBQVk7RUFDWixrQkFBa0I7Q0FDbkI7O0FBRUQ7RUFDRSxvQkFBb0I7RUFHcEIsY0FBYztFQUdkLG9CQUFvQjtFQUdwQiwrQkFBK0I7Q0FDaEM7O0FBRUQ7RUFDRSx5QkFBb0I7RUFBcEIsb0JBQW9CO0NBQ3JCOztBQUVEO0VBQ0UsZUFBZTtDQUNoQjs7QUFFRDtFQUNFLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxZQUFZO0VBR1osY0FBYztFQUdkLHVCQUF1QjtFQUd2QixvQkFBb0I7RUFDcEIsaUJBQWlCO0NBQ2xCOztBQUVEO0VBQ0UsV0FBVztDQUNaOztBQUVEO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2QsbUJBQW1CO0NBQ3BCOztBQUVEO0VBQ0UsYUFBYTtFQUNiLGFBQWE7Q0FDZCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2V0dGluZ3MvbW9iaWxlL3NldHRpbmdzLW1vYmlsZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC13ZWJraXQtYm94LWFsaWduOiBub3JtYWw7XG4gIC1tcy1mbGV4LWFsaWduOiBub3JtYWw7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWF4LXdpZHRoOiAxMzAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgcGFkZGluZzogMzBweDtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDE1MHB4KTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5jb250YWluZXIgPiBtYXQtY2FyZCB7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG5tYXQtcmFkaW8tYnV0dG9uIC5tYXQtcmFkaW8tbGFiZWwge1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tYXQtcmFkaW8tbGFiZWwtY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMTBweCA1cHggNXB4IDAgIWltcG9ydGFudDtcbn1cblxuaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgY29sb3I6ICMzQzRFNTk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuYSB7XG4gIGNvbG9yOiAjMWRlOWI2O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5vcHRpb25zIHtcbiAgd2lkdGg6IDQ4JTtcbn1cblxuLmF1ZGlvLW9wdGlvbnMge1xuICB3aWR0aDogOTglO1xufVxuXG4ub3B0aW9ucy13aWRlIHtcbiAgd2lkdGg6IDk4JTtcbn1cblxuLndhcm5pbmctdGV4dCB7XG4gIGNvbG9yOiByZWQ7XG59XG5cbi5vcHRpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwO1xufVxuXG4ucmFkaW8tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4udGVzdC12aWRlbyB7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDUwJTtcbn1cblxuLnRlc3QtdmlkZW8gdmlkZW8ge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxNTBweDtcbn1cblxuLnZpZGVvLWJsb2NrLCAuYXVkaW8tYmxvY2ssIC50ZXN0LWJsb2NrIHtcbiAgYmFja2dyb3VuZDogI2VjZWNlYztcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1hbGlnbjogbm9ybWFsO1xuICAtbXMtZmxleC1hbGlnbjogbm9ybWFsO1xuICBhbGlnbi1pdGVtczogbm9ybWFsO1xuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi52aWRlby1ibG9jayB7XG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XG59XG5cbi50ZXN0LWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5saW5rLWZvci10ZXN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi52b2x1bWUge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDtcbiAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDtcbiAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogMnB4O1xufVxuXG5tYXQtc2xpZGVyIHtcbiAgd2lkdGg6IDk4JTtcbn1cblxuLnNhdmUtc2V0dGluZ3Mge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgY29sb3I6ICMzMTMxMzE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDMwcHgpO1xuICBiYWNrZ3JvdW5kOiAjRkZFNDUwO1xuICBwYWRkaW5nOiAxN3B4IDEwMHB4O1xuICBtYXJnaW46IDI1cHggMTVweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc2F2ZS1zZXR0aW5nczpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbiAgY3Vyc29yOiBhdXRvO1xufVxuIl19 */\"","module.exports = \"
    \\n \\n\\n
    \\n
    {{'settings.video' | translate }}
    \\n
    0\\\">{{'settings.noCamera' | translate }}
    \\n
    {{'settings.cameraWarning' | translate }}
    \\n \\n \\n {{videoDevice.label}}\\n
    \\n {{'settings.cameraWarning' | translate }}
    \\n \\n \\n
    \\n
    \\n \\n
    \\n\\n
    \\n\\n \\n
    \\n
    {{'settings.sound' | translate }}
    \\n
    0\\\">{{'settings.noMicrophone' | translate }}
    \\n \\n \\n {{audioDevice.label}}\\n
    \\n {{'settings.microphoneWarning' | translate }}
    \\n
    \\n \\n
    0\\\" class=\\\"volume\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
    \\n
    \\n
    \\n\\n \\n
    {{'settings.deviceTest' | translate }}
    \\n https://test.webprax.de/\\n
    \\n \\n
    \\n\"","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { SettingsService } from '../../../services/settings.service';\nimport { UserService } from '../../../services/user.service';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { take } from 'rxjs/operators';\nimport { SettingsAbstractComponent } from '../abstracts/settings.abstract.component';\n\n@Component({\n selector: 'app-settings-mobile',\n templateUrl: './settings-mobile.component.html',\n styleUrls: ['./settings-mobile.component.css']\n})\nexport class SettingsMobileComponent\n extends SettingsAbstractComponent\n implements OnInit, OnDestroy {\n\n @Output() isSettingsDisplayed = new EventEmitter();\n\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n\n constructor(public userService: UserService,\n protected settingsService: SettingsService,\n protected popupService: PopupService,\n protected translate: TranslateService,\n protected deviceDetectorService: DeviceDetectorService) {\n super(userService, settingsService, popupService, translate, deviceDetectorService);\n }\n\n saveSettings() {\n this.isSettingsDisplayed.emit(false);\n }\n}\n","module.exports = \"app-settings-mobile {\\n position: relative;\\n top: 61px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsbUJBQW1CO0VBQ25CLFVBQVU7Q0FDWCIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbImFwcC1zZXR0aW5ncy1tb2JpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogNjFweDtcbn1cbiJdfQ== */\"","module.exports = \"\\n\\n\"","import { Component } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.css']\n})\nexport class SettingsComponent {\n isDesktop: boolean;\n\n constructor(protected deviceDetectorService: DeviceDetectorService) {\n this.isDesktop = this.deviceDetectorService.isDesktop();\n }\n}\n","module.exports = \"::ng-deep .save, ::ng-deep .delete, ::ng-deep .undo, ::ng-deep .redo, ::ng-deep .create {\\n position:relative;\\n display:inline-block;\\n padding: 5px 0;\\n}\\n\\n::ng-deep .save:after {\\n content: \\\"save\\\";\\n}\\n\\n::ng-deep .delete:after {\\n content: \\\"delete\\\";\\n}\\n\\n::ng-deep .undo:after {\\n content: \\\"undo\\\";\\n}\\n\\n::ng-deep .redo:after {\\n content: \\\"redo\\\";\\n}\\n\\n::ng-deep .create:after {\\n content: \\\"create\\\";\\n}\\n\\n#canvasWhiteboard {\\n height: 100%;\\n border-right: 1px solid #3C4E59;\\n overflow: auto;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9za2V0Y2gtYm9hcmQvc2tldGNoLWJvYXJkLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7O0FBRUQ7RUFDRSxnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsZ0NBQWdDO0VBQ2hDLGVBQWU7Q0FDaEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3NrZXRjaC1ib2FyZC9za2V0Y2gtYm9hcmQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIjo6bmctZGVlcCAuc2F2ZSwgOjpuZy1kZWVwIC5kZWxldGUsIDo6bmctZGVlcCAudW5kbywgOjpuZy1kZWVwIC5yZWRvLCA6Om5nLWRlZXAgLmNyZWF0ZSAge1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAwO1xufVxuXG46Om5nLWRlZXAgLnNhdmU6YWZ0ZXIge1xuICBjb250ZW50OiBcInNhdmVcIjtcbn1cblxuOjpuZy1kZWVwIC5kZWxldGU6YWZ0ZXIge1xuICBjb250ZW50OiBcImRlbGV0ZVwiO1xufVxuXG46Om5nLWRlZXAgLnVuZG86YWZ0ZXIge1xuICBjb250ZW50OiBcInVuZG9cIjtcbn1cblxuOjpuZy1kZWVwIC5yZWRvOmFmdGVyIHtcbiAgY29udGVudDogXCJyZWRvXCI7XG59XG5cbjo6bmctZGVlcCAuY3JlYXRlOmFmdGVyIHtcbiAgY29udGVudDogXCJjcmVhdGVcIjtcbn1cblxuI2NhbnZhc1doaXRlYm9hcmQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICMzQzRFNTk7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuIl19 */\"","module.exports = \"
    \\n
    \\n\"","import {\n AfterViewInit,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/internal/operators';\nimport { VideoStreamingService } from '../../services/video-streaming.service';\nimport { MultilanguageService } from '../../services/multilanguage.service';\nimport { UserService } from '../../services/user.service';\nimport { UnsubscribeAbstract } from '../abstracts/unsubscribe.abstract';\n\ndeclare const CanvasDesigner: any;\n\n@Component({\n selector: 'app-sketch-board',\n templateUrl: './sketch-board.component.html',\n styleUrls: ['./sketch-board.component.css']\n})\nexport class SketchBoardComponent\n extends UnsubscribeAbstract\n implements OnInit, OnDestroy, AfterViewInit {\n\n constructor(private streamingService: VideoStreamingService,\n private multiLanguageService: MultilanguageService,\n private userService: UserService) {\n super();\n }\n\n private canvasDesigner: any;\n private canvasResized = false;\n private canvasDesignerSyncData: any = {\n points: [],\n startIndex: 0\n };\n\n ngOnInit() {\n this.canvasDesigner = new CanvasDesigner();\n this.canvasDesigner.widgetHtmlURL = '../../../assets/canvas-designer/widget.html';\n this.canvasDesigner.widgetJsURL = '../../../assets/canvas-designer/widget.js';\n\n this.canvasDesigner.setTools({\n pencil: true,\n marker: false,\n eraser: true,\n text: true,\n image: false,\n line: true,\n arrow: true,\n dragSimple: true,\n dragMultiple: true,\n arc: true,\n rectangle: true,\n quadratic: true,\n bezier: false,\n undo: true,\n lineWidth: true,\n colorsPicker: true,\n extraOptions: false,\n code: false\n });\n }\n\n ngOnDestroy() {\n window.onmessage = null;\n super.ngOnDestroy();\n }\n\n private deduplicate(array: any[]): any[] { // Failsafe to prevent local storage from growing explosively in case if everything else fails\n const emptyOperation = ['', []]; // This is the marker fot \"undo\" operation\n const stringifiedObjects = array.map(item => JSON.stringify(item) === JSON.stringify(emptyOperation) ?\n item : JSON.stringify(item)); // objects like [\"\", []] should not be treated as identical\n console.log('stringifiedObjects ', stringifiedObjects.length);\n const objectsSet = new Set(stringifiedObjects);\n console.log('objectsSet size ', objectsSet.size);\n const uniqueStringifiedObjects = Array.from(objectsSet);\n console.log('uniqueStringifiedObjects ', uniqueStringifiedObjects.length);\n return uniqueStringifiedObjects.map(item => typeof item === 'string' ? JSON.parse(item) : item);\n }\n\n /** The goal of using local storage is to let participants revisit room shortly after completing the call.\n * in order to see chat history, sketch, etc.\n * Saving is done for each room separately.\n * Can also help in rare test cases, when two participants have internet connection problems almost simultaneously:\n * - their internet provider is having problems;\n * - they both have bad mobile internet, which often loses connection; */\n\n private updateLocalStorage() { // To update local storage for room without erasing canvas data in it\n this.canvasDesignerSyncData.points = this.deduplicate(this.canvasDesignerSyncData.points);\n const roomData: any = JSON.parse(localStorage.getItem(this.userService.roomId)) || {};\n roomData['canvasData'] = {\n 'canvasDesignerSyncData': this.canvasDesignerSyncData,\n 'isWholeData': true\n };\n\n localStorage.setItem(this.userService.roomId, JSON.stringify(roomData));\n }\n\n private updateCanvasData(points: any[], updateAll: boolean) {\n // Updating canvas data and saving it to local storage\n // Check for 'Undo' operations when exactly \"length - 1\" operations are updated\n console.log('updateCanvasData points.length ', points.length);\n if (updateAll) {\n this.canvasDesignerSyncData.points = points;\n } else {\n points.forEach((point) => {\n this.canvasDesignerSyncData.points.push(point);\n });\n }\n this.updateLocalStorage();\n }\n\n private canvasIsNotEmpty(canvasData: any) {\n return canvasData\n && canvasData.canvasDesignerSyncData\n && canvasData.canvasDesignerSyncData.points\n && canvasData.canvasDesignerSyncData.points.length > 0;\n }\n\n ngAfterViewInit() {\n this.canvasDesigner.appendTo(document.getElementById('canvasWhiteboard'));\n setTimeout(() => { // Timeout is necessary, because we are appending third party widget\n this.multiLanguageService.translateToolTips(this.multiLanguageService.getCurrentLanguageString());\n const roomData: any = JSON.parse(localStorage.getItem(this.userService.roomId));\n const canvasData: any = roomData ? roomData.canvasData : null;\n if (this.canvasIsNotEmpty(canvasData)) {\n canvasData.canvasDesignerSyncData.startIndex = 0;\n this.canvasDesigner.syncData(canvasData.canvasDesignerSyncData);\n this.canvasDesignerSyncData.points = canvasData.canvasDesignerSyncData.points;\n console.log('this.canvasDesignerSyncData.points: ', this.canvasDesignerSyncData.points.length);\n console.log('Loading canvas data from local storage.');\n }\n }, 1000);\n\n this.streamingService\n .getMessages()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(messageData => {\n if (messageData.sender !== 'me') {\n if (messageData.message.canvasDesignerSyncData) {\n // Below we check if we got the whole canvas data or just the drawing operation\n const messagePointsLength = messageData.message.canvasDesignerSyncData.points.length;\n const emptyOperation = ['', []];\n if (messageData.message.isWholeData &&\n messagePointsLength > this.canvasDesignerSyncData.points.length) {\n console.log('Partner has more recent canvas data. Syncing canvas data to partner\\'s canvas and updating local storage');\n this.canvasDesignerSyncData = messageData.message.canvasDesignerSyncData;\n this.updateLocalStorage();\n } else if (!messageData.message.isWholeData) {\n if (messageData.message.canvasDesignerSyncData.startIndex === 0 &&\n JSON.stringify(messageData.message.canvasDesignerSyncData.points[messagePointsLength - 1]) === JSON.stringify(emptyOperation)) {\n this.canvasDesignerSyncData = messageData.message.canvasDesignerSyncData;\n this.updateLocalStorage();\n } else {\n this.updateCanvasData(messageData.message.canvasDesignerSyncData.points, false);\n }\n this.canvasDesigner.syncData(messageData.message.canvasDesignerSyncData);\n }\n } else if (messageData.message.canvasWidth && messageData.message.canvasHeight) {\n try {\n // Yes, we have to set iFrame size to get scrolling work. Resizing drawing surface is not enough\n const canvasFrame: HTMLIFrameElement = document.getElementsByTagName('iframe')[0];\n canvasFrame.width = '' + Math.max(messageData.message.canvasWidth, screen.availWidth - 300);\n canvasFrame.height = '' + Math.max(messageData.message.canvasHeight, screen.availHeight - 160);\n console.log('canvasFrame.width and height ', canvasFrame.width, canvasFrame.height);\n canvasFrame.setAttribute('style', 'width: ' + canvasFrame.width + 'px; height: ' + canvasFrame.height + 'px; border: 0px;');\n\n // Yes, we have to set drawing surface size, because resizing iFrame doesn't change the size of canvas\n const mainCanvas: any = canvasFrame.contentWindow.document.getElementById('main-canvas');\n const tempCanvas: any = canvasFrame.contentWindow.document.getElementById('temp-canvas');\n mainCanvas.width = tempCanvas.width = canvasFrame.width;\n mainCanvas.height = tempCanvas.height = canvasFrame.height;\n if (!this.canvasResized) {\n console.log('Canvas is resized');\n this.streamingService.sendStuffP2P({\n canvasWidth: screen.availWidth - 300,\n canvasHeight: screen.availHeight - 160\n });\n this.canvasResized = true;\n }\n } catch (error) {\n this.canvasResized = false;\n console.log('Frame resize error: ', error);\n } finally {\n console.log('Updating canvas data after resize');\n this.canvasDesigner.syncData(this.canvasDesignerSyncData);\n }\n }\n }\n });\n\n this.streamingService.observePartnerId()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(id => {\n if (id && id !== '') {\n setTimeout(() => { // We get partner's id slightly earlier then we are able to send messages, that's why we need timeout\n console.log('Sending the canvas size P2P ', {\n canvasWidth: screen.availWidth - 300,\n canvasHeight: screen.availHeight - 160\n });\n this.streamingService.sendStuffP2P({\n canvasWidth: screen.availWidth - 300,\n canvasHeight: screen.availHeight - 160\n });\n const opponentConnected = !!id;\n const roomData: any = JSON.parse(localStorage.getItem(this.userService.roomId));\n const canvasData: any = roomData ? roomData.canvasData : null;\n if (opponentConnected && id !== 'me' && id !== '' && this.canvasIsNotEmpty(canvasData)) {\n console.log('Partner is connected. Sending canvas data to him for synchronization.');\n this.streamingService.sendStuffP2P({\n canvasDesignerSyncData: this.canvasDesignerSyncData,\n isWholeData: true\n });\n }\n }, 1500);\n }\n });\n\n window.onmessage = (event) => {\n if (event.data && event.data.canvasDesignerSyncData) {\n console.log('Sending canvas data about current drawing operation.');\n this.streamingService.sendStuffP2P(event.data);\n const messagePointsLength = event.data.canvasDesignerSyncData.points.length;\n const emptyOperation = ['', []];\n if (event.data.canvasDesignerSyncData.startIndex === 0 &&\n JSON.stringify(event.data.canvasDesignerSyncData.points[messagePointsLength - 1]) === JSON.stringify(emptyOperation)) {\n // Because we are passing \"updateAll\" as true, we have to push \"undo\" operation before updating current\n // array of points stored locally\n event.data.canvasDesignerSyncData.points.push(emptyOperation);\n this.updateCanvasData(event.data.canvasDesignerSyncData.points, true);\n } else {\n this.updateCanvasData(event.data.canvasDesignerSyncData.points, false);\n }\n }\n };\n }\n}\n\n","module.exports = \".thanks-page p {\\n text-align: center;\\n font-family: 'Overpass', sans-serif;\\n color: #3C4E59;\\n font-size: 45px;\\n margin-top: 100px;\\n}\\n\\n.thanks-page a {\\n background: #FFE450 0% 0% no-repeat padding-box;\\n border-radius: 5px;\\n box-sizing: border-box;\\n display: block;\\n padding: 10px;\\n width: 300px;\\n margin: auto;\\n color: #3C4E59;\\n text-align: center;\\n font-family: 'Overpass', sans-serif;\\n font-weight: bold;\\n font-size: 25px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy90aGFua3MtcGFnZS90aGFua3MtcGFnZS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsbUJBQW1CO0VBQ25CLG9DQUFvQztFQUNwQyxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtDQUNuQjs7QUFFRDtFQUNFLGdEQUFnRDtFQUNoRCxtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLGVBQWU7RUFDZixjQUFjO0VBQ2QsYUFBYTtFQUNiLGFBQWE7RUFDYixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLG9DQUFvQztFQUNwQyxrQkFBa0I7RUFDbEIsZ0JBQWdCO0NBQ2pCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy90aGFua3MtcGFnZS90aGFua3MtcGFnZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRoYW5rcy1wYWdlIHAge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogIzNDNEU1OTtcbiAgZm9udC1zaXplOiA0NXB4O1xuICBtYXJnaW4tdG9wOiAxMDBweDtcbn1cblxuLnRoYW5rcy1wYWdlIGEge1xuICBiYWNrZ3JvdW5kOiAjRkZFNDUwIDAlIDAlIG5vLXJlcGVhdCBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMTBweDtcbiAgd2lkdGg6IDMwMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIGNvbG9yOiAjM0M0RTU5O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAyNXB4O1xufVxuIl19 */\"","module.exports = \"
    \\n

    \\n {{'thanksPage.thanks' | translate}}\\n

    \\n {{'thanksPage.toWebsite' | translate}}\\n
    \\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-thanks-page',\n templateUrl: './thanks-page.component.html',\n styleUrls: ['./thanks-page.component.css']\n})\nexport class ThanksPageComponent implements OnInit {\n\n public colorSecondary;\n\n constructor() { }\n\n ngOnInit() {\n this.colorSecondary=sessionStorage.colorSecondary;\n sessionStorage.removeItem('wasInTheCall');\n sessionStorage.clear();\n\n }\n}\n","import { ViewChild, OnDestroy, AfterViewInit, ChangeDetectorRef, NgZone, ElementRef} from '@angular/core';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { takeUntil } from 'rxjs/internal/operators';\nimport { SettingsService } from '../../../services/settings.service';\nimport { UserService } from '../../../services/user.service';\nimport { Role, User } from '../../../models/user';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Router } from '@angular/router';\nimport * as moment from 'moment';\nimport { UnsubscribeAbstract } from '../../abstracts/unsubscribe.abstract';\nimport { interval, Subject } from 'rxjs';\n\nconst avatarDefault = '../../../assets/icons/user.png';\n\nexport abstract class VideochatAbstract\n extends UnsubscribeAbstract\n implements OnDestroy, AfterViewInit {\n\n @ViewChild('videoSelf', { static: false }) videoSelf: ElementRef;\n @ViewChild('videoCaller', { static: false }) videoCaller: ElementRef;\n\n myId: string;\n connectedClientsList: Array = [];\n volumeVisible = false;\n volume = 100;\n screenSharingEnabled = false;\n videoMuteEnabled = false;\n actionBarEnabled=false;\n selfAvatar: string;\n callerAvatar: string;\n isConnected: boolean;\n isDoctor = false;\n role: Role;\n sketchIsActive: boolean;\n showCorrespondent = true;\n showAvatar = false;\n showSelf = true;\n isInvitationNeeded = false;\n isInvitationInProgress = false;\n isCallerMirrored = false;\n\n untilFinishedJoinTime = new Subject();\n\n isDesktop: boolean;\n audioEnter: HTMLAudioElement = new Audio('/assets/sounds/enterRoom.mp3');\n audioClose: HTMLAudioElement = new Audio('/assets/sounds/closeCall.mp3');\n protected constructor(private cdr: ChangeDetectorRef,\n public streamingService: VideoStreamingService,\n private settingsService: SettingsService,\n public userService: UserService,\n private popupService: PopupService,\n private translate: TranslateService,\n private deviceDetectorService: DeviceDetectorService,\n private router: Router,\n private ngZone: NgZone) {\n super();\n this.isDesktop = this.deviceDetectorService.isDesktop();\n\n\n this.userService.getUserSocket();\n\n this.streamingService\n .getMyId()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(id => {\n this.myId = id;\n this.cdr.detectChanges();\n });\n\n this.streamingService\n .getConnectedClientsList()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(client => {\n if (client) {\n this.connectedClientsList.push(client);\n } else {\n this.connectedClientsList = [];\n }\n\n this.connectedClientsList.forEach((clientId) => {\n if (this.isDoctor) {\n this.streamingService.performCall(clientId);\n }\n });\n this.cdr.detectChanges();\n });\n\n this.streamingService\n .observePartnerId()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(id => {\n // disable screen sharing on plugging off the patient\n\n if (!id && this.isDoctor && this.screenSharingEnabled) {\n console.log('disable screen sharing on plugging off the patient');\n this.streamingService.stopScreenShare();\n }\n\n this.isConnected = !!id;\n this.cdr.detectChanges();\n });\n\n this.settingsService\n .observeSettings()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(settings => {\n console.log(settings);\n this.volume = settings.videoVolume;\n this.streamingService.audioMuteEnabled = settings.audioMuteEnabled;\n this.streamingService.toggleAudio(!settings.audioMuteEnabled);\n this.videoMuteEnabled = settings.videoMuteEnabled;\n this.streamingService.videoMuteEnabled = settings.videoMuteEnabled;\n this.streamingService.toggleVideo(!settings.videoMuteEnabled);\n });\n\n this.streamingService\n .getScreenSharingStatus()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(status => {\n this.screenSharingEnabled = status;\n this.cdr.detectChanges();\n });\n\n this.streamingService\n .observeSketchState()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(state => this.sketchIsActive = state);\n\n this.streamingService\n .getMessages()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(messageData => {\n // The check is to ensure we can not send absolutely empty message, but still can send image\n // And to make sure we don't mistake messages from the sketch canvas for messages from the chat\n // update messages, if partner's list of messages is not empty\n\n if (messageData.sender !== 'me' && messageData.message.hasOwnProperty('camera')) {\n this.ngZone.run(() => {\n this.showAvatar = !messageData.message.camera;\n console.log('showAvatar ', this.showAvatar,\n 'isConnected ', this.isConnected, 'showCorrespondent ', this.showCorrespondent, 'sketchIsActive ', this.sketchIsActive,\n 'isConnected || (!this.showCorrespondent && !this.showAvatar) ', (this.isConnected || !this.showCorrespondent) && !this.showAvatar);\n });\n }\n });\n\n this.userService\n .callStatus$\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((value) => {\n if (value === true) {\n console.log('Enter room: ', value);\n\n this.audioEnter\n .play()\n .catch((error) => {\n console.log('audioEnter error ', error);\n\n // Try again one more time. It sometimes fails in Chrome despite autoplay being set previously\n // And in those cases delayed retry helps\n \n setTimeout(() => {\n\n this.audioEnter\n .play()\n .then(() => {\n console.log('audioEnter retry success ');\n })\n .catch((retryError) => {\n console.log('audioEnter retry error ', retryError);\n\n /** If we refreshed the page and have not made any user interactions yet, we are going to need the workaround below\n * to play notifications audio (e. g. like when someone entered the room) on iOS devices or in Safari on macOS\n * That is because Apple has a policy not to autoplay any audio unless user interacted with the app first\n * (like when pressing 'play')\n * Programmatically invoking 'click()' on HTML elements does not work and this gives a lot of headache around the\n * internet. The good news is, that we are going to need this only on Apple devices, only if the user refreshed\n * the page inside the call, and there is a message to notify user that his action actually fixes notification problems.\n */\n\n window.onclick = () => {\n this.playSound();\n window.onclick = null;\n };\n \n this.translate\n .get('popups.allowSounds')\n .subscribe(translation => {\n\n this.ngZone.run(() => {\n this.popupService\n .openErrorDialog(translation)\n .then(() => {\n this.audioEnter.play(); // This will give permission error if we don't play the sound initiated by user click before\n });\n }\n );\n\n });\n \n });\n }, 500);\n });\n } else {\n console.log('Close call: ', value);\n this.audioClose.play();\n }\n });\n }\n\n playSound() {\n // Workaround for iOS browsers, which won't play any audio until one is played on user's gesture\n\n const audioWorkaround: HTMLAudioElement = new Audio('/assets/sounds/enterRoom.mp3');\n\n audioWorkaround.volume = 0; // Because it's a workaround\n audioWorkaround.play()\n .then(() => {\n console.log('audioWorkaround played successfully');\n })\n .catch((error) => {\n console.log('audioWorkaround play error', error);\n });\n }\n\n toggleCorrespondent() {\n this.showCorrespondent = !this.showCorrespondent;\n }\n\n toggleSelf() {\n this.showSelf = !this.showSelf;\n }\n\n videoIsHidden(): boolean {\n if (this.settingsService.videoSelect) {\n return !(this.myId || this.settingsService.videoSelect.deviceId) || this.videoMuteEnabled;\n } else {\n return !this.myId || this.videoMuteEnabled;\n }\n }\n\n inviteToTheRoom() {\n this.userService.inviteToTheRoom('doctor');\n this.isInvitationInProgress = true;\n\n setTimeout(() => {\n this.isInvitationInProgress = false;\n }, 3000);\n }\n\n ngAfterViewInit() {\n\n this.userService.setPage('videoChat');\n sessionStorage.wasInTheCall = true;\n\n if (this.streamingService.leftChat) {\n this.streamingService.leftChat = false;\n window.location.reload();\n }\n\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(user => {\n const currentDate: number = moment(user.now as any).valueOf();\n const meetingDate: number = moment(user.start as any).valueOf();\n const delayTime = parseInt((user.joinTime as any), 10);\n const diffTime: number = meetingDate - currentDate; // For doctor's invitation button\n\n this.isInvitationNeeded = diffTime > 0 && (diffTime + delayTime) > 0;\n this.selfAvatar = user.avatar || avatarDefault;\n this.callerAvatar = user.callerAvatar || avatarDefault;\n this.isDoctor = user.role === 'doctor';\n this.role = user.role;\n\n if (this.isInvitationNeeded && !this.isDoctor) { // For patient\n this.router\n .navigate([this.userService.getRoomId(), this.userService.getToken()])\n .then(() => location.reload());\n }\n\n this.initializeTimer(user);\n this.cdr.detectChanges();\n });\n\n this.streamingService.videoSelf = this.videoSelf;\n this.streamingService.videoCaller = this.videoCaller;\n\n if (this.settingsService.isDeviceChanged || sessionStorage.camera) {\n this.streamingService.changeCamera(this.videoSelf);\n }\n }\n\n updateVolume = () => {\n this.videoCaller.nativeElement.volume = this.volume / 100;\n\n this.settingsService\n .updateSettings({\n ...this.settingsService.getSettings(),\n videoVolume: this.volume\n });\n }\n\n\n updateAudioMuteEnabled = async () => {\n const permissions = await this.streamingService.checkPermissions();\n\n if (permissions) {\n const success = this.streamingService.toggleAudio(this.streamingService.audioMuteEnabled);\n\n if (success) {\n this.settingsService\n .updateSettings({\n ...this.settingsService.getSettings(),\n audioMuteEnabled: !this.streamingService.audioMuteEnabled\n });\n }\n }\n }\n\n updateVideoMuteEnabled = async () => {\n const permissions = await this.streamingService.checkPermissions();\n if (permissions) {\n const success = this.streamingService.toggleVideo(this.videoMuteEnabled);\n\n if (success) {\n this.settingsService\n .updateSettings({\n ...this.settingsService.getSettings(),\n videoMuteEnabled: !this.videoMuteEnabled\n });\n }\n }\n this.streamingService.sendStuffP2P({ camera: !this.videoIsHidden() });\n }\n\n updateScreenShareEnabled = async () => {\n const isSafari = this.streamingService.isSafari();\n\n /**\n * Skip permissions check on Safari Desktop as it causes error\n * InvalidAccessError: getDisplayMedia must be called from a user gesture handler.\"\n * There could be issue for Safari if user denies camera access on first site visit.\n */\n\n const permissions = isSafari || await this.streamingService.checkPermissions();\n\n if (permissions) {\n if (!this.screenSharingEnabled) {\n this.streamingService.screenShare();\n } else {\n this.streamingService.stopScreenShare();\n }\n }\n }\n\n\n finishCall = () => {\n this.popupService.openDialog(\n this.translate.instant('popups.notification'),\n this.translate.instant('popups.finishCall'),\n this.translate.instant('popups.yes'),\n this.translate.instant('popups.no')\n ).subscribe(\n (result) => {\n if (result) {\n this.streamingService.disconnect();\n this.userService.logOut(this.role);\n this.userService.setPage('thanks');\n // sessionStorage.clear();\n this.router.navigate(['/thanks']);\n }\n });\n }\n\n showVolume = () => {\n this.volumeVisible = true;\n }\n\n hideVolume = () => {\n this.volumeVisible = false;\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.untilFinishedJoinTime.complete();\n this.userService.logOut(this.role);\n this.streamingService.leftChat = true;\n }\n\n private initializeTimer(user: User) {\n\n if (user.role !== 'doctor') {\n return;\n }\n\n this.untilFinishedJoinTime.next();\n // We use 'moment' instead of Date.parse, because Date.parse returns 'NaN' in Safari\n const currentDate = moment(user.now).valueOf();\n const meetingDate = moment(user.start).valueOf();\n\n\n\n const diffTime = meetingDate - currentDate;\n\n interval(1000)\n .pipe(\n takeUntil(this.unsubscribe$),\n takeUntil(this.untilFinishedJoinTime)\n )\n .subscribe(times => {\n times *= 1000;\n\n if (diffTime - times <= 0) {\n this.isInvitationNeeded = false;\n this.untilFinishedJoinTime.next();\n this.cdr.detectChanges();\n }\n });\n }\n}\n","module.exports = \"
    \\n
    \\n \\n
    \\n
    \\n
    \\n

    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n

    \\n
    \\n \\n
    \\n
    \\n
    \\n\\n
    \\n

    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n \\n
    \\n
    \\n\"","module.exports = \"body {\\n --gray-design: #3C4E59;\\n margin-top: 20px; }\\n\\n.video-frames {\\n position: relative;\\n height: 100%;\\n background-color: gray;\\n flex-grow: 1;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n\\n.video-caller {\\n position: relative; }\\n\\n.video-caller:after {\\n content: \\\" \\\";\\n display: block;\\n background: linear-gradient(360deg, #020024 0%, black 0%, rgba(255, 255, 255, 0) 60%);\\n height: 20%;\\n width: 100%;\\n position: absolute;\\n bottom: 0;\\n left: 0; }\\n\\n.video-caller.full {\\n z-index: 1;\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n margin: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background-image: url('user.png');\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 200px 200px; }\\n\\n.video-caller.small {\\n max-height: 200px;\\n max-width: 200px;\\n border-radius: 25px;\\n width: auto;\\n position: absolute;\\n top: 10px;\\n left: 10px;\\n overflow: hidden;\\n min-width: 50px;\\n min-height: 50px;\\n z-index: 3;\\n border: none;\\n background-color: #3C4E59;\\n margin-left: 50px; }\\n\\n.video-caller.small:after {\\n background: transparent;\\n bottom: 0;\\n left: 0; }\\n\\n.video-caller img {\\n height: 100%;\\n width: 100%; }\\n\\n.toggle-cam {\\n position: absolute; }\\n\\n.lower-toggle {\\n bottom: 0;\\n right: 0; }\\n\\n.user-pic-overlay {\\n position: relative;\\n width: 200px;\\n height: 200px;\\n overflow: hidden;\\n border-radius: 50%;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: cover; }\\n\\n.video-self {\\n position: absolute;\\n background-color: #3C4E59; }\\n\\n.video-self.full {\\n z-index: 2;\\n bottom: 28px;\\n right: 40px;\\n overflow: hidden;\\n max-width: 252px;\\n height: auto;\\n border-radius: 5px;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n\\n.video-self.small {\\n bottom: 20px;\\n right: 20px;\\n max-height: 200px;\\n max-width: 200px;\\n min-width: 50px;\\n min-height: 50px;\\n z-index: 3;\\n overflow: hidden;\\n border-radius: 25px; }\\n\\n.video-hidden {\\n border: none;\\n background-color: transparent; }\\n\\n.start {\\n border: 2px solid white;\\n color: white;\\n cursor: pointer;\\n background: transparent;\\n border-radius: 40px;\\n padding: 10px 0 3px;\\n font-size: 18px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n position: relative;\\n bottom: 5px;\\n width: 60px;\\n height: 60px;\\n margin-left: 5px;\\n z-index: 3; }\\n\\n.start:disabled {\\n opacity: 0.5; }\\n\\np {\\n margin: 0; }\\n\\n#volume-control {\\n position: absolute;\\n display: flex;\\n align-items: center;\\n left: 40px;\\n bottom: 40px;\\n z-index: 2;\\n width: -moz-fit-content;\\n width: fit-content;\\n padding-left: 10px;\\n padding-right: 10px; }\\n\\n.center-controls {\\n position: absolute;\\n max-width: 450px;\\n min-width: 200px;\\n width: 40%;\\n background-color: transparent;\\n display: flex;\\n justify-content: space-around;\\n bottom: 40px; }\\n\\n.center-controls > * {\\n cursor: pointer; }\\n\\n.control {\\n width: 50px;\\n height: 50px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n color: #FFFFFF;\\n background: transparent;\\n z-index: 2;\\n border-radius: 25px;\\n border: 1px solid transparent;\\n padding: 5px; }\\n\\n.control p {\\n position: relative; }\\n\\n.control #toggle-action-bar-icon {\\n background-image: url('svgactionbar.png'); }\\n\\n.control #phone-icon {\\n background-image: url('streamline-icon-phone@24x24.svg'); }\\n\\n.control #desktop-icon {\\n background-image: url('streamline-icon-share-1@24x24.svg'); }\\n\\n.control #video-icon {\\n background-image: url('streamline-icon-controls-camera-off@24x24.svg'); }\\n\\n.control #video-mirrored-icon {\\n background-image: url('steamline-icon-mirror@24x24.svg'); }\\n\\n.control #micro-icon {\\n background-image: url('streamline-icon-microphone-off@24x24.svg'); }\\n\\n.control #micro-icon {\\n background-image: url('streamline-icon-microphone-off@24x24.svg'); }\\n\\n.control.enable-option {\\n background-color: #3EC3C3; }\\n\\n.control.enable-option #video-icon {\\n background-image: url('video.svg'); }\\n\\n.control.enable-option #micro-icon {\\n background-image: url('micro.svg'); }\\n\\n.white-border {\\n border-color: #FFFFFF; }\\n\\n.icon {\\n background: transparent center no-repeat;\\n width: 28px;\\n height: 28px;\\n background-size: contain; }\\n\\n#videoCaller {\\n width: auto;\\n height: 100%; }\\n\\n#videoCaller.small {\\n max-height: 200px;\\n max-width: 200px;\\n width: 100%;\\n height: auto; }\\n\\n#phone-button {\\n background-color: #ff0000;\\n border-color: #ff0000; }\\n\\n.hide-icon {\\n background-image: url('streamline-icon-app-window-minimize@24x24.svg'); }\\n\\n#volume-icon {\\n background-image: url('streamline-icon-volume-control-medium@24x24.svg');\\n margin-right: 10px;\\n min-width: 28px; }\\n\\n.hide {\\n display: none !important; }\\n\\n.hideSketch {\\n opacity: 0;\\n height: 0; }\\n\\n.showSketch {\\n opacity: 1;\\n height: 100%; }\\n\\n.mirrored {\\n transform: scaleX(-1); }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2NvbXBvbmVudHMvdmlkZW9jaGF0L2Rlc2t0b3AvdmlkZW9jaGF0LWRlc2t0b3AuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSx1QkFBYztFQUNkLGlCQUFnQixFQUNqQjs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixhQUFZO0VBQ1osdUJBQXNCO0VBRXRCLGFBQVk7RUFHWixjQUFhO0VBR2Isd0JBQXVCO0VBR3ZCLG9CQUFtQixFQUNwQjs7QUFFRDtFQUNFLG1CQUFrQixFQThEbkI7O0FBL0REO0lBSUksYUFBWTtJQUNaLGVBQWM7SUFHZCxzRkFBaUc7SUFDakcsWUFBVztJQUNYLFlBQVc7SUFDWCxtQkFBa0I7SUFDbEIsVUFBUztJQUNULFFBQU8sRUFDUjs7QUFkSDtJQWlCSSxXQUFVO0lBQ1YsbUJBQWtCO0lBQ2xCLGFBQVk7SUFDWixZQUFXO0lBQ1gsYUFBWTtJQUdaLGNBQWE7SUFHYixvQkFBbUI7SUFDbkIsd0JBQXVCO0lBRXZCLGtDQUEwRDtJQUMxRCw2QkFBNEI7SUFDNUIsNEJBQTJCO0lBQzNCLDZCQUE0QixFQUM3Qjs7QUFsQ0g7SUFxQ0ksa0JBQWlCO0lBQ2pCLGlCQUFnQjtJQUNoQixvQkFBbUI7SUFDbkIsWUFBVztJQUNYLG1CQUFrQjtJQUNsQixVQUFTO0lBQ1QsV0FBVTtJQUNWLGlCQUFnQjtJQUNoQixnQkFBZTtJQUNmLGlCQUFnQjtJQUNoQixXQUFVO0lBQ1YsYUFBWTtJQUNaLDBCQUF5QjtJQUN6QixrQkFBaUIsRUFPbEI7O0FBekRIO01BcURNLHdCQUF1QjtNQUN2QixVQUFTO01BQ1QsUUFBTyxFQUNSOztBQXhETDtJQTRESSxhQUFZO0lBQ1osWUFBVyxFQUNaOztBQUdIO0VBQ0UsbUJBQWtCLEVBQ25COztBQUVEO0VBQ0UsVUFBUztFQUNULFNBQVEsRUFDVDs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixhQUFZO0VBQ1osY0FBYTtFQUNiLGlCQUFnQjtFQUNoQixtQkFBa0I7RUFDbEIsNkJBQTRCO0VBQzVCLDRCQUEyQjtFQUMzQix1QkFBc0IsRUFDdkI7O0FBRUQ7RUFDRSxtQkFBa0I7RUFDbEIsMEJBQXlCLEVBaUMxQjs7QUFuQ0Q7SUFLSSxXQUFVO0lBRVYsYUFBWTtJQUNaLFlBQVc7SUFDWCxpQkFBZ0I7SUFDaEIsaUJBQWdCO0lBQ2hCLGFBQVk7SUFDWixtQkFBa0I7SUFHbEIsY0FBYTtJQUdiLG9CQUFtQjtJQUduQix3QkFBdUIsRUFDeEI7O0FBdEJIO0lBeUJJLGFBQVk7SUFDWixZQUFXO0lBQ1gsa0JBQWlCO0lBQ2pCLGlCQUFnQjtJQUNoQixnQkFBZTtJQUNmLGlCQUFnQjtJQUNoQixXQUFVO0lBQ1YsaUJBQWdCO0lBQ2hCLG9CQUFtQixFQUNwQjs7QUFHSDtFQUNFLGFBQVk7RUFDWiw4QkFBNkIsRUFDOUI7O0FBRUQ7RUFDRSx3QkFBdUI7RUFDdkIsYUFBWTtFQUNaLGdCQUFlO0VBQ2Ysd0JBQXVCO0VBQ3ZCLG9CQUFtQjtFQUNuQixvQkFBbUI7RUFDbkIsZ0JBQWU7RUFDZixvQ0FBbUM7RUFDbkMsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixtQkFBa0I7RUFDbEIsWUFBVztFQUNYLFlBQVc7RUFDWCxhQUFZO0VBQ1osaUJBQWdCO0VBQ2hCLFdBQVUsRUFLWDs7QUFyQkQ7SUFtQkksYUFBWSxFQUNiOztBQUdIO0VBQ0UsVUFBUyxFQUNWOztBQUVEO0VBQ0UsbUJBQWtCO0VBR2xCLGNBQWE7RUFHYixvQkFBbUI7RUFDbkIsV0FBVTtFQUNWLGFBQVk7RUFDWixXQUFVO0VBRVYsd0JBQXVCO0VBQ3ZCLG1CQUFrQjtFQUNsQixtQkFBa0I7RUFDbEIsb0JBQW1CLEVBQ3BCOztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLGlCQUFnQjtFQUNoQixpQkFBZ0I7RUFDaEIsV0FBVTtFQUNWLDhCQUE2QjtFQUc3QixjQUFhO0VBQ2IsOEJBQTZCO0VBQzdCLGFBQVksRUFLYjs7QUFmRDtJQWFJLGdCQUFlLEVBQ2hCOztBQUdIO0VBQ0UsWUFBVztFQUNYLGFBQVk7RUFHWixjQUFhO0VBR2Isd0JBQXVCO0VBR3ZCLG9CQUFtQjtFQUNuQixlQUFjO0VBQ2Qsd0JBQXVCO0VBQ3ZCLFdBQVU7RUFDVixvQkFBbUI7RUFDbkIsOEJBQTZCO0VBQzdCLGFBQVksRUE2Q2I7O0FBOUREO0lBb0JJLG1CQUFrQixFQUNuQjs7QUFyQkg7SUF1QkksMENBQWtFLEVBQ25FOztBQXhCSDtJQTJCSSx5REFBaUYsRUFDbEY7O0FBNUJIO0lBK0JJLDJEQUFtRixFQUNwRjs7QUFoQ0g7SUFtQ0ksdUVBQStGLEVBQ2hHOztBQXBDSDtJQXVDSSx5REFBaUYsRUFDbEY7O0FBeENIO0lBMkNJLGtFQUEwRixFQUMzRjs7QUE1Q0g7SUFnREksa0VBQTBGLEVBQzNGOztBQWpESDtJQW9ESSwwQkFBeUIsRUFTMUI7O0FBN0RIO01BdURNLG1DQUEyRCxFQUM1RDs7QUF4REw7TUEyRE0sbUNBQTJELEVBQzVEOztBQUlMO0VBQ0Usc0JBQXFCLEVBQ3RCOztBQUVEO0VBQ0UseUNBQXdDO0VBQ3hDLFlBQVc7RUFDWCxhQUFZO0VBQ1oseUJBQXdCLEVBQ3pCOztBQUVEO0VBQ0UsWUFBVztFQUNYLGFBQVksRUFRYjs7QUFWRDtJQUtJLGtCQUFpQjtJQUNqQixpQkFBZ0I7SUFDaEIsWUFBVztJQUNYLGFBQVksRUFDYjs7QUFHSDtFQUNFLDBCQUF5QjtFQUN6QixzQkFBcUIsRUFDdEI7O0FBRUQ7RUFDRSx1RUFBK0YsRUFDaEc7O0FBRUQ7RUFDRSx5RUFBaUc7RUFDakcsbUJBQWtCO0VBQ2xCLGdCQUFlLEVBQ2hCOztBQUVEO0VBQ0UseUJBQXdCLEVBQ3pCOztBQUVEO0VBQ0UsV0FBVTtFQUNWLFVBQVMsRUFDVjs7QUFFRDtFQUNFLFdBQVU7RUFDVixhQUFZLEVBQ2I7O0FBRUQ7RUFDRSxzQkFBcUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3ZpZGVvY2hhdC9kZXNrdG9wL3ZpZGVvY2hhdC1kZXNrdG9wLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYm9keSB7XG4gIC0tZ3JheS1kZXNpZ246ICMzQzRFNTk7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG59XG5cbi52aWRlby1mcmFtZXMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgZmxleC1ncm93OiAxO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnZpZGVvLWNhbGxlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCBib3R0b20sIGxlZnQgdG9wLCBmcm9tKHJnYmEoMiwwLDM2LDEpKSwgY29sb3Itc3RvcCgwJSwgcmdiYSgwLDAsMCwxKSksIGNvbG9yLXN0b3AoNjAlLCByZ2JhKDI1NSwyNTUsMjU1LDApKSk7XG4gICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgcmdiYSgyLDAsMzYsMSkgMCUsIHJnYmEoMCwwLDAsMSkgMCUsIHJnYmEoMjU1LDI1NSwyNTUsMCkgNjAlKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMzYwZGVnLCByZ2JhKDIsMCwzNiwxKSAwJSwgcmdiYSgwLDAsMCwxKSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwKSA2MCUpO1xuICAgIGhlaWdodDogMjAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgfVxuXG4gICYuZnVsbCB7XG4gICAgei1pbmRleDogMTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3VzZXIucG5nXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjAwcHggMjAwcHg7XG4gIH1cblxuICAmLnNtYWxsIHtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgICBsZWZ0OiAxMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWluLXdpZHRoOiA1MHB4O1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgei1pbmRleDogMztcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNDNEU1OTtcbiAgICBtYXJnaW4tbGVmdDogNTBweDtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi50b2dnbGUtY2FtIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ubG93ZXItdG9nZ2xlIHtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbn1cblxuLnVzZXItcGljLW92ZXJsYXkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbi52aWRlby1zZWxmIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM0M0RTU5O1xuXG4gICYuZnVsbCB7XG4gICAgei1pbmRleDogMjtcblxuICAgIGJvdHRvbTogMjhweDtcbiAgICByaWdodDogNDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1heC13aWR0aDogMjUycHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmLnNtYWxsIHtcbiAgICBib3R0b206IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBtaW4td2lkdGg6IDUwcHg7XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICB6LWluZGV4OiAzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgfVxufVxuXG4udmlkZW8taGlkZGVuIHtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnN0YXJ0IHtcbiAgYm9yZGVyOiAycHggc29saWQgd2hpdGU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgcGFkZGluZzogMTBweCAwIDNweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3R0b206IDVweDtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgei1pbmRleDogMztcblxuICAmOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbn1cblxucCB7XG4gIG1hcmdpbjogMDtcbn1cblxuI3ZvbHVtZS1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGxlZnQ6IDQwcHg7XG4gIGJvdHRvbTogNDBweDtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7XG4gIHdpZHRoOiAtbW96LWZpdC1jb250ZW50O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbn1cblxuLmNlbnRlci1jb250cm9scyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWF4LXdpZHRoOiA0NTBweDtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgd2lkdGg6IDQwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGJvdHRvbTogNDBweDtcblxuICA+ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4uY29udHJvbCB7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogI0ZGRkZGRjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHotaW5kZXg6IDI7XG4gIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiA1cHg7XG5cbiAgcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gICN0b2dnbGUtYWN0aW9uLWJhci1pY29ue1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdmdhY3Rpb25iYXIucG5nXCIpO1xuICB9XG5cbiAgI3Bob25lLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdHJlYW1saW5lLWljb24tcGhvbmVAMjR4MjQuc3ZnXCIpO1xuICB9XG5cbiAgI2Rlc2t0b3AtaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0cmVhbWxpbmUtaWNvbi1zaGFyZS0xQDI0eDI0LnN2Z1wiKTtcbiAgfVxuXG4gICN2aWRlby1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc3RyZWFtbGluZS1pY29uLWNvbnRyb2xzLWNhbWVyYS1vZmZAMjR4MjQuc3ZnXCIpO1xuICB9XG5cbiAgI3ZpZGVvLW1pcnJvcmVkLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdGVhbWxpbmUtaWNvbi1taXJyb3JAMjR4MjQuc3ZnXCIpO1xuICB9XG5cbiAgI21pY3JvLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdHJlYW1saW5lLWljb24tbWljcm9waG9uZS1vZmZAMjR4MjQuc3ZnXCIpO1xuICB9XG5cblxuICAjbWljcm8taWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0cmVhbWxpbmUtaWNvbi1taWNyb3Bob25lLW9mZkAyNHgyNC5zdmdcIik7XG4gIH1cblxuICAmLmVuYWJsZS1vcHRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzRUMzQzM7XG5cbiAgICAjdmlkZW8taWNvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvdmlkZW8uc3ZnXCIpO1xuICAgIH1cblxuICAgICNtaWNyby1pY29uIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9taWNyby5zdmdcIik7XG4gICAgfVxuICB9XG59XG5cbi53aGl0ZS1ib3JkZXIge1xuICBib3JkZXItY29sb3I6ICNGRkZGRkY7XG59XG5cbi5pY29uIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgY2VudGVyIG5vLXJlcGVhdDtcbiAgd2lkdGg6IDI4cHg7XG4gIGhlaWdodDogMjhweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xufVxuXG4jdmlkZW9DYWxsZXIge1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gICYuc21hbGwge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbiNwaG9uZS1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwO1xuICBib3JkZXItY29sb3I6ICNmZjAwMDA7XG59XG5cbi5oaWRlLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc3RyZWFtbGluZS1pY29uLWFwcC13aW5kb3ctbWluaW1pemVAMjR4MjQuc3ZnXCIpO1xufVxuXG4jdm9sdW1lLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc3RyZWFtbGluZS1pY29uLXZvbHVtZS1jb250cm9sLW1lZGl1bUAyNHgyNC5zdmdcIik7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgbWluLXdpZHRoOiAyOHB4O1xufVxuXG4uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmhpZGVTa2V0Y2gge1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDA7XG59XG5cbi5zaG93U2tldGNoIHtcbiAgb3BhY2l0eTogMTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubWlycm9yZWQge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4iXX0= */\"","import { Component, OnDestroy, AfterViewInit, ChangeDetectorRef, NgZone, Output,EventEmitter } from '@angular/core';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { SettingsService } from '../../../services/settings.service';\nimport { UserService } from '../../../services/user.service';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Router } from '@angular/router';\nimport { VideochatAbstract } from '../abstracts/videochat.abstract.component';\n\n@Component({\n selector: 'app-videochat-desktop',\n templateUrl: './videochat-desktop.component.html',\n styleUrls: ['./videochat-desktop.component.scss']\n})\nexport class VideochatDesktopComponent\n extends VideochatAbstract\n implements OnDestroy, AfterViewInit {\n actionBarVisible=true;\n\n @Output() toggleActionBar = new EventEmitter();\n\n constructor(cdr: ChangeDetectorRef,\n streamingService: VideoStreamingService,\n settingsService: SettingsService,\n userService: UserService,\n popupService: PopupService,\n translate: TranslateService,\n deviceDetectorService: DeviceDetectorService,\n router: Router,\n ngZone: NgZone) {\n super(cdr, streamingService, settingsService, userService, popupService, translate, deviceDetectorService, router, ngZone);\n }\n\n toggleActionBarVisibility(){\nthis.actionBarVisible=!this.actionBarVisible;\n this.toggleActionBar.emit();\n }\n}\n","module.exports = \"
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n

    +

    \\n
    \\n\\n
    \\n \\n
    \\n

    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n

    \\n
    \\n
    \\n\\n \\n \\n \\n \\n \\n \\n
    \\n \\n
    \\n
    \\n\"","module.exports = \"body {\\n --gray-design: #3C4E59; }\\n\\napp-chat, app-notes, app-documents, app-sketch-board {\\n width: 100vw;\\n height: calc(100% - 61px);\\n position: fixed;\\n bottom: 0;\\n z-index: 3;\\n background-color: white; }\\n\\n.start {\\n border: 2px solid white;\\n color: white;\\n cursor: pointer;\\n background: transparent;\\n border-radius: 40px;\\n padding: 6px 0 3px;\\n font-size: 18px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n position: relative;\\n width: 60px;\\n height: 60px;\\n margin-right: 5px;\\n z-index: 3; }\\n\\n.start:disabled {\\n opacity: 0.5; }\\n\\n.video-frames {\\n position: fixed;\\n bottom: 0;\\n height: calc(100% - 61px);\\n background-color: gray;\\n flex-grow: 1;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n\\n.video-caller {\\n position: relative;\\n background-image: url('user.png');\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 200px 200px; }\\n\\n.video-caller.full {\\n z-index: 1;\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n margin: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n\\n.video-caller.small {\\n max-height: 150px;\\n max-width: 200px;\\n width: auto;\\n position: absolute;\\n top: 10px;\\n left: 10px;\\n border-radius: 5px;\\n overflow: hidden;\\n z-index: 3;\\n border: 1px solid #3C4E59;\\n background-color: #3C4E59;\\n margin-left: 50px; }\\n\\n.video-caller img {\\n height: 100%;\\n width: 100%; }\\n\\n.video-caller .user-pic-overlay {\\n width: 200px;\\n height: 200px; }\\n\\n.toggle-cam {\\n position: absolute;\\n z-index: 4;\\n min-width: 60px;\\n min-height: 25px; }\\n\\n.toggle-cam.lower {\\n bottom: 0;\\n right: 0; }\\n\\n.user-pic-overlay {\\n position: relative;\\n overflow: hidden;\\n border-radius: 50%;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: cover; }\\n\\n.video-self {\\n position: absolute;\\n background-color: #3C4E59;\\n transition: transform .2s;\\n transform: scaleX(1); }\\n\\n.video-self .user-pic-overlay {\\n width: 23vmin;\\n height: 23vmin; }\\n\\n.video-self.full {\\n z-index: 2;\\n top: 5px;\\n right: 5px;\\n border-radius: 5px;\\n overflow: hidden;\\n max-width: 25vw;\\n height: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n\\n.video-self.small {\\n bottom: 10px;\\n right: 10px;\\n max-height: 150px;\\n max-width: 32vw;\\n z-index: 3;\\n border-radius: 5px;\\n overflow: hidden; }\\n\\n/* VIDEO CONTROL PANEL*/\\n\\np {\\n margin: 0; }\\n\\n#volume-control {\\n display: flex;\\n align-items: center;\\n width: -moz-fit-content;\\n width: fit-content;\\n padding-left: 10px;\\n padding-right: 10px; }\\n\\n.controls-column {\\n max-width: 405px;\\n margin: auto;\\n background-color: transparent;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-around;\\n position: absolute;\\n z-index: 3;\\n bottom: 100px;\\n right: 20px;\\n align-items: flex-end; }\\n\\n.toggle-control {\\n position: absolute;\\n z-index: 3;\\n bottom: 40px;\\n right: 20px; }\\n\\n.control {\\n width: 50px;\\n height: 50px;\\n margin-top: 15px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n color: #FFFFFF;\\n background: transparent;\\n z-index: 3;\\n border-radius: 25px;\\n border: 1px solid transparent;\\n padding: 5px;\\n margin-right: 10px; }\\n\\n.control p {\\n position: relative; }\\n\\n.control.enable-option {\\n background-color: #3EC3C3; }\\n\\n.control.enable-option #video-icon {\\n background-image: url('video.svg'); }\\n\\n.control.enable-option #micro-icon {\\n background-image: url('micro.svg'); }\\n\\n.control #video-icon {\\n background-image: url('streamline-icon-controls-camera-off@24x24.svg'); }\\n\\n.control #micro-icon {\\n background-image: url('streamline-icon-microphone-off@24x24.svg'); }\\n\\n.control #desktop-icon {\\n background-image: url('streamline-icon-share-1@24x24.svg'); }\\n\\n.control #video-mirrored-icon {\\n background-image: url('steamline-icon-mirror@24x24.svg'); }\\n\\n.control #hide-icon {\\n background-image: url('streamline-icon-app-window-minimize@24x24.svg'); }\\n\\n.control #toggle-icon {\\n background-image: url('CloseIconWhite.svg'); }\\n\\n.control#phone-button {\\n background-color: #ff0000;\\n border-color: #ff0000;\\n position: absolute;\\n bottom: 40px; }\\n\\n.control#phone-button #phone-icon {\\n background-image: url('streamline-icon-phone@24x24.svg'); }\\n\\n.control #volume-icon {\\n background-image: url('streamline-icon-volume-control-medium@24x24.svg');\\n min-width: 28px; }\\n\\n.white-border {\\n border-color: #FFFFFF; }\\n\\n.icon {\\n background: transparent center no-repeat;\\n width: 28px;\\n height: 28px;\\n background-size: contain; }\\n\\n.close-icon {\\n background: transparent center no-repeat;\\n width: 14px;\\n height: 14px;\\n background-size: contain; }\\n\\n.plus-icon {\\n font-size: 28px;\\n margin-top: 6px; }\\n\\n.hide {\\n display: none !important; }\\n\\n.hideSketch {\\n opacity: 0;\\n height: 0; }\\n\\n.showSketch {\\n opacity: 1;\\n height: 100%; }\\n\\n.mirrored {\\n transform: scaleX(-1); }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2NvbXBvbmVudHMvdmlkZW9jaGF0L21vYmlsZS92aWRlb2NoYXQtbW9iaWxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsdUJBQWMsRUFDZjs7QUFFRDtFQUNFLGFBQVk7RUFDWiwwQkFBeUI7RUFDekIsZ0JBQWU7RUFDZixVQUFTO0VBQ1QsV0FBVTtFQUNWLHdCQUF1QixFQUN4Qjs7QUFFRDtFQUNFLHdCQUF1QjtFQUN2QixhQUFZO0VBQ1osZ0JBQWU7RUFDZix3QkFBdUI7RUFDdkIsb0JBQW1CO0VBQ25CLG1CQUFrQjtFQUNsQixnQkFBZTtFQUNmLG9DQUFtQztFQUNuQyxpQkFBZ0I7RUFDaEIsY0FBYTtFQUNiLG1CQUFrQjtFQUNsQixZQUFXO0VBQ1gsYUFBWTtFQUNaLGtCQUFpQjtFQUNqQixXQUFVLEVBS1g7O0FBcEJEO0lBa0JJLGFBQVksRUFDYjs7QUFHSDtFQUNFLGdCQUFlO0VBQ2YsVUFBUztFQUNULDBCQUF5QjtFQUN6Qix1QkFBc0I7RUFHdEIsYUFBWTtFQUdaLGNBQWE7RUFHYix3QkFBdUI7RUFHdkIsb0JBQW1CLEVBQ3BCOztBQUVEO0VBQ0UsbUJBQWtCO0VBRWxCLGtDQUEwRDtFQUMxRCw2QkFBNEI7RUFDNUIsNEJBQTJCO0VBQzNCLDZCQUE0QixFQXlDN0I7O0FBL0NEO0lBU0ksV0FBVTtJQUNWLG1CQUFrQjtJQUNsQixhQUFZO0lBQ1osWUFBVztJQUNYLGFBQVk7SUFHWixjQUFhO0lBR2Isb0JBQW1CO0lBQ25CLHdCQUF1QixFQUN4Qjs7QUFyQkg7SUF3Qkksa0JBQWlCO0lBQ2pCLGlCQUFnQjtJQUNoQixZQUFXO0lBQ1gsbUJBQWtCO0lBQ2xCLFVBQVM7SUFDVCxXQUFVO0lBQ1YsbUJBQWtCO0lBQ2xCLGlCQUFnQjtJQUNoQixXQUFVO0lBQ1YsMEJBQXlCO0lBQ3pCLDBCQUF5QjtJQUN6QixrQkFBaUIsRUFDbEI7O0FBcENIO0lBdUNJLGFBQVk7SUFDWixZQUFXLEVBQ1o7O0FBekNIO0lBNENJLGFBQVk7SUFDWixjQUFhLEVBQ2Q7O0FBR0g7RUFDRSxtQkFBa0I7RUFDbEIsV0FBVTtFQUNWLGdCQUFlO0VBQ2YsaUJBQWdCLEVBQ2pCOztBQUVEO0VBQ0UsVUFBUztFQUNULFNBQVEsRUFDVDs7QUFFRDtFQUNFLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsbUJBQWtCO0VBQ2xCLDZCQUE0QjtFQUM1Qiw0QkFBMkI7RUFDM0IsdUJBQXNCLEVBQ3ZCOztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLDBCQUF5QjtFQUN6QiwwQkFBeUI7RUFDekIscUJBQW9CLEVBbUNyQjs7QUF2Q0Q7SUFPSSxjQUFhO0lBQ2IsZUFBYyxFQUNmOztBQVRIO0lBWUksV0FBVTtJQUNWLFNBQVE7SUFDUixXQUFVO0lBQ1YsbUJBQWtCO0lBQ2xCLGlCQUFnQjtJQUNoQixnQkFBZTtJQUNmLGFBQVk7SUFHWixjQUFhO0lBR2Isb0JBQW1CO0lBR25CLHdCQUF1QixFQUN4Qjs7QUE1Qkg7SUErQkksYUFBWTtJQUNaLFlBQVc7SUFDWCxrQkFBaUI7SUFDakIsZ0JBQWU7SUFDZixXQUFVO0lBQ1YsbUJBQWtCO0lBQ2xCLGlCQUFnQixFQUNqQjs7QUFHSCx3QkFBd0I7O0FBQ3hCO0VBQ0UsVUFBUyxFQUNWOztBQUVEO0VBR0UsY0FBYTtFQUdiLG9CQUFtQjtFQUVuQix3QkFBdUI7RUFDdkIsbUJBQWtCO0VBQ2xCLG1CQUFrQjtFQUNsQixvQkFBbUIsRUFDcEI7O0FBRUQ7RUFDRSxpQkFBZ0I7RUFDaEIsYUFBWTtFQUNaLDhCQUE2QjtFQUc3QixjQUFhO0VBQ2IsdUJBQXNCO0VBRXRCLDhCQUE2QjtFQUM3QixtQkFBa0I7RUFDbEIsV0FBVTtFQUNWLGNBQWE7RUFDYixZQUFXO0VBQ1gsc0JBQXFCLEVBQ3RCOztBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLFdBQVU7RUFDVixhQUFZO0VBQ1osWUFBVyxFQUNaOztBQUVEO0VBQ0UsWUFBVztFQUNYLGFBQVk7RUFDWixpQkFBZ0I7RUFHaEIsY0FBYTtFQUdiLHdCQUF1QjtFQUd2QixvQkFBbUI7RUFDbkIsZUFBYztFQUNkLHdCQUF1QjtFQUN2QixXQUFVO0VBQ1Ysb0JBQW1CO0VBQ25CLDhCQUE2QjtFQUM3QixhQUFZO0VBQ1osbUJBQWtCLEVBeURuQjs7QUE1RUQ7SUFzQkksbUJBQWtCLEVBQ25COztBQXZCSDtJQTBCSSwwQkFBeUIsRUFTMUI7O0FBbkNIO01BNkJNLG1DQUEyRCxFQUM1RDs7QUE5Qkw7TUFpQ00sbUNBQTJELEVBQzVEOztBQWxDTDtJQXNDSSx1RUFBK0YsRUFDaEc7O0FBdkNIO0lBMENJLGtFQUEwRixFQUMzRjs7QUEzQ0g7SUE4Q0ksMkRBQW1GLEVBQ3BGOztBQS9DSDtJQWtESSx5REFBaUYsRUFDbEY7O0FBbkRIO0lBc0RJLHVFQUErRixFQUNoRzs7QUF2REg7SUEwREksNENBQW9FLEVBQ3JFOztBQTNESDtJQThESSwwQkFBeUI7SUFDekIsc0JBQXFCO0lBQ3JCLG1CQUFrQjtJQUNsQixhQUFZLEVBS2I7O0FBdEVIO01Bb0VNLHlEQUFpRixFQUNsRjs7QUFyRUw7SUF5RUkseUVBQWlHO0lBQ2pHLGdCQUFlLEVBQ2hCOztBQUdIO0VBQ0Usc0JBQXFCLEVBQ3RCOztBQUVEO0VBQ0UseUNBQXdDO0VBQ3hDLFlBQVc7RUFDWCxhQUFZO0VBQ1oseUJBQXdCLEVBQ3pCOztBQUVEO0VBQ0UseUNBQXdDO0VBQ3hDLFlBQVc7RUFDWCxhQUFZO0VBQ1oseUJBQXdCLEVBQ3pCOztBQUVEO0VBQ0UsZ0JBQWU7RUFDZixnQkFBZSxFQUNoQjs7QUFFRDtFQUNFLHlCQUF3QixFQUN6Qjs7QUFFRDtFQUNFLFdBQVU7RUFDVixVQUFTLEVBQ1Y7O0FBRUQ7RUFDRSxXQUFVO0VBQ1YsYUFBWSxFQUNiOztBQUVEO0VBQ0Usc0JBQXFCLEVBQ3RCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy92aWRlb2NoYXQvbW9iaWxlL3ZpZGVvY2hhdC1tb2JpbGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJib2R5IHtcbiAgLS1ncmF5LWRlc2lnbjogIzNDNEU1OTtcbn1cblxuYXBwLWNoYXQsIGFwcC1ub3RlcywgYXBwLWRvY3VtZW50cywgYXBwLXNrZXRjaC1ib2FyZCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA2MXB4KTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDM7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uc3RhcnQge1xuICBib3JkZXI6IDJweCBzb2xpZCB3aGl0ZTtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA0MHB4O1xuICBwYWRkaW5nOiA2cHggMCAzcHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIHotaW5kZXg6IDM7XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG59XG5cbi52aWRlby1mcmFtZXMge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA2MXB4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTtcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi52aWRlby1jYWxsZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3VzZXIucG5nXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMjAwcHggMjAwcHg7XG5cbiAgJi5mdWxsIHtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmLnNtYWxsIHtcbiAgICBtYXgtaGVpZ2h0OiAxNTBweDtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgbGVmdDogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAzO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzQzRFNTk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNDNEU1OTtcbiAgICBtYXJnaW4tbGVmdDogNTBweDtcbiAgfVxuXG4gIGltZyB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLnVzZXItcGljLW92ZXJsYXkge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBoZWlnaHQ6IDIwMHB4O1xuICB9XG59XG5cbi50b2dnbGUtY2FtIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA0O1xuICBtaW4td2lkdGg6IDYwcHg7XG4gIG1pbi1oZWlnaHQ6IDI1cHg7XG59XG5cbi50b2dnbGUtY2FtLmxvd2VyIHtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbn1cblxuLnVzZXItcGljLW92ZXJsYXkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4udmlkZW8tc2VsZiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNDNEU1OTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4ycztcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG5cbiAgLnVzZXItcGljLW92ZXJsYXkge1xuICAgIHdpZHRoOiAyM3ZtaW47XG4gICAgaGVpZ2h0OiAyM3ZtaW47XG4gIH1cblxuICAmLmZ1bGwge1xuICAgIHotaW5kZXg6IDI7XG4gICAgdG9wOiA1cHg7XG4gICAgcmlnaHQ6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXgtd2lkdGg6IDI1dnc7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gICYuc21hbGwge1xuICAgIGJvdHRvbTogMTBweDtcbiAgICByaWdodDogMTBweDtcbiAgICBtYXgtaGVpZ2h0OiAxNTBweDtcbiAgICBtYXgtd2lkdGg6IDMydnc7XG4gICAgei1pbmRleDogMztcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vKiBWSURFTyBDT05UUk9MIFBBTkVMKi9cbnAge1xuICBtYXJnaW46IDA7XG59XG5cbiN2b2x1bWUtY29udHJvbCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7XG4gIHdpZHRoOiAtbW96LWZpdC1jb250ZW50O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbn1cblxuLmNvbnRyb2xzLWNvbHVtbiB7XG4gIG1heC13aWR0aDogNDA1cHg7XG4gIG1hcmdpbjogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMztcbiAgYm90dG9tOiAxMDBweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cblxuLnRvZ2dsZS1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAzO1xuICBib3R0b206IDQwcHg7XG4gIHJpZ2h0OiAyMHB4O1xufVxuXG4uY29udHJvbCB7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogI0ZGRkZGRjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHotaW5kZXg6IDM7XG4gIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiA1cHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcblxuICBwIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAmLmVuYWJsZS1vcHRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzRUMzQzM7XG5cbiAgICAjdmlkZW8taWNvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvdmlkZW8uc3ZnXCIpO1xuICAgIH1cblxuICAgICNtaWNyby1pY29uIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9taWNyby5zdmdcIik7XG4gICAgfVxuICB9XG5cbiAgI3ZpZGVvLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdHJlYW1saW5lLWljb24tY29udHJvbHMtY2FtZXJhLW9mZkAyNHgyNC5zdmdcIik7XG4gIH1cblxuICAjbWljcm8taWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0cmVhbWxpbmUtaWNvbi1taWNyb3Bob25lLW9mZkAyNHgyNC5zdmdcIik7XG4gIH1cblxuICAjZGVza3RvcC1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc3RyZWFtbGluZS1pY29uLXNoYXJlLTFAMjR4MjQuc3ZnXCIpO1xuICB9XG5cbiAgI3ZpZGVvLW1pcnJvcmVkLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdGVhbWxpbmUtaWNvbi1taXJyb3JAMjR4MjQuc3ZnXCIpO1xuICB9XG5cbiAgI2hpZGUtaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0cmVhbWxpbmUtaWNvbi1hcHAtd2luZG93LW1pbmltaXplQDI0eDI0LnN2Z1wiKTtcbiAgfVxuXG4gICN0b2dnbGUtaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL0Nsb3NlSWNvbldoaXRlLnN2Z1wiKTtcbiAgfVxuXG4gICYjcGhvbmUtYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwO1xuICAgIGJvcmRlci1jb2xvcjogI2ZmMDAwMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA0MHB4O1xuXG4gICAgI3Bob25lLWljb24ge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0cmVhbWxpbmUtaWNvbi1waG9uZUAyNHgyNC5zdmdcIik7XG4gICAgfVxuICB9XG5cbiAgI3ZvbHVtZS1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc3RyZWFtbGluZS1pY29uLXZvbHVtZS1jb250cm9sLW1lZGl1bUAyNHgyNC5zdmdcIik7XG4gICAgbWluLXdpZHRoOiAyOHB4O1xuICB9XG59XG5cbi53aGl0ZS1ib3JkZXIge1xuICBib3JkZXItY29sb3I6ICNGRkZGRkY7XG59XG5cbi5pY29uIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgY2VudGVyIG5vLXJlcGVhdDtcbiAgd2lkdGg6IDI4cHg7XG4gIGhlaWdodDogMjhweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xufVxuXG4uY2xvc2UtaWNvbiB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IGNlbnRlciBuby1yZXBlYXQ7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbn1cblxuLnBsdXMtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgbWFyZ2luLXRvcDogNnB4O1xufVxuXG4uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmhpZGVTa2V0Y2gge1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDA7XG59XG5cbi5zaG93U2tldGNoIHtcbiAgb3BhY2l0eTogMTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubWlycm9yZWQge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4iXX0= */\"","import { Component, OnDestroy, AfterViewInit, ChangeDetectorRef, NgZone } from '@angular/core';\nimport { VideoStreamingService } from '../../../services/video-streaming.service';\nimport { SettingsService } from '../../../services/settings.service';\nimport { UserService } from '../../../services/user.service';\nimport { PopupService } from '../../../services/popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Router } from '@angular/router';\nimport { VideochatAbstract } from '../abstracts/videochat.abstract.component';\n\n@Component({\n selector: 'app-videochat-mobile',\n templateUrl: './videochat-mobile.component.html',\n styleUrls: ['./videochat-mobile.component.scss']\n})\nexport class VideochatMobileComponent\n extends VideochatAbstract\n implements OnDestroy, AfterViewInit {\n\n showControls = false;\n activeArea = 'videoChat';\n\n constructor(cdr: ChangeDetectorRef,\n public streamingService: VideoStreamingService,\n settingsService: SettingsService,\n userService: UserService,\n popupService: PopupService,\n translate: TranslateService,\n deviceDetectorService: DeviceDetectorService,\n router: Router,\n ngZone: NgZone) {\n super(cdr, streamingService, settingsService, userService, popupService, translate, deviceDetectorService, router, ngZone);\n\n this.streamingService\n .openArea$\n .subscribe((pageName) => {\n this.activeArea = pageName;\n });\n }\n\n toggleControls() {\n this.showControls = !this.showControls;\n }\n}\n","module.exports = \"\\n\\n\"","import { Component, OnDestroy,Output,EventEmitter } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { SettingsService } from '../../services/settings.service';\n\n@Component({\n selector: 'app-videochat',\n templateUrl: './videochat.component.html',\n})\n\nexport class VideochatComponent\n implements OnDestroy {\n\n isDesktop: boolean;\n\n @Output() toggleActionBar = new EventEmitter();\n\n constructor(deviceDetectorService: DeviceDetectorService,\n private settingsService: SettingsService) {\n this.isDesktop = deviceDetectorService.isDesktop();\n }\n\n ngOnDestroy() {\n this.settingsService.isOpened = false;\n }\n\n toggleActionBarVisibility(){\n this.toggleActionBar.emit();\n }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport * as moment from \"moment\";\nimport { DeviceDetectorService } from \"ngx-device-detector\";\nimport { interval, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { Calendar } from \"../../../models/user\";\nimport { MobileDebugService } from \"../../../services/mobile-debug.service\";\nimport { PopupService } from \"../../../services/popup.service\";\nimport { UserService } from \"../../../services/user.service\";\nimport { UnsubscribeAbstract } from \"../../abstracts/unsubscribe.abstract\";\n\nexport abstract class WaitingRoomAbstractComponent\n extends UnsubscribeAbstract\n implements OnInit, OnDestroy\n{\n private untilFinishedJoinTime = new Subject();\n public displayedColumns: string[] = [\"name\", \"date\", \"time\"];\n public calendarData: Calendar[] = [];\n\n public minutesText = false;\n public monthText = false;\n public dayText = false;\n public serverInfo;\n public serverInfoStartTime;\n\n public timerId;\n public time;\n public date;\n public month;\n public isTimeOut = false;\n public dateOut = false;\n public colorPrimary;\n public colorSecondary;\n\n isEventEnded = false;\n isEventStarted = false;\n isMobile: boolean;\n isLoginLoading = true;\n\n protected constructor(\n public userService: UserService,\n protected router: Router,\n public translate: TranslateService,\n protected cdr: ChangeDetectorRef,\n public popupService: PopupService,\n protected deviceDetectorService: DeviceDetectorService,\n protected ngZone: NgZone,\n private logsService: MobileDebugService\n ) {\n super();\n\n this.isMobile = this.deviceDetectorService.isMobile();\n }\n\n ngOnInit() {\n // This proves more reliable, because subscription to router events stops working after the page refresh in videochat\n if (sessionStorage.wasInTheCall) {\n // Workaround for disabled 'start/join' button after browser 'back'\n sessionStorage.removeItem(\"wasInTheCall\");\n location.reload();\n }\n // to update now for server\n this.userService.getUserSocket();\n this.userService.setPage(\"waitingRoom\");\n this.userService\n .observeUser()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((data) => {\n this.logsService.add(data);\n this.serverInfo = data;\n this.colorPrimary = data.colorPrimary;\n this.colorSecondary = data.colorSecondary;\n\n sessionStorage.setItem(\"colorSecondary\", this.colorSecondary);\n\n if (this.serverInfo.start) {\n this.isLoginLoading = false;\n this.serverInfoStartTime = new Date(\n moment(this.serverInfo.start).valueOf()\n ).toISOString();\n }\n\n this.calendarData = data.schedule ? data.schedule : [];\n\n this.initializeTimer();\n });\n setTimeout(() => {\n this.detectBrowser();\n }, 1000);\n }\n\n detectBrowser() {\n if (navigator.userAgent.includes(\"Firefox\")) {\n const version = navigator.userAgent\n .split(\"Firefox/\")[1]\n .split(\" \")[0]\n .split(\".\")[0];\n if (+version < 66) {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.browserVersionWarning\")\n );\n }\n } else if (navigator.userAgent.includes(\"Chrome\")) {\n const version = navigator.userAgent\n .split(\"Chrome/\")[1]\n .split(\" \")[0]\n .split(\".\")[0];\n if (+version < 72) {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.browserVersionWarning\")\n );\n }\n }\n }\n\n initializeTimer() {\n this.untilFinishedJoinTime.next();\n // We use 'moment' instead of Date.parse, because Date.parse returns 'NaN' in Safari\n const currentDate = moment(this.serverInfo.now).valueOf();\n const meetingDate = moment(this.serverInfo.start).valueOf();\n\n const diffTime = meetingDate - currentDate;\n if (this.serverInfo.now) {\n interval(1000)\n .pipe(\n takeUntil(this.unsubscribe$),\n takeUntil(this.untilFinishedJoinTime)\n )\n .subscribe((times) => {\n times *= 1000;\n\n if (diffTime - times + +this.serverInfo.joinTime > 0) {\n if (diffTime - times >= 0) {\n this.isEventEnded = false;\n this.isEventStarted = false;\n this.setTimeOnPage(\n moment.duration(diffTime - times).months(),\n moment.duration(diffTime - times).days(),\n moment.duration(diffTime - times).hours(),\n moment.duration(diffTime - times).minutes(),\n moment.duration(diffTime - times).seconds()\n );\n } else {\n this.setOnTime();\n this.isEventStarted = true;\n this.isEventEnded = false;\n }\n } else {\n this.isEventEnded = true;\n this.isEventStarted = true;\n this.untilFinishedJoinTime.next();\n }\n\n this.cdr.detectChanges();\n });\n }\n }\n\n setOnTime() {\n this.time = \"00:00\";\n this.minutesText = true;\n }\n\n numToString = (num: Number) => {\n return num.toString().padStart(2, \"0\");\n };\n\n getOpponentName() {\n const opponent =\n this.serverInfo.role === \"doctor\"\n ? this.serverInfo.patient\n : this.serverInfo.doctor;\n return opponent.firstName + \" \" + opponent.lastName;\n }\n\n setTimeOnPage(month, days, hrs, min, sec) {\n // set Time on html\n this.month = month ? month.toString() : \"\";\n this.date = days ? days.toString() : \"\";\n const hours = this.numToString(hrs) + \":\";\n this.time = `${hrs ? hours : \"\"}${this.numToString(min)}:${this.numToString(\n sec\n )}`;\n this.dayText = !!days;\n this.minutesText = !hrs;\n this.monthText = !!month;\n }\n\n playDummySound() {\n // Workaround for iOS browsers, which won't play any audio until one is played on user's gesture\n const audioWorkaround = new Audio(\"/assets/sounds/enterRoom.mp3\");\n audioWorkaround.volume = 0; // Because it's a workaround\n audioWorkaround\n .play()\n .then(() => {\n console.log(\"audioWorkaround played successfully\");\n })\n .catch((error) => {\n console.log(\"audioWorkaround play error\", error);\n });\n }\n\n logIn() {\n this.isLoginLoading = true;\n this.cdr.detectChanges();\n\n const room = this.userService.getRoomId();\n const token = this.userService.getToken();\n\n this.playDummySound();\n\n this.router.navigate([\"/room\" + \"/\" + room + \"/\" + token]);\n\n setTimeout(() => {\n if ((document as any).querySelector(\"app-waiting-room\")) {\n (window as any).location = \"/room\" + \"/\" + room + \"/\" + token;\n }\n }, 3000);\n }\n\n ngOnDestroy() {\n this.untilFinishedJoinTime.complete();\n super.ngOnDestroy();\n }\n checkColor(color) {\n return true;\n }\n}\n","module.exports = \".container {\\n height: calc(100vh - 86px);\\n overflow: auto;\\n}\\n\\n.waiting-room {\\n padding: 40px;\\n max-width: 100%;\\n margin: auto;\\n}\\n\\nh3 {\\n margin-top: 0;\\n margin-bottom: 15px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 900;\\n color: #3C4E59;\\n font-size: 30px;\\n}\\n\\nh4 {\\n color: #3EC3C3;\\n font-size: 20px;\\n margin-bottom: 10px;\\n}\\n\\np {\\n margin: 0;\\n}\\n\\n.greeting {\\n justify-content: space-around;\\n align-items: center;\\n background: transparent linear-gradient(185deg, #3EC3C3 0%, #049DD9 100%) 0% 0% no-repeat padding-box;\\n border-radius: 10px;\\n width: 100%;\\n margin: 30px auto 50px;\\n padding: 30px 20px 30px 0;\\n color: white;\\n}\\n\\n.calendar{\\n display: none;\\n}\\n\\n.welcome {\\n width: 30%;\\n max-width: 200px;\\n font-size: 30px;\\n font-weight: bold;\\n}\\n\\n.time-left > p{\\n font-weight: bold;\\n font-size: 18px;\\n}\\n\\n.time {\\n display: flex;\\n flex-wrap: nowrap;\\n font-family: 'Overpass', sans-serif;\\n padding: 5px 0;\\n font-size: 45px;\\n font-weight: bold;\\n}\\n\\n#date-text {\\n margin-left: 10px;\\n margin-right: 20px;\\n}\\n\\n#month-text{\\n margin-left: 10px;\\n margin-right: 20px;\\n}\\n\\n#time {\\n width: 200px;\\n}\\n\\n.info-start {\\n width: 70%;\\n}\\n\\n.start {\\n border: none;\\n color: #313131;\\n cursor: pointer;\\n background: #FFE450;\\n padding: 6px 30px 3px;\\n border-radius: 5px;\\n font-size: 18px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n margin-bottom: 10px;\\n position: relative;\\n}\\n\\nmat-spinner {\\n display: inline-block;\\n margin: 0 0;\\n position: absolute;\\n right: 5px;\\n top: 8px;\\n}\\n\\n.start:disabled {\\n opacity: .5;\\n}\\n\\n.info-for-participants {\\n justify-content: space-between;\\n}\\n\\n.participants, .meeting-time {\\n width: 50%;\\n align-items: center;\\n}\\n\\n.participants h3 {\\n margin-bottom: 30px;\\n}\\n\\n.meeting-time h3 {\\n text-align: center;\\n color: #3ec3c3;\\n}\\n\\n.therapist, .patient {\\n padding-bottom: 10px;\\n border-bottom: 1px solid #c3c3c3;\\n}\\n\\n.therapist>*, .patient>* {\\n display: inline-block;\\n vertical-align: middle;\\n margin: 0 10px;\\n}\\n\\n.participants img {\\n width: 50px;\\n height: 50px;\\n border-radius: 50%;\\n}\\n\\n/*WR table*/\\n\\n.waiting-room .mat-header-row {\\n border: none;\\n}\\n\\n.waiting-room .mat-header-cell {\\n color: #049DD9;\\n font-size: 20px;\\n}\\n\\n.waiting-room .mat-row {\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n background: #EFF9FF;\\n margin: 7px 0;\\n color: #3C4E59;\\n font-size: 16px;\\n border: none;\\n}\\n\\n.waiting-room .mat-cell {\\n color: #3C4E59;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 600;\\n font-size: 16px;\\n}\\n\\n/*WR table*/\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy93YWl0aW5nLXJvb20vZGVza3RvcC93YWl0aW5nLXJvb20tZGVza3RvcC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsMkJBQTJCO0VBQzNCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLGNBQWM7RUFDZCxvQkFBb0I7RUFDcEIsb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2YsZ0JBQWdCO0NBQ2pCOztBQUVEO0VBQ0UsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixvQkFBb0I7Q0FDckI7O0FBRUQ7RUFDRSxVQUFVO0NBQ1g7O0FBRUQ7RUFFRSw4QkFBOEI7RUFHOUIsb0JBQW9CO0VBRXBCLHNHQUFzRztFQUN0RyxvQkFBb0I7RUFDcEIsWUFBWTtFQUNaLHVCQUF1QjtFQUN2QiwwQkFBMEI7RUFDMUIsYUFBYTtDQUNkOztBQUVEO0VBQ0UsY0FBYztDQUNmOztBQUVEO0VBQ0UsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0NBQ25COztBQUVEO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtDQUNqQjs7QUFFRDtFQUNFLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsb0NBQW9DO0VBQ3BDLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsa0JBQWtCO0NBQ25COztBQUNEO0VBQ0Usa0JBQWtCO0VBQ2xCLG1CQUFtQjtDQUNwQjs7QUFDRDtFQUNFLGtCQUFrQjtFQUNsQixtQkFBbUI7Q0FDcEI7O0FBQ0Q7RUFDRSxhQUFhO0NBQ2Q7O0FBRUQ7RUFDRSxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxhQUFhO0VBQ2IsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixjQUFjO0VBQ2Qsb0JBQW9CO0VBQ3BCLG1CQUFtQjtDQUNwQjs7QUFFRDtFQUNFLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLFdBQVc7RUFDWCxTQUFTO0NBQ1Y7O0FBRUQ7RUFDRSxZQUFZO0NBQ2I7O0FBRUQ7RUFHRSwrQkFBK0I7Q0FDaEM7O0FBRUQ7RUFDRSxXQUFXO0VBR1gsb0JBQW9CO0NBQ3JCOztBQUNEO0VBQ0Usb0JBQW9CO0NBQ3JCOztBQUNEO0VBQ0UsbUJBQW1CO0VBQ25CLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxxQkFBcUI7RUFDckIsaUNBQWlDO0NBQ2xDOztBQUVEO0VBQ0Usc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixtQkFBbUI7Q0FDcEI7O0FBRUQsWUFBWTs7QUFDWjtFQUNFLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLGVBQWU7RUFDZixnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxvQ0FBb0M7RUFDcEMsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixjQUFjO0VBQ2QsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixhQUFhO0NBQ2Q7O0FBRUQ7RUFDRSxlQUFlO0VBQ2Ysb0NBQW9DO0VBQ3BDLGlCQUFpQjtFQUNqQixnQkFBZ0I7Q0FDakI7O0FBQ0QsWUFBWSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvd2FpdGluZy1yb29tL2Rlc2t0b3Avd2FpdGluZy1yb29tLWRlc2t0b3AuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA4NnB4KTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi53YWl0aW5nLXJvb20ge1xuICBwYWRkaW5nOiA0MHB4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogYXV0bztcbn1cblxuaDMge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgY29sb3I6ICMzQzRFNTk7XG4gIGZvbnQtc2l6ZTogMzBweDtcbn1cblxuaDQge1xuICBjb2xvcjogIzNFQzNDMztcbiAgZm9udC1zaXplOiAyMHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG5wIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uZ3JlZXRpbmcge1xuICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgLW8tbGluZWFyLWdyYWRpZW50KDI2NWRlZywgIzNFQzNDMyAwJSwgIzA0OUREOSAxMDAlKSAwJSAwJSBuby1yZXBlYXQgcGFkZGluZy1ib3g7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IGxpbmVhci1ncmFkaWVudCgxODVkZWcsICMzRUMzQzMgMCUsICMwNDlERDkgMTAwJSkgMCUgMCUgbm8tcmVwZWF0IHBhZGRpbmctYm94O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAzMHB4IGF1dG8gNTBweDtcbiAgcGFkZGluZzogMzBweCAyMHB4IDMwcHggMDtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uY2FsZW5kYXJ7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi53ZWxjb21lIHtcbiAgd2lkdGg6IDMwJTtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnRpbWUtbGVmdCA+IHB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE4cHg7XG59XG5cbi50aW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA1cHggMDtcbiAgZm9udC1zaXplOiA0NXB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbiNkYXRlLXRleHQge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuI21vbnRoLXRleHR7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG4jdGltZSB7XG4gIHdpZHRoOiAyMDBweDtcbn1cblxuLmluZm8tc3RhcnQge1xuICB3aWR0aDogNzAlO1xufVxuXG4uc3RhcnQge1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjMzEzMTMxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICNGRkU0NTA7XG4gIHBhZGRpbmc6IDZweCAzMHB4IDNweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogODAwO1xuICBvdXRsaW5lOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbm1hdC1zcGlubmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNXB4O1xuICB0b3A6IDhweDtcbn1cblxuLnN0YXJ0OmRpc2FibGVkIHtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi5pbmZvLWZvci1wYXJ0aWNpcGFudHMge1xuICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5O1xuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5wYXJ0aWNpcGFudHMsIC5tZWV0aW5nLXRpbWUge1xuICB3aWR0aDogNTAlO1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnBhcnRpY2lwYW50cyBoMyB7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG4ubWVldGluZy10aW1lIGgzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzNlYzNjMztcbn1cblxuLnRoZXJhcGlzdCwgLnBhdGllbnQge1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjM2MzYzM7XG59XG5cbi50aGVyYXBpc3Q+KiwgLnBhdGllbnQ+KiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAwIDEwcHg7XG59XG5cbi5wYXJ0aWNpcGFudHMgaW1nIHtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4vKldSIHRhYmxlKi9cbi53YWl0aW5nLXJvb20gLm1hdC1oZWFkZXItcm93IHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4ud2FpdGluZy1yb29tIC5tYXQtaGVhZGVyLWNlbGwge1xuICBjb2xvcjogIzA0OUREOTtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuXG4ud2FpdGluZy1yb29tIC5tYXQtcm93IHtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGJhY2tncm91bmQ6ICNFRkY5RkY7XG4gIG1hcmdpbjogN3B4IDA7XG4gIGNvbG9yOiAjM0M0RTU5O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLndhaXRpbmctcm9vbSAubWF0LWNlbGwge1xuICBjb2xvcjogIzNDNEU1OTtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi8qV1IgdGFibGUqL1xuIl19 */\"","module.exports = \"
    \\n\\n

    {{ 'waitingRoom.title' | translate }}

    \\n\\n
    \\n
    {{ 'waitingRoom.nextSession' | translate }}
    \\n
    \\n
    \\n

    {{ 'waitingRoom.restTime' | translate }}:

    \\n
    \\n {{month}}\\n {{month > 1 ? ('waitingRoom.months' | translate ) : ('waitingRoom.month' | translate ) }}\\n {{date}}\\n {{date > 1 ? ('waitingRoom.days' | translate ): ('waitingRoom.day' | translate)}}\\n {{time}}\\n {{minutesText ? ('waitingRoom.minutes' | translate) : ('waitingRoom.hours' | translate)}}\\n
    \\n
    \\n
    \\n \\n\\n \\n
    \\n
    \\n
    {{'waitingRoom.eventEnded' | translate}}
    \\n
    {{'waitingRoom.eventTime' | translate}} {{serverInfoStartTime | date:'dd.MM.yyyy HH:mm'}}
    \\n
    {{serverInfo.role == 'patient' ? ('therapist' | translate) : ('patient' | translate)}}: {{getOpponentName()}}
    \\n
    \\n\\n
    \\n
    \\n\\n
    \\n

    {{ 'waitingRoom.calendar' | translate }}

    \\n\\n \\n\\n \\n \\n {{'waitingRoom.tableTitle' | translate}} \\n {{element.firstName}} {{element.lastName}}\\n \\n\\n \\n \\n {{'waitingRoom.tableDate' | translate}} \\n {{element.start | date:'dd.MM.yyyy'}} \\n \\n\\n \\n \\n {{'waitingRoom.tableTime' | translate}} \\n {{element.start | date:'HH:mm'}} \\n \\n\\n \\n \\n\\n \\n
    10\\\">{{'waitingRoom.firstEntries' | translate }}
    \\n
    {{ 'waitingRoom.calendarEmpty' | translate }}
    \\n
    \\n\\n
    \\n\"","import { ChangeDetectorRef, Component, NgZone } from '@angular/core';\nimport { WaitingRoomAbstractComponent } from '../abstracts/waiting-room.abstract.component';\nimport { UserService } from '../../../services/user.service';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from '../../../services/popup.service';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { MobileDebugService } from '../../../services/mobile-debug.service';\n\n@Component({\n selector: 'app-waiting-room-desktop',\n templateUrl: './waiting-room-desktop.component.html',\n styleUrls: ['./waiting-room-desktop.component.css']\n})\n\nexport class WaitingRoomDesktopComponent\n extends WaitingRoomAbstractComponent {\n constructor(userService: UserService,\n router: Router,\n translate: TranslateService,\n cdr: ChangeDetectorRef,\n popupService: PopupService,\n deviceDetectorService: DeviceDetectorService,\n ngZone: NgZone,\n logsService: MobileDebugService\n ) {\n super(userService, router, translate, cdr, popupService, deviceDetectorService, ngZone, logsService);\n }\n}\n","module.exports = \"
    \\n\\n

    {{ 'waitingRoom.title' | translate }}

    \\n\\n
    \\n
    {{ 'waitingRoom.nextSession' | translate }}
    \\n
    \\n
    \\n

    {{ 'waitingRoom.restTime' | translate }}:

    \\n
    \\n
    \\n {{month}}\\n {{month > 1 ? ('waitingRoom.months' | translate ) : ('waitingRoom.month' | translate ) }}\\n
    \\n
    \\n {{date}}\\n {{date > 1 ? ('waitingRoom.days' | translate ): ('waitingRoom.day' | translate)}}\\n {{time}}\\n {{minutesText ? ('waitingRoom.minutes' | translate) : ('waitingRoom.hours' | translate)}}\\n
    \\n
    \\n
    \\n
    \\n \\n\\n \\n
    \\n
    \\n
    {{'waitingRoom.eventEnded' | translate}}
    \\n
    {{'waitingRoom.eventTime' | translate}} {{serverInfoStartTime | date:'dd.MM.yyyy HH:mm'}}
    \\n
    {{serverInfo.role == 'patient' ? ('therapist' | translate) : ('patient' | translate)}}: {{getOpponentName()}}
    \\n
    \\n
    \\n
    \\n\\n
    \\n

    {{ 'waitingRoom.calendar' | translate }}

    \\n\\n \\n\\n \\n \\n {{'waitingRoom.tableTitle' | translate}} \\n {{element.firstName}} {{element.lastName}}\\n \\n\\n \\n \\n {{'waitingRoom.tableDate' | translate}} \\n {{element.start | date:'dd.MM.yyyy'}} \\n \\n\\n \\n \\n {{'waitingRoom.tableTime' | translate}} \\n {{element.start | date:'HH:mm'}} \\n \\n\\n \\n \\n\\n \\n
    10\\\">{{'waitingRoom.firstEntries' | translate }}
    \\n
    {{ 'waitingRoom.calendarEmpty' | translate }}
    \\n
    \\n\\n
    \\n\"","module.exports = \".waiting-room {\\n padding: 40px;\\n max-width: 100%;\\n margin: auto;\\n height: calc(100vh - 165px);\\n overflow: auto; }\\n .waiting-room .mat-header-row {\\n border: none; }\\n .waiting-room .mat-header-cell {\\n color: #049DD9;\\n font-size: 20px; }\\n .waiting-room .mat-row {\\n font-family: 'Overpass', sans-serif;\\n font-weight: 400;\\n background: #EFF9FF;\\n margin: 7px 0;\\n color: #3C4E59;\\n font-size: 16px;\\n border: none; }\\n .waiting-room .mat-cell {\\n color: #3C4E59;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 600;\\n font-size: 16px; }\\n .waiting-room .mat-cell:last-child {\\n padding-left: 5px; }\\n .calendar {\\n display: none; }\\n h3 {\\n margin-top: 0;\\n margin-bottom: 15px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 900;\\n color: #3C4E59;\\n font-size: 30px; }\\n h4 {\\n color: #3EC3C3;\\n font-size: 20px;\\n margin-bottom: 10px; }\\n p {\\n margin: 0; }\\n .greeting {\\n justify-content: space-around;\\n align-items: right;\\n background: transparent linear-gradient(185deg, #3EC3C3 0%, #049DD9 100%) 0% 0% no-repeat padding-box;\\n border-radius: 10px;\\n width: 100%;\\n margin: 30px auto 50px;\\n padding: 30px 20px 30px 20px;\\n color: white;\\n display: flex;\\n flex-direction: column; }\\n .welcome {\\n width: 100%;\\n font-size: 30px;\\n font-weight: bold; }\\n .time-left > p {\\n font-weight: bold;\\n font-size: 18px;\\n flex-wrap: wrap; }\\n .time {\\n display: flex;\\n word-wrap: break-spaces;\\n white-space: pre-line;\\n font-family: 'Overpass', sans-serif;\\n padding: 5px 0;\\n font-size: 26px;\\n font-weight: bold;\\n flex-direction: column; }\\n #date-text {\\n margin-left: 10px;\\n margin-right: 20px; }\\n #month-text {\\n margin-left: 10px;\\n margin-right: 20px; }\\n #time {\\n width: 200px; }\\n .info-start {\\n width: 100%; }\\n .start {\\n border: none;\\n color: #313131;\\n cursor: pointer;\\n background: #FFE450;\\n padding: 6px 30px 3px;\\n border-radius: 5px;\\n font-size: 18px;\\n font-family: 'Overpass', sans-serif;\\n font-weight: 800;\\n outline: none;\\n margin-bottom: 10px; }\\n .start:disabled {\\n opacity: .5; }\\n .start mat-spinner {\\n display: inline-block;\\n margin-left: 5px;\\n margin-bottom: -3px; }\\n .button-wide {\\n width: 100%; }\\n .info-for-participants {\\n justify-content: space-between; }\\n .participants, .meeting-time {\\n width: 50%;\\n align-items: center; }\\n .participants h3 {\\n margin-bottom: 30px; }\\n .participants img {\\n width: 50px;\\n height: 50px;\\n border-radius: 50%; }\\n .meeting-time h3 {\\n text-align: center;\\n color: #3ec3c3; }\\n .therapist, .patient {\\n padding-bottom: 10px;\\n border-bottom: 1px solid #c3c3c3; }\\n .therapist > *, .patient > * {\\n display: inline-block;\\n vertical-align: middle;\\n margin: 0 10px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi91c3Ivc3JjL2FwcC9zcmMvYXBwL2NvbXBvbmVudHMvd2FpdGluZy1yb29tL21vYmlsZS93YWl0aW5nLXJvb20tbW9iaWxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBYTtFQUNiLGdCQUFlO0VBQ2YsYUFBWTtFQUNaLDRCQUEyQjtFQUMzQixlQUFjLEVBK0JmO0VBcENEO0lBUUksYUFBWSxFQUNiO0VBVEg7SUFZSSxlQUFjO0lBQ2QsZ0JBQWUsRUFDaEI7RUFkSDtJQWlCSSxvQ0FBbUM7SUFDbkMsaUJBQWdCO0lBQ2hCLG9CQUFtQjtJQUNuQixjQUFhO0lBQ2IsZUFBYztJQUNkLGdCQUFlO0lBQ2YsYUFBWSxFQUNiO0VBeEJIO0lBMkJJLGVBQWM7SUFDZCxvQ0FBbUM7SUFDbkMsaUJBQWdCO0lBQ2hCLGdCQUFlLEVBS2hCO0VBbkNIO01BaUNNLGtCQUFpQixFQUNsQjtFQUlMO0VBQ0UsY0FBYSxFQUNkO0VBRUQ7RUFDRSxjQUFhO0VBQ2Isb0JBQW1CO0VBQ25CLG9DQUFtQztFQUNuQyxpQkFBZ0I7RUFDaEIsZUFBYztFQUNkLGdCQUFlLEVBQ2hCO0VBRUQ7RUFDRSxlQUFjO0VBQ2QsZ0JBQWU7RUFDZixvQkFBbUIsRUFDcEI7RUFFRDtFQUNFLFVBQVMsRUFDVjtFQUVEO0VBRUUsOEJBQTZCO0VBRzdCLG1CQUFrQjtFQUVsQixzR0FBcUc7RUFDckcsb0JBQW1CO0VBQ25CLFlBQVc7RUFDWCx1QkFBc0I7RUFDdEIsNkJBQTRCO0VBQzVCLGFBQVk7RUFDWixjQUFhO0VBQ2IsdUJBQXNCLEVBQ3ZCO0VBRUQ7RUFDRSxZQUFXO0VBQ1gsZ0JBQWU7RUFDZixrQkFBaUIsRUFDbEI7RUFFRDtFQUNFLGtCQUFpQjtFQUNqQixnQkFBZTtFQUNmLGdCQUFlLEVBQ2hCO0VBRUQ7RUFDRSxjQUFhO0VBQ2Isd0JBQXVCO0VBQ3ZCLHNCQUFxQjtFQUNyQixvQ0FBbUM7RUFDbkMsZUFBYztFQUNkLGdCQUFlO0VBQ2Ysa0JBQWlCO0VBQ2pCLHVCQUFzQixFQUN2QjtFQUNEO0VBQ0Usa0JBQWlCO0VBQ2pCLG1CQUFrQixFQUNuQjtFQUNEO0VBQ0Usa0JBQWlCO0VBQ2pCLG1CQUFrQixFQUNuQjtFQUNEO0VBQ0UsYUFBWSxFQUNiO0VBRUQ7RUFDRSxZQUFXLEVBQ1o7RUFFRDtFQUNFLGFBQVk7RUFDWixlQUFjO0VBQ2QsZ0JBQWU7RUFDZixvQkFBbUI7RUFDbkIsc0JBQXFCO0VBQ3JCLG1CQUFrQjtFQUNsQixnQkFBZTtFQUNmLG9DQUFtQztFQUNuQyxpQkFBZ0I7RUFDaEIsY0FBYTtFQUNiLG9CQUFtQixFQVdwQjtFQXRCRDtJQWNJLFlBQVcsRUFDWjtFQWZIO0lBa0JJLHNCQUFxQjtJQUNyQixpQkFBZ0I7SUFDaEIsb0JBQW1CLEVBQ3BCO0VBR0g7RUFDRSxZQUFXLEVBQ1o7RUFFRDtFQUdFLCtCQUE4QixFQUMvQjtFQUVEO0VBQ0UsV0FBVTtFQUdWLG9CQUFtQixFQUNwQjtFQUNEO0VBRUksb0JBQW1CLEVBQ3BCO0VBSEg7RUFNSSxZQUFXO0VBQ1gsYUFBWTtFQUNaLG1CQUFrQixFQUNuQjtFQUVIO0VBQ0UsbUJBQWtCO0VBQ2xCLGVBQWMsRUFDZjtFQUVEO0VBQ0UscUJBQW9CO0VBQ3BCLGlDQUFnQyxFQU9qQztFQVREO0lBS0ksc0JBQXFCO0lBQ3JCLHVCQUFzQjtJQUN0QixlQUFjLEVBQ2YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3dhaXRpbmctcm9vbS9tb2JpbGUvd2FpdGluZy1yb29tLW1vYmlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi53YWl0aW5nLXJvb20ge1xuICBwYWRkaW5nOiA0MHB4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogYXV0bztcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTY1cHgpO1xuICBvdmVyZmxvdzogYXV0bztcblxuICAubWF0LWhlYWRlci1yb3cge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxuXG4gIC5tYXQtaGVhZGVyLWNlbGwge1xuICAgIGNvbG9yOiAjMDQ5REQ5O1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIC5tYXQtcm93IHtcbiAgICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGJhY2tncm91bmQ6ICNFRkY5RkY7XG4gICAgbWFyZ2luOiA3cHggMDtcbiAgICBjb2xvcjogIzNDNEU1OTtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICB9XG5cbiAgLm1hdC1jZWxsIHtcbiAgICBjb2xvcjogIzNDNEU1OTtcbiAgICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICB9XG4gIH1cbn1cblxuLmNhbGVuZGFye1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5oMyB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGZvbnQtZmFtaWx5OiAnT3ZlcnBhc3MnLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogOTAwO1xuICBjb2xvcjogIzNDNEU1OTtcbiAgZm9udC1zaXplOiAzMHB4O1xufVxuXG5oNCB7XG4gIGNvbG9yOiAjM0VDM0MzO1xuICBmb250LXNpemU6IDIwcHg7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbnAge1xuICBtYXJnaW46IDA7XG59XG5cbi5ncmVldGluZyB7XG4gIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGU7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAtd2Via2l0LWJveC1hbGlnbjogcmlnaHQ7XG4gIC1tcy1mbGV4LWFsaWduOiByaWdodDtcbiAgYWxpZ24taXRlbXM6IHJpZ2h0O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAtby1saW5lYXItZ3JhZGllbnQoMjY1ZGVnLCAjM0VDM0MzIDAlLCAjMDQ5REQ5IDEwMCUpIDAlIDAlIG5vLXJlcGVhdCBwYWRkaW5nLWJveDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbGluZWFyLWdyYWRpZW50KDE4NWRlZywgIzNFQzNDMyAwJSwgIzA0OUREOSAxMDAlKSAwJSAwJSBuby1yZXBlYXQgcGFkZGluZy1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDMwcHggYXV0byA1MHB4O1xuICBwYWRkaW5nOiAzMHB4IDIwcHggMzBweCAyMHB4O1xuICBjb2xvcjogd2hpdGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi53ZWxjb21lIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMzBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50aW1lLWxlZnQgPiBwe1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi50aW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd29yZC13cmFwOiBicmVhay1zcGFjZXM7XG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgZm9udC1mYW1pbHk6ICdPdmVycGFzcycsIHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDVweCAwO1xuICBmb250LXNpemU6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuI2RhdGUtdGV4dCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG4jbW9udGgtdGV4dCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG4jdGltZSB7XG4gIHdpZHRoOiAyMDBweDtcbn1cblxuLmluZm8tc3RhcnQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnN0YXJ0IHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogIzMxMzEzMTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiAjRkZFNDUwO1xuICBwYWRkaW5nOiA2cHggMzBweCAzcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LWZhbWlseTogJ092ZXJwYXNzJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAmOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgfVxuXG4gIG1hdC1zcGlubmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAtM3B4O1xuICB9XG59XG5cbi5idXR0b24td2lkZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uaW5mby1mb3ItcGFydGljaXBhbnRzIHtcbiAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ucGFydGljaXBhbnRzLCAubWVldGluZy10aW1lIHtcbiAgd2lkdGg6IDUwJTtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5wYXJ0aWNpcGFudHMge1xuICBoMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgfVxuXG4gIGltZyB7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgfVxufVxuLm1lZXRpbmctdGltZSBoMyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICMzZWMzYzM7XG59XG5cbi50aGVyYXBpc3QsIC5wYXRpZW50IHtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzNjM2MzO1xuXG4gICY+KiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgbWFyZ2luOiAwIDEwcHg7XG4gIH1cbn1cbiJdfQ== */\"","import { ChangeDetectorRef, Component, NgZone } from '@angular/core';\nimport { WaitingRoomAbstractComponent } from '../abstracts/waiting-room.abstract.component';\nimport { UserService } from '../../../services/user.service';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from '../../../services/popup.service';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { MobileDebugService } from '../../../services/mobile-debug.service';\n\n@Component({\n selector: 'app-waiting-room-mobile',\n templateUrl: './waiting-room-mobile.component.html',\n styleUrls: ['./waiting-room-mobile.component.scss']\n})\n\nexport class WaitingRoomMobileComponent\n extends WaitingRoomAbstractComponent {\n constructor(userService: UserService,\n router: Router,\n translate: TranslateService,\n cdr: ChangeDetectorRef,\n popupService: PopupService,\n deviceDetectorService: DeviceDetectorService,\n ngZone: NgZone,\n logsService: MobileDebugService\n ) {\n super(userService, router, translate, cdr, popupService, deviceDetectorService, ngZone, logsService);\n }\n}\n","module.exports = \"app-waiting-room-mobile {\\n position: relative;\\n top: 61px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy93YWl0aW5nLXJvb20vd2FpdGluZy1yb29tLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxtQkFBbUI7RUFDbkIsVUFBVTtDQUNYIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy93YWl0aW5nLXJvb20vd2FpdGluZy1yb29tLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJhcHAtd2FpdGluZy1yb29tLW1vYmlsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA2MXB4O1xufVxuIl19 */\"","module.exports = \"\\n\\n\"","import { Component } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\n@Component({\n selector: 'app-waiting-room',\n templateUrl: './waiting-room.component.html',\n styleUrls: ['./waiting-room.component.css']\n})\n\nexport class WaitingRoomComponent {\n isDesktop: boolean;\n\n constructor(protected deviceDetectorService: DeviceDetectorService) {\n this.isDesktop = this.deviceDetectorService.isDesktop();\n }\n}\n","export class Settings {\n public videoVolume = 100;\n public videoMuteEnabled = false;\n public audioMuteEnabled = false;\n public microVolume = 100;\n public videoDevice: MediaDeviceInfo = null;\n public audioDevice: MediaDeviceInfo = null;\n}\n","export type Role = 'doctor' | 'patient';\n\nexport interface Calendar {\n firstName: string;\n lastName: string;\n start: string;\n title: string;\n}\n\nexport class User {\n public connections = 0;\n public doctor = {\n avatar: '',\n email: '',\n firstName: '',\n lastName: '',\n loggedIn: 0\n };\n public now: string;\n public participants = 0;\n public patient = {\n avatar: '',\n email: '',\n firstName: '',\n lastName: '',\n loggedIn: 0\n };\n public role: Role;\n public schedule: Calendar[];\n public status = '';\n public title = '';\n\n public firstName = '';\n public lastName = '';\n public avatar = '';\n public callerAvatar = '';\n public start = '';\n public joinTime = 0;\n public logoUrl='';\n public colorPrimary;\n public colorSecondary;\n public chat_access;\n public documents_access;\n public sketch_access;\n public notes_access;\n\n static fromJson(json): User {\n return Object.assign(new User, json);\n }\n}\n\nexport class CallerSettings {\n public token: string;\n public room = false;\n public isMirrored = false;\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { PopupComponent } from '../components/popup/popup.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable()\nexport class MobileDebugService {\n private i = 0;\n private logs = new BehaviorSubject([]);\n constructor(public ngZone: NgZone) {\n }\n\n add(...args) {\n const logs = this.logs.getValue();\n args.forEach(arg => {\n logs.push({\n message: arg,\n time: Date.now().toString(),\n id: this.i++\n });\n });\n\n this.logs.next(logs);\n }\n\n get logs$() {\n return this.logs.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MultilanguageService {\n public currentLanguage: BehaviorSubject = new BehaviorSubject('de');\n\n constructor(public translate: TranslateService) {\n translate.addLangs(['de', 'en']);\n translate.setDefaultLang('de');\n const localStorageLanguage: string = localStorage.getItem('language');\n if (!localStorageLanguage || localStorageLanguage === '') {\n this.setDefaultLanguage();\n } else {\n this.setLanguage(localStorageLanguage);\n }\n }\n\n private deCanvasToolBox: {} = {\n 'pencil-icon': 'Stift',\n 'marker-icon': 'Markierstift',\n 'eraser-icon': 'Zeichnungen Löschen',\n 'text-icon': 'Text Schreiben',\n 'image-icon': 'Bild Hinzufügen',\n 'pdf-icon': 'PDF Hinzufügen',\n 'drag-last-path': 'Letzte Kontur Ziehen/Verschiebenh',\n 'drag-all-paths': 'Alle Konturen Ziehen/Verschieben',\n 'line': 'Linien Zeichnen',\n 'arrow': 'Pfeile Zeichnen',\n 'zoom-up': 'Hineinzoomen',\n 'zoom-down': 'Rauszoomen',\n 'arc': 'Bogen',\n 'rectangle': 'Rechteck',\n 'quadratic-curve': 'Quadratische Kurve',\n 'bezier-curve': 'Bezier-Kurve',\n 'undo': 'Rückgängig Machen: Letzte Formen Entfernen',\n 'line-width': 'Linienbreite Einstellen',\n 'colors': 'Vordergrund- und Hintergrundfarben Einstellen',\n 'additional': 'Zusätzliche Optionen',\n 'image-save': 'Als Bild Speichern\\nEs wird nur der Bereich gespeichert, zu dem Sie scrollen können',\n 'line-width-done': 'Schließen',\n 'colors-done': 'Schließen'\n };\n\n private enCanvasToolBox: {} = {\n 'pencil-icon': 'Pencil',\n 'marker-icon': 'Marker',\n 'eraser-icon': 'Erase Drawings',\n 'text-icon': 'Write Text',\n 'image-icon': 'Add Image',\n 'pdf-icon': 'Add PDF',\n 'drag-last-path': 'Drag/Move Last Path',\n 'drag-all-paths': 'Drag/Move All Paths',\n 'line': 'Draw Lines',\n 'arrow': 'Draw Arrows',\n 'zoom-up': 'Zoom-In',\n 'zoom-down': 'Zoom-Out',\n 'arc': 'Arc',\n 'rectangle': 'Rectangle',\n 'quadratic-curve': 'Quadratic Curve',\n 'bezier-curve': 'Bezier Curve',\n 'undo': 'Undo: Remove Recent Shapes',\n 'line-width': 'Set Line Width',\n 'colors': 'Set Foreground and Background Colors',\n 'additional': 'Extra Options',\n 'image-save': 'Save as Image\\nOnly area you can scroll to will be saved',\n 'line-width-done': 'Close',\n 'colors-done': 'Close'\n };\n\n private defaultLanguage = 'de';\n\n private currentLanguageString: string;\n\n private getToolTips(language: string): {} {\n return language === 'en' ? this.enCanvasToolBox : this.deCanvasToolBox;\n }\n\n setDefaultLanguage() {\n this.defaultLanguage = 'de';\n this.setLanguage('de');\n }\n\n getCurrentLanguageString(): string {\n return this.currentLanguageString ? this.currentLanguageString : this.defaultLanguage;\n }\n\n getLanguage() {\n return this.currentLanguage.asObservable();\n }\n\n setLanguage(language: string) {\n this.translate.use(language);\n this.currentLanguage.next(language);\n this.currentLanguageString = language;\n const localStorageLanguage: string = localStorage.getItem('language');\n if (!localStorageLanguage || localStorageLanguage === '' || localStorageLanguage !== language) {\n localStorage.setItem('language', language);\n }\n }\n\n public translateToolTips(language: string): void {\n /** Accessing the canvas inside a sketch component widget placed in iframe\n // The widget is third-party and it is the way it supposed to work from the box\n // (wrapping whole thng in iframe and appending it to some div)\n // Tooltips are the elements of that widget - that's why we have to access it directly to translate them*/\n const canvasDocument: Document = document.getElementsByTagName('iframe')[0].contentWindow.document;\n const toolTips: {} = this.getToolTips(language);\n\n Object.keys(toolTips).forEach((key) => {\n if (canvasDocument.getElementById(key)) {\n if (canvasDocument.getElementById(key).title) {\n canvasDocument.getElementById(key).title = toolTips[key];\n } else {\n canvasDocument.getElementById(key).innerText = toolTips[key];\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PopupComponent } from '../components/popup/popup.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { first } from 'rxjs/operators';\n\n@Injectable()\nexport class PopupService {\n constructor(public dialog: MatDialog,\n public translate: TranslateService) {\n }\n\n openErrorNotification(content: any, link?: string, additionalContent?: string) {\n const dialogConfig = new MatDialogConfig();\n\n dialogConfig.data = {\n content: content.toString(),\n isNotification: true,\n rejectBtn: this.translate.instant('popups.close'),\n link: link || '',\n additionalContent: additionalContent || ''\n };\n\n // Check if we already have a dialog with the same message opened\n if (this.dialog.openDialogs && this.dialog.openDialogs.find((instance) => {\n return instance.componentInstance.content === dialogConfig.data.content;\n })) {\n return;\n }\n\n this.dialog.open(PopupComponent, dialogConfig);\n }\n\n async openErrorDialog(content: any, additionalContent?: string) {\n // Check if we already have a dialog with the same message opened\n if (this.dialog.openDialogs && this.dialog.openDialogs.find((instance) => {\n return instance.componentInstance.content === content.toString();\n })) {\n return;\n }\n return this.openDialog('', content, null, this.translate.instant('popups.close'), true)\n .toPromise();\n }\n\n openDialog(title: string, content: string, acceptBtn?: string, rejectBtn?: any, isNotification?: boolean) {\n const dialogConfig = new MatDialogConfig();\n\n dialogConfig.data = {\n title,\n content: content.toString(),\n isNotification: isNotification ? isNotification : false,\n acceptBtn: acceptBtn ? acceptBtn : null,\n rejectBtn: rejectBtn ? rejectBtn : this.translate.instant('popups.cancel')\n };\n\n return this.dialog\n .open(PopupComponent, dialogConfig)\n .afterClosed()\n .pipe(first());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, BehaviorSubject, of } from 'rxjs';\nimport { Settings } from '../models/settings';\nimport {PopupService} from './popup.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport { first, switchMap, tap } from 'rxjs/internal/operators';\nimport { fromPromise } from 'rxjs/internal-compatibility';\n\ndeclare const easyrtc: any;\n\ninterface ErroredDevices {\n videoErroredDevice?: boolean | MediaTrackConstraints;\n audioErroredDevice?: boolean | MediaTrackConstraints;\n}\n\n@Injectable()\nexport class SettingsService {\n\n private settings$ = new BehaviorSubject(new Settings());\n private savedSettings: Settings;\n private _audioInputDevices: MediaDeviceInfo[] = [];\n private _videoDevices: MediaDeviceInfo[] = [];\n\n private _mediaError$ = new Subject();\n\n private stream: MediaStream = null;\n private streamSub = new BehaviorSubject(null);\n\n audioSelect: MediaDeviceInfo;\n videoSelect: MediaDeviceInfo;\n\n isDeviceChanged = false;\n\n private _isOpened = false;\n set isOpened(value: boolean) {\n if (value) {\n this.savedSettings = Object.assign(this.getSettings());\n } else {\n console.log('save settings');\n this.updateSettings(this.settings$.getValue());\n }\n\n this._isOpened = value;\n }\n\n get isOpened() {\n return this._isOpened;\n }\n\n constructor(private popupService: PopupService,\n private translate: TranslateService) {\n this.getDevicesList();\n }\n\n clearStream() {\n if (this.stream) {\n this.stream\n .getTracks()\n .forEach((track) => track.stop());\n }\n }\n\n get mediaError$() {\n return this._mediaError$.asObservable();\n }\n\n get audioInputDevices() {\n return this._audioInputDevices;\n }\n\n get videoDevices() {\n return this._videoDevices;\n }\n\n setDefaultVideoDevice() {\n if (this._videoDevices) {\n this.videoSelect = this._videoDevices[0];\n }\n }\n\n getSavedSettings() {\n return this.savedSettings;\n }\n\n setDefaultAudioInputDevice() {\n if (this._audioInputDevices) {\n this.audioSelect = this._audioInputDevices[0];\n }\n }\n\n getStream() {\n return this.streamSub.asObservable();\n }\n\n getDevicesList() {\n easyrtc.getAudioSourceList(this.getAudioDevices.bind(this));\n easyrtc.getVideoSourceList(this.getVideoDevices.bind(this));\n }\n\n getMedia(constraints?: MediaStreamConstraints) {\n this.clearStream();\n\n if (!constraints) {\n constraints = {\n audio: {deviceId: this.audioSelect && this.audioSelect.deviceId},\n video: true,\n };\n }\n\n if (this.videoSelect && this.videoSelect.deviceId) {\n constraints.video = {\n deviceId: {\n ideal: this.videoSelect && this.videoSelect.deviceId,\n exact: this.videoSelect && this.videoSelect.deviceId\n },\n };\n }\n\n return navigator.mediaDevices\n .getUserMedia(constraints)\n .then((stream: MediaStream) => {\n this.stream = stream;\n this.streamSub.next(stream);\n this.enumerateDevices(stream);\n this._mediaError$.next({\n videoErroredDevice: false,\n audioErroredDevice: false\n });\n })\n .catch((error) => {\n console.log('Settings navigator.mediaDevices.getUserMedia error ', error, constraints);\n const hasVideoError = error.toString().includes('video');\n const hasAudioError = error.toString().includes('audio');\n\n this._mediaError$.next({\n videoErroredDevice: hasVideoError ? constraints.video : false,\n audioErroredDevice: hasAudioError ? constraints.audio : false\n });\n\n if (error.name === 'NotAllowedError') {\n setTimeout(() => {\n this.popupService\n .openErrorNotification(\n this.translate\n .instant(navigator.userAgent.includes('Chrome') ? 'popups.deniedPermission' : 'popups.deniedPermissionFF'));\n }, 0);\n\n // Microphone permissions\n (navigator as any).permissions\n .query({name: 'microphone'})\n .then((permissionObj) => {\n console.log('Mic permissions: ', permissionObj.state);\n this._mediaError$.next({\n audioErroredDevice: permissionObj.state === 'denied'\n });\n })\n .catch((micError) => {\n console.log('Got micError :', micError);\n this._mediaError$.next({\n audioErroredDevice: true\n });\n });\n\n // Camera permissions\n (navigator as any).permissions\n .query({name: 'camera'})\n .then((permissionObj) => {\n console.log('Cam permissions: ', permissionObj.state);\n this._mediaError$.next({\n videoErroredDevice: permissionObj.state === 'denied'\n });\n })\n .catch((camError) => {\n console.log('Got camError :', camError);\n this._mediaError$.next({\n videoErroredDevice: true\n });\n });\n }\n\n const audioConstraints = {\n audio: constraints.audio,\n video: false\n };\n const videoConstraints = {\n video: constraints.video,\n audio: false\n };\n\n if (!hasAudioError) { // Getting an audio stream in case of video error\n navigator.mediaDevices\n .getUserMedia(audioConstraints)\n .then((audioStream: MediaStream) => {\n this.stream = audioStream;\n this.streamSub.next(audioStream);\n })\n .catch((audioError) => {\n console.log('Settings navigator.mediaDevices.getUserMedia audioError ', audioError, audioConstraints);\n });\n }\n\n if (!hasVideoError) { // Getting a video stream in case of audio error\n navigator.mediaDevices\n .getUserMedia(videoConstraints)\n .then((videoStream: MediaStream) => {\n this.stream = videoStream;\n this.streamSub.next(videoStream);\n })\n .catch((videoError) => {\n console.log('Settings navigator.mediaDevices.getUserMedia videoError ', videoError, videoConstraints);\n });\n }\n });\n }\n\n setAudioDevice(device: MediaDeviceInfo) {\n this.audioSelect = device;\n this.isDeviceChanged = true;\n sessionStorage.setItem('microphone', device.deviceId);\n\n const settings = this.getSettings();\n this.updateSettings({\n ...settings,\n audioDevice: device\n });\n }\n\n setVideoDevice(device: MediaDeviceInfo) {\n this.videoSelect = device;\n this.isDeviceChanged = true;\n sessionStorage.setItem('camera', device.deviceId);\n\n const settings = this.getSettings();\n this.updateSettings({\n ...settings,\n videoDevice: device,\n });\n }\n\n updateSettings(value: Settings) {\n this.settings$.next(value);\n }\n\n getSettings() {\n return this.settings$.getValue();\n }\n\n observeSettings() {\n return this.settings$.asObservable();\n }\n\n restoreSettings() {\n return of(1)\n .pipe(\n tap(() => {\n const settings = this.getSavedSettings();\n\n this.updateSettings(settings);\n\n if (settings.videoDevice) {\n this.setVideoDevice(settings.videoDevice);\n } else {\n this.setDefaultVideoDevice();\n }\n\n if (settings.audioDevice) {\n this.setAudioDevice(settings.audioDevice);\n } else {\n this.setDefaultAudioInputDevice();\n }\n }),\n switchMap(() => fromPromise(this.getMedia())),\n switchMap(() => this.getStream()),\n first(),\n );\n }\n\n private enumerateDevices(stream: MediaStream) {\n if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {\n console.log('enumerateDevices() is not supported. Skipping devices list in the settings.');\n return;\n }\n const selectedVideo = stream.getVideoTracks()[0];\n const selectedAudio = stream.getAudioTracks()[0];\n\n // 'enumerateDevices' is not supported on iOS Chrome\n navigator.mediaDevices\n .enumerateDevices()\n .then(devices => {\n this._audioInputDevices = [];\n this._videoDevices = [];\n\n for (const mediaDeviceInfo of devices) {\n if (mediaDeviceInfo.kind === 'audioinput') {\n this._audioInputDevices.push(mediaDeviceInfo);\n if (selectedAudio.label === mediaDeviceInfo.label) {\n this.audioSelect = mediaDeviceInfo;\n }\n }\n if (mediaDeviceInfo.kind === 'videoinput') {\n this._videoDevices.push(mediaDeviceInfo);\n if (selectedVideo.label === mediaDeviceInfo.label) {\n this.videoSelect = mediaDeviceInfo;\n }\n }\n }\n\n this.applySelects();\n })\n .catch(err => console.log(err));\n }\n\n private applySelects() {\n\n if (!(this.audioSelect || sessionStorage.microphone)) {\n this.setDefaultAudioInputDevice();\n } else {\n this.audioSelect = this._audioInputDevices.find(\n device => device.deviceId === (this.audioSelect ? this.audioSelect.deviceId : sessionStorage.microphone)\n );\n }\n\n if (!(this.videoSelect || sessionStorage.camera)) {\n this.setDefaultVideoDevice();\n } else {\n this.videoSelect = this._videoDevices.find(\n device => device.deviceId === (this.videoSelect ? this.videoSelect.deviceId : sessionStorage.camera)\n );\n }\n\n const newSettings = Object.assign(this.getSettings(),\n {\n audioId: this.audioSelect.deviceId,\n videoId: this.videoSelect.deviceId\n }\n );\n\n this.updateSettings(newSettings);\n }\n\n private getAudioDevices(deviceList: MediaDeviceInfo[]) {\n this._audioInputDevices = deviceList;\n this.applySelects();\n }\n\n private getVideoDevices(deviceList: MediaDeviceInfo[]) {\n this._videoDevices = deviceList;\n this.applySelects();\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { Role, User } from '../models/user';\nimport io from 'socket.io-client';\nimport { environment } from '../../environments/environment';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PopupService } from './popup.service';\nimport { Router } from '@angular/router';\nimport * as moment from 'moment';\n\nconst socket = io(environment.socketUrl);\nconst avatarDefault = '../../assets/icons/user.png';\nconst logoDefault = '../../assets/img/webprax_f2f_logo.png'\nenum EventTypes {\n leave = 'leave',\n join = 'join',\n events = 'events',\n start = 'start',\n}\n\n/// localStorage.debug = '*';\nconst serverFormat = 'YYYY-MM-DD hh:mm:ss';\n\nexport type Pages = 'waitingRoom' | 'videoChat' | 'settings' | 'thanks' | 'chat' | 'notes' | 'documents' | 'sketch';\n@Injectable()\nexport class UserService {\n\n private baseUrl: string;\n private user = new BehaviorSubject(new User);\n private errorPopupIsOpen: boolean;\n private callSessionStatus$ = new Subject();\n\n public ids: string;\n public roomId: string;\n public token: string;\n public isMirrored = false;\n public role = new BehaviorSubject(undefined);\n public page = new BehaviorSubject(undefined);\n public socket = socket;\n public io = io;\n\n public observeLogout = new Subject();\n\n private static isValidURL(str) {\n const urlRegex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n return urlRegex.test(str);\n }\n private static isValidColorHash(colorHash){\n const colorRegex = /#(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})/g;\n return colorHash!=null && colorRegex.test(colorHash);\n }\n\n private static serverTimeToISO(date: string) {\n return moment(date, serverFormat).toISOString();\n }\n\n constructor(private _ngZone: NgZone,\n public translate: TranslateService,\n public popupService: PopupService,\n private router: Router) { // For local build use ng serve -c=local\n\n const parsedURL: string = environment.baseUrl\n .replace('https://', '')\n .replace('http://', ''); // Failsafe in case anyone changes 'http' to 'https' or other way around in configs\n\n this.ids = window.location.href.replace(parsedURL, '')\n .replace('localhost:4200/', '')\n .replace('https://', '')\n .replace('http://', '')\n .replace('room/', '')\n .replace('settings/', '');\n\n try {\n this.roomId = this.ids.match(/[^/]*/)[0];\n this.token = this.ids.match(/\\/([^/]*)$/)[1].replace(/\\?.*$/, '');\n } catch (e) {\n // workaround for PROD /thanks page\n console.log('Problem parting url in UserService', e);\n }\n\n this.baseUrl = environment.socketUrl + 'events/read/' + this.ids;\n this.errorPopupIsOpen = false;\n\n socket.on(EventTypes.events, (data) => {\n\n if (data && data.type === 'Error' && data.status === 404) { // Wrong room case\n if (!this.errorPopupIsOpen) {\n this.errorPopupIsOpen = true;\n this._ngZone.run(() => {\n this.popupService.openErrorDialog(this.translate.instant('popups.roomError')).then(() => {\n this.logOut(this.role.getValue());\n this.setPage('thanks');\n sessionStorage.clear();\n this.router.navigate(['/thanks']);\n }).catch((error: any) => {\n console.log('log out error ', error);\n });\n });\n }\n } else if (!this.getUser().role) {\n this.loadUser(data);\n } else {\n this.updateData(data);\n }\n });\n\n socket.on(EventTypes.join, (data) => {\n this.callSessionStatus$.next(true);\n this.updateData(data);\n });\n\n socket.on(EventTypes.leave, (data) => {\n this.callSessionStatus$.next(false);\n this.updateData(data);\n });\n }\n\n get callStatus$(): Observable {\n return this.callSessionStatus$.asObservable();\n }\n\n getUserSocket() {\n console.log('get socket:: events');\n socket.emit(EventTypes.events, {\n room: this.roomId,\n token: this.token\n });\n }\n\n logIn(role: Role) {\n console.log('log in:: join | role', role);\n socket.emit(EventTypes.join, {\n room: this.roomId,\n token: this.token,\n role,\n });\n }\n\n inviteToTheRoom(role: Role) {\n console.log('invite to the room:: start');\n socket.emit(EventTypes.start, {\n room: this.roomId,\n token: this.token,\n role,\n });\n }\n\n logOut(role: Role) {\n console.log('log out:: leave');\n socket.emit(EventTypes.leave, {\n room: this.roomId,\n token: this.token,\n role,\n });\n this.observeLogout.next(true);\n }\n\n toggleMirrorVideo() {\n this.isMirrored = !this.isMirrored;\n }\n\n getRoomId() {\n return this.roomId;\n }\n\n getToken() {\n return this.token;\n }\n\n getUser(): User {\n return this.user.value;\n }\n\n getDoctorName() {\n return this.user.value.doctor.firstName + ' ' + this.user.value.doctor.lastName;\n }\n\n observeRole() {\n return this.role.asObservable();\n }\n\n observeUser() {\n return this.user.asObservable();\n }\n\n observePage() {\n return this.page.asObservable();\n }\n\n setPage(page: Pages) {\n this.page.next(page);\n }\n\n checkColorHash(){\n console.log(\"teeeeeeest\");\n return false;\n\n }\n\n private loadUser(data) {\n this.role.next(data.role);\n const isDoctor = data.role === 'doctor';\n const doctorAvatar = UserService.isValidURL(data.doctor.avatar) ? data.doctor.avatar : avatarDefault;\n const patientAvatar = UserService.isValidURL(data.patient.avatar) ? data.patient.avatar : avatarDefault;\n const logoUrl = UserService.isValidURL(data.logoUrl) ? data.logoUrl : logoDefault;\n\n this.user.next(User.fromJson(\n {\n\n connections: data.connections,\n doctor: {\n avatar: doctorAvatar,\n email: data.doctor.email,\n firstName: data.doctor.firstName,\n lastName: data.doctor.lastName,\n loggedIn: data.doctor.loggedIn\n },\n now: moment(data.now).toISOString(),\n joinTime: data.joinTime,\n start: moment(data.start).toISOString(),\n participants: data.participants,\n patient: {\n avatar: patientAvatar,\n email: data.patient.email,\n firstName: data.patient.firstName,\n lastName: data.patient.lastName,\n loggedIn: data.patient.loggedIn\n },\n role: data.role,\n schedule: data.schedule.map(i => {\n return {\n ...i,\n start: moment(i.start).toISOString(),\n };\n }\n ),\n status: data.status,\n title: data.title,\n firstName: (isDoctor ? data.doctor.firstName : data.patient.firstName) || 'FirstName',\n lastName: (isDoctor ? data.doctor.lastName : data.patient.lastName) || 'LastName',\n avatar: isDoctor ? doctorAvatar : patientAvatar,\n callerAvatar: isDoctor ? patientAvatar : doctorAvatar,\n logoUrl:logoUrl,\n colorPrimary:UserService.isValidColorHash(data.colorPrimary) ? data.colorPrimary: null,\n colorSecondary:UserService.isValidColorHash(data.colorSecondary) ? data.colorSecondary: null,\n chat_access:data.chat_access,\n documents_access:data.documents_access,\n notes_access:data.notes_access,\n sketch_access:data.sketch_access\n\n }));\n }\n\n private updateData(data) {\n if (data.participants > 2) {\n return;\n }\n const isDoctor = this.getUser().role === 'doctor';\n\n const doctorAvatar = UserService.isValidURL(data.doctor.avatar) ? data.doctor.avatar : avatarDefault;\n const patientAvatar = UserService.isValidURL(data.patient.avatar) ? data.patient.avatar : avatarDefault;\n const logoUrl = UserService.isValidURL(data.logoUrl) ? data.logoUrl : logoDefault;\n\n\n this.user.next(User.fromJson(\n {\n connections: data.connections,\n doctor: {\n avatar: doctorAvatar,\n email: data.doctor.email,\n firstName: data.doctor.firstName,\n lastName: data.doctor.lastName,\n loggedIn: data.doctor.loggedIn\n },\n now: moment(data.now).toISOString(),\n joinTime: data.joinTime,\n start: moment(data.start).toISOString(),\n participants: data.participants,\n patient: {\n avatar: patientAvatar,\n email: data.patient.email,\n firstName: data.patient.firstName,\n lastName: data.patient.lastName,\n loggedIn: data.patient.loggedIn\n },\n role: this.getUser().role,\n schedule: data.schedule ? data.schedule.map(i => {\n return {\n ...i,\n start: moment(i.start).toISOString(),\n };\n }\n ) : this.getUser().schedule,\n status: data.status,\n title: data.title,\n firstName: (isDoctor ? data.doctor.firstName : data.patient.firstName) || 'FirstName',\n lastName: (isDoctor ? data.doctor.lastName : data.patient.lastName) || 'LastName',\n avatar: isDoctor ? doctorAvatar : patientAvatar,\n callerAvatar: isDoctor ? patientAvatar : doctorAvatar,\n logoUrl: logoUrl,\n colorPrimary: UserService.isValidColorHash(data.colorPrimary) ? data.colorPrimary : null,\n colorSecondary:UserService.isValidColorHash(data.colorSecondary) ? data.colorSecondary: null,\n chat_access:data.chat_access,\n documents_access:data.documents_access,\n notes_access:data.notes_access,\n sketch_access:data.sketch_access\n }));\n }\n\n}\n","/// \n\nimport { ElementRef, Injectable, NgZone } from \"@angular/core\";\nimport { Observable, Subject, BehaviorSubject } from \"rxjs\";\nimport { PopupService } from \"./popup.service\";\nimport { UserService } from \"./user.service\";\nimport { SettingsService } from \"./settings.service\";\nimport { environment } from \"../../environments/environment\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\ndeclare const easyrtc: Easyrtc & any;\ndeclare const easyrtc_ft: any;\n\n// Enable or disable EasyRTC Debug logs in Browser console\neasyrtc.enableDebug(false);\n\n@Injectable()\nexport class VideoStreamingService {\n private fileSender: any = null;\n\n // To observe the changes of connected users list\n private clientsSubject = new Subject();\n\n // To set up the own id in connection\n private myIdSubject = new Subject();\n private partnerIdSubject = new Subject();\n private thirdConnectionSubject = new Subject();\n\n // To observe the changes of receiving files\n private receivedFiles = new Subject();\n\n // To observe the changes of sending files\n private sentFiles = new Subject();\n private messagesSubject = new Subject();\n private screenSharingSubject = new Subject();\n private screenStream: any;\n private activeArea$ = new Subject();\n\n public roomId: string;\n public partnerEasyrtcId = \"\";\n public connectedClientsList: Array = [];\n public isConnected = new Subject();\n public audioMuteEnabled = false;\n public videoMuteEnabled = false;\n public sketchIsActive = new BehaviorSubject(false);\n public leftChat = false;\n\n public videoSelf: ElementRef;\n public videoCaller: ElementRef;\n\n constructor(\n private _ngZone: NgZone,\n private popupService: PopupService,\n public userService: UserService,\n public settingsService: SettingsService,\n public translate: TranslateService\n ) {\n easyrtc.setVideoObjectSrc = (element, stream) => {\n setTimeout(() => {\n if (stream) {\n element.srcObject = stream;\n }\n }, 1000);\n };\n\n this.userService.observeLogout.subscribe((loggedOut: boolean) => {\n console.log(\"Logging out \", loggedOut);\n this.hangup();\n });\n }\n\n settingsChangesStream(stream: MediaStream) {\n console.log(\"settingsChangesStream\");\n easyrtc.closeLocalMediaStream();\n easyrtc.register3rdPartyLocalMediaStream(stream, \"default\");\n easyrtc.addStreamToCall(easyrtc.getIthCaller(0), \"default\", () => {});\n easyrtc.setVideoObjectSrc(this.videoSelf.nativeElement, stream);\n }\n\n get openArea$(): Observable {\n return this.activeArea$.asObservable();\n }\n\n set activeArea(value: string) {\n this.activeArea$.next(value);\n }\n\n deleteScreenStream() {\n if (this.screenStream) {\n this.screenStream.getTracks().forEach((track) => {\n track.stop();\n this.screenStream.removeTrack(track);\n });\n }\n this.screenStream = null;\n }\n\n getConnectedClientsList(): Observable {\n return this.clientsSubject.asObservable();\n }\n\n getMyId(): Observable {\n return this.myIdSubject.asObservable();\n }\n\n getPartnerId(): string {\n return easyrtc.getIthCaller(0);\n }\n\n observePartnerId(): Observable {\n return this.partnerIdSubject.asObservable();\n }\n\n getMessages(): Observable {\n return this.messagesSubject.asObservable();\n }\n\n getConnectionStatus(): Observable {\n return this.isConnected.asObservable();\n }\n\n getReceivedFilesStatus(): Observable {\n return this.receivedFiles.asObservable();\n }\n\n getSentFilesStatus(): Observable {\n return this.sentFiles.asObservable();\n }\n\n observeSketchState(): Observable {\n return this.sketchIsActive.asObservable();\n }\n\n getScreenSharingStatus(): Observable {\n return this.screenSharingSubject.asObservable();\n }\n\n observeThirdConnection(): Observable {\n return this.thirdConnectionSubject.asObservable();\n }\n\n connect(isAllowedVideo: boolean, isAllowedAudio: boolean) {\n console.log(\"connect\");\n this.roomId = this.userService.getRoomId();\n\n /*\n const response = await fetch(`https://webprax-f2f.de/api/turn-credentials`);\n const data = await response.json();\n const stunTurnServers = data.iceServers;\n */\n\n const stunTurnServers = {\n iceServers: [\n { urls: \"stun:coturn.webprax.de:443\" },\n {\n urls: \"turn:coturn.webprax.de:3478\",\n username: \"webprax\",\n credential: \"webpraxfd8s0gxy9U59\",\n },\n {\n urls: \"turn:coturn.webprax.de:443?transport=tcp\",\n username: \"webprax\",\n credential: \"webpraxfd8s0gxy9U59\",\n },\n ],\n };\n\n easyrtc.setIceUsedInCalls(stunTurnServers);\n easyrtc.enableVideo(isAllowedVideo);\n easyrtc.enableAudio(isAllowedAudio);\n easyrtc.enableDataChannels(true);\n easyrtc.setPeerListener(this.addMessageToChat.bind(this));\n easyrtc.setSocketUrl(environment.socketUrl);\n easyrtc.setAcceptChecker((easyrtcId, responseFunction) => {\n responseFunction(true);\n });\n\n const convertListToButtonShim = (\n roomName: string,\n data: any,\n isPrimary: boolean\n ): void => {\n this.convertListToButtons(roomName, data, isPrimary);\n };\n\n if (!isAllowedAudio && !isAllowedVideo) {\n const canvasElement: any = document.createElement(\"canvas\");\n const ctx = canvasElement.getContext(\"2d\");\n\n ctx.beginPath(); // Начинает новый путь\n ctx.moveTo(0, 0); // Передвигает перо в точку (30, 50)\n ctx.lineTo(0, 1); // Рисует линию до точки (150, 100)\n ctx.stroke(); // О\n document.body.appendChild(canvasElement);\n easyrtc.enableVideo(true);\n const stream: MediaStream = canvasElement.captureStream(25);\n easyrtc.register3rdPartyLocalMediaStream(stream, \"default\");\n }\n easyrtc.setRoomOccupantListener(convertListToButtonShim);\n\n easyrtc.easyApp(\n this.roomId,\n \"videoSelf\",\n [\"videoCaller\"],\n this.loginSuccess,\n this.loginFailure\n );\n\n this.messagesSubject.subscribe((messageData) => {\n console.log(messageData);\n if (messageData.sender !== \"me\" && messageData.message.error) {\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(\n this.translate.instant(messageData.message.error)\n );\n });\n }\n });\n }\n\n performCall(clientEasyrtcId: string) {\n console.log(\"performCall\", clientEasyrtcId);\n if (easyrtc.getConnectStatus(clientEasyrtcId) === easyrtc.NOT_CONNECTED) {\n console.log(easyrtc.NOT_CONNECTED);\n try {\n easyrtc.call(\n clientEasyrtcId,\n (caller, media) => {\n // success callback\n console.log(\"easyrtc.call success\", clientEasyrtcId, media);\n if (media === \"datachannel\") {\n this.connectedClientsList[clientEasyrtcId] = true;\n this.showConnectionType(clientEasyrtcId);\n }\n },\n (errorCode, errorText) => {\n this.connectedClientsList[clientEasyrtcId] = false;\n console.log(\"failed \", errorCode, errorText);\n },\n (wasAccepted) => {\n console.log(\"was accepted=\" + wasAccepted);\n }\n );\n } catch (callerror) {\n console.log(\"callerror\", callerror);\n }\n }\n }\n\n toggleAudio(audioEnabled: boolean): true | void {\n try {\n easyrtc.enableMicrophone(audioEnabled);\n } catch (error) {\n this.popupService.openErrorNotification(error);\n }\n\n if (this.screenStream) {\n this.screenStream.getAudioTracks()[0].enabled = audioEnabled;\n }\n\n return true;\n }\n\n toggleVideo(videoEnabled: boolean): true | void {\n try {\n easyrtc.enableCamera(videoEnabled);\n this.videoMuteEnabled = !videoEnabled;\n return true;\n } catch (error) {\n this.popupService.openErrorNotification(error);\n }\n }\n\n changeCamera(video) {\n console.log(\"changeCamera\", video);\n this.settingsService.isDeviceChanged = false;\n const videoSelected = this.settingsService.videoSelect\n ? this.settingsService.videoSelect.deviceId\n : sessionStorage.camera;\n\n if (!videoSelected) {\n this.settingsService.setDefaultVideoDevice();\n }\n\n easyrtc.setVideoSource(videoSelected); // Set the id of back camera. Must be called before easyrtc.initMediaSource()\n easyrtc.initMediaSource(() => {\n easyrtc.setVideoObjectSrc(video.nativeElement, easyrtc.getLocalStream());\n easyrtc.easyApp(\n this.roomId,\n \"videoSelf\",\n [\"videoCaller\"],\n this.loginSuccess.bind(this),\n this.loginFailure.bind(this)\n );\n });\n }\n\n screenShare() {\n try {\n (navigator.mediaDevices as any)\n .getDisplayMedia({\n video: true,\n audio: {\n echoCancellation: true, // Optional: Improves audio quality\n noiseSuppression: true, // Optional: Improves audio quality\n sampleRate: 44100, // Optional: Set audio sample rate\n },\n })\n .then((desktopStream) => {\n const videoTracks = desktopStream.getVideoTracks();\n const screenAudioTracks = desktopStream.getAudioTracks(); // Get screen/tab audio tracks\n\n const microphoneAudioTracks = easyrtc\n .getLocalStream()\n .getAudioTracks();\n\n const combinedAudioTracks = [\n ...screenAudioTracks,\n ...microphoneAudioTracks,\n ];\n\n // Combine video and audio tracks to create a screen stream\n const screenStream = easyrtc.buildLocalMediaStream(\n \"screen\",\n videoTracks,\n combinedAudioTracks\n );\n\n // Enable or disable microphone audio based on user's mute settings\n combinedAudioTracks.forEach((track) => {\n track.enabled = !this.audioMuteEnabled;\n });\n\n this.screenStream = screenStream;\n const videoSelf = document.getElementById(\"videoSelf\");\n const clientId = this.partnerEasyrtcId;\n\n easyrtc.setVideoObjectSrc(videoSelf, screenStream);\n\n console.log(`Adding screen stream to call with ${clientId}`);\n easyrtc.addStreamToCall(clientId, \"screen\", () => {});\n\n this.screenSharingSubject.next(true);\n\n this.addStreamStopListener(screenStream, () => {\n this.closeScreenSharingStream(screenStream);\n });\n\n desktopStream.getTracks().forEach((track) => {\n track.stop();\n desktopStream.removeTrack(track);\n });\n })\n .catch((errorCode) => {\n console.error(\"Problem getting desktop stream\", errorCode);\n if (this.isSafari()) {\n // show error for Safari only because it's dialog is in form \"Allow domain to use your camera and microphone?\"\n // with [Allow] and [Deny] buttons\n // other browsers shows [Cancel] and [Share] buttons, thus we don't need this popup for them\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.promptPermission\")\n );\n }\n });\n\n easyrtc.initMediaSource(\n (mediaStream) => {\n const videoCaller = document.getElementById(\"videoCaller\");\n easyrtc.setVideoSource(videoCaller, mediaStream);\n },\n (errorCode, errorText) => {\n console.log(\"Error in initMediaSource\", errorCode, errorText);\n },\n undefined\n );\n } catch (error) {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.screenSharingError\")\n );\n }\n }\n\n stopScreenShare() {\n try {\n this.closeScreenSharingStream(this.screenStream);\n } catch (error) {\n console.log(\"Stop screenshare button error\");\n }\n }\n\n buildDragNDropRegion(dropArea: any) {\n easyrtc_ft.buildDragNDropRegion(dropArea);\n }\n\n fileHandler(files) {\n const clientId = easyrtc.getIthCaller(0);\n\n if (clientId) {\n if (easyrtc.getConnectStatus(clientId) === easyrtc.IS_CONNECTED) {\n if (!this.fileSender) {\n this.fileSender = easyrtc_ft.buildFileSender(\n clientId,\n this.updateStatus\n );\n }\n this.fileSender(files, true);\n }\n } else {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.fileSendingError\")\n );\n }\n }\n\n blobAcceptor(otherGuy, blob, filename) {\n // Create a URL for the blob\n const blobUrl = URL.createObjectURL(blob);\n\n const a = document.createElement(\"a\");\n a.setAttribute(\"href\", blobUrl);\n a.setAttribute(\"target\", \"_blank\");\n a.click();\n\n // Old Version\n // easyrtc_ft.saveAs(blob, filename);\n }\n\n sendStuffP2P(messageData) {\n if (messageData.text) {\n if (messageData.text.replace(/\\s/g, \"\").length === 0) {\n // Don't send just whitespace\n return;\n }\n }\n if (\n easyrtc.getConnectStatus(this.partnerEasyrtcId) === easyrtc.IS_CONNECTED\n ) {\n easyrtc.sendPeerMessage(this.partnerEasyrtcId, \"message\", messageData);\n this.addMessageToChat(\"me\", \"msg\", messageData);\n } else {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.chatError\")\n );\n }\n }\n\n updateMessages(messages) {\n easyrtc.sendPeerMessage(this.partnerEasyrtcId, \"chat\", { chat: messages });\n }\n\n isSafari(): boolean {\n return (\n /constructor/i.test(window[\"HTMLElement\"]) ||\n (function (p) {\n return p.toString() === \"[object SafariRemoteNotification]\";\n })(\n !window[\"safari\"] ||\n (typeof window[\"safari\"] !== \"undefined\" &&\n window[\"safari\"].pushNotification)\n )\n );\n }\n\n async checkPermissions(): Promise {\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n const isIOS = iosPlatforms.indexOf(window.navigator.platform) !== -1;\n\n const videoDevice = await navigator.mediaDevices\n .enumerateDevices()\n .then((devices) => {\n return devices.find((device) => device.kind === \"videoinput\");\n });\n\n /**\n * Skip permissions check on iOS, because it causes camera to turn black\n * https://bugs.webkit.org/show_bug.cgi?id=179363\n */\n if (isIOS) {\n console.log(\n \"Skipped check media permissions for iOS and Safari Desktop.\"\n );\n return Promise.resolve(true);\n }\n const cameraId = sessionStorage.camera || null;\n const microphoneId = sessionStorage.microphone || null;\n return new Promise((resolve, reject) => {\n if (\n navigator.userAgent.includes(\"Chrome\") &&\n navigator[\"permissions\"] &&\n typeof navigator[\"permissions\"].query === \"function\"\n ) {\n Promise.all([\n navigator[\"permissions\"].query({\n name: \"camera\",\n deviceId: cameraId,\n }),\n navigator[\"permissions\"].query({\n name: \"microphone\",\n deviceId: microphoneId,\n }),\n ]).then(([{ state: videoState }, { state: audioState }]) => {\n if (videoState === \"denied\" || audioState === \"denied\") {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.deniedPermission\")\n );\n resolve(false);\n }\n if (videoState === \"granted\" || audioState === \"granted\") {\n resolve(true);\n }\n resolve(false);\n });\n } else {\n const constraints = {\n ...(videoDevice && {\n video: { deviceId: cameraId },\n }),\n audio: { deviceId: microphoneId },\n };\n navigator.mediaDevices\n .getUserMedia(constraints)\n .then(() => true)\n .catch((error) => {\n if (error.name === \"NotAllowedError\") {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.deniedPermissionFF\")\n );\n }\n return false;\n })\n .then((res) => resolve(res));\n }\n });\n }\n\n disconnect() {\n easyrtc.disconnect();\n easyrtc.enableMicrophone(false);\n easyrtc.enableCamera(false);\n this.clearConnectList();\n easyrtc.closeLocalMediaStream();\n }\n\n private loginSuccess = (easyrtcId) => {\n console.log(\"login success\");\n easyrtc_ft.buildFileReceiver(\n this.acceptRejectCB,\n this.blobAcceptor,\n this.receiveStatusCB\n );\n this.updateMyEasyRTCId(easyrtcId);\n };\n\n private loginFailure = (error) => {\n console.error(\"easyrtc.easyApp loginFailure\", error);\n if (error === \"MEDIA_ERR\") {\n if (\n this.settingsService.videoDevices.filter(\n (device) =>\n device.deviceId !== this.settingsService.videoSelect.deviceId\n ).length > 0\n ) {\n console.log(\"clear\");\n sessionStorage.clear();\n this.settingsService.setDefaultVideoDevice();\n this.settingsService.setDefaultAudioInputDevice();\n this.changeCamera(this.videoSelf);\n } else {\n easyrtc.setStreamAcceptor((callerEasyrtcid, stream) => {\n easyrtc.setVideoObjectSrc(this.videoCaller.nativeElement, stream);\n });\n\n easyrtc.connect(\n this.roomId,\n (easyrtcid: string, roomOwner: boolean) => {\n easyrtc_ft.buildFileReceiver(\n this.acceptRejectCB,\n this.blobAcceptor,\n this.receiveStatusCB\n );\n this.updateMyEasyRTCId(easyrtcid);\n },\n () =>\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.deviceError2\")\n );\n })\n );\n }\n }\n };\n\n private convertListToButtons(\n roomName: string,\n occupants: Easyrtc_PerRoomData,\n isPrimary: boolean\n ): void {\n if (Object.keys(occupants).length < 2) {\n this.clearConnectList();\n for (const easyrtcId of Object.keys(occupants)) {\n const client = easyrtc.idToName(easyrtcId);\n this.partnerEasyrtcId = easyrtcId;\n this.partnerIdSubject.next(easyrtcId);\n this.connectedClientsList.push(client);\n this.clientsSubject.next(client);\n this.isConnected.next(true);\n console.log(\"connected\", true);\n }\n } else {\n this.thirdConnectionSubject.next(easyrtc.getConnectionCount());\n }\n }\n\n private addMessageToChat(who, msgType, content) {\n this.messagesSubject.next({ sender: who, message: content });\n }\n\n private clearConnectList() {\n this.connectedClientsList = [];\n this.clientsSubject.next();\n this.partnerIdSubject.next(\"\");\n this.isConnected.next(false);\n }\n\n private hangup() {\n try {\n easyrtc.hangupAll();\n easyrtc.disconnect();\n this.isConnected.next(false);\n this.partnerIdSubject.next(\"\");\n } catch (error) {\n this.popupService.openErrorNotification(error);\n }\n }\n\n private addStreamStopListener(stream, callback) {\n stream.addEventListener(\n \"ended\",\n function () {\n callback();\n callback = function () {};\n },\n false\n );\n stream.addEventListener(\n \"inactive\",\n function () {\n callback();\n callback = function () {};\n },\n false\n );\n stream.getTracks().forEach(function (track) {\n track.addEventListener(\n \"ended\",\n function () {\n callback();\n callback = function () {};\n },\n false\n );\n track.addEventListener(\n \"inactive\",\n function () {\n callback();\n callback = function () {};\n },\n false\n );\n });\n }\n\n private closeScreenSharingStream(streamToClose: any) {\n console.log(\n \"closeScreenSharingStream streamToClose\",\n streamToClose ? streamToClose.streamName : \"\",\n streamToClose\n );\n\n const videoSelf = this.videoSelf.nativeElement;\n const clientId = this.partnerEasyrtcId;\n const localStream = easyrtc.getLocalStream();\n easyrtc.register3rdPartyLocalMediaStream(localStream, \"default\");\n easyrtc.setVideoObjectSrc(videoSelf, localStream);\n easyrtc.addStreamToCall(clientId, \"default\", () => {});\n\n this.screenSharingSubject.next(false);\n this.deleteScreenStream();\n\n try {\n easyrtc.enableMicrophone(!this.audioMuteEnabled);\n } catch (error) {\n console.log(\"audio mute error \", error);\n }\n\n try {\n easyrtc.enableCamera(!this.videoMuteEnabled);\n } catch (error) {\n console.log(\"video mute error \", error);\n }\n }\n\n private updateStatus = (state) => {\n this._ngZone.run(() => {\n this.sentFiles.next(state);\n });\n return true;\n };\n\n private acceptRejectCB = async (otherGuy, files, wasAccepted) => {\n const fileName = files[0].name;\n const dialogMessage = `\n ${this.userService.getDoctorName()} ${this.translate.instant(\n \"popups.sendFile\"\n )} ${fileName}\n ${this.translate.instant(\n \"popups.sendFileEnding\"\n )}. ${this.translate.instant(\"popups.downloadFile\")}`;\n\n this._ngZone.run(() =>\n this.popupService\n .openDialog(\n this.translate.instant(\"popups.acceptFile\"),\n dialogMessage,\n this.translate.instant(\"popups.download\"),\n this.translate.instant(\"popups.cancel\")\n )\n .subscribe((result) => {\n console.log(\"result\", result);\n wasAccepted(result);\n })\n );\n };\n\n private receiveStatusCB = (otherGuy, msg) => {\n this.receivedFiles.next(msg);\n return true;\n };\n\n private updateMyEasyRTCId(myEasyRTCId: string) {\n this.myIdSubject.next(myEasyRTCId);\n }\n\n private showConnectionType(clientEasyrtcId: string) {\n // Candidate types to check\n // https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity\n // FireFox\n try {\n const pc = easyrtc.getPeerConnectionByUserId(clientEasyrtcId);\n if (pc) {\n pc.getStats().then((stats: RTCStatsReport) => {\n // console.log('getPeerConnectionByUserId values', Array.from((stats as any).values()));\n const selectedCandidatePair = Array.from(\n (stats as any).values()\n ).find((candidate) => {\n return candidate[\"selected\"] === true;\n });\n // console.log('selectedCandidatePair ', selectedCandidatePair);\n\n const selectedLocalCandidate = Array.from(\n (stats as any).values()\n ).find((candidate) => {\n return selectedCandidatePair\n ? candidate[\"id\"] === selectedCandidatePair[\"localCandidateId\"]\n : undefined;\n });\n // console.log('selectedLocalCandidate ', selectedLocalCandidate);\n\n const selectedRemoteCandidate = Array.from(\n (stats as any).values()\n ).find((candidate) => {\n return selectedCandidatePair\n ? candidate[\"id\"] === selectedCandidatePair[\"remoteCandidateId\"]\n : undefined;\n });\n // console.log('selectedRemoteCandidate ', selectedRemoteCandidate);\n\n // Check if at least one of the candidates in the pair is 'relay' type\n if (\n selectedLocalCandidate &&\n selectedRemoteCandidate &&\n (selectedLocalCandidate[\"candidateType\"] === \"relay\" ||\n selectedRemoteCandidate[\"candidateType\"] === \"relay\")\n ) {\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.turnMessage\")\n );\n this.sendStuffP2P({ error: \"popups.turnMessage\" });\n });\n }\n });\n }\n\n // Chrome\n easyrtc.getPeerStatistics(\n clientEasyrtcId,\n (easyrtcId, data) => {\n // console.log('getPeerStatistics', easyrtcId, 'data', data);\n // console.log('values', data.values());\n\n // find selected candidate among channel\n // sample: Channel-0-1.selectedCandidatePairId: 'Conn-0-1-0\"\n const selectedCandidateId = Object.values(data)\n .filter(\n (key) => data[key + \".selectedCandidatePairId\"] !== undefined\n )\n .map((key) => data[key + \".selectedCandidatePairId\"])[0]; // eq: \"Conn-0-1-0\"\n\n if (selectedCandidateId) {\n const remoteCandidateType =\n data[selectedCandidateId + \".googRemoteCandidateType\"];\n console.log(\n \"selectedCandidateId remote\",\n selectedCandidateId,\n remoteCandidateType\n );\n const localCandidateType =\n data[selectedCandidateId + \".googLocalCandidateType\"];\n console.log(\n \"selectedCandidateId local\",\n selectedCandidateId,\n localCandidateType\n );\n if (\n remoteCandidateType === \"relay\" ||\n localCandidateType === \"relay\"\n ) {\n this._ngZone.run(() => {\n this.popupService.openErrorNotification(\n this.translate.instant(\"popups.turnMessage\")\n );\n this.sendStuffP2P({ error: \"popups.turnMessage\" });\n });\n } else {\n console.log(\n \"Connection type is \",\n remoteCandidateType,\n localCandidateType\n );\n }\n } else {\n console.log(\"Wasn't able to find selected candidate\");\n }\n },\n undefined\n );\n } catch (e) {\n console.warn(`Problem in showConnectionType. Can be ignored.`, e);\n }\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n socketUrl: 'wss://webprax-dev.trembit.com',\n baseUrl: 'http://webprax-dev.trembit.com/',\n name: 'development'\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n if (window) {\n window.console.log = () => {};\n }\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","/* (ignored) */"],"sourceRoot":""}