1<!DOCTYPE html> 2<html lang="en" translate="no"> 3 <head> 4 <meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"> 6<meta name="author" content="NUITEQ®"> 7 8 <meta name="description" content="NUITEQ Stage inloggning"> 9 10 11 12 <title>NUITEQ Stage | Logga in</title> 13 14 15<link rel="icon" type="image/png" href="/img/favicon/favicon-228.png" sizes="228x228" /> 16<link rel="icon" type="image/png" href="/img/favicon/favicon-196.png" sizes="196x196" /> 17<link rel="icon" type="image/png" href="/img/favicon/favicon-195.png" sizes="195x195" /> 18<link rel="icon" type="image/png" href="/img/favicon/favicon-180.png" sizes="180x180" /> 19<link rel="icon" type="image/png" href="/img/favicon/favicon-167.png" sizes="167x167" /> 20<link rel="icon" type="image/png" href="/img/favicon/favicon-152.png" sizes="152x152" /> 21<link rel="icon" type="image/png" href="/img/favicon/favicon-144.png" sizes="144x144" /> 22<link rel="icon" type="image/png" href="/img/favicon/favicon-128.png" sizes="128x128" /> 23<link rel="icon" type="image/png" href="/img/favicon/favicon-120.png" sizes="120x120" /> 24<link rel="icon" type="image/png" href="/img/favicon/favicon-96.png" sizes="96x96" /> 25<link rel="icon" type="image/png" href="/img/favicon/favicon-76.png" sizes="76x76" /> 26<link rel="icon" type="image/png" href="/img/favicon/favicon-57.png" sizes="57x57" /> 27<link rel="icon" type="image/png" href="/img/favicon/favicon-32.png" sizes="32x32" /> 28<link rel="icon" type="image/png" href="/img/favicon/favicon-16.png" sizes="16x16" /> 29 30<link rel="stylesheet preload" type="text/css" href="https://nuiteqstage.se/css/bundle.css?v=1" as="style" /> 31 32<link rel="preconnect" href="https://storage.nuiteqstage.com/" crossorigin /> 33<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-regular.woff2" as="font" integrity="sha384-jpm2IU+5ZHTuF3VTG1V3ZuKAJjiS5iYd8U3xUkKvb1q59aOaYYSHLK8iB0wcOu9P" crossorigin="anonymous" /> 34<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-300.woff2" as="font" integrity="sha384-aBKwa8jSEkPTj8x/MRPOP7d7dwKa5aR7JtVeRrJ60PZa2I0kch4j3ZH72abVUn0I" crossorigin="anonymous" /> 35<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-500.woff2" as="font" integrity="sha384-Sen+DML6wa1CrNNKkUjqtR4ka+kKG4AbeCnyXP1difSPHgHgfoqb/KgzByPWCe5G" crossorigin="anonymous" /> 36<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-600.woff2" as="font" integrity="sha384-kU4oVZ2KGlSLSyxvTxe37Frf3fzYNW+9nVhOCA+XyoLT45Ng3+avV+oLyCFcbH0g" crossorigin="anonymous" /> 37<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-700.woff2" as="font" integrity="sha384-emmbvsreqHMfsyp4Hzotst6yX/qeISz3zByOWBKKqkkF3C8mtPmb3Q0PwWkIkUFn" crossorigin="anonymous" /> 38<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-800.woff2" as="font" integrity="sha384-+b9Jgg2fX1aQn87g/a2IMONUpMC8sz1Dna5Kq+0B5aaNEhGUTITYyLpZ81XwQBlZ" crossorigin="anonymous" /> 39<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/roboto-mono/roboto-mono-v13-latin-regular.woff2" as="font" integrity="sha384-9PR7rSbowMeZL36v121GZy+d9mDrM7DDLFqVX0HcKvq6gM6oY23fFoiX+qaelBRS" crossorigin="anonymous" /> 40<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat-thin/montserrat-thin-webfont.woff" as="font" integrity="sha384-xSL9TfRpW32qT6/BBv9htFqRkzYrgpVuVH4Mn2E/JlPtlHgyMc1OrV9qCWswmJ6A" crossorigin="anonymous" /> 41<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/text-security-disc/text-security-disc-compat.woff2" as="font" integrity="sha384-VkIurFTO17q8xCeoQ/VP8LL4QiOVfVz4yc2grQfevarnM2xdBTqOe9fto+rZqtf4" crossorigin="anonymous" /> 42 43<!-- OpenDyslexic --> 44<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Regular.woff2" as="font" integrity="sha384-4hkne2BbHAKDS9oNchXXVbCL9WO7hso9RVtlhdrMz7l8VKTVPLRMVDPtV9e195mu" crossorigin="anonymous" /> 45<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Bold.woff2" as="font" integrity="sha384-eCjP0QEURw3s7799xG77amfkybVX44I8UfmPZ+Z9OIXkynF5pFglxC+tROrwfmiJ" crossorigin="anonymous" /> 46<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Italic.woff2" as="font" integrity="sha384-63Z1/+ez+pww/jhA4hUgaIUBxqviExTKuSl7Cyb4sLLl9dfwSMQlzxOC/id+l3om" crossorigin="anonymous" /> 47<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-BoldItalic.woff2" as="font" integrity="sha384-iwYk7KyQIK85VPxKrbDA3IsvwOs
47MU+3XCvTn91WwLtHE2pf6IgApusb1LzK4a6Yp" crossorigin="anonymous" /> 48 49<!-- Arvo --> 50<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo.woff2" as="font" integrity="sha384-26jY6A94OHzEP2kXVJskVkE/Cgk67R33+gtGy19/OipwdfdnOqKPon0uTmKIirGL" crossorigin="anonymous" /> 51<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-Bold.woff2" as="font" integrity="sha384-CvhDCqecV1kTtxRjF3v1UkaDrN98D4EfGVRLFj5rO9qTKFG+rajSBQjdI5kt3iY9" crossorigin="anonymous" /> 52<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-Italic.woff2" as="font" integrity="sha384-TpVBgSt1I55a9rN8ju3P+amudQp2Oxjq/UqXubpWler/m8ayJU6pcdbFtzY9t54k" crossorigin="anonymous" /> 53<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-BoldItalic.woff2" as="font" integrity="sha384-VXCZiVXgFVb8ZgKsB01abxNTKWJsxIMlvsbHBB1AnHegmEXY9PeKBDGX+q+vwiJb" crossorigin="anonymous" /> 54 55<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat.css?family=Montserrat:300,400,500,600,700,800" as="style" crossorigin="anonymous" /> 56<link rel="stylesheet prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/roboto-mono/roboto-mono.css?family=Roboto+Mono&display=swap" as="style" crossorigin="anonymous" /> 57<link rel="stylesheet prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat-thin/montserrat-thin.css?family=Montserrat+Thin" as="style" crossorigin="anonymous" /> 58<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/text-security-disc/text-security-disc.css?family=text-security-disc" as="style" crossorigin="anonymous" /> 59<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/fontawesome/fontawesome.css?family=Font+Awesome+5+Free" as="style" integrity="sha384-xkLuBrLSvbftNLqj338rw1b93CwTlEh6ytgnKV7E+UJ4uYfz+abj6FKdfejZ+SAr" crossorigin="anonymous" /> 60 61<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/opendyslexic.css" as="style" crossorigin="anonymous" /> 62<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/arvo.css" as="style" crossorigin="anonymous" /> 63
64<script type="text/x-template" id="cookies-header"> 65 <div id="cookies-header-overlay" v-if="show"> 66 <div id="cookies-header-container"> 67 <section class="cookie-section-container"> 68 <img src="https://f.hubspotusercontent30.net/hubfs/515431/icon-cookie.svg" /> 69 <div class="middle-section"> 70 <p> 71 Our website uses cookies to provide you with the best possible experience.<br /> 72 We do not make this information available to third parties.<br /> 73 74 <a href="https://www.nuiteq.com/privacy" target="_blank">Learn more</a>. 75 76 </p> 77 </div> 78 79 <div class="button-section"> 80 <button class="button-primary" @click="onAllowAll">Allow all cookies</button> 81 <button class="button-secondary" @click="onDeny">Deny</button> 82 </div> 83 </section> 84 <p v-if="gsigninAttempt" id="google-cookie-banner-msg">Sign in with Google is disabled, to enable it you must allow all cookies.</p> 85 </div> 86 </div> 87</script>
87 88 89 90 91 92 </head> 93 94 <body class="home-guest-body"> 95 <div class="home-guest-background"> 96 <div class="background-part background-left"></div> 97 <div class="background-part background-right"></div> 98 </div> 99 100
100<script type="text/x-template" id="call-devices-setup-component-template"> 101 <div class="call-devices-setup-component"> 102 <section> 103 <video v-show="isVideoEnabled === true" id="mediaVideoPreview"></video> 104 <section v-show="isVideoEnabled === false"> 105 <img src="/img/gui/join-call-dec-2022/camera_off_icon.svg" alt="camera off icon" /> 106 <p>{{ $t("CAMERA_IS_OFF") }}</p> 107 </section> 108 <menu> 109 <li> 110 <img v-show="!isVideoEnabled" v-on:click="turnCamera(true)" src="/img/gui/join-call-dec-2022/cameraOff.svg" alt="camera off" v-bind:nw-tooltip-text="tooltipTexts.camera_off_click_on" /> 111 <img v-show="isVideoEnabled" v-on:click="turnCamera(false)" src="/img/gui/join-call-dec-2022/cameraOn.svg" alt="camera on" v-bind:nw-tooltip-text="tooltipTexts.camera_on_click_off" /> 112 </li> 113 <li> 114 <img v-show="!isAudioInputEnabled" v-on:click="turnMicrophone(true)" src="/img/gui/join-call-dec-2022/micOff.svg" alt="microphone off" v-bind:nw-tooltip-text="tooltipTexts.mic_on_click_off" /> 115 <img v-show="isAudioInputEnabled" v-on:click="turnMicrophone(false)" src="/img/gui/join-call-dec-2022/micOn.svg" alt="microphone on" v-bind:nw-tooltip-text="tooltipTexts.mic_off_click_on" /> 116 </li> 117 </menu> 118 </section> 119 <section class="call-devices-setup-component-answered"> 120 <div class="call-devices-setup-component-userlist" v-bind:class="{ empty: userlist.length === 0 }" v-show="showUsersOnBoard === true" nw-tooltip-direction="right" nw-tooltip-offset-x="20" v-bind:nw-tooltip-text="userlist.join('BRBR')"> 121 <img src="/img/gui/join-call-dec-2022/user_friends.svg" alt="Participants icon" class="join-board-setup-component-userlist-icon" v-if="userlist.length > 0" /> 122 <img src="/img/gui/join-call-dec-2022/no_user_friends.svg" alt="Participants icon" class="join-board-setup-component-userlist-icon" v-else /> 123 {{ usersOnBoard }} 124 </div> 125 <div class="call-devices-setup-component-answered-panel panel-left"> 126 <div class="call-devices-setup-component-answered-panel-group" v-bind:class=" { disabled: isNameEnabled === false }" v-if="nameVisible === true"> 127 <span class="call-devices-setup-component-answered-panel-group-title"> 128 {{ $t("YOUR_NAME") }} 129 </span> 130 131 <input 132 type="text" 133 ref="userNameInput" 134 class="call-devices-setup-component-answered-panel-group-input" 135 v-model="userName" 136 v-bind:class="{ error: userNameError === true }" /> 137 138 <span class="call-devices-setup-component-answered-panel-group-error" v-if="errorCode !== null"> 139 {{ errorMessages[errorCode] ?? 'Unknown error.' }} 140 </span> 141 </div> 142 143 <div class="call-devices-setup-component-join-buttons"> 144 <button 145 class="generic-rounded-button filled" 146 v-bind:class="{ deactivated: !canJoinCall }" 147 v-bind:nw-tooltip-text="joinCallTooltipText" 148 v-on:click="joinCall"> 149 {{ $t("JOIN_CALL") }} 150 </button> 151 <button 152 class="generic-rounded-button button-secondary" 153 v-bind:class="{ deactivated: !canJoinWhiteboard }" 154 v-bind:nw-tooltip-text="joinWhiteboardTooltipText" 155 v-on:click="joinWhiteboard"> 156 {{ $t("GO_TO_WHITEBOARD") }} 157 </button> 158 </div> 159 160 <div class="call-devices-setup-component-video-settings-button" v-bind:class="{ empty: userName.length === 0 }" v-on:click="showDevicesSelection = true"> 161 <img src="/img/gui/video-settings.svg" alt="video settings icon" class="join-board-setup-component-userlist-icon" /> 162 {{ $t("VIDEO_AUDIO_SETTINGS") }} 163 </div> 164 165 <div class="call-devices-setup-component-advanced-screen-cover" v-if="showDevicesSelection === true" v-on:click="showDevicesSelection = false"></div> 166 <div class="call-devices-setup-component-advanced" v-if="showDevicesSelection === true"> 167 <div class="call-devices-setup-component-advanced-title"> 168 {{ $t("CAMERA_AUDIO_SETTINGS") }} 169 </div> 170 171 <button class="call-devices-setup-component-advanced-close" v-on:click="showDevicesSelection = false"> 172 <img src="/img/gui/close.svg" alt="Close button"> 173 </button> 174 175 <div class="call-devices-setup-component-advanced-content"> 176 <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isVideoAvailable === false }" v-if="videoVisible === true">
177 <span class="call-devices-setup-component-advanced-group-title"> 178 {{ $t("CAMERA") }} 179 </span> 180 181 <custom-select 182 class="call-devices-setup-component-advanced-group-select video-select" 183 no-options="No camera detected" 184 label-key="label" 185 value-key="deviceId" 186 v-bind:options="videoOptions" 187 v-bind:value="selectedVideo" 188 v-on:change="onVideoChanged"> 189 </custom-select> 190 191 <custom-select 192 class="call-devices-setup-component-advanced-group-select video-resolution-select" 193 v-if="isMediasoup" 194 :options="cameraResolutions" 195 v-on:change="onVideoResolutionChanged" 196 value-key="value" 197 label-key="label" 198 :value="selectedVideoResolution"> 199 </custom-select> 200 201 202 <div v-if="!isMediasoup" class="call-devices-setup-component-advanced-group-toggle"> 203 <span> 204 {{ $t("FORCE_720P") }} 205 206 <help-icon 207 additional-class="no-ellipsis" 208 spacing-left 209 v-bind:text="$t('VIDEO_RESOLUTION_TOOLTIP')"></help-icon> 210 </span> 211 212 <button v-on:click="toggle720p"> 213 <img v-if="videoForce720p" src="/img/gui/remoteEditOn.svg" alt="Toggle on"> 214 <img v-else src="/img/gui/remoteEditOff.svg" alt="Toggle off"> 215 </button> 216 </div> 217 218 </div> 219 220 <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isAudioOutputAvailable === false }" v-if="audioOutputVisible === true"> 221 <span class="call-devices-setup-component-advanced-group-title"> 222 {{ $t("SPEAKER") }} 223 </span> 224 225 <custom-select 226 class="call-devices-setup-component-advanced-group-select audio-output-select" 227 no-options="Default speaker selected" 228 label-key="label" 229 value-key="deviceId" 230 v-bind:options="audioOutputOptions" 231 v-bind:value="selectedAudioOutput" 232 v-on:change="onAudioOutputChanged"> 233 </custom-select> 234 235 <div class="call-devices-setup-component-advanced-group-vu-meter"> 236 <audio id="sound-test-audio" controls src="/sound/sound-test/test-speaker.mp3">Sound test</audio> 237 <button class="generic-rounded-button filled" 238 v-on:click="testAudioOutput"> 239 <img src="/img/gui/join-call-dec-2022/soundTest.svg" alt="volume icon" /> 240 {{ $t("TEST") }} 241 </button> 242 243 <div class="vu-meter-item" v-for="level in 9" v-bind:class="{ on: media.preview.output.level > (level - 1) * 8 }"></div> 244 </div> 245 </div> 246 247 <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isAudioInputAvailable === false }" v-if="audioInputVisible === true"> 248 <span class="call-devices-setup-component-advanced-group-title"> 249 {{ $t("MICROPHONE") }} 250 </span> 251 252 <custom-select 253 class="call-devices-setup-component-advanced-group-select audio-input-select" 254 no-options="No microphone detected" 255 label-key="label" 256 value-key="deviceId" 257 v-bind:options="audioInputOptions" 258 v-bind:value="selectedAudioInput" 259 v-on:change="onAudioInputChanged"> 260 </custom-select> 261 262 <div class="call-devices-setup-component-advanced-group-vu-meter"> 263 <div class="vu-meter-item" v-for="level in 12" v-bind:class="{ on: media.preview.audio.level > (level - 1) * 8 }"></div> 264 </div> 265 </div> 266 </div> 267 </div> 268 </div> 269 </section> 270 </div> 271</script>
271 272
273<script type="text/x-template" id="call-video-effects-component-template"> 274 275 <div class="call-video-effects-component"> 276 <div class="call-video-effects-component-selection"> 277 <div class="call-video-effects-component-selection-item" v-on:click="setVideoEffect('none')"> 278 <img src="/img/home/common/no-video-avatar.svg" class="call-video-effects-component-selection-item-no-video" alt="No video avatar" /> 279 280 <video id="mediaVideoPreviewEffectNone"></video> 281 282 <img src="/img/gui/video-effect/check.svg" class="call-video-effects-component-selection-item-check" alt="" v-if="selectedEffect === 'none'" /> 283 284 <div class="call-video-effects-component-selection-item-name"> 285 <img src="/img/gui/video-effect/none.svg" class="call-video-effects-component-selection-item-icon" alt="" /> 286 287 {{ $t('VIDEO_EFFECT_NONE') }} 288 </div> 289 </div> 290 291 <div class="call-video-effects-component-selection-item" v-on:click="setVideoEffect('blur')"> 292 <img src="/img/home/common/no-video-avatar.svg" class="call-video-effects-component-selection-item-no-video blur" alt="No video avatar" /> 293 294 <video id="mediaVideoPreviewEffectBlur"></video> 295 296 <img src="/img/gui/video-effect/check.svg" class="call-video-effects-component-selection-item-check" alt="" v-if="selectedEffect === 'blur'" /> 297 298 <div class="call-video-effects-component-selection-item-name"> 299 <img src="/img/gui/video-effect/blur.svg" class="call-video-effects-component-selection-item-icon" alt="" /> 300 301 {{ $t('VIDEO_EFFECT_BLUR') }} 302 </div> 303 </div> 304 </div> 305 306 <div class="call-video-effects-component-title"> 307 {{ $t('BLUR_VIDEO_BACKGROUND') }} 308 309 <help-icon 310 direction="bottom" 311 offset-y="10" 312 spacing-left 313 v-bind:nw-tooltip-text="$t('VIDEO_EFFECT_BLUR_HELP')"></help-icon> 314 </div> 315 316 <div class="call-video-effects-component-buttons"> 317 <button class="rounded-button outlined call-video-effects-component-buttons-button" v-on:click="onCancel"> 318 {{ $t('CANCEL') }} 319 </button> 320 321 <button class="rounded-button filled call-video-effects-component-buttons-button" v-on:click="onConfirm"> 322 {{ $t('OK') }} 323 </button> 324 </div> 325 </div> 326</script>
326 327
328<script type="text/x-template" id="join-board-component-template"> 329 <div class="join-board-component"> 330 <section class="join-board-component-loading" v-if="showLoading === true"> 331 <loading-spinner></loading-spinner> 332 </section> 333 334 335 <section class="join-board-login-prompt" v-if="showLoginPrompt === true"> 336 <join-board-login-prompt></join-board-login-prompt> 337 </section> 338 339 <section class="join-board-component-sms" v-if="showSmsVerificationTab === true"> 340 <join-board-sms 341 v-on:phoneverified="considerPhoneVerified"> 342 </join-board-sms> 343 </section> 344 345 <section class="join-board-component-bankid" v-if="showBankIdTab === true"> 346 <join-board-bankid 347 v-bind:board-id="boardId" 348 v-on:bankid-checked="bankIdChecked"> 349 </join-board-bankid> 350 </section> 351 352 <section class="join-board-component-password" v-if="showPasswordTab === true"> 353 <join-board-password 354 v-bind:board-id="boardId" 355 v-bind:isLoggedIn="isLoggedIn" 356 v-on:cancel="cancel" 357 v-on:password-checked="passwordChecked" 358 v-on:show-login="$emit('show-login')" 359 > 360 </join-board-password> 361 </section> 362 363 <section class="join-board-component-setup" v-if="showJoinBoardSetupTab === true"> 364 <join-board-setup 365 v-bind:logged-in="isLoggedIn" 366 v-bind:bank-id-name="bankIdName" 367 v-bind:board-id="boardId" 368 v-bind:page-num="pageNum" 369 v-bind:has-cancel="hasCancel === true" 370 v-bind:has-call="hasCall === true" 371 v-bind:has-waiting-room="hasWaitingRoom === true" 372 v-bind:call-provider-type="callProviderType" 373 v-bind:socket-url="socketUrl" 374 v-on:cancel="cancel"> 375 </join-board-setup> 376 </section> 377 378 <section class="join-board-deleted" v-if="showBoardDeleted"> 379 <board-deleted-info 380 :title="$t('BOARD_IS_DELETED')" 381 :content="deletedPopUpContent" 382 :confirm-text="(boardCreator && boardTrash) ? $t('GO_TO_TRASH') : $t('OK')" 383 @close="cancel" 384 :can-restore-from-trash="boardTrash && boardCreator" 385 :show-cancel-button="(boardCreator && boardTrash)" 386 event-is-from="Home"> 387 </board-deleted-info> 388 </section> 389 390 <section class="join-board-deleted" v-if="showBoardNotFound"> 391 <board-deleted-info 392 :title="$t('MEETING_NOT_FOUND')" 393 :content="this.$t('CHECK_MEETING_LINK')" 394 :confirm-text="$t('OK')" 395 :show-cancel-button="false" 396 @close="cancel"> 397 </board-deleted-info> 398 </section> 399 </div> 400</script>
400 401
402<script type="text/x-template" id="join-board-bankid-component-template"> 403 <div class="join-board-bankid-component"> 404 <div class="join-board-bankid-component-title"> 405 <img src="/img/home/common/bankid.svg" alt="BankID logo" class="join-board-bankid-component-title-logo" /> 406 407 {{ $t('JOIN_USING_BANKID') }} 408 </div> 409 410 <span class="join-board-bankid-component-text" v-html="$t('JOIN_USING_BANKID_INSTRUCTIONS')"></span> 411 412 <loading-spinner v-if="showLoading === true"></loading-spinner> 413 414 <div v-if="showQRCode === true" v-html="qrCode.svg()"> 415 <!-- Will hold the QRCode --> 416 </div> 417 418 <div class="join-board-bankid-component-error" v-if="showError === true"> 419 <img src="/img/home/common/exclamation-triangle.svg" alt="Exclamation triangle icon" class="join-board-bankid-component-error-image" /> 420 421 <span class="join-board-bankid-component-error-text" v-html="$t('BANKID_LOGIN_CANCELED')"></span> 422 </div> 423 424 <div class="join-board-bankid-component-buttons"> 425 <button class="rounded-button filled join-board-bankid-component-buttons-button" v-on:click="tryAgain" v-if="showError === true"> 426 {{ $t('TRY_AGAIN') }} 427 </button> 428 429 <button class="rounded-button filled join-board-bankid-component-buttons-button" v-on:click="openBankId"> 430 {{ $t('OPEN_BANKID_ON_THIS_DEVICE') }} 431 </button> 432 </div> 433 </div> 434</script>
434 435
436<script type="text/x-template" id="join-board-password-component-template"> 437 <div class="join-board-password-component" v-bind:class="{ disabled: working === true }"> 438 <span class="join-board-password-component-title"> 439 {{ $t('PASSWORD') }} 440 </span> 441 442 <div class="join-board-password-wrapper"> 443 <div class="join-board-password-component-input-container"> 444 <img src="/img/home/common/password-key.svg" class="join-board-password-component-key" /> 445 446 <password-input 447 ref="passwordInput" 448 class="join-board-password-component-input" 449 v-model="password" 450 v-bind:visible="passwordVisible === true" 451 v-bind:class="{ error: passwordError === true }" 452 v-bind:disabled="working === true" 453 v-bind:placeholder="$t('PASSWORD')" 454 v-on:keyup="validatePassword" 455 v-on:change="validatePassword" 456 v-on:keydown.enter="confirmPassword"> 457 </password-input> 458 459 <img src="/img/home/common/eye-closed.svg" class="join-board-password-component-eye" v-show="passwordVisible === false" v-on:click="togglePasswordVisibility" /> 460 461 <img src="/img/home/common/eye-open.svg" class="join-board-password-component-eye" v-show="passwordVisible === true" v-on:click="togglePasswordVisibility" /> 462 </div> 463 464 <div class="err-message" v-show="wrongPasswordErr == true"> 465 <span>{{ $t("PASSWORD_INCORRECT") }}</span> 466 </div> 467 </div> 468 469 <div class="join-board-password-component-buttons"> 470 <button class="rounded-button outlined" v-on:click="cancelPassword(); buttonPressed('Join board with password modal', 'Cancel');"> 471 {{ $t("CANCEL") }} 472 </button> 473 474 <button class="rounded-button filled" v-on:click="confirmPassword(); buttonPressed('Join board with password modal', 'Join');"> 475 {{ $t("JOIN") }} 476 </button> 477 </div> 478 <div class="want-to-login" v-if="!isLoggedIn"> 479 <i18n path="WANT_TO_LOGIN" tag="p"> 480 <template v-slot:login> 481 <button class="login" @click="$emit('show-login'); buttonPressed('Join board with password modal', 'login')">{{ $t("LOGIN") }}</button> 482 </template> 483 </i18n> 484 </div> 485 </div> 486</script>
486 487
488<script type="text/x-template" id="join-board-setup-component-template"> 489 <main class="join-board-setup-component" v-bind:class="{ disabled: joiningWithoutWaitingRoom === true }"> 490 <call-devices-setup 491 v-bind:audio-input-enabled="audioEnabled" 492 audio-input-visible 493 audio-output-enabled 494 audio-output-visible 495 name-visible 496 v-bind:video-enabled="videoEnabled" 497 video-visible 498 v-bind:userlist="userList" 499 v-bind:show-users-on-board="showUsersOnBoard === true" 500 v-bind:users-on-board="usersOnBoard" 501 v-bind:call-provider-type="callProviderType" 502 v-bind:can-preview="canPreview === true" 503 v-bind:error-code="errorCode" 504 v-bind:has-media-capabilities="hasCall === true" 505 v-bind:name-enabled="canChangeName === true" 506 v-bind:user-name.sync="userName" 507 v-bind:user-name-error="userNameError === true" 508 v-bind:video-effect="selectedVideoEffect" 509 v-on:permissions-answered="permissionsAnswered" 510 v-on:audio-permission-changed="audioPermissionChanged" 511 v-on:video-permission-changed="videoPermissionChanged" 512 v-show="showCallDevicesSetup === true" 513 v-on:microphone-setting="microphoneSetting" 514 v-on:video-setting="videoSetting" 515 v-on:video-resolution-setting="videoResolutionSetting" 516 v-on:speaker-setting="speakerSetting" 517 v-on:effect-setting="videoEffectSetting" 518 v-on:join-board="joinBoard" 519 v-on:enable-camera="turnCamera" 520 v-on:enable-microphone="turnMicrophone" 521 > 522 </call-devices-setup> 523 524 <section> 525 <span class="join-board-setup-component-title" v-show="showTitle && showWaitingRoom" v-html="titleContent"></span> 526 <div class="join-board-setup-component-waiting-room" v-show="showWaitingRoom === true"> 527 528 <img src="/img/home/common/waiting-room-creator-offline.svg" alt="Waiting room image" class="join-board-setup-component-waiting-room-image" v-show="waitingRoomCreatorOnline === false" /> 529 530 <img src="/img/home/common/waiting-room-creator-online.svg" alt="Waiting room image" class="join-board-setup-component-waiting-room-image" v-show="waitingRoomCreatorOnline === true" /> 531 </div> 532 </section> 533 </main> 534</script>
534 535
536<script type="text/x-template" id="join-board-sms-component-template"> 537 <main> 538 <div class="join-board-sms-component-phone-entry" v-if="showingScreen === 'PHONE_NUMBER_ENTRY'"> 539 <h4><strong>{{ $t("SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT1") }}</strong></h4> 540 <h4><strong>{{ $t("SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT2") }}</strong></h4> 541 <p>{{ $t("SMS_VERIFICATION_DISABLED_COUNTRIES") }}</p> 542 <p>{{ $t("SMS_VERIFICATION_HOST_REQUIRES_MSG") }}</p> 543 <sms-verify-entry-component 544 :action-button="$t('SMS_VERIFICATON_SEND_CODE')" 545 @update-phone-number="updatePhoneNumber" 546 @show-otp-modal="showNextScreen"/> 547 </div> 548 549 <div class="join-board-sms-component-otp-entry" v-if="showingScreen === 'OTP_ENTRY'"> 550 <sms-verify-otp-entry-component 551 @show-otp-verified="showNextScreen" 552 :full-phone-number="phonenumber"/> 553 </div> 554 555 <div class="join-board-sms-component-verify-success" v-if="showingScreen === 'SMS_VERIFY_SUCCESS'"> 556 <sms-verification-completed 557 @phone-verified="$emit('phoneverified')" 558 :subtitle1="$t('SMS_VERIFICATION_SUCCESS_SUBTITLE1', { 0: phonenumber })" 559 :subtitle2="$t('SMS_VERIFICATION_SUCCESS_SUBTITLE2')"/> 560 </div> 561 562 <div class="join-board-sms-component-consent" v-if="showingScreen === 'CONSENT'"> 563 <sms-re-verification 564 :host-requires-msg="$t('SMS_VERIFICATION_HOST_REQUIRES_MSG')" 565 :concent-code-send="$t('SMS_VERIFICATON_CONSENT_CODE_SEND', {'0': phonenumber })" 566 :wrong-otp-entered="wrongOtpEntered" 567 @show-otp-modal="showNextScreen" 568 :phonenumber= "phonenumber"/> 569 </div> 570 </main> 571</script>
vendor: 1 bytes, line 571
571
572<script type="text/x-template" id="loading-spinner-component-template"> 573 <div class="loading-spinner-component"> 574 <img src="/img/home/common/loading-spinner.svg" alt="Loading spinner image" class="loading-spinner-component-image" v-bind:width="size" /> 575 </div> 576</script>
576 577
578<script type="text/x-template" id="join-board-login-component-template"> 579 <main class="join-board-login-component"> 580 <h3>{{ $t("SMS_VERIFICATION_HOST_REQUIRES_MSG") }}</h3> 581 <button class="generic-rounded-button filled login-button" v-on:click="goToLogin">{{ $t("SMS_VERIFICATION_LOGIN") }}</button> 582 <button class="generic-rounded-button register-button" v-if="showRegister || showSignup" v-on:click="goToRegister">{{ $t("SMS_VERIFICATION_REGISTER") }}</button> 583 </main> 584</script>
584 585 586<!-- template for the NewModal component -->
587<script type="x/template" id="new-modal-template"> 588<transition name="modal"> 589 <div class="modal-mask" v-on:click="close" v-show="show"> 590 <div class="new-modal-container" v-on:click.stop> 591 <slot></slot> 592 </div> 593 </div> 594</transition> 595</script>
595 596
597<script type="text/x-template" id="forgot-password-page-template"> 598 <div class="forgot-password-page-wrapper"> 599 <section class="forgot-password-page-form-wrapper" v-bind:class="{ disabled: working === true }" v-if="emailSent === false"> 600 <span class="forgot-password-page-form-title"> 601 {{ $t('FORGOT_YOUR_PASSWORD') }} 602 </span> 603 604 <span class="forgot-password-page-form-text" v-html="$t('FORGOT_YOUR_PASSWORD_INSTRUCTIONS')"></span> 605 606 <input 607 type="email" 608 name="username" 609 ref="emailInput" 610 v-model="email" 611 v-bind:class="{ error: emailError === true }" 612 v-bind:disabled="working === true" 613 v-bind:placeholder="$t('EMAIL')" 614 v-on:keyup="validateEmail" 615 v-on:change="validateEmail" 616 v-on:keydown.enter="confirmPasswordReset" /> 617 618 <div class="forgot-password-page-buttons"> 619 <button class="rounded-button outlined" v-on:click="cancelPasswordReset"> 620 {{ $t("CANCEL") }} 621 </button> 622 623 <button class="rounded-button filled" v-on:click="confirmPasswordReset"> 624 {{ $t('SEND_EMAIL') }} 625 </button> 626 </div> 627 </section> 628 629 <section class="forgot-password-page-email-sent-wrapper" v-if="emailSent === true"> 630 <img 631 src="/img/home/guest/forgot/emailsent.svg" 632 alt="Email sent decorator image" 633 class="forgot-password-page-email-sent-image" /> 634 635 <span class="forgot-password-page-email-sent-title"> 636 {{ $t('FORGOT_YOUR_PASSWORD_CONFIRM_TITLE') }} 637 </span> 638 639 <p class="forgot-password-page-email-sent-subtitle" v-html="$t('FORGOT_YOUR_PASSWORD_CONFIRM_SUBTITLE')"></p> 640 641 <button class="rounded-button filled forgot-password-page-email-sent-login" v-on:click="goToLogin"> 642 {{ $t('OK') }} 643 </button> 644 </section> 645 </div> 646</script>
646 647
648<script type="text/x-template" id="join-board-page-template"> 649 <div class="join-board-page-wrapper"> 650 <join-board has-cancel v-bind:board-id="boardId" v-bind:page-num="pageNum" @cancel="back" @show-login="showLoginModal = true"></join-board> 651 <login-modal :show="showLoginModal" v-on:close="showLoginModal = false"></login-modal> 652 653 </div> 654</script>
654 655
656<script type="text/javascript"> 657 const legalLinks = {"dataProcessingAgreement":"https://www.nuiteq.com/privacy","privacyPolicy":"https://www.nuiteq.com/privacy","termsOfUse":"https://www.nuiteq.com/privacy"}; 658</script>
658 659
660<script type="text/x-template" id="join-terms-page-template"> 661 <join-terms></join-terms> 662</script>
662 663
664<script type="text/x-template" id="login-page-template"> 665 <form class="create-form" id="login-form" method="POST" :action="loginActionString"> 666 <h3 class="title" :class="{ 'margin-no-error': loginError !== true }"> 667 {{ $t('LOGIN') }} 668 </h3> 669 670 <div v-if="googleSSOEnabled && isGoogleLoginAvailable" class="google-button" :class="{ 'margin-error': loginError === true }" v-on:click="doGoogleLogin"> 671 <div> 672 <span class="icon"></span> 673 <span class="text">{{ $t('SIGN_IN_WITH_GOOGLE') }}</span> 674 </div> 675 </div> 676 <div v-else-if="googleSSOEnabled" class="google-button" :class="{ 'margin-error': loginError === true }" v-on:click="document.showCookiesHeader()" nw-tooltip-direction="top" nw-tooltip-offset-y="-10" :nw-tooltip-text="googleSignInDisabled"> 677 <div> 678 <span class="icon"></span> 679 <span class="text">{{ $t('SIGN_IN_WITH_GOOGLE') }}</span> 680 </div> 681 </div> 682 683 <div v-if="microsoftSSOEnabled" class="microsoft-button" v-on:click="doMSLogin"> 684 <div> 685 <span class="icon"></span> 686 <span class="text">{{ $t('SIGN_IN_WITH_MICROSOFT') }}</span> 687 </div> 688 </div> 689 690 <p class="loginError" v-if="loginError === true"> 691 {{ $t('EMAIL_OR_PASSWORD_INCORRECT') }} 692 </p> 693 694 <div class="input-group"> 695 <span class="email-placeholder-image"></span> 696 697 <input 698 class="create-user" 699 type="email" 700 name="username" 701 v-model="email" 702 v-bind:class="{ invalid: loginError === true || emailError === true }" 703 v-bind:placeholder="$t('EMAIL')" 704 v-on:keyup="loginError = false" 705 v-on:change="loginError = false" 706 v-on:keydown.enter="doLogin" /> 707 </div> 708 709 <div class="input-group"> 710 <span class="password-placholder-image-key"></span> 711 712 <password-input 713 class="create-password" 714 name="password" 715 autocomplete 716 v-model="password" 717 v-bind:class="{ invalid: (loginError === true || passwordError === true) }" 718 v-bind:placeholder="$t('PASSWORD')" 719 v-bind:visible="passwordVisible === true" 720 v-on:keyup="loginError = false" 721 v-on:change="loginError = false" 722 v-on:keydown.enter="doLogin"> 723 </password-input> 724 725 <span 726 class="password-placholder-image-eye" 727 v-bind:class="{ 'password-placholder-image-eye-open': passwordVisible === true, 728 'password-placholder-image-eye-close': passwordVisible === false }" 729 v-on:click="passwordVisible = !passwordVisible"> 730 </span> 731 </div> 732 733 <router-link v-if="window.location.pathname.startsWith('/board') === false" to="/forgot" class="forgot-password-link"> 734 {{ $t('FORGOT_YOUR_PASSWORD') }} 735 </router-link> 736 <a :href="rootUrl.replace(/\/$/, '') + '/forgot'" class="forgot-password-link" v-else> 737 {{ $t('FORGOT_YOUR_PASSWORD') }} 738 </a> 739 740 <div @click="rememberMe = !rememberMe" class="checkbox-wrapper"> 741 <div class="input checkbox"> 742 <i class="fas fa-check" v-show="rememberMe"></i> 743 </div> 744 <p class="keep-signed-in">{{ $t('KEEP_ME_SIGNED_IN') }}</p> 745 <input type="checkbox" name="rememberMe" v-model="rememberMe" v-show="false"> 746 </div> 747 748 749 750 <button class="rounded-button filled login-button" v-on:click="doLogin"> 751 {{ $t('LOG_IN') }} 752 </button> 753 </form> 754</script>
754 755
756<script type="text/x-template" id="join-page-template"> 757 <div class="join-section-wrapper"> 758 <div> 759 <img src="/img/home/guest/login/iconjoinmeeting.svg" alt="Join meeting" /> 760 761 <p>{{ $t('OR_JOIN_A_MEETING') }}</p> 762 </div> 763 764 <div class="form-inner-wrapper"> 765 <span class="keyboard-input-placeholder"></span> 766 767 <input 768 class="join-id" 769 type="text" 770 name="boardId" 771 v-model="boardId" 772 v-bind:class="{ error: errMsg.length > 0 }" 773 v-on:keydown.enter="joinBoard" 774 v-bind:placeholder="$t('ENTER_CODE_OR_LINK')" 775 autofocus /> 776 777 <button class="rounded-button filled join-button" v-on:click="joinBoard"> 778 {{ $t('JOIN') }} 779 </button> 780 </div> 781 782 <span class="err-message" v-html="errMsg"></span> 783 784 <board-deleted-info-popup 785 :show="showBoardDeletedModal" 786 :title="$t('BOARD_IS_DELETED')" 787 :content="$t('CONTACT_THE_PERSON_SENT_LINK')" 788 :confirm-text="$t('OK')" 789 @close="showBoardDeletedModal = false" 790 :show-cancel-button=false 791 event-is-from="Login page" 792 ></board-deleted-info-popup> 793 </div> 794</script>
794 795
796<script type="text/x-template" id="not-found-page-template"> 797 <div class="home-guest-not-found-page-wrapper"> 798 <img src="/img/home/common/not-found.svg" alt="Not found image" /> 799 800 <span> 801 {{ $t("CANT_FIND_PAGE") }} 802 </span> 803 804 <span> 805 {{ $t("SORRY_FOR_INCONVENIENCE") }} 806 </span> 807 808 <router-link to="/"> 809 {{ $t("TAKE_ME_HOME") }} 810 </router-link> 811 </div> 812</script>
812 813
814<script type="text/x-template" id="reset-password-template"> 815 <section class="reset-password-loading" v-if="loading === true"> 816 <img src="/img/gui/spinner_white.svg" class="loading-spinner" /> 817 </section> 818 819 <section class="reset-password-form-wrapper" v-else-if="loading === false && resetPassword.successful === false"> 820 <h2 class="reset-password-title"> 821 {{ $t('RESET_PASSWORD') }} 822 </h2> 823 824 <p class="reset-password-subtitle"> 825 {{ $t('RESET_PASSWORD_INSTRUCTIONS') }} 826 </p> 827 828 <div class="reset-password-input-group"> 829 <span class="reset-password-placeholder-image"></span> 830 831 <password-input 832 ref="newPassword" 833 strength-indicator 834 v-model="resetPassword.newPassword" 835 v-bind:class="{ error: resetPassword.newPasswordError !== null, 836 disabled: resetPassword.working === true }" 837 v-bind:placeholder="$t('NEW_PASSWORD')" 838 v-bind:visible="newPasswordVisible === true" 839 v-on:blur="validateNewPassword" v-on:input="validateNewPassword"> 840 </password-input> 841 842 <span 843 @click="newPasswordVisible = !newPasswordVisible" 844 class="reset-password-mask-eye" 845 v-bind:class="{ 'password-placholder-image-eye-open': newPasswordVisible === true, 846 'password-placholder-image-eye-close': newPasswordVisible === false }"> 847 </span> 848 </div> 849 850 <div class="reset-password-input-group"> 851 <span class="reset-password-placeholder-image"></span> 852 853 <password-input 854 ref="confirmPassword" 855 v-model="resetPassword.confirmPassword" 856 v-bind:class="{ error: resetPassword.confirmPasswordError !== null, 857 disabled: resetPassword.working === true }" 858 v-bind:placeholder="$t('CONFIRM_PASSWORD')" 859 v-bind:visible="confirmPasswordVisible === true" 860 v-on:blur="validateConfirmPassword" v-on:input="validateConfirmPassword"> 861 </password-input> 862 863 <span 864 @click="confirmPasswordVisible = !confirmPasswordVisible" 865 class="reset-password-mask-eye" 866 v-bind:class="{ 'password-placholder-image-eye-open': confirmPasswordVisible === true, 867 'password-placholder-image-eye-close': confirmPasswordVisible === false }"> 868 </span> 869 </div> 870 871 <p 872 class="reset-password-no-match-error" 873 v-if="resetPassword.confirmPasswordError !== null"> 874 {{ resetPassword.confirmPasswordError }} 875 </p> 876 877 <button 878 class="rounded-button filled" 879 v-bind:class="{ 'on-error': resetPassword.confirmPasswordError !== null, 880 disabled: resetPassword.confirmPasswordError !== null}" 881 @click="resetPasswordFn"> 882 {{ $t('CONFIRM') }} 883 </button> 884 </section> 885 886 <section class="reset-password-successful-wrapper" v-else-if="resetPassword.successful === true"> 887 <span class="reset-password-successful"> 888 {{ $t('PASSWORD_RESET_SUCCESSFUL') }} 889 </span> 890 891 <button class="rounded-button filled" @click="goToLogin"> 892 {{ $t('LOGIN') }} 893 </button> 894 </section> 895</script>
895 896 897<!-- template for the StickyControls component -->
898<script type="x/template" id="sticky-controls-component-template"> 899 <div class="sticky-controls" v-show="show"> 900 <div class="top-row"> 901 <img class="icon" v-if="this.iconurl && this.iconurl.length > 0" :src="iconurl" alt="Notification icon"> 902 903 <p v-html="this.message"></p> 904 905 <div class="sticky-controls-buttons"> 906 <button class="generic-rounded-button filled sticky-ok" v-if="this.oktext && this.oktext.length > 0" v-on:click="turnon"> 907 <img v-if="this.okiconurl && this.okiconurl.length > 0" :src="okiconurl" alt="Notification confirm"> 908 <span>{{ this.oktext }}</span> 909 </button> 910 911 <button class="generic-rounded-button outlined sticky-cancel" v-if="this.canceltext && this.canceltext.length > 0" v-on:click="close"> 912 <img v-if="this.canceliconurl && this.canceliconurl.length > 0" :src="canceliconurl" alt="Notification cancel"> 913 <span>{{ this.canceltext }}</span> 914 </button> 915 </div> 916 917 <button class="close-button" v-on:click="close"> 918 <img src="/img/gui/close.svg" alt="Close notification"/> 919 </button> 920 </div> 921 <div v-if="this.dontshowkey"> 922 <dont-show-toggle :value.sync="dontShow" v-on:toggle="toggleDontShow" /> 923 </div> 924 </div> 925</script>
925 926 927 928 929 <div id="app" class="home-guest-wrapper"> 930 931 <div id="master-top-notifications"> 932 <div class="sticky-controls-container-guest"> 933 <!-- NOTE: Include this where other sticky controls components are --> 934 935<div v-show="reconnectToBoard.show" class="reconnect-overlay-dark" v-cloak> 936 <sticky_controls_component 937 :show="reconnectToBoard.show" 938 v-on:close="reconnectToBoard.show = false" 939 v-on:turnon="reconnectToBoardAction()" 940 :message="$t('RECONNECT_TO_BOARD_NOTIFICATION')" 941 :oktext="$t('RECONNECT_TO_BOARD_ACTION')"> 942 </sticky_controls_component> 943</div> 944 945 </div> 946 </div> 947 <div class="home-guest-locale-picker" @click="toggleShowLangDropdown()" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()" v-cloak> 948 <div class="home-guest-locale-item"> 949 <img src="/img/gui/globe-regular-black.svg" class="home-guest-locale-icon" />{{ localeName }} 950 </div> 951 <div class="home-guest-locale-item-inactive" v-if="showLangDropdown"> 952 <div v-if="showLangDropdown && locale !== 'en-us' && isLocaleValid('en-us')" v-on:click="setLocale('en-us')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()"> 953 {{ $t('ENGLISH') }} 954 </div> 955 <div v-if="showLangDropdown && locale !== 'sv-se' && isLocaleValid('sv-se')" v-on:click="setLocale('sv-se')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()"> 956 {{ $t('SVENSKA') }} 957 </div> 958 <div v-if="showLangDropdown && locale !== 'es-es' && isLocaleValid('es-es')" v-on:click="setLocale('es-es')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()"> 959 {{ $t('ESPANOL') }} 960 </div> 961 </div> 962 </div> 963 964 <div class="home-guest-wrapper-spacer"></div> 965 966 <div class="home-guest-container"> 967 <div class="home-guest-container-left-panel" v-show="showLeftPanel === true" v-cloak> 968 <img src="/img/home/guest/nuiteq-logo.svg" alt="NUITEQ logo" class="home-guest-container-left-panel-nuiteq-logo" /> 969 970 <div class="home-guest-container-left-panel-text" v-html="leftPanelText" v-show="leftPanelText !== null"></div> 971 972 <img v-bind:src="leftPanelImage" alt="Presentation image" class="home-guest-container-left-panel-presentation-image" v-if="leftPanelImage !== null" /> 973 974 <div class="home-guest-container-left-panel-footer" v-html="leftPanelFooter" v-show="leftPanelFooter !== null"></div> 975 </div> 976 977 <div class="home-guest-container-right-panel"> 978 <img src="/img/home/guest/logo.svg" class="home-guest-wrapper-logo" /> 979 980 <router-view name="card1" class="home-guest-wrapper-content-card home-guest-wrapper-content-card-1"></router-view> 981 982 <router-view name="card2" class="home-guest-wrapper-content-card home-guest-wrapper-content-card-2"></router-view> 983 </div> 984 </div> 985 986 <div class="home-guest-wrapper-spacer"></div> 987 988 <div class="home-guest-wrapper-footer" v-cloak> 989 990 <a :href="locale === 'sv-se' ? 'https://nuiteqstage.se' : 'https://nuiteqstage.se/en'" target="_blank" class="home-guest-wrapper-footer-item"> 991 {{ $t('ABOUT') }} 992 </a> 993 994 995 <span class="home-guest-wrapper-footer-separator"> 996 | 997 </span> 998 999 1000 <a :href="locale === 'sv-se' ? 'https://nuiteqstage.se/sakerhet' : 'https://docs.nuiteq.com/nuiteq-stage-sv/0/security/connecting-to-nuiteq-stage-is-secure'" target="_blank" class="home-guest-wrapper-footer-item"> 1001 {{ $t('SECURITY') }} 1002 </a> 1003 1004 1005 1006 1007 1008 <span class="home-guest-wrapper-footer-separator"> 1009 | 1010 </span> 1011 1012 <a href="https://docs.nuiteq.com/nuiteq-stage/0/0/nuiteq-stage/" target="_blank" class="home-guest-wrapper-footer-item"> 1013 {{ $t('GETTING_STARTED') }} 1014 </a> 1015 1016 1017 <span class="home-guest-wrapper-footer-separator"> 1018 | 1019 </span> 1020 1021 1022 <a :href="locale === 'sv-se' ? 'https://www.nuiteq.com/sv/privacy' : 'https://www.nuiteq.com/privacy'" target="_blank" class="home-guest-wrapper-footer-item"> 1023 {{ $t('PRIVACY') }} 1024 </a> 1025 1026 </div> 1027 </div> 1028 1029
1029<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/js.cookie.min.js" integrity="sha384-ZjQskekkFgZk0c62kpihN8ynzKbgSoJ4ZUAg8P72ujRhwChaKKc4gogqfS2qXWX2" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1029
1029
1030<script type="text/javascript"> 1031 const CookiesApi = Cookies 1032 .withAttributes({ expires: 365 * 10, sameSite: 'strict', path: '/', secure: (window.location.protocol === "https:") }) 1033 .withConverter({ 1034 read: value => decodeURIComponent(value), 1035 write: value => encodeURIComponent(value) 1036 }); 1037</script>
vendor: 1 bytes, line 1037
1037
1038<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/[email protected]" integrity="sha384-cwVe6U8Tq7F/3JIj6xeDzOwuqeChcmRcdYqDGfoYmdAurw7L3f4dFHhEJKfxv96A" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1038
1038
1039<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/vue-i18n.min.js" integrity="sha384-f1fahYRkSuxHbag5UEHzFKTNH1WHQoqBz5LbqJexvA4rV/NJy6NPktwTTCEftmv4" crossorigin="anonymous"></script>
1039 1040 1041
1041<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/vue-router.js" integrity="sha384-UjTf8rxhQFTd2X9BO0mvzDGr0WQDvbWz1xJRsSUsjTm2KDdr7sSJVb4MtPJK+Dr9" crossorigin="anonymous"></script>
1041 1042 1043 1044
1044<script type="text/javascript"> 1045 const csrfToken = 'f986d2c4-33e5-9940-4728-5667e11e5384'; 1046 const userCsrf = '1fb1e94b-3b1e-b9be-ffde-d23d3623c11d'; 1047 const profilename = ""; 1048 const email = ''; 1049 const loginError = false; 1050 const loginAttempts = 0; 1051 const googleSSOEnabled = false; 1052 const googleClientId = '564158516137-nutj6rt4recl83rjodar0qupc2mv4v4q.apps.googleusercontent.com'; 1053 const microsoftSSOEnabled = false; 1054 const microsoftClientId = '81d919e6-0807-4a9b-9151-8fff3421036e'; 1055 const rootUrl = '/'; 1056 const mixPanelConfig = {}; 1057 const locale = "en-us"; 1058 const translations = {"en-us":{"GO_TO_WHITEBOARD":"Go to whiteboard","JOIN_CALL":"Join call","ENGLISH":"English","SVENSKA":"Svenska","ESPANOL":"Español","REMOTE_COLLABORATION":"Lightweight and remote collaboration","JOIN_MEETING":"Join a meeting","OR_JOIN_A_MEETING":"Or join a meeting","ENTER_CODE_OR_LINK":"Enter code or link","JOIN":"Join","CANT_FIND_PAGE":"It looks like we can't find the page that you are looking for.","SORRY_FOR_INCONVENIENCE":"We are sorry for the inconvenience.","TAKE_ME_HOME":"Take me back home","ABOUT":"About","SECURITY":"Security","REGISTER":"Register","GETTING_STARTED":"Getting started","VIDEO_TRAINING":"Video training","FORGOT_YOUR_PASSWORD_INSTRUCTIONS":"Enter your email address and we will send you<br />instructions to set a new password.","CANCEL":"Cancel","SEND_EMAIL":"Send email","FORGOT_YOUR_PASSWORD_CONFIRM_TITLE":"We've sent you an email,","FORGOT_YOUR_PASSWORD_CONFIRM_SUBTITLE":"Please click on the link in the email to set a new password.<br />The link expires after 60 minutes.","OK":"Ok","RESET_PASSWORD":"Reset password","RESET_PASSWORD_INSTRUCTIONS":"Password must be at least 8 characters","NEW_PASSWORD":"New password","CONFIRM_PASSWORD":"Confirm password","PASSWORD_MINIMUM_LENGTH":"Password should be minimum 8 characters","PASSWORDS_DO_NOT_MATCH":"Passwords do not match","CONFIRM":"Confirm","PASSWORD_RESET_SUCCESSFUL":"Password reset successful","JOIN_USING_BANKID":"Join using BankID","JOIN_USING_BANKID_INSTRUCTIONS":"Start the BankID app on your phone and press the QR code icon to scan the QR code.","BANKID_LOGIN_CANCELED":"Login canceled. Please try again by pressing the button below.","TRY_AGAIN":"Try again","OPEN_BANKID_ON_THIS_DEVICE":"Open BankID on this device","TEST_YOUR_SETUP":"Test your setup","CAMERA_IS_OFF":"Camera is off","YOUR_NAME":"Your name","VIDEO_AUDIO_SETTINGS":"Video and audio settings","CAMERA_AUDIO_SETTINGS":"C
1058amera and audio settings","CAMERA":"Camera","VIDEO_RESOLUTION_TOOLTIP":"Choose 720p camera resolution, if you have low bandwidth for improved performance","FORCE_720P":"Limit video feed to 720p","SPEAKER":"Speaker","MICROPHONE":"Microphone","TEST":"Test","USER_NAME_EMPTY_ERR":"Please add your name","USER_NAME_TAKEN_ERR":"This username is already taken, please choose another one.","ALLOW_ACCESS":"Please allow access to your mic and camera","PLEASE_WAIT_FOR_HOST_TO_JOIN":"Please wait for the host<br />to join the board...","PLEASE_WAIT_FOR_HOST_TO_LET_IN":"Please wait for the host<br />to let you in...","USERS_ON_BOARD":"{0}, {1} and {2} other users are on this board","USERS_ON_BOARD_THREE":"{0}, {1} and one other user are on this board","USERS_ON_BOARD_TWO":"{0} and {1} are on this board","USER_ON_BOARD":"{0} is on this board","NO_ONE_JOINED_YET":"No one is currently on this board","BOARD_ID_WRONG_FORMAT":"We don't recognise this, please try again","BOARD_ID_DOES_NOT_EXIST":"Meeting not found, please check that you entered</br>the meeting ID correctly","PRIVACY":"Privacy","DENY":"Deny","WANT_TO_LOGIN":"Do you want to {login}?","PASSWORD_INCORRECT":"Password is incorrect, please try again.","BLUR_VIDEO_BACKGROUND":"Blur video background","VIDEO_EFFECT_BLUR_HELP":"Blur your video background. You can later-onBRBRchange this in the settings, while on a call.","VIDEO_EFFECT_NONE":"None","VIDEO_EFFECT_BLUR":"Blur","JOIN_MEETING_TERMS":"By joining this meeting, I agree to the NUITEQ Stage Terms of Service and Privacy Policy at {0}","BOARD_IS_DELETED":"This board has been deleted","GO_TO_TRASH":"Go to Trash","CONTACT_THE_PERSON_SENT_LINK":"Please contact the person that sent you the link.","CHECK_MEETING_LINK":"Please check that the meeting link is correct","MEETING_NOT_FOUND":"Meeting not found","CAMERA_OFF_CLICK_TO_TURN_ON":"Camera is off. Click to turn camera on.","CAMERA_ON_CLICK_TO_TURN_OFF":"Camera is on. Click to turn camera off.","MICROPHONE_OFF_CLICK_TO_TURN_ON":"Microphone is off. Click to turn microphone on.","MICROPHONE_ON_CLICK_TO_TURN_OFF":"Microphone is on. Click to turn microphone off.","ADD_NAME":"Please add your name","NEED_MIC_TO_JOIN_CALL":"You need a connected microphone to be able to join a call.","CAN_USE_WHITEBOARD":"You can however still use the whiteboard","JOIN_CALL_TOOLTIP":"You will automatically join a call, if one is active.","GO_TO_WHITEBOARD_TOOLTIP":"If you go to the whiteboard, you have an option to join a call.","FIND_OUT_MORE_AT":"Find out more at: {0}","RECONNECT_TO_BOARD_NOTIFICATION":"You are accessing the board from from another tab or window.","RECONNECT_TO_BOARD_ACTION":"Open board here","CAMERA_SETTING_RESOLUTION_LOW":"Low","CAMERA_SETTING_RESOLUTION_MEDIUM":"Medium","CAMERA_SETTING_RESOLUTION_HIGH":"High (HD)","CAMERA_SETTING_RESOLUTION_VERY_HIGH":"Very high (FHD)","CAMERA_SETTING_RESOLUTION_ULTRA":"Ultra (UHD)","COOKIES_CONSENT_1":"Our website uses cookies to provide you with the best possible experience.","COOKIES_CONSENT_2":"We do not make this information available to third parties.","LEARN_MORE":"Learn more","ALLOW_COOKIES":"Allow all cookies","LOGIN":"Login","SIGN_IN_WITH_GOOGLE":"Sign in with Google","SIGN_IN_WITH_GOOGLE_DISABLED":"Sign in with Google is disabled, to enable it you must allow all cookies.","CLICK_TO_MANAGE_COOKIES":"Click to manage cookies.","SIGN_IN_WITH_MICROSOFT":"Sign in with Microsoft","EMAIL_OR_PASSWORD_INCORRECT":"The email address or password is incorrect","EMAIL":"Email","PASSWORD":"Password","FORGOT_YOUR_PASSWORD":"Forgot your password?","KEEP_ME_SIGNED_IN":"Keep me signed in","LOG_IN":"Log in","PASSWORD_STRENGTH_INDICATOR_BLANK":"Blank","PASSWORD_STRENGTH_INDICATOR_WEAK":"Weak","PASSWORD_STRENGTH_INDICATOR_AVERAGE":"Average","PASSWORD_STRENGTH_INDICATOR_STRONG":"Strong","PASSWORD_STRENGTH_INDICATOR_TOOLTIP":"Include capital letters, special characters andBRBRnumbers to increase your password strength.","VERIFICATION_ENABLE":"Enable verification","VERIFICATION_ENABLE_TOOLTIP":"Enable sms verification or BankID verification for the board.","SMS_VERIFICATION_ENABLE":"Require phone number to verify via SMS to join this board","SMS_VERIFICATION_ENABLE_TOOLTIP":"Require phone number to verify via SMS to join this board.","SMS_VERIFICATION_HOST_REQUIRES_MSG":"The host requires phone verification to join this board.","SMS_VERIFICATION_LOGIN":"Already have an account? Login","SMS_VERIFICATION_REGISTER":"Don't have an account? Register","SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT1":"Please fill out your mobile phone number.","SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT2":"We will then SMS you a verification code.","SMS_VERIFICATION_DISABLED_COUNTRIES":"* Currently US/Canad
1058a numbers are not supported for phone verification. Please contact the person that you received the join link from.","SMS_VERIFICATON_CONSENT_CODE_SEND":"Press 'Send code' to receive a code on the phone number associated with your account: [{0}]","SMS_VERIFICATON_SEND_CODE":"Send code","SMS_VERIFICATION_ENTER_CODE_RECEIVED":"Fill out the verification code that you received on your mobile phone.","SMS_VERIFICATION_INCORRECT":"The verification code is incorrect, please try again.","SMS_VERIFICATION_CODE_SENT_TO":"Code sent to: {0}","SMS_VERIFICATION_RESEND_CODE":"Resend code","SMS_VERIFICATION_VERIFY_CODE":"Verify","SMS_VERIFICATION_SUCCESS_TITLE":"Congrats!","SMS_VERIFICATION_SUCCESS_SUBTITLE1":"Your phone number {0} has been successfully verified.","SMS_VERIFICATION_SUCCESS_SUBTITLE2":"Press 'Ok' to join the board.","SMS_VERIFICATION_OK":"Ok","PHONE_FIELD_PLACEHOLDER":"Mobile phone number","SMS_VERIFICATION_WRONG_OTP":"The OTP you entered was incorrect, please request a new OTP"}}; 1059 const translationsEnabled = true; 1060 const supportedLocales = ["en-us","sv-se"]; 1061 const showRegister = false; 1062 const showSignup = true; 1063 const features = {"allowSharingToAnyone":{"enabled":false},"objectDeleteShortcut":{"enabled":true},"shapeTool":{"enabled":true},"translations":{"enabled":true,"defaultLocale":"sv-se","locales":["en-us","sv-se"]},"redeemLicenseCode":{"enabled":true},"autoAlignment":{"enabled":true},"coHost":{"enabled":true},"connectors":{"enabled":true},"videoEffects":{"enabled":false},"feedbackReactions":{"enabled":true},"exportAsImages":{"enabled":true,"host":"188.240.223.244"},"forceWebcamResolution":{"enabled":true},"supportPage":{"enabled":true,"recipients":"[email protected]"},"setupPage":{"enabled":true,"allowed":["[email protected]","[email protected]","[email protected]","[email protected]","[email protected]"]},"stripePayments":{"test":{"secretKey":"","priceId":""},"prod":{"secretKey":"","priceId":""}},"e2ee":{"salt":"y8qTLmp8r4Z8AUDSDWtVLUp3nqCTcCyV","enabled":false},"sfwLessons":{"enabled":true,"loginURL":"https://snow.live/stage/login","lessonScoreEnabled":true},"handwritingRecognition":{"enabled":false},"emoji":{"debug":false},"matrixWidget":{"enabled":false}}; 1064 const redirectOnLogin = ''; 1065 const sameSiteSetting = 'None'; 1066 const guestIndexLeftPanelDataTranslated = {"image":"/img/home/guest/presentation.png","link":"https://nuiteq.com/stage","linkText":"NUITEQ.com/Stage","text":"Discover NUITEQ Stage - your ultimate meeting partner with whiteboard at the center!\n\nAre you ready to take your meetings and work processes to the next level? NUITEQ Stage is the answer you've been looking for. We have digitalized the meeting process to create a smooth and engaging work environment that not only increases productivity but also promotes creativity and sustainability."}; 1067 </script>
1067 1068 1069
1069<script type="text/javascript" src="/js/homeGuest.js"></script>
1069 1070 </body> 1071</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.