ode-ngjs-front 1.4.20-develop-b2school.202601121739 → 1.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ode-ngjs-front.js +1 -1
- package/dist/ode-ngjs-front.js.map +1 -1
- package/dist/ts/widgets/carnet-de-bord/carnet-de-bord.widget.d.ts.map +1 -1
- package/dist/version.txt +1 -1
- package/dist/widgets/carnet-de-bord/carnet-de-bord.widget.js.map +1 -1
- package/dist/widgets/last-infos-widget/last-infos-widget.widget.js +1 -1
- package/dist/widgets/last-infos-widget/last-infos-widget.widget.js.map +1 -1
- package/package.json +2 -2
package/dist/ode-ngjs-front.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var __webpack_modules__={807:()=>{!function(e){var t="application/x-dnd",n="application/json",r="Text",i=["move","copy","link"];function o(e,t){return"all"==t?e:e.filter(function(e){return-1!=t.toLowerCase().indexOf(e)})}e.directive("dndDraggable",["$parse","$timeout",function(e,s){return function(u,c,l){c.attr("draggable","true"),l.dndDisableIf&&u.$watch(l.dndDisableIf,function(e){c.attr("draggable",!e)}),c.on("dragstart",function(d){if(d=d.originalEvent||d,"false"==c.attr("draggable"))return!0;a.isDragging=!0,a.itemType=l.dndType&&u.$eval(l.dndType).toLowerCase(),a.dropEffect="none",a.effectAllowed=l.dndEffectAllowed||i[0],d.dataTransfer.effectAllowed=a.effectAllowed;var f=u.$eval(l.dndDraggable),h=t+(a.itemType?"-"+a.itemType:"");try{d.dataTransfer.setData(h,angular.toJson(f))}catch(e){var p=angular.toJson({item:f,type:a.itemType});try{d.dataTransfer.setData(n,p)}catch(e){var v=o(i,a.effectAllowed);d.dataTransfer.effectAllowed=v[0],d.dataTransfer.setData(r,p)}}if(c.addClass("dndDragging"),s(function(){c.addClass("dndDraggingSource")},0),d._dndHandle&&d.dataTransfer.setDragImage&&d.dataTransfer.setDragImage(c[0],0,0),e(l.dndDragstart)(u,{event:d}),l.dndCallback){var m=e(l.dndCallback);a.callback=function(e){return m(u,e||{})}}d.stopPropagation()}),c.on("dragend",function(t){t=t.originalEvent||t,u.$apply(function(){var n=a.dropEffect;e(l[{copy:"dndCopied",link:"dndLinked",move:"dndMoved",none:"dndCanceled"}[n]])(u,{event:t}),e(l.dndDragend)(u,{event:t,dropEffect:n})}),a.isDragging=!1,a.callback=void 0,c.removeClass("dndDragging"),c.removeClass("dndDraggingSource"),t.stopPropagation(),s(function(){c.removeClass("dndDraggingSource")},0)}),c.on("click",function(t){l.dndSelected&&(t=t.originalEvent||t,u.$apply(function(){e(l.dndSelected)(u,{event:t})}),t.stopPropagation())}),c.on("selectstart",function(){this.dragDrop&&this.dragDrop()})}}]),e.directive("dndList",["$parse",function(e){return function(s,u,c){var l=function(){var e;return angular.forEach(u.children(),function(t){var n=angular.element(t);n.hasClass("dndPlaceholder")&&(e=n)}),e||angular.element("<li class='dndPlaceholder'></li>")}();l.remove();var d=l[0],f=u[0],h={};function p(e){if(!e)return r;for(var i=0;i<e.length;i++)if(e[i]==r||e[i]==n||e[i].substr(0,17)==t)return e[i];return null}function v(e){return a.isDragging?a.itemType||void 0:e==r||e==n?null:e&&e.substr(18)||void 0}function m(e){return!h.disabled&&(!(!h.externalSources&&!a.isDragging)&&(!h.allowedTypes||null===e||e&&-1!=h.allowedTypes.indexOf(e)))}function g(e,t){var n=i;return t||(n=o(n,e.dataTransfer.effectAllowed)),a.isDragging&&(n=o(n,a.effectAllowed)),c.dndEffectAllowed&&(n=o(n,c.dndEffectAllowed)),n.length?e.ctrlKey&&-1!=n.indexOf("copy")?"copy":e.altKey&&-1!=n.indexOf("link")?"link":n[0]:"none"}function b(){return l.remove(),u.removeClass("dndDragover"),!0}function y(t,n,r,i,o,u){return e(t)(s,{callback:a.callback,dropEffect:r,event:n,external:!a.isDragging,index:void 0!==o?o:w(),item:u||void 0,type:i})}function w(){return Array.prototype.indexOf.call(f.children,d)}u.on("dragenter",function(e){e=e.originalEvent||e;var t=c.dndAllowedTypes&&s.$eval(c.dndAllowedTypes);h={allowedTypes:angular.isArray(t)&&t.join("|").toLowerCase().split("|"),disabled:c.dndDisableIf&&s.$eval(c.dndDisableIf),externalSources:c.dndExternalSources&&s.$eval(c.dndExternalSources),horizontal:c.dndHorizontalList&&s.$eval(c.dndHorizontalList)};var n=p(e.dataTransfer.types);if(!n||!m(v(n)))return!0;e.preventDefault()}),u.on("dragover",function(e){var t=p((e=e.originalEvent||e).dataTransfer.types),n=v(t);if(!t||!m(n))return!0;if(d.parentNode!=f&&u.append(l),e.target!=f){for(var i=e.target;i.parentNode!=f&&i.parentNode;)i=i.parentNode;if(i.parentNode==f&&i!=d){var o=i.getBoundingClientRect();if(h.horizontal)var a=e.clientX<o.left+o.width/2;else a=e.clientY<o.top+o.height/2;f.insertBefore(d,a?i:i.nextSibling)}}var s=t==r,w=g(e,s);return"none"==w||c.dndDragover&&!y(c.dndDragover,e,w,n)?b():(e.preventDefault(),s||(e.dataTransfer.dropEffect=w),u.addClass("dndDragover"),e.stopPropagation(),!1)}),u.on("drop",function(e){var t=p((e=e.originalEvent||e).dataTransfer.types),i=v(t);if(!t||!m(i))return!0;e.preventDefault();try{var o=JSON.parse(e.dataTransfer.getData(t))}catch(e){return b()}if((t==r||t==n)&&(i=o.type||void 0,o=o.item,!m(i)))return b();var u=t==r,l=g(e,u);if("none"==l)return b();var d=w();return c.dndDrop&&!(o=y(c.dndDrop,e,l,i,d,o))?b():(a.dropEffect=l,u||(e.dataTransfer.dropEffect=l),!0!==o&&s.$apply(function(){s.$eval(c.dndList).splice(d,0,o)}),y(c.dndInserted,e,l,i,d,o),b(),e.stopPropagation(),!1)}),u.on("dragleave",function(e){e=e.originalEvent||e;var t=document.elementFromPoint(e.clientX,e.clientY);f.contains(t)&&!e._dndPhShown?e._dndPhShown=!0:b()})}}]),e.directive("dndNodrag",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart",function(e){(e=e.originalEvent||e)._dndHandle||(e.dataTransfer.types&&e.dataTransfer.types.length||e.preventDefault(),e.stopPropagation())}),t.on("dragend",function(e){(e=e.originalEvent||e)._dndHandle||e.stopPropagation()})}}),e.directive("dndHandle",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart dragend",function(e){(e=e.originalEvent||e)._dndHandle=!0})}});var a={}}(angular.module("dndLists",[]))},925:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"88bf8796d91b9cb078e8709f0d1df5e5.html"},6722:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"7f0136c03fe438995347a346ee478b3a.html"},5230:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"2ebddef9552e6e74febdcc049e7b6cea.html"},41:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=' <div ng-class="{\'d-none\': !ctrl.showMenu || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <img class="img-fluid" skin-src="/img/illustrations/recorder-audio.svg" width="100" height="100" alt="recorder"> </div> <div ng-class="{ \'d-none\': !ctrl.showMenu || !ctrl.isAudioCompatible || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <button type="button" ng-click="ctrl.switchRecorder(\'audio\')" class="btn btn-circle" i18n-title="embed.audio.title"> <i class="fas fa-microphone"></i> </button> </div> <div ng-class="{ \'d-none\': !ctrl.showMenu || !ctrl.isVideoCompatible || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <button type="button" ng-click="ctrl.switchRecorder(\'video\')" class="btn btn-circle"> <i class="fas fa-video"></i> </button> </div> <div ng-if="!ctrl.isAudioCompatible && !ctrl.isVideoCompatible" class="flex-fill"> <p><i18n>recorder.not.supported</i18n></p> </div> <div ng-if="!ctrl.isVideoCompatible" class="flex-fill"> <div ng-if="VideoRecorder.isIncompatibleBrowser()"> <p><i18n>embed.video.incompatible.details</i18n></p> <p class="update"> <a href="https://www.google.fr/chrome/browser/desktop/" target="_blank"> <img src="/auth/public/img/chrome_logo.png"/> </a> <a href="https://www.mozilla.org/fr/firefox/new/" target="_blank"> <img src="/auth/public/img/firefox_logo.png"/> </a> </p> </div> <div ng-if="VideoRecorder.isIncompatibleDevice()"> <p><i18n>embed.video.incompatible.devices</i18n></p> <p><i18n>embed.video.incompatible.devices.footer</i18n></p> <img skin-src="images/emptyscreen-recorder-video.svg" height="150"> </div> </div> <div id="audioRecorder" class="flex-fill" ng-if="ctrl.selectedRecorder === \'audio\'"> <div class="record-timer"> <i class="fas fa-microphone"></i> [[ctrl.time()]] </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <input type="text" class="form-control" i18n-placeholder="title" ng-model="ctrl.recorder.title"/> </div> <div class="record-controls" ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <button id="btnAudioRecorder" type="button" class="btn btn-circle" ng-click="ctrl.switchAudioRecord()" ng-class="{ \'d-none\': ctrl.isVideo || !ctrl.isAudioCompatible }" ng-disabled="ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved"> <i class="fas" ng-class="{\'fa-microphone\': !ctrl.isRecording, \'fa-pause\': ctrl.isRecording}"></i> <span class="label" ng-if="ctrl.isIdle || ctrl.isStopped"><i18n>embed.record</i18n></span> <span class="label" ng-if="!ctrl.isRecording && !ctrl.isIdle && !ctrl.isStopped" ng-class="{\'d-none\': ctrl.isIdle}"><i18n>embed.resume</i18n></span> <span class="label" ng-if="ctrl.isRecording"><i18n>embed.suspend</i18n></span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.switchPlay()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading"> <i class="fas" ng-class="ctrl.isPlaying ? \'fa-pause\' : \'fa-play\'"></i> <span class="label" ng-if="!ctrl.isPlaying"><i18n>embed.play</i18n></span> <span class="label" ng-if="ctrl.isPlaying"><i18n>embed.pause</i18n></span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.saveRecord()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.recordIsSaved"> <i ng-class="ctrl.getSaveBtnClass()"></i> <span class="label"><i18n>embed.save</i18n></span> </button> <button type="button" class="btn btn-circle btn-danger" ng-click="ctrl.clean()" ng-disabled="ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i class="fas fa-times"></i> <span class="label"><i18n>embed.redo</i18n></span> </button> </div> </div> <div id="videoRecorder" class="flex-fill" navigation-guard="true" guard-root="videoCapturedGuard" ng-if="ctrl.selectedRecorder === \'video\'"> <div class="record-timer"> <i class="fas fa-video"></i> [[ctrl.msToTime(ctrl.recorder.elapsedTime)]]/[[ctrl.msToTime(ctrl.recordMaxTime)]] </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <select title="selectWebcam" class="form-select mb-2" ng-if="ctrl.videoInputDevices.length > 1" ng-options="vid as vid.label for vid in ctrl.videoInputDevices" ng-disabled="ctrl.isRecording" ng-model="ctrl.selectedVid" ng-change="ctrl.switchVideo(ctrl.selectedVid.deviceId)"> </select> </div> <div id="recorderWidgetVideoPlayer" class="record-widget-player"> </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <label class="visually-hidden" for="video-recorder"><i18n>title</i18n></label> <input type="text" id="video-recorder" class="form-control" i18n-placeholder="title" ng-model="ctrl.recorder.title"/> </div> <div class="record-controls" custom-guard="recordGuard" ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <button id="btnVideoRecorder" type="button" class="btn btn-circle" ng-if="!(ctrl.isAudio) && ctrl.isVideoCompatible" ng-click="ctrl.switchVideoRecord()" ng-disabled="ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved"> <i class="fas" ng-class="{\'fa-stop\': ctrl.isRecording, \'fa-video\': !ctrl.isRecording}"></i> <span class="label">[[ctrl.isRecording ? \'embed.stop\' : \'embed.record\' | i18n]]</span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.switchPlay()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading"> <i class="fas" ng-class="{\'fa-pause\': ctrl.isPlaying, \'fa-play\': !ctrl.isPlaying}"></i> <span class="label">[[ctrl.isPlaying ? \'embed.pause\' : \'embed.play\' | i18n]]</span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.saveRecord()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i ng-class="ctrl.getSaveBtnClass()"></i> <span class="label"> <i18n>embed.save</i18n> </span> </button> <button type="button" class="btn btn-circle btn-danger" ng-click="ctrl.clean()" ng-disabled="ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i class="fas fa-times"></i> <span class="label"><i18n>embed.redo</i18n></span> </button> </div> </div> <div ng-class="{\'d-none\': !ctrl.displaySavedMessage, \'d-block record-widget-message\': ctrl.displaySavedMessage}"> <p class="text-success">{{ctrl.recorder.title}} <i18n>embed.saved.file</i18n></p> <a ng-href="/workspace/workspace#/apps" class="btn btn btn-outline-third rounded-pill d-inline-block mx-auto"><i18n>embed.goto.file</i18n></a> <button class="btn btn-link d-block mx-auto" ng-click="ctrl.clean()"><i18n>embed.new.recording</i18n></button> </div>'},3146:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<ode-modal visible="ctrl.display.showAuthenticatedConnectorLightbox" on-close="ctrl.onClose()"> <ode-modal-title> <i18n>apps.authenticatedConnector.lightbox.title</i18n> </ode-modal-title> <ode-modal-body> <p class="text-center"> <i18n>apps.authenticatedConnector.lightbox.content</i18n> </p> </ode-modal-body> <ode-modal-footer> <button class="btn btn-light text-primary" ng-click="ctrl.onClose()"> <i18n>cancel</i18n> </button> <button class="btn btn-primary" ng-click="ctrl.onConfirm()"> <i18n>confirm</i18n> </button> </ode-modal-footer> </ode-modal> '},2306:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<i class="navbar-help ic-help" ng-click="onHelp()"></i> <ode-modal class="modal-help" visible="display.read" on-close="display.read = false"> <ode-modal-title></ode-modal-title> <ode-modal-body><div></div></ode-modal-body> </ode-modal> '},959:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=' <header class="header no-2d" ng-if="ctrl.is1D"> <div class="container-fluid"> <nav class="navbar"><a class="navbar-title d-md-none text-truncate h4" href="/welcome?token=[[ctrl.version]]" ng-bind-html="ctrl.title"></a> <div class="d-none d-md-inline-flex gap-12 align-items-center"> <img ng-src="[[ctrl.avatar]]" alt=""/><span class="navbar-text" translate key="welcome"></span> </div> <ul class="navbar-nav gap-8" aria-hidden="false" aria-label="navbar.main.navigation" role="menubar"> <li class="nav-item" ng-if="me.hasWorkflow(\'org.entcore.conversation.controllers.ConversationController|view\')"><a href="/conversation/conversation" class="nav-link" i18n-title="navbar.messages" aria-label="navbar.messages"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon notification"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.051 12.366a455.802 455.802 0 0 1-2.746-1.822A6.543 6.543 0 0 1 .74 9.067C.248 8.44.002 7.859.002 7.322a2.7 2.7 0 0 1 .141-.905c.098-.286.242-.542.424-.752C.935 5.222 1.462 5 2.15 5h19.7c.541-.016 1.071.195 1.507.6.424.4.636.882.636 1.446 0 .673-.218 1.317-.657 1.93a6.217 6.217 0 0 1-1.632 1.567c-3.358 2.226-5.447 3.61-6.267 4.156l-.242.167-.323.222a15.448 15.448 0 0 1-1.42.902 4.052 4.052 0 0 1-.77.345 2.215 2.215 0 0 1-.67.115h-.026a2.222 2.222 0 0 1-.67-.116 4.052 4.052 0 0 1-.77-.344c-.272-.154-.506-.29-.697-.415a30.199 30.199 0 0 1-.723-.487c-.288-.2-.477-.33-.565-.389-.81-.545-1.98-1.323-3.51-2.334Zm10.943 3.962c1.517-1.052 3.74-2.524 6.667-4.416.478-.306.927-.68 1.339-1.113v10.16c0 .564-.209 1.044-.63 1.446-.437.405-.97.614-1.512.594H2.149c-.545.02-1.08-.192-1.52-.601C.21 21.995 0 21.52 0 20.95V10.8c.416.437.871.81 1.356 1.113 3.232 2.099 5.45 3.571 6.656 4.416.512.358.926.637 1.243.837a7.7 7.7 0 0 0 1.265.614c.475.198.97.303 1.47.313h.026c.5-.01.995-.115 1.47-.313a7.647 7.647 0 0 0 1.265-.614c.32-.2.735-.479 1.243-.837Z" fill="currentColor"></path> </svg><span class="position-absolute badge rounded-pill bg-danger" ng-if="nbNewMessages">[[nbNewMessages]]<span class="visually-hidden"> <i18n>navbar.messages</i18n> </span></span></a></li> <li class="nav-item"><a href="/userbook/mon-compte" class="nav-link"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="icon user"> <g clip-path="url(#one-profile_svg__a)"> <path fill="currentColor" d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24Zm0 4.65a4.26 4.26 0 1 1 0 8.51 4.26 4.26 0 0 1 0-8.51Zm0 16.64a9.27 9.27 0 0 1-7.09-3.3 5.4 5.4 0 0 1 4.77-2.9c.11 0 .23.03.34.06.63.2 1.29.33 1.98.33.7 0 1.35-.13 1.98-.33.11-.03.23-.05.34-.05a5.4 5.4 0 0 1 4.77 2.89 9.27 9.27 0 0 1-7.09 3.3Z"> </path> </g> <defs> <clipPath id="one-profile_svg__a"> <path fill="#fff" d="M0 0h24v24H0z"></path> </clipPath> </defs> </svg><span class="visually-hidden"> <i18n>navbar.myaccount</i18n> </span></a></li> <li class="nav-item"><a href="/" class="nav-link" logout i18n-title="navbar.disconnect"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon logout"> <path d="M22.995 13.153c0 1.393-.29 2.722-.872 3.987a10.627 10.627 0 0 1-2.336 3.292c-.975.929-2.147 1.665-3.516 2.21-1.369.544-2.79.817-4.26.817-1.472 0-2.9-.273-4.287-.817-1.386-.545-2.55-1.281-3.49-2.21a12.338 12.338 0 0 1-2.362-3.291A8.11 8.11 0 0 1 1 13.152c0-1.634.385-3.164 1.155-4.589.77-1.425 1.848-2.634 3.234-3.627.411-.289.873-.4 1.386-.337.514.064.907.289 1.181.673.308.368.428.793.36 1.273-.07.48-.309.857-.72 1.13a6.993 6.993 0 0 0-2.155 2.426 6.383 6.383 0 0 0-.18 5.717 6.98 6.98 0 0 0 1.566 2.186c.65.609 1.428 1.097 2.335 1.466a7.498 7.498 0 0 0 2.85.552 7.31 7.31 0 0 0 2.823-.552 8.296 8.296 0 0 0 2.36-1.466 6.04 6.04 0 0 0 1.567-2.186c.359-.849.547-1.738.564-2.666 0-1.09-.256-2.107-.77-3.051-.513-.945-1.232-1.754-2.156-2.427a1.752 1.752 0 0 1-.719-1.129c-.085-.464.035-.889.36-1.273.29-.384.693-.609 1.206-.673.514-.064.967.048 1.36.337 1.386.977 2.464 2.186 3.234 3.627a9.599 9.599 0 0 1 1.155 4.589ZM13.833 2.846v8.6c0 .465-.18.866-.54 1.202-.359.336-.786.505-1.283.505-.496 0-.932-.169-1.309-.505-.376-.336-.556-.737-.539-1.201v-8.6c0-.465.18-.865.54-1.202.359-.336.795-.504 1.308-.504.514 0 .941.168 1.284.504.342.337.521.737.539 1.201Z" fill="currentColor"></path> </svg><span class="visually-hidden"> <i18n>navbar.disconnect</i18n> </span></a></li> <li class="nav-item" ng-if="ctrl.currentLanguage == \'fr\' && me.hasWorkflow(\'org.entcore.portal.controllers.PortalController|oldHelpEnable\')" pulsar="{index:5, style:{zIndex:1021}, i18n:\'portal.pulsar.help\', position:\'bottom center\'}"> <a href="" i18n-title="navbar.help"> <help></help> </a> </li> <li class="nav-item d-md-none"><button class="nav-link btn btn-naked" type="button" aria-controls="navbarCollapsed" aria-expanded="false" aria-label="navbar.secondary.navigation"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon rafter-down"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.012 7.871a1.5 1.5 0 0 1 2.117.141L12 14.722l5.871-6.71a1.5 1.5 0 1 1 2.258 1.976l-7 8a1.5 1.5 0 0 1-2.258 0l-7-8a1.5 1.5 0 0 1 .141-2.117Z" fill="currentColor"></path> </svg></button></li> </ul> </nav> </div> <nav class="navbar no-2d navbar-secondary navbar-expand-md" aria-label="navbar.secondary.navigation"> <div class="container-fluid"> <div class="collapse navbar-collapse" id="navbarCollapsed"><a class="navbar-brand d-md-block" href="/timeline/timeline" aria-label="Accueil"><img class="logo" skin-src="img/illustrations/logo.png" alt="Logo de l\'ENT"> <span class="text-truncate d-md-none" ng-bind-html="ctrl.title"></span> </a> <ul class="navbar-nav gap-8"> <li class="nav-item"><a href="/timeline/timeline?token=[[ctrl.version]]" class="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" color="#fff" class="d-md-none"> <path fill="currentColor" d="M13.07 13.07V6.54h-2.14v6.53h2.14zm0 4.4v-2.2h-2.14v2.2h2.14zM24 12l-2.65 3.01.35 4.04-3.93.86-2.04 3.48L12 21.8l-3.73 1.6-2.04-3.42-3.93-.92.35-4.04L0 12l2.65-3.06-.35-3.99 3.93-.86L8.27.6 12 2.2 15.73.6l2.04 3.48 3.93.86L21.34 9z"> </path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.whatsnew</i18n> </span></a></li> <li class="nav-item"><a href="/userbook/annuaire?myClass&token=[[ctrl.version]]" class="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" color="#fff" class="d-md-none"> <path d="M0 24.58V.53h24.05v4.28h-2.62V7.1h2.62v4.28h-2.62v2.35h2.62V18h-2.62v2.3h2.62v4.29H0zm4.64-6.85h12.12V14l-4.5-2.67q.9-.46 1.4-1.3t.53-1.85q0-1.4-1.01-2.43T10.7 4.72 8.25 5.75 7.24 8.18q0 1.03.53 1.85t1.4 1.3L4.63 14v3.73z" fill="currentColor"></path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.classMembers</i18n> </span></a></li> <li class="nav-item"><a href="/welcome?token=[[ctrl.version]]" class="button"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff" class="d-md-none"> <path d="M1.898 22.555c-.072-.145-.096-1.37-.048-2.691l.048-2.402h5.261v5.26l-2.595.049c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.049-.145-.073-1.37-.049-2.691l.072-2.402h5.238v5.26l-2.571.049c-2.018.048-2.595 0-2.69-.216Zm7.759 0c-.048-.145-.072-1.37-.048-2.691l.072-2.402h5.237v5.26l-2.57.049c-1.994.048-2.595 0-2.691-.216Zm-15.52-7.76c-.071-.168-.095-1.37-.047-2.69l.048-2.403h5.261v5.261l-2.595.048c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.238v5.261l-2.571.048c-2.018.048-2.595 0-2.69-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.237v5.261l-2.57.048c-1.994.048-2.595 0-2.691-.216ZM1.897 7.011c-.071-.144-.095-1.345-.047-2.666l.048-2.402h5.261V7.18l-2.595.072c-1.994.048-2.594 0-2.666-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.238V7.18l-2.571.072c-2.018.048-2.595 0-2.69-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.237V7.18l-2.57.072c-1.994.048-2.595 0-2.691-.24Z" fill="currentColor"></path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.myapps</i18n> </span></a></li> </ul> </div> </div> </nav> </header> <header class="header no-1d" ng-if="ctrl.is2D"> <nav class="navbar navbar-expand-md"> <div class="container-fluid" style="max-width:1700px"> <a class="navbar-brand d-md-block" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'timeline\', \'from\':\'logo\'} })" href="/timeline/timeline?token=[[ctrl.version]]" i18n-title="navbar.home"> <img class="logo" skin-src="img/illustrations/logo.png" alt="logo NEO" width="300" height="52"> </a> <ul class="navbar-nav"> <li class="nav-item"> <a href="/timeline/timeline" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'timeline\', \'from\':\'menu\'} })" class="nav-link" i18n-title="navbar.home"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="M20.584 13.536v7.458c0 .28-.098.512-.294.699a1.062 1.062 0 0 1-.667.307H13.91v-5.978h-3.817V22H4.383a.848.848 0 0 1-.668-.307 1.162 1.162 0 0 1-.293-.699v-7.569l8.567-7.375 8.568 7.375c.018.018.027.055.027.111Zm3.31-1.09-.908 1.146a.543.543 0 0 1-.32.168h-.054a.59.59 0 0 1-.32-.084L11.989 4.682 1.687 13.676a.505.505 0 0 1-.347.084.544.544 0 0 1-.32-.168l-.935-1.145a.524.524 0 0 1-.08-.363.589.589 0 0 1 .16-.335l10.703-9.33c.32-.28.694-.419 1.121-.419.427 0 .81.14 1.148.419l3.63 3.156V2.56c0-.15.044-.27.133-.363a.458.458 0 0 1 .347-.14h2.856c.143 0 .258.046.347.14a.504.504 0 0 1 .134.363v6.34l3.256 2.85c.107.074.16.186.16.335 0 .149-.036.27-.107.363Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.home</i18n> </span> </a> </li> <li class="nav-item position-relative popover-trigger" id=":r2:" aria-haspopup="true" aria-expanded="false" pulsar="{index:3, style:{zIndex:1021}, i18n:\'portal.pulsar.apps\', position:\'bottom center\'}"> <a href="/welcome" i18n-title="navbar.applications" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'welcome\', \'from\':\'menu\'} })" class="nav-link"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="M1.898 22.555c-.072-.145-.096-1.37-.048-2.691l.048-2.402h5.261v5.26l-2.595.049c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.049-.145-.073-1.37-.049-2.691l.072-2.402h5.238v5.26l-2.571.049c-2.018.048-2.595 0-2.69-.216Zm7.759 0c-.048-.145-.072-1.37-.048-2.691l.072-2.402h5.237v5.26l-2.57.049c-1.994.048-2.595 0-2.691-.216Zm-15.52-7.76c-.071-.168-.095-1.37-.047-2.69l.048-2.403h5.261v5.261l-2.595.048c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.238v5.261l-2.571.048c-2.018.048-2.595 0-2.69-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.237v5.261l-2.57.048c-1.994.048-2.595 0-2.691-.216ZM1.897 7.011c-.071-.144-.095-1.345-.047-2.666l.048-2.402h5.261V7.18l-2.595.072c-1.994.048-2.594 0-2.666-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.238V7.18l-2.571.072c-2.018.048-2.595 0-2.69-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.237V7.18l-2.57.072c-1.994.048-2.595 0-2.691-.24Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.applications</i18n> </span> </a> <div aria-labelledby=":r2:" class="popover position-absolute top-100 start-50 translate-middle-x top-100" role="tooltip"> <div class="popover-body"> <div class="widget-body d-flex flex-wrap"> <div class="text-dark" ng-if="ctrl.apps.length === 0"> <i18n>navbar.myapps.more</i18n> </div> <a class="bookmarked-app" connector-lightbox-trigger="app" aria-label="[[app.displayName]]" target="[[app.target]]" href="[[app.address]]" i18n-title="[[app.displayName]]" ng-switch="app.icon.indexOf(\'/\')" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'app\', \'app\':app} })" ng-repeat="app in ctrl.apps | limitTo:6 track by $index"> <i class="fs-1" ng-class="ctrl.getIconClass(app)" ng-switch-when="-1"></i> <img skin-src="[[app.icon]]" ng-switch-default alt="[[app.displayName]]"/> </a> </div> </div> <div class="popover-footer widget-footer border-top border-ghost"> <div class="widget-footer"> <div class="widget-footer-action"> <a href="/welcome" class="link"> <i18n>plus</i18n> </a> </div> </div> </div> </div> </li> <li class="nav-item" ng-include="ctrl.conversationUnreadUrl"> <div class="nav-link conversation" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'conversation\'} })"></div> </li> <li class="nav-item" ng-if="ctrl.currentLanguage == \'fr\' && me.hasWorkflow(\'org.entcore.portal.controllers.PortalController|oldHelpEnable\')" pulsar="{index:5, style:{zIndex:1021}, i18n:\'portal.pulsar.help\', position:\'bottom center\'}"> <a href="" class="nav-link" i18n-title="navbar.help"> <help></help> </a> </li> <li class="nav-item"> <div class="dropdown"> <button class="nav-link btn btn-naked d-md-none" type="button" aria-controls="dropdown-navbar" aria-expanded="false" aria-label="navbar.open.menu" ng-click="dropdownToggle = !dropdownToggle"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon rafter-down" color="#fff"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.012 7.871a1.5 1.5 0 0 1 2.117.141L12 14.722l5.871-6.71a1.5 1.5 0 1 1 2.258 1.976l-7 8a1.5 1.5 0 0 1-2.258 0l-7-8a1.5 1.5 0 0 1 .141-2.117Z" fill="currentColor"></path> </svg> </button> <ul class="dropdown-menu dropdown-menu-end" id="dropdown-navbar" ng-class="{\'show\' : dropdownToggle}"> <li class="nav-item" data-community ng-if="me.hasWorkflow(\'net.atos.entng.community.controllers.CommunityController|view\')"> <a class="nav-link dropdown-item" href="/community" i18n-title="navbar.community" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'community\'} })"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-hidden="true" class="icon community"><path fill="currentColor" d="M19.935 17.51c.725 0 1.348.264 1.868.792.52.529.78 1.162.78 1.898 0 .737-.26 1.37-.78 1.898-.52.529-1.135.793-1.844.793-.71 0-1.333-.264-1.869-.793a2.52 2.52 0 0 1-.78-1.922c0-.288.063-.6.19-.936l-3.997-2.931c-.773.8-1.703 1.2-2.79 1.2-1.089 0-2.019-.392-2.791-1.176-.773-.785-1.167-1.738-1.183-2.86 0-.143.024-.352.071-.624l-3.168-1.057a1.248 1.248 0 0 1-.852.337c-.378 0-.693-.129-.946-.385a1.315 1.315 0 0 1-.378-.96c0-.385.126-.698.378-.938.253-.24.568-.368.946-.384.316 0 .584.104.804.312.221.208.37.457.45.745l3.192 1.08a3.798 3.798 0 0 1 1.443-1.56 3.839 3.839 0 0 1 2.033-.577c.82 0 1.577.248 2.27.745l4.706-4.781c-.252-.48-.378-.921-.378-1.321 0-.737.26-1.37.78-1.898.52-.529 1.143-.793 1.869-.793.725 0 1.34.264 1.844.793.505.528.765 1.16.78 1.898a2.417 2.417 0 0 1-.78 1.873c-.536.513-1.159.777-1.868.793-.41 0-.844-.136-1.3-.408l-4.707 4.804c.49.705.733 1.474.733 2.307 0 .592-.134 1.177-.402 1.753l3.997 2.907c.52-.416 1.08-.624 1.679-.624Z"></path></svg> <span class="nav-text"><i18n>navbar.community</i18n></span> </a> </li> <li class="nav-item position-relative popover-trigger" id=":r3:" aria-haspopup="true" aria-expanded="false" ng-if="me.hasWorkflow(\'fr.openent.searchengine.controllers.SearchEngineController|view\')"> <a href="/searchengine" i18n-title="navbar.search" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'searchengine\', \'from\':\'menu\'} })" class="nav-link dropdown-item"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon search"> <path d="M1.27 11.552a7.745 7.745 0 0 1 0-4.156c.38-1.377 1.095-2.579 2.149-3.604a7.928 7.928 0 0 1 2.716-1.777c1.02-.4 2.074-.6 3.161-.6 1.07 0 2.115.2 3.136.6 1.02.4 1.926.993 2.716 1.777a7.904 7.904 0 0 1 1.902 2.86 7.812 7.812 0 0 1 .518 3.29 7.647 7.647 0 0 1-.889 3.171c.461.129.865.36 1.21.697l4.297 4.156c.576.56.864 1.241.864 2.042 0 .801-.288 1.482-.864 2.042-.576.56-1.276.841-2.099.841-.823 0-1.523-.28-2.099-.84l-4.272-4.18a2.423 2.423 0 0 1-.74-1.178 8.302 8.302 0 0 1-3.68.84c-1.087 0-2.14-.2-3.16-.6a8.102 8.102 0 0 1-2.717-1.753 7.854 7.854 0 0 1-2.149-3.628Zm2.495-2.066c0 1.49.535 2.755 1.605 3.796 1.086 1.04 2.395 1.561 3.926 1.561 1.515 0 2.807-.52 3.877-1.561 1.07-1.041 1.613-2.307 1.63-3.796.016-1.49-.527-2.755-1.63-3.796-1.087-1.057-2.379-1.585-3.877-1.585-1.515 0-2.823.528-3.926 1.585C4.3 6.731 3.765 7.996 3.765 9.486Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.search</i18n> </span> </a> <div aria-labelledby=":r3:" class="popover position-absolute top-100 start-50 translate-middle-x" role="tooltip"> <div class="search-text input-group py-8 px-12"> <input id="my-search-input" class="form-control form-control-sm" type="text" name="my-search-input" ng-model="ctrl.mysearch" ng-keyup="ctrl.launchSearch($event, \'key\');"/><button class="btn btn-filled btn-primary btn-sm btn-icon btn-sm btn-search btn-sm" i18n-title="navbar.search" ng-click="ctrl.launchSearch($event, \'button\');"> <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true"> <path fill="currentColor" fill-rule="evenodd" d="M4 10a7 7 0 1 1 14 0 7 7 0 0 1-14 0Zm7-9a9 9 0 1 0 5.7 15.96 1 1 0 0 0 .24.4l4.35 4.35a1 1 0 0 0 1.42-1.42l-4.35-4.35a1 1 0 0 0-.4-.24A9 9 0 0 0 11 1Z" clip-rule="evenodd"></path> </svg></span> </button> </div> </div> </li> <li class="nav-item"> <a href="/userbook/mon-compte" pulsar="{ index:4, style:{zIndex:1021}, i18n:\'portal.pulsar.account\', position:\'bottom center\'}" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'myaccount\'} })" i18n-title="navbar.myaccount" class="nav-link dropdown-item"> <div class="avatar avatar-sm rounded-circle bg-white"> <img data-ng-src="[[ctrl.avatar ? ctrl.avatar+\'?thumbnail=48x48\' : \'\']]" width="30" height="30" alt="[[ctrl.username]]"/> </div> <span class="nav-text"> <i18n>navbar.myaccount</i18n> </span> </a> </li> <li class="nav-item"> <hr class="dropdown-divider"> </li> <li class="nav-item"> <a href="" logout i18n-title="navbar.disconnect" class="nav-link dropdown-item"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon logout"> <path d="M22.995 13.153c0 1.393-.29 2.722-.872 3.987a10.627 10.627 0 0 1-2.336 3.292c-.975.929-2.147 1.665-3.516 2.21-1.369.544-2.79.817-4.26.817-1.472 0-2.9-.273-4.287-.817-1.386-.545-2.55-1.281-3.49-2.21a12.338 12.338 0 0 1-2.362-3.291A8.11 8.11 0 0 1 1 13.152c0-1.634.385-3.164 1.155-4.589.77-1.425 1.848-2.634 3.234-3.627.411-.289.873-.4 1.386-.337.514.064.907.289 1.181.673.308.368.428.793.36 1.273-.07.48-.309.857-.72 1.13a6.993 6.993 0 0 0-2.155 2.426 6.383 6.383 0 0 0-.18 5.717 6.98 6.98 0 0 0 1.566 2.186c.65.609 1.428 1.097 2.335 1.466a7.498 7.498 0 0 0 2.85.552 7.31 7.31 0 0 0 2.823-.552 8.296 8.296 0 0 0 2.36-1.466 6.04 6.04 0 0 0 1.567-2.186c.359-.849.547-1.738.564-2.666 0-1.09-.256-2.107-.77-3.051-.513-.945-1.232-1.754-2.156-2.427a1.752 1.752 0 0 1-.719-1.129c-.085-.464.035-.889.36-1.273.29-.384.693-.609 1.206-.673.514-.064.967.048 1.36.337 1.386.977 2.464 2.186 3.234 3.627a9.599 9.599 0 0 1 1.155 4.589ZM13.833 2.846v8.6c0 .465-.18.866-.54 1.202-.359.336-.786.505-1.283.505-.496 0-.932-.169-1.309-.505-.376-.336-.556-.737-.539-1.201v-8.6c0-.465.18-.865.54-1.202.359-.336.795-.504 1.308-.504.514 0 .941.168 1.284.504.342.337.521.737.539 1.201Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.disconnect</i18n> </span> </a> </li> </ul> </div> </li> </ul> </div> </nav> </header>'},4809:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="row"> <input type="text" ng-model="ctrl.search" i18n-placeholder="search" autocomplete="off"/> </div> '},9018:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="toast fade" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> <strong class="me-auto">[[header]]</strong> <small class="text-muted">[[since]]</small> <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close" ng-click="visible(false)"></button> </div> <div class="toast-body" ng-transclude></div> </div>'},9068:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<section class="lightbox" ng-class="{\'lightbox\': !tiny, \'tiny-lightbox\': tiny}"> <div class="background"></div> <div class="content"> <div class="twelve cell" ng-transclude></div> <div class="close-lightbox"> <i class="close-2x"></i> </div> </div> </section>'},7597:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="{{ctrl.id+\'Label\'}}" aria-hidden="true" ng-class="{show: ctrl.visible}" ng-style="ctrl.getStyle()"> <div class="modal-backdrop fade show" style="z-index:1040"></div> <div class="modal-dialog" ng-class="ctrl.getSizeClass()" role="document" style="z-index:1050"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="{{ctrl.id+\'Label\'}}" ng-transclude="title"></h5> <button type="button" class="btn-close" aria-label="Close" ng-if="ctrl.onClose" ng-click="ctrl.onClose()"> </button> </div> <div class="modal-body" ng-transclude="body"></div> <div class="modal-footer" ng-transclude="footer"></div> </div> </div> </div> '},9325:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<style id="pulsar-css">pulsar{z-index:1036;position:absolute;pointer-events:all}.pulsar-layer{box-shadow:0 0 0 99999px rgb(0 0 0 / 60%);position:absolute;border-radius:2px;z-index:1035}pulsar .content{background:#fff;width:300px;box-shadow:1px 1px 7px rgb(0 0 0 / 40%);padding:15px;box-sizing:border-box;border:6px solid #ddd;border-radius:2px;position:relative}pulsar .content .inf{position:absolute;left:10px;top:10px;color:#fff;background:#ffaa4d;border-radius:50%;line-height:22px;text-align:center;width:22px;height:22px}pulsar .content .inf::before{font-size:18px;content:\'i\';font-style:italic;font-weight:700;display:inline-block;margin-left:-1px}pulsar .content .close{position:absolute;right:10px;top:10px;width:22px;height:22px;line-height:17px;background:#ddd;border-radius:50%;color:#636363}pulsar i.close{font-family:generic-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none;font-weight:400!important;text-align:center;cursor:pointer;font-style:normal}pulsar .content>div.text{margin-top:25px;padding:10px;font-size:14px;line-height:18px}pulsar .content .close::before{content:\'\\e866\';font-size:9px}pulsar nav.dots ul{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:0;margin:15px 0 25px}pulsar nav.dots li.dot{list-style-type:none;margin:0 10px;cursor:pointer}pulsar nav.dots li.dot::before{content:" ";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar nav.dots li.dot:hover::before{border-color:#ff8500;background:0 0}nav.dots li.dot.active::before{color:#4bafd5}pulsar nav.dots li.dot.active::before{border-color:#ff8500;background:#ff8500}pulsar nav.dots li.dot::before{font-size:60px;width:12px;height:12px}pulsar nav.dots li.dot::before{content:" ";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar .arrow{width:0;height:0;border-style:solid;border-width:0 8.4px 14px 8.4px;border-color:transparent transparent #ddd transparent;z-index:1;position:absolute}pulsar.middle .arrow{left:calc(50% - 7px);top:-14px}pulsar.left .arrow{transform:rotate(90deg);right:-14px}pulsar.left.top .arrow{top:1px}pulsar.left.center .arrow{top:calc(50% - 7px)}pulsar.right.center .arrow{top:calc(50% - 7px)}pulsar.right .arrow{transform:rotate(270deg);left:-14px}pulsar.right.top .arrow{top:1px}pulsar.center.top .arrow{transform:rotate(180deg);top:100%;left:calc(50% - 7px)}pulsar.bottom .arrow{top:-14px}pulsar.bottom.center .arrow{left:calc(50% - 7px)}pulsar.bottom.left .arrow,pulsar.bottom.right .arrow{top:1px}pulsar.bottom.right .arrow{left:-14px;transform:rotate(-90deg)}pulsar.bottom.left .arrow{transform:rotate(90deg);right:-14px;left:auto}.pulsar-button{position:absolute;z-index:999;width:40px;height:40px}.pulsar-button::after,.pulsar-button::before{content:"";opacity:.5;position:absolute;z-index:-1;inset:-6px 0 0 -6px;height:42px;width:42px;content:"";border-radius:50%;box-shadow:0 0 5px 6px rgb(120 218 255 / 60%);transform:scale(.1,.1);transition:all 250ms ease;animation:pulsate 1s ease-out;animation-iteration-count:infinite}.pulsar-button::after{animation-delay:.3s}.pulse-spot{position:absolute;cursor:pointer;width:30px;height:30px;font-size:18px;text-align:center;line-height:21px;font-weight:700;color:#fff;border-radius:50%;border:4px solid transparent;background:#ff8500;transition:all 250ms ease}.pulse-spot::before{content:\'i\';font-style:italic;font-family:\'Times New Roman\',Times,serif}pulsar .row{flex-direction:row-reverse;justify-content:space-between;margin-left:0!important;margin-right:0!important;max-width:100%;width:100%;position:relative;clear:both;box-sizing:border-box}pulsar .row>*{width:auto}@keyframes pulsate{0%{transform:scale(.1,.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2,1.2);opacity:0}}.pulsar-button{display:none}@media (min-width:992px){.pulsar-button{display:block}}</style>'},6066:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<style id="widget-container-css">ul[dnd-list],ul[dnd-list]>li{position:relative}ul[dnd-list]{padding-left:0}ul[dnd-list][dnd-drop]{min-height:42px;transition:all .1s ease-in-out 0s}ul[dnd-list][dnd-dragover].dndReject{display:block;background-color:#ff8c8c;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] .dndDraggingSource{display:none}ul[dnd-list] .dndPlaceholder{display:block;background-color:#ffdbb7;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] li{list-style:none}.dndDragging:not(.dndDraggingSource){cursor:grabbing!important;border:1px solid rgb(255 133 0)}.dnDragover{cursor:grabbing}.dndDragging:not(.dndDraggingSource):active,.dndDragging:not(.dndDraggingSource):focus,.dndDragging:not(.dndDraggingSource):hover{cursor:grabbing;cursor:-webkit-grabbing}</style> <ul dnd-list dnd-allowed-types="[]" ng-if="ctrl.lockedWidgets.length"> <li ng-repeat="widget in ctrl.lockedWidgets track by widget.platformConf.id" class="widget widget-locked" ode-widget="widget"> </li> </ul> <ul dnd-list dnd-allowed-types="[\'left\',\'right\']" dnd-dragover="ctrl.onDnDDragOver(event, index, type, dropEffect)" dnd-drop="ctrl.onDnDDrop(event, item, index, dropEffect)"> <li ng-repeat="widget in ctrl.dndWidgets track by widget.platformConf.id" class="widget" ode-widget="widget" dnd-draggable="widget.platformConf.id" dnd-type="widget.userPref.position" dnd-disable-if="ctrl.isMobileView"> </li> </ul>'},2011:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="<span>{{ctrl.sayHello()}}</span>"},991:function(e){e.exports=function(){var e=window,t=document,n={on:function(t,n,r){"addEventListener"in e?t.addEventListener(n,r,!1):t.attachEvent("on"+n,r)},off:function(t,n,r){"removeEventListener"in e?t.removeEventListener(n,r,!1):t.detachEvent("on"+n,r)},bind:function(e,t){return function(){e.apply(t,arguments)}},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},config:function(e,t){return null!=e?e:t},transSupport:!1,useFilter:/msie [678]/i.test(navigator.userAgent),_checkTransition:function(){var e=t.createElement("div"),n={webkit:"webkit",Moz:"",O:"o",ms:"MS"};for(var r in n)r+"Transition"in e.style&&(this.vendorPrefix=n[r],this.transSupport=!0)}};n._checkTransition();var r=function(t){t||(t={}),this.queue=[],this.baseCls=t.baseCls||"humane",this.addnCls=t.addnCls||"",this.timeout="timeout"in t?t.timeout:2500,this.waitForMove=t.waitForMove||!1,this.clickToClose=t.clickToClose||!1,this.timeoutAfterMove=t.timeoutAfterMove||!1,this.container=t.container;try{this._setupEl()}catch(t){n.on(e,"load",n.bind(this._setupEl,this))}};return r.prototype={constructor:r,_setupEl:function(){var e=t.createElement("div");if(e.style.display="none",!this.container){if(!t.body)throw"document.body is null";this.container=t.body}this.container.appendChild(e),this.el=e,this.removeEvent=n.bind(function(){var e=n.config(this.currentMsg.timeoutAfterMove,this.timeoutAfterMove);e?setTimeout(n.bind(this.remove,this),e):this.remove()},this),this.transEvent=n.bind(this._afterAnimation,this),this._run()},_afterTimeout:function(){n.config(this.currentMsg.waitForMove,this.waitForMove)?this.removeEventsSet||(n.on(t.body,"mousemove",this.removeEvent),n.on(t.body,"click",this.removeEvent),n.on(t.body,"keypress",this.removeEvent),n.on(t.body,"touchstart",this.removeEvent),this.removeEventsSet=!0):this.remove()},_run:function(){if(!this._animating&&this.queue.length&&this.el){this._animating=!0,this.currentTimer&&(clearTimeout(this.currentTimer),this.currentTimer=null);var e=this.queue.shift();n.config(e.clickToClose,this.clickToClose)&&(n.on(this.el,"click",this.removeEvent),n.on(this.el,"touchstart",this.removeEvent));var t=n.config(e.timeout,this.timeout);t>0&&(this.currentTimer=setTimeout(n.bind(this._afterTimeout,this),t)),n.isArray(e.html)&&(e.html="<ul><li>"+e.html.join("<li>")+"</ul>"),this.el.innerHTML=e.html,this.currentMsg=e,this.el.className=this.baseCls,n.transSupport?(this.el.style.display="block",setTimeout(n.bind(this._showMsg,this),50)):this._showMsg()}},_setOpacity:function(e){if(n.useFilter)try{this.el.filters.item("DXImageTransform.Microsoft.Alpha").Opacity=100*e}catch(e){}else this.el.style.opacity=String(e)},_showMsg:function(){var e=n.config(this.currentMsg.addnCls,this.addnCls);if(n.transSupport)this.el.className=this.baseCls+" "+e+" "+this.baseCls+"-animate";else{var t=0;this.el.className=this.baseCls+" "+e+" "+this.baseCls+"-js-animate",this._setOpacity(0),this.el.style.display="block";var r=this,i=setInterval(function(){t<1?((t+=.1)>1&&(t=1),r._setOpacity(t)):clearInterval(i)},30)}},_hideMsg:function(){var e=n.config(this.currentMsg.addnCls,this.addnCls);if(n.transSupport)this.el.className=this.baseCls+" "+e,n.on(this.el,n.vendorPrefix?n.vendorPrefix+"TransitionEnd":"transitionend",this.transEvent);else var t=1,r=this,i=setInterval(function(){t>0?((t-=.1)<0&&(t=0),r._setOpacity(t)):(r.el.className=r.baseCls+" "+e,clearInterval(i),r._afterAnimation())},30)},_afterAnimation:function(){n.transSupport&&n.off(this.el,n.vendorPrefix?n.vendorPrefix+"TransitionEnd":"transitionend",this.transEvent),this.currentMsg.cb&&this.currentMsg.cb(),this.el.style.display="none",this._animating=!1,this._run()},remove:function(e){var r="function"==typeof e?e:null;n.off(t.body,"mousemove",this.removeEvent),n.off(t.body,"click",this.removeEvent),n.off(t.body,"keypress",this.removeEvent),n.off(t.body,"touchstart",this.removeEvent),n.off(this.el,"click",this.removeEvent),n.off(this.el,"touchstart",this.removeEvent),this.removeEventsSet=!1,r&&this.currentMsg&&(this.currentMsg.cb=r),this._animating?this._hideMsg():r&&r()},log:function(e,t,n,r){var i={};if(r)for(var o in r)i[o]=r[o];if("function"==typeof t)n=t;else if(t)for(var o in t)i[o]=t[o];return i.html=e,n&&(i.cb=n),this.queue.push(i),this._run(),this},spawn:function(e){var t=this;return function(n,r,i){return t.log.call(t,n,r,i,e),t}},create:function(e){return new r(e)}},new r}()},9740:function(e,t,n){!function(e){"use strict";
|
|
1
|
+
(()=>{var __webpack_modules__={807:()=>{!function(e){var t="application/x-dnd",n="application/json",r="Text",i=["move","copy","link"];function o(e,t){return"all"==t?e:e.filter(function(e){return-1!=t.toLowerCase().indexOf(e)})}e.directive("dndDraggable",["$parse","$timeout",function(e,s){return function(u,c,l){c.attr("draggable","true"),l.dndDisableIf&&u.$watch(l.dndDisableIf,function(e){c.attr("draggable",!e)}),c.on("dragstart",function(d){if(d=d.originalEvent||d,"false"==c.attr("draggable"))return!0;a.isDragging=!0,a.itemType=l.dndType&&u.$eval(l.dndType).toLowerCase(),a.dropEffect="none",a.effectAllowed=l.dndEffectAllowed||i[0],d.dataTransfer.effectAllowed=a.effectAllowed;var f=u.$eval(l.dndDraggable),h=t+(a.itemType?"-"+a.itemType:"");try{d.dataTransfer.setData(h,angular.toJson(f))}catch(e){var p=angular.toJson({item:f,type:a.itemType});try{d.dataTransfer.setData(n,p)}catch(e){var v=o(i,a.effectAllowed);d.dataTransfer.effectAllowed=v[0],d.dataTransfer.setData(r,p)}}if(c.addClass("dndDragging"),s(function(){c.addClass("dndDraggingSource")},0),d._dndHandle&&d.dataTransfer.setDragImage&&d.dataTransfer.setDragImage(c[0],0,0),e(l.dndDragstart)(u,{event:d}),l.dndCallback){var m=e(l.dndCallback);a.callback=function(e){return m(u,e||{})}}d.stopPropagation()}),c.on("dragend",function(t){t=t.originalEvent||t,u.$apply(function(){var n=a.dropEffect;e(l[{copy:"dndCopied",link:"dndLinked",move:"dndMoved",none:"dndCanceled"}[n]])(u,{event:t}),e(l.dndDragend)(u,{event:t,dropEffect:n})}),a.isDragging=!1,a.callback=void 0,c.removeClass("dndDragging"),c.removeClass("dndDraggingSource"),t.stopPropagation(),s(function(){c.removeClass("dndDraggingSource")},0)}),c.on("click",function(t){l.dndSelected&&(t=t.originalEvent||t,u.$apply(function(){e(l.dndSelected)(u,{event:t})}),t.stopPropagation())}),c.on("selectstart",function(){this.dragDrop&&this.dragDrop()})}}]),e.directive("dndList",["$parse",function(e){return function(s,u,c){var l=function(){var e;return angular.forEach(u.children(),function(t){var n=angular.element(t);n.hasClass("dndPlaceholder")&&(e=n)}),e||angular.element("<li class='dndPlaceholder'></li>")}();l.remove();var d=l[0],f=u[0],h={};function p(e){if(!e)return r;for(var i=0;i<e.length;i++)if(e[i]==r||e[i]==n||e[i].substr(0,17)==t)return e[i];return null}function v(e){return a.isDragging?a.itemType||void 0:e==r||e==n?null:e&&e.substr(18)||void 0}function m(e){return!h.disabled&&(!(!h.externalSources&&!a.isDragging)&&(!h.allowedTypes||null===e||e&&-1!=h.allowedTypes.indexOf(e)))}function g(e,t){var n=i;return t||(n=o(n,e.dataTransfer.effectAllowed)),a.isDragging&&(n=o(n,a.effectAllowed)),c.dndEffectAllowed&&(n=o(n,c.dndEffectAllowed)),n.length?e.ctrlKey&&-1!=n.indexOf("copy")?"copy":e.altKey&&-1!=n.indexOf("link")?"link":n[0]:"none"}function b(){return l.remove(),u.removeClass("dndDragover"),!0}function y(t,n,r,i,o,u){return e(t)(s,{callback:a.callback,dropEffect:r,event:n,external:!a.isDragging,index:void 0!==o?o:w(),item:u||void 0,type:i})}function w(){return Array.prototype.indexOf.call(f.children,d)}u.on("dragenter",function(e){e=e.originalEvent||e;var t=c.dndAllowedTypes&&s.$eval(c.dndAllowedTypes);h={allowedTypes:angular.isArray(t)&&t.join("|").toLowerCase().split("|"),disabled:c.dndDisableIf&&s.$eval(c.dndDisableIf),externalSources:c.dndExternalSources&&s.$eval(c.dndExternalSources),horizontal:c.dndHorizontalList&&s.$eval(c.dndHorizontalList)};var n=p(e.dataTransfer.types);if(!n||!m(v(n)))return!0;e.preventDefault()}),u.on("dragover",function(e){var t=p((e=e.originalEvent||e).dataTransfer.types),n=v(t);if(!t||!m(n))return!0;if(d.parentNode!=f&&u.append(l),e.target!=f){for(var i=e.target;i.parentNode!=f&&i.parentNode;)i=i.parentNode;if(i.parentNode==f&&i!=d){var o=i.getBoundingClientRect();if(h.horizontal)var a=e.clientX<o.left+o.width/2;else a=e.clientY<o.top+o.height/2;f.insertBefore(d,a?i:i.nextSibling)}}var s=t==r,w=g(e,s);return"none"==w||c.dndDragover&&!y(c.dndDragover,e,w,n)?b():(e.preventDefault(),s||(e.dataTransfer.dropEffect=w),u.addClass("dndDragover"),e.stopPropagation(),!1)}),u.on("drop",function(e){var t=p((e=e.originalEvent||e).dataTransfer.types),i=v(t);if(!t||!m(i))return!0;e.preventDefault();try{var o=JSON.parse(e.dataTransfer.getData(t))}catch(e){return b()}if((t==r||t==n)&&(i=o.type||void 0,o=o.item,!m(i)))return b();var u=t==r,l=g(e,u);if("none"==l)return b();var d=w();return c.dndDrop&&!(o=y(c.dndDrop,e,l,i,d,o))?b():(a.dropEffect=l,u||(e.dataTransfer.dropEffect=l),!0!==o&&s.$apply(function(){s.$eval(c.dndList).splice(d,0,o)}),y(c.dndInserted,e,l,i,d,o),b(),e.stopPropagation(),!1)}),u.on("dragleave",function(e){e=e.originalEvent||e;var t=document.elementFromPoint(e.clientX,e.clientY);f.contains(t)&&!e._dndPhShown?e._dndPhShown=!0:b()})}}]),e.directive("dndNodrag",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart",function(e){(e=e.originalEvent||e)._dndHandle||(e.dataTransfer.types&&e.dataTransfer.types.length||e.preventDefault(),e.stopPropagation())}),t.on("dragend",function(e){(e=e.originalEvent||e)._dndHandle||e.stopPropagation()})}}),e.directive("dndHandle",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart dragend",function(e){(e=e.originalEvent||e)._dndHandle=!0})}});var a={}}(angular.module("dndLists",[]))},925:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"88bf8796d91b9cb078e8709f0d1df5e5.html"},6722:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"7f0136c03fe438995347a346ee478b3a.html"},5230:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"2ebddef9552e6e74febdcc049e7b6cea.html"},41:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=' <div ng-class="{\'d-none\': !ctrl.showMenu || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <img class="img-fluid" skin-src="/img/illustrations/recorder-audio.svg" width="100" height="100" alt="recorder"> </div> <div ng-class="{ \'d-none\': !ctrl.showMenu || !ctrl.isAudioCompatible || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <button type="button" ng-click="ctrl.switchRecorder(\'audio\')" class="btn btn-circle" i18n-title="embed.audio.title"> <i class="fas fa-microphone"></i> </button> </div> <div ng-class="{ \'d-none\': !ctrl.showMenu || !ctrl.isVideoCompatible || ctrl.selectedRecorder !== \'none\'}" class="flex-fill"> <button type="button" ng-click="ctrl.switchRecorder(\'video\')" class="btn btn-circle"> <i class="fas fa-video"></i> </button> </div> <div ng-if="!ctrl.isAudioCompatible && !ctrl.isVideoCompatible" class="flex-fill"> <p><i18n>recorder.not.supported</i18n></p> </div> <div ng-if="!ctrl.isVideoCompatible" class="flex-fill"> <div ng-if="VideoRecorder.isIncompatibleBrowser()"> <p><i18n>embed.video.incompatible.details</i18n></p> <p class="update"> <a href="https://www.google.fr/chrome/browser/desktop/" target="_blank"> <img src="/auth/public/img/chrome_logo.png"/> </a> <a href="https://www.mozilla.org/fr/firefox/new/" target="_blank"> <img src="/auth/public/img/firefox_logo.png"/> </a> </p> </div> <div ng-if="VideoRecorder.isIncompatibleDevice()"> <p><i18n>embed.video.incompatible.devices</i18n></p> <p><i18n>embed.video.incompatible.devices.footer</i18n></p> <img skin-src="images/emptyscreen-recorder-video.svg" height="150"> </div> </div> <div id="audioRecorder" class="flex-fill" ng-if="ctrl.selectedRecorder === \'audio\'"> <div class="record-timer"> <i class="fas fa-microphone"></i> [[ctrl.time()]] </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <input type="text" class="form-control" i18n-placeholder="title" ng-model="ctrl.recorder.title"/> </div> <div class="record-controls" ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <button id="btnAudioRecorder" type="button" class="btn btn-circle" ng-click="ctrl.switchAudioRecord()" ng-class="{ \'d-none\': ctrl.isVideo || !ctrl.isAudioCompatible }" ng-disabled="ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved"> <i class="fas" ng-class="{\'fa-microphone\': !ctrl.isRecording, \'fa-pause\': ctrl.isRecording}"></i> <span class="label" ng-if="ctrl.isIdle || ctrl.isStopped"><i18n>embed.record</i18n></span> <span class="label" ng-if="!ctrl.isRecording && !ctrl.isIdle && !ctrl.isStopped" ng-class="{\'d-none\': ctrl.isIdle}"><i18n>embed.resume</i18n></span> <span class="label" ng-if="ctrl.isRecording"><i18n>embed.suspend</i18n></span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.switchPlay()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading"> <i class="fas" ng-class="ctrl.isPlaying ? \'fa-pause\' : \'fa-play\'"></i> <span class="label" ng-if="!ctrl.isPlaying"><i18n>embed.play</i18n></span> <span class="label" ng-if="ctrl.isPlaying"><i18n>embed.pause</i18n></span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.saveRecord()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.recordIsSaved"> <i ng-class="ctrl.getSaveBtnClass()"></i> <span class="label"><i18n>embed.save</i18n></span> </button> <button type="button" class="btn btn-circle btn-danger" ng-click="ctrl.clean()" ng-disabled="ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i class="fas fa-times"></i> <span class="label"><i18n>embed.redo</i18n></span> </button> </div> </div> <div id="videoRecorder" class="flex-fill" navigation-guard="true" guard-root="videoCapturedGuard" ng-if="ctrl.selectedRecorder === \'video\'"> <div class="record-timer"> <i class="fas fa-video"></i> [[ctrl.msToTime(ctrl.recorder.elapsedTime)]]/[[ctrl.msToTime(ctrl.recordMaxTime)]] </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <select title="selectWebcam" class="form-select mb-2" ng-if="ctrl.videoInputDevices.length > 1" ng-options="vid as vid.label for vid in ctrl.videoInputDevices" ng-disabled="ctrl.isRecording" ng-model="ctrl.selectedVid" ng-change="ctrl.switchVideo(ctrl.selectedVid.deviceId)"> </select> </div> <div id="recorderWidgetVideoPlayer" class="record-widget-player"> </div> <div ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <label class="visually-hidden" for="video-recorder"><i18n>title</i18n></label> <input type="text" id="video-recorder" class="form-control" i18n-placeholder="title" ng-model="ctrl.recorder.title"/> </div> <div class="record-controls" custom-guard="recordGuard" ng-class="{\'d-none\': ctrl.displaySavedMessage}"> <button id="btnVideoRecorder" type="button" class="btn btn-circle" ng-if="!(ctrl.isAudio) && ctrl.isVideoCompatible" ng-click="ctrl.switchVideoRecord()" ng-disabled="ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved"> <i class="fas" ng-class="{\'fa-stop\': ctrl.isRecording, \'fa-video\': !ctrl.isRecording}"></i> <span class="label">[[ctrl.isRecording ? \'embed.stop\' : \'embed.record\' | i18n]]</span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.switchPlay()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading"> <i class="fas" ng-class="{\'fa-pause\': ctrl.isPlaying, \'fa-play\': !ctrl.isPlaying}"></i> <span class="label">[[ctrl.isPlaying ? \'embed.pause\' : \'embed.play\' | i18n]]</span> </button> <button type="button" class="btn btn-circle" ng-click="ctrl.saveRecord()" ng-disabled="ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i ng-class="ctrl.getSaveBtnClass()"></i> <span class="label"> <i18n>embed.save</i18n> </span> </button> <button type="button" class="btn btn-circle btn-danger" ng-click="ctrl.clean()" ng-disabled="ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying"> <i class="fas fa-times"></i> <span class="label"><i18n>embed.redo</i18n></span> </button> </div> </div> <div ng-class="{\'d-none\': !ctrl.displaySavedMessage, \'d-block record-widget-message\': ctrl.displaySavedMessage}"> <p class="text-success">{{ctrl.recorder.title}} <i18n>embed.saved.file</i18n></p> <a ng-href="/workspace/workspace#/apps" class="btn btn btn-outline-third rounded-pill d-inline-block mx-auto"><i18n>embed.goto.file</i18n></a> <button class="btn btn-link d-block mx-auto" ng-click="ctrl.clean()"><i18n>embed.new.recording</i18n></button> </div>'},3146:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<ode-modal visible="ctrl.display.showAuthenticatedConnectorLightbox" on-close="ctrl.onClose()"> <ode-modal-title> <i18n>apps.authenticatedConnector.lightbox.title</i18n> </ode-modal-title> <ode-modal-body> <p class="text-center"> <i18n>apps.authenticatedConnector.lightbox.content</i18n> </p> </ode-modal-body> <ode-modal-footer> <button class="btn btn-light text-primary" ng-click="ctrl.onClose()"> <i18n>cancel</i18n> </button> <button class="btn btn-primary" ng-click="ctrl.onConfirm()"> <i18n>confirm</i18n> </button> </ode-modal-footer> </ode-modal> '},2306:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<i class="navbar-help ic-help" ng-click="onHelp()"></i> <ode-modal class="modal-help" visible="display.read" on-close="display.read = false"> <ode-modal-title></ode-modal-title> <ode-modal-body><div></div></ode-modal-body> </ode-modal> '},959:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=' <header class="header no-2d" ng-if="ctrl.is1D"> <div class="container-fluid"> <nav class="navbar"><a class="navbar-title d-md-none text-truncate h4" href="/welcome?token=[[ctrl.version]]" ng-bind-html="ctrl.title"></a> <div class="d-none d-md-inline-flex gap-12 align-items-center"> <img ng-src="[[ctrl.avatar]]" alt=""/><span class="navbar-text" translate key="welcome"></span> </div> <ul class="navbar-nav gap-8" aria-hidden="false" aria-label="navbar.main.navigation" role="menubar"> <li class="nav-item" ng-if="me.hasWorkflow(\'org.entcore.conversation.controllers.ConversationController|view\')"><a href="/conversation/conversation" class="nav-link" i18n-title="navbar.messages" aria-label="navbar.messages"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon notification"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.051 12.366a455.802 455.802 0 0 1-2.746-1.822A6.543 6.543 0 0 1 .74 9.067C.248 8.44.002 7.859.002 7.322a2.7 2.7 0 0 1 .141-.905c.098-.286.242-.542.424-.752C.935 5.222 1.462 5 2.15 5h19.7c.541-.016 1.071.195 1.507.6.424.4.636.882.636 1.446 0 .673-.218 1.317-.657 1.93a6.217 6.217 0 0 1-1.632 1.567c-3.358 2.226-5.447 3.61-6.267 4.156l-.242.167-.323.222a15.448 15.448 0 0 1-1.42.902 4.052 4.052 0 0 1-.77.345 2.215 2.215 0 0 1-.67.115h-.026a2.222 2.222 0 0 1-.67-.116 4.052 4.052 0 0 1-.77-.344c-.272-.154-.506-.29-.697-.415a30.199 30.199 0 0 1-.723-.487c-.288-.2-.477-.33-.565-.389-.81-.545-1.98-1.323-3.51-2.334Zm10.943 3.962c1.517-1.052 3.74-2.524 6.667-4.416.478-.306.927-.68 1.339-1.113v10.16c0 .564-.209 1.044-.63 1.446-.437.405-.97.614-1.512.594H2.149c-.545.02-1.08-.192-1.52-.601C.21 21.995 0 21.52 0 20.95V10.8c.416.437.871.81 1.356 1.113 3.232 2.099 5.45 3.571 6.656 4.416.512.358.926.637 1.243.837a7.7 7.7 0 0 0 1.265.614c.475.198.97.303 1.47.313h.026c.5-.01.995-.115 1.47-.313a7.647 7.647 0 0 0 1.265-.614c.32-.2.735-.479 1.243-.837Z" fill="currentColor"></path> </svg><span class="position-absolute badge rounded-pill bg-danger" ng-if="nbNewMessages">[[nbNewMessages]]<span class="visually-hidden"> <i18n>navbar.messages</i18n> </span> </span> </a> </li> <li class="nav-item" ng-if="me.hasWorkflow(\'org.entcore.auth.controllers.CarbonioPreauthController|preauth\')"> <a class="nav-link position-relative" href="/auth/carbonio/preauth" i18n-title="navbar.messages" aria-label="navbar.messages"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="m.5 21.257 7.46-8.216 4.052 2.403 4.052-2.403 7.46 8.216H.5Zm0-2.738V8.573l5.848 3.531L.5 18.52Zm0-12.084V3.048h23.023v3.387l-11.511 6.847L.5 6.435Zm17.176 5.67 5.848-3.532v9.946l-5.848-6.415Z" fill="currentColor"></path> </svg> </a> </li> <li class="nav-item"><a href="/userbook/mon-compte" class="nav-link"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="icon user"> <g clip-path="url(#one-profile_svg__a)"> <path fill="currentColor" d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24Zm0 4.65a4.26 4.26 0 1 1 0 8.51 4.26 4.26 0 0 1 0-8.51Zm0 16.64a9.27 9.27 0 0 1-7.09-3.3 5.4 5.4 0 0 1 4.77-2.9c.11 0 .23.03.34.06.63.2 1.29.33 1.98.33.7 0 1.35-.13 1.98-.33.11-.03.23-.05.34-.05a5.4 5.4 0 0 1 4.77 2.89 9.27 9.27 0 0 1-7.09 3.3Z"> </path> </g> <defs> <clipPath id="one-profile_svg__a"> <path fill="#fff" d="M0 0h24v24H0z"></path> </clipPath> </defs> </svg><span class="visually-hidden"> <i18n>navbar.myaccount</i18n> </span></a></li> <li class="nav-item"><a href="/" class="nav-link" logout i18n-title="navbar.disconnect"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon logout"> <path d="M22.995 13.153c0 1.393-.29 2.722-.872 3.987a10.627 10.627 0 0 1-2.336 3.292c-.975.929-2.147 1.665-3.516 2.21-1.369.544-2.79.817-4.26.817-1.472 0-2.9-.273-4.287-.817-1.386-.545-2.55-1.281-3.49-2.21a12.338 12.338 0 0 1-2.362-3.291A8.11 8.11 0 0 1 1 13.152c0-1.634.385-3.164 1.155-4.589.77-1.425 1.848-2.634 3.234-3.627.411-.289.873-.4 1.386-.337.514.064.907.289 1.181.673.308.368.428.793.36 1.273-.07.48-.309.857-.72 1.13a6.993 6.993 0 0 0-2.155 2.426 6.383 6.383 0 0 0-.18 5.717 6.98 6.98 0 0 0 1.566 2.186c.65.609 1.428 1.097 2.335 1.466a7.498 7.498 0 0 0 2.85.552 7.31 7.31 0 0 0 2.823-.552 8.296 8.296 0 0 0 2.36-1.466 6.04 6.04 0 0 0 1.567-2.186c.359-.849.547-1.738.564-2.666 0-1.09-.256-2.107-.77-3.051-.513-.945-1.232-1.754-2.156-2.427a1.752 1.752 0 0 1-.719-1.129c-.085-.464.035-.889.36-1.273.29-.384.693-.609 1.206-.673.514-.064.967.048 1.36.337 1.386.977 2.464 2.186 3.234 3.627a9.599 9.599 0 0 1 1.155 4.589ZM13.833 2.846v8.6c0 .465-.18.866-.54 1.202-.359.336-.786.505-1.283.505-.496 0-.932-.169-1.309-.505-.376-.336-.556-.737-.539-1.201v-8.6c0-.465.18-.865.54-1.202.359-.336.795-.504 1.308-.504.514 0 .941.168 1.284.504.342.337.521.737.539 1.201Z" fill="currentColor"></path> </svg><span class="visually-hidden"> <i18n>navbar.disconnect</i18n> </span></a></li> <li class="nav-item" ng-if="ctrl.currentLanguage == \'fr\' && me.hasWorkflow(\'org.entcore.portal.controllers.PortalController|oldHelpEnable\')" pulsar="{index:5, style:{zIndex:1021}, i18n:\'portal.pulsar.help\', position:\'bottom center\'}"> <a href="" i18n-title="navbar.help"> <help></help> </a> </li> <li class="nav-item d-md-none"><button class="nav-link btn btn-naked" type="button" aria-controls="navbarCollapsed" aria-expanded="false" aria-label="navbar.secondary.navigation"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon rafter-down"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.012 7.871a1.5 1.5 0 0 1 2.117.141L12 14.722l5.871-6.71a1.5 1.5 0 1 1 2.258 1.976l-7 8a1.5 1.5 0 0 1-2.258 0l-7-8a1.5 1.5 0 0 1 .141-2.117Z" fill="currentColor"></path> </svg></button></li> </ul> </nav> </div> <nav class="navbar no-2d navbar-secondary navbar-expand-md" aria-label="navbar.secondary.navigation"> <div class="container-fluid"> <div class="collapse navbar-collapse" id="navbarCollapsed"><a class="navbar-brand d-md-block" href="/timeline/timeline" aria-label="Accueil"><img class="logo" skin-src="img/illustrations/logo.png" alt="Logo de l\'ENT"> <span class="text-truncate d-md-none" ng-bind-html="ctrl.title"></span> </a> <ul class="navbar-nav gap-8"> <li class="nav-item"><a href="/timeline/timeline?token=[[ctrl.version]]" class="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" color="#fff" class="d-md-none"> <path fill="currentColor" d="M13.07 13.07V6.54h-2.14v6.53h2.14zm0 4.4v-2.2h-2.14v2.2h2.14zM24 12l-2.65 3.01.35 4.04-3.93.86-2.04 3.48L12 21.8l-3.73 1.6-2.04-3.42-3.93-.92.35-4.04L0 12l2.65-3.06-.35-3.99 3.93-.86L8.27.6 12 2.2 15.73.6l2.04 3.48 3.93.86L21.34 9z"> </path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.whatsnew</i18n> </span></a></li> <li class="nav-item"><a href="/userbook/annuaire?myClass&token=[[ctrl.version]]" class="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" color="#fff" class="d-md-none"> <path d="M0 24.58V.53h24.05v4.28h-2.62V7.1h2.62v4.28h-2.62v2.35h2.62V18h-2.62v2.3h2.62v4.29H0zm4.64-6.85h12.12V14l-4.5-2.67q.9-.46 1.4-1.3t.53-1.85q0-1.4-1.01-2.43T10.7 4.72 8.25 5.75 7.24 8.18q0 1.03.53 1.85t1.4 1.3L4.63 14v3.73z" fill="currentColor"></path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.classMembers</i18n> </span></a></li> <li class="nav-item"><a href="/welcome?token=[[ctrl.version]]" class="button"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff" class="d-md-none"> <path d="M1.898 22.555c-.072-.145-.096-1.37-.048-2.691l.048-2.402h5.261v5.26l-2.595.049c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.049-.145-.073-1.37-.049-2.691l.072-2.402h5.238v5.26l-2.571.049c-2.018.048-2.595 0-2.69-.216Zm7.759 0c-.048-.145-.072-1.37-.048-2.691l.072-2.402h5.237v5.26l-2.57.049c-1.994.048-2.595 0-2.691-.216Zm-15.52-7.76c-.071-.168-.095-1.37-.047-2.69l.048-2.403h5.261v5.261l-2.595.048c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.238v5.261l-2.571.048c-2.018.048-2.595 0-2.69-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.237v5.261l-2.57.048c-1.994.048-2.595 0-2.691-.216ZM1.897 7.011c-.071-.144-.095-1.345-.047-2.666l.048-2.402h5.261V7.18l-2.595.072c-1.994.048-2.594 0-2.666-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.238V7.18l-2.571.072c-2.018.048-2.595 0-2.69-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.237V7.18l-2.57.072c-1.994.048-2.595 0-2.691-.24Z" fill="currentColor"></path> </svg><span class="d-inline-block"> <i18n>portal.header.navigation.myapps</i18n> </span></a></li> </ul> </div> </div> </nav> </header> <header class="header no-1d" ng-if="ctrl.is2D"> <nav class="navbar navbar-expand-md"> <div class="container-fluid" style="max-width:1700px"> <a class="navbar-brand d-md-block" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'timeline\', \'from\':\'logo\'} })" href="/timeline/timeline?token=[[ctrl.version]]" i18n-title="navbar.home"> <img class="logo" skin-src="img/illustrations/logo.png" alt="logo NEO" width="300" height="52"> </a> <ul class="navbar-nav"> <li class="nav-item"> <a href="/timeline/timeline" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'timeline\', \'from\':\'menu\'} })" class="nav-link" i18n-title="navbar.home"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="M20.584 13.536v7.458c0 .28-.098.512-.294.699a1.062 1.062 0 0 1-.667.307H13.91v-5.978h-3.817V22H4.383a.848.848 0 0 1-.668-.307 1.162 1.162 0 0 1-.293-.699v-7.569l8.567-7.375 8.568 7.375c.018.018.027.055.027.111Zm3.31-1.09-.908 1.146a.543.543 0 0 1-.32.168h-.054a.59.59 0 0 1-.32-.084L11.989 4.682 1.687 13.676a.505.505 0 0 1-.347.084.544.544 0 0 1-.32-.168l-.935-1.145a.524.524 0 0 1-.08-.363.589.589 0 0 1 .16-.335l10.703-9.33c.32-.28.694-.419 1.121-.419.427 0 .81.14 1.148.419l3.63 3.156V2.56c0-.15.044-.27.133-.363a.458.458 0 0 1 .347-.14h2.856c.143 0 .258.046.347.14a.504.504 0 0 1 .134.363v6.34l3.256 2.85c.107.074.16.186.16.335 0 .149-.036.27-.107.363Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.home</i18n> </span> </a> </li> <li class="nav-item position-relative popover-trigger" id=":r2:" aria-haspopup="true" aria-expanded="false" pulsar="{index:3, style:{zIndex:1021}, i18n:\'portal.pulsar.apps\', position:\'bottom center\'}"> <a href="/welcome" i18n-title="navbar.applications" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'welcome\', \'from\':\'menu\'} })" class="nav-link"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="M1.898 22.555c-.072-.145-.096-1.37-.048-2.691l.048-2.402h5.261v5.26l-2.595.049c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.049-.145-.073-1.37-.049-2.691l.072-2.402h5.238v5.26l-2.571.049c-2.018.048-2.595 0-2.69-.216Zm7.759 0c-.048-.145-.072-1.37-.048-2.691l.072-2.402h5.237v5.26l-2.57.049c-1.994.048-2.595 0-2.691-.216Zm-15.52-7.76c-.071-.168-.095-1.37-.047-2.69l.048-2.403h5.261v5.261l-2.595.048c-1.994.048-2.594 0-2.666-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.238v5.261l-2.571.048c-2.018.048-2.595 0-2.69-.216Zm7.76 0c-.048-.168-.072-1.37-.048-2.69l.072-2.403h5.237v5.261l-2.57.048c-1.994.048-2.595 0-2.691-.216ZM1.897 7.011c-.071-.144-.095-1.345-.047-2.666l.048-2.402h5.261V7.18l-2.595.072c-1.994.048-2.594 0-2.666-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.238V7.18l-2.571.072c-2.018.048-2.595 0-2.69-.24Zm7.76 0c-.048-.144-.072-1.345-.048-2.666l.072-2.402h5.237V7.18l-2.57.072c-1.994.048-2.595 0-2.691-.24Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.applications</i18n> </span> </a> <div aria-labelledby=":r2:" class="popover position-absolute top-100 start-50 translate-middle-x top-100" role="tooltip"> <div class="popover-body"> <div class="widget-body d-flex flex-wrap"> <div class="text-dark" ng-if="ctrl.apps.length === 0"> <i18n>navbar.myapps.more</i18n> </div> <a class="bookmarked-app" connector-lightbox-trigger="app" aria-label="[[app.displayName]]" target="[[app.target]]" href="[[app.address]]" i18n-title="[[app.displayName]]" ng-switch="app.icon.indexOf(\'/\')" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'app\', \'app\':app} })" ng-repeat="app in ctrl.apps | limitTo:6 track by $index"> <i class="fs-1" ng-class="ctrl.getIconClass(app)" ng-switch-when="-1"></i> <img skin-src="[[app.icon]]" ng-switch-default alt="[[app.displayName]]"/> </a> </div> </div> <div class="popover-footer widget-footer border-top border-ghost"> <div class="widget-footer"> <div class="widget-footer-action"> <a href="/welcome" class="link"> <i18n>plus</i18n> </a> </div> </div> </div> </div> </li> <li class="nav-item" ng-include="ctrl.conversationUnreadUrl"> <div class="nav-link conversation" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'conversation\'} })"></div> </li> <li class="nav-item" ng-if="me.hasWorkflow(\'org.entcore.auth.controllers.CarbonioPreauthController|preauth\')"> <a class="nav-link position-relative" href="/auth/carbonio/preauth" i18n-title="navbar.messages" aria-label="navbar.messages"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" color="#fff"> <path d="m.5 21.257 7.46-8.216 4.052 2.403 4.052-2.403 7.46 8.216H.5Zm0-2.738V8.573l5.848 3.531L.5 18.52Zm0-12.084V3.048h23.023v3.387l-11.511 6.847L.5 6.435Zm17.176 5.67 5.848-3.532v9.946l-5.848-6.415Z" fill="currentColor"></path> </svg> </a> </li> <li class="nav-item" ng-if="ctrl.currentLanguage == \'fr\' && me.hasWorkflow(\'org.entcore.portal.controllers.PortalController|oldHelpEnable\')" pulsar="{index:5, style:{zIndex:1021}, i18n:\'portal.pulsar.help\', position:\'bottom center\'}"> <a href="" class="nav-link" i18n-title="navbar.help"> <help></help> </a> </li> <li class="nav-item"> <div class="dropdown"> <button class="nav-link btn btn-naked d-md-none" type="button" aria-controls="dropdown-navbar" aria-expanded="false" aria-label="navbar.open.menu" ng-click="dropdownToggle = !dropdownToggle"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon rafter-down" color="#fff"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.012 7.871a1.5 1.5 0 0 1 2.117.141L12 14.722l5.871-6.71a1.5 1.5 0 1 1 2.258 1.976l-7 8a1.5 1.5 0 0 1-2.258 0l-7-8a1.5 1.5 0 0 1 .141-2.117Z" fill="currentColor"></path> </svg> </button> <ul class="dropdown-menu dropdown-menu-end" id="dropdown-navbar" ng-class="{\'show\' : dropdownToggle}"> <li class="nav-item" data-community ng-if="me.hasWorkflow(\'net.atos.entng.community.controllers.CommunityController|view\')"> <a class="nav-link dropdown-item" href="/community" i18n-title="navbar.community" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'community\'} })"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-hidden="true" class="icon community"><path fill="currentColor" d="M19.935 17.51c.725 0 1.348.264 1.868.792.52.529.78 1.162.78 1.898 0 .737-.26 1.37-.78 1.898-.52.529-1.135.793-1.844.793-.71 0-1.333-.264-1.869-.793a2.52 2.52 0 0 1-.78-1.922c0-.288.063-.6.19-.936l-3.997-2.931c-.773.8-1.703 1.2-2.79 1.2-1.089 0-2.019-.392-2.791-1.176-.773-.785-1.167-1.738-1.183-2.86 0-.143.024-.352.071-.624l-3.168-1.057a1.248 1.248 0 0 1-.852.337c-.378 0-.693-.129-.946-.385a1.315 1.315 0 0 1-.378-.96c0-.385.126-.698.378-.938.253-.24.568-.368.946-.384.316 0 .584.104.804.312.221.208.37.457.45.745l3.192 1.08a3.798 3.798 0 0 1 1.443-1.56 3.839 3.839 0 0 1 2.033-.577c.82 0 1.577.248 2.27.745l4.706-4.781c-.252-.48-.378-.921-.378-1.321 0-.737.26-1.37.78-1.898.52-.529 1.143-.793 1.869-.793.725 0 1.34.264 1.844.793.505.528.765 1.16.78 1.898a2.417 2.417 0 0 1-.78 1.873c-.536.513-1.159.777-1.868.793-.41 0-.844-.136-1.3-.408l-4.707 4.804c.49.705.733 1.474.733 2.307 0 .592-.134 1.177-.402 1.753l3.997 2.907c.52-.416 1.08-.624 1.679-.624Z"></path></svg> <span class="nav-text"><i18n>navbar.community</i18n></span> </a> </li> <li class="nav-item position-relative popover-trigger" id=":r3:" aria-haspopup="true" aria-expanded="false" ng-if="me.hasWorkflow(\'fr.openent.searchengine.controllers.SearchEngineController|view\')"> <a href="/searchengine" i18n-title="navbar.search" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'searchengine\', \'from\':\'menu\'} })" class="nav-link dropdown-item"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon search"> <path d="M1.27 11.552a7.745 7.745 0 0 1 0-4.156c.38-1.377 1.095-2.579 2.149-3.604a7.928 7.928 0 0 1 2.716-1.777c1.02-.4 2.074-.6 3.161-.6 1.07 0 2.115.2 3.136.6 1.02.4 1.926.993 2.716 1.777a7.904 7.904 0 0 1 1.902 2.86 7.812 7.812 0 0 1 .518 3.29 7.647 7.647 0 0 1-.889 3.171c.461.129.865.36 1.21.697l4.297 4.156c.576.56.864 1.241.864 2.042 0 .801-.288 1.482-.864 2.042-.576.56-1.276.841-2.099.841-.823 0-1.523-.28-2.099-.84l-4.272-4.18a2.423 2.423 0 0 1-.74-1.178 8.302 8.302 0 0 1-3.68.84c-1.087 0-2.14-.2-3.16-.6a8.102 8.102 0 0 1-2.717-1.753 7.854 7.854 0 0 1-2.149-3.628Zm2.495-2.066c0 1.49.535 2.755 1.605 3.796 1.086 1.04 2.395 1.561 3.926 1.561 1.515 0 2.807-.52 3.877-1.561 1.07-1.041 1.613-2.307 1.63-3.796.016-1.49-.527-2.755-1.63-3.796-1.087-1.057-2.379-1.585-3.877-1.585-1.515 0-2.823.528-3.926 1.585C4.3 6.731 3.765 7.996 3.765 9.486Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.search</i18n> </span> </a> <div aria-labelledby=":r3:" class="popover position-absolute top-100 start-50 translate-middle-x" role="tooltip"> <div class="search-text input-group py-8 px-12"> <input id="my-search-input" class="form-control form-control-sm" type="text" name="my-search-input" ng-model="ctrl.mysearch" ng-keyup="ctrl.launchSearch($event, \'key\');"/><button class="btn btn-filled btn-primary btn-sm btn-icon btn-sm btn-search btn-sm" i18n-title="navbar.search" ng-click="ctrl.launchSearch($event, \'button\');"> <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true"> <path fill="currentColor" fill-rule="evenodd" d="M4 10a7 7 0 1 1 14 0 7 7 0 0 1-14 0Zm7-9a9 9 0 1 0 5.7 15.96 1 1 0 0 0 .24.4l4.35 4.35a1 1 0 0 0 1.42-1.42l-4.35-4.35a1 1 0 0 0-.4-.24A9 9 0 0 0 11 1Z" clip-rule="evenodd"></path> </svg></span> </button> </div> </div> </li> <li class="nav-item"> <a href="/userbook/mon-compte" pulsar="{ index:4, style:{zIndex:1021}, i18n:\'portal.pulsar.account\', position:\'bottom center\'}" ng-click="ctrl.trackEvent($event, {detail:{\'open\':\'myaccount\'} })" i18n-title="navbar.myaccount" class="nav-link dropdown-item"> <div class="avatar avatar-sm rounded-circle bg-white"> <img data-ng-src="[[ctrl.avatar ? ctrl.avatar+\'?thumbnail=48x48\' : \'\']]" width="30" height="30" alt="[[ctrl.username]]"/> </div> <span class="nav-text"> <i18n>navbar.myaccount</i18n> </span> </a> </li> <li class="nav-item"> <hr class="dropdown-divider"> </li> <li class="nav-item"> <a href="" logout i18n-title="navbar.disconnect" class="nav-link dropdown-item"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon logout"> <path d="M22.995 13.153c0 1.393-.29 2.722-.872 3.987a10.627 10.627 0 0 1-2.336 3.292c-.975.929-2.147 1.665-3.516 2.21-1.369.544-2.79.817-4.26.817-1.472 0-2.9-.273-4.287-.817-1.386-.545-2.55-1.281-3.49-2.21a12.338 12.338 0 0 1-2.362-3.291A8.11 8.11 0 0 1 1 13.152c0-1.634.385-3.164 1.155-4.589.77-1.425 1.848-2.634 3.234-3.627.411-.289.873-.4 1.386-.337.514.064.907.289 1.181.673.308.368.428.793.36 1.273-.07.48-.309.857-.72 1.13a6.993 6.993 0 0 0-2.155 2.426 6.383 6.383 0 0 0-.18 5.717 6.98 6.98 0 0 0 1.566 2.186c.65.609 1.428 1.097 2.335 1.466a7.498 7.498 0 0 0 2.85.552 7.31 7.31 0 0 0 2.823-.552 8.296 8.296 0 0 0 2.36-1.466 6.04 6.04 0 0 0 1.567-2.186c.359-.849.547-1.738.564-2.666 0-1.09-.256-2.107-.77-3.051-.513-.945-1.232-1.754-2.156-2.427a1.752 1.752 0 0 1-.719-1.129c-.085-.464.035-.889.36-1.273.29-.384.693-.609 1.206-.673.514-.064.967.048 1.36.337 1.386.977 2.464 2.186 3.234 3.627a9.599 9.599 0 0 1 1.155 4.589ZM13.833 2.846v8.6c0 .465-.18.866-.54 1.202-.359.336-.786.505-1.283.505-.496 0-.932-.169-1.309-.505-.376-.336-.556-.737-.539-1.201v-8.6c0-.465.18-.865.54-1.202.359-.336.795-.504 1.308-.504.514 0 .941.168 1.284.504.342.337.521.737.539 1.201Z" fill="currentColor"></path> </svg> <span class="nav-text"> <i18n>navbar.disconnect</i18n> </span> </a> </li> </ul> </div> </li> </ul> </div> </nav> </header>'},4809:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="row"> <input type="text" ng-model="ctrl.search" i18n-placeholder="search" autocomplete="off"/> </div> '},9018:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="toast fade" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> <strong class="me-auto">[[header]]</strong> <small class="text-muted">[[since]]</small> <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close" ng-click="visible(false)"></button> </div> <div class="toast-body" ng-transclude></div> </div>'},9068:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<section class="lightbox" ng-class="{\'lightbox\': !tiny, \'tiny-lightbox\': tiny}"> <div class="background"></div> <div class="content"> <div class="twelve cell" ng-transclude></div> <div class="close-lightbox"> <i class="close-2x"></i> </div> </div> </section>'},7597:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="{{ctrl.id+\'Label\'}}" aria-hidden="true" ng-class="{show: ctrl.visible}" ng-style="ctrl.getStyle()"> <div class="modal-backdrop fade show" style="z-index:1040"></div> <div class="modal-dialog" ng-class="ctrl.getSizeClass()" role="document" style="z-index:1050"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="{{ctrl.id+\'Label\'}}" ng-transclude="title"></h5> <button type="button" class="btn-close" aria-label="Close" ng-if="ctrl.onClose" ng-click="ctrl.onClose()"> </button> </div> <div class="modal-body" ng-transclude="body"></div> <div class="modal-footer" ng-transclude="footer"></div> </div> </div> </div> '},9325:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<style id="pulsar-css">pulsar{z-index:1036;position:absolute;pointer-events:all}.pulsar-layer{box-shadow:0 0 0 99999px rgb(0 0 0 / 60%);position:absolute;border-radius:2px;z-index:1035}pulsar .content{background:#fff;width:300px;box-shadow:1px 1px 7px rgb(0 0 0 / 40%);padding:15px;box-sizing:border-box;border:6px solid #ddd;border-radius:2px;position:relative}pulsar .content .inf{position:absolute;left:10px;top:10px;color:#fff;background:#ffaa4d;border-radius:50%;line-height:22px;text-align:center;width:22px;height:22px}pulsar .content .inf::before{font-size:18px;content:\'i\';font-style:italic;font-weight:700;display:inline-block;margin-left:-1px}pulsar .content .close{position:absolute;right:10px;top:10px;width:22px;height:22px;line-height:17px;background:#ddd;border-radius:50%;color:#636363}pulsar i.close{font-family:generic-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none;font-weight:400!important;text-align:center;cursor:pointer;font-style:normal}pulsar .content>div.text{margin-top:25px;padding:10px;font-size:14px;line-height:18px}pulsar .content .close::before{content:\'\\e866\';font-size:9px}pulsar nav.dots ul{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:0;margin:15px 0 25px}pulsar nav.dots li.dot{list-style-type:none;margin:0 10px;cursor:pointer}pulsar nav.dots li.dot::before{content:" ";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar nav.dots li.dot:hover::before{border-color:#ff8500;background:0 0}nav.dots li.dot.active::before{color:#4bafd5}pulsar nav.dots li.dot.active::before{border-color:#ff8500;background:#ff8500}pulsar nav.dots li.dot::before{font-size:60px;width:12px;height:12px}pulsar nav.dots li.dot::before{content:" ";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar .arrow{width:0;height:0;border-style:solid;border-width:0 8.4px 14px 8.4px;border-color:transparent transparent #ddd transparent;z-index:1;position:absolute}pulsar.middle .arrow{left:calc(50% - 7px);top:-14px}pulsar.left .arrow{transform:rotate(90deg);right:-14px}pulsar.left.top .arrow{top:1px}pulsar.left.center .arrow{top:calc(50% - 7px)}pulsar.right.center .arrow{top:calc(50% - 7px)}pulsar.right .arrow{transform:rotate(270deg);left:-14px}pulsar.right.top .arrow{top:1px}pulsar.center.top .arrow{transform:rotate(180deg);top:100%;left:calc(50% - 7px)}pulsar.bottom .arrow{top:-14px}pulsar.bottom.center .arrow{left:calc(50% - 7px)}pulsar.bottom.left .arrow,pulsar.bottom.right .arrow{top:1px}pulsar.bottom.right .arrow{left:-14px;transform:rotate(-90deg)}pulsar.bottom.left .arrow{transform:rotate(90deg);right:-14px;left:auto}.pulsar-button{position:absolute;z-index:999;width:40px;height:40px}.pulsar-button::after,.pulsar-button::before{content:"";opacity:.5;position:absolute;z-index:-1;inset:-6px 0 0 -6px;height:42px;width:42px;content:"";border-radius:50%;box-shadow:0 0 5px 6px rgb(120 218 255 / 60%);transform:scale(.1,.1);transition:all 250ms ease;animation:pulsate 1s ease-out;animation-iteration-count:infinite}.pulsar-button::after{animation-delay:.3s}.pulse-spot{position:absolute;cursor:pointer;width:30px;height:30px;font-size:18px;text-align:center;line-height:21px;font-weight:700;color:#fff;border-radius:50%;border:4px solid transparent;background:#ff8500;transition:all 250ms ease}.pulse-spot::before{content:\'i\';font-style:italic;font-family:\'Times New Roman\',Times,serif}pulsar .row{flex-direction:row-reverse;justify-content:space-between;margin-left:0!important;margin-right:0!important;max-width:100%;width:100%;position:relative;clear:both;box-sizing:border-box}pulsar .row>*{width:auto}@keyframes pulsate{0%{transform:scale(.1,.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2,1.2);opacity:0}}.pulsar-button{display:none}@media (min-width:992px){.pulsar-button{display:block}}</style>'},6066:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r='<style id="widget-container-css">ul[dnd-list],ul[dnd-list]>li{position:relative}ul[dnd-list]{padding-left:0}ul[dnd-list][dnd-drop]{min-height:42px;transition:all .1s ease-in-out 0s}ul[dnd-list][dnd-dragover].dndReject{display:block;background-color:#ff8c8c;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] .dndDraggingSource{display:none}ul[dnd-list] .dndPlaceholder{display:block;background-color:#ffdbb7;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] li{list-style:none}.dndDragging:not(.dndDraggingSource){cursor:grabbing!important;border:1px solid rgb(255 133 0)}.dnDragover{cursor:grabbing}.dndDragging:not(.dndDraggingSource):active,.dndDragging:not(.dndDraggingSource):focus,.dndDragging:not(.dndDraggingSource):hover{cursor:grabbing;cursor:-webkit-grabbing}</style> <ul dnd-list dnd-allowed-types="[]" ng-if="ctrl.lockedWidgets.length"> <li ng-repeat="widget in ctrl.lockedWidgets track by widget.platformConf.id" class="widget widget-locked" ode-widget="widget"> </li> </ul> <ul dnd-list dnd-allowed-types="[\'left\',\'right\']" dnd-dragover="ctrl.onDnDDragOver(event, index, type, dropEffect)" dnd-drop="ctrl.onDnDDrop(event, item, index, dropEffect)"> <li ng-repeat="widget in ctrl.dndWidgets track by widget.platformConf.id" class="widget" ode-widget="widget" dnd-draggable="widget.platformConf.id" dnd-type="widget.userPref.position" dnd-disable-if="ctrl.isMobileView"> </li> </ul>'},2011:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r="<span>{{ctrl.sayHello()}}</span>"},991:function(e){e.exports=function(){var e=window,t=document,n={on:function(t,n,r){"addEventListener"in e?t.addEventListener(n,r,!1):t.attachEvent("on"+n,r)},off:function(t,n,r){"removeEventListener"in e?t.removeEventListener(n,r,!1):t.detachEvent("on"+n,r)},bind:function(e,t){return function(){e.apply(t,arguments)}},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},config:function(e,t){return null!=e?e:t},transSupport:!1,useFilter:/msie [678]/i.test(navigator.userAgent),_checkTransition:function(){var e=t.createElement("div"),n={webkit:"webkit",Moz:"",O:"o",ms:"MS"};for(var r in n)r+"Transition"in e.style&&(this.vendorPrefix=n[r],this.transSupport=!0)}};n._checkTransition();var r=function(t){t||(t={}),this.queue=[],this.baseCls=t.baseCls||"humane",this.addnCls=t.addnCls||"",this.timeout="timeout"in t?t.timeout:2500,this.waitForMove=t.waitForMove||!1,this.clickToClose=t.clickToClose||!1,this.timeoutAfterMove=t.timeoutAfterMove||!1,this.container=t.container;try{this._setupEl()}catch(t){n.on(e,"load",n.bind(this._setupEl,this))}};return r.prototype={constructor:r,_setupEl:function(){var e=t.createElement("div");if(e.style.display="none",!this.container){if(!t.body)throw"document.body is null";this.container=t.body}this.container.appendChild(e),this.el=e,this.removeEvent=n.bind(function(){var e=n.config(this.currentMsg.timeoutAfterMove,this.timeoutAfterMove);e?setTimeout(n.bind(this.remove,this),e):this.remove()},this),this.transEvent=n.bind(this._afterAnimation,this),this._run()},_afterTimeout:function(){n.config(this.currentMsg.waitForMove,this.waitForMove)?this.removeEventsSet||(n.on(t.body,"mousemove",this.removeEvent),n.on(t.body,"click",this.removeEvent),n.on(t.body,"keypress",this.removeEvent),n.on(t.body,"touchstart",this.removeEvent),this.removeEventsSet=!0):this.remove()},_run:function(){if(!this._animating&&this.queue.length&&this.el){this._animating=!0,this.currentTimer&&(clearTimeout(this.currentTimer),this.currentTimer=null);var e=this.queue.shift();n.config(e.clickToClose,this.clickToClose)&&(n.on(this.el,"click",this.removeEvent),n.on(this.el,"touchstart",this.removeEvent));var t=n.config(e.timeout,this.timeout);t>0&&(this.currentTimer=setTimeout(n.bind(this._afterTimeout,this),t)),n.isArray(e.html)&&(e.html="<ul><li>"+e.html.join("<li>")+"</ul>"),this.el.innerHTML=e.html,this.currentMsg=e,this.el.className=this.baseCls,n.transSupport?(this.el.style.display="block",setTimeout(n.bind(this._showMsg,this),50)):this._showMsg()}},_setOpacity:function(e){if(n.useFilter)try{this.el.filters.item("DXImageTransform.Microsoft.Alpha").Opacity=100*e}catch(e){}else this.el.style.opacity=String(e)},_showMsg:function(){var e=n.config(this.currentMsg.addnCls,this.addnCls);if(n.transSupport)this.el.className=this.baseCls+" "+e+" "+this.baseCls+"-animate";else{var t=0;this.el.className=this.baseCls+" "+e+" "+this.baseCls+"-js-animate",this._setOpacity(0),this.el.style.display="block";var r=this,i=setInterval(function(){t<1?((t+=.1)>1&&(t=1),r._setOpacity(t)):clearInterval(i)},30)}},_hideMsg:function(){var e=n.config(this.currentMsg.addnCls,this.addnCls);if(n.transSupport)this.el.className=this.baseCls+" "+e,n.on(this.el,n.vendorPrefix?n.vendorPrefix+"TransitionEnd":"transitionend",this.transEvent);else var t=1,r=this,i=setInterval(function(){t>0?((t-=.1)<0&&(t=0),r._setOpacity(t)):(r.el.className=r.baseCls+" "+e,clearInterval(i),r._afterAnimation())},30)},_afterAnimation:function(){n.transSupport&&n.off(this.el,n.vendorPrefix?n.vendorPrefix+"TransitionEnd":"transitionend",this.transEvent),this.currentMsg.cb&&this.currentMsg.cb(),this.el.style.display="none",this._animating=!1,this._run()},remove:function(e){var r="function"==typeof e?e:null;n.off(t.body,"mousemove",this.removeEvent),n.off(t.body,"click",this.removeEvent),n.off(t.body,"keypress",this.removeEvent),n.off(t.body,"touchstart",this.removeEvent),n.off(this.el,"click",this.removeEvent),n.off(this.el,"touchstart",this.removeEvent),this.removeEventsSet=!1,r&&this.currentMsg&&(this.currentMsg.cb=r),this._animating?this._hideMsg():r&&r()},log:function(e,t,n,r){var i={};if(r)for(var o in r)i[o]=r[o];if("function"==typeof t)n=t;else if(t)for(var o in t)i[o]=t[o];return i.html=e,n&&(i.cb=n),this.queue.push(i),this._run(),this},spawn:function(e){var t=this;return function(n,r,i){return t.log.call(t,n,r,i,e),t}},create:function(e){return new r(e)}},new r}()},9740:function(e,t,n){!function(e){"use strict";
|
|
2
2
|
//! moment.js locale configuration
|
|
3
3
|
function t(e,t,n,r){var i={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?i[n][0]:i[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(381))},5655:function(e,t,n){!function(e){"use strict";
|
|
4
4
|
//! moment.js locale configuration
|